awing-library 2.1.174-dev → 2.1.176-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.
@@ -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
- export declare function convertToExportDataGroupBy(data: any, objects: any, timelineType: any, groupBy: any): {
6
- columns: any[];
7
- data: any;
8
- }[];
9
- export declare function convertToExportData(data: DataObject[], places: any, timelineType: any): {
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, reportField: 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,39 @@ 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 Enum_2 = require("../../../../../ACM-AXN/Common/Enum");
55
- function convertToExportDataGroupBy(data, objects, timelineType, groupBy) {
56
+ var addHeaderExcel = function (result, campaignName, reportField) {
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
+ columns: [reportField],
75
+ data: [],
76
+ });
77
+ };
78
+ function convertToExportDataGroupBy(data, objects, timelineType, groupBy, campaignName, reportField) {
56
79
  var result = [];
57
- var hasSpot = data.some(function (x) { return x.isSPot; });
58
80
  var spotTitle = i18n_1.default.t('Common.Spot');
81
+ addHeaderExcel(result, campaignName, reportField);
59
82
  var exportData = objects
60
83
  .map(function (object, key) {
61
84
  var placeIds = object.places.map(function (plc) { return plc.placeId; });
@@ -72,55 +95,42 @@ function convertToExportDataGroupBy(data, objects, timelineType, groupBy) {
72
95
  result.push({
73
96
  columns: [
74
97
  groupBy,
75
- 'Time',
98
+ 'Date',
76
99
  i18n_1.default.t('Common.Impression'),
77
100
  i18n_1.default.t('Common.Engagement'),
78
- spotTitle
79
- ].map(function (item) {
80
- // eslint-disable-next-line eqeqeq
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
- }),
101
+ spotTitle,
102
+ ],
103
+ data: exportData,
93
104
  });
94
105
  return result;
95
106
  }
96
107
  exports.convertToExportDataGroupBy = convertToExportDataGroupBy;
97
- function convertToExportData(data, places, timelineType) {
108
+ function convertToExportData(data, places, timelineType, campaignName, fullPlaces) {
98
109
  var result = [];
99
110
  var spotTitle = i18n_1.default.t('Common.Spot');
100
- var hasSpot = data.some(function (x) { return x.isSPot; });
111
+ addHeaderExcel(result, campaignName, i18n_1.default.t('Common.Location'));
101
112
  result.push({
102
113
  columns: [
103
- 'Place',
104
- 'Time',
114
+ i18n_1.default.t('Common.Location'),
115
+ i18n_1.default.t('Common.CityProvince'),
116
+ i18n_1.default.t('Common.District'),
117
+ i18n_1.default.t('Common.Date'),
105
118
  i18n_1.default.t('Common.Impression'),
106
- i18n_1.default.t('Campaign.Engagement'),
119
+ i18n_1.default.t('Campaign.Engagement') + '(Spot)',
107
120
  spotTitle,
108
- ].map(function (item) {
109
- // eslint-disable-next-line eqeqeq
110
- if (item == spotTitle && !hasSpot) {
111
- return '';
112
- }
113
- return item;
114
- }),
115
- data: dataGroupByTimeline('All', data, timelineType),
121
+ ],
122
+ data: dataGroupByTimelineAndPlaces('All', 'All', 'All', data, timelineType),
116
123
  });
117
124
  Array.prototype.push.apply(result, (0, lodash_1.chain)(data)
118
125
  .groupBy('placeId')
119
126
  .map(function (value, key) {
127
+ var _a, _b;
120
128
  var place = places.find(function (x) { return x.placeId === key; });
129
+ 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;
130
+ 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
131
  var placeData = {
122
132
  columns: Array(7).fill(''),
123
- data: dataGroupByTimeline(place ? place.name : key, value, timelineType)
133
+ data: dataGroupByTimelineAndPlaces(place ? place.name : key, province !== null && province !== void 0 ? province : '', district !== null && district !== void 0 ? district : '', value, timelineType),
124
134
  };
125
135
  return placeData;
126
136
  })
@@ -128,10 +138,11 @@ function convertToExportData(data, places, timelineType) {
128
138
  return result;
129
139
  }
130
140
  exports.convertToExportData = convertToExportData;
131
- function convertToExport(subCampaigns, data, timelineType, places) {
141
+ function convertToExport(subCampaigns, data, timelineType, places, campaignName, fullPlaces) {
132
142
  var result = [];
133
143
  var isShouldHeader = true;
134
144
  var spotTitle = i18n_1.default.t('Common.Spot');
145
+ addHeaderExcel(result, campaignName, i18n_1.default.t('Common.GeneralData'));
135
146
  subCampaigns.forEach(function (sub) {
136
147
  var _a;
137
148
  (_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
@@ -143,7 +154,7 @@ function convertToExport(subCampaigns, data, timelineType, places) {
143
154
  d.campaignAdId === ad.id);
144
155
  })
145
156
  // eslint-disable-next-line no-sequences
146
- .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) {
157
+ .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
158
  var _a;
148
159
  return (_a = {},
149
160
  _a[v] = 0,
@@ -153,51 +164,39 @@ function convertToExport(subCampaigns, data, timelineType, places) {
153
164
  return (_a = {},
154
165
  _a[y.eventLabel] = y.total,
155
166
  _a);
156
- }), false))))); });
167
+ }), false)))); });
157
168
  result.push({
158
- columns: (isShouldHeader
169
+ columns: isShouldHeader
159
170
  ? [
160
- 'Sub-campaign',
171
+ i18n_1.default.t('Common.SubCampaign'),
161
172
  'Ad',
162
- 'Place',
163
- 'Time',
173
+ i18n_1.default.t('Common.Location'),
174
+ i18n_1.default.t('Common.CityProvince'),
175
+ i18n_1.default.t('Common.District'),
176
+ i18n_1.default.t('Common.Date'),
164
177
  i18n_1.default.t('Common.Impression'),
165
- i18n_1.default.t("Campaign.Engagement"),
178
+ i18n_1.default.t('Campaign.Engagement') + '(Spot)',
166
179
  spotTitle,
167
180
  ]
168
- : Array(7).fill('')).map(function (item) {
169
- if (item === spotTitle && !hasSpot) {
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
- }),
181
+ : Array(7).fill(''),
182
+ 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
183
  });
182
184
  isShouldHeader = false;
183
185
  Array.prototype.push.apply(result, (0, lodash_1.chain)(adData)
184
186
  .groupBy('placeId')
185
187
  .map(function (value, key) {
188
+ var _a, _b;
186
189
  var place = places.find(function (x) { return x.placeId === key; });
190
+ 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;
191
+ 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
192
  var placeData = {
188
193
  columns: Array(7).fill(''),
189
- data: dataGroupByTimeline(place ? (place === null || place === void 0 ? void 0 : place.name) || place.placeId : key, value, timelineType).map(function (d) {
194
+ 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
195
  var _a;
191
196
  return __spreadArray([
192
197
  (_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.name,
193
198
  ad === null || ad === void 0 ? void 0 : ad.name
194
199
  ], d, true);
195
- }).map(function (d) {
196
- if (!hasSpot) {
197
- d.pop();
198
- d.push('');
199
- }
200
- return d;
201
200
  }),
202
201
  };
203
202
  return placeData;
@@ -208,6 +207,63 @@ function convertToExport(subCampaigns, data, timelineType, places) {
208
207
  return result;
209
208
  }
210
209
  exports.convertToExport = convertToExport;
210
+ function convertToExportByAd(subCampaigns, data, timelineType, campaignName) {
211
+ var result = [];
212
+ var isShouldHeader = true;
213
+ var spotTitle = i18n_1.default.t('Common.Spot');
214
+ addHeaderExcel(result, campaignName, 'Ad');
215
+ subCampaigns.forEach(function (sub) {
216
+ var _a;
217
+ (_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
218
+ var hasSpot = false;
219
+ var adData = data
220
+ .filter(function (d) {
221
+ var _a;
222
+ return (d.campaignGroupId === ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) &&
223
+ d.campaignAdId === ad.id);
224
+ })
225
+ // eslint-disable-next-line no-sequences
226
+ .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) {
227
+ var _a;
228
+ return (_a = {},
229
+ _a[v] = 0,
230
+ _a);
231
+ }), false), x.analyticEventSummaries.map(function (y) {
232
+ var _a;
233
+ return (_a = {},
234
+ _a[y.eventLabel] = y.total,
235
+ _a);
236
+ }), false)))); });
237
+ result.push({
238
+ columns: isShouldHeader
239
+ ? [
240
+ 'Ad',
241
+ i18n_1.default.t('Common.Date'),
242
+ i18n_1.default.t('Common.Impression'),
243
+ i18n_1.default.t('Campaign.Engagement') + '(Spot)',
244
+ spotTitle,
245
+ ]
246
+ : Array(7).fill(''),
247
+ data: dataGroupByAd(adData, timelineType).map(function (d) { return __spreadArray([
248
+ ad === null || ad === void 0 ? void 0 : ad.name
249
+ ], d, true); }),
250
+ });
251
+ isShouldHeader = false;
252
+ Array.prototype.push.apply(result, (0, lodash_1.chain)(adData)
253
+ .groupBy('placeId')
254
+ .map(function (value, key) {
255
+ var placeData = {
256
+ columns: Array(7).fill(''),
257
+ data: dataGroupByAd(value, timelineType).map(function (d) { return __spreadArray([ad === null || ad === void 0 ? void 0 : ad.name], d, true); }),
258
+ };
259
+ return placeData;
260
+ })
261
+ .value());
262
+ });
263
+ });
264
+ return result;
265
+ }
266
+ exports.convertToExportByAd = convertToExportByAd;
211
267
  function placesToDomains(places, domains) {
212
268
  var _a, _b;
213
269
  if (domains === void 0) { domains = []; }
@@ -238,22 +294,26 @@ function placesToDomains(places, domains) {
238
294
  return groupDomain;
239
295
  }
240
296
  exports.placesToDomains = placesToDomains;
241
- var markBillingType = function (subCampaigns, data) { return data.map(function (x, index) {
242
- var _a;
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) {
246
- var _a;
247
- return (_a = {},
248
- _a[v] = 0,
249
- _a);
250
- }), false), x.analyticEventSummaries.map(function (y) {
297
+ var markBillingType = function (subCampaigns, data) {
298
+ return data.map(function (x, index) {
251
299
  var _a;
252
- return (_a = {},
253
- _a[y.eventLabel] = y.total,
254
- _a);
255
- }), false))), { billingUnit: campaignGroup.billingUnit, isSPot: campaignGroup.billingUnit === Enum_2.AnalyticType.AUTHENTICATION && ((_a = ads.find(function (ad) { return ad.id === x.campaignAdId; })) === null || _a === void 0 ? void 0 : _a.type) === Enum_1.AdType.VIDEO });
256
- }); };
300
+ // eslint-disable-next-line eqeqeq
301
+ var _b = subCampaigns.find(function (c) { return c.campaignGroup.id == x.campaignGroupId; }), campaignGroup = _b.campaignGroup, ads = _b.ads;
302
+ return __assign(__assign(__assign({}, x), Object.assign.apply(Object, __spreadArray(__spreadArray([{}], Object.values(Enum_1.BaseEvent).map(function (v) {
303
+ var _a;
304
+ return (_a = {},
305
+ _a[v] = 0,
306
+ _a);
307
+ }), false), x.analyticEventSummaries.map(function (y) {
308
+ var _a;
309
+ return (_a = {},
310
+ _a[y.eventLabel] = y.total,
311
+ _a);
312
+ }), false))), { billingUnit: campaignGroup.billingUnit, isSPot: campaignGroup.billingUnit === Enum_2.AnalyticType.AUTHENTICATION &&
313
+ ((_a = ads.find(function (ad) { return ad.id === x.campaignAdId; })) === null || _a === void 0 ? void 0 : _a.type) ===
314
+ Enum_1.AdType.VIDEO });
315
+ });
316
+ };
257
317
  exports.markBillingType = markBillingType;
