awing-library 2.1.125-beta → 2.1.127-beta

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.
Files changed (132) hide show
  1. package/lib/ACM-AXN/Campaign/Container.js +2 -3
  2. package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +3 -3
  3. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticComponent.test.d.ts +1 -0
  4. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticComponent.test.js +80 -0
  5. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticContainer.test.d.ts +1 -0
  6. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticContainer.test.js +49 -0
  7. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.d.ts +13 -0
  8. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.js +131 -0
  9. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.test.d.ts +1 -0
  10. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.test.js +67 -0
  11. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.d.ts +2 -0
  12. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.js +113 -0
  13. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.test.d.ts +1 -0
  14. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.test.js +27 -0
  15. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/DetailGroupBy.test.d.ts +1 -0
  16. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/DetailGroupBy.test.js +55 -0
  17. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.d.ts +7 -0
  18. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.js +28 -0
  19. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.test.d.ts +1 -0
  20. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.test.js +49 -0
  21. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.d.ts +2 -0
  22. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.js +183 -0
  23. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.d.ts +51 -0
  24. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.js +378 -0
  25. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.d.ts +14 -0
  26. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.js +77 -0
  27. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.d.ts +15 -0
  28. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.js +129 -0
  29. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/index.d.ts +1 -0
  30. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/index.js +8 -0
  31. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.d.ts +12 -0
  32. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.js +237 -0
  33. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.test.d.ts +1 -0
  34. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.test.js +84 -0
  35. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Context.d.ts +5 -0
  36. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Context.js +13 -0
  37. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerComponent.test.d.ts +1 -0
  38. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerComponent.test.js +53 -0
  39. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerContainer.test.d.ts +1 -0
  40. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerContainer.test.js +124 -0
  41. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.d.ts +14 -0
  42. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.js +127 -0
  43. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.d.ts +7 -0
  44. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.js +82 -0
  45. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/index.d.ts +1 -0
  46. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/index.js +8 -0
  47. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventComponent.test.d.ts +1 -0
  48. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventComponent.test.js +91 -0
  49. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventContainer.test.d.ts +1 -0
  50. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventContainer.test.js +48 -0
  51. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.d.ts +5 -0
  52. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.js +29 -0
  53. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.test.d.ts +1 -0
  54. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.test.js +30 -0
  55. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.d.ts +13 -0
  56. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.js +166 -0
  57. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.d.ts +10 -0
  58. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.js +123 -0
  59. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/index.d.ts +1 -0
  60. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/index.js +8 -0
  61. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.d.ts +6 -0
  62. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.js +64 -0
  63. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.test.d.ts +1 -0
  64. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.test.js +26 -0
  65. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.d.ts +91 -0
  66. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.js +2 -0
  67. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.d.ts +6 -0
  68. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.js +33 -0
  69. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.d.ts +6 -0
  70. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.js +9 -0
  71. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.d.ts +9 -0
  72. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.js +32 -0
  73. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.d.ts +8 -0
  74. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.js +94 -0
  75. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/fakeCampaignData.json +397 -0
  76. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/index.d.ts +1 -0
  77. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/index.js +8 -0
  78. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdDetail.test.js +3 -3
  79. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdList.js +2 -2
  80. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/AddOrEditRule.test.js +12 -12
  81. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Create.js +2 -3
  82. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Create.test.js +3 -3
  83. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Edit.test.js +2 -2
  84. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/EditExpression.test.js +9 -9
  85. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitClick.test.js +1 -2
  86. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitEvent.test.js +1 -2
  87. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitView.test.js +1 -2
  88. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetAge.test.js +3 -3
  89. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetGender.test.js +2 -2
  90. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +11 -10
  91. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +6 -6
  92. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +5 -5
  93. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.js +2 -2
  94. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +5 -5
  95. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +22 -12
  96. package/lib/ACM-AXN/Campaign/Enum.d.ts +72 -0
  97. package/lib/ACM-AXN/Campaign/Enum.js +81 -1
  98. package/lib/ACM-AXN/Campaign/Types.d.ts +7 -126
  99. package/lib/ACM-AXN/Campaign/Types.js +0 -80
  100. package/lib/ACM-AXN/Campaign/Utils.d.ts +7 -1
  101. package/lib/ACM-AXN/Campaign/Utils.js +14 -10
  102. package/lib/ACM-AXN/Campaign/index.d.ts +2 -0
  103. package/lib/ACM-AXN/Campaign/index.js +16 -0
  104. package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/component.js +4 -0
  105. package/lib/ACM-AXN/CampaignSchedule/Components/TableHeaderDragable.js +4 -0
  106. package/lib/ACM-AXN/CampaignSchedule/Enum.d.ts +4 -0
  107. package/lib/ACM-AXN/CampaignSchedule/Enum.js +4 -0
  108. package/lib/ACM-AXN/Common/Enum.d.ts +22 -0
  109. package/lib/ACM-AXN/Common/Enum.js +26 -1
  110. package/lib/ACM-AXN/Common/Types.d.ts +16 -0
  111. package/lib/ACM-AXN/Common/Types.js +2 -0
  112. package/lib/ACM-AXN/Notifications/Types.d.ts +1 -1
  113. package/lib/ACM-AXN/Page/Types.d.ts +2 -1
  114. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.d.ts +0 -7
  115. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.js +8 -4
  116. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.js +1 -1
  117. package/lib/ACM-AXN/ScheduleCompletionRate/Types.d.ts +1 -0
  118. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.js +7 -6
  119. package/lib/ACM-AXN/Template/Container.test.js +1 -1
  120. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +1 -1
  121. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +1 -1
  122. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +13 -5
  123. package/lib/ACM-AXN/Template/Import.test.js +2 -2
  124. package/lib/AWING/Hooks/index.d.ts +1 -0
  125. package/lib/AWING/Hooks/index.js +17 -0
  126. package/lib/AWING/Hooks/useGetData.d.ts +9 -0
  127. package/lib/AWING/Hooks/useGetData.js +26 -0
  128. package/lib/Utils/Helpers.d.ts +2 -1
  129. package/lib/Utils/Helpers.js +17 -1
  130. package/lib/translate/en/translation.json +5 -1
  131. package/lib/translate/vi/translation.json +7 -1
  132. package/package.json +1 -1
