http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_group_editor.js
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_group_editor.js
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_group_editor.js
new file mode 100644
index 0000000..3c81c5f
--- /dev/null
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_group_editor.js
@@ -0,0 +1,479 @@
+// repaint
+function Repaint(){
+    $("#whiteboard").resize(function(){
+        jsPlumb.repaintEverything();
+    });
+}
+// drag
+function DragEl(el){
+    jsPlumb.draggable($(el) ,{
+        containment:"#whiteboard"
+    });
+}
+
+
+// JsPlumb Config
+var color = "gray",
+    exampleColor = "#00f",
+    arrowCommon = { foldback:0.7, fillStyle:color, width:14 };
+
+jsPlumb.importDefaults({
+    Connector : [ "Bezier", { curviness:63 } ],
+    /*Overlays: [
+     [ "Arrow", { location:0.7 }, arrowCommon ],
+     ]*/
+});
+
+
+var nodeDropOptions = {
+    activeClass:"dragActive"
+};
+
+var bottomConnectorOptions = {
+    endpoint:"Rectangle",
+    paintStyle:{ width:25, height:21, fillStyle:'#666' },
+    isSource:true,
+    connectorStyle : { strokeStyle:"#666" },
+    isTarget:false,
+    maxConnections:20
+};
+
+var endpointOptions = {
+    isTarget:true,
+    endpoint:"Dot",
+    paintStyle:{
+        fillStyle:"gray"
+    },
+    dropOptions: nodeDropOptions,
+    maxConnections:1
+};
+
+var groupOptions = {
+    isTarget:true,
+    endpoint:"Dot",
+    paintStyle:{
+        fillStyle:"gray"
+    },
+    dropOptions: nodeDropOptions,
+    maxConnections:1
+};
+
+var generatedCartridgeEndpointOptions = {
+    isTarget:false,
+    endpoint:"Dot",
+    paintStyle:{
+        fillStyle:"gray"
+    },
+    dropOptions: '',
+    maxConnections:1
+};
+
+var generatedGroupOptions = {
+    isTarget:false,
+    endpoint:"Dot",
+    paintStyle:{
+        fillStyle:"gray"
+    },
+    dropOptions: nodeDropOptions,
+    maxConnections:1
+};
+
+jsPlumb.ready(function() {
+    //create application level block
+    jsPlumb.addEndpoint('group-base', {
+        anchor:"BottomCenter"
+    }, bottomConnectorOptions);
+});
+
+var cartridgeCounter=0;
+//add cartridge to editor
+function addJsplumbCartridge(idname, cartridgeCounter) {
+
+    var Div = $('<div>').attr({'id':cartridgeCounter+'-'+idname, 
'data-type':'cartridge', 'data-ctype':idname } )
+        .text(idname)
+        .appendTo('#whiteboard');
+    $(Div).addClass('stepnode');
+    jsPlumb.addEndpoint($(Div), {
+        anchor: "TopCenter"
+    }, endpointOptions);
+    DragEl($(Div));
+    Repaint();
+}
+
+//add group to editor
+function addJsplumbGroup(cartridgeCounter) {
+
+    var div = 
$('<div>').attr({'id':cartridgeCounter+'-group','data-type':'group','data-ctype':''})
+        .text('Group')
+        .addClass('input-false')
+        .addClass('stepnode')
+        .appendTo('#whiteboard');
+    $(div).append('<div class="notification"><i class="fa 
fa-exclamation-circle fa-2x"></i></div>');
+    jsPlumb.addEndpoint($(div), {
+        anchor:"BottomCenter"
+    }, bottomConnectorOptions);
+
+    jsPlumb.addEndpoint($(div), {
+        anchor: "TopCenter"
+    }, groupOptions);
+    DragEl($(div));
+    Repaint();
+}
+
+//create cartridge list
+var cartridgeListHtml='';
+function generateCartridges(data){
+    if(data.length == 0){
+        cartridgeListHtml = 'No Cartridges found..';
+    }else{
+        for(var cartridge in data){
+            var cartridgeData = data[cartridge];
+            cartridgeListHtml += '<div class="block-cartridge" ' +
+                'data-info="'+cartridgeData.description+ '"'+
+                'data-toggle="tooltip" data-placement="bottom" title="Single 
Click to view details. Double click to add"'+
+                'id="'+cartridgeData.type+'">'
+                + cartridgeData.displayName+
+                '</div>'
+        }
+    }
+
+    //append cartridge into html content
+    $('#cartridge-list').append(cartridgeListHtml);
+}
+
+//node positioning algo with dagre js
+function dagrePosition(){
+    // construct dagre graph from JsPlumb graph
+    var g = new dagre.graphlib.Graph();
+    g.setGraph({ranksep:'80'});
+    g.setDefaultEdgeLabel(function() { return {}; });
+    var nodes = $(".stepnode");
+
+    for (var i = 0; i < nodes.length; i++) {
+        var n = nodes[i];
+        g.setNode(n.id, {width: 52, height: 52});
+    }
+    var edges = jsPlumb.getAllConnections();
+    for (var i = 0; i < edges.length; i++) {
+        var c = edges[i];
+        g.setEdge(c.source.id,c.target.id );
+    }
+    // calculate the layout (i.e. node positions)
+    dagre.layout(g);
+
+    // Applying the calculated layout
+    g.nodes().forEach(function(v) {
+        $("#" + v).css("left", g.node(v).x + "px");
+        $("#" + v).css("top", g.node(v).y + "px");
+    });
+    jsPlumb.repaintEverything();
+}
+
+function genGroupJSON(collector, connections){
+    //generate raw data tree from connections
+    var collector = collector || {};
+
+    var rawtree = [];
+
+    //get base-node data
+    var groupBase = $('#group-base').attr('data-generated');
+    if(groupBase){
+        var groupBaseJSON =  JSON.parse(decodeURIComponent(groupBase));
+        collector = groupBaseJSON;
+    }
+    //create empty nodes for group and cartridges
+    collector['groups']=[];
+    collector['cartridges']=[];
+
+    $.each(connections, function (idx, connection) {
+        var dataType = $('#'+connection.targetId).attr('data-type');
+        var dataGenerated  = $('#'+connection.targetId).attr('data-generated');
+        var jsonContent;
+        if(dataGenerated != undefined){
+            var jsonContent = JSON.parse(decodeURIComponent(dataGenerated));
+        }else{
+
+            var jsonContent = {cname: 
$('#'+connection.targetId).attr('data-ctype')};
+        }
+        rawtree.push({
+            parent: connection.sourceId,
+            content: jsonContent,
+            dtype: dataType,
+            id: connection.targetId
+        });
+
+    });
+
+    //generate heirache by adding json and extra info
+    var nodes = [];
+    var toplevelNodes = [];
+    var lookupList = {};
+
+    for (var i = 0; i < rawtree.length; i++) {
+        var n = rawtree[i].content;
+        if(rawtree[i].dtype == 'cartridge'){
+            n.id =  rawtree[i].id;
+            n.parent_id = ((rawtree[i].parent == 'group-base') ? 'group-base': 
rawtree[i].parent);
+            n.dtype =rawtree[i].dtype;
+        }else if(rawtree[i].dtype == 'group'){
+            n.id =  rawtree[i].id;
+            n.parent_id = ((rawtree[i].parent == 'group-base') ? 'group-base': 
rawtree[i].parent);
+            n.dtype =rawtree[i].dtype;
+            n.groups = [];
+            n.cartridges =[];
+        }
+
+        lookupList[n.id] = n;
+        nodes.push(n);
+
+        if (n.parent_id == 'group-base' && rawtree[i].dtype == 'cartridge') {
+            collector['cartridges'].push(n.cname);
+        }else if(n.parent_id == 'group-base' && rawtree[i].dtype == 'group'){
+            collector['groups'].push(n);
+        }
+
+    }
+
+    //merge any root level stuffs
+    for (var i = 0; i < nodes.length; i++) {
+        var n = nodes[i];
+        if (!(n.parent_id == 'group-base') && n.dtype == 'cartridge') {
+            lookupList[n.parent_id]['cartridges'] = 
lookupList[n.parent_id]['cartridges'].concat([n.cname]);
+        }else if(!(n.parent_id == 'group-base') && n.dtype == 'group'){
+            lookupList[n.parent_id]['groups'] = 
lookupList[n.parent_id]['groups'].concat([n]);
+        }
+    }
+
+    //cleanup JSON, remove extra items added to object level
+    function traverse(o) {
+        for (var i in o) {
+            if(i == 'id' || i == 'parent_id' || i == 'dtype'){
+                delete o[i];
+            }else if(i == 'groups' && o[i].length == 0){
+                delete o[i];
+            }
+            if (o[i] !== null && typeof(o[i])=="object") {
+                //going on step down in the object tree!!
+                traverse(o[i]);
+            }
+        }
+    }
+
+    traverse(collector);
+
+    return collector;
+
+}
+
+
+var groupBlockTemplate = {
+    "$schema": "http://json-schema.org/draft-04/schema#";,
+    "id": "root",
+    "title":" ",
+    "type": "object",
+    "options": {
+        "disable_properties": true,
+        "disable_collapse": true
+    },
+    "properties": {
+        "name": {
+            "id": "root/name",
+            "type": "string",
+            "title": "Group Name: "
+        },
+        "isGroupScalingEnabled": {
+            "id": "root/isGroupScalingEnabled",
+            "type": "boolean",
+            "title": "Is Group Scaling Enabled: "
+        },
+        "dependencies": {
+            "id": "root/dependencies",
+            "type": "object",
+            "title": "Dependencies: ",
+            "options": {
+                "disable_properties": true
+            },
+            "properties": {
+                "startupOrders": {
+                    "id": "root/dependencies/startupOrders",
+                    "type": "array",
+                    "title": "Startup Orders: ",
+                    "items": {
+                        "id": "root/dependencies/startupOrders/0",
+                        "type": "string"
+                    }
+                },
+                "scalingDependants": {
+                    "id": "root/dependencies/scalingDependants",
+                    "type": "array",
+                    "title": "Scaling Dependants: ",
+                    "items": {
+                        "id": "root/dependencies/scalingDependants/0",
+                        "type": "string"
+                    }
+                },
+                "terminationBehaviour": {
+                    "id": "root/dependencies/terminationBehaviour",
+                    "type": "string",
+                    "title": "Termination Behaviour: ",
+                    "enum": 
["terminate-none","terminate-dependents","terminate-all"]
+                },
+                "required": [
+                    "startupOrders",
+                    "scalingDependants",
+                    "terminationBehaviour"
+                ]
+            }
+        },
+        "required": [
+            "name",
+            "isGroupScalingEnabled",
+            "dependencies"
+        ]
+    }
+};
+
+var groupBlockDefault = {
+    "name": "",
+    "isGroupScalingEnabled": "true",
+    "dependencies": {
+        "startupOrders": [
+            "cartridge.type, group.name"
+        ],
+        "scalingDependants": [
+            "cartridge.type, group.name"
+        ],
+        "terminationBehaviour": "terminate-all"
+    }
+};
+
+// Document ready events
+$(document).ready(function(){
+
+    $('#deploy').on('click', function(){
+        var  payload = genGroupJSON({}, jsPlumb.getConnections());
+        var btn = $(this);
+        var formtype = 'groups';
+        btn.html("<i class='fa fa-spinner fa-spin'></i> Adding...");
+        $.ajax({
+            type: "POST",
+            url: caramel.context + 
"/controllers/applications/application_requests.jag",
+            dataType: 'json',
+            data: { "formPayload": JSON.stringify(payload), "formtype": 
formtype },
+            success: function (data) {
+                if (data.status == 'error') {
+                    var n = noty({text: data.message, layout: 'bottomRight', 
type: 'error'});
+                } else if (data.status == 'warning') {
+                    var n = noty({text: data.message, layout: 'bottomRight', 
type: 'warning'});
+                } else {
+                    var n = noty({text: data.message, layout: 'bottomRight', 
type: 'success'});
+                }
+            }
+        })
+            .always(function () {
+                btn.html('Add Group Definition');
+            });
+
+    });
+
+    //*******************Adding JSON editor *************//
+    JSONEditor.defaults.theme = 'bootstrap3';
+    JSONEditor.defaults.iconlib = 'fontawesome4';
+    JSONEditor.defaults.show_errors = "always";
+    var editor, blockId = 'group-base';
+
+    // Initialize the editor
+    editor = new JSONEditor(document.getElementById('general-data'), {
+        ajax: false,
+        disable_edit_json: true,
+        schema: groupBlockTemplate,
+        format: "grid",
+        startval: groupBlockDefault
+    });
+
+    DragEl(".stepnode");
+    Repaint();
+
+    function tabData(node){
+
+        blockId = node.attr('id');
+        var blockType = node.attr('data-type');
+        var startval;
+        if(blockType == 'group'){
+            if(node.attr('data-generated')) {
+                startval = 
JSON.parse(decodeURIComponent(node.attr('data-generated')));
+            }else{
+                startval = groupBlockDefault;
+            }
+
+            $('#general-data').html('');
+
+            // Initialize the editor
+            editor = new JSONEditor(document.getElementById('general-data'), {
+                ajax: false,
+                disable_edit_json: true,
+                schema: groupBlockTemplate,
+                format: "grid",
+                startval: startval
+            });
+        }
+
+    }
+
+    $('#whiteboard').on('click', '.stepnode', function(){
+        tabData($(this))
+    });
+
+    //get component JSON data
+    $('#component-info-update').on('click', function(){
+        $('#'+blockId).attr('data-generated', 
encodeURIComponent(JSON.stringify(editor.getValue())));
+        $('#'+blockId).removeClass('input-false');
+        
$('#'+blockId).find('div>i').removeClass('fa-exclamation-circle').addClass('fa-check-circle-o').css('color','#2ecc71');
+        if(blockId == 'group-base'){
+            $('#deploy').prop("disabled", false);
+        }
+
+    });
+
+    //get create cartridge list
+    generateCartridges(cartridgeList);
+
+
+    //handle single click for cartridge
+    $('#cartridge-list').on('click', ".block-cartridge", function(){
+        $('.description-section').html($(this).attr('data-info'));
+    });
+    //handle double click for cartridge
+    $('#cartridge-list').on('dblclick', ".block-cartridge", function(){
+        addJsplumbCartridge($(this).attr('id'),cartridgeCounter);
+        //reposition after cartridge add
+        dagrePosition();
+        //increase global count for instances
+        cartridgeCounter++;
+    });
+
+    //handle single click for groups
+    $('#group-list').on('click', ".block-group", function(){
+
+    });
+    //handle double click event for groups
+    $('#group-list').on('dblclick', ".block-group", function(){
+
+        addJsplumbGroup(cartridgeCounter);
+        //reposition after group add
+        dagrePosition();
+        //increase global count for instances
+        cartridgeCounter++;
+    });
+
+    //reposition on click event on editor
+    $('.reposition').on('click', function(){
+        dagrePosition();
+    });
+
+});
+
+//bootstrap tooltip added
+$(function () {
+    $('[data-toggle="tooltip"]').tooltip();
+})

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_topology.js
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_topology.js
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_topology.js
new file mode 100644
index 0000000..48b8700
--- /dev/null
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications_topology.js
@@ -0,0 +1,284 @@
+//create JSON from topology
+function genTree(data){
+    var rawout = [];
+
+    var rootnode ={};
+    rootnode.name = data.id;
+    rootnode.parent = null;
+    //create initial root node
+    rawout.push(rootnode);
+
+    //application instances
+    function applicationInstances(items, collector, parent){
+        for(var prop in items){
+            if (items.hasOwnProperty(prop)) {
+                var cur_name = items[prop].instanceId,
+                    status = items[prop].status;
+                rawout.push({"name": cur_name, "parent": parent, "status": 
status});
+
+                clusterInstances(items[prop].clusterInstances, collector, 
cur_name);
+                groupInstances(items[prop].groupInstances, collector, cur_name)
+            }
+        }
+    }
+
+    function clusterInstances(items, collector, parent){
+        for(var prop in items){
+            if (items.hasOwnProperty(prop)) {
+                var cur_name = items[prop].clusterId + items[prop].instanceId,
+                    alias = items[prop].alias,
+                    hostNames = items[prop].hostNames.toString(),
+                    serviceName = items[prop].serviceName,
+                    status = items[prop].status;
+                var type = 'clusters';
+                rawout.push({"name": cur_name, "parent": parent, "type": type, 
"status": status,
+                    "alias":alias, "hostNames": hostNames, "serviceName": 
serviceName
+                });
+                clustermembers(items[prop].member, collector, cur_name)
+            }
+        }
+    }
+
+    function groupInstances(items, collector, parent){
+        for(var prop in items){
+            if (items.hasOwnProperty(prop)) {
+                var cur_name = items[prop].groupId + items[prop].instanceId,
+                    instanceId = items[prop].instanceId,
+                    groupId = items[prop].groupId,
+                    status = items[prop].status;
+                var type = 'groups';
+                rawout.push({"name": cur_name, "parent": parent, "type": type, 
"status": status,
+                    "groupId":groupId, "instanceId":instanceId
+                });
+
+                clusterInstances(items[prop].clusterInstances, collector, 
cur_name);
+                if(items[prop].hasOwnProperty('groupInstances')){
+                    groupInstances(items[prop].groupInstances, collector, 
cur_name)
+                }
+
+            }
+        }
+    }
+
+    function clustermembers(items, collector, parent){
+        for(var prop in items){
+            if (items.hasOwnProperty(prop)) {
+                var cur_name = items[prop].memberId,
+                    defaultPrivateIP = items[prop].defaultPrivateIP,
+                    defaultPublicIP = items[prop].defaultPublicIP,
+                    networkPartitionId = items[prop].networkPartitionId,
+                    partitionId = items[prop].partitionId,
+                    status = items[prop].status;
+                var type = 'members';
+                rawout.push({"name": cur_name, "parent": parent, "type": type, 
"status": status,
+                    "defaultPrivateIP":defaultPrivateIP, 
"defaultPublicIP":defaultPublicIP,
+                    "networkPartitionId":networkPartitionId, 
"partitionId":partitionId
+                });
+            }
+        }
+    }
+
+    //getting execution logic
+    applicationInstances(data.applicationInstances, rawout, data.id);
+
+    //generate tree from raw data
+    var data = rawout;
+    //data mapping with d3js tree
+    var dataMap = data.reduce(function (map, node) {
+        map[node.name] = node;
+        return map;
+    }, {});
+    var treeData = [];
+    data.forEach(function (node) {
+        // add to parent
+        var parent = dataMap[node.parent];
+        if (parent) {
+            // create child array if it doesn't exist
+            (parent.children || (parent.children = []))
+                // add node to child array
+                .push(node);
+        } else {
+            // parent is null or missing
+            treeData.push(node);
+        }
+    });
+
+    return treeData[0];
+}
+
+function update(source) {
+
+    // ************** Generate the tree diagram         *****************
+    var margin = {top: 40, right: 120, bottom: 20, left: 120},
+        width = 960 - margin.right - margin.left,
+        height = 900 - margin.top - margin.bottom;
+
+    var i = 0;
+
+    var tree = d3.layout.tree()
+        .separation(function(a, b) { return ((a.parent == source) && (b.parent 
== source)) ? 5 : 4; })
+        .size([height+100, width]);
+
+    var diagonal = d3.svg.diagonal()
+        .projection(function (d) {
+            return [d.x, d.y];
+        });
+    function redraw() {
+        svg.attr("transform",
+                "translate(" + d3.event.translate + ")"
+                + " scale(" + d3.event.scale + ")");
+    }
+
+    var svg = d3.select(".application-topology").append("svg")
+        .attr("width", width + margin.right + margin.left)
+        .attr("height", height + margin.top + margin.bottom)
+        .call(d3.behavior.zoom().on("zoom", redraw))
+        .append("g");
+
+    var i = 0;
+    duration = 750;
+
+    // Compute the new tree layout.
+    var nodes = tree.nodes(source).reverse(),
+        links = tree.links(nodes);
+
+    // Normalize for fixed-depth.
+    nodes.forEach(function (d) {
+        d.y = d.depth * 100;
+    });
+
+    // Declare the nodes…
+    var node = svg.selectAll("g.node")
+        .data(nodes, function (d) {
+            return d.id || (d.id = ++i);
+        });
+
+    // Enter the nodes.
+    var nodeEnter = node.enter().append("g")
+        .attr("class", "node")
+        .attr("transform", function (d) {
+            return "translate(" + d.x + "," + d.y + ")";
+        })
+        // add tool tip for ps -eo pid,ppid,pcpu,size,comm,ruser,s
+        .on("mouseover", function (d) {
+            div.transition()
+                .duration(200)
+                .style("opacity", .9);
+
+            if (d.type == 'clusters') {
+                div.html(
+                        "<strong>Cluster Id: </strong>" + d.name + "<br/>" +
+                        "<strong>Cluster Alias: </strong>" + d.alias + "<br/>" 
+
+                        "<strong>HostNames: </strong>" + d.hostNames + "<br/>" 
+
+                        "<strong>Service Name: </strong>" + d.serviceName + 
"<br/>" +
+                        "<strong>Status: </strong>" + d.status
+                ).style("left", (d3.event.pageX) + "px")
+                    .style("top", (d3.event.pageY - 28) + "px");
+            } else if (d.type == 'members') {
+                div.html(
+                        "<strong>Member Id: </strong>" + d.name + "<br/>" +
+                        "<strong>Default Private IP: </strong>" + 
d.defaultPrivateIP + "<br/>" +
+                        "<strong>Default Public IP: </strong>" + 
d.defaultPublicIP + "<br/>" +
+                        "<strong>Network Partition Id: </strong>" + 
d.networkPartitionId + "<br/>" +
+                        "<strong>Partition Id: </strong>" + d.partitionId + 
"<br/>" +
+                        "<strong>Status: </strong>" + d.status
+                ).style("left", (d3.event.pageX) + "px")
+                    .style("top", (d3.event.pageY - 28) + "px");
+            } else if (d.type == 'groups') {
+                div.html(
+                        "<strong>Group Instance Id: </strong>" + d.instanceId 
+ "<br/>" +
+                        "<strong>Status: </strong>" + d.status
+                ).style("left", (d3.event.pageX) + "px")
+                    .style("top", (d3.event.pageY - 28) + "px");
+            } else {
+                div.html(
+                        "<strong>Alias: </strong>" + d.name + "<br/>"
+                ).style("left", (d3.event.pageX) + "px")
+                    .style("top", (d3.event.pageY - 28) + "px");
+            }
+
+        })
+        .on("mouseout", function (d) {
+            div.transition()
+                .duration(500)
+                .style("opacity", 0);
+        });
+
+    nodeEnter.append("rect")
+        .attr("x", -15)
+        .attr("y", -15)
+        .attr("width", 30)
+        .attr("height", 30)
+        .style("fill", function (d) {
+            if (d.status == 'Active' || d.status == 'Activated') {
+                return "#1abc9c";
+            } else if (d.status == 'Created') {
+                return "#e67e22";
+            } else if (d.status == 'Inactive') {
+                return "#7f8c8d";
+            } else if (d.status == 'Terminated') {
+                return "#c0392b";
+            } else if (d.status == 'Terminating') {
+                return "#c0392b";
+            }else{
+                return "#CCC";
+            }
+        });
+
+    nodeEnter.append("image")
+        .attr("xlink:href",
+        function (d) {
+            if (d.type == 'clusters') {
+                return "../../../themes/theme0/images/topology/cluster.png";
+            } else if (d.type == 'groups') {
+                return "../../../themes/theme0/images/topology/group.png";
+            } else if (d.type == 'members') {
+                return "../../../themes/theme0/images/topology/member.png";
+            } else {
+                return 
"../../../themes/theme0/images/topology/application.png";
+            }
+        })
+        .attr("class", "created")
+        .attr("x", -16)
+        .attr("y", -16)
+        .attr("width", 32)
+        .attr("height", 32);
+
+
+    nodeEnter.append("text")
+        .attr("y", function (d) {
+            return d.children || d._children ? -20 : 20;
+        })
+        .attr("dy", ".35em")
+        .attr("text-anchor", "middle")
+        .text(function (d) {
+            if(d.type == 'members') {
+                return '';
+            }else if(d.type == 'clusters') {
+                return d.alias;
+            }else if(d.type == 'groups'){
+                return d.groupId;
+            }else{
+                return d.name;
+            }
+
+        })
+        .style("fill-opacity", 1);
+
+    // add the tool tip
+    var div = d3.select("body").append("div")
+        .attr("class", "tooltip")
+        .style("opacity", 0);
+
+    // Declare the links…
+    var link = svg.selectAll("path.link")
+        .data(links, function (d) {
+            return d.target.id;
+        });
+
+    // Enter the links.
+    link.enter().insert("path", "g")
+        .attr("class", "link")
+        .attr("d", diagonal);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_deploy.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_deploy.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_deploy.hbs
index 183a841..c8a7d2e 100644
--- 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_deploy.hbs
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_deploy.hbs
@@ -32,7 +32,7 @@
                     <!-- Nav tabs -->
                     <ul class="nav nav-tabs" role="tablist">
                         <li role="presentation" class="active"><a 
href="#general" aria-controls="general" role="tab"
-                                                                  
data-toggle="tab">General Details</a></li>
+                                                                  
data-toggle="tab">Application Policy</a></li>
                         <li role="presentation"><a href="#components" 
aria-controls="components"
                                                    role="tab" 
data-toggle="tab">Child Policies</a></li>
 
@@ -41,6 +41,7 @@
                     <!-- Tab panes -->
                     <div class="tab-content app-details-tab-content">
                         <div role="tabpanel" class="tab-pane active" 
id="general">
+                            <div id='deploy-ui'></div>
                             <textarea  id="deployjsonedit" class="form-control"
                                       autocomplete="off" style="height: 
576px;"></textarea>
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs
index b2548e3..bc9008b 100644
--- 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_form.hbs
@@ -156,12 +156,16 @@
 
                             <div 
class="toggle-menu-description">{{description}} </div>
                             <div class="list-button" style="display: none;">
+                                <button class="btn btn-danger btn-lg 
hover-delete-group" type="button"
+                                        id="{{name}}"> Delete</button>
                                 <button class="btn btn-info btn-lg 
hover-details" type="button" id="details_list_{{name}}"
                                         data-url="{{url 
""}}/applications/groups/{{name}}/" > Details
                                 </button>
                             </div>
                             <div class="bottom-bar-wrapper">
                                 <div class="bottom-bar">
