awing-library 2.1.175-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;
@@ -382,10 +509,15 @@ function campaignAnalyticInfo(subCampaigns) {
382
509
  return {
383
510
  analyticTypes: Array.from(new Set(subCampaigns.map(function (x) { return x.campaignGroup.billingUnit; }))),
384
511
  hasSpot: subCampaigns.some(function (sub) { return sub.ads.some(function (ad) { return ad.type === Enum_1.AdType.VIDEO; }); }),
385
- hasEg: subCampaigns.some(function (sub) { return sub.ads.some(function (ad) {
386
- return (ad.type === Enum_1.AdType.VIDEO && sub.campaignGroup.billingUnit !== Enum_2.AnalyticType.AUTHENTICATION) ||
387
- ad.type !== Enum_1.AdType.VIDEO;
388
- }) && [Enum_2.AnalyticType.CLICK, Enum_2.AnalyticType.AUTHENTICATION].includes(sub.campaignGroup.billingUnit); }),
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);
520
+ }),
389
521
  };
390
522
  }
391
523
  exports.campaignAnalyticInfo = campaignAnalyticInfo;
@@ -394,7 +526,9 @@ var convertToChartData = function (data, campaignGroups, time) {
394
526
  var timelineType = 'YYYYMMDD';
395
527
  var convertData = Object.assign.apply(Object, __spreadArray([{}], [Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW], 'Spot', 'Engagement'].map(function (x) {
396
528
  var _a;
397
- return (_a = {}, _a[x] = { total: 0, chartData: [] }, _a);
529
+ return (_a = {},
530
+ _a[x] = { total: 0, chartData: [] },
531
+ _a);
398
532
  }), false));
399
533
  data.forEach(function (x) {
400
534
  var _a;
@@ -413,7 +547,11 @@ var convertToChartData = function (data, campaignGroups, time) {
413
547
  var objKey = [
414
548
  Enum_1.BaseEvent[Enum_2.AnalyticType.AUTHENTICATION],
415
549
  Enum_1.BaseEvent[Enum_2.AnalyticType.CLICK],
416
- ].includes(event.eventLabel) ? isSpot ? 'Spot' : 'Engagement' : event.eventLabel;
550
+ ].includes(event.eventLabel)
551
+ ? isSpot
552
+ ? 'Spot'
553
+ : 'Engagement'
554
+ : event.eventLabel;
417
555
  (_a = convertData[objKey]) === null || _a === void 0 ? void 0 : _a.chartData.push({
418
556
  y: event.total,
419
557
  x: timeline,
@@ -426,16 +564,20 @@ var convertToChartData = function (data, campaignGroups, time) {
426
564
  });
427
565
  var translate = (_a = {},
428
566
  _a[Enum_1.BaseEvent[Enum_2.AnalyticType.VIEW]] = 'Common.Impression',
429
- _a['Spot'] = 'Campaign.Spot',
430
- _a['Engagement'] = 'Campaign.Engagement',
567
+ _a.Spot = 'Campaign.Spot',
568
+ _a.Engagement = 'Campaign.Engagement',
431
569
  _a);
432
570
  var analyticInfo = campaignAnalyticInfo(campaignGroups);
433
- return Object.entries(convertData).map(function (_a, index) {
571
+ return Object.entries(convertData)
572
+ .map(function (_a, index) {
434
573
  var key = _a[0], value = _a[1];
435
574
  if ((key === 'Spot' && !analyticInfo.hasSpot) ||
436
575
  (key === 'Engagement' && !analyticInfo.hasEg))
437
576
  return false;
438
- 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();
439
581
  return {
440
582
  label: "".concat(i18n_1.default.t(translate[key]), " ").concat((0, Helpers_1.roundDecimalNumber)(value.total)),
441
583
  type: 'line',
@@ -445,7 +587,8 @@ var convertToChartData = function (data, campaignGroups, time) {
445
587
  yAxisID: 'y',
446
588
  variant: key,
447
589
  };
448
- }).filter(Boolean);
590
+ })
591
+ .filter(Boolean);
449
592
  };
450
593
  exports.convertToChartData = convertToChartData;
451
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 = {}));
@@ -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.175-dev",
3
+ "version": "2.1.176-dev",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",