Index: lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as =================================================================== diff -u -r511c2ba599ab19c9696c95b88bc2c68c2e356bea -r42421a8e7ac133cba70e12a6f9cd647e562f08be --- lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision 511c2ba599ab19c9696c95b88bc2c68c2e356bea) +++ lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision 42421a8e7ac133cba70e12a6f9cd647e562f08be) @@ -23,12 +23,19 @@ import org.lamsfoundation.lams.common.mvc.*; import org.lamsfoundation.lams.common.util.*; +import org.lamsfoundation.lams.common.ui.* +import org.lamsfoundation.lams.common.dict.* import org.lamsfoundation.lams.common.*; import org.lamsfoundation.lams.monitoring.*; import org.lamsfoundation.lams.monitoring.mv.*; import org.lamsfoundation.lams.monitoring.mv.tabviews.*; import org.lamsfoundation.lams.authoring.Activity; -import mx.utils.* +import mx.utils.* +import mx.controls.* +import mx.behaviors.* +import mx.core.* +import mx.events.* +import mx.effects.* /** * Controller for the sequence library @@ -49,19 +56,114 @@ _monitorModel = MonitorModel(model); _monitorController = this; _isBusy = false; - //get a view if ther is not one - //if(!_lessonTabView){ - // _lessonTabView = LessonTabView(getView()); - //} + } - public function activityClick(ca:Object):Void{ + public function activityClick(act:Object, forObj:String):Void{ //if (ca.activityTypeID==Activity.PARALLEL_ACTIVITY_TYPE){ - - Debugger.log('activityClick CanvasActivity:'+ca.activity.activityID,Debugger.GEN,'activityClick','MonitorController'); - //} + if (forObj == "LearnerIcon"){ + _monitorModel.isDragging = true; + act.startDrag(false); + //Cursor.showCursor(Application.C_WHITEARROW); + Debugger.log('activityClick CanvasActivity:'+act.Learner.getUserName(),Debugger.GEN,'activityClick','MonitorController'); + } } + public function activityRelease(act:Object, forObj:String):Void{ + Debugger.log('activityRelease CanvasActivity:'+act.activity.activityID,Debugger.GEN,'activityRelease','MonitorController'); + if (forObj == "LearnerIcon"){ + var hasHit:Boolean = false; + var actUIIDToCompare = act.activity.activityUIID; + if (act.activity.parentUIID != null){ + var parentAct:Activity = _monitorModel.getMonitor().ddm.getActivityByUIID(act.activity.parentUIID) + actUIIDToCompare = parentAct.activityUIID; + + } + var indexArray:Array = _monitorModel.activitiesOnCanvas() //setDesignOrder(); + var currentActOrder:Number = checkLearnerCurrentActivity(indexArray, actUIIDToCompare) + if(_monitorModel.isDragging){ + act.stopDrag(); + } + trace("current activity order: "+currentActOrder) + //run a loop to check which activity has been hitted by the learner. + for (var i=0; i currentActOrder){ + + var URLToSend:String = _root.monitoringURL+"forceComplete&lessonID="+_root.lessonID+"&learnerID="+act.Learner.getLearnerId()+"&activityID="+indexArray[i-1].activity.activityID + var ref = this; + var fnOk:Function = Proxy.create(ref,reloadProgress, ref, URLToSend); + var fnCancel:Function = Proxy.create(ref,activitySnapBack, act); + LFMessage.showMessageConfirm(Dictionary.getValue('al_confirm_forcecomplete_toactivity',[act.Learner.getFullName(), indexArray[i].activity.title]), fnOk,fnCancel); + + }else if (actHitOrder == currentActOrder || actHitOrder < currentActOrder){ + activitySnapBack(act) + var msg:String = Dictionary.getValue('al_error_forcecomplete_invalidactivity',[act.Learner.getFullName(), indexArray[i].activity.title]) ; + LFMessage.showMessageAlert(msg); + } + hasHit = true; + break; + } + + } + if (act.hitTest(_monitorModel.endGate)){ + _monitorModel.endGate.doorClosed._visible = false; + _monitorModel.endGate.doorOpen._visible = true; + var URLToSend:String = _root.monitoringURL+"forceComplete&lessonID="+_root.lessonID+"&learnerID="+act.Learner.getLearnerId()+"&activityID=null"; + var ref = this; + var fnOk:Function = Proxy.create(ref,reloadProgress, ref, URLToSend); + var fnCancel:Function = Proxy.create(ref,activitySnapBack, act); + LFMessage.showMessageConfirm(Dictionary.getValue('al_confirm_forcecomplete_tofinish',[act.Learner.getFullName(), indexArray[i].activity.title]), fnOk,fnCancel); + hasHit = true; + } + if (!hasHit){ + activitySnapBack(act) + var msg:String = Dictionary.getValue('al_error_forcecomplete_notarget',[act.Learner.getFullName()]) ; + LFMessage.showMessageAlert(msg); + } + } + + } + + private function reloadProgress(ref, URLToSend){ + var callback:Function = Proxy.create(ref, getProgressData); + Application.getInstance().getComms().getRequest(URLToSend,callback, false); + + + } + private function activitySnapBack(act:Object){ + act._x = act.xCoord; + act._y = act.yCoord; + _monitorModel.endGate.doorClosed._visible = true; + _monitorModel.endGate.doorOpen._visible = false; + } + + private function getProgressData(r){ + trace('force complete ok'); + if(r instanceof LFError) { + r.showErrorAlert(); + } else if(r) { + LFMessage.showMessageAlert(r); + _monitorModel.broadcastViewUpdate("RELOADPROGRESS", null, _monitorModel.getSelectedTab()) + } + } + + private function checkLearnerCurrentActivity(arr:Array, actUIID:Number):Number{ + for (var i=0; i