258
318
  function convertToShowDetail(subCampaigns, data, selectedDomains, selectedPlaces) {
259
319
  var placeIds = selectedPlaces.map(function (p) { return p.placeId; });
@@ -265,20 +325,23 @@ function convertToShowDetail(subCampaigns, data, selectedDomains, selectedPlaces
265
325
  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
326
  (0, lodash_1.uniqBy)(
267
327
  // adPlaces.filter((p) => placeIds.includes(p.placeId)),
268
- placeIds.length ? adPlaces.filter(function (p) { return placeIds.includes(p.placeId); }) : adPlaces, 'placeId').forEach(function (place) {
328
+ placeIds.length
329
+ ? adPlaces.filter(function (p) { return placeIds.includes(p.placeId); })
330
+ : adPlaces, 'placeId').forEach(function (place) {
269
331
  var domain = selectedDomains.find(function (s) { return s.domainId === (place === null || place === void 0 ? void 0 : place.domainId); });
270
332
  var totalClick = data
271
333
  .filter(function (d) {
272
334
  var _a;
273
- return d.placeId === place.placeId
274
- && d.campaignGroupId === ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id)
275
- && d.campaignAdId === (ad === null || ad === void 0 ? void 0 : ad.id);
335
+ return d.placeId === place.placeId &&
336
+ d.campaignGroupId === ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) &&
337
+ d.campaignAdId === (ad === null || ad === void 0 ? void 0 : ad.id);
276
338
  })
277
339
  .reduce(function (sum, d) {
278
340
  var _a;
279
341
  var event = (_a = d.analyticEventSummaries) === null || _a === void 0 ? void 0 : _a.find(function (_a) {
280
342
  var eventLabel = _a.eventLabel;
281
- return (eventLabel === Enum_1.BaseEvent[sub.campaignGroup.billingUnit]);
343
+ return eventLabel ===
344
+ Enum_1.BaseEvent[sub.campaignGroup.billingUnit];
282
345
  });
283
346
  return sum + ((event === null || event === void 0 ? void 0 : event.total) || 0);
284
347
  }, 0);
@@ -302,55 +365,119 @@ function convertToShowDetail(subCampaigns, data, selectedDomains, selectedPlaces
302
365
  }
303
366
  exports.convertToShowDetail = convertToShowDetail;
304
367
  function dataGroupByTimeline(place, data, timelineType) {
305
- var hasSpot = data.some(function (x) { return x.isSPot; });
306
368
  var result = (0, lodash_1.chain)(data)
307
369
  .groupBy('timeline')
308
370
  .map(function (value, key) {
309
371
  var dateString = (0, Helpers_1.dateTimeToString)((0, Helpers_1.convertTimelineToDateTime)(key, timelineType), timelineType === Helpers_1.TIMELINE_TYPE.DAY
310
372
  ? 'DD/MM/YYYY'
311
373
  : 'DD/MM/YYYY, H:mm');
312
- // let impression = sumBy(value, BaseEvent[AnalyticType.VIEW])
313
374
  var impression = (0, lodash_1.sumBy)(value, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
314
375
  var authen = value.reduce(function (sum, d) {
376
+ var _a, _b;
315
377
  if (d.isSPot) {
316
- return sum + Number((d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) || 0);
378
+ return (sum +
379
+ Number((_a = d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
380
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _a !== void 0 ? _a : 0));
317
381
  }
318
- return sum + Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0);
382
+ return sum + Number((_b = d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _b !== void 0 ? _b : 0);
319
383
  }, 0);
320
- var arr = [place, dateString, impression];
321
- if (hasSpot) {
322
- arr.push(0, authen);
323
- }
324
- else {
325
- arr.push(authen, 0);
384
+ return [place, dateString, impression, authen];
385
+ })
386
+ .value();
387
+ var impressionTotal = (0, lodash_1.sumBy)(data, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
388
+ var authenTotal = data.reduce(function (sum, d) {
389
+ var _a, _b;
390
+ if (d.isSPot) {
391
+ return ((_a = sum +
392
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
393
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _a !== void 0 ? _a : 0);
326
394
  }
327
- return arr;
395
+ console.log('d[BaseEvent[AnalyticType.CLICK]] :>> ', d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]);
396
+ return (_b = sum + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]) !== null && _b !== void 0 ? _b : 0;
397
+ }, 0);
398
+ var totalArr = [
399
+ place,
400
+ i18n_1.default.t('Schedule.Total'),
401
+ impressionTotal,
402
+ authenTotal,
403
+ ];
404
+ result.push(totalArr);
405
+ return result;
406
+ }
407
+ exports.dataGroupByTimeline = dataGroupByTimeline;
408
+ function dataGroupByTimelineAndPlaces(place, province, district, data, timelineType) {
409
+ var result = (0, lodash_1.chain)(data)
410
+ .groupBy('timeline')
411
+ .map(function (value, key) {
412
+ var dateString = (0, Helpers_1.dateTimeToString)((0, Helpers_1.convertTimelineToDateTime)(key, timelineType), timelineType === Helpers_1.TIMELINE_TYPE.DAY
413
+ ? 'DD/MM/YYYY'
414
+ : 'DD/MM/YYYY, H:mm');
415
+ var impression = (0, lodash_1.sumBy)(value, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
416
+ var authen = value.reduce(function (sum, d) {
417
+ if (d.isSPot) {
418
+ return (sum +
419
+ Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
420
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0));
421
+ }
422
+ return sum + Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0);
423
+ }, 0);
424
+ return [place, province, district, dateString, impression, authen];
328
425
  })
329
426
  .value();
330
- var impr = (0, lodash_1.sumBy)(data, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
331
- var authen = data.reduce(function (sum, d) {
427
+ var impressionTotal = (0, lodash_1.sumBy)(data, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
428
+ var authenTotal = data.reduce(function (sum, d) {
332
429
  if (d.isSPot) {
333
- return sum + d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]];
430
+ return (sum +
431
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
432
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]);
334
433
  }
335
434
  return sum + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]];
336
435
  }, 0);
337
- var totalArr = [place, i18n_1.default.t('Schedule.Total'), impr];
338
- if (hasSpot) {
339
- totalArr.push(0, authen);
340
- }
341
- else {
342
- totalArr.push(authen, 0);
343
- }
436
+ var totalArr = [
437
+ place,
438
+ province,
439
+ district,
440
+ i18n_1.default.t('Schedule.Total'),
441
+ impressionTotal,
442
+ authenTotal,
443
+ ];
344
444
  result.push(totalArr);
345
- return result.map(function (d) {
346
- if (!hasSpot) {
347
- d.pop();
348
- d.push('');
445
+ return result;
446
+ }
447
+ exports.dataGroupByTimelineAndPlaces = dataGroupByTimelineAndPlaces;
448
+ function dataGroupByAd(data, timelineType) {
449
+ var result = (0, lodash_1.chain)(data)
450
+ .groupBy('timeline')
451
+ .map(function (value, key) {
452
+ var dateString = (0, Helpers_1.dateTimeToString)((0, Helpers_1.convertTimelineToDateTime)(key, timelineType), timelineType === Helpers_1.TIMELINE_TYPE.DAY
453
+ ? 'DD/MM/YYYY'
454
+ : 'DD/MM/YYYY, H:mm');
455
+ var impression = (0, lodash_1.sumBy)(value, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
456
+ var authen = value.reduce(function (sum, d) {
457
+ if (d.isSPot) {
458
+ return (sum +
459
+ Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
460
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0));
461
+ }
462
+ return sum + Number(d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]] || 0);
463
+ }, 0);
464
+ return [dateString, impression, authen];
465
+ })
466
+ .value();
467
+ var impressionTotal = (0, lodash_1.sumBy)(data, Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]);
468
+ var authenTotal = data.reduce(function (sum, d) {
469
+ if (d.isSPot) {
470
+ return (sum +
471
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION]] +
472
+ d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]]);
349
473
  }
350
- return d;
351
- });
474
+ return sum + d[Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK]];
475
+ }, 0);
476
+ var totalArr = [i18n_1.default.t('Schedule.Total'), impressionTotal, authenTotal];
477
+ result.push(totalArr);
478
+ return result;
352
479
  }
