awing-library 2.1.222-dev → 2.1.224-dev

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.
Files changed (24) hide show
  1. package/lib/ACM-AXN/Campaign/Container.js +48 -48
  2. package/lib/ACM-AXN/Campaign/Container.test.js +1 -3
  3. package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +1 -2
  4. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.d.ts +16 -7
  5. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.js +71 -51
  6. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.d.ts +0 -1
  7. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.js +73 -95
  8. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.d.ts +17 -4
  9. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.js +140 -82
  10. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.test.js +2 -4
  11. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/EditAds.js +5 -5
  12. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +30 -33
  13. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +3 -13
  14. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +43 -19
  15. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +1 -2
  16. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +3 -3
  17. package/lib/ACM-AXN/Campaign/Enum.d.ts +15 -4
  18. package/lib/ACM-AXN/Campaign/Enum.js +18 -7
  19. package/lib/ACM-AXN/Campaign/Types.d.ts +6 -8
  20. package/lib/ACM-AXN/Campaign/Utils.js +1 -1
  21. package/lib/translate/en/translation.json +8 -2
  22. package/lib/translate/id/translation.json +8 -2
  23. package/lib/translate/vi/translation.json +9 -3
  24. package/package.json +1 -1
@@ -25,7 +25,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  var jsx_runtime_1 = require("react/jsx-runtime");
27
27
  var material_1 = require("@mui/material");
28
- var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
29
28
  var Hooks_1 = __importDefault(require("../../../../ACM-AXN/Campaign/Hooks"));
30
29
  var Constant_1 = require("../../../../ACM-AXN/Common/Constant");
31
30
  var Router_1 = require("../../../../AWING/Router");
@@ -35,7 +34,7 @@ var react_i18next_1 = require("react-i18next");
35
34
  var recoil_1 = require("recoil");
36
35
  var Recoils_1 = require("../Recoils");
37
36
  var atoms_1 = require("../TabSubCampaign/atoms");
