@zgfe/modules-interval 1.0.8 → 1.0.10-qirui.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/esm/components/common/styles/index.less +3 -3
  2. package/dist/esm/components/eventFilter/index.js +17 -21
  3. package/dist/esm/components/eventFilter/types.d.ts +4 -3
  4. package/dist/esm/components/searchPanel/index.js +5 -11
  5. package/dist/esm/components/table/index.js +5 -4
  6. package/dist/esm/components/topBar/index.js +4 -4
  7. package/dist/esm/components/topBar/types.d.ts +3 -2
  8. package/dist/esm/constants/apis.d.ts +1 -5
  9. package/dist/esm/constants/apis.js +15 -4
  10. package/dist/esm/modules/chart/index.js +4 -3
  11. package/dist/esm/modules/chart/intervalChart.js +1 -1
  12. package/dist/esm/modules/chart/types.d.ts +1 -0
  13. package/dist/esm/modules/content/index.js +27 -42
  14. package/dist/esm/modules/content/types.d.ts +4 -3
  15. package/dist/esm/modules/content/utils.d.ts +2 -0
  16. package/dist/esm/modules/content/utils.js +4 -2
  17. package/dist/esm/modules/home/demo/edit.js +1 -1
  18. package/dist/esm/modules/home/demo/index.js +200 -15
  19. package/dist/esm/modules/home/demo/scene.js +1 -1
  20. package/dist/esm/modules/home/index.d.ts +2 -2
  21. package/dist/esm/modules/home/index.js +59 -46
  22. package/dist/esm/modules/home/styles/index.less +6 -0
  23. package/dist/esm/modules/home/types.d.ts +7 -4
  24. package/dist/esm/modules/home/types.js +2 -2
  25. package/dist/esm/modules/topPanel/index.js +244 -127
  26. package/dist/esm/modules/topPanel/styles/index.less +29 -2
  27. package/dist/esm/modules/topPanel/types.d.ts +6 -9
  28. package/dist/esm/modules/topPanel/types.js +5 -1
  29. package/dist/esm/style/index.less +14 -0
  30. package/dist/esm/types.d.ts +25 -28
  31. package/dist/esm/types.js +1 -1
  32. package/dist/esm/utils/formData.d.ts +7 -2
  33. package/dist/esm/utils/formData.js +64 -12
  34. package/package.json +9 -4
  35. package/dist/esm/assets/business/demo.css +0 -539
  36. package/dist/esm/assets/business/demo_index.html +0 -3316
  37. package/dist/esm/assets/business/iconfont.css +0 -559
  38. package/dist/esm/assets/business/iconfont.js +0 -43
  39. package/dist/esm/assets/business/iconfont.json +0 -961
  40. package/dist/esm/assets/business/iconfont.ttf +0 -0
  41. package/dist/esm/assets/business/iconfont.woff +0 -0
  42. package/dist/esm/assets/business/iconfont.woff2 +0 -0
  43. package/dist/esm/assets/icons/demo.css +0 -539
  44. package/dist/esm/assets/icons/demo_index.html +0 -9618
  45. package/dist/esm/assets/icons/iconfont.css +0 -1655
  46. package/dist/esm/assets/icons/iconfont.js +0 -43
  47. package/dist/esm/assets/icons/iconfont.json +0 -2879
  48. package/dist/esm/assets/icons/iconfont.ttf +0 -0
  49. package/dist/esm/assets/icons/iconfont.woff +0 -0
  50. package/dist/esm/assets/icons/iconfont.woff2 +0 -0
@@ -10,74 +10,68 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
10
10
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
11
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
12
12
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
- import React, { useState } from 'react';
14
- import { Form, Button } from 'antd';
15
- import { BizAttributeSelector, BizUserGroupHeader } from '@zgfe/business-lib';
13
+ import React, { useContext, useEffect, useState } from 'react';
14
+ import { Form, Button, Radio, Space, Switch } from 'antd';
15
+ import { BizAttributeSelector, BizSelect, BizUserGroupHeader, useSubject } from '@zgfe/business-lib';
16
16
  import EventFilter from "../../components/eventFilter";
17
17
  import "./styles/index.less";
18
+ import { AnalysisMode } from "./types";
19
+ import { IntervalContext } from "../../types";
18
20
  var classPrefix = 'top-panel-interval';
19
21
  var TopPanel = function TopPanel(props) {
20
- var _props$urlParam, _props$urlParam2, _defaultValue$associa, _defaultValue$associa2, _finalSearchData$asso, _finalSearchData$asso2, _defaultValue$associa3, _finalSearchData$asso3, _defaultValue$associa4, _finalSearchData$asso4, _defaultValue$associa5, _finalSearchData$asso5, _defaultValue$associa6, _finalSearchData$asso6, _defaultValue$associa7, _finalSearchData$asso7, _defaultValue$associa8, _finalSearchData$asso8, _defaultValue$associa9, _finalSearchData$asso9, _defaultValue$associa10, _finalSearchData$asso10, _defaultValue$dimensi, _finalSearchData$dime, _defaultValue$dimensi2, _finalSearchData$dime2, _defaultValue$dimensi3, _finalSearchData$dime3, _defaultValue$dimensi4, _finalSearchData$dime4;
22
+ var _props$defaultValue, _props$defaultValue2, _props$defaultValue3, _defaultValue$associa, _defaultValue$associa2, _finalSearchData$asso, _finalSearchData$asso2, _defaultValue$associa3, _finalSearchData$asso3, _defaultValue$associa4, _finalSearchData$asso4, _defaultValue$associa5, _finalSearchData$asso5, _defaultValue$associa6, _finalSearchData$asso6, _defaultValue$associa7, _finalSearchData$asso7, _defaultValue$associa8, _finalSearchData$asso8, _defaultValue$associa9, _finalSearchData$asso9, _defaultValue$associa10, _finalSearchData$asso10, _defaultValue$dimensi, _finalSearchData$dime, _defaultValue$dimensi2, _finalSearchData$dime2, _defaultValue$dimensi3, _finalSearchData$dime3, _defaultValue$dimensi4, _finalSearchData$dime4;
21
23
  var defaultValue = props.defaultValue,
22
24
  loading = props.loading,
23
25
  collapseRef = props.collapseRef,
24
- finalSearchData = props.finalSearchData,
25
- fetchRequest = props.fetchRequest;
26
+ finalSearchData = props.finalSearchData;
26
27
  var _Form$useForm = Form.useForm(),
27
28
  _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
28
29
  form = _Form$useForm2[0];
29
- var _useState = useState(null),
30
+ var _useState = useState(),
30
31
  _useState2 = _slicedToArray(_useState, 2),
31
- startId = _useState2[0],
32
- setStartId = _useState2[1];
33
- var _useState3 = useState(null),
32
+ startEvent = _useState2[0],
33
+ setStartEvent = _useState2[1];
34
+ var _useState3 = useState(),
34
35
  _useState4 = _slicedToArray(_useState3, 2),
35
- endId = _useState4[0],
36
- setEndId = _useState4[1];
36
+ endEvent = _useState4[0],
37
+ setEndEvent = _useState4[1];
37
38
  // 关联属性
38
39
  var _useState5 = useState(false),
39
40
  _useState6 = _slicedToArray(_useState5, 2),
40
41
  relevancy = _useState6[0],
41
42
  setRelevancy = _useState6[1];
42
- var _useState7 = useState(true),
43
- _useState8 = _slicedToArray(_useState7, 2),
44
- relevancyFl = _useState8[0],
45
- setRelevancyFl = _useState8[1];
46
- var _ref = defaultValue,
43
+ var _useSubject = useSubject(),
44
+ subjectList = _useSubject.subjectList,
45
+ subjectLoading = _useSubject.loading;
46
+ var _useContext = useContext(IntervalContext),
47
+ subjectEnable = _useContext.subjectEnable;
48
+ var _ref = defaultValue || {},
47
49
  userGroup = _ref.userGroup;
48
- // 细分属性初始值
50
+ var _useState7 = useState('user'),
51
+ _useState8 = _slicedToArray(_useState7, 2),
52
+ analysisType = _useState8[0],
53
+ setAnalysisType = _useState8[1];
49
54
  var _useState9 = useState(),
50
55
  _useState10 = _slicedToArray(_useState9, 2),
51
- bizAttributeSelectorValue = _useState10[0],
52
- setBizAttributeSelectorValue = _useState10[1];
53
- // 用户组和事件变更
54
- var onValuesChange = function onValuesChange(data, allData) {
55
- var _data = {};
56
- setRelevancyFl(false);
57
- if (allData.start) {
58
- if (allData.start.id !== null) {
59
- var _allData$start;
60
- _data = allData.start;
61
- setStartId(allData.start.id);
62
- setRelevancy(allData === null || allData === void 0 ? void 0 : (_allData$start = allData.start) === null || _allData$start === void 0 ? void 0 : _allData$start.relevancy);
63
- } else {
64
- setRelevancyFl(true);
65
- }
66
- }
67
- if (allData.end) {
68
- if (allData.end.id !== null) {
69
- _data = allData.end;
70
- setEndId(allData.end.id);
71
- } else {
72
- setRelevancyFl(true);
73
- }
56
+ currentSubject = _useState10[0],
57
+ setCurrentSubject = _useState10[1];
58
+ var _useState11 = useState(false),
59
+ _useState12 = _slicedToArray(_useState11, 2),
60
+ inited = _useState12[0],
61
+ setInited = _useState12[1];
62
+ var formRef = React.useRef(null);
63
+ function onSearch(values) {
64
+ if (props.onChange) {
65
+ props.onChange(_objectSpread(_objectSpread({}, values), {}, {
66
+ analysisSubject: values.analysisSubject ? {
67
+ subjectId: values.analysisSubject.id,
68
+ subjectName: values.analysisSubject.subjectName,
69
+ subjectAlias: values.analysisSubject.subjectAlias,
70
+ unit: values.analysisSubject.unit
71
+ } : undefined
72
+ }), true);
74
73
  }
75
- if (allData.userGroup) {
76
- _data.userGroup = allData.userGroup;
77
- if (_data.userGroup.length <= 0) _data.userGroup = [0];
78
- }
79
- props.onChange(allData, (finalSearchData === null || finalSearchData === void 0 ? void 0 : finalSearchData.chartType) === 'boxplot' ? true : false);
80
- };
74
+ }
81
75
  var resetting = function resetting() {
82
76
  form.resetFields();
83
77
  form.setFieldsValue({
@@ -90,6 +84,7 @@ var TopPanel = function TopPanel(props) {
90
84
  associatedNextAttr: undefined
91
85
  });
92
86
  setRelevancy(false);
87
+ setCurrentSubject(undefined);
93
88
  props.onChange({
94
89
  userGroup: [0],
95
90
  start: undefined,
@@ -102,55 +97,37 @@ var TopPanel = function TopPanel(props) {
102
97
  associatedNextAttr: undefined
103
98
  }, true);
104
99
  };
105
- // 细分属性
106
- var onChangeAttr = function onChangeAttr(attr, type) {
107
- if (attr === undefined) {
108
- // 删除细分属性
109
- switch (type) {
110
- case 'associatedPreAttr':
111
- form.setFieldsValue({
112
- associatedPreAttr: undefined
113
- });
114
- props.onChange({
115
- associatedPreAttr: undefined
116
- }, true);
117
- break;
118
- case 'associatedNextAttr':
119
- form.setFieldsValue({
120
- associatedNextAttr: undefined
121
- });
122
- props.onChange({
123
- associatedNextAttr: undefined
124
- }, true);
125
- break;
126
- case 'dimension':
127
- form.setFieldsValue({
128
- dimension: undefined
129
- });
130
- props.onChange({
131
- dimension: undefined
132
- }, true);
133
- break;
134
- }
135
- setBizAttributeSelectorValue(undefined);
100
+ useEffect(function () {
101
+ if (subjectLoading) return;
102
+ if (!defaultValue) {
103
+ setInited(true);
104
+ return;
105
+ }
106
+ setInited(false);
107
+ if (defaultValue.analysisSubject) {
108
+ setAnalysisType('eventProp');
136
109
  } else {
137
- var _value = attr.propCategory === 'eventProp' ? attr.id : attr.name;
138
- setBizAttributeSelectorValue({
139
- propCategory: attr.propCategory,
140
- category: attr.category,
141
- value: _value,
142
- key: attr.propCategory === 'eventProp' ? attr.id : attr.propCategory + '-' + _value
143
- });
110
+ setAnalysisType('user');
144
111
  }
145
- };
112
+ if (defaultValue.analysisSubject) {
113
+ setCurrentSubject(subjectList.find(function (item) {
114
+ var _defaultValue$analysi;
115
+ return item.id === (defaultValue === null || defaultValue === void 0 ? void 0 : (_defaultValue$analysi = defaultValue.analysisSubject) === null || _defaultValue$analysi === void 0 ? void 0 : _defaultValue$analysi.subjectId);
116
+ }));
117
+ }
118
+ setInited(true);
119
+ }, [subjectLoading]);
120
+ if (!inited) return null;
146
121
  return /*#__PURE__*/React.createElement(Form, {
147
122
  form: form,
123
+ ref: formRef,
148
124
  component: "div",
149
125
  colon: false,
150
126
  className: "panel-form-interval",
151
127
  layout: "vertical",
152
128
  initialValues: {
153
- userGroup: props !== null && props !== void 0 && (_props$urlParam = props.urlParam) !== null && _props$urlParam !== void 0 && _props$urlParam.userGroup ? props === null || props === void 0 ? void 0 : (_props$urlParam2 = props.urlParam) === null || _props$urlParam2 === void 0 ? void 0 : _props$urlParam2.userGroup : userGroup ? userGroup : [0],
129
+ userGroup: props !== null && props !== void 0 && (_props$defaultValue = props.defaultValue) !== null && _props$defaultValue !== void 0 && _props$defaultValue.userGroup ? props === null || props === void 0 ? void 0 : (_props$defaultValue2 = props.defaultValue) === null || _props$defaultValue2 === void 0 ? void 0 : _props$defaultValue2.userGroup : userGroup ? userGroup : [0],
130
+ analysisSubject: props === null || props === void 0 ? void 0 : (_props$defaultValue3 = props.defaultValue) === null || _props$defaultValue3 === void 0 ? void 0 : _props$defaultValue3.analysisSubject,
154
131
  start: _objectSpread(_objectSpread({}, defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.start), {}, {
155
132
  relevancy: defaultValue !== null && defaultValue !== void 0 && (_defaultValue$associa = defaultValue.associated_next_attr) !== null && _defaultValue$associa !== void 0 && _defaultValue$associa.event_id && defaultValue !== null && defaultValue !== void 0 && (_defaultValue$associa2 = defaultValue.associated_pre_attr) !== null && _defaultValue$associa2 !== void 0 && _defaultValue$associa2.event_id || finalSearchData !== null && finalSearchData !== void 0 && (_finalSearchData$asso = finalSearchData.associatedNextAttr) !== null && _finalSearchData$asso !== void 0 && _finalSearchData$asso.eventId && finalSearchData !== null && finalSearchData !== void 0 && (_finalSearchData$asso2 = finalSearchData.associatedPreAttr) !== null && _finalSearchData$asso2 !== void 0 && _finalSearchData$asso2.eventId ? true : false
156
133
  }),
@@ -172,11 +149,56 @@ var TopPanel = function TopPanel(props) {
172
149
  isHidden: (defaultValue === null || defaultValue === void 0 ? void 0 : (_defaultValue$dimensi2 = defaultValue.dimension) === null || _defaultValue$dimensi2 === void 0 ? void 0 : _defaultValue$dimensi2.is_hidden) || (finalSearchData === null || finalSearchData === void 0 ? void 0 : (_finalSearchData$dime2 = finalSearchData.dimension) === null || _finalSearchData$dime2 === void 0 ? void 0 : _finalSearchData$dime2.isHidden),
173
150
  propCategory: (defaultValue === null || defaultValue === void 0 ? void 0 : (_defaultValue$dimensi3 = defaultValue.dimension) === null || _defaultValue$dimensi3 === void 0 ? void 0 : _defaultValue$dimensi3.prop_category) || (finalSearchData === null || finalSearchData === void 0 ? void 0 : (_finalSearchData$dime3 = finalSearchData.dimension) === null || _finalSearchData$dime3 === void 0 ? void 0 : _finalSearchData$dime3.propCategory),
174
151
  eventId: (defaultValue === null || defaultValue === void 0 ? void 0 : (_defaultValue$dimensi4 = defaultValue.dimension) === null || _defaultValue$dimensi4 === void 0 ? void 0 : _defaultValue$dimensi4.event_id) || (finalSearchData === null || finalSearchData === void 0 ? void 0 : (_finalSearchData$dime4 = finalSearchData.dimension) === null || _finalSearchData$dime4 === void 0 ? void 0 : _finalSearchData$dime4.eventId)
175
- })
152
+ }),
153
+ analysisModel: (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.analysisModel) || AnalysisMode.common
176
154
  },
177
155
  scrollToFirstError: true,
178
- onValuesChange: onValuesChange
179
- }, /*#__PURE__*/React.createElement(Form.Item, {
156
+ onFinish: onSearch
157
+ }, subjectEnable && /*#__PURE__*/React.createElement(Form.Item, {
158
+ label: "\u5206\u6790\u4E3B\u4F53",
159
+ className: "panel-form-interval-item"
160
+ }, /*#__PURE__*/React.createElement(BizSelect, {
161
+ options: [{
162
+ label: '用户',
163
+ value: 'user'
164
+ }, {
165
+ label: '事件属性',
166
+ value: 'eventProp'
167
+ }],
168
+ keyField: "value",
169
+ defaultValue: {
170
+ value: analysisType
171
+ },
172
+ onChange: function onChange(val) {
173
+ setAnalysisType(val.value);
174
+ resetting();
175
+ }
176
+ })), analysisType === 'eventProp' && /*#__PURE__*/React.createElement(Form.Item, {
177
+ label: "\u4E3B\u4F53\u540D\u79F0",
178
+ name: "analysisSubject",
179
+ className: "panel-form-interval-item",
180
+ rules: [{
181
+ validator: function validator(rule, value) {
182
+ if (!value) {
183
+ return Promise.reject('请选择主体名称');
184
+ }
185
+ return Promise.resolve();
186
+ }
187
+ }]
188
+ }, /*#__PURE__*/React.createElement(BizSelect, {
189
+ options: subjectList,
190
+ aliasField: "subjectAlias",
191
+ labelField: "subjectName",
192
+ keyField: "id",
193
+ onChange: function onChange(val) {
194
+ var _formRef$current, _formRef$current2, _formRef$current3;
195
+ setCurrentSubject(val);
196
+ setRelevancy(false);
197
+ (_formRef$current = formRef.current) === null || _formRef$current === void 0 ? void 0 : _formRef$current.setFieldValue('start', undefined);
198
+ (_formRef$current2 = formRef.current) === null || _formRef$current2 === void 0 ? void 0 : _formRef$current2.setFieldValue('end', undefined);
199
+ (_formRef$current3 = formRef.current) === null || _formRef$current3 === void 0 ? void 0 : _formRef$current3.setFieldValue('dimension', undefined);
200
+ }
201
+ })), analysisType === 'user' && /*#__PURE__*/React.createElement(Form.Item, {
180
202
  label: "",
181
203
  name: "userGroup",
182
204
  className: "space-item interval-item",
@@ -191,13 +213,61 @@ var TopPanel = function TopPanel(props) {
191
213
  className: "collapseRefs"
192
214
  }, /*#__PURE__*/React.createElement(Form.Item, {
193
215
  label: "\u5F00\u59CB\u4E8B\u4EF6",
194
- name: "start"
216
+ style: {
217
+ marginBottom: '8px',
218
+ position: 'relative'
219
+ }
220
+ }, /*#__PURE__*/React.createElement(Form.Item, {
221
+ name: "start",
222
+ style: {
223
+ marginBottom: 0
224
+ },
225
+ rules: [{
226
+ validateTrigger: ['onBlur'],
227
+ validator: function validator(rule, value) {
228
+ var _value$filters, _value$filters$condit;
229
+ if (!value || !value.id) {
230
+ return Promise.reject('请选择开始事件');
231
+ }
232
+ var conditionValIsNull = false;
233
+ value === null || value === void 0 ? void 0 : (_value$filters = value.filters) === null || _value$filters === void 0 ? void 0 : (_value$filters$condit = _value$filters.conditions) === null || _value$filters$condit === void 0 ? void 0 : _value$filters$condit.forEach(function (item) {
234
+ var _item$values;
235
+ if (!/null/.test(item.operator || '') && !((_item$values = item.values) !== null && _item$values !== void 0 && _item$values.length)) {
236
+ conditionValIsNull = true;
237
+ }
238
+ });
239
+ if (conditionValIsNull) {
240
+ return Promise.reject('请填写完整的条件');
241
+ }
242
+ return Promise.resolve();
243
+ }
244
+ }]
195
245
  }, /*#__PURE__*/React.createElement(EventFilter, {
196
- relevancyFl: relevancyFl,
197
- relevancy: true
198
- })), relevancy ? /*#__PURE__*/React.createElement(Form.Item, {
246
+ subject: currentSubject,
247
+ key: "".concat(currentSubject === null || currentSubject === void 0 ? void 0 : currentSubject.subjectName, "-start"),
248
+ analysisType: analysisType,
249
+ onChange: function onChange(evt) {
250
+ var _formRef$current4;
251
+ setStartEvent(evt);
252
+ (_formRef$current4 = formRef.current) === null || _formRef$current4 === void 0 ? void 0 : _formRef$current4.setFieldValue('dimension', undefined);
253
+ }
254
+ })), /*#__PURE__*/React.createElement(Space, {
255
+ align: "baseline",
256
+ style: {
257
+ position: 'absolute',
258
+ top: '9px',
259
+ left: '295px'
260
+ }
261
+ }, /*#__PURE__*/React.createElement(Switch, {
262
+ checked: relevancy,
263
+ onChange: setRelevancy
264
+ }), /*#__PURE__*/React.createElement("span", {
265
+ className: "switch-title"
266
+ }, "\u8BBE\u7F6E\u5173\u8054\u5C5E\u6027"))), relevancy && /*#__PURE__*/React.createElement(Form.Item, {
199
267
  className: "associated"
200
- }, /*#__PURE__*/React.createElement("span", {
268
+ }, /*#__PURE__*/React.createElement(Space, {
269
+ align: "baseline"
270
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
201
271
  className: "associated-link"
202
272
  }, /*#__PURE__*/React.createElement("i", {
203
273
  style: {
@@ -208,80 +278,127 @@ var TopPanel = function TopPanel(props) {
208
278
  className: "associated-label"
209
279
  }, "\u5C5E\u60271"), /*#__PURE__*/React.createElement(Form.Item, {
210
280
  name: "associatedPreAttr",
211
- style: {
212
- display: 'inline-block',
213
- marginRight: 28
214
- }
281
+ rules: [{
282
+ validator: function validator(rule, value) {
283
+ if (!value || !value.dimensionSub) {
284
+ return Promise.reject('请选择属性1');
285
+ }
286
+ return Promise.resolve();
287
+ }
288
+ }]
215
289
  }, /*#__PURE__*/React.createElement(BizAttributeSelector, {
216
290
  enableEventProp: true,
217
291
  enableUserProp: false,
218
292
  enableEnvProp: false,
219
- eventIdList: [startId],
220
- value: bizAttributeSelectorValue,
293
+ eventIdList: [startEvent === null || startEvent === void 0 ? void 0 : startEvent.id],
221
294
  enableDelete: true,
222
- onChange: onChangeAttr,
295
+ key: "".concat(startEvent === null || startEvent === void 0 ? void 0 : startEvent.id, "-").concat(endEvent === null || endEvent === void 0 ? void 0 : endEvent.id, "-pre"),
223
296
  onDelete: function onDelete() {
224
- onChangeAttr(undefined, 'associatedPreAttr');
297
+ var _formRef$current5;
298
+ (_formRef$current5 = formRef.current) === null || _formRef$current5 === void 0 ? void 0 : _formRef$current5.setFieldValue('associatedPreAttr', undefined);
225
299
  }
226
- })), /*#__PURE__*/React.createElement("span", {
300
+ }))), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
227
301
  className: "associated-label"
228
302
  }, "\u5C5E\u60272"), /*#__PURE__*/React.createElement(Form.Item, {
229
303
  name: "associatedNextAttr",
230
- style: {
231
- display: 'inline-block'
232
- }
304
+ rules: [{
305
+ validator: function validator(rule, value) {
306
+ if (!value || !value.dimensionSub) {
307
+ return Promise.reject('请选择属性2');
308
+ }
309
+ return Promise.resolve();
310
+ }
311
+ }]
233
312
  }, /*#__PURE__*/React.createElement(BizAttributeSelector, {
234
313
  enableEventProp: true,
235
314
  enableUserProp: false,
236
315
  enableEnvProp: false,
237
- eventIdList: [endId],
238
- value: bizAttributeSelectorValue,
316
+ eventIdList: [endEvent === null || endEvent === void 0 ? void 0 : endEvent.id],
239
317
  enableDelete: true,
240
- onChange: onChangeAttr,
318
+ key: "".concat(startEvent === null || startEvent === void 0 ? void 0 : startEvent.id, "-").concat(endEvent === null || endEvent === void 0 ? void 0 : endEvent.id, "-next"),
241
319
  onDelete: function onDelete() {
242
- onChangeAttr(undefined, 'associatedNextAttr');
320
+ var _formRef$current6;
321
+ (_formRef$current6 = formRef.current) === null || _formRef$current6 === void 0 ? void 0 : _formRef$current6.setFieldValue('associatedNextAttr', undefined);
243
322
  }
244
- })), /*#__PURE__*/React.createElement("i", {
323
+ }))), /*#__PURE__*/React.createElement("i", {
245
324
  style: {
246
325
  lineHeight: '32px',
247
326
  marginLeft: '28px',
248
327
  cursor: 'pointer'
249
328
  },
250
329
  onClick: function onClick() {
251
- onChangeAttr(undefined, 'associatedPreAttr');
252
- onChangeAttr(undefined, 'associatedNextAttr');
330
+ var _formRef$current7, _formRef$current8;
331
+ (_formRef$current7 = formRef.current) === null || _formRef$current7 === void 0 ? void 0 : _formRef$current7.setFieldValue('associatedPreAttr', undefined);
332
+ (_formRef$current8 = formRef.current) === null || _formRef$current8 === void 0 ? void 0 : _formRef$current8.setFieldValue('associatedNextAttr', undefined);
253
333
  setRelevancy(false);
254
- setRelevancyFl(true);
255
334
  },
256
335
  className: "bsicon qingchu"
257
- })) : '', /*#__PURE__*/React.createElement(Form.Item, {
336
+ }))), /*#__PURE__*/React.createElement(Form.Item, {
258
337
  label: "\u7ED3\u675F\u4E8B\u4EF6",
259
- name: "end"
260
- }, /*#__PURE__*/React.createElement(EventFilter, null)), /*#__PURE__*/React.createElement(Form.Item, {
338
+ name: "end",
339
+ rules: [{
340
+ validateTrigger: ['onBlur'],
341
+ validator: function validator(rule, value) {
342
+ var _value$filters2, _value$filters2$condi;
343
+ if (!value || !value.id) {
344
+ return Promise.reject('请选择结束事件');
345
+ }
346
+ var conditionValIsNull = false;
347
+ value === null || value === void 0 ? void 0 : (_value$filters2 = value.filters) === null || _value$filters2 === void 0 ? void 0 : (_value$filters2$condi = _value$filters2.conditions) === null || _value$filters2$condi === void 0 ? void 0 : _value$filters2$condi.forEach(function (item) {
348
+ var _item$values2;
349
+ if (!/null/.test(item.operator || '') && !((_item$values2 = item.values) !== null && _item$values2 !== void 0 && _item$values2.length)) {
350
+ conditionValIsNull = true;
351
+ }
352
+ });
353
+ if (conditionValIsNull) {
354
+ return Promise.reject('请填写完整的条件');
355
+ }
356
+ return Promise.resolve();
357
+ }
358
+ }]
359
+ }, /*#__PURE__*/React.createElement(EventFilter, {
360
+ subject: currentSubject,
361
+ analysisType: analysisType,
362
+ key: "".concat(currentSubject === null || currentSubject === void 0 ? void 0 : currentSubject.subjectName, "-start"),
363
+ onChange: function onChange(val) {
364
+ var _formRef$current9;
365
+ setEndEvent(val);
366
+ (_formRef$current9 = formRef.current) === null || _formRef$current9 === void 0 ? void 0 : _formRef$current9.setFieldValue('dimension', undefined);
367
+ }
368
+ })), /*#__PURE__*/React.createElement(Form.Item, {
261
369
  label: "\u6309\u5C5E\u6027\u7EC6\u5206",
262
370
  name: "dimension",
263
371
  className: "dimension-interval"
264
372
  }, /*#__PURE__*/React.createElement(BizAttributeSelector, {
265
373
  enableEventProp: true,
266
- enableUserProp: true,
374
+ enableUserProp: analysisType === 'user',
267
375
  enableEnvProp: true,
268
- eventIdList: startId === endId ? [startId] : [startId, endId],
269
- value: bizAttributeSelectorValue,
376
+ key: "".concat(currentSubject === null || currentSubject === void 0 ? void 0 : currentSubject.subjectName, "-dimension-").concat(startEvent === null || startEvent === void 0 ? void 0 : startEvent.id, "-").concat(endEvent === null || endEvent === void 0 ? void 0 : endEvent.id, "}"),
377
+ eventIdList: [(startEvent === null || startEvent === void 0 ? void 0 : startEvent.id) || 0, (endEvent === null || endEvent === void 0 ? void 0 : endEvent.id) || 0],
378
+ showCommonProp: true,
270
379
  enableDelete: true,
271
- onChange: onChangeAttr,
272
380
  onDelete: function onDelete() {
273
- onChangeAttr(undefined, 'dimension');
381
+ var _formRef$current10;
382
+ (_formRef$current10 = formRef.current) === null || _formRef$current10 === void 0 ? void 0 : _formRef$current10.setFieldValue('dimension', undefined);
274
383
  }
275
- })), /*#__PURE__*/React.createElement("div", {
384
+ })), /*#__PURE__*/React.createElement(Form.Item, {
385
+ label: "\u5206\u6790\u6A21\u578B",
386
+ name: "analysisModel",
387
+ className: "panel-form-interval-item"
388
+ }, /*#__PURE__*/React.createElement(Radio.Group, null, /*#__PURE__*/React.createElement(Radio, {
389
+ value: AnalysisMode.common
390
+ }, "\u5E38\u89C4\u95F4\u9694\u5206\u6790"), /*#__PURE__*/React.createElement(Radio, {
391
+ value: AnalysisMode.firstAndLast
392
+ }, "\u9996\u672B\u6B21\u95F4\u9694\u5206\u6790"))), /*#__PURE__*/React.createElement("div", {
276
393
  className: "".concat(classPrefix, "-form-botton-box")
277
394
  }, /*#__PURE__*/React.createElement(Button, {
278
395
  onClick: resetting
279
396
  }, "\u91CD\u7F6E"), /*#__PURE__*/React.createElement(Button, {
280
- loading: loading,
281
- disabled: loading || !startId || !endId || relevancy && !(defaultValue !== null && defaultValue !== void 0 && defaultValue.associatedNextAttr) && !(defaultValue !== null && defaultValue !== void 0 && defaultValue.associatedNextAttr),
397
+ loading: loading || subjectLoading,
282
398
  type: "primary",
283
399
  onClick: function onClick() {
284
- fetchRequest(true);
400
+ var _formRef$current11;
401
+ (_formRef$current11 = formRef.current) === null || _formRef$current11 === void 0 ? void 0 : _formRef$current11.submit();
285
402
  }
286
403
  }, "\u67E5\u8BE2"))));
