Index: lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as =================================================================== diff -u -rd502e6d1f34632a757dd6bda2daf8b0c07e1c8a5 -r6f216fba347b83cec9643e97905a407e168dd8c4 --- lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision d502e6d1f34632a757dd6bda2daf8b0c07e1c8a5) +++ lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision 6f216fba347b83cec9643e97905a407e168dd8c4) @@ -78,9 +78,12 @@ private var _org:Organisation; private var _todos:Array; // Array of ToDo ContributeActivity(s) - // state data + + // state data + private var _isDesignDrawn:Boolean; private var _showLearners:Boolean; - private var _endGate:MovieClip; + private var _endGate:MovieClip; + //these are hashtables of mc refs MOVIECLIPS (like CanvasActivity or CanvasTransition) //each on contains a reference to the emelment in the ddm (activity or transition) private var _activitiesDisplayed:Hashtable; @@ -112,7 +115,12 @@ */ public function MonitorModel (monitor:Monitor){ _monitor = monitor; - _showLearners = true; + + _showLearners = true; + isDesignDrawn = true; + _staffLoaded = false; + _learnersLoaded = false; + _activitiesDisplayed = new Hashtable("_activitiesDisplayed"); _transitionsDisplayed = new Hashtable("_transitionsDisplayed"); _learnersProgress = new Hashtable("_learnersProgress") @@ -121,20 +129,20 @@ learnerTabActArr = new Array(); ddmActivity_keys = new Array(); ddmTransition_keys = new Array(); - _staffLoaded = false; - _learnersLoaded = false; - + _resultDTO = new Object(); ttHolder = Application.tooltip; monitor_y = Application.MONITOR_Y; monitor_x = Application.MONITOR_X; + mx.events.EventDispatcher.initialize(this); app = Application.getInstance(); } // add get/set methods public function setSequence(activeSeq:Sequence){ + Debugger.log("Active seq: " + activeSeq.ID + " ddm: " + activeSeq.getLearningDesignModel(), Debugger.CRITICAL, "setSequence", "MonitorModel"); _activeSeq = activeSeq; @@ -148,8 +156,6 @@ getMonitor().openLearningDesign(_activeSeq); } - - setChanged(); // if seq locked for edit TODO @@ -211,6 +217,7 @@ _learnersProgress.clear(); learnerTabActArr = new Array(); learnerTabActArr = learnerProg; + for(var i=0; i "+activity.activityID); order.push(activity); - trace("transition keys length: "+ddmTransition_keys.length); + for(var i=0;i "+learnerFirstActivity.title); // recursive method to order design orderDesign(learnerFirstActivity, orderedActivityArr); - for(var i=0; i "+orderedActivityArr[i].title); - - } return orderedActivityArr; - trace("New Ordered Activities has length: "+orderedActivityArr.length) } - /** * get the design in the DesignDataModel and update the Monitor Model accordingly. * NOTE: Design elements are added to the DDM here. @@ -468,12 +458,13 @@ var keyToCheck:Number = indexArray[i].activityUIID; var ddm_activity:Activity = _activeSeq.getLearningDesignModel().activities.get(keyToCheck); - if(ddm_activity.parentActivityID > 0 || ddm_activity.parentUIID > 0){ - trace("this is Child") - } else { + if(!(ddm_activity.parentActivityID > 0 || ddm_activity.parentUIID > 0) && !isDesignDrawn){ broadcastViewUpdate("DRAW_ACTIVITY", ddm_activity, tabID, drawLearner); + } else { + broadcastViewUpdate("CLONE_ACTIVITY", ddm_activity, tabID, drawLearner); } - } + } + //now check the transitions: ddmTransition_keys = _activeSeq.getLearningDesignModel().transitions.keys(); @@ -486,7 +477,9 @@ var transitionKeyToCheck:Number = trIndexArray[i]; var ddmTransition:Transition = _activeSeq.getLearningDesignModel().transitions.get(transitionKeyToCheck); broadcastViewUpdate("DRAW_TRANSITION", ddmTransition, tabID); - } + } + + isDesignDrawn = true; } public function setDialogOpen(dialogOpen:String){ @@ -495,7 +488,6 @@ } public function broadcastViewUpdate(updateType, data, tabID, learner){ - //getMonitor().getMV().clearView(); setChanged(); //send an update @@ -509,7 +501,6 @@ } public function changeTab(tabID:Number){ - //getMonitor().getMV().clearView(); selectedTab = tabID; setChanged(); @@ -522,7 +513,6 @@ } public function refreshAllData(){ - //getMonitor().getMV().clearView(); selectedTab = getSelectedTab(); setChanged(); @@ -536,7 +526,6 @@ public function tabHelp(){ var callback:Function = Proxy.create(this, openTabHelp); - //selectedTab = getSelectedTab(); app.getHelpURL(callback) } @@ -554,7 +543,6 @@ tabName = "learners" break; default : - //styleObj = _tm.getStyleObject('ACTPanel0') } return tabName; @@ -602,35 +590,24 @@ public function requestLearners(data:Object, callback:Function){ - trace('requesting learners...'); - //var callback:Function = Proxy.create(this,saveLearners); _monitor.requestUsers(LEARNER_ROLE, data.organisationID, callback); } public function requestStaff(data:Object, callback:Function){ - trace('requesting staff members...'); - //var callback:Function = Proxy.create(this,saveStaff); - _monitor.requestUsers(MONITOR_ROLE, data.organisationID, callback); } public function saveLearners(users:Array){ - trace('retrieving back users for org by role: ' + MonitorModel.LEARNER_ROLE); - saveUsers(users, LEARNER_ROLE); - //dispatchEvent({type:'learnersLoad',target:this}); broadcastViewUpdate("LEARNERS_LOADED", null, null); } public function saveStaff(users:Array){ - trace('retrieving back users for org by role: ' + MONITOR_ROLE); - saveUsers(users, MONITOR_ROLE); - //dispatchEvent({type:'staffLoad',target:this}); broadcastViewUpdate("STAFF_LOADED", null, null); } @@ -698,7 +675,6 @@ public function setDirty(){ _isDirty = true; - trace("In setDirty") clearDesign(); } @@ -934,6 +910,14 @@ public function get locked():Boolean{ return _isLocked; } + + public function set isDesignDrawn(a:Boolean){ + _isDesignDrawn = a; + } + + public function get isDesignDrawn():Boolean{ + return _isDesignDrawn; + } /** * Returns a reference to the Activity Movieclip for the UIID passed in. Gets from _activitiesDisplayed Hashable @@ -958,7 +942,7 @@ public function get allLearnersProgress():Array{ return learnerTabActArr; - } + } public function getActivityKeys():Array{ trace("ddmActivity_keys length: "+ ddmActivity_keys.length) Index: lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as =================================================================== diff -u -rd502e6d1f34632a757dd6bda2daf8b0c07e1c8a5 -r6f216fba347b83cec9643e97905a407e168dd8c4 --- lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as (.../LearnerTabView.as) (revision d502e6d1f34632a757dd6bda2daf8b0c07e1c8a5) +++ lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as (.../LearnerTabView.as) (revision 6f216fba347b83cec9643e97905a407e168dd8c4) @@ -21,24 +21,25 @@ * ************************************************************************ */ -import org.lamsfoundation.lams.common.util.* -import org.lamsfoundation.lams.common.ui.* -import org.lamsfoundation.lams.common.style.* -import org.lamsfoundation.lams.monitoring.mv.* +import org.lamsfoundation.lams.common.util.*; +import org.lamsfoundation.lams.common.ui.*; +import org.lamsfoundation.lams.common.style.*; +import org.lamsfoundation.lams.monitoring.mv.*; import org.lamsfoundation.lams.monitoring.mv.tabviews.*; import org.lamsfoundation.lams.monitoring.*; -import org.lamsfoundation.lams.common.dict.* -import org.lamsfoundation.lams.common.mvc.* +import org.lamsfoundation.lams.common.dict.*; +import org.lamsfoundation.lams.common.mvc.*; +import org.lamsfoundation.lams.common.ApplicationParent; import org.lamsfoundation.lams.authoring.Activity; import org.lamsfoundation.lams.authoring.ComplexActivity; import org.lamsfoundation.lams.authoring.cv.CanvasActivity; import org.lamsfoundation.lams.common.ToolTip; -import org.lamsfoundation.lams.authoring.Transition; -//import org.lamsfoundation.lams.authoring.cv.*; -import mx.managers.* +import org.lamsfoundation.lams.authoring.Transition; + +import mx.managers.*; import mx.containers.*; -import mx.events.* -import mx.utils.* +import mx.events.*; +import mx.utils.*; import mx.controls.*; @@ -48,8 +49,10 @@ */ class org.lamsfoundation.lams.monitoring.mv.tabviews.LearnerTabView extends AbstractView{ + public static var _tabID:Number = 2; private var _className = "LearnerTabView"; + //constants: private var GRID_HEIGHT:Number; private var GRID_WIDTH:Number; @@ -65,45 +68,39 @@ private var prevLearner:Number; private var learnersDrawn:Number; private var learnerListArr:Array = new Array(); - - private var bkg_pnl:MovieClip; private var _tm:ThemeManager; - private var _tip:ToolTip; + private var _tip:ToolTip; + private var mm:MonitorModel; - private var _learnerTabView:LearnerTabView; - + private var _learnerTabView:LearnerTabView; + private var _learnerTabViewContainer_mc:MovieClip; + private var learnerMenuBar:MovieClip; - //Canvas clip - - private var _learnerTabViewContainer_mc:MovieClip + private var _activityLayer_mc:MovieClip; + private var _activityLayer_mc_clones:Array; + private var _nameLayer_mc:MovieClip; - private var learnerMenuBar:MovieClip; - //private var _helpLayer_mc:MovieClip; - private var _gridLayer_mc:MovieClip; - private var _learnersLayer_mc:MovieClip; - private var _activityLayerComplex_mc:MovieClip; - private var _activityLayer_mc:MovieClip; + private var bkg_pnl:MovieClip; private var completed_mc:MovieClip; + private var refresh_btn:Button; private var help_btn:Button; - //private var _transitionPropertiesOK:Function; //Defined so compiler can 'see' events added at runtime by EventDispatcher private var dispatchEvent:Function; public var addEventListener:Function; public var removeEventListener:Function; - //public var menu:ContextMenu; - /** * Constructor */ function LearnerTabView(){ _learnerTabView = this; _learnerTabViewContainer_mc = this; _tm = ThemeManager.getInstance(); - _tip = new ToolTip(); + _tip = new ToolTip(); + //Init for event delegation mx.events.EventDispatcher.initialize(this); } @@ -114,7 +111,8 @@ public function init(m:Observable,c:Controller){ //Invoke superconstructor, which sets up MVC relationships. super (m, c); - mm = MonitorModel(model) + mm = MonitorModel(model) + //Set up parameters for the grid H_GAP = 10; V_GAP = 10; @@ -140,64 +138,54 @@ setSize(mm); break; case 'TABCHANGE' : - if (infoObj.tabID == _tabID && !mm.locked){ - //this._visible = true; - mm.getMonitor().getMV().getMonitorLearnerScp()._visible = true; + if (infoObj.tabID == _tabID && !mm.locked){ hideMainExp(mm); mm.broadcastViewUpdate("JOURNALSSHOWHIDE", true); - - trace("TabID for Selected tab is (TABCHANGE): "+infoObj.tabID) - + if (mm.activitiesDisplayed.isEmpty()){ mm.getMonitor().openLearningDesign(mm.getSequence()); - - }else { - - if (learnersDrawn != mm.allLearnersProgress.length){ - drawAllLearnersDesign(mm, infoObj.tabID) - } - - if(mm.getIsProgressChangedLearner()){ - reloadProgress(false); - } + } else if(mm.getIsProgressChangedLearner()) { + reloadProgress(false); + } else if(learnersDrawn != mm.allLearnersProgress.length){ + reloadProgress(true); } + + mm.getMonitor().getMV().getMonitorLearnerScp()._visible = true; LFMenuBar.getInstance().setDefaults(); - }else { + } else { mm.getMonitor().getMV().getMonitorLearnerScp()._visible = false; - //this._visible = false; } break; case 'PROGRESS' : if (infoObj.tabID == _tabID && !mm.locked){ - mm.getMonitor().getProgressData(mm.getSequence()) + mm.getMonitor().getProgressData(mm.getSequence()); } break; case 'RELOADPROGRESS' : if (infoObj.tabID == _tabID && !mm.locked){ - reloadProgress(true) + reloadProgress(true); } break; case 'DRAW_ACTIVITY' : - if (infoObj.tabID == _tabID && !mm.locked){ - trace("DRAWING_ACTIVITY") - drawActivity(infoObj.data, mm, infoObj.learner) - //MovieClipUtils.doLater(Proxy.create(this,draw)); + if (infoObj.tabID == _tabID && !mm.locked){ + drawActivity(infoObj.data, mm, infoObj.learner); } + break; + case 'CLONE_ACTIVITY' : + if (infoObj.tabID == _tabID && !mm.locked){ + cloneActivity(infoObj.data, mm, infoObj.learner); + } break; case 'REMOVE_ACTIVITY' : if (infoObj.tabID == _tabID && !mm.locked){ - trace("REMOVE_ACTIVITY") - removeActivity(infoObj.data, mm) - //MovieClipUtils.doLater(Proxy.create(this,draw)); + removeActivity(infoObj.data, mm); } break; - case 'DRAW_DESIGN' : if (infoObj.tabID == _tabID && !mm.locked){ - trace("TabID for Selected tab is (LearnerTab): "+infoObj.tabID) - drawAllLearnersDesign(mm, infoObj.tabID) + drawAllLearnersDesign(mm, infoObj.tabID); } break; default : @@ -211,25 +199,16 @@ */ private function draw(){ //set up the Movie Clips to load relevant - - _learnersLayer_mc = this.createEmptyMovieClip("_learnersLayer_mc", this.getNextHighestDepth()); - _gridLayer_mc = this.createEmptyMovieClip("_gridLayer_mc", this.getNextHighestDepth()); - _activityLayerComplex_mc = this.createEmptyMovieClip("_activityLayerComplex_mc", this.getNextHighestDepth()); - _activityLayer_mc = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); + this._activityLayer_mc = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); + this._nameLayer_mc = this.createEmptyMovieClip("_nameLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); - //learnerMenuBar.refresh_btn.onRelease = Proxy.create (this, reloadProgress); - trace("Help layer path: "+ learnerMenuBar.refresh_btn.label) - //setSize (mm) - - setStyles(); dispatchEvent({type:'load',target:this}); } private function hideMainExp(mm:MonitorModel):Void{ - //var mcontroller = getController(); mm.broadcastViewUpdate("EXPORTSHOWHIDE", false); mm.broadcastViewUpdate("EDITFLYSHOWHIDE", false); } @@ -258,8 +237,9 @@ array[i].removeMovieClip(); } } + array = new Array(); - return array; + return array; } /** @@ -270,36 +250,50 @@ */ private function reloadProgress(isChanged:Boolean){ - //if (learnersDrawn != mm.allLearnersProgress.length){ - trace("reloading Progress data for Learners") learnersDrawn = 0; + learnerListArr = new Array(); + ACT_X = 0; ACT_Y = 35; - //for(var i=0; i<_activityLayer_mc.children.length;i++){ - _activityLayer_mc.removeMovieClip(); - _activityLayer_mc = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); - //} + + this._activityLayer_mc.removeMovieClip(); + this._nameLayer_mc.removeMovieClip(); + + this._activityLayer_mc = this.createEmptyMovieClip("_activityLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); + this._nameLayer_mc = this.createEmptyMovieClip("_nameLayer_mc", this.getNextHighestDepth(),{_y:learnerMenuBar._height}); + + if (isChanged == false){ mm.setIsProgressChangedLearner(false); - mm.setIsProgressChangedSequence(true) - }else { + mm.setIsProgressChangedSequence(true); + } else { mm.setIsProgressChangedLesson(true); - mm.setIsProgressChangedSequence(true) + mm.setIsProgressChangedSequence(true); } - mm.getMonitor().getProgressData(mm.getSequence()); - //} + mm.transitionsDisplayed.clear(); + mm.activitiesDisplayed.clear(); + + mm.getMonitor().getProgressData(mm.getSequence()); - } - private function drawAllLearnersDesign(mm:MonitorModel, tabID:Number){ - //learnerListArr = clearLearnersData(learnerListArr) - for (var j=0; j