awing-library 2.1.136-beta → 2.1.136

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 (220) hide show
  1. package/lib/ACM-AXN/AuthenticationProfile/Container.js +4 -4
  2. package/lib/ACM-AXN/AuthenticationProfile/CreateOrEdit/index.js +2 -2
  3. package/lib/ACM-AXN/Campaign/Container.js +52 -54
  4. package/lib/ACM-AXN/Campaign/Container.test.js +1 -3
  5. package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.d.ts +8 -1
  6. package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +27 -3
  7. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.d.ts +17 -0
  8. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.js +121 -0
  9. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.d.ts +1 -0
  10. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.js +219 -0
  11. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.d.ts +2 -0
  12. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.js +306 -0
  13. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.test.d.ts +1 -0
  14. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.test.js +230 -0
  15. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.d.ts +1 -0
  16. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.js +123 -0
  17. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.test.d.ts +1 -0
  18. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.test.js +253 -0
  19. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabInfomation.js +21 -5
  20. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabPartner.d.ts +1 -1
  21. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabPartner.js +47 -78
  22. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.d.ts +6 -1
  23. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.js +3 -22
  24. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.js +2 -1
  25. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.js +2 -3
  26. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.d.ts +22 -42
  27. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.js +317 -104
  28. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.js +1 -1
  29. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.d.ts +3 -0
  30. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.js +119 -54
  31. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.d.ts +1 -1
  32. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.js +46 -8
  33. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.js +8 -6
  34. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.js +1 -1
  35. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/PasswordDialog.d.ts +9 -0
  36. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/PasswordDialog.js +56 -0
  37. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.js +5 -1
  38. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Util.d.ts +12 -0
  39. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Util.js +23 -8
  40. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.js +3 -3
  41. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.js +63 -12
  42. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.d.ts +1 -0
  43. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.js +17 -4
  44. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.d.ts +10 -0
  45. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.js +4 -1
  46. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.d.ts +1 -0
  47. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.js +3 -2
  48. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.js +6 -2
  49. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.js +31 -29
  50. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdList.js +5 -2
  51. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdRow.js +2 -2
  52. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/AddOrEditRule.js +6 -0
  53. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/Authentication.d.ts +8 -0
  54. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/Authentication.js +47 -0
  55. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitEvent.js +52 -6
  56. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetOS/container.js +2 -2
  57. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/index.d.ts +1 -0
  58. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/index.js +3 -1
  59. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/Advanced.d.ts +4 -3
  60. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/Advanced.js +13 -7
  61. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/EditAds.js +5 -5
  62. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +69 -124
  63. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +3 -13
  64. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +45 -20
  65. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.d.ts +2 -0
  66. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.js +8 -3
  67. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +3 -2
  68. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/useSearchPage.js +33 -8
  69. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.d.ts +5 -1
  70. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +176 -59
  71. package/lib/ACM-AXN/Campaign/Enum.d.ts +23 -4
  72. package/lib/ACM-AXN/Campaign/Enum.js +30 -10
  73. package/lib/ACM-AXN/Campaign/Types.d.ts +55 -6
  74. package/lib/ACM-AXN/Campaign/Utils.d.ts +6 -0
  75. package/lib/ACM-AXN/Campaign/Utils.js +60 -2
  76. package/lib/ACM-AXN/Campaign/index.js +2 -2
  77. package/lib/ACM-AXN/CampaignPlan/Container.js +5 -7
  78. package/lib/ACM-AXN/CampaignPlan/Detail.js +3 -3
  79. package/lib/ACM-AXN/CampaignPlan/Filter.js +1 -1
  80. package/lib/ACM-AXN/CampaignSchedule/Components/ControlPanel/Filter.js +14 -10
  81. package/lib/ACM-AXN/CampaignSchedule/Components/EnhancedPagination/index.js +3 -2
  82. package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/component.js +7 -5
  83. package/lib/ACM-AXN/CampaignSchedule/DataConfig.js +4 -4
  84. package/lib/ACM-AXN/CampaignSchedule/DataConfigAXN.js +5 -4
  85. package/lib/ACM-AXN/CampaignSchedule/Recoil/Atom.d.ts +1 -2
  86. package/lib/ACM-AXN/CampaignSchedule/Recoil/Atom.js +1 -5
  87. package/lib/ACM-AXN/Common/Constant.d.ts +3 -0
  88. package/lib/ACM-AXN/Common/Constant.js +2 -0
  89. package/lib/ACM-AXN/Common/Enum.d.ts +8 -3
  90. package/lib/ACM-AXN/Common/Enum.js +19 -4
  91. package/lib/ACM-AXN/Common/Types.d.ts +5 -0
  92. package/lib/ACM-AXN/GeoFencing/GoongMap/index.d.ts +8 -9
  93. package/lib/ACM-AXN/GeoFencing/component.js +7 -7
  94. package/lib/ACM-AXN/GeoFencing/interface.d.ts +1 -2
  95. package/lib/ACM-AXN/Holiday/FormHoliday.js +1 -0
  96. package/lib/ACM-AXN/Notifications/NotificationPopover/Container.d.ts +0 -5
  97. package/lib/ACM-AXN/Notifications/NotificationPopover/Container.js +7 -90
  98. package/lib/ACM-AXN/Notifications/NotificationPopover/index.d.ts +0 -5
  99. package/lib/ACM-AXN/Notifications/Types.d.ts +2 -0
  100. package/lib/ACM-AXN/Page/Constant.js +2 -0
  101. package/lib/ACM-AXN/Page/Container.js +3 -3
  102. package/lib/ACM-AXN/Page/CreateOrEdit/ListenTemplate.d.ts +6 -0
  103. package/lib/ACM-AXN/Page/CreateOrEdit/ListenTemplate.js +63 -0
  104. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +11 -2
  105. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +16 -12
  106. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/TrackingCode.js +1 -1
  107. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/Utils.js +1 -1
  108. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/index.js +1 -0
  109. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.d.ts +1 -9
  110. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.js +0 -9
  111. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +11 -44
  112. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +2 -3
  113. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.js +39 -61
  114. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.js +29 -32
  115. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +10 -9
  116. package/lib/ACM-AXN/Page/CreateOrEdit/index.js +19 -4
  117. package/lib/ACM-AXN/Page/Types.d.ts +3 -0
  118. package/lib/ACM-AXN/Page/enums.d.ts +5 -0
  119. package/lib/ACM-AXN/Page/enums.js +7 -1
  120. package/lib/ACM-AXN/Permission/Components/Styles.d.ts +1 -2
  121. package/lib/ACM-AXN/PlaceFilter/DataTable/component/index.js +2 -5
  122. package/lib/ACM-AXN/PlaceFilter/Input/component/index.js +1 -2
  123. package/lib/ACM-AXN/PlaceFilter/interface.d.ts +1 -0
  124. package/lib/ACM-AXN/ScheduleCompletionRate/Container.js +16 -16
  125. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.d.ts +14 -9
  126. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.js +19 -18
  127. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRate.js +16 -6
  128. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRateDate.js +17 -10
  129. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.d.ts +2 -1
  130. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.js +30 -51
  131. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.test.js +1 -1
  132. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.d.ts +2 -2
  133. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.js +3 -9
  134. package/lib/ACM-AXN/ScheduleCompletionRate/Types.d.ts +16 -36
  135. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.d.ts +5 -5
  136. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.js +13 -10
  137. package/lib/ACM-AXN/Statistics/ControlPanel.js +17 -5
  138. package/lib/ACM-AXN/Statistics/Enums.d.ts +2 -1
  139. package/lib/ACM-AXN/Statistics/Enums.js +1 -0
  140. package/lib/ACM-AXN/StatisticsAudienceDemographic/Tabs/AgeRange.js +1 -0
  141. package/lib/ACM-AXN/StatisticsByProvince/DataTable.js +1 -1
  142. package/lib/ACM-AXN/TaskScheduler/CreateOrEdit.js +4 -4
  143. package/lib/ACM-AXN/Template/Container.js +2 -2
  144. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +1 -0
  145. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +5 -1
  146. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +2 -2
  147. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +56 -39
  148. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -1
  149. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +62 -51
  150. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +28 -4
  151. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +43 -15
  152. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +8 -4
  153. package/lib/ACM-AXN/Template/Import.js +2 -2
  154. package/lib/ACM-AXN/Template/Types.d.ts +9 -9
  155. package/lib/ACM-AXN/TransactionLog/Detail.js +1 -1
  156. package/lib/ACM-AXN/ViewTemplate/Preview.js +5 -6
  157. package/lib/ACM-AXN/ViewTemplate/TemplateField/Event.js +23 -11
  158. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/Utils.d.ts +18 -0
  159. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/Utils.js +170 -0
  160. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/index.js +46 -160
  161. package/lib/ACM-AXN/ViewTemplate/common.d.ts +2 -1
  162. package/lib/ACM-AXN/ViewTemplate/common.js +48 -9
  163. package/lib/ACM-AXN/ViewTemplate/container.js +23 -24
  164. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.d.ts +3 -1
  165. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.js +18 -28
  166. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.test.js +2 -0
  167. package/lib/ACM-AXN/Wizard/CreateOrEdit/RowTemplate.js +1 -1
  168. package/lib/ACM-AXN/Wizard/CreateOrEdit/index.js +17 -1
  169. package/lib/ACM-AXN/index.d.ts +1 -0
  170. package/lib/ACM-AXN/index.js +1 -0
  171. package/lib/AWING/AsyncAutocomplete/index.js +2 -2
  172. package/lib/AWING/BasicDataForm/BasicDataForm.js +9 -6
  173. package/lib/AWING/BasicDataForm/interface.d.ts +3 -0
  174. package/lib/AWING/Chart/BarLineComponent.js +20 -25
  175. package/lib/AWING/Chart/PieComponent.d.ts +3 -4
  176. package/lib/AWING/Chart/PieComponent.js +16 -16
  177. package/lib/AWING/Chart/Styles.js +51 -16
  178. package/lib/AWING/DataForm/DataInput.js +104 -22
  179. package/lib/AWING/DataForm/interface.d.ts +2 -0
  180. package/lib/AWING/DataGrid/index.js +8 -13
  181. package/lib/AWING/DateRangePicker/component.js +56 -30
  182. package/lib/AWING/DateRangePicker/configDate.d.ts +1 -2
  183. package/lib/AWING/DateRangePicker/configDate.js +12 -12
  184. package/lib/AWING/DateRangePicker/interface.d.ts +1 -0
  185. package/lib/AWING/Form/useForm.js +3 -2
  186. package/lib/AWING/GoogleMap/GGMap.d.ts +3 -0
  187. package/lib/AWING/GoogleMap/GGMap.js +256 -0
  188. package/lib/AWING/GoogleMap/index.d.ts +4 -0
  189. package/lib/AWING/GoogleMap/index.js +41 -0
  190. package/lib/AWING/GoogleMap/interface.d.ts +21 -0
  191. package/lib/AWING/GoogleMap/interface.js +2 -0
  192. package/lib/AWING/GoogleMap/utils.d.ts +25 -0
  193. package/lib/AWING/GoogleMap/utils.js +135 -0
  194. package/lib/AWING/GroupTable/GroupTable.js +4 -5
  195. package/lib/AWING/GroupTable/component.d.ts +1 -0
  196. package/lib/AWING/GroupTable/component.js +2 -2
  197. package/lib/AWING/NumberFormat/index.d.ts +3 -1
  198. package/lib/AWING/NumberFormat/index.js +2 -2
  199. package/lib/AWING/PageManagement/PageManagement.js +4 -3
  200. package/lib/AWING/Pagination/index.js +11 -3
  201. package/lib/AWING/index.d.ts +1 -0
  202. package/lib/AWING/index.js +1 -0
  203. package/lib/AWING/ultis/validation.d.ts +1 -0
  204. package/lib/AWING/ultis/validation.js +25 -6
  205. package/lib/Commons/Components/ClassicDrawer.js +5 -4
  206. package/lib/Commons/Components/DeprecatedEnhancedDialog.js +1 -1
  207. package/lib/Commons/Components/HighlightedCode/MarkdownElement.js +6 -1
  208. package/lib/Commons/Hooks/usePath.js +3 -3
  209. package/lib/Utils/Helpers.d.ts +3 -2
  210. package/lib/Utils/Helpers.js +48 -8
  211. package/lib/i18n.js +18 -2
  212. package/lib/translate/en/translation.json +137 -73
  213. package/lib/translate/id/translation.json +893 -0
  214. package/lib/translate/ja/translation.json +893 -0
  215. package/lib/translate/phl/translation.json +893 -0
  216. package/lib/translate/th/translation.json +893 -0
  217. package/lib/translate/vi/translation.json +97 -33
  218. package/package.json +131 -126
  219. package/lib/ACM-AXN/ViewTemplate/TemplateField/Utils.d.ts +0 -5
  220. package/lib/ACM-AXN/ViewTemplate/TemplateField/Utils.js +0 -14
