Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //----------------------------------------------------------------------------------------------------------------------------------------
- // GRID CONFIGURATION
- //----------------------------------------------------------------------------------------------------------------------------------------
- $grid.jqGrid({
- /* See http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options */
- caption: "rotations",
- url: "api/masters",
- mtype: "GET",
- datatype: "json",
- height: "100%", // 'auto',
- colModel: cm,
- hidegrid: false,
- loadtext: "Fetching Master Rotations ...",
- loadonce: true, /* Load all data from server in a single request. */
- ajaxGridOptions: { cache: true }, /* For local search. */
- /* Note: not disabling 'nd' to enforce cache-refresh on stupid IE browser. */
- prmNames: { rows: null, page: null, search: null, sort: null, order: null },
- lodui: "block",
- width: $grid.closest(".mainContainer").width().toString() - "20", /* FIXME: use relative sizes! */
- shrinkToFit: false,
- rowList: [10, 20, 30, 50, 100],
- rowNum: isColState ? myColumnsState.rowNum : 20,
- /* The following use the default setting from issue #3483. */
- sortname: isColState ? myColumnsState.sortname : 'updated',
- sortorder: isColState ? myColumnsState.sortorder : 'desc',
- search: isColState ? myColumnsState.search : false,
- postData: isColState ? { filters: myColumnsState.filters } : {},
- pager: '#summaryNavGrid',
- viewrecords: true,
- gridview: true,
- ignoreCase: true,
- subGrid: true,
- /*
- * Handlers:
- */
- jsonReader: {
- /* See http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#jsonreader_as_function */
- repeatitems: true,
- page: function(obj) { return 1; },
- total: function(obj) { return 1; },
- records: function (obj) { return obj.length; },
- subgrid: {
- root: "rows",
- repeatitems: true,
- cell: "cell"
- }
- },
- beforeRequest: function() {
- /* Configure search toolbar. */
- $grid.jqGrid('filterToolbar', { stringResult: true, autosearch: true, searchOnEnter: false });
- },
- loadError: function (xhr, status, error) {
- // window.location.reload();
- console.log(" status ", status, " errorr ", error);
- },
- loadComplete: function (data) {
- var $this = $(this), i;
- /* The following is true only on first load, since we use loadonce: true. */
- if ($this.getGridParam('datatype') === "json" && isColState) {
- $this.jqGrid("remapColumns", myColumnsState.permutation, true);
- /* Work-around: when changing rowNum, the row-number selection is not updated by default. */
- $(".ui-pg-selbox").val(myColumnsState.rowNum);
- }
- refreshSearchingToolbar($this, myDefaultSearch);
- /* Sorting needs to come after refreshing the toolbar. */
- if ($this.getGridParam('datatype') === "json" && isColState) {
- var params = {};
- if (typeof(myColumnsState.sortname) !== "undefined")
- params.sortname = myColumnsState.sortname;
- if (typeof(myColumnsState.sortorder) !== "undefined")
- params.sortorder = myColumnsState.sortorder;
- if (typeof(myColumnsState.page) !== "undefined" && myColumnsState.page !== 1)
- params.page = myColumnsState.page;
- i = getColumnIndex($this, myColumnsState.sortname);
- if (i > -1)
- $this.jqGrid("setGridParam", { lastsort: i });
- }
- if (filteredRows.length) {
- $("#filterhint").html("<p><span class=\"ui-icon ui-icon-info\"></span>" +
- "<strong>Note:</strong> Rotation filter is applied, " +
- "showing only " + filteredRows.length + " rotation" +
- (filteredRows.length === 1 ? "" : "s") + ".</p>");
- } else {
- for (i = 0; i < idsOfSelectedRows.length; i++) {
- $this.jqGrid('setSelection', idsOfSelectedRows[i], true);
- }
- }
- saveColumnState.call($this, this.p.remapColumns);
- /*
- * Header tooltips - mostly used to display the formula used by the given metric.
- */
- function setTooltipsOnColumnHeader(grid, iColumn, text) {
- var thd = jQuery("thead:first", grid[0].grid.hDiv)[0];
- jQuery("tr.ui-jqgrid-labels th:eq(" + iColumn + ")", thd).attr("title", text);
- }
- setTooltipsOnColumnHeader($grid, 1, "Name of rotation");
- setTooltipsOnColumnHeader($grid, 2, "Rotation owner");
- setTooltipsOnColumnHeader($grid, 3, "Time of last update");
- setTooltipsOnColumnHeader($grid, 4, "Collective Bargaining Agreement");
- setTooltipsOnColumnHeader($grid, 5, "Total number of assigned shifts");
- setTooltipsOnColumnHeader($grid, 6, "Number of baseline overages");
- setTooltipsOnColumnHeader($grid, 7, "Number of baseline underages");
- setTooltipsOnColumnHeader($grid, 8, "Number of CBA violations");
- setTooltipsOnColumnHeader($grid, 9, "Number of Best Practice violations");
- /* net baseline variance rate, netBaselineVarianceMetric */
- setTooltipsOnColumnHeader($grid, 10, "100 * ((# of shifts over baseline - # of shifts under baseline) / (# of required baseline shifts)");
- /* % of total lines with CBA violations, lineVarianceMetric */
- setTooltipsOnColumnHeader($grid, 11, "100 * (# of lines with CBA violations) / (# of lines in the rotation)");
- /* total baseline violations per week, totalBaselineMetric */
- setTooltipsOnColumnHeader($grid, 12, "(# of shifts over baseline + # of shifts under baseline) / (# of weeks)");
- /* hour variance per week, hourVarianceMetric */
- setTooltipsOnColumnHeader($grid, 13, "(# of actual shifts - # of required shifts) * (worked hours) / (# of weeks)");
- /* potential risk %, potRisk */
- setTooltipsOnColumnHeader($grid, 14, "100 * ((# of shifts under baseline) * 2 + (# of shifts over baseline)) / (# of shifts)");
- /* annual actual labour cost, labourCosts */
- setTooltipsOnColumnHeader($grid, 15, "(sum of ($/hr * # of shifts * paid hours)) / (sum of weeks) * 52");
- /* annual actual benefit cost, benefitCosts */
- setTooltipsOnColumnHeader($grid, 16, "(sum of ($/hr * Benefits % * # of shifts * paid hours)) / (sum of weeks) * 52");
- /* annual shift differential cost, shiftDifferential */
- setTooltipsOnColumnHeader($grid, 17, "(sum of shift differential) / (sum of weeks) * 52");
- /* annual weekend premium cost, weekendPremium */
- setTooltipsOnColumnHeader($grid, 18, "(sum of weekend premium) / (sum of weeks) * 52");
- /* annual actual total cost, actualTotalCosts */
- setTooltipsOnColumnHeader($grid, 19, "(annual actual labour cost) + (annual actual benefit cost) + (annual actual shift differential cost) + (annual actual weekend premium cost)");
- /* annual potential risk cost, riskCosts */
- setTooltipsOnColumnHeader($grid, 20, "(annual actual total cost) * (potential risk %)");
- /* annual total cost, totalCosts */
- setTooltipsOnColumnHeader($grid, 21, "(annual actual total cost) + (annual potential risk cost)");
- /* actual vs scheduled fte variance, fteVariance */
- setTooltipsOnColumnHeader($grid, 22, "(scheduled fte) - (actual fte)");
- /* annual fte cost variance, fteCostVariance */
- setTooltipsOnColumnHeader($grid, 23, "((actual vs scheduled fte variance) * $/hr) / (sum of weeks) * 52 ");
- },
- ondblClickRow: function (id, iRow, iCol, e) {
- $grid.jqGrid('toggleSubGridRow', id);
- },
- onSelectRow: function (id, isSelected) {
- $grid.jqGrid('toggleSubGridRow', id);
- },
- gridComplete: function () { // fires after all the data is loaded into the grid and all other processes are complete.
- $grid.tooltip({
- tooltipClass: "ui-state-highlight",
- open: function() {
- $(".ui-tooltip").stop(false, true).hide().slideDown("fast");
- },
- close: function() {
- $(".ui-tooltip").stop(false, true).hide();
- }
- });
- },
- resizeStop: function () {
- saveColumnState.call($grid, $grid[0].p.remapColumns);
- },
- subGridRowExpanded: function(subgrid_id, row_id) {
- var subgrid_table_id;
- subgrid_table_id = subgrid_id+"_t";
- jQuery("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table>");
- $("#" + subgrid_table_id).jqGrid({
- url: "api/workplans?row=" + row_id,
- mtype: "GET",
- datatype: "json",
- loadtext: "Fetching rotation metrics ...",
- loadonce: true, /* Load all data from server in a single request. */
- ajaxGridOptions: { cache: true }, /* For local search. */
- /* Note: not disabling 'nd' to enforce cache-refresh on stupid IE browser. */
- height: "100%", // 'auto',
- width: '100%', /* FIXME: use relative sizes! */
- loadtext: "Fetching Master Rotations ...",
- loadonce: true, /* Load all data from server in a single request. */
- ajaxGridOptions: { cache: true }, /* For local search. */
- /* Note: not disabling 'nd' to enforce cache-refresh on stupid IE browser. */
- prmNames: { rows: null, page: null, search: null, sort: null, order: null },
- lodui: "block",
- shrinkToFit: false,
- sortname: isColState ? myColumnsState.sortname : 'updated',
- sortorder: isColState ? myColumnsState.sortorder : 'desc',
- search: isColState ? myColumnsState.search : false,
- postData: isColState ? { filters: myColumnsState.filters } : {},
- viewrecords: true,
- gridview: true,
- ignoreCase: true,
- shrinkToFit: false,
- multiselect: true,
- colModel: [
- { label: "Workplan Name", name: "value.name", align: "left", classes: "linkable", hidden: false, width: 180,
- cellattr: function (rowId, val, rawObject, cm, rdata) {
- return ' title = "' + val + " - " + (rawObject.value ? rawObject.value.status : rawObject.status) + '"';
- }
- },
- { label: "CBA", name: "value.agreement", align: "center", classes: "linkable", hidden: false, width: 85 },
- { label: "owner", name: "value.creator", align: "left", classes: "linkable", hidden: false, width: 120 },
- { label: "updated", name: "updated", align: "center", classes: "linkable", hidden: false, width: 95,
- jsonmap: "value.updated", sorttype: 'date', search: true, stype: 'text', formatter: "date", formatoptions: {
- /* See http://php.net/manual/en/function.date.php */
- srcformat: "Y-m-d\\TH:i:s",
- newformat: "Y-m-d" /* has to match 'dateFormat' in datePicker() below. */
- },
- cellattr: function (rowId, val, rawObject, cm, rdata) {
- return ' title = "' + moment(rdata.updated).calendar() + '"';
- },
- searchoptions: {
- sopt: ['ge'],
- attr: {title: "Set the start date of the selection"},
- dataInit: function (elem) {
- setTimeout(function () {
- /* See http://api.jqueryui.com/datepicker/ */
- $(elem).datepicker({
- /* For dateFormat, see http://api.jqueryui.com/datepicker/#utility-formatDate */
- dateFormat: 'yy-mm-dd', autoSize: true, maxDate: 0, /* Today's date */ showAnim: "slideDown", duration: "fast", firstDay: 1, /* Monday */changeYear: true,
- changeMonth: true, showButtonPanel: true, currentText: "Today", /* Disable 'Today' button (does not work well). */
- onSelect: function () {
- if (this.id.substr(0, 3) === "gs_") {
- setTimeout(function () {
- $grid[0].triggerToolbar();
- }, 50);
- } else {
- /* To refresh the filter. */
- $(this).trigger('change');
- }
- }
- });
- }, 100);
- }
- }
- },
- { label: "total # of shifts", name: "value.numShifts", align: "center", classes: "linkable", hidden: true, sorttype: "float", width: 76, searchoptions: {sopt: ['ge']} },
- { label: "# of shifts over baseline", name: "value.baselineOver", align: "center", classes: "linkable", hidden: true, sorttype: "float", width: 76, searchoptions: {sopt: ['ge']} },
- { label: "# of shifts under baseline", name: "value.baselineUnder", align: "center", classes: "linkable", hidden: true, sorttype: "float", width: 76, searchoptions: {sopt: ['ge']} },
- { label: "cba violations", name: "value.constraintMetric", align: "center", classes: "linkable", hidden: false,sorttype: "integer",width: 76,searchoptions: {sopt: ['ge']},
- cellattr: function (rowId, val, rawObject, cm, rdata) {
- return ' title = "' + (rawObject.value ? rawObject.value.cbaViolations : rawObject.cbaViolations) + '"';
- }
- },
- { label: "bp violations", name: "value.bestPracticeMetric",align: "center", classes: "linkable", hidden: false,sorttype: "integer",width: 76, searchoptions: {sopt: ['ge']},
- cellattr: function (rowId, val, rawObject, cm, rdata) {
- return ' title = "' + (rawObject.value ? rawObject.value.bpViolations : rawObject.bpViolations) + '"';
- }
- },
- { label: "net baseline variance rate", name: "value.netBaselineVarianceMetric", align: "center", classes: "linkable", hidden: false, sorttype: "float", width: 76, searchoptions: {sopt: ['ge']},
- formatter: function (cellvalue, options, rowObject) {
- if (cellvalue !== null)
- return fmtPercent(cellvalue);
- return "<span style='background-color: #F78D8D'>no baseline</span>";
- }
- }
- ],
- sortname: 'EmpId',
- viewrecords: true,
- sortorder: "asc",
- onSelectRow: function (id, isSelected, e) {
- var master = this.id.split('_')[1];
- updateIdsOfSelectedRows(id, isSelected, master, scope);
- saveColumnState.call($grid, $grid[0].p.remapColumns);
- return false;
- },
- onSelectAll: function (aRowids, isSelected) {
- var i, count, id,
- master = this.id.split('_')[1];
- for (i = 0, count = aRowids.length; i < count; i++) {
- id = aRowids[i];
- updateIdsOfSelectedRows(id, isSelected, master, scope);
- }
- saveColumnState.call($grid, $grid[0].p.remapColumns);
- }
- });
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement