awing-library 2.1.156-beta → 2.1.159-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabInfomation.js +2 -2
  2. package/lib/ACM-AXN/GeoFencing/GoongMap/index.d.ts +8 -9
  3. package/lib/ACM-AXN/Page/Container.js +3 -3
  4. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.d.ts +1 -9
  5. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.js +0 -9
  6. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.js +4 -4
  7. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +2 -5
  8. package/lib/ACM-AXN/Page/CreateOrEdit/index.js +2 -2
  9. package/lib/ACM-AXN/Permission/Components/Styles.d.ts +1 -2
  10. package/lib/ACM-AXN/ScheduleCompletionRate/Container.js +15 -15
  11. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.d.ts +14 -9
  12. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.js +19 -18
  13. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRate.js +16 -6
  14. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRateDate.js +17 -8
  15. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.d.ts +2 -1
  16. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.js +23 -49
  17. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.test.js +1 -1
  18. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.d.ts +2 -2
  19. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.js +3 -9
  20. package/lib/ACM-AXN/ScheduleCompletionRate/Types.d.ts +16 -36
  21. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.d.ts +5 -5
  22. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.js +11 -8
  23. package/lib/ACM-AXN/TaskScheduler/CreateOrEdit.js +3 -3
  24. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +2 -2
  25. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +2 -2
  26. package/lib/Commons/Hooks/usePath.js +3 -3
  27. package/package.json +3 -1
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  var jsx_runtime_1 = require("react/jsx-runtime");
41
41
  var material_1 = require("@mui/material");
42
- var immer_1 = __importDefault(require("immer"));
42
+ var immer_1 = require("immer");
43
43
  var lodash_1 = require("lodash");
44
44
  var react_1 = __importStar(require("react"));
45
45
  var react_i18next_1 = require("react-i18next");
