awing-library 2.1.125-beta → 2.1.126-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ACM-AXN/Campaign/Container.js +2 -3
- package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +3 -3
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticComponent.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticComponent.test.js +80 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticContainer.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticContainer.test.js +49 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.d.ts +13 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.js +131 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.test.js +67 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.d.ts +2 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.js +113 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.test.js +27 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/DetailGroupBy.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/DetailGroupBy.test.js +55 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.d.ts +7 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.js +28 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.test.js +49 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.d.ts +2 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.js +183 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.d.ts +51 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.js +378 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.d.ts +14 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.js +77 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.d.ts +15 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.js +129 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/index.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/index.js +8 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.d.ts +12 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.js +237 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.test.js +84 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Context.d.ts +5 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Context.js +13 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerComponent.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerComponent.test.js +53 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerContainer.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerContainer.test.js +124 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.d.ts +14 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.js +127 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.d.ts +7 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.js +82 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/index.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/index.js +8 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventComponent.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventComponent.test.js +91 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventContainer.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventContainer.test.js +48 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.d.ts +5 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.js +29 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.test.js +30 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.d.ts +13 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.js +166 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.d.ts +10 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.js +123 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/index.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/index.js +8 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.d.ts +6 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.js +64 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.test.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.test.js +26 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.d.ts +91 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.js +2 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.d.ts +6 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.js +33 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.d.ts +6 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.js +9 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.d.ts +9 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.js +32 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.d.ts +8 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.js +94 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/fakeCampaignData.json +397 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/index.d.ts +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/index.js +8 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdDetail.test.js +3 -3
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdList.js +2 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/AddOrEditRule.test.js +12 -12
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Create.js +2 -3
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Create.test.js +3 -3
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Edit.test.js +2 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/EditExpression.test.js +9 -9
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitClick.test.js +1 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitEvent.test.js +1 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitView.test.js +1 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetAge.test.js +3 -3
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetGender.test.js +2 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +11 -10
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +6 -6
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +5 -5
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.js +2 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +5 -5
- package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +22 -12
- package/lib/ACM-AXN/Campaign/Enum.d.ts +72 -0
- package/lib/ACM-AXN/Campaign/Enum.js +81 -1
- package/lib/ACM-AXN/Campaign/Types.d.ts +7 -126
- package/lib/ACM-AXN/Campaign/Types.js +0 -80
- package/lib/ACM-AXN/Campaign/Utils.d.ts +7 -1
- package/lib/ACM-AXN/Campaign/Utils.js +14 -10
- package/lib/ACM-AXN/Campaign/index.d.ts +2 -0
- package/lib/ACM-AXN/Campaign/index.js +16 -0
- package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/component.js +4 -0
- package/lib/ACM-AXN/CampaignSchedule/Components/TableHeaderDragable.js +4 -0
- package/lib/ACM-AXN/CampaignSchedule/Enum.d.ts +4 -0
- package/lib/ACM-AXN/CampaignSchedule/Enum.js +4 -0
- package/lib/ACM-AXN/Common/Enum.d.ts +22 -0
- package/lib/ACM-AXN/Common/Enum.js +26 -1
- package/lib/ACM-AXN/Common/Types.d.ts +16 -0
- package/lib/ACM-AXN/Common/Types.js +2 -0
- package/lib/ACM-AXN/Notifications/Types.d.ts +1 -1
- package/lib/ACM-AXN/Page/Types.d.ts +2 -1
- package/lib/ACM-AXN/Template/Container.test.js +1 -1
- package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +1 -1
- package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +1 -1
- package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +13 -5
- package/lib/ACM-AXN/Template/Import.test.js +2 -2
- package/lib/AWING/Hooks/index.d.ts +1 -0
- package/lib/AWING/Hooks/index.js +17 -0
- package/lib/AWING/Hooks/useGetData.d.ts +9 -0
- package/lib/AWING/Hooks/useGetData.js +26 -0
- package/lib/Utils/Helpers.d.ts +2 -1
- package/lib/Utils/Helpers.js +17 -1
- package/lib/translate/en/translation.json +5 -1
- package/lib/translate/vi/translation.json +7 -1
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CampaignGroupModel } from '../../../../../ACM-AXN/Campaign/Types';
|
|
2
|
+
interface Props {
|
|
3
|
+
isLoading: boolean;
|
|
4
|
+
startDate: Date;
|
|
5
|
+
endDate: Date;
|
|
6
|
+
subCampaigns: CampaignGroupModel[];
|
|
7
|
+
eventData: any;
|
|
8
|
+
getEventData: any;
|
|
9
|
+
exportData: any;
|
|
10
|
+
domains: any[];
|
|
11
|
+
}
|
|
12
|
+
declare const Event: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default Event;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
/* eslint-disable eqeqeq */
|
|
19
|
+
var material_1 = require("@mui/material");
|
|
20
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
21
|
+
var react_1 = __importDefault(require("react"));
|
|
22
|
+
var ChartFilter_1 = __importDefault(require("../ChartFilter"));
|
|
23
|
+
var Table_1 = __importDefault(require("./Table"));
|
|
24
|
+
// import { BarLineChart } from 'Components/ChartAdvance'
|
|
25
|
+
var AWING_1 = require("../../../../../AWING");
|
|
26
|
+
var i18n_1 = __importDefault(require("../../../../../i18n"));
|
|
27
|
+
var Helpers_1 = require("../../../../../Utils/Helpers");
|
|
28
|
+
var MultipleHierarchicalChoice_1 = require("../../../../../AWING/MultipleHierarchicalChoice");
|
|
29
|
+
var react_i18next_1 = require("react-i18next");
|
|
30
|
+
var Context_1 = __importDefault(require("../Context"));
|
|
31
|
+
var Event = function (props) {
|
|
32
|
+
var chart = (0, Context_1.default)().chart;
|
|
33
|
+
var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
|
|
34
|
+
var isLoading = props.isLoading, startDate = props.startDate, endDate = props.endDate, subCampaigns = props.subCampaigns, eventData = props.eventData, getEventData = props.getEventData, exportData = props.exportData, domains = props.domains;
|
|
35
|
+
var _a = react_1.default.useState({
|
|
36
|
+
time: {
|
|
37
|
+
startDate: startDate,
|
|
38
|
+
endDate: endDate,
|
|
39
|
+
},
|
|
40
|
+
placeIds: [],
|
|
41
|
+
ids: {},
|
|
42
|
+
}), queryInput = _a[0], setQueryInput = _a[1];
|
|
43
|
+
var changeQueryInput = function (fieldName, fieldValue) {
|
|
44
|
+
var _a;
|
|
45
|
+
var newInput = __assign(__assign({}, queryInput), (_a = {}, _a[fieldName] = fieldValue, _a));
|
|
46
|
+
setQueryInput(newInput);
|
|
47
|
+
getEventData(newInput.time, newInput.placeIds, newInput.ids);
|
|
48
|
+
};
|
|
49
|
+
var queryData = function () {
|
|
50
|
+
getEventData(queryInput.time, queryInput.placeIds, queryInput.ids);
|
|
51
|
+
};
|
|
52
|
+
function convertDataSetPattern(eventData) {
|
|
53
|
+
return lodash_1.default.chain(eventData)
|
|
54
|
+
.groupBy('eventLabel')
|
|
55
|
+
.map(function (data, eventLabel) {
|
|
56
|
+
return {
|
|
57
|
+
eventLabel: eventLabel,
|
|
58
|
+
data: lodash_1.default.chain(data)
|
|
59
|
+
.groupBy('timeline')
|
|
60
|
+
.map(function (value, key) { return ({
|
|
61
|
+
x: key.toString(),
|
|
62
|
+
y: lodash_1.default.sumBy(value, 'total'),
|
|
63
|
+
}); })
|
|
64
|
+
.value(),
|
|
65
|
+
total: lodash_1.default.sumBy(data, 'total'),
|
|
66
|
+
};
|
|
67
|
+
})
|
|
68
|
+
.value().map(function (value, index) {
|
|
69
|
+
return {
|
|
70
|
+
label: value.eventLabel + ' ' + (0, Helpers_1.roundDecimalNumber)(value.total),
|
|
71
|
+
type: 'line',
|
|
72
|
+
data: value.data,
|
|
73
|
+
fill: false,
|
|
74
|
+
pointStyle: 'rect',
|
|
75
|
+
yAxisID: 'y',
|
|
76
|
+
variant: String(index),
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
var tableData = lodash_1.default.chain(eventData)
|
|
81
|
+
.groupBy('eventLabel')
|
|
82
|
+
.map(function (value, key) { return ({
|
|
83
|
+
eventLabel: key,
|
|
84
|
+
total: lodash_1.default.sumBy(value, 'total'),
|
|
85
|
+
}); })
|
|
86
|
+
.value();
|
|
87
|
+
var handleGroupChange = function (value) {
|
|
88
|
+
var _a, _b, _c, _d;
|
|
89
|
+
if (value.length > 0) {
|
|
90
|
+
var temp = { campaignGroupId: (_a = value[0][0]) === null || _a === void 0 ? void 0 : _a.code };
|
|
91
|
+
if (value[0][1] !== undefined) {
|
|
92
|
+
var code = (_d = (_c = (_b = value[0][1]) === null || _b === void 0 ? void 0 : _b.code) === null || _c === void 0 ? void 0 : _c.split('&')) === null || _d === void 0 ? void 0 : _d[1];
|
|
93
|
+
temp.campaignAdId = code;
|
|
94
|
+
}
|
|
95
|
+
changeQueryInput('ids', temp);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
changeQueryInput('ids', {});
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
var getGroupOptions = function () {
|
|
102
|
+
var ads = [];
|
|
103
|
+
subCampaigns.forEach(function (s) {
|
|
104
|
+
var _a, _b;
|
|
105
|
+
ads.push({
|
|
106
|
+
code: (_a = s.campaignGroup.id) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
107
|
+
name: s.campaignGroup.name,
|
|
108
|
+
parentUnitCode: '',
|
|
109
|
+
});
|
|
110
|
+
(_b = s === null || s === void 0 ? void 0 : s.ads) === null || _b === void 0 ? void 0 : _b.forEach(function (a) {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
ads.push({
|
|
113
|
+
code: "".concat(s.campaignGroup.id, "&").concat(a.id),
|
|
114
|
+
name: a.name,
|
|
115
|
+
parentUnitCode: (_b = (_a = s.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
return ads;
|
|
120
|
+
};
|
|
121
|
+
var groupOptions = getGroupOptions();
|
|
122
|
+
var getValue = function () {
|
|
123
|
+
var result = [];
|
|
124
|
+
if (queryInput.ids.campaignGroupId) {
|
|
125
|
+
var group = groupOptions.find(function (g) { var _a; return g.code == ((_a = queryInput.ids.campaignGroupId) === null || _a === void 0 ? void 0 : _a.toString()); });
|
|
126
|
+
result = [[group]];
|
|
127
|
+
if (queryInput.ids.campaignAdId) {
|
|
128
|
+
var ad = groupOptions.find(function (g) {
|
|
129
|
+
return g.code ==
|
|
130
|
+
"".concat(queryInput.ids.campaignGroupId, "&").concat(queryInput.ids.campaignAdId);
|
|
131
|
+
});
|
|
132
|
+
result = [[group, ad]];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
};
|
|
137
|
+
var dataConvert = convertDataSetPattern(eventData);
|
|
138
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(ChartFilter_1.default, { isExportType: false, subCampaigns: subCampaigns, queryInput: queryInput, onChangeQueryInput: changeQueryInput, onQueryData: queryData, onExportData: function () {
|
|
139
|
+
return exportData(queryInput.time, queryInput.placeIds, queryInput.ids);
|
|
140
|
+
}, domains: domains }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: isLoading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, sx: {
|
|
141
|
+
border: '1px solid #ccc',
|
|
142
|
+
paddingTop: 4,
|
|
143
|
+
marginTop: 2,
|
|
144
|
+
marginLeft: -1,
|
|
145
|
+
}, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 7 }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, children: (0, jsx_runtime_1.jsx)(MultipleHierarchicalChoice_1.MultipleHierarchicalChoice, { onChange: handleGroupChange, options: groupOptions, placeholder: t('Campaign.SelectGroup'), label: t('Common.ViewBy'), value: getValue() }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 1 }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
146
|
+
padding: function (theme) { return theme.spacing(1); },
|
|
147
|
+
paddingLeft: function (theme) { return theme.spacing(16); },
|
|
148
|
+
paddingRight: function (theme) { return theme.spacing(16); },
|
|
149
|
+
height: '435px',
|
|
150
|
+
}, children: (0, jsx_runtime_1.jsx)(AWING_1.BarLineComponent, { chart: chart, dataChart: dataConvert, type: 'line', data: [], optionCustom: {
|
|
151
|
+
scales: {
|
|
152
|
+
y: {
|
|
153
|
+
title: {
|
|
154
|
+
text: t('Statistics.View'),
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
yAxis: {
|
|
158
|
+
display: false,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
} }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, sx: {
|
|
162
|
+
marginLeft: -1,
|
|
163
|
+
marginBottom: 1,
|
|
164
|
+
}, children: (0, jsx_runtime_1.jsx)(Table_1.default, { data: tableData }) })] })) })] }));
|
|
165
|
+
};
|
|
166
|
+
exports.default = Event;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CampaignGroupModel } from '../../../../../ACM-AXN/Campaign/Types';
|
|
2
|
+
interface Props {
|
|
3
|
+
campaignId: string;
|
|
4
|
+
startDate: Date;
|
|
5
|
+
endDate: Date;
|
|
6
|
+
subCampaigns: CampaignGroupModel[];
|
|
7
|
+
domains: any[];
|
|
8
|
+
}
|
|
9
|
+
declare const EventContainer: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default EventContainer;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
30
|
+
var react_1 = __importStar(require("react"));
|
|
31
|
+
var component_1 = __importDefault(require("./component"));
|
|
32
|
+
var Helpers_1 = require("../../../../../Utils/Helpers");
|
|
33
|
+
var Context_1 = __importDefault(require("../Context"));
|
|
34
|
+
var EventContainer = function (props) {
|
|
35
|
+
var campaignId = props.campaignId, startDate = props.startDate, endDate = props.endDate, subCampaigns = props.subCampaigns, domains = props.domains;
|
|
36
|
+
var client = (0, Context_1.default)().services;
|
|
37
|
+
var _a = react_1.default.useState(true), isLoading = _a[0], setIsLoading = _a[1];
|
|
38
|
+
var _b = react_1.default.useState([]), eventData = _b[0], setEventData = _b[1];
|
|
39
|
+
var placesOfCampaign = (0, react_1.useMemo)(function () {
|
|
40
|
+
var result = [];
|
|
41
|
+
subCampaigns.forEach(function (sub) {
|
|
42
|
+
var _a;
|
|
43
|
+
(_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
(_b = (_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.concat((ad === null || ad === void 0 ? void 0 : ad.deletedPlaces) || [])) === null || _b === void 0 ? void 0 : _b.forEach(function (place) {
|
|
46
|
+
if (!result.find(function (r) { return r.placeId === place.placeId; })) {
|
|
47
|
+
result.push(place);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
return result;
|
|
53
|
+
}, [subCampaigns]);
|
|
54
|
+
var getEventData = function (time, placeIds, ids) {
|
|
55
|
+
setIsLoading(true);
|
|
56
|
+
// client
|
|
57
|
+
// .statisticCampaignGetAnalyticEvent({
|
|
58
|
+
// startDate: time.startDate.toDateString(),
|
|
59
|
+
// endDate: time.endDate.toDateString(),
|
|
60
|
+
// campaignAdGroups: [{ campaignId, ...ids }],
|
|
61
|
+
// placeIds,
|
|
62
|
+
// } as any)
|
|
63
|
+
// .then(setEventData)
|
|
64
|
+
// .finally(() => setIsLoading(false))
|
|
65
|
+
};
|
|
66
|
+
var exportData = function (time, placeIds, ids) {
|
|
67
|
+
var places = placesOfCampaign.filter(function (p) {
|
|
68
|
+
return placeIds.includes(p.placeId);
|
|
69
|
+
});
|
|
70
|
+
// client
|
|
71
|
+
// .statisticCampaignGetEvents({
|
|
72
|
+
// startDate: time.startDate.toDateString(),
|
|
73
|
+
// endDate: time.endDate.toDateString(),
|
|
74
|
+
// campaignAdGroups: [{ campaignId, ...ids }],
|
|
75
|
+
// placeIds,
|
|
76
|
+
// } as any)
|
|
77
|
+
// .then((responses) => {
|
|
78
|
+
// // if (responses.data.status === STATUS_CODE.OK) {
|
|
79
|
+
// downloadWithDataSet(
|
|
80
|
+
// `export_analytic_event_campaign_${campaignId}`,
|
|
81
|
+
// convertToExportData(responses, places)
|
|
82
|
+
// )
|
|
83
|
+
// })
|
|
84
|
+
};
|
|
85
|
+
function convertToExportData(data, places) {
|
|
86
|
+
var columns = ['Place', 'Mac Address', 'Created date', 'Event label'];
|
|
87
|
+
var exportData = [];
|
|
88
|
+
data === null || data === void 0 ? void 0 : data.forEach(function (el) {
|
|
89
|
+
var place = places.find(function (x) { return x.placeId === el.placeId; });
|
|
90
|
+
var rowData = [
|
|
91
|
+
place ? place.name : el.placeId,
|
|
92
|
+
el.macAddress,
|
|
93
|
+
(0, Helpers_1.dateTimeToString)((0, Helpers_1.convertTimestampToDateTime)(el.createdDate), 'DD/MM/YYYY, HH'),
|
|
94
|
+
el.eventLabel,
|
|
95
|
+
];
|
|
96
|
+
var eventObject = JSON.parse(el.eventObject);
|
|
97
|
+
var keyNames = Object.keys(eventObject);
|
|
98
|
+
var _loop_1 = function (i) {
|
|
99
|
+
if (!columns.some(function (x) { return x === keyNames[i]; })) {
|
|
100
|
+
columns.push(keyNames[i]);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
for (var i = 0; i < keyNames.length; i++) {
|
|
104
|
+
_loop_1(i);
|
|
105
|
+
}
|
|
106
|
+
for (var i = 4; i < columns.length; i++) {
|
|
107
|
+
var dataObj = eventObject[columns[i]];
|
|
108
|
+
rowData.push(typeof dataObj === 'string'
|
|
109
|
+
? dataObj
|
|
110
|
+
: JSON.stringify(dataObj));
|
|
111
|
+
}
|
|
112
|
+
exportData.push(rowData);
|
|
113
|
+
});
|
|
114
|
+
return [
|
|
115
|
+
{
|
|
116
|
+
columns: columns,
|
|
117
|
+
data: exportData,
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
return ((0, jsx_runtime_1.jsx)(component_1.default, { startDate: startDate, endDate: endDate, subCampaigns: subCampaigns, isLoading: isLoading, eventData: eventData, getEventData: getEventData, exportData: exportData, domains: domains }));
|
|
122
|
+
};
|
|
123
|
+
exports.default = EventContainer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './container';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var container_1 = require("./container");
|
|
8
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(container_1).default; } });
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
var material_1 = require("@mui/material");
|
|
20
|
+
var ArrowDropDown_1 = __importDefault(require("@mui/icons-material/ArrowDropDown"));
|
|
21
|
+
var common_1 = require("./common");
|
|
22
|
+
var react_i18next_1 = require("react-i18next");
|
|
23
|
+
var options = Object.values(common_1.EXPORT_TYPES).map(function (type, idx) { return type; });
|
|
24
|
+
var SplitButtonExportType = function (props) {
|
|
25
|
+
var onSubmit = props.onSubmit;
|
|
26
|
+
var _a = react_1.default.useState(false), open = _a[0], setOpen = _a[1];
|
|
27
|
+
var anchorRef = react_1.default.useRef(null);
|
|
28
|
+
var _b = react_1.default.useState(0), selectedIndex = _b[0], setSelectedIndex = _b[1];
|
|
29
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
30
|
+
var handleClick = function () {
|
|
31
|
+
onSubmit(options[selectedIndex]);
|
|
32
|
+
};
|
|
33
|
+
var handleMenuItemClick = function (event, index) {
|
|
34
|
+
setSelectedIndex(index);
|
|
35
|
+
setOpen(false);
|
|
36
|
+
};
|
|
37
|
+
var handleToggle = function () {
|
|
38
|
+
setOpen(function (prevOpen) { return !prevOpen; });
|
|
39
|
+
};
|
|
40
|
+
var handleClose = function (event) {
|
|
41
|
+
var _a;
|
|
42
|
+
if (anchorRef.current && ((_a = anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
setOpen(false);
|
|
46
|
+
};
|
|
47
|
+
var translationText = {
|
|
48
|
+
Export: t('Campaign.ExportType.Export'),
|
|
49
|
+
Domain: t("Campaign.ExportType.Domain"),
|
|
50
|
+
Location: t('Campaign.ExportType.Location'),
|
|
51
|
+
LocationGroup: t('Campaign.ExportType.LocationGroup'),
|
|
52
|
+
};
|
|
53
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Grid, { container: true, direction: "column", alignItems: "center", children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: 12, children: [(0, jsx_runtime_1.jsxs)(material_1.ButtonGroup, { variant: "outlined", color: "inherit", ref: anchorRef, "aria-label": "split button", children: [(0, jsx_runtime_1.jsx)(material_1.Button, { onClick: handleClick, children: translationText[options[selectedIndex]] }), (0, jsx_runtime_1.jsx)(material_1.Button, { size: "small", "aria-controls": open ? 'split-button-menu' : undefined, "aria-expanded": open ? 'true' : undefined, "aria-label": "select merge strategy", "aria-haspopup": "menu", onClick: handleToggle, children: (0, jsx_runtime_1.jsx)(ArrowDropDown_1.default, {}) })] }), (0, jsx_runtime_1.jsx)(material_1.Popper, { style: { zIndex: 99999 }, open: open, anchorEl: anchorRef.current, transition: true, children: function (_a) {
|
|
54
|
+
var TransitionProps = _a.TransitionProps, placement = _a.placement;
|
|
55
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Grow, __assign({}, TransitionProps, { style: {
|
|
56
|
+
transformOrigin: placement === 'bottom'
|
|
57
|
+
? 'center-top'
|
|
58
|
+
: 'center-bottom',
|
|
59
|
+
}, children: (0, jsx_runtime_1.jsx)(material_1.Paper, { children: (0, jsx_runtime_1.jsx)(material_1.ClickAwayListener, { onClickAway: handleClose, children: (0, jsx_runtime_1.jsx)(material_1.MenuList, { id: "split-button-menu", children: options.map(function (option, index) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { selected: index === selectedIndex, onClick: function (event) {
|
|
60
|
+
return handleMenuItemClick(event, index);
|
|
61
|
+
}, children: translationText[option] }, option)); }) }) }) }) })));
|
|
62
|
+
} })] }) }));
|
|
63
|
+
};
|
|
64
|
+
exports.default = SplitButtonExportType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
var SplitButtonExportType_1 = __importDefault(require("./SplitButtonExportType"));
|
|
8
|
+
var enzyme_1 = require("enzyme");
|
|
9
|
+
var enzyme_adapter_react_16_1 = __importDefault(require("enzyme-adapter-react-16"));
|
|
10
|
+
(0, enzyme_1.configure)({ adapter: new enzyme_adapter_react_16_1.default() });
|
|
11
|
+
describe("SplitButtonExportType", function () {
|
|
12
|
+
var onSubmit = jest.fn();
|
|
13
|
+
it("renders without crashing", function () {
|
|
14
|
+
var wrapper = (0, enzyme_1.mount)((0, jsx_runtime_1.jsx)(SplitButtonExportType_1.default, { onSubmit: onSubmit }));
|
|
15
|
+
expect(wrapper.exists()).toBe(true);
|
|
16
|
+
});
|
|
17
|
+
it("calls onSubmit when option is selected", function () {
|
|
18
|
+
var wrapper = (0, enzyme_1.mount)((0, jsx_runtime_1.jsx)(SplitButtonExportType_1.default, { onSubmit: onSubmit }));
|
|
19
|
+
var buttons = wrapper.find("button");
|
|
20
|
+
buttons.at(1).simulate("click");
|
|
21
|
+
var options = wrapper.find("li");
|
|
22
|
+
options.at(1).simulate("click");
|
|
23
|
+
buttons.at(0).simulate("click");
|
|
24
|
+
expect(onSubmit).toHaveBeenCalledWith("Domain");
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CampaignGroupModel, PlaceFilter } from '../../../../ACM-AXN/Campaign/Types';
|
|
3
|
+
import { ShareType } from '../../../../ACM-AXN/Common/Enum';
|
|
4
|
+
import { IStatisticDTO, Timestamp } from '../../../../ACM-AXN/Common/Types';
|
|
5
|
+
import { BaseChartComponent } from 'react-chartjs-2/dist/types';
|
|
6
|
+
export interface IAudienceObjectOverview {
|
|
7
|
+
timeline?: number;
|
|
8
|
+
totalUser?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AudienceObjectReply {
|
|
11
|
+
audienceObjects?: IAudienceObjectOverview[] | undefined;
|
|
12
|
+
totalUser?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface IAnalyticEventSummary {
|
|
15
|
+
eventLabel?: string | undefined;
|
|
16
|
+
total?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface IAnalyticCampaignSummary {
|
|
19
|
+
campaignId?: string;
|
|
20
|
+
placeId?: string;
|
|
21
|
+
domainId?: string;
|
|
22
|
+
timeline?: number;
|
|
23
|
+
analyticEventSummaries?: IAnalyticEventSummary[] | undefined;
|
|
24
|
+
campaignGroupId?: number;
|
|
25
|
+
campaignAdId?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface AnalyticEventModel {
|
|
28
|
+
startDate?: string;
|
|
29
|
+
endDate?: string;
|
|
30
|
+
placeIds?: string[];
|
|
31
|
+
}
|
|
32
|
+
export interface AnalyticEventModelResponse {
|
|
33
|
+
eventLabel: string;
|
|
34
|
+
timeline: number;
|
|
35
|
+
total: number;
|
|
36
|
+
}
|
|
37
|
+
export interface AnalyticEvent {
|
|
38
|
+
eventLabel: string;
|
|
39
|
+
eventObject: string;
|
|
40
|
+
placeId: string;
|
|
41
|
+
domainId: string;
|
|
42
|
+
pageId: string;
|
|
43
|
+
campaignId: string;
|
|
44
|
+
campaignGroupId: number;
|
|
45
|
+
macAddress: string;
|
|
46
|
+
apMac: string;
|
|
47
|
+
sessionId: string;
|
|
48
|
+
createdDate: Timestamp;
|
|
49
|
+
campaignAdId: number;
|
|
50
|
+
}
|
|
51
|
+
export interface IDomain {
|
|
52
|
+
domainId?: string;
|
|
53
|
+
name?: string | undefined;
|
|
54
|
+
rateSharing?: number;
|
|
55
|
+
description?: string | undefined;
|
|
56
|
+
shareType?: ShareType;
|
|
57
|
+
}
|
|
58
|
+
export interface AnalyticDataProviderModel {
|
|
59
|
+
timeline: number;
|
|
60
|
+
view: number;
|
|
61
|
+
click: number;
|
|
62
|
+
ctr: number;
|
|
63
|
+
}
|
|
64
|
+
export interface IAudienceObjectOverview {
|
|
65
|
+
timeline?: number;
|
|
66
|
+
totalUser?: number;
|
|
67
|
+
}
|
|
68
|
+
export interface IAudienceObjectReply {
|
|
69
|
+
audienceObjects?: IAudienceObjectOverview[] | undefined;
|
|
70
|
+
totalUser?: number;
|
|
71
|
+
}
|
|
72
|
+
export type DateRange = {
|
|
73
|
+
startDate: Date;
|
|
74
|
+
endDate: Date;
|
|
75
|
+
};
|
|
76
|
+
export interface CampaignAnalyticService {
|
|
77
|
+
campaignStatisticGetEvents(body: AnalyticEventModel | undefined): Promise<AnalyticEvent[]>;
|
|
78
|
+
campaignStatisticGetCustomer(startDate: string | undefined, endDate: string | undefined, campaignId: string | undefined): Promise<AudienceObjectReply>;
|
|
79
|
+
campaignStatisticGet(body: IStatisticDTO | undefined): Promise<IAnalyticCampaignSummary[]>;
|
|
80
|
+
domainsGetAll?: () => Promise<IDomain[]>;
|
|
81
|
+
placesGetPagingByPlaceFilter: (pageIndex?: number, pageSize?: number, body?: PlaceFilter) => Promise<any>;
|
|
82
|
+
placesGetByPlaceFilter: (body?: PlaceFilter) => Promise<any[]>;
|
|
83
|
+
}
|
|
84
|
+
export interface CampaignAnalyticProps {
|
|
85
|
+
placeMultiSelectComponent: (p?: any) => JSX.Element;
|
|
86
|
+
chart: BaseChartComponent;
|
|
87
|
+
services: CampaignAnalyticService;
|
|
88
|
+
campaignId: string;
|
|
89
|
+
isNetwork?: boolean;
|
|
90
|
+
subCampaigns: CampaignGroupModel[];
|
|
91
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CampaignGroupModel } from '../../../../ACM-AXN/Campaign/Types';
|
|
2
|
+
export declare const getTime: (subCampaigns: CampaignGroupModel[]) => Record<string, any>;
|
|
3
|
+
export declare const extractEvent: (eventLabel?: string) => {
|
|
4
|
+
view: string;
|
|
5
|
+
eventName: string;
|
|
6
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractEvent = exports.getTime = void 0;
|
|
4
|
+
var Helpers_1 = require("../../../../Utils/Helpers");
|
|
5
|
+
var getTime = function (subCampaigns) {
|
|
6
|
+
var time = {};
|
|
7
|
+
subCampaigns.forEach(function (s) {
|
|
8
|
+
var _a;
|
|
9
|
+
(_a = s === null || s === void 0 ? void 0 : s.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (a) {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
if (!time.startDate ||
|
|
12
|
+
(time.startDate &&
|
|
13
|
+
((_a = a === null || a === void 0 ? void 0 : a.startDate) === null || _a === void 0 ? void 0 : _a.seconds) * 1000 <
|
|
14
|
+
time.startDate.getTime())) {
|
|
15
|
+
time.startDate = (0, Helpers_1.convertTimestampToDateTime)(a.startDate);
|
|
16
|
+
}
|
|
17
|
+
if (!time.endDate ||
|
|
18
|
+
(time.endDate &&
|
|
19
|
+
((_b = a === null || a === void 0 ? void 0 : a.endDate) === null || _b === void 0 ? void 0 : _b.seconds) * 1000 >
|
|
20
|
+
time.endDate.getTime())) {
|
|
21
|
+
time.endDate = (0, Helpers_1.convertTimestampToDateTime)(a.endDate);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
return time;
|
|
26
|
+
};
|
|
27
|
+
exports.getTime = getTime;
|
|
28
|
+
var extractEvent = function (eventLabel) {
|
|
29
|
+
if (eventLabel === void 0) { eventLabel = ''; }
|
|
30
|
+
var _a = eventLabel.match(/^(\d+)_([\s\S]*)$/) || [], view = _a[1], eventName = _a[2];
|
|
31
|
+
return { view: view, eventName: eventName };
|
|
32
|
+
};
|
|
33
|
+
exports.extractEvent = extractEvent;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
tabIndex: number;
|
|
4
|
+
onChangeTab: (newValue: number) => void;
|
|
5
|
+
tabPanel: ReactNode;
|
|
6
|
+
isNetwork?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const TabStatistic: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default TabStatistic;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
var react_i18next_1 = require("react-i18next");
|
|
5
|
+
var material_1 = require("@mui/material");
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var container_1 = require("./container");
|
|
8
|
+
var color = ['inherit', 'primary'];
|
|
9
|
+
var variant = ['outlined', 'contained'];
|
|
10
|
+
var TabStatistic = function (props) {
|
|
11
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
12
|
+
var tabIndex = props.tabIndex, onChangeTab = props.onChangeTab, tabPanel = props.tabPanel, isNetwork = props.isNetwork;
|
|
13
|
+
var translationText = (0, react_1.useMemo)(function () { return ({
|
|
14
|
+
analytic: t('Campaign.Analytic'),
|
|
15
|
+
event: t('Campaign.Event'),
|
|
16
|
+
customer: t('Campaign.Customer'),
|
|
17
|
+
title: t('Campaign.Statistic'),
|
|
18
|
+
}); }, [t]);
|
|
19
|
+
var handleChangeTab = function (event) {
|
|
20
|
+
onChangeTab(Number(event.target.tabIndex));
|
|
21
|
+
};
|
|
22
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, sx: { padding: function (theme) { return theme.spacing(2); } }, className: "ahihu", children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", sx: {
|
|
23
|
+
marginTop: function (theme) { return theme.spacing(1); },
|
|
24
|
+
marginLeft: function (theme) { return theme.spacing(2); },
|
|
25
|
+
}, children: translationText.title }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.ButtonGroup, { sx: {
|
|
26
|
+
marginTop: function (theme) { return theme.spacing(2); },
|
|
27
|
+
}, fullWidth: true, disableElevation: true, onClick: handleChangeTab, children: Object.entries(container_1.tabs).map(function (_a) {
|
|
28
|
+
var key = _a[0], value = _a[1];
|
|
29
|
+
return isNetwork && value === container_1.tabs.CUSTOMER ? null : ((0, jsx_runtime_1.jsx)(material_1.Button, { tabIndex: value, sx: { fontSize: '0.8rem' }, color: color[Number(tabIndex === value)], variant: variant[Number(tabIndex === value)], children: Object.values(translationText)[value] }, key));
|
|
30
|
+
}) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 3 })] }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, sx: { marginTop: function (theme) { return theme.spacing(3); } }, children: tabPanel })] }));
|
|
31
|
+
};
|
|
32
|
+
exports.default = TabStatistic;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CampaignAnalyticProps } from './Types';
|
|
2
|
+
export declare const tabs: {
|
|
3
|
+
ANALYTIC: number;
|
|
4
|
+
EVENT: number;
|
|
5
|
+
CUSTOMER: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const TabStatistic: (props: CampaignAnalyticProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default TabStatistic;
|