<template>
    <div class="page-container">
        <my-operator>
            <template #right>
                <el-input 
                    v-model="searchText"
                    style="width:200px;"
                    :prefix-icon="Search"
                    :placeholder="$t('datasource.configPlaceholder')"
                />
                <el-button type="primary" @click="handleModal">{{$t('app.query')}}</el-button>
                <el-button type="primary" :icon="Refresh" :title="$t('app.refresh')"/>
            </template>
        </my-operator>
        <div class="table-wrap">
            <el-table style="width:100%" align="center" :data="tableData.data">
                <template v-for="columns in tableData.columns" >
                    <el-table-column :label="columns.title" :prop="columns.key" width="250"/>
                </template>
                <el-table-column :label="$t('app.operate')">
                    <template #default="scope">
                        <span class="editBtn" @click="clickHandleEdit(scope.row)">{{$t('app.edit')}}</span>
                    </template>
                </el-table-column>
            </el-table>
        </div>
        <ConfigEdit :show="addModel" :configItem="configItem" :clusterId="clusterId" :nodeId="nodeId"  @changeModal="changeModalCurrent" @changeValue="getChangeValue"/>
    </div>
</template>

<script lang="ts" setup>
import { Search, Refresh } from '@element-plus/icons-vue';
import ConfigEdit from './ConfigEdit.vue'
import ogRequest from '../../request';
import { useRequest } from "vue-request";

const searchText = ref('');
const addModel = ref(false);
const clusterId=ref('');
const nodeId=ref('');
const configItem=ref('');
const tableData=reactive<{
    data:any[],
    columns:any[]
}>({
    data:[],
    columns:[] 
})
const handleModal = () => {
    addModel.value = true;
}
const changeModalCurrent = (val:boolean) => {
    addModel.value = val;
}
const getChangeValue = (val:any)=>{
    console.log(Object.entries(val))
    let query:any[]=[];
    for(let [k,v] of Object.entries(val)){
        if(k !== 'nodeId' && k !== 'clusterId')
        query.push({
            key:k,
            value:v
        })
    }
    nextTick(()=>{
        requestEdit(query)
    })
}
const clickHandleEdit = (val:any) =>{
    nodeId.value=val.nodeId;
    clusterId.value=val.clusterId;
    configItem.value=val;
    addModel.value = true;
   
}
const requestEdit = (data:any) =>{
    useRequest(()=>{
        return ogRequest.put(`/sql-diagnosis/api/v1/public/node-settings/${nodeId.value}`, data) 
    },{
        onSuccess:(data)=>{
            if(JSON.stringify(data)){
                addModel.value = false;
                requestData();
            }
        }
    })
}
onMounted(()=>{
    requestData();
})

const { data: res, run: requestData } = useRequest(() => {
    return ogRequest.get("/sql-diagnosis/api/v1/public/node-settings", '') 
}, { manual: true })

watch(res, (res: any) => {
    if (res && Object.keys(res).length) {
        tableData.data=res.data;
        tableData.columns=res.columns;
    }
})


</script>

<style lang="scss" scoped>
.editBtn{
    color:#d4d4d4;
    cursor: pointer;
}
:deep(.el-table .el-table__cell.is-center){
    background-color: #424242;
}
</style>