38
- var RowTable_1 = require("./RowTable");
37
+ var RowTable_1 = __importDefault(require("./RowTable"));
39
38
  function TabApprove() {
40
39
  var t = (0, react_i18next_1.useTranslation)().t;
41
40
  var campaignId = (0, Router_1.useParams)().campaignId;
@@ -66,20 +65,34 @@ function TabApprove() {
66
65
  return url;
67
66
  };
68
67
  var mergedData = function (data) {
69
- return data.reduce(function (acc, curr) {
70
- var found = acc.find(function (item) { return item.linkPreview === curr.linkPreview; });
71
- if (found) {
72
- // Nếu link đã tồn tại, gộp subCampaign
73
- found.subCampaigns.push(curr.subCampaigns[0]);
68
+ return data.reduce(function (acc, detail) {
69
+ var existingLink = acc.find(function (l) { return l.linkPreview === detail.linkPreview; });
70
+ if (existingLink) {
71
+ var existingCampaign = existingLink.campaign.find(function (item) {
72
+ return item.subCampaigns.find(function (subCampaign) {
73
+ return subCampaign.id ===
74
+ detail.campaign[0].subCampaigns[0].id;
75
+ });
76
+ });
77
+ if (existingCampaign) {
78
+ existingCampaign.ads.push({
79
+ id: detail.campaign[0].ads[0].id,
80
+ name: detail.campaign[0].ads[0].name,
81
+ });
82
+ }
83
+ else {
84
+ detail.campaign.forEach(function (item) {
85
+ existingLink.campaign.push(item);
86
+ });
87
+ }
74
88
  }
75
89
  else {
76
- // Nếu link chưa tồn tại, thêm vào acc với subCampaign là mảng
77
90
  acc.push({
78
91
  id: generateRandomId(),
79
- linkPreview: curr.linkPreview,
80
- description: curr.description,
81
- status: curr.status,
82
- subCampaigns: [curr.subCampaigns[0]],
92
+ linkPreview: detail.linkPreview,
93
+ campaign: detail.campaign,
94
+ status: detail.status,
95
+ description: detail.description,
83
96
  });
84
97
  }
85
98
  return acc;
@@ -96,14 +109,25 @@ function TabApprove() {
96
109
  });
97
110
  if (isDomain) {
98
111
  return {
99
- subCampaigns: [
112
+ linkPreview: renderLinkPreview(ad, domainId),
113
+ campaign: [
100
114
  {
101
- id: subCampaign.campaignGroup.id,
102
- name: subCampaign.campaignGroup
103
- .name,
115
+ subCampaigns: [
116
+ {
117
+ id: subCampaign
118
+ .campaignGroup.id,
119
+ name: subCampaign
120
+ .campaignGroup.name,
121
+ },
122
+ ],
123
+ ads: [
124
+ {
125
+ id: ad.id,
126
+ name: ad.name,
127
+ },
128
+ ],
104
129
  },
105
130
  ],
106
- linkPreview: renderLinkPreview(ad, domainId),
107
131
  description: '',
108
132
  status: 0,
109
133
  };
@@ -124,72 +148,107 @@ function TabApprove() {
124
148
  setCampaignApproval(function (prevState) {
125
149
  if (!prevState)
126
150
  return [];
127
- // Tìm index của campaign cần update trong mảng
128
- var campaignIndex = prevState === null || prevState === void 0 ? void 0 : prevState.findIndex(function (campaign) { return campaign.id === id; });
129
- if (campaignIndex === -1)
130
- return prevState; // Nếu không tìm thấy, trả về state cũ
131
- // Tạo bản sao của state
132
- var newState = __spreadArray([], prevState, true);
133
- // Update thông tin của campaign
134
- newState[campaignIndex] = __assign(__assign({}, newState[campaignIndex]), { status: Enum_1.CampaignApprovalStatus[row.status], description: row.description, linkPreview: row.linkPreview, subCampaignId: row.subCampaigns
135
- .map(function (sub) { return sub.id; })
136
- .join(',') });
151
+ var newState = prevState.map(function (item) {
152
+ if (item.id === id) {
153
+ return __assign(__assign({}, item), row);
154
+ }
155
+ return item;
156
+ });
137
157
  return newState;
138
158
  });
139
159
  }, [setCampaignApproval]);
140
- var transformedData = function (originalData) {
141
- return originalData
142
- .map(function (campaign) {
143
- return campaign.detail.map(function (detailItem) {
144
- var _a;
145
- return ({
146
- id: detailItem.id,
147
- campaignId: campaignId,
148
- domainId: campaign.domain.domainId,
149
- subCampaignId: ((_a = detailItem.subCampaigns) === null || _a === void 0 ? void 0 : _a.map(function (sub) { return sub.id; }).join(',')) || undefined,
150
- linkPreview: detailItem.linkPreview,
151
- status: Enum_1.CampaignApprovalStatus[detailItem.status],
152
- description: detailItem.description,
160
+ function flattenData(data) {
161
+ var flattened = [];
162
+ data.forEach(function (item) {
163
+ item.detail.forEach(function (detail) {
164
+ detail.campaign.forEach(function (campaign) {
165
+ campaign.ads.forEach(function (ad) {
166
+ var _a;
167
+ flattened.push({
168
+ id: item.id,
169
+ campaignId: campaignId,
170
+ domainId: item.domain.domainId,
171
+ status: detail.status,
172
+ description: detail.description,
173
+ subId: (_a = campaign.subCampaigns[0]) === null || _a === void 0 ? void 0 : _a.id,
174
+ adId: ad === null || ad === void 0 ? void 0 : ad.id,
175
+ });
176
+ });
153
177
  });
154
178
  });
155
- })
156
- .flat();
157
- };
158
- var dataTable = (0, react_1.useMemo)(function () {
159
- if (!domains.length)
160
- return [];
161
- var data;
162
- if (campaignApproval === null || campaignApproval === void 0 ? void 0 : campaignApproval.length) {
163
- // Nếu campaignApproval đã có sẵn dữ liệu, chuyển đổi ngược lại thành dạng IDataTable
164
- var groupedData = lodash_1.default.groupBy(campaignApproval, 'domainId');
165
- data = Object.entries(groupedData).map(function (_a) {
166
- var _b;
167
- var domainId = _a[0], items = _a[1];
168
- return ({
169
- id: generateRandomId(),
179
+ });
180
+ return flattened;
181
+ }
182
+ var unflattenData = function (inputData) {
183
+ var subCampaignsFlat = subCampaigns.flatMap(function (item) {
184
+ var subCampaignId = item.campaignGroup.id;
185
+ var subCampaignName = item.campaignGroup.name;
186
+ return item.ads.map(function (ad) { return ({
187
+ subCampaignId: subCampaignId,
188
+ subCampaignName: subCampaignName,
189
+ adId: ad.id,
190
+ adName: ad.name,
191
+ loginId: ad.loginId,
192
+ welcomeId: ad.welcomeId,
193
+ }); });
194
+ });
195
+ var findAd = function (subId, adId) {
196
+ var ad = subCampaignsFlat.find(function (item) { return item.adId === adId && item.subCampaignId === subId; });
197
+ return ad;
198
+ };
199
+ var groupedData = inputData.reduce(function (acc, item) {
200
+ var _a, _b, _c;
201
+ if (!acc[Number(item.domainId)]) {
202
+ var domain = domains.find(function (d) { return d.domainId === item.domainId; });
203
+ acc[Number(item.domainId)] = {
204
+ id: item.id,
170
205
  domain: {
171
- domainName: ((_b = domains.find(function (d) { return d.domainId === domainId; })) === null || _b === void 0 ? void 0 : _b.name) || 'Unknown',
172
- domainId: domainId,
206
+ domainName: domain === null || domain === void 0 ? void 0 : domain.name,
207
+ domainId: domain === null || domain === void 0 ? void 0 : domain.domainId,
173
208
  },
174
- detail: items.map(function (item) {
175
- var _a;
176
- return ({
209
+ detail: [
210
+ {
177
211
  id: generateRandomId(),
178
- status: Enum_1.CampaignApprovalStatus[item.status],
179
- linkPreview: item.linkPreview,
180
- subCampaigns: ((_a = item.subCampaignId) === null || _a === void 0 ? void 0 : _a.split(',').map(function (id) {
181
- var _a;
182
- return ({
183
- id: id,
184
- name: ((_a = subCampaigns.find(function (sc) { return sc.campaignGroup.id.toString() === id; })) === null || _a === void 0 ? void 0 : _a.campaignGroup.name) || "".concat(id)
185
- });
186
- })) || [],
212
+ linkPreview: renderLinkPreview((_a = findAd(item.subId, item.adId)) !== null && _a !== void 0 ? _a : {}, item.domainId),
213
+ campaign: [],
214
+ status: item.status,
187
215
  description: item.description,
188
- });
189
- }),
216
+ },
217
+ ],
218
+ };
219
+ }
220
+ var campaign = acc[Number(item.domainId)].detail[0]
221
+ .campaign;
222
+ var subCampaign = campaign.find(function (c) { return c.subCampaigns[0].id === item.subId; });
223
+ if (!subCampaign) {
224
+ var sub = subCampaigns.find(function (subCampaign) {
225
+ return subCampaign.campaignGroup.id === item.subId;
190
226
  });
227
+ subCampaign = {
228
+ subCampaigns: [
229
+ {
230
+ id: sub.campaignGroup.id,
231
+ name: sub.campaignGroup.name,
232
+ },
233
+ ],
234
+ ads: [],
235
+ };
236
+ campaign.push(subCampaign);
237
+ }
238
+ subCampaign.ads.push({
239
+ id: item.adId,
240
+ name: (_c = (_b = findAd(subCampaign.subCampaigns[0].id, item.adId)) === null || _b === void 0 ? void 0 : _b.adName) !== null && _c !== void 0 ? _c : '',
191
241
  });
192
- return data;
242
+ return acc;
243
+ }, {});
244
+ return Object.values(groupedData);
245
+ };
246
+ var dataTable = (0, react_1.useMemo)(function () {
247
+ if (!domains.length)
248
+ return [];
249
+ var data;
250
+ if (campaignApproval === null || campaignApproval === void 0 ? void 0 : campaignApproval.length) {
251
+ return unflattenData(campaignApproval);
193
252
  }
194
253
  data = domains.map(function (domain) {
195
254
  return {
@@ -218,23 +277,22 @@ function TabApprove() {
218
277
  }, [domainIds]);
219
278
  (0, react_1.useEffect)(function () {
220
279
  if (dataTable.length > 0) {
221
- setCampaignApproval(transformedData(dataTable));
280
+ setCampaignApproval(flattenData(dataTable));
222
281
  }
223
282
  }, [dataTable]);
224
- return ((0, jsx_runtime_1.jsxs)(material_1.TableContainer, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "outlined", sx: {
225
- margin: '1rem',
226
- }, children: t('Campaign.Approval.GetApprovalInformation') }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "outlined", color: "primary", disabled: !rowSelected.length, children: t('Campaign.Approval.SendEmail') }), (0, jsx_runtime_1.jsxs)(material_1.Table, { sx: {
283
+ return ((0, jsx_runtime_1.jsxs)(material_1.TableContainer, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "outlined", color: "primary", disabled: !rowSelected.length, sx: {
284
+ margin: '1rem'
285
+ }, children: t('Campaign.Approval.SendEmail') }), (0, jsx_runtime_1.jsxs)(material_1.Table, { sx: {
227
286
  boxShadow: 'none',
228
287
  '.MuiOutlinedInput-notchedOutline': {
229
288
  border: 'none !important',
230
289
  },
231
290
  }, children: [(0, jsx_runtime_1.jsx)(material_1.TableHead, { children: (0, jsx_runtime_1.jsxs)(material_1.TableRow, { style: { height: 57 }, children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { style: { width: 60, padding: '0 0 0 4px' }, children: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { indeterminate: rowSelected.length > 0 &&
232
291
  rowSelected.length < dataTable.length, checked: rowSelected.length > 0 &&
233
- rowSelected.length === dataTable.length, onChange: handleSelectAll, inputProps: { 'aria-label': 'select all ad' }, color: "primary" }) }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Domain') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { style: { maxWidth: 400 }, children: t('Campaign.Approval.LinkPreview') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.SubCampaign') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Status') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Note') })] }) }), (0, jsx_runtime_1.jsx)(material_1.TableBody, { children: dataTable.map(function (item, index) { return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { rowSpan: item.detail.length + 1, style: { width: 60, padding: '0 0 0 4px' }, children: (0, jsx_runtime_1.jsx)(material_1.Box, { display: 'flex', children: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: rowSelected.some(function (x) { return x === item.id; }), color: "primary", onChange: function () {
234
- return handleRowSelect(item.id);
235
- } }) }) }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { rowSpan: item.detail.length + 1, children: item.domain.domainName })] }), item.detail.map(function (detail, index2) {
236
- var _a;
237
- return ((0, jsx_runtime_1.jsx)(RowTable_1.RowTable, { row: detail, id: (_a = detail === null || detail === void 0 ? void 0 : detail.id) !== null && _a !== void 0 ? _a : -1, updateRow: updateRow }, index2));
238
- })] }, index)); }) })] })] }));
292
+ rowSelected.length === dataTable.length, onChange: handleSelectAll, inputProps: { 'aria-label': 'select all ad' }, color: "primary" }) }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Domain') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { style: { maxWidth: 400 }, children: t('Campaign.Approval.LinkPreview') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.SubCampaign') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Advertisement') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Status') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Note') })] }) }), (0, jsx_runtime_1.jsx)(material_1.TableBody, { children: dataTable.map(function (row) {
293
+ return row.detail.map(function (link, linkIndex) {
294
+ return link.campaign.map(function (sub, subIndex) { return ((0, jsx_runtime_1.jsx)(RowTable_1.default, { row: row, link: link, sub: sub, linkIndex: linkIndex, subIndex: subIndex, rowSelected: rowSelected, handleRowSelect: handleRowSelect, updateRow: updateRow }, "".concat(row.id, "-").concat(linkIndex, "-").concat(subIndex))); });
295
+ });
296
+ }) })] })] }));
239
297
  }
