From dd77093df620e850b4b50df261bccce47b015a5d Mon Sep 17 00:00:00 2001 From: sadnub Date: Thu, 28 Jul 2022 12:11:30 -0400 Subject: [PATCH] reporting feature wip --- src/api/reporting.js | 41 ++ src/components/FileBar.vue | 10 + src/components/reporting/MarkdownToolbar.vue | 394 ++++++++++++++++++ .../reporting/ReportTemplateForm.vue | 208 +++++++++ src/components/reporting/ReportsManager.vue | 222 ++++++++++ 5 files changed, 875 insertions(+) create mode 100644 src/api/reporting.js create mode 100644 src/components/reporting/MarkdownToolbar.vue create mode 100644 src/components/reporting/ReportTemplateForm.vue create mode 100644 src/components/reporting/ReportsManager.vue diff --git a/src/api/reporting.js b/src/api/reporting.js new file mode 100644 index 00000000..02872946 --- /dev/null +++ b/src/api/reporting.js @@ -0,0 +1,41 @@ +import axios from "axios"; + +const baseUrl = "/reporting"; + +// client endpoints +export async function fetchReportTemplates() { + const { data } = await axios.get(`${baseUrl}/templates/`); + return data; +} + +export async function fetchReportTemplate(id) { + const { data } = await axios.get(`${baseUrl}/templates/${id}/`); + return data; +} + +export async function saveReportTemplate(payload) { + const { data } = await axios.post(`${baseUrl}/templates/`, payload); + return data; +} + +export async function editReportTemplate(id, payload) { + const { data } = await axios.put(`${baseUrl}/templates/${id}/`, payload); + return data; +} + +export async function removeReportTemplate(id, params = {}) { + const { data } = await axios.delete(`${baseUrl}/templates/${id}/`, { + params: params, + }); + return data; +} + +export async function runReport(id, payload) { + const { data } = await axios.post(`${baseUrl}/templates/${id}/run/`, payload); + return data; +} + +export async function runReportPreview(payload) { + const { data } = await axios.post(`${baseUrl}/templates/preview/`, payload); + return data; +} diff --git a/src/components/FileBar.vue b/src/components/FileBar.vue index 5a21fe85..5e7a25ad 100644 --- a/src/components/FileBar.vue +++ b/src/components/FileBar.vue @@ -86,6 +86,10 @@ Permissions Manager + + + Reports Manager + User Administration @@ -233,6 +237,7 @@ import DeploymentTable from "@/components/clients/DeploymentTable.vue"; import ServerMaintenance from "@/components/modals/core/ServerMaintenance.vue"; import CodeSign from "@/components/modals/coresettings/CodeSign.vue"; import PermissionsManager from "@/components/accounts/PermissionsManager.vue"; +import ReportsManager from "@/components/reporting/ReportsManager"; export default { name: "FileBar", @@ -396,6 +401,11 @@ export default { component: DeploymentTable, }); }, + showReportsManager() { + this.$q.dialog({ + component: ReportsManager, + }); + }, }, }; diff --git a/src/components/reporting/MarkdownToolbar.vue b/src/components/reporting/MarkdownToolbar.vue new file mode 100644 index 00000000..449e1df2 --- /dev/null +++ b/src/components/reporting/MarkdownToolbar.vue @@ -0,0 +1,394 @@ + + + diff --git a/src/components/reporting/ReportTemplateForm.vue b/src/components/reporting/ReportTemplateForm.vue new file mode 100644 index 00000000..29d343fa --- /dev/null +++ b/src/components/reporting/ReportTemplateForm.vue @@ -0,0 +1,208 @@ +