{{define "dashboard/server"}}
{{template "common/header" .}}
{{template "common/menu" .}}
<div class="nb-container">
    <div class="ui container">
        <div class="ui grid">
            <div class="right floated right aligned twelve wide column">
                <button class="ui right labeled nezha-primary-btn icon button" onclick="addOrEditServer()"><i
                        class="add icon"></i> 添加主机
                </button>
                <button class="ui right labeled nezha-primary-btn icon button" onclick="forceUpdate()"><i
                        class="arrow alternate circle up outline icon"></i> 强制更新
                </button>
            </div>
        </div>
        <table class="ui very basic table">
            <thead>
                <tr>
                    <th><button onclick="checkAllServer()" class="ui mini nezha-primary-btn button">全选</button></th>
                    <th>ID(排序)</th>
                    <th>名称</th>
                    <th>分组</th>
                    <th>IP</th>
                    <th>版本号</th>
                    <th>密钥</th>
                    <th>一键安装</th>
                    <th>备注</th>
                    <th>管理</th>
                </tr>
            </thead>
            <tbody>
                {{range $server := .Servers}}
                <tr>
                    <td><input type="checkbox" class="nezha-servers" value="{{$server.ID}}" /></td>
                    <td>{{$server.ID}}({{$server.DisplayIndex}})</td>
                    <td>{{$server.Name}}</td>
                    <td>{{$server.Tag}}</td>
                    <td>{{$server.Host.IP}}</td>
                    <td>{{$server.Host.Version}}</td>
                    <td>{{$server.Secret}}</td>
                    <td>
                        <button class="ui icon green mini button"
                            data-clipboard-text="{{if $.Conf.GRPCHost}}curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh install_agent {{$.Conf.GRPCHost}} {{$.Conf.GRPCPort}} {{$server.Secret}}{{else}}请先在设置页面配置 未接入CDN的面板服务器域名/IP{{end}}"
                            data-tooltip="点击复制安装命令">
                            <i class="linux icon"></i>
                        </button>
                        <button class="ui icon mini button" data-tooltip="尚未支持，请下载release手动安装">
                            <i class="windows icon"></i>
                        </button>
                        <button class="ui icon mini button" data-tooltip="尚未支持，请下载release手动安装">
                            <i class="apple icon"></i>
                        </button>
                    </td>
                    <td style="word-break: break-word;">{{$server.Note}}</td>
                    <td>
                        <div class="ui mini icon buttons">
                            <button class="ui button" onclick="connectToServer({{$server.ID}})">
                                <i class="terminal icon"></i>
                            </button>
                            <button class="ui button" onclick="addOrEditServer({{$server.Marshal}})">
                                <i class="edit icon"></i>
                            </button>
                            <button class="ui button"
                                onclick="showConfirm('删除主机','确认删除此主机？',deleteRequest,'/api/server/'+{{$server.ID}})">
                                <i class="trash alternate outline icon"></i>
                            </button>
                        </div>
                    </td>
                </tr>
                {{end}}
            </tbody>
        </table>
    </div>
</div>
{{template "component/server" .}}
{{template "common/footer" .}}
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.8/dist/clipboard.min.js"></script>
<script>
    var clipboard = new ClipboardJS('.ui.icon.green.mini.button');
    const checkBoxList = document.querySelectorAll('tbody > tr > td > input.nezha-servers[type=checkbox]')
    function checkAllServer() {
        checkBoxList.forEach(cb => {
            cb.checked = true
        })
    }
    function forceUpdate() {
        const servers = []
        checkBoxList.forEach(cb => {
            if (cb.checked) {
                servers.push(parseInt(cb.value))
            }
        })
        if (servers.length == 0) {
            $.suiAlert({
                title: '当前没有选中的服务器',
                description: '',
                type: 'warning',
                time: '2',
                position: 'top-center',
            });
            return
        }
        $.post('/api/force-update', JSON.stringify(servers))
            .then((resp) => {
                if (resp.code == 200) {
                    $.suiAlert({
                        title: '执行结果',
                        description: resp.message,
                        type: 'success',
                        time: '3',
                        position: 'top-center',
                    });
                } else {
                    $.suiAlert({
                        title: '',
                        description: resp.message,
                        type: 'error',
                        time: '3',
                        position: 'top-center',
                    });
                }
            }).catch(err => {
                $.suiAlert({
                    title: '',
                    description: err,
                    type: 'error',
                    time: '3',
                    position: 'top-center',
                });
            })
    }
</script>
{{end}}