--- /dev/null
+<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"> <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}} {{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}} ; </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