@@ -46,11 +46,21 @@ var react_1 = __importStar(require("react"));
46
46
  var Context_1 = __importDefault(require("../Context"));
47
47
  var Util_1 = require("./Util");
48
48
  var component_1 = __importDefault(require("./component"));
49
+ var recoil_1 = require("recoil");
50
+ var Recoils_1 = require("../../Recoils");
51
+ var PasswordDialog_1 = __importDefault(require("./PasswordDialog"));
52
+ var react_i18next_1 = require("react-i18next");
53
+ var i18n_1 = __importDefault(require("../../../../../i18n"));
49
54
  var EventContainer = function (props) {
50
55
  var campaignId = props.campaignId, startDate = props.startDate, endDate = props.endDate, subCampaigns = props.subCampaigns, domains = props.domains;
51
56
  var client = (0, Context_1.default)().services;
52
57
  var _a = react_1.default.useState(true), isLoading = _a[0], setIsLoading = _a[1];
53
58
  var _b = react_1.default.useState([]), eventData = _b[0], setEventData = _b[1];
59
+ var _c = react_1.default.useState(false), openPasswordDialog = _c[0], setOpenPasswordDialog = _c[1];
60
+ var _d = react_1.default.useState(null), currentExportParams = _d[0], setCurrentExportParams = _d[1];
61
+ var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
62
+ var _e = react_1.default.useState(undefined), errrorExport = _e[0], setErrorExport = _e[1];
63
+ var campaignInfo = (0, recoil_1.useRecoilValue)(Recoils_1.campaignState);
54
64
  var placesOfCampaign = (0, react_1.useMemo)(function () {
55
65
  var result = [];
56
66
  subCampaigns.forEach(function (sub) {
@@ -73,9 +83,7 @@ var EventContainer = function (props) {
73
83
  startDate: (0, moment_1.default)(time.startDate).format(Enum_1.DATE_FORMAT),
74
84
  endDate: (0, moment_1.default)(time.endDate).format(Enum_1.DATE_FORMAT),
75
85
  timelineType: Enum_2.TimelineType.Day,
76
- campaignAdGroups: [
77
- __assign({ campaignId: campaignId }, ids),
78
- ],
86
+ campaignAdGroups: [__assign({ campaignId: campaignId }, ids)],
79
87
  analyticGroupBies: [
80
88
  Enum_2.AnalyticGroupBy.GbEventLabel,
81
89
  Enum_2.AnalyticGroupBy.GbTimeline,
@@ -86,26 +94,69 @@ var EventContainer = function (props) {
86
94
  .then(function (res) { return setEventData((0, Util_1.convertEventData)(res)); })
87
95
  .finally(function () { return setIsLoading(false); });
88
96
  };
89
- var exportData = function (time, placeIds, ids) {
90
- var places = placeIds.length ? placesOfCampaign.filter(function (p) {
91
- return placeIds.includes(p.placeId);
92
- }) : placesOfCampaign;
93
- client
97
+ // Hàm này được tách riêng để có thể gọi từ callback của PasswordDialog
98
+ var handleExportWithParams = function (time, placeIds, ids, campaignPassword) {
99
+ var places = placeIds.length
100
+ ? placesOfCampaign.filter(function (p) { return placeIds.includes(p.placeId); })
101
+ : placesOfCampaign;
102
+ return client
94
103
  .campaignStatisticGetEvents({
95
104
  startDate: (0, moment_1.default)(time.startDate).format(Enum_1.DATE_FORMAT),
96
105
  endDate: (0, moment_1.default)(time.endDate).format(Enum_1.DATE_FORMAT),
97
106
  timelineType: Enum_2.TimelineType.Day,
98
- campaignAdGroups: [
99
- __assign({ campaignId: campaignId }, ids),
100
- ],
107
+ campaignAdGroups: [__assign({ campaignId: campaignId }, ids)],
101
108
  analyticGroupBies: Object.values(Enum_2.AnalyticGroupBy).filter(function (g) { return !isNaN(Number(g)); }),
102
109
  ignoredEventLabels: Object.values(Enum_1.BaseEvent),
103
110
  placeIds: placeIds,
111
+ campaignPasswords: [
112
+ {
113
+ campaignId: campaignId,
114
+ password: campaignPassword,
115
+ },
116
+ ],
104
117
  })
105
118
  .then(function (res) {
119
+ setOpenPasswordDialog(false);
120
+ setErrorExport(undefined); // Reset error message on successful export
106
121
  (0, exportFile_1.downloadWithDataSet)("export_analytic_event_campaign_".concat(campaignId), (0, Util_1.convertToExportData)(res, places));
122
+ })
123
+ .catch(function (error) {
124
+ var _a;
125
+ if ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data.includes('Invalid password')) {
126
+ setErrorExport(t('Campaign.Password.ErrorMessage'));
127
+ }
107
128
  });
108
129
  };
109
- return ((0, jsx_runtime_1.jsx)(component_1.default, { startDate: startDate, endDate: endDate, subCampaigns: subCampaigns, isLoading: isLoading, eventData: eventData, getEventData: getEventData, exportData: exportData, domains: domains }));
130
+ var exportData = function (time, placeIds, ids) {
131
+ // Lưu lại các tham số xuất dữ liệu để sử dụng sau khi xác thực mật khẩu
132
+ setCurrentExportParams({ time: time, placeIds: placeIds, ids: ids });
133
+ // Check if campaign has password protection
134
+ if ((campaignInfo === null || campaignInfo === void 0 ? void 0 : campaignInfo.password) && campaignInfo.hasPassword) {
135
+ setOpenPasswordDialog(true);
136
+ // Return a promise that will be resolved by the dialog callbacks
137
+ return new Promise(function (resolve) {
138
+ // This promise will be handled by the dialog callbacks
139
+ // The actual export will happen in the onConfirm callback if password is correct
140
+ resolve(true);
141
+ });
142
+ }
143
+ else {
144
+ // No password required
145
+ return handleExportWithParams(time, placeIds, ids);
146
+ }
147
+ };
148
+ // Xử lý khi xác nhận mật khẩu thành công
149
+ var handlePasswordConfirm = function (password) {
150
+ // setOpenPasswordDialog(false)
151
+ if (password && currentExportParams) {
152
+ var time = currentExportParams.time, placeIds = currentExportParams.placeIds, ids = currentExportParams.ids;
153
+ handleExportWithParams(time, placeIds, ids, password);
154
+ }
155
+ };
156
+ var resetErrorExport = function () {
157
+ if (errrorExport) // Only reset if there is an error
158
+ setErrorExport(undefined);
159
+ };
160
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(component_1.default, { startDate: startDate, endDate: endDate, subCampaigns: subCampaigns, isLoading: isLoading, eventData: eventData, getEventData: getEventData, exportData: exportData, domains: domains }), (0, jsx_runtime_1.jsx)(PasswordDialog_1.default, { open: openPasswordDialog, onConfirm: handlePasswordConfirm, onCancel: function () { return setOpenPasswordDialog(false); }, errorExport: errrorExport, resetErrorExport: resetErrorExport })] }));
110
161
  };
111
162
  exports.default = EventContainer;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  interface Props {
3
3
  onSubmit: (value: string) => void;
4
+ loading?: boolean;
4
5
  }
5
6
  declare const SplitButtonExportType: React.FC<Props>;
6
7
  export default SplitButtonExportType;
@@ -20,13 +20,25 @@ var material_1 = require("@mui/material");
20
20
  var ArrowDropDown_1 = __importDefault(require("@mui/icons-material/ArrowDropDown"));
21
21
  var common_1 = require("./common");
22
22
  var react_i18next_1 = require("react-i18next");
23
- var options = Object.values(common_1.EXPORT_TYPES).map(function (type, idx) { return type; });
23
+ var i18n_1 = __importDefault(require("../../../../i18n"));
24
+ var lab_1 = require("@mui/lab");
25
+ var Context_1 = __importDefault(require("./Context"));
24
26
  var SplitButtonExportType = function (props) {
25
- var onSubmit = props.onSubmit;
27
+ var onSubmit = props.onSubmit, loading = props.loading;
28
+ var services = (0, Context_1.default)().services;
26
29
  var _a = react_1.default.useState(false), open = _a[0], setOpen = _a[1];
27
30
  var anchorRef = react_1.default.useRef(null);
28
31
  var _b = react_1.default.useState(0), selectedIndex = _b[0], setSelectedIndex = _b[1];
29
- var t = (0, react_i18next_1.useTranslation)().t;
32
+ var options = react_1.default.useMemo(function () {
33
+ return Object.values(common_1.EXPORT_TYPES)
34
+ .map(function (type, idx) { return type; })
35
+ .filter(function (type) {
36
+ return services.domainsGetAll ? true : type !== 'Domain';
37
+ });
38
+ },
39
+ // eslint-disable-next-line react-hooks/exhaustive-deps
40
+ []);
41
+ var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
30
42
  var handleClick = function () {
31
43
  onSubmit(options[selectedIndex]);
32
44
  };
@@ -49,8 +61,9 @@ var SplitButtonExportType = function (props) {
49
61
  Domain: t("Campaign.ExportType.Domain"),
50
62
  Location: t('Campaign.ExportType.Location'),
51
63
  LocationGroup: t('Campaign.ExportType.LocationGroup'),
64
+ Ad: t('Campaign.ExportType.Ad'),
52
65
  };
53
- 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, { variant: "outlined", color: "inherit", ref: anchorRef, "aria-label": "split button", children: [(0, jsx_runtime_1.jsx)(material_1.Button, { onClick: handleClick, 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
+ 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) {
54
67
  var TransitionProps = _a.TransitionProps, placement = _a.placement;
55
68
  return ((0, jsx_runtime_1.jsx)(material_1.Grow, __assign({}, TransitionProps, { style: {
56
69
  transformOrigin: placement === 'bottom'
@@ -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
  }
@@ -27,7 +27,10 @@ var getTime = function (subCampaigns) {
27
27
  exports.getTime = getTime;
28
28
  var extractEvent = function (eventLabel) {
29
29
  if (eventLabel === void 0) { eventLabel = ''; }
30
- var _a = eventLabel.match(/^(\d+)_([\s\S]*)$/) || [], view = _a[1], eventName = _a[2];
30
+ if (!eventLabel) {
31
+ throw new Error('Event label is required');
32
+ }
33
+ var _a = eventLabel.match(/^(\d+)_([\s\S]*)$/) || ['', '1', eventLabel], view = _a[1], eventName = _a[2];
31
34
  return { view: view, eventName: eventName };
32
35
  };
33
36
  exports.extractEvent = extractEvent;
@@ -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
  };
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  var jsx_runtime_1 = require("react/jsx-runtime");
4
7
  var react_i18next_1 = require("react-i18next");
5
8
  var material_1 = require("@mui/material");
6
9
  var react_1 = require("react");
7
10
  var container_1 = require("./container");
11
+ var i18n_1 = __importDefault(require("../../../../i18n"));
8
12
  var color = ['inherit', 'primary'];
9
13
  var variant = ['outlined', 'contained'];
10
14
  var TabStatistic = function (props) {
11
- var t = (0, react_i18next_1.useTranslation)().t;
15
+ var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
12
16
  var tabIndex = props.tabIndex, onChangeTab = props.onChangeTab, tabPanel = props.tabPanel, isNetwork = props.isNetwork;
13
17
  var translationText = (0, react_1.useMemo)(function () { return ({
14
18
  analytic: t('Campaign.Analytic'),
@@ -19,7 +23,7 @@ var TabStatistic = function (props) {
19
23
  var handleChangeTab = function (event) {
20
24
  onChangeTab(Number(event.target.tabIndex));
21
25
  };
22
- return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, sx: { padding: function (theme) { return theme.spacing(2); } }, className: "ahihu", children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", sx: {
26
+ return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, sx: { padding: function (theme) { return theme.spacing(2); } }, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", sx: {
23
27
  marginTop: function (theme) { return theme.spacing(1); },
24
28
  marginLeft: function (theme) { return theme.spacing(2); },
25
29
  }, children: translationText.title }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.ButtonGroup, { sx: {
@@ -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
  };
@@ -136,6 +136,7 @@ function AdList(props) {
136
136
  setAdOpen({
137
137
  subCampaignId: newAd.campaignGroupId,
138
138
  adId: newAd.id,
139
+ loginId: newAd.loginId,
139
140
  });
140
141
  handleChangeAdStatus(newAd, (0, Utils_1.campaignAdValid)(newAd));
141
142
  }
@@ -269,6 +270,7 @@ function AdList(props) {
269
270
  ? ads.map(function (ad) { return ({
270
271
  subCampaignId: ad.campaignGroupId,
271
272
  adId: ad.id,
273
+ loginId: ad.loginId,
272
274
  }); })
273
275
  : [];
274
276
  });
@@ -283,7 +285,7 @@ function AdList(props) {
283
285
  } }, getDatePropsForWeight()));
284
286
  }, "aria-label": "weight", children: (0, jsx_runtime_1.jsx)(AvTimer_1.default, { fontSize: "small" }) }) }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: translationText.advanced, children: (0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: function () {
285
287
  return setIsAdvancedDrawerOpen(true);
286
- }, "aria-label": "advanced", disabled: hasClassC, children: (0, jsx_runtime_1.jsx)(StarHalf_1.default, { fontSize: "small" }) }) }), isAdvancedDrawerOpen && ((0, jsx_runtime_1.jsx)(Advanced_1.default, { service: service, isOpen: isAdvancedDrawerOpen, onClose: function () {
288
+ }, "aria-label": "advanced", disabled: hasClassC, children: (0, jsx_runtime_1.jsx)(StarHalf_1.default, { fontSize: "small" }) }) }), isAdvancedDrawerOpen && ((0, jsx_runtime_1.jsx)(Advanced_1.default, { loginIds: Array.from(new Set(adSelected.map(function (x) { return x.loginId; }))), service: service, isOpen: isAdvancedDrawerOpen, onClose: function () {
287
289
  return setIsAdvancedDrawerOpen(false);
288
290
  }, onChange: function (setStateAction) {
289
291
  return onChange(adSelected, function (preCampaignAd) {
@@ -339,13 +341,14 @@ function AdList(props) {
339
341
  {
340
342
  subCampaignId: ad.campaignGroupId,
341
343
  adId: ad.id,
344
+ loginId: ad.loginId,
342
345
  },
343
346
  ]);
344
347
  });
345
348
  } }, idx));
346
349
  }) })] })] }), open &&