353
- exports.dataGroupByTimeline = dataGroupByTimeline;
480
+ exports.dataGroupByAd = dataGroupByAd;
354
481
  function dataGroupByPlace(subCampaigns, ids) {
355
482
  return (0, lodash_1.chain)(subCampaigns.filter(function (sub) {
356
483
  var _a, _b, _c;
@@ -381,13 +508,16 @@ exports.dataGroupByPlace = dataGroupByPlace;
381
508
  function campaignAnalyticInfo(subCampaigns) {
382
509
  return {
383
510
  analyticTypes: Array.from(new Set(subCampaigns.map(function (x) { return x.campaignGroup.billingUnit; }))),
384
- hasSpot: subCampaigns.some(function (sub) {
385
- return sub.ads.some(function (ad) { return ad.type === Enum_1.AdType.VIDEO; }) && sub.campaignGroup.billingUnit === Enum_2.AnalyticType.AUTHENTICATION;
511
+ hasSpot: subCampaigns.some(function (sub) { return sub.ads.some(function (ad) { return ad.type === Enum_1.AdType.VIDEO; }); }),
512
+ hasEg: subCampaigns.some(function (sub) {
513
+ return sub.ads.some(function (ad) {
514
+ return (ad.type === Enum_1.AdType.VIDEO &&
515
+ sub.campaignGroup.billingUnit !==
516
+ Enum_2.AnalyticType.AUTHENTICATION) ||
517
+ ad.type !== Enum_1.AdType.VIDEO;
518
+ }) &&
519
+ [Enum_2.AnalyticType.CLICK, Enum_2.AnalyticType.AUTHENTICATION].includes(sub.campaignGroup.billingUnit);
386
520
  }),
387
- hasEg: subCampaigns.some(function (sub) { return sub.ads.some(function (ad) {
388
- return (ad.type === Enum_1.AdType.VIDEO && sub.campaignGroup.billingUnit !== Enum_2.AnalyticType.AUTHENTICATION) ||
389
- ad.type !== Enum_1.AdType.VIDEO;
390
- }) && [Enum_2.AnalyticType.CLICK, Enum_2.AnalyticType.AUTHENTICATION].includes(sub.campaignGroup.billingUnit); }),
391
521
  };
392
522
  }
393
523
  exports.campaignAnalyticInfo = campaignAnalyticInfo;
@@ -396,7 +526,9 @@ var convertToChartData = function (data, campaignGroups, time) {
396
526
  var timelineType = 'YYYYMMDD';
397
527
  var convertData = Object.assign.apply(Object, __spreadArray([{}], [Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW], 'Spot', 'Engagement'].map(function (x) {
398
528
  var _a;
399
- return (_a = {}, _a[x] = { total: 0, chartData: [] }, _a);
529
+ return (_a = {},
530
+ _a[x] = { total: 0, chartData: [] },
531
+ _a);
400
532
  }), false));
401
533
  data.forEach(function (x) {
402
534
  var _a;
@@ -407,8 +539,7 @@ var convertToChartData = function (data, campaignGroups, time) {
407
539
  if (!subCampaign)
408
540
  return;
409
541
  var billingUnit = subCampaign.campaignGroup.billingUnit;
410
- var hasAuthen = billingUnit === Enum_2.AnalyticType.AUTHENTICATION;
411
- var isSpot = hasAuthen && ((_a = subCampaign.ads.find(function (s) { return s.id === x.campaignAdId; })) === null || _a === void 0 ? void 0 : _a.type) === Enum_1.AdType.VIDEO;
542
+ var isSpot = ((_a = subCampaign.ads.find(function (s) { return s.id === x.campaignAdId; })) === null || _a === void 0 ? void 0 : _a.type) === Enum_1.AdType.VIDEO;
412
543
  var timeline = x.timeline.toString();
413
544
  x.analyticEventSummaries.forEach(function (event) {
414
545
  var _a;
@@ -416,7 +547,11 @@ var convertToChartData = function (data, campaignGroups, time) {
416
547
  var objKey = [
417
548
  Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION],
418
549
  Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK],
419
- ].includes(event.eventLabel) ? isSpot ? 'Spot' : 'Engagement' : event.eventLabel;
550
+ ].includes(event.eventLabel)
551
+ ? isSpot
552
+ ? 'Spot'
553
+ : 'Engagement'
554
+ : event.eventLabel;
420
555
  (_a = convertData[objKey]) === null || _a === void 0 ? void 0 : _a.chartData.push({
421
556
  y: event.total,
422
557
  x: timeline,
@@ -429,16 +564,20 @@ var convertToChartData = function (data, campaignGroups, time) {
429
564
  });
430
565
  var translate = (_a = {},
431
566
  _a[Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]] = 'Common.Impression',
432
- _a['Spot'] = 'Campaign.Spot',
433
- _a['Engagement'] = 'Campaign.Engagement',
567
+ _a.Spot = 'Campaign.Spot',
568
+ _a.Engagement = 'Campaign.Engagement',
434
569
  _a);
435
570
  var analyticInfo = campaignAnalyticInfo(campaignGroups);
436
- return Object.entries(convertData).map(function (_a, index) {
571
+ return Object.entries(convertData)
572
+ .map(function (_a, index) {
437
573
  var key = _a[0], value = _a[1];
438
574
  if ((key === 'Spot' && !analyticInfo.hasSpot) ||
439
575
  (key === 'Engagement' && !analyticInfo.hasEg))
440
576
  return false;
441
- var data = (0, lodash_1.default)(value.chartData).groupBy('x').map(function (value, key) { return ({ x: key, y: (0, lodash_1.sumBy)(value, 'y') }); }).value();
577
+ var data = (0, lodash_1.default)(value.chartData)
578
+ .groupBy('x')
579
+ .map(function (value, key) { return ({ x: key, y: (0, lodash_1.sumBy)(value, 'y') }); })
580
+ .value();
442
581
  return {
443
582
  label: "".concat(i18n_1.default.t(translate[key]), " ").concat((0, Helpers_1.roundDecimalNumber)(value.total)),
444
583
  type: 'line',
@@ -448,7 +587,8 @@ var convertToChartData = function (data, campaignGroups, time) {
448
587
  yAxisID: 'y',
449
588
  variant: key,
450
589
  };
451
- }).filter(Boolean);
590
+ })
591
+ .filter(Boolean);
452
592
  };
453
593
  exports.convertToChartData = convertToChartData;
454
594
  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 i18n_1 = __importDefault(require("../../../../../i18n"));
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) { var _a; return id.campaignGroupId == ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) && (!id.campaignAdId || id.campaignAdId == (ad === null || ad === void 0 ? void 0 : ad.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.campaignStatisticGet({
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 ? ids.map(function (id) { return (__assign(__assign({}, id), { campaignId: campaignId })); }) : [{ campaignId: campaignId }],
79
- // analyticGroupBies: Object.values(AnalyticGroupBy).filter((g) => !isNaN(Number(g))).map((g) => Number(g)),
80
- analyticGroupBies: [
81
- Enum_2.AnalyticGroupBy.GbEventLabel,
82
- Enum_2.AnalyticGroupBy.GbTimeline,
83
- Enum_2.AnalyticGroupBy.GbCampaignGroupId,
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
- }).then(function (res) {
89
- // setStatisticalData(markBillingType(subCampaigns, res))
90
- setStatisticalChartData(statisticType ? (0, Utils_1.convertToShowDetail)(subCampaigns, res, selectedDomains, selectedPlaces) : res);
91
- }).finally(function () { return setIsLoading(false); });
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.campaignStatisticGet({
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 ? ids.map(function (id) { return (__assign(__assign({}, id), { campaignId: campaignId })); }) : [{ campaignId: campaignId }],
103
- analyticGroupBies: Object.values(Enum_2.AnalyticGroupBy).filter(function (g) { return !isNaN(Number(g)); }).map(function (g) { return Number(g); }),
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
- }).then(function (res) {
107
- var markedData = (0, Utils_1.markBillingType)(subCampaigns, res);
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
134
  name: "export_statistic_campaign_".concat(campaignId),
110
- data: []
135
+ data: [],
111
136
  };
112
137
  switch (exportType) {
113
138
  case common_1.EXPORT_TYPES.Domain: {
114
- var newObjects = (0, lodash_1.chain)(selectedDomains)
115
- .groupBy('domainId')
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');
139
+ exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(statisticalData, newObjects, timelineType, 'Domain', campaignName !== null && campaignName !== void 0 ? campaignName : '', 'Domain');
128
140
  exportObj.name += '_groupby_domain';
129
141
  break;
130
142
  }
131
143
  case common_1.EXPORT_TYPES.Export: {
132
- exportObj.data = (0, Utils_1.convertToExport)(subCampaigns, markedData, timelineType, selectedPlaces);
144
+ exportObj.data = (0, Utils_1.convertToExport)(subCampaigns, statisticalData, timelineType, selectedPlaces, campaignName !== null && campaignName !== void 0 ? campaignName : '', fullPlaces);
133
145
  exportObj.name += '_total';
134
146
  break;
135
147
  }
136
148
  case common_1.EXPORT_TYPES.LocationGroup: {
137
- exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(markedData, (0, Utils_1.dataGroupByPlace)(subCampaigns, ids), timelineType, 'Sub Campaign');
149
+ exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(statisticalData, (0, Utils_1.dataGroupByPlace)(subCampaigns, ids), timelineType, 'Sub Campaign', campaignName !== null && campaignName !== void 0 ? campaignName : '', i18n_1.default.t('Common.SubCampaign'));
138
150
  exportObj.name += '_groupby_subcampaign';
139
151
  break;
140
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 += '_ad';
156
+ break;
157
+ }
141
158
  default: {
142
- exportObj.data = (0, Utils_1.convertToExportData)(markedData, selectedPlaces, timelineType);
159
+ exportObj.data = (0, Utils_1.convertToExportData)(statisticalData, selectedPlaces, timelineType, campaignName !== null && campaignName !== void 0 ? campaignName : '', fullPlaces);
143
160
  exportObj.name += '_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
  }
@@ -3,4 +3,5 @@ export declare const EXPORT_TYPES: {
3
3
  Domain: string;
4
4
  LocationGroup: string;
5
5
  Location: string;
6
+ Ad: string;
6
7
  };
@@ -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
  };
@@ -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 _f = (0, react_1.useState)('0'), value = _f[0], setValue = _f[1];
82
- var _g = (0, react_1.useState)(true), loading = _g[0], setLoading = _g[1];
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 && !campaignData.campaignAttributes.length) {
93
- setCampaignData(function (prev) { return (__assign(__assign({}, prev), { campaignAttributes: [""] })); });
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
- }, [service, campaignData.campaignAttributes]);
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.attributesGetByObjectTypeCode(Enum_1.DirectoryRoot.Campaign).then(setAttributes);
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, { campaignId: campaignId, tabName: route[Number(newValue)] }), { replace: true });
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 = Enum_2.AnalyticType.AUTHENTICATION;
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: { marginLeft: '-5px' }, 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)); })] }) })) }) }));
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 });
@@ -26,3 +26,8 @@ export declare enum VERIFIED_STATUS {
26
26
  NOT_VERIFIED = 0,
27
27
  VERIFIED_ERROR = 1
28
28
  }
