Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -rc209be8131f22f6fe37bd8d6c14b56425a78b766 -r507885144beb497c8639eb64931c04b6e31c917f Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -rc209be8131f22f6fe37bd8d6c14b56425a78b766 -r507885144beb497c8639eb64931c04b6e31c917f Binary files differ Index: lams_flash/src/central/flash/lams_authoring.fla =================================================================== diff -u -rfef442b87068da191276055925eedd2cf1eba99d -r507885144beb497c8639eb64931c04b6e31c917f Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Grouping.as =================================================================== diff -u -r5b44cd0646c0ee06e57059948a5d5f730040f431 -r507885144beb497c8639eb64931c04b6e31c917f --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Grouping.as (.../Grouping.as) (revision 5b44cd0646c0ee06e57059948a5d5f730040f431) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/Grouping.as (.../Grouping.as) (revision 507885144beb497c8639eb64931c04b6e31c917f) @@ -37,7 +37,10 @@ public static var RANDOM_GROUPING:Number = 1; public static var CHOSEN_GROUPING:Number = 2; + public static var LEARNER_CHOICE_GROUPING:Number = 4; + private var _equalGroupSizes:Boolean; + private var _groupingID:Number; private var _groupingUIID:Number; private var _groupingTypeID:Number; @@ -66,6 +69,8 @@ var types:Array = []; types.addItem({label: Dictionary.getValue('random_grp_lbl'), data: RANDOM_GROUPING}); types.addItem({label: Dictionary.getValue('chosen_grp_lbl'), data: CHOSEN_GROUPING}); + //types.addItem({label: Dictionary.getValue('learner_choice_grp_lbl'), data: LEARNER_CHOICE_GROUPING}); + types.addItem({label: "Learner's choice", data: LEARNER_CHOICE_GROUPING}); return types; } @@ -82,6 +87,7 @@ _numberOfGroups = dto.numberOfGroups; _maxNumberOfGroups = dto.maxNumberOfGroups; _learnersPerGroups = dto.learnersPerGroup; + _equalGroupSizes = dto.equalNumberOfLearnersPerGroup; populateGroups(dto.groups); } @@ -124,11 +130,12 @@ dto.numberOfGroups = (_numberOfGroups > 0) ? _numberOfGroups : Config.NUMERIC_NULL_VALUE; dto.maxNumberOfGroups = (_maxNumberOfGroups > 0) ? _maxNumberOfGroups : Config.NUMERIC_NULL_VALUE; + dto.equalNumberOfLearnersPerGroup = (_equalGroupSizes != null && _equalGroupSizes != undefined) ? equalGroupSizes : Config.BOOLEAN_NULL_VALUE; dto.learnersPerGroup = (_learnersPerGroups > 0) ? _learnersPerGroups : Config.NUMERIC_NULL_VALUE; dto.groups = new Array(); - var groupTotal = (groupingTypeID == RANDOM_GROUPING) ? numberOfGroups : maxNumberOfGroups; + var groupTotal = (groupingTypeID == RANDOM_GROUPING || groupingTypeID == LEARNER_CHOICE_GROUPING) ? numberOfGroups : maxNumberOfGroups; if(groupTotal == 0) _groups.clear(); var groups:Array = getGroups(_ddm); @@ -143,7 +150,7 @@ } public function getGroups(_ddm:DesignDataModel):Array { - var groupTotal = (groupingTypeID == RANDOM_GROUPING) ? numberOfGroups : maxNumberOfGroups; + var groupTotal = (groupingTypeID == RANDOM_GROUPING || groupingTypeID == LEARNER_CHOICE_GROUPING) ? numberOfGroups : maxNumberOfGroups; var groupDiff:Number = groupTotal - _groups.size(); var groups = _groups.values(); @@ -279,6 +286,24 @@ /** * * @usage + * @param equalSizes true if the groups are equally sized + * @return + */ + public function set equalGroupSizes (equalSizes:Boolean):Void { + _equalGroupSizes = equalSizes; + } + /** + * + * @usage + * @return + */ + public function get equalGroupSizes ():Boolean { + return _equalGroupSizes; + } + + /** + * + * @usage * @param newlearnersPerGroups * @return */ @@ -293,9 +318,4 @@ public function get learnersPerGroups ():Number { return _learnersPerGroups; } - - - - - } \ No newline at end of file Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspector.as =================================================================== diff -u -r7cfc9d0e5f49c103cf764ae49cb902e5d3d33476 -r507885144beb497c8639eb64931c04b6e31c917f --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspector.as (.../PropertyInspector.as) (revision 7cfc9d0e5f49c103cf764ae49cb902e5d3d33476) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspector.as (.../PropertyInspector.as) (revision 507885144beb497c8639eb64931c04b6e31c917f) @@ -124,6 +124,8 @@ numGroups_stp.addEventListener("focusOut", Delegate.create(this, updateGroupingMethodData)); numRandomGroups_stp.addEventListener("change", Delegate.create(this, updateGroupingMethodData)); numRandomGroups_stp.addEventListener("focusOut", Delegate.create(this, updateGroupingMethodData)); + + equalGroupSizes_chk.addEventListener("click", Delegate.create(this, updateGroupingMethodData)); _group_match_btn.addEventListener("click", Delegate.create(this, onGroupMatchClick)); _group_naming_btn.addEventListener("click", Delegate.create(this, onGroupNamingClick)); @@ -164,6 +166,8 @@ endOffset_lbl.text = Dictionary.getValue('pi_end_offset'); groupType_lbl.text = Dictionary.getValue('pi_group_type'); + equalGroupSizes_lbl.text = "Equal group sizes"; + //equalGroupSizes_lbl = Dictionary.getValue('pi_equal_group_sizes'); numGroups_lbl.text = Dictionary.getValue('pi_num_groups'); numLearners_lbl.text = Dictionary.getValue('pi_num_learners'); @@ -334,7 +338,6 @@ showAppliedGroupingProperties(ba); } else if(a.isGroupActivity()) { - showGroupingControls(true, !a.readOnly); showGeneralControls(true, !a.readOnly); @@ -748,7 +751,6 @@ private function showAppliedGroupingProperties(a:Activity){ //update the grouping drop down values appliedGroupingActivity_cmb.dataProvider = getGroupingActivitiesDP(); - _global.breakpoint(); var appliedGroupingAct:GroupingActivity = _canvasModel.getCanvas().ddm.getGroupingActivityByGroupingUIID(a.groupingUIID); Debugger.log('a.groupingUIID='+a.groupingUIID+', appliedGroupingAct.activityUIID :'+appliedGroupingAct.activityUIID ,Debugger.GEN,'showAppliedGroupingProperties','PropertyInspector'); Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspectorControls.as =================================================================== diff -u -r5b44cd0646c0ee06e57059948a5d5f730040f431 -r507885144beb497c8639eb64931c04b6e31c917f --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspectorControls.as (.../PropertyInspectorControls.as) (revision 5b44cd0646c0ee06e57059948a5d5f730040f431) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/PropertyInspectorControls.as (.../PropertyInspectorControls.as) (revision 507885144beb497c8639eb64931c04b6e31c917f) @@ -113,7 +113,8 @@ //grouping private var groupType_lbl:Label; private var numGroups_lbl:Label; - private var numLearners_lbl:Label; + private var numLearners_lbl:Label; + private var equalGroupSizes_lbl:Label; private var groupType_cmb:ComboBox; private var numGroups_rdo:RadioButton; private var numLearners_rdo:RadioButton; @@ -122,7 +123,8 @@ private var numRandomGroups_stp:NumericStepper; private var numLearners_stp:NumericStepper; - private var _group_naming_btn:Button; + private var _group_naming_btn:Button; + private var equalGroupSizes_chk:CheckBox; //Complex Activity private var min_lbl:Label; @@ -486,7 +488,9 @@ showRelevantGroupOptions(); }else{ numGroups_lbl.visible = v; - numLearners_lbl.visible = v; + numLearners_lbl.visible = v; + equalGroupSizes_lbl.visible = v; + equalGroupSizes_chk.visible = v; numGroups_rdo.visible = v; numLearners_rdo.visible = v; numGroups_stp.visible = v; @@ -500,15 +504,15 @@ private function showRelevantGroupOptions(e:Boolean){ var ga = _canvasModel.selectedItem.activity; - var g = _canvasModel.getCanvas().ddm.getGroupingByUIID(ga.createGroupingUIID); + var g = _canvasModel.getCanvas().ddm.getGroupingByUIID(ga.createGroupingUIID); + + Debugger.log("showRelevantGroupOptions->g.groupingTypeID: "+g.groupingTypeID, Debugger.GEN, "showRelevantGroupOptions", "PIC*"); - Debugger.log('g.groupingTypeID:'+g.groupingTypeID,Debugger.GEN,'showRelevantGroupOptions','org.lamsfoundation.lams.common.cv.PropertyInspector'); - Debugger.log('Grouping.CHOSEN_GROUPING:'+Grouping.CHOSEN_GROUPING,Debugger.GEN,'showRelevantGroupOptions','org.lamsfoundation.lams.common.cv.PropertyInspector'); - Debugger.log('Grouping.RANDOM_GROUPING:'+Grouping.RANDOM_GROUPING,Debugger.GEN,'showRelevantGroupOptions','org.lamsfoundation.lams.common.cv.PropertyInspector'); - if(g.groupingTypeID == Grouping.CHOSEN_GROUPING){ numGroups_lbl.visible = true; - numLearners_lbl.visible = false; + numLearners_lbl.visible = false; + equalGroupSizes_lbl.visible = false; + equalGroupSizes_chk.visible = false; numGroups_stp.visible = true; numRandomGroups_stp.visible = false; numLearners_stp.visible = false; @@ -520,11 +524,42 @@ if(e != null) { numGroups_lbl.enabled = e; _group_naming_btn.enabled = e; - } - - } else if(g.groupingTypeID == Grouping.RANDOM_GROUPING) { + } + } + else if(g.groupingTypeID == Grouping.LEARNER_CHOICE_GROUPING){ + numGroups_lbl.visible = true; + numLearners_lbl.visible = true; + equalGroupSizes_lbl.visible = true; + equalGroupSizes_chk.visible = true; + numRandomGroups_stp.visible = false; + numGroups_stp.visible = true; + numLearners_stp.visible = true; + numLearners_rdo.visible = true; + numGroups_rdo.visible = true; + + _group_naming_btn.visible = true; + + if(e != null) { + numGroups_lbl.enabled = e; + numLearners_lbl.enabled = e; + equalGroupSizes_lbl.enabled = e; + //numGroups_stp.enabled = e; + //numLearners_stp.enabled = e; + numLearners_rdo.enabled = e; + numGroups_rdo.enabled = e; + equalGroupSizes_chk.enabled = e; + + _group_naming_btn.enabled = e; + } + + checkGroupRadioOptions(e); + checkEnableGroupsOptions(e); + } + else if(g.groupingTypeID == Grouping.RANDOM_GROUPING) { numGroups_lbl.visible = true; - numLearners_lbl.visible = true; + numLearners_lbl.visible = true; + equalGroupSizes_lbl.visible = false; + equalGroupSizes_chk.visible = false; numGroups_stp.visible = false; numRandomGroups_stp.visible = true; numLearners_stp.visible = true; @@ -556,7 +591,17 @@ private function reDrawTroublesomeSteppers(e:Boolean){ numLearners_stp.visible = true; - numRandomGroups_stp.visible = true; + + var g:Grouping = _canvasModel.getCanvas().ddm.getGroupingByUIID(_canvasModel.selectedItem.activity.createGroupingUIID); + + if (g.groupingTypeID == Grouping.RANDOM_GROUPING) { + numRandomGroups_stp.visible = true; + numGroups_stp.visible = false; + } + else if (g.groupingTypeID == Grouping.LEARNER_CHOICE_GROUPING) { + numRandomGroups_stp.visible = false; + numGroups_stp.visible = true; + } } private function checkEnableGateControls(e:Boolean){ @@ -598,23 +643,37 @@ if(groupingBy == 'num_learners'){ numRandomGroups_stp.value = 0; + numGroups_stp.value = 0; g.numberOfGroups = 0; + g.equalGroupSizes = null; + equalGroupSizes_chk.selected = false; - numRandomGroups_stp.enabled = false; - numLearners_stp.enabled = (e != null) ? e : true; + numRandomGroups_stp.enabled = false; + numGroups_stp.enabled = false; + numLearners_stp.enabled = (e != null) ? e : true; + + equalGroupSizes_lbl.visible = false; + equalGroupSizes_chk.visible = false; _group_naming_btn.visible = false; }else{ - numRandomGroups_stp.enabled = (e != null) ? e : true; + numRandomGroups_stp.enabled = (e != null) ? e : true; + numGroups_stp.enabled = (e != null) ? e : true; + numLearners_stp.value = 0; g.learnersPerGroups = 0; numLearners_stp.enabled = false; _group_naming_btn.enabled = (e != null) ? e : true; _group_naming_btn.visible = true; - + + if (g.groupingTypeID == Grouping.LEARNER_CHOICE_GROUPING) { + equalGroupSizes_chk.enabled = (e != null) ? e : true; + equalGroupSizes_lbl.visible = true; + equalGroupSizes_chk.visible = true; + } } //this is a crazy hack to stop the steppter dissapearing after its .enabled property is set. @@ -625,29 +684,42 @@ private function checkGroupRadioOptions(e:Boolean) { var g:Grouping = _canvasModel.getCanvas().ddm.getGroupingByUIID(_canvasModel.selectedItem.activity.createGroupingUIID); - Debugger.log("checking group radio options: " + g.numberOfGroups, Debugger.CRITICAL, "checkGroupRadioOptions", "PIC*"); if(g.numberOfGroups > 0 && g.learnersPerGroups <= 0) { numGroups_rdo.selected = true; _group_naming_btn.visible = true; - _group_naming_btn.enabled = (e != null) ? e : true; - } else if(g.learnersPerGroups > 0 && g.numberOfGroups <= 0) - { numLearners_rdo.selected = true; _group_naming_btn.visible = false; } - else - { numGroups_rdo.selected = true; _group_naming_btn.visible = false; } + _group_naming_btn.enabled = (e != null) ? e : true; + + equalGroupSizes_lbl.visible = false; + equalGroupSizes_chk.visible = false; + + } else if(g.learnersPerGroups > 0 && g.numberOfGroups <= 0) { + numLearners_rdo.selected = true; + _group_naming_btn.visible = false; + + if (g.groupingTypeID == Grouping.LEARNER_CHOICE_GROUPING) { + equalGroupSizes_lbl.visible = true; + equalGroupSizes_chk.visible = true; + } + } + else { // this is the case where both the steppers have 0 values + Debugger.log("checkGroupRadioOptions else", Debugger.GEN, "checkGroupRadioOptions", "PIC*"); + numGroups_rdo.selected = true; + _group_naming_btn.visible = false; + } } public function reDrawTroublesomeSteppersLater(){ MovieClipUtils.doLater(Proxy.create(this,reDrawTroublesomeSteppers)); } - private function populateGroupingProperties(ga:GroupingActivity){ - Debugger.log("populating Grouping Properties createGroupingUIID: " + ga.createGroupingUIID, Debugger.CRITICAL, "populateGroupingProperties", "PIC*"); + private function populateGroupingProperties(ga:GroupingActivity){ + Debugger.log("populating Grouping Properties createGroupingUIID: " + ga.createGroupingUIID, Debugger.CRITICAL, "populateGroupingProperties", "PropertyInspectorControls"); var g:Grouping = _canvasModel.getCanvas().ddm.getGroupingByUIID(ga.createGroupingUIID); toolDisplayName_lbl.text = ""+Dictionary.getValue('pi_title')+" - "+Dictionary.getValue('pi_activity_type_grouping'); - Debugger.log('This is the grouping object:',Debugger.GEN,'populateGroupingProperties','PropertyInspector'); + Debugger.log('This is the grouping object:',Debugger.GEN,'populateGroupingProperties','PropertyInspectorControls'); ObjectUtils.printObject(g); //loop through combo to fins SI of our gate activity type @@ -657,7 +729,14 @@ if(g.groupingTypeID == Grouping.RANDOM_GROUPING) { numLearners_stp.value = (g.learnersPerGroups != null) ? g.learnersPerGroups : 0; numRandomGroups_stp.value = (g.numberOfGroups != null) ? g.numberOfGroups : 0; - } else { + } + else if (g.groupingTypeID == Grouping.LEARNER_CHOICE_GROUPING) { + + numGroups_stp.value = (g.numberOfGroups != null) ? g.numberOfGroups : 0; + numLearners_stp.value = (g.learnersPerGroups != null) ? g.learnersPerGroups : 0; + equalGroupSizes_chk.selected = (g.equalGroupSizes != null) ? g.equalGroupSizes : false; + } + else { // Teacher Chosen Grouping numGroups_stp.value = (g.maxNumberOfGroups != null) ? g.maxNumberOfGroups : 0; } @@ -673,7 +752,7 @@ Debugger.log("updating grouping method data: " + g.groupingUIID, Debugger.CRITICAL, "updateGroupingMethodData", "PropertyInspectorControls"); - if(!_canvasController.isBusy() && evt.type == 'focusOut') { + if(!_canvasController.isBusy() && (evt.type == 'focusOut' || evt.type == 'click')) { var g:Grouping = _canvasModel.getCanvas().ddm.getGroupingByUIID(_canvasModel.selectedItem.activity.createGroupingUIID); doUpdateGroupingMethodData(g); @@ -689,36 +768,25 @@ numGroups_stp.value = 0; g.maxNumberOfGroups = 0; - + } + else if(g.groupingTypeID == Grouping.LEARNER_CHOICE_GROUPING){ + g.learnersPerGroups = numLearners_stp.value; + g.numberOfGroups = numGroups_stp.value; + g.maxNumberOfGroups = 0; + g.equalGroupSizes = equalGroupSizes_chk.selected; }else{ g.maxNumberOfGroups = numGroups_stp.value; numRandomGroups_stp.value = 0; numLearners_stp.value = 0; g.learnersPerGroups = 0; g.numberOfGroups = 0; - } setModified(); _canvasController.clearBusy(); - } - - public function retainOldGroupingMethodData(){ - var ga = _canvasModel.selectedItem.activity; - var g:Grouping = _canvasModel.getCanvas().ddm.getGroupingByUIID(ga.createGroupingUIID); - - if(g.groupingTypeID == Grouping.RANDOM_GROUPING){ - numLearners_stp.value = (g.learnersPerGroups == null) ? 0 : g.learnersPerGroups; - numRandomGroups_stp.value = (g.numberOfGroups == null) ? 0 : g.numberOfGroups; - } else{ - numGroups_stp.value = (g.maxNumberOfGroups == null) ? 0 : g.maxNumberOfGroups; - } - - _canvasController.clearBusy(); - } private function getGroupingActivitiesDP(){ @@ -795,7 +863,8 @@ mins_lbl.setStyle('styleName', styleObj); hoursEnd_lbl.setStyle('styleName', styleObj); minsEnd_lbl.setStyle('styleName', styleObj); - numGroups_lbl.setStyle('styleName', styleObj); + numGroups_lbl.setStyle('styleName', styleObj); + equalGroupSizes_lbl.setStyle('styleName', styleObj); numLearners_lbl.setStyle('styleName', styleObj); groupType_lbl.setStyle('styleName', styleObj); applied_grouping_lbl.setStyle('styleName', styleObj); @@ -922,8 +991,6 @@ branchToolInputChange(_canvasModel.selectedItem, toolActs_cmb.dataProvider[index].data); } } - - } /** @@ -944,7 +1011,7 @@ private function updateGroupingType(g:Grouping, typeID:Number) { g.groupingTypeID = typeID; - Debugger.log('Set group type to: '+g.groupingTypeID,Debugger.GEN,'onGroupTypeChange','PropertyInspector'); + Debugger.log('Set group type to: '+g.groupingTypeID,Debugger.GEN,'onGroupTypeChange','PropertyInspectorControls'); showRelevantGroupOptions(!_canvasModel.selectedItem.activity.readOnly); doUpdateGroupingMethodData(g);