+                                    <button class="btn btn-danger btn-lg 
hover-delete-group" type="button"
+                                            id="{{name}}"> Delete</button>
                                     <button class="btn btn-info btn-lg 
hover-details" type="button" id="details_{{name}}"
                                             data-url="{{url 
""}}/applications/groups/{{name}}/" > Details
                                     </button>
@@ -391,6 +395,49 @@
         });
     });
 
+    $('.general-table').on('click', '.hover-delete-group', function (event) {
+
+        var payload =$(this).attr("id");
+        noty({
+            layout: 'bottomRight',
+            type: 'warning',
+            text: 'Are you sure you want to delete group: 
<strong>'+$(this).attr("id") + "</strong> ?",
+            buttons: [
+                {addClass: 'btn btn-primary', text: 'Yes', onClick: 
function($noty) {
+                    var formtype = 'deletegroups';
+                    $noty.close();
+
+                    $.ajax({
+                        type: "POST",
+                        url: caramel.context + 
"/controllers/applications/application_requests.jag",
+                        dataType: 'json',
+                        data: { "formPayload": payload, "formtype": formtype },
+                        success: function (data) {
+                            if (data.status == 'error') {
+                                var n = noty({text: data.message, layout: 
'bottomRight', type: 'error'});
+                            } else if (data.status == 'warning') {
+                                var n = noty({text: data.message, layout: 
'bottomRight', type: 'warning'});
+                            } else {
+                                var n = noty({text: data.message, layout: 
'bottomRight', type: 'success'});
+                            }
+                            window.setTimeout(function(){
+                                location.reload();
+                            }, 1000);
+                        }
+                    }).always(function () {
+
+                    });
+
+                }
+                },
+                {addClass: 'btn btn-danger', text: 'No', onClick: 
function($noty) {
+                    $noty.close();
+                }
+                }
+            ]
+        });
+    });
+
     $('.general-table').on('click', '.hover-undeploy', function (event) {
 
         var payload =$(this).attr("id");

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_group_editor.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_group_editor.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_group_editor.hbs
new file mode 100644
index 0000000..89a14cb
--- /dev/null
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_group_editor.hbs
@@ -0,0 +1,147 @@
+<div id="centered">
+    <div class="row title">
+        <div class="title-main text-center">
+            <h1>Create New Group</h1>
+        </div>
+    </div>
+    <div class='container' id='content'>
+        <div class='row'>
+            <div class='container text-center form-toolbar'>
+                <div class='col-md-5'>
+                    <div class="editor-button">
+
+                    </div>
+
+                </div>
+                <div class='col-md-7'>
+                    <button class='btn btn-info btn-lg pull-right' 
type='button' id='deploy'
+                            disabled="disabled" data-form='{{formContext}}'> 
Add {{formTitle}}</button>
+                    <button class='btn btn-default btn-lg pull-right 
button-gap' type='button'
+                            
onclick='window.location.replace(document.referrer)'> Cancel</button>
+
+                </div>
+            </div>
+        </div>
+        <div class="left-side">
+            <div class="components">
+                <div class="panel-group" id="accordion" role="tablist" 
aria-multiselectable="true">
+                    <div class="panel panel-default">
+                        <div class="panel-heading" role="tab" id="headingOne">
+                            <h4 class="panel-title">
+                                <a data-toggle="collapse" 
data-parent="#accordion" href="#collapseOne"
+                                   aria-expanded="true" 
aria-controls="collapseOne">
+                                    Cartridges
+                                </a>
+                            </h4>
+                        </div>
+                        <div id="collapseOne" class="panel-collapse collapse 
in" role="tabpanel"
+                             aria-labelledby="headingOne">
+                            <div class="panel-body component-section" 
id="cartridge-list">
+                                <!-- Automatic content will be added -->
+                            </div>
+                        </div>
+                    </div>
+                    <div class="panel panel-default ">
+                        <div class="panel-heading" role="tab" id="headingTwo">
+                            <h4 class="panel-title">
+                                <a class="collapsed" data-toggle="collapse" 
data-parent="#accordion" href="#collapseTwo"
+                                   aria-expanded="false" 
aria-controls="collapseTwo">
+                                    Group Template
+                                </a>
+                            </h4>
+                        </div>
+                        <div id="collapseTwo" class="panel-collapse collapse" 
role="tabpanel"
+                             aria-labelledby="headingTwo">
+                            <div class="panel-body component-section" 
id="group-list">
+                                <div class="block-group">Group</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="description" >
+                <div class="panel panel-default">
+                    <div class="panel-heading">
+                        <h3 class="panel-title">Information</h3>
+                    </div>
+                    <div class="panel-body description-section">
+
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="right-side">
+            <div class="app-creator">
+                <div class="reposition" data-toggle="tooltip" 
data-placement="left" title="Click to reposition nodes">
+                    <i class="fa fa-refresh fa-2x"></i>
+                </div>
+                <div id="whiteboard">
+                    <div id="group-base" class="stepnode input-false" 
data-type="group">
+                        Group
+                        <div class="notification"><i class="fa 
fa-exclamation-circle fa-2x"></i></div>
+                    </div>
+                </div>
+
+            </div>
+            <div class="app-details">
+                <div role="tabpanel app-details-tab" >
+
+                    <!-- Nav tabs -->
+                    <ul class="nav nav-tabs" role="tablist">
+                        <li role="presentation" class="active"><a 
href="#general" aria-controls="general" role="tab"
+                                                                  
data-toggle="tab">Group Details</a></li>
+
+                    </ul>
+
+                    <!-- Tab panes -->
+                    <div class="tab-content app-details-tab-content">
+                        <div role="tabpanel" class="tab-pane active" 
id="general">
+                            <button type="button" class="btn btn-primary" 
id="component-info-update" >Update</button>
+                            <div id="general-data"></div>
+<!--                            <div class="form-group">
+                                <label class="control-label" for="name">Group 
Name:</label>
+                                <input type="text" class="form-control 
level-root" placeholder="" id="name">
+                            </div>
+                            <div class="form-group">
+                                <label class="control-label" 
for="isGroupScalingEnabled">Is Group Scaling Enabled:</label>
+                                <select class="form-control level-components" 
id="isGroupScalingEnabled">
+                                    <option value="true">True</option>
+                                    <option value="false">False</option>
+                                </select>
+                            </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>
+
+                </div>
+            </div>
+        </div>
+    </div>
+
+</div>
+
+<script>
+    //use for application generation;
+    var cartridgeList = {{{editorCartridges}}};
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_topology.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_topology.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_topology.hbs
index cc3bd40..737327b 100644
--- 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_topology.hbs
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_topology.hbs
@@ -8,10 +8,10 @@
     <div class='container' id='content'>
         <div class='row'>
             <div class='container text-center form-toolbar'>
-                <div class='col-md-2'>
+                <div class='col-md-1'>
                     <button class='btn btn-default btn-lg' type='button' 
onclick='window.location.replace(document.referrer)'> Back</button>
                 </div>
-                <div class='col-md-10'>
+                <div class='col-md-11'>
                     <button class='btn btn-info btn-lg pull-right' 
type='button' id='refresh' data-form=''>Refresh </button>
                 </div>
             </div>
@@ -24,289 +24,7 @@
 </div>
 <script type="text/javascript">
 $(document).ready(function () {
-    var topologydata = {{{topology_data}}};
-    //create JSON from topology
-    function genTree(data){
-        var rawout = [];
-
-        var rootnode ={};
-        rootnode.name = data.id;
-        rootnode.parent = null;
-        //create initial root node
-        rawout.push(rootnode);
-
-        //application instances
-        function applicationInstances(items, collector, parent){
-            for(var prop in items){
-                if (items.hasOwnProperty(prop)) {
-                    var cur_name = items[prop].instanceId,
-                            status = items[prop].status;
-                    rawout.push({"name": cur_name, "parent": parent, "status": 
status});
-
-                    clusterInstances(items[prop].clusterInstances, collector, 
cur_name);
-                    groupInstances(items[prop].groupInstances, collector, 
cur_name)
-                }
-            }
-        }
-
-        function clusterInstances(items, collector, parent){
-            for(var prop in items){
-                if (items.hasOwnProperty(prop)) {
-                    var cur_name = items[prop].clusterId + 
items[prop].instanceId,
-                            alias = items[prop].alias,
-                            hostNames = items[prop].hostNames.toString(),
-                            serviceName = items[prop].serviceName,
-                            status = items[prop].status;
-                    var type = 'clusters';
-                    rawout.push({"name": cur_name, "parent": parent, "type": 
type, "status": status,
-                        "alias":alias, "hostNames": hostNames, "serviceName": 
serviceName
-                    });
-                    clustermembers(items[prop].member, collector, cur_name)
-                }
-            }
-        }
-
-        function groupInstances(items, collector, parent){
-            for(var prop in items){
-                if (items.hasOwnProperty(prop)) {
-                    var cur_name = items[prop].groupId + 
items[prop].instanceId,
-                            instanceId = items[prop].instanceId,
-                            groupId = items[prop].groupId,
-                            status = items[prop].status;
-                    var type = 'groups';
-                    rawout.push({"name": cur_name, "parent": parent, "type": 
type, "status": status,
-                        "groupId":groupId, "instanceId":instanceId
-                        });
-
-                    clusterInstances(items[prop].clusterInstances, collector, 
cur_name);
-                    if(items[prop].hasOwnProperty('groupInstances')){
-                        groupInstances(items[prop].groupInstances, collector, 
cur_name)
-                    }
-
-                }
-            }
-        }
-
-        function clustermembers(items, collector, parent){
-            for(var prop in items){
-                if (items.hasOwnProperty(prop)) {
-                    var cur_name = items[prop].memberId,
-                            defaultPrivateIP = items[prop].defaultPrivateIP,
-                            defaultPublicIP = items[prop].defaultPublicIP,
-                            networkPartitionId = 
items[prop].networkPartitionId,
-                            partitionId = items[prop].partitionId,
-                            status = items[prop].status;
-                    var type = 'members';
-                    rawout.push({"name": cur_name, "parent": parent, "type": 
type, "status": status,
-                        "defaultPrivateIP":defaultPrivateIP, 
"defaultPublicIP":defaultPublicIP,
-                        "networkPartitionId":networkPartitionId, 
"partitionId":partitionId
-                    });
-                }
-            }
-        }
-
-        //getting execution logic
-        applicationInstances(data.applicationInstances, rawout, data.id);
-
-        //generate tree from raw data
-        var data = rawout;
-        //data mapping with d3js tree
-        var dataMap = data.reduce(function (map, node) {
-            map[node.name] = node;
-            return map;
-        }, {});
-        var treeData = [];
-        data.forEach(function (node) {
-            // add to parent
-            var parent = dataMap[node.parent];
-            if (parent) {
-                // create child array if it doesn't exist
-                (parent.children || (parent.children = []))
-                    // add node to child array
-                        .push(node);
-            } else {
-                // parent is null or missing
-                treeData.push(node);
-            }
-        });
-
-        return treeData[0];
-    }
-
-    function update(source) {
-
-        // ************** Generate the tree diagram     *****************
-        var margin = {top: 40, right: 120, bottom: 20, left: 120},
-                width = 960 - margin.right - margin.left,
-                height = 900 - margin.top - margin.bottom;
-
-        var i = 0;
-
-        var tree = d3.layout.tree()
-                .separation(function(a, b) { return ((a.parent == source) && 
(b.parent == source)) ? 5 : 4; })
-                .size([height+100, width]);
-
-        var diagonal = d3.svg.diagonal()
-                .projection(function (d) {
-                    return [d.x, d.y];
-                });
-        function redraw() {
-            svg.attr("transform",
-                            "translate(" + d3.event.translate + ")"
-                            + " scale(" + d3.event.scale + ")");
-        }
-
-        var svg = d3.select(".application-topology").append("svg")
-                .attr("width", width + margin.right + margin.left)
-                .attr("height", height + margin.top + margin.bottom)
-                .call(d3.behavior.zoom().on("zoom", redraw))
-                .append("g");
-
-        var i = 0;
-        duration = 750;
-
-        // Compute the new tree layout.
-        var nodes = tree.nodes(source).reverse(),
-                links = tree.links(nodes);
-
-        // Normalize for fixed-depth.
-        nodes.forEach(function (d) {
-            d.y = d.depth * 100;
-        });
-
-        // Declare the nodes…
-        var node = svg.selectAll("g.node")
-                .data(nodes, function (d) {
-                    return d.id || (d.id = ++i);
-                });
-
-        // Enter the nodes.
-        var nodeEnter = node.enter().append("g")
-                .attr("class", "node")
-                .attr("transform", function (d) {
-                    return "translate(" + d.x + "," + d.y + ")";
-                })
-            // add tool tip for ps -eo pid,ppid,pcpu,size,comm,ruser,s
-                .on("mouseover", function (d) {
-                    div.transition()
-                            .duration(200)
-                            .style("opacity", .9);
-
-                    if (d.type == 'clusters') {
-                        div.html(
-                                        "<strong>Cluster Id: </strong>" + 
d.name + "<br/>" +
-                                        "<strong>Cluster Alias: </strong>" + 
d.alias + "<br/>" +
-                                        "<strong>HostNames: </strong>" + 
d.hostNames + "<br/>" +
-                                        "<strong>Service Name: </strong>" + 
d.serviceName + "<br/>" +
-                                        "<strong>Status: </strong>" + d.status
-                        ).style("left", (d3.event.pageX) + "px")
-                                .style("top", (d3.event.pageY - 28) + "px");
-                    } else if (d.type == 'members') {
-                        div.html(
-                                        "<strong>Member Id: </strong>" + 
d.name + "<br/>" +
-                                        "<strong>Default Private IP: 
</strong>" + d.defaultPrivateIP + "<br/>" +
-                                        "<strong>Default Public IP: </strong>" 
+ d.defaultPublicIP + "<br/>" +
-                                        "<strong>Network Partition Id: 
</strong>" + d.networkPartitionId + "<br/>" +
-                                        "<strong>Partition Id: </strong>" + 
d.partitionId + "<br/>" +
-                                        "<strong>Status: </strong>" + d.status
-                        ).style("left", (d3.event.pageX) + "px")
-                                .style("top", (d3.event.pageY - 28) + "px");
-                    } else if (d.type == 'groups') {
-                        div.html(
-                                        "<strong>Group Instance Id: </strong>" 
+ d.instanceId + "<br/>" +
-                                        "<strong>Status: </strong>" + d.status
-                        ).style("left", (d3.event.pageX) + "px")
-                                .style("top", (d3.event.pageY - 28) + "px");
-                    } else {
-                        div.html(
-                                        "<strong>Alias: </strong>" + d.name + 
"<br/>"
-                        ).style("left", (d3.event.pageX) + "px")
-                                .style("top", (d3.event.pageY - 28) + "px");
-                    }
-
-                })
-                .on("mouseout", function (d) {
-                    div.transition()
-                            .duration(500)
-                            .style("opacity", 0);
-                });
-
-        nodeEnter.append("rect")
-                .attr("x", -15)
-                .attr("y", -15)
-                .attr("width", 30)
-                .attr("height", 30)
-                .style("fill", function (d) {
-                    if (d.status == 'Active' || d.status == 'Activated') {
-                        return "#1abc9c";
-                    } else if (d.status == 'Created') {
-                        return "#e67e22";
-                    } else if (d.status == 'Inactive') {
-                        return "#7f8c8d";
-                    } else if (d.status == 'Terminated') {
-                        return "#c0392b";
-                    }else{
-                        return "#1abc9c";
-                    }
-                });
-
-        nodeEnter.append("image")
-                .attr("xlink:href",
-                function (d) {
-                    if (d.type == 'clusters') {
-                        return 
"../../../themes/theme0/images/topology/cluster.png";
-                    } else if (d.type == 'groups') {
-                        return 
"../../../themes/theme0/images/topology/group.png";
-                    } else if (d.type == 'members') {
-                        return 
"../../../themes/theme0/images/topology/member.png";
-                    } else {
-                        return 
"../../../themes/theme0/images/topology/application.png";
-                    }
-                })
-                .attr("class", "created")
-                .attr("x", -16)
-                .attr("y", -16)
-                .attr("width", 32)
-                .attr("height", 32);
-
-
-        nodeEnter.append("text")
-                .attr("y", function (d) {
-                    return d.children || d._children ? -20 : 20;
-                })
-                .attr("dy", ".35em")
-                .attr("text-anchor", "middle")
-                .text(function (d) {
-                    if(d.type == 'members') {
-                        return '';
-                    }else if(d.type == 'clusters') {
-                        return d.alias;
-                    }else if(d.type == 'groups'){
-                        return d.groupId;
-                    }else{
-                        return d.name;
-                    }
-
-                })
-                .style("fill-opacity", 1);
-
-        // add the tool tip
-        var div = d3.select("body").append("div")
-                .attr("class", "tooltip")
-                .style("opacity", 0);
-
-        // Declare the links…
-        var link = svg.selectAll("path.link")
-                .data(links, function (d) {
-                    return d.target.id;
-                });
-
-        // Enter the links.
-        link.enter().insert("path", "g")
-                .attr("class", "link")
-                .attr("d", diagonal);
-
-    }
+    var topologydata = {{{topologyData}}};
 
     //initial generation with deafult call
     update(genTree(topologydata));

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_view.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_view.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_view.hbs
new file mode 100644
index 0000000..8555799
--- /dev/null
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/applications_view.hbs
@@ -0,0 +1,25 @@
+<div id="centered">
+    <div class="row title">
+        <div class="title-main text-center">
+            <h1>Application - {{applicationName}}</h1>
+        </div>
+    </div>
+    <div class='container' id='content'>
+        <div class='row'>
+            <div class='container text-center form-toolbar'>
+                    <div class='col-md-1'><button class='btn btn-default 
btn-lg' type='button' onclick='window.location.replace(document.referrer)'> 
Back</button></div>
+            </div>
+        </div>
+        <div class="right-side">
+            <div class="app-creator">
+                <div id="whiteboard">
+
+                </div>
+            </div>
+        </div>
+    </div>
+
+</div>
+<script>
+    var applicationJSON = {{{applicationJSON}}};
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/configure_form.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/configure_form.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/configure_form.hbs
index 52e6105..7fe9149 100644
--- 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/configure_form.hbs
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/configure_form.hbs
@@ -18,7 +18,7 @@
                 <div class='row'>
                     <div class='container text-center form-toolbar'>
                         {{#if isEdit}}
-                            <div class='col-md-4'><button class='btn 
btn-default btn-lg' type='button' 
onclick='window.location.replace(document.referrer)'> Back</button></div>
+                            <div class='col-md-1'><button class='btn 
btn-default btn-lg' type='button' 
onclick='window.location.replace(document.referrer)'> Back</button></div>
                         {{else}}
                         <div class='col-md-5'>
                             <div class="editor-button">
@@ -30,7 +30,7 @@
 
                         </div>
                         <div class='col-md-7'>
-                            <button class='btn btn-info btn-lg pull-right' 
type='button' id='deploy' data-form='{{formContext}}'> Deploy 
{{formTitle}}</button>
+                            <button class='btn btn-info btn-lg pull-right' 
type='button' id='deploy' data-form='{{formContext}}'> Add 
{{formTitle}}</button>
                             <button class='btn btn-default btn-lg pull-right 
button-gap' type='button' onclick='window.location.replace(document.referrer)'> 
Cancel</button>
 
                         </div>
@@ -97,18 +97,18 @@
                             <div class="toggle-menu-icon">
                                 <i class="fa fa-gears "></i>
                             </div>
-                            <h2 class="truncate">{{groupId}} </h2>
+                            <h2 class="truncate">{{clusterId}} </h2>
 
                             <div 
class="toggle-menu-description">{{description}}</div>
                             <div class="list-button" style="display: none;">
                                 <button class="btn btn-info btn-lg 
hover-details" type="button" id="details_list_{{id}}"
-                                        data-url="{{url 
""}}/configure/docker/{{groupId}}/" > Details
+                                        data-url="{{url 
""}}/configure/docker/{{clusterId}}/" > Details
                                 </button>
                             </div>
                             <div class="bottom-bar-wrapper">
                                 <div class="bottom-bar">
                                     <button class="btn btn-info btn-lg 
hover-details" type="button" id="details_{{id}}"
-                                            data-url="{{url 
""}}/configure/docker/{{groupId}}/" > Details
+                                            data-url="{{url 
""}}/configure/docker/{{clusterId}}/" > Details
                                     </button>
                                 </div>
                             </div>
