awing-library 2.1.175-dev → 2.1.177-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/TabStatistic/Analytic/Utils.d.ts +7 -10
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.js +266 -124
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.d.ts +3 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.js +64 -46
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.js +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.d.ts +10 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.js +3 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.js +31 -29
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +5 -7
- package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +24 -11
- package/lib/ACM-AXN/Page/enums.d.ts +5 -0
- package/lib/ACM-AXN/Page/enums.js +7 -1
- package/lib/AWING/Chart/PieComponent.js +0 -1
- package/lib/Utils/Helpers.d.ts +1 -0
- package/lib/Utils/Helpers.js +17 -8
- package/lib/translate/en/translation.json +11 -0
- package/lib/translate/vi/translation.json +12 -1
- package/package.json +1 -1
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import { CampaignGroupModel } from '../../../../../ACM-AXN/Campaign/Types';
|
|
2
|
-
import { IAnalyticCampaignSummary } from '../Types';
|
|
3
2
|
import { AnalyticType } from '../../../../../ACM-AXN/Common/Enum';
|
|
4
3
|
import { DataObject } from '../../../../../AWING';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export declare function
|
|
10
|
-
columns: string[];
|
|
11
|
-
data: any[][];
|
|
12
|
-
}[];
|
|
13
|
-
export declare function convertToExport(subCampaigns: CampaignGroupModel[], data: DataObject[], timelineType: any, places: any[]): any[];
|
|
4
|
+
import { AdministrativeUnit, IAnalyticCampaignSummary } from '../Types';
|
|
5
|
+
export declare function convertToExportDataGroupBy(data: any, objects: any, timelineType: any, groupBy: any, campaignName: string): any[];
|
|
6
|
+
export declare function convertToExportData(data: DataObject[], places: any, timelineType: any, campaignName: string, fullPlaces?: AdministrativeUnit[]): any[];
|
|
7
|
+
export declare function convertToExport(subCampaigns: CampaignGroupModel[], data: DataObject[], timelineType: any, places: any[], campaignName: string, fullPlaces?: AdministrativeUnit[]): any[];
|
|
8
|
+
export declare function convertToExportByAd(subCampaigns: CampaignGroupModel[], data: DataObject[], timelineType: any, campaignName: string): any[];
|
|
14
9
|
export declare function placesToDomains(places: any[], domains?: any[]): any[];
|
|
15
10
|
export declare const markBillingType: (subCampaigns: CampaignGroupModel[], data: IAnalyticCampaignSummary[]) => any[];
|
|
16
11
|
export declare function convertToShowDetail(subCampaigns: CampaignGroupModel[], data: IAnalyticCampaignSummary[], selectedDomains: any[], selectedPlaces: any[]): any[];
|
|
17
12
|
export declare function dataGroupByTimeline(place: any, data: DataObject[], timelineType: any): any[][];
|
|
13
|
+
export declare function dataGroupByTimelineAndPlaces(place: any, province: string, district: string, data: DataObject[], timelineType: any): any[][];
|
|
14
|
+
export declare function dataGroupByAd(data: DataObject[], timelineType: any): (string | number)[][];
|
|
18
15
|
export declare function dataGroupByPlace(subCampaigns: CampaignGroupModel[], ids: any): any[];
|
|
19
16
|
export declare function campaignAnalyticInfo(subCampaigns: CampaignGroupModel[]): {
|
|
20
17
|
analyticTypes: AnalyticType[];
|
|
@@ -46,16 +46,36 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
46
46
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
47
|
};
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.groupBy = exports.convertToChartData = exports.campaignAnalyticInfo = exports.dataGroupByPlace = exports.dataGroupByTimeline = exports.convertToShowDetail = exports.markBillingType = exports.placesToDomains = exports.convertToExport = exports.convertToExportData = exports.convertToExportDataGroupBy = void 0;
|
|
49
|
+
exports.groupBy = exports.convertToChartData = exports.campaignAnalyticInfo = exports.dataGroupByPlace = exports.dataGroupByAd = exports.dataGroupByTimelineAndPlaces = exports.dataGroupByTimeline = exports.convertToShowDetail = exports.markBillingType = exports.placesToDomains = exports.convertToExportByAd = exports.convertToExport = exports.convertToExportData = exports.convertToExportDataGroupBy = void 0;
|
|
50
50
|
var Enum_1 = require("../../../../../ACM-AXN/Campaign/Enum");
|
|
51
|
+
var Enum_2 = require("../../../../../ACM-AXN/Common/Enum");
|
|
51
52
|
var Helpers_1 = require("../../../../../Utils/Helpers");
|
|
52
53
|
var lodash_1 = __importStar(require("lodash"));
|
|
54
|
+
var moment_1 = __importDefault(require("moment"));
|
|
53
55
|
var i18n_1 = __importDefault(require("../../../../../i18n"));
|
|
54
|
-
var
|
|
55
|
-
|
|
56
|
+
var addHeaderExcel = function (result, campaignName) {
|
|
57
|
+
var timeExport = (0, moment_1.default)().format('DD/MM/YYYY, H:mm');
|
|
58
|
+
result.push({
|
|
59
|
+
columns: [i18n_1.default.t('Common.CampaignName'), campaignName],
|
|
60
|
+
data: [],
|
|
61
|
+
}, {
|
|
62
|
+
columns: [i18n_1.default.t('Common.Channel'), 'AWING Wi-Fi'],
|
|
63
|
+
data: [],
|
|
64
|
+
}, {
|
|
65
|
+
columns: [i18n_1.default.t('Common.DateGenerated'), timeExport],
|
|
66
|
+
data: [],
|
|
67
|
+
}, {
|
|
68
|
+
columns: [i18n_1.default.t('Common.Timezone'), 'GMT+7'],
|
|
69
|
+
data: [],
|
|
70
|
+
}, {
|
|
71
|
+
columns: [],
|
|
72
|
+
data: [],
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
function convertToExportDataGroupBy(data, objects, timelineType, groupBy, campaignName) {
|
|
56
76
|
var result = [];
|
|
57
|
-
var hasSpot = data.some(function (x) { return x.isSPot; });
|
|
58
77
|
var spotTitle = i18n_1.default.t('Common.Spot');
|
|
78
|
+
addHeaderExcel(result, campaignName);
|
|
59
79
|
var exportData = objects
|
|
60
80
|
.map(function (object, key) {
|
|
61
81
|
var placeIds = object.places.map(function (plc) { return plc.placeId; });
|
|
@@ -72,55 +92,42 @@ function convertToExportDataGroupBy(data, objects, timelineType, groupBy) {
|
|
|
72
92
|
result.push({
|
|
73
93
|
columns: [
|
|
74
94
|
groupBy,
|
|
75
|
-
'
|
|
95
|
+
i18n_1.default.t('Common.Date'),
|
|
76
96
|
i18n_1.default.t('Common.Impression'),
|
|
77
|
-
i18n_1.default.t('Common.Engagement'),
|
|
78
|
-
spotTitle
|
|
79
|
-
]
|
|
80
|
-
|
|
81
|
-
if (item == spotTitle && !hasSpot) {
|
|
82
|
-
return '';
|
|
83
|
-
}
|
|
84
|
-
return item;
|
|
85
|
-
}),
|
|
86
|
-
data: exportData.map(function (d) {
|
|
87
|
-
if (!hasSpot) {
|
|
88
|
-
d.pop();
|
|
89
|
-
d.push('');
|
|
90
|
-
}
|
|
91
|
-
return d;
|
|
92
|
-
}),
|
|
97
|
+
i18n_1.default.t('Common.Engagement') + '(Spot)',
|
|
98
|
+
spotTitle,
|
|
99
|
+
],
|
|
100
|
+
data: exportData,
|
|
93
101
|
});
|
|
94
102
|
return result;
|
|
95
103
|
}
|
|
96
104
|
exports.convertToExportDataGroupBy = convertToExportDataGroupBy;
|
|
97
|
-
function convertToExportData(data, places, timelineType) {
|
|
105
|
+
function convertToExportData(data, places, timelineType, campaignName, fullPlaces) {
|
|
98
106
|
var result = [];
|
|
99
107
|
var spotTitle = i18n_1.default.t('Common.Spot');
|
|
100
|
-
|
|
108
|
+
addHeaderExcel(result, campaignName);
|
|
101
109
|
result.push({
|
|
102
110
|
columns: [
|
|
103
|
-
'
|
|
104
|
-
'
|
|
111
|
+
i18n_1.default.t('Common.Location'),
|
|
112
|
+
i18n_1.default.t('Common.CityProvince'),
|
|
113
|
+
i18n_1.default.t('Common.District'),
|
|
114
|
+
i18n_1.default.t('Common.Date'),
|
|
105
115
|
i18n_1.default.t('Common.Impression'),
|
|
106
|
-
i18n_1.default.t('Campaign.Engagement'),
|
|
116
|
+
i18n_1.default.t('Campaign.Engagement') + '(Spot)',
|
|
107
117
|
spotTitle,
|
|
108
|
-
]
|
|
109
|
-
|
|
110
|
-
if (item == spotTitle && !hasSpot) {
|
|
111
|
-
return '';
|
|
112
|
-
}
|
|
113
|
-
return item;
|
|
114
|
-
}),
|
|
115
|
-
data: dataGroupByTimeline('All', data, timelineType),
|
|
118
|
+
],
|
|
119
|
+
data: dataGroupByTimelineAndPlaces('All', 'All', 'All', data, timelineType),
|
|
116
120
|
});
|
|
117
121
|
Array.prototype.push.apply(result, (0, lodash_1.chain)(data)
|
|
118
122
|
.groupBy('placeId')
|
|
119
123
|
.map(function (value, key) {
|
|
124
|
+
var _a, _b;
|
|
120
125
|
var place = places.find(function (x) { return x.placeId === key; });
|
|
126
|
+
var province = (_a = fullPlaces === null || fullPlaces === void 0 ? void 0 : fullPlaces.find(function (z) { return z.code === (place === null || place === void 0 ? void 0 : place.provinceCode); })) === null || _a === void 0 ? void 0 : _a.name;
|
|
127
|
+
var district = (_b = fullPlaces === null || fullPlaces === void 0 ? void 0 : fullPlaces.find(function (z) { return z.code === (place === null || place === void 0 ? void 0 : place.districtCode); })) === null || _b === void 0 ? void 0 : _b.name;
|
|
121
128
|
var placeData = {
|
|
122
129
|
columns: Array(7).fill(''),
|
|
123
|
-
data:
|
|
130
|
+
data: dataGroupByTimelineAndPlaces(place ? place.name : key, province !== null && province !== void 0 ? province : '', district !== null && district !== void 0 ? district : '', value, timelineType),
|
|
124
131
|
};
|
|
125
132
|
return placeData;
|
|
126
133
|
})
|
|
@@ -128,10 +135,11 @@ function convertToExportData(data, places, timelineType) {
|
|
|
128
135
|
return result;
|
|
129
136
|
}
|
|
130
137
|
exports.convertToExportData = convertToExportData;
|
|
131
|
-
function convertToExport(subCampaigns, data, timelineType, places) {
|
|
138
|
+
function convertToExport(subCampaigns, data, timelineType, places, campaignName, fullPlaces) {
|
|
132
139
|
var result = [];
|
|
133
140
|
var isShouldHeader = true;
|
|
134
141
|
var spotTitle = i18n_1.default.t('Common.Spot');
|
|
142
|
+
addHeaderExcel(result, campaignName);
|
|
135
143
|
subCampaigns.forEach(function (sub) {
|
|
136
144
|
var _a;
|
|
137
145
|
(_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
|
|
@@ -143,7 +151,7 @@ function convertToExport(subCampaigns, data, timelineType, places) {
|
|
|
143
151
|
d.campaignAdId === ad.id);
|
|
144
152
|
})
|
|
145
153
|
// eslint-disable-next-line no-sequences
|
|
146
|
-
.map(function (x) { return (hasSpot = hasSpot || x.isSPot,
|
|
154
|
+
.map(function (x) { return ((hasSpot = hasSpot || x.isSPot), __assign(__assign({}, x), Object.assign.apply(Object, __spreadArray(__spreadArray([{}], Object.values(Enum_1.BaseEvent).map(function (v) {
|
|
147
155
|
var _a;
|
|
148
156
|
return (_a = {},
|
|
149
157
|
_a[v] = 0,
|
|
@@ -153,51 +161,39 @@ function convertToExport(subCampaigns, data, timelineType, places) {
|
|
|
153
161
|
return (_a = {},
|
|
154
162
|
_a[y.eventLabel] = y.total,
|
|
155
163
|
_a);
|
|
156
|
-
}), false))))
|
|
164
|
+
}), false)))); });
|
|
157
165
|
result.push({
|
|
158
|
-
columns:
|
|
166
|
+
columns: isShouldHeader
|
|
159
167
|
? [
|
|
160
|
-
'
|
|
168
|
+
i18n_1.default.t('Common.SubCampaign'),
|
|
161
169
|
'Ad',
|
|
162
|
-
'
|
|
163
|
-
'
|
|
170
|
+
i18n_1.default.t('Common.Location'),
|
|
171
|
+
i18n_1.default.t('Common.CityProvince'),
|
|
172
|
+
i18n_1.default.t('Common.District'),
|
|
173
|
+
i18n_1.default.t('Common.Date'),
|
|
164
174
|
i18n_1.default.t('Common.Impression'),
|
|
165
|
-
i18n_1.default.t(
|
|
175
|
+
i18n_1.default.t('Campaign.Engagement') + '(Spot)',
|
|
166
176
|
spotTitle,
|
|
167
177
|
]
|
|
168
|
-
: Array(7).fill('')
|
|
169
|
-
|
|
170
|
-
return '';
|
|
171
|
-
}
|
|
172
|
-
return item;
|
|
173
|
-
}),
|
|
174
|
-
data: dataGroupByTimeline('All', adData, timelineType).map(function (d) { var _a; return __spreadArray([(_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.name, ad === null || ad === void 0 ? void 0 : ad.name], d, true); }).map(function (d) {
|
|
175
|
-
if (!hasSpot) {
|
|
176
|
-
d.pop();
|
|
177
|
-
d.push('');
|
|
178
|
-
}
|
|
179
|
-
return d;
|
|
180
|
-
}),
|
|
178
|
+
: Array(7).fill(''),
|
|
179
|
+
data: dataGroupByTimelineAndPlaces('All', 'All', 'All', adData, timelineType).map(function (d) { var _a; return __spreadArray([(_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.name, ad === null || ad === void 0 ? void 0 : ad.name], d, true); }),
|
|
181
180
|
});
|
|
182
181
|
isShouldHeader = false;
|
|
183
182
|
Array.prototype.push.apply(result, (0, lodash_1.chain)(adData)
|
|
184
183
|
.groupBy('placeId')
|
|
185
184
|
.map(function (value, key) {
|
|
185
|
+
var _a, _b;
|
|
186
186
|
var place = places.find(function (x) { return x.placeId === key; });
|
|
187
|
+
var province = (_a = fullPlaces === null || fullPlaces === void 0 ? void 0 : fullPlaces.find(function (z) { return z.code === (place === null || place === void 0 ? void 0 : place.provinceCode); })) === null || _a === void 0 ? void 0 : _a.name;
|
|
188
|
+
var district = (_b = fullPlaces === null || fullPlaces === void 0 ? void 0 : fullPlaces.find(function (z) { return z.code === (place === null || place === void 0 ? void 0 : place.districtCode); })) === null || _b === void 0 ? void 0 : _b.name;
|
|
187
189
|
var placeData = {
|
|
188
190
|
columns: Array(7).fill(''),
|
|
189
|
-
data:
|
|
191
|
+
data: dataGroupByTimelineAndPlaces(place ? (place === null || place === void 0 ? void 0 : place.name) || place.placeId : key, province !== null && province !== void 0 ? province : '', district !== null && district !== void 0 ? district : '', value, timelineType).map(function (d) {
|
|
190
192
|
var _a;
|
|
191
193
|
return __spreadArray([
|
|
192
194
|
(_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.name,
|
|
193
195
|
ad === null || ad === void 0 ? void 0 : ad.name
|
|
194
196
|
], d, true);
|
|
195
|
-
}).map(function (d) {
|
|
196
|
-
if (!hasSpot) {
|
|
197
|
-
d.pop();
|
|
198
|
-
d.push('');
|
|
199
|
-
}
|
|
200
|
-
return d;
|
|
201
197
|
}),
|
|
202
198
|
};
|
|
203
199
|
return placeData;
|
|
@@ -208,6 +204,63 @@ function convertToExport(subCampaigns, data, timelineType, places) {
|
|
|
208
204
|
return result;
|
|
209
205
|
}
|
|
210
206
|
exports.convertToExport = convertToExport;
|
|
207
|
+
function convertToExportByAd(subCampaigns, data, timelineType, campaignName) {
|
|
208
|
+
var result = [];
|
|
209
|
+
var isShouldHeader = true;
|
|
210
|
+
var spotTitle = i18n_1.default.t('Common.Spot');
|
|
211
|
+
addHeaderExcel(result, campaignName);
|
|
212
|
+
subCampaigns.forEach(function (sub) {
|
|
213
|
+
var _a;
|
|
214
|
+
(_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
|
|
215
|
+
var hasSpot = false;
|
|
216
|
+
var adData = data
|
|
217
|
+
.filter(function (d) {
|
|
218
|
+
var _a;
|
|
219
|
+
return (d.campaignGroupId === ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) &&
|
|
220
|
+
d.campaignAdId === ad.id);
|
|
221
|
+
})
|
|
222
|
+
// eslint-disable-next-line no-sequences
|
|
223
|
+
.map(function (x) { return ((hasSpot = hasSpot || x.isSPot), __assign(__assign({}, x), Object.assign.apply(Object, __spreadArray(__spreadArray([{}], Object.values(Enum_1.BaseEvent).map(function (v) {
|
|
224
|
+
var _a;
|
|
225
|
+
return (_a = {},
|
|
226
|
+
_a[v] = 0,
|
|
227
|
+
_a);
|
|
228
|
+
}), false), x.analyticEventSummaries.map(function (y) {
|
|
229
|
+
var _a;
|
|
230
|
+
return (_a = {},
|
|
231
|
+
_a[y.eventLabel] = y.total,
|
|
232
|
+
_a);
|
|
233
|
+
}), false)))); });
|
|
234
|
+
result.push({
|
|
235
|
+
columns: isShouldHeader
|
|
236
|
+
? [
|
|
237
|
+
'Ad',
|
|
238
|
+
i18n_1.default.t('Common.Date'),
|
|
239
|
+
i18n_1.default.t('Common.Impression'),
|
|
240
|
+
i18n_1.default.t('Campaign.Engagement') + '(Spot)',
|
|
241
|
+
spotTitle,
|
|
242
|
+
]
|
|
243
|
+
: Array(7).fill(''),
|
|
244
|
+
data: dataGroupByAd(adData, timelineType).map(function (d) { return __spreadArray([
|
|
245
|
+
ad === null || ad === void 0 ? void 0 : ad.name
|
|
246
|
+
], d, true); }),
|
|
247
|
+
});
|
|
248
|
+
isShouldHeader = false;
|
|
249
|
+
Array.prototype.push.apply(result, (0, lodash_1.chain)(adData)
|
|
250
|
+
.groupBy('placeId')
|
|
251
|
+
.map(function (value, key) {
|
|
252
|
+
var placeData = {
|
|
253
|
+
columns: Array(7).fill(''),
|
|
254
|
+
data: dataGroupByAd(value, timelineType).map(function (d) { return __spreadArray([ad === null || ad === void 0 ? void 0 : ad.name], d, true); }),
|
|
255
|
+
};
|
|
256
|
+
return placeData;
|
|
257
|
+
})
|
|
258
|
+
.value());
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
return result;
|
|
262
|
+
}
|
|
263
|
+
exports.convertToExportByAd = convertToExportByAd;
|
|
211
264
|
function placesToDomains(places, domains) {
|
|
212
265
|
var _a, _b;
|
|
213
266
|
if (domains === void 0) { domains = []; }
|
|
@@ -238,22 +291,26 @@ function placesToDomains(places, domains) {
|
|
|
238
291
|
return groupDomain;
|
|
239
292
|
}
|
|
240
293
|
exports.placesToDomains = placesToDomains;
|
|
241
|
-
var markBillingType = function (subCampaigns, data) {
|
|
242
|
-
|
|
243
|
-
// eslint-disable-next-line eqeqeq
|
|
244
|
-
var _b = subCampaigns.find(function (c) { return c.campaignGroup.id == x.campaignGroupId; }), campaignGroup = _b.campaignGroup, ads = _b.ads;
|
|
245
|
-
return __assign(__assign(__assign({}, x), Object.assign.apply(Object, __spreadArray(__spreadArray([{}], Object.values(Enum_1.BaseEvent).map(function (v) {
|
|
294
|
+
var markBillingType = function (subCampaigns, data) {
|
|
295
|
+
return data.map(function (x, index) {
|
|
246
296
|
var _a;
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
297
|
+
// eslint-disable-next-line eqeqeq
|
|
298
|
+
var _b = subCampaigns.find(function (c) { return c.campaignGroup.id == x.campaignGroupId; }), campaignGroup = _b.campaignGroup, ads = _b.ads;
|
|
299
|
+
return __assign(__assign(__assign({}, x), Object.assign.apply(Object, __spreadArray(__spreadArray([{}], Object.values(Enum_1.BaseEvent).map(function (v) {
|
|
300
|
+
var _a;
|
|
301
|
+
return (_a = {},
|
|
302
|
+
_a[v] = 0,
|
|
303
|
+
_a);
|
|
304
|
+
}), false), x.analyticEventSummaries.map(function (y) {
|
|
305
|
+
var _a;
|
|
306
|
+
return (_a = {},
|
|
307
|
+
_a[y.eventLabel] = y.total,
|
|
308
|
+
_a);
|
|
309
|
+
}), false))), { billingUnit: campaignGroup.billingUnit, isSPot: campaignGroup.billingUnit === Enum_2.AnalyticType.AUTHENTICATION &&
|
|
310
|
+
((_a = ads.find(function (ad) { return ad.id === x.campaignAdId; })) === null || _a === void 0 ? void 0 : _a.type) ===
|
|
311
|
+
Enum_1.AdType.VIDEO });
|
|
312
|
+
});
|
|
313
|
+
};
|
|
257
314
|
exports.markBillingType = markBillingType;
|
|
258
315
|
function convertToShowDetail(subCampaigns, data, selectedDomains, selectedPlaces) {
|
|
259
316
|
var placeIds = selectedPlaces.map(function (p) { return p.placeId; });
|
|
@@ -265,20 +322,23 @@ function convertToShowDetail(subCampaigns, data, selectedDomains, selectedPlaces
|
|
|
265
322
|
var adPlaces = ((_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.concat(((_b = ad === null || ad === void 0 ? void 0 : ad.deletedPlaces) === null || _b === void 0 ? void 0 : _b.map(function (item) { return (__assign(__assign({}, item), { isDeleted: true })); })) || [])) || [];
|
|
266
323
|
(0, lodash_1.uniqBy)(
|
|
267
324
|
// adPlaces.filter((p) => placeIds.includes(p.placeId)),
|
|
268
|
-
placeIds.length
|
|
325
|
+
placeIds.length
|
|
326
|
+
? adPlaces.filter(function (p) { return placeIds.includes(p.placeId); })
|
|
327
|
+
: adPlaces, 'placeId').forEach(function (place) {
|
|
269
328
|
var domain = selectedDomains.find(function (s) { return s.domainId === (place === null || place === void 0 ? void 0 : place.domainId); });
|
|
270
329
|
var totalClick = data
|
|
271
330
|
.filter(function (d) {
|
|
272
331
|
var _a;
|
|
273
|
-
return d.placeId === place.placeId
|
|
274
|
-
|
|
275
|
-
|
|
332
|
+
return d.placeId === place.placeId &&
|
|
333
|
+
d.campaignGroupId === ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) &&
|
|
334
|
+
d.campaignAdId === (ad === null || ad === void 0 ? void 0 : ad.id);
|
|
276
335
|
})
|
|
277
336
|
.reduce(function (sum, d) {
|
|
278
337
|
var _a;
|
|
279
338
|
var event = (_a = d.analyticEventSummaries) === null || _a === void 0 ? void 0 : _a.find(function (_a) {
|
|
280
339
|
var eventLabel = _a.eventLabel;
|
|
281
|
-
return
|
|
340
|
+
return eventLabel ===
|
|
341
|
+
Enum_1.BaseEvent[sub.campaignGroup.billingUnit];
|
|
282
342
|
});
|
|
283
343
|
return sum + ((event === null || event === void 0 ? void 0 : event.total) || 0);
|
|
284
344
|
}, 0);
|
|
@@ -302,55 +362,118 @@ function convertToShowDetail(subCampaigns, data, selectedDomains, selectedPlaces
|
|
|
302
362
|
}
|
|
303
363
|
exports.convertToShowDetail = convertToShowDetail;
|
|
304
364
|
function dataGroupByTimeline(place, data, timelineType) {
|
|
305
|
-
var hasSpot = data.some(function (x) { return x.isSPot; });
|
|
306
365
|
var result = (0, lodash_1.chain)(data)
|
|
307
366
|
.groupBy('timeline')
|
|
308
367
|
.map(function (value, key) {
|
|
309
368
|
var dateString = (0, Helpers_1.dateTimeToString)((0, Helpers_1.convertTimelineToDateTime)(key, timelineType), timelineType === Helpers_1.TIMELINE_TYPE.DAY
|
|
310
369
|
? 'DD/MM/YYYY'
|
|
311
370
|
: 'DD/MM/YYYY, H:mm');
|
|
312
|
-
// let impression = sumBy(value, BaseEvent[AnalyticType.VIEW])
|
|
313
371
|
var impression = (0, lodash_1.sumBy)(value, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
|
|
314
372
|
var authen = value.reduce(function (sum, d) {
|
|
373
|
+
var _a, _b;
|
|
315
374
|
if (d.isSPot) {
|
|
316
|
-
return sum +
|
|
375
|
+
return (sum +
|
|
376
|
+
Number((_a = d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
|
|
377
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _a !== void 0 ? _a : 0));
|
|
317
378
|
}
|
|
318
|
-
return sum + Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]
|
|
379
|
+
return sum + Number((_b = d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _b !== void 0 ? _b : 0);
|
|
319
380
|
}, 0);
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
381
|
+
return [place, dateString, impression, authen];
|
|
382
|
+
})
|
|
383
|
+
.value();
|
|
384
|
+
var impressionTotal = (0, lodash_1.sumBy)(data, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
|
|
385
|
+
var authenTotal = data.reduce(function (sum, d) {
|
|
386
|
+
var _a, _b;
|
|
387
|
+
if (d.isSPot) {
|
|
388
|
+
return ((_a = sum +
|
|
389
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
|
|
390
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _a !== void 0 ? _a : 0);
|
|
326
391
|
}
|
|
327
|
-
return
|
|
392
|
+
return (_b = sum + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _b !== void 0 ? _b : 0;
|
|
393
|
+
}, 0);
|
|
394
|
+
var totalArr = [
|
|
395
|
+
place,
|
|
396
|
+
i18n_1.default.t('Schedule.Total'),
|
|
397
|
+
impressionTotal,
|
|
398
|
+
authenTotal,
|
|
399
|
+
];
|
|
400
|
+
result.push(totalArr);
|
|
401
|
+
return result;
|
|
402
|
+
}
|
|
403
|
+
exports.dataGroupByTimeline = dataGroupByTimeline;
|
|
404
|
+
function dataGroupByTimelineAndPlaces(place, province, district, data, timelineType) {
|
|
405
|
+
var result = (0, lodash_1.chain)(data)
|
|
406
|
+
.groupBy('timeline')
|
|
407
|
+
.map(function (value, key) {
|
|
408
|
+
var dateString = (0, Helpers_1.dateTimeToString)((0, Helpers_1.convertTimelineToDateTime)(key, timelineType), timelineType === Helpers_1.TIMELINE_TYPE.DAY
|
|
409
|
+
? 'DD/MM/YYYY'
|
|
410
|
+
: 'DD/MM/YYYY, H:mm');
|
|
411
|
+
var impression = (0, lodash_1.sumBy)(value, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
|
|
412
|
+
var authen = value.reduce(function (sum, d) {
|
|
413
|
+
if (d.isSPot) {
|
|
414
|
+
return (sum +
|
|
415
|
+
Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
|
|
416
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0));
|
|
417
|
+
}
|
|
418
|
+
return sum + Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0);
|
|
419
|
+
}, 0);
|
|
420
|
+
return [place, province, district, dateString, impression, authen];
|
|
328
421
|
})
|
|
329
422
|
.value();
|
|
330
|
-
var
|
|
331
|
-
var
|
|
423
|
+
var impressionTotal = (0, lodash_1.sumBy)(data, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
|
|
424
|
+
var authenTotal = data.reduce(function (sum, d) {
|
|
332
425
|
if (d.isSPot) {
|
|
333
|
-
return sum +
|
|
426
|
+
return (sum +
|
|
427
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
|
|
428
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]);
|
|
334
429
|
}
|
|
335
430
|
return sum + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]];
|
|
336
431
|
}, 0);
|
|
337
|
-
var totalArr = [
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
432
|
+
var totalArr = [
|
|
433
|
+
place,
|
|
434
|
+
province,
|
|
435
|
+
district,
|
|
436
|
+
i18n_1.default.t('Schedule.Total'),
|
|
437
|
+
impressionTotal,
|
|
438
|
+
authenTotal,
|
|
439
|
+
];
|
|
344
440
|
result.push(totalArr);
|
|
345
|
-
return result
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
441
|
+
return result;
|
|
442
|
+
}
|
|
443
|
+
exports.dataGroupByTimelineAndPlaces = dataGroupByTimelineAndPlaces;
|
|
444
|
+
function dataGroupByAd(data, timelineType) {
|
|
445
|
+
var result = (0, lodash_1.chain)(data)
|
|
446
|
+
.groupBy('timeline')
|
|
447
|
+
.map(function (value, key) {
|
|
448
|
+
var dateString = (0, Helpers_1.dateTimeToString)((0, Helpers_1.convertTimelineToDateTime)(key, timelineType), timelineType === Helpers_1.TIMELINE_TYPE.DAY
|
|
449
|
+
? 'DD/MM/YYYY'
|
|
450
|
+
: 'DD/MM/YYYY, H:mm');
|
|
451
|
+
var impression = (0, lodash_1.sumBy)(value, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
|
|
452
|
+
var authen = value.reduce(function (sum, d) {
|
|
453
|
+
if (d.isSPot) {
|
|
454
|
+
return (sum +
|
|
455
|
+
Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
|
|
456
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0));
|
|
457
|
+
}
|
|
458
|
+
return sum + Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0);
|
|
459
|
+
}, 0);
|
|
460
|
+
return [dateString, impression, authen];
|
|
461
|
+
})
|
|
462
|
+
.value();
|
|
463
|
+
var impressionTotal = (0, lodash_1.sumBy)(data, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
|
|
464
|
+
var authenTotal = data.reduce(function (sum, d) {
|
|
465
|
+
if (d.isSPot) {
|
|
466
|
+
return (sum +
|
|
467
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
|
|
468
|
+
d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]);
|
|
349
469
|
}
|
|
350
|
-
return d;
|
|
351
|
-
});
|
|
470
|
+
return sum + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]];
|
|
471
|
+
}, 0);
|
|
472
|
+
var totalArr = [i18n_1.default.t('Schedule.Total'), impressionTotal, authenTotal];
|
|
473
|
+
result.push(totalArr);
|
|
474
|
+
return result;
|
|
352
475
|
}
|
|
353
|
-
exports.
|
|
476
|
+
exports.dataGroupByAd = dataGroupByAd;
|
|
354
477
|
function dataGroupByPlace(subCampaigns, ids) {
|
|
355
478
|
return (0, lodash_1.chain)(subCampaigns.filter(function (sub) {
|
|
356
479
|
var _a, _b, _c;
|
|
@@ -381,11 +504,18 @@ exports.dataGroupByPlace = dataGroupByPlace;
|
|
|
381
504
|
function campaignAnalyticInfo(subCampaigns) {
|
|
382
505
|
return {
|
|
383
506
|
analyticTypes: Array.from(new Set(subCampaigns.map(function (x) { return x.campaignGroup.billingUnit; }))),
|
|
384
|
-
hasSpot: subCampaigns.some(function (sub) {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
507
|
+
hasSpot: subCampaigns.some(function (sub) {
|
|
508
|
+
return sub.ads.some(function (ad) { return ad.type === Enum_1.AdType.VIDEO; });
|
|
509
|
+
}),
|
|
510
|
+
hasEg: subCampaigns.some(function (sub) {
|
|
511
|
+
return sub.ads.some(function (ad) {
|
|
512
|
+
return (ad.type === Enum_1.AdType.VIDEO &&
|
|
513
|
+
sub.campaignGroup.billingUnit !==
|
|
514
|
+
Enum_2.AnalyticType.AUTHENTICATION) ||
|
|
515
|
+
ad.type !== Enum_1.AdType.VIDEO;
|
|
516
|
+
}) &&
|
|
517
|
+
[Enum_2.AnalyticType.CLICK, Enum_2.AnalyticType.AUTHENTICATION].includes(sub.campaignGroup.billingUnit);
|
|
518
|
+
}),
|
|
389
519
|
};
|
|
390
520
|
}
|
|
391
521
|
exports.campaignAnalyticInfo = campaignAnalyticInfo;
|
|
@@ -394,7 +524,9 @@ var convertToChartData = function (data, campaignGroups, time) {
|
|
|
394
524
|
var timelineType = 'YYYYMMDD';
|
|
395
525
|
var convertData = Object.assign.apply(Object, __spreadArray([{}], [Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW], 'Spot', 'Engagement'].map(function (x) {
|
|
396
526
|
var _a;
|
|
397
|
-
return (_a = {},
|
|
527
|
+
return (_a = {},
|
|
528
|
+
_a[x] = { total: 0, chartData: [] },
|
|
529
|
+
_a);
|
|
398
530
|
}), false));
|
|
399
531
|
data.forEach(function (x) {
|
|
400
532
|
var _a;
|
|
@@ -405,7 +537,8 @@ var convertToChartData = function (data, campaignGroups, time) {
|
|
|
405
537
|
if (!subCampaign)
|
|
406
538
|
return;
|
|
407
539
|
var billingUnit = subCampaign.campaignGroup.billingUnit;
|
|
408
|
-
var isSpot = ((_a = subCampaign.ads.find(function (s) { return s.id === x.campaignAdId; })) === null || _a === void 0 ? void 0 : _a.type) ===
|
|
540
|
+
var isSpot = ((_a = subCampaign.ads.find(function (s) { return s.id === x.campaignAdId; })) === null || _a === void 0 ? void 0 : _a.type) ===
|
|
541
|
+
Enum_1.AdType.VIDEO;
|
|
409
542
|
var timeline = x.timeline.toString();
|
|
410
543
|
x.analyticEventSummaries.forEach(function (event) {
|
|
411
544
|
var _a;
|
|
@@ -413,7 +546,11 @@ var convertToChartData = function (data, campaignGroups, time) {
|
|
|
413
546
|
var objKey = [
|
|
414
547
|
Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION],
|
|
415
548
|
Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK],
|
|
416
|
-
].includes(event.eventLabel)
|
|
549
|
+
].includes(event.eventLabel)
|
|
550
|
+
? isSpot
|
|
551
|
+
? 'Spot'
|
|
552
|
+
: 'Engagement'
|
|
553
|
+
: event.eventLabel;
|
|
417
554
|
(_a = convertData[objKey]) === null || _a === void 0 ? void 0 : _a.chartData.push({
|
|
418
555
|
y: event.total,
|
|
419
556
|
x: timeline,
|
|
@@ -426,16 +563,20 @@ var convertToChartData = function (data, campaignGroups, time) {
|
|
|
426
563
|
});
|
|
427
564
|
var translate = (_a = {},
|
|
428
565
|
_a[Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]] = 'Common.Impression',
|
|
429
|
-
_a
|
|
430
|
-
_a
|
|
566
|
+
_a.Spot = 'Campaign.Spot',
|
|
567
|
+
_a.Engagement = 'Campaign.Engagement',
|
|
431
568
|
_a);
|
|
432
569
|
var analyticInfo = campaignAnalyticInfo(campaignGroups);
|
|
433
|
-
return Object.entries(convertData)
|
|
570
|
+
return Object.entries(convertData)
|
|
571
|
+
.map(function (_a, index) {
|
|
434
572
|
var key = _a[0], value = _a[1];
|
|
435
573
|
if ((key === 'Spot' && !analyticInfo.hasSpot) ||
|
|
436
574
|
(key === 'Engagement' && !analyticInfo.hasEg))
|
|
437
575
|
return false;
|
|
438
|
-
var data = (0, lodash_1.default)(value.chartData)
|
|
576
|
+
var data = (0, lodash_1.default)(value.chartData)
|
|
577
|
+
.groupBy('x')
|
|
578
|
+
.map(function (value, key) { return ({ x: key, y: (0, lodash_1.sumBy)(value, 'y') }); })
|
|
579
|
+
.value();
|
|
439
580
|
return {
|
|
440
581
|
label: "".concat(i18n_1.default.t(translate[key]), " ").concat((0, Helpers_1.roundDecimalNumber)(value.total)),
|
|
441
582
|
type: 'line',
|
|
@@ -445,7 +586,8 @@ var convertToChartData = function (data, campaignGroups, time) {
|
|
|
445
586
|
yAxisID: 'y',
|
|
446
587
|
variant: key,
|
|
447
588
|
};
|
|
448
|
-
})
|
|
589
|
+
})
|
|
590
|
+
.filter(Boolean);
|
|
449
591
|
};
|
|
450
592
|
exports.convertToChartData = convertToChartData;
|
|
451
593
|
function groupBy(array, key) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AdministrativeUnit } from '../Types';
|
|
1
2
|
import { CampaignGroupModel } from '../../../../../ACM-AXN/Campaign/Types';
|
|
2
3
|
export interface ICampaignAdGroup {
|
|
3
4
|
campaignId?: string;
|
|
@@ -6,10 +7,12 @@ export interface ICampaignAdGroup {
|
|
|
6
7
|
}
|
|
7
8
|
interface Props {
|
|
8
9
|
campaignId: string;
|
|
10
|
+
campaignName?: string;
|
|
9
11
|
startDate: Date;
|
|
10
12
|
endDate: Date;
|
|
11
13
|
subCampaigns: CampaignGroupModel[];
|
|
12
14
|
domains: any[];
|
|
15
|
+
fullPlaces?: AdministrativeUnit[];
|
|
13
16
|
}
|
|
14
17
|
declare const AnalyticContainer: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
15
18
|
export default AnalyticContainer;
|
|
@@ -15,7 +15,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
-
/* eslint-disable eqeqeq */
|
|
19
18
|
var react_1 = require("react");
|
|
20
19
|
var common_1 = require("../common");
|
|
21
20
|
var Utils_1 = require("./Utils");
|
|
@@ -26,8 +25,9 @@ var lodash_1 = require("lodash");
|
|
|
26
25
|
var Context_1 = __importDefault(require("../Context"));
|
|
27
26
|
var exportFile_1 = require("../../../../../ACM-AXN/CampaignSchedule/exportFile");
|
|
28
27
|
var Enum_2 = require("../../../../../ACM-AXN/Common/Enum");
|
|
28
|
+
var Helpers_1 = require("../../../../../Utils/Helpers");
|
|
29
29
|
var AnalyticContainer = function (props) {
|
|
30
|
-
var campaignId = props.campaignId, startDate = props.startDate, endDate = props.endDate, subCampaigns = props.subCampaigns, domains = props.domains;
|
|
30
|
+
var campaignId = props.campaignId, startDate = props.startDate, endDate = props.endDate, subCampaigns = props.subCampaigns, domains = props.domains, campaignName = props.campaignName, fullPlaces = props.fullPlaces;
|
|
31
31
|
var client = (0, Context_1.default)().services;
|
|
32
32
|
var _a = (0, react_1.useState)(true), isLoading = _a[0], setIsLoading = _a[1];
|
|
33
33
|
var _b = (0, react_1.useState)([]), statisticalChartData = _b[0], setStatisticalChartData = _b[1];
|
|
@@ -52,7 +52,11 @@ var AnalyticContainer = function (props) {
|
|
|
52
52
|
var _a;
|
|
53
53
|
(_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
|
|
54
54
|
var _a;
|
|
55
|
-
if (ids.find(function (id) {
|
|
55
|
+
if (ids.find(function (id) {
|
|
56
|
+
var _a;
|
|
57
|
+
return id.campaignGroupId == ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) &&
|
|
58
|
+
(!id.campaignAdId || id.campaignAdId == (ad === null || ad === void 0 ? void 0 : ad.id));
|
|
59
|
+
})) {
|
|
56
60
|
(_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.forEach(function (place) {
|
|
57
61
|
if (!result.find(function (r) { return r.placeId == place.placeId; })) {
|
|
58
62
|
result.push(place);
|
|
@@ -71,80 +75,94 @@ var AnalyticContainer = function (props) {
|
|
|
71
75
|
: selectedPlaces;
|
|
72
76
|
var selectedDomains = (0, Utils_1.placesToDomains)(selectedPlaces, domains);
|
|
73
77
|
setIsLoading(true);
|
|
74
|
-
client
|
|
78
|
+
client
|
|
79
|
+
.campaignStatisticGet({
|
|
75
80
|
startDate: (0, moment_1.default)(time.startDate).format(Enum_1.DATE_FORMAT),
|
|
76
81
|
endDate: (0, moment_1.default)(time.endDate).format(Enum_1.DATE_FORMAT),
|
|
77
82
|
timelineType: timelineType,
|
|
78
|
-
campaignAdGroups: ids.length
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
Enum_2.AnalyticGroupBy.GbCampaignAdId
|
|
85
|
-
],
|
|
83
|
+
campaignAdGroups: ids.length
|
|
84
|
+
? ids.map(function (id) { return (__assign(__assign({}, id), { campaignId: campaignId })); })
|
|
85
|
+
: [{ campaignId: campaignId }],
|
|
86
|
+
analyticGroupBies: Object.values(Enum_2.AnalyticGroupBy)
|
|
87
|
+
.filter(function (g) { return !isNaN(Number(g)); })
|
|
88
|
+
.map(function (g) { return Number(g); }),
|
|
86
89
|
placeIds: placeIds,
|
|
87
|
-
includedEventLabels: Object.values(Enum_1.BaseEvent)
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
setStatisticalChartData(statisticType
|
|
91
|
-
|
|
90
|
+
includedEventLabels: Object.values(Enum_1.BaseEvent),
|
|
91
|
+
})
|
|
92
|
+
.then(function (res) {
|
|
93
|
+
setStatisticalChartData(statisticType
|
|
94
|
+
? (0, Utils_1.convertToShowDetail)(subCampaigns, res, selectedDomains, selectedPlaces)
|
|
95
|
+
: res);
|
|
96
|
+
})
|
|
97
|
+
.finally(function () { return setIsLoading(false); });
|
|
92
98
|
};
|
|
93
99
|
var exportData = function (time, placeIds, timelineType, exportType, ids) {
|
|
94
100
|
var selectedPlaces = placeIds.length > 0
|
|
95
101
|
? placesOfCampaign.filter(function (p) { return placeIds.includes(p.placeId); })
|
|
96
102
|
: placesOfCampaign;
|
|
97
103
|
var selectedDomains = (0, Utils_1.placesToDomains)(selectedPlaces, domains);
|
|
98
|
-
return client
|
|
104
|
+
return client
|
|
105
|
+
.campaignStatisticGet({
|
|
99
106
|
startDate: (0, moment_1.default)(time.startDate).format(Enum_1.DATE_FORMAT),
|
|
100
107
|
endDate: (0, moment_1.default)(time.endDate).format(Enum_1.DATE_FORMAT),
|
|
101
108
|
timelineType: timelineType,
|
|
102
|
-
campaignAdGroups: ids.length
|
|
103
|
-
|
|
109
|
+
campaignAdGroups: ids.length
|
|
110
|
+
? ids.map(function (id) { return (__assign(__assign({}, id), { campaignId: campaignId })); })
|
|
111
|
+
: [{ campaignId: campaignId }],
|
|
112
|
+
analyticGroupBies: Object.values(Enum_2.AnalyticGroupBy)
|
|
113
|
+
.filter(function (g) { return !isNaN(Number(g)); })
|
|
114
|
+
.map(function (g) { return Number(g); }),
|
|
104
115
|
placeIds: placeIds,
|
|
105
|
-
includedEventLabels: Object.values(Enum_1.BaseEvent)
|
|
106
|
-
})
|
|
107
|
-
|
|
116
|
+
includedEventLabels: Object.values(Enum_1.BaseEvent),
|
|
117
|
+
})
|
|
118
|
+
.then(function (res) {
|
|
119
|
+
var statisticalData = (0, Utils_1.markBillingType)(subCampaigns, res);
|
|
120
|
+
var newObjects = (0, lodash_1.chain)(selectedDomains)
|
|
121
|
+
.groupBy('domainId')
|
|
122
|
+
.map(function (value) {
|
|
123
|
+
var currentPlaces = value
|
|
124
|
+
.map(function (x) { return x.places; })
|
|
125
|
+
.reduce(function (a, b) { return a.concat(b); }, []);
|
|
126
|
+
return {
|
|
127
|
+
objectId: value[0].domainId,
|
|
128
|
+
objectName: value[0].domainName,
|
|
129
|
+
places: currentPlaces,
|
|
130
|
+
};
|
|
131
|
+
})
|
|
132
|
+
.value();
|
|
108
133
|
var exportObj = {
|
|
109
|
-
name:
|
|
110
|
-
data: []
|
|
134
|
+
name: '',
|
|
135
|
+
data: [],
|
|
111
136
|
};
|
|
112
137
|
switch (exportType) {
|
|
113
138
|
case common_1.EXPORT_TYPES.Domain: {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
.map(function (value) {
|
|
117
|
-
var currentPlaces = value
|
|
118
|
-
.map(function (x) { return x.places; })
|
|
119
|
-
.reduce(function (a, b) { return a.concat(b); }, []);
|
|
120
|
-
return {
|
|
121
|
-
objectId: value[0].domainId,
|
|
122
|
-
objectName: value[0].domainName,
|
|
123
|
-
places: currentPlaces,
|
|
124
|
-
};
|
|
125
|
-
})
|
|
126
|
-
.value();
|
|
127
|
-
exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(markedData, newObjects, timelineType, 'Domain');
|
|
128
|
-
exportObj.name += '_groupby_domain';
|
|
139
|
+
exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(statisticalData, newObjects, timelineType, 'Domain', campaignName !== null && campaignName !== void 0 ? campaignName : '');
|
|
140
|
+
exportObj.name += (0, Helpers_1.nameExportStandard)('Campaign', undefined, 'groupby_domain');
|
|
129
141
|
break;
|
|
130
142
|
}
|
|
131
143
|
case common_1.EXPORT_TYPES.Export: {
|
|
132
|
-
exportObj.data = (0, Utils_1.convertToExport)(subCampaigns,
|
|
133
|
-
exportObj.name += '
|
|
144
|
+
exportObj.data = (0, Utils_1.convertToExport)(subCampaigns, statisticalData, timelineType, selectedPlaces, campaignName !== null && campaignName !== void 0 ? campaignName : '', fullPlaces);
|
|
145
|
+
exportObj.name += (0, Helpers_1.nameExportStandard)('Campaign', undefined, 'total');
|
|
134
146
|
break;
|
|
135
147
|
}
|
|
136
148
|
case common_1.EXPORT_TYPES.LocationGroup: {
|
|
137
|
-
exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(
|
|
138
|
-
exportObj.name += '
|
|
149
|
+
exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(statisticalData, (0, Utils_1.dataGroupByPlace)(subCampaigns, ids), timelineType, 'Sub Campaign', campaignName !== null && campaignName !== void 0 ? campaignName : '');
|
|
150
|
+
exportObj.name += (0, Helpers_1.nameExportStandard)('Campaign', undefined, 'groupby_subcampaign');
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case common_1.EXPORT_TYPES.Ad: {
|
|
154
|
+
exportObj.data = (0, Utils_1.convertToExportByAd)(subCampaigns, statisticalData, timelineType, campaignName !== null && campaignName !== void 0 ? campaignName : '');
|
|
155
|
+
exportObj.name += (0, Helpers_1.nameExportStandard)('Campaign', undefined, 'ad');
|
|
139
156
|
break;
|
|
140
157
|
}
|
|
141
158
|
default: {
|
|
142
|
-
exportObj.data = (0, Utils_1.convertToExportData)(
|
|
143
|
-
exportObj.name += '
|
|
159
|
+
exportObj.data = (0, Utils_1.convertToExportData)(statisticalData, selectedPlaces, timelineType, campaignName !== null && campaignName !== void 0 ? campaignName : '', fullPlaces);
|
|
160
|
+
exportObj.name += (0, Helpers_1.nameExportStandard)('Campaign', undefined, 'groupby_place');
|
|
144
161
|
break;
|
|
145
162
|
}
|
|
146
163
|
}
|
|
147
164
|
(0, exportFile_1.downloadWithDataSet)(String(exportObj.name).toUpperCase(), exportObj.data);
|
|
165
|
+
return;
|
|
148
166
|
});
|
|
149
167
|
};
|
|
150
168
|
return ((0, jsx_runtime_1.jsx)(component_1.default, { domains: domains, startDate: startDate, endDate: endDate, subCampaigns: subCampaigns, isLoading: isLoading, statisticalData: statisticalChartData, getStatisticalData: getStatisticalData, exportData: exportData }));
|
|
@@ -61,6 +61,7 @@ var SplitButtonExportType = function (props) {
|
|
|
61
61
|
Domain: t("Campaign.ExportType.Domain"),
|
|
62
62
|
Location: t('Campaign.ExportType.Location'),
|
|
63
63
|
LocationGroup: t('Campaign.ExportType.LocationGroup'),
|
|
64
|
+
Ad: t('Campaign.ExportType.Ad'),
|
|
64
65
|
};
|
|
65
66
|
return ((0, jsx_runtime_1.jsx)(material_1.Grid, { container: true, direction: "column", alignItems: "center", children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: 12, children: [(0, jsx_runtime_1.jsxs)(material_1.ButtonGroup, { disabled: loading, variant: "outlined", color: "inherit", ref: anchorRef, "aria-label": "split button", children: [(0, jsx_runtime_1.jsx)(lab_1.LoadingButton, { variant: 'outlined', onClick: handleClick, loading: loading, children: translationText[options[selectedIndex]] }), (0, jsx_runtime_1.jsx)(material_1.Button, { size: "small", "aria-controls": open ? 'split-button-menu' : undefined, "aria-expanded": open ? 'true' : undefined, "aria-label": "select merge strategy", "aria-haspopup": "menu", onClick: handleToggle, children: (0, jsx_runtime_1.jsx)(ArrowDropDown_1.default, {}) })] }), (0, jsx_runtime_1.jsx)(material_1.Popper, { style: { zIndex: 99999 }, open: open, anchorEl: anchorRef.current, transition: true, children: function (_a) {
|
|
66
67
|
var TransitionProps = _a.TransitionProps, placement = _a.placement;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { CampaignGroupModel, PlaceFilter } from '../../../../ACM-AXN/Campaign/Types';
|
|
3
3
|
import { ShareType } from '../../../../ACM-AXN/Common/Enum';
|
|
4
4
|
import { IStatisticDTO, Timestamp } from '../../../../ACM-AXN/Common/Types';
|
|
5
|
+
import { AdministrativeUnitType } from '../../../../ACM-AXN/Page/enums';
|
|
5
6
|
import { BaseChartComponent } from 'react-chartjs-2/dist/types';
|
|
6
7
|
export interface IAudienceObjectOverview {
|
|
7
8
|
timeline?: number;
|
|
@@ -81,6 +82,12 @@ export type DateRange = {
|
|
|
81
82
|
startDate: Date;
|
|
82
83
|
endDate: Date;
|
|
83
84
|
};
|
|
85
|
+
export type AdministrativeUnit = {
|
|
86
|
+
code?: string | undefined;
|
|
87
|
+
parentUnitCode?: string | undefined;
|
|
88
|
+
name?: string | undefined;
|
|
89
|
+
type?: AdministrativeUnitType;
|
|
90
|
+
};
|
|
84
91
|
export interface CampaignAnalyticService {
|
|
85
92
|
campaignStatisticGetEvents(body: IStatisticDTO | undefined): Promise<AnalyticEvent[]>;
|
|
86
93
|
campaignStatisticGetCustomer(startDate: string | undefined, endDate: string | undefined, campaignId: string | undefined): Promise<AudienceObjectReply>;
|
|
@@ -88,12 +95,15 @@ export interface CampaignAnalyticService {
|
|
|
88
95
|
domainsGetAll?: () => Promise<IDomain[]>;
|
|
89
96
|
placesGetPagingByPlaceFilter: (pageIndex?: number, pageSize?: number, body?: PlaceFilter) => Promise<any>;
|
|
90
97
|
placesGetByPlaceFilter: (body?: PlaceFilter) => Promise<any[]>;
|
|
98
|
+
administrativeUnitsGet: () => Promise<AdministrativeUnit[]>;
|
|
91
99
|
}
|
|
92
100
|
export interface CampaignAnalyticProps {
|
|
93
101
|
placeMultiSelectComponent: (p?: any) => JSX.Element;
|
|
102
|
+
fullPlaces?: AdministrativeUnit[];
|
|
94
103
|
chart: BaseChartComponent;
|
|
95
104
|
services: CampaignAnalyticService;
|
|
96
105
|
campaignId: string;
|
|
106
|
+
campaignName?: string;
|
|
97
107
|
isNetwork?: boolean;
|
|
98
108
|
subCampaigns: CampaignGroupModel[];
|
|
99
109
|
}
|
|
@@ -4,6 +4,7 @@ exports.EXPORT_TYPES = void 0;
|
|
|
4
4
|
exports.EXPORT_TYPES = {
|
|
5
5
|
Export: "Export",
|
|
6
6
|
Domain: "Domain",
|
|
7
|
-
LocationGroup: "LocationGroup",
|
|
8
|
-
Location: "Location",
|
|
7
|
+
LocationGroup: "LocationGroup", // Chiến dịch con
|
|
8
|
+
Location: "Location", // Địa điểm
|
|
9
|
+
Ad: "Ad" // Quảng cáo
|
|
9
10
|
};
|
|
@@ -39,13 +39,42 @@ var Context_1 = __importStar(require("./Context"));
|
|
|
39
39
|
var Hooks_1 = require("../../../../AWING/Hooks");
|
|
40
40
|
exports.tabs = { ANALYTIC: 0, EVENT: 1, CUSTOMER: 2 };
|
|
41
41
|
function TabStatisticsContainer() {
|
|
42
|
-
var _a = (0, Context_1.default)(), client = _a.services, campaignId = _a.campaignId, subCampaigns = _a.subCampaigns, isNetwork = _a.isNetwork;
|
|
42
|
+
var _a = (0, Context_1.default)(), client = _a.services, campaignId = _a.campaignId, subCampaigns = _a.subCampaigns, isNetwork = _a.isNetwork, campaignName = _a.campaignName, fullPlaces = _a.fullPlaces;
|
|
43
43
|
var _b = (0, react_1.useState)(exports.tabs.ANALYTIC), tabIndex = _b[0], setTabIndex = _b[1];
|
|
44
44
|
var time = (0, react_1.useMemo)(function () { return (0, Utils_1.getTime)(subCampaigns); }, [subCampaigns]);
|
|
45
|
+
var _c = (0, Hooks_1.useGetData)([], function () {
|
|
46
|
+
return client.domainsGetAll
|
|
47
|
+
? client === null || client === void 0 ? void 0 : client.domainsGetAll().then(function (res) {
|
|
48
|
+
var campaignDomains = [];
|
|
49
|
+
subCampaigns.forEach(function (s) {
|
|
50
|
+
var _a;
|
|
51
|
+
(_a = s === null || s === void 0 ? void 0 : s.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
|
|
52
|
+
var _a;
|
|
53
|
+
(_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.forEach(function (p) {
|
|
54
|
+
var _a;
|
|
55
|
+
var idx = campaignDomains.findIndex(function (c) { return c.domainId === p.domainId; });
|
|
56
|
+
if (idx > -1) {
|
|
57
|
+
campaignDomains[idx].places.push(p);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
var domainName = (_a = res.find(function (d) { return d.domainId === p.domainId; })) === null || _a === void 0 ? void 0 : _a.name;
|
|
61
|
+
campaignDomains.push({
|
|
62
|
+
domainId: p.domainId,
|
|
63
|
+
domainName: domainName,
|
|
64
|
+
places: [p],
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
return campaignDomains;
|
|
71
|
+
})
|
|
72
|
+
: Promise.resolve([]);
|
|
73
|
+
}), isLoading = _c.isLoading, data = _c.data;
|
|
45
74
|
var tabPanel = function () {
|
|
46
75
|
switch (tabIndex) {
|
|
47
76
|
case exports.tabs.ANALYTIC:
|
|
48
|
-
return ((0, jsx_runtime_1.jsx)(Analytic_1.default, { campaignId: campaignId, subCampaigns: subCampaigns, startDate: time.startDate, endDate: time.endDate, domains: data }));
|
|
77
|
+
return ((0, jsx_runtime_1.jsx)(Analytic_1.default, { campaignId: campaignId, subCampaigns: subCampaigns, startDate: time.startDate, endDate: time.endDate, domains: data, campaignName: campaignName, fullPlaces: fullPlaces }));
|
|
49
78
|
case exports.tabs.EVENT:
|
|
50
79
|
return ((0, jsx_runtime_1.jsx)(Event_1.default, { campaignId: campaignId, startDate: time.startDate, endDate: time.endDate, subCampaigns: subCampaigns, domains: data }));
|
|
51
80
|
case exports.tabs.CUSTOMER:
|
|
@@ -54,33 +83,6 @@ function TabStatisticsContainer() {
|
|
|
54
83
|
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
|
55
84
|
}
|
|
56
85
|
};
|
|
57
|
-
var _c = (0, Hooks_1.useGetData)([], function () {
|
|
58
|
-
return client.domainsGetAll ? client === null || client === void 0 ? void 0 : client.domainsGetAll().then(function (res) {
|
|
59
|
-
var campaignDomains = [];
|
|
60
|
-
subCampaigns.forEach(function (s) {
|
|
61
|
-
var _a;
|
|
62
|
-
(_a = s === null || s === void 0 ? void 0 : s.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
|
|
63
|
-
var _a;
|
|
64
|
-
(_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.forEach(function (p) {
|
|
65
|
-
var _a;
|
|
66
|
-
var idx = campaignDomains.findIndex(function (c) { return c.domainId === p.domainId; });
|
|
67
|
-
if (idx > -1) {
|
|
68
|
-
campaignDomains[idx].places.push(p);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
var domainName = (_a = res.find(function (d) { return d.domainId === p.domainId; })) === null || _a === void 0 ? void 0 : _a.name;
|
|
72
|
-
campaignDomains.push({
|
|
73
|
-
domainId: p.domainId,
|
|
74
|
-
domainName: domainName,
|
|
75
|
-
places: [p],
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
return campaignDomains;
|
|
82
|
-
}) : Promise.resolve([]);
|
|
83
|
-
}), isLoading = _c.isLoading, data = _c.data;
|
|
84
86
|
var handleChangeTab = function (newValue) {
|
|
85
87
|
setTabIndex(newValue);
|
|
86
88
|
};
|
|
@@ -33,16 +33,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
33
|
__setModuleDefault(result, mod);
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
37
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
41
38
|
var react_1 = __importStar(require("react"));
|
|
42
39
|
var react_i18next_1 = require("react-i18next");
|
|
43
40
|
var recoil_1 = require("recoil");
|
|
44
41
|
var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
|
|
45
|
-
var Hooks_1 = __importDefault(require("../../../../ACM-AXN/Campaign/Hooks"));
|
|
46
42
|
var Enum_2 = require("../../../../ACM-AXN/Common/Enum");
|
|
47
43
|
var lodash_1 = require("lodash");
|
|
48
44
|
var Utils_1 = require("../../Utils");
|
|
@@ -50,15 +46,15 @@ var Recoils_1 = require("../Recoils");
|
|
|
50
46
|
var material_1 = require("@mui/material");
|
|
51
47
|
function SubCampaignDetail(props) {
|
|
52
48
|
var t = (0, react_i18next_1.useTranslation)().t;
|
|
53
|
-
var service = (0, Hooks_1.default)().service;
|
|
54
49
|
var subCampaign = props.subCampaign, onSubCampaignChange = props.onSubCampaignChange, onChangeSubCampaignStatus = props.onChangeSubCampaignStatus;
|
|
50
|
+
var _a = (0, react_1.useState)(subCampaign.bonusAmount), bonusAmount = _a[0], setBonusAmount = _a[1];
|
|
55
51
|
var getFormValid = function () { return ({
|
|
56
52
|
name: (0, Utils_1.nameValid)(subCampaign.name),
|
|
57
53
|
bookingAmount: !(0, Utils_1.checkPriority)(subCampaign.priority, Enum_1.CampaignPriority.ClassB) || (0, Utils_1.bookingValid)(subCampaign.bookingAmount),
|
|
58
54
|
bonusAmount: (0, Utils_1.bonusValid)(subCampaign.bonusAmount),
|
|
59
55
|
billingUnit: subCampaign.billingUnit !== null,
|
|
60
56
|
}); };
|
|
61
|
-
var
|
|
57
|
+
var _b = react_1.default.useState(getFormValid), subValid = _b[0], setSubValid = _b[1];
|
|
62
58
|
var isCreate = (0, recoil_1.useRecoilValue)(Recoils_1.isCreateState);
|
|
63
59
|
(0, react_1.useEffect)(function () {
|
|
64
60
|
onSubCampaignChange(function (prev) { return (0, lodash_1.cloneDeep)(prev); });
|
|
@@ -110,14 +106,16 @@ function SubCampaignDetail(props) {
|
|
|
110
106
|
});
|
|
111
107
|
}, children: Object.values(Enum_1.CampaignPriority).map(function (priority) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: priority, children: t("Campaign.".concat(priority)) }, priority)); }) }) })] }), (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, style: { padding: 8, paddingTop: 0 }, children: [(0, Utils_1.checkPriority)(subCampaign.priority, Enum_1.CampaignPriority.ClassB) && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bookingAmount", required: true, fullWidth: true, variant: "standard", type: "number", label: translationText.booking, value: subCampaign.bookingAmount, onChange: function (e) {
|
|
112
108
|
onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bookingAmount: Number(e.target.value) })); });
|
|
109
|
+
setBonusAmount(Math.round(Number(e.target.value) * 0.05));
|
|
113
110
|
}, onFocus: function (event) { return event.target.select(); }, error: subValid.bookingAmount !== undefined &&
|
|
114
111
|
!subValid.bookingAmount, helperText: subValid.bookingAmount !== undefined &&
|
|
115
112
|
!subValid.bookingAmount
|
|
116
113
|
? subCampaign.bookingAmount < 0
|
|
117
114
|
? translationText.notNegative
|
|
118
115
|
: translationText.helperText
|
|
119
|
-
: '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bonusAmount", variant: "standard", fullWidth: true, type: "number", label: translationText.bonus, value:
|
|
116
|
+
: '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bonusAmount", variant: "standard", fullWidth: true, type: "number", label: translationText.bonus, value: bonusAmount, onChange: function (e) {
|
|
120
117
|
var value = Number(e.target.value);
|
|
118
|
+
setBonusAmount(value);
|
|
121
119
|
onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bonusAmount: value })); });
|
|
122
120
|
}, onFocus: function (event) { return event.target.select(); }, error: subValid.bonusAmount !== undefined &&
|
|
123
121
|
!subValid.bonusAmount, helperText: subValid.bonusAmount !== undefined &&
|
|
@@ -73,13 +73,14 @@ var CreateOrEdit = function () {
|
|
|
73
73
|
var _e = (0, recoil_1.useRecoilState)(Recoils_1.confirmExitState), confirmExit = _e[0], setConfirmExit = _e[1];
|
|
74
74
|
var readyForSubmit = (0, recoil_1.useRecoilValue)(Recoils_1.readyForSubmitState);
|
|
75
75
|
var setCreate = (0, recoil_1.useSetRecoilState)(Recoils_1.isCreateState);
|
|
76
|
+
var _f = (0, react_1.useState)(), fullPlaces = _f[0], setFullPlaces = _f[1];
|
|
76
77
|
var tabValid = {
|
|
77
78
|
tabInfomationValid: (0, recoil_1.useRecoilValue)(Recoils_1.tabInfomationValidState),
|
|
78
79
|
tabSubCampaignValid: (0, recoil_1.useRecoilValue)(Recoils_1.tabSubCampaignValidState),
|
|
79
80
|
tabPartnerValid: (0, recoil_1.useRecoilValue)(Recoils_1.tabPartnerValidState),
|
|
80
81
|
};
|
|
81
|
-
var
|
|
82
|
-
var
|
|
82
|
+
var _g = (0, react_1.useState)('0'), value = _g[0], setValue = _g[1];
|
|
83
|
+
var _h = (0, react_1.useState)(true), loading = _h[0], setLoading = _h[1];
|
|
83
84
|
var componentStatus = (0, react_1.useMemo)(function () {
|
|
84
85
|
return location.pathname.includes(Constant_1.Constants.CAMPAIGN_DETAIL) &&
|
|
85
86
|
!!campaignId
|
|
@@ -89,16 +90,20 @@ var CreateOrEdit = function () {
|
|
|
89
90
|
: Constant_1.Constants.CAMPAIGN_CREATE;
|
|
90
91
|
}, [location.pathname, campaignId]);
|
|
91
92
|
(0, react_1.useEffect)(function () {
|
|
92
|
-
if (!service.attributesGetByObjectTypeCode &&
|
|
93
|
-
|
|
93
|
+
if (!service.attributesGetByObjectTypeCode &&
|
|
94
|
+
!campaignData.campaignAttributes.length) {
|
|
95
|
+
setCampaignData(function (prev) {
|
|
96
|
+
return (__assign(__assign({}, prev), { campaignAttributes: [''] }));
|
|
97
|
+
});
|
|
94
98
|
}
|
|
95
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
96
|
-
}, [
|
|
99
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
100
|
+
}, [campaignData.campaignAttributes]);
|
|
97
101
|
(0, react_1.useEffect)(function () {
|
|
98
102
|
setLoading(true);
|
|
99
103
|
Promise.all([getCampaignData(), getPage()]).finally(function () {
|
|
100
104
|
setLoading(false);
|
|
101
105
|
});
|
|
106
|
+
service.administrativeUnitsGet().then(setFullPlaces);
|
|
102
107
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
103
108
|
}, []);
|
|
104
109
|
(0, react_1.useEffect)(function () {
|
|
@@ -109,7 +114,9 @@ var CreateOrEdit = function () {
|
|
|
109
114
|
.directoriesGetByObjectTypeCode(Enum_1.DirectoryRoot.Campaign)
|
|
110
115
|
.then(setDirectories);
|
|
111
116
|
if (service.attributesGetByObjectTypeCode) {
|
|
112
|
-
service
|
|
117
|
+
service
|
|
118
|
+
.attributesGetByObjectTypeCode(Enum_1.DirectoryRoot.Campaign)
|
|
119
|
+
.then(setAttributes);
|
|
113
120
|
}
|
|
114
121
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
115
122
|
}, []);
|
|
@@ -135,7 +142,7 @@ var CreateOrEdit = function () {
|
|
|
135
142
|
{
|
|
136
143
|
label: t('Campaign.Statistic'),
|
|
137
144
|
isShow: componentStatus === Constant_1.Constants.CAMPAIGN_DETAIL,
|
|
138
|
-
component: ((0, jsx_runtime_1.jsx)(TabStatistic_1.default, __assign({ campaignId: campaignData.campaign.id, subCampaigns: campaignData.campaignGroups }, otherProps, { services: service }))),
|
|
145
|
+
component: ((0, jsx_runtime_1.jsx)(TabStatistic_1.default, __assign({ campaignId: campaignData.campaign.id, campaignName: campaignData.campaign.name, subCampaigns: campaignData.campaignGroups, fullPlaces: fullPlaces }, otherProps, { services: service }))),
|
|
139
146
|
},
|
|
140
147
|
{
|
|
141
148
|
label: t('Campaign.Partner'),
|
|
@@ -153,7 +160,10 @@ var CreateOrEdit = function () {
|
|
|
153
160
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
154
161
|
[t, componentStatus, Constant_1.Constants, campaignData]);
|
|
155
162
|
var handleChangeTab = function (_event, newValue) {
|
|
156
|
-
navigate((0, Router_1.generatePath)(matchPath, {
|
|
163
|
+
navigate((0, Router_1.generatePath)(matchPath, {
|
|
164
|
+
campaignId: campaignId,
|
|
165
|
+
tabName: route[Number(newValue)],
|
|
166
|
+
}), { replace: true });
|
|
157
167
|
};
|
|
158
168
|
var getCampaignData = function () {
|
|
159
169
|
if (campaignId) {
|
|
@@ -189,7 +199,8 @@ var CreateOrEdit = function () {
|
|
|
189
199
|
campaignModel.campaignGroups.forEach(function (g) {
|
|
190
200
|
g.campaignGroup.ticket = Enum_1.CampaignTicket.INACTIVE;
|
|
191
201
|
if (!service.attributesGetByObjectTypeCode)
|
|
192
|
-
g.campaignGroup.billingUnit =
|
|
202
|
+
g.campaignGroup.billingUnit =
|
|
203
|
+
Enum_2.AnalyticType.AUTHENTICATION;
|
|
193
204
|
});
|
|
194
205
|
}
|
|
195
206
|
setCampaignData(campaignModel);
|
|
@@ -234,7 +245,9 @@ var CreateOrEdit = function () {
|
|
|
234
245
|
fontSize: '0.875rem',
|
|
235
246
|
}, children: tab.label }), error: (tab === null || tab === void 0 ? void 0 : tab.valid)
|
|
236
247
|
? !tabValid[tab === null || tab === void 0 ? void 0 : tab.valid]
|
|
237
|
-
: undefined, errContent: (0, jsx_runtime_1.jsx)("span", { style: {
|
|
248
|
+
: undefined, errContent: (0, jsx_runtime_1.jsx)("span", { style: {
|
|
249
|
+
marginLeft: '-5px',
|
|
250
|
+
}, children: "*" }) }) }, idx)); }) }) }), tabsList.map(function (tab, idx) { return ((0, jsx_runtime_1.jsx)(lab_1.TabPanel, { sx: { padding: '0' }, value: String(idx), children: tab.component }, idx)); })] }) })) }) }));
|
|
238
251
|
};
|
|
239
252
|
// eslint-disable-next-line import/no-anonymous-default-export
|
|
240
253
|
exports.default = (0, Wrapper_1.default)(CreateOrEdit, { component: recoil_1.RecoilRoot });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VERIFIED_STATUS = exports.VALID_PROCESS_CODE = exports.TrackingType = exports.PathType = exports.FileTypeCode = exports.PageCode = void 0;
|
|
3
|
+
exports.AdministrativeUnitType = exports.VERIFIED_STATUS = exports.VALID_PROCESS_CODE = exports.TrackingType = exports.PathType = exports.FileTypeCode = exports.PageCode = void 0;
|
|
4
4
|
var PageCode;
|
|
5
5
|
(function (PageCode) {
|
|
6
6
|
PageCode[PageCode["Wlc"] = 0] = "Wlc";
|
|
@@ -36,3 +36,9 @@ var VERIFIED_STATUS;
|
|
|
36
36
|
VERIFIED_STATUS[VERIFIED_STATUS["NOT_VERIFIED"] = 0] = "NOT_VERIFIED";
|
|
37
37
|
VERIFIED_STATUS[VERIFIED_STATUS["VERIFIED_ERROR"] = 1] = "VERIFIED_ERROR";
|
|
38
38
|
})(VERIFIED_STATUS || (exports.VERIFIED_STATUS = VERIFIED_STATUS = {}));
|
|
39
|
+
var AdministrativeUnitType;
|
|
40
|
+
(function (AdministrativeUnitType) {
|
|
41
|
+
AdministrativeUnitType[AdministrativeUnitType["Province"] = 0] = "Province";
|
|
42
|
+
AdministrativeUnitType[AdministrativeUnitType["District"] = 1] = "District";
|
|
43
|
+
AdministrativeUnitType[AdministrativeUnitType["Commune"] = 2] = "Commune";
|
|
44
|
+
})(AdministrativeUnitType || (exports.AdministrativeUnitType = AdministrativeUnitType = {}));
|
package/lib/Utils/Helpers.d.ts
CHANGED
package/lib/Utils/Helpers.js
CHANGED
|
@@ -46,7 +46,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
46
46
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
47
|
};
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.parseJSON = exports.fillMissingDates = exports.setObject = exports.formatChartNumber = exports.updateObjectFields = exports.validateNumber = exports.getToday = exports.convertDataSetPattern = exports.convertAnalyticModelToChartDataAdvance = exports.getStartOfDay = exports.timestampToStringDDMMYYYY = exports.dateToStringDDMMYYYY = exports.convertTimelineToDateTime = exports.dateTimeToString = exports.convertTimestampToDateTime = exports.convertDateTimeToTimestamp = exports.checkValidUrl = exports.validateAnalyticTypes = exports.stringToListAccessPoint = exports.checkValidMacAddress = exports.checkValidStringListAP = exports.convertTimeLine = exports.WMAPEcalculator = exports.roundDecimalNumber = exports.convertArrayToObject = exports.offlinePaginate = exports.changeToAlias = exports.calculatorDirectoryIdRoot = exports.getRoutePath = exports.timestampToStringDDMMYYYYHHmm = exports.dateToStringddddDDMMYYYYHHmm = exports.downloadZipFile = exports.downloadFilePattern = exports.generateUUID = exports.displayLongString = exports.getQueryVariable = exports.formatNumber = exports.dateToString = exports.getCookie = exports.TIMELINE_TYPE = void 0;
|
|
49
|
+
exports.nameExportStandard = exports.parseJSON = exports.fillMissingDates = exports.setObject = exports.formatChartNumber = exports.updateObjectFields = exports.validateNumber = exports.getToday = exports.convertDataSetPattern = exports.convertAnalyticModelToChartDataAdvance = exports.getStartOfDay = exports.timestampToStringDDMMYYYY = exports.dateToStringDDMMYYYY = exports.convertTimelineToDateTime = exports.dateTimeToString = exports.convertTimestampToDateTime = exports.convertDateTimeToTimestamp = exports.checkValidUrl = exports.validateAnalyticTypes = exports.stringToListAccessPoint = exports.checkValidMacAddress = exports.checkValidStringListAP = exports.convertTimeLine = exports.WMAPEcalculator = exports.roundDecimalNumber = exports.convertArrayToObject = exports.offlinePaginate = exports.changeToAlias = exports.calculatorDirectoryIdRoot = exports.getRoutePath = exports.timestampToStringDDMMYYYYHHmm = exports.dateToStringddddDDMMYYYYHHmm = exports.downloadZipFile = exports.downloadFilePattern = exports.generateUUID = exports.displayLongString = exports.getQueryVariable = exports.formatNumber = exports.dateToString = exports.getCookie = exports.TIMELINE_TYPE = void 0;
|
|
50
50
|
var moment_1 = __importDefault(require("moment"));
|
|
51
51
|
var i18n_1 = __importDefault(require("../i18n"));
|
|
52
52
|
var helper_1 = require("../AWING/helper");
|
|
@@ -586,20 +586,29 @@ function fillMissingDates(data, startDate, endDate, format) {
|
|
|
586
586
|
(0, lodash_1.xor)(data.map(function (d) { return d.x; }), dates).forEach(function (x) {
|
|
587
587
|
result.push({ x: x, y: 0 });
|
|
588
588
|
});
|
|
589
|
-
return (0, lodash_1.default)(result)
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
})
|
|
589
|
+
return (0, lodash_1.default)(result)
|
|
590
|
+
.groupBy('x')
|
|
591
|
+
.map(function (value, key) { return ({
|
|
592
|
+
x: key,
|
|
593
|
+
y: lodash_1.default.sumBy(value, 'y'),
|
|
594
|
+
}); })
|
|
595
|
+
.orderBy(['x'], ['asc'])
|
|
596
|
+
.value();
|
|
595
597
|
}
|
|
596
598
|
exports.fillMissingDates = fillMissingDates;
|
|
597
599
|
function parseJSON(str) {
|
|
598
600
|
try {
|
|
599
|
-
return JSON.parse(str ||
|
|
601
|
+
return JSON.parse(str || '{}');
|
|
600
602
|
}
|
|
601
603
|
catch (e) {
|
|
602
604
|
return str;
|
|
603
605
|
}
|
|
604
606
|
}
|
|
605
607
|
exports.parseJSON = parseJSON;
|
|
608
|
+
//AWING_[NAME FEATURE]_[OBJECT_NAME]_[SUB_TITLE]_[DATEFORMAT yyyy-MM-DD]
|
|
609
|
+
function nameExportStandard(nameFeature, objectName, subTitle) {
|
|
610
|
+
var currentTime = (0, moment_1.default)().format('YYYY-MM-DD');
|
|
611
|
+
var parts = [nameFeature, objectName, subTitle, currentTime].filter(Boolean);
|
|
612
|
+
return "AWING_".concat(parts.join('_').toUpperCase());
|
|
613
|
+
}
|
|
614
|
+
exports.nameExportStandard = nameExportStandard;
|
|
@@ -121,6 +121,16 @@
|
|
|
121
121
|
"RequestHasApprove": "Your request have approved",
|
|
122
122
|
"Advance": "Advance",
|
|
123
123
|
"Default": "Default",
|
|
124
|
+
"CampaignName": "Campaign’s Name",
|
|
125
|
+
"Channel": "Channel",
|
|
126
|
+
"DateGenerated": "Date/Time Generated",
|
|
127
|
+
"Timezone": "Report Timezone",
|
|
128
|
+
"SubCampaign": "Sub Campaign",
|
|
129
|
+
"Date": "Date",
|
|
130
|
+
"Location": "Location",
|
|
131
|
+
"CityProvince": "City/Province",
|
|
132
|
+
"District": "District",
|
|
133
|
+
"GeneralData": "General",
|
|
124
134
|
"Events": "Events"
|
|
125
135
|
},
|
|
126
136
|
"User": {
|
|
@@ -475,6 +485,7 @@
|
|
|
475
485
|
"Export": "Export total",
|
|
476
486
|
"Domain": "Export By Domain",
|
|
477
487
|
"Location": "Export By Location",
|
|
488
|
+
"Ad": "Export By Ad",
|
|
478
489
|
"LocationGroup": "Export By Sub Campaign"
|
|
479
490
|
},
|
|
480
491
|
"Status": {
|
|
@@ -126,6 +126,16 @@
|
|
|
126
126
|
"RequestHasApprove": "Yêu cầu đã được thay đổi",
|
|
127
127
|
"Advance": "Nâng cao",
|
|
128
128
|
"Default": "Mặc định",
|
|
129
|
+
"CampaignName": "Tên chiến dịch",
|
|
130
|
+
"Channel": "Kênh",
|
|
131
|
+
"DateGenerated": "Thời gian lập báo cáo",
|
|
132
|
+
"Timezone": "Múi giờ",
|
|
133
|
+
"SubCampaign": "Chiến dịch con",
|
|
134
|
+
"Date": "Thời gian",
|
|
135
|
+
"Location": "Địa điểm",
|
|
136
|
+
"CityProvince": "Tỉnh/Thành phố",
|
|
137
|
+
"District": "Quận/Huyện",
|
|
138
|
+
"GeneralData": "Dữ liệu tổng",
|
|
129
139
|
"Events": "Sự kiện"
|
|
130
140
|
},
|
|
131
141
|
"InvalidMessage": {
|
|
@@ -459,7 +469,8 @@
|
|
|
459
469
|
"Export": "Xuất dữ liệu tổng",
|
|
460
470
|
"Domain": "Xuất theo Domain",
|
|
461
471
|
"Location": "Xuất theo địa điểm",
|
|
462
|
-
"LocationGroup": "Xuất theo chiến dịch con"
|
|
472
|
+
"LocationGroup": "Xuất theo chiến dịch con",
|
|
473
|
+
"Ad": "Xuất theo Ad"
|
|
463
474
|
},
|
|
464
475
|
"Status": {
|
|
465
476
|
"Title": "Trạng thái",
|