@feedmepos/mf-connect 0.1.98-beta.57 → 0.1.98-beta.59
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.
- package/dist/{App-BO2Eyrad.js → App-EPMWVhRl.js} +8 -8
- package/dist/{AuditLogs-CduIANMo.js → AuditLogs-DGfgg_B0.js} +11 -11
- package/dist/{Bin-QF11ntmi.js → Bin-CAoKk2Qu.js} +8 -8
- package/dist/{Broadcast-BTM4RQ69.js → Broadcast-DeaN6hHR.js} +11 -11
- package/dist/{CampaignAnalytic-ClDZaoE6.js → CampaignAnalytic-DVmErhEK.js} +510 -506
- package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-dZqVizdR.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BVdCt9UN.js} +6 -6
- package/dist/{Card-Q1UzqccH.js → Card-DEaJvF6q.js} +21 -21
- package/dist/{Collections-CJXgekb9.js → Collections-B_G2R-pT.js} +8 -8
- package/dist/{Credit--59mQFS2.js → Credit-Bxbo5feT.js} +12 -12
- package/dist/{DateRangeChip.vue_vue_type_script_setup_true_lang-DgX09eKJ.js → DateRangeChip.vue_vue_type_script_setup_true_lang-CbXXEb_b.js} +1 -1
- package/dist/{EditCampaignSheet.vue_vue_type_script_setup_true_lang-CHZ-Bb7m.js → EditCampaignSheet.vue_vue_type_script_setup_true_lang-CULi_DuX.js} +54 -55
- package/dist/{EffectSheet.vue_vue_type_style_index_0_lang-BDn3DDAD.js → EffectSheet.vue_vue_type_style_index_0_lang-CqTVK4kx.js} +12 -12
- package/dist/{Experience-Co4JhNR2.js → Experience-C5n7DOny.js} +12 -12
- package/dist/{FileSaver.min-5YaSibh7.js → FileSaver.min-CmvwRmjQ.js} +1 -1
- package/dist/{Game-Clajtl0A.js → Game-CV2kGDYk.js} +13 -13
- package/dist/{GiftCardSetup-D8aAX5Hg.js → GiftCardSetup-Du0JaAOY.js} +9 -9
- package/dist/{Grab-f9NlRetE.js → Grab-D-tMg9Xk.js} +9 -9
- package/dist/{ImageInput.vue_vue_type_script_setup_true_lang-D1IrKRz8.js → ImageInput.vue_vue_type_script_setup_true_lang-BzOJjs_7.js} +1 -1
- package/dist/{Index-DkfGmK1a.js → Index-FgWeYPvB.js} +10 -10
- package/dist/{LocationPicker.vue_vue_type_script_setup_true_lang-DnXFpSbG.js → LocationPicker.vue_vue_type_script_setup_true_lang-DZAi88YS.js} +1 -1
- package/dist/{LottieAnimation.vue_vue_type_script_setup_true_lang-DUvd2kQ3.js → LottieAnimation.vue_vue_type_script_setup_true_lang-BzWtxWET.js} +1 -1
- package/dist/{LoyaltyDashboard-Cv5WHOM5.js → LoyaltyDashboard-ovoxVpEh.js} +17 -17
- package/dist/{MainLayout-DPP0WH2J.js → MainLayout-DT2sd1UQ.js} +3 -3
- package/dist/{Marketing-DTzUSHMW.js → Marketing-B8eY1Mz8.js} +4 -4
- package/dist/{MarketingMaterialEdit-EQdRBYe_.js → MarketingMaterialEdit-9lMMK6wr.js} +6 -6
- package/dist/{Member-mmPtQpcJ.js → Member-BBQDC7qH.js} +7 -7
- package/dist/{MemberDetailSheet.vue_vue_type_script_setup_true_lang-CaykyGpo.js → MemberDetailSheet.vue_vue_type_script_setup_true_lang-BfqxFlWd.js} +23 -23
- package/dist/{MemberImportHistory-CosGWK6J.js → MemberImportHistory-2FCTkHkQ.js} +7 -7
- package/dist/{MemberList-B25FChyx.js → MemberList-BsxZ9Caq.js} +14 -14
- package/dist/{MemberTransactions-C1Iwr2PC.js → MemberTransactions-D1vVtuKx.js} +1 -1
- package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-Dy76Hi7S.js → MessageInput.vue_vue_type_script_setup_true_lang-odhcQ_g1.js} +10 -10
- package/dist/{MetricInfoTooltip.vue_vue_type_script_setup_true_lang-BjKY7d9t.js → MetricInfoTooltip.vue_vue_type_script_setup_true_lang-ELm3_clS.js} +1 -1
- package/dist/{Mission-DBFYv752.js → Mission-C28mUqvH.js} +13 -13
- package/dist/{Overview-tQE2krzT.js → Overview-DeBS_7vN.js} +19 -19
- package/dist/{Overview-DkvQdk3p.js → Overview-DyogLHhx.js} +4 -4
- package/dist/{Point-DFGLdpqH.js → Point-Bv9593In.js} +12 -12
- package/dist/{Promotion-B0TPgTRJ.js → Promotion-BQfEbQkK.js} +13 -13
- package/dist/{Queue-Pai-jb9x.js → Queue-BsA_SIPG.js} +11 -11
- package/dist/{Record-BNOdMHa9.js → Record-CaNv-a5D.js} +9 -9
- package/dist/{Review-BUfQIAIP.js → Review-jKKOChip.js} +2 -2
- package/dist/{ReviewFacebookCallback-D6jfeakg.js → ReviewFacebookCallback-DRVDBPBQ.js} +5 -5
- package/dist/{ReviewGoogleCallback-Ctl8DNMj.js → ReviewGoogleCallback-BSUkwi1N.js} +5 -5
- package/dist/{Reward-Bfk-Yt4h.js → Reward-CLvkIAFR.js} +16 -16
- package/dist/{RewardGroup.vue_vue_type_script_setup_true_lang-c48TxM6-.js → RewardGroup.vue_vue_type_script_setup_true_lang-C8We6wGX.js} +12 -12
- package/dist/{RuleGroup.vue_vue_type_script_setup_true_lang-nJoAjC4P.js → RuleGroup.vue_vue_type_script_setup_true_lang-uYcE0jWt.js} +68 -75
- package/dist/{Segment-CzL0P-1e.js → Segment-DpRd1m-s.js} +24 -24
- package/dist/{SendCollectionSheet.vue_vue_type_script_setup_true_lang-DcMiX5P8.js → SendCollectionSheet.vue_vue_type_script_setup_true_lang-B8gyDyD2.js} +13 -13
- package/dist/{SendVoucherSheet.vue_vue_type_script_setup_true_lang-1ADUHq-4.js → SendVoucherSheet.vue_vue_type_script_setup_true_lang-BhMPpjCt.js} +4 -4
- package/dist/{Setting-B8dkbZ7G.js → Setting-d3jG5J7g.js} +14 -14
- package/dist/{SettingAdvertisements-z-Nx97_Q.js → SettingAdvertisements-D7oRdpHs.js} +12 -12
- package/dist/{Settings-Bj7Sgsxv.js → Settings-CEZAzSFA.js} +5 -5
- package/dist/{Store-BibnCePN.js → Store-Df7Oj7Dr.js} +25 -25
- package/dist/{StoreRewards-s_1EUC35.js → StoreRewards-DEQWavMf.js} +15 -15
- package/dist/{StoreTransactions.vue_vue_type_script_setup_true_lang-WqQHMVgu.js → StoreTransactions.vue_vue_type_script_setup_true_lang-BwDMj8_l.js} +24 -24
- package/dist/{TargetLocationInput.vue_vue_type_script_setup_true_lang-Dh3A-USI.js → TargetLocationInput.vue_vue_type_script_setup_true_lang-BSM-9-ni.js} +2 -2
- package/dist/{Tier-DSIHI9NJ.js → Tier-BsBHMN0i.js} +141 -144
- package/dist/{Title-Cl3K5L3e.js → Title-CUj_GhCA.js} +21 -21
- package/dist/{Transaction-CS0rtyng.js → Transaction-8Osuak54.js} +2 -2
- package/dist/{UserRuleGroup.vue_vue_type_script_setup_true_lang-Z-8TTRPC.js → UserRuleGroup.vue_vue_type_script_setup_true_lang-BoZzhVxU.js} +6 -6
- package/dist/{Voucher-CR_w7fqQ.js → Voucher-B9TFCpE0.js} +14 -14
- package/dist/{VoucherEditor.vue_vue_type_script_setup_true_lang-WsAmkz61.js → VoucherEditor.vue_vue_type_script_setup_true_lang-DqwrIEBF.js} +115 -121
- package/dist/{ZodTextField.vue_vue_type_script_setup_true_lang-BBSyDPhQ.js → ZodTextField.vue_vue_type_script_setup_true_lang-BFqTGaiN.js} +2 -2
- package/dist/{app-xUS3J9z2.js → app-JaMrl1Q3.js} +24648 -24383
- package/dist/app.js +1 -1
- package/dist/{base.export-DK6-6AZL.js → base.export-C-XjeO_8.js} +2 -2
- package/dist/{business-DzXKekqM.js → business-qX066mkW.js} +1 -1
- package/dist/{campaign-BLRQqfj4.js → campaign-DAqkMrCh.js} +8 -8
- package/dist/{campaign-B6DZ0Vj0.js → campaign-DcxZvdiX.js} +2 -2
- package/dist/{campaign.enum-DGPxPvey.js → campaign.enum-qJ9W4VTb.js} +1 -1
- package/dist/{campaign.fn-DksaoBjs.js → campaign.fn-C_W3zAbu.js} +162 -162
- package/dist/{collectible.enum-J15b2Jl2.js → collectible.enum-cS4F2xlG.js} +1 -1
- package/dist/{collection.fn-CKReS8ra.js → collection.fn-BsC5X2cl.js} +2 -2
- package/dist/{currency-q6M_hk-7.js → currency-DS_9mv_r.js} +1 -1
- package/dist/{duplicateCampaign-CdvzdrHQ.js → duplicateCampaign-BLynLq03.js} +11 -11
- package/dist/{effect-CyAwjL7O.js → effect-eqhKpbLr.js} +1 -1
- package/dist/{email-addresses-BWcWQegr.js → email-addresses-w9Jhh9jb.js} +2 -2
- package/dist/{helper-DjKrL_4r.js → helper-DnJGcKGJ.js} +1 -1
- package/dist/{index-zbhhxeLU.js → index-3XuFPLyU.js} +7 -7
- package/dist/{index-BkqVgRzY.js → index-BUftE5lT.js} +1 -1
- package/dist/{index-CGtNEWtn.js → index-BfwzTOs6.js} +1 -1
- package/dist/{index-D9K94RyI.js → index-BjgdP3hm.js} +4 -5
- package/dist/{index-xgOeAWKf.js → index-Bou4dwLI.js} +1 -1
- package/dist/{index-DOLjFevA.js → index-BpAcxrzl.js} +1 -1
- package/dist/{index-DIjHN6qv.js → index-C2jIeb7J.js} +1 -1
- package/dist/{index-BRKM71-O.js → index-C3zKTv5Y.js} +3 -3
- package/dist/{index-DKZwHlaX.js → index-C7q0a9DM.js} +1 -1
- package/dist/{index-DunfF8Ht.js → index-C99Zc-Vi.js} +2 -2
- package/dist/{index-D4cliPZ8.js → index-CW90K2Di.js} +5 -5
- package/dist/{index-CuYqhHzD.js → index-CfL9lKtR.js} +2 -2
- package/dist/{index-DSqT-Q4v.js → index-DQu_MaSm.js} +1 -1
- package/dist/{index-gwKw1aNK.js → index-Db5_EuHB.js} +5 -5
- package/dist/{index-D1enMqka.js → index-DwvbwfkH.js} +3 -3
- package/dist/{index-DSpG12an.js → index-E53ZVbQF.js} +6 -6
- package/dist/{index-Cux9v7uP.js → index-iYcCV_pn.js} +3 -3
- package/dist/{index-B02qZDQl.js → index-vUdF4o96.js} +2 -2
- package/dist/{index.esm2017-BUXgQjc4.js → index.esm2017-fD_yn74v.js} +1 -1
- package/dist/{loading-JXWN1mlR.js → loading-D0ISq3i1.js} +1 -1
- package/dist/{lodash-BAs6aERf.js → lodash-DpkQx-iA.js} +1 -1
- package/dist/{member-import-C9T8InBc.js → member-import-BWHMGlEk.js} +1 -1
- package/dist/membership-DUGWL41O.js +274 -0
- package/dist/{money-JjwvMRyS.js → money-IiR3bJjv.js} +1 -1
- package/dist/{number-DN2HZqPg.js → number-DQj3ZaBn.js} +1 -1
- package/dist/{objectid-mKRbFu1z.js → objectid-0QTNkJtB.js} +7 -7
- package/dist/{plugins-BLbiKHAu.js → plugins-Dy6ENTEO.js} +3 -3
- package/dist/{reward-BxZGVpM2.js → reward-C44IabhB.js} +1 -1
- package/dist/{rule-CZafBeMP.js → rule-_e1tnZLU.js} +8 -8
- package/dist/style.css +1 -1
- package/dist/{template-C1a6vJYx.js → template-DTM6E2ym.js} +6 -6
- package/dist/{timezone-C6Gli671.js → timezone-DKvRUDVT.js} +1 -1
- package/dist/{transaction.fn-C4TR2679.js → transaction.fn-BOBilrwc.js} +1 -1
- package/dist/{trigger-CR-PIXPO.js → trigger-BOpVvQBM.js} +5 -5
- package/dist/{useMarketingMaterialActions-BgyP0DyO.js → useMarketingMaterialActions-B1TUZegb.js} +3 -3
- package/dist/{usePagination-CodnCuRS.js → usePagination-D2aiyXMK.js} +1 -1
- package/dist/{user-opdeV_ks.js → user-BgRV4fLO.js} +1 -1
- package/dist/{vue-i18n-CCRzsQae.js → vue-i18n-CA3hRpIg.js} +583 -583
- package/dist/{xlsx-UBnlo3Sn.js → xlsx-5tGMBewT.js} +440 -440
- package/dist/{zod-BEd8s7kE.js → zod-UhNNazW6.js} +1 -1
- package/package.json +3 -4
- package/dist/SelectItems.vue_vue_type_script_setup_true_lang-DK2ZbMVT.js +0 -181
- package/dist/membership-CdIORwnn.js +0 -255
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { u as
|
|
1
|
+
import { defineComponent as z, computed as P, resolveComponent as S, openBlock as r, createBlock as x, withCtx as D, createElementBlock as d, createCommentVNode as v, createElementVNode as s, toDisplayString as u, normalizeClass as K, unref as o, Fragment as L, normalizeStyle as ye, createTextVNode as xe, renderList as ee, createVNode as $, ref as Q, onMounted as ke } from "vue";
|
|
2
|
+
import { u as he } from "./vue-i18n-CA3hRpIg.js";
|
|
3
3
|
import { useCoreStore as we } from "@feedmepos/mf-common";
|
|
4
|
-
import { c as U } from "./index-
|
|
5
|
-
import { u as Re } from "./loading-
|
|
6
|
-
import { s as Me, a as _e } from "./campaign-
|
|
7
|
-
import { C as
|
|
4
|
+
import { c as U } from "./index-C99Zc-Vi.js";
|
|
5
|
+
import { u as Re } from "./loading-D0ISq3i1.js";
|
|
6
|
+
import { s as Me, a as _e } from "./campaign-DAqkMrCh.js";
|
|
7
|
+
import { C as be } from "./timezone-DKvRUDVT.js";
|
|
8
8
|
import { h as Se } from "./moment-D7p2TMB-.js";
|
|
9
9
|
import { s as Ce } from "./index-CuvNtC_M.js";
|
|
10
|
-
import { T as Ie } from "./transaction.fn-
|
|
11
|
-
import { _ as
|
|
10
|
+
import { T as Ie } from "./transaction.fn-BOBilrwc.js";
|
|
11
|
+
import { _ as te } from "./MetricInfoTooltip.vue_vue_type_script_setup_true_lang-ELm3_clS.js";
|
|
12
12
|
import { useRoute as $e, useRouter as Pe } from "vue-router";
|
|
13
13
|
const Oe = {
|
|
14
14
|
state: "populated",
|
|
@@ -49,7 +49,7 @@ const Oe = {
|
|
|
49
49
|
breakdowns: [],
|
|
50
50
|
outcomes: [],
|
|
51
51
|
metrics: []
|
|
52
|
-
},
|
|
52
|
+
}, Be = {
|
|
53
53
|
state: "populated",
|
|
54
54
|
reportRangeLabel: "Unavailable",
|
|
55
55
|
funnel: [],
|
|
@@ -59,7 +59,7 @@ const Oe = {
|
|
|
59
59
|
breakdowns: [],
|
|
60
60
|
outcomes: [],
|
|
61
61
|
metrics: []
|
|
62
|
-
},
|
|
62
|
+
}, Ee = {
|
|
63
63
|
state: "populated",
|
|
64
64
|
reportRangeLabel: "Unavailable",
|
|
65
65
|
funnel: [],
|
|
@@ -69,7 +69,7 @@ const Oe = {
|
|
|
69
69
|
breakdowns: [],
|
|
70
70
|
outcomes: [],
|
|
71
71
|
metrics: []
|
|
72
|
-
},
|
|
72
|
+
}, Ve = {
|
|
73
73
|
state: "populated",
|
|
74
74
|
reportRangeLabel: "Unavailable",
|
|
75
75
|
funnel: [],
|
|
@@ -79,7 +79,7 @@ const Oe = {
|
|
|
79
79
|
breakdowns: [],
|
|
80
80
|
outcomes: [],
|
|
81
81
|
metrics: []
|
|
82
|
-
},
|
|
82
|
+
}, Te = {
|
|
83
83
|
state: "populated",
|
|
84
84
|
reportRangeLabel: "Unavailable",
|
|
85
85
|
funnel: [],
|
|
@@ -89,7 +89,7 @@ const Oe = {
|
|
|
89
89
|
breakdowns: [],
|
|
90
90
|
outcomes: [],
|
|
91
91
|
metrics: []
|
|
92
|
-
},
|
|
92
|
+
}, Ne = {
|
|
93
93
|
VOUCHER: {
|
|
94
94
|
label: "Voucher",
|
|
95
95
|
icon: "confirmation_number",
|
|
@@ -112,33 +112,33 @@ const Oe = {
|
|
|
112
112
|
label: "Game",
|
|
113
113
|
icon: "sports_esports",
|
|
114
114
|
objective: "Member engagement",
|
|
115
|
-
report:
|
|
115
|
+
report: Be
|
|
116
116
|
},
|
|
117
117
|
COIN: {
|
|
118
118
|
label: "Point",
|
|
119
119
|
icon: "stars",
|
|
120
120
|
objective: "Member engagement",
|
|
121
|
-
report:
|
|
121
|
+
report: Ee
|
|
122
122
|
},
|
|
123
123
|
POINT: {
|
|
124
124
|
label: "Experience",
|
|
125
125
|
icon: "trending_up",
|
|
126
126
|
objective: "Member engagement",
|
|
127
|
-
report:
|
|
127
|
+
report: Ve
|
|
128
128
|
},
|
|
129
129
|
CREDIT: {
|
|
130
130
|
label: "Credit",
|
|
131
131
|
icon: "account_balance_wallet",
|
|
132
132
|
objective: "Member engagement",
|
|
133
|
-
report:
|
|
133
|
+
report: Te
|
|
134
134
|
}
|
|
135
135
|
};
|
|
136
136
|
function Ue(t) {
|
|
137
|
-
return
|
|
137
|
+
return Ne[t];
|
|
138
138
|
}
|
|
139
139
|
function _(t, l, e = l) {
|
|
140
|
-
const
|
|
141
|
-
return `${
|
|
140
|
+
const a = t ?? 0;
|
|
141
|
+
return `${a.toLocaleString()} ${a === 1 ? e : l}`;
|
|
142
142
|
}
|
|
143
143
|
function m(t) {
|
|
144
144
|
return (t ?? 0).toLocaleString();
|
|
@@ -153,12 +153,13 @@ function B(t, l) {
|
|
|
153
153
|
const e = l ?? 0;
|
|
154
154
|
return e ? Math.round((t ?? 0) / e * 1e3) / 10 : 0;
|
|
155
155
|
}
|
|
156
|
-
function
|
|
156
|
+
function N(t) {
|
|
157
157
|
const l = Se(t);
|
|
158
158
|
return l.isValid() ? l.format("D MMM YYYY") : t;
|
|
159
159
|
}
|
|
160
|
-
function
|
|
161
|
-
|
|
160
|
+
function Ae(t, l, e) {
|
|
161
|
+
var h;
|
|
162
|
+
const { metrics: a, scope: i } = l, b = a.rewardValueBasis === "FACE_VALUE", p = b ? "Redeemed Face Value" : "Reward Value Used", g = l.redemptionBreakdown ?? {
|
|
162
163
|
member: {
|
|
163
164
|
redeemedMembers: 0,
|
|
164
165
|
redeemedVouchers: 0,
|
|
@@ -170,34 +171,34 @@ function Fe(t, l, e) {
|
|
|
170
171
|
voucherUses: 0,
|
|
171
172
|
completedBills: 0
|
|
172
173
|
}
|
|
173
|
-
}, { member:
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
),
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
),
|
|
180
|
-
|
|
181
|
-
|
|
174
|
+
}, { member: n, guest: k } = g, c = B(
|
|
175
|
+
n.redeemedMembers,
|
|
176
|
+
a.distributedMembers
|
|
177
|
+
), C = B(
|
|
178
|
+
a.redeemedVouchers,
|
|
179
|
+
a.distributedVouchers
|
|
180
|
+
), y = a.completedBills == null ? null : a.completedBills === 0 ? 0 : a.rewardValueUsed / a.completedBills, E = a.completedBills == null || a.exactSales == null ? null : a.completedBills === 0 ? 0 : a.exactSales / a.completedBills, M = B(
|
|
181
|
+
a.expiredUnusedVouchers,
|
|
182
|
+
a.distributedVouchers
|
|
182
183
|
);
|
|
183
184
|
return {
|
|
184
185
|
...t,
|
|
185
|
-
reportRangeLabel: i.startDate && i.endDate ? `${
|
|
186
|
+
reportRangeLabel: i.startDate && i.endDate ? `${N(i.startDate)} – ${N(i.endDate)}` : "Unavailable",
|
|
186
187
|
audienceLabel: void 0,
|
|
187
188
|
funnelHeadline: {
|
|
188
189
|
key: "voucherUtilization",
|
|
189
190
|
label: "Redemption rate",
|
|
190
|
-
value: `${
|
|
191
|
+
value: `${C}%`,
|
|
191
192
|
helper: "Distinct redeemed vouchers divided by distributed vouchers"
|
|
192
193
|
},
|
|
193
|
-
funnelSummary: `${m(
|
|
194
|
-
|
|
194
|
+
funnelSummary: `${m(a.redeemedVouchers)} of ${m(
|
|
195
|
+
a.distributedVouchers
|
|
195
196
|
)} distributed vouchers redeemed. ${_(
|
|
196
|
-
|
|
197
|
+
n.voucherUses,
|
|
197
198
|
"member voucher uses",
|
|
198
199
|
"member voucher use"
|
|
199
200
|
)} and ${_(
|
|
200
|
-
|
|
201
|
+
k.voucherUses,
|
|
201
202
|
"guest voucher uses",
|
|
202
203
|
"guest voucher use"
|
|
203
204
|
)}.`,
|
|
@@ -207,36 +208,36 @@ function Fe(t, l, e) {
|
|
|
207
208
|
key: "distributed",
|
|
208
209
|
label: "Distributed",
|
|
209
210
|
membersLabel: _(
|
|
210
|
-
|
|
211
|
+
a.distributedMembers,
|
|
211
212
|
"members",
|
|
212
213
|
"member"
|
|
213
214
|
),
|
|
214
215
|
unitsLabel: _(
|
|
215
|
-
|
|
216
|
+
a.distributedVouchers,
|
|
216
217
|
"vouchers",
|
|
217
218
|
"voucher"
|
|
218
219
|
),
|
|
219
|
-
valueLabel: R(
|
|
220
|
+
valueLabel: R(a.distributedFixedValue),
|
|
220
221
|
helper: "Unique members who received at least one voucher"
|
|
221
222
|
},
|
|
222
223
|
{
|
|
223
224
|
key: "redeemed",
|
|
224
225
|
label: "Redeemed",
|
|
225
|
-
membersLabel: _(
|
|
226
|
+
membersLabel: _(n.redeemedMembers, "members", "member"),
|
|
226
227
|
unitsLabel: _(
|
|
227
|
-
|
|
228
|
+
n.voucherUses,
|
|
228
229
|
"voucher uses",
|
|
229
230
|
"voucher use"
|
|
230
231
|
),
|
|
231
|
-
ratePct:
|
|
232
|
-
rateLabel: `${
|
|
232
|
+
ratePct: c,
|
|
233
|
+
rateLabel: `${c}% of distributed members`,
|
|
233
234
|
helper: "Distinct identified members who used the voucher"
|
|
234
235
|
},
|
|
235
236
|
{
|
|
236
237
|
key: "completedBills",
|
|
237
238
|
label: "Completed bills",
|
|
238
|
-
primaryLabel: _(
|
|
239
|
-
|
|
239
|
+
primaryLabel: n.completedBills == null ? "Unavailable" : _(
|
|
240
|
+
n.completedBills,
|
|
240
241
|
"completed bills",
|
|
241
242
|
"completed bill"
|
|
242
243
|
),
|
|
@@ -250,12 +251,12 @@ function Fe(t, l, e) {
|
|
|
250
251
|
key: "guestRedeemed",
|
|
251
252
|
label: "Redeemed",
|
|
252
253
|
primaryLabel: _(
|
|
253
|
-
|
|
254
|
+
k.voucherUses,
|
|
254
255
|
"voucher uses",
|
|
255
256
|
"voucher use"
|
|
256
257
|
),
|
|
257
258
|
unitsLabel: _(
|
|
258
|
-
|
|
259
|
+
k.redeemedVouchers,
|
|
259
260
|
"redeemed vouchers",
|
|
260
261
|
"redeemed voucher"
|
|
261
262
|
),
|
|
@@ -264,8 +265,8 @@ function Fe(t, l, e) {
|
|
|
264
265
|
{
|
|
265
266
|
key: "guestCompletedBills",
|
|
266
267
|
label: "Completed bills",
|
|
267
|
-
primaryLabel: _(
|
|
268
|
-
|
|
268
|
+
primaryLabel: k.completedBills == null ? "Unavailable" : _(
|
|
269
|
+
k.completedBills,
|
|
269
270
|
"completed bills",
|
|
270
271
|
"completed bill"
|
|
271
272
|
),
|
|
@@ -277,31 +278,31 @@ function Fe(t, l, e) {
|
|
|
277
278
|
{
|
|
278
279
|
key: "distributedMembers",
|
|
279
280
|
label: "Distributed Members",
|
|
280
|
-
value: (
|
|
281
|
-
sub: _(
|
|
281
|
+
value: (a.distributedMembers ?? 0).toLocaleString(),
|
|
282
|
+
sub: _(a.distributedVouchers, "vouchers")
|
|
282
283
|
},
|
|
283
284
|
{
|
|
284
285
|
key: "redemptionRate",
|
|
285
286
|
label: "Redemption Rate",
|
|
286
|
-
value: `${
|
|
287
|
+
value: `${C}%`,
|
|
287
288
|
sub: "of distributed vouchers"
|
|
288
289
|
},
|
|
289
290
|
{
|
|
290
|
-
key: "exactSales",
|
|
291
|
-
label: "Exact Sales",
|
|
292
|
-
value: R(
|
|
293
|
-
sub: _(
|
|
291
|
+
key: b ? "paymentVoucherUses" : "exactSales",
|
|
292
|
+
label: b ? "Payment Voucher Uses" : "Exact Sales",
|
|
293
|
+
value: b ? m(a.voucherUses) : R(a.exactSales),
|
|
294
|
+
sub: b ? "Recorded voucher redemptions" : a.completedBills == null ? "Bill attribution unavailable" : _(a.completedBills, "completed bills")
|
|
294
295
|
},
|
|
295
296
|
{
|
|
296
297
|
key: "rewardValueUsed",
|
|
297
|
-
label:
|
|
298
|
-
value: R(
|
|
299
|
-
sub: "voucher discount used"
|
|
298
|
+
label: p,
|
|
299
|
+
value: R(a.rewardValueUsed),
|
|
300
|
+
sub: b ? "Voucher uses × configured face value" : "voucher discount used"
|
|
300
301
|
},
|
|
301
302
|
{
|
|
302
303
|
key: "unusedVoucherValue",
|
|
303
304
|
label: "Unused Voucher Value",
|
|
304
|
-
value: R(
|
|
305
|
+
value: R(a.unusedVoucherValue),
|
|
305
306
|
sub: "issued, not yet redeemed"
|
|
306
307
|
}
|
|
307
308
|
],
|
|
@@ -313,89 +314,92 @@ function Fe(t, l, e) {
|
|
|
313
314
|
"Voucher uses",
|
|
314
315
|
"Completed bills",
|
|
315
316
|
"Exact sales",
|
|
316
|
-
"Reward value used"
|
|
317
|
+
b ? "Redeemed face value" : "Reward value used"
|
|
317
318
|
],
|
|
318
|
-
rows: l.performanceDetails.map((
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
319
|
+
rows: l.performanceDetails.map((A) => {
|
|
320
|
+
var ae;
|
|
321
|
+
return {
|
|
322
|
+
name: A.restaurantName,
|
|
323
|
+
cells: [
|
|
324
|
+
A.redeemedMembers.toLocaleString(),
|
|
325
|
+
A.voucherUses.toLocaleString(),
|
|
326
|
+
((ae = A.completedBills) == null ? void 0 : ae.toLocaleString()) ?? "—",
|
|
327
|
+
R(A.exactSales),
|
|
328
|
+
R(A.rewardValueUsed)
|
|
329
|
+
]
|
|
330
|
+
};
|
|
331
|
+
})
|
|
328
332
|
},
|
|
329
333
|
outcomes: [
|
|
330
334
|
{
|
|
331
335
|
key: "exactSales",
|
|
332
336
|
label: "Exact Sales",
|
|
333
|
-
value: R(
|
|
337
|
+
value: R(a.exactSales)
|
|
334
338
|
},
|
|
335
339
|
{
|
|
336
340
|
key: "attributedBills",
|
|
337
341
|
label: "Attributed Bills",
|
|
338
|
-
value:
|
|
342
|
+
value: ((h = a.completedBills) == null ? void 0 : h.toLocaleString()) ?? "—"
|
|
339
343
|
},
|
|
340
344
|
{
|
|
341
345
|
key: "rewardValueUsed",
|
|
342
|
-
label:
|
|
343
|
-
value: R(
|
|
346
|
+
label: p,
|
|
347
|
+
value: R(a.rewardValueUsed)
|
|
344
348
|
},
|
|
345
349
|
{
|
|
346
350
|
key: "averageBillValue",
|
|
347
351
|
label: "Average Bill Value",
|
|
348
|
-
value: R(
|
|
352
|
+
value: R(E)
|
|
349
353
|
}
|
|
350
354
|
],
|
|
351
355
|
metrics: [
|
|
352
356
|
{
|
|
353
357
|
key: "memberRedemptionRate",
|
|
354
358
|
label: "Member Redemption Rate",
|
|
355
|
-
value: `${
|
|
359
|
+
value: `${c}%`,
|
|
356
360
|
helper: "Redeemed members ÷ distributed members"
|
|
357
361
|
},
|
|
358
362
|
{
|
|
359
363
|
key: "voucherUtilizationRate",
|
|
360
364
|
label: "Voucher Utilization Rate",
|
|
361
|
-
value: `${
|
|
365
|
+
value: `${C}%`,
|
|
362
366
|
helper: "Redeemed vouchers ÷ distributed vouchers"
|
|
363
367
|
},
|
|
364
368
|
{
|
|
365
369
|
key: "averageDiscountPerBill",
|
|
366
370
|
label: "Average Discount per Bill",
|
|
367
|
-
value: R(
|
|
371
|
+
value: R(y),
|
|
368
372
|
helper: "Reward value used ÷ completed bills"
|
|
369
373
|
},
|
|
370
374
|
{
|
|
371
375
|
key: "averageBillValue",
|
|
372
376
|
label: "Average Bill Value",
|
|
373
|
-
value: R(
|
|
377
|
+
value: R(E),
|
|
374
378
|
helper: "Exact sales ÷ completed bills"
|
|
375
379
|
},
|
|
376
380
|
{
|
|
377
381
|
key: "breakageRate",
|
|
378
382
|
label: "Breakage Rate to date",
|
|
379
|
-
value: `${
|
|
383
|
+
value: `${M}%`,
|
|
380
384
|
helper: "Expired unused vouchers ÷ distributed vouchers"
|
|
381
385
|
}
|
|
382
386
|
]
|
|
383
387
|
};
|
|
384
388
|
}
|
|
385
|
-
function
|
|
386
|
-
const { metrics: e, scope:
|
|
389
|
+
function Fe(t, l) {
|
|
390
|
+
const { metrics: e, scope: a } = l, i = B(
|
|
387
391
|
e.memberBills,
|
|
388
392
|
e.attributedBills
|
|
389
|
-
),
|
|
393
|
+
), b = B(
|
|
390
394
|
e.nonMemberBills,
|
|
391
395
|
e.attributedBills
|
|
392
|
-
),
|
|
396
|
+
), p = B(
|
|
393
397
|
e.memberSales,
|
|
394
398
|
e.exactSales
|
|
395
|
-
),
|
|
399
|
+
), g = e.attributedBills ? e.promotionValueUsed / e.attributedBills : 0, n = e.attributedBills ? e.exactSales / e.attributedBills : 0;
|
|
396
400
|
return {
|
|
397
401
|
...t,
|
|
398
|
-
reportRangeLabel:
|
|
402
|
+
reportRangeLabel: a.startDate && a.endDate ? `${N(a.startDate)} – ${N(a.endDate)}` : "Unavailable",
|
|
399
403
|
audienceLabel: void 0,
|
|
400
404
|
funnel: [],
|
|
401
405
|
cards: [],
|
|
@@ -407,9 +411,9 @@ function Ae(t, l) {
|
|
|
407
411
|
memberSales: R(e.memberSales),
|
|
408
412
|
nonMemberSales: R(e.nonMemberSales),
|
|
409
413
|
memberBillSharePct: i,
|
|
410
|
-
nonMemberBillSharePct:
|
|
411
|
-
memberSalesSharePct:
|
|
412
|
-
summary: `Members account for ${i}% of attributed bills and ${
|
|
414
|
+
nonMemberBillSharePct: b,
|
|
415
|
+
memberSalesSharePct: p,
|
|
416
|
+
summary: `Members account for ${i}% of attributed bills and ${p}% of attributed sales.`
|
|
413
417
|
},
|
|
414
418
|
breakdown: {
|
|
415
419
|
dimension: "Outlet",
|
|
@@ -421,15 +425,15 @@ function Ae(t, l) {
|
|
|
421
425
|
"Exact sales",
|
|
422
426
|
"Promotion value used"
|
|
423
427
|
],
|
|
424
|
-
rows: l.performanceDetails.map((
|
|
425
|
-
name:
|
|
428
|
+
rows: l.performanceDetails.map((k) => ({
|
|
429
|
+
name: k.restaurantName,
|
|
426
430
|
cells: [
|
|
427
|
-
m(
|
|
428
|
-
m(
|
|
429
|
-
m(
|
|
430
|
-
m(
|
|
431
|
-
R(
|
|
432
|
-
R(
|
|
431
|
+
m(k.appliedMembers),
|
|
432
|
+
m(k.memberBills),
|
|
433
|
+
m(k.nonMemberBills),
|
|
434
|
+
m(k.attributedBills),
|
|
435
|
+
R(k.exactSales),
|
|
436
|
+
R(k.promotionValueUsed)
|
|
433
437
|
]
|
|
434
438
|
}))
|
|
435
439
|
},
|
|
@@ -452,7 +456,7 @@ function Ae(t, l) {
|
|
|
452
456
|
{
|
|
453
457
|
key: "averageBillValue",
|
|
454
458
|
label: "Average Bill Value",
|
|
455
|
-
value: R(
|
|
459
|
+
value: R(n)
|
|
456
460
|
}
|
|
457
461
|
],
|
|
458
462
|
metrics: [
|
|
@@ -465,38 +469,38 @@ function Ae(t, l) {
|
|
|
465
469
|
{
|
|
466
470
|
key: "nonMemberApplicationShare",
|
|
467
471
|
label: "Non-member Application Share",
|
|
468
|
-
value: `${
|
|
472
|
+
value: `${b}%`,
|
|
469
473
|
helper: "Non-member bills ÷ attributed bills"
|
|
470
474
|
},
|
|
471
475
|
{
|
|
472
476
|
key: "memberSalesShare",
|
|
473
477
|
label: "Member Sales Share",
|
|
474
|
-
value: `${
|
|
478
|
+
value: `${p}%`,
|
|
475
479
|
helper: "Member sales ÷ exact sales"
|
|
476
480
|
},
|
|
477
481
|
{
|
|
478
482
|
key: "averageDiscountPerBill",
|
|
479
483
|
label: "Average Discount per Bill",
|
|
480
|
-
value: R(
|
|
484
|
+
value: R(g),
|
|
481
485
|
helper: "Promotion value used ÷ attributed bills"
|
|
482
486
|
},
|
|
483
487
|
{
|
|
484
488
|
key: "averageBillValue",
|
|
485
489
|
label: "Average Bill Value",
|
|
486
|
-
value: R(
|
|
490
|
+
value: R(n),
|
|
487
491
|
helper: "Exact sales ÷ attributed bills"
|
|
488
492
|
}
|
|
489
493
|
]
|
|
490
494
|
};
|
|
491
495
|
}
|
|
492
496
|
function qe(t, l) {
|
|
493
|
-
const { metrics: e, scope:
|
|
497
|
+
const { metrics: e, scope: a } = l, i = e.participants ? e.stampsEarned / e.participants : 0, b = Math.max(
|
|
494
498
|
e.completionEvents - e.completedMembers,
|
|
495
499
|
0
|
|
496
500
|
);
|
|
497
501
|
return {
|
|
498
502
|
...t,
|
|
499
|
-
reportRangeLabel:
|
|
503
|
+
reportRangeLabel: a.startDate && a.endDate ? `${N(a.startDate)} – ${N(a.endDate)}` : "Unavailable",
|
|
500
504
|
funnel: [],
|
|
501
505
|
cards: [
|
|
502
506
|
{
|
|
@@ -547,13 +551,13 @@ function qe(t, l) {
|
|
|
547
551
|
"Issue transactions",
|
|
548
552
|
"Quantity issued"
|
|
549
553
|
],
|
|
550
|
-
rows: l.rewards.map((
|
|
551
|
-
name:
|
|
554
|
+
rows: l.rewards.map((p) => ({
|
|
555
|
+
name: p.rewardName,
|
|
552
556
|
cells: [
|
|
553
|
-
|
|
554
|
-
m(
|
|
555
|
-
m(
|
|
556
|
-
m(
|
|
557
|
+
p.rewardType,
|
|
558
|
+
m(p.recipients),
|
|
559
|
+
m(p.issuanceTransactions),
|
|
560
|
+
m(p.quantityIssued)
|
|
557
561
|
]
|
|
558
562
|
}))
|
|
559
563
|
}
|
|
@@ -564,12 +568,12 @@ function qe(t, l) {
|
|
|
564
568
|
breakdown: {
|
|
565
569
|
dimension: "Outlet",
|
|
566
570
|
columns: ["Participants", "Stamps earned", "Completion events"],
|
|
567
|
-
rows: l.performanceDetails.map((
|
|
568
|
-
name:
|
|
571
|
+
rows: l.performanceDetails.map((p) => ({
|
|
572
|
+
name: p.restaurantName || "Unattributed / online",
|
|
569
573
|
cells: [
|
|
570
|
-
m(
|
|
571
|
-
m(
|
|
572
|
-
m(
|
|
574
|
+
m(p.participants),
|
|
575
|
+
m(p.stampsEarned),
|
|
576
|
+
m(p.completionEvents)
|
|
573
577
|
]
|
|
574
578
|
}))
|
|
575
579
|
}
|
|
@@ -611,20 +615,20 @@ function qe(t, l) {
|
|
|
611
615
|
{
|
|
612
616
|
key: "repeatCompletionEvents",
|
|
613
617
|
label: "Repeat Completion Events",
|
|
614
|
-
value: m(
|
|
618
|
+
value: m(b),
|
|
615
619
|
helper: "Completion events beyond the first completion per member"
|
|
616
620
|
}
|
|
617
621
|
]
|
|
618
622
|
};
|
|
619
623
|
}
|
|
620
624
|
function je(t, l) {
|
|
621
|
-
const { metrics: e, scope:
|
|
625
|
+
const { metrics: e, scope: a } = l, i = B(e.players, e.tokenRecipients), b = B(e.plays, e.tokensIssued), p = B(
|
|
622
626
|
e.rewardRecipients,
|
|
623
627
|
e.players
|
|
624
|
-
),
|
|
628
|
+
), g = e.players ? e.plays / e.players : 0;
|
|
625
629
|
return {
|
|
626
630
|
...t,
|
|
627
|
-
reportRangeLabel:
|
|
631
|
+
reportRangeLabel: a.startDate && a.endDate ? `${N(a.startDate)} – ${N(a.endDate)}` : "Unavailable",
|
|
628
632
|
audienceLabel: void 0,
|
|
629
633
|
funnel: [
|
|
630
634
|
{
|
|
@@ -632,7 +636,7 @@ function je(t, l) {
|
|
|
632
636
|
label: "Token recipients",
|
|
633
637
|
membersLabel: _(e.tokenRecipients, "members"),
|
|
634
638
|
unitsLabel: _(e.tokensIssued, "tokens"),
|
|
635
|
-
extra: `${m(e.plays)} plays · ${
|
|
639
|
+
extra: `${m(e.plays)} plays · ${b}% token utilization`,
|
|
636
640
|
helper: "Distinct members who received at least one game token"
|
|
637
641
|
},
|
|
638
642
|
{
|
|
@@ -652,8 +656,8 @@ function je(t, l) {
|
|
|
652
656
|
e.rewardIssueTransactions,
|
|
653
657
|
"reward issue transactions"
|
|
654
658
|
),
|
|
655
|
-
ratePct:
|
|
656
|
-
rateLabel: `${
|
|
659
|
+
ratePct: p,
|
|
660
|
+
rateLabel: `${p}% of players`,
|
|
657
661
|
helper: "Distinct players receiving at least one Reward Pool reward"
|
|
658
662
|
}
|
|
659
663
|
],
|
|
@@ -697,13 +701,13 @@ function je(t, l) {
|
|
|
697
701
|
"Issue transactions",
|
|
698
702
|
"Quantity issued"
|
|
699
703
|
],
|
|
700
|
-
rows: l.rewards.map((
|
|
701
|
-
name:
|
|
704
|
+
rows: l.rewards.map((n) => ({
|
|
705
|
+
name: n.rewardName || "Unnamed reward",
|
|
702
706
|
cells: [
|
|
703
|
-
|
|
704
|
-
m(
|
|
705
|
-
m(
|
|
706
|
-
m(
|
|
707
|
+
n.rewardType,
|
|
708
|
+
m(n.recipients),
|
|
709
|
+
m(n.issuanceTransactions),
|
|
710
|
+
m(n.quantityIssued)
|
|
707
711
|
]
|
|
708
712
|
}))
|
|
709
713
|
}
|
|
@@ -714,11 +718,11 @@ function je(t, l) {
|
|
|
714
718
|
breakdown: {
|
|
715
719
|
dimension: "Outlet",
|
|
716
720
|
columns: ["Recipients", "Tokens issued"],
|
|
717
|
-
rows: l.tokenDistributionDetails.map((
|
|
718
|
-
name:
|
|
721
|
+
rows: l.tokenDistributionDetails.map((n) => ({
|
|
722
|
+
name: n.restaurantName || "Unattributed / online",
|
|
719
723
|
cells: [
|
|
720
|
-
m(
|
|
721
|
-
m(
|
|
724
|
+
m(n.recipients),
|
|
725
|
+
m(n.tokensIssued)
|
|
722
726
|
]
|
|
723
727
|
}))
|
|
724
728
|
}
|
|
@@ -746,19 +750,19 @@ function je(t, l) {
|
|
|
746
750
|
{
|
|
747
751
|
key: "tokenUtilizationRate",
|
|
748
752
|
label: "Token Utilization Rate",
|
|
749
|
-
value: `${
|
|
753
|
+
value: `${b}%`,
|
|
750
754
|
helper: "Plays ÷ tokens issued"
|
|
751
755
|
},
|
|
752
756
|
{
|
|
753
757
|
key: "rewardRecipientRate",
|
|
754
758
|
label: "Reward Recipient Rate",
|
|
755
|
-
value: `${
|
|
759
|
+
value: `${p}%`,
|
|
756
760
|
helper: "Reward recipients ÷ players"
|
|
757
761
|
},
|
|
758
762
|
{
|
|
759
763
|
key: "averagePlaysPerPlayer",
|
|
760
764
|
label: "Average Plays per Player",
|
|
761
|
-
value:
|
|
765
|
+
value: g.toLocaleString("en-MY", {
|
|
762
766
|
maximumFractionDigits: 2
|
|
763
767
|
}),
|
|
764
768
|
helper: "Plays ÷ players"
|
|
@@ -767,68 +771,68 @@ function je(t, l) {
|
|
|
767
771
|
};
|
|
768
772
|
}
|
|
769
773
|
const ze = "Members can appear under more than one source, so total share may add to more than 100%.";
|
|
770
|
-
function
|
|
774
|
+
function W(t, l) {
|
|
771
775
|
return l ? R(t ?? 0) : m(t);
|
|
772
776
|
}
|
|
773
|
-
function
|
|
777
|
+
function Z(t, l) {
|
|
774
778
|
return t[l] ?? 0;
|
|
775
779
|
}
|
|
776
|
-
function
|
|
777
|
-
const { metrics:
|
|
780
|
+
function re(t, l, e) {
|
|
781
|
+
const { metrics: a, scope: i } = l, b = a.recipients ? Z(a, e.quantityKey) / a.recipients : 0, p = a.issuanceTransactions ? Z(a, e.quantityKey) / a.issuanceTransactions : 0, g = [
|
|
778
782
|
"Recipients",
|
|
779
783
|
...e.includeSourceRecipientShare ? ["Recipient share"] : [],
|
|
780
784
|
"Issuance transactions",
|
|
781
785
|
e.quantityLabel
|
|
782
|
-
],
|
|
786
|
+
], n = l.sourceDetails.map((c) => ({
|
|
783
787
|
name: c.source ? Ce(Ie.getReason(c.source)) : "Unknown",
|
|
784
788
|
cells: [
|
|
785
789
|
m(c.recipients),
|
|
786
|
-
...e.includeSourceRecipientShare ? [`${B(c.recipients,
|
|
790
|
+
...e.includeSourceRecipientShare ? [`${B(c.recipients, a.recipients)}%`] : [],
|
|
787
791
|
m(c.issuanceTransactions),
|
|
788
|
-
|
|
789
|
-
|
|
792
|
+
W(
|
|
793
|
+
Z(c, e.quantityKey),
|
|
790
794
|
e.currency
|
|
791
795
|
)
|
|
792
796
|
]
|
|
793
|
-
})),
|
|
797
|
+
})), k = [
|
|
794
798
|
{
|
|
795
799
|
key: "averagePerRecipient",
|
|
796
800
|
label: `Average ${e.quantityName} per Recipient`,
|
|
797
|
-
value:
|
|
801
|
+
value: W(b, e.currency),
|
|
798
802
|
helper: `${e.quantityLabel} ÷ recipients`
|
|
799
803
|
},
|
|
800
804
|
{
|
|
801
805
|
key: "averagePerIssue",
|
|
802
806
|
label: `Average ${e.quantityName} per Issue`,
|
|
803
|
-
value:
|
|
807
|
+
value: W(p, e.currency),
|
|
804
808
|
helper: `${e.quantityLabel} ÷ issuance transactions`
|
|
805
809
|
}
|
|
806
810
|
];
|
|
807
811
|
return {
|
|
808
812
|
...t,
|
|
809
|
-
reportRangeLabel: i.startDate && i.endDate ? `${
|
|
813
|
+
reportRangeLabel: i.startDate && i.endDate ? `${N(i.startDate)} – ${N(i.endDate)}` : "Unavailable",
|
|
810
814
|
audienceLabel: void 0,
|
|
811
815
|
funnel: [],
|
|
812
816
|
cards: [
|
|
813
817
|
{
|
|
814
818
|
key: "recipients",
|
|
815
819
|
label: `${e.label} Recipients`,
|
|
816
|
-
value: m(
|
|
820
|
+
value: m(a.recipients),
|
|
817
821
|
sub: "members",
|
|
818
822
|
helper: `Distinct members receiving ${e.quantityName.toLowerCase()}`
|
|
819
823
|
},
|
|
820
824
|
{
|
|
821
825
|
key: "issuanceTransactions",
|
|
822
826
|
label: "Issuance Transactions",
|
|
823
|
-
value: m(
|
|
827
|
+
value: m(a.issuanceTransactions),
|
|
824
828
|
sub: "transactions",
|
|
825
829
|
helper: "Count of issuance transactions directly attributed to this campaign"
|
|
826
830
|
},
|
|
827
831
|
{
|
|
828
832
|
key: e.quantityKey,
|
|
829
833
|
label: e.quantityLabel.replace(/^./, (c) => c.toUpperCase()),
|
|
830
|
-
value:
|
|
831
|
-
|
|
834
|
+
value: W(
|
|
835
|
+
Z(a, e.quantityKey),
|
|
832
836
|
e.currency
|
|
833
837
|
),
|
|
834
838
|
sub: e.quantityUnit,
|
|
@@ -844,8 +848,8 @@ function ae(t, l, e) {
|
|
|
844
848
|
...e.includeSourceRecipientShare ? { note: ze } : {},
|
|
845
849
|
breakdown: {
|
|
846
850
|
dimension: "Source",
|
|
847
|
-
columns:
|
|
848
|
-
rows:
|
|
851
|
+
columns: g,
|
|
852
|
+
rows: n
|
|
849
853
|
}
|
|
850
854
|
},
|
|
851
855
|
{
|
|
@@ -863,8 +867,8 @@ function ae(t, l, e) {
|
|
|
863
867
|
cells: [
|
|
864
868
|
m(c.recipients),
|
|
865
869
|
m(c.issuanceTransactions),
|
|
866
|
-
|
|
867
|
-
|
|
870
|
+
W(
|
|
871
|
+
Z(c, e.quantityKey),
|
|
868
872
|
e.currency
|
|
869
873
|
)
|
|
870
874
|
]
|
|
@@ -873,11 +877,11 @@ function ae(t, l, e) {
|
|
|
873
877
|
}
|
|
874
878
|
],
|
|
875
879
|
outcomes: [],
|
|
876
|
-
metrics:
|
|
880
|
+
metrics: k
|
|
877
881
|
};
|
|
878
882
|
}
|
|
879
883
|
function Ge(t, l) {
|
|
880
|
-
return
|
|
884
|
+
return re(t, l, {
|
|
881
885
|
label: "Point",
|
|
882
886
|
quantityName: "Points",
|
|
883
887
|
quantityLabel: "Points issued",
|
|
@@ -888,7 +892,7 @@ function Ge(t, l) {
|
|
|
888
892
|
});
|
|
889
893
|
}
|
|
890
894
|
function He(t, l) {
|
|
891
|
-
return
|
|
895
|
+
return re(t, l, {
|
|
892
896
|
label: "Experience",
|
|
893
897
|
quantityName: "Experience",
|
|
894
898
|
quantityLabel: "Experience issued",
|
|
@@ -899,7 +903,7 @@ function He(t, l) {
|
|
|
899
903
|
});
|
|
900
904
|
}
|
|
901
905
|
function Ke(t, l) {
|
|
902
|
-
return
|
|
906
|
+
return re(t, l, {
|
|
903
907
|
label: "Credit",
|
|
904
908
|
quantityName: "Credit",
|
|
905
909
|
quantityLabel: "Credit issued",
|
|
@@ -911,7 +915,7 @@ function Ke(t, l) {
|
|
|
911
915
|
}
|
|
912
916
|
function Ye(t) {
|
|
913
917
|
if (!(t != null && t.categories.length)) return [];
|
|
914
|
-
const l = {
|
|
918
|
+
const l = t.rewardValueBasis === "FACE_VALUE" ? "Redeemed face value" : "Reward value used", e = {
|
|
915
919
|
key: "members",
|
|
916
920
|
label: "Distributed members vs Redeemed members",
|
|
917
921
|
categories: t.categories,
|
|
@@ -920,18 +924,18 @@ function Ye(t) {
|
|
|
920
924
|
{ label: "Redeemed members", values: t.redeemedMembers }
|
|
921
925
|
]
|
|
922
926
|
};
|
|
923
|
-
return t.distributedValue == null ? [
|
|
924
|
-
|
|
927
|
+
return t.distributedValue == null ? [e] : [
|
|
928
|
+
e,
|
|
925
929
|
{
|
|
926
930
|
key: "value",
|
|
927
|
-
label: "Distributed voucher value vs Reward value used",
|
|
931
|
+
label: t.rewardValueBasis === "FACE_VALUE" ? "Distributed voucher value vs Redeemed face value" : "Distributed voucher value vs Reward value used",
|
|
928
932
|
categories: t.categories,
|
|
929
933
|
series: [
|
|
930
934
|
{
|
|
931
935
|
label: "Distributed voucher value",
|
|
932
936
|
values: t.distributedValue
|
|
933
937
|
},
|
|
934
|
-
{ label:
|
|
938
|
+
{ label: l, values: t.rewardValueUsed }
|
|
935
939
|
]
|
|
936
940
|
}
|
|
937
941
|
];
|
|
@@ -944,7 +948,7 @@ function Qe(t) {
|
|
|
944
948
|
},
|
|
945
949
|
...t.columns.map((l, e) => ({
|
|
946
950
|
header: l,
|
|
947
|
-
accessorFn: (
|
|
951
|
+
accessorFn: (a) => a.cells[e] ?? ""
|
|
948
952
|
}))
|
|
949
953
|
];
|
|
950
954
|
}
|
|
@@ -954,7 +958,7 @@ const Xe = {
|
|
|
954
958
|
}, Je = { class: "fm-typo-en-body-sm-600 text-fm-color-primary uppercase" }, We = { class: "flex items-center gap-12 mb-12 flex-wrap" }, Ze = { class: "fm-typo-en-title-lg-800 text-fm-color-typo-primary m-0" }, et = { class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary flex flex-wrap gap-x-16 gap-y-4" }, tt = {
|
|
955
959
|
key: 1,
|
|
956
960
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4"
|
|
957
|
-
}, at = /* @__PURE__ */
|
|
961
|
+
}, at = /* @__PURE__ */ z({
|
|
958
962
|
__name: "CampaignAnalyticHeader",
|
|
959
963
|
props: {
|
|
960
964
|
campaignName: {},
|
|
@@ -968,119 +972,119 @@ const Xe = {
|
|
|
968
972
|
demo: { type: Boolean }
|
|
969
973
|
},
|
|
970
974
|
setup(t) {
|
|
971
|
-
const l = t, { t: e } =
|
|
975
|
+
const l = t, { t: e } = he(), a = P(() => l.status ? {
|
|
972
976
|
active: "text-fm-color-typo-success bg-fm-color-system-success-100",
|
|
973
977
|
upcoming: "text-fm-color-typo-info bg-fm-color-system-info-100",
|
|
974
978
|
expired: "text-fm-color-typo-error bg-fm-color-system-error-100"
|
|
975
979
|
}[l.status] : "");
|
|
976
|
-
return (i,
|
|
977
|
-
const
|
|
978
|
-
return r(),
|
|
980
|
+
return (i, b) => {
|
|
981
|
+
const p = S("FmIcon"), g = S("FmChip"), n = S("FmCard");
|
|
982
|
+
return r(), x(n, {
|
|
979
983
|
variant: "outlined",
|
|
980
984
|
class: "p-24"
|
|
981
985
|
}, {
|
|
982
|
-
default:
|
|
983
|
-
t.mechanicLabel ? (r(),
|
|
984
|
-
t.icon ? (r(),
|
|
986
|
+
default: D(() => [
|
|
987
|
+
t.mechanicLabel ? (r(), d("div", Xe, [
|
|
988
|
+
t.icon ? (r(), x(p, {
|
|
985
989
|
key: 0,
|
|
986
990
|
name: t.icon,
|
|
987
991
|
outline: "",
|
|
988
992
|
size: "sm",
|
|
989
993
|
class: "!text-fm-color-primary"
|
|
990
|
-
}, null, 8, ["name"])) :
|
|
991
|
-
|
|
992
|
-
])) :
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
t.status ? (r(), g
|
|
994
|
+
}, null, 8, ["name"])) : v("", !0),
|
|
995
|
+
s("span", Je, u(t.objective ? `${t.mechanicLabel} · ${t.objective}` : t.mechanicLabel), 1)
|
|
996
|
+
])) : v("", !0),
|
|
997
|
+
s("div", We, [
|
|
998
|
+
s("h1", Ze, u(t.campaignName), 1),
|
|
999
|
+
t.status ? (r(), x(g, {
|
|
996
1000
|
key: 0,
|
|
997
|
-
class:
|
|
998
|
-
label:
|
|
1001
|
+
class: K(o(a)),
|
|
1002
|
+
label: o(e)(`connect.campaign.common.status.${t.status}`),
|
|
999
1003
|
compact: ""
|
|
1000
|
-
}, null, 8, ["class", "label"])) :
|
|
1001
|
-
t.demo ? (r(), g
|
|
1004
|
+
}, null, 8, ["class", "label"])) : v("", !0),
|
|
1005
|
+
t.demo ? (r(), x(g, {
|
|
1002
1006
|
key: 1,
|
|
1003
1007
|
class: "!text-fm-color-typo-warning !bg-fm-color-system-warning-100",
|
|
1004
1008
|
compact: "",
|
|
1005
1009
|
label: "Demo data"
|
|
1006
|
-
})) :
|
|
1010
|
+
})) : v("", !0)
|
|
1007
1011
|
]),
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
t.reportRangeLabel ? (r(),
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
], 64)) :
|
|
1012
|
+
s("div", et, [
|
|
1013
|
+
s("span", null, u(t.datesLabel), 1),
|
|
1014
|
+
t.reportRangeLabel ? (r(), d(L, { key: 0 }, [
|
|
1015
|
+
b[0] || (b[0] = s("span", { class: "text-fm-color-typo-disabled" }, "·", -1)),
|
|
1016
|
+
s("span", null, "Reporting: " + u(t.reportRangeLabel), 1)
|
|
1017
|
+
], 64)) : v("", !0)
|
|
1014
1018
|
]),
|
|
1015
|
-
t.audienceLabel ? (r(),
|
|
1019
|
+
t.audienceLabel ? (r(), d("div", tt, " Audience: " + u(t.audienceLabel), 1)) : v("", !0)
|
|
1016
1020
|
]),
|
|
1017
1021
|
_: 1
|
|
1018
1022
|
});
|
|
1019
1023
|
};
|
|
1020
1024
|
}
|
|
1021
|
-
}), st = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16" }, rt = { class: "min-w-0" }, lt = { class: "fm-typo-en-title-sm-800 mt-8" }, nt = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, ot = { class: "min-w-0" }, it = { class: "fm-typo-en-title-sm-800 mt-8" }, ct = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16 mt-16" }, mt = { class: "min-w-0" }, ut = { class: "fm-typo-en-title-sm-800 mt-8" }, dt = { class: "min-w-0" }, pt = { class: "fm-typo-en-title-sm-800 mt-8" }, yt = ["aria-label"], bt = { class: "flex h-12 overflow-hidden rounded-xxxl bg-fm-color-neutral-gray-100" }, vt = { class: "flex justify-between gap-16 mt-8 fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, ft = { class: "mt-16 pt-12 border-t border-fm-color-neutral-gray-100 fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, ht = /* @__PURE__ */
|
|
1025
|
+
}), st = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16" }, rt = { class: "min-w-0" }, lt = { class: "fm-typo-en-title-sm-800 mt-8" }, nt = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, ot = { class: "min-w-0" }, it = { class: "fm-typo-en-title-sm-800 mt-8" }, ct = { class: "grid grid-cols-2 xs:grid-cols-1 gap-16 mt-16" }, mt = { class: "min-w-0" }, ut = { class: "fm-typo-en-title-sm-800 mt-8" }, dt = { class: "min-w-0" }, pt = { class: "fm-typo-en-title-sm-800 mt-8" }, yt = ["aria-label"], bt = { class: "flex h-12 overflow-hidden rounded-xxxl bg-fm-color-neutral-gray-100" }, vt = { class: "flex justify-between gap-16 mt-8 fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, ft = { class: "mt-16 pt-12 border-t border-fm-color-neutral-gray-100 fm-typo-en-body-sm-400 text-fm-color-typo-tertiary" }, ht = /* @__PURE__ */ z({
|
|
1022
1026
|
__name: "PromotionApplicationMix",
|
|
1023
1027
|
props: {
|
|
1024
1028
|
mix: {}
|
|
1025
1029
|
},
|
|
1026
1030
|
setup(t) {
|
|
1027
1031
|
return (l, e) => {
|
|
1028
|
-
const
|
|
1029
|
-
return r(),
|
|
1032
|
+
const a = S("FmCard");
|
|
1033
|
+
return r(), x(a, {
|
|
1030
1034
|
variant: "outlined",
|
|
1031
1035
|
class: "p-24"
|
|
1032
1036
|
}, {
|
|
1033
|
-
default:
|
|
1034
|
-
e[4] || (e[4] =
|
|
1035
|
-
e[5] || (e[5] =
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
e[0] || (e[0] =
|
|
1039
|
-
|
|
1040
|
-
|
|
1037
|
+
default: D(() => [
|
|
1038
|
+
e[4] || (e[4] = s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " Customer mix ", -1)),
|
|
1039
|
+
e[5] || (e[5] = s("div", { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4 mb-16" }, " Completed bills attributed to this promotion ", -1)),
|
|
1040
|
+
s("div", st, [
|
|
1041
|
+
s("div", rt, [
|
|
1042
|
+
e[0] || (e[0] = s("div", { class: "flex items-center gap-8" }, [
|
|
1043
|
+
s("div", { class: "w-8 h-8 rounded-sm bg-fm-color-primary" }),
|
|
1044
|
+
s("span", { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary" }, " Member bills ")
|
|
1041
1045
|
], -1)),
|
|
1042
|
-
|
|
1043
|
-
|
|
1046
|
+
s("div", lt, u(t.mix.memberBills), 1),
|
|
1047
|
+
s("div", nt, u(t.mix.appliedMembers) + " applied members ", 1)
|
|
1044
1048
|
]),
|
|
1045
|
-
|
|
1046
|
-
e[1] || (e[1] =
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
+
s("div", ot, [
|
|
1050
|
+
e[1] || (e[1] = s("div", { class: "flex items-center gap-8" }, [
|
|
1051
|
+
s("div", { class: "w-8 h-8 rounded-sm bg-fm-color-neutral-gray-200" }),
|
|
1052
|
+
s("span", { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary" }, " Non-member bills ")
|
|
1049
1053
|
], -1)),
|
|
1050
|
-
|
|
1054
|
+
s("div", it, u(t.mix.nonMemberBills), 1)
|
|
1051
1055
|
])
|
|
1052
1056
|
]),
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
e[2] || (e[2] =
|
|
1056
|
-
|
|
1057
|
+
s("div", ct, [
|
|
1058
|
+
s("div", mt, [
|
|
1059
|
+
e[2] || (e[2] = s("div", { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary" }, " Member sales ", -1)),
|
|
1060
|
+
s("div", ut, u(t.mix.memberSales), 1)
|
|
1057
1061
|
]),
|
|
1058
|
-
|
|
1059
|
-
e[3] || (e[3] =
|
|
1060
|
-
|
|
1062
|
+
s("div", dt, [
|
|
1063
|
+
e[3] || (e[3] = s("div", { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary" }, " Non-member sales ", -1)),
|
|
1064
|
+
s("div", pt, u(t.mix.nonMemberSales), 1)
|
|
1061
1065
|
])
|
|
1062
1066
|
]),
|
|
1063
|
-
|
|
1067
|
+
s("div", {
|
|
1064
1068
|
class: "mt-24",
|
|
1065
1069
|
role: "img",
|
|
1066
1070
|
"aria-label": t.mix.summary
|
|
1067
1071
|
}, [
|
|
1068
|
-
|
|
1069
|
-
|
|
1072
|
+
s("div", bt, [
|
|
1073
|
+
s("div", {
|
|
1070
1074
|
class: "h-full bg-fm-color-primary",
|
|
1071
|
-
style:
|
|
1075
|
+
style: ye({ width: t.mix.memberBillSharePct + "%" })
|
|
1072
1076
|
}, null, 4),
|
|
1073
|
-
|
|
1077
|
+
s("div", {
|
|
1074
1078
|
class: "h-full bg-fm-color-neutral-gray-200",
|
|
1075
|
-
style:
|
|
1079
|
+
style: ye({ width: t.mix.nonMemberBillSharePct + "%" })
|
|
1076
1080
|
}, null, 4)
|
|
1077
1081
|
]),
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1082
|
+
s("div", vt, [
|
|
1083
|
+
s("span", null, "Members " + u(t.mix.memberBillSharePct) + "%", 1),
|
|
1084
|
+
s("span", null, "Non-members " + u(t.mix.nonMemberBillSharePct) + "%", 1)
|
|
1081
1085
|
])
|
|
1082
1086
|
], 8, yt),
|
|
1083
|
-
|
|
1087
|
+
s("div", ft, u(t.mix.summary), 1)
|
|
1084
1088
|
]),
|
|
1085
1089
|
_: 1
|
|
1086
1090
|
});
|
|
@@ -1107,19 +1111,19 @@ const Xe = {
|
|
|
1107
1111
|
}, Dt = { class: "fm-typo-en-title-sm-800 text-fm-color-typo-primary mt-8" }, Lt = {
|
|
1108
1112
|
key: 0,
|
|
1109
1113
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary"
|
|
1110
|
-
},
|
|
1114
|
+
}, Bt = {
|
|
1111
1115
|
key: 1,
|
|
1112
1116
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary"
|
|
1113
|
-
},
|
|
1117
|
+
}, Et = {
|
|
1114
1118
|
key: 2,
|
|
1115
1119
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary"
|
|
1116
|
-
},
|
|
1120
|
+
}, Vt = {
|
|
1117
1121
|
key: 3,
|
|
1118
1122
|
class: "mt-8"
|
|
1119
|
-
},
|
|
1123
|
+
}, Tt = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, Nt = {
|
|
1120
1124
|
key: 0,
|
|
1121
1125
|
class: "flex items-center justify-center px-4 xs:py-4"
|
|
1122
|
-
}, Ut = /* @__PURE__ */
|
|
1126
|
+
}, Ut = /* @__PURE__ */ z({
|
|
1123
1127
|
__name: "CampaignFunnel",
|
|
1124
1128
|
props: {
|
|
1125
1129
|
stages: {},
|
|
@@ -1130,11 +1134,11 @@ const Xe = {
|
|
|
1130
1134
|
secondaryStages: {}
|
|
1131
1135
|
},
|
|
1132
1136
|
setup(t) {
|
|
1133
|
-
const l = t, e =
|
|
1134
|
-
var
|
|
1137
|
+
const l = t, e = P(() => {
|
|
1138
|
+
var a;
|
|
1135
1139
|
return [
|
|
1136
1140
|
{ label: l.primaryLabel, stages: l.stages, offset: !1 },
|
|
1137
|
-
...(
|
|
1141
|
+
...(a = l.secondaryStages) != null && a.length ? [
|
|
1138
1142
|
{
|
|
1139
1143
|
label: l.secondaryLabel,
|
|
1140
1144
|
stages: l.secondaryStages,
|
|
@@ -1143,74 +1147,74 @@ const Xe = {
|
|
|
1143
1147
|
] : []
|
|
1144
1148
|
];
|
|
1145
1149
|
});
|
|
1146
|
-
return (
|
|
1147
|
-
const
|
|
1148
|
-
return r(), g
|
|
1150
|
+
return (a, i) => {
|
|
1151
|
+
const b = S("FmProgressBar"), p = S("FmIcon"), g = S("FmCard");
|
|
1152
|
+
return r(), x(g, {
|
|
1149
1153
|
variant: "outlined",
|
|
1150
1154
|
class: "p-24"
|
|
1151
1155
|
}, {
|
|
1152
|
-
default:
|
|
1153
|
-
i[0] || (i[0] =
|
|
1154
|
-
i[1] || (i[1] =
|
|
1155
|
-
t.headline ? (r(),
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1156
|
+
default: D(() => [
|
|
1157
|
+
i[0] || (i[0] = s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " Campaign funnel ", -1)),
|
|
1158
|
+
i[1] || (i[1] = s("div", { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, " Campaign activity at each stage ", -1)),
|
|
1159
|
+
t.headline ? (r(), d("div", gt, [
|
|
1160
|
+
s("div", xt, [
|
|
1161
|
+
s("span", kt, u(t.headline.value), 1),
|
|
1162
|
+
s("span", wt, [
|
|
1159
1163
|
xe(u(t.headline.label) + " ", 1),
|
|
1160
|
-
t.headline.helper ? (r(),
|
|
1164
|
+
t.headline.helper ? (r(), x(te, {
|
|
1161
1165
|
key: 0,
|
|
1162
1166
|
description: t.headline.helper
|
|
1163
|
-
}, null, 8, ["description"])) :
|
|
1167
|
+
}, null, 8, ["description"])) : v("", !0)
|
|
1164
1168
|
])
|
|
1165
1169
|
]),
|
|
1166
|
-
t.summary ? (r(),
|
|
1167
|
-
])) :
|
|
1168
|
-
(r(!0),
|
|
1169
|
-
key:
|
|
1170
|
-
class:
|
|
1170
|
+
t.summary ? (r(), d("div", Rt, u(t.summary), 1)) : v("", !0)
|
|
1171
|
+
])) : v("", !0),
|
|
1172
|
+
(r(!0), d(L, null, ee(o(e), (n, k) => (r(), d("div", {
|
|
1173
|
+
key: n.label ?? k,
|
|
1174
|
+
class: K(["flex flex-col", k ? "mt-16 pt-16 border-t border-fm-color-neutral-gray-100" : "mt-16"])
|
|
1171
1175
|
}, [
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
class:
|
|
1176
|
-
}, u(
|
|
1177
|
-
])) :
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
(r(!0),
|
|
1176
|
+
n.label ? (r(), d("div", Mt, [
|
|
1177
|
+
n.offset ? (r(), d("div", _t)) : v("", !0),
|
|
1178
|
+
s("div", {
|
|
1179
|
+
class: K(["fm-typo-en-body-sm-600 text-fm-color-typo-secondary mb-8", n.offset ? "flex-[2]" : "flex-1"])
|
|
1180
|
+
}, u(n.label), 3)
|
|
1181
|
+
])) : v("", !0),
|
|
1182
|
+
s("div", St, [
|
|
1183
|
+
n.offset ? (r(), d("div", Ct)) : v("", !0),
|
|
1184
|
+
(r(!0), d(L, null, ee(n.stages, (c, C) => (r(), d("div", {
|
|
1181
1185
|
key: c.key,
|
|
1182
1186
|
class: "flex xs:flex-col flex-1 min-w-0 items-stretch"
|
|
1183
1187
|
}, [
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
c.helper ? (r(),
|
|
1188
|
+
s("div", It, [
|
|
1189
|
+
s("div", $t, [
|
|
1190
|
+
s("span", Pt, u(c.label), 1),
|
|
1191
|
+
c.helper ? (r(), x(te, {
|
|
1188
1192
|
key: 0,
|
|
1189
1193
|
description: c.helper
|
|
1190
|
-
}, null, 8, ["description"])) :
|
|
1194
|
+
}, null, 8, ["description"])) : v("", !0)
|
|
1191
1195
|
]),
|
|
1192
|
-
c.notSupported ? (r(),
|
|
1193
|
-
|
|
1194
|
-
c.unitsLabel ? (r(),
|
|
1195
|
-
c.valueLabel ? (r(),
|
|
1196
|
-
c.extra ? (r(),
|
|
1197
|
-
c.ratePct !== void 0 ? (r(),
|
|
1198
|
-
|
|
1196
|
+
c.notSupported ? (r(), d("div", Ot, u(c.helper), 1)) : (r(), d(L, { key: 1 }, [
|
|
1197
|
+
s("div", Dt, u(c.primaryLabel ?? c.membersLabel ?? "—"), 1),
|
|
1198
|
+
c.unitsLabel ? (r(), d("div", Lt, u(c.unitsLabel), 1)) : v("", !0),
|
|
1199
|
+
c.valueLabel ? (r(), d("div", Bt, u(c.valueLabel), 1)) : v("", !0),
|
|
1200
|
+
c.extra ? (r(), d("div", Et, u(c.extra), 1)) : v("", !0),
|
|
1201
|
+
c.ratePct !== void 0 ? (r(), d("div", Vt, [
|
|
1202
|
+
$(b, {
|
|
1199
1203
|
value: c.ratePct,
|
|
1200
1204
|
color: "primary",
|
|
1201
1205
|
size: "sm"
|
|
1202
1206
|
}, null, 8, ["value"]),
|
|
1203
|
-
|
|
1204
|
-
])) :
|
|
1207
|
+
s("div", Tt, u(c.rateLabel), 1)
|
|
1208
|
+
])) : v("", !0)
|
|
1205
1209
|
], 64))
|
|
1206
1210
|
]),
|
|
1207
|
-
C <
|
|
1208
|
-
|
|
1211
|
+
C < n.stages.length - 1 ? (r(), d("div", Nt, [
|
|
1212
|
+
$(p, {
|
|
1209
1213
|
name: "chevron_right",
|
|
1210
1214
|
size: "sm",
|
|
1211
1215
|
class: "text-fm-color-neutral-gray-300 xs:rotate-90"
|
|
1212
1216
|
})
|
|
1213
|
-
])) :
|
|
1217
|
+
])) : v("", !0)
|
|
1214
1218
|
]))), 128))
|
|
1215
1219
|
])
|
|
1216
1220
|
], 2))), 128))
|
|
@@ -1219,38 +1223,38 @@ const Xe = {
|
|
|
1219
1223
|
});
|
|
1220
1224
|
};
|
|
1221
1225
|
}
|
|
1222
|
-
}),
|
|
1226
|
+
}), At = { class: "grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))] xs:grid-cols-1 gap-16" }, Ft = { class: "flex items-center gap-8" }, qt = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary flex-1 min-w-0 truncate" }, jt = {
|
|
1223
1227
|
key: 0,
|
|
1224
1228
|
class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary"
|
|
1225
|
-
},
|
|
1229
|
+
}, se = /* @__PURE__ */ z({
|
|
1226
1230
|
__name: "CampaignMetricCards",
|
|
1227
1231
|
props: {
|
|
1228
1232
|
cards: {}
|
|
1229
1233
|
},
|
|
1230
1234
|
setup(t) {
|
|
1231
1235
|
return (l, e) => {
|
|
1232
|
-
const
|
|
1233
|
-
return r(),
|
|
1234
|
-
(r(!0),
|
|
1236
|
+
const a = S("FmCard");
|
|
1237
|
+
return r(), d("section", At, [
|
|
1238
|
+
(r(!0), d(L, null, ee(t.cards, (i) => (r(), x(a, {
|
|
1235
1239
|
key: i.key,
|
|
1236
1240
|
variant: "outlined",
|
|
1237
1241
|
class: "flex flex-col gap-4 p-16 min-w-0 overflow-hidden"
|
|
1238
1242
|
}, {
|
|
1239
|
-
default:
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
i.helper ? (r(),
|
|
1243
|
+
default: D(() => [
|
|
1244
|
+
s("div", Ft, [
|
|
1245
|
+
s("span", qt, u(i.label), 1),
|
|
1246
|
+
i.helper ? (r(), x(te, {
|
|
1243
1247
|
key: 0,
|
|
1244
1248
|
description: i.helper
|
|
1245
|
-
}, null, 8, ["description"])) :
|
|
1249
|
+
}, null, 8, ["description"])) : v("", !0)
|
|
1246
1250
|
]),
|
|
1247
|
-
|
|
1248
|
-
class:
|
|
1251
|
+
s("div", {
|
|
1252
|
+
class: K([
|
|
1249
1253
|
"fm-typo-en-title-sm-800 truncate",
|
|
1250
1254
|
i.unavailable ? "text-fm-color-typo-disabled" : "text-fm-color-typo-primary"
|
|
1251
1255
|
])
|
|
1252
1256
|
}, u(i.value), 3),
|
|
1253
|
-
i.sub ? (r(),
|
|
1257
|
+
i.sub ? (r(), d("div", jt, u(i.sub), 1)) : v("", !0)
|
|
1254
1258
|
]),
|
|
1255
1259
|
_: 2
|
|
1256
1260
|
}, 1024))), 128))
|
|
@@ -1260,56 +1264,56 @@ const Xe = {
|
|
|
1260
1264
|
}), zt = { class: "flex items-center justify-between gap-12 flex-wrap mb-16 xs:flex-col xs:items-start" }, Gt = {
|
|
1261
1265
|
key: 0,
|
|
1262
1266
|
class: "fm-typo-en-body-md-600 text-fm-color-typo-secondary mb-12"
|
|
1263
|
-
}, Ht = /* @__PURE__ */
|
|
1267
|
+
}, Ht = /* @__PURE__ */ z({
|
|
1264
1268
|
__name: "CampaignTrendChart",
|
|
1265
1269
|
props: {
|
|
1266
1270
|
modes: {}
|
|
1267
1271
|
},
|
|
1268
1272
|
setup(t) {
|
|
1269
|
-
var
|
|
1270
|
-
const l = t, e = ["#FF7823", "#B2B3B6"],
|
|
1273
|
+
var k;
|
|
1274
|
+
const l = t, e = ["#FF7823", "#B2B3B6"], a = Q(((k = l.modes[0]) == null ? void 0 : k.key) ?? ""), i = P(
|
|
1271
1275
|
() => l.modes.map((c) => ({ label: c.label, value: c.key }))
|
|
1272
|
-
),
|
|
1273
|
-
() => i.value.find((c) => c.value ===
|
|
1274
|
-
),
|
|
1275
|
-
() => l.modes.find((c) => c.key ===
|
|
1276
|
-
),
|
|
1276
|
+
), b = P(
|
|
1277
|
+
() => i.value.find((c) => c.value === a.value) ?? null
|
|
1278
|
+
), p = P(
|
|
1279
|
+
() => l.modes.find((c) => c.key === a.value) ?? l.modes[0]
|
|
1280
|
+
), g = P(
|
|
1277
1281
|
() => {
|
|
1278
1282
|
var c;
|
|
1279
|
-
return (((c =
|
|
1283
|
+
return (((c = p.value) == null ? void 0 : c.series) ?? []).map((C, y) => ({
|
|
1280
1284
|
label: C.label,
|
|
1281
1285
|
data: C.values,
|
|
1282
1286
|
color: e[y] ?? e[e.length - 1],
|
|
1283
1287
|
dash: y > 0
|
|
1284
1288
|
}));
|
|
1285
1289
|
}
|
|
1286
|
-
),
|
|
1290
|
+
), n = { display: !0 };
|
|
1287
1291
|
return (c, C) => {
|
|
1288
|
-
const y = S("FmButtonGroup"),
|
|
1289
|
-
return r(),
|
|
1292
|
+
const y = S("FmButtonGroup"), E = S("FmLineChart"), M = S("FmCard");
|
|
1293
|
+
return r(), x(M, {
|
|
1290
1294
|
variant: "outlined",
|
|
1291
1295
|
class: "p-24"
|
|
1292
1296
|
}, {
|
|
1293
|
-
default:
|
|
1294
|
-
|
|
1295
|
-
C[1] || (C[1] =
|
|
1296
|
-
t.modes.length > 1 ? (r(),
|
|
1297
|
+
default: D(() => [
|
|
1298
|
+
s("div", zt, [
|
|
1299
|
+
C[1] || (C[1] = s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " Funnel trend ", -1)),
|
|
1300
|
+
t.modes.length > 1 ? (r(), x(y, {
|
|
1297
1301
|
key: 0,
|
|
1298
|
-
items:
|
|
1299
|
-
"model-value":
|
|
1300
|
-
"onUpdate:modelValue": C[0] || (C[0] = (
|
|
1301
|
-
}, null, 8, ["items", "model-value"])) :
|
|
1302
|
+
items: o(i),
|
|
1303
|
+
"model-value": o(b),
|
|
1304
|
+
"onUpdate:modelValue": C[0] || (C[0] = (h) => a.value = h.value)
|
|
1305
|
+
}, null, 8, ["items", "model-value"])) : v("", !0)
|
|
1302
1306
|
]),
|
|
1303
|
-
|
|
1304
|
-
|
|
1307
|
+
o(p) ? (r(), d("div", Gt, u(o(p).label), 1)) : v("", !0),
|
|
1308
|
+
o(p) ? (r(), x(E, {
|
|
1305
1309
|
key: 1,
|
|
1306
|
-
datasets:
|
|
1307
|
-
"x-axis": { categories:
|
|
1308
|
-
"x-cfg":
|
|
1309
|
-
"y-cfg":
|
|
1310
|
+
datasets: o(g),
|
|
1311
|
+
"x-axis": { categories: o(p).categories },
|
|
1312
|
+
"x-cfg": n,
|
|
1313
|
+
"y-cfg": n,
|
|
1310
1314
|
legend: { display: !0 },
|
|
1311
1315
|
height: "150px"
|
|
1312
|
-
}, null, 8, ["datasets", "x-axis"])) :
|
|
1316
|
+
}, null, 8, ["datasets", "x-axis"])) : v("", !0)
|
|
1313
1317
|
]),
|
|
1314
1318
|
_: 1
|
|
1315
1319
|
});
|
|
@@ -1324,7 +1328,7 @@ const Xe = {
|
|
|
1324
1328
|
}, Jt = {
|
|
1325
1329
|
key: 2,
|
|
1326
1330
|
class: "fm-typo-en-body-md-400 text-fm-color-typo-tertiary mt-8"
|
|
1327
|
-
},
|
|
1331
|
+
}, ve = /* @__PURE__ */ z({
|
|
1328
1332
|
__name: "CampaignBreakdownTable",
|
|
1329
1333
|
props: {
|
|
1330
1334
|
breakdown: {},
|
|
@@ -1333,30 +1337,30 @@ const Xe = {
|
|
|
1333
1337
|
note: {}
|
|
1334
1338
|
},
|
|
1335
1339
|
setup(t) {
|
|
1336
|
-
const l = t, e =
|
|
1340
|
+
const l = t, e = P(
|
|
1337
1341
|
() => l.breakdown ? Qe(l.breakdown) : []
|
|
1338
1342
|
);
|
|
1339
|
-
return (
|
|
1340
|
-
const
|
|
1341
|
-
return r(),
|
|
1343
|
+
return (a, i) => {
|
|
1344
|
+
const b = S("FmTable"), p = S("FmCard");
|
|
1345
|
+
return r(), x(p, {
|
|
1342
1346
|
variant: "outlined",
|
|
1343
1347
|
class: "p-24"
|
|
1344
1348
|
}, {
|
|
1345
|
-
default:
|
|
1346
|
-
var
|
|
1349
|
+
default: D(() => {
|
|
1350
|
+
var g;
|
|
1347
1351
|
return [
|
|
1348
|
-
|
|
1349
|
-
(
|
|
1350
|
-
|
|
1351
|
-
t.note ? (r(),
|
|
1352
|
-
|
|
1352
|
+
s("div", Kt, u(t.title), 1),
|
|
1353
|
+
(g = t.breakdown) != null && g.rows.length ? (r(), d(L, { key: 0 }, [
|
|
1354
|
+
s("div", Yt, " By " + u(t.breakdown.dimension), 1),
|
|
1355
|
+
t.note ? (r(), d("div", Qt, u(t.note), 1)) : v("", !0),
|
|
1356
|
+
$(b, {
|
|
1353
1357
|
class: "mt-12",
|
|
1354
1358
|
"row-data": t.breakdown.rows,
|
|
1355
|
-
"column-defs":
|
|
1359
|
+
"column-defs": o(e),
|
|
1356
1360
|
"column-filter": [],
|
|
1357
1361
|
"hide-footer": ""
|
|
1358
1362
|
}, null, 8, ["row-data", "column-defs"])
|
|
1359
|
-
], 64)) : t.breakdown ? (r(),
|
|
1363
|
+
], 64)) : t.breakdown ? (r(), d("div", Xt, u(t.emptyMessage), 1)) : (r(), d("div", Jt, " No breakdown dimension is available for this campaign. "))
|
|
1360
1364
|
];
|
|
1361
1365
|
}),
|
|
1362
1366
|
_: 1
|
|
@@ -1372,7 +1376,7 @@ const Xe = {
|
|
|
1372
1376
|
}, ta = { class: "flex items-center gap-8" }, aa = { class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary flex-1 min-w-0 truncate" }, sa = {
|
|
1373
1377
|
key: 1,
|
|
1374
1378
|
class: "flex items-center justify-between gap-12 py-8 border-b border-fm-color-neutral-gray-100"
|
|
1375
|
-
}, ra = { class: "flex items-center gap-8 min-w-0" }, la = { class: "fm-typo-en-body-md-400 text-fm-color-typo-primary truncate" },
|
|
1379
|
+
}, ra = { class: "flex items-center gap-8 min-w-0" }, la = { class: "fm-typo-en-body-md-400 text-fm-color-typo-primary truncate" }, fe = /* @__PURE__ */ z({
|
|
1376
1380
|
__name: "CampaignMetricList",
|
|
1377
1381
|
props: {
|
|
1378
1382
|
title: {},
|
|
@@ -1382,44 +1386,44 @@ const Xe = {
|
|
|
1382
1386
|
},
|
|
1383
1387
|
setup(t) {
|
|
1384
1388
|
return (l, e) => {
|
|
1385
|
-
const
|
|
1386
|
-
return r(),
|
|
1389
|
+
const a = S("FmCard");
|
|
1390
|
+
return r(), x(a, {
|
|
1387
1391
|
variant: "outlined",
|
|
1388
1392
|
class: "p-24"
|
|
1389
1393
|
}, {
|
|
1390
|
-
default:
|
|
1391
|
-
|
|
1392
|
-
t.caption ? (r(),
|
|
1393
|
-
|
|
1394
|
-
class:
|
|
1394
|
+
default: D(() => [
|
|
1395
|
+
s("div", Wt, u(t.title), 1),
|
|
1396
|
+
t.caption ? (r(), d("div", Zt, u(t.caption), 1)) : v("", !0),
|
|
1397
|
+
s("div", {
|
|
1398
|
+
class: K(["grid grid-cols-[repeat(auto-fit,minmax(220px,1fr))] xs:grid-cols-1", t.variant === "tile" ? "gap-16" : "gap-x-16"])
|
|
1395
1399
|
}, [
|
|
1396
|
-
(r(!0),
|
|
1400
|
+
(r(!0), d(L, null, ee(t.items, (i) => (r(), d(L, {
|
|
1397
1401
|
key: i.key
|
|
1398
1402
|
}, [
|
|
1399
|
-
t.variant === "tile" ? (r(),
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
i.helper ? (r(),
|
|
1403
|
+
t.variant === "tile" ? (r(), d("div", ea, [
|
|
1404
|
+
s("div", ta, [
|
|
1405
|
+
s("span", aa, u(i.label), 1),
|
|
1406
|
+
i.helper ? (r(), x(te, {
|
|
1403
1407
|
key: 0,
|
|
1404
1408
|
description: i.helper
|
|
1405
|
-
}, null, 8, ["description"])) :
|
|
1409
|
+
}, null, 8, ["description"])) : v("", !0)
|
|
1406
1410
|
]),
|
|
1407
|
-
|
|
1408
|
-
class:
|
|
1411
|
+
s("div", {
|
|
1412
|
+
class: K([
|
|
1409
1413
|
"fm-typo-en-body-lg-600 mt-4 truncate",
|
|
1410
1414
|
i.unavailable ? "text-fm-color-typo-disabled" : "text-fm-color-typo-primary"
|
|
1411
1415
|
])
|
|
1412
1416
|
}, u(i.value), 3)
|
|
1413
|
-
])) : (r(),
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
i.helper ? (r(),
|
|
1417
|
+
])) : (r(), d("div", sa, [
|
|
1418
|
+
s("div", ra, [
|
|
1419
|
+
s("span", la, u(i.label), 1),
|
|
1420
|
+
i.helper ? (r(), x(te, {
|
|
1417
1421
|
key: 0,
|
|
1418
1422
|
description: i.helper
|
|
1419
|
-
}, null, 8, ["description"])) :
|
|
1423
|
+
}, null, 8, ["description"])) : v("", !0)
|
|
1420
1424
|
]),
|
|
1421
|
-
|
|
1422
|
-
class:
|
|
1425
|
+
s("span", {
|
|
1426
|
+
class: K([
|
|
1423
1427
|
"fm-typo-en-body-md-600 whitespace-nowrap",
|
|
1424
1428
|
i.unavailable ? "text-fm-color-typo-disabled" : "text-fm-color-typo-primary"
|
|
1425
1429
|
])
|
|
@@ -1438,45 +1442,45 @@ const Xe = {
|
|
|
1438
1442
|
}, ua = { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, da = {
|
|
1439
1443
|
key: 1,
|
|
1440
1444
|
class: "flex flex-col gap-12"
|
|
1441
|
-
}, _a = /* @__PURE__ */
|
|
1445
|
+
}, _a = /* @__PURE__ */ z({
|
|
1442
1446
|
__name: "CampaignAnalytic",
|
|
1443
1447
|
setup(t) {
|
|
1444
|
-
const { t: l } =
|
|
1445
|
-
var
|
|
1446
|
-
return (
|
|
1447
|
-
}),
|
|
1448
|
+
const { t: l } = he(), e = $e(), a = Pe(), { global: i, minor: b } = Re, p = we(), g = Q(), n = Q(), k = Q(), c = Q(!1), C = Q(!1), y = P(() => {
|
|
1449
|
+
var O;
|
|
1450
|
+
return (O = g.value) == null ? void 0 : O.campaign;
|
|
1451
|
+
}), E = P(
|
|
1448
1452
|
() => y.value ? Ue(y.value.type) : void 0
|
|
1449
|
-
), M =
|
|
1450
|
-
var
|
|
1451
|
-
return (
|
|
1452
|
-
}),
|
|
1453
|
-
var
|
|
1454
|
-
return M.value && ((
|
|
1453
|
+
), M = P(() => {
|
|
1454
|
+
var O;
|
|
1455
|
+
return (O = E.value) == null ? void 0 : O.report;
|
|
1456
|
+
}), h = P(() => {
|
|
1457
|
+
var O, w, G, H, V, T, F, I, f, q, j, X, J;
|
|
1458
|
+
return M.value && ((O = y.value) == null ? void 0 : O.type) === "COIN" ? Ge(
|
|
1455
1459
|
M.value,
|
|
1456
|
-
((
|
|
1457
|
-
) : M.value && ((
|
|
1460
|
+
((w = n.value) == null ? void 0 : w.type) === "COIN" ? n.value : ie()
|
|
1461
|
+
) : M.value && ((G = y.value) == null ? void 0 : G.type) === "POINT" ? He(
|
|
1458
1462
|
M.value,
|
|
1459
|
-
((
|
|
1460
|
-
) : M.value && ((
|
|
1463
|
+
((H = n.value) == null ? void 0 : H.type) === "POINT" ? n.value : ce()
|
|
1464
|
+
) : M.value && ((V = y.value) == null ? void 0 : V.type) === "CREDIT" ? Ke(
|
|
1461
1465
|
M.value,
|
|
1462
|
-
((
|
|
1466
|
+
((T = n.value) == null ? void 0 : T.type) === "CREDIT" ? n.value : me()
|
|
1463
1467
|
) : M.value && ((F = y.value) == null ? void 0 : F.type) === "GAME" ? je(
|
|
1464
1468
|
M.value,
|
|
1465
|
-
((
|
|
1469
|
+
((I = n.value) == null ? void 0 : I.type) === "GAME" ? n.value : oe()
|
|
1466
1470
|
) : M.value && ((f = y.value) == null ? void 0 : f.type) === "MISSION" ? qe(
|
|
1467
1471
|
M.value,
|
|
1468
|
-
((
|
|
1469
|
-
) : M.value && ((
|
|
1472
|
+
((q = n.value) == null ? void 0 : q.type) === "MISSION" ? n.value : ne()
|
|
1473
|
+
) : M.value && ((j = y.value) == null ? void 0 : j.type) === "PROMOTION" ? Fe(
|
|
1470
1474
|
M.value,
|
|
1471
|
-
((
|
|
1472
|
-
) : M.value && ((
|
|
1475
|
+
((X = n.value) == null ? void 0 : X.type) === "PROMOTION" ? n.value : le()
|
|
1476
|
+
) : M.value && ((J = n.value) == null ? void 0 : J.type) === "VOUCHER" ? Ae(
|
|
1473
1477
|
M.value,
|
|
1474
|
-
|
|
1475
|
-
|
|
1478
|
+
n.value,
|
|
1479
|
+
k.value
|
|
1476
1480
|
) : M.value;
|
|
1477
|
-
}),
|
|
1481
|
+
}), A = P(
|
|
1478
1482
|
() => y.value ? l(Me(y.value.timeframeOptions)) : ""
|
|
1479
|
-
),
|
|
1483
|
+
), ae = P(
|
|
1480
1484
|
() => y.value && y.value.type !== "MEMBERSHIP" ? _e(y.value) : void 0
|
|
1481
1485
|
);
|
|
1482
1486
|
function ge() {
|
|
@@ -1512,7 +1516,7 @@ const Xe = {
|
|
|
1512
1516
|
performanceDetails: []
|
|
1513
1517
|
};
|
|
1514
1518
|
}
|
|
1515
|
-
function
|
|
1519
|
+
function le() {
|
|
1516
1520
|
return {
|
|
1517
1521
|
type: "PROMOTION",
|
|
1518
1522
|
scope: { startDate: "", endDate: "" },
|
|
@@ -1529,7 +1533,7 @@ const Xe = {
|
|
|
1529
1533
|
performanceDetails: []
|
|
1530
1534
|
};
|
|
1531
1535
|
}
|
|
1532
|
-
function
|
|
1536
|
+
function ne() {
|
|
1533
1537
|
return {
|
|
1534
1538
|
type: "MISSION",
|
|
1535
1539
|
scope: { startDate: "", endDate: "" },
|
|
@@ -1546,7 +1550,7 @@ const Xe = {
|
|
|
1546
1550
|
performanceDetails: []
|
|
1547
1551
|
};
|
|
1548
1552
|
}
|
|
1549
|
-
function
|
|
1553
|
+
function oe() {
|
|
1550
1554
|
return {
|
|
1551
1555
|
type: "GAME",
|
|
1552
1556
|
scope: { startDate: "", endDate: "" },
|
|
@@ -1562,7 +1566,7 @@ const Xe = {
|
|
|
1562
1566
|
tokenDistributionDetails: []
|
|
1563
1567
|
};
|
|
1564
1568
|
}
|
|
1565
|
-
function
|
|
1569
|
+
function ie() {
|
|
1566
1570
|
return {
|
|
1567
1571
|
type: "COIN",
|
|
1568
1572
|
scope: { startDate: "", endDate: "" },
|
|
@@ -1575,7 +1579,7 @@ const Xe = {
|
|
|
1575
1579
|
performanceDetails: []
|
|
1576
1580
|
};
|
|
1577
1581
|
}
|
|
1578
|
-
function
|
|
1582
|
+
function ce() {
|
|
1579
1583
|
return {
|
|
1580
1584
|
type: "POINT",
|
|
1581
1585
|
scope: { startDate: "", endDate: "" },
|
|
@@ -1588,7 +1592,7 @@ const Xe = {
|
|
|
1588
1592
|
performanceDetails: []
|
|
1589
1593
|
};
|
|
1590
1594
|
}
|
|
1591
|
-
function
|
|
1595
|
+
function me() {
|
|
1592
1596
|
return {
|
|
1593
1597
|
type: "CREDIT",
|
|
1594
1598
|
scope: { startDate: "", endDate: "" },
|
|
@@ -1602,220 +1606,220 @@ const Xe = {
|
|
|
1602
1606
|
};
|
|
1603
1607
|
}
|
|
1604
1608
|
return ke(async () => {
|
|
1605
|
-
var
|
|
1609
|
+
var O, w, G, H, V, T, F;
|
|
1606
1610
|
try {
|
|
1607
1611
|
await i(async () => {
|
|
1608
|
-
var
|
|
1609
|
-
|
|
1612
|
+
var q, j;
|
|
1613
|
+
g.value = await U.readById(e.params.id);
|
|
1610
1614
|
const f = e.meta.campaignType;
|
|
1611
|
-
C.value = !!f && ((
|
|
1615
|
+
C.value = !!f && ((j = (q = g.value) == null ? void 0 : q.campaign) == null ? void 0 : j.type) !== f;
|
|
1612
1616
|
});
|
|
1613
|
-
const
|
|
1614
|
-
timezone:
|
|
1617
|
+
const I = {
|
|
1618
|
+
timezone: be[p.currentCountry.value || "MY"] ?? be.MY
|
|
1615
1619
|
};
|
|
1616
|
-
((
|
|
1617
|
-
|
|
1620
|
+
((O = g.value) == null ? void 0 : O.campaign.type) === "VOUCHER" ? (n.value = ge(), await Promise.all([
|
|
1621
|
+
b(
|
|
1618
1622
|
() => U.readAnalyticsOverview(e.params.id, {
|
|
1619
|
-
|
|
1623
|
+
...I
|
|
1620
1624
|
})
|
|
1621
1625
|
).then((f) => {
|
|
1622
|
-
f.type === "VOUCHER" && (
|
|
1626
|
+
f.type === "VOUCHER" && (n.value = f);
|
|
1623
1627
|
}).catch(() => {
|
|
1624
1628
|
}),
|
|
1625
|
-
|
|
1626
|
-
() => U.readAnalyticsTrend(e.params.id,
|
|
1627
|
-
).then((f) =>
|
|
1629
|
+
b(
|
|
1630
|
+
() => U.readAnalyticsTrend(e.params.id, I)
|
|
1631
|
+
).then((f) => k.value = f).catch(() => {
|
|
1628
1632
|
})
|
|
1629
|
-
])) : ((
|
|
1630
|
-
() => U.readAnalyticsOverview(e.params.id,
|
|
1633
|
+
])) : ((w = g.value) == null ? void 0 : w.campaign.type) === "PROMOTION" ? (n.value = le(), await b(
|
|
1634
|
+
() => U.readAnalyticsOverview(e.params.id, I)
|
|
1631
1635
|
).then((f) => {
|
|
1632
|
-
f.type === "PROMOTION" && (
|
|
1636
|
+
f.type === "PROMOTION" && (n.value = f);
|
|
1633
1637
|
}).catch(() => {
|
|
1634
|
-
})) : ((
|
|
1635
|
-
() => U.readAnalyticsOverview(e.params.id,
|
|
1638
|
+
})) : ((G = g.value) == null ? void 0 : G.campaign.type) === "MISSION" ? (n.value = ne(), await b(
|
|
1639
|
+
() => U.readAnalyticsOverview(e.params.id, I)
|
|
1636
1640
|
).then((f) => {
|
|
1637
|
-
f.type === "MISSION" && (
|
|
1641
|
+
f.type === "MISSION" && (n.value = f);
|
|
1638
1642
|
}).catch(() => {
|
|
1639
|
-
})) : ((
|
|
1640
|
-
() => U.readAnalyticsOverview(e.params.id,
|
|
1643
|
+
})) : ((H = g.value) == null ? void 0 : H.campaign.type) === "GAME" ? (n.value = oe(), await b(
|
|
1644
|
+
() => U.readAnalyticsOverview(e.params.id, I)
|
|
1641
1645
|
).then((f) => {
|
|
1642
|
-
f.type === "GAME" && (
|
|
1646
|
+
f.type === "GAME" && (n.value = f);
|
|
1643
1647
|
}).catch(() => {
|
|
1644
|
-
})) : ((
|
|
1645
|
-
() => U.readAnalyticsOverview(e.params.id,
|
|
1648
|
+
})) : ((V = g.value) == null ? void 0 : V.campaign.type) === "COIN" ? (n.value = ie(), await b(
|
|
1649
|
+
() => U.readAnalyticsOverview(e.params.id, I)
|
|
1646
1650
|
).then((f) => {
|
|
1647
|
-
f.type === "COIN" && (
|
|
1651
|
+
f.type === "COIN" && (n.value = f);
|
|
1648
1652
|
}).catch(() => {
|
|
1649
|
-
})) : ((
|
|
1650
|
-
() => U.readAnalyticsOverview(e.params.id,
|
|
1653
|
+
})) : ((T = g.value) == null ? void 0 : T.campaign.type) === "POINT" ? (n.value = ce(), await b(
|
|
1654
|
+
() => U.readAnalyticsOverview(e.params.id, I)
|
|
1651
1655
|
).then((f) => {
|
|
1652
|
-
f.type === "POINT" && (
|
|
1656
|
+
f.type === "POINT" && (n.value = f);
|
|
1653
1657
|
}).catch(() => {
|
|
1654
|
-
})) : ((F =
|
|
1655
|
-
() => U.readAnalyticsOverview(e.params.id,
|
|
1658
|
+
})) : ((F = g.value) == null ? void 0 : F.campaign.type) === "CREDIT" && (n.value = me(), await b(
|
|
1659
|
+
() => U.readAnalyticsOverview(e.params.id, I)
|
|
1656
1660
|
).then((f) => {
|
|
1657
|
-
f.type === "CREDIT" && (
|
|
1661
|
+
f.type === "CREDIT" && (n.value = f);
|
|
1658
1662
|
}).catch(() => {
|
|
1659
1663
|
}));
|
|
1660
1664
|
} catch {
|
|
1661
1665
|
c.value = !0;
|
|
1662
1666
|
}
|
|
1663
|
-
}), (
|
|
1664
|
-
var F,
|
|
1665
|
-
const
|
|
1666
|
-
return r(),
|
|
1667
|
-
|
|
1667
|
+
}), (O, w) => {
|
|
1668
|
+
var F, I, f, q, j, X, J, ue, de, pe;
|
|
1669
|
+
const G = S("FmPill"), H = S("FmPageHead"), V = S("FmIcon"), T = S("FmCard");
|
|
1670
|
+
return r(), d(L, null, [
|
|
1671
|
+
$(H, {
|
|
1668
1672
|
title: "Campaign analytic",
|
|
1669
1673
|
"back-button": !0,
|
|
1670
|
-
"onClick:back":
|
|
1674
|
+
"onClick:back": w[0] || (w[0] = (Y) => o(a).back())
|
|
1671
1675
|
}, {
|
|
1672
|
-
title:
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
+
title: D(() => [
|
|
1677
|
+
s("div", na, [
|
|
1678
|
+
w[1] || (w[1] = s("span", { class: "fm-typo-en-title-md-600 fm-step-title line-clamp-2" }, " Campaign analytic ", -1)),
|
|
1679
|
+
$(G, { variant: "beta" })
|
|
1676
1680
|
])
|
|
1677
1681
|
]),
|
|
1678
1682
|
_: 1
|
|
1679
1683
|
}),
|
|
1680
|
-
|
|
1681
|
-
|
|
1684
|
+
s("div", oa, [
|
|
1685
|
+
o(c) ? (r(), x(T, {
|
|
1682
1686
|
key: 0,
|
|
1683
1687
|
variant: "outlined",
|
|
1684
1688
|
class: "flex flex-col items-center justify-center text-center py-80 px-40 gap-8"
|
|
1685
1689
|
}, {
|
|
1686
|
-
default:
|
|
1687
|
-
|
|
1690
|
+
default: D(() => [
|
|
1691
|
+
$(V, {
|
|
1688
1692
|
name: "error",
|
|
1689
1693
|
outline: "",
|
|
1690
1694
|
size: "lg",
|
|
1691
1695
|
class: "text-fm-color-neutral-gray-300"
|
|
1692
1696
|
}),
|
|
1693
|
-
|
|
1694
|
-
|
|
1697
|
+
w[2] || (w[2] = s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " Could not load this campaign ", -1)),
|
|
1698
|
+
w[3] || (w[3] = s("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-tertiary" }, " The campaign may have been deleted, or the link is no longer valid. ", -1))
|
|
1695
1699
|
]),
|
|
1696
1700
|
_: 1
|
|
1697
|
-
})) :
|
|
1698
|
-
|
|
1699
|
-
"campaign-name":
|
|
1700
|
-
"dates-label":
|
|
1701
|
-
status:
|
|
1702
|
-
"mechanic-label": (F =
|
|
1703
|
-
icon: (
|
|
1704
|
-
objective: (f =
|
|
1705
|
-
"report-range-label": (
|
|
1706
|
-
"audience-label": (
|
|
1701
|
+
})) : o(y) ? (r(), d(L, { key: 1 }, [
|
|
1702
|
+
$(at, {
|
|
1703
|
+
"campaign-name": o(y).name,
|
|
1704
|
+
"dates-label": o(A),
|
|
1705
|
+
status: o(ae),
|
|
1706
|
+
"mechanic-label": (F = o(E)) == null ? void 0 : F.label,
|
|
1707
|
+
icon: (I = o(E)) == null ? void 0 : I.icon,
|
|
1708
|
+
objective: (f = o(E)) == null ? void 0 : f.objective,
|
|
1709
|
+
"report-range-label": (q = o(h)) == null ? void 0 : q.reportRangeLabel,
|
|
1710
|
+
"audience-label": (j = o(h)) == null ? void 0 : j.audienceLabel
|
|
1707
1711
|
}, null, 8, ["campaign-name", "dates-label", "status", "mechanic-label", "icon", "objective", "report-range-label", "audience-label"]),
|
|
1708
|
-
|
|
1712
|
+
o(C) ? (r(), x(T, {
|
|
1709
1713
|
key: 0,
|
|
1710
1714
|
variant: "outlined",
|
|
1711
1715
|
class: "flex flex-col items-center justify-center text-center py-80 px-40 gap-8"
|
|
1712
1716
|
}, {
|
|
1713
|
-
default:
|
|
1714
|
-
|
|
1717
|
+
default: D(() => [
|
|
1718
|
+
$(V, {
|
|
1715
1719
|
name: "wrong_location",
|
|
1716
1720
|
outline: "",
|
|
1717
1721
|
size: "lg",
|
|
1718
1722
|
class: "text-fm-color-neutral-gray-300"
|
|
1719
1723
|
}),
|
|
1720
|
-
|
|
1721
|
-
|
|
1724
|
+
w[4] || (w[4] = s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " This campaign does not belong here ", -1)),
|
|
1725
|
+
s("div", ia, " It is a " + u(o(y).type) + " campaign. Open it from its own campaign list to see the right report. ", 1)
|
|
1722
1726
|
]),
|
|
1723
1727
|
_: 1
|
|
1724
|
-
})) :
|
|
1728
|
+
})) : o(E) ? ((X = o(M)) == null ? void 0 : X.state) === "empty" ? (r(), x(T, {
|
|
1725
1729
|
key: 2,
|
|
1726
1730
|
variant: "outlined",
|
|
1727
1731
|
class: "flex flex-col items-center justify-center text-center py-80 px-40 gap-8"
|
|
1728
1732
|
}, {
|
|
1729
|
-
default:
|
|
1730
|
-
|
|
1733
|
+
default: D(() => [
|
|
1734
|
+
$(V, {
|
|
1731
1735
|
name: "inbox",
|
|
1732
1736
|
outline: "",
|
|
1733
1737
|
size: "lg",
|
|
1734
1738
|
class: "text-fm-color-neutral-gray-300"
|
|
1735
1739
|
}),
|
|
1736
|
-
|
|
1737
|
-
|
|
1740
|
+
w[6] || (w[6] = s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " Campaign activity has not started ", -1)),
|
|
1741
|
+
w[7] || (w[7] = s("div", { class: "fm-typo-en-body-md-400 text-fm-color-typo-tertiary" }, " Performance data will appear after members enter the campaign. ", -1))
|
|
1738
1742
|
]),
|
|
1739
1743
|
_: 1
|
|
1740
|
-
})) :
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
+
})) : o(h) ? (r(), d(L, { key: 3 }, [
|
|
1745
|
+
o(y).type === "COIN" || o(y).type === "POINT" || o(y).type === "CREDIT" ? (r(), d("section", ma, [
|
|
1746
|
+
s("div", null, [
|
|
1747
|
+
s("div", ua, u((J = o(E)) == null ? void 0 : J.label) + " distribution summary ", 1)
|
|
1744
1748
|
]),
|
|
1745
|
-
|
|
1746
|
-
cards:
|
|
1749
|
+
$(se, {
|
|
1750
|
+
cards: o(h).cards
|
|
1747
1751
|
}, null, 8, ["cards"])
|
|
1748
|
-
])) :
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1752
|
+
])) : v("", !0),
|
|
1753
|
+
o(y).type === "MISSION" ? (r(), d("section", da, [
|
|
1754
|
+
w[8] || (w[8] = s("div", null, [
|
|
1755
|
+
s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " Mission participation and completion "),
|
|
1756
|
+
s("div", { class: "fm-typo-en-body-sm-400 text-fm-color-typo-tertiary mt-4" }, " Campaign-lifetime member activity and completion ")
|
|
1753
1757
|
], -1)),
|
|
1754
|
-
|
|
1755
|
-
cards:
|
|
1758
|
+
$(se, {
|
|
1759
|
+
cards: o(h).cards
|
|
1756
1760
|
}, null, 8, ["cards"])
|
|
1757
|
-
])) :
|
|
1758
|
-
|
|
1761
|
+
])) : v("", !0),
|
|
1762
|
+
o(h).applicationMix ? (r(), x(ht, {
|
|
1759
1763
|
key: 2,
|
|
1760
|
-
mix:
|
|
1761
|
-
}, null, 8, ["mix"])) :
|
|
1764
|
+
mix: o(h).applicationMix
|
|
1765
|
+
}, null, 8, ["mix"])) : o(y).type !== "MISSION" && o(h).funnel.length ? (r(), x(Ut, {
|
|
1762
1766
|
key: 3,
|
|
1763
|
-
stages:
|
|
1764
|
-
headline:
|
|
1765
|
-
summary:
|
|
1766
|
-
"primary-label":
|
|
1767
|
-
"secondary-stages": (
|
|
1768
|
-
"secondary-label": (
|
|
1769
|
-
}, null, 8, ["stages", "headline", "summary", "primary-label", "secondary-stages", "secondary-label"])) :
|
|
1770
|
-
|
|
1767
|
+
stages: o(h).funnel,
|
|
1768
|
+
headline: o(h).funnelHeadline,
|
|
1769
|
+
summary: o(h).funnelSummary,
|
|
1770
|
+
"primary-label": o(h).funnelPrimaryLabel,
|
|
1771
|
+
"secondary-stages": (ue = o(h).funnelSecondary) == null ? void 0 : ue.stages,
|
|
1772
|
+
"secondary-label": (de = o(h).funnelSecondary) == null ? void 0 : de.label
|
|
1773
|
+
}, null, 8, ["stages", "headline", "summary", "primary-label", "secondary-stages", "secondary-label"])) : v("", !0),
|
|
1774
|
+
o(y).type !== "MISSION" && o(y).type !== "COIN" && o(y).type !== "POINT" && o(y).type !== "CREDIT" && o(h).cards.length ? (r(), x(se, {
|
|
1771
1775
|
key: 4,
|
|
1772
|
-
cards:
|
|
1773
|
-
}, null, 8, ["cards"])) :
|
|
1774
|
-
|
|
1776
|
+
cards: o(h).cards
|
|
1777
|
+
}, null, 8, ["cards"])) : v("", !0),
|
|
1778
|
+
o(h).trend.length ? (r(), x(Ht, {
|
|
1775
1779
|
key: 5,
|
|
1776
|
-
modes:
|
|
1777
|
-
}, null, 8, ["modes"])) :
|
|
1778
|
-
(
|
|
1779
|
-
key:
|
|
1780
|
-
breakdown:
|
|
1781
|
-
title:
|
|
1782
|
-
"empty-message":
|
|
1783
|
-
note:
|
|
1784
|
-
}, null, 8, ["breakdown", "title", "empty-message", "note"]))), 128)) : (r(),
|
|
1780
|
+
modes: o(h).trend
|
|
1781
|
+
}, null, 8, ["modes"])) : v("", !0),
|
|
1782
|
+
(pe = o(h).breakdowns) != null && pe.length ? (r(!0), d(L, { key: 6 }, ee(o(h).breakdowns, (Y) => (r(), x(ve, {
|
|
1783
|
+
key: Y.title,
|
|
1784
|
+
breakdown: Y.breakdown,
|
|
1785
|
+
title: Y.title,
|
|
1786
|
+
"empty-message": Y.emptyMessage,
|
|
1787
|
+
note: Y.note
|
|
1788
|
+
}, null, 8, ["breakdown", "title", "empty-message", "note"]))), 128)) : (r(), x(ve, {
|
|
1785
1789
|
key: 7,
|
|
1786
|
-
breakdown:
|
|
1790
|
+
breakdown: o(h).breakdown
|
|
1787
1791
|
}, null, 8, ["breakdown"])),
|
|
1788
|
-
|
|
1792
|
+
o(h).outcomes.length ? (r(), x(fe, {
|
|
1789
1793
|
key: 8,
|
|
1790
|
-
title:
|
|
1791
|
-
caption:
|
|
1792
|
-
items:
|
|
1794
|
+
title: o(y).type === "MISSION" || o(y).type === "GAME" ? "Reward activity" : "Business outcome",
|
|
1795
|
+
caption: o(y).type === "MISSION" || o(y).type === "GAME" ? "Reward issuance attributed to this campaign" : "Financial and loyalty outcomes attributed to this campaign",
|
|
1796
|
+
items: o(h).outcomes,
|
|
1793
1797
|
variant: "tile"
|
|
1794
|
-
}, null, 8, ["title", "caption", "items"])) :
|
|
1795
|
-
|
|
1798
|
+
}, null, 8, ["title", "caption", "items"])) : v("", !0),
|
|
1799
|
+
$(fe, {
|
|
1796
1800
|
title: "Metric definitions",
|
|
1797
1801
|
caption: "Hover a metric for its denominator and attribution method",
|
|
1798
|
-
items:
|
|
1802
|
+
items: o(h).metrics,
|
|
1799
1803
|
variant: "row"
|
|
1800
1804
|
}, null, 8, ["items"])
|
|
1801
|
-
], 64)) :
|
|
1805
|
+
], 64)) : v("", !0) : (r(), x(T, {
|
|
1802
1806
|
key: 1,
|
|
1803
1807
|
variant: "outlined",
|
|
1804
1808
|
class: "flex flex-col items-center justify-center text-center py-80 px-40 gap-8"
|
|
1805
1809
|
}, {
|
|
1806
|
-
default:
|
|
1807
|
-
|
|
1810
|
+
default: D(() => [
|
|
1811
|
+
$(V, {
|
|
1808
1812
|
name: "query_stats",
|
|
1809
1813
|
outline: "",
|
|
1810
1814
|
size: "lg",
|
|
1811
1815
|
class: "text-fm-color-neutral-gray-300"
|
|
1812
1816
|
}),
|
|
1813
|
-
|
|
1814
|
-
|
|
1817
|
+
w[5] || (w[5] = s("div", { class: "fm-typo-en-body-lg-600 text-fm-color-typo-primary" }, " Analytic is not available for this campaign type ", -1)),
|
|
1818
|
+
s("div", ca, " Reporting has not been defined for " + u(o(y).type) + " campaigns yet. ", 1)
|
|
1815
1819
|
]),
|
|
1816
1820
|
_: 1
|
|
1817
1821
|
}))
|
|
1818
|
-
], 64)) :
|
|
1822
|
+
], 64)) : v("", !0)
|
|
1819
1823
|
])
|
|
1820
1824
|
], 64);
|
|
1821
1825
|
};
|