awing-library 2.1.223-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.
- package/lib/ACM-AXN/Campaign/Container.js +44 -27
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.d.ts +16 -7
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.js +71 -51
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.d.ts +0 -1
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.js +73 -95
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.d.ts +17 -4
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.js +140 -82
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +35 -28
- package/lib/ACM-AXN/Campaign/Enum.d.ts +8 -0
- package/lib/ACM-AXN/Campaign/Enum.js +9 -1
- package/lib/ACM-AXN/Campaign/Types.d.ts +4 -4
- package/lib/translate/en/translation.json +2 -1
- package/lib/translate/id/translation.json +2 -1
- package/lib/translate/vi/translation.json +3 -2
- package/package.json +1 -1
|
@@ -26,18 +26,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
27
|
var icons_material_1 = require("@mui/icons-material");
|
|
28
28
|
var material_1 = require("@mui/material");
|
|
29
|
-
var
|
|
29
|
+
var Constant_1 = require("../../ACM-AXN/Common/Constant");
|
|
30
30
|
var lodash_1 = require("lodash");
|
|
31
31
|
var react_1 = require("react");
|
|
32
32
|
var react_i18next_1 = require("react-i18next");
|
|
33
|
+
var AWING_1 = require("../../AWING");
|
|
33
34
|
var Router_1 = require("../../AWING/Router");
|
|
34
|
-
var Utils_1 = require("./Utils");
|
|
35
|
-
var Hooks_1 = __importDefault(require("./Hooks"));
|
|
36
|
-
var Enum_1 = require("./Enum");
|
|
37
35
|
var CopyButton_1 = __importDefault(require("../../Commons/Components/CopyButton"));
|
|
38
|
-
var Helpers_1 = require("../../Utils/Helpers");
|
|
39
|
-
var Constant_1 = require("../../ACM-AXN/Common/Constant");
|
|
40
36
|
var Context_1 = require("../../Context");
|
|
37
|
+
var Helpers_1 = require("../../Utils/Helpers");
|
|
38
|
+
var Enum_1 = require("./Enum");
|
|
39
|
+
var Hooks_1 = __importDefault(require("./Hooks"));
|
|
40
|
+
var Utils_1 = require("./Utils");
|
|
41
41
|
var CampaignContainer = function () {
|
|
42
42
|
var _a;
|
|
43
43
|
var t = (0, react_i18next_1.useTranslation)().t;
|
|
@@ -117,6 +117,42 @@ var CampaignContainer = function () {
|
|
|
117
117
|
var handleDelete = function (id) {
|
|
118
118
|
return service.campaignsDelete(id);
|
|
119
119
|
};
|
|
120
|
+
var renderStatus = function (row) {
|
|
121
|
+
var _a;
|
|
122
|
+
var statusConfig = (_a = {},
|
|
123
|
+
_a[Enum_1.CampaignStatus.Draft] = {
|
|
124
|
+
label: 'Campaign.Status.Draft',
|
|
125
|
+
color: Enum_1.ColorCampaignStatus.Draft
|
|
126
|
+
},
|
|
127
|
+
_a[Enum_1.CampaignStatus.Reserved] = {
|
|
128
|
+
label: 'Campaign.Status.Reserved',
|
|
129
|
+
color: Enum_1.ColorCampaignStatus.Reserved
|
|
130
|
+
},
|
|
131
|
+
_a[Enum_1.CampaignStatus.Pending] = {
|
|
132
|
+
label: 'Campaign.Status.Pending',
|
|
133
|
+
color: Enum_1.ColorCampaignStatus.UnderApproval
|
|
134
|
+
},
|
|
135
|
+
_a[Enum_1.CampaignStatus.Active] = {
|
|
136
|
+
label: 'Campaign.Status.Active',
|
|
137
|
+
color: function (row) { return (0, Utils_1.checkCampaignIsRunning)(row) ? Enum_1.ColorCampaignStatus.Active : Enum_1.ColorCampaignStatus.UnActive; }
|
|
138
|
+
},
|
|
139
|
+
_a[Enum_1.CampaignStatus.Done] = {
|
|
140
|
+
label: 'Campaign.Status.Done',
|
|
141
|
+
color: Enum_1.ColorCampaignStatus.Done
|
|
142
|
+
},
|
|
143
|
+
_a);
|
|
144
|
+
var status = row === null || row === void 0 ? void 0 : row.campaignGroup.status;
|
|
145
|
+
var config = statusConfig[status];
|
|
146
|
+
if (!config)
|
|
147
|
+
return null;
|
|
148
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: t(config.label), style: {
|
|
149
|
+
height: 18,
|
|
150
|
+
backgroundColor: typeof config.color === 'function' ? config.color(row) : config.color,
|
|
151
|
+
color: 'white',
|
|
152
|
+
marginBottom: '4px',
|
|
153
|
+
marginLeft: '4px'
|
|
154
|
+
} }));
|
|
155
|
+
};
|
|
120
156
|
return ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
121
157
|
'& tr[data-row="sub-row"]': {
|
|
122
158
|
cursor: 'default!important',
|
|
@@ -208,31 +244,12 @@ var CampaignContainer = function () {
|
|
|
208
244
|
: icons_material_1.KeyboardArrowDown }) })] }));
|
|
209
245
|
}
|
|
210
246
|
else {
|
|
211
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { style: { paddingLeft: '32px' }, children: [(0, jsx_runtime_1.jsx)("span", { children: row === null || row === void 0 ? void 0 : row.campaignGroup.name }), (
|
|
212
|
-
Enum_1.ACTIVE_CAMPAIGN_TICKET ? ((0, jsx_runtime_1.jsx)(icons_material_1.CheckCircle, { fontSize: 'small', sx: {
|
|
213
|
-
paddingLeft: '4px',
|
|
214
|
-
marginBottom: '-4px',
|
|
215
|
-
}, style: {
|
|
216
|
-
color: (0, Utils_1.checkCampaignIsRunning)(row)
|
|
217
|
-
? '#008000'
|
|
218
|
-
: '#8D8D8D',
|
|
219
|
-
} })) : ((0, jsx_runtime_1.jsx)(icons_material_1.RemoveCircle, { fontSize: 'small', sx: {
|
|
220
|
-
paddingLeft: '4px',
|
|
221
|
-
marginBottom: '-4px',
|
|
222
|
-
}, color: "primary" })), (0, jsx_runtime_1.jsx)(material_1.Typography, { component: 'span', sx: {
|
|
247
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { style: { paddingLeft: '32px' }, children: [(0, jsx_runtime_1.jsx)("span", { children: row === null || row === void 0 ? void 0 : row.campaignGroup.name }), (0, jsx_runtime_1.jsx)(material_1.Typography, { component: 'span', sx: {
|
|
223
248
|
color: '#000',
|
|
224
249
|
fontSize: '1.1rem',
|
|
225
250
|
marginLeft: '8px',
|
|
226
251
|
fontFamily: '"Segoe UI Symbol", "Apple Symbols", "Noto Sans Symbols 2" !important',
|
|
227
|
-
}, children: (0, Utils_1.getCampaignPriority)(row === null || row === void 0 ? void 0 : row.campaignGroup.priority) }),
|
|
228
|
-
//Check trong ads có bất kỳ ad nào isReverved
|
|
229
|
-
(row === null || row === void 0 ? void 0 : row.campaignGroup.status) === Enum_1.CampaignStatus.Reserved && ((0, jsx_runtime_1.jsx)(material_1.Chip, { sx: {
|
|
230
|
-
backgroundColor: '#c49f47',
|
|
231
|
-
color: '#fff',
|
|
232
|
-
height: '18px',
|
|
233
|
-
marginBottom: '.1rem',
|
|
234
|
-
marginLeft: '4px',
|
|
235
|
-
}, size: "small", label: t('Campaign.Reserved') }))] }));
|
|
252
|
+
}, children: (0, Utils_1.getCampaignPriority)(row === null || row === void 0 ? void 0 : row.campaignGroup.priority) }), renderStatus(row)] }));
|
|
236
253
|
}
|
|
237
254
|
},
|
|
238
255
|
},
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ICammpaignItem, IDataTable, IDetail } from '.';
|
|
3
|
+
interface TableRowProps {
|
|
4
|
+
row: IDataTable;
|
|
5
|
+
link: IDetail;
|
|
6
|
+
sub: ICammpaignItem;
|
|
7
|
+
linkIndex: number;
|
|
8
|
+
subIndex: number;
|
|
9
|
+
rowSelected: number[];
|
|
10
|
+
handleRowSelect: (id: number) => void;
|
|
11
|
+
updateRow: (row: {
|
|
12
|
+
status: number;
|
|
13
|
+
description: string;
|
|
14
|
+
}, id: number) => void;
|
|
6
15
|
}
|
|
7
|
-
|
|
8
|
-
export
|
|
16
|
+
declare const TableRowMemo: React.FC<TableRowProps>;
|
|
17
|
+
export default TableRowMemo;
|
|
@@ -1,73 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
12
24
|
};
|
|
13
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.RowTable = void 0;
|
|
15
26
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
16
28
|
var material_1 = require("@mui/material");
|
|
17
|
-
var react_1 = require("react");
|
|
18
29
|
var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
|
|
19
30
|
var react_i18next_1 = require("react-i18next");
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
|
|
26
|
-
width: 250,
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
function RowTable(props) {
|
|
31
|
-
var _a, _b;
|
|
32
|
-
var row = props.row, updateRow = props.updateRow, id = props.id;
|
|
31
|
+
var TableRowMemo = react_1.default.memo(function (_a) {
|
|
32
|
+
var _b, _c;
|
|
33
|
+
var row = _a.row, link = _a.link, sub = _a.sub, linkIndex = _a.linkIndex, subIndex = _a.subIndex, rowSelected = _a.rowSelected, handleRowSelect = _a.handleRowSelect, updateRow = _a.updateRow;
|
|
34
|
+
var _d = (0, react_1.useState)((_b = link.status) !== null && _b !== void 0 ? _b : Enum_1.CampaignApprovalStatus.PendingApproval), selectStatus = _d[0], setSelectStatus = _d[1];
|
|
35
|
+
var _e = (0, react_1.useState)((_c = link.description) !== null && _c !== void 0 ? _c : ''), valueInput = _e[0], setValueInput = _e[1];
|
|
33
36
|
var t = (0, react_i18next_1.useTranslation)().t;
|
|
34
|
-
var _c = (0, react_1.useState)((_a = row === null || row === void 0 ? void 0 : row.status) !== null && _a !== void 0 ? _a : Enum_1.CampaignApprovalStatus.PendingApproval), selectStatus = _c[0], setSelectStatus = _c[1];
|
|
35
|
-
var _d = (0, react_1.useState)((_b = row === null || row === void 0 ? void 0 : row.description) !== null && _b !== void 0 ? _b : ''), valueInput = _d[0], setValueInput = _d[1];
|
|
36
37
|
var optionsStatus = (0, react_1.useMemo)(function () {
|
|
37
38
|
return [
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
{
|
|
40
|
+
value: Enum_1.CampaignApprovalStatus.PendingApproval,
|
|
41
|
+
label: t('Campaign.Approval.PendingApproval'),
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
value: Enum_1.CampaignApprovalStatus.Approval,
|
|
45
|
+
label: t('Campaign.Approval.Approval'),
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
value: Enum_1.CampaignApprovalStatus.Rejected,
|
|
49
|
+
label: t('Campaign.Approval.Rejected'),
|
|
50
|
+
},
|
|
41
51
|
];
|
|
42
52
|
}, []);
|
|
43
53
|
var handleStatusChange = (0, react_1.useCallback)(function (value) {
|
|
44
54
|
var newStatus = value;
|
|
45
55
|
setSelectStatus(newStatus);
|
|
46
|
-
updateRow(
|
|
47
|
-
|
|
56
|
+
updateRow({
|
|
57
|
+
status: newStatus,
|
|
58
|
+
description: valueInput
|
|
59
|
+
}, row.id);
|
|
60
|
+
}, [row, link]);
|
|
48
61
|
var handleInputChange = (0, react_1.useCallback)(function (event) {
|
|
49
62
|
var newValue = event.target.value;
|
|
50
63
|
setValueInput(newValue);
|
|
51
|
-
updateRow(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
updateRow({
|
|
65
|
+
status: selectStatus,
|
|
66
|
+
description: newValue
|
|
67
|
+
}, row.id);
|
|
68
|
+
}, [row, link]);
|
|
69
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [linkIndex === 0 && subIndex === 0 && ((0, jsx_runtime_1.jsx)(material_1.TableCell, { rowSpan: row.detail.reduce(function (acc, curr) { return acc + curr.campaign.length; }, 0), 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 === row.id; }), color: "primary", onChange: function () { return handleRowSelect(row.id); } }) }) })), linkIndex === 0 && subIndex === 0 && ((0, jsx_runtime_1.jsx)(material_1.TableCell, { rowSpan: row.detail.reduce(function (acc, curr) { return acc + curr.campaign.length; }, 0), children: row.domain.domainName })), subIndex === 0 && ((0, jsx_runtime_1.jsx)(material_1.TableCell, { rowSpan: link.campaign.length, style: { maxWidth: 400 }, children: (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
70
|
+
display: '-webkit-box',
|
|
71
|
+
WebkitLineClamp: 2,
|
|
72
|
+
WebkitBoxOrient: 'vertical',
|
|
73
|
+
overflow: 'hidden',
|
|
74
|
+
textOverflow: 'ellipsis',
|
|
75
|
+
}, children: (0, jsx_runtime_1.jsx)(material_1.Link, { href: link.linkPreview, sx: {
|
|
76
|
+
wordWrap: 'break-word',
|
|
77
|
+
wordBreak: 'break-all',
|
|
78
|
+
color: 'blue',
|
|
79
|
+
textDecorationColor: 'unset',
|
|
80
|
+
}, underline: "hover", target: "_blank", children: link.linkPreview }) }) })), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
81
|
+
display: 'flex',
|
|
82
|
+
flexWrap: 'wrap',
|
|
83
|
+
gap: '8px',
|
|
84
|
+
}, children: sub.subCampaigns.map(function (subCampaign) { return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: subCampaign.name }, subCampaign.id)); }) }) }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
66
85
|
display: 'flex',
|
|
67
86
|
flexWrap: 'wrap',
|
|
68
87
|
gap: '8px',
|
|
69
|
-
}, children:
|
|
88
|
+
}, children: sub.ads.map(function (ad) { return ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: ad.name }, ad.id)); }) }) }), subIndex === 0 && ((0, jsx_runtime_1.jsx)(material_1.TableCell, { rowSpan: link.campaign.length, children: (0, jsx_runtime_1.jsx)(material_1.FormControl, { sx: { m: 1, width: 300 }, children: (0, jsx_runtime_1.jsx)(material_1.Select, { value: selectStatus, onChange: function (e) {
|
|
70
89
|
return handleStatusChange(e.target.value);
|
|
71
|
-
},
|
|
72
|
-
}
|
|
73
|
-
|
|
90
|
+
}, children: optionsStatus.map(function (item) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: item.value, children: item.label }, item.value)); }) }) }) })), subIndex === 0 && ((0, jsx_runtime_1.jsx)(material_1.TableCell, { rowSpan: link.campaign.length, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { value: valueInput, onChange: handleInputChange }) }))] }, "".concat(row.id, "-").concat(linkIndex, "-").concat(subIndex)));
|
|
91
|
+
});
|
|
92
|
+
TableRowMemo.displayName = 'TableRowMemo';
|
|
93
|
+
exports.default = TableRowMemo;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,96 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
renderUi();
|
|
76
|
-
var select = react_1.screen.getByRole('combobox');
|
|
77
|
-
expect(select).toHaveValue('0');
|
|
78
|
-
});
|
|
79
|
-
it('changes the select value when a new option is chosen', function () {
|
|
80
|
-
renderUi();
|
|
81
|
-
var select = react_1.screen.getByRole('combobox');
|
|
82
|
-
react_1.fireEvent.change(select, { target: { value: 0 } });
|
|
83
|
-
expect(select).toHaveValue('0');
|
|
84
|
-
});
|
|
85
|
-
it('renders the text field with the initial note', function () {
|
|
86
|
-
renderUi();
|
|
87
|
-
var textField = react_1.screen.getByRole('textbox');
|
|
88
|
-
expect(textField).toHaveValue('Initial note');
|
|
89
|
-
});
|
|
90
|
-
it('updates the text field value when typed into', function () {
|
|
91
|
-
renderUi();
|
|
92
|
-
var textField = react_1.screen.getByRole('textbox');
|
|
93
|
-
react_1.fireEvent.change(textField, { target: { value: 'New note' } });
|
|
94
|
-
expect(textField).toHaveValue('New note');
|
|
95
|
-
});
|
|
96
|
-
});
|
|
2
|
+
// import { fireEvent, render, screen } from '@testing-library/react'
|
|
3
|
+
// import { RowTable } from './RowTable'
|
|
4
|
+
// jest.mock('react-i18next', () => ({
|
|
5
|
+
// useTranslation: () => ({ t: (key: any) => key }),
|
|
6
|
+
// }))
|
|
7
|
+
// // Mock the MUI components
|
|
8
|
+
// jest.mock('@mui/material', () => ({
|
|
9
|
+
// ...jest.requireActual('@mui/material'),
|
|
10
|
+
// TableRow: ({ children }: any) => <tr>{children}</tr>,
|
|
11
|
+
// TableCell: ({ children }: any) => <td>{children}</td>,
|
|
12
|
+
// Box: ({ children }: any) => <div>{children}</div>,
|
|
13
|
+
// Link: ({ children, href }: any) => <a href={href}>{children}</a>,
|
|
14
|
+
// Chip: ({ label }: any) => <span>{label}</span>,
|
|
15
|
+
// FormControl: ({ children }: any) => <div>{children}</div>,
|
|
16
|
+
// Select: ({ children, value, onChange }: any) => (
|
|
17
|
+
// <select value={value} onChange={onChange}>
|
|
18
|
+
// {children}
|
|
19
|
+
// </select>
|
|
20
|
+
// ),
|
|
21
|
+
// MenuItem: ({ children, value }: any) => (
|
|
22
|
+
// <option value={value}>{children}</option>
|
|
23
|
+
// ),
|
|
24
|
+
// TextField: ({ value, onChange }: any) => (
|
|
25
|
+
// <input type="text" value={value} onChange={onChange} />
|
|
26
|
+
// ),
|
|
27
|
+
// }))
|
|
28
|
+
// const mockRow = {
|
|
29
|
+
// id: 1,
|
|
30
|
+
// linkPreview: 'https://example.com',
|
|
31
|
+
// subCampaigns: [
|
|
32
|
+
// { id: '1', name: 'Campaign 1' },
|
|
33
|
+
// { id: '2', name: 'Campaign 2' },
|
|
34
|
+
// ],
|
|
35
|
+
// description: 'Initial note',
|
|
36
|
+
// status: 0,
|
|
37
|
+
// }
|
|
38
|
+
// const renderUi = () =>
|
|
39
|
+
// render(<RowTable row={mockRow} id={1} updateRow={() => {}} />)
|
|
40
|
+
// describe('RowTable', () => {
|
|
41
|
+
// it('renders the link correctly', () => {
|
|
42
|
+
// renderUi()
|
|
43
|
+
// const link = screen.getByRole('link', { name: 'https://example.com' })
|
|
44
|
+
// expect(link).toBeInTheDocument()
|
|
45
|
+
// expect(link).toHaveAttribute('href', 'https://example.com')
|
|
46
|
+
// })
|
|
47
|
+
// it('renders sub-campaigns as chips', () => {
|
|
48
|
+
// renderUi()
|
|
49
|
+
// expect(screen.getByText('Campaign 1')).toBeInTheDocument()
|
|
50
|
+
// expect(screen.getByText('Campaign 2')).toBeInTheDocument()
|
|
51
|
+
// })
|
|
52
|
+
// it('renders the select with correct initial value', () => {
|
|
53
|
+
// renderUi()
|
|
54
|
+
// const select = screen.getByRole('combobox')
|
|
55
|
+
// expect(select).toHaveValue('0')
|
|
56
|
+
// })
|
|
57
|
+
// it('changes the select value when a new option is chosen', () => {
|
|
58
|
+
// renderUi()
|
|
59
|
+
// const select = screen.getByRole('combobox')
|
|
60
|
+
// fireEvent.change(select, { target: { value: 0 } })
|
|
61
|
+
// expect(select).toHaveValue('0')
|
|
62
|
+
// })
|
|
63
|
+
// it('renders the text field with the initial note', () => {
|
|
64
|
+
// renderUi()
|
|
65
|
+
// const textField = screen.getByRole('textbox')
|
|
66
|
+
// expect(textField).toHaveValue('Initial note')
|
|
67
|
+
// })
|
|
68
|
+
// it('updates the text field value when typed into', () => {
|
|
69
|
+
// renderUi()
|
|
70
|
+
// const textField = screen.getByRole('textbox')
|
|
71
|
+
// fireEvent.change(textField, { target: { value: 'New note' } })
|
|
72
|
+
// expect(textField).toHaveValue('New note')
|
|
73
|
+
// })
|
|
74
|
+
// })
|
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
interface
|
|
2
|
-
id
|
|
3
|
-
name
|
|
1
|
+
interface IItem {
|
|
2
|
+
id?: number;
|
|
3
|
+
name?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ICammpaignItem {
|
|
6
|
+
subCampaigns: IItem[];
|
|
7
|
+
ads: IItem[];
|
|
4
8
|
}
|
|
5
9
|
export interface IDetail {
|
|
6
10
|
id?: number;
|
|
7
11
|
status: number;
|
|
8
12
|
linkPreview: string;
|
|
9
|
-
subCampaigns
|
|
13
|
+
subCampaigns?: IItem[];
|
|
14
|
+
campaign: ICammpaignItem[];
|
|
10
15
|
description: string;
|
|
11
16
|
}
|
|
17
|
+
export interface IDataTable {
|
|
18
|
+
id: number;
|
|
19
|
+
domain: {
|
|
20
|
+
domainName?: string;
|
|
21
|
+
domainId?: string;
|
|
22
|
+
};
|
|
23
|
+
detail: IDetail[];
|
|
24
|
+
}
|
|
12
25
|
export default function TabApprove(): import("react/jsx-runtime").JSX.Element;
|
|
13
26
|
export {};
|
|
@@ -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,
|
|
70
|
-
var
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
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:
|
|
80
|
-
|
|
81
|
-
status:
|
|
82
|
-
|
|
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
|
-
|
|
112
|
+
linkPreview: renderLinkPreview(ad, domainId),
|
|
113
|
+
campaign: [
|
|
100
114
|
{
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
157
|
-
}
|
|
158
|
-
var
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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:
|
|
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:
|
|
175
|
-
|
|
176
|
-
return ({
|
|
209
|
+
detail: [
|
|
210
|
+
{
|
|
177
211
|
id: generateRandomId(),
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
|
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(
|
|
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.
|
|
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.
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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;
|
|
@@ -15,25 +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 WatchLater_1 = __importDefault(require("@mui/icons-material/WatchLater"));
|
|
22
|
-
var HourglassBottom_1 = __importDefault(require("@mui/icons-material/HourglassBottom"));
|
|
23
|
-
var HighlightOff_1 = __importDefault(require("@mui/icons-material/HighlightOff"));
|
|
24
|
-
var RemoveCircle_1 = __importDefault(require("@mui/icons-material/RemoveCircle"));
|
|
25
20
|
var material_1 = require("@mui/material");
|
|
21
|
+
var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
|
|
22
|
+
var react_1 = require("react");
|
|
26
23
|
var react_i18next_1 = require("react-i18next");
|
|
27
24
|
var recoil_1 = require("recoil");
|
|
28
|
-
var atoms_1 = require("./atoms");
|
|
29
|
-
var react_1 = require("react");
|
|
30
25
|
var AWING_1 = require("../../../../AWING");
|
|
31
|
-
var Recoils_1 = require("../Recoils");
|
|
32
|
-
var Helpers_1 = require("../../../../Utils/Helpers");
|
|
33
|
-
var Utils_1 = require("../../Utils");
|
|
34
26
|
var Context_1 = require("../../../../Context");
|
|
35
27
|
var i18n_1 = __importDefault(require("../../../../i18n"));
|
|
36
|
-
var
|
|
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");
|
|
37
32
|
function SubCampaignList(props) {
|
|
38
33
|
var onAdd = props.onAdd, onDelete = props.onDelete;
|
|
39
34
|
var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
|
|
@@ -87,21 +82,38 @@ function SubCampaignPreview(_a) {
|
|
|
87
82
|
numberHasRunText: t('Campaign.NumberHasRunText'),
|
|
88
83
|
reserved: t('Campaign.Reserved'),
|
|
89
84
|
};
|
|
90
|
-
var
|
|
85
|
+
var renderStatus = function () {
|
|
91
86
|
switch (subCampaign.campaignGroup.status) {
|
|
92
|
-
case Enum_1.CampaignStatus.
|
|
93
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
94
|
-
|
|
95
|
-
|
|
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',
|
|
96
92
|
} }));
|
|
97
93
|
case Enum_1.CampaignStatus.Reserved:
|
|
98
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
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
99
|
case Enum_1.CampaignStatus.Pending:
|
|
100
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
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
|
+
} }));
|
|
101
111
|
case Enum_1.CampaignStatus.Done:
|
|
102
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
103
|
-
|
|
104
|
-
|
|
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
|
+
} }));
|
|
105
117
|
}
|
|
106
118
|
};
|
|
107
119
|
return ((0, jsx_runtime_1.jsxs)(material_1.Card, { sx: {
|
|
@@ -124,7 +136,7 @@ function SubCampaignPreview(_a) {
|
|
|
124
136
|
fontWeight: '500',
|
|
125
137
|
}, children: [subCampaign.campaignGroup.name.length > 30
|
|
126
138
|
? "".concat(subCampaign.campaignGroup.name.substring(0, 30), "...")
|
|
127
|
-
: subCampaign.campaignGroup.name,
|
|
139
|
+
: subCampaign.campaignGroup.name, (0, jsx_runtime_1.jsx)(material_1.Typography, { component: 'span', sx: {
|
|
128
140
|
fontFamily: '"Segoe UI Symbol", "Apple Symbols", "Noto Sans Symbols 2" !important',
|
|
129
141
|
fontSize: 18,
|
|
130
142
|
}, children: (0, Utils_1.getCampaignPriority)(subCampaign.campaignGroup.priority) })] }) }), action: (0, jsx_runtime_1.jsx)(AWING_1.Actions, { menus: __spreadArray([
|
|
@@ -147,11 +159,6 @@ function SubCampaignPreview(_a) {
|
|
|
147
159
|
? " (+".concat((0, Helpers_1.formatNumber)(subCampaign.campaignGroup.bonusAmount), ")")
|
|
148
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
|
|
149
161
|
? "".concat(translationText.numberHasRunText, ": ").concat((0, Helpers_1.formatNumber)(subCampaign.campaignGroup.numberHasRun))
|
|
150
|
-
: '' }) })] }), (0, jsx_runtime_1.jsx)(material_1.CardActions, { style: { padding: '0 8px' }, children:
|
|
151
|
-
Enum_1.CampaignStatus.Reserved && ((0, jsx_runtime_1.jsx)(material_1.Chip, { label: translationText.reserved, style: {
|
|
152
|
-
height: 18,
|
|
153
|
-
backgroundColor: '#c49f47',
|
|
154
|
-
color: 'white',
|
|
155
|
-
} })) })] }));
|
|
162
|
+
: '' }) })] }), (0, jsx_runtime_1.jsx)(material_1.CardActions, { style: { padding: '0 8px' }, children: renderStatus() })] }));
|
|
156
163
|
}
|
|
157
164
|
exports.SubCampaignPreview = SubCampaignPreview;
|
|
@@ -184,3 +184,11 @@ export declare enum CampaignApprovalStatus {
|
|
|
184
184
|
Approval = 1,
|
|
185
185
|
Rejected = 2
|
|
186
186
|
}
|
|
187
|
+
export declare const ColorCampaignStatus: {
|
|
188
|
+
Draft: string;
|
|
189
|
+
Reserved: string;
|
|
190
|
+
UnderApproval: string;
|
|
191
|
+
Active: string;
|
|
192
|
+
UnActive: string;
|
|
193
|
+
Done: string;
|
|
194
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.CampaignApprovalStatus = exports.Operator = exports.CampaignRuleType = exports.AdType = exports.ACTIVE_CAMPAIGN_TICKET = exports.CampaignStatus = exports.BaseEvent = exports.CampaignPriority = exports.DATE_FORMAT = exports.PlaceFilterOperandType = exports.DirectoryRoot = exports.CAMPAIGN_ANALYTIC_TYPE = exports.CAMPAIGN_STATUS = exports.EnumOperator = void 0;
|
|
4
|
+
exports.ColorCampaignStatus = exports.CampaignApprovalStatus = exports.Operator = exports.CampaignRuleType = exports.AdType = exports.ACTIVE_CAMPAIGN_TICKET = exports.CampaignStatus = exports.BaseEvent = exports.CampaignPriority = exports.DATE_FORMAT = exports.PlaceFilterOperandType = exports.DirectoryRoot = exports.CAMPAIGN_ANALYTIC_TYPE = exports.CAMPAIGN_STATUS = exports.EnumOperator = void 0;
|
|
5
5
|
var Enum_1 = require("../../ACM-AXN/Common/Enum");
|
|
6
6
|
exports.EnumOperator = {
|
|
7
7
|
Equality: { id: 0, text: "=", value: "Equality", type: "Comparison" },
|
|
@@ -173,3 +173,11 @@ var CampaignApprovalStatus;
|
|
|
173
173
|
CampaignApprovalStatus[CampaignApprovalStatus["Approval"] = 1] = "Approval";
|
|
174
174
|
CampaignApprovalStatus[CampaignApprovalStatus["Rejected"] = 2] = "Rejected";
|
|
175
175
|
})(CampaignApprovalStatus || (exports.CampaignApprovalStatus = CampaignApprovalStatus = {}));
|
|
176
|
+
exports.ColorCampaignStatus = {
|
|
177
|
+
Draft: '#B0BEC5',
|
|
178
|
+
Reserved: '#FFD54F',
|
|
179
|
+
UnderApproval: '#FF7043',
|
|
180
|
+
Active: '#4CAF50',
|
|
181
|
+
UnActive: '#8D8D8D',
|
|
182
|
+
Done: '#1E88E5'
|
|
183
|
+
};
|
|
@@ -216,10 +216,10 @@ export type CampaignApproval = {
|
|
|
216
216
|
id?: number;
|
|
217
217
|
campaignId?: string;
|
|
218
218
|
domainId?: string;
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
status
|
|
222
|
-
description
|
|
219
|
+
subId?: number;
|
|
220
|
+
adId?: number;
|
|
221
|
+
status: number;
|
|
222
|
+
description: string;
|
|
223
223
|
};
|
|
224
224
|
export type DateRange = {
|
|
225
225
|
startDate: Date;
|
|
@@ -509,13 +509,14 @@
|
|
|
509
509
|
"GetApprovalInformation": "Lấy thông tin phê duyệt",
|
|
510
510
|
"SendEmail": "Gửi Email",
|
|
511
511
|
"Domain": "Domain",
|
|
512
|
-
"LinkPreview": "
|
|
512
|
+
"LinkPreview": "Xem trước liên kết",
|
|
513
513
|
"SubCampaign": "Chiến dịch con",
|
|
514
514
|
"Status": "Trạng thái",
|
|
515
515
|
"Note": "Ghi chú",
|
|
516
516
|
"PendingApproval": "Chờ duyệt",
|
|
517
517
|
"Approval": "Duyệt",
|
|
518
|
-
"Rejected": "Hủy"
|
|
518
|
+
"Rejected": "Hủy",
|
|
519
|
+
"Advertisement": "Quảng cáo"
|
|
519
520
|
}
|
|
520
521
|
},
|
|
521
522
|
"TemplateManagement": {
|