From cc9b1adb3416cb98ef85d4a208ef06f33a3b4078 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Thu, 29 Oct 2020 21:37:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=9C=A8=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=AD=E4=BD=BF=E7=94=A8=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clusters/cluster/groups/options.go | 31 --------- .../actions/default/clusters/cluster/init.go | 1 - .../default/servers/components/groups/init.go | 1 - .../servers/components/groups/options.go | 11 --- .../servers/components/groups/selectPopup.go | 67 ++++++++++++++++++- .../web/actions/default/servers/create.go | 2 + internal/web/actions/default/servers/index.go | 12 ++++ .../default/servers/server/settings/index.go | 14 ++++ .../js/components/node/node-group-selector.js | 14 +--- .../server/server-group-selector.js | 53 +++++++++++++++ web/views/@default/servers/create.html | 7 ++ web/views/@default/servers/index.html | 9 +++ .../servers/server/settings/index.html | 6 ++ 13 files changed, 169 insertions(+), 59 deletions(-) delete mode 100644 internal/web/actions/default/clusters/cluster/groups/options.go delete mode 100644 internal/web/actions/default/servers/components/groups/options.go create mode 100644 web/public/js/components/server/server-group-selector.js diff --git a/internal/web/actions/default/clusters/cluster/groups/options.go b/internal/web/actions/default/clusters/cluster/groups/options.go deleted file mode 100644 index c8eb2b01..00000000 --- a/internal/web/actions/default/clusters/cluster/groups/options.go +++ /dev/null @@ -1,31 +0,0 @@ -package groups - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" -) - -type OptionsAction struct { - actionutils.ParentAction -} - -func (this *OptionsAction) RunPost(params struct { - ClusterId int64 -}) { - groupsResp, err := this.RPC().NodeGroupRPC().FindAllEnabledNodeGroupsWithClusterId(this.AdminContext(), &pb.FindAllEnabledNodeGroupsWithClusterIdRequest{ClusterId: params.ClusterId}) - if err != nil { - this.ErrorPage(err) - } - - groupMaps := []maps.Map{} - for _, group := range groupsResp.Groups { - groupMaps = append(groupMaps, maps.Map{ - "id": group.Id, - "name": group.Name, - }) - } - this.Data["groups"] = groupMaps - - this.Success() -} diff --git a/internal/web/actions/default/clusters/cluster/init.go b/internal/web/actions/default/clusters/cluster/init.go index ce1af33e..d6a11830 100644 --- a/internal/web/actions/default/clusters/cluster/init.go +++ b/internal/web/actions/default/clusters/cluster/init.go @@ -42,7 +42,6 @@ func init() { GetPost("/groups/updatePopup", new(groups.UpdatePopupAction)). Post("/groups/delete", new(groups.DeleteAction)). Post("/groups/sort", new(groups.SortAction)). - Post("/groups/options", new(groups.OptionsAction)). GetPost("/groups/selectPopup", new(groups.SelectPopupAction)). EndAll() diff --git a/internal/web/actions/default/servers/components/groups/init.go b/internal/web/actions/default/servers/components/groups/init.go index c86b6297..c5c88233 100644 --- a/internal/web/actions/default/servers/components/groups/init.go +++ b/internal/web/actions/default/servers/components/groups/init.go @@ -16,7 +16,6 @@ func init() { Get("", new(IndexAction)). GetPost("/createPopup", new(CreatePopupAction)). GetPost("/updatePopup", new(UpdatePopupAction)). - Post("/options", new(OptionsAction)). GetPost("/selectPopup", new(SelectPopupAction)). Post("/delete", new(DeleteAction)). Post("/sort", new(SortAction)). diff --git a/internal/web/actions/default/servers/components/groups/options.go b/internal/web/actions/default/servers/components/groups/options.go deleted file mode 100644 index 79eb8c47..00000000 --- a/internal/web/actions/default/servers/components/groups/options.go +++ /dev/null @@ -1,11 +0,0 @@ -package groups - -import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - -type OptionsAction struct { - actionutils.ParentAction -} - -func (this *OptionsAction) RunPost(params struct{}) { - this.Success() -} diff --git a/internal/web/actions/default/servers/components/groups/selectPopup.go b/internal/web/actions/default/servers/components/groups/selectPopup.go index 9fbaedb2..3eb98c01 100644 --- a/internal/web/actions/default/servers/components/groups/selectPopup.go +++ b/internal/web/actions/default/servers/components/groups/selectPopup.go @@ -1,6 +1,14 @@ package groups -import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/lists" + "github.com/iwind/TeaGo/maps" + "github.com/iwind/TeaGo/types" + "strings" +) type SelectPopupAction struct { actionutils.ParentAction @@ -10,6 +18,61 @@ func (this *SelectPopupAction) Init() { this.Nav("", "", "") } -func (this *SelectPopupAction) RunGet(params struct{}) { +func (this *SelectPopupAction) RunGet(params struct { + SelectedGroupIds string +}) { + groupsResp, err := this.RPC().ServerGroupRPC().FindAllEnabledServerGroups(this.AdminContext(), &pb.FindAllEnabledServerGroupsRequest{}) + if err != nil { + this.ErrorPage(err) + } + + selectedGroupIds := []int64{} + if len(params.SelectedGroupIds) > 0 { + for _, v := range strings.Split(params.SelectedGroupIds, ",") { + selectedGroupIds = append(selectedGroupIds, types.Int64(v)) + } + } + + groupMaps := []maps.Map{} + for _, group := range groupsResp.Groups { + // 已经选过的就跳过 + if lists.ContainsInt64(selectedGroupIds, group.Id) { + continue + } + groupMaps = append(groupMaps, maps.Map{ + "id": group.Id, + "name": group.Name, + }) + } + this.Data["groups"] = groupMaps + this.Show() } + +func (this *SelectPopupAction) RunPost(params struct { + GroupId int64 + + Must *actions.Must +}) { + if params.GroupId <= 0 { + this.Fail("请选择要使用的分组") + } + + groupResp, err := this.RPC().ServerGroupRPC().FindEnabledServerGroup(this.AdminContext(), &pb.FindEnabledServerGroupRequest{GroupId: params.GroupId}) + if err != nil { + this.ErrorPage(err) + return + } + group := groupResp.Group + if group == nil { + this.NotFound("serverGroup", params.GroupId) + return + } + + this.Data["group"] = maps.Map{ + "id": group.Id, + "name": group.Name, + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/create.go b/internal/web/actions/default/servers/create.go index 505ba886..a652d55e 100644 --- a/internal/web/actions/default/servers/create.go +++ b/internal/web/actions/default/servers/create.go @@ -47,6 +47,7 @@ func (this *CreateAction) RunPost(params struct { Name string Description string ClusterId int64 + GroupIds []int64 ServerType string Addresses string @@ -259,6 +260,7 @@ func (this *CreateAction) RunPost(params struct { ExcludeNodesJSON: excludeNodesJSON, WebId: webId, ReverseProxyJSON: reverseProxyRefJSON, + GroupIds: params.GroupIds, } if httpConfig != nil { data, err := json.Marshal(httpConfig) diff --git a/internal/web/actions/default/servers/index.go b/internal/web/actions/default/servers/index.go index 0b003cdb..9a56e37d 100644 --- a/internal/web/actions/default/servers/index.go +++ b/internal/web/actions/default/servers/index.go @@ -95,6 +95,17 @@ func (this *IndexAction) RunGet(params struct{}) { } } + // 分组 + groupMaps := []maps.Map{} + if len(server.Groups) > 0 { + for _, group := range server.Groups { + groupMaps = append(groupMaps, maps.Map{ + "id": group.Id, + "name": group.Name, + }) + } + } + serverMaps = append(serverMaps, maps.Map{ "id": server.Id, "isOn": server.IsOn, @@ -105,6 +116,7 @@ func (this *IndexAction) RunGet(params struct{}) { }, "ports": portMaps, "serverTypeName": serverconfigs.FindServerType(server.Type).GetString("name"), + "groups": groupMaps, }) } this.Data["servers"] = serverMaps diff --git a/internal/web/actions/default/servers/server/settings/index.go b/internal/web/actions/default/servers/server/settings/index.go index 648e2a83..85be531d 100644 --- a/internal/web/actions/default/servers/server/settings/index.go +++ b/internal/web/actions/default/servers/server/settings/index.go @@ -57,6 +57,17 @@ func (this *IndexAction) RunGet(params struct { clusterId = server.Cluster.Id } + // 分组 + groupMaps := []maps.Map{} + if len(server.Groups) > 0 { + for _, group := range server.Groups { + groupMaps = append(groupMaps, maps.Map{ + "id": group.Id, + "name": group.Name, + }) + } + } + this.Data["server"] = maps.Map{ "id": server.Id, "clusterId": clusterId, @@ -64,6 +75,7 @@ func (this *IndexAction) RunGet(params struct { "name": server.Name, "description": server.Description, "isOn": server.IsOn, + "groups": groupMaps, } serverType := serverconfigs.FindServerType(server.Type) @@ -84,6 +96,7 @@ func (this *IndexAction) RunPost(params struct { Name string Description string ClusterId int64 + GroupIds []int64 IsOn bool Must *actions.Must @@ -102,6 +115,7 @@ func (this *IndexAction) RunPost(params struct { Description: params.Description, ClusterId: params.ClusterId, IsOn: params.IsOn, + GroupIds: params.GroupIds, }) if err != nil { this.ErrorPage(err) diff --git a/web/public/js/components/node/node-group-selector.js b/web/public/js/components/node/node-group-selector.js index 9e36caf4..82473834 100644 --- a/web/public/js/components/node/node-group-selector.js +++ b/web/public/js/components/node/node-group-selector.js @@ -1,20 +1,8 @@ Vue.component("node-group-selector", { props: ["v-cluster-id", "v-group"], - mounted: function () { - let that = this - Tea.action("/clusters/cluster/groups/options") - .post() - .params({ - clusterId: this.vClusterId - }) - .success(function (resp) { - - }) - }, data: function () { return { - groups: [], - selectedGroup: this.vGroup, + selectedGroup: this.vGroup } }, methods: { diff --git a/web/public/js/components/server/server-group-selector.js b/web/public/js/components/server/server-group-selector.js new file mode 100644 index 00000000..e772151c --- /dev/null +++ b/web/public/js/components/server/server-group-selector.js @@ -0,0 +1,53 @@ +Vue.component("server-group-selector", { + props: ["v-groups"], + data: function () { + let groups = this.vGroups + if (groups == null) { + groups = [] + } + return { + groups: groups + } + }, + methods: { + selectGroup: function () { + let that = this + let groupIds = this.groups.map(function (v) { + return v.id.toString() + }).join(",") + teaweb.popup("/servers/components/groups/selectPopup?selectedGroupIds=" + groupIds, { + callback: function (resp) { + that.groups.push(resp.data.group) + } + }) + }, + addGroup: function () { + let that = this + teaweb.popup("/servers/components/groups/createPopup", { + callback: function (resp) { + that.groups.push(resp.data.group) + } + }) + }, + removeGroup: function (index) { + this.groups.$remove(index) + }, + groupIds: function () { + return this.groups.map(function (v) { + return v.id + }) + } + }, + template: `
+
+
+ + {{group.name}}   +
+
+
+
+ [选择分组]   [添加分组] +
+
` +}) \ No newline at end of file diff --git a/web/views/@default/servers/create.html b/web/views/@default/servers/create.html index 2c76cbfc..b2509da5 100644 --- a/web/views/@default/servers/create.html +++ b/web/views/@default/servers/create.html @@ -82,6 +82,13 @@ + + 选择分组 + + + + + diff --git a/web/views/@default/servers/index.html b/web/views/@default/servers/index.html index 0e693047..8ee25b20 100644 --- a/web/views/@default/servers/index.html +++ b/web/views/@default/servers/index.html @@ -7,6 +7,7 @@ 服务名称 + 所属分组 服务类型 部署集群 端口 @@ -16,6 +17,14 @@ {{server.name}} + +
+
+ {{group.name}} +
+
+ - + {{server.serverTypeName}} {{server.cluster.name}} diff --git a/web/views/@default/servers/server/settings/index.html b/web/views/@default/servers/server/settings/index.html index 58cbc3a5..54d41bcc 100644 --- a/web/views/@default/servers/server/settings/index.html +++ b/web/views/@default/servers/server/settings/index.html @@ -26,6 +26,12 @@ {{typeName}} + + 选择分组 + + + +