@next-libs/cmdb-instances 7.0.11 → 7.0.12

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 (21) hide show
  1. package/dist/cjs/instance-detail/InstanceDetail.js +56 -13
  2. package/dist/cjs/instance-detail/InstanceDetail.js.map +1 -1
  3. package/dist/cjs/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js +3 -1
  4. package/dist/cjs/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
  5. package/dist/cjs/struct-components/AddStruct.js +35 -3
  6. package/dist/cjs/struct-components/AddStruct.js.map +1 -1
  7. package/dist/cjs/struct-components/StructTable.js +39 -8
  8. package/dist/cjs/struct-components/StructTable.js.map +1 -1
  9. package/dist/esm/instance-detail/InstanceDetail.js +57 -15
  10. package/dist/esm/instance-detail/InstanceDetail.js.map +1 -1
  11. package/dist/esm/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js +6 -4
  12. package/dist/esm/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
  13. package/dist/esm/struct-components/AddStruct.js +37 -5
  14. package/dist/esm/struct-components/AddStruct.js.map +1 -1
  15. package/dist/esm/struct-components/StructTable.js +41 -10
  16. package/dist/esm/struct-components/StructTable.js.map +1 -1
  17. package/dist/types/instance-detail/InstanceDetail.d.ts +6 -1
  18. package/dist/types/instance-detail/components/instance-relation-table-show/instance-relation-table-show.d.ts +4 -0
  19. package/dist/types/struct-components/AddStruct.d.ts +1 -0
  20. package/dist/types/struct-components/StructTable.d.ts +3 -0
  21. package/package.json +2 -2
@@ -13,7 +13,8 @@ export function InstanceRelationTableShow(props) {
13
13
  value,
14
14
  relationFieldUrlTemplate,
15
15
  paginationChange,
16
- total
16
+ total,
17
+ relationTablePagination
17
18
  } = props;
18
19
  var oppositeModelData = modifyModelData(modelDataMap[relationData.right_object_id]);
19
20
  //过滤掉视图不可见字段
@@ -39,10 +40,11 @@ export function InstanceRelationTableShow(props) {
39
40
  selectDisabled: true,
40
41
  sortDisabled: true,
41
42
  configProps: {
42
- pagination: props.isPagination ? {
43
+ pagination: props.isPagination ? _objectSpread(_objectSpread({
43
44
  showSizeChanger: true,
44
45
  total: total,
45
- pageSizeOptions: ["10", "20", "50"],
46
+ pageSizeOptions: ["10", "20", "50"]
47
+ }, relationTablePagination), {}, {
46
48
  onChange: (page, pageSize) => {
47
49
  paginationChange(page, pageSize, relationData);
48
50
  },
@@ -51,7 +53,7 @@ export function InstanceRelationTableShow(props) {
51
53
  }, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.PAGINATION_TOTAL_TEXT)), " ", /*#__PURE__*/React.createElement("strong", {
52
54
  className: styles.total
53
55
  }, totals), " ", i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.PAGINATION_TOTAL_UNIT)))
54
- } : false
56
+ }) : false
55
57
  },
56
58
  target: "_blank"
