awing-library 2.1.107-beta → 2.1.109-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/CreateOrEdit/Recoils.js +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdDetail.js +1 -1
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/EditAds.js +0 -2
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +152 -61
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +1 -0
- package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +4 -2
- package/lib/ACM-AXN/Campaign/Types.d.ts +6 -4
- package/lib/ACM-AXN/Campaign/Types.js +7 -6
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +17 -1
- package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.js +3 -4
- package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +1 -1
- package/lib/ACM-AXN/ViewTemplate/container.js +3 -2
- package/lib/ACM-AXN/ViewTemplate/interface.d.ts +1 -1
- package/lib/AWING/DataForm/DataInput.js +1 -1
- package/lib/AWING/DataGrid/index.js +2 -0
- package/lib/translate/en/translation.json +8 -1
- package/lib/translate/vi/translation.json +8 -1
- package/package.json +1 -1
|
@@ -174,7 +174,7 @@ function AdDetail(props) {
|
|
|
174
174
|
});
|
|
175
175
|
}, handleValid: function (valid) {
|
|
176
176
|
return setAdValid(function (pre) { return (__assign(__assign({}, pre), { dateRange: valid })); });
|
|
177
|
-
}, textFieldProps: { fullWidth: true, required: true }
|
|
177
|
+
}, textFieldProps: { fullWidth: true, required: true } }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(PlaceMultiSelect, { isCreateCampaign: true, defaultValue: ad.placeFilter, onDetailSubmit: function (places, placeFilter) {
|
|
178
178
|
handleChangeStatus('placeFilter', (0, Utils_1.placeFilterValid)(placeFilter, places));
|
|
179
179
|
onChange(function (pre) { return (__assign(__assign({}, pre), { placeFilter: placeFilter, places: places })); });
|
|
180
180
|
}, TextFieldProps: {
|
|
@@ -15,7 +15,6 @@ var Utils_1 = require("../../Utils");
|
|
|
15
15
|
var Helpers_1 = require("../../../../Utils/Helpers");
|
|
16
16
|
var ClassicBaseDrawer_1 = __importDefault(require("../../../../Commons/Components/ClassicBaseDrawer"));
|
|
17
17
|
var Context_1 = require("../../../../Context");
|
|
18
|
-
var moment_1 = __importDefault(require("moment"));
|
|
19
18
|
function EditAds(props) {
|
|
20
19
|
var t = (0, react_i18next_1.useTranslation)().t;
|
|
21
20
|
var PlaceFilterField = (0, Hooks_1.default)().placeMultiSelectComponent;
|
|
@@ -77,7 +76,6 @@ function EditAds(props) {
|
|
|
77
76
|
type: 'date-range',
|
|
78
77
|
label: t('Campaign.Ad.Time'),
|
|
79
78
|
required: true,
|
|
80
|
-
isDayBlocked: function (day) { return (0, moment_1.default)().startOf('day').valueOf() > day.valueOf(); }
|
|
81
79
|
},
|
|
82
80
|
{
|
|
83
81
|
fieldName: 'isReserved',
|
|
@@ -10,99 +10,190 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
13
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
37
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
15
|
-
var react_1 = require("react");
|
|
38
|
+
var react_1 = __importStar(require("react"));
|
|
16
39
|
var recoil_1 = require("recoil");
|
|
17
40
|
var react_i18next_1 = require("react-i18next");
|
|
18
|
-
var material_1 = require("@mui/material");
|
|
19
41
|
// import { CampaignGroup, CampaignTicket } from '../../types'
|
|
20
42
|
var lodash_1 = require("lodash");
|
|
21
43
|
var Types_1 = require("../../Types");
|
|
22
44
|
var Utils_1 = require("../../Utils");
|
|
23
45
|
var Recoils_1 = require("../Recoils");
|
|
46
|
+
var AWING_1 = require("../../../../AWING");
|
|
24
47
|
function SubCampaignDetail(props) {
|
|
25
48
|
var t = (0, react_i18next_1.useTranslation)().t;
|
|
26
49
|
var subCampaign = props.subCampaign, onSubCampaignChange = props.onSubCampaignChange, onChangeSubCampaignStatus = props.onChangeSubCampaignStatus;
|
|
27
|
-
var getFormValid = function () { return (
|
|
28
|
-
name:
|
|
29
|
-
|
|
30
|
-
(0, Utils_1.
|
|
31
|
-
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
50
|
+
var getFormValid = function () { return ({
|
|
51
|
+
name: (0, Utils_1.nameValid)(subCampaign.name),
|
|
52
|
+
bookingAmount: !(0, Utils_1.checkPriority)(subCampaign.priority, Types_1.CampaignPriority.ClassB) || (0, Utils_1.bookingValid)(subCampaign.bookingAmount),
|
|
53
|
+
bonusAmount: (0, Utils_1.bonusValid)(subCampaign.bonusAmount),
|
|
54
|
+
billingUnit: subCampaign.billingUnit !== null,
|
|
55
|
+
}); };
|
|
56
|
+
var cacheSubId = react_1.default.useRef();
|
|
57
|
+
(0, react_1.useEffect)(function () {
|
|
58
|
+
cacheSubId.current = subCampaign.id;
|
|
59
|
+
return function () {
|
|
60
|
+
cacheSubId.current = undefined;
|
|
61
|
+
};
|
|
62
|
+
}, [subCampaign.id]);
|
|
36
63
|
var isCreate = (0, recoil_1.useRecoilValue)(Recoils_1.isCreateState);
|
|
37
64
|
(0, react_1.useEffect)(function () {
|
|
38
|
-
setSubValid(getFormValid());
|
|
39
65
|
onSubCampaignChange(function (prev) { return (0, lodash_1.cloneDeep)(prev); });
|
|
40
66
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
-
}, [subCampaign.id]);
|
|
67
|
+
}, [subCampaign.id, onSubCampaignChange]);
|
|
42
68
|
(0, react_1.useEffect)(function () {
|
|
43
|
-
onChangeSubCampaignStatus(
|
|
69
|
+
onChangeSubCampaignStatus(Object.values(getFormValid()).every(Boolean));
|
|
44
70
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
|
-
}, [
|
|
71
|
+
}, [subCampaign]);
|
|
46
72
|
/**
|
|
47
73
|
* Hàm cập nhật trạng thái các trường của chiến dịch con
|
|
48
74
|
* @param fieldName Tên trường cần cập nhật
|
|
49
75
|
* @param status Trạng thái mới
|
|
50
76
|
*/
|
|
51
|
-
var handleChangeStatus = function (fieldName, status) {
|
|
52
|
-
if (subValid[fieldName] !== status)
|
|
53
|
-
setSubValid(function (pre) {
|
|
54
|
-
var _a;
|
|
55
|
-
return (__assign(__assign({}, pre), (_a = {}, _a[fieldName] = status, _a)));
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
77
|
var translationText = {
|
|
59
78
|
name: t('Campaign.Name'),
|
|
60
79
|
ticket: t('Campaign.Ticket'),
|
|
80
|
+
BillingUnit: t('Campaign.BillingUnit.Title'),
|
|
61
81
|
priority: t('Campaign.Detail.Priority'),
|
|
62
82
|
booking: t('Campaign.BookingText'),
|
|
63
83
|
bonus: t('Campaign.BonusText'),
|
|
64
84
|
reserved: t('Campaign.Reserved'),
|
|
65
85
|
none: t('Common.None'),
|
|
66
86
|
helperText: t('Common.Required'),
|
|
87
|
+
notNegative: t('Common.NotNegative'),
|
|
67
88
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
89
|
+
var fields = react_1.default.useMemo(function () {
|
|
90
|
+
var tempField = [
|
|
91
|
+
{
|
|
92
|
+
fieldName: 'name',
|
|
93
|
+
type: 'text',
|
|
94
|
+
label: translationText.name,
|
|
95
|
+
required: true,
|
|
96
|
+
gridSize: 4,
|
|
97
|
+
pattern: false,
|
|
98
|
+
length: 500,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
fieldName: 'ticket',
|
|
102
|
+
type: 'select',
|
|
103
|
+
label: translationText.ticket,
|
|
104
|
+
required: true,
|
|
105
|
+
gridSize: 4,
|
|
106
|
+
disabled: isCreate,
|
|
107
|
+
options: [
|
|
108
|
+
{
|
|
109
|
+
text: t('Campaign.Active'),
|
|
110
|
+
value: Types_1.CampaignTicket.ACTIVE,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
text: t('Campaign.InActive'),
|
|
114
|
+
value: Types_1.CampaignTicket.INACTIVE,
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
fieldName: 'priority',
|
|
120
|
+
type: 'select',
|
|
121
|
+
gridSize: 4,
|
|
122
|
+
label: translationText.priority,
|
|
123
|
+
required: true,
|
|
124
|
+
options: Object.values(Types_1.CampaignPriority).map(function (priority) { return ({
|
|
125
|
+
text: t("Campaign.".concat(priority)),
|
|
126
|
+
value: priority,
|
|
127
|
+
}); }),
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
if ((0, Utils_1.checkPriority)(subCampaign.priority, Types_1.CampaignPriority.ClassB)) {
|
|
131
|
+
tempField.push({
|
|
132
|
+
fieldName: 'bookingAmount',
|
|
133
|
+
type: 'number',
|
|
134
|
+
gridSize: 4,
|
|
135
|
+
required: true,
|
|
136
|
+
label: translationText.booking,
|
|
137
|
+
InputProps: {
|
|
138
|
+
type: 'number',
|
|
139
|
+
},
|
|
140
|
+
onValidate: function (value) { return (0, Utils_1.bookingValid)(Number(value)); },
|
|
141
|
+
}, {
|
|
142
|
+
fieldName: 'bonusAmount',
|
|
143
|
+
type: 'number',
|
|
144
|
+
gridSize: 4,
|
|
145
|
+
required: true,
|
|
146
|
+
label: translationText.booking,
|
|
147
|
+
InputProps: {
|
|
148
|
+
type: 'number',
|
|
149
|
+
},
|
|
150
|
+
onValidate: function (value) { return (0, Utils_1.bonusValid)(Number(value)); },
|
|
151
|
+
}, {
|
|
152
|
+
fieldName: 'billingUnit',
|
|
153
|
+
type: 'select',
|
|
154
|
+
gridSize: 4,
|
|
155
|
+
label: translationText.BillingUnit,
|
|
156
|
+
required: true,
|
|
157
|
+
value: String(subCampaign.billingUnit),
|
|
158
|
+
onValidate: function (value) { return value !== null; },
|
|
159
|
+
options: Object.values(Types_1.AnalyticType)
|
|
160
|
+
.filter(function (item) { return !isNaN(Number(item)); })
|
|
161
|
+
.map(function (item) { return ({
|
|
162
|
+
text: t("Campaign.BillingUnit.".concat((0, lodash_1.capitalize)((0, lodash_1.camelCase)(Types_1.AnalyticType[item])))),
|
|
163
|
+
value: item,
|
|
164
|
+
}); }),
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
tempField.push({
|
|
168
|
+
fieldName: 'isReserved',
|
|
169
|
+
type: 'checkbox',
|
|
170
|
+
gridSize: 4,
|
|
171
|
+
label: translationText.reserved,
|
|
172
|
+
});
|
|
173
|
+
return tempField;
|
|
174
|
+
},
|
|
175
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
176
|
+
[subCampaign]);
|
|
177
|
+
var handleUpdate = react_1.default.useCallback(function (data, valid, fieldName) {
|
|
178
|
+
if (!fieldName || cacheSubId.current !== subCampaign.id)
|
|
179
|
+
return;
|
|
180
|
+
onSubCampaignChange(function (pre) {
|
|
181
|
+
var _a;
|
|
182
|
+
return fieldName === 'priority'
|
|
183
|
+
? __assign(__assign(__assign(__assign({}, pre), { priority: data[fieldName] }), ((0, Utils_1.checkPriority)(data[fieldName], Types_1.CampaignPriority.ClassB)
|
|
184
|
+
? {
|
|
185
|
+
bookingAmount: 10,
|
|
186
|
+
billingUnit: null,
|
|
187
|
+
}
|
|
188
|
+
: {
|
|
189
|
+
bookingAmount: 0,
|
|
190
|
+
billingUnit: 0,
|
|
191
|
+
})), { bonusAmount: 0 }) : __assign(__assign({}, pre), (_a = {}, _a[fieldName] = data[fieldName], _a));
|
|
192
|
+
});
|
|
193
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
194
|
+
}, [subCampaign.id, onSubCampaignChange]);
|
|
195
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(AWING_1.DataForm, { padding: "none", fields: fields, oldValue: __assign(__assign({}, subCampaign), { priority: isNaN(Number(subCampaign.priority))
|
|
196
|
+
? subCampaign.priority
|
|
197
|
+
: Object.values(Types_1.CampaignPriority)[subCampaign.priority] }), onUpdate: handleUpdate }) }));
|
|
107
198
|
}
|
|
108
199
|
exports.default = SubCampaignDetail;
|
|
@@ -26,6 +26,7 @@ var subCampaignMock = {
|
|
|
26
26
|
ticket: Types_1.CampaignTicket.INACTIVE,
|
|
27
27
|
priority: Types_1.CampaignPriority.ClassB,
|
|
28
28
|
isReserved: false,
|
|
29
|
+
billingUnit: 1,
|
|
29
30
|
};
|
|
30
31
|
describe('<SubCampaignDetail />', function () {
|
|
31
32
|
it('should render with correct information classB', function () {
|
|
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
27
|
var material_1 = require("@mui/material");
|
|
28
28
|
var lodash_1 = __importDefault(require("lodash"));
|
|
29
|
+
var react_1 = __importDefault(require("react"));
|
|
29
30
|
var recoil_1 = require("recoil");
|
|
30
31
|
var Recoils_1 = require("../Recoils");
|
|
31
32
|
var Types_1 = require("../../Types");
|
|
@@ -103,7 +104,7 @@ function TabSubCampaign() {
|
|
|
103
104
|
* Cập nhật chiến dịch con
|
|
104
105
|
* @param subCampaignSetStateAction Thông tin thay đổi của chiến dịch con
|
|
105
106
|
*/
|
|
106
|
-
var handleUpdateSubCampaign = function (subCampaignSetStateAction) {
|
|
107
|
+
var handleUpdateSubCampaign = react_1.default.useCallback(function (subCampaignSetStateAction) {
|
|
107
108
|
setSubCampaigns(function (preSubCampains) {
|
|
108
109
|
var newSubCampaigns = lodash_1.default.cloneDeep(preSubCampains);
|
|
109
110
|
var selectedSubCampaignIndex = newSubCampaigns.findIndex(function (x) { return x.campaignGroup.id === selectedSubCampaignId[0]; });
|
|
@@ -120,7 +121,8 @@ function TabSubCampaign() {
|
|
|
120
121
|
}
|
|
121
122
|
return newSubCampaigns;
|
|
122
123
|
});
|
|
123
|
-
|
|
124
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
125
|
+
}, [selectedSubCampaignId]);
|
|
124
126
|
/**
|
|
125
127
|
* Tạo quảng cáo mới
|
|
126
128
|
* @param newAd Thông tin của quảng cáo mới
|
|
@@ -79,6 +79,7 @@ export type CampaignGroup = {
|
|
|
79
79
|
* Đánh dấu nhóm chiến dịch không được xoá
|
|
80
80
|
*/
|
|
81
81
|
cantBeDelete?: boolean;
|
|
82
|
+
billingUnit: AnalyticType;
|
|
82
83
|
};
|
|
83
84
|
export type CampaignAd = {
|
|
84
85
|
id: number;
|
|
@@ -215,6 +216,11 @@ export declare enum CampaignPriority {
|
|
|
215
216
|
ClassB = "ClassB",
|
|
216
217
|
ClassC = "ClassC"
|
|
217
218
|
}
|
|
219
|
+
export declare enum AnalyticType {
|
|
220
|
+
VIEW = 0,// Impression
|
|
221
|
+
AUTHENTICATION = 1,// Engagement / Spot
|
|
222
|
+
CLICK = 2
|
|
223
|
+
}
|
|
218
224
|
export declare enum CampaignTicket {
|
|
219
225
|
ACTIVE = 0,
|
|
220
226
|
INACTIVE = 1
|
|
@@ -277,10 +283,6 @@ export declare enum Operator {
|
|
|
277
283
|
*/
|
|
278
284
|
In = 7
|
|
279
285
|
}
|
|
280
|
-
export declare enum AnalyticType {
|
|
281
|
-
AnalyticView = 1,
|
|
282
|
-
AnalyticEvent = 2
|
|
283
|
-
}
|
|
284
286
|
export interface IPagedListOfCampaignModel {
|
|
285
287
|
items: CampaignModel[];
|
|
286
288
|
pageCount: number;
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Operator = exports.CampaignRuleType = exports.AdType = exports.CampaignTicket = exports.AnalyticType = exports.CampaignPriority = void 0;
|
|
4
4
|
var CampaignPriority;
|
|
5
5
|
(function (CampaignPriority) {
|
|
6
6
|
CampaignPriority["ClassA"] = "ClassA";
|
|
7
7
|
CampaignPriority["ClassB"] = "ClassB";
|
|
8
8
|
CampaignPriority["ClassC"] = "ClassC";
|
|
9
9
|
})(CampaignPriority || (exports.CampaignPriority = CampaignPriority = {}));
|
|
10
|
+
var AnalyticType;
|
|
11
|
+
(function (AnalyticType) {
|
|
12
|
+
AnalyticType[AnalyticType["VIEW"] = 0] = "VIEW";
|
|
13
|
+
AnalyticType[AnalyticType["AUTHENTICATION"] = 1] = "AUTHENTICATION";
|
|
14
|
+
AnalyticType[AnalyticType["CLICK"] = 2] = "CLICK";
|
|
15
|
+
})(AnalyticType || (exports.AnalyticType = AnalyticType = {}));
|
|
10
16
|
var CampaignTicket;
|
|
11
17
|
(function (CampaignTicket) {
|
|
12
18
|
CampaignTicket[CampaignTicket["ACTIVE"] = 0] = "ACTIVE";
|
|
@@ -74,8 +80,3 @@ var Operator;
|
|
|
74
80
|
*/
|
|
75
81
|
Operator[Operator["In"] = 7] = "In";
|
|
76
82
|
})(Operator || (exports.Operator = Operator = {}));
|
|
77
|
-
var AnalyticType;
|
|
78
|
-
(function (AnalyticType) {
|
|
79
|
-
AnalyticType[AnalyticType["AnalyticView"] = 1] = "AnalyticView";
|
|
80
|
-
AnalyticType[AnalyticType["AnalyticEvent"] = 2] = "AnalyticEvent";
|
|
81
|
-
})(AnalyticType || (exports.AnalyticType = AnalyticType = {}));
|
|
@@ -1,4 +1,15 @@
|
|
|
1
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
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -170,6 +181,11 @@ var ViewContent = function (_a) {
|
|
|
170
181
|
onChange(['validProcessStatus'], processValue);
|
|
171
182
|
}, onNotifyError: function (errorMessage) {
|
|
172
183
|
appHelper.snackbar('error', errorMessage);
|
|
173
|
-
}, onUploadFile: onUploadFile
|
|
184
|
+
}, onUploadFile: onUploadFile, onChangeEvent: function (values) {
|
|
185
|
+
setEvent(function (prev) {
|
|
186
|
+
return prev.filter(function (item) { return item.viewNumber !== viewNumber + 1; }).concat(values.map(function (value) { return (__assign(__assign({}, value), { viewNumber: viewNumber + 1, pageId: pageId })); }));
|
|
187
|
+
});
|
|
188
|
+
isUniq.current = false;
|
|
189
|
+
} }) }) })) })) }));
|
|
174
190
|
};
|
|
175
191
|
exports.default = ViewContent;
|
|
@@ -57,10 +57,9 @@ var TabView = function (_a) {
|
|
|
57
57
|
var isCreate = _a.isCreate;
|
|
58
58
|
var _b = (0, recoil_1.useRecoilState)((0, Recoil_1.pageState)('views')), _c = _b[0], views = _c.views, page = _c.page, setView = _b[1];
|
|
59
59
|
var _d = react_1.default.useState(0), activeViewIndex = _d[0], setActiveViewIndex = _d[1];
|
|
60
|
-
var _e = react_1.default.useState(
|
|
61
|
-
var _f = react_1.default.useState([]),
|
|
62
|
-
var _g =
|
|
63
|
-
var _h = (0, Context_1.default)(), service = _h.service, pageCode = _h.pageCode;
|
|
60
|
+
var _e = react_1.default.useState([]), directories = _e[0], setDirectories = _e[1];
|
|
61
|
+
var _f = react_1.default.useState([]), templateTypes = _f[0], setTemplateTypes = _f[1];
|
|
62
|
+
var _g = (0, Context_1.default)(), service = _g.service, pageCode = _g.pageCode;
|
|
64
63
|
var appHelper = (0, Context_2.useAwing)().appHelper;
|
|
65
64
|
var t = (0, react_i18next_1.useTranslation)().t;
|
|
66
65
|
react_1.default.useEffect(function () {
|
|
@@ -218,7 +218,7 @@ function updateStateByPageModel(pageModel) {
|
|
|
218
218
|
fieldsRequireStatus: false,
|
|
219
219
|
isChanged: false,
|
|
220
220
|
verifiedStatus: enums_1.VERIFIED_STATUS.NOT_VERIFIED,
|
|
221
|
-
}); });
|
|
221
|
+
}); }).sort(function (view1, view2) { return view1.viewDatas.at(-1).viewNumber - view2.viewDatas.at(-1).viewNumber; });
|
|
222
222
|
draft.page = page;
|
|
223
223
|
draft.commonHtml = commonHtml;
|
|
224
224
|
draft.viewEvents = viewEvents;
|
|
@@ -37,6 +37,7 @@ var react_1 = require("react");
|
|
|
37
37
|
var react_i18next_1 = require("react-i18next");
|
|
38
38
|
var i18n_1 = __importDefault(require("../../i18n"));
|
|
39
39
|
var Form_1 = require("../../AWING/Form");
|
|
40
|
+
var Event_1 = __importDefault(require("./TemplateField/Event"));
|
|
40
41
|
function ViewTemplate(_a) {
|
|
41
42
|
var _b = _a.templateDatas, templateDatas = _b === void 0 ? [] : _b, pagePath = _a.pagePath, _c = _a.enablePreview, enablePreview = _c === void 0 ? true : _c, _d = _a.advanceFields, advanceFields = _d === void 0 ? [] : _d, _e = _a.templateLabelName, templateLabelName = _e === void 0 ? "" : _e, _f = _a.domainId, domainId = _f === void 0 ? "" : _f, _g = _a.validStatus, validStatus = _g === void 0 ? true : _g, _h = _a.scriptAutoField, scriptAutoField = _h === void 0 ? "" : _h, _j = _a.scriptValidate, scriptValidate = _j === void 0 ? "" : _j, configs = _a.configs, onChange = _a.onChange, _k = _a.onChangeViewValid, onChangeViewValid = _k === void 0 ? function (status) {
|
|
42
43
|
console.log(status);
|
|
@@ -88,7 +89,7 @@ function ViewTemplate(_a) {
|
|
|
88
89
|
return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 4, children: [(0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: enablePreview ? 8 : 12, children: [templateLabelName && ((0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "body1", style: {
|
|
89
90
|
fontWeight: "bold",
|
|
90
91
|
textTransform: "uppercase",
|
|
91
|
-
}, children: templateLabelName })), fields && renderFields(fields, false),
|
|
92
|
+
}, children: templateLabelName })), fields && renderFields(fields, false), (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { id: "advance-option", style: {
|
|
92
93
|
display: "flex",
|
|
93
94
|
flexDirection: "row",
|
|
94
95
|
justifyContent: "space-between",
|
|
@@ -96,7 +97,7 @@ function ViewTemplate(_a) {
|
|
|
96
97
|
cursor: "pointer",
|
|
97
98
|
}, onClick: function () {
|
|
98
99
|
setAdvanceOptionExpand(!advanceOptionExpand);
|
|
99
|
-
}, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { style: { fontWeight: "bold" }, children: t("ViewTemplate.AdvanceOption") }), (0, jsx_runtime_1.jsx)(material_1.IconButton, { children: advanceOptionExpand ? ((0, jsx_runtime_1.jsx)(icons_material_1.ExpandLess, {})) : ((0, jsx_runtime_1.jsx)(icons_material_1.ExpandMore, {})) })] }), advanceOptionExpand && ((0, jsx_runtime_1.
|
|
100
|
+
}, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { style: { fontWeight: "bold" }, children: t("ViewTemplate.AdvanceOption") }), (0, jsx_runtime_1.jsx)(material_1.IconButton, { children: advanceOptionExpand ? ((0, jsx_runtime_1.jsx)(icons_material_1.ExpandLess, {})) : ((0, jsx_runtime_1.jsx)(icons_material_1.ExpandMore, {})) })] }), advanceOptionExpand && ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, children: [fields && advanceFields.length > 0 && renderFields(fields, true), (0, jsx_runtime_1.jsx)(Event_1.default, __assign({}, props))] }))] })] }), enablePreview && ((0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: 4, children: [(0, jsx_runtime_1.jsx)(Preview_1.default, { domainId: domainId || "", validStatus: validStatus, configs: CONFIGS, pagePath: pagePath, templateDatas: templateDatas }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "caption", children: t("ViewTemplate.PreviewLoadingNote") })] }))] }));
|
|
100
101
|
}
|
|
101
102
|
exports.default = ViewTemplate;
|
|
102
103
|
var getChilds = function (fields, fieldInfo) {
|
|
@@ -49,7 +49,7 @@ export interface FieldProps {
|
|
|
49
49
|
onNotifyError: (errorMessage: string) => void;
|
|
50
50
|
onUploadFile: (files: any[]) => Promise<string>;
|
|
51
51
|
}
|
|
52
|
-
export interface ViewTemplateProps extends
|
|
52
|
+
export interface ViewTemplateProps extends EventsProps {
|
|
53
53
|
templateDatas: FieldInfo[];
|
|
54
54
|
/**
|
|
55
55
|
* Đường dẫn tuyệt đối các file của page
|
|
@@ -46,7 +46,7 @@ function DataInput(props) {
|
|
|
46
46
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
47
47
|
var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
|
|
48
48
|
var fieldDefinition = props.fieldDefinition, onChange = props.onChange, value = props.value, error = props.error, disableHelperText = props.disableHelperText;
|
|
49
|
-
var fieldName = fieldDefinition.fieldName, type = fieldDefinition.type, onValidate = fieldDefinition.onValidate, min = fieldDefinition.min, max = fieldDefinition.max, other = __rest(fieldDefinition, ["fieldName", "type", "onValidate", "min", "max"]);
|
|
49
|
+
var fieldName = fieldDefinition.fieldName, type = fieldDefinition.type, onValidate = fieldDefinition.onValidate, min = fieldDefinition.min, max = fieldDefinition.max, pattern = fieldDefinition.pattern, other = __rest(fieldDefinition, ["fieldName", "type", "onValidate", "min", "max", "pattern"]);
|
|
50
50
|
var _k = react_2.default.useState(t('Common.InvalidData')), errorText = _k[0], setErrorText = _k[1];
|
|
51
51
|
var checkValidationValue = function (fieldDefinition, val) {
|
|
52
52
|
if (!fieldDefinition.required &&
|
|
@@ -74,9 +74,11 @@ var SpanSortIndex = (0, styles_1.styled)('span')({
|
|
|
74
74
|
});
|
|
75
75
|
var DataGrid = function (props) {
|
|
76
76
|
var columns = props.columns, rows = props.rows, _a = props.hideHeader, hideHeader = _a === void 0 ? false : _a, spanningRows = props.spanningRows, _b = props.spanningRowsPosition, spanningRowsPosition = _b === void 0 ? 'bottom' : _b, getRowId = props.getRowId, onRowClick = props.onRowClick, rowActions = props.rowActions, sortModel = props.sortModel, onSortModelChange = props.onSortModelChange, selected = props.selected, onSelectedChange = props.onSelectedChange, selectionActions = props.selectionActions, _c = props.pageIndex, pageIndex = _c === void 0 ? constants_1.PAGE_INDEX_DEFAULT : _c, _d = props.pageSize, pageSize = _d === void 0 ? constants_1.PAGE_SIZE_DEFAULT : _d, _e = props.totalOfRows, totalOfRows = _e === void 0 ? rows.length : _e, _f = props.rowsPerPageOptions, rowsPerPageOptions = _f === void 0 ? [10, 20, 30] : _f, onPageIndexChange = props.onPageIndexChange, onPageSizeChange = props.onPageSizeChange;
|
|
77
|
+
var _g = react_1.default.useState(), forceUpdate = _g[1];
|
|
77
78
|
react_1.default.useEffect(function () {
|
|
78
79
|
var language = localStorage.getItem('i18nextLng');
|
|
79
80
|
i18n_1.default.changeLanguage(language || 'vi');
|
|
81
|
+
forceUpdate({});
|
|
80
82
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
81
83
|
}, [localStorage.getItem('i18nextLng')]);
|
|
82
84
|
var createSortHandler = function (fieldName) { return function (event) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"Common": {
|
|
3
|
+
"NotNegative": "Not negative value!",
|
|
3
4
|
"Existed": "{0} is already existed!",
|
|
4
5
|
"lg": "en",
|
|
5
6
|
"InvalidData": "Invalid data",
|
|
@@ -482,7 +483,13 @@
|
|
|
482
483
|
"CampaignName": "Campaign Name"
|
|
483
484
|
},
|
|
484
485
|
"CantBeDelete": "Can not delete this campaign",
|
|
485
|
-
"Attributes": "Attributes"
|
|
486
|
+
"Attributes": "Attributes",
|
|
487
|
+
"BillingUnit": {
|
|
488
|
+
"Title": "Billing unit",
|
|
489
|
+
"View": "Impression",
|
|
490
|
+
"Authentication": "Engagement / Spot",
|
|
491
|
+
"Click": "Click"
|
|
492
|
+
}
|
|
486
493
|
},
|
|
487
494
|
"DirectoryManagement": {
|
|
488
495
|
"DirectoryName": "Directory Name",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"Common": {
|
|
3
|
+
"NotNegative": "Không được nhập số âm!",
|
|
3
4
|
"Existed": "{0} đã tồn tại!",
|
|
4
5
|
"lg": "vn",
|
|
5
6
|
"InvalidData": "Dữ liệu không hợp lệ",
|
|
@@ -464,7 +465,13 @@
|
|
|
464
465
|
"CampaignName": "Tên chiến dịch"
|
|
465
466
|
},
|
|
466
467
|
"CantBeDelete": "Không thể xoá chiến dịch này",
|
|
467
|
-
"Attributes": "Thuộc tính"
|
|
468
|
+
"Attributes": "Thuộc tính",
|
|
469
|
+
"BillingUnit": {
|
|
470
|
+
"Title": "Đơn vị",
|
|
471
|
+
"View": "Impression",
|
|
472
|
+
"Authentication": "Engagement / Spot",
|
|
473
|
+
"Click": "Click"
|
|
474
|
+
}
|
|
468
475
|
},
|
|
469
476
|
"TemplateManagement": {
|
|
470
477
|
"Create": "Tạo mới template",
|