287
404
  };
@@ -1,5 +1,4 @@
1
- @import '../../../assets/icons/iconfont.css';
2
- @import '../../../assets/business/iconfont.css';
1
+ @import '~@zgfe/business-lib/es/assets/styles/inner.less';
3
2
 
4
3
  .top-panel-interval {
5
4
  &-form-botton-box {
@@ -18,6 +17,31 @@
18
17
  }
19
18
 
20
19
  .panel-form-interval {
20
+ .ant-form-item-explain-error {
21
+ margin-left: 24px;
22
+ }
23
+ &-item {
24
+ .ant-form-item-label {
25
+ padding-left: 24px !important;
26
+ font-weight: 500;
27
+ }
28
+ .ant-form-item-control-input-content {
29
+ height: 40px;
30
+ padding: 0 24px !important;
31
+ line-height: 40px !important;
32
+ .biz-select-handle {
33
+ display: inline-block;
34
+ width: 208px;
35
+ }
36
+ span.ant-radio + * {
37
+ padding-right: 40px;
38
+ padding-left: 12px;
39
+ }
40
+ &:hover {
41
+ background-color: #e8efff;
42
+ }
43
+ }
44
+ }
21
45
  .interval-item {
22
46
  margin-top: -2px;
23
47
  .ant-space-vertical {
@@ -182,5 +206,8 @@
182
206
  line-height: 32px;
183
207
  text-align: right;
184
208
  }
209
+ .ant-form-item-explain-error {
210
+ margin-left: 0 !important;
211
+ }
185
212
  }
186
213
  }
@@ -1,5 +1,10 @@
1
1
  import { AttrConditionTypes } from '@zgfe/business-lib';
2
2
  import { bizAttributeSelectorValueProp, SearchValue } from '../../types';
3
+ import SubjectTypes from '@zgfe/business-lib/es/hooks/types/subject';
4
+ export declare enum AnalysisMode {
5
+ common = "commonInterval",
6
+ firstAndLast = "firstLastInterval"
7
+ }
3
8
  export interface start {
4
9
  eventId?: number;
5
10
  id?: number;
@@ -24,6 +29,7 @@ export interface FormDataProps {
24
29
  dimension?: bizAttributeSelectorValueProp;
25
30
  associatedPreAttr?: bizAttributeSelectorValueProp;
26
31
  associatedNextAttr?: bizAttributeSelectorValueProp;
32
+ analysisSubject?: SubjectTypes.Subject;
27
33
  }
28
34
  export interface FormHandelDataProps extends start {
29
35
  /**
@@ -36,23 +42,14 @@ export interface TopPanelProps {
36
42
  * 默认值
37
43
  */
38
44
  defaultValue?: SearchValue;
39
- urlParam?: SearchValue;
40
45
  loading?: boolean;
41
46
  /**
42
47
  * 数据更新
43
48
  */
44
49
  onChange: (data: SearchValue, flag: boolean) => void;
45
- /**
46
- * 是否请求数据
47
- */
48
- ajaxFlag: boolean;
49
50
  /**
50
51
  * 请求后的最新查询数据
51
52
  */
52
53
  finalSearchData?: SearchValue;
53
- /**
54
- * 请求数据方法
55
- */
56
- fetchRequest: (flag?: boolean) => void;
57
54
  collapseRef?: any;
58
55
  }
@@ -1 +1,5 @@
1
- export {};
1
+ export var AnalysisMode = /*#__PURE__*/function (AnalysisMode) {
2
+ AnalysisMode["common"] = "commonInterval";
3
+ AnalysisMode["firstAndLast"] = "firstLastInterval";
4
+ return AnalysisMode;
5
+ }({});
@@ -51,3 +51,17 @@
51
51
  }
52
52
  }
53
53
  }
54
+ .interval-drill {
55
+ display: block;
56
+ .bsicon {
57
+ display: none;
58
+ margin-right: 4px;
59
+ }
60
+ &:hover {
61
+ color: @primary-color;
62
+ cursor: pointer;
63
+ .bsicon {
64
+ display: inline;
65
+ }
66
+ }
67
+ }