awing-library 2.1.226-dev → 2.1.228-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/CreateOrEdit/Recoils.d.ts +2 -1
- package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +5 -1
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.d.ts +4 -4
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.d.ts +2 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.js +322 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.d.ts +0 -27
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.js +28 -225
- package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +23 -22
- package/lib/ACM-AXN/Campaign/Types.d.ts +27 -0
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CampaignModel, Directory, CampaignGroupModel, Attribute } from '../Types';
|
|
1
|
+
import { CampaignModel, Directory, CampaignGroupModel, Attribute, ICampaignApprovalTable } from '../Types';
|
|
2
2
|
import { WeightContainerProps } from './TabSubCampaign/Weight';
|
|
3
3
|
import { MenuOption } from '../../../AWING';
|
|
4
4
|
export declare const directoriesState: import("recoil").RecoilState<Directory[]>;
|
|
5
5
|
export declare const attributesState: import("recoil").RecoilState<Attribute[]>;
|
|
6
6
|
export declare const isCreateState: import("recoil").RecoilState<boolean>;
|
|
7
|
+
export declare const campaignApprovalTableState: import("recoil").RecoilState<ICampaignApprovalTable[]>;
|
|
7
8
|
/**
|
|
8
9
|
* Đánh dấu việc cần xác nhận lại trước khi đóng (set thành true khi có bất kỳ chỉnh sửa campaign nào)
|
|
9
10
|
*/
|
|
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.cacheSearchPageState = exports.weightState = exports.readyForSubmitState = exports.tabPartnerValidState = exports.tabSubCampaignValidState = exports.tabInfomationValidState = exports.campaignPartnerState = exports.campaignGroupsState = exports.campaignApprovalState = exports.campaignAttributesState = exports.campaignState = exports.campaignModelState = exports.confirmExitState = exports.isCreateState = exports.attributesState = exports.directoriesState = void 0;
|
|
14
|
+
exports.cacheSearchPageState = exports.weightState = exports.readyForSubmitState = exports.tabPartnerValidState = exports.tabSubCampaignValidState = exports.tabInfomationValidState = exports.campaignPartnerState = exports.campaignGroupsState = exports.campaignApprovalState = exports.campaignAttributesState = exports.campaignState = exports.campaignModelState = exports.confirmExitState = exports.campaignApprovalTableState = exports.isCreateState = exports.attributesState = exports.directoriesState = void 0;
|
|
15
15
|
var recoil_1 = require("recoil");
|
|
16
16
|
var Utils_1 = require("../Utils");
|
|
17
17
|
var atoms_1 = require("./TabSubCampaign/atoms");
|
|
@@ -28,6 +28,10 @@ exports.isCreateState = (0, recoil_1.atom)({
|
|
|
28
28
|
key: 'isCreateState',
|
|
29
29
|
default: false,
|
|
30
30
|
});
|
|
31
|
+
exports.campaignApprovalTableState = (0, recoil_1.atom)({
|
|
32
|
+
key: 'campaignApprovalTableState',
|
|
33
|
+
default: [],
|
|
34
|
+
});
|
|
31
35
|
/**
|
|
32
36
|
* Đánh dấu việc cần xác nhận lại trước khi đóng (set thành true khi có bất kỳ chỉnh sửa campaign nào)
|
|
33
37
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ICampaignApprovalSubRow, ICampaignApprovalTable, ICampaignApprovalTableRow } from '../../../../ACM-AXN/Campaign/Types';
|
|
3
3
|
interface TableRowProps {
|
|
4
|
-
row:
|
|
5
|
-
link:
|
|
6
|
-
sub:
|
|
4
|
+
row: ICampaignApprovalTable;
|
|
5
|
+
link: ICampaignApprovalTableRow;
|
|
6
|
+
sub: ICampaignApprovalSubRow;
|
|
7
7
|
linkIndex: number;
|
|
8
8
|
subIndex: number;
|
|
9
9
|
rowSelected: string[];
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
var recoil_1 = require("recoil");
|
|
19
|
+
var Recoils_1 = require("../Recoils");
|
|
20
|
+
var react_1 = require("react");
|
|
21
|
+
var Hooks_1 = __importDefault(require("../../../../ACM-AXN/Campaign/Hooks"));
|
|
22
|
+
var Constant_1 = require("../../../../ACM-AXN/Common/Constant");
|
|
23
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
24
|
+
var Helpers_1 = require("../../../../Utils/Helpers");
|
|
25
|
+
var Router_1 = require("../../../../AWING/Router");
|
|
26
|
+
var atoms_1 = require("../TabSubCampaign/atoms");
|
|
27
|
+
var icons_material_1 = require("@mui/icons-material");
|
|
28
|
+
var RunInBackground = function () {
|
|
29
|
+
var campaignId = (0, Router_1.useParams)().campaignId;
|
|
30
|
+
var subCampaigns = (0, recoil_1.useRecoilValue)(Recoils_1.campaignGroupsState);
|
|
31
|
+
var subCampaignDetailValid = (0, recoil_1.useRecoilValue)(atoms_1.subCampaignDetailValidState);
|
|
32
|
+
var subCampaignAdsValid = (0, recoil_1.useRecoilValue)(atoms_1.subCampaignAdsValidState);
|
|
33
|
+
var _a = (0, Hooks_1.default)(), service = _a.service, defaultDomainId = _a.domainId;
|
|
34
|
+
var _b = (0, recoil_1.useRecoilState)(Recoils_1.campaignApprovalState), campaignApproval = _b[0], setCampaignApproval = _b[1];
|
|
35
|
+
var _c = (0, recoil_1.useRecoilState)(Recoils_1.campaignApprovalTableState), campaignApprovalTable = _c[0], setCampaignApprovalTable = _c[1];
|
|
36
|
+
var _d = (0, react_1.useState)([]), domains = _d[0], setDomains = _d[1];
|
|
37
|
+
var _e = (0, react_1.useState)(true), isInit = _e[0], setIsInit = _e[1];
|
|
38
|
+
var oldCampaignApproval = (0, react_1.useRef)([]);
|
|
39
|
+
var prevDomainIds = (0, react_1.useRef)([]);
|
|
40
|
+
var domainIds = (0, react_1.useMemo)(function () {
|
|
41
|
+
var ads = subCampaigns.flatMap(function (sub) { return sub.ads; });
|
|
42
|
+
return lodash_1.default.uniq(ads
|
|
43
|
+
.filter(function (ad) { return ad.places; })
|
|
44
|
+
.map(function (ad) { return ad.places.map(function (x) { return x.domainId; }); })
|
|
45
|
+
.flat()
|
|
46
|
+
.filter(Boolean));
|
|
47
|
+
}, [subCampaigns]);
|
|
48
|
+
var areAllTrue = function (data) {
|
|
49
|
+
return Object.values(data).every(function (value) { return value === true; });
|
|
50
|
+
};
|
|
51
|
+
var renderLinkPreview = function (ad, domainId) {
|
|
52
|
+
if (domainId === void 0) { domainId = defaultDomainId; }
|
|
53
|
+
var url = "".concat(Constant_1.Constants.CAPTIVE_DOMAIN, "/").concat(Constant_1.Constants.PAGE_LOGIN_PREVIEW, "?loginId=").concat(ad.loginId);
|
|
54
|
+
if (ad.welcomeId)
|
|
55
|
+
url += "&welcomeId=".concat(ad.welcomeId, "&isNetworkCampaign=").concat(Boolean(service.domainsGetAll).toString());
|
|
56
|
+
if (domainId)
|
|
57
|
+
url += "&domainId=".concat(domainId);
|
|
58
|
+
return url;
|
|
59
|
+
};
|
|
60
|
+
var mergedData = function (data) {
|
|
61
|
+
return data.reduce(function (acc, detail) {
|
|
62
|
+
var existingLink = acc.find(function (l) { return l.linkPreview === detail.linkPreview; });
|
|
63
|
+
if (existingLink) {
|
|
64
|
+
var existingCampaign = existingLink.campaign.find(function (item) {
|
|
65
|
+
return item.subCampaigns.find(function (subCampaign) {
|
|
66
|
+
return subCampaign.id ===
|
|
67
|
+
detail.campaign[0].subCampaigns[0].id;
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
if (existingCampaign) {
|
|
71
|
+
existingCampaign.ads.push({
|
|
72
|
+
id: detail.campaign[0].ads[0].id,
|
|
73
|
+
name: detail.campaign[0].ads[0].name,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
detail.campaign.forEach(function (item) {
|
|
78
|
+
existingLink.campaign.push(item);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
acc.push({
|
|
84
|
+
id: (0, Helpers_1.generateUUID)(),
|
|
85
|
+
linkPreview: detail.linkPreview,
|
|
86
|
+
campaign: detail.campaign,
|
|
87
|
+
status: detail.status,
|
|
88
|
+
description: detail.description,
|
|
89
|
+
loginId: detail.loginId,
|
|
90
|
+
welcomeId: detail.welcomeId,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return acc;
|
|
94
|
+
}, []);
|
|
95
|
+
};
|
|
96
|
+
var renderDataDetail = function (domainId) {
|
|
97
|
+
return mergedData(subCampaigns
|
|
98
|
+
.map(function (subCampaign) {
|
|
99
|
+
return subCampaign.ads
|
|
100
|
+
.map(function (ad) {
|
|
101
|
+
var _a;
|
|
102
|
+
var isDomain = (_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.find(function (place) {
|
|
103
|
+
return place.domainId === domainId;
|
|
104
|
+
});
|
|
105
|
+
if (isDomain) {
|
|
106
|
+
return {
|
|
107
|
+
linkPreview: renderLinkPreview(ad, domainId),
|
|
108
|
+
campaign: [
|
|
109
|
+
{
|
|
110
|
+
subCampaigns: [
|
|
111
|
+
{
|
|
112
|
+
id: subCampaign
|
|
113
|
+
.campaignGroup.id,
|
|
114
|
+
name: subCampaign
|
|
115
|
+
.campaignGroup.name,
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
ads: [
|
|
119
|
+
{
|
|
120
|
+
id: ad.id,
|
|
121
|
+
name: ad.name,
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
loginId: ad.loginId,
|
|
127
|
+
welcomeId: ad.welcomeId,
|
|
128
|
+
description: '',
|
|
129
|
+
status: 0,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
})
|
|
133
|
+
.filter(Boolean);
|
|
134
|
+
})
|
|
135
|
+
.flat()
|
|
136
|
+
.filter(Boolean));
|
|
137
|
+
};
|
|
138
|
+
var flattenData = function (data) {
|
|
139
|
+
var flattened = [];
|
|
140
|
+
var index = 0;
|
|
141
|
+
data.forEach(function (item) {
|
|
142
|
+
item.detail.forEach(function (detail) {
|
|
143
|
+
detail.campaign.forEach(function (campaign) {
|
|
144
|
+
campaign.ads.forEach(function (ad) {
|
|
145
|
+
var _a;
|
|
146
|
+
flattened.push({
|
|
147
|
+
id: index++,
|
|
148
|
+
campaignId: campaignId,
|
|
149
|
+
domainId: item.domain.domainId,
|
|
150
|
+
status: detail.status,
|
|
151
|
+
loginId: detail.loginId,
|
|
152
|
+
welcomeId: detail.welcomeId,
|
|
153
|
+
description: detail.description,
|
|
154
|
+
campaignGroupId: (_a = campaign.subCampaigns[0]) === null || _a === void 0 ? void 0 : _a.id,
|
|
155
|
+
campaignAdId: ad === null || ad === void 0 ? void 0 : ad.id,
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
return flattened;
|
|
162
|
+
};
|
|
163
|
+
var unflattenData = function (inputData) {
|
|
164
|
+
var subCampaignsFlat = subCampaigns.flatMap(function (item) {
|
|
165
|
+
var subCampaignId = item.campaignGroup.id;
|
|
166
|
+
var subCampaignName = item.campaignGroup.name;
|
|
167
|
+
return item.ads.map(function (ad) { return ({
|
|
168
|
+
subCampaignId: subCampaignId,
|
|
169
|
+
subCampaignName: subCampaignName,
|
|
170
|
+
adId: ad.id,
|
|
171
|
+
adName: ad.name,
|
|
172
|
+
loginId: ad.loginId,
|
|
173
|
+
welcomeId: ad.welcomeId,
|
|
174
|
+
}); });
|
|
175
|
+
});
|
|
176
|
+
var findAd = function (subId, adId) {
|
|
177
|
+
var ad = subCampaignsFlat.find(function (item) { return item.adId === adId && item.subCampaignId === subId; });
|
|
178
|
+
return ad;
|
|
179
|
+
};
|
|
180
|
+
var groupedData = inputData.reduce(function (acc, item) {
|
|
181
|
+
var _a, _b, _c;
|
|
182
|
+
var domainId = item.domainId;
|
|
183
|
+
if (!acc[domainId]) {
|
|
184
|
+
var domain = domains.find(function (d) { return d.domainId === domainId; });
|
|
185
|
+
acc[domainId] = {
|
|
186
|
+
id: domainId,
|
|
187
|
+
domain: {
|
|
188
|
+
domainName: domain === null || domain === void 0 ? void 0 : domain.name,
|
|
189
|
+
domainId: domain === null || domain === void 0 ? void 0 : domain.domainId,
|
|
190
|
+
},
|
|
191
|
+
detail: [],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
// Tạo linkPreview chỉ nếu chưa tồn tại
|
|
195
|
+
var existingDetail = acc[domainId].detail.find(function (detail) {
|
|
196
|
+
return detail.loginId === item.loginId &&
|
|
197
|
+
detail.welcomeId === item.welcomeId;
|
|
198
|
+
});
|
|
199
|
+
if (!existingDetail) {
|
|
200
|
+
acc[domainId].detail.push({
|
|
201
|
+
id: (0, Helpers_1.generateUUID)(),
|
|
202
|
+
linkPreview: renderLinkPreview({
|
|
203
|
+
loginId: item.loginId,
|
|
204
|
+
welcomeId: item.welcomeId,
|
|
205
|
+
}, domainId),
|
|
206
|
+
campaign: [],
|
|
207
|
+
status: item.status,
|
|
208
|
+
description: item.description,
|
|
209
|
+
loginId: item.loginId,
|
|
210
|
+
welcomeId: item.welcomeId,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
var campaign = (_a = acc[domainId].detail.find(function (detail) {
|
|
214
|
+
return detail.loginId === item.loginId &&
|
|
215
|
+
detail.welcomeId === item.welcomeId;
|
|
216
|
+
})) === null || _a === void 0 ? void 0 : _a.campaign;
|
|
217
|
+
var subCampaign = campaign.find(function (c) { return c.subCampaigns[0].id === item.campaignGroupId; });
|
|
218
|
+
if (!subCampaign) {
|
|
219
|
+
var sub = subCampaigns.find(function (subCampaign) {
|
|
220
|
+
return subCampaign.campaignGroup.id ===
|
|
221
|
+
item.campaignGroupId;
|
|
222
|
+
});
|
|
223
|
+
subCampaign = {
|
|
224
|
+
subCampaigns: [
|
|
225
|
+
{
|
|
226
|
+
id: sub.campaignGroup.id,
|
|
227
|
+
name: sub.campaignGroup.name,
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
ads: [],
|
|
231
|
+
};
|
|
232
|
+
campaign.push(subCampaign);
|
|
233
|
+
}
|
|
234
|
+
subCampaign.ads.push({
|
|
235
|
+
id: item.campaignAdId,
|
|
236
|
+
name: (_c = (_b = findAd(subCampaign.subCampaigns[0].id, item.campaignAdId)) === null || _b === void 0 ? void 0 : _b.adName) !== null && _c !== void 0 ? _c : '',
|
|
237
|
+
});
|
|
238
|
+
return acc;
|
|
239
|
+
}, {});
|
|
240
|
+
return Object.values(groupedData);
|
|
241
|
+
};
|
|
242
|
+
var fetchDomains = (0, react_1.useCallback)(function (ids) {
|
|
243
|
+
if (ids.length > 0 && service.domainsGetByIds) {
|
|
244
|
+
service.domainsGetByIds(ids).then(setDomains);
|
|
245
|
+
}
|
|
246
|
+
}, [service.domainsGetByIds, setDomains]);
|
|
247
|
+
var dataDiff = function (apiData, currentData) {
|
|
248
|
+
var mergedData = currentData.map(function (currentItem) {
|
|
249
|
+
var matchingApiItem = apiData.find(function (apiItem) {
|
|
250
|
+
return apiItem.domainId === currentItem.domainId &&
|
|
251
|
+
apiItem.campaignGroupId === currentItem.campaignGroupId &&
|
|
252
|
+
apiItem.campaignAdId === currentItem.campaignAdId;
|
|
253
|
+
});
|
|
254
|
+
if (matchingApiItem) {
|
|
255
|
+
return __assign(__assign({}, currentItem), { status: matchingApiItem.status });
|
|
256
|
+
}
|
|
257
|
+
return currentItem;
|
|
258
|
+
});
|
|
259
|
+
return mergedData;
|
|
260
|
+
};
|
|
261
|
+
var campaignApprovalMerged = function (oldData, newData) {
|
|
262
|
+
return newData.map(function (newItem) {
|
|
263
|
+
var newDomainId = newItem.domain.domainId;
|
|
264
|
+
newItem.detail = newItem.detail.map(function (newDetail) {
|
|
265
|
+
var oldItem = oldData.find(function (item) { return item.domain.domainId === newDomainId; });
|
|
266
|
+
if (oldItem) {
|
|
267
|
+
var oldDetail = oldItem.detail.find(function (detail) {
|
|
268
|
+
return detail.welcomeId === newDetail.welcomeId &&
|
|
269
|
+
detail.loginId === newDetail.loginId;
|
|
270
|
+
});
|
|
271
|
+
if (oldDetail) {
|
|
272
|
+
return __assign(__assign({}, newDetail), { status: oldDetail.status });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return newDetail;
|
|
276
|
+
});
|
|
277
|
+
return newItem;
|
|
278
|
+
});
|
|
279
|
+
};
|
|
280
|
+
(0, react_1.useEffect)(function () {
|
|
281
|
+
if (!Boolean(service.attributesGetByObjectTypeCode))
|
|
282
|
+
icons_material_1.KeyboardReturn;
|
|
283
|
+
if (!domains.length)
|
|
284
|
+
return setCampaignApprovalTable([]);
|
|
285
|
+
// if (campaignApproval?.length) {
|
|
286
|
+
// return setCampaignApprovalTable(unflattenData(campaignApproval))
|
|
287
|
+
// }
|
|
288
|
+
if (areAllTrue(subCampaignDetailValid) &&
|
|
289
|
+
areAllTrue(subCampaignAdsValid)) {
|
|
290
|
+
var data = domains.map(function (domain) {
|
|
291
|
+
return {
|
|
292
|
+
id: domain.domainId,
|
|
293
|
+
domain: {
|
|
294
|
+
domainName: domain.name,
|
|
295
|
+
domainId: domain.domainId,
|
|
296
|
+
},
|
|
297
|
+
detail: renderDataDetail(domain.domainId),
|
|
298
|
+
};
|
|
299
|
+
});
|
|
300
|
+
return setCampaignApprovalTable(campaignApprovalMerged(unflattenData(oldCampaignApproval.current), data));
|
|
301
|
+
}
|
|
302
|
+
}, [domains, subCampaigns]);
|
|
303
|
+
(0, react_1.useEffect)(function () {
|
|
304
|
+
if (!lodash_1.default.isEqual(prevDomainIds.current, domainIds)) {
|
|
305
|
+
fetchDomains(domainIds);
|
|
306
|
+
prevDomainIds.current = domainIds;
|
|
307
|
+
}
|
|
308
|
+
}, [domainIds]);
|
|
309
|
+
(0, react_1.useEffect)(function () {
|
|
310
|
+
if (campaignApprovalTable.length > 0) {
|
|
311
|
+
setCampaignApproval(flattenData(campaignApprovalTable));
|
|
312
|
+
}
|
|
313
|
+
}, [campaignApprovalTable]);
|
|
314
|
+
(0, react_1.useEffect)(function () {
|
|
315
|
+
if (!oldCampaignApproval.current.length && isInit) {
|
|
316
|
+
oldCampaignApproval.current = campaignApproval !== null && campaignApproval !== void 0 ? campaignApproval : [];
|
|
317
|
+
setIsInit(true);
|
|
318
|
+
}
|
|
319
|
+
}, [campaignApproval]);
|
|
320
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
|
321
|
+
};
|
|
322
|
+
exports.default = RunInBackground;
|
|
@@ -1,28 +1 @@
|
|
|
1
|
-
interface IItem {
|
|
2
|
-
id?: number;
|
|
3
|
-
name?: string;
|
|
4
|
-
}
|
|
5
|
-
export interface ICammpaignItem {
|
|
6
|
-
subCampaigns: IItem[];
|
|
7
|
-
ads: IItem[];
|
|
8
|
-
}
|
|
9
|
-
export interface IDetail {
|
|
10
|
-
id?: string;
|
|
11
|
-
status: number;
|
|
12
|
-
linkPreview: string;
|
|
13
|
-
subCampaigns?: IItem[];
|
|
14
|
-
loginId?: string;
|
|
15
|
-
welcomeId?: string;
|
|
16
|
-
campaign: ICammpaignItem[];
|
|
17
|
-
description: string;
|
|
18
|
-
}
|
|
19
|
-
export interface IDataTable {
|
|
20
|
-
id: string;
|
|
21
|
-
domain: {
|
|
22
|
-
domainName?: string;
|
|
23
|
-
domainId?: string;
|
|
24
|
-
};
|
|
25
|
-
detail: IDetail[];
|
|
26
|
-
}
|
|
27
1
|
export default function TabApprove(): import("react/jsx-runtime").JSX.Element;
|
|
28
|
-
export {};
|
|
@@ -25,128 +25,29 @@ 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 Hooks_1 = __importDefault(require("../../../../ACM-AXN/Campaign/Hooks"));
|
|
29
|
-
var Constant_1 = require("../../../../ACM-AXN/Common/Constant");
|
|
30
|
-
var Router_1 = require("../../../../AWING/Router");
|
|
31
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
32
28
|
var react_1 = require("react");
|
|
33
29
|
var react_i18next_1 = require("react-i18next");
|
|
34
30
|
var recoil_1 = require("recoil");
|
|
35
31
|
var Recoils_1 = require("../Recoils");
|
|
36
32
|
var RowTable_1 = __importDefault(require("./RowTable"));
|
|
37
|
-
var
|
|
33
|
+
var Router_1 = require("../../../../AWING/Router");
|
|
34
|
+
var Hooks_1 = __importDefault(require("../../../../ACM-AXN/Campaign/Hooks"));
|
|
35
|
+
var Context_1 = require("../../../../Context");
|
|
38
36
|
function TabApprove() {
|
|
39
|
-
var t = (0, react_i18next_1.useTranslation)().t;
|
|
40
37
|
var campaignId = (0, Router_1.useParams)().campaignId;
|
|
41
|
-
var
|
|
38
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
39
|
+
var service = (0, Hooks_1.default)().service;
|
|
40
|
+
var snackbar = (0, Context_1.useAwing)().appHelper.snackbar;
|
|
42
41
|
var setConfirmExit = (0, recoil_1.useSetRecoilState)(Recoils_1.confirmExitState);
|
|
43
|
-
var
|
|
44
|
-
var
|
|
45
|
-
var subCampaigns = (0, recoil_1.useRecoilValue)(Recoils_1.campaignGroupsState);
|
|
46
|
-
var _d = (0, Hooks_1.default)(), service = _d.service, defaultDomainId = _d.domainId;
|
|
47
|
-
var _e = (0, react_1.useState)([]), dataTable = _e[0], setDataTable = _e[1];
|
|
48
|
-
var domainIds = (0, react_1.useMemo)(function () {
|
|
49
|
-
var ads = subCampaigns.flatMap(function (sub) { return sub.ads; });
|
|
50
|
-
return lodash_1.default.uniq(ads
|
|
51
|
-
.filter(function (ad) { return ad.places; })
|
|
52
|
-
.map(function (ad) { return ad.places.map(function (x) { return x.domainId; }); })
|
|
53
|
-
.flat()
|
|
54
|
-
.filter(Boolean));
|
|
55
|
-
}, [subCampaigns]);
|
|
56
|
-
var renderLinkPreview = function (ad, domainId) {
|
|
57
|
-
if (domainId === void 0) { domainId = defaultDomainId; }
|
|
58
|
-
var url = "".concat(Constant_1.Constants.CAPTIVE_DOMAIN, "/").concat(Constant_1.Constants.PAGE_LOGIN_PREVIEW, "?loginId=").concat(ad.loginId);
|
|
59
|
-
if (ad.welcomeId)
|
|
60
|
-
url += "&welcomeId=".concat(ad.welcomeId, "&isNetworkCampaign=").concat(Boolean(service.domainsGetAll).toString());
|
|
61
|
-
if (domainId)
|
|
62
|
-
url += "&domainId=".concat(domainId);
|
|
63
|
-
return url;
|
|
64
|
-
};
|
|
65
|
-
var mergedData = function (data) {
|
|
66
|
-
return data.reduce(function (acc, detail) {
|
|
67
|
-
var existingLink = acc.find(function (l) { return l.linkPreview === detail.linkPreview; });
|
|
68
|
-
if (existingLink) {
|
|
69
|
-
var existingCampaign = existingLink.campaign.find(function (item) {
|
|
70
|
-
return item.subCampaigns.find(function (subCampaign) {
|
|
71
|
-
return subCampaign.id ===
|
|
72
|
-
detail.campaign[0].subCampaigns[0].id;
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
if (existingCampaign) {
|
|
76
|
-
existingCampaign.ads.push({
|
|
77
|
-
id: detail.campaign[0].ads[0].id,
|
|
78
|
-
name: detail.campaign[0].ads[0].name,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
detail.campaign.forEach(function (item) {
|
|
83
|
-
existingLink.campaign.push(item);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
acc.push({
|
|
89
|
-
id: (0, Helpers_1.generateUUID)(),
|
|
90
|
-
linkPreview: detail.linkPreview,
|
|
91
|
-
campaign: detail.campaign,
|
|
92
|
-
status: detail.status,
|
|
93
|
-
description: detail.description,
|
|
94
|
-
loginId: detail.loginId,
|
|
95
|
-
welcomeId: detail.welcomeId,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
return acc;
|
|
99
|
-
}, []);
|
|
100
|
-
};
|
|
101
|
-
var renderDataDetail = function (domainId) {
|
|
102
|
-
return mergedData(subCampaigns
|
|
103
|
-
.map(function (subCampaign) {
|
|
104
|
-
return subCampaign.ads
|
|
105
|
-
.map(function (ad) {
|
|
106
|
-
var _a;
|
|
107
|
-
var isDomain = (_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.find(function (place) {
|
|
108
|
-
return place.domainId === domainId;
|
|
109
|
-
});
|
|
110
|
-
if (isDomain) {
|
|
111
|
-
return {
|
|
112
|
-
linkPreview: renderLinkPreview(ad, domainId),
|
|
113
|
-
campaign: [
|
|
114
|
-
{
|
|
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
|
-
],
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
loginId: ad.loginId,
|
|
132
|
-
welcomeId: ad.welcomeId,
|
|
133
|
-
description: '',
|
|
134
|
-
status: 0,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
})
|
|
138
|
-
.filter(Boolean);
|
|
139
|
-
})
|
|
140
|
-
.flat()
|
|
141
|
-
.filter(Boolean));
|
|
142
|
-
};
|
|
42
|
+
var _a = (0, react_1.useState)([]), rowSelected = _a[0], setRowSelected = _a[1];
|
|
43
|
+
var _b = (0, recoil_1.useRecoilState)(Recoils_1.campaignApprovalTableState), campaignApprovalTable = _b[0], setCampaignApprovalTable = _b[1];
|
|
143
44
|
var handleRowSelect = (0, react_1.useCallback)(function (id) {
|
|
144
45
|
setRowSelected(function (pre) {
|
|
145
46
|
return pre.includes(id) ? pre.filter(function (x) { return x !== id; }) : __spreadArray(__spreadArray([], pre, true), [id], false);
|
|
146
47
|
});
|
|
147
48
|
}, []);
|
|
148
49
|
var updateRow = (0, react_1.useCallback)(function (dataUpdate, rowId, linkId) {
|
|
149
|
-
|
|
50
|
+
setCampaignApprovalTable(function (pre) {
|
|
150
51
|
return pre.map(function (item) {
|
|
151
52
|
if (item.id === rowId) {
|
|
152
53
|
return __assign(__assign({}, item), { detail: item.detail.map(function (detail) {
|
|
@@ -160,8 +61,8 @@ function TabApprove() {
|
|
|
160
61
|
});
|
|
161
62
|
});
|
|
162
63
|
setConfirmExit(true);
|
|
163
|
-
}, [
|
|
164
|
-
|
|
64
|
+
}, [campaignApprovalTable]);
|
|
65
|
+
var flattenData = (0, react_1.useCallback)(function (data) {
|
|
165
66
|
var flattened = [];
|
|
166
67
|
var index = 0;
|
|
167
68
|
data.forEach(function (item) {
|
|
@@ -185,133 +86,35 @@ function TabApprove() {
|
|
|
185
86
|
});
|
|
186
87
|
});
|
|
187
88
|
return flattened;
|
|
188
|
-
}
|
|
189
|
-
var unflattenData = function (inputData) {
|
|
190
|
-
var subCampaignsFlat = subCampaigns.flatMap(function (item) {
|
|
191
|
-
var subCampaignId = item.campaignGroup.id;
|
|
192
|
-
var subCampaignName = item.campaignGroup.name;
|
|
193
|
-
return item.ads.map(function (ad) { return ({
|
|
194
|
-
subCampaignId: subCampaignId,
|
|
195
|
-
subCampaignName: subCampaignName,
|
|
196
|
-
adId: ad.id,
|
|
197
|
-
adName: ad.name,
|
|
198
|
-
loginId: ad.loginId,
|
|
199
|
-
welcomeId: ad.welcomeId,
|
|
200
|
-
}); });
|
|
201
|
-
});
|
|
202
|
-
var findAd = function (subId, adId) {
|
|
203
|
-
var ad = subCampaignsFlat.find(function (item) { return item.adId === adId && item.subCampaignId === subId; });
|
|
204
|
-
return ad;
|
|
205
|
-
};
|
|
206
|
-
var groupedData = inputData.reduce(function (acc, item) {
|
|
207
|
-
var _a, _b, _c;
|
|
208
|
-
var domainId = item.domainId;
|
|
209
|
-
if (!acc[domainId]) {
|
|
210
|
-
var domain = domains.find(function (d) { return d.domainId === domainId; });
|
|
211
|
-
acc[domainId] = {
|
|
212
|
-
id: domainId,
|
|
213
|
-
domain: {
|
|
214
|
-
domainName: domain === null || domain === void 0 ? void 0 : domain.name,
|
|
215
|
-
domainId: domain === null || domain === void 0 ? void 0 : domain.domainId,
|
|
216
|
-
},
|
|
217
|
-
detail: [],
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
// Tạo linkPreview chỉ nếu chưa tồn tại
|
|
221
|
-
var existingDetail = acc[domainId].detail.find(function (detail) {
|
|
222
|
-
return detail.loginId === item.loginId &&
|
|
223
|
-
detail.welcomeId === item.welcomeId;
|
|
224
|
-
});
|
|
225
|
-
if (!existingDetail) {
|
|
226
|
-
acc[domainId].detail.push({
|
|
227
|
-
id: (0, Helpers_1.generateUUID)(),
|
|
228
|
-
linkPreview: renderLinkPreview({
|
|
229
|
-
loginId: item.loginId,
|
|
230
|
-
welcomeId: item.welcomeId,
|
|
231
|
-
}, domainId),
|
|
232
|
-
campaign: [],
|
|
233
|
-
status: item.status,
|
|
234
|
-
description: item.description,
|
|
235
|
-
loginId: item.loginId,
|
|
236
|
-
welcomeId: item.welcomeId,
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
var campaign = (_a = acc[domainId].detail.find(function (detail) {
|
|
240
|
-
return detail.loginId === item.loginId &&
|
|
241
|
-
detail.welcomeId === item.welcomeId;
|
|
242
|
-
})) === null || _a === void 0 ? void 0 : _a.campaign;
|
|
243
|
-
var subCampaign = campaign.find(function (c) { return c.subCampaigns[0].id === item.campaignGroupId; });
|
|
244
|
-
if (!subCampaign) {
|
|
245
|
-
var sub = subCampaigns.find(function (subCampaign) {
|
|
246
|
-
return subCampaign.campaignGroup.id ===
|
|
247
|
-
item.campaignGroupId;
|
|
248
|
-
});
|
|
249
|
-
subCampaign = {
|
|
250
|
-
subCampaigns: [
|
|
251
|
-
{
|
|
252
|
-
id: sub.campaignGroup.id,
|
|
253
|
-
name: sub.campaignGroup.name,
|
|
254
|
-
},
|
|
255
|
-
],
|
|
256
|
-
ads: [],
|
|
257
|
-
};
|
|
258
|
-
campaign.push(subCampaign);
|
|
259
|
-
}
|
|
260
|
-
subCampaign.ads.push({
|
|
261
|
-
id: item.campaignAdId,
|
|
262
|
-
name: (_c = (_b = findAd(subCampaign.subCampaigns[0].id, item.campaignAdId)) === null || _b === void 0 ? void 0 : _b.adName) !== null && _c !== void 0 ? _c : '',
|
|
263
|
-
});
|
|
264
|
-
return acc;
|
|
265
|
-
}, {});
|
|
266
|
-
return Object.values(groupedData);
|
|
267
|
-
};
|
|
89
|
+
}, []);
|
|
268
90
|
var handleSelectAll = (0, react_1.useCallback)(function () {
|
|
269
91
|
setRowSelected(function (pre) {
|
|
270
|
-
return pre.length <
|
|
271
|
-
?
|
|
92
|
+
return pre.length < campaignApprovalTable.length
|
|
93
|
+
? campaignApprovalTable.map(function (item) { return item.id; })
|
|
272
94
|
: [];
|
|
273
95
|
});
|
|
274
|
-
}, [
|
|
275
|
-
(0, react_1.
|
|
276
|
-
|
|
277
|
-
return
|
|
278
|
-
var data;
|
|
279
|
-
if (campaignApproval === null || campaignApproval === void 0 ? void 0 : campaignApproval.length) {
|
|
280
|
-
return setDataTable(unflattenData(campaignApproval));
|
|
281
|
-
}
|
|
282
|
-
data = domains.map(function (domain) {
|
|
283
|
-
return {
|
|
284
|
-
id: domain.domainId,
|
|
285
|
-
domain: {
|
|
286
|
-
domainName: domain.name,
|
|
287
|
-
domainId: domain.domainId,
|
|
288
|
-
},
|
|
289
|
-
detail: renderDataDetail(domain.domainId),
|
|
290
|
-
};
|
|
96
|
+
}, [campaignApprovalTable]);
|
|
97
|
+
var handleSendMail = (0, react_1.useCallback)(function () {
|
|
98
|
+
var data = campaignApprovalTable.filter(function (item) {
|
|
99
|
+
return rowSelected.includes(item.id);
|
|
291
100
|
});
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
service.domainsGetByIds(domainIds).then(setDomains);
|
|
298
|
-
}
|
|
299
|
-
}, [domainIds]);
|
|
300
|
-
(0, react_1.useEffect)(function () {
|
|
301
|
-
if (dataTable.length > 0) {
|
|
302
|
-
setCampaignApproval(flattenData(dataTable));
|
|
303
|
-
}
|
|
304
|
-
}, [dataTable]);
|
|
101
|
+
service.campaignsManualSendMail && service.campaignsManualSendMail(campaignId, flattenData(data)).then(function () {
|
|
102
|
+
setRowSelected([]);
|
|
103
|
+
snackbar('success');
|
|
104
|
+
});
|
|
105
|
+
}, [campaignApprovalTable, rowSelected]);
|
|
305
106
|
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: {
|
|
306
107
|
margin: '1rem',
|
|
307
|
-
}, children: t('Campaign.Approval.SendEmail') }), (0, jsx_runtime_1.jsxs)(material_1.Table, { sx: {
|
|
108
|
+
}, onClick: handleSendMail, children: t('Campaign.Approval.SendEmail') }), (0, jsx_runtime_1.jsxs)(material_1.Table, { sx: {
|
|
308
109
|
boxShadow: 'none',
|
|
309
110
|
'.MuiOutlinedInput-notchedOutline': {
|
|
310
111
|
border: 'none !important',
|
|
311
112
|
},
|
|
312
113
|
}, 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 &&
|
|
313
|
-
rowSelected.length <
|
|
314
|
-
|
|
114
|
+
rowSelected.length <
|
|
115
|
+
campaignApprovalTable.length, checked: rowSelected.length > 0 &&
|
|
116
|
+
rowSelected.length ===
|
|
117
|
+
campaignApprovalTable.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: campaignApprovalTable.map(function (row) {
|
|
315
118
|
return row.detail.map(function (link, linkIndex) {
|
|
316
119
|
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))); });
|
|
317
120
|
});
|
|
@@ -62,6 +62,7 @@ var TabStatistic_1 = __importDefault(require("./TabStatistic"));
|
|
|
62
62
|
var Enum_2 = require("../../../ACM-AXN/Common/Enum");
|
|
63
63
|
var Context_1 = require("../../../Context");
|
|
64
64
|
var TabApprove_1 = __importDefault(require("./TabApprove"));
|
|
65
|
+
var RunInBackground_1 = __importDefault(require("./TabApprove/RunInBackground"));
|
|
65
66
|
var CreateOrEdit = function (props) {
|
|
66
67
|
var _a;
|
|
67
68
|
var _b = (0, Router_1.useParams)(), campaignId = _b.campaignId, tabName = _b.tabName;
|
|
@@ -320,28 +321,28 @@ var CreateOrEdit = function (props) {
|
|
|
320
321
|
flexDirection: 'column',
|
|
321
322
|
flexGrow: 1,
|
|
322
323
|
padding: function (theme) { return theme.spacing(3); },
|
|
323
|
-
}, children: loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
324
|
+
}, children: loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, component: material_1.Paper, sx: { width: '100%', padding: 0 }, children: [(0, jsx_runtime_1.jsxs)(lab_1.TabContext, { value: value, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { sx: { borderBottom: 1, borderColor: 'divider' }, children: (0, jsx_runtime_1.jsx)(lab_1.TabList, { variant: "scrollable", onChange: handleChangeTab, "aria-label": "lab API tabs example", children: tabsList.map(function (tab, idx) { return ((0, jsx_runtime_1.jsx)(material_1.Tab, { sx: { minWidth: '160px' }, value: String(idx), label: (0, jsx_runtime_1.jsx)(TabLabel_1.default, { content: (0, jsx_runtime_1.jsx)("div", { style: {
|
|
325
|
+
fontWeight: 600,
|
|
326
|
+
fontSize: '0.875rem',
|
|
327
|
+
}, children: tab.label }), error: (tab === null || tab === void 0 ? void 0 : tab.valid)
|
|
328
|
+
? !tabValid[tab === null || tab === void 0 ? void 0 : tab.valid]
|
|
329
|
+
: undefined, errContent: (0, jsx_runtime_1.jsx)("span", { style: {
|
|
330
|
+
marginLeft: '-5px',
|
|
331
|
+
}, children: "*" }) }) }, idx)); }) }) }), campaignData.campaignWizard && !editModeWizard &&
|
|
332
|
+
(props === null || props === void 0 ? void 0 : props.quickWizard) ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [props === null || props === void 0 ? void 0 : props.quickWizard({
|
|
333
|
+
ref: childRefWizard,
|
|
334
|
+
onSubmitWizard: handleSubmit,
|
|
335
|
+
handleValidWizad: setValidWizad,
|
|
336
|
+
handleEditMode: setEditModeWizard,
|
|
337
|
+
sxEdit: {
|
|
338
|
+
display: value === '0'
|
|
339
|
+
? 'block'
|
|
340
|
+
: 'none',
|
|
341
|
+
},
|
|
342
|
+
type: props.type,
|
|
343
|
+
}), tabsList.map(function (tab, idx) {
|
|
344
|
+
return idx !== 0 && ((0, jsx_runtime_1.jsx)(lab_1.TabPanel, { sx: { padding: '0' }, value: String(idx), children: tab.component }, idx));
|
|
345
|
+
})] })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: tabsList.map(function (tab, idx) { return ((0, jsx_runtime_1.jsx)(lab_1.TabPanel, { sx: { padding: '0' }, value: String(idx), children: tab.component }, idx)); }) }))] }), (0, jsx_runtime_1.jsx)(RunInBackground_1.default, {})] })) }) }));
|
|
345
346
|
};
|
|
346
347
|
// eslint-disable-next-line import/no-anonymous-default-export
|
|
347
348
|
exports.default = (0, Wrapper_1.default)(CreateOrEdit, { component: recoil_1.RecoilRoot });
|
|
@@ -280,6 +280,7 @@ interface CampaignService extends PrmissionService {
|
|
|
280
280
|
deviceInfoGetAllRuleOsVersions: () => Promise<RuleOsVersion[]>;
|
|
281
281
|
deviceInfoGetAllRuleDevices: () => Promise<RuleDevice[]>;
|
|
282
282
|
attributesGetByObjectTypeCode?: (objectTypeCode: string) => Promise<Attribute[]>;
|
|
283
|
+
campaignsManualSendMail?: (campaignId: string, body: CampaignApproval[]) => Promise<void>;
|
|
283
284
|
}
|
|
284
285
|
export interface CampaignFeatureProps {
|
|
285
286
|
service: CampaignService & PageService & CampaignAnalyticService;
|
|
@@ -290,4 +291,30 @@ export interface CampaignFeatureProps {
|
|
|
290
291
|
isAxn?: boolean;
|
|
291
292
|
quickWizard?: (p?: any) => JSX.Element;
|
|
292
293
|
}
|
|
294
|
+
interface ICampaignApprovalItemSubRow {
|
|
295
|
+
id?: number;
|
|
296
|
+
name?: string;
|
|
297
|
+
}
|
|
298
|
+
export interface ICampaignApprovalSubRow {
|
|
299
|
+
subCampaigns: ICampaignApprovalItemSubRow[];
|
|
300
|
+
ads: ICampaignApprovalItemSubRow[];
|
|
301
|
+
}
|
|
302
|
+
export interface ICampaignApprovalTableRow {
|
|
303
|
+
id?: string;
|
|
304
|
+
status: number;
|
|
305
|
+
linkPreview: string;
|
|
306
|
+
subCampaigns?: ICampaignApprovalItemSubRow[];
|
|
307
|
+
loginId?: string;
|
|
308
|
+
welcomeId?: string;
|
|
309
|
+
campaign: ICampaignApprovalSubRow[];
|
|
310
|
+
description: string;
|
|
311
|
+
}
|
|
312
|
+
export interface ICampaignApprovalTable {
|
|
313
|
+
id: string;
|
|
314
|
+
domain: {
|
|
315
|
+
domainName?: string;
|
|
316
|
+
domainId?: string;
|
|
317
|
+
};
|
|
318
|
+
detail: ICampaignApprovalTableRow[];
|
|
319
|
+
}
|
|
293
320
|
export {};
|