@zgfe/modules-interval 1.0.10-zbfix.4 → 1.0.11-zb.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 (51) hide show
  1. package/dist/esm/components/common/styles/index.less +3 -3
  2. package/dist/esm/components/eventFilter/index.js +17 -27
  3. package/dist/esm/components/eventFilter/types.d.ts +4 -5
  4. package/dist/esm/components/renderContent/styles/index.less +3 -0
  5. package/dist/esm/components/searchPanel/index.js +3 -4
  6. package/dist/esm/components/table/index.js +5 -4
  7. package/dist/esm/components/topBar/index.js +4 -4
  8. package/dist/esm/components/topBar/types.d.ts +3 -2
  9. package/dist/esm/constants/apis.d.ts +1 -5
  10. package/dist/esm/constants/apis.js +15 -4
  11. package/dist/esm/modules/chart/index.js +4 -3
  12. package/dist/esm/modules/chart/intervalChart.js +1 -1
  13. package/dist/esm/modules/chart/types.d.ts +1 -0
  14. package/dist/esm/modules/content/index.js +28 -44
  15. package/dist/esm/modules/content/types.d.ts +4 -3
  16. package/dist/esm/modules/content/utils.d.ts +2 -0
  17. package/dist/esm/modules/content/utils.js +4 -2
  18. package/dist/esm/modules/home/demo/edit.js +1 -1
  19. package/dist/esm/modules/home/demo/index.js +7 -15
  20. package/dist/esm/modules/home/demo/scene.js +1 -1
  21. package/dist/esm/modules/home/index.d.ts +2 -2
  22. package/dist/esm/modules/home/index.js +38 -33
  23. package/dist/esm/modules/home/styles/index.less +6 -0
  24. package/dist/esm/modules/home/types.d.ts +7 -4
  25. package/dist/esm/modules/home/types.js +2 -2
  26. package/dist/esm/modules/topPanel/index.js +257 -136
  27. package/dist/esm/modules/topPanel/styles/index.less +29 -2
  28. package/dist/esm/modules/topPanel/types.d.ts +6 -9
  29. package/dist/esm/modules/topPanel/types.js +5 -1
  30. package/dist/esm/style/index.less +14 -0
  31. package/dist/esm/types.d.ts +25 -28
  32. package/dist/esm/types.js +1 -1
  33. package/dist/esm/utils/formData.d.ts +7 -2
  34. package/dist/esm/utils/formData.js +64 -12
  35. package/package.json +7 -4
  36. package/dist/esm/assets/business/demo.css +0 -539
  37. package/dist/esm/assets/business/demo_index.html +0 -3316
  38. package/dist/esm/assets/business/iconfont.css +0 -559
  39. package/dist/esm/assets/business/iconfont.js +0 -43
  40. package/dist/esm/assets/business/iconfont.json +0 -961
  41. package/dist/esm/assets/business/iconfont.ttf +0 -0
  42. package/dist/esm/assets/business/iconfont.woff +0 -0
  43. package/dist/esm/assets/business/iconfont.woff2 +0 -0
  44. package/dist/esm/assets/icons/demo.css +0 -539
  45. package/dist/esm/assets/icons/demo_index.html +0 -9618
  46. package/dist/esm/assets/icons/iconfont.css +0 -1655
  47. package/dist/esm/assets/icons/iconfont.js +0 -43
  48. package/dist/esm/assets/icons/iconfont.json +0 -2879
  49. package/dist/esm/assets/icons/iconfont.ttf +0 -0
  50. package/dist/esm/assets/icons/iconfont.woff +0 -0
  51. package/dist/esm/assets/icons/iconfont.woff2 +0 -0
@@ -10,78 +10,79 @@ 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 } 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
+ var _useState7 = useState([]),
43
44
  _useState8 = _slicedToArray(_useState7, 2),
44
- relevancyFl = _useState8[0],
45
- setRelevancyFl = _useState8[1];
46
- var _ref = defaultValue,
47
- userGroup = _ref.userGroup;
48
- var _useState9 = useState(false),
45
+ subjectList = _useState8[0],
46
+ setSubjectList = _useState8[1];
47
+ var _useState9 = useState(true),
49
48
  _useState10 = _slicedToArray(_useState9, 2),
