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.
@@ -56,6 +56,7 @@ exports.campaignModelState = (0, recoil_1.atom)({
56
56
  bookingAmount: 10,
57
57
  bonusAmount: 0,
58
58
  isReserved: false,
59
+ billingUnit: 1,
59
60
  },
60
61
  ads: [],
61
62
  },
@@ -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 }, isDayBlocked: function (day) { return (0, moment_1.default)().startOf('day').valueOf() > day.valueOf(); } }) }), (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) {
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 (__assign(__assign(__assign({}, ((0, Utils_1.nameValid)(subCampaign.name) && {
28
- name: true,
29
- })), ((!(0, Utils_1.checkPriority)(subCampaign.priority, Types_1.CampaignPriority.ClassB) ||
30
- (0, Utils_1.bookingValid)(subCampaign.bookingAmount)) && {
31
- bookingAmount: true,
32
- })), ((0, Utils_1.bonusValid)(subCampaign.bonusAmount) && {
33
- bonusAmount: true,
34
- }))); };
35
- var _a = (0, react_1.useState)(getFormValid), subValid = _a[0], setSubValid = _a[1];
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(Boolean(subValid.name && subValid.bookingAmount && subValid.bonusAmount));
69
+ onChangeSubCampaignStatus(Object.values(getFormValid()).every(Boolean));
44
70
  // eslint-disable-next-line react-hooks/exhaustive-deps
45
- }, [subValid.name, subValid.bookingAmount, subValid.bonusAmount]);
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
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, style: { padding: 8, paddingBottom: 0 }, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "name", name: "name", variant: "standard", required: true, fullWidth: true, label: translationText.name, value: subCampaign.name, onChange: function (e) {
69
- var value = e.target.value;
70
- handleChangeStatus('name', (0, Utils_1.nameValid)(value));
71
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { name: value })); });
72
- }, error: subValid.name !== undefined && !subValid.name, helperText: subValid.name !== undefined && !subValid.name
73
- ? translationText.helperText
74
- : '' }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsxs)(material_1.TextField, { id: "ticket", name: "ticket", variant: "standard", select: true, required: true, fullWidth: true, label: translationText.ticket, value: subCampaign.ticket, onChange: function (e) {
75
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { ticket: Number(e.target.value) })); });
76
- }, disabled: isCreate, children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Types_1.CampaignTicket.ACTIVE, children: t('Campaign.Active') }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: Types_1.CampaignTicket.INACTIVE, children: t('Campaign.InActive') })] }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: subCampaign.isReserved, onChange: function (e) {
77
- e.persist();
78
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { isReserved: e.target.checked })); });
79
- }, name: "isReserved", color: "primary" }), label: translationText.reserved, style: { marginTop: 6 } }) })] }), (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, style: { padding: 8, paddingTop: 0 }, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "priority", select: true, required: true, variant: "standard", fullWidth: true, label: translationText.priority, value: isNaN(Number(subCampaign.priority))
80
- ? subCampaign.priority
81
- : Object.values(Types_1.CampaignPriority)[subCampaign.priority], onChange: function (e) {
82
- var newPriority = Object.values(Types_1.CampaignPriority).indexOf(e.target.value);
83
- onSubCampaignChange(function (pre) {
84
- var newSubCamp = __assign(__assign({}, pre), { priority: newPriority, bookingAmount: (0, Utils_1.checkPriority)(newPriority, Types_1.CampaignPriority.ClassB)
85
- ? 10
86
- : 0, bonusAmount: 0 });
87
- setSubValid(function (pre) { return (__assign(__assign({}, pre), { bookingAmount: true, bonusAmount: true })); });
88
- return newSubCamp;
89
- });
90
- }, children: Object.values(Types_1.CampaignPriority).map(function (priority) { return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: priority, children: t("Campaign.".concat(priority)) }, priority)); }) }) }), (0, Utils_1.checkPriority)(subCampaign.priority, Types_1.CampaignPriority.ClassB) && ((0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bookingAmount", required: true, fullWidth: true, variant: "standard", type: "number", label: translationText.booking, value: subCampaign.bookingAmount, onChange: function (e) {
91
- var value = Number(e.target.value);
92
- handleChangeStatus('bookingAmount', (0, Utils_1.bookingValid)(value));
93
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bookingAmount: value })); });
94
- }, onFocus: function (event) { return event.target.select(); }, error: subValid.bookingAmount !== undefined &&
95
- !subValid.bookingAmount, helperText: subValid.bookingAmount !== undefined &&
96
- !subValid.bookingAmount
97
- ? translationText.helperText
98
- : '' }) })), (0, Utils_1.checkPriority)(subCampaign.priority, Types_1.CampaignPriority.ClassB) && ((0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: true, style: { padding: 8 }, children: (0, jsx_runtime_1.jsx)(material_1.TextField, { id: "bonusAmount", variant: "standard", fullWidth: true, type: "number", label: translationText.bonus, value: subCampaign.bonusAmount, onChange: function (e) {
99
- var value = Number(e.target.value);
100
- handleChangeStatus('bonusAmount', (0, Utils_1.bonusValid)(value));
101
- onSubCampaignChange(function (pre) { return (__assign(__assign({}, pre), { bonusAmount: value })); });
102
- }, onFocus: function (event) { return event.target.select(); }, error: subValid.bonusAmount !== undefined &&
103
- !subValid.bonusAmount, helperText: subValid.bonusAmount !== undefined &&
104
- !subValid.bonusAmount
105
- ? translationText.helperText
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.AnalyticType = exports.Operator = exports.CampaignRuleType = exports.AdType = exports.CampaignTicket = exports.CampaignPriority = void 0;
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(true), tempLoading = _e[0], setTempLoading = _e[1];
61
- var _f = react_1.default.useState([]), directories = _f[0], setDirectories = _f[1];
62
- var _g = react_1.default.useState([]), templateTypes = _g[0], setTemplateTypes = _g[1];
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), fields && advanceFields.length > 0 && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { id: "advance-option", style: {
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.jsx)(material_1.Grid, { container: true, children: renderFields(fields, true) }))] }))] }), 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
+ }, 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 Partial<EventsProps> {
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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awing-library",
3
- "version": "2.1.107-beta",
3
+ "version": "2.1.109-beta",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",