@next-libs/cmdb-instances 7.13.9 → 7.14.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.
Files changed (32) hide show
  1. package/dist/cjs/i18n/constants.js +2 -0
  2. package/dist/cjs/i18n/constants.js.map +1 -1
  3. package/dist/cjs/i18n/locales/en.js +2 -0
  4. package/dist/cjs/i18n/locales/en.js.map +1 -1
  5. package/dist/cjs/i18n/locales/zh.js +2 -0
  6. package/dist/cjs/i18n/locales/zh.js.map +1 -1
  7. package/dist/cjs/instance-list/InstanceList.js +79 -29
  8. package/dist/cjs/instance-list/InstanceList.js.map +1 -1
  9. package/dist/cjs/instance-list-table/DisplaySettings.js +0 -1
  10. package/dist/cjs/instance-list-table/DisplaySettings.js.map +1 -1
  11. package/dist/cjs/instance-list-table/DisplaySettingsModal.js +36 -1
  12. package/dist/cjs/instance-list-table/DisplaySettingsModal.js.map +1 -1
  13. package/dist/cjs/instance-list-table/MoreButtonsContainer.js +2 -0
  14. package/dist/cjs/instance-list-table/MoreButtonsContainer.js.map +1 -1
  15. package/dist/esm/i18n/constants.js +2 -0
  16. package/dist/esm/i18n/constants.js.map +1 -1
  17. package/dist/esm/i18n/locales/en.js +2 -0
  18. package/dist/esm/i18n/locales/en.js.map +1 -1
  19. package/dist/esm/i18n/locales/zh.js +2 -0
  20. package/dist/esm/i18n/locales/zh.js.map +1 -1
  21. package/dist/esm/instance-list/InstanceList.js +80 -30
  22. package/dist/esm/instance-list/InstanceList.js.map +1 -1
  23. package/dist/esm/instance-list-table/DisplaySettings.js +0 -1
  24. package/dist/esm/instance-list-table/DisplaySettings.js.map +1 -1
  25. package/dist/esm/instance-list-table/DisplaySettingsModal.js +37 -2
  26. package/dist/esm/instance-list-table/DisplaySettingsModal.js.map +1 -1
  27. package/dist/esm/instance-list-table/MoreButtonsContainer.js +2 -0
  28. package/dist/esm/instance-list-table/MoreButtonsContainer.js.map +1 -1
  29. package/dist/types/i18n/constants.d.ts +2 -0
  30. package/dist/types/instance-list-table/DisplaySettingsModal.d.ts +3 -0
  31. package/dist/types/instance-list-table/MoreButtonsContainer.d.ts +2 -0
  32. package/package.json +2 -2
@@ -8,7 +8,7 @@ import i18n from "i18next";
8
8
  import { K, NS_LIBS_CMDB_INSTANCES } from "../i18n/constants";
9
9
  import { InstanceApi_postSearchV3, CmdbObjectApi_getIdMapName, CmdbObjectApi_getObjectRef } from "@next-sdk/cmdb-sdk";
10
10
  import { Icon as LegacyIcon } from "@ant-design/compatible";
11
- import { Button, Spin, Input, Tag, Select } from "antd";
11
+ import { Button, Spin, Input, Tag, Select, message } from "antd";
12
12
  import { getRelationObjectSides, forEachAvailableFields, getInstanceNameKeys, isSelfRelation, ElementOperators, LogicalOperators } from "@next-libs/cmdb-utils";
13
13
  import { JsonStorage } from "@next-libs/storage";
14
14
  import { ConditionType, AdvancedSearch, getFieldConditionsAndValues, MoreButtonsContainer, InstanceListTable } from "../instance-list-table";
@@ -309,8 +309,14 @@ export function LegacyInstanceList(props) {
309
309
  var fieldsProvider = useProvider("easyops.api.cmdb.instance@GetListDisplayView:1.0.1", {
310
310
  cache: false
311
311
  });
312
+
313
+ // istanbul ignore next
312
314
  var updateFieldsProvider = useProvider("easyops.api.cmdb.instance@UpdateListDisplayView:1.0.0", {
313
- cache: false
315
+ cache: false,
316
+ onError: error => {
317
+ // istanbul ignore next
318
+ throw error;
319
+ }
314
320
  });
315
321
 
316
322
  // 用于外部调用的接口, 当useExternalCmdbApi为true,才调用这些接口
@@ -420,6 +426,7 @@ export function LegacyInstanceList(props) {
420
426
  var fieldIds = (_props$presetConfigs3 = props.presetConfigs) === null || _props$presetConfigs3 === void 0 ? void 0 : _props$presetConfigs3.fieldIds;
421
427
  var 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;
422
428
  var asc, sortFields;
429
+ var backendDefaultFields;
423
430
  if (props.asc === true) {
424
431
  asc = ["series-number", "auto-increment-id"].includes(sortType) ? 2 : 1;
425
432
  } else {
@@ -431,7 +438,10 @@ export function LegacyInstanceList(props) {
431
438
  sourceId: props.externalSourceId
432
439
  }])).sortFields;
