Odyssey
cuissues_report.prg
1 <?php
2 // File: cuissues_report.v2 (partially replaces cuissues_report)
3 // Contains html and functions for displaying the cuissues list.
4 // SPB 10/6/2015-- Replaced previous cuissues_report for kendo upgrade and billing workflow expansion.
5 
6 $monLibrary = dirname(__FILE__) . "/../library";
7 $sharedLibrary = dirname(__FILE__) . "/../../shared/library";
8 require_once("$monLibrary/cu_top.i");
9 require_once("$monLibrary/ck_hticket.i");
10 require_once("$monLibrary/monitorView.i");
11 require_once("$sharedLibrary/commonJsFunctions.i");
12 
13 if (!CheckPerm($link, $Hu, basename($_SERVER['SCRIPT_NAME']), $_SERVER['REMOTE_ADDR'])) {
14  // ** Permissions failed
15  // ** redirect to new page
16  header("Location: /hcuadm/hcu_noperm.prg");
17  exit;
18 }
19 
20 // Globals
21 $dataFile = "cuissues_data.prg";
22 $editFile = "cuissues_edit.prg";
23 $readURL = "/hcuadm/$dataFile?operation=readCuissues";
24 $addURL = "/hcuadm/$editFile?";
25 $saveCookieURL = "/hcuadm/$dataFile?operation=setReportCookie";
26 $clearCookieURL = "/hcuadm/$dataFile?operation=clearReportCookie";
27 
28 $string = array("filter" => FILTER_SANITIZE_STRING);
29 
30 HCU_ImportVars($SYSENV, "", array("user_name" => $string));
31 $cu = HCU_array_key_value("user_name", $SYSENV);
32 $cu = $cu === false ? "" : strtolower(trim($cu));
33 
34 $header = "";
35 if ($cu != "") {
36  $header .= " for $cu";
37  $addURL .= "user_name=$cu";
38 }
39 
40 $lowerHu = strtolower($Hu);
41 
42 printMonitorPageTop("CU Job Report", $homecuKendoVersion, $cloudfrontDomainName, $bootstrapVersion, $fontawesomeVersion, true);
43 
44 function SetFilters($filter, $cu, $Hu) {
45  $filterArray = HCU_JsonDecode($filter);
46  // For now assume that all filters are array versus objects
47  $hasSuspendedFilter = false;
48  $hasCuFilter = false;
49  $hasMyFilter = false;
50  $hasImpFilter = false;
51  $cuFilter = "";
52  $advancedFilters = array();
53 
54  if ($cu == "" && isset($filterArray["filters"]) && isset($filterArray["logic"]) && $filterArray["logic"] == "and") {
55  foreach($filterArray["filters"] as $topFilter) {
56  if (isset($topFilter["field"]) && isset($topFilter["operator"]) && isset($topFilter["value"])) {
57  if ($topFilter["field"] == "status" && $topFilter["operator"] == "neq" && $topFilter["value"] == "Suspended") {
58  $hasSuspendedFilter = true;
59  } else if ($topFilter["field"] == "jobType" && $topFilter["operator"] == "contains") {
60  $advancedFilters[] = str_replace("|", "", $topFilter["value"]);
61  }
62  }
63  if (isset($topFilter["logic"]) && isset($topFilter["filters"]) && $topFilter["logic"] == "or") {
64  $isMyFilter = true;
65  $isCuFilter = true;
66  $first = true;
67  foreach($topFilter["filters"] as $subFilter) {
68  if (isset($subFilter["field"]) && isset($subFilter["operator"]) && isset($subFilter["value"])) {
69  switch(trim($subFilter["field"])) {
70  case "issueOwner":
71  case "nextTaskOwner":
72  $isCuFilter = false;
73  break;
74  case "cuName":
75  case "cuCode":
76  case "issue":
77  $isMyFilter = false;
78  break;
79  default:
80  $isCuFilter = false;
81  $isMyFilter = false;
82  break;
83  }
84 
85  switch (trim($subFilter["operator"])) {
86  case "eq":
87  $isCuFilter = false;
88  break;
89  case "contains":
90  $isMyFilter = false;
91  break;
92  default:
93  $isCuFilter = false;
94  $isMyFilter = false;
95  break;
96  }
97 
98  if (trim($subFilter["value"]) != trim($Hu)) {
99  $isMyFilter = false;
100  }
101  if (!$first) {
102  if (trim($subFilter["value"]) != trim($cuFilter)) {
103  $isCuFilter = false;
104  }
105  } else {
106  $cuFilter = trim($subFilter["value"]);
107  $first = false;
108  }
109  }
110  }
111 
112  if ($isMyFilter) {
113  $hasMyFilter = true;
114  }
115 
116  if ($isCuFilter) {
117  $hasCuFilter = true;
118  }
119 
120  }
121  if ($hasCuFilter && $hasMyFilter && $hasSuspendedFilter) {
122  break;
123  }
124 
125  }
126  } else {
127  $hasSuspendedFilter = true;
128  }
129 
130  return array("cu" => $hasCuFilter ? $cuFilter : "", "my" => $hasMyFilter ? "Everyone's Jobs" : "My Jobs",
131  "suspended" => $hasSuspendedFilter ? "Show Suspended" : "Hide Suspended",
132  "advancedFilters" => HCU_JsonEncode($advancedFilters), "showAdvancedFilters" => count($advancedFilters) > 0);
133 }
134 
135 $hasCookie = false;
136 $filter = "";
137 if ($cu == "" && isset($_COOKIE['Job_View'])) {
138  parse_str($_COOKIE['Job_View']);
139  $hasCookie = true;
140 }
141 
142 $filterVariables = SetFilters($filter, $cu, $Hu);
143 $filterVariables["completed"] = isset($showCompleted) && $showCompleted == "Y" ? "Hide Completed" : "Show Completed";
144 $filterVariables["deleted"] = isset($showDeleted) && $showDeleted == "Y" ? "Hide Deleted" : "Show Deleted";
145 ?>
146 
147 <style>
148  .k-grid-norecords {
149  padding-top: 7px;
150  padding-bottom: 7px;
151  }
152 
153  .k-multiselect-wrap .k-input {
154  width: 141px !important;
155  }
156 
157  .k-multiselect-wrap.k-floatwrap {
158  width: 158.422px !important;
159  }
160 
161  <?php // Make the button the same height as the other buttons. ?>
162  .k-grid-addCustom {
163  height: 30px !important;
164  vertical-align: middle;
165  }
166 </style>
167 <script type="text/javascript">
168 
169 <?php
170 // Include common functions
171 getShowWaitFunctions();
172 ?>
173 
174 var dataItemToDelete = null;
175 var initialized = false;
176 var cuName = null;
177 
178 function DownloadCSV() {
179  var grid = $("#reportGrid").data("kendoGrid");
180  var data = grid.dataSource.view();
181  var csvData = "Target, Job, Status, Owner, CU Code, CU Name, Next Task Title, Next Task Owner, Created, Updated\r\n";
182 
183  for(var i = 0, count = data.length; i != count; i++) {
184  var record = data[i];
185  var csvRecord = [];
186  csvRecord.push(record.targetDateType != "" ? record.targetDateType : (record.targetDate != null ? kendo.toString(record.targetDate, "MM/dd/yyyy") : ""));
187  csvRecord.push(CsvEscape(record.issue));
188  csvRecord.push(CsvEscape(record.status));
189  csvRecord.push(CsvEscape(record.issueOwner));
190  csvRecord.push(CsvEscape(record.cuCode));
191  csvRecord.push(CsvEscape(record.cuName));
192  csvRecord.push(CsvEscape(record.nextTask));
193  csvRecord.push(CsvEscape(record.nextTaskOwner));
194  csvRecord.push(record.entryDate == null ? "" : kendo.toString(record.entryDate, "MM/dd/yyyy"));
195  csvRecord.push(record.lastActivityDate == null ? "" : kendo.toString(record.lastActivityDate, "MM/dd/yyyy"));
196  csvData += csvRecord.join() + "\r\n";
197  }
198 
199  <?php // http://stackoverflow.com/questions/14964035/how-to-export-javascript-array-info-to-csv-on-client-side ?>
200  var blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' });
201  var filename = "job report.csv";
202  if (navigator.msSaveBlob) { <?php // IE 10+ ?>
203  navigator.msSaveBlob(blob, filename);
204  } else {
205  var link = document.createElement("a");
206  if (link.download != null)
207  { // feature detection
208  // Browsers that support HTML5 download attribute
209  var url = URL.createObjectURL(blob);
210  link.setAttribute("href", url);
211  link.setAttribute("download", filename);
212  link.style.visibility = 'hidden';
213  document.body.appendChild(link);
214  link.click();
215  document.body.removeChild(link);
216  }
217  }
218 }
219 
220 function CsvEscape(string) {
221  string = string.indexOf('"') != -1 ? string.replace('"', '""') : string;
222  string = string.indexOf(',') != -1 || string.indexOf('\n') != -1 ? '"' + string + '"' : string;
223  return string;
224 }
225 
226 <?php // initializes the cuissues grid. ?>
227 var jobData = [];
228 function GetJobData(showCompleted, showDeleted, saveFilter, grid, setDDLFunc) {
229  var parameters = {<?php if ($cu != "") echo "cu: '$cu'"; ?>};
230  parameters.showCompleted = showCompleted ? "Y" : "N";
231  parameters.showDeleted = showDeleted ? "Y" : "N";
232  parameters.setDDLs = typeof(setDDLFunc) == "function" ? "Y" : "N";
233  showWaitWindow();
234  $.post("<?php echo $readURL; ?>", parameters, function(data) {
235  hideWaitWindow();
236 
237  if (data.error.length > 0) {
238  $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
239  } else {
240  if (typeof(setDDLFunc) == "function") {
241  (setDDLFunc)(data);
242  }
243 
244  if (saveFilter) {
245  SaveSortAndFilter(grid);
246  }
247 
248  jobData = data.record;
249  grid.dataSource.read();
250  }
251 
252  });
253 }
254 
255 function SaveSortAndFilter(grid, afterFunc) {
256  <?php if ($cu == "") { ?>
257  var sortArray = grid.dataSource.sort();
258 
259  var sort = kendo.stringify(sortArray);
260  var filter = kendo.stringify(grid.dataSource.filter());
261 
262  var showCompleted = $(".k-grid-showCompleted").text().trim() == "Hide Completed" ? "Y" : "N";
263  var showDeleted = $(".k-grid-showDeleted").text().trim() == "Hide Deleted" ? "Y" : "N";
264  $.post("<?php echo $saveCookieURL; ?>", {sort: sort, filter: filter, showCompleted: showCompleted, showDeleted: showDeleted}, function (data) {
265  if (data.error.length > 0) {
266  $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
267  } else {
268  $(".k-grid-clearCookie").show();
269  $("#invalidRequestServerSide").val(false);
270 
271  <?php } ?>
272  if (typeof(afterFunc) == "function") {
273  (afterFunc)();
274  }
275  <?php if ($cu == "") { ?>
276  }
277  });
278  <?php } ?>
279 }
280 
281 function ChangeFilterSort(grid, fromShowMine) {
282  var filters = [];
283  if ($(".k-grid-showMine").text().trim() == "Everyone's Jobs") {
284  filters.push({logic: "or",
285  filters: [
286  {field: "issueOwner", operator: "eq", value: "<?php echo $lowerHu; ?>"},
287  {field: "nextTaskOwner", operator: "eq", value: "<?php echo $lowerHu; ?>"}
288  ]});
289  }
290  if ($(".k-grid-showSuspended").text().trim() == "Show Suspended") {
291  filters.push({field: "status", operator: "neq", value: "Suspended"});
292  }
293 
294  <?php if ($cu == "") { ?>
295  var text = $("#cuFilter").val().trim();
296  if (text != "") {
297  filters.push({logic: "or",
298  filters: [
299  {field: "cuName", operator: "contains", value: text}, {field: "cuCode", operator: "contains", value: text},
300  {field: "issue", operator: "contains", value: text}
301  ]});
302  }
303  <?php } ?>
304 
305  var additionalFilters = $("#advancedMultiselect").data("kendoMultiSelect").value();
306 
307  for(var i = 0; i != additionalFilters.length; i++) {
308  filters.push({field: "jobType", operator: "contains", value: "|" + additionalFilters[i] + "|"});
309  }
310  grid.dataSource.filter(filters);
311 
312  if (fromShowMine) {
313  if ($(".k-grid-showMine").text().trim() == "Everyone's Jobs") {
314  grid.dataSource.sort([{field: "issueOwner", dir: "asc"}, {field: "nextTaskOwner", dir: "asc"}, {field: "issue", dir: "asc"}]);
315  } else {
316  <?php if ($cu != "") { ?>
317  grid.dataSource.sort([
318  {field: "targetDate", dir: "asc", compare: function(a,b) { return CompareFunc(a,b); }},
319  {field: "entryDate", dir: "asc"}, {field: "cuCode", dir: "asc"},
320  {field: "issue", dir: "asc"},
321  {field: "trackId", dir: "asc"}
322  ]);
323  <?php } else { ?>
324  grid.dataSource.sort([{field: "targetDate", dir: "asc", compare: function(a,b) { return CompareFunc(a,b); }}, {field: "trackId", dir: "asc"}]);
325  <?php } ?>
326  }
327  }
328 
329  <?php if ($cu == "") { ?>
330  SaveSortAndFilter(grid);
331  <?php } ?>
332 }
333 
334 function CompareFunc(a,b) {
335  var typeSort = a.targetDateTypeSort - b.targetDateTypeSort;
336  if (typeSort != 0 || a.targetDateTypeSort != 1) { // make sure that the date sort doesn't happen if there is no target date.
337  return typeSort;
338  }
339  var aDate = new Date(a.targetDate);
340  var bDate = new Date(b.targetDate);
341  if (aDate > bDate) {
342  return 1;
343  }
344  if (aDate < bDate) {
345  return -1;
346  }
347  return 0;
348 };
349 
350 function InitGrid() {
351  $.homecuValidator.setup({formValidate: "mainForm", formStatusField: "formValidateMainDiv"});
352  <?php if ($cu != "") { ?>
353  var sort = [
354  {field: "targetDate", dir: "asc"},
355  {field: "entryDate", dir: "asc"},
356  {field: "cuCode", dir: "asc"},
357  {field: "issue", dir: "asc"},
358  {field: "trackId", dir: "asc"}
359  ];
360  <?php } else if (isset($sort) && $sort == "") { ?>
361  var sort = [{field: "targetDate", dir: "asc"}, {field: "trackId", dir: "asc"}, {field: "issue", dir: "asc"}];
362  <?php } else {
363  if (isset($sort)) {
364  echo "var sort = $sort;";
365  } else {
366  echo "var sort = []";
367  }
368  }?>
369 
370  <?php if ($cu == "" && $filter != "") {
371  echo "var filter = $filter;";
372  } else { ?>
373  var filter = {field: "status", operator: "neq", value: "Suspended"};
374  <?php } ?>
375 
376 
377 
378  for (var i = 0; i != sort.length; i++) {
379  if (sort[i].field == "targetDate") {
380  sort[i].compare = function(a,b) {
381  return CompareFunc(a,b);
382  };
383  break;
384  }
385  }
386 
387  var grid = $("#reportGrid").kendoGrid({
388  dataSource: {
389  transport: {
390  read: function(options) {
391  options.success(jobData);
392  }
393  },
394  schema: {
395  model: {
396  id: "trackId",
397  fields: {
398  trackId: {type: "number"},
399  issue: {type: "string"},
400  cuCode: {type: "string"},
401  cuName: {type: "string"},
402  status: {type: "string"},
403  issueOwner: {type: "string"},
404  nextTask: {type: "string"},
405  nextTaskOwner: {type: "string"},
406  entryDate: {type: "date"},
407  lastActivityDate: {type: "date"},
408  targetDate: {type: "date"},
409  targetDateType: {type: "string"},
410  targetDateTypeSort: {type: "number"},
411  dropDeadDate: {type: "date"},
412  jobType: {type: "string"}
413  }
414  }
415  },
416  sort: sort,
417  filter: filter
418  },
419  sortable: {
420  mode: "single"
421  },
422  resizable: true,
423  columns: [
424  {text: "", width: "50px"},
425  {field: "targetDate", title: "Target", width: "70px", attributes: {style: "min-width: 64px"}, sortable: {
426  compare: function(a,b) {
427  return CompareFunc(a,b);
428  }
429  }},
430  {field: "dropDeadDate", title: "Due", width: "70px", attributes: {style: "min-width: 64px"}},
431  {field: "issue", title: "Job", width: "33%"},
432  {field: "status", title: "Status", width: "80px", attributes: {style: "min-width: 64px;"}},
433  {field: "issueOwner", title: "Owner", width: "100px", attributes: {style: "min-width: 64px;"}},
434  {field: "cuCode", title: "CU Code", width: "100px", attributes: {style: "min-width: 64px;"}},
435  {field: "cuName", title: "CU Name", width: "33%"},
436  {field: "nextTask", title: "Next Task", width: "33%", headerAttributes: {"class": "k-info-colored"}},
437  {field: "nextTaskOwner", title: "Owner", width: "100px", headerAttributes: {"class": "k-info-colored"}},
438  {field: "entryDate", title: "Created", width: "70px", attributes: {style: "text-align: right; min-width: 64px;"},
439  headerAttributes: {"class": "k-info-colored", style: "min-width: 64px;"}},
440  {field: "lastActivityDate", title: "Updated", width: "70px", attributes: {style: "text-align: right; min-width: 64px;"},
441  headerAttributes: {"class": "k-info-colored", style: "min-width: 64px;"}}
442  ],
443  pdf: {
444  author: "Billing",
445  fileName: "issuesReport.pdf",
446  keywords: "issues report",
447  landscape: true
448  },
449  rowTemplate: $("#reportGridRowTemplate").html(),
450  noRecords: {
451  template: "<tr class='hcuSpacer'><td colspan='12'>No records available</td></tr>"
452  }
453  }).data("kendoGrid");
454 
455  <?php
456  echo "var showCompleted = " . (isset($showCompleted) && $showCompleted == "Y" ? "true;" : "false;");
457  echo "var showDeleted = " . (isset($showDeleted) && $showDeleted == "Y" ? "true;" : "false;");
458  ?>
459 
460  GetJobData(showCompleted, showDeleted, false, grid, function(data) {
461  fromTemplateCombobox.dataSource.data(data.templateDDL);
462  <?php if ($cu == "") { ?>
463  cuCombobox.dataSource.data(data.cuDDL);
464  <?php } else { ?>
465  for(var i = 0; i != data.cuDDL.length; i++) {
466  if (data.cuDDL[i].value.toLowerCase() == "<?php echo $cu; ?>") {
467  cuName = data.cuDDL[i].cuName;
468  break;
469  }
470  }
471  <?php } ?>
472  });
473 
474  $("#reportGrid").on("click", ".gotoJobBtn", function() {
475  var grid = $("#reportGrid").data("kendoGrid");
476  var dataItem = grid.dataItem($(this).closest("tr"));
477  SaveSortAndFilter(grid, function () {
478  showWaitWindow();
479  window.location.href = "<?php echo $addURL; ?>&trackId=" + dataItem.trackId;
480  });
481  });
482 
483  $(".k-grid-addCustom").click(function () {
484  var grid = $("#reportGrid").data("kendoGrid");
485  SaveSortAndFilter(grid, function() {
486  showWaitWindow();
487  window.location.href = "<?php echo $addURL; ?>";
488  });
489  return false;
490  });
491 
492  $(".k-grid-showMine").click(function() {
493  if ($(this).text().trim() == "My Jobs") {
494  $(this).text("Everyone's Jobs");
495  } else {
496  $(this).text("My Jobs");
497  }
498  ChangeFilterSort(grid, true);
499  return false;
500  });
501 
502  $(".k-grid-showSuspended").click(function() {
503  if ($(this).text().trim() == "Hide Suspended") {
504  $(this).text("Show Suspended");
505  } else {
506  $(this).text("Hide Suspended");
507  }
508  ChangeFilterSort(grid);
509  return false;
510  });
511 
512  $("#advancedLink").click(function() {
513  if ($(this).text().trim() == "Advanced Options") {
514  $("#advancedDiv").show();
515  $(this).text("Hide Advanced Options");
516  } else {
517  $("#advancedDiv").hide();
518  $(this).text("Advanced Options");
519  }
520  });
521 
522  <?php if ($cu == "") { ?>
523  $("#cuFilter").keyup(function (e) {
524  ChangeFilterSort(grid);
525  return false;
526  });
527  setTimeout(function() {$('#cuFilter').focus();}, 0);
528 
529  $(".k-grid-clearCookie").click(function () {
530  var thisButton = $(this);
531  $.post("<?php echo $clearCookieURL; ?>", {}, function(data) {
532  if (data.error.length > 0) {
533  $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
534  } else {
535  <?php if ($cu != "") { ?>
536  var sort = [
537  {field: "targetDate", dir: "asc", compare: function(a,b) {return CompareFunc(a,b); }},
538  {field: "entryDate", dir: "asc"},
539  {field: "cuCode", dir: "asc"},
540  {field: "issue", dir: "asc"},
541  {field: "trackId", dir: "asc"}
542  ];
543  <?php } else { ?>
544  var sort = [
545  {field: "targetDate", dir: "asc", compare: function(a,b) {return CompareFunc(a,b); }},
546  {field: "trackId", dir: "asc"},
547  {field: "issue", dir: "asc"}
548  ];
549  <?php } ?>
550  var filter = {field: "status", operator: "neq", value: "Suspended"};
551 
552  grid.dataSource.sort(sort);
553  grid.dataSource.filter(filter);
554 
555  var requery = $(".k-grid-showCompleted").text().trim() == "Hide Completed" || $(".k-grid-showDeleted").text().trim() == "Hide Deleted";
556 
557  $(".k-grid-showCompleted").text("Show Completed");
558  $(".k-grid-showDeleted").text("Show Deleted");
559  $(".k-grid-showSuspended").text("Show Suspended");
560  $(".k-grid-showMine").text("My Jobs");
561  $("#cuFilter").val(null);
562 
563  $("#advancedMultiselect").data("kendoMultiSelect").value(null);
564  $("#advancedDiv").hide();
565  $("#advancedLink").text("Advanced Options");
566 
567  if (requery) {
568  GetJobData(false, false, false, grid, null);
569  }
570 
571  $(thisButton).hide();
572  }
573 
574  });
575  return false;
576  });
577  <?php } ?>
578 
579  $(".k-grid-showCompleted").click(function () {
580  var showDeleted = $(".k-grid-showDeleted").text().trim() == "Hide Deleted";
581  if ($(this).text().trim() == "Show Completed") {
582  GetJobData(true, showDeleted, true, grid);
583  $(this).text("Hide Completed");
584  } else {
585  GetJobData(false, showDeleted, true, grid);
586  $(this).text("Show Completed");
587  }
588  return false;
589  });
590 
591  $(".k-grid-showDeleted").click(function () {
592  var showCompleted = $(".k-grid-showCompleted").text().trim() == "Hide Completed";
593  if ($(this).text().trim() == "Show Deleted") {
594  GetJobData(showCompleted, true, true, grid);
595  $(this).text("Hide Deleted");
596  } else {
597  GetJobData(showCompleted, false, true, grid);
598  $(this).text("Show Deleted");
599  }
600 
601  return false;
602  });
603 
604  var advancedMultiselect = $("#advancedMultiselect").kendoMultiSelect({
605  dataSource: {
606  data: [
607  {text: "HB Implementation", value: "imp"},
608  {text: "Show Appliance Needed", value: "cloneJob"},
609  {text: "Job W/O Billing", value: "unattached"}
610  ]
611  },
612  dataTextField: "text",
613  dataValueField: "value",
614  placeholder: "Click here to add filter",
615  value: <?php echo $filterVariables["advancedFilters"]; ?>,
616  change: function() {
617  ChangeFilterSort(grid);
618  }
619  }).data("kendoMultiSelect");
620 
621 
622  $(".k-grid-pdf").click(function () {
623  grid.saveAsPDF();
624  return false;
625  });
626 
627  $(".k-grid-csv").click(function () {
628  DownloadCSV();
629  return false;
630  });
631 
632  $("[data-role='columnsorter']").click(function() {
633  SaveSortAndFilter(grid);
634  return false;
635  });
636 
637  var fromTemplateWindow = $("<div id='fromTemplateWindow'></div>").kendoWindow({
638  content: {
639  template: $("#fromTemplateTemplate").html()
640  },
641  draggable: false,
642  visible: false,
643  actions: [],
644  modal: true,
645  title: "Add Job From Template",
646  width: 425,
647  resizable: false,
648  open: function() {
649  if (window.activeWindows != null) {
650  window.activeWindows.push(this);
651  }
652  },
653  close: function() {
654  if (window.activeWindows != null) {
655  window.activeWindows.pop();
656  }
657  }
658  }).data("kendoWindow");
659 
660  var fromTemplateCombobox = $("#fromTemplateCombobox").kendoDropDownList({
661  dataSource: {
662  data: []
663  },
664  autoBind: false,
665  dataTextField: "text",
666  dataValueField: "value",
667  filter: "startswith"
668  }).data("kendoDropDownList");
669 
670  <?php if ($cu == "") { ?>
671  var cuCombobox = $("#cuCombobox").kendoDropDownList({
672  dataSource: {
673  data: [],
674  schema: {
675  model: {
676  id: "value",
677  fields: {
678  value: {type: "string"},
679  text: {type: "string"},
680  cuName: {type: "string"}
681  }
682  }
683  }
684  },
685  autoBind: false,
686  dataTextField: "text",
687  dataValueField: "value",
688  filter: "contains"
689  }).data("kendoDropDownList");
690  <?php } else { ?>
691  $("#cuCombobox").text("<?php echo $cu; ?>");
692  <?php } ?>
693 
694  $("#fromTemplateWindow .okayBtn").click(function () {
695  <?php if ($cu == "") { ?>
696  var cuName = cuCombobox.dataItem().cuName;
697  var parameters = {templateId: fromTemplateCombobox.value(), cu: cuCombobox.value(), cuName: cuName};
698  <?php } else { ?>
699  var parameters = {templateId: fromTemplateCombobox.value(), cu: "<?php echo $cu; ?>", cuName: cuName};
700  <?php } ?>
701  $.post("/hcuadm/<?php echo $dataFile; ?>?operation=addIssueFromTemplate", parameters, function (data) {
702  if (data.error.length > 0) {
703  $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
704  } else {
705  SaveSortAndFilter(grid, function(){
706  showWaitWindow();
707  window.location.href = "<?php echo $addURL; ?>&trackId=" + data.trackId;
708  });
709  }
710  });
711  fromTemplateWindow.close();
712  return false;
713  });
714 
715  $("#fromTemplateWindow .cancelBtn").click(function () {
716  fromTemplateWindow.close();
717  return false;
718  });
719 
720  $(".k-grid-addFromTemplate").click(function () {
721  fromTemplateCombobox.select(0);
722  fromTemplateWindow.open().center();
723  return false;
724  });
725 }
726 
727 var activeWindows = [];
728 $(document).ready(function () {
729  InitGrid();
730  $("body").on("click", ".k-overlay", function() { if (activeWindows.length > 0) activeWindows[activeWindows.length - 1].close(); return false; });
731 });
732 
733 </script>
734 
735 <script type="text/x-kendo-template" id="reportGridRowTemplate">
736  # var targetDateText = "";
737  if (targetDateType != "") {
738  targetDateText = targetDateType;
739  } else if (targetDate != null) {
740  targetDateText = kendo.toString(targetDate, "MM/dd/yy");
741  }
742  #
743  <tr data-uid="#= uid #">
744  <td><a href="\\#" class="gotoJobBtn"><i class="fa fa-external-link"></i></a></td>
745  <td>#: targetDateText #</td>
746  <td># if (dropDeadDate == null) { # &nbsp; # } else { # #= kendo.toString(dropDeadDate, "MM/dd/yy") # # } #</td>
747  <td>#: issue #</td>
748  <td>#: status #</td>
749  <td>#: issueOwner #</td>
750  <td>#: cuCode #</td>
751  <td>#: cuName #</td>
752  <td># if (nextTask == "") { # <i>N/A</i> # } else { # #: nextTask # # } #</td>
753  <td># if (nextTaskOwner == "") { # <i>N/A</i> # } else { # #: nextTaskOwner # # } #</td>
754  <td># if (entryDate == null) { # &nbsp; # } else { # #: kendo.toString(entryDate, "MM/dd/yy") # # } #</td>
755  <td># if (lastActivityDate == null) { # &nbsp; # } else { # #: kendo.toString(lastActivityDate, "MM/dd/yy") # # } #</td>
756  </tr>
757 </script>
758 
759 <script type="text/x-kendo-template" id="fromTemplateTemplate">
760  <div class="container-fluid hcu-template" id="fromTemplateWindowForm">
761  <div class="row hcuSpacer">
762  <div class="col-xs-3">
763  <label data-for="subject">Template:</label>
764  </div>
765  <div class="col-xs-9">
766  <div id="fromTemplateCombobox" class="hcu-all-100"></div>
767  </div>
768  </div>
769  <div class="row hcuSpacer">
770  <div class="col-xs-3">
771  <label data-for="subject">CU:</label>
772  </div>
773  <div class="col-xs-9">
774  <div id="cuCombobox" class="hcu-all-100"></div>
775  </div>
776  </div>
777  <div class="hcu-edit-buttons k-state-default">
778  <a class="cancelBtn" href="\\#">Cancel</a>
779  &nbsp;&nbsp;&nbsp;
780  <a class="okayBtn k-button k-primary" href="\\#"><i class="fa fa-check"></i>Update</a>
781  </div>
782  </div>
783 </script>
784 
785 <?php $cu == "" ? printMonitorPageMiddle("CU Job Report") : printMonitorPageMiddle("CU Job Report", null, true); ?>
786 
787  <div class="container-fluid" id="mainForm">
788  <div id="formValidateMainDiv"></div>
789  <div class="row hcuSpacer">
790  <div class="col-xs-12">
791  <br>
792  <a class="k-button k-button-icontext k-grid-addCustom" href="#">
793  <span class="fa fa-plus"></span>
794  </a>
795  <a class="k-button k-button-icontext k-grid-addFromTemplate" href="#">
796  <span class="fa fa-plus"></span>&nbsp;From Template
797  </a>
798  <a class="k-button k-button-icontext k-grid-csv" href="#">
799  CSV
800  </a>
801  <a class="k-button k-button-icontext k-grid-showMine" href="#">
802  <?php echo $filterVariables["my"]; ?>
803  </a>
804  <a class="k-button k-button-icontext k-grid-showSuspended" href="#">
805  <?php echo $filterVariables["suspended"]; ?>
806  </a>
807  <a class="k-button k-button-icontext k-grid-showCompleted" href="#">
808  <?php echo $filterVariables["completed"]; ?>
809  </a>
810  <a class="k-button k-button-icontext k-grid-showDeleted" href="#">
811  <?php echo $filterVariables["deleted"]; ?>
812  </a>
813  <?php if ($cu == "") { ?>
814  &nbsp;
815  CU/Job Filter: <input id="cuFilter" type="text" class="k-input" value="<?php echo $filterVariables["cu"]; ?>">
816 
817  <a class="k-button k-button-icontext k-grid-clearCookie" href="#" <?php if (!$hasCookie) { echo "style= \"display: none;\""; } ?>>
818  <span class=" "></span>Reset View
819  </a>
820  <?php } ?>
821  &nbsp;<a id="advancedLink" href="#"><?php echo ($filterVariables["showAdvancedFilters"] ? "Hide " : "") . "Advanced Options"; ?></a>
822  </div>
823  </div>
824  <div class="row hcuSpacer" id="advancedDiv" <?php echo $filterVariables["showAdvancedFilters"] ? "" : "style=\"display:none;\""; ?>>
825  <div class="col-xs-12">
826  <div style="float:left;">Additional Options: &nbsp;</div>
827  <div style="float:left;" id="advancedMultiselectDiv"><div id="advancedMultiselect"></div></div>
828  </div>
829  </div>
830  <div class="row hcuSpacer" id="jobReportContainer">
831  <div class="col-xs-12">
832  <div id="reportGrid" class="hcu-no-td-border"></div>
833  </div>
834  </div>
835  </div>
836 
837 <?php printMonitorPageBottom(); ?>