diff --git a/web/config/router.config.js b/web/config/router.config.js index 3da3db9a..4b932992 100644 --- a/web/config/router.config.js +++ b/web/config/router.config.js @@ -121,6 +121,10 @@ export default [ path: '/data/import', name: 'export', component: './DataManagement/Import', + },{ + path: '/data/doc', + name: 'query', + component: './DataManagement/Query', }, ] }, diff --git a/web/src/components/PageHeaderWrapper/index.js b/web/src/components/PageHeaderWrapper/index.js index 7338659b..78458bc6 100644 --- a/web/src/components/PageHeaderWrapper/index.js +++ b/web/src/components/PageHeaderWrapper/index.js @@ -8,7 +8,7 @@ import styles from './index.less'; import MenuContext from '@/layouts/MenuContext'; const PageHeaderWrapper = ({ children, contentWidth, wrapperClassName, top, ...restProps }) => ( -
+
{top} {value => ( diff --git a/web/src/components/PageHeaderWrapper/index.less b/web/src/components/PageHeaderWrapper/index.less index 39a44965..32011104 100644 --- a/web/src/components/PageHeaderWrapper/index.less +++ b/web/src/components/PageHeaderWrapper/index.less @@ -1,7 +1,7 @@ @import '~antd/lib/style/themes/default.less'; .content { - margin: 24px 24px 0; + margin: 10px 10px 0; } @media screen and (max-width: @screen-sm) { diff --git a/web/src/layouts/BasicLayout.js b/web/src/layouts/BasicLayout.js index 58df4e32..4f56066f 100644 --- a/web/src/layouts/BasicLayout.js +++ b/web/src/layouts/BasicLayout.js @@ -201,7 +201,7 @@ class BasicLayout extends React.PureComponent { getContentStyle = () => { const { fixedHeader } = this.props; return { - margin: '24px 24px 0', + margin: '10px 10px 0', paddingTop: fixedHeader ? 64 : 0, }; }; diff --git a/web/src/locales/zh-CN.js b/web/src/locales/zh-CN.js index 8b02cc24..c8ed0a4b 100644 --- a/web/src/locales/zh-CN.js +++ b/web/src/locales/zh-CN.js @@ -96,6 +96,7 @@ export default { 'menu.data.snapshot': '快照管理', 'menu.data.rebuild': '重建管理', 'menu.data.export': '导入导出', + 'menu.data.query': '文档管理', 'menu.search': '搜索管理', 'menu.search.template': '搜索模板', diff --git a/web/src/pages/Dashboard/ClusterMonitor.js b/web/src/pages/Dashboard/ClusterMonitor.js index e98da12e..e88f943a 100644 --- a/web/src/pages/Dashboard/ClusterMonitor.js +++ b/web/src/pages/Dashboard/ClusterMonitor.js @@ -258,7 +258,7 @@ class ClusterMonitor extends PureComponent { - { +   var elemTop=elem.offsetTop; +   elem=elem.offsetParent; + +   while(elem!=null){ +     elemTop+=elem.offsetTop; +     elem=elem.offsetParent; +   } + +   return elemTop; + + } + console.log(getElementTop(this.refs.jsonw)); + this.setState({height: window.innerHeight - getElementTop(this.refs.jsonw) -50}); + } + render(){ + return ( +
{console.log(document.getElementById('jsonw').offsetTop)}} style={{overflow:"scroll", height: this.state.height}}> {this.props.children}
+ ) + } +} const CreateForm = Form.create()(props => { const { modalVisible, form, handleAdd, handleModalVisible } = props; @@ -109,6 +145,8 @@ class Document extends PureComponent { selectedRows: [], formValues: {}, updateFormValues: {}, + drawerVisible: false, + editingIndex:{}, }; datasource = `[{"health":"green","status":"open","index":"blogs_fixed","uuid":"Q6zngGf9QVaWqpV0lF-0nw","pri":"1","rep":"1","docs.count":"1594","docs.deleted":"594","store.size":"17.9mb","pri.store.size":"8.9mb"},{"health":"red","status":"open","index":"elastic_qa","uuid":"_qkVlQ5LRoOKffV-nFj8Uw","pri":"1","rep":"1","docs.count":null,"docs.deleted":null,"store.size":null,"pri.store.size":null},{"health":"green","status":"open","index":".kibana-event-log-7.9.0-000001","uuid":"fgTtyl62Tc6F1ddJfPwqHA","pri":"1","rep":"1","docs.count":"20","docs.deleted":"0","store.size":"25kb","pri.store.size":"12.5kb"},{"health":"green","status":"open","index":"blogs","uuid":"Mb2n4wnNQSKqSToI_QO0Yg","pri":"1","rep":"1","docs.count":"1594","docs.deleted":"0","store.size":"11mb","pri.store.size":"5.5mb"},{"health":"green","status":"open","index":".kibana-event-log-7.9.0-000002","uuid":"8GpbwnDXR2KJUsw6srLnWw","pri":"1","rep":"1","docs.count":"9","docs.deleted":"0","store.size":"96.9kb","pri.store.size":"48.4kb"},{"health":"green","status":"open","index":".apm-agent-configuration","uuid":"vIaV9k2VS-W48oUOe2xNWA","pri":"1","rep":"1","docs.count":"0","docs.deleted":"0","store.size":"416b","pri.store.size":"208b"},{"health":"green","status":"open","index":"logs_server1","uuid":"u56jv2AyR2KOkruOfxIAnA","pri":"1","rep":"1","docs.count":"5386","docs.deleted":"0","store.size":"5.1mb","pri.store.size":"2.5mb"},{"health":"green","status":"open","index":".kibana_1","uuid":"dBCrfVblRPGVlYAIlP_Duw","pri":"1","rep":"1","docs.count":"3187","docs.deleted":"50","store.size":"24.8mb","pri.store.size":"12.4mb"},{"health":"green","status":"open","index":".tasks","uuid":"3RafayGeSNiqglO2BHof9Q","pri":"1","rep":"1","docs.count":"3","docs.deleted":"0","store.size":"39.9kb","pri.store.size":"19.9kb"},{"health":"green","status":"open","index":"filebeat-7.9.0-elastic_qa","uuid":"tktSYU14S3CrsrJb0ybpSQ","pri":"1","rep":"1","docs.count":"3009880","docs.deleted":"0","store.size":"1.6gb","pri.store.size":"850.1mb"},{"health":"green","status":"open","index":"analysis_test","uuid":"6ZHEAW1ST_qfg7mo4Bva4w","pri":"1","rep":"1","docs.count":"0","docs.deleted":"0","store.size":"416b","pri.store.size":"208b"},{"health":"green","status":"open","index":".apm-custom-link","uuid":"Y4N2TeVERrGacEGwY-NPAQ","pri":"1","rep":"1","docs.count":"0","docs.deleted":"0","store.size":"416b","pri.store.size":"208b"},{"health":"green","status":"open","index":"kibana_sample_data_ecommerce","uuid":"4FIWJKhGSr6bE72R0xEQyA","pri":"1","rep":"1","docs.count":"4675","docs.deleted":"0","store.size":"9.2mb","pri.store.size":"4.6mb"},{"health":"green","status":"open","index":".kibana_task_manager_1","uuid":"9afyndU_Q26oqOiEIoqRJw","pri":"1","rep":"1","docs.count":"6","docs.deleted":"2","store.size":"378.8kb","pri.store.size":"12.5kb"},{"health":"green","status":"open","index":".async-search","uuid":"2VbJgnN7SsqC-DWN64yXUQ","pri":"1","rep":"1","docs.count":"0","docs.deleted":"0","store.size":"3.9kb","pri.store.size":"3.7kb"}]`; @@ -116,6 +154,14 @@ class Document extends PureComponent { { title: '索引名称', dataIndex: 'index', + render: (text, record) => ( + { + this.setState({ + editingIndex: record, + drawerVisible: true, + }); + }}>{text} + ) }, { title: '文档数', @@ -137,8 +183,8 @@ class Document extends PureComponent { title: '操作', render: (text, record) => ( - this.handleUpdateModalVisible(true, record)}>设置 - + {/* this.handleUpdateModalVisible(true, record)}>设置 + */} { this.state.selectedRows.push(record); this.handleDeleteClick(); @@ -147,7 +193,7 @@ class Document extends PureComponent { { this.state.selectedRows.push(record); this.handleDeleteClick(); - }}>新增文档 + }}>文档管理 ), }, @@ -327,7 +373,7 @@ class Document extends PureComponent { pageSize: 5, }, }; - const { selectedRows, modalVisible, updateModalVisible, updateFormValues } = this.state; + const { selectedRows, modalVisible, updateModalVisible, updateFormValues,editingIndex, drawerVisible } = this.state; const parentMethods = { handleAdd: this.handleAdd, handleModalVisible: this.handleModalVisible, @@ -336,6 +382,7 @@ class Document extends PureComponent { handleUpdateModalVisible: this.handleUpdateModalVisible, handleUpdate: this.handleUpdate, }; + return ( @@ -368,6 +415,193 @@ class Document extends PureComponent { values={updateFormValues} /> ) : null} + { + this.setState({ + drawerVisible: false, + }); + }} + width={640} + > + {}}> + + + green + open + 1 + 0 + 5 + 0 + 115.3kb + + + + + + + + + + + Content of Tab Pane 3 + + + Content of Tab Pane 3 + + +
+ {}}> + + + Delete + + + + Edit + + + + Close + + + )}> + + +
+
); } diff --git a/web/src/pages/DataManagement/Query.js b/web/src/pages/DataManagement/Query.js new file mode 100644 index 00000000..43c66d63 --- /dev/null +++ b/web/src/pages/DataManagement/Query.js @@ -0,0 +1,141 @@ +import React, { Component } from 'react'; +import { connect } from 'dva'; +import PageHeaderWrapper from '@/components/PageHeaderWrapper'; +import { Col, Form, Row,Select, Input, Card,Icon,List, Descriptions } from 'antd'; + +const {Option} = Select; + +@Form.create() +class Query extends React.Component { + state={ + bodyDisplay: 'none', + data: [{ + index: 'blogs-001', + id: 'dpOsA3YBCjFOm54VZoNF', + source: `{ + "title" : "elastic search test title", + "content": "如默认结构不满足需求,可以自定义该模板,但是自定义模板时必须包含各个 dom 节点的 class,样式可以自定义。", + "created_at" : "2020-11-23" + }` + }, + { + index: 'blogs-002', + id: "dpOsA3YBCjFOm54VZoNB", + source: `{ + "title" : "elastic search test title", + "created_at" : "2020-11-23", + "content": "如默认结构不满足需求,可以自定义该模板,但是自定义模板时必须包含各个 dom 节点的 class,样式可以自定义。" + }` + }, + { + index: 'blogs-002', + id: "dpOsA3YBCjFOm54VZoNC", + source: `{ + "title" : "elastic search test title", + "created_at" : "2020-11-23", + "content":"如默认结构不满足需求,可以自定义该模板,但是自定义模板时必须包含各个 dom 节点的 class,样式可以自定义。" + }` + }, + { + index: 'blogs-001', + id:"dpOsA3YBCjFOm54VZoNG", + source: `{ + "title" : "elastic search test title", + "content":"如默认结构不满足需求,可以自定义该模板,但是自定义模板时必须包含各个 dom 节点的 class,样式可以自定义。", + "created_at" : "2020-11-23" + }` + }, { + index: 'blogs-001', + id:"dpOsA3YBCjFOm54VZoNG", + source: `{ + "title" : "elastic search test title", + "content":"如默认结构不满足需求,可以自定义该模板,但是自定义模板时必须包含各个 dom 节点的 class,样式可以自定义。", + "created_at" : "2020-11-23" + }` + }] + } + + render(){ + // const {getFieldDecorator} = this.props.form; + return ( +
+ + + + + + console.log(value)} + /> + + + + { + this.setState((preState)=>{ + if(preState.bodyDisplay == 'none') { + return { + bodyDisplay: 'block', + }; + }else{ + return { + bodyDisplay: 'none' + }; + } + }); + }}>{this.state.bodyDisplay == 'none' ? '展开':'收起'} + + + + + + + + + { + console.log(page); + }, + pageSize: 4, + total: 50 + }} + renderItem={item => ( + + {}}>More} + actions={[ + {}} />, + , + ]}> + + {/* + {item.id} + */} + + {item.source} + + + + + )} + /> + +
+ ) + } + +} + +export default Query; \ No newline at end of file diff --git a/web/src/pages/DataManagement/Rebuild.js b/web/src/pages/DataManagement/Rebuild.js index 49760747..f6efb503 100644 --- a/web/src/pages/DataManagement/Rebuild.js +++ b/web/src/pages/DataManagement/Rebuild.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import { connect } from 'dva'; import PageHeaderWrapper from '@/components/PageHeaderWrapper'; -import {Steps, Card, Form, Select, Input,Button, Divider,message,Spin} from 'antd'; +import {Steps, Card, Form, Select, Input,Button, Divider,message,Spin, Row, Col,Result} from 'antd'; const {Step} = Steps; const {Option} = Select; @@ -128,6 +128,19 @@ class Rebuild extends Component {
) + break; + case 3: + stepDom = ( + // , + , + ]} + />) + break; } return stepDom; } @@ -206,10 +219,10 @@ class Rebuild extends Component { - - - - + + + + {this.renderSteps(this.state.currentStep)} diff --git a/web/src/pages/DataManagement/backup/BakAndRestore.js b/web/src/pages/DataManagement/backup/BakAndRestore.js index 019c4547..6d9eb90c 100644 --- a/web/src/pages/DataManagement/backup/BakAndRestore.js +++ b/web/src/pages/DataManagement/backup/BakAndRestore.js @@ -89,11 +89,18 @@ class BakAndRestore extends Component { } }; return ( - +
+
+ +
+ +
); }; @@ -164,11 +171,18 @@ class BakAndRestore extends Component { } }; return ( - +
+
+ +
+ +
); }; @@ -222,11 +236,22 @@ class BakAndRestore extends Component { visible={this.state.snapshotVisible} >
- - Zhou Maomao - 1810000000 + + cluster_snapshot_1 + 2s + + + + 2020-10-09 20:30:23 - +
+ + +
+
diff --git a/web/src/pages/DataManagement/backup/BakAndRestore.less b/web/src/pages/DataManagement/backup/BakAndRestore.less index a1c68de0..de4b14ef 100644 --- a/web/src/pages/DataManagement/backup/BakAndRestore.less +++ b/web/src/pages/DataManagement/backup/BakAndRestore.less @@ -6,7 +6,10 @@ } } } -.btnRestore{ +.drawerFooter{ position:absolute; bottom: 20px; + .btnRestore{ + margin-right: 10px; + } }