实现节点分组管理

This commit is contained in:
刘祥超
2020-10-28 18:21:11 +08:00
parent 94a4db2e1d
commit cd4f4c41f6
18 changed files with 354 additions and 2 deletions

View File

@@ -2,4 +2,5 @@
<menu-item :href="'/clusters/cluster?clusterId=' + clusterId" code="index">节点列表</menu-item>
<menu-item :href="'/clusters/cluster/createNode?clusterId=' + clusterId" code="create">创建节点</menu-item>
<menu-item :href="'/clusters/cluster/installManual?clusterId=' + clusterId" code="install">安装升级</menu-item>
<menu-item :href="'/clusters/cluster/groups?clusterId=' + clusterId" code="group">节点分组</menu-item>
</second-menu>

View File

@@ -0,0 +1,15 @@
{$layout "layout_popup"}
<h3>创建分组</h3>
<form class="ui form" data-tea-action="$" data-tea-success="success">
<input type="hidden" name="clusterId" :value="clusterId"/>
<table class="ui table definition selectable">
<tr>
<td>分组名称 *</td>
<td>
<input type="text" name="name" maxlength="50" ref="focus"/>
</td>
</tr>
</table>
<submit-btn></submit-btn>
</form>

View File

@@ -0,0 +1,3 @@
Tea.context(function () {
this.success = NotifyPopup
})

View File

@@ -0,0 +1,36 @@
{$layout}
{$template "../menu"}
<first-menu style="margin-top:-1em">
<a href="" class="item" @click.prevent="createGroup()">[创建分组]</a>
</first-menu>
<p class="comment" v-if="groups.length == 0">暂时还没有分组。</p>
<div v-show="groups.length > 0">
<div class="margin"></div>
<table class="ui table selectable" id="sortable-table">
<thead>
<tr>
<th style="width:3em"></th>
<th>分组名称</th>
<th>节点数</th>
<th class="two op">操作</th>
</tr>
</thead>
<tbody v-for="group in groups" :data-group-id="group.id">
<tr>
<td style="text-align: center;"><i class="icon bars handle grey"></i> </td>
<td>{{group.name}}</td>
<td>
<span v-if="group.countNodes.length > 0">{{group.countNodes}}</span>
<span v-else class="disabled">0</span>
</td>
<td>
<a href="" @click.prevent="updateGroup(group.id)">修改</a> &nbsp; <a href="" @click.prevent="deleteGroup(group.id)">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
<p v-if="groups.length > 0" class="comment">可以拖动左侧的<i class="icon bars"></i>排序。</p>

View File

@@ -0,0 +1,53 @@
Tea.context(function () {
this.$delay(function () {
let that = this
sortTable(function () {
let groupIds = []
document.querySelectorAll("*[data-group-id]").forEach(function (element) {
groupIds.push(element.getAttribute("data-group-id"))
})
that.$post("/clusters/cluster/groups/sort")
.params({
groupIds: groupIds
})
.success(function () {
teaweb.successToast("保存成功")
})
})
})
this.createGroup = function () {
teaweb.popup("/clusters/cluster/groups/createPopup?clusterId=" + this.clusterId, {
callback: function () {
teaweb.success("保存成功", function () {
teaweb.reload()
})
}
})
}
this.updateGroup = function (groupId) {
teaweb.popup("/clusters/cluster/groups/updatePopup?groupId=" + groupId, {
callback: function () {
teaweb.success("保存成功", function () {
teaweb.reload()
})
}
})
}
this.deleteGroup = function (groupId) {
let that = this
teaweb.confirm("确定要删除这个分组吗?", function () {
that.$post("/clusters/cluster/groups/delete")
.params({
groupId: groupId
})
.success(function () {
teaweb.success("删除成功", function () {
teaweb.reload()
})
})
})
}
})

View File

@@ -0,0 +1,15 @@
{$layout "layout_popup"}
<h3>修改分组</h3>
<form class="ui form" data-tea-action="$" data-tea-success="success">
<input type="hidden" name="groupId" :value="group.id"/>
<table class="ui table definition selectable">
<tr>
<td>分组名称 *</td>
<td>
<input type="text" name="name" maxlength="50" ref="focus" v-model="group.name"/>
</td>
</tr>
</table>
<submit-btn></submit-btn>
</form>

View File

@@ -0,0 +1,3 @@
Tea.context(function () {
this.success = NotifyPopup
})

View File

@@ -25,6 +25,9 @@
<option value="2">不在线</option>
</select>
</div>
<div class="ui field">
<input type="text" name="keyword" placeholder="关键词" v-model="keyword" style="width:10em"/>
</div>
<div class="ui field">
<button class="ui button" type="submit">搜索</button>
</div>

View File

@@ -10,7 +10,7 @@
<!-- 未安装 -->
<div v-if="!node.isInstalled">
<h3>方法1自动安装</h3>
<h3>方法1通过SSH自动安装</h3>
<div v-if="installStatus != null && (installStatus.isRunning || installStatus.isFinished)"
class="ui segment installing-box">