From 5aae62ddb6f4a87389a80ecc3c1ffcc3af785850 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sat, 6 Jan 2018 21:32:40 -0700 Subject: [PATCH] Add jobs export --- lang/en_us.php | 5 ++++ lib/reports.php | 64 ++++++++++++++++++++++++++++++++++++++++++--- pages/export.php | 55 ++++++++++++++++++++++---------------- static/js/export.js | 25 +++++++++++++++++- 4 files changed, 122 insertions(+), 27 deletions(-) diff --git a/lang/en_us.php b/lang/en_us.php index aa040a0..5f9250f 100644 --- a/lang/en_us.php +++ b/lang/en_us.php @@ -146,4 +146,9 @@ define("STRINGS", [ "job added" => "Job added.", "job deleted" => "Job deleted.", "show all" => "Show all", + "id" => "ID", + "deleted" => "Deleted", + "groups" => "Groups", + "all jobs" => "All Jobs (export)", + "include deleted" => "Include Deleted" ]); \ No newline at end of file diff --git a/lib/reports.php b/lib/reports.php index b891bc5..4dde41d 100644 --- a/lib/reports.php +++ b/lib/reports.php @@ -64,7 +64,7 @@ if (LOADED) { $user = getUserByUsername($VARS['user']); } if (isset($VARS['type']) && isset($VARS['format'])) { - generateReport($VARS['type'], $VARS['format'], $user, $VARS['startdate'], $VARS['enddate']); + generateReport($VARS['type'], $VARS['format'], $user, $VARS['startdate'], $VARS['enddate'], $VARS['deleted'] == "1"); die(); } else { lang("invalid parameters"); @@ -241,7 +241,61 @@ function getTotalsReport($user = null, $start = null, $end = null) { return $out; } -function getReportData($type, $user = null, $start = null, $end = null) { +function getJobsReport($showdeleted = true) { + global $database; + $jobs = $database->select('jobs', ['jobid (id)', 'jobname (name)', 'jobcode (code)', 'color', 'deleted']); + $all_groups = []; + $client = new GuzzleHttp\Client(); + + $response = $client + ->request('POST', PORTAL_API, [ + 'form_params' => [ + 'key' => PORTAL_KEY, + 'action' => "getgroups" + ] + ]); + if ($response->getStatusCode() > 299) { + sendError($response->getBody()); + } + $resp = json_decode($response->getBody(), TRUE); + if ($resp['status'] == "OK") { + foreach ($resp['groups'] as $g) { + $all_groups[$g['id']] = $g['name']; + } + } + $header = [lang("id", false), lang("name", false), lang("code", false), lang("groups", false)]; + if ($showdeleted) { + $header[] = lang('deleted', false); + } + $out = [$header]; + for ($i = 0; $i < count($jobs); $i++) { + if ($jobs[$i]["deleted"] == 1 && !$showdeleted) { + continue; + } + $groups = $database->select("job_groups", 'groupid', ['jobid' => $jobs[$i]["id"]]); + $groupnames = []; + foreach ($groups as $g) { + if ($g == -1) { + $groupnames[] = lang("all groups", false); + } else { + $groupnames[] = $all_groups[$g]; + } + } + $row = [ + $jobs[$i]["id"], + $jobs[$i]["name"], + $jobs[$i]["code"], + implode("|", $groupnames) + ]; + if ($showdeleted) { + $row[] = $jobs[$i]["deleted"] == 1 ? "X" : ""; + } + $out[] = $row; + } + return $out; +} + +function getReportData($type, $user = null, $start = null, $end = null, $deleted = true) { switch ($type) { case "shifts": return getShiftReport($user); @@ -252,6 +306,8 @@ function getReportData($type, $user = null, $start = null, $end = null) { case "totals": return getTotalsReport($user, $start, $end); break; + case "alljobs": + return getJobsReport($deleted); default: return [["error"]]; } @@ -388,8 +444,8 @@ STYLE echo $out; } -function generateReport($type, $format, $user = null, $start = null, $end = null) { - $data = getReportData($type, $user, $start, $end); +function generateReport($type, $format, $user = null, $start = null, $end = null, $deleted = true) { + $data = getReportData($type, $user, $start, $end, $deleted); switch ($format) { case "ods": dataToODS($data, $type, $user, $start, $end); diff --git a/pages/export.php b/pages/export.php index 7768cbb..08feb4a 100644 --- a/pages/export.php +++ b/pages/export.php @@ -1,5 +1,4 @@
- +
@@ -54,28 +54,39 @@ if (!account_has_permission($_SESSION['username'], "QWIKCLOCK_MANAGE") && !accou

-
- +
+
+ +
+
+ +
-
- +
+
+
+ + + +
-
-
-
- - - +
+
+ +
diff --git a/static/js/export.js b/static/js/export.js index b6e389d..c196ab9 100644 --- a/static/js/export.js +++ b/static/js/export.js @@ -61,4 +61,27 @@ $(function () { }); }); -$('#user-not-managed-text').css('visibility', 'hidden'); \ No newline at end of file +$('#user-not-managed-text').css('visibility', 'hidden'); + +$("#type").change(function () { + switch ($("#type").val()) { + case "shifts": + $('#date-filter').hide('fast'); + $('#user-filter').show('fast'); + $('#deleted-filter').hide('fast'); + break; + case "alljobs": + $('#date-filter').hide('fast'); + $('#user-filter').hide('fast'); + $('#deleted-filter').show('fast'); + break; + default: + $('#date-filter').show('fast'); + $('#user-filter').show('fast'); + $('#deleted-filter').hide('fast'); + break; + } +}); + +$('#date-filter').hide(); +$('#deleted-filter').hide(); \ No newline at end of file