57
59
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"instance-relation-table-show.js","names":["React","modifyModelData","InstanceListTable","NS_LIBS_CMDB_INSTANCES","K","i18n","styles","InstanceRelationTableShow","props","modelDataMap","relationData","value","relationFieldUrlTemplate","paginationChange","total","oppositeModelData","right_object_id","hideModelData","view","hide_columns","attrList","filter","item","includes","id","relation_list","left_id","left_object_id","right_id","display","list","map","attr","pagination","isPagination","showSizeChanger","pageSizeOptions","onChange","page","pageSize","showTotal","totals","totalText","t","PAGINATION_TOTAL_TEXT","PAGINATION_TOTAL_UNIT"],"sources":["../../../../../src/instance-detail/components/instance-relation-table-show/instance-relation-table-show.tsx"],"sourcesContent":["import React from \"react\";\nimport { Table } from \"antd\";\nimport {\n ModifiedModelObjectRelation,\n modifyModelData,\n} from \"@next-libs/cmdb-utils\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport { InstanceListTable } from \"../../../instance-list-table\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../../../i18n/constants\";\nimport i18n from \"i18next\";\nimport styles from \"../../../instance-list-table/InstanceListTable.module.css\";\nexport interface InstanceRelationTableShowProps {\n modelDataMap: { [objectId: string]: CmdbModels.ModelCmdbObject };\n relationData: ModifiedModelObjectRelation;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any[];\n relationFieldUrlTemplate?: string;\n isPagination?: boolean;\n total?: number;\n paginationChange?: (\n page: number,\n pageSize: number,\n relationData: ModifiedModelObjectRelation\n ) => Promise<void>;\n}\n\n//istanbul ignore next\nexport function InstanceRelationTableShow(\n props: InstanceRelationTableShowProps\n): React.ReactElement {\n const {\n modelDataMap,\n relationData,\n value,\n relationFieldUrlTemplate,\n paginationChange,\n total,\n } = props;\n let oppositeModelData = modifyModelData(\n modelDataMap[relationData.right_object_id]\n );\n //过滤掉视图不可见字段\n const hideModelData = oppositeModelData.view.hide_columns || [];\n oppositeModelData = {\n ...oppositeModelData,\n attrList: oppositeModelData.attrList.filter(\n (item: any) => !hideModelData.includes(item.id)\n ),\n relation_list: oppositeModelData.relation_list.filter(\n (item: any) =>\n !(\n (hideModelData.includes(item.left_id) &&\n item.left_object_id === props.relationData.right_object_id) ||\n (hideModelData.includes(item.right_id) &&\n item.right_object_id === props.relationData.right_object_id)\n )\n ),\n };\n\n return (\n <div style={{ display: \"grid\" }}>\n <InstanceListTable\n detailUrlTemplates={{\n [relationData.right_object_id]:\n \"/next-cmdb-instance-management/next/#{objectId}/instance/#{instanceId}\",\n }}\n idObjectMap={props.modelDataMap}\n modelData={oppositeModelData}\n instanceListData={{\n list: value,\n }}\n fieldIds={oppositeModelData.attrList.map((attr) => attr.id)}\n selectDisabled={true}\n sortDisabled={true}\n configProps={{\n pagination: props.isPagination\n ? {\n showSizeChanger: true,\n total: total,\n pageSizeOptions: [\"10\", \"20\", \"50\"],\n onChange: (page, pageSize) => {\n paginationChange(page, pageSize, relationData);\n },\n showTotal: (totals: number) => (\n <span className={styles.totalText}>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_TEXT}`\n )}{\" \"}\n <strong className={styles.total}>{totals}</strong>{\" \"}\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_UNIT}`\n )}\n </span>\n ),\n }\n : false,\n }}\n target={\"_blank\"}\n ></InstanceListTable>\n </div>\n );\n}\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAEEC,eAAe,QACV,uBAAuB;AAE9B,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,sBAAsB,EAAEC,CAAC,QAAQ,yBAAyB;AACnE,OAAOC,IAAI,MAAM,SAAS;AAC1B,OAAOC,MAAM,MAAM,2DAA2D;AAgB9E;AACA,OAAO,SAASC,yBAAyB,CACvCC,KAAqC,EACjB;EACpB,IAAM;IACJC,YAAY;IACZC,YAAY;IACZC,KAAK;IACLC,wBAAwB;IACxBC,gBAAgB;IAChBC;EACF,CAAC,GAAGN,KAAK;EACT,IAAIO,iBAAiB,GAAGd,eAAe,CACrCQ,YAAY,CAACC,YAAY,CAACM,eAAe,CAAC,CAC3C;EACD;EACA,IAAMC,aAAa,GAAGF,iBAAiB,CAACG,IAAI,CAACC,YAAY,IAAI,EAAE;EAC/DJ,iBAAiB,mCACZA,iBAAiB;IACpBK,QAAQ,EAAEL,iBAAiB,CAACK,QAAQ,CAACC,MAAM,CACxCC,IAAS,IAAK,CAACL,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACE,EAAE,CAAC,CAChD;IACDC,aAAa,EAAEV,iBAAiB,CAACU,aAAa,CAACJ,MAAM,CAClDC,IAAS,IACR,EACGL,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACI,OAAO,CAAC,IACnCJ,IAAI,CAACK,cAAc,KAAKnB,KAAK,CAACE,YAAY,CAACM,eAAe,IAC3DC,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACM,QAAQ,CAAC,IACpCN,IAAI,CAACN,eAAe,KAAKR,KAAK,CAACE,YAAY,CAACM,eAAgB,CAC/D;EACJ,EACF;EAED,oBACE;IAAK,KAAK,EAAE;MAAEa,OAAO,EAAE;IAAO;EAAE,gBAC9B,oBAAC,iBAAiB;IAChB,kBAAkB,EAAE;MAClB,CAACnB,YAAY,CAACM,eAAe,GAC3B;IACJ,CAAE;IACF,WAAW,EAAER,KAAK,CAACC,YAAa;IAChC,SAAS,EAAEM,iBAAkB;IAC7B,gBAAgB,EAAE;MAChBe,IAAI,EAAEnB;IACR,CAAE;IACF,QAAQ,EAAEI,iBAAiB,CAACK,QAAQ,CAACW,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACR,EAAE,CAAE;IAC5D,cAAc,EAAE,IAAK;IACrB,YAAY,EAAE,IAAK;IACnB,WAAW,EAAE;MACXS,UAAU,EAAEzB,KAAK,CAAC0B,YAAY,GAC1B;QACEC,eAAe,EAAE,IAAI;QACrBrB,KAAK,EAAEA,KAAK;QACZsB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACnCC,QAAQ,EAAE,CAACC,IAAI,EAAEC,QAAQ,KAAK;UAC5B1B,gBAAgB,CAACyB,IAAI,EAAEC,QAAQ,EAAE7B,YAAY,CAAC;QAChD,CAAC;QACD8B,SAAS,EAAGC,MAAc,iBACxB;UAAM,SAAS,EAAEnC,MAAM,CAACoC;QAAU,GAC/BrC,IAAI,CAACsC,CAAC,WACFxC,sBAAsB,cAAIC,CAAC,CAACwC,qBAAqB,EACrD,EAAE,GAAG,eACN;UAAQ,SAAS,EAAEtC,MAAM,CAACQ;QAAM,GAAE2B,MAAM,CAAU,EAAC,GAAG,EACrDpC,IAAI,CAACsC,CAAC,WACFxC,sBAAsB,cAAIC,CAAC,CAACyC,qBAAqB,EACrD;MAGP,CAAC,GACD;IACN,CAAE;IACF,MAAM,EAAE;EAAS,EACE,CACjB;AAEV"}
1
+ {"version":3,"file":"instance-relation-table-show.js","names":["React","modifyModelData","InstanceListTable","NS_LIBS_CMDB_INSTANCES","K","i18n","styles","InstanceRelationTableShow","props","modelDataMap","relationData","value","relationFieldUrlTemplate","paginationChange","total","relationTablePagination","oppositeModelData","right_object_id","hideModelData","view","hide_columns","attrList","filter","item","includes","id","relation_list","left_id","left_object_id","right_id","display","list","map","attr","pagination","isPagination","showSizeChanger","pageSizeOptions","onChange","page","pageSize","showTotal","totals","totalText","t","PAGINATION_TOTAL_TEXT","PAGINATION_TOTAL_UNIT"],"sources":["../../../../../src/instance-detail/components/instance-relation-table-show/instance-relation-table-show.tsx"],"sourcesContent":["import React from \"react\";\nimport { Table } from \"antd\";\nimport {\n ModifiedModelObjectRelation,\n modifyModelData,\n} from \"@next-libs/cmdb-utils\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport { InstanceListTable } from \"../../../instance-list-table\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../../../i18n/constants\";\nimport i18n from \"i18next\";\nimport styles from \"../../../instance-list-table/InstanceListTable.module.css\";\nexport interface InstanceRelationTableShowProps {\n modelDataMap: { [objectId: string]: CmdbModels.ModelCmdbObject };\n relationData: ModifiedModelObjectRelation;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any[];\n relationFieldUrlTemplate?: string;\n isPagination?: boolean;\n total?: number;\n relationTablePagination?: {\n current?: number;\n pageSize?: number;\n };\n paginationChange?: (\n page: number,\n pageSize: number,\n relationData: ModifiedModelObjectRelation\n ) => Promise<void>;\n}\n\n//istanbul ignore next\nexport function InstanceRelationTableShow(\n props: InstanceRelationTableShowProps\n): React.ReactElement {\n const {\n modelDataMap,\n relationData,\n value,\n relationFieldUrlTemplate,\n paginationChange,\n total,\n relationTablePagination,\n } = props;\n let oppositeModelData = modifyModelData(\n modelDataMap[relationData.right_object_id]\n );\n //过滤掉视图不可见字段\n const hideModelData = oppositeModelData.view.hide_columns || [];\n oppositeModelData = {\n ...oppositeModelData,\n attrList: oppositeModelData.attrList.filter(\n (item: any) => !hideModelData.includes(item.id)\n ),\n relation_list: oppositeModelData.relation_list.filter(\n (item: any) =>\n !(\n (hideModelData.includes(item.left_id) &&\n item.left_object_id === props.relationData.right_object_id) ||\n (hideModelData.includes(item.right_id) &&\n item.right_object_id === props.relationData.right_object_id)\n )\n ),\n };\n\n return (\n <div style={{ display: \"grid\" }}>\n <InstanceListTable\n detailUrlTemplates={{\n [relationData.right_object_id]:\n \"/next-cmdb-instance-management/next/#{objectId}/instance/#{instanceId}\",\n }}\n idObjectMap={props.modelDataMap}\n modelData={oppositeModelData}\n instanceListData={{\n list: value,\n }}\n fieldIds={oppositeModelData.attrList.map((attr) => attr.id)}\n selectDisabled={true}\n sortDisabled={true}\n configProps={{\n pagination: props.isPagination\n ? {\n showSizeChanger: true,\n total: total,\n pageSizeOptions: [\"10\", \"20\", \"50\"],\n ...relationTablePagination,\n onChange: (page, pageSize) => {\n paginationChange(page, pageSize, relationData);\n },\n showTotal: (totals: number) => (\n <span className={styles.totalText}>\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_TEXT}`\n )}{\" \"}\n <strong className={styles.total}>{totals}</strong>{\" \"}\n {i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.PAGINATION_TOTAL_UNIT}`\n )}\n </span>\n ),\n }\n : false,\n }}\n target={\"_blank\"}\n ></InstanceListTable>\n </div>\n );\n}\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAEEC,eAAe,QACV,uBAAuB;AAE9B,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,sBAAsB,EAAEC,CAAC,QAAQ,yBAAyB;AACnE,OAAOC,IAAI,MAAM,SAAS;AAC1B,OAAOC,MAAM,MAAM,2DAA2D;AAoB9E;AACA,OAAO,SAASC,yBAAyB,CACvCC,KAAqC,EACjB;EACpB,IAAM;IACJC,YAAY;IACZC,YAAY;IACZC,KAAK;IACLC,wBAAwB;IACxBC,gBAAgB;IAChBC,KAAK;IACLC;EACF,CAAC,GAAGP,KAAK;EACT,IAAIQ,iBAAiB,GAAGf,eAAe,CACrCQ,YAAY,CAACC,YAAY,CAACO,eAAe,CAAC,CAC3C;EACD;EACA,IAAMC,aAAa,GAAGF,iBAAiB,CAACG,IAAI,CAACC,YAAY,IAAI,EAAE;EAC/DJ,iBAAiB,mCACZA,iBAAiB;IACpBK,QAAQ,EAAEL,iBAAiB,CAACK,QAAQ,CAACC,MAAM,CACxCC,IAAS,IAAK,CAACL,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACE,EAAE,CAAC,CAChD;IACDC,aAAa,EAAEV,iBAAiB,CAACU,aAAa,CAACJ,MAAM,CAClDC,IAAS,IACR,EACGL,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACI,OAAO,CAAC,IACnCJ,IAAI,CAACK,cAAc,KAAKpB,KAAK,CAACE,YAAY,CAACO,eAAe,IAC3DC,aAAa,CAACM,QAAQ,CAACD,IAAI,CAACM,QAAQ,CAAC,IACpCN,IAAI,CAACN,eAAe,KAAKT,KAAK,CAACE,YAAY,CAACO,eAAgB,CAC/D;EACJ,EACF;EAED,oBACE;IAAK,KAAK,EAAE;MAAEa,OAAO,EAAE;IAAO;EAAE,gBAC9B,oBAAC,iBAAiB;IAChB,kBAAkB,EAAE;MAClB,CAACpB,YAAY,CAACO,eAAe,GAC3B;IACJ,CAAE;IACF,WAAW,EAAET,KAAK,CAACC,YAAa;IAChC,SAAS,EAAEO,iBAAkB;IAC7B,gBAAgB,EAAE;MAChBe,IAAI,EAAEpB;IACR,CAAE;IACF,QAAQ,EAAEK,iBAAiB,CAACK,QAAQ,CAACW,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACR,EAAE,CAAE;IAC5D,cAAc,EAAE,IAAK;IACrB,YAAY,EAAE,IAAK;IACnB,WAAW,EAAE;MACXS,UAAU,EAAE1B,KAAK,CAAC2B,YAAY;QAExBC,eAAe,EAAE,IAAI;QACrBtB,KAAK,EAAEA,KAAK;QACZuB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI;MAAC,GAChCtB,uBAAuB;QAC1BuB,QAAQ,EAAE,CAACC,IAAI,EAAEC,QAAQ,KAAK;UAC5B3B,gBAAgB,CAAC0B,IAAI,EAAEC,QAAQ,EAAE9B,YAAY,CAAC;QAChD,CAAC;QACD+B,SAAS,EAAGC,MAAc,iBACxB;UAAM,SAAS,EAAEpC,MAAM,CAACqC;QAAU,GAC/BtC,IAAI,CAACuC,CAAC,WACFzC,sBAAsB,cAAIC,CAAC,CAACyC,qBAAqB,EACrD,EAAE,GAAG,eACN;UAAQ,SAAS,EAAEvC,MAAM,CAACQ;QAAM,GAAE4B,MAAM,CAAU,EAAC,GAAG,EACrDrC,IAAI,CAACuC,CAAC,WACFzC,sBAAsB,cAAIC,CAAC,CAAC0C,qBAAqB,EACrD;MAEJ,KAEH;IACN,CAAE;IACF,MAAM,EAAE;EAAS,EACE,CACjB;AAEV"}
@@ -1,11 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React from "react";
3
- import { Button } from "antd";
3
+ import { Button, Input } from "antd";
4
4
  import i18n from "i18next";
5
5
  import { NS_LIBS_CMDB_INSTANCES, K } from "../i18n/constants";
6
6
  import { StructTable } from "./StructTable";
7
7
  import { AddStructModal } from "./AddStructModal";
8
- import { isArray, isEmpty } from "lodash";
8
+ import { isArray, isEmpty, compact } from "lodash";
9
9
  export class AddStruct extends React.Component {
10
10
  constructor(props) {
11
11
  super(props);
@@ -37,6 +37,20 @@ export class AddStruct extends React.Component {
37
37
  showModal: true
38
38
  });
39
39
  });
