Browse Source

feat(site): add status filter #633

Jacky 8 months ago
parent
commit
0e1efd35fc

+ 18 - 7
api/sites/domain.go

@@ -16,8 +16,9 @@ import (
 	"strings"
 )
 
-func GetDomains(c *gin.Context) {
+func GetSiteList(c *gin.Context) {
 	name := c.Query("name")
+	enabled := c.Query("enabled")
 	orderBy := c.Query("order_by")
 	sort := c.DefaultQuery("sort", "desc")
 
@@ -44,9 +45,19 @@ func GetDomains(c *gin.Context) {
 		file := configFiles[i]
 		fileInfo, _ := file.Info()
 		if !file.IsDir() {
+			// name filter
 			if name != "" && !strings.Contains(file.Name(), name) {
 				continue
 			}
+			// status filter
+			if enabled != "" {
+				if enabled == "true" && !enabledConfigMap[file.Name()] {
+					continue
+				}
+				if enabled == "false" && enabledConfigMap[file.Name()] {
+					continue
+				}
+			}
 			configs = append(configs, config.Config{
 				Name:       file.Name(),
 				ModifiedAt: fileInfo.ModTime(),
@@ -64,7 +75,7 @@ func GetDomains(c *gin.Context) {
 	})
 }
 
-func GetDomain(c *gin.Context) {
+func GetSite(c *gin.Context) {
 	rewriteName, ok := c.Get("rewriteConfigFileName")
 	name := c.Param("name")
 
@@ -164,7 +175,7 @@ func GetDomain(c *gin.Context) {
 	})
 }
 
-func SaveDomain(c *gin.Context) {
+func SaveSite(c *gin.Context) {
 	name := c.Param("name")
 
 	if name == "" {
@@ -256,10 +267,10 @@ func SaveDomain(c *gin.Context) {
 		}
 	}
 
-	GetDomain(c)
+	GetSite(c)
 }
 
-func EnableDomain(c *gin.Context) {
+func EnableSite(c *gin.Context) {
 	configFilePath := nginx.GetConfPath("sites-available", c.Param("name"))
 	enabledConfigFilePath := nginx.GetConfPath("sites-enabled", c.Param("name"))
 
@@ -303,7 +314,7 @@ func EnableDomain(c *gin.Context) {
 	})
 }
 
-func DisableDomain(c *gin.Context) {
+func DisableSite(c *gin.Context) {
 	enabledConfigFilePath := nginx.GetConfPath("sites-enabled", c.Param("name"))
 	_, err := os.Stat(enabledConfigFilePath)
 	if err != nil {
@@ -338,7 +349,7 @@ func DisableDomain(c *gin.Context) {
 	})
 }
 
-func DeleteDomain(c *gin.Context) {
+func DeleteSite(c *gin.Context) {
 	var err error
 	name := c.Param("name")
 	availablePath := nginx.GetConfPath("sites-available", name)

+ 6 - 6
api/sites/router.go

@@ -3,13 +3,13 @@ package sites
 import "github.com/gin-gonic/gin"
 
 func InitRouter(r *gin.RouterGroup) {
-	r.GET("domains", GetDomains)
-	r.GET("domain/:name", GetDomain)
-	r.POST("domain/:name", SaveDomain)
-	r.POST("domain/:name/enable", EnableDomain)
-	r.POST("domain/:name/disable", DisableDomain)
+	r.GET("domains", GetSiteList)
+	r.GET("domain/:name", GetSite)
+	r.POST("domain/:name", SaveSite)
+	r.POST("domain/:name/enable", EnableSite)
+	r.POST("domain/:name/disable", DisableSite)
 	r.POST("domain/:name/advance", DomainEditByAdvancedMode)
-	r.DELETE("domain/:name", DeleteDomain)
+	r.DELETE("domain/:name", DeleteSite)
 	r.POST("domain/:name/duplicate", DuplicateSite)
 	r.POST("auto_cert/:name", AddDomainToAutoCert)
 	r.DELETE("auto_cert/:name", RemoveDomainFromAutoCert)

+ 1 - 0
app/src/components/StdDesign/StdDataEntry/components/StdSelect.vue

@@ -67,6 +67,7 @@ onMounted(() => {
     :default-active-first-option="false"
     :mode="props.multiple ? 'multiple' : undefined"
     style="min-width: 180px"
+    allow-clear
     :get-popup-container="triggerNode => triggerNode.parentNode"
   />
 </template>

+ 8 - 1
app/src/views/site/SiteList.vue

@@ -4,7 +4,7 @@ import StdTable from '@/components/StdDesign/StdDataDisplay/StdTable.vue'
 import type { customRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import { datetime } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer'
 import domain from '@/api/domain'
-import { input } from '@/components/StdDesign/StdDataEntry'
+import { input, select } from '@/components/StdDesign/StdDataEntry'
 import SiteDuplicate from '@/views/site/components/SiteDuplicate.vue'
 import InspectConfig from '@/views/config/InspectConfig.vue'
 import type { Column, JSXElements } from '@/components/StdDesign/types'
@@ -35,6 +35,13 @@ const columns: Column[] = [{
 
     return h('div', template)
   },
+  search: {
+    type: select,
+    mask: {
+      true: $gettext('Enabled'),
+      false: $gettext('Disabled'),
+    },
+  },
   sortable: true,
   pithy: true,
 }, {

+ 0 - 4
model/config_backup.go

@@ -8,7 +8,6 @@ import (
 
 type ConfigBackup struct {
 	Model
-
 	Name     string `json:"name"`
 	FilePath string `json:"filepath"`
 	Content  string `json:"content" gorm:"type:text"`
@@ -16,7 +15,6 @@ type ConfigBackup struct {
 
 type ConfigBackupListItem struct {
 	Model
-
 	Name     string `json:"name"`
 	FilePath string `json:"filepath"`
 }
@@ -25,13 +23,11 @@ func GetBackupList(path string) (configs []ConfigBackupListItem) {
 	db.Model(&ConfigBackup{}).
 		Where(&ConfigBackup{FilePath: path}).
 		Find(&configs)
-
 	return
 }
 
 func GetBackup(id int) (config ConfigBackup) {
 	db.First(&config, id)
-
 	return
 }