433
440
  } else {
434
- sortFields = (yield fieldsProvider.query([props.objectId])).sortFields;
441
+ // 获取用户配置的显示列
442
+ var returnData = yield fieldsProvider.query([props.objectId]);
443
+ sortFields = returnData.sortFields;
444
+ backendDefaultFields = returnData.defaultSortFields;
435
445
  }
436
446
  var extraFixedFieldIds = (_props$extraFixedFiel = props.extraFixedFields) !== null && _props$extraFixedFiel !== void 0 ? _props$extraFixedFiel : [];
437
447
  if (isEmpty(fieldIds)) {
@@ -459,7 +469,8 @@ export function LegacyInstanceList(props) {
459
469
  fieldIds,
460
470
  sort,
461
471
  asc,
462
- sortFields
472
+ sortFields,
473
+ backendDefaultFields
463
474
  };
464
475
  });
465
476
  return function getFieldsAsync() {
@@ -521,7 +532,8 @@ export function LegacyInstanceList(props) {
521
532
  instanceId: "all",
522
533
  name: i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.ALL_CLUSTER))
523
534
  }],
524
- searchByApp: false
535
+ searchByApp: false,
536
+ backendDefaultFields: []
525
537
  };
526
538
  });
527
539
  var [selectedRowKeys, setSelectedRowKeys] = useState((_props$selectedRowKey = props.selectedRowKeys) !== null && _props$selectedRowKey !== void 0 ? _props$selectedRowKey : []);
@@ -698,7 +710,8 @@ export function LegacyInstanceList(props) {
698
710
  fieldIds,
699
711
  sort,
700
712
  asc,
701
- sortFields
713
+ sortFields,
714
+ backendDefaultFields
702
715
  } = fieldConfig;
703
716
  if (
704
717
  // 当 props.objectId 改变时,总是更新 state.fieldIds
@@ -707,7 +720,8 @@ export function LegacyInstanceList(props) {
707
720
  presetConfigsQuery: (_props$presetConfigs12 = props.presetConfigs) === null || _props$presetConfigs12 === void 0 ? void 0 : _props$presetConfigs12.query,
708
721
  sort,
709
722
  asc: [1, 2].includes(asc) ? true : false,
710
- sortFields
723
+ sortFields,
724
+ backendDefaultFields
711
725
  });
712
726
  });
713
727
  return function getFieldIds() {
@@ -986,6 +1000,9 @@ export function LegacyInstanceList(props) {
986
1000
  clusterValue: v
987
1001
  });
988
1002
  };
1003
+
1004
+ // 后台返回的默认配置
1005
+
989
1006
  var defaultFields = useMemo(() => {
990
1007
  var _props$presetConfigs15, _props$extraFixedFiel3;
991
1008
  var defaultFields;
@@ -994,22 +1011,34 @@ export function LegacyInstanceList(props) {
994
1011
  if (!isEmpty(fieldIds)) {
995
1012
  defaultFields = props.presetConfigs.fieldIds;
996
1013
  } else {
997
- defaultFields = computeDefaultFields().fieldIds;
1014
+ var _state$backendDefault;
1015
+ // istanbul ignore next
1016
+ // 所有用户(包括管理员)点击恢复默认按钮是恢复到 1.管理员设置的默认显示 2.管理员未设置时取前N个
1017
+ if (props.saveFieldsBackend && !props.useExternalCmdbApi && state.backendDefaultFields && ((_state$backendDefault = state.backendDefaultFields) === null || _state$backendDefault === void 0 ? void 0 : _state$backendDefault.length) > 0) {
1018
+ var _state$backendDefault2;
1019
+ // istanbul ignore next
1020
+ // 后台接口返回的默认字段(1. admin用户设置的,2. 前N个)
1021
+ defaultFields = compact((_state$backendDefault2 = state.backendDefaultFields) === null || _state$backendDefault2 === void 0 ? void 0 : _state$backendDefault2.map(s => s.field));
1022
+ } else {
1023
+ defaultFields = computeDefaultFields().fieldIds;
1024
+ }
998
1025
  }
999
1026
  if (!isEmpty(extraFixedFieldIds)) {
1000
1027
  defaultFields = uniq([...defaultFields, ...extraFixedFieldIds]);
1001
1028
  }
1002
1029
  return defaultFields;
1003
- }, [props.presetConfigs, modelData]);
1030
+ }, [props.presetConfigs, modelData, state.backendDefaultFields]);
1004
1031
 
