awing-library 2.1.175-dev → 2.1.177-dev

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