347
350
  (0, jsx_runtime_1.jsx)(PreviewButton_1.default, { anchorEl: anchorEl, open: open, domainIds: previewId.domainIds, handlePreviewClose: handlePreviewClose, handlePreviewDomain: function (event, domainId) {
348
- handlePreview(event, ads.find(function (x) { return x.loginId === previewId.loginId; }), domainId);
351
+ handlePreview(event, ads.find(function (x) { return x.loginId === previewId.loginId && x.welcomeId === previewId.welcomeId; }), domainId);
349
352
  // handlePreview(previewId, domainId)
350
353
  }, service: service })] }));
351
354
  }
@@ -185,7 +185,7 @@ function AdRow(props) {
185
185
  action: onDelete,
186
186
  name: translationText.delete,
187
187
  },
188
- ]), true), size: "medium" }), (0, jsx_runtime_1.jsxs)("div", { onClick: function (e) { return e.stopPropagation(); }, children: [(0, jsx_runtime_1.jsx)(material_1.Snackbar, { open: openCopiedMessage, autoHideDuration: 2000, onClose: function () { return setOpenCopiedMessage(false); }, message: translationText.copied }), showTheSource && ((0, jsx_runtime_1.jsx)(ShowTheSource_1.default, { isOpen: showTheSource, onClose: function () { return setShowTheSource(false); }, loginId: ad.loginId, welcomeId: ad.welcomeId })), isAdvancedDrawerOpen && ((0, jsx_runtime_1.jsx)(Advanced_1.default, { service: service, isOpen: isAdvancedDrawerOpen, onClose: function () { return setIsAdvancedDrawerOpen(false); }, initialCampaignAdAdvanced: ad.advanced, onChange: function (setStateAction) {
188
+ ]), true), size: "medium" }), (0, jsx_runtime_1.jsxs)("div", { onClick: function (e) { return e.stopPropagation(); }, children: [(0, jsx_runtime_1.jsx)(material_1.Snackbar, { open: openCopiedMessage, autoHideDuration: 2000, onClose: function () { return setOpenCopiedMessage(false); }, message: translationText.copied }), showTheSource && ((0, jsx_runtime_1.jsx)(ShowTheSource_1.default, { isOpen: showTheSource, onClose: function () { return setShowTheSource(false); }, loginId: ad.loginId, welcomeId: ad.welcomeId })), isAdvancedDrawerOpen && ((0, jsx_runtime_1.jsx)(Advanced_1.default, { service: service, isOpen: isAdvancedDrawerOpen, onClose: function () { return setIsAdvancedDrawerOpen(false); }, loginIds: [ad.loginId], initialCampaignAdAdvanced: ad.advanced, onChange: function (setStateAction) {
189
189
  return onChange(function (preCampaignAd) {
190
190
  return (__assign(__assign({}, preCampaignAd), { advanced: typeof setStateAction ===
191
191
  'function'
@@ -200,6 +200,6 @@ function AdRow(props) {
200
200
  paddingBottom: 0,
201
201
  paddingTop: 0,
202
202
  borderBottomWidth: open ? 1 : 0,
203
- }, colSpan: 3, children: (0, jsx_runtime_1.jsx)(material_1.Collapse, { in: open, timeout: "auto", unmountOnExit: true, children: (0, jsx_runtime_1.jsx)(material_1.Box, { margin: 1, children: (0, jsx_runtime_1.jsx)(AdDetail_1.default, __assign({ ad: ad, onChange: onChange }, other)) }) }) })] })] }));
203
+ }, colSpan: 3, children: (0, jsx_runtime_1.jsx)(material_1.Collapse, { in: open, timeout: "auto", unmountOnExit: true, children: (0, jsx_runtime_1.jsx)(material_1.Box, { margin: 1, sx: { height: '416px' }, children: (0, jsx_runtime_1.jsx)(AdDetail_1.default, __assign({ ad: ad, onChange: onChange }, other)) }) }) })] })] }));
204
204
  }