240
298
  exports.default = TabApprove;
@@ -134,11 +134,10 @@ var initCampaignData = {
134
134
  id: 1,
135
135
  campaignId: '4688923610550546635',
136
136
  name: 'Premium',
137
- ticket: 0,
137
+ status: 0,
138
138
  priority: 1,
139
139
  bookingAmount: 7143,
140
140
  bonusAmount: 357,
141
- isReserved: false,
142
141
  billingUnit: 2,
143
142
  },
144
143
  ads: [
@@ -2668,11 +2667,10 @@ var initCampaignDataFetch = {
2668
2667
  id: 1,
2669
2668
  campaignId: '4992385398844444137',
2670
2669
  name: 'Sub-Campaign 1',
2671
- ticket: 1,
2670
+ status: 1,
2672
2671
  priority: 1,
2673
2672
  bookingAmount: 10,
2674
2673
  bonusAmount: 0,
2675
- isReserved: false,
2676
2674
  billingUnit: 1,
2677
2675
  },
2678
2676
  ads: [
@@ -77,11 +77,11 @@ function EditAds(props) {
77
77
  label: t('Campaign.Ad.Time'),
78
78
  required: true,
79
79
  },
80
- {
81
- fieldName: 'isReserved',
82
- type: 'checkbox',
83
- label: t('Campaign.Ad.Reserved'),
84
- },
80
+ // {
81
+ // fieldName: 'isReserved',
82
+ // type: 'checkbox',
83
+ // label: t('Campaign.Ad.Reserved'),
84
+ // },
85
85
  {
86
86
  fieldName: 'placeFilter',
87
87
  type: 'text',
@@ -70,7 +70,7 @@ function SubCampaignDetail(props) {
70
70
  */
71
71
  var translationText = {
72
72
  name: t('Campaign.Name'),
73
- ticket: t('Campaign.Ticket'),
73
+ status: t('Campaign.Ticket'),
74
74
  BillingUnit: t('Campaign.BillingUnit.Title'),
75
75
  priority: t('Campaign.Detail.Priority'),
76
76
  booking: t('Campaign.BookingText'),
@@ -84,9 +84,9 @@ function SubCampaignDetail(props) {
84
84
  onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { name: e.target.value })); });
85
85
  }, error: subValid.name !== undefined && !subValid.name, helperText: subValid.name !== undefined && !subValid.name
86
86
  ? translationText.helperText
87
- : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsxs)(material_1.TextField, { id: "ticket", name: "ticket", variant: "standard", select: true, required: true, fullWidth: true, label: translationText.ticket, value: subCampaign.ticket, onChange: function (e) {
88
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { ticket: Number(e.target.value) })); });
89
- }, disabled: isCreate, children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Enum_1.CampaignTicket.ACTIVE, children: t('Campaign.Active') }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Enum_1.CampaignTicket.INACTIVE, children: t('Campaign.InActive') })] }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "priority", select: true, required: true, variant: "standard", fullWidth: true, label: translationText.priority, value: isNaN(Number(subCampaign.priority))
87
+ : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "status", name: "status", variant: "standard", select: true, required: true, fullWidth: true, label: translationText.status, value: subCampaign.status, onChange: function (e) {
88
+ onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { status: Number(e.target.value) })); });
89
+ }, disabled: isCreate, children: Object.values(Enum_1.CampaignStatus).filter(function (item) { return !isNaN(Number(item)); }).map(function (status) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: status, children: t("Campaign.Status.".concat(Enum_1.CampaignStatus[status])) }, status)); }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "priority", select: true, required: true, variant: "standard", fullWidth: true, label: translationText.priority, value: isNaN(Number(subCampaign.priority))
90
90
  ? subCampaign.priority
