Change naming and veriy test-scheduler function
[bottlenecks.git] / test-scheduler / ui / src / components / testcase_content.vue
-<template>\r
-  <div class="wrapper wrapper-content animated fadeIn">\r
-    <div class="row" style="margin-bottom: 20px;">\r
-      <div class="col-md-8">\r
-        <ol class="breadcrumb" style="padding-left: 20px; font-size: 17px;">\r
-          <li>\r
-            <router-link to="/" >root</router-link>\r
-          </li>\r
-          <li>\r
-            <router-link :to="{ path: '/testcase', query: { name: suitename }}" >{{this.$route.query.suiteName}}</router-link>\r
-          </li>\r
-          <li>\r
-            <router-link :to="{ path: '/content', query: { suiteName: suitename, caseName: casename } }"><b>{{this.$route.query.caseName}}</b></router-link>\r
-          </li>\r
-        </ol>\r
-      </div>\r
-    </div>\r
-    <div id="page-content" class="row">\r
-      <div class="col-lg-12">\r
-        <div class="ibox">\r
-            <div class="ibox-title">\r
-                <h5 style="font-size:26px;margin-top: -3px;">Test Case Content</h5>\r
-                <div v-show="contentLoading || contentSaving" class="sk-spinner sk-spinner-circle" style="float: left;margin-left: 10px;">\r
-                    <div class="sk-circle1 sk-circle"></div>\r
-                    <div class="sk-circle2 sk-circle"></div>\r
-                    <div class="sk-circle3 sk-circle"></div>\r
-                    <div class="sk-circle4 sk-circle"></div>\r
-                    <div class="sk-circle5 sk-circle"></div>\r
-                    <div class="sk-circle6 sk-circle"></div>\r
-                    <div class="sk-circle7 sk-circle"></div>\r
-                    <div class="sk-circle8 sk-circle"></div>\r
-                    <div class="sk-circle9 sk-circle"></div>\r
-                    <div class="sk-circle10 sk-circle"></div>\r
-                    <div class="sk-circle11 sk-circle"></div>\r
-                    <div class="sk-circle12 sk-circle"></div>\r
-                </div>\r
-                <div class="ibox-tools">\r
-                    <button class="btn btn-info btn-sm my-button-sm" type="button" v-on:click="runTestcase()">Run</button>\r
-                    <button class="btn btn-success btn-sm my-button-sm" type="button" v-on:click="setEditable()">Edit</button>\r
-                    <button v-show="isEditable" class="btn btn-warning btn-sm my-button-sm" v-on:click="saveTestcase()" type="button">Save</button>\r
-                    <button v-show="isEditable" class="btn btn-danger btn-sm my-button-sm" v-on:click="cancelEdit()" type="button">Cancel</button>\r
-                    <a class="collapse-link">\r
-                        <i class="fa fa-chevron-up"></i>\r
-                    </a>\r
-                    <a class="fullscreen-link">\r
-                        <i class="fa fa-expand"></i>\r
-                    </a>\r
-                </div>\r
-            </div>\r
-            <div class="ibox-content" style="max-height: 600px; overflow-y: auto; padding: 0; border: 1px solid #e7e7e7;">\r
-                <div style='text-align:center;'>\r
-                  <textarea v-show='!isEditable' v-model="content" id="tc_content" style="white-space:nowrap; overflow:scroll;max-width:2400px; width: 100%;height: 100%;min-height: 500px;font-size:16px;border:none; vertical-align: middle; padding: 30px 0 20px 40px;">\r
-                  </textarea>\r
-                </div><editor v-show='isEditable' v-bind:saveSignal='saveSignal' v-bind = 'editorContent' v-on:saveResponse='processSaveResponse'></editor>\r
-            </div>\r
-        </div>\r
-      </div>\r
-    </div>\r
-    <hr />\r
-    <div class="row">\r
-      <div class="col-lg-12">\r
-          <div class="ibox">\r
-              <div class="ibox-title">\r
-                  <h5 style="font-size:26px;margin-top: -3px;">Workflow</h5>\r
-                  <div class="ibox-tools">\r
-                      <a class="collapse-link">\r
-                          <i class="fa fa-chevron-up"></i>\r
-                      </a>\r
-                      <a class="fullscreen-link">\r
-                          <i class="fa fa-expand"></i>\r
-                      </a>\r
-                  </div>\r
-              </div>\r
-              <div class="ibox-content" style="padding-top: 60px;">\r
-                  <wfresult v-bind:workflowId="workflowId" v-bind:wfloading='wfloading' v-bind:wfJson='wfJson'></wfresult>\r
-              </div>\r
-          </div>\r
-      </div>\r
-    </div>\r
-  </div>\r
-</template>\r
-<script>\r
-import editor from './editor/editor.vue'\r
-import wfresult from './workflow_graph/wfresult.vue'\r
-import showMessage from './message/showMessage.js'\r
-export default {\r
-    name: 'testcase_content',\r
-    data () {\r
-      return {\r
-          content: '',\r
-          editorContent: {'stepList': [], 'mainOrdersList': [], 'subflowList': []},\r
-          bakContent: '',\r
-          isEditable: false,\r
-          contentLoading: false,\r
-          contentSaving: false,\r
-          suitename:this.$route.query.suiteName,\r
-          casename:this.$route.query.caseName,\r
-          workflowId: '',\r
-          wfloading: false,\r
-          wfJson: '',\r
-          saveSignal: false\r
-      }\r
-    },\r
-    created: function() {\r
-        this.getTestcase();\r
-    },\r
-    methods: {\r
-      setEditable: function(){\r
-          this.isEditable = true;\r
-          this.bakContent = this.content;\r
-      },\r
-      cancelEdit: function(){\r
-          this.content = this.bakContent;\r
-          this.isEditable = false;\r
-      },\r
-      saveTestcase: function(){\r
-          console.log("save");\r
-          this.saveSignal = true;\r
-          this.contentSaving = true;\r
-      },\r
-      runTestcase: function(){\r
-        var self = this;\r
-        var msgTitle = "RUN -- TESTCASE";\r
-        $.ajax({\r
-            url: this.global.SERVER_ADDR + "execute/testcase",\r
-            method: "POST",\r
-            data: {\r
-                "suiteName": this.$route.query.suiteName,\r
-                "caseName": this.$route.query.caseName\r
-            },\r
-            beforeSend: function(XHR) {\r
-                self.wfloading = true;\r
-                showMessage("info", msgTitle, "start to run <strong>" + self.$route.query.caseName + "</strong>");\r
-            },\r
-            success: function(data) {\r
-                if(data['code'] == 200) {\r
-                    self.workflowId = data['result']['workflowId'];\r
-                    showMessage(data['code'], msgTitle, "<strong>" + self.$route.query.caseName + "</strong> finished!");\r
-                    $.ajax({\r
-                        url: self.global.SERVER_ADDR + "story-content",\r
-                        method: "GET",\r
-                        data: {\r
-                            "service":  self.$route.query.suiteName,\r
-                            "story": self.$route.query.caseName\r
-                        },\r
-                        success: function(data) {\r
-                            if(data['code'] == 200) {\r
-                                self.wfJson = data['result']['content'];\r
-                            } else {\r
-                              showMessage(data['code'], msgTitle, "workflow.json get failed!");\r
-                            }\r
-                        },\r
-                        error: function(obj, status, msg) {\r
-                          showMessage(status, msgTitle, msg);\r
-                        }\r
-                    });\r
-                } else {\r
-                  self.wfloading = false;\r
-                  showMessage(data['code'], msgTitle, "Failed to run <strong>" + self.$route.query.caseName + "</strong>", data['error']);\r
-                }\r
-            },\r
-            error: function(obj, status, msg) {\r
-                self.wfloading = false;\r
-                showMessage(status, msgTitle, "Failed to run <strong>" + self.$route.query.caseName + "</strong>", msg);\r
-            }\r
-        });\r
-      },\r
-      getTestcase: function(){\r
-          var self = this;\r
-          var msgTitle = "GET -- TESTCASE";\r
-          $.ajax({\r
-            url: this.global.SERVER_ADDR + "testcase/content",\r
-            method:"GET",\r
-            data:{\r
-              suiteName:  this.$route.query.suiteName,\r
-              caseName: this.$route.query.caseName\r
-            },\r
-            beforeSend: function(XHR) {\r
-                self.contentLoading = true;\r
-            },\r
-            success:function (data) {\r
-              if(data['code'] == 200) {\r
-                self.content = data['result']['content'];\r
-                self.contentLoading = false;\r
-                self.editorContent = data['result']['editorContent'];\r
-              }\r
-              else {\r
-                showMessage("error", msgTitle, "fail to load testcase content!", data['error']);\r
-                self.contentLoading = false;\r
-              }\r
-            },\r
-            error: function (obj, status, msg) {\r
-              showMessage(status, msgTitle, "fail to load testcase content!", msg);\r
-              self.contentLoading = false;\r
-            }\r
-          });\r
-      },\r
-      async processSaveResponse(result) {\r
-          if(result == true) {\r
-            this.saveSignal = false;\r
-            this.isEditable = false;\r
-            this.contentSaving = false;\r
-            this.getTestcase();\r
-          } else {\r
-            this.saveSignal = false;\r
-            this.contentSaving = false;\r
-          }\r
-      }\r
-    },\r
-    components: {\r
-      editor,\r
-      wfresult\r
-    }\r
-}\r
-</script>
\ No newline at end of file
+<template>
+  <div class="wrapper wrapper-content animated fadeIn">
+    <div class="row" style="margin-bottom: 20px;">
+      <div class="col-md-8">
+        <ol class="breadcrumb" style="padding-left: 20px; font-size: 17px;">
+          <li>
+            <router-link to="/" >root</router-link>
+          </li>
+          <li>
+            <router-link :to="{ path: '/testcase', query: { name: suitename }}" >{{this.$route.query.suiteName}}</router-link>
+          </li>
+          <li>
+            <router-link :to="{ path: '/content', query: { suiteName: suitename, caseName: casename } }"><b>{{this.$route.query.caseName}}</b></router-link>
+          </li>
+        </ol>
+      </div>
+    </div>
+    <div id="page-content" class="row">
+      <div class="col-lg-12">
+        <div class="ibox">
+            <div class="ibox-title">
+                <h5 style="font-size:26px;margin-top: -3px;">Test Case Content</h5>
+                <div v-show="contentLoading || contentSaving" class="sk-spinner sk-spinner-circle" style="float: left;margin-left: 10px;">
+                    <div class="sk-circle1 sk-circle"></div>
+                    <div class="sk-circle2 sk-circle"></div>
+                    <div class="sk-circle3 sk-circle"></div>
+                    <div class="sk-circle4 sk-circle"></div>
+                    <div class="sk-circle5 sk-circle"></div>
+                    <div class="sk-circle6 sk-circle"></div>
+                    <div class="sk-circle7 sk-circle"></div>
+                    <div class="sk-circle8 sk-circle"></div>
+                    <div class="sk-circle9 sk-circle"></div>
+                    <div class="sk-circle10 sk-circle"></div>
+                    <div class="sk-circle11 sk-circle"></div>
+                    <div class="sk-circle12 sk-circle"></div>
+                </div>
+                <div class="ibox-tools">
+                    <button class="btn btn-info btn-sm my-button-sm" type="button" v-on:click="runTestcase()">Run</button>
+                    <button class="btn btn-success btn-sm my-button-sm" type="button" v-on:click="setEditable()">Edit</button>
+                    <button v-show="isEditable" class="btn btn-warning btn-sm my-button-sm" v-on:click="saveTestcase()" type="button">Save</button>
+                    <button v-show="isEditable" class="btn btn-danger btn-sm my-button-sm" v-on:click="cancelEdit()" type="button">Cancel</button>
+                    <a class="collapse-link">
+                        <i class="fa fa-chevron-up"></i>
+                    </a>
+                    <a class="fullscreen-link">
+                        <i class="fa fa-expand"></i>
+                    </a>
+                </div>
+            </div>
+            <div class="ibox-content" style="max-height: 600px; overflow-y: auto; padding: 0; border: 1px solid #e7e7e7;">
+                <div style='text-align:center;'>
+                  <textarea v-show='!isEditable' v-model="content" id="tc_content" style="white-space:nowrap; overflow:scroll;max-width:2400px; width: 100%;height: 100%;min-height: 500px;font-size:16px;border:none; vertical-align: middle; padding: 30px 0 20px 40px;">
+                  </textarea>
+                </div><editor v-show='isEditable' v-bind:saveSignal='saveSignal' v-bind = 'editorContent' v-on:saveResponse='processSaveResponse'></editor>
+            </div>
+        </div>
+      </div>
+    </div>
+    <hr />
+    <div class="row">
+      <div class="col-lg-12">
+          <div class="ibox">
+              <div class="ibox-title">
+                  <h5 style="font-size:26px;margin-top: -3px;">Workflow</h5>
+                  <div class="ibox-tools">
+                      <a class="collapse-link">
+                          <i class="fa fa-chevron-up"></i>
+                      </a>
+                      <a class="fullscreen-link">
+                          <i class="fa fa-expand"></i>
+                      </a>
+                  </div>
+              </div>
+              <div class="ibox-content" style="padding-top: 60px;">
+                  <wfresult v-bind:workflowId="workflowId" v-bind:wfloading='wfloading' v-bind:wfJson='wfJson'></wfresult>
+              </div>
+          </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import editor from './editor/editor.vue'
+import wfresult from './workflow_graph/wfresult.vue'
+import showMessage from './message/showMessage.js'
+export default {
+    name: 'testcase_content',
+    data () {
+      return {
+          content: '',
+          editorContent: {'stepList': [], 'mainOrdersList': [], 'subflowList': []},
+          bakContent: '',
+          isEditable: false,
+          contentLoading: false,
+          contentSaving: false,
+          suitename:this.$route.query.suiteName,
+          casename:this.$route.query.caseName,
+          workflowId: '',
+          wfloading: false,
+          wfJson: '',
+          saveSignal: false
+      }
+    },
+    created: function() {
+        this.getTestcase();
+    },
+    methods: {
+      setEditable: function(){
+          this.isEditable = true;
+          this.bakContent = this.content;
+      },
+      cancelEdit: function(){
+          this.content = this.bakContent;
+          this.isEditable = false;
+      },
+      saveTestcase: function(){
+          console.log("save");
+          this.saveSignal = true;
+          this.contentSaving = true;
+      },
+      runTestcase: function(){
+        var self = this;
+        var msgTitle = "RUN -- TESTCASE";
+        $.ajax({
+            url: this.global.SERVER_ADDR + "execute/testcase",
+            method: "POST",
+            data: {
+                "suiteName": this.$route.query.suiteName,
+                "caseName": this.$route.query.caseName
+            },
+            beforeSend: function(XHR) {
+                self.wfloading = true;
+                showMessage("info", msgTitle, "start to run <strong>" + self.$route.query.caseName + "</strong>");
+            },
+            success: function(data) {
+                if(data['code'] == 200) {
+                    self.workflowId = data['result']['workflowId'];
+                    showMessage(data['code'], msgTitle, "<strong>" + self.$route.query.caseName + "</strong> finished!");
+                    $.ajax({
+                        url: self.global.SERVER_ADDR + "story-content",
+                        method: "GET",
+                        data: {
+                            "service":  self.$route.query.suiteName,
+                            "story": self.$route.query.caseName
+                        },
+                        success: function(data) {
+                            if(data['code'] == 200) {
+                                self.wfJson = data['result']['content'];
+                            } else {
+                              showMessage(data['code'], msgTitle, "workflow.json get failed!");
+                            }
+                        },
+                        error: function(obj, status, msg) {
+                          showMessage(status, msgTitle, msg);
+                        }
+                    });
+                } else {
+                  self.wfloading = false;
+                  showMessage(data['code'], msgTitle, "Failed to run <strong>" + self.$route.query.caseName + "</strong>", data['error']);
+                }
+            },
+            error: function(obj, status, msg) {
+                self.wfloading = false;
+                showMessage(status, msgTitle, "Failed to run <strong>" + self.$route.query.caseName + "</strong>", msg);
+            }
+        });
+      },
+      getTestcase: function(){
+          var self = this;
+          var msgTitle = "GET -- TESTCASE";
+          $.ajax({
+            url: this.global.SERVER_ADDR + "testcase/content",
+            method:"GET",
+            data:{
+              suiteName:  this.$route.query.suiteName,
+              caseName: this.$route.query.caseName
+            },
+            beforeSend: function(XHR) {
+                self.contentLoading = true;
+            },
+            success:function (data) {
+              if(data['code'] == 200) {
+                self.content = data['result']['content'];
+                self.contentLoading = false;
+                self.editorContent = data['result']['editorContent'];
+              }
+              else {
+                showMessage("error", msgTitle, "fail to load testcase content!", data['error']);
+                self.contentLoading = false;
+              }
+            },
+            error: function (obj, status, msg) {
+              showMessage(status, msgTitle, "fail to load testcase content!", msg);
+              self.contentLoading = false;
+            }
+          });
+      },
+      async processSaveResponse(result) {
+          if(result == true) {
+            this.saveSignal = false;
+            this.isEditable = false;
+            this.contentSaving = false;
+            this.getTestcase();
+          } else {
+            this.saveSignal = false;
+            this.contentSaving = false;
+          }
+      }
+    },
+    components: {
+      editor,
+      wfresult
+    }
+}
+</script>