@@ -56,7 +56,7 @@ var Infomation = function () {
56
56
  var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
57
57
  (0, react_1.useEffect)(function () {
58
58
  if (!campaign.directoryId) {
59
- setCampaignModel((0, immer_1.default)(function (draft) {
59
+ setCampaignModel((0, immer_1.produce)(function (draft) {
60
60
  var _a;
61
61
  draft.campaign.directoryId = ((_a = (0, lodash_1.minBy)(directories, 'level')) === null || _a === void 0 ? void 0 : _a.directoryId) || '';
62
62
  }));
@@ -11,14 +11,14 @@ declare function GoongMap({ onAddPlace, zoom, radius, limit, defaultGoongMap, ma
11
11
  }): import("react/jsx-runtime").JSX.Element;
12
12
  declare namespace GoongMap {
13
13
  namespace propTypes {
14
- let onAddPlace: PropTypes.Requireable<(...args: any[]) => any>;
15
- let zoom: PropTypes.Requireable<number>;
16
- let radius: PropTypes.Requireable<number>;
17
- let limit: PropTypes.Requireable<number>;
18
- let defaultGoongMap: PropTypes.Requireable<object>;
19
- let marker: PropTypes.Requireable<object>;
20
- let onLoad: PropTypes.Requireable<(...args: any[]) => any>;
21
- let configs: PropTypes.Requireable<object>;
14
+ let onAddPlace: any;
15
+ let zoom: any;
16
+ let radius: any;
17
+ let limit: any;
18
+ let defaultGoongMap: any;
19
+ let marker: any;
20
+ let onLoad: any;
21
+ let configs: any;
22
22
  }
23
23
  namespace defaultProps {
24
24
  export function onAddPlace_1(): void;
@@ -45,4 +45,3 @@ declare namespace GoongMap {
45
45
  export { configs_1 as configs };
46
46
  }
47
47
  }
48
- import PropTypes from "prop-types";
@@ -22,7 +22,7 @@ var PreviewButton_1 = __importDefault(require("../../ACM-AXN/DomainPreview/Previ
22
22
  var lodash_1 = require("lodash");
23
23
  var react_1 = require("react");
24
24
  var react_i18next_1 = require("react-i18next");
25
- var react_router_1 = require("react-router");
25
+ var react_router_dom_1 = require("react-router-dom");
26
26
  var Enum_1 = require("../../ACM-AXN/Campaign/Enum");
27
27
  var AWING_1 = require("../../AWING");
28
28
  var ClassicDrawer_1 = require("../../Commons/Components/ClassicDrawer");
@@ -36,8 +36,8 @@ var PageContainer = function () {
36
36
  var _b = (0, Context_2.default)(), pageCode = _b.pageCode, service = _b.service, domainId = _b.domainId, CONFIGS = _b.configs;
37
37
  var _c = (0, Context_1.useAwing)().appHelper, confirm = _c.confirm, snackbar = _c.snackbar;
38
38
  var t = (0, react_i18next_1.useTranslation)().t;
39
- var navigate = (0, react_router_1.useNavigate)();
40
- var location = (0, react_router_1.useLocation)();
39
+ var navigate = (0, react_router_dom_1.useNavigate)();
40
+ var location = (0, react_router_dom_1.useLocation)();
41
41
  var _d = (0, react_1.useState)(true), loading = _d[0], setLoading = _d[1];
42
42
  var _e = (0, react_1.useState)(true), init = _e[0], setInit = _e[1]; // First time render
43
43
  var _f = (0, react_1.useState)([]), directories = _f[0], setDirectories = _f[1];
@@ -1,10 +1,2 @@
1
- import PropTypes from 'prop-types';
2
- declare const PageTabPanel: {
3
- (props: any): import("react/jsx-runtime").JSX.Element;
4
- propTypes: {
5
- children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
6
- index: PropTypes.Validator<any>;
7
- value: PropTypes.Validator<any>;
8
- };
9
- };
1
+ declare const PageTabPanel: (props: any) => import("react/jsx-runtime").JSX.Element;
10
2
  export default PageTabPanel;
@@ -21,20 +21,11 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  }
22
22
  return t;
23
23
  };
24
- var __importDefault = (this && this.__importDefault) || function (mod) {
25
- return (mod && mod.__esModule) ? mod : { "default": mod };
26
- };
27
24
  Object.defineProperty(exports, "__esModule", { value: true });
28
25
  var jsx_runtime_1 = require("react/jsx-runtime");
29
26
  var material_1 = require("@mui/material");
30
- var prop_types_1 = __importDefault(require("prop-types"));
31
27
  var PageTabPanel = function (props) {
32
28
  var children = props.children, value = props.value, index = props.index, other = __rest(props, ["children", "value", "index"]);
33
29
  return ((0, jsx_runtime_1.jsx)(material_1.Box, __assign({ component: "div", role: "tabpanel", hidden: value !== index, id: "full-width-tabpanel-".concat(index), "aria-labelledby": "full-width-tab-".concat(index) }, other, { children: value === index && (0, jsx_runtime_1.jsx)(material_1.Box, { sx: { '& > div:first-of-type': { padding: function (theme) { return theme.spacing(1); } }, p: 2 }, children: children }) })));
34
30
  };
35
- PageTabPanel.propTypes = {
36
- children: prop_types_1.default.node,
37
- index: prop_types_1.default.any.isRequired,
38
- value: prop_types_1.default.any.isRequired,
39
- };
40
31
  exports.default = PageTabPanel;
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  var jsx_runtime_1 = require("react/jsx-runtime");
41
41
  var Helpers_1 = require("../../../../Utils/Helpers");
42
- var immer_1 = __importDefault(require("immer"));
42
+ var immer_1 = require("immer");
43
43
  var lodash_1 = require("lodash");
44
44
  var react_1 = __importStar(require("react"));
45
45
  var react_i18next_1 = require("react-i18next");
@@ -91,7 +91,7 @@ var TabView = function (_a) {
91
91
  });
92
92
  };
93
93
  var addPageView = function () {
94
- setView((0, immer_1.default)(function (draft) {
94
+ setView((0, immer_1.produce)(function (draft) {
95
95
  var viewsValid = !views
96
96
  .map(function (viewStatus) { return viewStatus.validStatus; })
97
97
  .includes(false);
@@ -109,7 +109,7 @@ var TabView = function (_a) {
109
109
  }));
110
110
  };
111
111
  var deletePageView = function (tabID) {
112
- setView((0, immer_1.default)(function (draft) {
112
+ setView((0, immer_1.produce)(function (draft) {
113
113
  if (draft.views.length === 1)
114
114
  return;
115
115
  draft.views = draft.views
@@ -123,7 +123,7 @@ var TabView = function (_a) {
123
123
  setActiveViewIndex(Number(value));
124
124
  return;
125
125
  }
126
- setView((0, immer_1.default)(function (draf) {
126
+ setView((0, immer_1.produce)(function (draf) {
127
127
  (0, Helpers_1.setObject)(draf, keys, value);
128
128
  }));
129
129
  };
@@ -11,14 +11,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
11
11
  }
12
12
  return to.concat(ar || Array.prototype.slice.call(from));
13
13
  };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
14
  Object.defineProperty(exports, "__esModule", { value: true });
18
15
  exports.getTemplateDatas = exports.updateStateByPageModel = exports.getFieldsValid = exports.convertValueByType = exports.convertTreeArrayToFlatArray = exports.concatKey = exports.composeKey = exports.isObject = exports.isObjectType = void 0;
19
16
  var Enum_1 = require("../../ViewTemplate/Enum");
20
17
  var lodash_1 = require("lodash");
21
- var immer_1 = __importDefault(require("immer"));
18
+ var immer_1 = require("immer");
22
19
  var common_1 = require("../../ViewTemplate/common");
23
20
  var enums_1 = require("../enums");
24
21
  var Helpers_1 = require("../../../Utils/Helpers");
@@ -205,7 +202,7 @@ var objectFieldValid = function (fieldDatas, indexOfField, fieldValue, isSubFiel
205
202
  };
206
203
  function updateStateByPageModel(pageModel) {
207
204
  var page = pageModel.page, commonHtml = pageModel.commonHtml, views = pageModel.views, viewEvents = pageModel.viewEvents;
208
- this.setPageRoot((0, immer_1.default)(function (draft) {
205
+ this.setPageRoot((0, immer_1.produce)(function (draft) {
209
206
  draft.views = views.map(function (view) { return ({
210
207
  templateId: view.templateId,
211
208
  viewDatas: view.viewDatas,
@@ -63,7 +63,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
63
63
  };
64
64
  Object.defineProperty(exports, "__esModule", { value: true });
65
65
  var jsx_runtime_1 = require("react/jsx-runtime");
66
- var immer_1 = __importDefault(require("immer"));
66
+ var immer_1 = require("immer");
67
67
  var react_1 = __importStar(require("react"));
68
68
  var react_i18next_1 = require("react-i18next");
69
69
  var react_router_dom_1 = require("react-router-dom");
@@ -104,7 +104,7 @@ var CreateOrEdit = function (_a) {
104
104
  case 0:
105
105
  if (!(type === enums_1.PathType.CREATE)) return [3 /*break*/, 2];
106
106
  return [4 /*yield*/, service.pagesGenerateId().then(function (res) {
107
- setPageRoot((0, immer_1.default)(function (draf) {
107
+ setPageRoot((0, immer_1.produce)(function (draf) {
108
108
  var _a;
109
109
  draf.page.createdDate = (0, Helpers_1.convertDateTimeToTimestamp)(new Date());
110
110
  draf.page.directoryId = ((_a = (0, lodash_1.minBy)(directories, 'level')) === null || _a === void 0 ? void 0 : _a.directoryId) || '';
@@ -1,3 +1,2 @@
1
- import { SxProps } from '@mui/material';
2
- import { Theme } from '@mui/system';
1
+ import { SxProps, Theme } from '@mui/material';
3
2
  export declare const styles: Record<string, SxProps<Theme>>;
@@ -52,12 +52,19 @@ function Container() {
52
52
  var _a, _b;
53
53
  setLoading(true);
54
54
  service
55
- .scheduleCompletionRatesGet((_a = filter === null || filter === void 0 ? void 0 : filter.startDate) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD'), (_b = filter === null || filter === void 0 ? void 0 : filter.endDate) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD'))
55
+ .scheduleCompletionRatesGet({
56
+ fromDate: (_a = filter === null || filter === void 0 ? void 0 : filter.startDate) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD'),
57
+ toDate: (_b = filter === null || filter === void 0 ? void 0 : filter.endDate) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD'),
58
+ level: 0,
59
+ })
56
60
  .then(function (res) {
57
- var valueNew = (0, Utils_1.converData)(res, type);
61
+ var resNew = res.sort(function (a, b) {
62
+ return a.campaignId.localeCompare(b.campaignId);
63
+ });
64
+ var valueNew = (0, Utils_1.converData)(resNew, type);
58
65
  updateData(valueNew);
59
66
  // Dư liệu mặc định chưa update
60
- setDefaultFullSchedules(res);
67
+ setDefaultFullSchedules(resNew);
61
68
  })
62
69
  .finally(function () {
63
70
  setLoading(false);
@@ -94,7 +101,7 @@ function Container() {
94
101
  var _a = paths.split('.'), _r = _a[0], campaignId = _a[1], groupId = _a[2];
95
102
  navigate("".concat(Constant_1.Constants.DETAIL_PATH, "/").concat(campaignId, "/").concat(groupId));
96
103
  };
97
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_helmet_async_1.HelmetProvider, { children: (0, jsx_runtime_1.jsx)(react_helmet_async_1.Helmet, { children: (0, jsx_runtime_1.jsx)("title", { children: t('ScheduleCompletionRate.Title') }) }) }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h5", component: "h1", color: "inherit", noWrap: true, fontWeight: 'bold', sx: { mb: 2 }, children: t('ScheduleCompletionRate.Title') }), (0, jsx_runtime_1.jsxs)(material_1.Paper, { elevation: 1, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { sx: { pt: 3, pl: 2, pr: 2 }, children: (0, jsx_runtime_1.jsx)(Filter_1.default, { filter: filter, onUpdateFilter: handleUpdateFilter }) }), loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsx)(AWING_1.DataGrid, { columns: [
104
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_helmet_async_1.HelmetProvider, { children: (0, jsx_runtime_1.jsx)(react_helmet_async_1.Helmet, { children: (0, jsx_runtime_1.jsx)("title", { children: t('ScheduleCompletionRate.Title') }) }) }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h5", component: "h1", color: "inherit", noWrap: true, fontWeight: 'bold', sx: { mb: 2 }, children: t('ScheduleCompletionRate.Title') }), (0, jsx_runtime_1.jsxs)(material_1.Paper, { elevation: 1, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { sx: { pt: 3, pl: 2, pr: 2 }, children: (0, jsx_runtime_1.jsx)(Filter_1.default, { filter: filter, onUpdateFilter: handleUpdateFilter, scheduleCompletionRate: defaultFullSchedules }) }), loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsx)(AWING_1.DataGrid, { columns: [
98
105
  {
99
106
  field: '#',
100
107
  headerName: '#',
@@ -105,17 +112,10 @@ function Container() {
105
112
  field: 'campaignName',
106
113
  headerName: t('ScheduleCompletionRate.CampaignName'),
107
114
  valueGetter: function (row) {
108
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("span", { children: [(row === null || row === void 0 ? void 0 : row.campaignId) !== -1
109
- ? (row === null || row === void 0 ? void 0 : row.campaignName) ||
110
- "ID:\n ".concat(row === null || row === void 0 ? void 0 : row.campaignId)
111
- : t('ScheduleCompletionRate.CampaignDefault'), (row === null || row === void 0 ? void 0 : row.isNetWork) && ((0, jsx_runtime_1.jsx)("span", { style: {
112
- backgroundColor: '#c49f47',
113
- color: '#ffffff',
114
- fontSize: '13px',
115
- marginLeft: '4px',
116
- padding: '1px 4px',
117
- borderRadius: '2px',
118
- }, children: "Network" }))] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: {
115
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { children: (row === null || row === void 0 ? void 0 : row.campaignId) !== -1
116
+ ? (row === null || row === void 0 ? void 0 : row.campaignName) ||
117
+ "ID:\n ".concat(row === null || row === void 0 ? void 0 : row.campaignId)
118
+ : t('ScheduleCompletionRate.CampaignDefault') }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: {
119
119
  display: 'flex',
120
120
  flexDirection: 'row',
121
121
  alignItems: 'center',
@@ -1,6 +1,6 @@
1
1
  import { Moment } from 'moment';
2
2
  import { ConvertExcelData } from './Types';
3
- export declare const DataSetConfigs: (exportData: ConvertExcelData[] | ConvertExcelData, t: any, startDate: Moment, endDate: Moment) => {
3
+ export declare const DataSetConfigs: (exportData: ConvertExcelData[] | ConvertExcelData, startDate: Moment, endDate: Moment) => {
4
4
  sheetByCampaign: ({
5
5
  columns: string[];
6
6
  data: (({
@@ -26,7 +26,15 @@ export declare const DataSetConfigs: (exportData: ConvertExcelData[] | ConvertEx
26
26
  };
27
27
  };
28
28
  } | {
29
- value: any;
29
+ value: string;
30
+ style: {
31
+ font: {
32
+ sz: string;
33
+ bold: boolean;
34
+ };
35
+ };
36
+ } | {
37
+ value: number;
30
38
  style: {
31
39
  font: {
32
40
  sz: string;
@@ -35,14 +43,11 @@ export declare const DataSetConfigs: (exportData: ConvertExcelData[] | ConvertEx
35
43
  };
36
44
  })[])[];
37
45
  } | {
38
- columns: any[];
39
- data: string[][];
40
- })[];
41
- sheetCampaignDetail: ({
42
46
  columns: string[];
43
- data: any[][];
44
- } | {
45
- columns: any[];
46
47
  data: string[][];
47
48
  })[];
49
+ sheetCampaignDetail: {
50
+ columns: string[];
51
+ data: (string | number | undefined)[][];
52
+ }[];
48
53
  };
@@ -15,7 +15,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DataSetConfigs = void 0;
16
16
  var lodash_1 = __importDefault(require("lodash"));
17
17
  var moment_1 = __importDefault(require("moment"));
18
- var DataSetConfigs = function (exportData, t, startDate, endDate) {
18
+ var i18n_1 = __importDefault(require("../../i18n"));
19
+ var DataSetConfigs = function (exportData, startDate, endDate) {
19
20
  // check NaN and Infinity
20
21
  var checkNumber = function (value) {
21
22
  return !isNaN(value) && Number.isFinite(value) ? value : 0;
@@ -24,13 +25,13 @@ var DataSetConfigs = function (exportData, t, startDate, endDate) {
24
25
  {
25
26
  columns: [
26
27
  '#',
27
- t('Schedule.CampaignName'),
28
- t('Schedule.StartDate'),
29
- t('Schedule.EndDate'),
30
- t('Schedule.Date'),
31
- t('Schedule.Estimate'),
32
- t('Schedule.Reality'),
33
- "".concat(t('Schedule.CompletionRate'), "(%)"),
28
+ i18n_1.default.t('Schedule.CampaignName'),
29
+ i18n_1.default.t('Schedule.StartDate'),
30
+ i18n_1.default.t('Schedule.EndDate'),
31
+ i18n_1.default.t('Schedule.Date'),
32
+ i18n_1.default.t('Schedule.Estimate'),
33
+ i18n_1.default.t('Schedule.Reality'),
34
+ "".concat(i18n_1.default.t('Schedule.CompletionRate'), "(%)"),
34
35
  ],
35
36
  data: [['', '', '', '', '', '', '', '']],
36
37
  }
@@ -124,7 +125,7 @@ var DataSetConfigs = function (exportData, t, startDate, endDate) {
124
125
  { value: '', style: { font: { sz: '13' } } },
125
126
  { value: '', style: { font: { sz: '13' } } },
126
127
  {
127
- value: t('Schedule.Total'),
128
+ value: i18n_1.default.t('Schedule.Total'),
128
129
  style: { font: { sz: '13', bold: true } },
129
130
  },
130
131
  {
@@ -147,14 +148,14 @@ var DataSetConfigs = function (exportData, t, startDate, endDate) {
147
148
  {
148
149
  columns: [
149
150
  '#',
150
- t('Schedule.CampaignName'),
151
- t('Schedule.StartDate'),
152
- t('Schedule.EndDate'),
153
- t('Schedule.DataFromDateToDate'),
154
- t('Schedule.Place'),
155
- t('Schedule.Estimate'),
156
- t('Schedule.Reality'),
157
- "".concat(t('Schedule.CompletionRate'), "(%)"),
151
+ i18n_1.default.t('Schedule.CampaignName'),
152
+ i18n_1.default.t('Schedule.StartDate'),
153
+ i18n_1.default.t('Schedule.EndDate'),
154
+ i18n_1.default.t('Schedule.DataFromDateToDate'),
155
+ i18n_1.default.t('Schedule.Place'),
156
+ i18n_1.default.t('Schedule.Estimate'),
157
+ i18n_1.default.t('Schedule.Reality'),
158
+ "".concat(i18n_1.default.t('Schedule.CompletionRate'), "(%)"),
158
159
  ],
159
160
  data: [['', '', '', '', '', '', '', '', '']],
160
161
  }
@@ -200,7 +201,7 @@ var DataSetConfigs = function (exportData, t, startDate, endDate) {
200
201
  '',
201
202
  '',
202
203
  '',
203
- t('Schedule.Total'),
204
+ i18n_1.default.t('Schedule.Total'),
204
205
  sumTotalQuantity,
205
206
  sumTotalRun,
206
207
  totalRate,
@@ -46,21 +46,31 @@ function CompletionRate() {
46
46
  var scheduleCompletionRate = (0, recoil_1.useRecoilValue)(Recoils_1.scheduleCompletionRateAtom);
47
47
  var _b = (0, react_1.useState)(true), loading = _b[0], setLoading = _b[1];
48
48
  var _c = (0, react_1.useState)(Utils_1.QueryInputDetail), queryInput = _c[0], setQueryInput = _c[1];
49
- var _d = (0, react_1.useState)(), scheduleGroupBy = _d[0], setScheduleGroupBy = _d[1];
49
+ var _d = (0, react_1.useState)([]), scheduleGroupBy = _d[0], setScheduleGroupBy = _d[1];
50
50
  (0, react_1.useEffect)(function () {
51
51
  var _a, _b, _c, _d;
52
52
  service
53
- .scheduleCompletionRatesPaging((_b = (_a = scheduleCompletionRate === null || scheduleCompletionRate === void 0 ? void 0 : scheduleCompletionRate.filter) === null || _a === void 0 ? void 0 : _a.startDate) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD'), (_d = (_c = scheduleCompletionRate === null || scheduleCompletionRate === void 0 ? void 0 : scheduleCompletionRate.filter) === null || _c === void 0 ? void 0 : _c.endDate) === null || _d === void 0 ? void 0 : _d.format('YYYY-MM-DD'), campaignId, Number(groupId), 'date', queryInput.pageIndex, queryInput.pageSize)
53
+ .scheduleCompletionRatesGet({
54
+ fromDate: (_b = (_a = scheduleCompletionRate === null || scheduleCompletionRate === void 0 ? void 0 : scheduleCompletionRate.filter) === null || _a === void 0 ? void 0 : _a.startDate) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD'),
55
+ toDate: (_d = (_c = scheduleCompletionRate === null || scheduleCompletionRate === void 0 ? void 0 : scheduleCompletionRate.filter) === null || _c === void 0 ? void 0 : _c.endDate) === null || _d === void 0 ? void 0 : _d.format('YYYY-MM-DD'),
56
+ level: 1,
57
+ campaignAdGroups: [
58
+ {
59
+ campaignId: campaignId,
60
+ campaignGroupId: Number(groupId),
61
+ },
62
+ ],
63
+ })
54
64
  .then(function (res) {
55
- var valueNew = (0, Utils_1.converData)((res === null || res === void 0 ? void 0 : res.items) || [], type, completionRateInfo === null || completionRateInfo === void 0 ? void 0 : completionRateInfo.billingUnit);
56
- setScheduleGroupBy(__assign(__assign({}, res), { items: valueNew.length ? valueNew : [] }));
65
+ var valueNew = (0, Utils_1.converData)(res, type);
66
+ setScheduleGroupBy(valueNew);
57
67
  setScheduleCompletionRate(function (oldState) { return (__assign(__assign({}, oldState), { detailCompletionRateDate: valueNew.length ? valueNew : [] })); });
58
68
  })
59
69
  .finally(function () {
60
70
  setLoading(false);
61
71
  });
62
72
  // eslint-disable-next-line react-hooks/exhaustive-deps
63
- }, [queryInput]);
73
+ }, []);
64
74
  var handleRowClick = function (itemRow) {
65
75
  navigate("".concat((0, moment_1.default)(itemRow.date).format('DD-MM-YYYY')));
66
76
  };
@@ -127,7 +137,7 @@ function CompletionRate() {
127
137
  };
128
138
  },
129
139
  },
130
- ], onRowClick: handleRowClick, rows: (scheduleGroupBy === null || scheduleGroupBy === void 0 ? void 0 : scheduleGroupBy.items) || [], getRowId: function (row) { return row; }, pageSize: queryInput.pageSize, pageIndex: queryInput.pageIndex, totalOfRows: (scheduleGroupBy === null || scheduleGroupBy === void 0 ? void 0 : scheduleGroupBy.totalItemCount) || 0, onPageIndexChange: function (pageIndex) {
140
+ ], onRowClick: handleRowClick, rows: (0, Helpers_1.offlinePaginate)(scheduleGroupBy, queryInput.pageIndex, queryInput.pageSize), getRowId: function (row) { return row; }, pageSize: queryInput.pageSize, pageIndex: queryInput.pageIndex, totalOfRows: scheduleGroupBy.length || 0, onPageIndexChange: function (pageIndex) {
131
141
  setQueryInput(function (prev) { return (__assign(__assign({}, prev), { pageIndex: pageIndex })); });
132
142
  }, onPageSizeChange: function (pageSize) {
133
143
  setQueryInput(function (prev) { return (__assign(__assign({}, prev), { pageSize: pageSize, pageIndex: 0 })); });
@@ -24,12 +24,12 @@ var react_1 = require("react");
24
24
  var moment_1 = __importDefault(require("moment"));
25
25
  var recoil_1 = require("recoil");
26
26
  var Router_1 = require("../../../AWING/Router");
27
- var Helpers_1 = require("../../../Utils/Helpers");
28
27
  var react_i18next_1 = require("react-i18next");
29
28
  var Hooks_1 = __importDefault(require("../Hooks"));
30
29
  var material_1 = require("@mui/material");
31
30
  var ClassicDrawer_1 = __importDefault(require("../../../Commons/Components/ClassicDrawer"));
32
31
  var Utils_1 = require("../Utils");
32
+ var Helpers_1 = require("../../../Utils/Helpers");
33
33
  var AWING_1 = require("../../../AWING");
34
34
  var Recoils_1 = require("../Recoils");
35
35
  function CompletionRateDate() {
@@ -41,19 +41,28 @@ function CompletionRateDate() {
41
41
  var schedule = (0, recoil_1.useRecoilValue)(Recoils_1.scheduleCompletionRateAtom);
42
42
  var _b = (0, react_1.useState)(true), loading = _b[0], setLoading = _b[1];
43
43
  var _c = (0, react_1.useState)(Utils_1.QueryInputDetail), queryInput = _c[0], setQueryInput = _c[1];
44
- var _d = (0, react_1.useState)(), scheduleGroupByDate = _d[0], setScheduleGroupByDate = _d[1];
44
+ var _d = (0, react_1.useState)([]), scheduleGroupByDate = _d[0], setScheduleGroupByDate = _d[1];
45
45
  (0, react_1.useEffect)(function () {
46
46
  service
47
- .scheduleCompletionRatesPaging((0, moment_1.default)(date, 'DD-MM-YYYY').format('YYYY-MM-DD'), (0, moment_1.default)(date, 'DD-MM-YYYY').format('YYYY-MM-DD'), campaignId, Number(groupId), 'placeId', queryInput.pageIndex, queryInput.pageSize)
47
+ .scheduleCompletionRatesGet({
48
+ fromDate: (0, moment_1.default)(date, 'DD-MM-YYYY').format('YYYY-MM-DD'),
49
+ toDate: (0, moment_1.default)(date, 'DD-MM-YYYY').format('YYYY-MM-DD'),
50
+ level: 2,
51
+ campaignAdGroups: [
52
+ {
53
+ campaignId: campaignId,
54
+ campaignGroupId: Number(groupId),
55
+ },
56
+ ],
57
+ })
48
58
  .then(function (res) {
49
- var valueNew = (0, Utils_1.converData)((res === null || res === void 0 ? void 0 : res.items) || [], type, completionRateDateInfo === null || completionRateDateInfo === void 0 ? void 0 : completionRateDateInfo.billingUnit);
50
- setScheduleGroupByDate(__assign(__assign({}, res), { items: valueNew.length ? valueNew : [] }));
59
+ setScheduleGroupByDate((0, Utils_1.converData)(res || [], type));
51
60
  })
52
61
  .finally(function () {
53
62
  setLoading(false);
54
63
  });
55
64
  // eslint-disable-next-line react-hooks/exhaustive-deps
56
- }, [queryInput]);
65
+ }, []);
57
66
  return ((0, jsx_runtime_1.jsx)(ClassicDrawer_1.default, { title: "".concat(t('ScheduleCompletionRate.Date'), ": ").concat(loading && !date ? 'loading...' : date || '', " "), childrenWrapperStyle: { p: 3 }, children: loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsx)(AWING_1.DataGrid, { spanningRows: (0, jsx_runtime_1.jsxs)(material_1.TableRow, { sx: {
58
67
  flex: 1,
59
68
  background: 'lightgrey',
@@ -75,7 +84,7 @@ function CompletionRateDate() {
75
84
  return item.placeId === row.placeId;
76
85
  });
77
86
  return (itemPlace === null || itemPlace === void 0 ? void 0 : itemPlace.name)
78
- ? itemPlace === null || itemPlace === void 0 ? void 0 : itemPlace.name
87
+ ? itemPlace.name
79
88
  : "ID: ".concat(row.placeId);
80
89
  },
81
90
  width: 350,
@@ -120,7 +129,7 @@ function CompletionRateDate() {
120
129
  };
121
130
  },
122
131
  },
123
- ], rows: (scheduleGroupByDate === null || scheduleGroupByDate === void 0 ? void 0 : scheduleGroupByDate.items) || [], pageSize: queryInput.pageSize, pageIndex: queryInput.pageIndex, totalOfRows: (scheduleGroupByDate === null || scheduleGroupByDate === void 0 ? void 0 : scheduleGroupByDate.totalItemCount) || 0, onPageIndexChange: function (pageIndex) {
132
+ ], rows: (0, Helpers_1.offlinePaginate)(scheduleGroupByDate, queryInput.pageIndex, queryInput.pageSize), pageSize: queryInput.pageSize, pageIndex: queryInput.pageIndex, totalOfRows: scheduleGroupByDate.length || 0, onPageIndexChange: function (pageIndex) {
124
133
  setQueryInput(function (prev) { return (__assign(__assign({}, prev), { pageIndex: pageIndex })); });
125
134
  }, onPageSizeChange: function (pageSize) {
126
135
  setQueryInput(function (prev) { return (__assign(__assign({}, prev), { pageSize: pageSize, pageIndex: 0 })); });
@@ -3,10 +3,11 @@
3
3
  * @author dauquan1108@gmail.com on 03/13/2024.
4
4
  *
5
5
  **/
6
- import { FilterType } from './Types';
6
+ import { FilterType, ScheduleCompletionRate } from './Types';
7
7
  interface PropsFilter {
8
8
  filter: FilterType;
9
9
  onUpdateFilter: (valueNew: FilterType) => void;
10
+ scheduleCompletionRate: ScheduleCompletionRate[];
10
11
  }
11
12
  declare function Filter(props: PropsFilter): import("react/jsx-runtime").JSX.Element;
12
13
  export default Filter;
@@ -10,15 +10,6 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
- if (ar || !(i in from)) {
16
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
- ar[i] = from[i];
18
- }
19
- }
20
- return to.concat(ar || Array.prototype.slice.call(from));
21
- };
22
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
23
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
15
  };
@@ -45,6 +36,7 @@ var Utils_1 = require("./Utils");
45
36
  var recoil_1 = require("recoil");
46
37
  var Recoils_1 = require("./Recoils");
47
38
  var exportFile_1 = require("../../ACM-AXN/CampaignSchedule/exportFile");
39
+ var lodash_1 = require("lodash");
48
40
  var useStyles = (0, styles_1.makeStyles)(function () { return ({
49
41
  outlinedInput: {
50
42
  '& .MuiOutlinedInput-input': {
@@ -68,7 +60,7 @@ var useStyles = (0, styles_1.makeStyles)(function () { return ({
68
60
  },
69
61
  }); });
70
62
  function Filter(props) {
71
- var filter = props.filter, onUpdateFilter = props.onUpdateFilter;
63
+ var filter = props.filter, scheduleCompletionRate = props.scheduleCompletionRate, onUpdateFilter = props.onUpdateFilter;
72
64
  var t = (0, react_i18next_1.useTranslation)().t;
73
65
  var classes = useStyles();
74
66
  var snackbar = (0, Context_1.useAwing)().appHelper.snackbar;
@@ -78,13 +70,7 @@ function Filter(props) {
78
70
  var _a = (0, recoil_1.useRecoilState)(Recoils_1.ScheduleCompletionRateTypeViewState), filterType = _a[0], setFilterType = _a[1];
79
71
  var _b = (0, react_1.useState)(false), isLoadings = _b[0], setIsLoadings = _b[1];
80
72
  var _c = (0, react_1.useState)(), dateRangeInput = _c[0], setDateRangeInput = _c[1];
81
- var _d = (0, react_1.useState)([
82
- {
83
- id: Utils_1.DefaultValueFilter.campaignId,
84
- isNetwork: false,
85
- name: t('Common.SelectAll'),
86
- },
87
- ]), campaigns = _d[0], setCampaigns = _d[1];
73
+ var _d = (0, react_1.useState)([]), campaigns = _d[0], setCampaigns = _d[1];
88
74
  (0, react_1.useEffect)(function () {
89
75
  var _a;
90
76
  if (!((_a = schedule === null || schedule === void 0 ? void 0 : schedule.places) === null || _a === void 0 ? void 0 : _a.length)) {
@@ -93,32 +79,15 @@ function Filter(props) {
93
79
  });
94
80
  }
95
81
  // eslint-disable-next-line react-hooks/exhaustive-deps
96
- }, [schedule]);
97
- (0, react_1.useEffect)(function () {
98
- var _a, _b;
99
- service
100
- .scheduleCompletionRatesQuery((_a = filter === null || filter === void 0 ? void 0 : filter.startDate) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD'), (_b = filter === null || filter === void 0 ? void 0 : filter.endDate) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD'))
101
- .then(function (data) {
102
- var listCampaign = data.map(function (item) { return (__assign(__assign({}, item.campaign), { isNetwork: item.isNetworkCampaign })); });
103
- var campaign = campaigns.find(function (item) {
104
- return item.id === (filter === null || filter === void 0 ? void 0 : filter.campaignId) &&
105
- item.id !== (Utils_1.DefaultValueFilter === null || Utils_1.DefaultValueFilter === void 0 ? void 0 : Utils_1.DefaultValueFilter.campaignId);
106
- });
107
- var isCampaign = listCampaign === null || listCampaign === void 0 ? void 0 : listCampaign.some(function (item) { return item.id === (filter === null || filter === void 0 ? void 0 : filter.campaignId); });
108
- var tempCampaignList = __spreadArray([
109
- {
110
- id: Utils_1.DefaultValueFilter.campaignId,
111
- name: t('Common.SelectAll'),
112
- }
113
- ], listCampaign, true);
114
- var options = isCampaign
115
- ? tempCampaignList
116
- : campaign
117
- ? __spreadArray(__spreadArray([], tempCampaignList, true), [campaign], false) : tempCampaignList;
118
- setCampaigns(options);
119
- });
120
- // eslint-disable-next-line react-hooks/exhaustive-deps
121
- }, [filter.startDate, filter.endDate]);
82
+ }, [schedule === null || schedule === void 0 ? void 0 : schedule.places.length]);
83
+ (0, react_1.useLayoutEffect)(function () {
84
+ setCampaigns((0, lodash_1.uniqBy)([
85
+ {
86
+ campaignId: Utils_1.DefaultValueFilter.campaignId,
87
+ campaignName: t('Common.SelectAll'),
88
+ },
89
+ ].concat(scheduleCompletionRate), 'campaignId'));
90
+ }, [scheduleCompletionRate, t]);
122
91
  var handleChangeQueryInput = function (queryParams) {
123
92
  onUpdateFilter(__assign(__assign({}, queryParams), { campaignId: filter.campaignId }));
124
93
  };
@@ -126,12 +95,17 @@ function Filter(props) {
126
95
  var _a, _b;
127
96
  setIsLoadings(true);
128
97
  service
129
- .scheduleCompletionRatesExport((_a = filter === null || filter === void 0 ? void 0 : filter.startDate) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD'), (_b = filter === null || filter === void 0 ? void 0 : filter.endDate) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD'), filter.campaignId, undefined)
98
+ .scheduleCompletionRatesGet({
99
+ fromDate: (_a = filter === null || filter === void 0 ? void 0 : filter.startDate) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD'),
100
+ toDate: (_b = filter === null || filter === void 0 ? void 0 : filter.endDate) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD'),
101
+ level: 1,
102
+ })
130
103
  .then(function (res) {
131
- var _a, _b, _c, _d;
132
- var dataByCampaign = (_a = (0, DataSetConfig_1.DataSetConfigs)((0, Utils_1.convertExcelData)(res, campaigns, schedule.places, t, filterType.type), t, filter === null || filter === void 0 ? void 0 : filter.startDate, filter === null || filter === void 0 ? void 0 : filter.endDate)) === null || _a === void 0 ? void 0 : _a.sheetByCampaign;
133
- var dataByCampaignDetail = (_b = (0, DataSetConfig_1.DataSetConfigs)((0, Utils_1.convertExcelData)(res, campaigns, schedule.places, t, filterType.type), t, filter === null || filter === void 0 ? void 0 : filter.startDate, filter === null || filter === void 0 ? void 0 : filter.endDate)) === null || _b === void 0 ? void 0 : _b.sheetCampaignDetail;
134
- var fileName = "AWING_DELIVERY_STATUS_BY_DAY_".concat((_c = filter === null || filter === void 0 ? void 0 : filter.startDate) === null || _c === void 0 ? void 0 : _c.format('DD-MM-YYYY'), " to ").concat((_d = filter === null || filter === void 0 ? void 0 : filter.endDate) === null || _d === void 0 ? void 0 : _d.format('YYYYMMDD'));
104
+ var _a, _b;
105
+ var Data = (0, DataSetConfig_1.DataSetConfigs)((0, Utils_1.convertExcelData)(res, campaigns, schedule.places, filterType.type), filter === null || filter === void 0 ? void 0 : filter.startDate, filter === null || filter === void 0 ? void 0 : filter.endDate);
106
+ var dataByCampaign = Data === null || Data === void 0 ? void 0 : Data.sheetByCampaign;
107
+ var dataByCampaignDetail = Data === null || Data === void 0 ? void 0 : Data.sheetCampaignDetail;
108
+ var fileName = "AWING_DELIVERY_STATUS_BY_DAY_".concat((_a = filter === null || filter === void 0 ? void 0 : filter.startDate) === null || _a === void 0 ? void 0 : _a.format('DD-MM-YYYY'), " to ").concat((_b = filter === null || filter === void 0 ? void 0 : filter.endDate) === null || _b === void 0 ? void 0 : _b.format('YYYYMMDD'));
135
109
  var dataExport = [
136
110
  {
137
111
  dataSet: dataByCampaign,
@@ -187,7 +161,7 @@ function Filter(props) {
187
161
  return now < day.valueOf();
188
162
  } }) }), (0, jsx_runtime_1.jsx)(SearchCampaign_1.default, { filter: filter, campaigns: campaigns, onUpdateFilter: onUpdateFilter }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", onClick: function () {
189
163
  handleChangeQueryInput(dateRangeInput);
190
- }, style: { height: '40px' }, children: t('Common.View') }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", title: t('Common.Download'), onClick: function () { return handleChangeExportInput(); }, color: "inherit", disabled: isLoadings, style: {
164
+ }, style: { height: '40px' }, children: t('Common.View') }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", title: t('Common.Download'), onClick: handleChangeExportInput, color: "inherit", disabled: isLoadings, style: {
191
165
  marginLeft: '16px',
192
166
  height: '40px',
193
167
  }, children: isLoadings ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, { styleWrap: {
@@ -207,7 +207,7 @@ jest.mock('../../ACM-AXN/Statistics/ControlPanel', function () { return function
207
207
  }; });
208
208
  var renderUi = function () {
209
209
  var mockOnUpdateFilter = jest.fn();
210
- return (0, react_1.render)((0, jsx_runtime_1.jsx)(Filter_1.default, { filter: Utils_1.DefaultValueFilter, onUpdateFilter: mockOnUpdateFilter }));
210
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(Filter_1.default, { scheduleCompletionRate: [], filter: Utils_1.DefaultValueFilter, onUpdateFilter: mockOnUpdateFilter }));
211
211
  };
212
212
  describe('Filter component', function () {
213
213
  it('Check render component', function () {
@@ -3,10 +3,10 @@
3
3
  * @author dauquan1108@gmail.com on 03/27/2024.
4
4
  *
5
5
  **/
6
- import { FilterType, Campaign } from './Types';
6
+ import { FilterType, ScheduleCompletionRate } from './Types';
7
7
  interface PropsSearchCampaign {
8
8
  filter: FilterType;
9
- campaigns: Campaign[];
9
+ campaigns: ScheduleCompletionRate[];
10
10
  onUpdateFilter: (valueNew: FilterType) => void;
11
11
  }
12
12
  declare function SearchCampaign(props: PropsSearchCampaign): import("react/jsx-runtime").JSX.Element;
@@ -11,6 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ var react_1 = require("react");
14
15
  var jsx_runtime_1 = require("react/jsx-runtime");
15
16
  /**
16
17
  *
@@ -27,15 +28,8 @@ function SearchCampaign(props) {
27
28
  onUpdateFilter({
28
29
  campaignId: reason === 'clear'
29
30
  ? Utils_1.DefaultValueFilter.campaignId
30
- : campaignItem === null || campaignItem === void 0 ? void 0 : campaignItem.id,
31
+ : campaignItem === null || campaignItem === void 0 ? void 0 : campaignItem.campaignId,
31
32
  });
32
- }, sx: { marginRight: function (theme) { return theme.spacing(2); } }, getOptionLabel: function (option) { return (option === null || option === void 0 ? void 0 : option.name) || ''; }, value: campaigns.find(function (item) { return item.id === filter.campaignId; }), renderInput: function (params) { return ((0, jsx_runtime_1.jsx)(material_1.TextField, __assign({}, params, { label: t('CampaignPlan.CampaignName') }))); }, renderOption: function (props, option) { return ((0, jsx_runtime_1.jsxs)("li", __assign({}, props, { children: [option.name, (option === null || option === void 0 ? void 0 : option.isNetwork) && ((0, jsx_runtime_1.jsx)("span", { style: {
33
- backgroundColor: '#c49f47',
34
- color: '#ffffff',
35
- fontSize: '13px',
36
- marginLeft: '4px',
37
- padding: '1px 4px !important',
38
- borderRadius: '2px',
39
- }, children: "Network" }))] }))); } }));
33
+ }, sx: { marginRight: function (theme) { return theme.spacing(2); } }, getOptionLabel: function (option) { return (option === null || option === void 0 ? void 0 : option.campaignName) || ''; }, value: campaigns.find(function (item) { return item.campaignId === filter.campaignId; }), renderInput: function (params) { return ((0, jsx_runtime_1.jsx)(material_1.TextField, __assign({}, params, { label: t('CampaignPlan.CampaignName') }))); }, renderOption: function (props, option) { return ((0, react_1.createElement)("li", __assign({}, props, { key: option.campaignId }), option.campaignName || option.campaignId)); } }));
40
34
  }
41
35
  exports.default = SearchCampaign;
@@ -33,11 +33,22 @@ export interface ScheduleCompletionRatePropsContext {
33
33
  service: ScheduleCompletionRateService;
34
34
  }
35
35
  export interface ScheduleCompletionRateService {
36
- scheduleCompletionRatesGet: (fromDate: string | undefined, toDate: string | undefined, cancelToken?: CancelToken) => Promise<ScheduleCompletionRate[]>;
37
- scheduleCompletionRatesQuery: (fromDate: string | undefined, toDate: string | undefined, cancelToken?: CancelToken) => Promise<CampaignPlanModel[]>;
38
- scheduleCompletionRatesExport: (fromDate: string | undefined, toDate: string | undefined, campaignId: string | undefined, groupId: number | undefined, cancelToken?: CancelToken) => Promise<ScheduleCompletionRateExport[]>;
36
+ scheduleCompletionRatesGet: (body: ScheduleCompletionRateDTO | undefined, cancelToken?: CancelToken) => Promise<ScheduleCompletionRate[]>;
39
37
  placesGetAllByPlaceGroupHasPermission: (cancelToken?: CancelToken) => Promise<Place[]>;
40
- scheduleCompletionRatesPaging: (fromDate: string | undefined, toDate: string | undefined, campaignId: string | undefined, groupId: number | undefined, groupBy: string | undefined, pageIndex: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken) => Promise<PagedList_1OfScheduleCompletionRatePaging>;
38
+ }
39
+ export interface CampaignAdGroup {
40
+ campaignId?: string;
41
+ campaignGroupId?: number | undefined;
42
+ campaignAdId?: number | undefined;
43
+ }
44
+ export interface ScheduleCompletionRateDTO {
45
+ fromDate?: string;
46
+ toDate?: string;
47
+ campaignAdGroups?: CampaignAdGroup[] | undefined;
48
+ placeIds?: string[] | undefined;
49
+ domainIds?: string[] | undefined;
50
+ /** Cấp độ truy vấn. O = lấy tất cả theo campaign group, 1 = lấy theo campaign group date, 2 = lấy theo campaign, group, date và place */
51
+ level?: number;
41
52
  }
42
53
  export interface Place {
43
54
  placeId?: string;
@@ -101,41 +112,10 @@ export interface IScheduleCompletionRatePaging {
101
112
  totalQuantity?: number;
102
113
  totalRun?: number;
103
114
  }
104
- export interface PagedList_1OfScheduleCompletionRatePaging {
105
- items?: ScheduleCompletionRatePaging[] | undefined;
106
- pageCount?: number;
107
- totalItemCount?: number;
108
- pageNumber?: number;
109
- pageSize?: number;
110
- hasPreviousPage?: boolean;
111
- hasNextPage?: boolean;
112
- }
113
- export interface ScheduleCompletionRateExport {
114
- campaignId?: string;
115
- placeId?: string;
116
- groupId?: number;
117
- groupName?: string | undefined;
118
- billingUnit?: AnalyticType;
119
- runs?: AnalyticEventSummary[] | undefined;
120
- expecteds?: AnalyticEventSummary[] | undefined;
121
- date?: string;
122
- }
123
115
  export interface Timestamp {
124
116
  seconds?: string;
125
117
  nanos?: number;
126
118
  }
127
- export interface Campaign {
128
- id?: string;
129
- directoryId?: string;
130
- directoryPath?: string | undefined;
131
- name?: string | undefined;
132
- createdDate?: Timestamp;
133
- isNetwork?: boolean;
134
- }
135
- export interface CampaignPlanModel {
136
- campaign?: Campaign;
137
- isNetworkCampaign?: boolean;
138
- }
139
119
  export declare enum AnalyticType {
140
120
  View = 0,
141
121
  Authentication = 1,
@@ -150,12 +130,12 @@ export interface ScheduleCompletionRate {
150
130
  campaignId?: string;
151
131
  campaignName?: string | undefined;
152
132
  billingUnit?: AnalyticType;
153
- isNetWork?: boolean;
154
133
  placeId?: string;
155
134
  groupId?: number;
156
135
  groupName?: string | undefined;
157
136
  runs?: AnalyticEventSummary[] | undefined;
158
137
  expecteds?: AnalyticEventSummary[] | undefined;
138
+ date?: string;
159
139
  fromDate?: string;
160
140
  toDate?: string;
161
141
  }
@@ -4,7 +4,7 @@
4
4
  *
5
5
  **/
6
6
  import moment from 'moment';
7
- import { AnalyticEventSummary, Campaign, Place, ScheduleCompletionRate, ScheduleCompletionRateExport } from './Types';
7
+ import { AnalyticEventSummary, Place, ScheduleCompletionRate } from './Types';
8
8
  export declare const QueryInputDetail: {
9
9
  pageIndex: number;
10
10
  pageSize: number;
@@ -14,24 +14,24 @@ export declare const DefaultValueFilter: {
14
14
  endDate: moment.Moment;
15
15
  campaignId: string;
16
16
  };
17
- export declare const convertExcelData: (resData: ScheduleCompletionRateExport[], campaigns: Campaign[], places: Place[], t: any, typeView: number) => any;
17
+ export declare const convertExcelData: (resData: ScheduleCompletionRate[], campaigns: ScheduleCompletionRate[], places: Place[], typeView: number) => any;
18
18
  export interface IScheduleCompletionRateTypeView {
19
19
  type: number;
20
20
  }
21
21
  export declare const getValue: (itemType: AnalyticEventSummary[], billingUnit: number, type: number) => number;
22
- export declare const converData: (data: ScheduleCompletionRate[], typeView: number, billingUnit?: number) => {
22
+ export declare const converData: (data: ScheduleCompletionRate[], typeView: number) => {
23
23
  totalRun: number;
24
- billingUnit: number | undefined;
24
+ billingUnit: import("./Types").AnalyticType | undefined;
25
25
  totalQuantity: number;
26
26
  rate: number;
27
27
  campaignId?: string | undefined;
28
28
  campaignName?: string | undefined;
29
- isNetWork?: boolean | undefined;
30
29
  placeId?: string | undefined;
31
30
  groupId?: number | undefined;
32
31
  groupName?: string | undefined;
33
32
  runs?: AnalyticEventSummary[] | undefined;
34
33
  expecteds?: AnalyticEventSummary[] | undefined;
34
+ date?: string | undefined;
35
35
  fromDate?: string | undefined;
36
36
  toDate?: string | undefined;
37
37
  }[];
@@ -30,6 +30,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
31
  exports.converData = exports.getValue = exports.convertExcelData = exports.DefaultValueFilter = exports.QueryInputDetail = void 0;
32
32
  var lodash_1 = __importDefault(require("lodash"));
33
+ var i18n_1 = __importDefault(require("../../i18n"));
33
34
  var moment_1 = __importDefault(require("moment"));
34
35
  var Enum_1 = require("../../ACM-AXN/Common/Enum");
35
36
  var Constant_1 = require("../../ACM-AXN/Common/Constant");
@@ -42,19 +43,21 @@ exports.DefaultValueFilter = {
42
43
  endDate: (0, moment_1.default)().add(-1, 'days'),
43
44
  campaignId: '0',
44
45
  };
45
- var convertExcelData = function (resData, campaigns, places, t, typeView) {
46
+ var convertExcelData = function (resData, campaigns, places, typeView) {
46
47
  var excelData = __spreadArray([], resData.map(function (data) {
47
48
  var _a, _b, _c;
48
- var filterCampaignName = (_a = campaigns.find(function (item) { return item.id === data.campaignId; })) === null || _a === void 0 ? void 0 : _a.name;
49
+ var filterCampaignName = (_a = campaigns.find(function (item) {
50
+ return item.campaignId === data.campaignId;
51
+ })) === null || _a === void 0 ? void 0 : _a.campaignName;
49
52
  var campaignName = Number(data === null || data === void 0 ? void 0 : data.campaignId) !== -1
50
53
  ? filterCampaignName
51
- : t('ScheduleCompletionRate.CampaignDefault');
54
+ : i18n_1.default.t('ScheduleCompletionRate.CampaignDefault');
52
55
  var placeName = (_c = (_b = places.find(function (item) { return item.placeId === (data === null || data === void 0 ? void 0 : data.placeId); })) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : '';
53
56
  var totalQuantity = getEventTotal(data === null || data === void 0 ? void 0 : data.expecteds, typeView === Constant_1.TypeView.impression
54
57
  ? Constant_1.ValueAnalyticType.VIEW
55
58
  : Constant_1.ValueAnalyticType.AUTHENTICATION) || 0;
56
59
  var totalRun = (0, exports.getValue)(data === null || data === void 0 ? void 0 : data.runs, data === null || data === void 0 ? void 0 : data.billingUnit, typeView);
57
- var rate = totalQuantity !== 0 ? (totalRun / totalQuantity) * 100 : 0;
60
+ var rate = totalQuantity > 0 ? (totalRun / totalQuantity) * 100 : 0;
58
61
  return {
59
62
  campaignName: campaignName,
60
63
  groupName: !data.groupName ? 'IS-NULL' : data.groupName,
@@ -95,14 +98,14 @@ var getValue = function (itemType, billingUnit, type) {
95
98
  return value;
96
99
  };
97
100
  exports.getValue = getValue;
98
- var converData = function (data, typeView, billingUnit) {
101
+ var converData = function (data, typeView) {
99
102
  return data.map(function (item) {
100
103
  var totalQuantity = getEventTotal(item === null || item === void 0 ? void 0 : item.expecteds, typeView === Constant_1.TypeView.impression
101
104
  ? Constant_1.ValueAnalyticType.VIEW
102
105
  : Constant_1.ValueAnalyticType.AUTHENTICATION) || 0;
103
- var totalRun = (0, exports.getValue)(item === null || item === void 0 ? void 0 : item.runs, Number((item === null || item === void 0 ? void 0 : item.billingUnit) || billingUnit), typeView);
104
- var rate = (totalRun / totalQuantity) * 100;
105
- return __assign(__assign({}, item), { totalRun: totalRun, billingUnit: (item === null || item === void 0 ? void 0 : item.billingUnit) || billingUnit, totalQuantity: totalQuantity, rate: !isNaN(rate) && Number.isFinite(rate) ? rate : 0 });
106
+ var totalRun = (0, exports.getValue)(item === null || item === void 0 ? void 0 : item.runs, Number(item === null || item === void 0 ? void 0 : item.billingUnit), typeView);
107
+ var rate = totalQuantity > 0 ? (totalRun / totalQuantity) * 100 : 0;
108
+ return __assign(__assign({}, item), { totalRun: totalRun, billingUnit: item === null || item === void 0 ? void 0 : item.billingUnit, totalQuantity: totalQuantity, rate: rate });
106
109
  });
107
110
  };
108
111
  exports.converData = converData;
@@ -41,7 +41,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
41
41
  var jsx_runtime_1 = require("react/jsx-runtime");
42
42
  var icons_material_1 = require("@mui/icons-material");
43
43
  var material_1 = require("@mui/material");
44
- var immer_1 = __importDefault(require("immer"));
44
+ var immer_1 = require("immer");
45
45
  var react_1 = __importDefault(require("react"));
46
46
  var react_i18next_1 = require("react-i18next");
47
47
  var react_router_dom_1 = require("react-router-dom");
@@ -119,13 +119,13 @@ var CreateOrEdit = function () {
119
119
  var handleInputParamChange = function (path, value) {
120
120
  setConfirmExit(true);
121
121
  var keys = path.split('.');
122
- setJobModel((0, immer_1.default)(function (draft) {
122
+ setJobModel((0, immer_1.produce)(function (draft) {
123
123
  (0, Helpers_1.setObject)(draft, keys, value);
124
124
  // draft.inputParameters[index] = item
125
125
  }));
126
126
  };
127
127
  var handleJobActionChange = function (jobAction) {
128
- setJobModel((0, immer_1.default)(function (draf) {
128
+ setJobModel((0, immer_1.produce)(function (draf) {
129
129
  draf.inputParameters = jobAction.parameters.map(function (x) { return ({
130
130
  key: x.name,
131
131
  operator: x.operators[0],
@@ -53,7 +53,7 @@ var Add_1 = __importDefault(require("@mui/icons-material/Add"));
53
53
  var material_1 = require("@mui/material");
54
54
  var Enum_1 = require("../../../../ACM-AXN/ViewTemplate/Enum");
55
55
  var AWING_1 = require("../../../../AWING");
56
- var immer_1 = __importDefault(require("immer"));
56
+ var immer_1 = require("immer");
57
57
  var react_1 = __importStar(require("react"));
58
58
  var react_i18next_1 = require("react-i18next");
59
59
  var recoil_1 = require("recoil");
@@ -96,7 +96,7 @@ var Parameter = function (_a) {
96
96
  ].includes(field)
97
97
  ? checked
98
98
  : field === Utils_1.FIELDS.FIELD_NAME ? ((_b = (_a = value === null || value === void 0 ? void 0 : value.split('.')) === null || _a === void 0 ? void 0 : _a.at(ids.length - 1)) !== null && _b !== void 0 ? _b : '').trim() : value;
99
- handleSetParameter((0, immer_1.default)(function (rows) {
99
+ handleSetParameter((0, immer_1.produce)(function (rows) {
100
100
  (0, Utils_1.enhancedUpdate)(rows, ids, field, handleValue, defaultParam);
101
101
  }));
102
102
  };
@@ -58,7 +58,7 @@ var TabFile_1 = __importDefault(require("../../../ACM-AXN/Page/CreateOrEdit/TabF
58
58
  var enums_1 = require("../../../ACM-AXN/Page/enums");
59
59
  var AWING_1 = require("../../../AWING");
60
60
  var Wrapper_1 = __importDefault(require("../../../AWING/HOC/Wrapper"));
61
- var immer_1 = __importDefault(require("immer"));
61
+ var immer_1 = require("immer");
62
62
  var Router_1 = require("../../../AWING/Router");
63
63
  var validation_1 = require("../../../AWING/ultis/validation");
64
64
  var ClassicDrawer_1 = __importDefault(require("../../../Commons/Components/ClassicDrawer"));
@@ -105,7 +105,7 @@ var CreateOrEdit = function () {
105
105
  // eslint-disable-next-line react-hooks/exhaustive-deps
106
106
  }, []);
107
107
  (0, react_1.useEffect)(function () {
108
- setTemplateData((0, immer_1.default)(function (prev) {
108
+ setTemplateData((0, immer_1.produce)(function (prev) {
109
109
  var _a;
110
110
  prev.template.directoryId =
111
111
  prev.template.directoryId ||
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var Helpers_1 = require("../../Utils/Helpers");
4
- var react_router_1 = require("react-router");
4
+ var react_router_dom_1 = require("react-router-dom");
5
5
  var usePath = function () {
6
- var location = (0, react_router_1.useLocation)();
7
- var params = (0, react_router_1.useParams)();
6
+ var location = (0, react_router_dom_1.useLocation)();
7
+ var params = (0, react_router_dom_1.useParams)();
8
8
  var path = (0, Helpers_1.getRoutePath)(location, params);
9
9
  return path;
10
10
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awing-library",
3
- "version": "2.1.156-beta",
3
+ "version": "2.1.159-dev",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -41,12 +41,14 @@
41
41
  "aphrodite": "^2.4.0",
42
42
  "chart.js": "^4.4.1",
43
43
  "chartjs-adapter-moment": "^1.0.1",
44
+ "clsx": "^2.1.1",
44
45
  "concurrently": "^8.2.2",
45
46
  "dayjs": "^1.11.10",
46
47
  "enzyme": "^3.11.0",
47
48
  "faker": "^6.6.6",
48
49
  "file-saver": "^2.0.5",
49
50
  "i18next": "^23.6.0",
51
+ "immer": "^10.1.1",
50
52
  "lodash": "^4.17.21",
51
53
  "moment": "^2.29.4",
52
54
  "prismjs": "^1.29.0",