@@ -17,13 +17,6 @@ export declare const DataSetConfigs: (exportData: ConvertExcelData[] | ConvertEx
17
17
  sz: string;
18
18
  };
19
19
  };
20
- } | {
21
- value: number | undefined;
22
- style: {
23
- font: {
24
- sz: string;
25
- };
26
- };
27
20
  })[] | ({
28
21
  value: string;
29
22
  style: {
@@ -16,6 +16,10 @@ exports.DataSetConfigs = void 0;
16
16
  var lodash_1 = __importDefault(require("lodash"));
17
17
  var moment_1 = __importDefault(require("moment"));
18
18
  var DataSetConfigs = function (exportData, t, startDate, endDate) {
19
+ // check NaN and Infinity
20
+ var checkNumber = function (value) {
21
+ return !isNaN(value) && Number.isFinite(value) ? value : 0;
22
+ };
19
23
  var sheetByCampaign = __spreadArray([
20
24
  {
21
25
  columns: [
@@ -101,15 +105,15 @@ var DataSetConfigs = function (exportData, t, startDate, endDate) {
101
105
  style: { font: { sz: '13' } },
102
106
  },
103
107
  {
104
- value: item.totalQuantity,
108
+ value: (item === null || item === void 0 ? void 0 : item.totalQuantity) || 0,
105
109
  style: { font: { sz: '12' } },
106
110
  },
107
111
  {
108
- value: item.totalRun,
112
+ value: (item === null || item === void 0 ? void 0 : item.totalRun) || 0,
109
113
  style: { font: { sz: '12' } },
110
114
  },
111
115
  {
112
- value: item.rate,
116
+ value: checkNumber((item === null || item === void 0 ? void 0 : item.rate) || 0),
113
117
  style: { font: { sz: '12' } },
114
118
  },
115
119
  ];
@@ -132,7 +136,7 @@ var DataSetConfigs = function (exportData, t, startDate, endDate) {
132
136
  style: { font: { sz: '12', bold: true } },
133
137
  },
134
138
  {
135
- value: totalRate,
139
+ value: checkNumber(totalRate || 0),
136
140
  style: { font: { sz: '12', bold: true } },
137
141
  },
138
142
  ],
@@ -118,7 +118,7 @@ function Filter(props) {
118
118
  setCampaigns(options);
119
119
  });
120
120
  // eslint-disable-next-line react-hooks/exhaustive-deps
121
- }, [service, filter.startDate, filter.endDate]);
121
+ }, [filter.startDate, filter.endDate]);
122
122
  var handleChangeQueryInput = function (queryParams) {
123
123
  onUpdateFilter(__assign(__assign({}, queryParams), { campaignId: filter.campaignId }));
124
124
  };
@@ -115,6 +115,7 @@ export interface ScheduleCompletionRateExport {
115
115
  placeId?: string;
116
116
  groupId?: number;
117
117
  groupName?: string | undefined;
118
+ billingUnit?: AnalyticType;
118
119
  runs?: AnalyticEventSummary[] | undefined;
119
120
  expecteds?: AnalyticEventSummary[] | undefined;
120
121
  date?: string;
@@ -33,7 +33,6 @@ var lodash_1 = __importDefault(require("lodash"));
33
33
  var moment_1 = __importDefault(require("moment"));
34
34
  var Enum_1 = require("../../ACM-AXN/Common/Enum");
35
35
  var Constant_1 = require("../../ACM-AXN/Common/Constant");
36
- var Helpers_1 = require("../../Utils/Helpers");
37
36
  exports.QueryInputDetail = {
38
37
  pageIndex: 0,
39
38
  pageSize: 10,
@@ -51,17 +50,19 @@ var convertExcelData = function (resData, campaigns, places, t, typeView) {
51
50
  ? filterCampaignName
52
51
  : t('ScheduleCompletionRate.CampaignDefault');
53
52
  var placeName = (_c = (_b = places.find(function (item) { return item.placeId === (data === null || data === void 0 ? void 0 : data.placeId); })) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : '';
54
- var totalQuantity = (0, exports.getValue)(data.expecteds, data.billingUnit, typeView);
55
- var totalRun = (0, exports.getValue)(data.runs, data.billingUnit, typeView);
53
+ var totalQuantity = getEventTotal(data === null || data === void 0 ? void 0 : data.expecteds, typeView === Constant_1.TypeView.impression
54
+ ? Constant_1.ValueAnalyticType.VIEW
55
+ : Constant_1.ValueAnalyticType.AUTHENTICATION) || 0;
56
+ var totalRun = (0, exports.getValue)(data === null || data === void 0 ? void 0 : data.runs, data === null || data === void 0 ? void 0 : data.billingUnit, typeView);
56
57
  var rate = totalQuantity !== 0 ? (totalRun / totalQuantity) * 100 : 0;
57
58
  return {
58
59
  campaignName: campaignName,
59
60
  groupName: !data.groupName ? 'IS-NULL' : data.groupName,
60
61
  placeName: placeName,
61
62
  date: data.date,
62
- totalQuantity: (0, Helpers_1.formatNumber)(totalQuantity),
63
- totalRun: (0, Helpers_1.formatNumber)(totalRun),
64
- rate: (0, Helpers_1.formatNumber)(rate),
63
+ totalQuantity: totalQuantity,
64
+ totalRun: totalRun,
65
+ rate: !isNaN(rate) && Number.isFinite(rate) ? rate : 0,
65
66
  };
66
67
  }), true);
67
68
  excelData = lodash_1.default.mapValues(lodash_1.default.groupBy(excelData, 'campaignName'), function (list) {
@@ -115,7 +115,7 @@ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requ
115
115
  // Mock Utils/Helpers
116
116
  jest.mock('Utils/Helpers', function () { return (__assign(__assign({}, jest.requireActual('Utils/Helpers')), { downloadZipFile: function () { } })); });
117
117
  // Mock PageManagement
118
- jest.mock('awing-library/lib/AWING/PageManagement', function () { return ({
118
+ jest.mock('AWING/PageManagement', function () { return ({
119
119
  PageManagement: function (props) {
120
120
  props.onChangeQueryInput({
121
121
  searchString: '',
@@ -269,7 +269,7 @@ jest.mock('Commons/UseAxiosProvider', function () { return ({
269
269
  }); },
270
270
  }); });
271
271
  // Mock Drawer
272
- jest.mock('awing-library/lib/Commons/Components/ClassicDrawer', function () { return function (props) { return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { children: props.title }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onSubmit", onClick: props.onSubmit, children: "submit" }), props.children] })); }; });
272
+ jest.mock('Commons/Components/ClassicDrawer', function () { return function (props) { return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { children: props.title }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "onSubmit", onClick: props.onSubmit, children: "submit" }), props.children] })); }; });
273
273
  // Mock Infomation
274
274
  jest.mock('./Infomation', function () { return function (props) { return ((0, jsx_runtime_1.jsx)("div", { children: Object.entries(props).map(function (_a) {
275
275
  var key = _a[0], val = _a[1];
@@ -25,7 +25,7 @@ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requ
25
25
  // Mock Utils/Helpers
26
26
  jest.mock('Utils/Helpers', function () { return (__assign(__assign({}, jest.requireActual('Utils/Helpers')), { downloadZipFile: function () { } })); });
27
27
  // Mock DataForm
28
- jest.mock('awing-library/lib/AWING', function () { return ({
28
+ jest.mock('AWING', function () { return ({
29
29
  DataForm: function (props) {
30
30
  var _a, _b;
31
31
  props.fields.forEach(function (element) {
@@ -84,6 +84,16 @@ var Parameter = function (_a) {
84
84
  },
85
85
  });
86
86
  };
87
+ var tableRow = (0, Utils_1.flattenParameter)(rows).map(function (row) {
88
+ Object.keys(row).forEach(function (key) {
89
+ if (Array.isArray(row[key])) {
90
+ row[key] = row[key].filter(function (item) { return item !== ''; });
91
+ console.log(key, row[key]);
92
+ }
93
+ });
94
+ return row;
95
+ });
96
+ console.log("tableRow", tableRow);
87
97
  return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Box, { mt: 3, children: (0, jsx_runtime_1.jsx)(material_1.Grid, { container: true, justifyContent: "space-between", alignItems: "center", children: (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "subtitle1", sx: {
88
98
  fontWeight: 'bold',
89
99
  color: '#000000',
@@ -148,11 +158,9 @@ var Parameter = function (_a) {
148
158
  error: row.errField, InputProps: {
149
159
  startAdornment: ((0, jsx_runtime_1.jsx)(material_1.Box, { component: 'span', sx: {
150
160
  padding: '4px 0 5px',
151
- }, children: row.parentFieldName.length
152
- ? (row.parentFieldName.push(''),
153
- row.parentFieldName).join('.')
161
+ }, children: row.parentFieldName.length ? (row.parentFieldName.push(''), row.parentFieldName).join('.')
154
162
  : null })),
155
- }, fullWidth: true, name: [
163
+ }, required: true, fullWidth: true, name: [
156
164
  'fieldName',
157
165
  row.parentId,
158
166
  row.id,
@@ -261,7 +269,7 @@ var Parameter = function (_a) {
261
269
  .join('-'), color: "primary", defaultChecked: row.isAdvanced }, idx));
262
270
  },
263
271
  },
264
- ], rows: (0, Utils_1.flattenParameter)(rows), rowActions: [
272
+ ], rows: tableRow, rowActions: [
265
273
  {
266
274
  icon: (0, jsx_runtime_1.jsx)(icons_material_1.DeleteForever, {}),
267
275
  tooltipTitle: t('Common.Delete'),
@@ -114,11 +114,11 @@ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requ
114
114
  // Mock React
115
115
  jest.mock('react', function () { return (__assign(__assign({}, jest.requireActual('react')), { forwardRef: jest.fn(function (arg) { return arg; }), useRef: function () { return ({ current: { click: function () { } } }); } })); });
116
116
  // Mock Drawer
117
- jest.mock('awing-library/lib/Commons/Components/ClassicDrawer', function () { return function (props) {
117
+ jest.mock('Commons/Components/ClassicDrawer', function () { return function (props) {
118
118
  return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("button", { "data-testid": "onSubmit", onClick: props.onSubmit, children: "submit" }), props.children] }));
119
119
  }; });
120
120
  // Mock DataForm
121
- jest.mock('awing-library/lib/AWING', function () { return ({
121
+ jest.mock('AWING', function () { return ({
122
122
  DataForm: function (props) {
123
123
  var _a, _b, _c;
124
124
  props.fields.forEach(function (element) {
@@ -0,0 +1 @@
1
+ export * from './useGetData';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useGetData"), exports);
@@ -0,0 +1,9 @@
1
+ type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
2
+ type Params<T extends (...args: any[]) => any> = T extends (...args: infer P) => any ? P : never;
3
+ type ReturnType<T extends (...args: any[]) => any> = T extends (...args: any[]) => infer R ? R : never;
4
+ type Fetcher<ParamsType extends any[] = any[], ReturnType = any> = (...params: ParamsType) => Promise<ReturnType>;
5
+ export declare const useGetData: <T extends Fetcher<any[], any>>(params: Params<T>, fetcher: T) => {
6
+ data: UnwrapPromise<ReturnType<T>> | undefined;
7
+ isLoading: boolean;
8
+ };
9
+ export default useGetData;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useGetData = void 0;
7
+ var lodash_1 = require("lodash");
8
+ var react_1 = __importDefault(require("react"));
9
+ var useGetData = function (params, fetcher) {
10
+ var _a = react_1.default.useState(true), isLoading = _a[0], setLoading = _a[1];
11
+ var _b = react_1.default.useState(), data = _b[0], setData = _b[1];
12
+ react_1.default.useEffect(function () {
13
+ fetchData(params);
14
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15
+ }, params);
16
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
+ var fetchData = react_1.default.useCallback((0, lodash_1.debounce)(function (params) {
18
+ setLoading(true);
19
+ fetcher.apply(void 0, params).then(function (result) { return setData(result); })
20
+ .finally(function () { setLoading(false); });
21
+ // eslint-disable-next-line react-hooks/exhaustive-deps
22
+ }, 100), []);
23
+ return { data: data, isLoading: isLoading };
24
+ };
25
+ exports.useGetData = useGetData;
26
+ exports.default = exports.useGetData;
@@ -2,7 +2,7 @@ import moment from 'moment';
2
2
  import type { Params, Location } from '../AWING/Router';
3
3
  import { DataObject } from '../AWING';
4
4
  import { AnalyticDataProviderModel, FileResponse } from '../Commons/Types';
5
- import { Timestamp } from '../ACM-AXN/Campaign/Types';
5
+ import { Timestamp } from '../ACM-AXN/Common/Types';
6
6
  export declare enum TIMELINE_TYPE {
7
7
  HOUR = 0,
8
8
  DAY = 1
@@ -105,3 +105,4 @@ export interface IHeadCells {
105
105
  export declare const updateObjectFields: (originalObj: any, changedValues: any) => any;
106
106
  export declare function formatChartNumber(val: any, language: string): string;
107
107
  export declare const setObject: <O extends {}>(obj: O, arrKey: Array<keyof O>, value: unknown) => void;
108
+ export declare function fillMissingDates(startDate?: string | Date, endDate?: string | Date, format?: 'YYYYMMDD' | 'YYYYMMDDHH'): string[];
@@ -23,7 +23,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
23
23
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- 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;
26
+ 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;
27
27
  var moment_1 = __importDefault(require("moment"));
28
28
  var i18n_1 = __importDefault(require("../i18n"));
29
29
  var helper_1 = require("../AWING/helper");
@@ -541,3 +541,19 @@ var setObject = function (obj, arrKey, value) {
541
541
  (0, lodash_1.set)(obj, arrKey.reduce(function (acc, val) { return acc + '[' + val + ']'; }, ''), value);
542
542
  };
543
543
  exports.setObject = setObject;
544
+ function fillMissingDates(startDate, endDate, format) {
545
+ if (startDate === void 0) { startDate = ''; }
546
+ if (endDate === void 0) { endDate = ''; }
547
+ if (format === void 0) { format = 'YYYYMMDD'; }
548
+ // Parse the start and end dates
549
+ var start = (0, moment_1.default)(startDate);
550
+ var end = (0, moment_1.default)(endDate);
551
+ // Array to hold the complete range of dates
552
+ var dates = [];
553
+ // Iterate through the date range
554
+ for (var m = (0, moment_1.default)(start); m.isSameOrBefore(end); m.add(1, format === 'YYYYMMDD' ? 'days' : 'hours')) {
555
+ dates.push(m.format(format));
556
+ }
557
+ return dates;
558
+ }
559
+ exports.fillMissingDates = fillMissingDates;
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "Common": {
3
+ "DateRangePickerLabel": "Date",
3
4
  "NotNegative": "Not negative value!",
4
5
  "Existed": "{0} is already existed!",
5
6
  "lg": "en",
@@ -60,7 +61,7 @@
60
61
  "ViewBy": "View By",
61
62
  "NotUsage": "Not Usage",
62
63
  "Usage": "Usage",
63
- "FinalClick": "Final Click",
64
+ "FinalClick": "Click",
64
65
  "Label": "Label",
65
66
  "Permission": "Permission",
66
67
  "Download": "Download",
@@ -238,6 +239,9 @@
238
239
  "DisplayedRow ": "of"
239
240
  },
240
241
  "Campaign": {
242
+ "Engagement": "Engagement",
243
+ "Egr": "Engagement rate",
244
+ "Spot": "Spot",
241
245
  "ClickToCopy": "Click to copy",
242
246
  "Copied": "Copied",
243
247
  "Create": "Create campaign",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "Common": {
3
+ "DateRangePickerLabel": "Ngày tháng",
3
4
  "NotNegative": "Không được nhập số âm!",
4
5
  "Existed": "{0} đã tồn tại!",
5
6
  "lg": "vn",
@@ -220,6 +221,11 @@
220
221
  "DisplayedRow ": "trong"
221
222
  },
222
223
  "Campaign": {
224
+ "Engagement": "Lượt tương tác",
225
+ "Egr": "Tỉ lệ tương tác",
226
+ "Spot": "Spot",
227
+ "Impression": "Lượt hiển thị",
228
+ "Click": "Lượt kết nối",
223
229
  "Create": "Tạo chiến dịch",
224
230
  "ClickToCopy": "Nhấn để sao chép",
225
231
  "Copied": "Đã sao chép",
@@ -471,7 +477,7 @@
471
477
  "BillingUnit": {
472
478
  "Title": "Đơn vị",
473
479
  "View": "Impression",
474
- "Authentication": "Engagement / Spot",
480
+ "Authentication": "Lượt tương tác / Spot",
475
481
  "Click": "Click"
476
482
  }
477
483
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awing-library",
3
- "version": "2.1.125-beta",
3
+ "version": "2.1.127-beta",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",