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
@@ -26,7 +26,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  var jsx_runtime_1 = require("react/jsx-runtime");
27
27
  var icons_material_1 = require("@mui/icons-material");
28
28
  var material_1 = require("@mui/material");
29
- var Types_1 = require("./Types");
30
29
  var AWING_1 = require("../../AWING");
31
30
  var lodash_1 = require("lodash");
32
31
  var react_1 = require("react");
@@ -149,7 +148,7 @@ var CampaignContainer = function () {
149
148
  label: t('Campaign.AdvanceSearchPriority'),
150
149
  type: 'autocomplete',
151
150
  icon: (0, jsx_runtime_1.jsx)(icons_material_1.StarOutlined, { fontSize: "small" }),
152
- options: Object.entries(Types_1.CampaignPriority).map(function (_a) {
151
+ options: Object.entries(Enum_1.CampaignPriority).map(function (_a) {
153
152
  var key = _a[0], value = _a[1];
154
153
  return ({
155
154
  value: value,
@@ -264,7 +263,7 @@ var CampaignContainer = function () {
264
263
  text = (0, Utils_1.getTotalBooking)(row === null || row === void 0 ? void 0 : row.campaignGroups);
265
264
  }
266
265
  else {
267
- text = (0, Utils_1.checkPriority)(row.campaignGroup.priority, Types_1.CampaignPriority.ClassB)
266
+ text = (0, Utils_1.checkPriority)(row.campaignGroup.priority, Enum_1.CampaignPriority.ClassB)
268
267
  ? (0, Helpers_1.formatNumber)(row.campaignGroup.bookingAmount)
269
268
  : 'N/A';
270
269
  }
@@ -13,9 +13,9 @@ var __assign = (this && this.__assign) || function () {
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.weightState = exports.readyForSubmitState = exports.tabPartnerValidState = exports.tabSubCampaignValidState = exports.tabInfomationValidState = exports.campaignPartnerState = exports.campaignGroupsState = exports.campaignAttributesState = exports.campaignState = exports.campaignModelState = exports.confirmExitState = exports.isCreateState = exports.attributesState = exports.directoriesState = void 0;
15
15
  var recoil_1 = require("recoil");
16
- var Types_1 = require("../Types");
17
16
  var Utils_1 = require("../Utils");
18
17
  var atoms_1 = require("./TabSubCampaign/atoms");
18
+ var Enum_1 = require("../Enum");
19
19
  exports.directoriesState = (0, recoil_1.atom)({
20
20
  key: 'DirectoriesCampaignState',
21
21
  default: [],
@@ -51,8 +51,8 @@ exports.campaignModelState = (0, recoil_1.atom)({
51
51
  campaignGroup: {
52
52
  id: 1,
53
53
  name: 'Sub-Campaign 1',
54
- priority: (0, Utils_1.getIndexPriority)(Types_1.CampaignPriority.ClassB),
55
- ticket: Types_1.CampaignTicket.INACTIVE,
54
+ priority: (0, Utils_1.getIndexPriority)(Enum_1.CampaignPriority.ClassB),
55
+ ticket: Enum_1.CampaignTicket.INACTIVE,
56
56
  bookingAmount: 10,
57
57
  bonusAmount: 0,
58
58
  isReserved: false,
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var enzyme_1 = require("enzyme");
19
+ var core_1 = require("@material-ui/core");
20
+ var ChartFilter_1 = __importDefault(require("../ChartFilter"));
21
+ var ChartWithType_1 = __importDefault(require("./ChartWithType"));
22
+ var component_1 = __importDefault(require("./component"));
23
+ var mockProps = {
24
+ isLoading: false,
25
+ startDate: new Date("2022-06-07T08:39:14.482Z"),
26
+ endDate: new Date("2023-06-07T08:39:14.482Z"),
27
+ subCampaigns: [],
28
+ statisticalData: [],
29
+ getStatisticalData: jest.fn(),
30
+ exportData: jest.fn(),
31
+ domains: [],
32
+ };
33
+ describe("Analytic", function () {
34
+ it("renders without error", function () {
35
+ (0, enzyme_1.shallow)((0, jsx_runtime_1.jsx)(component_1.default, __assign({}, mockProps)));
36
+ });
37
+ it("displays loading spinner while loading is in progress", function () {
38
+ var wrapper = (0, enzyme_1.shallow)((0, jsx_runtime_1.jsx)(component_1.default, __assign({}, mockProps, { isLoading: true })));
39
+ var spinner = wrapper.find(core_1.CircularProgress);
40
+ expect(spinner).not.toBeNull();
41
+ });
42
+ it("renders ChartFilter component with the correct props", function () {
43
+ var wrapper = (0, enzyme_1.shallow)((0, jsx_runtime_1.jsx)(component_1.default, __assign({}, mockProps)));
44
+ var chartFilter = wrapper.find(ChartFilter_1.default);
45
+ expect(chartFilter).toHaveLength(1);
46
+ expect(chartFilter.props()).toMatchObject({
47
+ subCampaigns: mockProps.subCampaigns,
48
+ queryInput: {
49
+ time: {
50
+ startDate: mockProps.startDate,
51
+ endDate: mockProps.endDate,
52
+ },
53
+ places: [],
54
+ ids: {},
55
+ timelineType: 1,
56
+ statisticType: 0,
57
+ },
58
+ onChangeQueryInput: expect.any(Function),
59
+ onQueryData: expect.any(Function),
60
+ isExportType: true,
61
+ onExportData: expect.any(Function),
62
+ domains: mockProps.domains,
63
+ });
64
+ });
65
+ it("renders ChartWithType component with the correct props", function () {
66
+ var wrapper = (0, enzyme_1.shallow)((0, jsx_runtime_1.jsx)(component_1.default, __assign({}, mockProps)));
67
+ var chartWithType = wrapper.find(ChartWithType_1.default);
68
+ expect(chartWithType).toHaveLength(1);
69
+ expect(chartWithType.props()).toMatchObject({
70
+ statisticalData: mockProps.statisticalData,
71
+ subCampaigns: mockProps.subCampaigns,
72
+ ids: {},
73
+ onCampaignAdGroupIdChange: expect.any(Function),
74
+ statisticType: 0,
75
+ setStatisticType: expect.any(Function),
76
+ timelineType: 1,
77
+ setTimelineType: expect.any(Function),
78
+ });
79
+ });
80
+ });
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var enzyme_1 = require("enzyme");
19
+ var react_1 = __importDefault(require("react"));
20
+ var container_1 = __importDefault(require("./container"));
21
+ var component_1 = __importDefault(require("./component"));
22
+ describe("AnalyticContainer", function () {
23
+ var props = {
24
+ subCampaigns: [
25
+ {
26
+ groupCampaign: {
27
+ id: 1,
28
+ name: "Group 1",
29
+ },
30
+ ads: [
31
+ {
32
+ id: 1,
33
+ name: "ad1",
34
+ places: [{ name: "place1" }],
35
+ },
36
+ ],
37
+ },
38
+ ],
39
+ campaignId: "campaignId",
40
+ startDate: new Date(),
41
+ endDate: new Date(),
42
+ domains: [],
43
+ };
44
+ it("should render AnalyticComponent", function () {
45
+ var wrapper = (0, enzyme_1.shallow)((0, jsx_runtime_1.jsx)(container_1.default, __assign({}, props)));
46
+ var comp = wrapper.find(component_1.default);
47
+ expect(comp.length).toEqual(1);
48
+ });
49
+ });
@@ -0,0 +1,13 @@
1
+ import { CampaignGroupModel } from '../../../../../ACM-AXN/Campaign/Types';
2
+ interface Props {
3
+ statisticalData: any;
4
+ timelineType: number;
5
+ setTimelineType: any;
6
+ statisticType: number;
7
+ setStatisticType: any;
8
+ subCampaigns: CampaignGroupModel[];
9
+ ids: any;
10
+ onCampaignAdGroupIdChange: (newValue: string[]) => void;
11
+ }
12
+ declare const ChartWithType: (props: Props) => import("react/jsx-runtime").JSX.Element;
13
+ export default ChartWithType;
@@ -0,0 +1,131 @@
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
+ var jsx_runtime_1 = require("react/jsx-runtime");
7
+ var react_i18next_1 = require("react-i18next");
8
+ var material_1 = require("@mui/material");
9
+ var i18n_1 = __importDefault(require("../../../../../i18n"));
10
+ var MultipleHierarchicalChoice_1 = require("../../../../../AWING/MultipleHierarchicalChoice");
11
+ var Detail_1 = __importDefault(require("./Detail"));
12
+ var Utils_1 = require("./Utils");
13
+ var AWING_1 = require("../../../../../AWING");
14
+ var Context_1 = __importDefault(require("../Context"));
15
+ var styles = {
16
+ root: {
17
+ border: '1px solid #ccc',
18
+ paddingTop: function (theme) { return theme.spacing(2); },
19
+ },
20
+ chart: {
21
+ marginTop: function (theme) { return theme.spacing(2); },
22
+ },
23
+ chartWrapper: {
24
+ padding: function (theme) { return theme.spacing(1); },
25
+ paddingLeft: function (theme) { return theme.spacing(16); },
26
+ paddingRight: function (theme) { return theme.spacing(16); },
27
+ height: '435px',
28
+ },
29
+ };
30
+ var ChartWithType = function (props) {
31
+ var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
32
+ var chart = (0, Context_1.default)().chart;
33
+ var SType = [t('Campaign.TypeChart'), t('Campaign.TypeDetail')];
34
+ var statisticalData = props.statisticalData, timelineType = props.timelineType, setTimelineType = props.setTimelineType, statisticType = props.statisticType, setStatisticType = props.setStatisticType, subCampaigns = props.subCampaigns, ids = props.ids, onCampaignAdGroupIdChange = props.onCampaignAdGroupIdChange;
35
+ var translationText = {
36
+ timeline: t('Common.ViewBy'),
37
+ timelineType: {
38
+ HOUR: t('Common.Hour'),
39
+ DAY: t('Common.Day'),
40
+ WEEK: t('Common.Week'),
41
+ MONTH: t('Common.Month'),
42
+ },
43
+ allPlaceGroup: t('Place.AllPlaceGroup'),
44
+ };
45
+ var ChartByType = [
46
+ translationText.timelineType.HOUR,
47
+ translationText.timelineType.DAY,
48
+ ];
49
+ var getGroupOptions = function () {
50
+ var ads = [];
51
+ subCampaigns.forEach(function (s) {
52
+ var _a, _b;
53
+ ads.push({
54
+ code: (_a = s.campaignGroup.id) === null || _a === void 0 ? void 0 : _a.toString(),
55
+ name: s.campaignGroup.name,
56
+ parentUnitCode: '',
57
+ });
58
+ (_b = s === null || s === void 0 ? void 0 : s.ads) === null || _b === void 0 ? void 0 : _b.forEach(function (a) {
59
+ var _a;
60
+ ads.push({
61
+ code: "".concat(s.campaignGroup.id, "&").concat(a.id),
62
+ name: a.name,
63
+ parentUnitCode: (_a = s.campaignGroup.id) === null || _a === void 0 ? void 0 : _a.toString(),
64
+ });
65
+ });
66
+ });
67
+ return ads;
68
+ };
69
+ var groupOptions = getGroupOptions();
70
+ var handleGroupChange = function (value) {
71
+ var result = [];
72
+ if (value.length > 0) {
73
+ value.forEach(function (v) {
74
+ result.push(v[v.length - 1].code.toString());
75
+ });
76
+ }
77
+ // console.log("valuddde", value, result)
78
+ onCampaignAdGroupIdChange(result);
79
+ };
80
+ // const getValue = useMemo(() => {
81
+ // let result: any[] = []
82
+ // if (ids.campaignGroupId) {
83
+ // let tmpSelected: any[] = []
84
+ // const group = groupOptions.find(
85
+ // (g) => g.code === ids.campaignGroupId?.toString()
86
+ // )
87
+ // tmpSelected = [group]
88
+ // if (ids.campaignAdId) {
89
+ // const ad = groupOptions.find(
90
+ // (g) =>
91
+ // g.code === `${ids.campaignGroupId}&${ids.campaignAdId}`
92
+ // )
93
+ // tmpSelected = [group, ad];
94
+ // }
95
+ // result.push(tmpSelected)
96
+ // }
97
+ // console.log("result", result)
98
+ // return result
99
+ // }, [groupOptions, ids.campaignAdId, ids.campaignGroupId])
100
+ var getValue = function () {
101
+ var final = [];
102
+ ids.forEach(function (id) {
103
+ var result = [];
104
+ if (id.campaignGroupId) {
105
+ var group = groupOptions.find(function (g) { var _a; return g.code == ((_a = id.campaignGroupId) === null || _a === void 0 ? void 0 : _a.toString()); });
106
+ result.push(group);
107
+ if (id.campaignAdId) {
108
+ var ad = groupOptions.find(function (g) {
109
+ return g.code == "".concat(id.campaignGroupId, "&").concat(id.campaignAdId);
110
+ });
111
+ result.push(ad);
112
+ }
113
+ }
114
+ final.push(result);
115
+ });
116
+ return final;
117
+ };
118
+ return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 1, sx: styles.root, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 3 }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, children: (0, jsx_runtime_1.jsx)(material_1.FormControl, { fullWidth: true, variant: "outlined", children: (0, jsx_runtime_1.jsx)(MultipleHierarchicalChoice_1.MultipleHierarchicalChoice, { onChange: handleGroupChange, options: groupOptions, placeholder: t('Campaign.SelectGroup'), label: translationText.timeline, value: getValue() }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 2, children: (0, jsx_runtime_1.jsx)(material_1.FormControl, { fullWidth: true, variant: "outlined", children: (0, jsx_runtime_1.jsx)(material_1.TextField, { select: true, fullWidth: true, label: translationText.timeline, id: "timelineType", name: "timelineType", value: timelineType, onChange: function (e) { return setTimelineType(e.target.value); }, size: "small", variant: "outlined", children: ChartByType.map(function (type, idx) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: idx, children: type }, idx)); }) }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 2, children: (0, jsx_runtime_1.jsx)(material_1.FormControl, { fullWidth: true, variant: "outlined", children: (0, jsx_runtime_1.jsx)(material_1.TextField, { select: true, fullWidth: true, label: t('Campaign.StatisticType'), id: "statisticType", name: "statisticType", value: statisticType, onChange: function (e) { return setStatisticType(e.target.value); }, size: "small", variant: "outlined", children: SType.map(function (type, idx) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: idx, children: type }, idx)); }) }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 1 }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, sx: styles.chart, children: statisticType === 0 ? ((0, jsx_runtime_1.jsx)(material_1.Box, { component: 'div', sx: styles.chartWrapper, children: (0, jsx_runtime_1.jsx)(AWING_1.BarLineComponent, { chart: chart, dataChart: (0, Utils_1.convertToChartData)(statisticalData, subCampaigns), type: 'line', data: [], timeline: timelineType, optionCustom: {
119
+ scales: {
120
+ y: {
121
+ title: {
122
+ text: t('Statistics.View'),
123
+ },
124
+ },
125
+ yAxis: {
126
+ display: false,
127
+ },
128
+ },
129
+ } }) })) : ((0, jsx_runtime_1.jsx)(Detail_1.default, { statisticalData: statisticalData })) })] }));
130
+ };
131
+ exports.default = ChartWithType;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var enzyme_1 = require("enzyme");
19
+ var ChartWithType_1 = __importDefault(require("./ChartWithType"));
20
+ describe("Testing ChartWithType component", function () {
21
+ var wrapper;
22
+ var initialProps = {
23
+ statisticalData: [
24
+ {
25
+ click: 0,
26
+ crt: 0,
27
+ timeline: 20230418,
28
+ view: 0,
29
+ },
30
+ ],
31
+ timelineType: 0,
32
+ setTimelineType: jest.fn(),
33
+ statisticType: 0,
34
+ setStatisticType: jest.fn(),
35
+ subCampaigns: [
36
+ {
37
+ campaignGroup: {
38
+ id: 1,
39
+ name: "Group 1",
40
+ },
41
+ ads: [
42
+ {
43
+ id: 1,
44
+ name: "Ad 1",
45
+ },
46
+ ],
47
+ },
48
+ ],
49
+ ids: {
50
+ campaignGroupId: 1,
51
+ campaignAdId: 1,
52
+ },
53
+ onCampaignAdGroupIdChange: jest.fn(),
54
+ };
55
+ beforeEach(function () {
56
+ wrapper = (0, enzyme_1.shallow)((0, jsx_runtime_1.jsx)(ChartWithType_1.default, __assign({}, initialProps)));
57
+ });
58
+ afterEach(function () {
59
+ wrapper.unmount();
60
+ });
61
+ it("should render without errors", function () {
62
+ expect(wrapper).toHaveLength(1);
63
+ });
64
+ it("should render a MultipleHierarchicalChoice component", function () {
65
+ expect(wrapper.find("MultipleHierarchicalChoice")).toHaveLength(1);
66
+ });
67
+ });
@@ -0,0 +1,2 @@
1
+ declare const ControlPanel: (props: any) => import("react/jsx-runtime").JSX.Element;
2
+ export default ControlPanel;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ var jsx_runtime_1 = require("react/jsx-runtime");
16
+ var react_1 = __importDefault(require("react"));
17
+ var react_i18next_1 = require("react-i18next");
18
+ var material_1 = require("@mui/material");
19
+ var useStyles = {
20
+ groupBy: {},
21
+ chip: {},
22
+ label: {},
23
+ outlinedInput: {
24
+ // '& .MuiOutlinedInput-input': {
25
+ // padding: '10.5px !important',
26
+ // },
27
+ // '& .MuiFormControl-marginNormal': {
28
+ // margin: (theme) => theme.spacing(0),
29
+ // },
30
+ // '& .MuiOutlinedInput-adornedEnd': {
31
+ // paddingRight: (theme) => theme.spacing(0.5),
32
+ // },
33
+ // '& .MuiIconButton-root': {
34
+ // padding: (theme) => theme.spacing(1),
35
+ // },
36
+ // '& .MuiAutocomplete-inputRoot': {
37
+ // padding: (theme) => theme.spacing(0.25),
38
+ // },
39
+ // '& .MuiAutocomplete-endAdornment': {
40
+ // top: 'calc(50% - 19px)',
41
+ // },
42
+ },
43
+ buttonStyle: {
44
+ height: '40px',
45
+ },
46
+ loadingButton: {
47
+ marginLeft: 0,
48
+ right: 'auto',
49
+ position: 'absolute',
50
+ },
51
+ };
52
+ var ControlPanel = function (props) {
53
+ var groupHeaders = props.groupHeaders, onQueryData = props.onQueryData;
54
+ var t = (0, react_i18next_1.useTranslation)().t;
55
+ var _a = react_1.default.useState([]), groupByValues = _a[0], setGroupByValues = _a[1];
56
+ var handleDelete = function (groupId) { return function () {
57
+ setGroupByValues(function (old) { return old.filter(function (x) { return x !== groupId; }); });
58
+ }; };
59
+ var handleDragStart = function (e) {
60
+ var groupId = e.target.id;
61
+ e.dataTransfer.setData('text', groupId);
62
+ };
63
+ var handleDrop = function (e) {
64
+ e.preventDefault();
65
+ var dragNodeId = e.dataTransfer.getData('text');
66
+ var dropNodeId = e.target.parentNode.id;
67
+ if (dragNodeId === dropNodeId)
68
+ return;
69
+ if (groupByValues.some(function (x) { return x === dragNodeId; })) {
70
+ var dropIndex = groupByValues.findIndex(function (grp) { return grp === dropNodeId; });
71
+ var dragIndex = groupByValues.findIndex(function (grp) { return grp === dragNodeId; });
72
+ var newGroupBy_1 = __spreadArray([], groupByValues, true);
73
+ newGroupBy_1.splice(dragIndex, 1, dropNodeId || '');
74
+ newGroupBy_1.splice(dropIndex, 1, dragNodeId || '');
75
+ setGroupByValues(function (old) { return newGroupBy_1; });
76
+ }
77
+ else {
78
+ if (groupHeaders.some(function (x) { return x.id === dragNodeId; }))
79
+ setGroupByValues(function (old) { return __spreadArray(__spreadArray([], old, true), [dragNodeId], false); });
80
+ }
81
+ };
82
+ return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, paddingInline: 2, children: [(0, jsx_runtime_1.jsxs)(material_1.Grid, { id: "group-panel", item: true, xs: 11, style: { paddingLeft: '16px', position: 'relative' }, children: [(0, jsx_runtime_1.jsx)(material_1.Paper, { component: "div", sx: {
83
+ display: 'flex',
84
+ justifyContent: 'flex-start',
85
+ flexWrap: 'wrap',
86
+ listStyle: 'none',
87
+ paddingTop: '8px',
88
+ margin: '0',
89
+ position: 'relative',
90
+ '&.MuiPaper-elevation1': {
91
+ boxShadow: 'none',
92
+ border: '1px solid #ccc',
93
+ },
94
+ minHeight: '40px',
95
+ '&:hover': {
96
+ '&.MuiPaper-elevation1': {
97
+ boxShadow: 'none',
98
+ border: '1px solid #263238',
99
+ },
100
+ },
101
+ }, onDragOver: function (e) { return e.preventDefault(); }, onDrop: function (e) { return handleDrop(e); }, children: groupByValues.map(function (grpId) {
102
+ var head = groupHeaders.find(function (x) { return x.id === grpId; });
103
+ return ((0, jsx_runtime_1.jsx)(material_1.Chip, { id: grpId, label: head.label, onDelete: handleDelete(head.id), size: "small", sx: { marginLeft: function (theme) { return theme.spacing(1); } }, draggable: true, onDragStart: handleDragStart }, grpId));
104
+ }) }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "caption", color: "textSecondary", sx: {
105
+ position: 'absolute',
106
+ top: '7px',
107
+ left: '24px',
108
+ backgroundColor: '#FFFFFF',
109
+ paddingRight: '4px',
110
+ paddingLeft: '4px',
111
+ }, children: (0, jsx_runtime_1.jsx)("span", { children: t('Schedule.DragAndDropLabel') }) })] }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 1, children: (0, jsx_runtime_1.jsx)(material_1.Button, { sx: { height: '40px' }, variant: "contained", color: "primary", onClick: function () { return onQueryData(groupByValues); }, children: t('Common.View') }) })] }));
112
+ };
113
+ exports.default = ControlPanel;
@@ -0,0 +1,27 @@
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
+ var jsx_runtime_1 = require("react/jsx-runtime");
7
+ var ControlPanel_1 = __importDefault(require("./ControlPanel"));
8
+ var enzyme_1 = require("enzyme");
9
+ describe("ControlPanel", function () {
10
+ var groupHeaders = [
11
+ { id: "1", label: "Group 1" },
12
+ { id: "2", label: "Group 2" },
13
+ { id: "3", label: "Group 3" },
14
+ ];
15
+ var onQueryData = jest.fn();
16
+ it("renders correctly with empty groupByValues", function () {
17
+ var wrapper = (0, enzyme_1.mount)((0, jsx_runtime_1.jsx)(ControlPanel_1.default, { groupHeaders: groupHeaders, onQueryData: onQueryData }));
18
+ var chip = wrapper.find(".MuiChip-root");
19
+ expect(chip.length).toEqual(0);
20
+ });
21
+ it("triggers onQueryData when view button is clicked", function () {
22
+ var wrapper = (0, enzyme_1.mount)((0, jsx_runtime_1.jsx)(ControlPanel_1.default, { groupHeaders: groupHeaders, onQueryData: onQueryData }));
23
+ var buttonWatch = wrapper.find(".MuiButtonBase-root");
24
+ buttonWatch.simulate("click");
25
+ expect(onQueryData.mock.calls[0][0]).toEqual([]);
26
+ });
27
+ });
@@ -0,0 +1,55 @@
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
+ var jsx_runtime_1 = require("react/jsx-runtime");
7
+ var enzyme_1 = require("enzyme");
8
+ var core_1 = require("@material-ui/core");
9
+ var Detail_1 = __importDefault(require("../Detail"));
10
+ describe("DetailGroupBy", function () {
11
+ var statisticalData = [
12
+ {
13
+ subCampaignName: "SubCampaign 1",
14
+ adName: "Ad 1",
15
+ domainName: "Domain 1",
16
+ placeName: "Place 1",
17
+ click: 10,
18
+ },
19
+ {
20
+ subCampaignName: "SubCampaign 2",
21
+ adName: "Ad 2",
22
+ domainName: "Domain 2",
23
+ placeName: "Place 2",
24
+ click: 20,
25
+ },
26
+ ];
27
+ var wrapper;
28
+ beforeEach(function () {
29
+ wrapper = (0, enzyme_1.mount)((0, jsx_runtime_1.jsx)(Detail_1.default, { statisticalData: statisticalData }));
30
+ });
31
+ it("render 2 row", function () {
32
+ var wrapper = (0, enzyme_1.mount)((0, jsx_runtime_1.jsx)(Detail_1.default, { statisticalData: statisticalData }));
33
+ expect(wrapper.find(".MuiTableRow-root")).toHaveLength(2);
34
+ });
35
+ it("renders a ControlPanel component", function () {
36
+ var wrapper = (0, enzyme_1.mount)((0, jsx_runtime_1.jsx)(Detail_1.default, { statisticalData: statisticalData }));
37
+ expect(wrapper.find("ControlPanel")).toHaveLength(1);
38
+ });
39
+ it("renders the expected table headers", function () {
40
+ var expectedHeaders = [
41
+ "#",
42
+ "Campaign.SubCampaign",
43
+ "Campaign.AdLabel",
44
+ "Campaign.Domain",
45
+ "Campaign.Place",
46
+ "Campaign.NumberHasRunText",
47
+ ];
48
+ var tableHeaders = wrapper
49
+ .find(core_1.TableHead)
50
+ .find(core_1.TableRow)
51
+ .find(core_1.TableCell)
52
+ .map(function (cell) { return cell.text(); });
53
+ expect(tableHeaders).toEqual(expectedHeaders);
54
+ });
55
+ });
@@ -0,0 +1,7 @@
1
+ interface RowProps {
2
+ info: any;
3
+ headCells: any[];
4
+ onRowClicked?: (rowInfo: any) => void;
5
+ }
6
+ export default function RowDetail(props: RowProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var jsx_runtime_1 = require("react/jsx-runtime");
4
+ var material_1 = require("@mui/material");
5
+ function RowDetail(props) {
6
+ var info = props.info, headCells = props.headCells, onRowClicked = props.onRowClicked;
7
+ var groupKeys = headCells.filter(function (headCell) { return headCell.isGrouping; });
8
+ return ((0, jsx_runtime_1.jsxs)(material_1.TableRow, { onClick: function () {
9
+ onRowClicked && onRowClicked(info);
10
+ }, style: { cursor: onRowClicked ? 'pointer' : 'text' }, children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { colSpan: groupKeys.length + 1, align: 'right', style: { borderBottom: '1px solid #a3a3a345' }, children: info.rowIndex + 1 }), headCells.map(function (headCell, index) {
11
+ return !headCell.isGrouping && ((0, jsx_runtime_1.jsx)(material_1.TableCell, { style: {
12
+ borderBottom: '1px solid #a3a3a345',
13
+ opacity: info.isDeleted &&
14
+ headCell.field == 'placeName'
15
+ ? '0.5'
16
+ : '1',
17
+ color: !info.isDeleted &&
18
+ headCell.field == 'placeName'
19
+ ? '#235286'
20
+ : '',
21
+ }, children: headCell.getDisplay
22
+ ? headCell.getDisplay(info)
23
+ : info[headCell.field] === 0
24
+ ? info[headCell.field]
25
+ : info[headCell.field] || 'N/A' }, index));
26
+ })] }));
27
+ }
28
+ exports.default = RowDetail;