205
205
  exports.default = AdRow;
@@ -63,6 +63,7 @@ var AddOrEditRule = function (props) {
63
63
  _a[Utils_1.RuleType.TargetOS] = t('Campaign.RuleType.TargetOS'),
64
64
  _a[Utils_1.RuleType.TargetDevice] = t('Campaign.RuleType.TargetDevice'),
65
65
  _a[Utils_1.RuleType.RetargetMacAddress] = t('Campaign.RuleType.RetargetMacAddress'),
66
+ _a[Utils_1.RuleType.Authentication] = t('Campaign.RuleType.Engagement'),
66
67
  _a),
67
68
  save: t('Common.Save'),
68
69
  invalidData: t('Common.InvalidData'),
@@ -90,6 +91,9 @@ var AddOrEditRule = function (props) {
90
91
  eventLabel: Boolean(rule.parameter &&
91
92
  rule.parameter.eventLabel &&
92
93
  rule.parameter.eventLabel.length > 0),
94
+ viewNumber: Boolean(rule.parameter &&
95
+ rule.parameter.viewNumber &&
96
+ (0, Helpers_1.validateNumber)(rule.parameter.viewNumber)),
93
97
  };
94
98
  case Utils_1.RuleType.TargetGender:
95
99
  return {
@@ -160,6 +164,8 @@ var AddOrEditRule = function (props) {
160
164
  return ((0, jsx_runtime_1.jsx)(RuleForm_1.TargetDevice, { valids: valids, rule: currentRule, onChange: handleOnChange, deviceInfoGetAllRuleDevices: service === null || service === void 0 ? void 0 : service.deviceInfoGetAllRuleDevices }));
161
165
  case Utils_1.RuleType.RetargetMacAddress:
162
166
  return ((0, jsx_runtime_1.jsx)(RuleForm_1.RetargetMacAddress, { valids: valids, rule: currentRule, onChange: handleOnChange, remarketingListGetAll: service === null || service === void 0 ? void 0 : service.remarketingListGetAll }));
167
+ case Utils_1.RuleType.Authentication:
168
+ return ((0, jsx_runtime_1.jsx)(RuleForm_1.AuthenCation, { valids: valids, rule: currentRule, onChange: handleOnChange }));
163
169
  default:
164
170
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
165
171
  }
@@ -0,0 +1,8 @@
1
+ import { AdvancedRule } from '../AddOrEditRule';
2
+ interface Props {
3
+ rule: AdvancedRule;
4
+ valids: any;
5
+ onChange: (rule: AdvancedRule) => void;
6
+ }
7
+ declare const LimitAuthencation: (props: Props) => import("react/jsx-runtime").JSX.Element;
8
+ export default LimitAuthencation;
@@ -0,0 +1,47 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var jsx_runtime_1 = require("react/jsx-runtime");
15
+ var material_1 = require("@mui/material");
16
+ var react_i18next_1 = require("react-i18next");
17
+ var Enum_1 = require("../../../../Enum");
18
+ var LimitAuthencation = function (props) {
19
+ var rule = props.rule, valids = props.valids, onChange = props.onChange;
20
+ var t = (0, react_i18next_1.useTranslation)().t;
21
+ var handleChange = function (fieldName, fieldValue) {
22
+ var _a;
23
+ onChange(__assign(__assign({}, rule), (_a = {}, _a[fieldName] = fieldValue, _a)));
24
+ };
25
+ var handleChangeParameter = function (fieldName, fieldValue) {
26
+ var _a;
27
+ handleChange('parameter', __assign(__assign({}, rule.parameter), (_a = {}, _a[fieldName] = fieldValue, _a)));
28
+ };
29
+ var translationText = {
30
+ operator: t('Campaign.Operator'),
31
+ period: t('Campaign.Period'),
32
+ value: t('Campaign.Detail.Value'),
33
+ periodHelperText: t('Campaign.PeriodHelperText'),
34
+ helperText: t('Common.Required'),
35
+ };
36
+ return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: 'operator', variant: "standard", name: 'operator', select: true, fullWidth: true, label: translationText.operator, value: rule.operator, onChange: function (e) { return handleChange('operator', e.target.value); }, children: Object.entries(Enum_1.EnumOperator).map(function (_a) {
37
+ var key = _a[0], val = _a[1];
38
+ return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: val.id, children: val.text }, val.id));
39
+ }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "value", name: "value", variant: "standard", type: "number", fullWidth: true, label: translationText.value, value: rule.value, onChange: function (e) { return handleChange('value', e.target.value); }, error: valids && !valids.value, helperText: valids && !valids.value
40
+ ? translationText.helperText
41
+ : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "period", variant: "standard", name: "period", type: "number", fullWidth: true, label: translationText.period, value: rule.parameter.period, onChange: function (e) {
42
+ return handleChangeParameter('period', e.target.value);
43
+ }, error: valids && !valids.period, helperText: valids && !valids.period
44
+ ? translationText.helperText
45
+ : translationText.periodHelperText }) })] }));
46
+ };
47
+ exports.default = LimitAuthencation;
@@ -10,41 +10,87 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
13
16
  Object.defineProperty(exports, "__esModule", { value: true });
