Index: lams_flash/src/central/flash/lams_monitoring_v1.fla =================================================================== diff -u -r63e4ddc1e3bb7b6ca1da4a02ee3d0d148552dee8 -rfdf1c80df9cc884de2d9a81d6e69706049d0bcb0 Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/IndexButton.as =================================================================== diff -u -r63e4ddc1e3bb7b6ca1da4a02ee3d0d148552dee8 -rfdf1c80df9cc884de2d9a81d6e69706049d0bcb0 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/IndexButton.as (.../IndexButton.as) (revision 63e4ddc1e3bb7b6ca1da4a02ee3d0d148552dee8) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/IndexButton.as (.../IndexButton.as) (revision fdf1c80df9cc884de2d9a81d6e69706049d0bcb0) @@ -55,13 +55,15 @@ * Called to Indexbutton. Called by LearnerIndexView */ public function init(m:Observable, c:Controller){ - + super (m, c); mm = MonitorModel(m); - btnWidth = 45; + _tm = ThemeManager.getInstance(); + + btnWidth = 45; _bgPanel._width = btnWidth; - idxLabel_mc = this.attachMovie("Label", "idxLabel", this.getNextHighestDepth(), {text:_labelText, _width: 40, autoSize: "right"}); + idxLabel_mc = this.attachMovie("Label", "idxLabel", this.getNextHighestDepth(), {text:_labelText, _width: 45, autoSize: "center"}); idxLabel = Label(idxLabel_mc); _bgPanel.onRollOver = Delegate.create(this, onMouseOver); @@ -74,14 +76,38 @@ } public function indexClicked(): Void { - mm.currentLearnerIndex = Number(label.text); + var buttonText:String = String(label.text) + if (buttonText == "<<") { + Debugger.log("<< clicked", Debugger.GEN, "indexClicked", "IndexButton"); + mm.updateIndexButtons("<<"); + } else if (buttonText == ">>") { + Debugger.log(">> clicked", Debugger.GEN, "indexClicked", "IndexButton"); + Debugger.log("mm: "+mm, Debugger.GEN, "indexClicked", "IndexButton"); + mm.updateIndexButtons(">>"); + Debugger.log("updateIndexButtons has been called", Debugger.CRITICAL, "indexClicked", "IndexButton"); + } else if (buttonText == "Go") { + 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.currentLearnerIndex = idx; + } + else + LFMessage.showMessageAlert("The page index must be a number between 1 and "+ mm.numIndexButtons, null); + } + else + LFMessage.showMessageAlert("The page index must be a number between 1 and "+ mm.numIndexButtons, null); + } + else { + //mm.updateIndexButtons(); + mm.currentLearnerIndex = Number(label.text); + } } public function setSize(_btnWidth:Number):Void { this._width = _btnWidth; - idxLabel._width = _btnWidth - 5; + idxLabel._width = _btnWidth; _bgPanel._width = _btnWidth; } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as =================================================================== diff -u -r7a9b710e06a36df574d235d7afc61665580249ec -rfdf1c80df9cc884de2d9a81d6e69706049d0bcb0 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision 7a9b710e06a36df574d235d7afc61665580249ec) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision fdf1c80df9cc884de2d9a81d6e69706049d0bcb0) @@ -264,7 +264,7 @@ 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){ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as =================================================================== diff -u -rb0054257349ffef3a3cd82ecd30eb6e5b48ad953 -rfdf1c80df9cc884de2d9a81d6e69706049d0bcb0 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision b0054257349ffef3a3cd82ecd30eb6e5b48ad953) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorModel.as (.../MonitorModel.as) (revision fdf1c80df9cc884de2d9a81d6e69706049d0bcb0) @@ -120,10 +120,17 @@ private var _currentLearnerIndex: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 dispatchEvent:Function; public var addEventListener:Function; public var removeEventListener:Function; + + //private var _config:Config; /** * Constructor. @@ -135,16 +142,19 @@ isDesignDrawn = true; _staffLoaded = false; _learnersLoaded = false; + lastIndexInitialised = false; _currentLearnerIndex = 1; + _numPreferredIndexButtons = 10; // to be displayed at a time _learnersPerPage = 10; + _firstDisplayedIndexButton = 1; _activeView = null; _activitiesDisplayed = new Hashtable("_activitiesDisplayed"); _transitionsDisplayed = new Hashtable("_transitionsDisplayed"); _branchesDisplayed = new Hashtable("_branchesDisplayed"); - _learnersProgress = new Hashtable("_learnersProgress") + _learnersProgress = new Hashtable("_learnersProgress"); _orgResources = new Array(); learnerTabActArr = new Array(); @@ -205,8 +215,6 @@ // create new Sequence from DTO var seq:Sequence = new Sequence(_seq); setSequence(seq); - //setNumLearners(_seq.numberStartedLearners); - //Debugger.log("_seq.numberStartedLearners: "+_seq.numberStartedLearners, Debugger.CRITICAL, "loadSequence", "MonitorModel"); return true; } @@ -239,6 +247,7 @@ //clear the old lot of Learner Progress data _learnersProgress.clear(); learnerTabActArr = new Array(); + learnerTabActArr = learnerProg; for(var i=0; i>") { + var diff:Number = numIndexButtons - lastDisplayedIndexButton; + var minButtons:Number = Math.min(diff, _numPreferredIndexButtons); + _lastDisplayedIndexButton += minButtons; + _firstDisplayedIndexButton = _lastDisplayedIndexButton - Math.min(numIndexButtons, _numPreferredIndexButtons) + 1; + sendButtonUpdate(); + } + else if (s == "<<") { + _firstDisplayedIndexButton -= _numPreferredIndexButtons; + if (_firstDisplayedIndexButton < 1) + _firstDisplayedIndexButton = 1; + _lastDisplayedIndexButton = numIndexButtons > _numPreferredIndexButtons ? (_firstDisplayedIndexButton + _numPreferredIndexButtons - 1) : numIndexButtons; + sendButtonUpdate(); + } + else { // Refresh or Go clicked + Debugger.log("Refresh or Go clicked", Debugger.CRITICAL, "updateIndexButtons", "MonitorModel"); + if (_lastDisplayedIndexButton < _numPreferredIndexButtons) + _lastDisplayedIndexButton = Math.min(numIndexButtons, _numPreferredIndexButtons); + } + } + + public function sendButtonUpdate():Void { + //Set flag for notify observers + setChanged(); + + //build and send update object + infoObj = {}; + infoObj.tabID = 2; + infoObj.updateType = "DRAW_BUTTONS"; + notifyObservers(infoObj); + } + + public function get numDisplayedIdxButtons():Number { + return _numDisplayedIdxButtons = _lastDisplayedIndexButton - _firstDisplayedIndexButton + 1; + } + + public function get firstDisplayedIndexButton():Number { + return _firstDisplayedIndexButton; + } + + public function get lastDisplayedIndexButton():Number { + if (!lastIndexInitialised) { + _lastDisplayedIndexButton = Math.min(numIndexButtons, _numPreferredIndexButtons); + lastIndexInitialised = true; + } + return _lastDisplayedIndexButton; + } + + public function get numPreferredIndexButtons():Number { + return _numPreferredIndexButtons; + } + public function getlearnerTabActArr():Array{ return learnerTabActArr; } @@ -1104,6 +1167,7 @@ } public function get allLearnersProgress():Array{ + learnerTabActArr.sortOn(["_learnerLName", "_learnerFName"], Array.CASEINSENSITIVE); return learnerTabActArr; } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as =================================================================== diff -u -rf8e0c0e67f67bdcdf8ae8367b638c3775f7652de -rfdf1c80df9cc884de2d9a81d6e69706049d0bcb0 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as (.../MonitorView.as) (revision f8e0c0e67f67bdcdf8ae8367b638c3775f7652de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/MonitorView.as (.../MonitorView.as) (revision fdf1c80df9cc884de2d9a81d6e69706049d0bcb0) @@ -311,23 +311,23 @@ monitorGateView.init(mm, undefined); monitorGateView.addEventListener('load',Proxy.create(this,tabLoaded)); - // Inititialsation for Learner Tab View - learnerTabView_mc = _learnerTabLayer_mc.attachMovie("LearnerTabView", "learnerTabView_mc",DepthManager.kTop) - learnerTabView = LearnerTabView(learnerTabView_mc); - learnerTabView.init(mm, undefined); - learnerTabView.addEventListener('load',Proxy.create(this,tabLoaded)); - // Inititialsation for Learner Index View learnerIndexView_mc = _monitorPanels_mc.attachMovie("LearnerIndexView", "learnerIndexView_mc", _monitorPanels_mc.getNextHighestDepth()); learnerIndexView = LearnerIndexView(learnerIndexView_mc); learnerIndexView.init(mm, undefined); learnerIndexView.addEventListener('load',Proxy.create(this,tabLoaded)); + // Inititialsation for Learner Tab View + learnerTabView_mc = _learnerTabLayer_mc.attachMovie("LearnerTabView", "learnerTabView_mc",DepthManager.kTop) + learnerTabView = LearnerTabView(learnerTabView_mc); + learnerTabView.init(mm, undefined); + learnerTabView.addEventListener('load',Proxy.create(this,tabLoaded)); + mm.addObserver(lessonTabView); mm.addObserver(monitorTabView); mm.addObserver(monitorGateView); - mm.addObserver(learnerTabView); mm.addObserver(learnerIndexView); + mm.addObserver(learnerTabView); } public function showToolTip(btnObj, btnTT:String):Void{ @@ -389,12 +389,22 @@ private function setSize(mm:MonitorModel):Void{ var s:Object = mm.getSize(); bkg_pnl.setSize(s.w,s.h); + Debugger.log("s.h: "+s.h, Debugger.CRITICAL, "setSize", "MonitorView"); + bkgHeader_pnl.setSize(s.w, bkgHeader_pnl._height); - monitorLesson_scp.setSize(s.w-monitorLesson_scp._x, s.h-monitorLesson_scp._y); - monitorSequence_scp.setSize(s.w-monitorSequence_scp._x, s.h-40.7); - monitorLearner_scp.setSize(s.w-monitorLearner_scp._x, s.h-monitorLearner_scp._y); - monitorGateView_mc.setSize(s.w, 40.7); + + //monitorLesson_scp.setSize(s.w-monitorLesson_scp._x, s.h-monitorLesson_scp._y); + monitorLesson_scp.setSize(s.w-monitorLesson_scp._x, s.h); + Debugger.log("s.w-monitorLesson_scp._x: "+s.w-monitorLesson_scp._x, Debugger.CRITICAL, "setSize", "MonitorView"); + Debugger.log("s.h-monitorLesson_scp._y: "+s.h-monitorLesson_scp._y, Debugger.CRITICAL, "setSize", "MonitorView"); + + monitorSequence_scp.setSize(s.w-monitorSequence_scp._x, s.h-40.7); // endGate height = 40.7 + monitorGateView.setSize(mm); learnerIndexView.setSize(mm); + //monitorLearner_scp.setSize(s.w-monitorLearner_scp._x, s.h-monitorLearner_scp._y); + monitorLearner_scp.setSize(s.w-monitorLearner_scp._x, s.h-20); + Debugger.log("s.w: "+s.w, Debugger.CRITICAL, "setSize", "MonitorView"); + Debugger.log("monitorLearner_scp._x: "+monitorLearner_scp._x, Debugger.CRITICAL, "setSize", "MonitorView"); viewJournals_btn._x = s.w - 260; exportPortfolio_btn._x = s.w - 260; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerIndexView.as =================================================================== diff -u -rf8e0c0e67f67bdcdf8ae8367b638c3775f7652de -rfdf1c80df9cc884de2d9a81d6e69706049d0bcb0 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerIndexView.as (.../LearnerIndexView.as) (revision f8e0c0e67f67bdcdf8ae8367b638c3775f7652de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerIndexView.as (.../LearnerIndexView.as) (revision fdf1c80df9cc884de2d9a81d6e69706049d0bcb0) @@ -63,7 +63,26 @@ private var dispatchEvent:Function; public var addEventListener:Function; - public var removeEventListener:Function; + public var removeEventListener:Function; + + private var nextPosition:Number; + private var btnWidth:Number; + + private var backBtn:MovieClip; + private var nextBtn:MovieClip; + private var goBtn:MovieClip; + private var clrBtn:MovieClip; + private var textFieldBackground_mc:MovieClip; + private var labelBackground_mc:MovieClip; + private var idxTextField:TextField; + private var textFieldContents:String; + private var defaultString:String; + private var rangeLabel; + //private var labelBackground; + + private var buttonsShown:Boolean; + + private var direction:String; /** * Constructor @@ -73,19 +92,31 @@ _tm = ThemeManager.getInstance(); _tip = new ToolTip(); + + nextPosition = 0; + btnWidth = 45; + buttonsShown = false; + defaultString = "Enter Page Number"; this._visible = false; displayedButtons = new Array(); - + //Init for event delegation mx.events.EventDispatcher.initialize(this); - } - - + } + + public function textFieldHasFocus() { + Debugger.log("idxTextField.text: "+idxTextField.text, Debugger.CRITICAL, "textFieldHasFocus", "LearnerIndexView"); + if (idxTextField.text == defaultString) { + idxTextField.text = ""; + } + } + public function init(m:Observable,c:Controller){ Debugger.log("LearnerIndexView init", Debugger.CRITICAL, "init", "LearnerIndexView"); //Invoke superconstructor, which sets up MVC relationships. - super (m, c); + super (m, c); + mm = MonitorModel(model) mm.learnerIndexView = this; @@ -99,10 +130,7 @@ switch (infoObj.updateType){ case 'TABCHANGE' : if (infoObj.tabID == _tabID && !mm.locked && mm.numIndexButtons>1) { - if (mm.numIndexButtons > displayedButtons.length) { - Debugger.log("Setting up buttons [mm.numIndexButtons > displayedButtons.length]", Debugger.CRITICAL, "update", "LearnerIndexView"); - setupButtons(mm); - } + setupButtons(mm); this._visible = true; }else { this._visible = false; @@ -119,53 +147,166 @@ } break; case 'DRAW_DESIGN' : - Debugger.log("LearnerIndexView DRAW_DESIGN evt update received", Debugger.CRITICAL, "update", "LearnerTavView"); - if (infoObj.tabID == _tabID && !mm.locked && mm.numIndexButtons>1){ - if (mm.numIndexButtons > displayedButtons.length) { - Debugger.log("Setting up buttons [mm.numIndexButtons > displayedButtons.length]", Debugger.CRITICAL, "update", "LearnerIndexView"); + if (infoObj.tabID == _tabID && !mm.locked && mm.numIndexButtons>1) { + if (!buttonsShown || newButtonsNeeded(mm)) { setupButtons(mm); + this._visible = true; } - this._visible = true; + else + updatePageLabel(); } + break; + case 'DRAW_BUTTONS' : + if (infoObj.tabID == _tabID && !mm.locked && mm.numIndexButtons>1) { + if (!buttonsShown || (mm.numIndexButtons > displayedButtons.length)) { + //if (!buttonsShown || newButtonsNeeded(mm)) { + setupButtons(mm); + this._visible = true; + } + } break; default : 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) && (displayedButtons.length < mm.numPreferredIndexButtons)) { + 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(); dispatchEvent({type:'load',target:this}); } - public function setupButtons(mm:MonitorModel):Void { - var btnWidth:Number = 45; + /** + * Get the CSSStyleDeclaration objects for each component and apply them + * directly to the instance + */ + private function setStyles():Void{ + var styleObj = _tm.getStyleObject('IdxBar'); + //bkg_pnl.setStyle('styleName',styleObj); + //var styleObj = _tm.getStyleObject('IndexBar'); + } + + public function setupButtons(mm:MonitorModel):Void { + rangeLabel.text = "Page " + mm.currentLearnerIndex + " of " + mm.numIndexButtons; if (displayedButtons.length > 0 ) { + Debugger.log("[displayedButtons.length > 0] => removing buttons", Debugger.CRITICAL, "setupButtons", "LearnerIndexView"); removeButtons(); } - _buttonsPanel_mc = this.createEmptyMovieClip("_buttonsPanel_mc", DepthManager.kTop); - - for (var i=1; i<=mm.numIndexButtons; i++) { - 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); - if (i > 1) - idxBtn._x = (i-1)*btnWidth-1; - else - idxBtn._x = (i-1)*btnWidth; - } + + addRangeLabel(mm); + addIndexButtons(mm); + addNavigationButtons(mm); + addIndexTextField(mm); + addGoButton(mm); + + 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); while (displayedButtons.length != 0) { var idxBtn:MovieClip = MovieClip(displayedButtons.pop()); _buttonsPanel_mc.removeMovieClip(idxBtn); } + _buttonsPanel_mc.removeMovieClip(backBtn); + _buttonsPanel_mc.removeMovieClip(nextBtn); + + //need to remove the text field from the background + textFieldBackground_mc.removeMovieClip(idxTextField); + _buttonsPanel_mc.removeMovieClip(textFieldBackground_mc); + + _buttonsPanel_mc.removeMovieClip(goBtn); } + + private function addRangeLabel(mm:MonitorModel):Void { + // Label that displays 'Page # of #' + var idxLabel_mc:MovieClip = _buttonsPanel_mc.attachMovie("Label", "rangeLabel", _buttonsPanel_mc.getNextHighestDepth()); + rangeLabel = _buttonsPanel_mc["rangeLabel"]; + rangeLabel._x = 0; + rangeLabel._width = 90; + rangeLabel.autoSize = "center" + rangeLabel.text = "Page " + mm.currentLearnerIndex + " of " + mm.numIndexButtons; + nextPosition += rangeLabel._width; + } + + 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"); + + for (var i=mm.firstDisplayedIndexButton; i<=mm.lastDisplayedIndexButton; i++) { + 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; + } + } + + private function addNavigationButtons(mm:MonitorModel):Void { + // add navigation buttons + 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); + + nextBtn = _buttonsPanel_mc.attachMovie("IndexButton", "nextBtn", _buttonsPanel_mc.getNextHighestDepth(), {_width: btnWidth-5, _labelText: ">>"}); + _indexButton = IndexButton(nextBtn); + _indexButton.init(mm, undefined); + nextBtn._x = nextPosition; + nextPosition += (btnWidth-5); + } + + private function addIndexTextField(mm:MonitorModel):Void { + + _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); + + 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; + nextPosition += idxTextField._width; + + idxTextField.onSetFocus = Delegate.create(this, textFieldHasFocus); + } + + 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 setPosition(mm:MonitorModel):Void{ var p:Object = mm.getPosition(); @@ -190,5 +331,13 @@ public function getIndexView():MovieClip{ return this; + } + + public function getRangeLabel():Label { + return rangeLabel; + } + + public function getIdxTextField():TextField { + return idxTextField; } } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as =================================================================== diff -u -rf8e0c0e67f67bdcdf8ae8367b638c3775f7652de -rfdf1c80df9cc884de2d9a81d6e69706049d0bcb0 --- lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as (.../LearnerTabView.as) (revision f8e0c0e67f67bdcdf8ae8367b638c3775f7652de) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/monitoring/mv/tabviews/LearnerTabView.as (.../LearnerTabView.as) (revision fdf1c80df9cc884de2d9a81d6e69706049d0bcb0) @@ -93,6 +93,8 @@ private var currentLearnerIndex:Number; private var maxLearnerIndex:Number; private var learnersDrawnIndex:Number; + + private var hAdjustment:Boolean; //Defined so compiler can 'see' events added at runtime by EventDispatcher private var dispatchEvent:Function; @@ -122,6 +124,7 @@ learnerListArr = new Array(); panelLowered = false; + hAdjustment = false; //Set up parameters for the grid H_GAP = 10; @@ -157,7 +160,7 @@ mm.getMonitor().openLearningDesign(mm.getSequence()); } else if(mm.getIsProgressChangedLearner()) { reloadProgress(mm, false); - } else if(learnersDrawn != mm.allLearnersProgress.length){ + } else if(learnersDrawn != mm.allLearnersProgress.length){ //could be error here with learnersDrawn reloadProgress(mm, true); } @@ -181,7 +184,6 @@ case 'RELOADPROGRESS' : Debugger.log("Reload Progress event received", Debugger.CRITICAL, "update", "LearnerTabView"); if (infoObj.tabID == _tabID && !mm.locked){ - //adjustLearnerPanel(mm); reloadProgress(mm, true); } break; @@ -201,7 +203,7 @@ } break; case 'DRAW_DESIGN' : - Debugger.log("DRAW_DESIGN evt update received", Debugger.CRITICAL, "update", "LearnerTavView"); + Debugger.log("DRAW_DESIGN received",Debugger.CRITICAL,"update","LearnerTabView"); adjustLearnerPanel(mm); if (infoObj.tabID == _tabID && !mm.locked){ if (mm.isDesignDrawn) { @@ -215,6 +217,7 @@ evtArr = infoObj.data; drawAll(); } + setSize(mm); break; default : Debugger.log('unknown update type :' + infoObj.updateType,Debugger.CRITICAL,'update','org.lamsfoundation.lams.LearnerTabView'); @@ -303,16 +306,32 @@ mm.getMonitor().getProgressData(mm.getSequence()); } - public function adjustLearnerPanel(mm):Void { + public function adjustLearnerPanel(mm:MonitorModel):Void { + var _scroll:ScrollPane = mm.getMonitor().getMV().getMonitorLearnerScp(); + var s:Object = mm.getSize(); + if (mm.numIndexButtons > 1 && !panelLowered) { - mm.getMonitor().getMV().getMonitorLearnerScp()._y = mm.getMonitor().getMV().getMonitorLearnerScp()._y + 20; - panelLowered = true; + if (hAdjustment) { + _scroll.setSize(s.w-_scroll._x, s.h - 20); + hAdjustment = false; + } + + _scroll._y += 20; + + panelLowered = true; } + else if (mm.numIndexButtons <= 1 && !hAdjustment) { + //s.h += 20 + _scroll.setSize(s.w-_scroll._x, s.h); + hAdjustment = true; + } } public function clearCanvas(mm:MonitorModel, isChanged:Boolean):Void { + Debugger.log("in clearCanvas", Debugger.CRITICAL, "clearCanvas", "LearnerTabView"); learnersDrawn = 0; - + learnersDrawnIndex = 0; + ACT_X = 0; ACT_Y = 35; @@ -345,7 +364,6 @@ currentLearnerIndex = (mm.currentLearnerIndex-1)*learnersPerPage; maxLearnerIndex = (learnersPerPage*mm.currentLearnerIndex)-1; learnersDrawnIndex = 0; - //mm.allLearnersProgress.sortOn("learnerLastName", Array.DESCENDING); drawNextLearner(); @@ -367,7 +385,6 @@ mm.drawDesign(_tabID, mm.allLearnersProgress[currentLearnerIndex]); } } else { - setSize(mm); mm.isDesignDrawn = true; } @@ -579,31 +596,28 @@ var s:Object = mm.getSize(); var actkeys = mm.getSequence().getLearningDesignModel().activities.keys(); - Debugger.log("actkeys.length: "+actkeys.length, Debugger.CRITICAL, "setSize", "LearnerTabView"); - var ddmBranch_keys:Array = mm.getSequence().getLearningDesignModel().branches.keys(); - Debugger.log("ddmBranch_keys.length: "+ddmBranch_keys.length, Debugger.CRITICAL, "setSize", "LearnerTabView"); - - //var scpWidth:Number = mm.getMonitor().getMV().getMonitorLearnerScp()._width; - var scpWidth:Number = (actkeys.length)*130; - - var scpHeight:Number = mm.getMonitor().getMV().getMonitorLearnerScp()._height; + var scpWidth:Number = Math.max((actkeys.length)*130, s.w); - var newWidth:Number; - - newWidth = (_activityLayer_mc._width < scpWidth) ? scpWidth - 6 : _activityLayer_mc._width; + var newWidth:Number = (_activityLayer_mc._width < scpWidth) ? scpWidth - 6 : _activityLayer_mc._width; for (var i=0; i