You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/04/17 10:30:09 UTC

[04/16] stratos git commit: add application editor general section with JSON Schema

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 <si...@gmail.com>
Authored: Wed Mar 18 06:52:43 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
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>