Browse Source

webpage includes datatable

Martin Kunz 5 years ago
parent
commit
908060b569

+ 1 - 1
src/main/java/at/acdp/urweb/sclient/LogEntries.java

@@ -23,7 +23,7 @@ public class LogEntries implements IJsonObject {
         jo.add("lastID", lastID);
         JsonArray ja=new JsonArray();
         for(LogHolder h:entries)
-            ja.add(h.toJSON());
+            if(h!=null) ja.add(h.toJSON());
         jo.add("entries", ja);
         return jo;
     }

+ 10 - 10
src/main/java/at/acdp/urweb/sclient/SecondaryClient.java

@@ -69,47 +69,47 @@ public class SecondaryClient {
             case PackageType.ROBOT_MODE_DATA:
                 var md=readRobotModeData(di, size);
                 URLog.add(md);
-                log.info(md.toString());
+                log.debug(md.toString());
                 break;
             case PackageType.JOINT_DATA:
                 var jd=readJointData(di, size);
                 URLog.add(jd);
-                log.info(jd.toString());
+                log.debug(jd.toString());
                 break;
             case PackageType.TOOL_DATA:
                 var td=readToolData(di, size);
                 URLog.add(td);
-                log.info(td.toString());
+                log.debug(td.toString());
                 break;
             case PackageType.MASTERBOARD_DATA:
                 var mb=readMasterBoardData(di, size);
                 URLog.add(mb);
-                log.info(mb.toString());
+                log.debug(mb.toString());
                 break;
             case PackageType.CARTESIAN_INFO:
                 var c=readCartesianInfo(di, size);
                 URLog.add(c);
-                log.info(c.toString());
+                log.debug(c.toString());
                 break;
             case PackageType.KINEMATICS_INFO:
                 var ki=readKinemsticsInfo(di, size);
                 URLog.add(ki);
-                log.info(ki.toString());
+                log.debug(ki.toString());
                 break;
             case PackageType.CONFIGURATION_DATA:
                 var cd=readConfigurationData(di, size);
                 URLog.add(cd);
-                log.info(cd.toString());
+                log.debug(cd.toString());
                 break;
             case PackageType.FORCE_MODE_DATA:
                 var fmd=readForceModeData(di, size);
                 URLog.add(fmd);
-                log.info(fmd.toString());
+                log.debug(fmd.toString());
                 break;
             case PackageType.ADDITIONAL_INFO:
                 var ai=readAdditionalInfo(di, size);
                 URLog.add(ai);
-                log.info(ai.toString());
+                log.debug(ai.toString());
                 break;
             case PackageType.NEEDED_FOR_CALIB_DATA:
                 skip(PackageType.NEEDED_FOR_CALIB_DATA,di, size);
@@ -120,7 +120,7 @@ public class SecondaryClient {
             case PackageType.TOOL_COMM_INFO:
                 var tci=readToolCommInfo(di, size);
                 URLog.add(tci);
-                log.info(tci.toString());
+                log.debug(tci.toString());
                 break;
             default:
                 log.warn("unknown ptype: "+pType+", size: "+size);

+ 16 - 17
src/main/java/at/acdp/urweb/sclient/URLog.java

@@ -4,31 +4,30 @@ import at.acdp.urweb.sclient.data.IJsonObject;
 import at.acdp.urweb.sclient.data.LogHolder;
 
 public class URLog {
-    private final static int LENGTH=100;
-    private static LogHolder[] list=new LogHolder[LENGTH];
-    private static int pos=0;
+    private final static int LENGTH = 100;
+    private static LogHolder[] list = new LogHolder[LENGTH];
+    private static int pos = 0;
 
     public static void add(IJsonObject jo) {
         synchronized (list) {
-            String type=jo.getClass().getSimpleName();
-            list[++pos%LENGTH]=new LogHolder(type, jo);;
+            String type = jo.getClass().getSimpleName();
+            list[++pos % LENGTH] = new LogHolder(type, jo);
         }
     }
 
     public static LogEntries get(int from) {
-        from%=LENGTH;
-        int to=pos%LENGTH;
-        synchronized (list){
-            int length=to-from;
-            if(from > to) {
-                var ret=new LogHolder[LENGTH-from+to];
-                System.arraycopy(list, from, ret,0,LENGTH-from);
-                System.arraycopy(list, 0, ret,LENGTH-from,to);
+        from %= LENGTH;
+        int to = pos % LENGTH;
+        synchronized (list) {
+            int length = to - from;
+            if (from > to) {
+                var ret = new LogHolder[LENGTH - from + to];
+                System.arraycopy(list, from, ret, 0, LENGTH - from);
+                System.arraycopy(list, 0, ret, LENGTH - from, to);
                 return new LogEntries(ret, pos);
-            }
-            else {
-                var ret=new LogHolder[length];
-                System.arraycopy(list, from, ret,0,length);
+            } else {
+                var ret = new LogHolder[length];
+                System.arraycopy(list, from, ret, 0, length);
                 return new LogEntries(ret, pos);
             }
         }

+ 1 - 4
src/main/java/at/acdp/urweb/web/WebServer.java

@@ -1,7 +1,5 @@
 package at.acdp.urweb.web;
 
-import java.nio.file.Paths;
-
 import at.acdp.urweb.Params;
 import at.acdp.urweb.URBot;
 import at.acdp.urweb.sclient.URLog;
@@ -52,8 +50,7 @@ public class WebServer {
             int from=Integer.parseInt(req.params("from"));
             from=Integer.max(0,from);
             var r = URLog.get(from);
-            res.body(String.valueOf(r.toJSON().toString()));
-            return "";
+            return r.toJSON();
         });
     }
 }

+ 10 - 8
src/main/resources/logback.xml

@@ -1,13 +1,15 @@
 <configuration debug="true" >
 
-<appender name="LogbackClassic" class="ch.qos.logback.classic.net.SocketAppender">
-    <RemoteHost>localhost</RemoteHost>
-    <Port>4560</Port>
-    <ReconnectionDelay>170</ReconnectionDelay>
-    <IncludeCallerData>true</IncludeCallerData>
-</appender>
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
+    </appender>
 
-    <root level="INFO">
-        <appender-ref ref="LogbackClassic"/>
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
     </root>
+
 </configuration>

webroot/css/style.css → src/main/resources/webroot/css/style.css


+ 37 - 37
webroot/index.html

@@ -9,26 +9,22 @@
     <script src="js/vue.js"></script>
 </head>
 <body>
-
 <div id="app">
     <textarea v-model="input" cols="80" rows="20"></textarea>
-    <div id='example-3'>
-        <input type="checkbox" id="do1" value="1" v-model="doBits">
-        <input type="checkbox" id="do2" value="2" v-model="doBits">
-        <input type="checkbox" id="do3" value="3" v-model="doBits">
-        <input type="checkbox" id="do4" value="4" v-model="doBits">
-        <input type="checkbox" id="do5" value="5" v-model="doBits">
-        <input type="checkbox" id="do6" value="6" v-model="doBits">
-        <input type="checkbox" id="do7" value="7" v-model="doBits">
-        <input type="checkbox" id="do8" value="8" v-model="doBits">
-        <br>
-    </div>
-
     <button v-on:click="send">send</button>
-
+    <table border="1">
+        <tr v-for="x in cData">
+            <td>{{x.type}}</td>
+            <td>{{x.ts}}</td>
+            <td>
+                <pre>{{JSON.stringify(x.entry, null, 2)}}</pre>
+            </td>
+        </tr>
+    </table>
     <ul id="loglist">
         <li v-for="(item, index) in log.slice().reverse()">
-            {{ ts2txt(item.ts) }} - {{ item.entry.message }} - <pre>{{ JSON.stringify(item.entry) }}</pre>
+            {{ ts2txt(item.ts) }} - {{ item.entry.message }} -
+            <pre>{{ JSON.stringify(item.entry) }}</pre>
         </li>
     </ul>
 </div>
@@ -39,29 +35,30 @@
         data: {
             input: '// rde.writeCmd("set_digital_out(2,True)");\n' +
                 '// rde.writeCmd("movej([-1.95,-1.58,-1.16,-1.15,-1.55,1.25], a=1.0, v=0.1)");\n' +
-                '//rde.writeCmd("freedrive_mode()");\n'+
+                '//rde.writeCmd("freedrive_mode()");\n' +
                 'def asdf():\n' +
                 ' set_digital_out(3, True) \n' +
                 ' set_digital_out(4, True) \n' +
                 'end',
             log: [],
             lastID: -1,
-            doBits: []
+            doBits: [],
+            cData: {}
         },
-        created: function() {
+        created: function () {
             setInterval(this.update, 200);
         },
         watch: {
             doBits: (newValue, oldValue) => {
                 let diff1 = newValue.filter(x => !oldValue.includes(x));
                 let diff2 = oldValue.filter(x => !newValue.includes(x));
-                for(const x of diff1) {
+                for (const x of diff1) {
                     fetch('/digital/' + x, {method: "POST", body: 'True'})
                         .then(function (response) {
                             return response;
                         });
                 }
-                for(const x of diff2) {
+                for (const x of diff2) {
                     fetch('/digital/' + x, {method: "POST", body: 'False'})
                         .then(function (response) {
                             return response;
@@ -72,22 +69,23 @@
         methods: {
             send: function (event) {
                 fetch('/cmd', {method: "POST", body: this.input})
-                    .then(function(response) {
+                    .then(function (response) {
                         return response;
                     });
             },
             ts2txt: function (ts) {
                 return moment(ts).format('YYYY-MM-DD hh:mm ss.SSS ')
             },
-            handlePackage: function(package) {
+            handlePackage: function (package) {
+                Vue.set(this.$data.cData, package.type, package)
                 switch (package.type) {
                     case 'Message':
                         break;
                     case 'MasterBoardData':
-                        let bits=package.entry.digitalOutputBits;
-                        for(let i=0;i<8;i++) {
-                            if(bits& (1<<i)) {
-                                this.doBits.push(''+(i+1));
+                        let bits = package.entry.digitalOutputBits;
+                        for (let i = 0; i < 8; i++) {
+                            if (bits & (1 << i)) {
+                                this.$data.doBits.push('' + (i + 1));
                             }
                         }
                         break;
@@ -105,32 +103,34 @@
                         break;
                     case 'AdditionalInfo':
                         break;
+                    case 'KinematicsInfo':
+                        break;
+                    case 'ConfigurationData':
+                        break;
                     default:
                         console.log('unknown package:' + package.type);
-                    
                 }
-                
             },
             update: function (event) {
-                fetch('/log/'+this.lastID, {method: "GET"})
+                fetch('/log/' + this.lastID, {method: "GET"})
                     .then(handleErrors)
                     .then((response) => {
                         return response.json();
                     })
                     .then((myJson) => {
-                        for(const entry of myJson.entries) {
+                        for (const entry of myJson.entries) {
                             this.handlePackage(entry);
                         }
-                        this.$data.log=this.$data.log.concat(myJson.entries);
-                        this.$data.lastID=myJson.lastID;
-                        let len=this.$data.log.length;
-                        this.$data.log.splice(0, len-200);
+                        this.$data.log = this.$data.log.concat(myJson.entries);
+                        this.$data.lastID = myJson.lastID;
+                        let len = this.$data.log.length;
+                        this.$data.log.splice(0, len - 200);
                     })
                     .catch(error => {
-                        this.$data.lastID=0;
-                        this.$data.log=[];
+                        this.$data.lastID = 0;
+                        this.$data.log = [];
                         console.log(error)
-                    } );
+                    });
             }
         }
     })

webroot/js/moment.js → src/main/resources/webroot/js/moment.js


webroot/js/moment.min.js → src/main/resources/webroot/js/moment.min.js


webroot/js/util.js → src/main/resources/webroot/js/util.js


webroot/js/vue.js → src/main/resources/webroot/js/vue.js


webroot/js/vue.min.js → src/main/resources/webroot/js/vue.min.js