Change naming and veriy test-scheduler function
[bottlenecks.git] / test-scheduler / ui / src / components / editor / step.vue
-<template>\r
-<!-- step -->\r
-<div class="row">\r
-    <div class="col-md-6 col-sm-12">\r
-        <div class="ibox float-e-margins">\r
-            <div class="ibox-title">\r
-                <h5 class="text-success">Step</h5>\r
-                <div class="ibox-tools" style="height: 25px;">\r
-                    <button class="btn btn-success " type="button" id="new-step">&nbsp;&nbsp;<span class="bold">New Step</span></button>\r
-                        <a class="collapse-link" >\r
-                            <i class="fa fa-chevron-up" v-on:click.stop='collapseBox'></i>\r
-                        </a>\r
-                </div>\r
-            </div>\r
-            <div class="ibox-content" style="border: 1px solid #cec8c8">\r
-                <form class="form-horizontal">\r
-                    <div class="row">\r
-                        <div class="form-group">\r
-                            <label class="col-md-2 control-label">Name:</label>\r
-                            <div class="col-md-5"><input type="text" class="form-control" id="name"></div>\r
-                        </div>\r
-                        <div class="form-group">\r
-                            <label class="col-md-2 control-label">Service:</label>\r
-                            <div class="col-md-4">\r
-                                <select class="form-control" id="service">\r
-                                    <option></option>\r
-                                    <option v-for='service in dataService' v-bind:value='service'>{{service}}</option>\r
-                                </select>\r
-                            </div>\r
-                        </div>\r
-                        <div class="form-group">\r
-                            <label class="col-md-2 control-label">Action:</label>\r
-                            <div class="col-md-4">\r
-                                <select class="form-control" id="action">\r
-                                    <option></option>\r
-                                    <option v-for='action in dataAction' v-bind:value='action.name'>{{action.name}}</option>\r
-                                </select>\r
-                            </div>\r
-                        </div>\r
-                    </div>\r
-                    <div class="row" id="parameter">\r
-                        <div class="form-group" v-for='(param, index) in dataParam'>\r
-                            <label class="col-md-2 control-label" v-bind:title="param.description">{{ param.name }}\r
-                            </label>\r
-                            <div class="col-md-5">\r
-                                <input type="text" class="form-control"  v-bind:placeholder="param.description" v-bind:id="'par'+index">\r
-                            </div>\r
-                        </div>\r
-                    </div>\r
-                </form>\r
-            </div>\r
-        </div>\r
-    </div>\r
-    <div class="col-md-6 col-sm-12">\r
-        <div class="ibox float-e-margins">\r
-            <div class="ibox-title">\r
-                <h5 class="text-success">StepList</h5>\r
-                <div class="ibox-tools">\r
-                        <a class="collapse-link">\r
-                            <i class="fa fa-chevron-up" v-on:click.stop='collapseBox'></i>\r
-                        </a>\r
-                </div>\r
-            </div>\r
-            <div class="ibox-content" id="step-list" style="border: 1px solid #cec8c8">\r
-                <div v-for='(step, index) in stepList' class='ibox'>\r
-                    <div class="ibox-title step">\r
-                        <h5>Step{{index + 1}} &nbsp;&nbsp; {{step.name}} </h5>\r
-                        <div class="ibox-tools">\r
-                            <a class="collapse-link">\r
-                                <i class="fa fa-chevron-up" v-on:click.stop='collapseBox'></i>\r
-                            </a>\r
-                            <a class="close-link" v-on:click='removeStep(index)'>\r
-                                <i class="fa fa-times"></i>\r
-                            </a>\r
-                        </div>\r
-                    </div>\r
-                    <div class="ibox-content">\r
-                        <div class="row">\r
-                            <label class="control-label"><span style='padding-right: 20px;'>Service:</span> {{ step.service }}</label>\r
-                        </div>\r
-                        <div class="row">\r
-                          <label class="control-label"><span style='padding-right: 20px;'>Action:</span> {{ step.action }}</label>\r
-                        </div>\r
-                           <div class="param row">\r
-                          <label class="control-label">\r
-                              <span style='padding-right: 20px;'>Parameter:</span>\r
-                              <span v-for='param in step.params'>{{param.key}} = {{param.value}} ;&nbsp;&nbsp;&nbsp;</span>\r
-                          </label>\r
-                        </div>\r
-                       </div>\r
-                </div>\r
-            </div>\r
-        </div>\r
-    </div>\r
-</div>\r
-</template>\r
-<script>\r
-export default {\r
-    name: 'step',\r
-    props: ['stepList'],\r
-    data: function() {\r
-        return {\r
-            dataService: [],\r
-            dataAction: [],\r
-            dataParam: []\r
-        }\r
-    },\r
-    mounted: function() {\r
-        this.getServiceList();\r
-        var self = this;\r
-        $("#service").change(function(){\r
-            self.selectService();\r
-        });\r
-        $("#action").change(function(){\r
-            self.selectAction();\r
-        });\r
-        $('#new-step').click(function(){\r
-            self.newStep();\r
-        });\r
-    },\r
-    methods: {\r
-        getServiceList: function(){\r
-            console.log("get serviceList!");\r
-            var self = this;\r
-            $.ajax({\r
-                url: this.global.SERVER_ADDR + "service/list",\r
-                method: "GET",\r
-                async:false,\r
-                success: function(data){\r
-                    console.log("ajax success!");\r
-                    if(data['code'] == 200){\r
-                        self.dataService = [];\r
-                        self.dataService = data['result'];\r
-                    }\r
-                }\r
-            });\r
-        },\r
-        getServiceContent: function(name){\r
-            var self = this;\r
-            $.ajax({\r
-                url: this.global.SERVER_ADDR + "service/content",\r
-                method: "GET",\r
-                async:false,\r
-                data: {\r
-                    "serviceName": name\r
-                },\r
-                success: function(data){\r
-                    if(data['code'] == 200){\r
-                        self.dataAction = [];\r
-                        self.dataAction = data['result']['actions'];\r
-                    }\r
-                }\r
-            });\r
-        },\r
-        getParams: function(name){\r
-            for(var i in this.dataAction){\r
-                if(this.dataAction[i].name == name){\r
-                    this.dataParam = [];\r
-                    this.dataParam = this.dataAction[i].params;\r
-                    break;\r
-                }\r
-            }\r
-        },\r
-        selectService: function(event){\r
-            var selectedName = $("#service").val();\r
-            this.getServiceContent(selectedName);\r
-        },\r
-        selectAction: function(event){\r
-            var selectedName = $("#action").val();\r
-            if(selectedName=="") {\r
-                this.dataParam = [];\r
-                return;\r
-            }\r
-            this.getParams(selectedName);\r
-            if(this.dataParam==undefined) this.dataParam = [];\r
-        },\r
-        newStep: function(){\r
-            var ser = $("#service").val();\r
-            var act = $("#action").val();\r
-            var na = $("#name").val();\r
-            if(ser==""||act==""||na==""){\r
-                alert('Not completed!');\r
-                return;\r
-            }\r
-            var parCount = this.dataParam.length;\r
-            var par = [];\r
-            for(var i=0; i<parCount; ++i){\r
-                var temp = $('#par'+i).val();\r
-                if(temp==""){\r
-                    alert('Not completed!');\r
-                    return;\r
-                }\r
-                var name = this.dataParam[i].name;\r
-                par.push({key: name, value: temp});\r
-            }\r
-            this.stepList.push({name: na, service: ser, action: act, params: par});\r
-            $("#name").val("");\r
-            $("#service").val("");\r
-            this.dataAction = [];\r
-            this.dataParam = [];\r
-        },\r
-        removeStep: function(index) {\r
-            this.stepList.splice(index, 1);\r
-        },\r
-        collapseBox: function(event) {\r
-            console.log("collapse");\r
-            var ele = event.target;\r
-            console.log(event);\r
-            console.log(ele);\r
-            var ibox = $(ele).closest('div.ibox');\r
-            var content = ibox.children('.ibox-content');\r
-            content.slideToggle(200);\r
-            $(ele).toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');\r
-        }\r
-    },\r
-    watch: {\r
-        stepList: function() {\r
-            this.$emit('stepList', this.stepList);\r
-        }\r
-    }\r
-}\r
-</script>
\ No newline at end of file
+<template>
+<!-- step -->
+<div class="row">
+    <div class="col-md-6 col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5 class="text-success">Step</h5>
+                <div class="ibox-tools" style="height: 25px;">
+                    <button class="btn btn-success " type="button" id="new-step">&nbsp;&nbsp;<span class="bold">New Step</span></button>
+                        <a class="collapse-link" >
+                            <i class="fa fa-chevron-up" v-on:click.stop='collapseBox'></i>
+                        </a>
+                </div>
+            </div>
+            <div class="ibox-content" style="border: 1px solid #cec8c8">
+                <form class="form-horizontal">
+                    <div class="row">
+                        <div class="form-group">
+                            <label class="col-md-2 control-label">Name:</label>
+                            <div class="col-md-5"><input type="text" class="form-control" id="name"></div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-md-2 control-label">Service:</label>
+                            <div class="col-md-4">
+                                <select class="form-control" id="service">
+                                    <option></option>
+                                    <option v-for='service in dataService' v-bind:value='service'>{{service}}</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-md-2 control-label">Action:</label>
+                            <div class="col-md-4">
+                                <select class="form-control" id="action">
+                                    <option></option>
+                                    <option v-for='action in dataAction' v-bind:value='action.name'>{{action.name}}</option>
+                                </select>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="row" id="parameter">
+                        <div class="form-group" v-for='(param, index) in dataParam'>
+                            <label class="col-md-2 control-label" v-bind:title="param.description">{{ param.name }}
+                            </label>
+                            <div class="col-md-5">
+                                <input type="text" class="form-control"  v-bind:placeholder="param.description" v-bind:id="'par'+index">
+                            </div>
+                        </div>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+    <div class="col-md-6 col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5 class="text-success">StepList</h5>
+                <div class="ibox-tools">
+                        <a class="collapse-link">
+                            <i class="fa fa-chevron-up" v-on:click.stop='collapseBox'></i>
+                        </a>
+                </div>
+            </div>
+            <div class="ibox-content" id="step-list" style="border: 1px solid #cec8c8">
+                <div v-for='(step, index) in stepList' class='ibox'>
+                    <div class="ibox-title step">
+                        <h5>Step{{index + 1}} &nbsp;&nbsp; {{step.name}} </h5>
+                        <div class="ibox-tools">
+                            <a class="collapse-link">
+                                <i class="fa fa-chevron-up" v-on:click.stop='collapseBox'></i>
+                            </a>
+                            <a class="close-link" v-on:click='removeStep(index)'>
+                                <i class="fa fa-times"></i>
+                            </a>
+                        </div>
+                    </div>
+                    <div class="ibox-content">
+                        <div class="row">
+                            <label class="control-label"><span style='padding-right: 20px;'>Service:</span> {{ step.service }}</label>
+                        </div>
+                        <div class="row">
+                          <label class="control-label"><span style='padding-right: 20px;'>Action:</span> {{ step.action }}</label>
+                        </div>
+                           <div class="param row">
+                          <label class="control-label">
+                              <span style='padding-right: 20px;'>Parameter:</span>
+                              <span v-for='param in step.params'>{{param.key}} = {{param.value}} ;&nbsp;&nbsp;&nbsp;</span>
+                          </label>
+                        </div>
+                       </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</template>
+<script>
+export default {
+    name: 'step',
+    props: ['stepList'],
+    data: function() {
+        return {
+            dataService: [],
+            dataAction: [],
+            dataParam: []
+        }
+    },
+    mounted: function() {
+        this.getServiceList();
+        var self = this;
+        $("#service").change(function(){
+            self.selectService();
+        });
+        $("#action").change(function(){
+            self.selectAction();
+        });
+        $('#new-step').click(function(){
+            self.newStep();
+        });
+    },
+    methods: {
+        getServiceList: function(){
+            console.log("get serviceList!");
+            var self = this;
+            $.ajax({
+                url: this.global.SERVER_ADDR + "service/list",
+                method: "GET",
+                async:false,
+                success: function(data){
+                    console.log("ajax success!");
+                    if(data['code'] == 200){
+                        self.dataService = [];
+                        self.dataService = data['result'];
+                    }
+                }
+            });
+        },
+        getServiceContent: function(name){
+            var self = this;
+            $.ajax({
+                url: this.global.SERVER_ADDR + "service/content",
+                method: "GET",
+                async:false,
+                data: {
+                    "serviceName": name
+                },
+                success: function(data){
+                    if(data['code'] == 200){
+                        self.dataAction = [];
+                        self.dataAction = data['result']['actions'];
+                    }
+                }
+            });
+        },
+        getParams: function(name){
+            for(var i in this.dataAction){
+                if(this.dataAction[i].name == name){
+                    this.dataParam = [];
+                    this.dataParam = this.dataAction[i].params;
+                    break;
+                }
+            }
+        },
+        selectService: function(event){
+            var selectedName = $("#service").val();
+            this.getServiceContent(selectedName);
+        },
+        selectAction: function(event){
+            var selectedName = $("#action").val();
+            if(selectedName=="") {
+                this.dataParam = [];
+                return;
+            }
+            this.getParams(selectedName);
+            if(this.dataParam==undefined) this.dataParam = [];
+        },
+        newStep: function(){
+            var ser = $("#service").val();
+            var act = $("#action").val();
+            var na = $("#name").val();
+            if(ser==""||act==""||na==""){
+                alert('Not completed!');
+                return;
+            }
+            var parCount = this.dataParam.length;
+            var par = [];
+            for(var i=0; i<parCount; ++i){
+                var temp = $('#par'+i).val();
+                if(temp==""){
+                    alert('Not completed!');
+                    return;
+                }
+                var name = this.dataParam[i].name;
+                par.push({key: name, value: temp});
+            }
+            this.stepList.push({name: na, service: ser, action: act, params: par});
+            $("#name").val("");
+            $("#service").val("");
+            this.dataAction = [];
+            this.dataParam = [];
+        },
+        removeStep: function(index) {
+            this.stepList.splice(index, 1);
+        },
+        collapseBox: function(event) {
+            console.log("collapse");
+            var ele = event.target;
+            console.log(event);
+            console.log(ele);
+            var ibox = $(ele).closest('div.ibox');
+            var content = ibox.children('.ibox-content');
+            content.slideToggle(200);
+            $(ele).toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');
+        }
+    },
+    watch: {
+        stepList: function() {
+            this.$emit('stepList', this.stepList);
+        }
+    }
+}
+</script>