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
@@ -1,9 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { AlertColor } from '@mui/material';
3
3
  import { CampaignType } from './Utils';
4
- import { AdType, CampaignPriority, CampaignRuleType, CampaignTicket, DirectoryRoot, Operator } from './Enum';
4
+ import { AdType, CampaignPriority, CampaignRuleType, CampaignStatus, DirectoryRoot, Operator } from './Enum';
5
5
  import { PrmissionService } from '../Permission/Types';
6
- import { PageService } from '../Page/Types';
6
+ import { PageService, PageViewEvent } from '../Page/Types';
7
7
  import { BaseChartComponent } from 'react-chartjs-2/dist/types';
8
8
  import { Timestamp } from '../../ACM-AXN/Common/Types';
9
9
  import { CampaignAnalyticService } from './CreateOrEdit/TabStatistic/Types';
@@ -43,6 +43,13 @@ export type CampaignModel = {
43
43
  campaignGroups: CampaignGroupModel[];
44
44
  campaignAttributes: CampaignAttribute[];
45
45
  campaignPartner?: CampaignPartner;
46
+ campaignWizard?: {
47
+ id?: number;
48
+ campaignId?: string;
49
+ wizardGroupId?: number;
50
+ wizardId?: string;
51
+ };
52
+ campaignApprovals?: CampaignApproval[];
46
53
  };
