blob: d7e868634b2bc651f0d50f51009a3dfa96afb5eb [file] [log] [blame]
<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-->
<template>
<div class="table-wrap">
<el-table :data="tableData" border style="width: 100%">
<el-table-column
v-for="(item, index) in column"
:key="index"
:prop="item.prop"
:label="item.label"
:width="item.width"
/>
<el-table-column :label="$t('runtimeStatus.enabled')" fixed="right" width="80" align="center">
<template slot-scope="scope">
<el-switch v-model="scope.row.enabled" @change="handleChange(scope.row)" />
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
:total="total"
:current-page="currentPage"
background
layout="prev, pager, next"
@current-change="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import clone from 'lodash/clone'
import API from '../api'
export default {
name: 'DataSource',
data() {
return {
column: [
{
label: this.$t('runtimeStatus').dataSource.schema,
prop: 'schema'
},
{
label: this.$t('runtimeStatus').dataSource.masterDataSourceName,
prop: 'primaryDataSourceName'
},
{
label: this.$t('runtimeStatus').dataSource.replicaDataSourceName,
prop: 'replicaDataSourceName'
}
],
tableData: [],
cloneTableData: [],
currentPage: 1,
pageSize: 10,
total: null
}
},
created() {
this.getOrcheData()
},
methods: {
handleCurrentChange(val) {
const data = clone(this.cloneTableData)
this.tableData = data.splice(val - 1, this.pageSize)
},
getOrcheData() {
API.getOrcheData().then(res => {
const data = res.model
this.total = data.length
this.cloneTableData = clone(res.model)
this.tableData = data.splice(0, this.pageSize)
})
},
putOrcheData(row) {
API.putOrcheData(row).then(res => {
this.getOrcheData()
})
},
handleChange(row) {
this.putOrcheData(row)
}
}
}
</script>
<style lang="scss" scoped>
.table-wrap {
margin-top: 20px;
}
.pagination {
float: right;
margin: 10px -10px 10px 0;
}
</style>