@feedmepos/mf-report 5.18.2-beta.3 → 5.18.2-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,194 @@
1
+ import { defineComponent as z, computed as v, resolveComponent as H, createBlock as g, openBlock as u, withCtx as M, createVNode as h, createElementVNode as R, unref as o, normalizeStyle as Y, normalizeClass as D, createElementBlock as $, Fragment as G, renderList as Q } from "vue";
2
+ import { _ as U } from "./MenuTab.vue_vue_type_script_setup_true_lang-C8oiHuOX.js";
3
+ import { _ as W } from "./DynamicWidget.vue_vue_type_script_setup_true_lang-DKA5lLXB.js";
4
+ import { useRouter as K, useRoute as X } from "vue-router";
5
+ import { _ as Z } from "./Default.vue_vue_type_script_setup_true_lang-DpSgAipe.js";
6
+ import { a as ee } from "./BaseDialog.vue_vue_type_script_setup_true_lang-djyc20Cp.js";
7
+ import { storeToRefs as p } from "pinia";
8
+ import { b as oe, c as te, u as re } from "./NavigationTab.vue_vue_type_script_setup_true_lang-CDxb2Mjg.js";
9
+ import { _ as ae } from "./NoData.vue_vue_type_script_setup_true_lang-Divo8W18.js";
10
+ import { useSnackbar as le, useBreakpoints as ne } from "@feedmepos/ui-library";
11
+ import { u as ie, f as se, e as ue } from "./vue-i18n-CTLGxUiF.js";
12
+ import { u as ce } from "./message-dialog-UoMWOnil.js";
13
+ import { r as pe } from "./i18n-Cif1I9J2.js";
14
+ const me = { class: "sticky top-0 z-10 bg-white" }, De = /* @__PURE__ */ z({
15
+ __name: "ReportView",
16
+ setup(de) {
17
+ const { t: r, te: P } = ie(), m = K(), c = X(), s = le(), { promptMessage: E } = ce(), d = ee(), b = oe(), { promptLoader: I } = se(), { breakpoints: n } = ne(), {
18
+ currentReport: t,
19
+ currentReportId: f,
20
+ isOpenDownloadDialog: O,
21
+ isOpenEmailDialog: J,
22
+ editingReport: N,
23
+ canCreateCustomReport: q,
24
+ customReportQuota: y
25
+ } = p(d), { isOpenAccountingDialog: A } = p(te()), { isOpenScheduleDialog: _ } = p(re()), { disabled: B } = p(ue()), L = v(() => {
26
+ const l = [
27
+ {
28
+ icon: "mail",
29
+ label: r("report.common.emailSchedule"),
30
+ onClick: () => {
31
+ _.value = !0;
32
+ }
33
+ },
34
+ // {
35
+ // icon: "article",
36
+ // label: "Set as Default",
37
+ // onClick: async () => {
38
+ // await promptLoader(async () => {
39
+ // if (currentReport.value) {
40
+ // try {
41
+ // await reportStore.updateDefaultReport(currentReport.value.id)
42
+ // snackbar.open({
43
+ // message: `Set ${currentReport.value.name} as default successful`,
44
+ // type: "success"
45
+ // })
46
+ // } catch (err) {
47
+ // snackbar.open({ message: JSON.stringify(err), type: "error" })
48
+ // }
49
+ // }
50
+ // })
51
+ // }
52
+ // },
53
+ {
54
+ icon: "content_copy",
55
+ label: r("report.common.copyID"),
56
+ onClick: () => {
57
+ t.value && (navigator.clipboard.writeText(f.value), s.open({ message: r("report.messages.copiedReportIdToClipboard"), type: "success" }));
58
+ }
59
+ },
60
+ {
61
+ icon: "report_jobs",
62
+ label: r("report.common.reportStatus"),
63
+ onClick: () => {
64
+ k();
65
+ }
66
+ }
67
+ ];
68
+ return B.value || l.splice(1, 0, {
69
+ icon: "download",
70
+ label: r("report.common.accountingExport"),
71
+ onClick: C
72
+ }), l;
73
+ });
74
+ async function k() {
75
+ b.isOpenJobDialog = !0, await b.getJobs();
76
+ }
77
+ function T() {
78
+ N.value = JSON.parse(JSON.stringify(t.value)), m.push({
79
+ name: "reportEditor",
80
+ query: c.query
81
+ });
82
+ }
83
+ async function j() {
84
+ if (!q.value) {
85
+ let e = `Your current plan only support up to ${y.value} custom reports.`;
86
+ y.value === 0 && (e = "Your current plan does not support custom report."), s.open({
87
+ message: e,
88
+ type: "error"
89
+ });
90
+ return;
91
+ }
92
+ if (!t.value) {
93
+ s.open({ message: "No Widget", type: "error" });
94
+ return;
95
+ }
96
+ if (await E({
97
+ title: `${r("report.messages.saveReport")}`,
98
+ message: r("report.messages.confirmAction", {
99
+ action: r("report.common.duplicate"),
100
+ name: t.value.name
101
+ })
102
+ }) && t.value) {
103
+ const e = JSON.parse(JSON.stringify(t.value));
104
+ e.editable = !0, e.id = "", e.name = `${e.name} duplicate`;
105
+ try {
106
+ await I(async () => {
107
+ const i = await d.createOrUpdateReport(e);
108
+ d.updateCurrentReportId(i.id), m.push({
109
+ name: "reportView",
110
+ params: c.params,
111
+ query: c.query
112
+ });
113
+ });
114
+ } catch (i) {
115
+ console.log(i), s.open({ message: "Failed to clone report", type: "error" });
116
+ }
117
+ }
118
+ }
119
+ function C() {
120
+ A.value = !0;
121
+ }
122
+ function F() {
123
+ t.value && (navigator.clipboard.writeText(f.value), s.open({ message: "Copied report ID to clipboard", type: "success" }));
124
+ }
125
+ const x = v(() => t.value ? t.value.tiles : []), V = v(() => {
126
+ var e;
127
+ let l = [
128
+ (e = t == null ? void 0 : t.value) != null && e.editable ? { label: r("report.common.edit"), value: "edit", isPrimary: !1 } : {
129
+ label: r("report.common.duplicate"),
130
+ value: "duplicate",
131
+ isPrimary: !1
132
+ },
133
+ {
134
+ label: r("report.common.download"),
135
+ value: "download",
136
+ isPrimary: !0,
137
+ prependIcon: "download"
138
+ },
139
+ { label: r("report.schedule.sendEmail"), value: "email", isPrimary: !0 }
140
+ ];
141
+ return n.value.xs && (l = [
142
+ ...l,
143
+ { label: "Send Email", value: "email", isPrimary: !1 },
144
+ { label: "Job Delivery Status", value: "report_jobs", isPrimary: !1 },
145
+ { label: "Email schedule", value: "schedule_email", isPrimary: !1 },
146
+ { label: "Accounting export", value: "export", isPrimary: !1 },
147
+ { label: "Copy ID", value: "content_copy", isPrimary: !1 }
148
+ ], l = l.filter((i) => i.value !== "edit")), l;
149
+ });
150
+ return (l, e) => {
151
+ const i = H("FmPageHead");
152
+ return u(), g(Z, null, {
153
+ default: M(() => {
154
+ var S;
155
+ return [
156
+ h(i, {
157
+ title: o(pe)(o(r), o(P), (S = o(t)) == null ? void 0 : S.name, "other"),
158
+ "back-button": !0,
159
+ actions: V.value,
160
+ "onClick:back": e[0] || (e[0] = (a) => o(m).push({ name: "reports", query: o(c).query })),
161
+ "onClick:action": e[1] || (e[1] = (a) => {
162
+ a === "duplicate" && j(), a === "download" && (O.value = !0), a === "email" && (J.value = !0), a === "edit" && T(), a === "schedule_email" && (_.value = !0), a === "content_copy" && F(), a === "export" && C(), a === "report_jobs" && k();
163
+ })
164
+ }, null, 8, ["title", "actions"]),
165
+ R("div", {
166
+ class: D(`flex flex-col overflow-y-auto ${o(n).xs || o(n).sm ? "pb-20" : ""}`),
167
+ style: Y({ height: `calc(100% - ${o(n).lg || o(n).md ? 72 : 64}px)` })
168
+ }, [
169
+ R("div", me, [
170
+ h(U, {
171
+ "model-value": o(n).lg || o(n).md ? L.value : []
172
+ }, null, 8, ["model-value"])
173
+ ]),
174
+ o(t) && x.value.length > 0 ? (u(), $("div", {
175
+ key: 0,
176
+ class: D(["grid grid-cols-12", o(n).sm || o(n).xs ? "px-3 gap-[16px]" : "px-24 gap-[24px]"])
177
+ }, [
178
+ (u(!0), $(G, null, Q(x.value, (a, w) => (u(), g(W, {
179
+ key: `widget_${o(f)}_${w}`,
180
+ "model-value": a,
181
+ index: w
182
+ }, null, 8, ["model-value", "index"]))), 128))
183
+ ], 2)) : (u(), g(ae, { key: 1 }))
184
+ ], 6)
185
+ ];
186
+ }),
187
+ _: 1
188
+ });
189
+ };
190
+ }
191
+ });
192
+ export {
193
+ De as default
194
+ };
package/dist/app.js CHANGED
@@ -4975,12 +4975,12 @@ const a = {
4975
4975
  {
4976
4976
  path: "/report-view",
4977
4977
  name: "reportView",
4978
- component: () => import("./ReportView-Dzu_N8KD.js")
4978
+ component: () => import("./ReportView-CUEWuq1w.js")
4979
4979
  },
4980
4980
  {
4981
4981
  path: "/report-editor",
4982
4982
  name: "reportEditor",
4983
- component: () => import("./ReportEditor-Db1Ll1hk.js")
4983
+ component: () => import("./ReportEditor-C6TXPHhT.js")
4984
4984
  },
4985
4985
  {
4986
4986
  path: "/report-editor/tile-editor",
@@ -5028,7 +5028,7 @@ const u = {
5028
5028
  "zh-CN": m,
5029
5029
  "th-TH": c,
5030
5030
  "zh-Hant": p
5031
- }, h = e(() => import("./App-CTE1eUtj.js"));
5031
+ }, h = e(() => import("./App-BRjX1jFN.js"));
5032
5032
  export {
5033
5033
  h as FmApp,
5034
5034
  u as i18nMessages,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feedmepos/mf-report",
3
- "version": "5.18.2-beta.3",
3
+ "version": "5.18.2-beta.4",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -1,157 +0,0 @@
1
- import { defineComponent as x, resolveComponent as C, createBlock as T, openBlock as m, unref as r, isRef as Z, withCtx as b, createElementVNode as V, createVNode as $, toDisplayString as D, createTextVNode as M, onMounted as z, watch as g, ref as J, computed as O, onBeforeMount as ee, onBeforeUnmount as te, createElementBlock as w, Fragment as oe } from "vue";
2
- import { detectLocale as h, useCoreStore as k } from "@feedmepos/mf-common";
3
- import { u as re, d as F, a as ae, b as se, c as ne, e as le, f as ue, s as ie, g as ce } from "./vue-i18n-CTLGxUiF.js";
4
- import { storeToRefs as B } from "pinia";
5
- import { u as me, a as de, b as ve } from "./BaseDialog.vue_vue_type_script_setup_true_lang-djyc20Cp.js";
6
- import { _ as pe, u as fe } from "./NavigationTab.vue_vue_type_script_setup_true_lang-CDxb2Mjg.js";
7
- import { u as U } from "./message-dialog-UoMWOnil.js";
8
- import { useRoute as ge, useRouter as he } from "vue-router";
9
- const _e = { class: "fm-typo-en-body-md-400 text-ellipsis overflow-hidden" }, ye = /* @__PURE__ */ x({
10
- __name: "Dialog",
11
- setup(d) {
12
- const { t } = re(), s = U(), { isOpened: a, message: i, title: c } = B(U());
13
- return (v, l) => {
14
- const p = C("FmButton"), _ = C("FmDialog");
15
- return m(), T(_, {
16
- modelValue: r(a),
17
- "onUpdate:modelValue": l[0] || (l[0] = (y) => Z(a) ? a.value = y : null),
18
- overlay: "",
19
- "close-button": !1
20
- }, {
21
- "dialog-header": b(() => [
22
- M(D(r(c)), 1)
23
- ]),
24
- default: b(() => [
25
- V("p", _e, D(r(i)), 1)
26
- ]),
27
- "dialog-footer": b(() => [
28
- l[1] || (l[1] = V("div", { class: "grow" }, null, -1)),
29
- $(p, {
30
- label: r(t)("report.common.cancel"),
31
- variant: "tertiary",
32
- onClick: r(s).dismiss
33
- }, null, 8, ["label", "onClick"]),
34
- $(p, {
35
- label: r(t)("report.common.confirm"),
36
- onClick: r(s).confirm
37
- }, null, 8, ["label", "onClick"])
38
- ]),
39
- _: 1
40
- }, 8, ["modelValue"]);
41
- };
42
- }
43
- }), q = J(h());
44
- function Se() {
45
- const d = (t) => {
46
- switch (q.value = t, t) {
47
- case "zh-CN":
48
- F.locale("zh-cn");
49
- break;
50
- default:
51
- F.locale("en");
52
- break;
53
- }
54
- };
55
- return z(() => {
56
- d(h());
57
- }), g(() => h(), d, { deep: !0, immediate: !0 }), {
58
- currentLocale: q
59
- };
60
- }
61
- F.locale(h() === "zh-CN" ? "zh-cn" : "en");
62
- const be = ["src"], we = ["src"], Le = /* @__PURE__ */ x({
63
- __name: "App",
64
- setup(d) {
65
- const { businessId: t, token: s, country: a } = B(ae()), { sessionUser: i, currentBusiness: c, currentCountry: v, registerSidebarComponent: l } = k(), { getRestaurantAndWarehouse: p, getBusinessSetting: _ } = se(), { getFeatureFlags: y } = ne(), { version: n } = B(me()), { getSettings: j } = le(), { promptLoader: A } = ue(), u = ge(), W = he(), G = O(() => `https://portal-v1.feedmedev.cc/b/${t.value}/report/CLOSE_UP?showHeader=false&country=${a.value.toUpperCase()}&menuOption=business-report&token=${s.value}&v2=true&reportV5Button=true`), K = O(() => `https://report-v4.feedmedev.cc?businessId=${t.value}&country=${a.value}&token=${s.value}&reportV3Button=true`);
66
- g(
67
- [() => c.value, () => i.value, () => v.value],
68
- () => {
69
- var e, f;
70
- const o = ((e = c.value) == null ? void 0 : e.id) ?? "";
71
- c.value && i.value && v.value && (ie(a.value), t.value !== o && (t.value = o), s.value = ((f = i.value) == null ? void 0 : f.token) ?? "", a.value = v.value ?? "", u.query.businessId !== t.value && W.replace({
72
- name: u.name,
73
- params: u.params,
74
- query: { ...u.query, businessId: t.value }
75
- }));
76
- },
77
- { immediate: !0 }
78
- );
79
- function R(o) {
80
- if (typeof o.data == "string")
81
- try {
82
- const e = JSON.parse(o.data);
83
- (e == null ? void 0 : e.token) !== "" && (e == null ? void 0 : e.token) !== void 0 && (s.value = e.token);
84
- } catch (e) {
85
- console.error(e);
86
- }
87
- }
88
- function E(o) {
89
- if (typeof o.data == "string")
90
- try {
91
- const e = JSON.parse(o.data);
92
- (e == null ? void 0 : e.v5) === !0 ? n.value = S.value : (e == null ? void 0 : e.v3) === !0 && (n.value = "v3");
93
- } catch (e) {
94
- console.error(e);
95
- }
96
- }
97
- g(n, () => {
98
- ["v3", "v4"].includes(n.value) ? k().hideSidebarToggle(!0) : k().hideSidebarToggle(!1);
99
- }), ee(() => {
100
- l(pe);
101
- }), z(() => {
102
- console.log("5.18.2-beta.3", !0), window.addEventListener("message", R), window.addEventListener("message", E);
103
- });
104
- const I = de(), L = fe();
105
- te(() => {
106
- window.removeEventListener("message", R), window.removeEventListener("message", E), I.$dispose(), L.$dispose();
107
- });
108
- const { getReports: P, getOverviewReport: H, getReportConfig: N } = I, { getSchema: Q } = ve(), { fetchSchedules: X } = L, { init: Y } = ce(), S = J("v5");
109
- return g(
110
- () => t.value,
111
- () => {
112
- t.value !== "" && A(async () => {
113
- await Y({
114
- apiKey: "MaGoXrEWuEJNpWgKTqseee",
115
- url: "https://flag.feedme.farm/api/v1/",
116
- enableAnalytics: !1,
117
- cacheFlags: !1
118
- });
119
- const o = await N();
120
- S.value = o.version, n.value = S.value, await Promise.all([
121
- y(),
122
- N(),
123
- H(),
124
- P(),
125
- Q(),
126
- X(),
127
- _(),
128
- p(
129
- u.query.locationIds ? JSON.parse(u.query.locationIds) : null
130
- ),
131
- j()
132
- ]);
133
- });
134
- },
135
- {
136
- immediate: !0
137
- }
138
- ), Se(), (o, e) => {
139
- const f = C("router-view");
140
- return m(), w(oe, null, [
141
- $(ye),
142
- r(n) === "v3" ? (m(), w("iframe", {
143
- key: 0,
144
- class: "bg-white h-full w-full",
145
- src: G.value
146
- }, null, 8, be)) : r(n) === "v4" ? (m(), w("iframe", {
147
- key: 1,
148
- class: "bg-white h-full w-full",
149
- src: K.value
150
- }, null, 8, we)) : (m(), T(f, { key: 2 }))
151
- ], 64);
152
- };
153
- }
154
- });
155
- export {
156
- Le as default
157
- };
@@ -1,253 +0,0 @@
1
- import { defineComponent as ee, computed as c, watch as J, resolveComponent as te, createBlock as I, openBlock as v, withCtx as ae, createVNode as E, createElementVNode as L, unref as n, normalizeStyle as re, normalizeClass as N, createElementBlock as $, Fragment as oe, renderList as ne } from "vue";
2
- import { _ as ie } from "./MenuTab.vue_vue_type_script_setup_true_lang-C8oiHuOX.js";
3
- import { _ as se } from "./DynamicWidget.vue_vue_type_script_setup_true_lang-DKA5lLXB.js";
4
- import { useRouter as le, useRoute as ue } from "vue-router";
5
- import { _ as ce } from "./Default.vue_vue_type_script_setup_true_lang-DpSgAipe.js";
6
- import { a as de } from "./BaseDialog.vue_vue_type_script_setup_true_lang-djyc20Cp.js";
7
- import { storeToRefs as _ } from "pinia";
8
- import { b as pe, c as me, u as fe } from "./NavigationTab.vue_vue_type_script_setup_true_lang-CDxb2Mjg.js";
9
- import { _ as ge } from "./NoData.vue_vue_type_script_setup_true_lang-Divo8W18.js";
10
- import { useSnackbar as ve, useBreakpoints as ye } from "@feedmepos/ui-library";
11
- import { u as De, b as Se, f as be, d, e as Re } from "./vue-i18n-CTLGxUiF.js";
12
- import { u as _e } from "./message-dialog-UoMWOnil.js";
13
- import { r as Ie } from "./i18n-Cif1I9J2.js";
14
- const Ce = { class: "sticky top-0 z-10 bg-white" }, Ae = /* @__PURE__ */ ee({
15
- __name: "ReportView",
16
- setup(Oe) {
17
- const { t: i, te: P } = De(), y = le(), t = ue(), m = ve(), { promptMessage: M } = _e(), f = de(), C = pe(), l = Se(), { promptLoader: A } = be(), { breakpoints: u } = ye(), {
18
- currentReport: r,
19
- currentReportId: O,
20
- isOpenDownloadDialog: T,
21
- isOpenEmailDialog: F,
22
- editingReport: j,
23
- canCreateCustomReport: B,
24
- customReportQuota: q
25
- } = _(f), D = c(() => t.query.reportId || O.value), S = c(() => ({
26
- startDate: t.query.startDate ? d(t.query.startDate).startOf("day").toISOString() : void 0,
27
- endDate: t.query.endDate ? d(t.query.endDate).endOf("day").toISOString() : void 0
28
- })), b = c(() => ({
29
- startDate: t.query.compareStartDate ? d(t.query.compareStartDate).startOf("day").toISOString() : void 0,
30
- endDate: t.query.compareEndDate ? d(t.query.compareEndDate).endOf("day").toISOString() : void 0
31
- })), R = c(() => ({
32
- start: t.query.timeStart ? JSON.parse(t.query.timeStart) : void 0,
33
- end: t.query.timeEnd ? JSON.parse(t.query.timeEnd) : void 0
34
- })), k = c(() => t.query.isAllLocation === "true"), Q = c(() => k.value ? l.selectedLocationIds : t.query.locationIds ? JSON.parse(t.query.locationIds) : void 0);
35
- J(
36
- () => f.reports.length,
37
- (a) => {
38
- if (a > 0) {
39
- const e = D.value;
40
- e && e !== O.value && (f.updateCurrentReportId(e), (S.value.startDate || S.value.endDate) && l.setDateRange({
41
- startDate: S.value.startDate,
42
- endDate: S.value.endDate
43
- }), (b.value.startDate || b.value.endDate) && l.setCompareDateRange({
44
- startDate: b.value.startDate,
45
- endDate: b.value.endDate
46
- }), (R.value.start || R.value.end) && l.setTimeRange({
47
- start: R.value.start,
48
- end: R.value.end
49
- }), k.value || l.setSelectedLocationIds(Q.value));
50
- }
51
- },
52
- { immediate: !0 }
53
- ), J(
54
- () => ({
55
- selectedLocationIds: l.selectedLocationIds,
56
- dateRange: l.dateRange,
57
- timeRange: l.timeRange,
58
- compareDateRange: l.compareDateRange
59
- }),
60
- (a) => {
61
- console.log(a);
62
- const e = a.selectedLocationIds, s = a.dateRange, p = a.timeRange, o = a.compareDateRange;
63
- if (!r.value) return;
64
- const g = {
65
- ...t.query,
66
- reportId: r.value.id,
67
- startDate: s.startDate ? d(s.startDate).format("YYYY-MM-DD") : void 0,
68
- endDate: s.endDate ? d(s.endDate).format("YYYY-MM-DD") : void 0,
69
- compareStartDate: o.startDate ? d(o.startDate).format("YYYY-MM-DD") : void 0,
70
- compareEndDate: o.endDate ? d(o.endDate).format("YYYY-MM-DD") : void 0,
71
- timeStart: p.start ? JSON.stringify(p.start) : void 0,
72
- timeEnd: p.end ? JSON.stringify(p.end) : void 0,
73
- locationIds: e.length === l.locations.length ? null : e.length > 0 ? JSON.stringify(e) : void 0,
74
- isAllLocation: String(e.length === l.locations.length)
75
- }, X = JSON.stringify(t.query), Z = JSON.stringify(g);
76
- X !== Z && y.replace({
77
- name: t.name,
78
- params: t.params,
79
- query: g
80
- });
81
- },
82
- { deep: !0 }
83
- );
84
- const { isOpenAccountingDialog: z } = _(me()), { isOpenScheduleDialog: h } = _(fe()), { disabled: H } = _(Re()), G = c(() => {
85
- const a = [
86
- {
87
- icon: "mail",
88
- label: i("report.common.emailSchedule"),
89
- onClick: () => {
90
- h.value = !0;
91
- }
92
- },
93
- // {
94
- // icon: "article",
95
- // label: "Set as Default",
96
- // onClick: async () => {
97
- // await promptLoader(async () => {
98
- // if (currentReport.value) {
99
- // try {
100
- // await reportStore.updateDefaultReport(currentReport.value.id)
101
- // snackbar.open({
102
- // message: `Set ${currentReport.value.name} as default successful`,
103
- // type: "success"
104
- // })
105
- // } catch (err) {
106
- // snackbar.open({ message: JSON.stringify(err), type: "error" })
107
- // }
108
- // }
109
- // })
110
- // }
111
- // },
112
- {
113
- icon: "content_copy",
114
- label: i("report.common.copyID"),
115
- onClick: () => {
116
- r.value && (navigator.clipboard.writeText(D.value), m.open({ message: i("report.messages.copiedReportIdToClipboard"), type: "success" }));
117
- }
118
- },
119
- {
120
- icon: "report_jobs",
121
- label: i("report.common.reportStatus"),
122
- onClick: () => {
123
- w();
124
- }
125
- }
126
- ];
127
- return H.value || a.splice(1, 0, {
128
- icon: "download",
129
- label: i("report.common.accountingExport"),
130
- onClick: x
131
- }), a;
132
- });
133
- async function w() {
134
- C.isOpenJobDialog = !0, await C.getJobs();
135
- }
136
- function U() {
137
- j.value = JSON.parse(JSON.stringify(r.value)), y.push({
138
- name: "reportEditor",
139
- query: t.query
140
- });
141
- }
142
- async function W() {
143
- if (!B.value) {
144
- let e = `Your current plan only support up to ${q.value} custom reports.`;
145
- q.value === 0 && (e = "Your current plan does not support custom report."), m.open({
146
- message: e,
147
- type: "error"
148
- });
149
- return;
150
- }
151
- if (!r.value) {
152
- m.open({ message: "No Widget", type: "error" });
153
- return;
154
- }
155
- if (await M({
156
- title: `${i("report.messages.saveReport")}`,
157
- message: i("report.messages.confirmAction", {
158
- action: i("report.common.duplicate"),
159
- name: r.value.name
160
- })
161
- }) && r.value) {
162
- const e = JSON.parse(JSON.stringify(r.value));
163
- e.editable = !0, e.id = "", e.name = `${e.name} duplicate`;
164
- try {
165
- await A(async () => {
166
- const s = await f.createOrUpdateReport(e);
167
- f.updateCurrentReportId(s.id), y.push({
168
- name: "reportView",
169
- params: { reportId: s.id, ...t.params },
170
- query: t.query
171
- });
172
- });
173
- } catch (s) {
174
- console.log(s), m.open({ message: "Failed to clone report", type: "error" });
175
- }
176
- }
177
- }
178
- function x() {
179
- z.value = !0;
180
- }
181
- function K() {
182
- r.value && (navigator.clipboard.writeText(D.value), m.open({ message: "Copied report ID to clipboard", type: "success" }));
183
- }
184
- const Y = c(() => r.value ? r.value.tiles : []), V = c(() => {
185
- var e;
186
- let a = [
187
- (e = r == null ? void 0 : r.value) != null && e.editable ? { label: i("report.common.edit"), value: "edit", isPrimary: !1 } : {
188
- label: i("report.common.duplicate"),
189
- value: "duplicate",
190
- isPrimary: !1
191
- },
192
- {
193
- label: i("report.common.download"),
194
- value: "download",
195
- isPrimary: !0,
196
- prependIcon: "download"
197
- },
198
- { label: i("report.schedule.sendEmail"), value: "email", isPrimary: !0 }
199
- ];
200
- return u.value.xs && (a = [
201
- ...a,
202
- { label: "Send Email", value: "email", isPrimary: !1 },
203
- { label: "Job Delivery Status", value: "report_jobs", isPrimary: !1 },
204
- { label: "Email schedule", value: "schedule_email", isPrimary: !1 },
205
- { label: "Accounting export", value: "export", isPrimary: !1 },
206
- { label: "Copy ID", value: "content_copy", isPrimary: !1 }
207
- ], a = a.filter((s) => s.value !== "edit")), a;
208
- });
209
- return (a, e) => {
210
- const s = te("FmPageHead");
211
- return v(), I(ce, null, {
212
- default: ae(() => {
213
- var p;
214
- return [
215
- E(s, {
216
- title: n(Ie)(n(i), n(P), (p = n(r)) == null ? void 0 : p.name, "other"),
217
- "back-button": !0,
218
- actions: V.value,
219
- "onClick:back": e[0] || (e[0] = (o) => n(y).push({ name: "reports", query: n(t).query })),
220
- "onClick:action": e[1] || (e[1] = (o) => {
221
- o === "duplicate" && W(), o === "download" && (T.value = !0), o === "email" && (F.value = !0), o === "edit" && U(), o === "schedule_email" && (h.value = !0), o === "content_copy" && K(), o === "export" && x(), o === "report_jobs" && w();
222
- })
223
- }, null, 8, ["title", "actions"]),
224
- L("div", {
225
- class: N(`flex flex-col overflow-y-auto ${n(u).xs || n(u).sm ? "pb-20" : ""}`),
226
- style: re({ height: `calc(100% - ${n(u).lg || n(u).md ? 72 : 64}px)` })
227
- }, [
228
- L("div", Ce, [
229
- E(ie, {
230
- "model-value": n(u).lg || n(u).md ? G.value : []
231
- }, null, 8, ["model-value"])
232
- ]),
233
- n(r) && Y.value.length > 0 ? (v(), $("div", {
234
- key: 0,
235
- class: N(["grid grid-cols-12", n(u).sm || n(u).xs ? "px-3 gap-[16px]" : "px-24 gap-[24px]"])
236
- }, [
237
- (v(!0), $(oe, null, ne(Y.value, (o, g) => (v(), I(se, {
238
- key: `widget_${D.value}_${g}`,
239
- "model-value": o,
240
- index: g
241
- }, null, 8, ["model-value", "index"]))), 128))
242
- ], 2)) : (v(), I(ge, { key: 1 }))
243
- ], 6)
244
- ];
245
- }),
246
- _: 1
247
- });
248
- };
249
- }
250
- });
251
- export {
252
- Ae as default
253
- };