@next-libs/cmdb-instances 7.8.0 → 7.9.1

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.
@@ -10,8 +10,10 @@ exports.LegacyInstanceList = LegacyInstanceList;
10
10
  exports.getQuery = getQuery;
11
11
  exports.isValueEqualFn = exports.isSpecialFn = exports.initAqToShow = void 0;
12
12
  exports.joinRelationFieldAndShowkey = joinRelationFieldAndShowkey;
13
+ exports.mergeFields = mergeFields;
13
14
  exports.specialQueryHandler = void 0;
14
15
  exports.translateConditions = translateConditions;
16
+ exports.updateSortFields = updateSortFields;
15
17
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
16
18
  var _react = _interopRequireWildcard(require("react"));
17
19
  var _lodash = require("lodash");
@@ -110,6 +112,31 @@ const isValueEqualFn = (query, attrId, valuesStr) => {
110
112
  : false;
111
113
  };
112
114
  exports.isValueEqualFn = isValueEqualFn;
115
+ function mergeFields(oldFields, newFieldIds) {
116
+ return newFieldIds.map(field => {
117
+ const existField = oldFields.find(f => f.field === field);
118
+ const order = existField ? existField.order : 0;
119
+ return {
120
+ field,
121
+ order
122
+ };
123
+ });
124
+ }
125
+ function updateSortFields(oldFields, sortInfo, sortType) {
126
+ const {
127
+ asc,
128
+ sort
129
+ } = sortInfo;
130
+ const order = (0, _lodash.isNil)(asc) ? 0 : ["series-number", "auto-increment-id"].includes(sortType) ? asc ? 2 : -2 : asc ? 1 : -1;
131
+ return oldFields.map(item => {
132
+ if (item.field === sort) {
133
+ item.order = order;
134
+ } else {
135
+ item.order = 0;
136
+ }
137
+ return item;
138
+ });
139
+ }
113
140
  function translateConditions(aq, idObjectMap, modelData, t) {
114
141
  const conditions = [];
115
142
  const relations = [];
@@ -296,6 +323,14 @@ function LegacyInstanceList(props) {
296
323
  const ignorePermissionProvider = (0, _brickKit.useProvider)("easyops.api.cmdb.instance@PostSearchV3WithAdmin:1.0.0", {
297
324
  cache: false
298
325
  });
326
+ // istanbul ignore next
327
+
328
+ const fieldsProvider = (0, _brickKit.useProvider)("easyops.api.cmdb.instance@GetListDisplayView:1.0.1", {
329
+ cache: false
330
+ });
331
+ const updateFieldsProvider = (0, _brickKit.useProvider)("easyops.api.cmdb.instance@UpdateListDisplayView:1.0.0", {
332
+ cache: false
333
+ });
299
334
  const {
300
335
  modelData,
301
336
  idObjectMap
@@ -368,10 +403,53 @@ function LegacyInstanceList(props) {
368
403
  });
369
404
  return [...frontFields, ...restFields];
370
405
  };
371
- const getFields = () => {
372
- var _props$presetConfigs3, _props$extraFixedFiel;
406
+ // istanbul ignore next
407
+
408
+ const getFieldsAsync = async () => {
409
+ var _props$presetConfigs3, _modelData$attrList, _modelData$attrList$f2, _modelData$attrList$f3, _props$extraFixedFiel;
410
+ let sort = props.sort;
373
411
  let fieldIds = (_props$presetConfigs3 = props.presetConfigs) === null || _props$presetConfigs3 === void 0 ? void 0 : _props$presetConfigs3.fieldIds;
412
+ const sortType = modelData === null || modelData === void 0 ? void 0 : (_modelData$attrList = modelData.attrList) === null || _modelData$attrList === void 0 ? void 0 : (_modelData$attrList$f2 = _modelData$attrList.find(attr => attr.id === sort)) === null || _modelData$attrList$f2 === void 0 ? void 0 : (_modelData$attrList$f3 = _modelData$attrList$f2.value) === null || _modelData$attrList$f3 === void 0 ? void 0 : _modelData$attrList$f3.default_type;
413
+ let asc;
414
+ if (props.asc === true) {
415
+ asc = ["series-number", "auto-increment-id"].includes(sortType) ? 2 : 1;
416
+ } else {
417
+ asc = ["series-number", "auto-increment-id"].includes(sortType) ? -2 : -1;
418
+ }
419
+ const sortFields = (await fieldsProvider.query([props.objectId])).sortFields;
374
420
  const extraFixedFieldIds = (_props$extraFixedFiel = props.extraFixedFields) !== null && _props$extraFixedFiel !== void 0 ? _props$extraFixedFiel : [];
421
+ if ((0, _lodash.isEmpty)(fieldIds)) {
422
+ fieldIds = sortFields.map(item => item.field);
423
+ if ((0, _lodash.isEmpty)(sort) || (0, _lodash.isEmpty)(asc)) {
424
+ const orderField = sortFields.find(item => item.order !== 0);
425
+ if (orderField) {
426
+ sort = orderField.field;
427
+ asc = orderField.order;
428
+ }
429
+ }
430
+ }
431
+ if ((0, _lodash.isEmpty)(fieldIds)) {
432
+ fieldIds = computeDefaultFields().fieldIds;
433
+ }
434
+ if (!(0, _lodash.isEmpty)(extraFixedFieldIds)) {
435
+ fieldIds = (0, _lodash.uniq)([...fieldIds, ...extraFixedFieldIds]);
436
+ }
437
+ fieldIds = props.extraDisabledField ? (0, _lodash.uniq)([...fieldIds, props.extraDisabledField]) : fieldIds;
438
+ fieldIds = _sortFieldIds(fieldIds);
439
+ const hideModelData = modelData.view.hide_columns || [];
440
+ fieldIds = fieldIds.filter(field => !hideModelData.includes(field));
441
+ modelData.isAbstract && fieldIds.push("_object_id");
442
+ return {
443
+ fieldIds,
444
+ sort,
445
+ asc,
446
+ sortFields
447
+ };
448
+ };
449
+ const getFields = () => {
450
+ var _props$presetConfigs4, _props$extraFixedFiel2;
451
+ let fieldIds = (_props$presetConfigs4 = props.presetConfigs) === null || _props$presetConfigs4 === void 0 ? void 0 : _props$presetConfigs4.fieldIds;
452
+ const extraFixedFieldIds = (_props$extraFixedFiel2 = props.extraFixedFields) !== null && _props$extraFixedFiel2 !== void 0 ? _props$extraFixedFiel2 : [];
375
453
  if ((0, _lodash.isEmpty)(fieldIds)) {
376
454
  fieldIds = jsonLocalStorage.getItem(`${modelData.objectId}-selectAttrIds`);
377
455
  }
@@ -390,11 +468,12 @@ function LegacyInstanceList(props) {
390
468
  };
391
469
  const [q, setQ] = (0, _react.useState)(props.q);
392
470
  const [state, setState] = (0, _react.useReducer)(reducer, undefined, () => {
393
- var _ref, _props$dataSource$pag, _props$dataSource, _ref2, _props$dataSource$pag2, _props$dataSource2, _props$presetConfigs4;
471
+ var _ref, _props$dataSource$pag, _props$dataSource, _ref2, _props$dataSource$pag2, _props$dataSource2, _props$presetConfigs5;
394
472
  return {
395
473
  objectId: props.objectId,
396
474
  q: props.q,
397
475
  aq: initAqToShow(props.aq, modelData, false),
476
+ sortFields: [],
398
477
  aqToShow: props.aqToShow || initAqToShow(props.aq, modelData),
399
478
  instanceSourceQuery: props.instanceSourceQuery,
400
479
  asc: props.asc,
@@ -410,8 +489,8 @@ function LegacyInstanceList(props) {
410
489
  loading: false,
411
490
  failed: false,
412
491
  isAdvancedSearchVisible: false,
413
- fieldIds: getFields(),
414
- presetConfigsQuery: (_props$presetConfigs4 = props.presetConfigs) === null || _props$presetConfigs4 === void 0 ? void 0 : _props$presetConfigs4.query,
492
+ fieldIds: props.saveFieldsBackend ? [] : getFields(),
493
+ presetConfigsQuery: (_props$presetConfigs5 = props.presetConfigs) === null || _props$presetConfigs5 === void 0 ? void 0 : _props$presetConfigs5.query,
415
494
  autoBreakLine: false,
416
495
  appSearchInstanceId: "",
417
496
  currentChangeSelect: "App",
@@ -429,7 +508,7 @@ function LegacyInstanceList(props) {
429
508
  const cache = (0, _react.useRef)(new Map());
430
509
  const isFirstRunRef = (0, _react.useRef)(true);
431
510
  const getInstanceListData = async (sort, asc, page) => {
432
- var _modelData$attrList, _modelData$attrList$f2, _modelData$attrList$f3, _props$onSearchExecut;
511
+ var _modelData$attrList2, _modelData$attrList2$, _modelData$attrList2$2, _props$onSearchExecut;
433
512
  const data = {};
434
513
  const v3Data = {
435
514
  fields: props !== null && props !== void 0 && props.extraFixedFields ? (0, _lodash.uniq)(["instanceId"].concat(props === null || props === void 0 ? void 0 : props.extraFixedFields)) : ["instanceId"]
@@ -441,7 +520,7 @@ function LegacyInstanceList(props) {
441
520
  let query = {};
442
521
  v3Data.page = data.page = archiveData.page = page;
443
522
  v3Data["page_size"] = data["page_size"] = archiveData["page_size"] = state.pageSize;
444
- const sortType = modelData === null || modelData === void 0 ? void 0 : (_modelData$attrList = modelData.attrList) === null || _modelData$attrList === void 0 ? void 0 : (_modelData$attrList$f2 = _modelData$attrList.find(attr => attr.id === sort)) === null || _modelData$attrList$f2 === void 0 ? void 0 : (_modelData$attrList$f3 = _modelData$attrList$f2.value) === null || _modelData$attrList$f3 === void 0 ? void 0 : _modelData$attrList$f3.default_type;
523
+ const sortType = modelData === null || modelData === void 0 ? void 0 : (_modelData$attrList2 = modelData.attrList) === null || _modelData$attrList2 === void 0 ? void 0 : (_modelData$attrList2$ = _modelData$attrList2.find(attr => attr.id === sort)) === null || _modelData$attrList2$ === void 0 ? void 0 : (_modelData$attrList2$2 = _modelData$attrList2$.value) === null || _modelData$attrList2$2 === void 0 ? void 0 : _modelData$attrList2$2.default_type;
445
524
  const order = ["series-number", "auto-increment-id"].includes(sortType) ? asc ? 2 : -2 : asc ? 1 : -1;
446
525
  if (sort) {
447
526
  data.sort = {
@@ -512,8 +591,8 @@ function LegacyInstanceList(props) {
512
591
  //按应用筛选
513
592
  // istanbul ignore next (state is not updated)
514
593
  if (state.searchByApp) {
515
- var _props$presetConfigs5, _props$presetConfigs6, _props$presetConfigs7, _props$presetConfigs8, _props$presetConfigs9;
516
- const hostRange = (_props$presetConfigs5 = props.presetConfigs) === null || _props$presetConfigs5 === void 0 ? void 0 : (_props$presetConfigs6 = _props$presetConfigs5.query) === null || _props$presetConfigs6 === void 0 ? void 0 : (_props$presetConfigs7 = _props$presetConfigs6["$and"]) === null || _props$presetConfigs7 === void 0 ? void 0 : (_props$presetConfigs8 = _props$presetConfigs7.find(i => i.instanceId)) === null || _props$presetConfigs8 === void 0 ? void 0 : (_props$presetConfigs9 = _props$presetConfigs8.instanceId) === null || _props$presetConfigs9 === void 0 ? void 0 : _props$presetConfigs9["$in"];
594
+ var _props$presetConfigs6, _props$presetConfigs7, _props$presetConfigs8, _props$presetConfigs9, _props$presetConfigs10;
595
+ const hostRange = (_props$presetConfigs6 = props.presetConfigs) === null || _props$presetConfigs6 === void 0 ? void 0 : (_props$presetConfigs7 = _props$presetConfigs6.query) === null || _props$presetConfigs7 === void 0 ? void 0 : (_props$presetConfigs8 = _props$presetConfigs7["$and"]) === null || _props$presetConfigs8 === void 0 ? void 0 : (_props$presetConfigs9 = _props$presetConfigs8.find(i => i.instanceId)) === null || _props$presetConfigs9 === void 0 ? void 0 : (_props$presetConfigs10 = _props$presetConfigs9.instanceId) === null || _props$presetConfigs10 === void 0 ? void 0 : _props$presetConfigs10["$in"];
517
596
  v3Data.query = {
518
597
  [state.currentChangeSelect === "App" || state.currentChangeSelect === "Cluster" && state.clusterValue === "all" ? "_deviceList_CLUSTER.appId.instanceId" : "_deviceList_CLUSTER.instanceId"]: state.appSearchInstanceId,
519
598
  ...(!(0, _lodash.isEmpty)(hostRange) && props.limitInstanceRange ? {
@@ -570,17 +649,42 @@ function LegacyInstanceList(props) {
570
649
  });
571
650
  }
572
651
  };
652
+ // const [fieldIds,setFieldIds] = useState([]);
653
+ // istanbul ignore next
573
654
  (0, _react.useEffect)(() => {
574
- var _props$presetConfigs10;
575
- const fieldIds = getFields();
576
- if (
577
- // 当 props.objectId 改变时,总是更新 state.fieldIds
578
- props.objectId !== state.objectId || !(0, _lodash.isEqual)(fieldIds, state.fieldIds) || !(0, _lodash.isEqual)((_props$presetConfigs10 = props.presetConfigs) === null || _props$presetConfigs10 === void 0 ? void 0 : _props$presetConfigs10.query, state.presetConfigsQuery)) {
579
- var _props$presetConfigs11;
580
- setState({
581
- fieldIds,
582
- presetConfigsQuery: (_props$presetConfigs11 = props.presetConfigs) === null || _props$presetConfigs11 === void 0 ? void 0 : _props$presetConfigs11.query
583
- });
655
+ if (props.saveFieldsBackend) {
656
+ const getFieldIds = async () => {
657
+ var _props$presetConfigs11, _props$presetConfigs12;
658
+ const fieldConfig = await getFieldsAsync();
659
+ const {
660
+ fieldIds,
661
+ sort,
662
+ asc,
663
+ sortFields
664
+ } = fieldConfig;
665
+ if (
666
+ // 当 props.objectId 改变时,总是更新 state.fieldIds
667
+ props.objectId !== state.objectId || !(0, _lodash.isEqual)(fieldIds, state.fieldIds) || !(0, _lodash.isEqual)((_props$presetConfigs11 = props.presetConfigs) === null || _props$presetConfigs11 === void 0 ? void 0 : _props$presetConfigs11.query, state.presetConfigsQuery)) setState({
668
+ fieldIds,
669
+ presetConfigsQuery: (_props$presetConfigs12 = props.presetConfigs) === null || _props$presetConfigs12 === void 0 ? void 0 : _props$presetConfigs12.query,
670
+ sort,
671
+ asc: [1, 2].includes(asc) ? true : false,
672
+ sortFields
673
+ });
674
+ };
675
+ getFieldIds();
676
+ } else {
677
+ var _props$presetConfigs13;
678
+ const fieldIds = getFields();
679
+ if (
680
+ // 当 props.objectId 改变时,总是更新 state.fieldIds
681
+ props.objectId !== state.objectId || !(0, _lodash.isEqual)(fieldIds, state.fieldIds) || !(0, _lodash.isEqual)((_props$presetConfigs13 = props.presetConfigs) === null || _props$presetConfigs13 === void 0 ? void 0 : _props$presetConfigs13.query, state.presetConfigsQuery)) {
682
+ var _props$presetConfigs14;
683
+ setState({
684
+ fieldIds,
685
+ presetConfigsQuery: (_props$presetConfigs14 = props.presetConfigs) === null || _props$presetConfigs14 === void 0 ? void 0 : _props$presetConfigs14.query
686
+ });
687
+ }
584
688
  }
585
689
  }, [props.objectId, props.presetConfigs]);
586
690
  (0, _react.useEffect)(() => {
@@ -690,7 +794,7 @@ function LegacyInstanceList(props) {
690
794
  });
691
795
  (_props$onAdvancedSear = props.onAdvancedSearch) === null || _props$onAdvancedSear === void 0 ? void 0 : _props$onAdvancedSear.call(props, queries);
692
796
  };
693
- const onSortingChange = (0, _react.useCallback)(info => {
797
+ const onSortingChange = (0, _react.useCallback)(async (info, sortFields) => {
694
798
  var _props$onSortingChang;
695
799
  let asc;
696
800
  let sort;
@@ -710,6 +814,24 @@ function LegacyInstanceList(props) {
710
814
  asc = info.asc;
711
815
  sort = info.sort;
712
816
  }
817
+ // istanbul ignore next
818
+ if (props.saveFieldsBackend && sortFields.find(item => item.field === info.sort)) {
819
+ try {
820
+ var _modelData$attrList3, _modelData$attrList3$, _modelData$attrList3$2;
821
+ const oldsortFields = sortFields;
822
+ const sortType = modelData === null || modelData === void 0 ? void 0 : (_modelData$attrList3 = modelData.attrList) === null || _modelData$attrList3 === void 0 ? void 0 : (_modelData$attrList3$ = _modelData$attrList3.find(attr => attr.id === sort)) === null || _modelData$attrList3$ === void 0 ? void 0 : (_modelData$attrList3$2 = _modelData$attrList3$.value) === null || _modelData$attrList3$2 === void 0 ? void 0 : _modelData$attrList3$2.default_type;
823
+ const newSortFields = updateSortFields(oldsortFields, info, sortType);
824
+ setState({
825
+ sortFields: newSortFields
826
+ });
827
+ await updateFieldsProvider.query([props.objectId, {
828
+ sortFields: newSortFields
829
+ }]);
830
+ } catch (e) {
831
+ _brickKit.handleHttpError;
832
+ }
833
+ }
834
+ // istanbul ignore next
713
835
  (_props$onSortingChang = props.onSortingChange) === null || _props$onSortingChang === void 0 ? void 0 : _props$onSortingChang.call(props, info);
714
836
  }, [state.sort]);
715
837
  const onPaginationChange = (0, _react.useCallback)(pagination => {
@@ -794,10 +916,10 @@ function LegacyInstanceList(props) {
794
916
  });
795
917
  };
796
918
  const defaultFields = (0, _react.useMemo)(() => {
797
- var _props$presetConfigs12, _props$extraFixedFiel2;
919
+ var _props$presetConfigs15, _props$extraFixedFiel3;
798
920
  let defaultFields;
799
- const fieldIds = (_props$presetConfigs12 = props.presetConfigs) === null || _props$presetConfigs12 === void 0 ? void 0 : _props$presetConfigs12.fieldIds,
800
- extraFixedFieldIds = (_props$extraFixedFiel2 = props.extraFixedFields) !== null && _props$extraFixedFiel2 !== void 0 ? _props$extraFixedFiel2 : [];
921
+ const fieldIds = (_props$presetConfigs15 = props.presetConfigs) === null || _props$presetConfigs15 === void 0 ? void 0 : _props$presetConfigs15.fieldIds,
922
+ extraFixedFieldIds = (_props$extraFixedFiel3 = props.extraFixedFields) !== null && _props$extraFixedFiel3 !== void 0 ? _props$extraFixedFiel3 : [];
801
923
  if (!(0, _lodash.isEmpty)(fieldIds)) {
802
924
  defaultFields = props.presetConfigs.fieldIds;
803
925
  } else {
@@ -810,23 +932,50 @@ function LegacyInstanceList(props) {
810
932
  }, [props.presetConfigs, modelData]);
811
933
 
812
934
  // istanbul ignore next
813
- const handleConfirm = ({
935
+ const handleConfirm = async ({
814
936
  fields,
815
937
  isReset
816
938
  }) => {
817
939
  if (isReset) {
818
940
  const fieldIds = defaultFields;
819
941
  modelData.isAbstract && fieldIds.push("_object_id");
820
- setState({
821
- fieldIds
822
- });
823
- jsonLocalStorage.removeItem(`${modelData.objectId}-selectAttrIds`);
824
- props.onFieldsModalConfirm(fieldIds);
942
+ if (props.saveFieldsBackend) {
943
+ const sortFields = mergeFields(state.sortFields, fieldIds);
944
+ await updateFieldsProvider.query([props.objectId, {
945
+ sortFields
946
+ }]);
947
+ setState({
948
+ fieldIds,
949
+ sortFields
950
+ });
951
+ props.onFieldsModalConfirm(fieldIds);
952
+ } else {
953
+ jsonLocalStorage.removeItem(`${modelData.objectId}-selectAttrIds`);
954
+ setState({
955
+ fieldIds
956
+ });
957
+ props.onFieldsModalConfirm(fieldIds);
958
+ }
825
959
  } else {
826
- setState({
827
- fieldIds: _sortFieldIds(fields)
828
- });
829
- jsonLocalStorage.setItem(`${modelData.objectId}-selectAttrIds`, fields);
960
+ if (props.saveFieldsBackend) {
961
+ try {
962
+ const sortFields = mergeFields(state.sortFields, fields);
963
+ await updateFieldsProvider.query([props.objectId, {
964
+ sortFields
965
+ }]);
966
+ setState({
967
+ fieldIds: _sortFieldIds(fields),
968
+ sortFields
969
+ });
970
+ } catch (e) {
971
+ (0, _brickKit.handleHttpError)(e);
972
+ }
973
+ } else {
974
+ setState({
975
+ fieldIds: _sortFieldIds(fields)
976
+ });
977
+ jsonLocalStorage.setItem(`${modelData.objectId}-selectAttrIds`, fields);
978
+ }
830
979
  props.onFieldsModalConfirm(fields);
831
980
  }
832
981
  };
@@ -1126,7 +1275,9 @@ function LegacyInstanceList(props) {
1126
1275
  onClickItem: props.onClickItem,
1127
1276
  onClickItemV2: props.onClickItemV2,
1128
1277
  onPaginationChange: onPaginationChange,
1129
- onSortingChange: onSortingChange,
1278
+ onSortingChange: info => {
1279
+ onSortingChange(info, state.sortFields);
1280
+ },
1130
1281
  onSelectionChange: onSelectionChange,
1131
1282
  onInstanceSourceChange: onInstanceSourceChange,
1132
1283
  instanceSourceQuery: state.instanceSourceQuery,