@@ -313,7 +313,7 @@
             var payload = editor.getValue();
             var btn = $(this);
             var formtype = '{{formContext}}';
-                    btn.html("<i class='fa fa-spinner fa-spin'></i> 
Deploying...");
+                    btn.html("<i class='fa fa-spinner fa-spin'></i> 
Adding...");
             $.ajax({
                 type: "POST",
                 url: caramel.context + 
"/controllers/configure/configure_requests.jag",
@@ -330,7 +330,7 @@
                 }
             })
                     .always(function () {
-                        btn.html('Deploy');
+                        btn.html('Add' + '{{formTitle}}');
                     });
 
         });//end of deploy button trigger

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges.hbs
deleted file mode 100644
index ebf8c08..0000000
--- 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges.hbs
+++ /dev/null
@@ -1,122 +0,0 @@
-<div class="row title">
-    <div class="title-main text-center">
-        <h1>{{content_title}}</h1>
-    </div>
-</div>
-<div class="container content">
-    <div class="row text-center">
-
-        {{#if content_body.sections}}
-            <div class="row form-toolbar ">
-                <div class="col-md-5 col-sm-3 text-left">
-                    <!--<input type="text" class="form-control" 
placeholder="Search">-->
-                    <div class="btn-group">
-                        <a href="#" id="list" class="btn btn-default">
-                            <i class="fa fa-list-ul"></i> List
-                        </a>
-                        <a href="#" id="grid" class="btn btn-default">
-                            <i class="fa fa-th"></i> Grid
-                        </a>
-                    </div>
-                </div>
-            </div>
-        <div class="row general-table row-overide">
-            {{#each content_body.sections}}
-                <!--<div data-url="{{url 
""}}/mycartridges/info/{{cartridgeAlias}}" class="data-url">-->
-
-                <div class="col-md-4 block grid-group-item border-right">
-                    <div class="toggle-menu-icon">
-                        <i class="fa icon-{{cartridgeType}} fa-inbox"></i>
-                    </div>
-                    {{#if loadBalancer}}
-                        <h2>{{displayName}} - {{version}}</h2>
-                        <div 
class="cartridge-description">{{description}}</div>
-                        <div class="lb-description">This will be auto 
subscribed for you</div>
-                    {{else}}
-                        <h2>{{cartridgeAlias}} ({{displayName}} - 
{{version}})</h2>
-                        {{#if multiTenant}}
-                            Multi Tenant Enabled
-                        {{else}}
-                            Single Tenant
-                        {{/if}}
-                        <div 
class="toggle-menu-description">{{description}}</div>
-                        <div class="bottom-bar-wrapper">
-                            <div class="bottom-bar">
-                                <button class="btn btn-danger btn-lg 
hover-unsubscribe" type="button" id="unsubscribe_{{cartridgeAlias}}"
-                                        data-cartridge="{{cartridgeAlias}}" > 
Unsubscribe
-                                </button>
-                                <button class="btn btn-info btn-lg 
hover-details" type="button" id="details_{{cartridgeAlias}}"
-                                        data-url="{{url 
""}}/mycartridges/info/{{cartridgeAlias}}" > Details
-                                </button>
-
-
-                            </div>
-                        </div>
-                    {{/if}}
-                </div>
-                <!--</div>-->
-            {{/each}}
-
-        </div>
-
-        {{else}}
-            <div class="row no-item row-overide">
-                <div class="row title">
-                    <h2>No Cartridge found..</h2>
-                    <a type="button" class="btn btn-primary btn-lg" 
href="{{url ""}}/cartridges/">Subscribe to Cartridge</a>
-                </div>
-            </div>
-        {{/if}}
-    </div>
-</div>
-
-<script>
-    $(document).ready(function () {
-
-        $('.general-table .grid-group-item').hover(function () {
-            $(this).find('.bottom-bar').stop().animate({bottom: '37px'}, 
'slow');
-        }, function () {
-            $(this).find('.bottom-bar').stop().animate({bottom: '-32px'}, 
'slow');
-        });
-
-        $('.general-table').on('click', '.hover-details', function (event) {
-            window.location = $(this).attr("data-url");
-        });
-
-        $('.general-table').on('click', '.hover-unsubscribe', function (event) 
{
-            var cartridge_name = $(this).attr("data-cartridge");
-            noty({
-                text: 'Are you sure want to unsubscribe from cartridge 
<strong><i>'+ cartridge_name+'</i></strong> ?',
-                layout: 'bottomRight',
-                buttons: [
-                    {addClass: 'btn btn-primary', text: 'YES', onClick: 
function($noty) {
-                        $noty.close();
-                        $.ajax({
-                            type: "POST",
-                            url: caramel.context + 
"/controllers/cartridges/unsubscription_requests.jag",
-                            dataType: 'json',
-                            data: { "cartridge_name":cartridge_name},
-                            success: function (data) {
-                                if (data.status == 'error') {
-                                    var n = noty({text: data.message, layout: 
'bottomRight', type: 'error'});
-                                } else if (data.status == 'warning') {
-                                    var n = noty({text: data.message, layout: 
'bottomRight', type: 'warning'});
-                                } else {
-                                    var n = noty({text: data.message, layout: 
'bottomRight', type: 'success'});
-                                    location.reload();
-                                }
-                            }
-                        })
-                    }
-                    },
-                    {addClass: 'btn btn-danger', text: 'NO', onClick: 
function($noty) {
-                        $noty.close();
-                    }
-                    }
-                ]
-            });
-        });
-
-    });
-
-</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges_info.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges_info.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges_info.hbs
deleted file mode 100644
index 8db8a05..0000000
--- 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/my_cartridges_info.hbs
+++ /dev/null
@@ -1,22 +0,0 @@
-<div class="row title">
-    <div class="title-main text-center">
-        <h1>{{content_title}}</h1>
-    </div>
-</div>
-<div class="container content">
-    <div class="row text-center">
-        <div class='container text-center form-toolbar'>
-            <div class='col-md-5'>
-                <button class='btn btn-default btn-lg pull-left button-gap' 
type='button' onclick='window.location.replace(document.referrer)'> 
Back</button>
-            </div>
-            <div class='col-md-7'>
-            </div>
-        </div>
-        <div class="row general-table row-overide">
-            <table class="table">
-            {{{content_body.myCartridgeInfo}}}
-            </table>
-        </div>
-
-    </div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/users_form.hbs
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/users_form.hbs
 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/users_form.hbs
index 9325ec1..026391b 100644
--- 
a/components/org.apache.stratos.manager.console/console/themes/theme0/partials/users_form.hbs
+++ 
b/components/org.apache.stratos.manager.console/console/themes/theme0/partials/users_form.hbs
@@ -3,7 +3,7 @@
         <div class="row title">
             <div class="title-main text-center">
                 {{#if isForm}}
-                    <h1>Add new {{formTitle}}</h1>
+                    <h1>Add New {{formTitle}}</h1>
                 {{else}}
                     <h1>{{formTitle}}</h1>
                 {{/if}}
@@ -15,7 +15,7 @@
                     <div class='container text-center form-toolbar'>
                         <div class='col-md-5'></div>
                         <div class='col-md-7 '>
-                            <button class='btn btn-info btn-lg pull-right' 
type='button' id='deploy' data-form=''> Add {{formContext}}</button>
+                            <button class='btn btn-info btn-lg pull-right' 
type='button' id='deploy' data-form=''> Add New {{formTitle}}</button>
                             <button class='btn btn-default btn-lg pull-right 
button-gap' type='button' onclick='window.location.replace(document.referrer)'> 
Cancel
                             </button>
                         </div>
@@ -34,7 +34,7 @@
 {{else}}
     <div class="row title">
         <div class="title-main text-center">
-            <h1>{{formTitle}}</h1>
+            <h1>{{formTitle}}s</h1>
         </div>
     </div>
     <div class="container content">
@@ -101,7 +101,7 @@
                             </div>
                             <h2>{{tenantDomain}} </h2>
 
-                            <div class="toggle-menu-description">{{email}} - 
{{createdDate}} </div>
+                            <div class="toggle-menu-description">{{email}} - 
{{#UnixConvert createdDate}}{{/UnixConvert}} </div>
                         </div>
                     {{/each}}
                 {{/ifCond}}
@@ -142,7 +142,13 @@
             editor.on('change', function () {
                 // Get an array of errors from the validator
                 var errors = editor.validate();
-                //       var indicator = 
document.getElementById('valid_indicator');
+                if (errors.length) {
+                    for (var i = 0; i < errors.length; i++) {
+                        var n = noty({text: errors[i].message + ' in ' + 
errors[i].path, layout: 'bottomRight',
+                            type: 'error', timeout: 2000});
+                    }
+
+                }
             });
 
         {{else}}
@@ -222,7 +228,7 @@
                 }
             })
                     .always(function () {
-                        btn.html('Add '+formtype);
+                        btn.html('Add New '+formtype);
                     });
         });//end of deploy button trigger
 

Reply via email to