Преглед изворни кода

新增配置文件导入导出

weiyigulu пре 3 година
родитељ
комит
ce7f4488fc

+ 0 - 3
src/main/java/PointDataCalculator.java

@@ -76,7 +76,6 @@ public class PointDataCalculator extends BasePointData {
                 Matcher m = RANDOM_EXPR.matcher(getValue());
                 while (m.find()) {
                     temS = m.group();
-                    System.out.println(temS);
                     temS2 = temS.replace("R", "rand");
                     temFormula = temFormula.replace(temS, temS2);
                 }
@@ -86,7 +85,6 @@ public class PointDataCalculator extends BasePointData {
                     temS2 = temS.replace("T", "now");
                     temFormula = temFormula.replace(temS, temS2);
                 }
-                System.out.println(temFormula);
                 this.compiledExp = AviatorEvaluator.compile(temFormula);
             } catch (ExpressionSyntaxErrorException e) {
                 log.error("公式解析失败,公式不可用", e);
@@ -108,7 +106,6 @@ public class PointDataCalculator extends BasePointData {
             while (matcher.find()) {
                 String s = matcher.group();
                 s = s.substring(1, s.length() - 1);
-                System.out.println(s);
                 this.calculatingParameters.put("P_" + s + "_P", Integer.parseInt(s));
             }
         }

+ 30 - 5
src/main/java/RequestController.java

@@ -1,5 +1,6 @@
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import io.netty.handler.codec.http.QueryStringDecoder;
+import io.netty.util.CharsetUtil;
 
 import java.util.List;
 import java.util.Map;
@@ -41,7 +42,7 @@ public class RequestController {
                 PointDataContainer.getInstance().add2PointDataMap(new PointDataConstantValue(Integer.valueOf(point), value));
                 return addConstantPoint().getTextResponse("ok");
             } else {
-               return  addConstantPoint().getTextResponse("err");
+                return addConstantPoint().getTextResponse("err");
             }
         };
     }
@@ -63,7 +64,7 @@ public class RequestController {
                 PointDataContainer.getInstance().add2PointDataMap(new PointDataCalculator(Integer.valueOf(point), value));
                 return addCalculatorPoint().getTextResponse("ok");
             } else {
-                return  addCalculatorPoint().getTextResponse("err");
+                return addCalculatorPoint().getTextResponse("err");
             }
         };
     }
@@ -83,13 +84,12 @@ public class RequestController {
                 ProtocolDataContainer.getInstance().deleteData(Integer.valueOf(point));
                 return addCalculatorPoint().getTextResponse("ok");
             } else {
-                return  addCalculatorPoint().getTextResponse("err");
+                return addCalculatorPoint().getTextResponse("err");
             }
         };
     }
 
 
-
     @RequestHandlerFunction(requestType = RequestControllerManager.RequestMethodType.GET, requestUrl = "/")
     public RequestHandler index() {
         return (request) -> index().getTextResponse(GetStaticFileUtils.getFileContext("slaver.html"));
@@ -106,6 +106,31 @@ public class RequestController {
         return (request) -> icon().getIcon(GetStaticFileUtils.getFileStream("favicon.ico"));
     }
 
+    @RequestHandlerFunction(requestType = RequestControllerManager.RequestMethodType.POST, requestUrl = "/uploadConfig")
+    public RequestHandler uploadConfig() {
+        return (request) -> {
+            String bodyStr = request.content().toString(CharsetUtil.UTF_8);
+            JSONObject jsonObject = JSONObject.parseObject(bodyStr);
+            for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
+                try {
+                    Integer key = Integer.parseInt(entry.getKey());
+                    String value = entry.getValue().toString();
+                    if ("true".equals(value) || "false".equals(value)) {
+                        PointDataContainer.getInstance().add2PointDataMap(new PointDataConstantValue(key, value));
+                    } else {
+                        try {
+                            Float.parseFloat(value);
+                            PointDataContainer.getInstance().add2PointDataMap(new PointDataConstantValue(key, value));
+                        } catch (NumberFormatException e) {
+                            PointDataContainer.getInstance().add2PointDataMap(new PointDataCalculator(key, value));
+                        }
+                    }
+                } catch (Exception e) {
+                }
+            }
+            return uploadConfig().getTextResponse("yes");
+        };
+    }
 
     @RequestHandlerFunction(requestType = RequestControllerManager.RequestMethodType.GET, requestUrl = "/getValues")
     public RequestHandler getValues() {

+ 97 - 39
src/main/resources/slaver.html

@@ -28,7 +28,9 @@
     <table style="margin-left: 10px">
         <tbody id="wt">
         <tr class="th">
-            <td style="border: none"><input type="button" value="导出配置"></td>
+            <td style="border: none"><input type="button" value="导出配置" onclick="exportConfig()"></td>
+            <td style="border: none" colspan="4"><input type="file" value="选择配置文件" id="configFileInput"></td>
+            <td style="border: none"><input type="button" value="导入配置" onclick="uploadConfig()"></td>
         </tr>
         <tr style="height: 10px">
             <td colspan="8" style="text-align: left;color: red;background-color: white">
@@ -136,15 +138,14 @@
     }
 
 
