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.
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabInfomation.js +2 -2
- package/lib/ACM-AXN/GeoFencing/GoongMap/index.d.ts +8 -9
- package/lib/ACM-AXN/Page/Container.js +3 -3
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.d.ts +1 -9
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.js +0 -9
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.js +4 -4
- package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +2 -5
- package/lib/ACM-AXN/Page/CreateOrEdit/index.js +2 -2
- package/lib/ACM-AXN/Permission/Components/Styles.d.ts +1 -2
- package/lib/ACM-AXN/ScheduleCompletionRate/Container.js +15 -15
- package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.d.ts +14 -9
- package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.js +19 -18
- package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRate.js +16 -6
- package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRateDate.js +17 -8
- package/lib/ACM-AXN/ScheduleCompletionRate/Filter.d.ts +2 -1
- package/lib/ACM-AXN/ScheduleCompletionRate/Filter.js +23 -49
- package/lib/ACM-AXN/ScheduleCompletionRate/Filter.test.js +1 -1
- package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.d.ts +2 -2
- package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.js +3 -9
- package/lib/ACM-AXN/ScheduleCompletionRate/Types.d.ts +16 -36
- package/lib/ACM-AXN/ScheduleCompletionRate/Utils.d.ts +5 -5
- package/lib/ACM-AXN/ScheduleCompletionRate/Utils.js +11 -8
- package/lib/ACM-AXN/TaskScheduler/CreateOrEdit.js +3 -3
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +2 -2
- package/lib/ACM-AXN/Template/CreateOrEdit/index.js +2 -2
- package/lib/Commons/Hooks/usePath.js +3 -3
- 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 =
|
|
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.
|
|
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:
|
|
15
|
-
let zoom:
|
|
16
|
-
let radius:
|
|
17
|
-
let limit:
|
|
18
|
-
let defaultGoongMap:
|
|
19
|
-
let marker:
|
|
20
|
-
let onLoad:
|
|
21
|
-
let configs:
|
|
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
|
|
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,
|
|
40
|
-
var location = (0,
|
|
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
|
-
|
|
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 =
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
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.
|
|
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 =
|
|
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.
|
|
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) || '';
|
|
@@ -52,12 +52,19 @@ function Container() {
|
|
|
52
52
|
var _a, _b;
|
|
53
53
|
setLoading(true);
|
|
54
54
|
service
|
|
55
|
-
.scheduleCompletionRatesGet(
|
|
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
|
|
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(
|
|
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.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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,
|
|
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:
|
|
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
|
|
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
|
-
.
|
|
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)(
|
|
56
|
-
setScheduleGroupBy(
|
|
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
|
-
}, [
|
|
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: (
|
|
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
|
-
.
|
|
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
|
-
|
|
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
|
-
}, [
|
|
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
|
|
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: (
|
|
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.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
.
|
|
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
|
|
132
|
-
var
|
|
133
|
-
var
|
|
134
|
-
var
|
|
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:
|
|
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,
|
|
6
|
+
import { FilterType, ScheduleCompletionRate } from './Types';
|
|
7
7
|
interface PropsSearchCampaign {
|
|
8
8
|
filter: FilterType;
|
|
9
|
-
campaigns:
|
|
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.
|
|
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.
|
|
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: (
|
|
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
|
-
|
|
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,
|
|
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:
|
|
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
|
|
22
|
+
export declare const converData: (data: ScheduleCompletionRate[], typeView: number) => {
|
|
23
23
|
totalRun: number;
|
|
24
|
-
billingUnit:
|
|
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,
|
|
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) {
|
|
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
|
|
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
|
|
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(
|
|
104
|
-
var rate = (totalRun / totalQuantity) * 100;
|
|
105
|
-
return __assign(__assign({}, item), { totalRun: totalRun, billingUnit:
|
|
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 =
|
|
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.
|
|
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.
|
|
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 =
|
|
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.
|
|
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 =
|
|
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.
|
|
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
|
|
4
|
+
var react_router_dom_1 = require("react-router-dom");
|
|
5
5
|
var usePath = function () {
|
|
6
|
-
var location = (0,
|
|
7
|
-
var params = (0,
|
|
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.
|
|
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",
|