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