diff --git a/src/app_viewmodel.go b/src/app_viewmodel.go index 4e7fa58..e612a34 100644 --- a/src/app_viewmodel.go +++ b/src/app_viewmodel.go @@ -4,6 +4,7 @@ import ( "encoding/json" "github.com/gin-gonic/gin" log "github.com/sirupsen/logrus" + "github.com/thoas/go-funk" "net/http" "strings" ) @@ -107,8 +108,18 @@ func CreateUpdateDeleteApp(c *gin.Context) { func GetAppsController(c *gin.Context) { username := c.MustGet("username").(string) - apps := GetApps(username) - c.JSON(http.StatusOK, apps) + + appsvm := funk.Map(GetApps(username), func(a AppModel) AppViewModel { return AppViewModel{AppModel: &a} }).([]AppViewModel) + for i := range appsvm { + a := &appsvm[i] + a.Status = statusString(a) + a.ServiceDisplayName = a.ServiceName() + } + vm := &AppsViewModel{ + Username: username, + Apps: appsvm, + } + c.JSON(http.StatusOK, vm) } func GetUsername(c *gin.Context) { diff --git a/src/k8s_client.go b/src/k8s_client.go index 6c772b7..7775ff1 100644 --- a/src/k8s_client.go +++ b/src/k8s_client.go @@ -278,10 +278,10 @@ func (c *K8sClient) UpdateIngress(a *AppModel) { label := map[string]string{k: v} ingress := &netv1.Ingress{ ObjectMeta: metav1.ObjectMeta{ - Name: a.IngressName(), - Labels: label, + Name: a.IngressName(), + Labels: label, Annotations: map[string]string{ - //"traefik.ingress.kubernetes.io/router.middlewares": "default-strip-prefix-1@kubernetescrd", + "traefik.ingress.kubernetes.io/router.middlewares": "default-strip-prefix-1@kubernetescrd", }, }, Spec: netv1.IngressSpec{ diff --git a/template/app_view.html b/template/app_view.html index 69149ef..53e6c9d 100644 --- a/template/app_view.html +++ b/template/app_view.html @@ -81,7 +81,7 @@
+ placeholder="只能为小写字母、数字和下划线"/>
@@ -130,13 +130,18 @@
+
+ +
- - - - - - @@ -150,6 +155,7 @@ username: "", apps: [], blankApp: {}, + toastText: "", selectApp: { Id: "", AppName: "", @@ -164,6 +170,19 @@ } }, methods: { + toast(text) { + this.toastText = text + let toastLiveExample = document.getElementById('liveToast') + let toast = new bootstrap.Toast(toastLiveExample) + toast.show() + }, + handleResponse(e) { + if (e.data.msg !== "ok") { + this.toast(e.data.msg) + } else { + this.refresh() + } + }, showModal(a) { if (!a) { a = JSON.parse(JSON.stringify(this.blankApp)) @@ -172,46 +191,36 @@ (new bootstrap.Modal("#edit-modal")).show() }, startApp(item) { - axios.post("dep?id=" + item.Id).then(e => { - console.log(e.data) - }) + axios.post("dep?id=" + item.Id).then(this.handleResponse) }, deleteApp(app) { axios.delete("app", { data: app - }).then(e => { - console.log(e.data) - }) + }).then(this.handleResponse) }, stopApp(app) { - axios.delete("dep?id=" + app.Id).then(e => { - console.log(e.data) - }) + axios.delete("dep?id=" + app.Id).then(this.handleResponse) }, updateApp() { let app = this.selectApp if (app.Id) { - axios.put("app", app).then(e => { - console.log(e) - }) + axios.put("app", app).then(this.handleResponse) } else { app.Id = null app.UserName = this.username - axios.post("app", app).then(e => { - console.log(e) - }); + axios.post("app", app).then(this.handleResponse); } + }, + refresh() { + axios.get("apps").then(r => { + this.username = r.data.Username + this.apps = r.data.Apps + }) } }, mounted() { this.blankApp = JSON.parse(JSON.stringify(this.selectApp)) - axios.get("username").then(r => { - this.username = r.data.username - }) - axios.get("apps").then(response => { - this.apps = response.data - }) - + this.refresh() } }).mount("#app")