add application editor general section with JSON Schema
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9458c739 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9458c739 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9458c739 Branch: refs/heads/master Commit: 9458c739eb5f9fd80733457c92c5898a7b9f22a6 Parents: f3e3225 Author: Dakshika Jayathilaka <[email protected]> Authored: Wed Mar 18 06:52:43 2015 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Fri Apr 17 13:59:55 2015 +0530 ---------------------------------------------------------------------- .../theme0/css/custom/application_editor.css | 4 + .../theme0/js/custom/applications-editor.js | 141 ++++++++++++++++--- .../theme0/partials/applications_editor.hbs | 30 ---- 3 files changed, 123 insertions(+), 52 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/9458c739/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_editor.css ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_editor.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_editor.css index 31d6c86..873d3b1 100644 --- a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_editor.css +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_editor.css @@ -184,4 +184,8 @@ padding-left: 4px; color: rgb(93, 170, 254); padding-top: 2px; +} + +div#general>div>h3 { + display: none; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/9458c739/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-editor.js ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-editor.js b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-editor.js index 0f3b310..656a9d0 100644 --- a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-editor.js +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-editor.js @@ -357,31 +357,14 @@ function generateGroupPreview(data) { var applicationJson = {}; //Definition JSON builder -function generateJsplumbTree(collector, connections){ +function generateJsplumbTree(collector, connections, appeditor){ - //get general data - $('input.level-root').each(function(){ - var inputId = $(this).attr('id'); - collector[inputId] = $(this).val(); - }); + collector = appeditor.getValue(); collector['components']={}; - collector['components']['dependencies']={}; collector['components']['groups']=[]; collector['components']['cartridges']=[]; - collector['components']['dependencies']['startupOrders']=[]; - collector['components']['dependencies']['scalingDependents']=[]; - var startupOrders = $('input#startupOrders').val().split(' ').join('').split(/["][,]+/g); - for (var i = 0; i < startupOrders.length; i++) { - startupOrders[i] = startupOrders[i].replace(/"/g, ""); - } - var scalingDependents = $('input#scalingDependents').val().split(' ').join('').split(/["][,]+/g); - for (var i = 0; i < scalingDependents.length; i++) { - scalingDependents[i] = scalingDependents[i].replace(/"/g, ""); - } - collector['components']['dependencies']['startupOrders'] = startupOrders; - collector['components']['dependencies']['scalingDependents'] = scalingDependents; - collector['components']['dependencies']['terminationBehaviour']=$('select#terminationBehaviour').val(); + console.log(collector) //generate raw data tree from connections var rawtree = []; @@ -456,6 +439,17 @@ function generateJsplumbTree(collector, connections){ return collector; } +//UUID generator +function uuid() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + + s4() + '-' + s4() + s4() + s4(); +} + //setting up schema and defaults var cartridgeBlockTemplate = { "type":"object", @@ -610,6 +604,97 @@ var groupBlockDefault = { "groupScalingEnabled":"false" }; +var applicationBlockTemplate = { + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "root", + "type": "object", + "title":" ", + "options":{ + "disable_properties":true, + "disable_collapse": true + }, + "properties": { + "applicationId": { + "id": "root/applicationId", + "type": "string", + "options": { + "hidden": true + } + }, + "alias": { + "id": "root/alias", + "type": "string", + "title": "Application Alias", + "name": "Application Alias" + }, + "multiTenant": { + "id": "root/multiTenant", + "type": "boolean", + "title": "Application Multi Tenancy", + "name": "Application Multi Tenancy" + }, + "dependencies": { + "id": "root/dependencies", + "type": "object", + "title": "Dependencies", + "name": "Dependencies", + "options": { + "hidden": false, + "disable_properties":true, + "collapsed": true + }, + "properties": { + "startupOrders": { + "id": "root/dependencies/startupOrders", + "type": "array", + "title": "Startup Orders", + "name": "Startup Orders", + "items": { + "id": "root/dependencies/startupOrders/0", + "type": "string", + "title": "Startup Order", + "name": "Startup Order" + } + }, + "scalingDependents": { + "id": "root/dependencies/scalingDependents", + "type": "array", + "title": "Scaling Dependents", + "name": "Scaling Dependents", + "items": { + "id": "root/dependencies/scalingDependents/0", + "type": "string", + "title": "Scaling Dependent", + "name": "Scaling Dependent" + } + }, + "terminationBehaviour": { + "id": "root/dependencies/terminationBehaviour", + "type": "string", + "title": "Termination Behaviour", + "name": "Termination Behaviour", + "enum": ["terminate-none","terminate-dependents","terminate-all"], + } + } + } + } +}; + +var applicationBlockDefault = { + "applicationId": "", + "alias": "", + "multiTenant": false, + "dependencies": { + "startupOrders": [ + "group.my-group1,cartridge.my-c4" + ], + "scalingDependents": [ + "group.my-group1,cartridge.my-c4" + ], + "terminationBehaviour": "terminate-dependents" + } +}; + //create cartridge list var cartridgeListHtml=''; function generateCartridges(data){ @@ -685,7 +770,7 @@ $(document).ready(function(){ $('#deploy').attr('disabled','disabled'); $('#deploy').on('click', function(){ - var appJSON = generateJsplumbTree(applicationJson, jsPlumb.getConnections()); + var appJSON = generateJsplumbTree(applicationJson, jsPlumb.getConnections(), appeditor); var btn = $(this); var formtype = 'applications'; btn.html("<i class='fa fa-spinner fa-spin'></i> Adding..."); @@ -717,7 +802,19 @@ $(document).ready(function(){ JSONEditor.defaults.theme = 'bootstrap3'; JSONEditor.defaults.iconlib = 'fontawesome4'; JSONEditor.defaults.show_errors = "always"; - var editor, blockId; + var editor, blockId, appeditor; + + //set hidden UUID + applicationBlockDefault.applicationId = uuid(); + + // Initialize the editor for main section + appeditor = new JSONEditor(document.getElementById('general'), { + ajax: false, + disable_edit_json: true, + schema: applicationBlockTemplate, + format: "grid", + startval: applicationBlockDefault + }); DragEl(".stepnode"); http://git-wip-us.apache.org/repos/asf/stratos/blob/9458c739/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_editor.hbs ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_editor.hbs b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_editor.hbs index 77025e3..aa51d13 100644 --- a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_editor.hbs +++ b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_editor.hbs @@ -96,36 +96,6 @@ <div class="tab-content app-details-tab-content"> <div role="tabpanel" class="tab-pane active" id="general"> - <div class="form-group"> - <label class="control-label" for="applicationId">Application Id:</label> - <input type="text" class="form-control level-root" placeholder="" id="applicationId"> - </div> - <div class="form-group"> - <label class="control-label" for="alias">Alias:</label> - <input type="text" class="form-control level-root" placeholder="" id="alias"> - </div> - <div class="panel panel-default"> - <div class="panel-heading">Dependencies</div> - <div class="panel-body"> - <div class="form-group"> - <label class="control-label" for="alias">Startup Orders:</label> - <input type="text" class="form-control level-components" placeholder="" id="startupOrders"> - </div> - <div class="form-group"> - <label class="control-label" for="alias">Scaling Dependents:</label> - <input type="text" class="form-control level-components" placeholder="" id="scalingDependents"> - </div> - <div class="form-group"> - <label class="control-label" for="alias">Termination Behaviour:</label> - <select class="form-control level-components" id="terminationBehaviour"> - <option value="terminate-none">terminate-none</option> - <option value="terminate-dependents">terminate-dependents</option> - <option value="terminate-all">terminate-all</option> - </select> - </div> - </div> - </div> - </div> <div role="tabpanel" class="tab-pane components" id="components"> <button type="button" class="btn btn-primary" id="component-info-update" disabled="disabled">Update</button>