91
91
  : Object.values(Enum_1.CampaignPriority)[subCampaign.priority], onChange: function (e) {
92
92
  var newPriority = Object.values(Enum_1.CampaignPriority).indexOf(e.target.value);
@@ -103,34 +103,31 @@ function SubCampaignDetail(props) {
103
103
  setSubValid(function (pre) { return (__assign(__assign({}, pre), { bookingAmount: true, bonusAmount: true })); });
104
104
  return newSubCamp;
105
105
  });
106
- }, children: Object.values(Enum_1.CampaignPriority).map(function (priority) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: priority, children: t("Campaign.".concat(priority)) }, priority)); }) }) })] }), (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, style: { padding: 8, paddingTop: 0 }, children: [(0, Utils_1.checkPriority)(subCampaign.priority, Enum_1.CampaignPriority.ClassB) && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bookingAmount", required: true, fullWidth: true, variant: "standard", type: "number", label: translationText.booking, value: subCampaign.bookingAmount, onChange: function (e) {
107
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bookingAmount: Number(e.target.value), bonusAmount: Math.round(Number(e.target.value) * 0.05) })); });
108
- }, onFocus: function (event) { return event.target.select(); }, error: subValid.bookingAmount !== undefined &&
109
- !subValid.bookingAmount, helperText: subValid.bookingAmount !== undefined &&
110
- !subValid.bookingAmount
111
- ? subCampaign.bookingAmount < 0
112
- ? translationText.notNegative
113
- : translationText.helperText
114
- : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bonusAmount", variant: "standard", fullWidth: true, type: "number", label: translationText.bonus, value: subCampaign.bonusAmount, onChange: function (e) {
115
- var value = Number(e.target.value);
116
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bonusAmount: value })); });
117
- }, onFocus: function (event) { return event.target.select(); }, error: subValid.bonusAmount !== undefined &&
118
- !subValid.bonusAmount, helperText: subValid.bonusAmount !== undefined &&
119
- !subValid.bonusAmount
120
- ? subCampaign.bonusAmount < 0
121
- ? translationText.notNegative
122
- : translationText.helperText
123
- : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "billingUnit", required: true, select: true, variant: "standard", fullWidth: true, label: translationText.BillingUnit, value: String(subCampaign.billingUnit), onChange: function (e) {
124
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { billingUnit: Number(e.target.value) })); });
125
- }, error: !!subValid.billingUnit && !subValid.billingUnit, helperText: !!subValid.billingUnit && !subValid.billingUnit
126
- ? translationText.helperText
127
- : '', children: Object.values(Enum_2.AnalyticType)
128
- .filter(function (item) { return !isNaN(Number(item)); })
129
- .filter(function (item) { return item !== Enum_2.AnalyticType.AuthenticationSuccess; })
130
- .filter(Boolean)
131
- .map(function (type) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: type, children: t("Campaign.BillingUnit.".concat((0, lodash_1.capitalize)((0, lodash_1.camelCase)(Enum_2.AnalyticType[type])))) }, type)); }) }) })] })), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: subCampaign.isReserved, onChange: function (e) {
132
- e.persist();
133
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { isReserved: e.target.checked })); });
134
- }, name: "isReserved", color: "primary" }), label: translationText.reserved, style: { marginTop: 6 } }) })] })] }));
106
+ }, children: Object.values(Enum_1.CampaignPriority).map(function (priority) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: priority, children: t("Campaign.".concat(priority)) }, priority)); }) }) })] }), (0, jsx_runtime_1.jsx)(material_1.Grid, { container: true, style: { padding: 8, paddingTop: 0 }, children: (0, Utils_1.checkPriority)(subCampaign.priority, Enum_1.CampaignPriority.ClassB) && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bookingAmount", required: true, fullWidth: true, variant: "standard", type: "number", label: translationText.booking, value: subCampaign.bookingAmount, onChange: function (e) {
107
+ onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bookingAmount: Number(e.target.value), bonusAmount: Math.round(Number(e.target.value) * 0.05) })); });
108
+ }, onFocus: function (event) { return event.target.select(); }, error: subValid.bookingAmount !== undefined &&
109
+ !subValid.bookingAmount, helperText: subValid.bookingAmount !== undefined &&
110
+ !subValid.bookingAmount
111
+ ? subCampaign.bookingAmount < 0
112
+ ? translationText.notNegative
113
+ : translationText.helperText
114
+ : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bonusAmount", variant: "standard", fullWidth: true, type: "number", label: translationText.bonus, value: subCampaign.bonusAmount, onChange: function (e) {
115
+ var value = Number(e.target.value);
116
+ onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bonusAmount: value })); });
117
+ }, onFocus: function (event) { return event.target.select(); }, error: subValid.bonusAmount !== undefined &&
118
+ !subValid.bonusAmount, helperText: subValid.bonusAmount !== undefined &&
119
+ !subValid.bonusAmount
120
+ ? subCampaign.bonusAmount < 0
121
+ ? translationText.notNegative
122
+ : translationText.helperText
123
+ : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "billingUnit", required: true, select: true, variant: "standard", fullWidth: true, label: translationText.BillingUnit, value: String(subCampaign.billingUnit), onChange: function (e) {
124
+ onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { billingUnit: Number(e.target.value) })); });
125
+ }, error: !!subValid.billingUnit && !subValid.billingUnit, helperText: !!subValid.billingUnit && !subValid.billingUnit
126
+ ? translationText.helperText
127
+ : '', children: Object.values(Enum_2.AnalyticType)
128
+ .filter(function (item) { return !isNaN(Number(item)); })
129
+ .filter(function (item) { return item !== Enum_2.AnalyticType.AuthenticationSuccess; })
130
+ .filter(Boolean)
131
+ .map(function (type) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: type, children: t("Campaign.BillingUnit.".concat((0, lodash_1.capitalize)((0, lodash_1.camelCase)(Enum_2.AnalyticType[type])))) }, type)); }) }) })] })) })] }));
135
132
  }
