index.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Vue.js markdown editor example</title>
  6. <link rel="stylesheet" href="css/style.css">
  7. <script src="js/util.js"></script>
  8. <script src="js/moment.js"></script>
  9. <script src="js/vue.js"></script>
  10. </head>
  11. <body>
  12. <div id="app">
  13. <textarea v-model="input" cols="80" rows="20"></textarea>
  14. <div id='example-3'>
  15. <input type="checkbox" id="do1" value="1" v-model="doBits">
  16. <input type="checkbox" id="do2" value="2" v-model="doBits">
  17. <input type="checkbox" id="do3" value="3" v-model="doBits">
  18. <input type="checkbox" id="do4" value="4" v-model="doBits">
  19. <input type="checkbox" id="do5" value="5" v-model="doBits">
  20. <input type="checkbox" id="do6" value="6" v-model="doBits">
  21. <input type="checkbox" id="do7" value="7" v-model="doBits">
  22. <input type="checkbox" id="do8" value="8" v-model="doBits">
  23. <br>
  24. </div>
  25. <button v-on:click="send">send</button>
  26. <ul id="loglist">
  27. <li v-for="(item, index) in log.slice().reverse()">
  28. {{ ts2txt(item.ts) }} - {{ item.entry.message }} - <pre>{{ JSON.stringify(item.entry) }}</pre>
  29. </li>
  30. </ul>
  31. </div>
  32. <script type="application/javascript">
  33. new Vue({
  34. el: '#app',
  35. data: {
  36. input: '// rde.writeCmd("set_digital_out(2,True)");\n' +
  37. '// rde.writeCmd("movej([-1.95,-1.58,-1.16,-1.15,-1.55,1.25], a=1.0, v=0.1)");\n' +
  38. '//rde.writeCmd("freedrive_mode()");\n'+
  39. 'def asdf():\n' +
  40. ' set_digital_out(3, True) \n' +
  41. ' set_digital_out(4, True) \n' +
  42. 'end',
  43. log: [],
  44. lastID: -1,
  45. doBits: []
  46. },
  47. created: function() {
  48. setInterval(this.update, 200);
  49. },
  50. watch: {
  51. doBits: (newValue, oldValue) => {
  52. let diff1 = newValue.filter(x => !oldValue.includes(x));
  53. let diff2 = oldValue.filter(x => !newValue.includes(x));
  54. for(const x of diff1) {
  55. fetch('/digital/' + x, {method: "POST", body: 'True'})
  56. .then(function (response) {
  57. return response;
  58. });
  59. }
  60. for(const x of diff2) {
  61. fetch('/digital/' + x, {method: "POST", body: 'False'})
  62. .then(function (response) {
  63. return response;
  64. });
  65. }
  66. }
  67. },
  68. methods: {
  69. send: function (event) {
  70. fetch('/cmd', {method: "POST", body: this.input})
  71. .then(function(response) {
  72. return response;
  73. });
  74. },
  75. ts2txt: function (ts) {
  76. return moment(ts).format('YYYY-MM-DD hh:mm ss.SSS ')
  77. },
  78. handlePackage: function(package) {
  79. switch (package.type) {
  80. case 'Message':
  81. break;
  82. case 'MasterBoardData':
  83. let bits=package.entry.digitalOutputBits;
  84. for(let i=0;i<8;i++) {
  85. if(bits& (1<<i)) {
  86. this.doBits.push(''+(i+1));
  87. }
  88. }
  89. break;
  90. case 'ModeData':
  91. break;
  92. case 'ToolData':
  93. break;
  94. case 'ToolCommInfo':
  95. break;
  96. case 'JointDataList':
  97. break;
  98. case 'CartesianInfo':
  99. break;
  100. case 'ForceModeData':
  101. break;
  102. case 'AdditionalInfo':
  103. break;
  104. default:
  105. console.log('unknown package:' + package.type);
  106. }
  107. },
  108. update: function (event) {
  109. fetch('/log/'+this.lastID, {method: "GET"})
  110. .then(handleErrors)
  111. .then((response) => {
  112. return response.json();
  113. })
  114. .then((myJson) => {
  115. for(const entry of myJson.entries) {
  116. this.handlePackage(entry);
  117. }
  118. this.$data.log=this.$data.log.concat(myJson.entries);
  119. this.$data.lastID=myJson.lastID;
  120. let len=this.$data.log.length;
  121. this.$data.log.splice(0, len-200);
  122. })
  123. .catch(error => {
  124. this.$data.lastID=0;
  125. this.$data.log=[];
  126. console.log(error)
  127. } );
  128. }
  129. }
  130. })
  131. </script>
  132. </body>
  133. </html>