50
- resetSwitch = _useState10[0],
51
- setResetSwitch = _useState10[1];
52
- // 细分属性初始值
53
- var _useState11 = useState(),
49
+ subjectLoading = _useState10[0],
50
+ setSubjectLoading = _useState10[1];
51
+ var _useContext = useContext(IntervalContext),
52
+ subjectEnable = _useContext.subjectEnable;
53
+ var _ref = defaultValue || {},
54
+ userGroup = _ref.userGroup;
55
+ var _useState11 = useState('user'),
54
56
  _useState12 = _slicedToArray(_useState11, 2),
55
- bizAttributeSelectorValue = _useState12[0],
56
- setBizAttributeSelectorValue = _useState12[1];
57
- // 用户组和事件变更
58
- var onValuesChange = function onValuesChange(data, allData) {
59
- var _data = {};
60
- setRelevancyFl(false);
61
- if (allData.start) {
62
- if (allData.start.id !== null) {
63
- var _allData$start;
64
- _data = allData.start;
65
- setStartId(allData.start.id);
66
- setRelevancy(allData === null || allData === void 0 ? void 0 : (_allData$start = allData.start) === null || _allData$start === void 0 ? void 0 : _allData$start.relevancy);
67
- } else {
68
- setRelevancyFl(true);
69
- }
70
- }
71
- if (allData.end) {
72
- if (allData.end.id !== null) {
73
- _data = allData.end;
74
- setEndId(allData.end.id);
75
- } else {
76
- setRelevancyFl(true);
77
- }
57
+ analysisType = _useState12[0],
58
+ setAnalysisType = _useState12[1];
59
+ var _useState13 = useState(),
60
+ _useState14 = _slicedToArray(_useState13, 2),
61
+ currentSubject = _useState14[0],
62
+ setCurrentSubject = _useState14[1];
63
+ var _useState15 = useState(false),
64
+ _useState16 = _slicedToArray(_useState15, 2),
65
+ inited = _useState16[0],
66
+ setInited = _useState16[1];
67
+ var formRef = React.useRef(null);
68
+ useEffect(function () {
69
+ setTimeout(function () {
70
+ setSubjectList([]);
71
+ setSubjectLoading(false);
72
+ }, 300);
73
+ }, []);
74
+ function onSearch(values) {
75
+ if (props.onChange) {
76
+ props.onChange(_objectSpread(_objectSpread({}, values), {}, {
77
+ analysisSubject: values.analysisSubject ? {
78
+ subjectId: values.analysisSubject.id,
79
+ subjectName: values.analysisSubject.subjectName,
80
+ subjectAlias: values.analysisSubject.subjectAlias,
81
+ unit: values.analysisSubject.unit
82
+ } : undefined
83
+ }), true);
78
84
  }
79
- if (allData.userGroup) {
80
- _data.userGroup = allData.userGroup;
81
- if (_data.userGroup.length <= 0) _data.userGroup = [0];
82
- }
83
- props.onChange(allData, (finalSearchData === null || finalSearchData === void 0 ? void 0 : finalSearchData.chartType) === 'boxplot' ? true : false);
84
- };
85
+ }
85
86
  var resetting = function resetting() {
86
87
  form.resetFields();
87
88
  form.setFieldsValue({
@@ -94,6 +95,7 @@ var TopPanel = function TopPanel(props) {
94
95
  associatedNextAttr: undefined
95
96
  });
96
97
  setRelevancy(false);
98
+ setCurrentSubject(undefined);
97
99
  props.onChange({
98
100
  userGroup: [0],
99
101
  start: undefined,
@@ -106,55 +108,37 @@ var TopPanel = function TopPanel(props) {
106
108
  associatedNextAttr: undefined
107
109
  }, true);
108
110
  };
109
- // 细分属性
110
- var onChangeAttr = function onChangeAttr(attr, type) {
111
- if (attr === undefined) {
112
- // 删除细分属性
113
- switch (type) {
114
- case 'associatedPreAttr':
115
- form.setFieldsValue({
116
- associatedPreAttr: undefined
117
- });
118
- props.onChange({
119
- associatedPreAttr: undefined
120
- }, true);
121
- break;
122
- case 'associatedNextAttr':
123
- form.setFieldsValue({
124
- associatedNextAttr: undefined
125
- });
126
- props.onChange({
127
- associatedNextAttr: undefined
128
- }, true);
129
- break;
130
- case 'dimension':
131
- form.setFieldsValue({
132
- dimension: undefined
133
- });
134
- props.onChange({
135
- dimension: undefined
136
- }, true);
137
- break;
138
- }
139
- setBizAttributeSelectorValue(undefined);
111
+ useEffect(function () {
112
+ if (subjectLoading) return;
113
+ if (!defaultValue) {
114
+ setInited(true);
115
+ return;
116
+ }
117
+ setInited(false);
118
+ if (defaultValue.analysisSubject) {
119
+ setAnalysisType('eventProp');
140
120
  } else {
141
- var _value = attr.propCategory === 'eventProp' ? attr.id : attr.name;
142
- setBizAttributeSelectorValue({
143
- propCategory: attr.propCategory,
144
- category: attr.category,
145
- value: _value,
146
- key: attr.propCategory === 'eventProp' ? attr.id : attr.propCategory + '-' + _value
147
- });
121
+ setAnalysisType('user');
148
122
  }
149
- };
123
+ if (defaultValue.analysisSubject) {
124
+ setCurrentSubject(subjectList.find(function (item) {
125
+ var _defaultValue$analysi;
126
+ return item.id === (defaultValue === null || defaultValue === void 0 ? void 0 : (_defaultValue$analysi = defaultValue.analysisSubject) === null || _defaultValue$analysi === void 0 ? void 0 : _defaultValue$analysi.subjectId);
127
+ }));
128
+ }
129
+ setInited(true);
130
+ }, [subjectLoading]);
131
+ if (!inited) return null;
150
132
  return /*#__PURE__*/React.createElement(Form, {
151
133
  form: form,
134
+ ref: formRef,
152
135
  component: "div",
153
136
  colon: false,
154
137
  className: "panel-form-interval",
155
138
  layout: "vertical",
156
139
  initialValues: {
157
- 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],
140
+ 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],
141
+ analysisSubject: props === null || props === void 0 ? void 0 : (_props$defaultValue3 = props.defaultValue) === null || _props$defaultValue3 === void 0 ? void 0 : _props$defaultValue3.analysisSubject,
158
142
  start: _objectSpread(_objectSpread({}, defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.start), {}, {
159
143
  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
160
144
  }),
@@ -176,11 +160,56 @@ var TopPanel = function TopPanel(props) {
176
160
  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),
177
161
  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),
178
162
  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)
179
- })
163
+ }),
164
+ analysisModel: (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.analysisModel) || AnalysisMode.common
180
165
  },