136
133
  exports.default = SubCampaignDetail;
@@ -23,9 +23,8 @@ var subCampaignMock = {
23
23
  name: 'Test Campaign',
24
24
  bookingAmount: 100000,
25
25
  bonusAmount: 500000,
26
- ticket: Enum_1.CampaignTicket.INACTIVE,
26
+ status: Enum_1.CampaignStatus.Draft,
27
27
  priority: Enum_1.CampaignPriority.ClassB,
28
- isReserved: false,
29
28
  billingUnit: 1,
30
29
  };
31
30
  describe('<SubCampaignDetail />', function () {
@@ -36,19 +35,15 @@ describe('<SubCampaignDetail />', function () {
36
35
  expect(react_1.screen.getByLabelText(/^Campaign.Detail.Priority.*$/).textContent).toBe('Campaign.PriorityB');
37
36
  expect(react_1.screen.getByLabelText(/^Campaign.BookingText.*$/).value).toBe(subCampaignMock.bookingAmount.toString());
38
37
  expect(react_1.screen.getByLabelText(/^Campaign.BonusText.*$/).value).toBe(subCampaignMock.bonusAmount.toString());
39
- expect(
40
- // eslint-disable-next-line testing-library/no-container
41
- container.querySelector('input[name="isReserved"]').checked).toBe(subCampaignMock.isReserved);
42
38
  });
43
39
  it('should render with correct information classA', function () {
44
- var subCampaign = __assign(__assign({}, subCampaignMock), { priority: Enum_1.CampaignPriority.ClassA, ticket: Enum_1.CampaignTicket.ACTIVE, isReserved: true });
40
+ var subCampaign = __assign(__assign({}, subCampaignMock), { priority: Enum_1.CampaignPriority.ClassA, status: Enum_1.CampaignStatus.Active });
45
41
  var _a = (0, react_1.render)((0, jsx_runtime_1.jsx)(SubCampaignDetail_1.default, { subCampaign: subCampaign, onSubCampaignChange: function () { }, onChangeSubCampaignStatus: function () { } })), container = _a.container, getByLabelText = _a.getByLabelText, queryByLabelText = _a.queryByLabelText;
46
42
  expect(react_1.screen.getByLabelText(/^Campaign.Name.*$/).value).toBe(subCampaign.name);
47
43
  expect(react_1.screen.getByLabelText(/^Campaign.Ticket.*$/).textContent).toBe('Campaign.Active');
48
44
  expect(react_1.screen.getByLabelText(/^Campaign.Detail.Priority.*$/).textContent).toBe('Campaign.PriorityA');
49
45
  expect(react_1.screen.queryByLabelText(/^Campaign.BookingText.*$/)).toBeNull();
50
46
  expect(react_1.screen.queryByLabelText(/^Campaign.BonusText.*$/)).toBeNull();
51
- expect(container.querySelector('input[name="isReserved"]').checked).toBe(subCampaign.isReserved);
52
47
  });
53
48
  it('should update sub campaign', function () {
54
49
  var state = __assign({}, subCampaignMock);
@@ -71,16 +66,11 @@ describe('<SubCampaignDetail />', function () {
71
66
  react_1.fireEvent.change(bonusInput, { target: { valueAsNumber: 837483 } });
72
67
  expect(onSubCampaignChange).toHaveBeenCalledTimes(3);
73
68
  expect(state.bonusAmount).toBe(837483);
74
- var isReservedCheckbox = container.querySelector('input[name="isReserved"]');
75
- expect(isReservedCheckbox).not.toBeNull();
76
- react_1.fireEvent.click(isReservedCheckbox);
77
- expect(onSubCampaignChange).toHaveBeenCalledTimes(4);
78
- expect(state.isReserved).toBe(true);
79
69
  var selectParam = react_1.screen.getAllByRole('button');
80
70
  react_1.fireEvent.mouseDown(selectParam[0]);
81
71
  react_1.screen.getAllByRole('option')[0].click();
82
72
  expect(onSubCampaignChange).toHaveBeenCalledTimes(5);
83
- expect(state.ticket).toBe(Enum_1.CampaignTicket.ACTIVE);
73
+ expect(state.status).toBe(Enum_1.CampaignStatus.Active);
84
74
  react_1.fireEvent.mouseDown(selectParam[1]);
85
75
  react_1.screen.getAllByRole('option')[2].click();
86
76
  expect(onSubCampaignChange).toHaveBeenCalledTimes(6);
@@ -15,22 +15,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.SubCampaignPreview = void 0;
16
16
  var jsx_runtime_1 = require("react/jsx-runtime");
17
17
  var Add_1 = __importDefault(require("@mui/icons-material/Add"));
18
- var CheckCircle_1 = __importDefault(require("@mui/icons-material/CheckCircle"));
19
18
  var Delete_1 = __importDefault(require("@mui/icons-material/Delete"));
20
19
  var FileCopy_1 = __importDefault(require("@mui/icons-material/FileCopy"));
21
- var RemoveCircle_1 = __importDefault(require("@mui/icons-material/RemoveCircle"));
22
20
  var material_1 = require("@mui/material");
21
+ var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
22
+ var react_1 = require("react");
23
23
  var react_i18next_1 = require("react-i18next");
24
24
  var recoil_1 = require("recoil");
25
- var atoms_1 = require("./atoms");
26
- var react_1 = require("react");
27
25
  var AWING_1 = require("../../../../AWING");
28
- var Recoils_1 = require("../Recoils");
29
- var Helpers_1 = require("../../../../Utils/Helpers");
30
- var Utils_1 = require("../../Utils");
31
26
  var Context_1 = require("../../../../Context");
32
27
  var i18n_1 = __importDefault(require("../../../../i18n"));
33
- var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
28
+ var Helpers_1 = require("../../../../Utils/Helpers");
29
+ var Utils_1 = require("../../Utils");
30
+ var Recoils_1 = require("../Recoils");
31
+ var atoms_1 = require("./atoms");
34
32
  function SubCampaignList(props) {
35
33
  var onAdd = props.onAdd, onDelete = props.onDelete;
36
34
  var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
@@ -70,7 +68,7 @@ function SubCampaignPreview(_a) {
70
68
  var subCampaign = _a.subCampaign, isSelected = _a.isSelected, onSelect = _a.onSelect, onMultiSelect = _a.onMultiSelect, onDuplicate = _a.onDuplicate, onDelete = _a.onDelete, error = _a.error;
71
69
  var t = (0, react_i18next_1.useTranslation)().t;
72
70
  var today = (0, Helpers_1.getToday)();
73
- var isActive = ((_b = subCampaign.campaignGroup) === null || _b === void 0 ? void 0 : _b.ticket) === Enum_1.CampaignTicket.ACTIVE &&
71
+ var isActive = ((_b = subCampaign.campaignGroup) === null || _b === void 0 ? void 0 : _b.status) === Enum_1.CampaignStatus.Active &&
74
72
  ((_c = subCampaign.ads) === null || _c === void 0 ? void 0 : _c.some(function (ad) {
75
73
  return ad.status &&
76
74
  (0, Helpers_1.convertTimestampToDateTime)(ad.startDate) <= today &&
@@ -84,6 +82,40 @@ function SubCampaignPreview(_a) {
84
82
  numberHasRunText: t('Campaign.NumberHasRunText'),
85
83
  reserved: t('Campaign.Reserved'),
86
84
  };
85
+ var renderStatus = function () {
86
+ switch (subCampaign.campaignGroup.status) {
87
+ case Enum_1.CampaignStatus.Draft:
88
+ return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: t('Campaign.Status.Draft'), style: {
89
+ height: 18,
90
+ backgroundColor: Enum_1.ColorCampaignStatus.Draft,
91
+ color: 'white',
92
+ } }));
93
+ case Enum_1.CampaignStatus.Reserved:
94
+ return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: t('Campaign.Status.Reserved'), style: {
95
+ height: 18,
96
+ backgroundColor: Enum_1.ColorCampaignStatus.Reserved,
97
+ color: 'white',
98
+ } }));
99
+ case Enum_1.CampaignStatus.Pending:
100
+ return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: t('Campaign.Status.Pending'), style: {
101
+ height: 18,
102
+ backgroundColor: Enum_1.ColorCampaignStatus.UnderApproval,
103
+ color: 'white',
104
+ } }));
105
+ case Enum_1.CampaignStatus.Active:
106
+ return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: t('Campaign.Status.Active'), style: {
107
+ height: 18,
108
+ backgroundColor: isActive ? Enum_1.ColorCampaignStatus.Active : Enum_1.ColorCampaignStatus.UnActive,
109
+ color: 'white',
110
+ } }));
111
+ case Enum_1.CampaignStatus.Done:
112
+ return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: t('Campaign.Status.Done'), style: {
113
+ height: 18,
114
+ backgroundColor: Enum_1.ColorCampaignStatus.Done,
115
+ color: 'white',
116
+ } }));
117
+ }
118
+ };
87
119
  return ((0, jsx_runtime_1.jsxs)(material_1.Card, { sx: {
88
120
  width: 214,
89
121
  height: 124,
@@ -104,11 +136,7 @@ function SubCampaignPreview(_a) {
104
136
  fontWeight: '500',
105
137
  }, children: [subCampaign.campaignGroup.name.length > 30
106
138
  ? "".concat(subCampaign.campaignGroup.name.substring(0, 30), "...")
107
- : subCampaign.campaignGroup.name, subCampaign.campaignGroup.ticket ===
108
- Enum_1.CampaignTicket.ACTIVE ? ((0, jsx_runtime_1.jsx)(CheckCircle_1.default, { fontSize: "small", style: {
109
- fontSize: '14px',
110
- color: isActive ? '#008000' : '#8D8D8D',
111
- } })) : ((0, jsx_runtime_1.jsx)(RemoveCircle_1.default, { fontSize: "small", style: { fontSize: '14px' }, color: "primary" })), (0, jsx_runtime_1.jsx)(material_1.Typography, { component: 'span', sx: {
139
+ : subCampaign.campaignGroup.name, (0, jsx_runtime_1.jsx)(material_1.Typography, { component: 'span', sx: {
112
140
  fontFamily: '"Segoe UI Symbol", "Apple Symbols", "Noto Sans Symbols 2" !important',
113
141
  fontSize: 18,
114
142
  }, children: (0, Utils_1.getCampaignPriority)(subCampaign.campaignGroup.priority) })] }) }), action: (0, jsx_runtime_1.jsx)(AWING_1.Actions, { menus: __spreadArray([
@@ -131,10 +159,6 @@ function SubCampaignPreview(_a) {
131
159
  ? " (+".concat((0, Helpers_1.formatNumber)(subCampaign.campaignGroup.bonusAmount), ")")
132
160
  : '' })] }) }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: translationText.bonus, placement: "right", arrow: true, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "caption", children: subCampaign.campaignGroup.numberHasRun
133
161
  ? "".concat(translationText.numberHasRunText, ": ").concat((0, Helpers_1.formatNumber)(subCampaign.campaignGroup.numberHasRun))
134
- : '' }) })] }), (0, jsx_runtime_1.jsx)(material_1.CardActions, { style: { padding: '0 8px' }, children: subCampaign.campaignGroup.isReserved && ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: translationText.reserved, style: {
135
- height: 18,
136
- backgroundColor: '#c49f47',
137
- color: 'white',
138
- } })) })] }));
162
+ : '' }) })] }), (0, jsx_runtime_1.jsx)(material_1.CardActions, { style: { padding: '0 8px' }, children: renderStatus() })] }));
139
163
  }