1005
1032
  // istanbul ignore next
1006
1033
  var handleConfirm = /*#__PURE__*/function () {
1007
1034
  var _ref13 = _asyncToGenerator(function* (_ref12) {
1008
1035
  var {
1009
1036
  fields,
1010
- isReset
1037
+ isReset,
1038
+ isAdminSetDisplay
1011
1039
  } = _ref12;
1012
1040
  if (isReset) {
1041
+ // 恢复默认操作
1013
1042
  var fieldIds = defaultFields;
1014
1043
  modelData.isAbstract && fieldIds.push("_object_id");
1015
1044
  if (props.saveFieldsBackend) {
@@ -1038,34 +1067,53 @@ export function LegacyInstanceList(props) {
1038
1067
  props.onFieldsModalConfirm(fieldIds);
1039
1068
  }
1040
1069
  } else {
1041
- if (props.saveFieldsBackend) {
1042
- try {
1043
- var _sortFields = mergeFields(state.sortFields, fields);
1044
- if (props.useExternalCmdbApi) {
1045
- yield externalUpdateFieldsProvider.query([{
1046
- object_id: props.objectId,
1047
- sourceId: props.externalSourceId,
1048
- sortFields: _sortFields
1049
- }]);
1050
- } else {
1051
- yield updateFieldsProvider.query([props.objectId, {
1070
+ if (!isAdminSetDisplay) {
1071
+ // 点击确定按钮触发
1072
+ if (props.saveFieldsBackend) {
1073
+ try {
1074
+ var _sortFields = mergeFields(state.sortFields, fields);
1075
+ if (props.useExternalCmdbApi) {
1076
+ yield externalUpdateFieldsProvider.query([{
1077
+ object_id: props.objectId,
1078
+ sourceId: props.externalSourceId,
1079
+ sortFields: _sortFields
1080
+ }]);
1081
+ } else {
1082
+ yield updateFieldsProvider.query([props.objectId, {
1083
+ sortFields: _sortFields
1084
+ }]);
1085
+ }
1086
+ setState({
1087
+ fieldIds: _sortFieldIds(fields),
1052
1088
  sortFields: _sortFields
1053
- }]);
1089
+ });
1090
+ } catch (e) {
1091
+ handleHttpError(e);
1054
1092
  }
1093
+ } else {
1055
1094
  setState({
1056
- fieldIds: _sortFieldIds(fields),
1057
- sortFields: _sortFields
1095
+ fieldIds: _sortFieldIds(fields)
1096
+ });
1097
+ jsonLocalStorage.setItem("".concat(modelData.objectId, "-selectAttrIds"), fields);
1098
+ }
1099
+ props.onFieldsModalConfirm(fields);
1100
+ } else {
1101
+ // 点击【默认显示】按钮触发,不影响当前列表显示。
1102
+ try {
1103
+ // istanbul ignore next
1104
+ var _sortFields2 = mergeFields(state.sortFields, fields);
1105
+ yield updateFieldsProvider.query([props.objectId, {
1106
+ sortFields: _sortFields2,
1107
+ isDefault: true
1108
+ }]);
1109
+ message.success(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.SET_DEFAULT_DISPLAY_SUCCESS)));
1110
+ setState({
1111
+ backendDefaultFields: _sortFields2
1058
1112
  });
1059
1113
  } catch (e) {
1060
1114
  handleHttpError(e);
1061
1115
  }
1062
- } else {
1063
- setState({
1064
- fieldIds: _sortFieldIds(fields)
1065
- });
1066
- jsonLocalStorage.setItem("".concat(modelData.objectId, "-selectAttrIds"), fields);
1067
1116
  }
1068
- props.onFieldsModalConfirm(fields);
1069
1117
  }
1070
1118
  });
1071
1119
  return function handleConfirm(_x11) {
@@ -1313,6 +1361,8 @@ export function LegacyInstanceList(props) {
1313
1361
  }), !props.moreButtonsDisabled && /*#__PURE__*/React.createElement(MoreButtonsContainer, {
1314
1362
  modelData: modelData,
1315
1363
  onConfirm: handleConfirm,
1364
+ useExternalCmdbApi: props.useExternalCmdbApi,
1365
+ saveFieldsBackend: props.saveFieldsBackend,
1316
1366
  fieldIds: state.fieldIds,
1317
1367
  defaultFields: defaultFields,
1318
1368
  extraDisabledField: props.extraDisabledField,