29
+ export declare enum AdministrativeUnitType {
30
+ Province = 0,
31
+ District = 1,
32
+ Commune = 2
33
+ }
@@ -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 = {}));
@@ -15,7 +15,7 @@ export declare enum TIMELINE_TYPE {
15
15
  */
16
16
  export declare function getCookie(name: string): string | undefined;
17
17
  export declare function dateToString(date: moment.MomentInput): string;
18
- export declare function formatNumber(num: number | bigint | string | undefined): string;
18
+ export declare function formatNumber<T = number | bigint | string | undefined>(num: T): string;
19
19
  export declare function getQueryVariable(variable: string): string;
20
20
  export declare function displayLongString(str: string, maxLength: number): string;
21
21
  export declare function generateUUID(): string;
@@ -78,6 +78,8 @@ function dateToString(date) {
78
78
  }
79
79
  exports.dateToString = dateToString;
80
80
  function formatNumber(num) {
81
+ if (String(num).includes(','))
82
+ return num;
81
83
  var value = Number(Number(num).toFixed(2));
82
84
  if (value || value === 0) {
83
85
  return new Intl.NumberFormat(i18n_1.default.language === 'vi' ? 'vi-VN' : 'en-US').format(value);
@@ -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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awing-library",
3
- "version": "2.1.174-dev",
3
+ "version": "2.1.176-dev",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",