140
164
  exports.SubCampaignPreview = SubCampaignPreview;
@@ -61,11 +61,10 @@ function TabSubCampaign() {
61
61
  campaignGroup: {
62
62
  id: newId,
63
63
  name: 'Sub-Campaign ' + newId,
64
- ticket: Enum_1.CampaignTicket.INACTIVE,
64
+ status: Enum_1.CampaignStatus.Draft,
65
65
  priority: Enum_1.CampaignPriority.ClassB,
66
66
  bookingAmount: 10,
67
67
  bonusAmount: 0,
68
- isReserved: false,
69
68
  billingUnit: Enum_2.AnalyticType.Authentication,
70
69
  },
71
70
  ads: [],
@@ -227,8 +227,8 @@ var CreateOrEdit = function (props) {
227
227
  subCampains[idx].ads[i].cantBeDelete = true;
228
228
  }
229
229
  }
230
- else if (subCamp.campaignGroup.ticket ===
231
- Enum_1.CampaignTicket.ACTIVE) {
230
+ else if (subCamp.campaignGroup.status ===
231
+ Enum_1.CampaignStatus.Active) {
232
232
  subCampains[idx].campaignGroup.cantBeDelete =
233
233
  true;
234
234
  for (var i = 0; i < subCamp.ads.length; i++) {
@@ -244,7 +244,7 @@ var CreateOrEdit = function (props) {
244
244
  campaignModel.campaign.name += ' - copy';
245
245
  campaignModel.campaign.createdDate = undefined;
246
246
  campaignModel.campaignGroups.forEach(function (g) {
247
- g.campaignGroup.ticket = Enum_1.CampaignTicket.INACTIVE;
247
+ g.campaignGroup.status = Enum_1.CampaignStatus.Draft;
248
248
  if (!service.attributesGetByObjectTypeCode)
249
249
  g.campaignGroup.billingUnit =
250
250
  Enum_2.AnalyticType.Authentication;