40
+ _defineProperty(this, "onSearch", value => {
41
+ var structData = this.props.structData;
42
+ if (value) {
43
+ structData = compact(structData.map(r => {
44
+ var values = Object.values(r);
45
+ if (values !== null && values !== void 0 && values.find(s => s.toString().match(value))) {
46
+ return r;
47
+ }
48
+ }));
49
+ }
50
+ this.setState({
51
+ structData
52
+ });
53
+ });
40
54
  this.state = {
41
55
  structData: props.structData,
42
56
  showModal: false
@@ -56,11 +70,29 @@ export class AddStruct extends React.Component {
56
70
  } = this.state;
57
71
  return /*#__PURE__*/React.createElement("div", {
58
72
  className: className
59
- }, /*#__PURE__*/React.createElement(Button, {
73
+ }, /*#__PURE__*/React.createElement("div", {
74
+ style: {
75
+ display: "flex",
76
+ alignItems: "center",
77
+ justifyContent: "space-between",
78
+ marginBottom: 20
79
+ }
80
+ },
81
+ /*#__PURE__*/
82
+ // istanbul ignore next
83
+ React.createElement(Input.Search, {
84
+ style: {
85
+ width: 300
86
+ },
87
+ onSearch: value => {
88
+ this.onSearch(value);
89
+ },
90
+ enterButton: true
91
+ }), /*#__PURE__*/React.createElement(Button, {
60
92
  type: "link",
61
93
  disabled: isLegacy && !isEmpty(structData) || attribute.readonly === "true" && !this.props.isCreate,
62
94
  onClick: this.handleOpenAddModal
63
- }, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.ADD))), /*#__PURE__*/React.createElement(AddStructModal
95
+ }, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.ADD)))), /*#__PURE__*/React.createElement(AddStructModal
64
96
  // 新建的情况下不必给初值,初值为空对象时codeEditor才能正常回填
65
97
  , {
66
98
  structData: {},
@@ -69,7 +101,7 @@ export class AddStruct extends React.Component {
69
101
  handleStoreFunction: formData => this.handleAddStruct(formData),
70
102
  handleCancelFunction: this.handleCloseModal
71
103
  }), /*#__PURE__*/React.createElement(StructTable, {
72
- structData: structData,
104
+ structData: this.state.structData,
73
105
  attribute: attribute,
74
106
  isEditable: this.props.attribute.readonly === "false" || this.props.isCreate,
75
107
  isLegacy: isLegacy,
@@ -1 +1 @@
1
- {"version":3,"file":"AddStruct.js","names":["React","Button","i18n","NS_LIBS_CMDB_INSTANCES","K","StructTable","AddStructModal","isArray","isEmpty","AddStruct","Component","constructor","props","formData","isLegacy","output","Array","setState","showModal","handleStoreFunction","structData","handleCloseModal","state","render","attribute","className","readonly","isCreate","handleOpenAddModal","t","ADD","handleAddStruct","handleEditStruct"],"sources":["../../../src/struct-components/AddStruct.tsx"],"sourcesContent":["import React, { CSSProperties } from \"react\";\nimport { Button } from \"antd\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport { StructTable } from \"./StructTable\";\nimport { AddStructModal } from \"./AddStructModal\";\nimport { isArray, isEmpty } from \"lodash\";\nimport { Attribute } from \"./interfaces\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\n\nexport interface AddStructProps {\n style?: CSSProperties;\n structData?: any;\n attribute: Partial<CmdbModels.ModelObjectAttr>;\n handleStoreFunction: (value: any) => void;\n isLegacy?: boolean;\n className?: string;\n isCreate?: boolean;\n}\nexport interface AddStructState {\n showModal: boolean;\n structData: any;\n isEdit?: boolean;\n}\nexport class AddStruct extends React.Component<AddStructProps, AddStructState> {\n constructor(props: AddStructProps) {\n super(props);\n this.state = {\n structData: props.structData,\n showModal: false,\n };\n }\n // 编辑结构体\n handleEditStruct = (formData: any) => {\n const { isLegacy } = this.props;\n const output = isLegacy\n ? Array.isArray(formData)\n ? formData[0]\n : formData\n : formData;\n this.setState({ showModal: false });\n this.props.handleStoreFunction(output);\n };\n // 新建结构体\n handleAddStruct = (formData: any) => {\n const { isLegacy, structData } = this.props;\n this.props.handleStoreFunction(\n isLegacy\n ? formData\n : isArray(structData)\n ? [...structData, formData]\n : [formData]\n );\n this.handleCloseModal();\n };\n handleCloseModal = () => {\n this.setState({\n showModal: false,\n });\n };\n handleOpenAddModal = () => {\n this.setState({ showModal: true });\n };\n render() {\n const { structData, attribute, isLegacy, className } = this.props;\n const { showModal } = this.state;\n return (\n <div className={className}>\n {/* 单结构体并且已经添加过的,添加按钮置灰 */}\n <Button\n type=\"link\"\n disabled={\n (isLegacy && !isEmpty(structData)) ||\n (attribute.readonly === \"true\" && !this.props.isCreate)\n }\n onClick={this.handleOpenAddModal}\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.ADD}`)}\n </Button>\n <AddStructModal\n // 新建的情况下不必给初值,初值为空对象时codeEditor才能正常回填\n structData={{}}\n attribute={attribute as Attribute}\n visible={showModal}\n handleStoreFunction={(formData: any) =>\n this.handleAddStruct(formData)\n }\n handleCancelFunction={this.handleCloseModal}\n />\n <StructTable\n structData={structData}\n attribute={attribute as Attribute}\n isEditable={\n this.props.attribute.readonly === \"false\" || this.props.isCreate\n }\n isLegacy={isLegacy}\n handleStoreFunction={this.handleEditStruct}\n />\n </div>\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AddStruct.js","names":["React","Button","Input","i18n","NS_LIBS_CMDB_INSTANCES","K","StructTable","AddStructModal","isArray","isEmpty","compact","AddStruct","Component","constructor","props","formData","isLegacy","output","Array","setState","showModal","handleStoreFunction","structData","handleCloseModal","value","map","r","values","Object","find","s","toString","match","state","render","attribute","className","display","alignItems","justifyContent","marginBottom","width","onSearch","readonly","isCreate","handleOpenAddModal","t","ADD","handleAddStruct","handleEditStruct"],"sources":["../../../src/struct-components/AddStruct.tsx"],"sourcesContent":["import React, { CSSProperties } from \"react\";\nimport { Button, Input } from \"antd\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport { StructTable } from \"./StructTable\";\nimport { AddStructModal } from \"./AddStructModal\";\nimport { isArray, isEmpty, compact } from \"lodash\";\nimport { Attribute } from \"./interfaces\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\n\nexport interface AddStructProps {\n style?: CSSProperties;\n structData?: any;\n attribute: Partial<CmdbModels.ModelObjectAttr>;\n handleStoreFunction: (value: any) => void;\n isLegacy?: boolean;\n className?: string;\n isCreate?: boolean;\n}\nexport interface AddStructState {\n showModal: boolean;\n structData: any;\n isEdit?: boolean;\n}\nexport class AddStruct extends React.Component<AddStructProps, AddStructState> {\n constructor(props: AddStructProps) {\n super(props);\n this.state = {\n structData: props.structData,\n showModal: false,\n };\n }\n // 编辑结构体\n handleEditStruct = (formData: any) => {\n const { isLegacy } = this.props;\n const output = isLegacy\n ? Array.isArray(formData)\n ? formData[0]\n : formData\n : formData;\n this.setState({ showModal: false });\n this.props.handleStoreFunction(output);\n };\n // 新建结构体\n handleAddStruct = (formData: any) => {\n const { isLegacy, structData } = this.props;\n this.props.handleStoreFunction(\n isLegacy\n ? formData\n : isArray(structData)\n ? [...structData, formData]\n : [formData]\n );\n this.handleCloseModal();\n };\n handleCloseModal = () => {\n this.setState({\n showModal: false,\n });\n };\n handleOpenAddModal = () => {\n this.setState({ showModal: true });\n };\n // istanbul ignore next\n onSearch = (value: string) => {\n let structData = this.props.structData;\n if (value) {\n structData = compact(\n structData.map((r: any) => {\n const values: string[] = Object.values(r);\n if (values?.find((s: string) => s.toString().match(value))) {\n return r;\n }\n })\n );\n }\n this.setState({\n structData,\n });\n };\n\n render() {\n const { structData, attribute, isLegacy, className } = this.props;\n const { showModal } = this.state;\n return (\n <div className={className}>\n {/* 单结构体并且已经添加过的,添加按钮置灰 */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: 20,\n }}\n >\n {\n // istanbul ignore next\n <Input.Search\n style={{ width: 300 }}\n onSearch={(value) => {\n this.onSearch(value);\n }}\n enterButton\n />\n }\n <Button\n type=\"link\"\n disabled={\n (isLegacy && !isEmpty(structData)) ||\n (attribute.readonly === \"true\" && !this.props.isCreate)\n }\n onClick={this.handleOpenAddModal}\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.ADD}`)}\n </Button>\n </div>\n\n <AddStructModal\n // 新建的情况下不必给初值,初值为空对象时codeEditor才能正常回填\n structData={{}}\n attribute={attribute as Attribute}\n visible={showModal}\n handleStoreFunction={(formData: any) =>\n this.handleAddStruct(formData)\n }\n handleCancelFunction={this.handleCloseModal}\n />\n <StructTable\n structData={this.state.structData}\n attribute={attribute as Attribute}\n isEditable={\n this.props.attribute.readonly === \"false\" || this.props.isCreate\n }\n isLegacy={isLegacy}\n handleStoreFunction={this.handleEditStruct}\n />\n </div>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React from "react";
3
3
  import { DeleteOutlined, EditOutlined } from "@ant-design/icons";
4
- import { Button, Modal, Table } from "antd";
5
- import { isEmpty, isObject } from "lodash";
4
+ import { Button, Modal, Table, Input } from "antd";
5
+ import { isEmpty, isObject, compact } from "lodash";
6
6
  import { AddStructModal } from "./AddStructModal";
7
7
  import styles from "./index.module.css";
8
8
  import i18n from "i18next";
@@ -77,7 +77,22 @@ export class StructTable extends React.Component {
77
77
  });
78
78
  _defineProperty(this, "closeAllDataModal", () => {
79
79
  this.setState({
80
- showAllStructData: false
80
+ showAllStructData: false,
81
+ filterDataSource: this.getDataSource()
82
+ });
83
+ });
84
+ _defineProperty(this, "onSearch", value => {
85
+ var filterDataSource = this.getDataSource();
86
+ if (value) {
87
+ filterDataSource = compact(filterDataSource.map(r => {
88
+ var values = Object.values(r);
89
+ if (values !== null && values !== void 0 && values.find(s => s.toString().match(value))) {
90
+ return r;
91
+ }
92
+ }));
93
+ }
94
+ this.setState({
95
+ filterDataSource
81
96
  });
82
97
  });
83
98
  this.state = {
@@ -86,9 +101,13 @@ export class StructTable extends React.Component {
86
101
  showEditModal: false,
87
102
  showAllStructData: false,
88
103
  page: 1,
89
- pageSize: 10
104
+ pageSize: 10,
105
+ filterDataSource: this.getDataSource()
90
106
  };
91
107
  }
108
+ getDataSource() {
109
+ return isEmpty(this.props.structData) ? [] : this.props.isLegacy ? [this.props.structData] : [...this.props.structData];
110
+ }
92
111
  getColumns(defines) {
93
112
  var columns = defines.map(item => ({
94
113
  title: item.name,
@@ -166,8 +185,6 @@ export class StructTable extends React.Component {
166
185
  render() {
167
186
  var {
168
187
  attribute,
169
- isLegacy,
170
- structData,
171
188
  isEditable
172
189
  } = this.props;
173
190
  var {
@@ -176,7 +193,7 @@ export class StructTable extends React.Component {
176
193
  var structDefine = attribute.value.struct_define;
177
194
  var columns = this.getColumns(structDefine);
178
195
  // 单结构体数据是对象,显示时要转换为数组
179
- var dataSource = isEmpty(structData) ? [] : isLegacy ? [structData] : [...structData];
196
+ var dataSource = this.getDataSource();
180
197
  var displayDataSource = isEditable ? dataSource : dataSource.slice(0, 10);
181
198
  return /*#__PURE__*/React.createElement("div", {
182
199
  style: {
@@ -211,9 +228,23 @@ export class StructTable extends React.Component {
211
228
  footer: /*#__PURE__*/React.createElement(Button, {
212
229
  type: "primary",
213
230
  onClick: this.closeAllDataModal
214
- }, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.CONFIRM)))
215
- }, /*#__PURE__*/React.createElement(Table, {
216
- dataSource: dataSource,
231
+ }, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.CONFIRM))),
232
+ destroyOnClose: true
233
+ },
234
+ /*#__PURE__*/
235
+ // istanbul ignore next
236
+ React.createElement(Input.Search, {
237
+ style: {
238
+ marginBottom: 30,
239
+ width: 300
240
+ },
241
+ onSearch: value => {
242
+ // istanbul ignore next
243
+ this.onSearch(value);
244
+ },
245
+ enterButton: true
246
+ }), /*#__PURE__*/React.createElement(Table, {
247
+ dataSource: this.state.filterDataSource,
217
248
  scroll: {
218
249
  x: "max-content"
219
250
  },
@@ -1 +1 @@
1
- {"version":3,"file":"StructTable.js","names":["React","DeleteOutlined","EditOutlined","Button","Modal","Table","isEmpty","isObject","AddStructModal","styles","i18n","K","NS_LIBS_CMDB_INSTANCES","Typography","StructTable","Component","constructor","props","formData","index","structData","isLegacy","pageSize","page","state","structNumber","handleStoreFunction","handleCloseModal","setState","showEditModal","currentIndex","record","attribute","handleOpenEditModal","color","openConfirmModal","handleEditStruct","showAllStructData","getColumns","defines","columns","map","item","title","name","className","structTableTd","dataIndex","id","render","text","_record","_index","copyText","showText","type","String","join","JSON","stringify","tooltips","t","COPY","COPY_SUCCESS","isEditable","push","OPERATION","fixed","_text","renderOperation","confirm","DELETE_STRUCT_CONFIRM_MSG","okText","CONFIRM","okType","cancelText","CANCEL","onOk","remove","splice","structDefine","value","struct_define","dataSource","displayDataSource","slice","overflowX","x","length","showSizeChanger","onChange","handlePaginationChange","size","VIEW_MORE","closeAllDataModal"],"sources":["../../../src/struct-components/StructTable.tsx"],"sourcesContent":["import React from \"react\";\nimport { DeleteOutlined, EditOutlined } from \"@ant-design/icons\";\nimport { Button, Modal, Table } from \"antd\";\nimport { Attribute, Structkey } from \"./interfaces\";\nimport { isEmpty, isObject } from \"lodash\";\nimport { AddStructModal } from \"./AddStructModal\";\nimport { SizeType } from \"antd/lib/config-provider/SizeContext\";\nimport styles from \"./index.module.css\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { Typography } from \"antd\";\nexport interface StructTableProps {\n attribute: Attribute;\n structData: any;\n isEditable?: boolean;\n // 是否单结构体\n isLegacy?: boolean;\n size?: SizeType;\n handleStoreFunction?(data: any): void;\n}\nexport interface StructTableState {\n structData: any;\n currentIndex: number;\n showEditModal: boolean;\n showAllStructData: boolean;\n page: number;\n pageSize: number;\n}\nexport class StructTable extends React.Component<\n StructTableProps,\n StructTableState\n> {\n constructor(props: StructTableProps) {\n super(props);\n this.state = {\n structData: props.structData,\n currentIndex: 0,\n showEditModal: false,\n showAllStructData: false,\n page: 1,\n pageSize: 10,\n };\n }\n getColumns(defines: Structkey[]) {\n const columns: any = defines.map((item: Structkey) => ({\n title: item.name,\n className: styles.structTableTd,\n dataIndex: item.id,\n render: (text: any, _record: any, _index: number) => {\n let copyText: string;\n let showText: string;\n switch (item.type) {\n case \"bool\":\n return String(text ?? \"\");\n case \"enums\":\n case \"arr\":\n return text?.join?.(\"; \");\n case \"json\":\n copyText = isObject(text) ? JSON.stringify(text, null, 2) : text;\n showText = isObject(text) ? JSON.stringify(text) : text;\n if (copyText) {\n return (\n <Typography.Paragraph\n copyable={{\n tooltips: [\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.COPY}`),\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.COPY_SUCCESS}`),\n ],\n text: copyText,\n }}\n >\n {showText}\n </Typography.Paragraph>\n );\n }\n return showText;\n default:\n return text;\n }\n },\n }));\n if (this.props.isEditable) {\n columns.push({\n title: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATION}`),\n className: styles.structTableTd,\n dataIndex: \"operation\",\n fixed: \"right\",\n render: (_text: string, record: any, index: number): any => {\n return this.renderOperation(record, index);\n },\n });\n }\n return columns;\n }\n openConfirmModal(index: number) {\n const confirm = Modal.confirm;\n\n confirm({\n title: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.DELETE_STRUCT_CONFIRM_MSG}`),\n okText: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CONFIRM}`),\n okType: \"danger\",\n cancelText: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL}`),\n onOk: () => {\n this.remove(index);\n },\n });\n }\n remove(index: number) {\n let { structData, isLegacy } = this.props;\n const { pageSize, page } = this.state;\n const structNumber = pageSize * (page - 1) + index;\n if (isLegacy) {\n structData = {};\n } else {\n structData.splice(structNumber, 1);\n }\n this.props.handleStoreFunction(structData);\n }\n handleEditStruct = (formData: any, index: number) => {\n let { structData, isLegacy } = this.props;\n const { pageSize, page } = this.state;\n const structNumber = pageSize * (page - 1) + index;\n if (isLegacy) {\n structData = [structData];\n }\n structData[structNumber] = formData;\n this.props.handleStoreFunction(structData);\n this.handleCloseModal();\n };\n handleOpenEditModal = (index: number) => {\n this.setState({\n showEditModal: true,\n currentIndex: index,\n });\n };\n handleCloseModal = () => {\n this.setState({ showEditModal: false });\n };\n\n handlePaginationChange = (page: number, pageSize: number): void => {\n this.setState({\n page,\n pageSize,\n });\n };\n renderOperation = (record: any, index: number) => {\n const { attribute, structData } = this.props;\n const { currentIndex } = this.state;\n return (\n <div>\n <Button\n type=\"link\"\n icon={<EditOutlined />}\n onClick={() => this.handleOpenEditModal(index)}\n />\n <Button\n type=\"link\"\n icon={<DeleteOutlined style={{ color: \"var(--theme-red-color)\" }} />}\n onClick={() => {\n this.openConfirmModal(index);\n }}\n />\n <AddStructModal\n attribute={attribute}\n visible={this.state.showEditModal && currentIndex === index}\n structData={record}\n handleStoreFunction={(formData: any) =>\n this.handleEditStruct(formData, index)\n }\n handleCancelFunction={this.handleCloseModal}\n />\n </div>\n );\n };\n closeAllDataModal = () => {\n this.setState({ showAllStructData: false });\n };\n render() {\n const { attribute, isLegacy, structData, isEditable } = this.props;\n const { showAllStructData } = this.state;\n const structDefine = attribute.value.struct_define;\n const columns = this.getColumns(structDefine);\n // 单结构体数据是对象,显示时要转换为数组\n const dataSource = isEmpty(structData)\n ? []\n : isLegacy\n ? [structData]\n : [...structData];\n const displayDataSource = isEditable ? dataSource : dataSource.slice(0, 10);\n return (\n <div style={{ overflowX: \"hidden\" }}>\n <Table\n scroll={{ x: \"max-content\" }}\n columns={columns}\n dataSource={displayDataSource}\n pagination={\n isEditable && dataSource.length > 10\n ? {\n showSizeChanger: true,\n onChange: this.handlePaginationChange,\n }\n : false\n }\n size={this.props.size}\n />\n {!isEditable && dataSource.length > 10 && (\n <Button\n type=\"link\"\n data-testid=\"view-more\"\n onClick={() => {\n this.setState({ showAllStructData: true });\n }}\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.VIEW_MORE}`)}\n </Button>\n )}\n <Modal\n data-testid=\"show-all-modal\"\n visible={showAllStructData}\n title={attribute.name}\n width={800}\n zIndex={1035}\n onCancel={this.closeAllDataModal}\n footer={\n <Button type=\"primary\" onClick={this.closeAllDataModal}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CONFIRM}`)}\n </Button>\n }\n >\n <Table\n dataSource={dataSource}\n scroll={{ x: \"max-content\" }}\n columns={columns}\n pagination={{\n showSizeChanger: true,\n }}\n />\n </Modal>\n </div>\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"StructTable.js","names":["React","DeleteOutlined","EditOutlined","Button","Modal","Table","Input","isEmpty","isObject","compact","AddStructModal","styles","i18n","K","NS_LIBS_CMDB_INSTANCES","Typography","StructTable","Component","constructor","props","formData","index","structData","isLegacy","pageSize","page","state","structNumber","handleStoreFunction","handleCloseModal","setState","showEditModal","currentIndex","record","attribute","handleOpenEditModal","color","openConfirmModal","handleEditStruct","showAllStructData","filterDataSource","getDataSource","value","map","r","values","Object","find","s","toString","match","getColumns","defines","columns","item","title","name","className","structTableTd","dataIndex","id","render","text","_record","_index","copyText","showText","type","String","join","JSON","stringify","tooltips","t","COPY","COPY_SUCCESS","isEditable","push","OPERATION","fixed","_text","renderOperation","confirm","DELETE_STRUCT_CONFIRM_MSG","okText","CONFIRM","okType","cancelText","CANCEL","onOk","remove","splice","structDefine","struct_define","dataSource","displayDataSource","slice","overflowX","x","length","showSizeChanger","onChange","handlePaginationChange","size","VIEW_MORE","closeAllDataModal","marginBottom","width","onSearch"],"sources":["../../../src/struct-components/StructTable.tsx"],"sourcesContent":["import React from \"react\";\nimport { DeleteOutlined, EditOutlined } from \"@ant-design/icons\";\nimport { Button, Modal, Table, Input } from \"antd\";\nimport { Attribute, Structkey } from \"./interfaces\";\nimport { isEmpty, isObject, compact, uniq } from \"lodash\";\nimport { AddStructModal } from \"./AddStructModal\";\nimport { SizeType } from \"antd/lib/config-provider/SizeContext\";\nimport styles from \"./index.module.css\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { Typography } from \"antd\";\nexport interface StructTableProps {\n attribute: Attribute;\n structData: any;\n isEditable?: boolean;\n // 是否单结构体\n isLegacy?: boolean;\n size?: SizeType;\n handleStoreFunction?(data: any): void;\n}\nexport interface StructTableState {\n structData: any;\n currentIndex: number;\n showEditModal: boolean;\n showAllStructData: boolean;\n page: number;\n pageSize: number;\n filterDataSource: any;\n}\nexport class StructTable extends React.Component<\n StructTableProps,\n StructTableState\n> {\n constructor(props: StructTableProps) {\n super(props);\n this.state = {\n structData: props.structData,\n currentIndex: 0,\n showEditModal: false,\n showAllStructData: false,\n page: 1,\n pageSize: 10,\n filterDataSource: this.getDataSource(),\n };\n }\n getDataSource() {\n return isEmpty(this.props.structData)\n ? []\n : this.props.isLegacy\n ? [this.props.structData]\n : [...this.props.structData];\n }\n\n getColumns(defines: Structkey[]) {\n const columns: any = defines.map((item: Structkey) => ({\n title: item.name,\n className: styles.structTableTd,\n dataIndex: item.id,\n render: (text: any, _record: any, _index: number) => {\n let copyText: string;\n let showText: string;\n switch (item.type) {\n case \"bool\":\n return String(text ?? \"\");\n case \"enums\":\n case \"arr\":\n return text?.join?.(\"; \");\n case \"json\":\n copyText = isObject(text) ? JSON.stringify(text, null, 2) : text;\n showText = isObject(text) ? JSON.stringify(text) : text;\n if (copyText) {\n return (\n <Typography.Paragraph\n copyable={{\n tooltips: [\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.COPY}`),\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.COPY_SUCCESS}`),\n ],\n text: copyText,\n }}\n >\n {showText}\n </Typography.Paragraph>\n );\n }\n return showText;\n default:\n return text;\n }\n },\n }));\n if (this.props.isEditable) {\n columns.push({\n title: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.OPERATION}`),\n className: styles.structTableTd,\n dataIndex: \"operation\",\n fixed: \"right\",\n render: (_text: string, record: any, index: number): any => {\n return this.renderOperation(record, index);\n },\n });\n }\n return columns;\n }\n openConfirmModal(index: number) {\n const confirm = Modal.confirm;\n\n confirm({\n title: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.DELETE_STRUCT_CONFIRM_MSG}`),\n okText: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CONFIRM}`),\n okType: \"danger\",\n cancelText: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL}`),\n onOk: () => {\n this.remove(index);\n },\n });\n }\n remove(index: number) {\n let { structData, isLegacy } = this.props;\n const { pageSize, page } = this.state;\n const structNumber = pageSize * (page - 1) + index;\n if (isLegacy) {\n structData = {};\n } else {\n structData.splice(structNumber, 1);\n }\n this.props.handleStoreFunction(structData);\n }\n handleEditStruct = (formData: any, index: number) => {\n let { structData, isLegacy } = this.props;\n const { pageSize, page } = this.state;\n const structNumber = pageSize * (page - 1) + index;\n if (isLegacy) {\n structData = [structData];\n }\n structData[structNumber] = formData;\n this.props.handleStoreFunction(structData);\n this.handleCloseModal();\n };\n handleOpenEditModal = (index: number) => {\n this.setState({\n showEditModal: true,\n currentIndex: index,\n });\n };\n handleCloseModal = () => {\n this.setState({ showEditModal: false });\n };\n\n handlePaginationChange = (page: number, pageSize: number): void => {\n this.setState({\n page,\n pageSize,\n });\n };\n renderOperation = (record: any, index: number) => {\n const { attribute, structData } = this.props;\n const { currentIndex } = this.state;\n return (\n <div>\n <Button\n type=\"link\"\n icon={<EditOutlined />}\n onClick={() => this.handleOpenEditModal(index)}\n />\n <Button\n type=\"link\"\n icon={<DeleteOutlined style={{ color: \"var(--theme-red-color)\" }} />}\n onClick={() => {\n this.openConfirmModal(index);\n }}\n />\n <AddStructModal\n attribute={attribute}\n visible={this.state.showEditModal && currentIndex === index}\n structData={record}\n handleStoreFunction={(formData: any) =>\n this.handleEditStruct(formData, index)\n }\n handleCancelFunction={this.handleCloseModal}\n />\n </div>\n );\n };\n closeAllDataModal = () => {\n this.setState({\n showAllStructData: false,\n filterDataSource: this.getDataSource(),\n });\n };\n // istanbul ignore next\n onSearch = (value: string) => {\n let filterDataSource = this.getDataSource();\n if (value) {\n filterDataSource = compact(\n filterDataSource.map((r: any) => {\n const values: string[] = Object.values(r);\n if (values?.find((s: string) => s.toString().match(value))) {\n return r;\n }\n })\n );\n }\n this.setState({\n filterDataSource,\n });\n };\n render() {\n const { attribute, isEditable } = this.props;\n const { showAllStructData } = this.state;\n const structDefine = attribute.value.struct_define;\n const columns = this.getColumns(structDefine);\n // 单结构体数据是对象,显示时要转换为数组\n const dataSource = this.getDataSource();\n const displayDataSource = isEditable ? dataSource : dataSource.slice(0, 10);\n return (\n <div style={{ overflowX: \"hidden\" }}>\n <Table\n scroll={{ x: \"max-content\" }}\n columns={columns}\n dataSource={displayDataSource}\n pagination={\n isEditable && dataSource.length > 10\n ? {\n showSizeChanger: true,\n onChange: this.handlePaginationChange,\n }\n : false\n }\n size={this.props.size}\n />\n {!isEditable && dataSource.length > 10 && (\n <Button\n type=\"link\"\n data-testid=\"view-more\"\n onClick={() => {\n this.setState({ showAllStructData: true });\n }}\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.VIEW_MORE}`)}\n </Button>\n )}\n <Modal\n data-testid=\"show-all-modal\"\n visible={showAllStructData}\n title={attribute.name}\n width={800}\n zIndex={1035}\n onCancel={this.closeAllDataModal}\n footer={\n <Button type=\"primary\" onClick={this.closeAllDataModal}>\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CONFIRM}`)}\n </Button>\n }\n destroyOnClose={true}\n >\n {\n // istanbul ignore next\n <Input.Search\n style={{ marginBottom: 30, width: 300 }}\n onSearch={(value) => {\n // istanbul ignore next\n this.onSearch(value);\n }}\n enterButton\n />\n }\n <Table\n dataSource={this.state.filterDataSource}\n scroll={{ x: \"max-content\" }}\n columns={columns}\n pagination={{\n showSizeChanger: true,\n }}\n />\n </Modal>\n </div>\n );\n }\n}\n"],"mappings":"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"}
@@ -51,6 +51,11 @@ interface LegacyInstanceDetailState {
51
51
  currentAttr?: any;
52
52
  instanceRelationModalData?: any;
53
53
  initOffset?: number;
54
+ relationTablePagination?: {
55
+ current?: number;
56
+ pageSize?: number;
57
+ };
58
+ searchValue?: string;
54
59
  }
55
60
  export declare class LegacyInstanceDetail extends React.Component<LegacyInstanceDetailProps, LegacyInstanceDetailState> {
56
61
  constructor(props: LegacyInstanceDetailProps);
@@ -63,7 +68,7 @@ export declare class LegacyInstanceDetail extends React.Component<LegacyInstance
63
68
  getNewProperties(oldProperties: Record<string, any>, field: keyof LegacyInstanceDetailState): any;
64
69
  getAttrListNode(attr: any, linkFlag?: boolean): React.ReactNode;
65
70
  handleRelationModal(attr: any): Promise<void>;
66
- searchInstanceRelationData(page: number, pageSize: number, attr: any): Promise<void>;
71
+ searchInstanceRelationData(page: number, pageSize: number, attr: any, value?: string): Promise<void>;
67
72
  formatBasicInfoGroupList(modelData: Partial<ModifiedModelCmdbObject>, basicInfoGroupList: any[]): any[];
68
73
  setBasicInfoGroupList(state: LegacyInstanceDetailState): void;
69
74
  componentDidUpdate(prevProps: LegacyInstanceDetailProps): void;
@@ -10,6 +10,10 @@ export interface InstanceRelationTableShowProps {
10
10
  relationFieldUrlTemplate?: string;
11
11
  isPagination?: boolean;
12
12
  total?: number;
13
+ relationTablePagination?: {
14
+ current?: number;
15
+ pageSize?: number;
16
+ };
13
17
  paginationChange?: (page: number, pageSize: number, relationData: ModifiedModelObjectRelation) => Promise<void>;
14
18
  }
15
19
  export declare function InstanceRelationTableShow(props: InstanceRelationTableShowProps): React.ReactElement;
@@ -20,5 +20,6 @@ export declare class AddStruct extends React.Component<AddStructProps, AddStruct
20
20
  handleAddStruct: (formData: any) => void;
21
21
  handleCloseModal: () => void;
22
22
  handleOpenAddModal: () => void;
23
+ onSearch: (value: string) => void;
23
24
  render(): JSX.Element;
24
25
  }
@@ -16,9 +16,11 @@ export interface StructTableState {
16
16
  showAllStructData: boolean;
17
17
  page: number;
18
18
  pageSize: number;
19
+ filterDataSource: any;
19
20
  }
20
21
  export declare class StructTable extends React.Component<StructTableProps, StructTableState> {
21
22
  constructor(props: StructTableProps);
23
+ getDataSource(): any[];
22
24
  getColumns(defines: Structkey[]): any;
23
25
  openConfirmModal(index: number): void;
24
26
  remove(index: number): void;
@@ -28,5 +30,6 @@ export declare class StructTable extends React.Component<StructTableProps, Struc
28
30
  handlePaginationChange: (page: number, pageSize: number) => void;
29
31
  renderOperation: (record: any, index: number) => JSX.Element;
30
32
  closeAllDataModal: () => void;
33
+ onSearch: (value: string) => void;
31
34
  render(): JSX.Element;
32
35
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-libs/cmdb-instances",
3
- "version": "7.0.11",
3
+ "version": "7.0.12",
4
4
  "description": "> TODO: description",
5
5
  "homepage": "https://github.com/easyops-cn/next-libs/tree/master/libs/cmdb-instances",
6
6
  "license": "GPL-3.0",
@@ -50,5 +50,5 @@
50
50
  "immutability-helper": "^3.1.1",
51
51
  "marked": "^2.1.3"
52
52
  },
53
- "gitHead": "b15f3af87b1c9e9e47068036241f69dfee398f39"
53
+ "gitHead": "facdf11b5310b1d3e7ef25334712c4d9cb663b97"
54
54
  }