Pārlūkot izejas kodu

feat: 支持立即备份选中的项目 (#67)

Co-authored-by: jeessy2 <[email protected]>
jeessy2 2 gadi atpakaļ
vecāks
revīzija
e87e61c94c
3 mainītis faili ar 41 papildinājumiem un 6 dzēšanām
  1. 10 0
      client/backup.go
  2. 10 1
      web/save.go
  3. 21 5
      web/writing.html

+ 10 - 0
client/backup.go

@@ -91,6 +91,16 @@ func RunOnce() {
 	}
 }
 
+// 运行指定的索引号
+func RunByIdx(idx int) {
+	conf, err := entity.GetConfigCache()
+	if err != nil {
+		return
+	}
+
+	run(conf, conf.BackupConfig[idx])
+}
+
 // run
 func run(conf entity.Config, backupConf entity.BackupConfig) {
 	if backupConf.NotEmptyProject() && backupConf.Enabled == 0 {

+ 10 - 1
web/save.go

@@ -4,6 +4,7 @@ import (
 	"backup-x/client"
 	"backup-x/entity"
 	"backup-x/util"
+	"log"
 	"net/http"
 	"strconv"
 	"strings"
@@ -102,9 +103,17 @@ func Save(writer http.ResponseWriter, request *http.Request) {
 	// 没有错误
 	if err == nil {
 		conf.CreateBucketIfNotExist()
-		if request.URL.Query().Get("backupNow") == "true" {
+		if request.URL.Query().Get("backupAll") == "true" {
 			go client.RunOnce()
 		}
+		if request.URL.Query().Get("backupIdx") != "" {
+			idx, err := strconv.Atoi(request.URL.Query().Get("backupIdx"))
+			if err == nil {
+				go client.RunByIdx(idx)
+			} else {
+				log.Println("索引号不正确" + request.URL.Query().Get("backupIdx"))
+			}
+		}
 		// 重新进行循环
 		client.StopRunLoop()
 		go client.RunLoop()

+ 21 - 5
web/writing.html

@@ -31,7 +31,8 @@
         <form>
 
           <button class="btn btn-primary submit_btn" style="margin-bottom: 15px;">Save</button>
-          <button class="btn btn-warning submit_btn_backupNow" style="margin-bottom: 15px;margin-left: 15px;">Save & Backup Now</button>
+          <button class="btn btn-primary submit_btn_backup_idx" style="margin-bottom: 15px;margin-left: 15px;">Save & 立即备份选中</button>
+          <button class="btn btn-warning submit_btn_backup_all" style="margin-bottom: 15px;margin-left: 15px;">Save & 立即备份全部</button>
 
           <div class="alert" style="display: none;">
             <strong id="resultMsg"></strong>
@@ -43,7 +44,7 @@
               <nav>
                 <div class="nav nav-tabs" id="nav-tab" role="tablist">
                   {{range $i, $v := .BackupConfig}}
-                  <a class="nav-item nav-link {{if eq $i 0}}active{{end}}" id="id_{{$i}}" data-toggle="tab" href="#content_{{$i}}" role="tab">
+                  <a class="nav-item nav-link {{if eq $i 0}}active{{end}}" id="id_{{$i}}" data-toggle="tab" href="#content_{{$i}}" onclick="contentChange('{{$i}}')" role="tab">
                     {{if eq $v.ProjectName ""}}
                     {{$i}}
                     {{else}}
@@ -254,7 +255,8 @@
           </div>
 
           <button class="btn btn-primary submit_btn" style="margin-bottom: 15px;">Save</button>
-          <button class="btn btn-warning submit_btn_backupNow" style="margin-bottom: 15px;margin-left: 15px;">Save & Backup Now</button>
+          <button class="btn btn-primary submit_btn_backup_idx" style="margin-bottom: 15px;margin-left: 15px;">Save & 立即备份选中</button>
+          <button class="btn btn-warning submit_btn_backup_all" style="margin-bottom: 15px;margin-left: 15px;">Save & 立即备份全部</button>
         </form>
       </div>
 
@@ -267,14 +269,26 @@
   </main>
 
   <script>
+    let contentIdx = 0
+
+    function contentChange(i) {
+      contentIdx = i
+    }
 
     $(function(){
-      $(".submit_btn,.submit_btn_backupNow").on('click',function(e) {
+      $(".submit_btn,.submit_btn_backup_all,.submit_btn_backup_idx").on('click',function(e) {
         e.preventDefault();
         $('body').animate({ scrollTop: 0 }, 300);
+        let url = "/save"
+        if(e.target.classList.contains("submit_btn_backup_all")) {
+          url += "?backupAll=true"
+        }
+        if(e.target.classList.contains("submit_btn_backup_idx")) {
+          url += "?backupIdx="+contentIdx
+        }
         $.ajax({
           method: "POST",
-          url: "/save?backupNow=" + e.target.classList.contains("submit_btn_backupNow"),
+          url: url,
           data: $('form').serialize(),
           success: function (result) {
             $('.alert').css("display", "block");
@@ -313,6 +327,8 @@
       $("#id_"+id).html(enabled == 0?name:name+'<span class="badge badge-pill badge-warning">停用</span>')
     }
 
+
+
   </script>
 
   <script>