14
17
  var jsx_runtime_1 = require("react/jsx-runtime");
15
18
  var material_1 = require("@mui/material");
19
+ var Hooks_1 = __importDefault(require("../../../../../../ACM-AXN/Campaign/Hooks"));
20
+ var AWING_1 = require("../../../../../../AWING");
21
+ var Hooks_2 = require("../../../../../../AWING/Hooks");
22
+ var lodash_1 = __importDefault(require("lodash"));
23
+ var react_1 = __importDefault(require("react"));
16
24
  var react_i18next_1 = require("react-i18next");
25
+ var recoil_1 = require("recoil");
17
26
  var Enum_1 = require("../../../../Enum");
27
+ var atoms_1 = require("../../atoms");
18
28
  var LimitEvent = function (props) {
19
- var _a, _b;
29
+ var _a, _b, _c, _d, _e, _f;
20
30
  var rule = props.rule, valids = props.valids, onChange = props.onChange;
21
31
  var t = (0, react_i18next_1.useTranslation)().t;
32
+ var loginPageIds = (0, recoil_1.useRecoilValue)(atoms_1.campaignLoginIdState);
33
+ var service = (0, Hooks_1.default)().service;
22
34
  var handleChange = function (fieldName, fieldValue) {
23
35
  var _a;
24
36
  onChange(__assign(__assign({}, rule), (_a = {}, _a[fieldName] = fieldValue, _a)));
25
37
  };
38
+ var _g = (0, Hooks_2.useGetData)([loginPageIds], service.pagesGetPageViewEventByPageIds), data = _g.data, isLoading = _g.isLoading;
39
+ var eventSelected = react_1.default.useMemo(function () {
40
+ return (0, lodash_1.default)(data)
41
+ .groupBy(function (d) { return "".concat(d.viewNumber, "_").concat(d.event); })
42
+ .filter(function (value) {
43
+ return !lodash_1.default.difference(loginPageIds, value.map(function (v) { return v.pageId; })).length;
44
+ }).flatten()
45
+ .uniqBy(function (d) { return "".concat(d.viewNumber, "_").concat(d.event); })
46
+ .groupBy('event')
47
+ .value();
48
+ }, [data, loginPageIds]);
49
+ var viewNumberSelected = react_1.default.useMemo(function () {
50
+ var _a, _b, _c;
51
+ return ((_a = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _a === void 0 ? void 0 : _a.eventLabel)
52
+ ? (_c = eventSelected[(_b = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _b === void 0 ? void 0 : _b.eventLabel]) === null || _c === void 0 ? void 0 : _c.sort(function (a, b) { return a.viewNumber - b.viewNumber; })
53
+ : [];
54
+ }, [eventSelected, (_a = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _a === void 0 ? void 0 : _a.eventLabel]);
26
55
  var handleChangeParameter = function (fieldName, fieldValue) {
27
- var _a;
28
- handleChange('parameter', __assign(__assign({}, rule.parameter), (_a = {}, _a[fieldName] = fieldValue, _a)));
56
+ var _a, _b;
57
+ var _c, _d;
58
+ if (fieldName === 'eventLabel') {
59
+ var viewNumber = undefined;
60
+ if (((_c = eventSelected[fieldValue]) === null || _c === void 0 ? void 0 : _c.length) === 1) {
61
+ viewNumber = (_d = eventSelected[fieldValue]) === null || _d === void 0 ? void 0 : _d.at(-1).viewNumber;
62
+ }
63
+ handleChange('parameter', __assign(__assign({}, rule.parameter), (_a = { viewNumber: viewNumber }, _a[fieldName] = fieldValue, _a)));
64
+ return;
65
+ }
66
+ handleChange('parameter', __assign(__assign({}, rule.parameter), (_b = {}, _b[fieldName] = fieldValue, _b)));
29
67
  };
30
68
  var translationText = {
31
69
  eventLabel: t('Campaign.Detail.EventLabel'),
70
+ viewNumber: t('Campaign.Detail.ViewNumber'),
32
71
  operator: t('Campaign.Operator'),
33
72
  period: t('Campaign.Period'),
34
73
  value: t('Campaign.Detail.Value'),
35
74
  periodHelperText: t('Campaign.PeriodHelperText'),
36
75
  helperText: t('Common.Required'),
37
76
  };
38
- return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "eventLabel", name: "eventLabel", variant: "standard", fullWidth: true, label: translationText.eventLabel, value: (_a = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _a === void 0 ? void 0 : _a.eventLabel, onChange: function (e) {
77
+ return isLoading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "eventLabel", name: "eventLabel", variant: "standard", fullWidth: true, select: true, label: translationText.eventLabel, value: (_b = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _b === void 0 ? void 0 : _b.eventLabel, onChange: function (e) {
39
78
  return handleChangeParameter('eventLabel', e.target.value);
40
79
  }, error: valids && !valids.eventLabel, helperText: valids && !valids.eventLabel
41
80
  ? translationText.helperText
42
- : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: 'operator', variant: "standard", name: 'operator', select: true, fullWidth: true, label: translationText.operator, value: rule === null || rule === void 0 ? void 0 : rule.operator, onChange: function (e) { return handleChange('operator', e.target.value); }, children: Object.entries(Enum_1.EnumOperator).map(function (_a) {
81
+ : '', children: Object.keys(eventSelected).map(function (event, index) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: event, children: event }, index)); }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "viewNumber", name: "viewNumber", variant: "standard", disabled: !((_c = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _c === void 0 ? void 0 : _c.eventLabel), required: true, select: true, fullWidth: true, label: translationText.viewNumber, value: (_e = (_d = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _d === void 0 ? void 0 : _d.viewNumber) !== null && _e !== void 0 ? _e : "", onChange: function (e) {
82
+ return handleChangeParameter('viewNumber', e.target.value);
83
+ }, error: valids && !valids.viewNumber, helperText: valids && !valids.viewNumber
84
+ ? translationText.helperText
85
+ : '', children: viewNumberSelected.map(function (_a) {
86
+ var viewNumber = _a.viewNumber;
87
+ return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: viewNumber, children: viewNumber }, viewNumber));
88
+ }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: 'operator', variant: "standard", name: 'operator', select: true, fullWidth: true, label: translationText.operator, value: rule === null || rule === void 0 ? void 0 : rule.operator, onChange: function (e) { return handleChange('operator', e.target.value); }, children: Object.entries(Enum_1.EnumOperator).map(function (_a) {
43
89
  var key = _a[0], val = _a[1];
44
90
  return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: val.id, children: val.text }, val.id));
45
91
  }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "value", name: "value", variant: "standard", type: "number", fullWidth: true, label: translationText.value, value: rule === null || rule === void 0 ? void 0 : rule.value, onChange: function (e) { return handleChange('value', e.target.value); }, error: valids && !valids.value, helperText: valids && !valids.value
46
92
  ? translationText.helperText
47
- : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { variant: "standard", id: "period", name: "period", type: "number", fullWidth: true, label: translationText.period, value: (_b = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _b === void 0 ? void 0 : _b.period, onChange: function (e) {
93
+ : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { variant: "standard", id: "period", name: "period", type: "number", fullWidth: true, label: translationText.period, value: (_f = rule === null || rule === void 0 ? void 0 : rule.parameter) === null || _f === void 0 ? void 0 : _f.period, onChange: function (e) {
48
94
  return handleChangeParameter('period', e.target.value);
49
95
  }, error: valids && !valids.period, helperText: translationText.periodHelperText }) })] }));
50
96
  };
@@ -39,9 +39,9 @@ var TargetOSContainer = function (props) {
39
39
  if (!rule ||
40
40
  !osVerList.some(function (x) { return x.value === rule.value; }) ||
41
41
  !osVerList.some(function (x) { return x.osName === rule.parameter.os; })) {
42
- onChange(__assign(__assign({}, rule), { value: osVerList[0].value, parameter: JSON.stringify({
42
+ onChange(__assign(__assign({}, rule), { value: osVerList[0].value, parameter: {
43
43
  os: osVerList[0].osName,
44
- }) }));
44
+ } }));
45
45
  }
46
46
  });
47
47
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -6,3 +6,4 @@ export { default as TargetAge } from './TargetAge';
6
6
  export { default as TargetOS } from './TargetOS';
7
7
  export { default as TargetDevice } from './TargetDevice';
8
8
  export { default as RetargetMacAddress } from './RetargetMacAddress';
9
+ export { default as AuthenCation } from './Authentication';