-
     function getTd(child) {
-        var td=document.createElement("td")
+        var td = document.createElement("td")
         td.appendChild(child)
         return td
 
     }
 
-    function getInputPointEle(){
+    function getInputPointEle() {
         var inputE = document.createElement("input")
         inputE.type = "text"
         inputE.placeholder = "输入值或公式"
@@ -154,7 +155,7 @@
         return inputE
     }
 
-    function getInputValueEle(){
+    function getInputValueEle() {
         var inputE = document.createElement("input")
         inputE.type = "text"
         inputE.placeholder = "输入值或公式"
@@ -195,8 +196,8 @@
             success: function (msg) {
                 var ps = JSON.parse(msg)
                 for (var p in ps) {
-                    if( document.getElementById("td_" + p)!=null){
-                    document.getElementById("td_" + p).innerText = ps[p]
+                    if (document.getElementById("td_" + p) != null) {
+                        document.getElementById("td_" + p).innerText = ps[p]
                     }
                 }
             },
@@ -213,7 +214,7 @@
                 var points = JSON.parse(msg)
                 var tr;
                 var td;
-                var i=0;
+                var i = 0;
                 for (var p in points) {
                     if (i % 4 == 0) {
                         tr = wTable.appendChild(document.createElement("tr"))
@@ -221,12 +222,12 @@
                     td = document.createElement("td");
                     td.id = td.id = "tdp_" + p
                     td.innerHTML = p;
-                    td.ondblclick=dbChickOnPoint
+                    td.ondblclick = dbChickOnPoint
                     tr.appendChild(td);
                     td = document.createElement("td");
                     td.id = "td_" + p
-                    td.title=points[p]
-                    td.ondblclick=dbChickOnValue
+                    td.title = points[p]
+                    td.ondblclick = dbChickOnValue
                     tr.appendChild(td);
                     i++;
                 }
@@ -242,16 +243,16 @@
     setInterval(getValues, 10);
 
     function savePoint() {
-        var  pointE=document.getElementsByClassName("open-point")[0];
-        var  valueE=document.getElementsByClassName("open-value")[0];
-        if(pointE==null ){
+        var pointE = document.getElementsByClassName("open-point")[0];
+        var valueE = document.getElementsByClassName("open-value")[0];
+        if (pointE == null) {
             return;
         }
         if (checkPoint() != null) {
             if (checkValue() == 1) {
                 ajax({
                     type: "GET",
-                    url: "/addConstantPoint?point=" + checkPoint() + "&value=" +escape(valueE.value).replace(/\+/g,'%2B'),
+                    url: "/addConstantPoint?point=" + checkPoint() + "&value=" + escape(valueE.value).replace(/\+/g, '%2B'),
                     success: function (msg) {
                         location.reload();
                     },
@@ -259,10 +260,10 @@
                         console.log("error")
                     }
                 })
-            }else{
+            } else {
                 ajax({
                     type: "GET",
-                    url: "/addCalculatorPoint?point=" + checkPoint() + "&value=" + escape(valueE.value).replace(/\+/g,'%2B'),
+                    url: "/addCalculatorPoint?point=" + checkPoint() + "&value=" + escape(valueE.value).replace(/\+/g, '%2B'),
                     success: function (msg) {
                         location.reload();
                     },
@@ -271,17 +272,17 @@
                     }
                 })
             }
-        }else{
-            if(pointE.id==null ||pointE.id==""){
-                var grand=pointE.parentNode.parentNode
+        } else {
+            if (pointE.id == null || pointE.id == "") {
+                var grand = pointE.parentNode.parentNode
                 grand.removeChild(pointE.parentNode)
                 grand.removeChild(valueE.parentNode)
                 isInput = false;
                 return;
-            }else{
+            } else {
                 ajax({
                     type: "GET",
-                    url: "/deletePoint?point=" + pointE.id.substr(6,pointE.id.length-6) ,
+                    url: "/deletePoint?point=" + pointE.id.substr(6, pointE.id.length - 6),
                     success: function (msg) {
                         location.reload();
                     },
@@ -292,32 +293,89 @@
             }
         }
     }
-    function dbChickOnPoint(){
-        modifyPoint(this.id.substr(4,this.id.length-4))
+
+    function dbChickOnPoint() {
+        modifyPoint(this.id.substr(4, this.id.length - 4))
     }
-    function dbChickOnValue(){
-        modifyPoint(this.id.substr(3,this.id.length-3))
+
+    function dbChickOnValue() {
+        modifyPoint(this.id.substr(3, this.id.length - 3))
     }
-    function  modifyPoint(point){
-        if(!isInput){
-            var fe =document.getElementById("tdp_"+point);
-            var ch=getInputPointEle();
-            fe.innerText=""
+
+    function modifyPoint(point) {
+        if (!isInput) {
+            var fe = document.getElementById("tdp_" + point);
+            var ch = getInputPointEle();
+            fe.innerText = ""
             fe.appendChild(ch);
-            ch.value=point
-            ch.id="input_"+point;
-            fe =document.getElementById("td_"+point);
-            ch=getInputValueEle();
-            ch.value=fe.title;
-            fe.innerText=""
-            fe.id=""
+            ch.value = point
+            ch.id = "input_" + point;
+            fe = document.getElementById("td_" + point);
+            ch = getInputValueEle();
+            ch.value = fe.title;
+            fe.innerText = ""
+            fe.id = ""
             fe.appendChild(ch);
-            isInput=true;
+            isInput = true;
         }
     }
 
     document.getElementById("addBut").addEventListener("click", addPoint);
     document.getElementById("save").addEventListener("click", savePoint);
 
+    function downloadFile(fileName, context) {
+        var link = document.createElement('a');
+        link.download = fileName;
+        link.style.display = 'none';
+        link.href = URL.createObjectURL(new Blob([context]));
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+    }
+
+    function exportConfig() {
+        ajax({
+            type: "GET",
+            url: "/getAllPoints",
+            success: function (msg) {
+                downloadFile("104slaver.conf", msg)
+            },
+            error: function () {
+                alert("获取配置失败")
+            }
+        })
+
+
+    }
+
+    function uploadConfig() {
+        var f = document.getElementById("configFileInput");
+        var file = f.files[0]
+        if (file != null && file.size < 1024 * 1024) {
+            var fileReader = new FileReader()
+            fileReader.readAsText(file)
+            fileReader.onload = function () {
+                try {
+                    var str = fileReader.result
+                    var re = JSON.parse(str);
+                    ajax({
+                        type: "POST",
+                        url: "/uploadConfig",
+                        data: str,
+                        dataType: 'json',
+                        contentType: 'application/json',
+                        success: function (msg) {
+                            location.reload();
+                        },
+                        error: function () {
+                            alert("获取配置失败")
+                        }
+                    })
+                } catch (e) {
+                    alert(e)
+                }
+            }
+        }
+    }
 
 </script>