47
54
  export type Campaign = {
48
55
  id: string;
@@ -50,6 +57,9 @@ export type Campaign = {
50
57
  directoryPath?: string;
51
58
  name: string;
52
59
  createdDate?: Timestamp;
60
+ password?: string;
61
+ canModify?: boolean;
62
+ hasPassword?: boolean;
53
63
  };
54
64
  export type CampaignGroupModel = {
55
65
  campaignGroup: CampaignGroup;
@@ -59,7 +69,7 @@ export type CampaignGroup = {
59
69
  id: number;
60
70
  campaignId?: string;
61
71
  name: string;
62
- ticket: CampaignTicket;
72
+ status: CampaignStatus;
63
73
  /**
64
74
  * Mức độ ưu tiên (A, B, C)
65
75
  */
@@ -69,7 +79,6 @@ export type CampaignGroup = {
69
79
  /**
70
80
  * Đặt chỗ
71
81
  */
72
- isReserved: boolean;
73
82
  /**
74
83
  * Số lượng đã chạy (nếu có)
75
84
  */
@@ -79,6 +88,7 @@ export type CampaignGroup = {
79
88
  */
80
89
  cantBeDelete?: boolean;
81
90
  billingUnit: AnalyticType;
91
+ billingUnitLabel?: string;
82
92
  };
83
93
  export type CampaignAd = {
84
94
  id: number;
@@ -206,6 +216,17 @@ export type CampaignPartner = {
206
216
  email?: string;
207
217
  emailInterval: number;
208
218
  };
219
+ export type CampaignApproval = {
220
+ id?: number;
221
+ campaignId?: string;
222
+ domainId?: string;
223
+ campaignGroupId?: number;
224
+ campaignAdId?: number;
225
+ status: number;
226
+ description: string;
227
+ loginId?: string;
228
+ welcomeId?: string;
229
+ };
209
230
  export type DateRange = {
210
231
  startDate: Date;
211
232
  endDate: Date;
@@ -232,7 +253,6 @@ export interface CampaignFilter {
232
253
  endDate?: string;
233
254
  pageIndex?: number;
234
255
  pageSize?: number;
235
- isReserved?: boolean;
236
256
  placeIds?: string[];
237
257
  priorities?: CampaignPriority[];
238
258
  status?: number[];
@@ -252,6 +272,7 @@ export interface AppHelper {
252
272
  confirm: (okFunction?: () => void, cancelFunction?: () => void, message?: string, title?: string) => void;
253
273
  }
254
274
  interface CampaignService extends PrmissionService {
275
+ pagesGetPageViewEventByPageIds(body: string[] | undefined): Promise<PageViewEvent[]>;
255
276
  directoriesGetByObjectTypeCode: (type: DirectoryRoot) => Promise<Directory[]>;
256
277
  campaignsPaging: (body: CampaignFilter) => Promise<IPagedListOfCampaignModel>;
257
278
  campaignsDelete: (id: string) => Promise<void>;
@@ -259,11 +280,11 @@ interface CampaignService extends PrmissionService {
259
280
  campaignsPut: (id: string, body: CampaignModel) => Promise<void>;
260
281
  campaignsPost: (body: CampaignModel) => Promise<void>;
261
282
  directoriesPost: (body: Directory) => Promise<void>;
262
- pagesPaging: (searchString?: string, pageSize?: number, pageIndex?: number, directoryId?: string) => Promise<any>;
263
283
  pagesGetSources: (loginId?: string, welcomeId?: string) => Promise<any>;
264
284
  deviceInfoGetAllRuleOsVersions: () => Promise<RuleOsVersion[]>;
265
285
  deviceInfoGetAllRuleDevices: () => Promise<RuleDevice[]>;
266
286
  attributesGetByObjectTypeCode?: (objectTypeCode: string) => Promise<Attribute[]>;
287
+ campaignsManualSendMail?: (campaignId: string, body: CampaignApproval[]) => Promise<void>;
267
288
  }
268
289
  export interface CampaignFeatureProps {
269
290
  service: CampaignService & PageService & CampaignAnalyticService;
@@ -272,5 +293,33 @@ export interface CampaignFeatureProps {
272
293
  domainId: string;
273
294
  configs: any;
274
295
  isAxn?: boolean;
296
+ quickWizard?: (p?: any) => JSX.Element;
297
+ }
298
+ interface ICampaignApprovalItemSubRow {
299
+ id?: number;
300
+ name?: string;
301
+ status?: CampaignStatus;
302
+ }
303
+ export interface ICampaignApprovalSubRow {
304
+ subCampaigns: ICampaignApprovalItemSubRow[];
305
+ ads: ICampaignApprovalItemSubRow[];
306
+ }
307
+ export interface ICampaignApprovalTableRow {
308
+ id?: string;
309
+ status: number;
310
+ linkPreview: string;
311
+ subCampaigns?: ICampaignApprovalItemSubRow[];
312
+ loginId?: string;
313
+ welcomeId?: string;
314
+ campaign: ICampaignApprovalSubRow[];
315
+ description: string;
316
+ }
317
+ export interface ICampaignApprovalTable {
318
+ id: string;
319
+ domain: {
320
+ domainName?: string;
321
+ domainId?: string;
322
+ };
323
+ detail: ICampaignApprovalTableRow[];
275
324
  }
276
325
  export {};
@@ -77,6 +77,7 @@ export declare const nextChar: (c: string) => string;
77
77
  export declare const RuleType: {
78
78
  LimitView: number;
79
79
  LimitClick: number;
80
+ Authentication: number;
80
81
  LimitEvent: number;
81
82
  TargetGender: number;
82
83
  TargetAge: number;
@@ -135,3 +136,8 @@ export declare enum adAnalyticType {
135
136
  Spot = 0,
136
137
  Engagements = 1
137
138
  }
139
+ export declare const getCampaignStatus: (isAcm?: boolean) => {
140
+ key: string;
141
+ value: number;
142
+ }[];
143
+ export declare function generateValidPassword(length?: number): string;
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.adAnalyticType = exports.CampaignType = exports.ageRangeValueToText = exports.RuleAgeRange = exports.DEMO_GRAPHIC_AGE_RANGE = exports.getDescription = exports.isAdActive = exports.RuleGender = exports.RuleTypeOfCalculatorAXN = exports.RuleTypeOfCalculator = exports.RuleType = exports.nextChar = exports.getName = exports.getDefaultRule = exports.bonusValid = exports.bookingValid = exports.adsClassCValid = exports.groupClassCValid = exports.groupClassBValid = exports.campaignAdsValid = exports.ruleValid = exports.verifyExpr = exports.advancedValid = exports.weightsValid = exports.placeFilterValid = exports.dateRangeValid = exports.pageValid = exports.campaignAdValid = exports.validateAnalyticTypes = exports.checkValidUrl = exports.tabPartnerValid = exports.tabInfomationValid = exports.attributesValid = exports.nameValid = exports.directoryValid = exports.advancedSearchFormatDate = exports.getCampaignPriority = exports.checkCampaignIsRunning = exports.formatListCampaign = exports.getTotalBooking = exports.checkPriority = exports.getIndexPriority = void 0;
15
+ exports.generateValidPassword = exports.getCampaignStatus = exports.adAnalyticType = exports.CampaignType = exports.ageRangeValueToText = exports.RuleAgeRange = exports.DEMO_GRAPHIC_AGE_RANGE = exports.getDescription = exports.isAdActive = exports.RuleGender = exports.RuleTypeOfCalculatorAXN = exports.RuleTypeOfCalculator = exports.RuleType = exports.nextChar = exports.getName = exports.getDefaultRule = exports.bonusValid = exports.bookingValid = exports.adsClassCValid = exports.groupClassCValid = exports.groupClassBValid = exports.campaignAdsValid = exports.ruleValid = exports.verifyExpr = exports.advancedValid = exports.weightsValid = exports.placeFilterValid = exports.dateRangeValid = exports.pageValid = exports.campaignAdValid = exports.validateAnalyticTypes = exports.checkValidUrl = exports.tabPartnerValid = exports.tabInfomationValid = exports.attributesValid = exports.nameValid = exports.directoryValid = exports.advancedSearchFormatDate = exports.getCampaignPriority = exports.checkCampaignIsRunning = exports.formatListCampaign = exports.getTotalBooking = exports.checkPriority = exports.getIndexPriority = void 0;
16
16
  var Enum_1 = require("./Enum");
17
17
  var Helpers_1 = require("../../Utils/Helpers");
18
18
  var i18n_1 = __importDefault(require("../../i18n"));
@@ -66,7 +66,7 @@ var checkCampaignIsRunning = function (campaignGroupModel) {
66
66
  var localTime = (0, moment_1.default)().format('YYYY-MM-DD');
67
67
  var dateTimeNow = Number((0, moment_1.default)(localTime).format('X'));
68
68
  //Check chỉ cần trong ad có chứa ngày hiện tại là được
69
- var campaignTicket = campaignGroupModel.campaignGroup.ticket === Enum_1.ACTIVE_CAMPAIGN_TICKET;
69
+ var campaignTicket = campaignGroupModel.campaignGroup.status === Enum_1.ACTIVE_CAMPAIGN_TICKET;
70
70
  var campaignContainsCurrentDate = ((_a = campaignGroupModel.ads.filter(function (y) {
71
71
  var _a, _b;
72
72
  return dateTimeNow >= Number((_a = y.startDate) === null || _a === void 0 ? void 0 : _a.seconds) &&
@@ -297,6 +297,7 @@ var getDefaultRule = function (type) {
297
297
  switch (type) {
298
298
  case exports.RuleType.LimitView:
299
299
  case exports.RuleType.LimitClick:
300
+ case exports.RuleType.Authentication:
300
301
  return {
301
302
  type: type,
302
303
  operator: Enum_1.EnumOperator.LessThan.id,
@@ -367,6 +368,7 @@ exports.nextChar = nextChar;
367
368
  exports.RuleType = {
368
369
  LimitView: 0,
369
370
  LimitClick: 1,
371
+ Authentication: 8,
370
372
  LimitEvent: 2,
371
373
  TargetGender: 3,
372
374
  TargetAge: 4,
@@ -439,6 +441,14 @@ var getDescription = function (rule) {
439
441
  value = JSON.parse(value);
440
442
  }
441
443
  switch (rule.type) {
444
+ case exports.RuleType.Authentication:
445
+ {
446
+ var textFormat = i18n_1.default.t('Campaign.Rule.DescriptionFormat.LimitEngagement');
447
+ result += textFormat.replace('{0}', operatorText);
448
+ result = result.replace('{1}', value);
449
+ result = result.replace('{2}', params.period <= 0 ? unlimit : params.period);
450
+ }
451
+ break;
442
452
  case exports.RuleType.LimitView:
443
453
  {
444
454
  var textFormat = i18n_1.default.t('Campaign.Rule.DescriptionFormat.LimitView');
@@ -459,6 +469,7 @@ var getDescription = function (rule) {
459
469
  {
460
470
  var textFormat = i18n_1.default.t('Campaign.Rule.DescriptionFormat.LimitEvent');
461
471
  result += textFormat.replace('{0}', params.eventLabel);
472
+ result = result.replace('{x}', params.viewNumber);
462
473
  result = result.replace('{1}', operatorText);
463
474
  result = result.replace('{2}', value);
464
475
  result = result.replace('{3}', params.period <= 0 ? unlimit : params.period);
@@ -625,3 +636,50 @@ var adAnalyticType;
625
636
  adAnalyticType[adAnalyticType["Spot"] = 0] = "Spot";
626
637
  adAnalyticType[adAnalyticType["Engagements"] = 1] = "Engagements";
627
638
  })(adAnalyticType || (exports.adAnalyticType = adAnalyticType = {}));
639
+ var getCampaignStatus = function (isAcm) {
640
+ var allStatuses = Object.keys(Enum_1.CampaignStatus)
641
+ .filter(function (key) { return isNaN(Number(key)); })
642
+ .map(function (key) { return ({ key: key, value: Enum_1.CampaignStatus[key] }); });
643
+ if (isAcm) {
644
+ return allStatuses.filter(function (status) {
645
+ return status.value === Enum_1.CampaignStatus.Draft ||
646
+ status.value === Enum_1.CampaignStatus.Active ||
647
+ status.value === Enum_1.CampaignStatus.Done;
648
+ });
649
+ }
650
+ else {
651
+ return allStatuses;
652
+ }
653
+ };
654
+ exports.getCampaignStatus = getCampaignStatus;
655
+ function generateValidPassword(length) {
656
+ var _a;
657
+ if (length === void 0) { length = 12; }
658
+ var upperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
659
+ var lowerCase = 'abcdefghijklmnopqrstuvwxyz';
660
+ var numbers = '0123456789';
661
+ var specialChars = '#?!@$%^&*-';
662
+ var allChars = upperCase + lowerCase + numbers + specialChars;
663
+ if (length < 8) {
664
+ throw new Error("Password length must be at least 8 characters.");
665
+ }
666
+ var getRandomChar = function (chars) { return chars[Math.floor(Math.random() * chars.length)]; };
667
+ // Ensure each required character is included at least once
668
+ var requiredChars = [
669
+ getRandomChar(upperCase),
670
+ getRandomChar(lowerCase),
671
+ getRandomChar(numbers),
672
+ getRandomChar(specialChars)
673
+ ];
674
+ // Fill the rest of the password with random characters from all sets
675
+ var remainingLength = length - requiredChars.length;
676
+ var remainingChars = Array.from({ length: remainingLength }, function () { return getRandomChar(allChars); });
677
+ // Combine and shuffle the characters
678
+ var passwordArray = __spreadArray(__spreadArray([], requiredChars, true), remainingChars, true);
679
+ for (var i = passwordArray.length - 1; i > 0; i--) {
680
+ var j = Math.floor(Math.random() * (i + 1));
681
+ _a = [passwordArray[j], passwordArray[i]], passwordArray[i] = _a[0], passwordArray[j] = _a[1];
682
+ }
683
+ return passwordArray.join('');
684
+ }
685
+ exports.generateValidPassword = generateValidPassword;
@@ -52,11 +52,11 @@ var Campaign = function (props) {
52
52
  },
53
53
  {
54
54
  param: Constant_1.Constants.CAMPAIGN_DETAIL + '/:campaignId/:tabName/*',
55
- element: (0, jsx_runtime_1.jsx)(CreateOrEdit_1.default, {}),
55
+ element: (0, jsx_runtime_1.jsx)(CreateOrEdit_1.default, { quickWizard: props.quickWizard }),
56
56
  },
57
57
  {
58
58
  param: Constant_1.Constants.CAMPAIGN_CLONE + '/:campaignId/:tabName/*',
59
- element: (0, jsx_runtime_1.jsx)(CreateOrEdit_1.default, {}),
59
+ element: ((0, jsx_runtime_1.jsx)(CreateOrEdit_1.default, { quickWizard: props.quickWizard, type: Constant_1.Constants.CAMPAIGN_CLONE })),
60
60
  },
61
61
  ];
62
62
  return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Container_1.default, {}), (0, jsx_runtime_1.jsx)(Router_1.Routes, { children: paths.map(function (p) { return ((0, jsx_runtime_1.jsx)(Router_1.Route, { path: p.param, element: p.element }, p.param)); }) })] }));
@@ -74,7 +74,7 @@ function Container() {
74
74
  pl: 2,
75
75
  pr: 2,
76
76
  }, children: (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
77
- width: '55%',
77
+ width: '50%',
78
78
  display: 'flex',
79
79
  flexDirection: 'row',
80
80
  }, children: (0, jsx_runtime_1.jsx)(Filter_1.default, { filterBy: filterBy, onUpdateFilterBy: handleUpdateFilterBy }) }) }), loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsx)(AWING_1.DataGrid, { columns: [
@@ -109,10 +109,8 @@ function Container() {
109
109
  },
110
110
  {
111
111
  field: 'totalRun',
112
- headerName: "".concat(t('CampaignPlan.HasRun'), " (").concat(t('Common.BillingUnit'), ")"),
113
- valueGetter: function (row) {
114
- return (0, Helpers_1.formatNumber)(row.totalRun);
115
- },
112
+ headerName: "".concat(t('CampaignPlan.HasRun')),
113
+ type: 'number',
116
114
  width: 200,
117
115
  TableCellProps: {
118
116
  align: 'right',
@@ -120,7 +118,7 @@ function Container() {
120
118
  },
121
119
  {
122
120
  field: 'totalExpected',
123
- headerName: "".concat(t('CampaignPlan.WillRun'), " (").concat(t('Common.BillingUnit'), ")"),
121
+ headerName: "".concat(t('CampaignPlan.WillRun')),
124
122
  valueGetter: function (row) {
125
123
  return row.isContainClassB
126
124
  ? (0, Helpers_1.formatNumber)(row.totalExpected)
@@ -133,7 +131,7 @@ function Container() {
133
131
  },
134
132
  {
135
133
  field: 'total',
136
- headerName: "".concat(t('CampaignPlan.AmountBooking'), " (+").concat(t('CampaignPlan.BonusText'), ")"),
134
+ headerName: "".concat(t('CampaignPlan.AmountBooking'), " (").concat(t('CampaignPlan.BonusText'), ")"),
137
135
  valueGetter: function (row) {
138
136
  return row.isContainClassB
139
137
  ? (0, Helpers_1.formatNumber)(Number(row.total))
@@ -78,7 +78,7 @@ function CampaignPlanDetail() {
78
78
  },
79
79
  {
80
80
  field: 'totalRun',
81
- headerName: "".concat(t('CampaignPlan.HasRun'), " (").concat(t('Common.BillingUnit'), ")"),
81
+ headerName: "".concat(t('CampaignPlan.HasRun')),
82
82
  type: 'number',
83
83
  TableCellProps: {
84
84
  align: 'right',
@@ -86,7 +86,7 @@ function CampaignPlanDetail() {
86
86
  },
87
87
  {
88
88
  field: 'totalExpected',
89
- headerName: "".concat(t('CampaignPlan.WillRun'), " (").concat(t('Common.BillingUnit'), ")"),
89
+ headerName: "".concat(t('CampaignPlan.WillRun')),
90
90
  valueGetter: function (row) {
91
91
  return row.priority ===
92
92
  Utils_1.CAMPAIGN_PRIORITY.CLASS_B
@@ -99,7 +99,7 @@ function CampaignPlanDetail() {
99
99
  },
100
100
  {
101
101
  field: 'total',
102
- headerName: "".concat(t('CampaignPlan.AmountBooking'), " (+").concat(t('CampaignPlan.BonusText'), ")"),
102
+ headerName: "".concat(t('CampaignPlan.AmountBooking'), " (").concat(t('CampaignPlan.BonusText'), ")"),
103
103
  valueGetter: function (row) {
104
104
  return row.priority ===
105
105
  Utils_1.CAMPAIGN_PRIORITY.CLASS_B
@@ -46,7 +46,7 @@ function Filters(props) {
46
46
  setCampaign(function (oldData) { return __spreadArray(__spreadArray([], oldData, true), data, true); });
47
47
  });
48
48
  // eslint-disable-next-line react-hooks/exhaustive-deps
49
- }, []);
49
+ }, [t]);
50
50
  var reserveTypes = (0, react_1.useMemo)(function () { return [
51
51
  {
52
52
  id: 0,
@@ -15,6 +15,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var react_1 = require("react");
18
19
  var GetApp_1 = __importDefault(require("@mui/icons-material/GetApp"));
19
20
  var material_1 = require("@mui/material");
20
21
  var styles_1 = require("@mui/styles");
@@ -80,11 +81,12 @@ var useStyles = (0, styles_1.makeStyles)(function () { return ({
80
81
  },
81
82
  }); });
82
83
  var Filters = function (_a) {
83
- var _b, _c;
84
- var campaigns = _a.campaigns, handleFilters = _a.handleFilters, loadingFlags = _a.loadingFlags, PlaceMultiSelect = _a.placeMultiSelectComponent, handleExportExcel = _a.handleExportExcel, _d = _a.disabledCampaignFilter, disabledCampaignFilter = _d === void 0 ? false : _d, isFutureDate = _a.isFutureDate;
84
+ var campaigns = _a.campaigns, handleFilters = _a.handleFilters, loadingFlags = _a.loadingFlags, PlaceMultiSelect = _a.placeMultiSelectComponent, handleExportExcel = _a.handleExportExcel, _b = _a.disabledCampaignFilter, disabledCampaignFilter = _b === void 0 ? false : _b, isFutureDate = _a.isFutureDate;
85
85
  var t = (0, react_i18next_1.useTranslation)().t;
86
- var _e = (0, recoil_1.useRecoilState)(Atom_1.CampaignScheduleTypeViewState), typeView = _e[0], setTypeView = _e[1];
87
- var campaignOptions = __assign(__assign({}, campaigns), { 0: { campaignId: 0, name: t('Common.SelectAll') } });
86
+ var campaignOptions = __assign({ 0: { id: '-1', name: t('Common.SelectAll') } }, campaigns);
87
+ var options = lodash_1.default.values(campaignOptions);
88
+ var _c = (0, recoil_1.useRecoilState)(Atom_1.CampaignScheduleTypeViewState), typeView = _c[0], setTypeView = _c[1];
89
+ var _d = (0, react_1.useState)(options[0].id), campaignId = _d[0], setCampaignId = _d[1];
88
90
  var classes = useStyles();
89
91
  var handleChangeDateRange = function (value) {
90
92
  handleFilters('startDate', value.startDate);
@@ -94,7 +96,7 @@ var Filters = function (_a) {
94
96
  setTypeView({
95
97
  type: e.target.value,
96
98
  });
97
- }, children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Constant_1.TypeView.billingUnit, children: t('Common.BillingUnit') }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Constant_1.TypeView.impression, children: t('Common.Impression') })] })] }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: disabledCampaignFilter ? 6 : 3, className: classes.dateRangePicker, children: (0, jsx_runtime_1.jsx)(AWING_1.DateRangePicker, { isShowCalendarInfo: true, isFutureDate: isFutureDate !== null && isFutureDate !== void 0 ? isFutureDate : true, label: "".concat(t('Common.StartDate'), " - ").concat(t('Common.EndDate')), callback: handleChangeDateRange, initialStartDate: (0, moment_1.default)(), initialEndDate: (0, moment_1.default)(), variant: "outlined", textFieldProps: {
99
+ }, children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Constant_1.TypeView.billingUnit, children: t('Campaign.BillingUnit.Title') }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Constant_1.TypeView.impression, children: t('Common.Impression') })] })] }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: disabledCampaignFilter ? 6 : 3, className: classes.dateRangePicker, children: (0, jsx_runtime_1.jsx)(AWING_1.DateRangePicker, { isShowCalendarInfo: true, isFutureDate: isFutureDate !== null && isFutureDate !== void 0 ? isFutureDate : true, label: "".concat(t('Common.StartDate'), " - ").concat(t('Common.EndDate')), callback: handleChangeDateRange, initialStartDate: (0, moment_1.default)(), initialEndDate: (0, moment_1.default)(), variant: "outlined", textFieldProps: {
98
100
  fullWidth: true,
99
101
  className: classes.outlinedInput,
100
102
  }, isDayBlocked: function (day) {
@@ -107,11 +109,13 @@ var Filters = function (_a) {
107
109
  else {
108
110
  return false;
109
111
  }
110
- } }) }), !disabledCampaignFilter && ((0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, children: (0, jsx_runtime_1.jsx)(material_1.Autocomplete, { size: "small", disablePortal: true, id: "combo-box-demo", options: (_c = (_b = lodash_1.default.values(campaignOptions)) === null || _b === void 0 ? void 0 : _b.map(function (obj) { return (__assign({}, obj)); })) !== null && _c !== void 0 ? _c : [], getOptionLabel: function (option) { var _a; return (_a = option.name) !== null && _a !== void 0 ? _a : ''; }, isOptionEqualToValue: function (option, value) {
111
- return option.Id === value.Id;
112
- }, onChange: function (event, campaign) {
113
- handleFilters('campaignId', campaign === null || campaign === void 0 ? void 0 : campaign.id);
114
- }, renderInput: function (params) { return ((0, jsx_runtime_1.jsx)(material_1.TextField, __assign({}, params, { label: t('Schedule.CampaignName'), sx: { backgroundColor: 'white' }, variant: "outlined" }))); }, defaultValue: { Id: 0, name: t('Common.SelectAll') } }) })), (0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: disabledCampaignFilter ? 6 : 3, className: classes.ellipsisPlaceFilter, children: [(0, jsx_runtime_1.jsx)(PlaceMultiSelect, { isDisplayTextField: true, onChange: function (placeIds) {
112
+ } }) }), !disabledCampaignFilter && ((0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, children: (0, jsx_runtime_1.jsx)(material_1.Autocomplete, { size: "small", disablePortal: true, id: "combo-box-demo", options: options !== null && options !== void 0 ? options : [], value: options.find(function (item) { return item.id === campaignId; }), getOptionLabel: function (option) { var _a; return (_a = option.name) !== null && _a !== void 0 ? _a : ''; }, onChange: function (event, campaign) {
113
+ var _a;
114
+ handleFilters('campaignId', (campaign === null || campaign === void 0 ? void 0 : campaign.id) === options[0].id
115
+ ? undefined
116
+ : campaign === null || campaign === void 0 ? void 0 : campaign.id);
117
+ setCampaignId((_a = campaign === null || campaign === void 0 ? void 0 : campaign.id) !== null && _a !== void 0 ? _a : options[0].id);
118
+ }, renderInput: function (params) { return ((0, jsx_runtime_1.jsx)(material_1.TextField, __assign({}, params, { label: t('Schedule.CampaignName'), sx: { backgroundColor: 'white' }, variant: "outlined" }))); } }) })), (0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: disabledCampaignFilter ? 6 : 3, className: classes.ellipsisPlaceFilter, children: [(0, jsx_runtime_1.jsx)(PlaceMultiSelect, { isDisplayTextField: true, onChange: function (placeIds) {
115
119
  return handleFilters('placeIds', placeIds);
116
120
  } }), (0, jsx_runtime_1.jsx)(material_1.Button, { sx: {
117
121
  height: '40px',
@@ -7,16 +7,17 @@ var jsx_runtime_1 = require("react/jsx-runtime");
7
7
  var material_1 = require("@mui/material");
8
8
  var react_i18next_1 = require("react-i18next");
9
9
  var Pagination_1 = __importDefault(require("./Pagination"));
10
+ var i18n_1 = __importDefault(require("../../../../i18n"));
10
11
  var EnhancedPagination = function (_a) {
11
12
  var total = _a.total, children = _a.children, pageSize = _a.pageSize, pageIndex = _a.pageIndex, classes = _a.classes, className = _a.className, colSpan = _a.colSpan, handleChangePage = _a.handleChangePage, handleChangeRowsPerPage = _a.handleChangeRowsPerPage;
12
13
  var t = (0, react_i18next_1.useTranslation)().t;
13
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [children, (0, jsx_runtime_1.jsx)(material_1.TableRow, { children: (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", padding: "none", colSpan: colSpan, children: (0, jsx_runtime_1.jsx)(material_1.TablePagination, { className: "".concat(classes === null || classes === void 0 ? void 0 : classes.root, " ").concat(className), rowsPerPageOptions: [10, 20, 30], component: "div", count: total, rowsPerPage: pageSize, page: pageIndex, ActionsComponent: Pagination_1.default, labelRowsPerPage: t('Paging.RowPerPage'), onPageChange: function (e, newPage) {
14
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [children, (0, jsx_runtime_1.jsx)(material_1.TableRow, { children: (0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", padding: "none", colSpan: colSpan, children: (0, jsx_runtime_1.jsx)(material_1.TablePagination, { className: "".concat(classes === null || classes === void 0 ? void 0 : classes.root, " ").concat(className), rowsPerPageOptions: [10, 20, 30], component: "div", count: total, rowsPerPage: pageSize, page: pageIndex, ActionsComponent: Pagination_1.default, labelRowsPerPage: i18n_1.default.t('Paging.RowPerPage'), onPageChange: function (e, newPage) {
14
15
  handleChangePage(newPage);
15
16
  }, onRowsPerPageChange: function (e) {
16
17
  return handleChangeRowsPerPage(e);
17
18
  }, SelectProps: {
18
19
  inputProps: {
19
- 'aria-label': t('Paging.RowPerPage'),
20
+ 'aria-label': i18n_1.default.t('Paging.RowPerPage'),
20
21
  },
21
22
  native: true,
22
23
  } }) }) })] }));
@@ -101,11 +101,13 @@ var RowAdvanceComponent = function (_a) {
101
101
  ? ''
102
102
  : (0, Helpers_1.formatNumber)(isBillingUnit ? row === null || row === void 0 ? void 0 : row.rateBilling : (_b = row === null || row === void 0 ? void 0 : row.rate) !== null && _b !== void 0 ? _b : 0);
103
103
  var totalView = (row === null || row === void 0 ? void 0 : row.quantity) !== undefined
104
- ? (0, Helpers_1.formatNumber)(isBillingUnit ? row === null || row === void 0 ? void 0 : row.quantityBilling : (_c = row === null || row === void 0 ? void 0 : row.quantity) !== null && _c !== void 0 ? _c : 0)
105
- : (0, Helpers_1.formatNumber)(isBillingUnit
104
+ ? isBillingUnit
105
+ ? row === null || row === void 0 ? void 0 : row.quantityBilling
106
+ : (_c = row === null || row === void 0 ? void 0 : row.quantity) !== null && _c !== void 0 ? _c : 0
107
+ : isBillingUnit
106
108
  ? row === null || row === void 0 ? void 0 : row.totalQuantityBilling
107
- : (_d = row === null || row === void 0 ? void 0 : row.totalQuantity) !== null && _d !== void 0 ? _d : 0);
108
- var ctr = (0, Helpers_1.formatNumber)(((row === null || row === void 0 ? void 0 : row.click) / (row === null || row === void 0 ? void 0 : row.view)) * 100);
109
+ : (_d = row === null || row === void 0 ? void 0 : row.totalQuantity) !== null && _d !== void 0 ? _d : 0;
110
+ var ctr = (0, Helpers_1.formatNumber)(((row === null || row === void 0 ? void 0 : row.click) / (row === null || row === void 0 ? void 0 : row.view)) * 100 || 0);
109
111
  function styledRow(priority) {
110
112
  if ((groupNames === null || groupNames === void 0 ? void 0 : groupNames.length) === 1 && priorityGroupLevel === 1) {
111
113
  return classes.styledSecondaryRow;
@@ -176,7 +178,7 @@ var RowAdvanceComponent = function (_a) {
176
178
  ? ''
177
179
  : totalRate }, item.id));
178
180
  case Enum_1.HEAD_CELL_NAMES.TOTAL:
179
- return ((0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: totalView }, item.id));
181
+ return ((0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: (0, Helpers_1.formatNumber)(totalView) }, item.id));
180
182
  case Enum_1.HEAD_CELL_NAMES.IMPRESSION:
181
183
  return ((0, jsx_runtime_1.jsx)(material_1.TableCell, { align: "right", children: row === null || row === void 0 ? void 0 : row.view }, item.id));
182
184
  case Enum_1.HEAD_CELL_NAMES.AUTHENTICATION:
@@ -44,13 +44,13 @@ var DataSetConfigs = function (exportData, campaigns, places, t, isBilling) {
44
44
  style: { font: { sz: '13' } },
45
45
  },
46
46
  {
47
- value: (0, Helpers_1.formatNumber)(isBilling ? data.rateBilling : data.rate || 0),
47
+ value: isBilling ? (data.rateBilling.toFixed(2) || 0) : (data.rate.toFixed(2) || 0),
48
48
  style: { font: { sz: '13' } },
49
49
  },
50
50
  {
51
- value: (0, Helpers_1.formatNumber)(isBilling
52
- ? data.totalQuantityBilling
53
- : data.totalQuantity || 0),
51
+ value: isBilling
52
+ ? (data.totalQuantityBilling.toFixed(2) || 0)
53
+ : (data.totalQuantity.toFixed(2) || 0),
54
54
  style: { font: { sz: '12' } },
55
55
  },
56
56
  ];
@@ -22,6 +22,7 @@ var DataSetConfigsAXN = function (t, exportData, domains, campaigns, places, isB
22
22
  '#',
23
23
  t('Schedule.Campaign'),
24
24
  t('Schedule.Place'),
25
+ t('Schedule.Domain'),
25
26
  t('Schedule.Date'),
26
27
  "".concat(t('Schedule.Rate'), " (%)"),
27
28
  t('Schedule.Total'),
@@ -46,13 +47,13 @@ var DataSetConfigsAXN = function (t, exportData, domains, campaigns, places, isB
46
47
  style: { font: { sz: '13' } },
47
48
  },
48
49
  {
49
- value: (0, Helpers_1.formatNumber)(isBilling ? data.rateBilling : data.rate || 0),
50
+ value: isBilling ? (data.rateBilling.toFixed(2) || 0) : (data.rate.toFixed(2) || 0),
50
51
  style: { font: { sz: '13' } },
51
52
  },
52
53
  {
53
- value: (0, Helpers_1.formatNumber)(isBilling
54
- ? data.totalQuantityBilling
55
- : data.totalQuantity || 0),
54
+ value: isBilling
55
+ ? (data.totalQuantityBilling.toFixed(2) || 0)
56
+ : (data.totalQuantity.toFixed(2) || 0),
56
57
  style: { font: { sz: '12' } },
57
58
  },
58
59
  ];
@@ -1,3 +1,2 @@
1
- import { IPlaceGroupPermission, ITypeView } from '../interface';
2
- export declare const placeGroupPermissionState: import("recoil").RecoilState<IPlaceGroupPermission>;
1
+ import { ITypeView } from '../interface';
3
2
  export declare const CampaignScheduleTypeViewState: import("recoil").RecoilState<ITypeView>;
@@ -1,13 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CampaignScheduleTypeViewState = exports.placeGroupPermissionState = void 0;
3
+ exports.CampaignScheduleTypeViewState = void 0;
4
4
  var recoil_1 = require("recoil");
5
5
  var Constant_1 = require("../../../ACM-AXN/Common/Constant");
6
6
  // Khi bắt đầu load sẽ thực hiện lấy thông tin placeGroupPermission cho placefilter.
7
- exports.placeGroupPermissionState = (0, recoil_1.atom)({
8
- key: 'PlaceGroupPermissionState',
9
- default: { placeGroups: [], places: [] },
10
- });
11
7
  exports.CampaignScheduleTypeViewState = (0, recoil_1.atom)({
12
8
  key: 'CampaignScheduleTypeViewState',
13
9
  default: { type: Constant_1.TypeView.billingUnit },
@@ -1,5 +1,6 @@
1
1
  declare global {
2
2
  interface Window {
3
+ TOPIC_PREFIX: string;
3
4
  REACT_APP_API_ENDPOINT: string;
4
5
  GOONG_MAP_KEY: string;
5
6
  GOONG_API_KEY: string;
@@ -81,6 +82,8 @@ export declare const Constants: {
81
82
  CAMPAIGN_STATISTICS: string;
82
83
  CAMPAIGN_CONNECT: string;
83
84
  CAMPAIGN_PERMISSION: string;
85
+ CAMPAIGN_APPROVE: string;
86
+ CAMPAIGN_WIZARD: string;
84
87
  CAPTIVE_DOMAIN: any;
85
88
  CAMPAIGN_PREVIEW: string;
86
89
  DOMAIN_PREVIEW: string;
@@ -71,6 +71,8 @@ exports.Constants = {
71
71
  CAMPAIGN_STATISTICS: 'Statistics',
72
72
  CAMPAIGN_CONNECT: 'Connect',
73
73
  CAMPAIGN_PERMISSION: 'Permission',
74
+ CAMPAIGN_APPROVE: 'Approve',
75
+ CAMPAIGN_WIZARD: 'Wizard',
74
76
  CAPTIVE_DOMAIN: window.REACT_APP_CAPTIVE_DOMAIN,
75
77
  CAMPAIGN_PREVIEW: 'Preview/Campaign',
76
78
  DOMAIN_PREVIEW: 'Preview/Domain',
@@ -53,7 +53,12 @@ export declare enum AnalyticGroupBy {
53
53
  GbApMac = 7
54
54
  }
55
55
  export declare enum AnalyticType {
56
- VIEW = 0,// Impression
57
- AUTHENTICATION = 1,// Engagement / Spot
58
- CLICK = 2
56
+ View = 0,// Impression
57
+ Authentication = 1,// Engagement / Spot
58
+ Click = 2,// Final Click
59
+ AuthenticationSuccess = 4
59
60
  }
61
+ export declare const MarkAnalyticTypes: {
62
+ billingUnit: AnalyticType;
63
+ billingUnitLabel: string;
64
+ }[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AnalyticType = exports.AnalyticGroupBy = exports.TimelineType = exports.ShareType = exports.JobTypeEnum = exports.VERIFIED_STATUS = exports.VALID_PROCESS_CODE = exports.TrackingType = exports.PathType = exports.FileTypeCode = exports.PageCode = void 0;
3
+ exports.MarkAnalyticTypes = exports.AnalyticType = exports.AnalyticGroupBy = exports.TimelineType = exports.ShareType = exports.JobTypeEnum = exports.VERIFIED_STATUS = exports.VALID_PROCESS_CODE = exports.TrackingType = exports.PathType = exports.FileTypeCode = exports.PageCode = void 0;
4
4
  var PageCode;
5
5
  (function (PageCode) {
6
6
  PageCode[PageCode["Wlc"] = 0] = "Wlc";
@@ -68,7 +68,22 @@ var AnalyticGroupBy;
68
68
  })(AnalyticGroupBy || (exports.AnalyticGroupBy = AnalyticGroupBy = {}));
69
69
  var AnalyticType;
70
70
  (function (AnalyticType) {
71
- AnalyticType[AnalyticType["VIEW"] = 0] = "VIEW";
72
- AnalyticType[AnalyticType["AUTHENTICATION"] = 1] = "AUTHENTICATION";
73
- AnalyticType[AnalyticType["CLICK"] = 2] = "CLICK";
71
+ AnalyticType[AnalyticType["View"] = 0] = "View";
72
+ AnalyticType[AnalyticType["Authentication"] = 1] = "Authentication";
73
+ AnalyticType[AnalyticType["Click"] = 2] = "Click";
74
+ AnalyticType[AnalyticType["AuthenticationSuccess"] = 4] = "AuthenticationSuccess";
74
75
  })(AnalyticType || (exports.AnalyticType = AnalyticType = {}));
76
+ exports.MarkAnalyticTypes = [
77
+ {
78
+ billingUnit: AnalyticType.Authentication,
79
+ billingUnitLabel: AnalyticType[AnalyticType.Authentication],
80
+ },
81
+ {
82
+ billingUnit: AnalyticType.Click,
83
+ billingUnitLabel: AnalyticType[AnalyticType.Authentication],
84
+ },
85
+ {
86
+ billingUnit: AnalyticType.Click,
87
+ billingUnitLabel: AnalyticType[AnalyticType.Click],
88
+ }
89
+ ];
@@ -4,6 +4,10 @@ export type Timestamp = {
4
4
  seconds: number;
5
5
  nanos: number;
6
6
  };
7
+ export interface CampaignPasswordDTO {
8
+ campaignId?: string;
9
+ password?: string | undefined;
10
+ }
7
11
  export interface IStatisticDTO {
8
12
  startDate: string;
9
13
  endDate: string;
@@ -13,4 +17,5 @@ export interface IStatisticDTO {
13
17
  analyticGroupBies?: AnalyticGroupBy[] | undefined;
14
18
  includedEventLabels?: string[] | undefined;
15
19
  ignoredEventLabels?: string[] | undefined;
20
+ campaignPasswords?: CampaignPasswordDTO[] | undefined;
16
21
  }