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.
- package/lib/ACM-AXN/Campaign/Container.js +48 -48
- package/lib/ACM-AXN/Campaign/Container.test.js +1 -3
- package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +1 -2
- 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/TabApprove/index.test.js +2 -4
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/EditAds.js +5 -5
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +30 -33
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +3 -13
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +43 -19
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +1 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +3 -3
- package/lib/ACM-AXN/Campaign/Enum.d.ts +15 -4
- package/lib/ACM-AXN/Campaign/Enum.js +18 -7
- package/lib/ACM-AXN/Campaign/Types.d.ts +6 -8
- package/lib/ACM-AXN/Campaign/Utils.js +1 -1
- package/lib/translate/en/translation.json +8 -2
- package/lib/translate/id/translation.json +8 -2
- package/lib/translate/vi/translation.json +9 -3
- 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;
|
|
@@ -63,7 +63,7 @@ var CampaignContainer = function () {
|
|
|
63
63
|
var getCampaign = (0, react_1.useCallback)(function (params) {
|
|
64
64
|
var advancedObject = params.advancedObject, id = params.id, searchString = params.searchString, pageIndex = params.pageIndex, pageSize = params.pageSize;
|
|
65
65
|
setCollapseId([]);
|
|
66
|
-
var _a = advancedObject || {}, directoryId = _a.directoryId,
|
|
66
|
+
var _a = advancedObject || {}, directoryId = _a.directoryId, priority = _a.priority, status = _a.status, type = _a.type;
|
|
67
67
|
var startDate = '';
|
|
68
68
|
var endDate = '';
|
|
69
69
|
if (advancedObject === null || advancedObject === void 0 ? void 0 : advancedObject.date) {
|
|
@@ -80,10 +80,9 @@ var CampaignContainer = function () {
|
|
|
80
80
|
endDate: endDate,
|
|
81
81
|
pageIndex: pageIndex,
|
|
82
82
|
pageSize: pageSize,
|
|
83
|
-
isReserved: isReserved,
|
|
84
83
|
// placeIds: ,
|
|
85
84
|
priorities: priority && [priority],
|
|
86
|
-
status: status
|
|
85
|
+
status: status !== undefined ? [status] : undefined,
|
|
87
86
|
types: type && [type],
|
|
88
87
|
})
|
|
89
88
|
.then(setListCampaign)
|
|
@@ -118,6 +117,42 @@ var CampaignContainer = function () {
|
|
|
118
117
|
var handleDelete = function (id) {
|
|
119
118
|
return service.campaignsDelete(id);
|
|
120
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
|
+
};
|
|
121
156
|
return ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
122
157
|
'& tr[data-row="sub-row"]': {
|
|
123
158
|
cursor: 'default!important',
|
|
@@ -135,11 +170,11 @@ var CampaignContainer = function () {
|
|
|
135
170
|
label: t('Campaign.AdvanceSearchStatus'),
|
|
136
171
|
type: 'autocomplete',
|
|
137
172
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Place, { fontSize: "small" }),
|
|
138
|
-
options: Object.entries(Enum_1.
|
|
173
|
+
options: Object.entries(Enum_1.CampaignStatus).filter(function (item) { return !isNaN(Number(item[1])); }).map(function (_a) {
|
|
139
174
|
var key = _a[0], value = _a[1];
|
|
140
175
|
return ({
|
|
141
176
|
value: value,
|
|
142
|
-
text: t(['Campaign', key].join('.')),
|
|
177
|
+
text: t(['Campaign.Status', key].join('.')),
|
|
143
178
|
});
|
|
144
179
|
}),
|
|
145
180
|
},
|
|
@@ -169,22 +204,6 @@ var CampaignContainer = function () {
|
|
|
169
204
|
});
|
|
170
205
|
}),
|
|
171
206
|
},
|
|
172
|
-
{
|
|
173
|
-
fieldName: 'isReserved',
|
|
174
|
-
label: t('Campaign.AdvanceSearchType'),
|
|
175
|
-
type: 'autocomplete',
|
|
176
|
-
icon: (0, jsx_runtime_1.jsx)(icons_material_1.BookmarkBorder, { fontSize: "small" }),
|
|
177
|
-
options: [
|
|
178
|
-
{
|
|
179
|
-
value: true,
|
|
180
|
-
text: t('Campaign.Reserved'),
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
value: false,
|
|
184
|
-
text: t('Campaign.NoneReserved'),
|
|
185
|
-
},
|
|
186
|
-
],
|
|
187
|
-
},
|
|
188
207
|
{
|
|
189
208
|
fieldName: 'directoryId',
|
|
190
209
|
label: t('Common.Directory'),
|
|
@@ -225,31 +244,12 @@ var CampaignContainer = function () {
|
|
|
225
244
|
: icons_material_1.KeyboardArrowDown }) })] }));
|
|
226
245
|
}
|
|
227
246
|
else {
|
|
228
|
-
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 }), (
|
|
229
|
-
Enum_1.ACTIVE_CAMPAIGN_TICKET ? ((0, jsx_runtime_1.jsx)(icons_material_1.CheckCircle, { fontSize: 'small', sx: {
|
|
230
|
-
paddingLeft: '4px',
|
|
231
|
-
marginBottom: '-4px',
|
|
232
|
-
}, style: {
|
|
233
|
-
color: (0, Utils_1.checkCampaignIsRunning)(row)
|
|
234
|
-
? '#008000'
|
|
235
|
-
: '#8D8D8D',
|
|
236
|
-
} })) : ((0, jsx_runtime_1.jsx)(icons_material_1.RemoveCircle, { fontSize: 'small', sx: {
|
|
237
|
-
paddingLeft: '4px',
|
|
238
|
-
marginBottom: '-4px',
|
|
239
|
-
}, 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: {
|
|
240
248
|
color: '#000',
|
|
241
249
|
fontSize: '1.1rem',
|
|
242
250
|
marginLeft: '8px',
|
|
243
251
|
fontFamily: '"Segoe UI Symbol", "Apple Symbols", "Noto Sans Symbols 2" !important',
|
|
244
|
-
}, children: (0, Utils_1.getCampaignPriority)(row === null || row === void 0 ? void 0 : row.campaignGroup.priority) }),
|
|
245
|
-
//Check trong ads có bất kỳ ad nào isReverved
|
|
246
|
-
(row === null || row === void 0 ? void 0 : row.campaignGroup.isReserved) && ((0, jsx_runtime_1.jsx)(material_1.Chip, { sx: {
|
|
247
|
-
backgroundColor: '#c49f47',
|
|
248
|
-
color: '#fff',
|
|
249
|
-
height: '18px',
|
|
250
|
-
marginBottom: '.1rem',
|
|
251
|
-
marginLeft: '4px',
|
|
252
|
-
}, size: "small", label: t('Campaign.Reserved') }))] }));
|
|
252
|
+
}, children: (0, Utils_1.getCampaignPriority)(row === null || row === void 0 ? void 0 : row.campaignGroup.priority) }), renderStatus(row)] }));
|
|
253
253
|
}
|
|
254
254
|
},
|
|
255
255
|
},
|
|
@@ -85,11 +85,10 @@ var resData = {
|
|
|
85
85
|
id: 1,
|
|
86
86
|
campaignId: '5111120384159200990',
|
|
87
87
|
name: 'Lotusa',
|
|
88
|
-
|
|
88
|
+
status: 1,
|
|
89
89
|
priority: 0,
|
|
90
90
|
bookingAmount: 0,
|
|
91
91
|
bonusAmount: 0,
|
|
92
|
-
isReserved: false,
|
|
93
92
|
},
|
|
94
93
|
ads: [
|
|
95
94
|
{
|
|
@@ -250,7 +249,6 @@ jest.mock('AWING/PageManagement', function () { return ({
|
|
|
250
249
|
props.onChangeQueryInput({
|
|
251
250
|
advancedObject: {
|
|
252
251
|
status: '0',
|
|
253
|
-
isReserved: true,
|
|
254
252
|
priority: '0',
|
|
255
253
|
type: '1',
|
|
256
254
|
directoryId: '4684432198852342857',
|
|
@@ -52,10 +52,9 @@ exports.campaignModelState = (0, recoil_1.atom)({
|
|
|
52
52
|
id: 1,
|
|
53
53
|
name: 'Sub-Campaign 1',
|
|
54
54
|
priority: (0, Utils_1.getIndexPriority)(Enum_1.CampaignPriority.ClassB),
|
|
55
|
-
|
|
55
|
+
status: Enum_1.CampaignStatus.Draft,
|
|
56
56
|
bookingAmount: 10,
|
|
57
57
|
bonusAmount: 0,
|
|
58
|
-
isReserved: false,
|
|
59
58
|
billingUnit: 1,
|
|
60
59
|
},
|
|
61
60
|
ads: [],
|
|
@@ -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 {};
|