181
166
  scrollToFirstError: true,
182
- onValuesChange: onValuesChange
183
- }, /*#__PURE__*/React.createElement(Form.Item, {
167
+ onFinish: onSearch
168
+ }, subjectEnable && /*#__PURE__*/React.createElement(Form.Item, {
169
+ label: "\u5206\u6790\u4E3B\u4F53",
170
+ className: "panel-form-interval-item"
171
+ }, /*#__PURE__*/React.createElement(BizSelect, {
172
+ options: [{
173
+ label: '用户',
174
+ value: 'user'
175
+ }, {
176
+ label: '事件属性',
177
+ value: 'eventProp'
178
+ }],
179
+ keyField: "value",
180
+ defaultValue: {
181
+ value: analysisType
182
+ },
183
+ onChange: function onChange(val) {
184
+ setAnalysisType(val.value);
185
+ resetting();
186
+ }
187
+ })), analysisType === 'eventProp' && /*#__PURE__*/React.createElement(Form.Item, {
188
+ label: "\u4E3B\u4F53\u540D\u79F0",
189
+ name: "analysisSubject",
190
+ className: "panel-form-interval-item",
191
+ rules: [{
192
+ validator: function validator(rule, value) {
193
+ if (!value) {
194
+ return Promise.reject('请选择主体名称');
195
+ }
196
+ return Promise.resolve();
197
+ }
198
+ }]
199
+ }, /*#__PURE__*/React.createElement(BizSelect, {
200
+ options: subjectList,
201
+ aliasField: "subjectAlias",
202
+ labelField: "subjectName",
203
+ keyField: "id",
204
+ onChange: function onChange(val) {
205
+ var _formRef$current, _formRef$current2, _formRef$current3;
206
+ setCurrentSubject(val);
207
+ setRelevancy(false);
208
+ (_formRef$current = formRef.current) === null || _formRef$current === void 0 ? void 0 : _formRef$current.setFieldValue('start', undefined);
209
+ (_formRef$current2 = formRef.current) === null || _formRef$current2 === void 0 ? void 0 : _formRef$current2.setFieldValue('end', undefined);
210
+ (_formRef$current3 = formRef.current) === null || _formRef$current3 === void 0 ? void 0 : _formRef$current3.setFieldValue('dimension', undefined);
211
+ }
212
+ })), analysisType === 'user' && /*#__PURE__*/React.createElement(Form.Item, {
184
213
  label: "",
185
214
  name: "userGroup",
186
215
  className: "space-item interval-item",
@@ -195,17 +224,62 @@ var TopPanel = function TopPanel(props) {
195
224
  className: "collapseRefs"
196
225
  }, /*#__PURE__*/React.createElement(Form.Item, {
197
226
  label: "\u5F00\u59CB\u4E8B\u4EF6",
198
- name: "start"
199
- }, /*#__PURE__*/React.createElement(EventFilter, {
200
- disableRelevancy: relevancyFl,
201
- resetSwitch: resetSwitch,
202
- afterReset: function afterReset() {
203
- setResetSwitch(false);
227
+ style: {
228
+ marginBottom: '8px',
229
+ position: 'relative'
230
+ }
231
+ }, /*#__PURE__*/React.createElement(Form.Item, {
232
+ name: "start",
233
+ validateStatus: "success",
234
+ style: {
235
+ marginBottom: 0
204
236
  },
205
- relevancy: true
206
- })), relevancy ? /*#__PURE__*/React.createElement(Form.Item, {
237
+ rules: [{
238
+ validateTrigger: ['onBlur'],
239
+ validator: function validator(rule, value) {
240
+ var _value$filters, _value$filters$condit;
241
+ if (!value || !value.id) {
242
+ return Promise.reject('请选择开始事件');
243
+ }
244
+ var conditionValIsNull = false;
245
+ 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) {
246
+ var _item$values;
247
+ if (!/null/.test(item.operator || '') && !((_item$values = item.values) !== null && _item$values !== void 0 && _item$values.length)) {
248
+ conditionValIsNull = true;
249
+ }
250
+ });
251
+ if (conditionValIsNull) {
252
+ return Promise.reject('请填写完整的条件');
253
+ }
254
+ return Promise.resolve();
255
+ }
256
+ }]
257
+ }, /*#__PURE__*/React.createElement(EventFilter, {
258
+ subject: currentSubject,
259
+ key: "".concat(currentSubject === null || currentSubject === void 0 ? void 0 : currentSubject.subjectName, "-start"),
260
+ analysisType: analysisType,
261
+ onChange: function onChange(evt) {
262
+ var _formRef$current4;
263
+ setStartEvent(evt);
264
+ (_formRef$current4 = formRef.current) === null || _formRef$current4 === void 0 ? void 0 : _formRef$current4.setFieldValue('dimension', undefined);
265
+ }
266
+ })), /*#__PURE__*/React.createElement(Space, {
267
+ align: "baseline",
268
+ style: {
269
+ position: 'absolute',
270
+ top: '9px',
271
+ left: '295px'
272
+ }
273
+ }, /*#__PURE__*/React.createElement(Switch, {
274
+ checked: relevancy,
275
+ onChange: setRelevancy
276
+ }), /*#__PURE__*/React.createElement("span", {
277
+ className: "switch-title"
278
+ }, "\u8BBE\u7F6E\u5173\u8054\u5C5E\u6027"))), relevancy && /*#__PURE__*/React.createElement(Form.Item, {
207
279
  className: "associated"
208
- }, /*#__PURE__*/React.createElement("span", {
280
+ }, /*#__PURE__*/React.createElement(Space, {
281
+ align: "baseline"
282
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
209
283
  className: "associated-link"
210
284
  }, /*#__PURE__*/React.createElement("i", {
211
285
  style: {
@@ -216,81 +290,128 @@ var TopPanel = function TopPanel(props) {
216
290
  className: "associated-label"
217
291
  }, "\u5C5E\u60271"), /*#__PURE__*/React.createElement(Form.Item, {
218
292
  name: "associatedPreAttr",
219
- style: {
220
- display: 'inline-block',
221
- marginRight: 28
222
- }
293
+ rules: [{
294
+ validator: function validator(rule, value) {
295
+ if (!value || !value.dimensionSub) {
296
+ return Promise.reject('请选择属性1');
297
+ }
298
+ return Promise.resolve();
299
+ }
300
+ }]
223
301
  }, /*#__PURE__*/React.createElement(BizAttributeSelector, {
224
302
  enableEventProp: true,
225
303
  enableUserProp: false,
226
304
  enableEnvProp: false,
227
- eventIdList: [startId],
228
- value: bizAttributeSelectorValue,
305
+ eventIdList: [startEvent === null || startEvent === void 0 ? void 0 : startEvent.id],
229
306
  enableDelete: true,
230
- onChange: onChangeAttr,
307
+ key: "".concat(startEvent === null || startEvent === void 0 ? void 0 : startEvent.id, "-").concat(endEvent === null || endEvent === void 0 ? void 0 : endEvent.id, "-pre"),
231
308
  onDelete: function onDelete() {
232
- onChangeAttr(undefined, 'associatedPreAttr');
309
+ var _formRef$current5;
310
+ (_formRef$current5 = formRef.current) === null || _formRef$current5 === void 0 ? void 0 : _formRef$current5.setFieldValue('associatedPreAttr', undefined);
233
311
  }
234
- })), /*#__PURE__*/React.createElement("span", {
312
+ }))), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
235
313
  className: "associated-label"
236
314
  }, "\u5C5E\u60272"), /*#__PURE__*/React.createElement(Form.Item, {
237
315
  name: "associatedNextAttr",
238
- style: {
239
- display: 'inline-block'
240
- }
316
+ rules: [{
317
+ validator: function validator(rule, value) {
318
+ if (!value || !value.dimensionSub) {
319
+ return Promise.reject('请选择属性2');
320
+ }
321
+ return Promise.resolve();
322
+ }
323
+ }]
241
324
  }, /*#__PURE__*/React.createElement(BizAttributeSelector, {
242
325
  enableEventProp: true,
243
326
  enableUserProp: false,
244
327
  enableEnvProp: false,
245
- eventIdList: [endId],
246
- value: bizAttributeSelectorValue,
328
+ eventIdList: [endEvent === null || endEvent === void 0 ? void 0 : endEvent.id],
247
329
  enableDelete: true,
248
- onChange: onChangeAttr,
330
+ key: "".concat(startEvent === null || startEvent === void 0 ? void 0 : startEvent.id, "-").concat(endEvent === null || endEvent === void 0 ? void 0 : endEvent.id, "-next"),
249
331
  onDelete: function onDelete() {
250
- onChangeAttr(undefined, 'associatedNextAttr');
332
+ var _formRef$current6;
333
+ (_formRef$current6 = formRef.current) === null || _formRef$current6 === void 0 ? void 0 : _formRef$current6.setFieldValue('associatedNextAttr', undefined);
251
334
  }
252
- })), /*#__PURE__*/React.createElement("i", {
335
+ }))), /*#__PURE__*/React.createElement("i", {
253
336
  style: {
254
337
  lineHeight: '32px',
255
338
  marginLeft: '28px',
256
339
  cursor: 'pointer'
257
340
  },
258
341
  onClick: function onClick() {
259
- onChangeAttr(undefined, 'associatedPreAttr');
260
- onChangeAttr(undefined, 'associatedNextAttr');
342
+ var _formRef$current7, _formRef$current8;
343
+ (_formRef$current7 = formRef.current) === null || _formRef$current7 === void 0 ? void 0 : _formRef$current7.setFieldValue('associatedPreAttr', undefined);
344
+ (_formRef$current8 = formRef.current) === null || _formRef$current8 === void 0 ? void 0 : _formRef$current8.setFieldValue('associatedNextAttr', undefined);
261
345
  setRelevancy(false);
262
- setRelevancyFl(true);
263
- setResetSwitch(true);
264
346
  },
265
347
  className: "bsicon qingchu"
266
- })) : '', /*#__PURE__*/React.createElement(Form.Item, {
348
+ }))), /*#__PURE__*/React.createElement(Form.Item, {
267
349
  label: "\u7ED3\u675F\u4E8B\u4EF6",
268
- name: "end"
269
- }, /*#__PURE__*/React.createElement(EventFilter, null)), /*#__PURE__*/React.createElement(Form.Item, {
350
+ name: "end",
351
+ validateStatus: "success",
352
+ rules: [{
353
+ validateTrigger: ['onBlur'],
354
+ validator: function validator(rule, value) {
355
+ var _value$filters2, _value$filters2$condi;
356
+ if (!value || !value.id) {
357
+ return Promise.reject('请选择结束事件');
358
+ }
359
+ var conditionValIsNull = false;
360
+ 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) {
361
+ var _item$values2;
362
+ if (!/null/.test(item.operator || '') && !((_item$values2 = item.values) !== null && _item$values2 !== void 0 && _item$values2.length)) {
363
+ conditionValIsNull = true;
364
+ }
365
+ });
366
+ if (conditionValIsNull) {
367
+ return Promise.reject('请填写完整的条件');
368
+ }
369
+ return Promise.resolve();
370
+ }
371
+ }]
372
+ }, /*#__PURE__*/React.createElement(EventFilter, {
373
+ subject: currentSubject,
374
+ analysisType: analysisType,
375
+ key: "".concat(currentSubject === null || currentSubject === void 0 ? void 0 : currentSubject.subjectName, "-start"),
376
+ onChange: function onChange(val) {
377
+ var _formRef$current9;
378
+ setEndEvent(val);
379
+ (_formRef$current9 = formRef.current) === null || _formRef$current9 === void 0 ? void 0 : _formRef$current9.setFieldValue('dimension', undefined);
380
+ }
381
+ })), /*#__PURE__*/React.createElement(Form.Item, {
270
382
  label: "\u6309\u5C5E\u6027\u7EC6\u5206",
271
383
  name: "dimension",
272
384
  className: "dimension-interval"
273
385
  }, /*#__PURE__*/React.createElement(BizAttributeSelector, {
274
386
  enableEventProp: true,
275
- enableUserProp: true,
387
+ enableUserProp: analysisType === 'user',
276
388
  enableEnvProp: true,
277
- eventIdList: startId === endId ? [startId] : [startId, endId],
278
- value: bizAttributeSelectorValue,
389
+ 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, "}"),
390
+ eventIdList: [(startEvent === null || startEvent === void 0 ? void 0 : startEvent.id) || 0, (endEvent === null || endEvent === void 0 ? void 0 : endEvent.id) || 0],
391
+ showCommonProp: true,
279
392
  enableDelete: true,
280
- onChange: onChangeAttr,
281
393
  onDelete: function onDelete() {
282
- onChangeAttr(undefined, 'dimension');
394
+ var _formRef$current10;
395
+ (_formRef$current10 = formRef.current) === null || _formRef$current10 === void 0 ? void 0 : _formRef$current10.setFieldValue('dimension', undefined);
283
396
  }
284
- })), /*#__PURE__*/React.createElement("div", {
397
+ })), /*#__PURE__*/React.createElement(Form.Item, {
398
+ label: "\u5206\u6790\u6A21\u578B",
399
+ name: "analysisModel",
400
+ className: "panel-form-interval-item"
401
+ }, /*#__PURE__*/React.createElement(Radio.Group, null, /*#__PURE__*/React.createElement(Radio, {
402
+ value: AnalysisMode.common
403
+ }, "\u5E38\u89C4\u95F4\u9694\u5206\u6790"), /*#__PURE__*/React.createElement(Radio, {
404
+ value: AnalysisMode.firstAndLast
405
+ }, "\u9996\u672B\u6B21\u95F4\u9694\u5206\u6790"))), /*#__PURE__*/React.createElement("div", {
285
406
  className: "".concat(classPrefix, "-form-botton-box")
286
407
  }, /*#__PURE__*/React.createElement(Button, {
287
408
  onClick: resetting
288
409
  }, "\u91CD\u7F6E"), /*#__PURE__*/React.createElement(Button, {
289
- loading: loading,
290
- disabled: loading || !startId || !endId || relevancy && !(defaultValue !== null && defaultValue !== void 0 && defaultValue.associatedNextAttr) && !(defaultValue !== null && defaultValue !== void 0 && defaultValue.associatedNextAttr),
410
+ loading: loading || subjectLoading,
291
411
  type: "primary",
292
412
  onClick: function onClick() {
293
- fetchRequest(true);
413
+ var _formRef$current11;
414
+ (_formRef$current11 = formRef.current) === null || _formRef$current11 === void 0 ? void 0 : _formRef$current11.submit();
294
415
  }
295
416
  }, "\u67E5\u8BE2"))));
296
417
  };
@@ -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
+ }