Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/IndexButton.as =================================================================== diff -u -re2fcbae966f671de6b2c8fc2457543e33cf4d7b7 -r058ef2c126172a3ee7eeed3b1883a4b65dab9d8e --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/IndexButton.as (.../IndexButton.as) (revision e2fcbae966f671de6b2c8fc2457543e33cf4d7b7) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/IndexButton.as (.../IndexButton.as) (revision 058ef2c126172a3ee7eeed3b1883a4b65dab9d8e) @@ -48,6 +48,8 @@ private var idxLabel:Label; private var _labelText:String; + private var matchesArr:Array; + private var _tm:ThemeManager; private var mm:MonitorModel; @@ -80,29 +82,56 @@ var buttonText:String = String(label.text) if (buttonText == "<<") { Debugger.log("<< clicked", Debugger.GEN, "indexClicked", "IndexButton"); + mm.drawIndexButtons = false; mm.updateIndexButtons("<<"); } else if (buttonText == ">>") { Debugger.log(">> clicked", Debugger.GEN, "indexClicked", "IndexButton"); + mm.drawIndexButtons = false; mm.updateIndexButtons(">>"); - Debugger.log("updateIndexButtons has been called", Debugger.CRITICAL, "indexClicked", "IndexButton"); } else if (buttonText == "Go") { + mm.learnerIndexView.textFieldContents = String(mm.learnerIndexView.getIdxTextField().text); // backup the string incase need to remove textfield if(!isNaN(mm.learnerIndexView.getIdxTextField().text)) { // if the text field contains a number var idx:Number = Number(mm.learnerIndexView.getIdxTextField().text); if (idx >= 1 && idx <= mm.numIndexButtons) { // if the selected index exists + mm.drawIndexButtons = false; mm.currentLearnerIndex = idx; + if (!mm.inSearchView) + mm.oldIndex = mm.currentLearnerIndex; } else - LFMessage.showMessageAlert("The page index must be a number between 1 and "+ mm.numIndexButtons, null); + LFMessage.showMessageAlert("The page number must be between 1 and "+ mm.numIndexButtons, null); } - else - LFMessage.showMessageAlert("The page index must be a number between 1 and "+ mm.numIndexButtons, null); + else if (mm.learnerIndexView.getIdxTextField().text == "") { + LFMessage.showMessageAlert("Please enter a search query or page number between 1 and "+ mm.numIndexButtons, null); + } + else { + var mc:MonitorController = mm.getMonitor().getMV().getController(); + matchesArr = mc.searchForLearners(String(mm.learnerIndexView.getIdxTextField().text)); + if (matchesArr.length > 0) { + mm.drawIndexButtons = true; + mm.searchResults = matchesArr; + var toggleBtn:MovieClip = mm.getMonitor().getMV().getLearnerIndexPanel().toggleBtn; + toggleBtn._visible = true; + } else { + LFMessage.showMessageAlert(mm.learnerIndexView.getIdxTextField().text + " was not found.", null); + } + } } + else if (buttonText == "Index View") { + mm.drawIndexButtons = true; + mm.inSearchView = false; + mm.setLessonProgressData(mm.progressArrBackup); + + //mm.currentLearnerIndex = mm.oldIndex; + } else { + mm.drawIndexButtons = false; mm.currentLearnerIndex = Number(label.text); + if (!mm.inSearchView) + mm.oldIndex = mm.currentLearnerIndex; } } - public function setSize(_btnWidth:Number):Void { this._width = _btnWidth; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/Monitor.as =================================================================== diff -u -rc8a3ab790f64597f8a37e88e5805014136695b16 -r058ef2c126172a3ee7eeed3b1883a4b65dab9d8e --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/Monitor.as (.../Monitor.as) (revision c8a3ab790f64597f8a37e88e5805014136695b16) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/Monitor.as (.../Monitor.as) (revision 058ef2c126172a3ee7eeed3b1883a4b65dab9d8e) @@ -392,7 +392,8 @@ } //sets these in the monitor model in a hashtable by learnerID - monitorModel.setLessonProgressData(allLearners); + monitorModel.setLessonProgressData(allLearners); + monitorModel.backupLearnersProgress(monitorModel.allLearnersProgress); dispatchEvent({type:'load',target:this}); Debugger.log("Progress data saved...", Debugger.GEN, "saveProgressData", "Monitor"); } @@ -459,7 +460,6 @@ var cx:Number = ba._x + ba.getVisibleWidth()/2; var cy:Number = ba._y + ba.getVisibleHeight()/2; - var isVisible:Boolean = (visible == null) ? true : visible; var _branchView_mc:MovieClip = MovieClip(monitorView.getMonitorTabView()).createChildAtDepth("canvasBranchView", DepthManager.kTop, {_x: cx, _y: cy, _canvasBranchingActivity:ba, _open:isVisible}); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as =================================================================== diff -u -r853036d1bfb199ee42a2e1d785590509d4b3b9de -r058ef2c126172a3ee7eeed3b1883a4b65dab9d8e --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision 853036d1bfb199ee42a2e1d785590509d4b3b9de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision 058ef2c126172a3ee7eeed3b1883a4b65dab9d8e) @@ -292,9 +292,8 @@ private function reloadProgress(ref, URLToSend){ var callback:Function = Proxy.create(ref, getProgressData); Application.getInstance().getComms().getRequest(URLToSend,callback, false); - //_monitorModel.updateIndexButtons(); - } + private function activitySnapBack(act:Object){ act._x = act.xCoord; act._y = act.yCoord; @@ -579,6 +578,28 @@ } /** + * Searches for learners by name, and returns an array of learners whose full names contain the search string (case insensitive). + * + * @param searchStr The learner name to search + * @return matches Array of Learners whose names contain the search string + */ + public function searchForLearners(searchStr:String):Array { + Debugger.log("searchForLearners invoked, searching for "+searchStr, Debugger.CRITICAL, "searchForLearners", "MonitorController"); + + var len:Number = _monitorModel.progressArrBackup.length; + + var matches:Array = new Array(); + for (var i = 0; i < len; i++) { + var fullName:String = _monitorModel.progressArrBackup[i].getFullName(); + if (fullName.toLowerCase().indexOf(searchStr.toLowerCase()) != -1){ + Debugger.log("Match Found With: "+ fullName, Debugger.CRITICAL, "searchForLearners", "MonitorController"); + matches.push(_monitorModel.progressArrBackup[i]); + } + } + return matches; + } + + /** * Alert message after applying the remove action on a archived lesson. * * @param msg Message to display Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as =================================================================== diff -u -rd8a2cee523843b37d53e09ade01053fac2d03ce2 -r058ef2c126172a3ee7eeed3b1883a4b65dab9d8e --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision d8a2cee523843b37d53e09ade01053fac2d03ce2) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision 058ef2c126172a3ee7eeed3b1883a4b65dab9d8e) @@ -91,7 +91,8 @@ // state data private var _isDesignDrawn:Boolean; - private var _showLearners:Boolean; + private var _showLearners:Boolean; + private var _inSearchView:Boolean; private var _endGate:MovieClip; private var _learnerIndexView:MovieClip; @@ -118,14 +119,20 @@ private var _userLoadCheckCount = 0; // instance counter for number of times we have checked to see if users are loaded private var _currentLearnerIndex:Number; + private var _oldIndex:Number; private var _learnersPerPage:Number; private var _numLearners:Number; private var _firstDisplayedIndexButton:Number; private var _lastDisplayedIndexButton:Number; private var _numDisplayedIdxButtons:Number private var _numPreferredIndexButtons:Number; private var lastIndexInitialised:Boolean; + private var _drawButtons:Boolean; + private var _matchesArr:Array; + private var backupLearnersProgArr:Array; + private var _searchResultsBackup:Array; + private var dispatchEvent:Function; public var addEventListener:Function; public var removeEventListener:Function; @@ -140,9 +147,11 @@ _showLearners = true; isDesignDrawn = true; + _drawButtons = true; _staffLoaded = false; _learnersLoaded = false; lastIndexInitialised = false; + _inSearchView = false; _currentLearnerIndex = 1; _numPreferredIndexButtons = 10; // to be displayed at a time @@ -389,9 +398,9 @@ * @usage * @return */ - public function clearDesign(){ + public function clearDesign(){ Debugger.log('Running',Debugger.GEN,'clearDesign','MonitorModel'); - + var mmActivity_keys:Array = _activitiesDisplayed.keys(); var longest = mmActivity_keys.length; @@ -410,7 +419,7 @@ var mmTransition_keys:Array = _transitionsDisplayed.keys(); var transLongest = mmTransition_keys.length; - + //chose which array we are going to loop over var transIndexArray:Array; transIndexArray = mmTransition_keys; @@ -466,10 +475,14 @@ } public function get numIndexButtons(): Number { - var numIdxBtns:Number = Math.ceil(Math.max(getSequence().noStartedLearners,_learnersProgress.size())/learnersPerPage); - Debugger.log("numIdxBtns: "+numIdxBtns, Debugger.CRITICAL, "numIndexButtons", "MonitorModel"); + var numIdxBtns:Number; + if (inSearchView) { + numIdxBtns = Math.ceil(_learnersProgress.size()/learnersPerPage); + } else { + numIdxBtns = Math.ceil(Math.max(getSequence().noStartedLearners,_learnersProgress.size())/learnersPerPage); + } return numIdxBtns; - } + } public function updateIndexButtons(s:String):Void { if (s == ">>") { @@ -488,8 +501,17 @@ } else { // Refresh or Go clicked Debugger.log("Refresh or Go clicked", Debugger.CRITICAL, "updateIndexButtons", "MonitorModel"); - if (_lastDisplayedIndexButton < _numPreferredIndexButtons) - _lastDisplayedIndexButton = Math.min(numIndexButtons, _numPreferredIndexButtons); + Debugger.log("MonitorModel inSearchView: "+inSearchView, Debugger.GEN, "updateIndexButtons", "MonitorModel"); + if (_inSearchView ) { + if (numIndexButtons < currentLearnerIndex) { + _firstDisplayedIndexButton = 1; + _lastDisplayedIndexButton = Math.min(numIndexButtons,_numPreferredIndexButtons); + } else + _lastDisplayedIndexButton = Math.min(numIndexButtons,_numPreferredIndexButtons); + } + else if (_lastDisplayedIndexButton < _numPreferredIndexButtons) { + _lastDisplayedIndexButton = Math.min(numIndexButtons,_numPreferredIndexButtons); + } } } @@ -503,7 +525,15 @@ infoObj.updateType = "DRAW_BUTTONS"; notifyObservers(infoObj); } - + + public function set drawIndexButtons(drawButtons:Boolean):Void { + _drawButtons = drawButtons; + } + + public function get drawIndexButtons():Boolean { + return _drawButtons; + } + public function get numDisplayedIdxButtons():Number { return _numDisplayedIdxButtons = _lastDisplayedIndexButton - _firstDisplayedIndexButton + 1; } @@ -523,7 +553,34 @@ public function get numPreferredIndexButtons():Number { return _numPreferredIndexButtons; } - + + public function set searchResults(matchesArr:Array) { + //_oldIndex = _currentLearnerIndex; + Debugger.log("_inSearchView: "+_inSearchView, Debugger.CRITICAL, "searchResults", "MonitorModel"); + if (!_inSearchView) { + _currentLearnerIndex = 1; + _inSearchView = true; + } + setLessonProgressData(matchesArr); + _searchResultsBackup = matchesArr; + } + + public function set oldIndex(idx:Number):Void { + _oldIndex = idx; + } + + public function get oldIndex():Number { + return _oldIndex; + } + + public function set inSearchView(inSearchView:Boolean):Void { + _inSearchView = inSearchView; + } + + public function get inSearchView():Boolean { + return _inSearchView; + } + public function getlearnerTabActArr():Array{ return learnerTabActArr; } @@ -541,26 +598,26 @@ public function isActiveView(view:Object):Boolean { return (activeView == view); } - - public function addNewBranch(sequence:SequenceActivity, branchingActivity:BranchingActivity, isDefault:Boolean):Void { - Debugger.log("sequence.firstActivityUIID: "+sequence.firstActivityUIID, Debugger.CRITICAL, "addNewBranch", "MonitorModel"); - - if(sequence.firstActivityUIID == null && app.getMonitor().ddm.getComplexActivityChildren(sequence.activityUIID).length <= 0) { - - var b:Branch = new Branch(app.getMonitor().ddm.newUIID(), BranchConnector.DIR_SINGLE, branchingActivity.activityUIID, null, sequence, app.getMonitor().ddm.learningDesignID); - app.getMonitor().ddm.addBranch(b); - - } else if(sequence.firstActivityUIID != null) { - - var b:Branch = new Branch(app.getMonitor().ddm.newUIID(), BranchConnector.DIR_FROM_START, app.getMonitor().ddm.getActivityByUIID(sequence.firstActivityUIID).activityUIID, branchingActivity.activityUIID, sequence, app.getMonitor().ddm.learningDesignID); - app.getMonitor().ddm.addBranch(b); - - Debugger.log("sequence.stopAfterActivity: "+sequence.stopAfterActivity, Debugger.CRITICAL, "addNewBranch", "MonitorModel"); - - // TODO: review - if(!sequence.stopAfterActivity) { - b = new Branch(app.getMonitor().ddm.newUIID(), BranchConnector.DIR_TO_END, app.getMonitor().ddm.getActivityByUIID(this.getLastActivityUIID(sequence.firstActivityUIID)).activityUIID, branchingActivity.activityUIID, sequence, app.getMonitor().ddm.learningDesignID); - app.getMonitor().ddm.addBranch(b); + + public function addNewBranch(sequence:SequenceActivity, branchingActivity:BranchingActivity, isDefault:Boolean):Void { + Debugger.log("sequence.firstActivityUIID: "+sequence.firstActivityUIID, Debugger.CRITICAL, "addNewBranch", "MonitorModel"); + + if(sequence.firstActivityUIID == null && app.getMonitor().ddm.getComplexActivityChildren(sequence.activityUIID).length <= 0) { + + var b:Branch = new Branch(app.getMonitor().ddm.newUIID(), BranchConnector.DIR_SINGLE, branchingActivity.activityUIID, null, sequence, app.getMonitor().ddm.learningDesignID); + app.getMonitor().ddm.addBranch(b); + + } else if(sequence.firstActivityUIID != null) { + + var b:Branch = new Branch(app.getMonitor().ddm.newUIID(), BranchConnector.DIR_FROM_START, app.getMonitor().ddm.getActivityByUIID(sequence.firstActivityUIID).activityUIID, branchingActivity.activityUIID, sequence, app.getMonitor().ddm.learningDesignID); + app.getMonitor().ddm.addBranch(b); + + Debugger.log("sequence.stopAfterActivity: "+sequence.stopAfterActivity, Debugger.CRITICAL, "addNewBranch", "MonitorModel"); + + // TODO: review + if(!sequence.stopAfterActivity) { + b = new Branch(app.getMonitor().ddm.newUIID(), BranchConnector.DIR_TO_END, app.getMonitor().ddm.getActivityByUIID(this.getLastActivityUIID(sequence.firstActivityUIID)).activityUIID, branchingActivity.activityUIID, sequence, app.getMonitor().ddm.learningDesignID); + app.getMonitor().ddm.addBranch(b); } if(isDefault) @@ -623,13 +680,13 @@ } - /** - * get the design in the DesignDataModel and update the Monitor Model accordingly. - * NOTE: Design elements are added to the DDM here. - * - * @usage - * @return - */ + /** + * get the design in the DesignDataModel and update the Monitor Model accordingly. + * NOTE: Design elements are added to the DDM here. + * + * @usage + * @return + */ public function drawDesign(tabID:Number, learner:Object){ var eventArr:Array = new Array(); @@ -642,46 +699,46 @@ var drawLearner:Object = new Object(); drawLearner = learner; } - - //go through the design and get the activities and transitions - var dataObj:Object; - Debugger.log("ddm_activity keys: "+ddmActivity_keys.length, Debugger.GEN, "drawDesign", "MonitorModel"); - - //loop through - Debugger.log("indexArray.length: "+indexArray.length, Debugger.CRITICAL, "drawDesign", "MonitorModel"); - - for(var i=0; i 0 || ddm_activity.parentUIID > 0){ - var parentAct; - if((parentAct = _activeSeq.getLearningDesignModel().activities.get(ddm_activity.parentUIID)) != null) - if(parentAct.activityTypeID == Activity.SEQUENCE_ACTIVITY_TYPE && selectedTab != LearnerTabView._tabID) - eventArr.push(createViewUpdate("DRAW_ACTIVITY_SEQ", ddm_activity, tabID, drawLearner)); - } else { - eventArr.push(createViewUpdate("DRAW_ACTIVITY", ddm_activity, tabID, drawLearner)); - } + + //go through the design and get the activities and transitions + var dataObj:Object; + Debugger.log("ddm_activity keys: "+ddmActivity_keys.length, Debugger.GEN, "drawDesign", "MonitorModel"); + + //loop through + Debugger.log("indexArray.length: "+indexArray.length, Debugger.CRITICAL, "drawDesign", "MonitorModel"); + + for(var i=0; i 0 || ddm_activity.parentUIID > 0){ + var parentAct; + if((parentAct = _activeSeq.getLearningDesignModel().activities.get(ddm_activity.parentUIID)) != null) + if(parentAct.activityTypeID == Activity.SEQUENCE_ACTIVITY_TYPE && selectedTab != LearnerTabView._tabID) + eventArr.push(createViewUpdate("DRAW_ACTIVITY_SEQ", ddm_activity, tabID, drawLearner)); + } else { + eventArr.push(createViewUpdate("DRAW_ACTIVITY", ddm_activity, tabID, drawLearner)); + } } - if(selectedTab != LearnerTabView._tabID) { - //now check the transitions: - ddmTransition_keys = _activeSeq.getLearningDesignModel().transitions.keys(); - - //chose which array we are going to loop over + if(selectedTab != LearnerTabView._tabID) { + //now check the transitions: + ddmTransition_keys = _activeSeq.getLearningDesignModel().transitions.keys(); + + //chose which array we are going to loop over var trIndexArray:Array = ddmTransition_keys; - + //loop through - for (var i=0; i 1) ? monitorLearner_scp.setSize(s.w-monitorLearner_scp._x, s.h-20) : monitorLearner_scp.setSize(s.w-monitorLearner_scp._x, s.h); - + (mm.numIndexButtons > 1 || mm.inSearchView) ? monitorLearner_scp.setSize(s.w-monitorLearner_scp._x, s.h-20) : monitorLearner_scp.setSize(s.w-monitorLearner_scp._x, s.h); + viewJournals_btn._x = s.w - 260; exportPortfolio_btn._x = s.w - 260; editFly_btn._x = s.w - 360; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerIndexView.as =================================================================== diff -u -r30a0d88e111c90cd5a2e9fc7c4e204551e6061be -r058ef2c126172a3ee7eeed3b1883a4b65dab9d8e --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerIndexView.as (.../LearnerIndexView.as) (revision 30a0d88e111c90cd5a2e9fc7c4e204551e6061be) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerIndexView.as (.../LearnerIndexView.as) (revision 058ef2c126172a3ee7eeed3b1883a4b65dab9d8e) @@ -71,18 +71,16 @@ private var backBtn:MovieClip; private var nextBtn:MovieClip; private var goBtn:MovieClip; - private var clrBtn:MovieClip; + private var toggleBtn:MovieClip; private var textFieldBackground_mc:MovieClip; private var labelBackground_mc:MovieClip; private var idxTextField:TextField; - private var textFieldContents:String; + private var _textFieldContents:String; private var defaultString:String; private var rangeLabel; - //private var labelBackground; private var buttonsShown:Boolean; - private var drawButtons:Boolean; // buttons to the right of last index button - private var navigationButtonsDrawn:Boolean; + private var navigationButtonsDrawn:Boolean; private var direction:String; @@ -97,10 +95,9 @@ nextPosition = 0; btnWidth = 45; - buttonsShown = false; + buttonsShown = false; navigationButtonsDrawn = false; - drawButtons = true; - defaultString = "Enter Page Number"; + defaultString = "Enter search query or page no."; this._visible = false; displayedButtons = new Array(); @@ -152,44 +149,26 @@ } break; case 'DRAW_DESIGN' : - if (infoObj.tabID == _tabID && !mm.locked && mm.numIndexButtons>1) { - if (!buttonsShown || newButtonsNeeded(mm)) { - drawButtons = true; - setupButtons(mm); - this._visible = true; - } - else - updatePageLabel(); + if (infoObj.tabID == _tabID && !mm.locked && (mm.numIndexButtons>1 || mm.inSearchView)) { + mm.updateIndexButtons(); + setupButtons(mm); + this._visible = true; + } break; case 'DRAW_BUTTONS' : // this event is only fired when << or >> buttons clicked as it doesn't redraw learnertabview contents if (infoObj.tabID == _tabID && !mm.locked && mm.numIndexButtons>1) { - //if ((mm.numIndexButtons > displayedButtons.length)) { if (!buttonsShown || (mm.numIndexButtons > displayedButtons.length)) { - drawButtons = false; - setupButtons(mm); + //drawButtons = false; + setupButtons(mm); // this only renames the index buttons as drawbuttons equals false this._visible = true; } } break; default : - Debugger.log('unknown update type :' + infoObj.updateType,Debugger.GEN,'update','org.lamsfoundation.lams.LearnerIndexView'); + Debugger.log('unknown update type :' + infoObj.updateType,Debugger.GEN,'update','org.lamsfoundation.lams.MonitorTabView'); } } - - private function newButtonsNeeded(mm:MonitorModel):Boolean { - if (mm.numIndexButtons > displayedButtons.length) { - if (displayedButtons.length < mm.numPreferredIndexButtons || !navigationButtonsDrawn) { - mm.updateIndexButtons(); // need to update mm.lastDisplayedIndexButton because it will need to be redrawn - return true; - } - } - return false; - } - - public function updatePageLabel():Void { - rangeLabel.text = "Page " + mm.currentLearnerIndex + " of " + mm.numIndexButtons; - } private function draw(){ setStyles(); @@ -207,10 +186,9 @@ //var styleObj = _tm.getStyleObject('IndexBar'); } - public function setupButtons(mm:MonitorModel):Void { + /*public function setupButtons(mm:MonitorModel):Void { rangeLabel.text = "Page " + mm.currentLearnerIndex + " of " + mm.numIndexButtons; if ((displayedButtons.length > 0) && (drawButtons == true)) { - Debugger.log("[displayedButtons.length > 0] => removing buttons", Debugger.CRITICAL, "setupButtons", "LearnerIndexView"); removeButtons(); } @@ -225,21 +203,67 @@ if (drawButtons == true) { if (mm.numIndexButtons > mm.numPreferredIndexButtons) { - addForwardNavigationButton(mm); + addForwardNavigationButton(mm); navigationButtonsDrawn = true; } addIndexTextField(mm); addGoButton(mm); + addToggleViewButton(mm); buttonsShown = true; direction = null; - nextPosition = 0; } + //if (mm.inSearchView) + // toggleBtn._visible = true; + + nextPosition = 0; + }*/ + public function setupButtons(mm:MonitorModel):Void { + + rangeLabel.text = "Page " + mm.currentLearnerIndex + " of " + mm.numIndexButtons; + + if (!navigationButtonsDrawn && mm.numIndexButtons > displayedButtons.length && displayedButtons.length == mm.numPreferredIndexButtons) + mm.drawIndexButtons = true; + + var dib = mm.drawIndexButtons; // false on refresh should be true + Debugger.log("setupButtons dib: "+dib, Debugger.CRITICAL, "setupButtons", "LearnerIndexView"); + if ((displayedButtons.length > 0) && (mm.drawIndexButtons)) { + removeButtons(); + } + + if (mm.drawIndexButtons) { + _buttonsPanel_mc = this.createEmptyMovieClip("_buttonsPanel_mc", DepthManager.kTop); + addRangeLabel(mm); + addIndexTextField(mm); + addGoButton(mm); + if (mm.inSearchView) { + addToggleViewButton(mm); + } + } + + if (mm.drawIndexButtons) { + if (mm.numIndexButtons > mm.numPreferredIndexButtons) { + addBackNavigationButton(mm); + } + } + + // if drawButtons = false, just rename labels + addIndexButtons(mm); + + if (mm.drawIndexButtons) { + if (mm.numIndexButtons > mm.numPreferredIndexButtons) { + addForwardNavigationButton(mm); + navigationButtonsDrawn = true; + buttonsShown = true; + direction = null; + } + } + + nextPosition = 0; } public function removeButtons(){ Debugger.log("Removing Index Buttons", Debugger.GEN, "removeButtons", "LearnerIndexView"); - textFieldContents = String(idxTextField.text); //labelBackground_mc.removeMovieClip(rangeLabel); _buttonsPanel_mc.removeMovieClip(rangeLabel); @@ -253,15 +277,16 @@ } if (mm.numIndexButtons > mm.numPreferredIndexButtons) { - _buttonsPanel_mc.removeMovieClip(nextBtn); - navigationButtonsDrawn = false; + _buttonsPanel_mc.removeMovieClip(nextBtn); + navigationButtonsDrawn = false; } //need to remove the text field from the background textFieldBackground_mc.removeMovieClip(idxTextField); _buttonsPanel_mc.removeMovieClip(textFieldBackground_mc); _buttonsPanel_mc.removeMovieClip(goBtn); + _buttonsPanel_mc.removeMovieClip(toggleBtn); } private function addRangeLabel(mm:MonitorModel):Void { @@ -274,41 +299,50 @@ rangeLabel.text = "Page " + mm.currentLearnerIndex + " of " + mm.numIndexButtons; nextPosition += rangeLabel._width; } + + private function addBackNavigationButton(mm:MonitorModel):Void { + // add back navigation button + backBtn = _buttonsPanel_mc.attachMovie("IndexButton", "backBtn", _buttonsPanel_mc.getNextHighestDepth(), {_width: btnWidth-5, _labelText: "<<"}); + _indexButton = IndexButton(backBtn); + _indexButton.init(mm, undefined); + backBtn._x = nextPosition; + nextPosition += (btnWidth-5); + } - private function addBackNavigationButton(mm:MonitorModel):Void { - // add back navigation button - backBtn = _buttonsPanel_mc.attachMovie("IndexButton", "backBtn", _buttonsPanel_mc.getNextHighestDepth(), {_width: btnWidth-5, _labelText: "<<"}); - _indexButton = IndexButton(backBtn); - _indexButton.init(mm, undefined); - backBtn._x = nextPosition; - nextPosition += (btnWidth-5); - } - private function addIndexButtons(mm:MonitorModel):Void { // The index buttons Debugger.log("mm.numIndexButtons: "+mm.numIndexButtons, Debugger.GEN, "addIndexButton", "LearnerIndexView"); Debugger.log("mm.firstDisplayedIndexButton: "+mm.firstDisplayedIndexButton, Debugger.GEN, "addIndexButton", "LearnerIndexView"); Debugger.log("mm.lastDisplayedIndexButton: "+mm.lastDisplayedIndexButton, Debugger.GEN, "addIndexButton", "LearnerIndexView"); var count:Number = 0; - - for (var i=mm.firstDisplayedIndexButton; i<=mm.lastDisplayedIndexButton; i++) { - if (drawButtons == true) { - var idxBtn:MovieClip = _buttonsPanel_mc.attachMovie("IndexButton", "idxBtn"+i, _buttonsPanel_mc.getNextHighestDepth(), {_width: btnWidth, _labelText: String(i)}); - _indexButton = IndexButton(idxBtn); - _indexButton.init(mm, undefined); - displayedButtons.push(idxBtn); - idxBtn._x = nextPosition; - nextPosition += btnWidth; - } else { - _indexButton = IndexButton(displayedButtons[count]); - //displayedButtons[count]._labelText = String(i); - displayedButtons[count].label = String(i); - nextPosition += btnWidth - count++; + + Debugger.log("displayedButtons[displayedButtons.length-1].label.text: "+displayedButtons[displayedButtons.length-1].label.text, Debugger.GEN, "addIndexButton", "LearnerIndexView"); + + if (mm.inSearchView && (mm.firstDisplayedIndexButton == mm.lastDisplayedIndexButton)) { + // do nothing + // won't draw numbered index buttons if in search view and there's only one page of results + } + else { + Debugger.log("this should be false mm.drawIndexButtons: "+mm.drawIndexButtons, Debugger.GEN, "addIndexButton", "LearnerIndexView"); + for (var i=mm.firstDisplayedIndexButton; i<=mm.lastDisplayedIndexButton; i++) { + if (mm.drawIndexButtons) { + var idxBtn:MovieClip = _buttonsPanel_mc.attachMovie("IndexButton", "idxBtn"+i, _buttonsPanel_mc.getNextHighestDepth(), {_width: btnWidth, _labelText: String(i)}); + _indexButton = IndexButton(idxBtn); + _indexButton.init(mm, undefined); + displayedButtons.push(idxBtn); + idxBtn._x = nextPosition; + nextPosition += btnWidth; + } else { + + _indexButton = IndexButton(displayedButtons[count]); + displayedButtons[count].label = String(i); + nextPosition += btnWidth + count++; + } } } } - + private function addForwardNavigationButton(mm:MonitorModel):Void { nextBtn = _buttonsPanel_mc.attachMovie("IndexButton", "nextBtn", _buttonsPanel_mc.getNextHighestDepth(), {_width: btnWidth-5, _labelText: ">>"}); _indexButton = IndexButton(nextBtn); @@ -322,29 +356,41 @@ _buttonsPanel_mc.attachMovie("textFieldBackground", "textFieldBackground_mc", _buttonsPanel_mc.getNextHighestDepth(), {_x: nextPosition, _y: 0}); var textFieldBackground = _buttonsPanel_mc["textFieldBackground_mc"]; - textFieldBackground.createTextField("idxTextField", textFieldBackground.getNextHighestDepth(), 0, 0, 100, 20); + textFieldBackground._width = 150; + textFieldBackground.createTextField("idxTextField", textFieldBackground.getNextHighestDepth(), 0, 0, 150, 20); + idxTextField = textFieldBackground["idxTextField"]; idxTextField._visible = true; idxTextField.enabled = true; idxTextField._editable = true; idxTextField.type = "input"; idxTextField.autosize = "center" - Debugger.log("textFieldContents: "+textFieldContents, Debugger.CRITICAL, "addIndexTextField", "LearnerIndexView"); - Debugger.log("idxTextField.text: "+idxTextField.text, Debugger.CRITICAL, "addIndexTextField", "LearnerIndexView"); - idxTextField.text = (textFieldContents == undefined) ? defaultString : textFieldContents; + idxTextField.text = (_textFieldContents == undefined) ? defaultString : _textFieldContents; nextPosition += idxTextField._width; idxTextField.onSetFocus = Delegate.create(this, textFieldHasFocus); } + public function set textFieldContents(s:String) { + _textFieldContents = s; + } + private function addGoButton(mm:MonitorModel):Void { goBtn = _buttonsPanel_mc.attachMovie("IndexButton", "goBtn", _buttonsPanel_mc.getNextHighestDepth(), {_width: btnWidth, _labelText: "Go"}); _indexButton = IndexButton(goBtn); _indexButton.init(mm, undefined); goBtn._x = nextPosition; nextPosition += (btnWidth); } + + private function addToggleViewButton(mm:MonitorModel):Void { + toggleBtn = _buttonsPanel_mc.attachMovie("IndexButton", "toggleBtn", _buttonsPanel_mc.getNextHighestDepth(), {_width: (btnWidth * 2), _labelText: "Index View"}); + _indexButton = IndexButton(toggleBtn); + _indexButton.init(mm, undefined); + toggleBtn._x = nextPosition; + nextPosition += (btnWidth * 2); + } private function setPosition(mm:MonitorModel):Void{ var p:Object = mm.getPosition(); @@ -377,5 +423,9 @@ public function getIdxTextField():TextField { return idxTextField; + } + + public function getToggleBtn():MovieClip { + return toggleBtn; } } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as =================================================================== diff -u -rd8a2cee523843b37d53e09ade01053fac2d03ce2 -r058ef2c126172a3ee7eeed3b1883a4b65dab9d8e --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as (.../LearnerTabView.as) (revision d8a2cee523843b37d53e09ade01053fac2d03ce2) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as (.../LearnerTabView.as) (revision 058ef2c126172a3ee7eeed3b1883a4b65dab9d8e) @@ -86,6 +86,8 @@ private var help_btn:Button; private var panelLowered:Boolean; + private var activitiesDrawn:Number; + private var mostRowActivities:Number; private var drawCount:Number; private var maxCount:Number; private var evtArr:Array; @@ -129,6 +131,9 @@ //Set up parameters for the grid H_GAP = 10; V_GAP = 10; + + activitiesDrawn = 0; + mostRowActivities = 0; MovieClipUtils.doLater(Proxy.create(this,draw)); mm.getMonitor().getMV().getMonitorLearnerScp()._visible = false; @@ -238,8 +243,12 @@ public function drawNext():Void { if(drawCount < maxCount) { Debugger.log("drawing: " + evtArr[drawCount].updateType, Debugger.CRITICAL, "drawNext", "LearnerTabView"); + activitiesDrawn++; update(mm, evtArr[drawCount]) + setSize(mm); } else { + //setSize(mm); + activitiesDrawn = 0; drawNextLearner(); return; } @@ -597,14 +606,14 @@ * Sets the size of the canvas on stage, called from update */ private function setSize(mm:MonitorModel):Void{ - var s:Object = mm.getSize(); + //var s:Object = mm.getSize(); // when taken from monitor model wasn't setting size properly with 1 learner - var actkeys = mm.getSequence().getLearningDesignModel().activities.keys(); - var ddmBranch_keys:Array = mm.getSequence().getLearningDesignModel().branches.keys(); - var scpWidth:Number = Math.max((actkeys.length)*130, s.w); - + if (mostRowActivities < activitiesDrawn) + mostRowActivities = activitiesDrawn; + + var scpWidth:Number = Math.max((mostRowActivities)*130 + 6, mm.getMonitor().getMV().getMonitorLearnerScp()._width); + var newWidth:Number = (_activityLayer_mc._width < scpWidth) ? scpWidth - 6 : _activityLayer_mc._width; - for (var i=0; i