Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookCourseMonitor.jsp,v diff -u -r1.8 -r1.9 --- lams_gradebook/web/gradebookCourseMonitor.jsp 7 Jul 2011 22:07:37 -0000 1.8 +++ lams_gradebook/web/gradebookCourseMonitor.jsp 16 Jul 2012 17:59:33 -0000 1.9 @@ -73,8 +73,9 @@ jQuery(document).ready(function(){ + // Create the lesson view grid with sub grid for users jQuery("#organisationGrid").jqGrid({ - caption: "${organisationName}", + caption: "", datatype: "xml", url: "/gradebook/gradebook.do?dispatch=getCourseGridData&view=monCourse&organisationID=${organisationID}", height: "100%", @@ -155,6 +156,7 @@ } }); } + $("#userView").trigger("reloadGrid"); }, gridComplete: function(){ toolTip($(".jqgrow")); // enable tooltips for grid @@ -203,7 +205,202 @@ onClickButton: function(){ jQuery("#organisationGrid").setColumns(); } - }); + }); + + // Create the user view grid with sub grid for lessons + jQuery("#userView").jqGrid({ + caption: "", + datatype: "xml", + url: "/gradebook/gradebook.do?dispatch=getUserGridData&view=monCourse&organisationID=${organisationID}", + height: "100%", + width: 660, + imgpath: 'includes/javascript/jqgrid/themes/basic/images', + sortorder: "asc", + sortname: "rowName", + pager: 'userViewPager', + rowList:[5,10,20,30], + rowNum:10, + colNames:[ + '', + "", + "", + "", + "", + "" + ], + colModel:[ + {name:'id', index:'id', sortable:false, editable:false, hidden:true, search:false, hidedlg:true}, + {name:'rowName',index:'rowName', sortable:true, editable:false}, + {name:'status', index:'status', sortable:false, editable:false, search:false, title:false, width:50, align:"center", hidden:true}, + {name:'timeTaken', index:'timeTaken', sortable:true, editable:false, search:false, width:80, align:"center", hidden:true}, + {name:'feedback',index:'feedback', sortable:false, editable:true, edittype:'textarea', editoptions:{rows:'4',cols:'20'} , search:false, hidden:true}, + {name:'mark',index:'mark', sortable:true, editable:true, editrules:{number:true}, search:false, width:50, align:"center", hidden:true} + ], + loadError: function(xhr,st,err) { + jQuery("#userView").clearGridData(); + info_dialog("", "", ""); + }, + subGrid: true, + subGridRowExpanded: function(subgrid_id, row_id) { + var subgrid_table_id; + var userID = jQuery("#userView").getRowData(row_id)["id"]; + subgrid_table_id = subgrid_id+"_t"; + jQuery("#"+subgrid_id).html("
"); + jQuery("#"+subgrid_table_id).jqGrid({ + datatype: "xml", + url: "/gradebook/gradebook.do?dispatch=getCourseGridData&view=monUserView&organisationID=${organisationID}&userID=" + userID, + height: "100%", + cellEdit:true, + imgpath: 'includes/javascript/jqgrid/themes/basic/images', + pager: subgrid_table_id + "_pager", + rowList:[5,10,20,30], + rowNum:10, + cellurl: "", //will be updated dynamically + colNames: [ + '', + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + colModel: [ + {name:'id', index:'id', sortable:false, editable:false, hidden:true, search:false, hidedlg:true}, + {name:'rowName',index:'rowName', sortable:true, editable:false, width:150}, + {name:'subGroup',index:'subGroup', sortable:false, editable:false, search:false, width:130}, + {name:'status',index:'status', sortable:false, editable:false, search:false, width:60, align:"center"}, + {name:'feedback', index:'feedback', sortable:false, editable: true, edittype:'textarea', editoptions:{rows:'4',cols:'20'}, width:150}, + {name:'startDate',index:'startDate', sortable:false, editable:false, hidden:true, search:false}, + {name:'finishDate',index:'finishDate', sortable:false, editable:false, hidden:true, search:false}, + {name:'averageTimeTaken',index:'averageTimeTaken', sortable:true, hidden:true, editable:false, search:false, width:80, align:"center"}, + {name:'timeTaken',index:'timeTaken', sortable:true, editable:false, hidden:true, search:false, width:80, align:"center"}, + {name:'averageMark',index:'averageMark', sortable:true, editable:false, hidden:true, search:false, width:50, align:"center"}, + {name:'mark',index:'mark', sortable:true, editable:true, search:false, width:60, align:"center"} + ], + loadError: function(xhr,st,err) { + jQuery("#"+subgrid_table_id).clearGridData(); + info_dialog("", "", ""); + }, + formatCell: function(rowid, cellname,value, iRow, iCol) { + if (cellname == "mark") { + + var rowData = jQuery("#"+subgrid_table_id).getRowData(rowid); + var string = removeHTMLTags(rowData["mark"]); + + + if (string.indexOf("-") != -1) + { + string = " "; + + } else if (string.indexOf("/") != -1) { + splits = string.split("/"); + + if(splits.length == 2) { + tempMark = splits[0]; + string = " "; + } else { + string = " "; + } + } + + return string; + + } + }, + beforeSaveCell: function(rowid, cellname,value, iRow, iCol){ + value = trim(value); + + if (cellname == "mark") { + if (value == "") { + jQuery("#"+subgrid_table_id).restoreCell( iRow, iCol); + throw("Value required for mark."); + } + + var currRowData = jQuery("#"+subgrid_table_id).getRowData(rowid); + if (currRowData['marksAvailable'] != null && currRowData['marksAvailable'] != "") { + if (parseFloat(value) > parseFloat(currRowData['marksAvailable'])){ + info_dialog("", "", ""); + jQuery("#"+subgrid_table_id).restoreCell( iRow, iCol); + throw("Mark must be lower than maximum mark"); + } + } + } + + //modify cellurl setting to include lessonid + var lessonID = jQuery("#"+subgrid_table_id).getRowData(rowid)["id"]; + $("#"+subgrid_table_id).setGridParam({cellurl: "/gradebook/gradebookMonitoring.do?dispatch=updateUserLessonGradebookData&lessonID=" + lessonID + "&id=" + userID}); + }, + afterSaveCell: function(rowid, cellname,value, iRow, iCol) { + + var currRowData = jQuery("#"+subgrid_table_id).getRowData(rowid); + if (cellname == "mark") { + + if (cellname == "mark") { + if (currRowData['marksAvailable'] != null && currRowData['marksAvailable'] != "") { + var markStr = "" + value + "/" + currRowData['marksAvailable'] + ""; + jQuery("#"+subgrid_table_id).setCell(rowid, "mark", markStr, "", ""); + } + } + + // Update the aggregated lesson mark + var lessonID = jQuery("#"+subgrid_table_id).getRowData(rowid)["id"]; + $.get("/gradebook/gradebook.do", {dispatch:"getLessonMarkAggregate", lessonID:lessonID, userID:userID}, function(xml) { + if (xml!=null) { + jQuery("#userView").setCell(row_id, "mark", xml, "", ""); + } + }); + } + $("#organisationGrid").trigger("reloadGrid"); + }, + errorCell: function(serverresponse, status) { + info_dialog("", "", ""); + }, + gridComplete: function(){ + toolTip($(".jqgrow")); + } + }).navGrid("#"+subgrid_table_id+"_pager", {edit:false,add:false,del:false,search:false}); // applying refresh button + + // Adding button for show/hiding collumn + jQuery("#"+subgrid_table_id).navButtonAdd("#"+subgrid_table_id+"_pager",{ + caption: "", + buttonimg:"images/table_edit.png", + onClickButton: function(){ + jQuery("#"+subgrid_table_id).setColumns(); + } + }); + }, + gridComplete: function(){ + toolTip($(".jqgrow")); // allowing tooltips for this grid + } + }).navGrid("#userViewPager", {edit:false,add:false,del:false,search:false}); // applying refresh button + + // Allowing search for this grid + jQuery("#userView").navButtonAdd('#userViewPager',{ + caption: "", + title: "Search Names", + buttonimg:"images/find.png", + onClickButton: function(){ + jQuery("#userView").searchGrid({ + top:10, + left:10, + sopt:['cn','bw','eq','ne','ew'] + }); + } + }); + + // Allowing column editing for this grid + jQuery("#userView").navButtonAdd('#userViewPager',{ + caption: "", + buttonimg:"images/table_edit.png", + onClickButton: function(){ + jQuery("#userView").setColumns(); + } + }); }); @@ -235,6 +432,12 @@
+
+
+ +
+
+