You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ma...@apache.org on 2015/01/16 09:44:49 UTC
[1/3] stratos git commit: fix for [STRATOS-1057], [STRATOS-1059],
[STRATOS-1061], [STRATOS-1062], [STRATOS-1063], [STRATOS-1064], [STRATOS-1071],
[STRATOS-1072], [STRATOS-1073], [STRATOS-1074]
Repository: stratos
Updated Branches:
refs/heads/master bb28c542f -> 0251ad3aa
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js
index b0e4e55..fe30daf 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/applications_form.js
@@ -22,72 +22,68 @@ var render = function (theme, data, meta, require) {
if(data.error.length === 0 ){
- if(data.applicationView == true) {
- theme('index', {
- page_meta: [
- {
- partial: 'index_title',
- context: {
- page_title: 'Apache Stratos - Application Managment',
- page_description: 'Apache Stratos - Application Managment'
+ switch (data.applicationHbs) {
+ case "applicationView":
+ theme('index', {
+ page_meta: [
+ {
+ partial: 'index_title',
+ context: {
+ page_title: 'Apache Stratos - Application Managment',
+ page_description: 'Apache Stratos - Application Managment'
+ }
}
- }
- ],
- header: [
- {
- partial: 'index_header',
- context: {
+ ],
+ header: [
+ {
+ partial: 'index_header',
+ context: {
+ }
}
- }
- ],
- sub_header: [
- {
- partial: 'index_sub_header',
- context: {
- breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
- breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+ ],
+ sub_header: [
+ {
+ partial: 'index_sub_header',
+ context: {
+ breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
+ breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+ }
}
- }
- ],
- left_menu: [
- {
- partial: 'index_left_menu',
- context: {
- left_menu: data.left_menu
+ ],
+ left_menu: [
+ {
+ partial: 'index_left_menu',
+ context: {
+ left_menu: data.left_menu
+ }
}
- }
- ],
- right_menu_help: [
- {
- partial: 'index_right_menu_help',
- context: {
+ ],
+ right_menu_help: [
+ {
+ partial: 'index_right_menu_help',
+ context: {
+ }
}
- }
- ],
- content: [
- {
- partial: 'applications_topology',
- context: {
- formContext: data.breadcrumbPathLevelTwo,
- appName: data.appName,
- topology_data: data.topology_data,
- form_action: data.form_action,
- formHtml: data.formHtml,
- formData: data.formData,
- formDataRaw: data.formDataRaw,
- formDataEdit: data.formDataEdit,
- isForm: data.isForm,
- isEdit: data.isEdit,
- formTitle: data.formTitle,
- content_body: {sections: data.list_data
+ ],
+ content: [
+ {
+ partial: 'applications_view',
+ context: {
+ applicationName: data.applicationName,
+ formContext: data.breadcrumbPathLevelTwo,
+ appName: data.appName,
+ applicationJSON: data.applicationJSON,
+ formTitle: data.formTitle
}
}
- }
- ]
- });
- }else if(data.applicationDeploy == true){
+ ]
+ });
+ break;
+
+ case "applicationTopology":
+
theme('index', {
page_meta: [
{
@@ -97,193 +93,331 @@ var render = function (theme, data, meta, require) {
page_description: 'Apache Stratos - Application Managment'
}
}
- ],
- header: [
- {
- partial: 'index_header',
- context: {
+ ],
+ header: [
+ {
+ partial: 'index_header',
+ context: {
+ }
}
- }
- ],
- sub_header: [
- {
- partial: 'index_sub_header',
- context: {
- breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
- breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+ ],
+ sub_header: [
+ {
+ partial: 'index_sub_header',
+ context: {
+ breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
+ breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+ }
}
- }
- ],
- left_menu: [
- {
- partial: 'index_left_menu',
- context: {
- left_menu: data.left_menu
+ ],
+ left_menu: [
+ {
+ partial: 'index_left_menu',
+ context: {
+ left_menu: data.left_menu
+ }
}
- }
- ],
- right_menu_help: [
- {
- partial: 'index_right_menu_help',
- context: {
+ ],
+ right_menu_help: [
+ {
+ partial: 'index_right_menu_help',
+ context: {
+ }
}
- }
- ],
- content: [
- {
- partial: 'applications_deploy',
- context: {
- formContext: data.breadcrumbPathLevelTwo,
- applicationName: data.applicationName,
- applicationJSON: data.applicationJSON,
- editorCartridges: data.editorCartridges,
- editorGroups:data.editorGroups,
- form_action: data.form_action,
- formHtml: data.formHtml,
- formData: data.formData,
- formDataRaw: data.formDataRaw,
- formDataEdit: data.formDataEdit,
- isForm: data.isForm,
- isEdit: data.isEdit,
- formTitle: data.formTitle
+ ],
+ content: [
+ {
+ partial: 'applications_topology',
+ context: {
+ formContext: data.breadcrumbPathLevelTwo,
+ appName: data.appName,
+ topologyData: data.topologyData,
+ form_action: data.form_action,
+ formHtml: data.formHtml,
+ formData: data.formData,
+ formDataRaw: data.formDataRaw,
+ formDataEdit: data.formDataEdit,
+ isForm: data.isForm,
+ isEdit: data.isEdit,
+ formTitle: data.formTitle,
+ content_body: {sections: data.list_data
+ }
+ }
+ }
+
+ ]
+ });
+ break;
+ case "applicationDeploy":
+ theme('index', {
+ page_meta: [
+ {
+ partial: 'index_title',
+ context: {
+ page_title: 'Apache Stratos - Application Managment',
+ page_description: 'Apache Stratos - Application Managment'
+ }
}
- }
+ ],
+ header: [
+ {
+ partial: 'index_header',
+ context: {
+ }
+ }
+ ],
+ sub_header: [
+ {
+ partial: 'index_sub_header',
+ context: {
+ breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
+ breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+ }
+ }
+ ],
+ left_menu: [
+ {
+ partial: 'index_left_menu',
+ context: {
+ left_menu: data.left_menu
+ }
+ }
+ ],
+ right_menu_help: [
+ {
+ partial: 'index_right_menu_help',
+ context: {
- ]
- });
- }else if(data.applicationEditor == true){
- theme('index', {
- page_meta: [
- {
- partial: 'index_title',
- context: {
- page_title: 'Apache Stratos - Application Managment',
- page_description: 'Apache Stratos - Application Managment'
+ }
}
- }
- ],
- header: [
- {
- partial: 'index_header',
- context: {
+ ],
+ content: [
+ {
+ partial: 'applications_deploy',
+ context: {
+ formContext: data.breadcrumbPathLevelTwo,
+ applicationName: data.applicationName,
+ applicationJSON: data.applicationJSON,
+ editorCartridges: data.editorCartridges,
+ editorGroups:data.editorGroups,
+ form_action: data.form_action,
+ formHtml: data.formHtml,
+ formData: data.formData,
+ formDataRaw: data.formDataRaw,
+ formDataEdit: data.formDataEdit,
+ isForm: data.isForm,
+ isEdit: data.isEdit,
+ formTitle: data.formTitle
+
+ }
}
- }
- ],
- sub_header: [
- {
- partial: 'index_sub_header',
- context: {
- breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
- breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+
+ ]
+ });
+ break;
+
+ case "applicationEditor":
+ theme('index', {
+ page_meta: [
+ {
+ partial: 'index_title',
+ context: {
+ page_title: 'Apache Stratos - Application Managment',
+ page_description: 'Apache Stratos - Application Managment'
+ }
}
- }
- ],
- left_menu: [
- {
- partial: 'index_left_menu',
- context: {
- left_menu: data.left_menu
+ ],
+ header: [
+ {
+ partial: 'index_header',
+ context: {
+ }
}
- }
- ],
- right_menu_help: [
- {
- partial: 'index_right_menu_help',
- context: {
+ ],
+ sub_header: [
+ {
+ partial: 'index_sub_header',
+ context: {
+ breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
+ breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+ }
+ }
+ ],
+ left_menu: [
+ {
+ partial: 'index_left_menu',
+ context: {
+ left_menu: data.left_menu
+ }
+ }
+ ],
+ right_menu_help: [
+ {
+ partial: 'index_right_menu_help',
+ context: {
+ }
}
- }
- ],
- content: [
- {
- partial: 'applications_editor',
- context: {
- formContext: data.breadcrumbPathLevelTwo,
- appName: data.appName,
- editorCartridges: data.editorCartridges,
- editorGroups:data.editorGroups,
- form_action: data.form_action,
- formHtml: data.formHtml,
- formData: data.formData,
- formDataRaw: data.formDataRaw,
- formDataEdit: data.formDataEdit,
- isForm: data.isForm,
- isEdit: data.isEdit,
- formTitle: data.formTitle
+ ],
+ content: [
+ {
+ partial: 'applications_editor',
+ context: {
+ formContext: data.breadcrumbPathLevelTwo,
+ appName: data.appName,
+ editorCartridges: data.editorCartridges,
+ editorGroups:data.editorGroups,
+ form_action: data.form_action,
+ formHtml: data.formHtml,
+ formData: data.formData,
+ formDataRaw: data.formDataRaw,
+ formDataEdit: data.formDataEdit,
+ isForm: data.isForm,
+ isEdit: data.isEdit,
+ formTitle: data.formTitle
+ }
}
- }
- ]
- });
+ ]
+ });
+ break;
- }else{
- theme('index', {
- page_meta: [
- {
- partial: 'index_title',
- context: {
- page_title: 'Apache Stratos - Application Managment',
- page_description: 'Apache Stratos - Application Managment'
+ case "applicationsGroupEditor":
+ theme('index', {
+ page_meta: [
+ {
+ partial: 'index_title',
+ context: {
+ page_title: 'Apache Stratos - Application Managment',
+ page_description: 'Apache Stratos - Application Managment'
+ }
}
- }
- ],
- header:[
- {
- partial: 'index_header',
- context:{
+ ],
+ header: [
+ {
+ partial: 'index_header',
+ context: {
+ }
}
- }
- ],
- sub_header:[
- {
- partial:'index_sub_header',
- context:{
- breadcrumbPathLevelOne:data.breadcrumbPathLevelOne,
- breadcrumbPathLevelTwo:data.breadcrumbPathLevelTwo
+ ],
+ sub_header: [
+ {
+ partial: 'index_sub_header',
+ context: {
+ breadcrumbPathLevelOne: data.breadcrumbPathLevelOne,
+ breadcrumbPathLevelTwo: data.breadcrumbPathLevelTwo
+ }
}
- }
- ],
- left_menu:[
- {
- partial:'index_left_menu',
- context:{
- left_menu:data.left_menu
+ ],
+ left_menu: [
+ {
+ partial: 'index_left_menu',
+ context: {
+ left_menu: data.left_menu
+ }
}
- }
- ],
- right_menu_help:[
- {
- partial:'index_right_menu_help',
- context:{
+ ],
+ right_menu_help: [
+ {
+ partial: 'index_right_menu_help',
+ context: {
+ }
}
- }
- ],
- content: [
- {
- partial:'applications_form',
- context:{
- formContext: data.breadcrumbPathLevelTwo,
- form_action: data.form_action,
- formHtml: data.formHtml,
- formData: data.formData,
- formDataRaw: data.formDataRaw,
- formDataEdit: data.formDataEdit,
- formtype:data.formtype,
- isForm: data.isForm,
- isEdit:data.isEdit,
- formTitle: data.formTitle,
- content_body: {sections:
- data.list_data
+ ],
+ content: [
+ {
+ partial: 'applications_group_editor',
+ context: {
+ formContext: data.breadcrumbPathLevelTwo,
+ appName: data.appName,
+ editorCartridges: data.editorCartridges,
+ editorGroups:data.editorGroups,
+ form_action: data.form_action,
+ formHtml: data.formHtml,
+ formData: data.formData,
+ formDataRaw: data.formDataRaw,
+ formDataEdit: data.formDataEdit,
+ isForm: data.isForm,
+ isEdit: data.isEdit,
+ formTitle: data.formTitle
+
}
}
- }
- ]
- });
+ ]
+ });
+ break;
+ default:
+ theme('index', {
+ page_meta: [
+ {
+ partial: 'index_title',
+ context: {
+ page_title: 'Apache Stratos - Application Managment',
+ page_description: 'Apache Stratos - Application Managment'
+ }
+ }
+ ],
+ header:[
+ {
+ partial: 'index_header',
+ context:{
+ }
+ }
+ ],
+ sub_header:[
+ {
+ partial:'index_sub_header',
+ context:{
+ breadcrumbPathLevelOne:data.breadcrumbPathLevelOne,
+ breadcrumbPathLevelTwo:data.breadcrumbPathLevelTwo
+ }
+ }
+ ],
+ left_menu:[
+ {
+ partial:'index_left_menu',
+ context:{
+ left_menu:data.left_menu
+ }
+ }
+ ],
+ right_menu_help:[
+ {
+ partial:'index_right_menu_help',
+ context:{
+
+ }
+ }
+ ],
+ content: [
+ {
+ partial:'applications_form',
+ context:{
+ formContext: data.breadcrumbPathLevelTwo,
+ form_action: data.form_action,
+ formHtml: data.formHtml,
+ formData: data.formData,
+ formDataRaw: data.formDataRaw,
+ formDataEdit: data.formDataEdit,
+ formtype:data.formtype,
+ isForm: data.isForm,
+ isEdit:data.isEdit,
+ formTitle: data.formTitle,
+ content_body: {sections:
+ data.list_data
+ }
+ }
+ }
+
+ ]
+ });
+ break;
+
}
}else{
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/configure.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/configure.js b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/configure.js
index 38e0428..c462a84 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/configure.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/configure.js
@@ -42,8 +42,7 @@ var render = function (theme, data, meta, require) {
{
partial:'index_sub_header',
context:{
- breadcrumbPathLevelOne:data.breadcrumbPathLevelOne,
- breadcrumbPathLevelTwo:data.breadcrumbPathLevelTwo
+ breadcrumbPathLevelOne:data.breadcrumbPathLevelOne
}
}
],
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/my_cartridges.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/my_cartridges.js b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/my_cartridges.js
deleted file mode 100644
index 947c5d3..0000000
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/my_cartridges.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-var render = function (theme, data, meta, require) {
-
- if(data.error.length == 0 ){
- theme('index', {
- page_meta: [
- {
- partial:'index_title',
- context:{
- page_title:'Apache Stratos - My Cartrides',
- page_description:'Apache Stratos - My Cartrides'
- }
- }
- ],
- header:[
- {
- partial: 'index_header',
- context:{
- }
- }
- ],
- sub_header:[
- {
- partial:'index_sub_header',
- context:{
- breadcrumbPathLevelOne:data.breadcrumbPathLevelOne,
- breadcrumbPathLevelTwo:data.breadcrumbPathLevelTwo
- }
- }
- ],
- left_menu:[
- {
- partial:'index_left_menu',
- context:{
- left_menu:data.left_menu
- }
- }
- ],
- right_menu_help:[
- {
- partial:'index_right_menu_help',
- context:{
-
- }
- }
- ],
- content: [
-
- {
- partial: 'my_cartridges',
- context:{
- content_title:'My Cartridges',
- content_body:{
- sections:data.myCartridges,
- myCartridgeInfoStatus: data.myCartridgeInfoStatus,
- myCartridgeInfo: data.myCartridgeInfo
- }
-
- }
- }
- ]
- });
-
- }else{
- theme('index', {
- page_meta: [
- {
- partial:'index_title',
- context:{
- page_title:'Apache Stratos Home - Error',
- page_description:'Apache Stratos Home - Error'
- }
- }
- ],
- header:[
- {
- partial: 'index_header',
- context:{
- }
- }
- ],
- content: [
-
- {
- partial: 'error_page',
- context:{
- error:data.error,
- content_title:'Sorry Something went Wrong...! ',
- content_body:{
-
- }
-
- }
- }
- ]
- });
-
- }
-};
\ 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/renderers/my_cartridges_info.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/my_cartridges_info.js b/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/my_cartridges_info.js
deleted file mode 100644
index 331bdb1..0000000
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/renderers/my_cartridges_info.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-var render = function (theme, data, meta, require) {
-
- if(data.error.length == 0 ){
- theme('index', {
- page_meta: [
- {
- partial:'index_title',
- context:{
- page_title:'Apache Stratos My Cartrides',
- page_description:'Apache Stratos My Cartrides'
- }
- }
- ],
- header:[
- {
- partial: 'index_header',
- context:{
- }
- }
- ],
- sub_header:[
- {
- partial:'index_sub_header',
- context:{
- breadcrumbPathLevelOne:data.breadcrumbPathLevelOne,
- breadcrumbPathLevelTwo:data.breadcrumbPathLevelTwo
- }
- }
- ],
- left_menu:[
- {
- partial:'index_left_menu',
- context:{
- left_menu:data.left_menu
- }
- }
- ],
- right_menu_help:[
- {
- partial:'index_right_menu_help',
- context:{
-
- }
- }
- ],
- content: [
-
- {
- partial: 'my_cartridges_info',
- context:{
- content_title:'My Cartridge: ',
- content_body:{
- myCartridgeInfo: data.myCartridgeInfo
- }
-
- }
- }
- ]
- });
-
- }else{
- theme('index', {
- page_meta: [
- {
- partial:'index_title',
- context:{
- page_title:'Apache Stratos Home - Error',
- page_description:'Apache Stratos Home - Error'
- }
- }
- ],
- header:[
- {
- partial: 'index_header',
- context:{
- }
- }
- ],
- content: [
-
- {
- partial: 'error_page',
- context:{
- error:data.error,
- content_title:'Sorry Something went Wrong...! ',
- content_body:{
-
- }
-
- }
- }
- ]
- });
-
- }
-};
\ 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/theme.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/theme.js b/components/org.apache.stratos.manager.console/console/themes/theme0/theme.js
index 69b7c05..5df0122 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/theme.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/theme.js
@@ -79,6 +79,13 @@ var engine = require('caramel').engine('handlebars', (function () {
}
});
+ Handlebars.registerHelper('UnixConvert', function(unixtimestamp){
+ var newDate = new Date();
+ newDate.setTime(unixtimestamp);
+ dateString = newDate.toUTCString();
+ return dateString;
+ });
+
Handlebars.registerHelper('user', function(action, options) {
if(caramel.meta().session.get("USER_NAME") != undefined ) {
return caramel.meta().session.get("USER_NAME");
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/users_form.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/users_form.jag b/components/org.apache.stratos.manager.console/console/users_form.jag
index 4c2460d..21a3ec5 100644
--- a/components/org.apache.stratos.manager.console/console/users_form.jag
+++ b/components/org.apache.stratos.manager.console/console/users_form.jag
@@ -38,22 +38,32 @@ var caramel = require('caramel'),
if (!elements) {
elements = uriMatcher.match('/{context}/users/{formtype}/{action}/');
isForm = true;
+ if(elements.action == 'new'){
+ try {
+ var formData = require('controllers/forms/schema/users/' + elements.formtype + '.json'),
+ formDataRaw = require('controllers/forms/default/users/' + elements.formtype + '.json'),
+ formTitle = formData.title;
+ }catch (e) {
+ log.error(e.message);
+ error.push({"errorMessage": e.message});
+ }
+ }
}
//create left menu
var leftMenu = menuGenerator(context, menuJson.menu, userPermissions);
-var formData = require('controllers/forms/schema/users/' + elements.formtype + '.json'),
- formDataRaw = require('controllers/forms/default/users/' + elements.formtype + '.json'),
- formTitle = formData.title;
+
if (elements.formtype == 'users') {
+ formTitle = 'User';
list_data = util.RESTCalls.getUserList();
if (list_data && list_data.length === 0) {
list_data = null;
}
} else if (elements.formtype == 'tenants') {
+ formTitle = 'Tenant'
list_data = util.RESTCalls.getTenants();
if (list_data && list_data.length === 0) {
list_data = null;
[3/3] stratos git commit: fix for [STRATOS-1057], [STRATOS-1059],
[STRATOS-1061], [STRATOS-1062], [STRATOS-1063], [STRATOS-1064], [STRATOS-1071],
[STRATOS-1072], [STRATOS-1073], [STRATOS-1074]
Posted by ma...@apache.org.
fix for [STRATOS-1057], [STRATOS-1059], [STRATOS-1061], [STRATOS-1062], [STRATOS-1063], [STRATOS-1064], [STRATOS-1071], [STRATOS-1072], [STRATOS-1073], [STRATOS-1074]
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/0251ad3a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/0251ad3a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/0251ad3a
Branch: refs/heads/master
Commit: 0251ad3aae15578a9bd00914bdbcea5859afa481
Parents: bb28c54
Author: Dakshika Jayathilaka <si...@gmail.com>
Authored: Fri Jan 16 12:53:48 2015 +0530
Committer: Manula Thantriwatte <ma...@apache.org>
Committed: Fri Jan 16 08:44:24 2015 +0000
----------------------------------------------------------------------
.../console/applications_form.jag | 51 +-
.../console/config/acl.json | 6 -
.../console/configure_form.jag | 129 +++--
.../applications/application_requests.jag | 3 +
.../cartridges/subscription_requests.jag | 43 --
.../cartridges/unsubscription_requests.jag | 39 --
.../forms/default/applications/deployments.json | 17 -
.../forms/default/configure/docker.json | 2 +-
.../forms/schema/applications/deployments.json | 103 ----
.../schema/configure/autoscalingpolicies.json | 4 +-
.../forms/schema/configure/cartridges.json | 4 +
.../forms/schema/configure/docker.json | 4 +-
.../controllers/forms/schema/users/tenants.json | 1 +
.../controllers/forms/schema/users/users.json | 6 +-
.../console/controllers/menu/menu.json | 2 +-
.../console/controllers/menu/menu_generator.jag | 6 +-
.../console/controllers/rest/rest_calls.jag | 18 +-
.../console/jaggery.conf | 8 -
.../console/my_cartridges.jag | 71 ---
.../console/my_cartridges_info.jag | 65 ---
.../console/themes/theme0/css/custom.css | 2 +-
.../theme0/css/custom/application_editor.css | 4 +-
.../css/custom/application_group_editor.css | 156 +++++
.../theme0/css/custom/applications_deploy.css | 7 +
.../console/themes/theme0/css/custom/style.css | 9 +-
.../jquery.contextMenu/jquery.contextMenu.css | 142 +++++
.../theme0/helpers/applications_editor.js | 3 +-
.../theme0/helpers/applications_group_editor.js | 9 +
.../theme0/helpers/applications_topology.js | 3 +-
.../themes/theme0/helpers/applications_view.js | 8 +
.../themes/theme0/helpers/my_cartridges.js | 7 -
.../theme0/js/custom/applications-deploy.js | 175 ++++++
.../theme0/js/custom/applications-editor.js | 198 ++++---
.../theme0/js/custom/applications-view.js | 203 +++++++
.../js/custom/applications_group_editor.js | 479 ++++++++++++++++
.../theme0/js/custom/applications_topology.js | 284 ++++++++++
.../theme0/partials/applications_deploy.hbs | 3 +-
.../theme0/partials/applications_form.hbs | 47 ++
.../partials/applications_group_editor.hbs | 147 +++++
.../theme0/partials/applications_topology.hbs | 288 +---------
.../theme0/partials/applications_view.hbs | 25 +
.../themes/theme0/partials/configure_form.hbs | 14 +-
.../themes/theme0/partials/my_cartridges.hbs | 122 ----
.../theme0/partials/my_cartridges_info.hbs | 22 -
.../themes/theme0/partials/users_form.hbs | 18 +-
.../theme0/renderers/applications_form.js | 568 ++++++++++++-------
.../themes/theme0/renderers/configure.js | 3 +-
.../themes/theme0/renderers/my_cartridges.js | 118 ----
.../theme0/renderers/my_cartridges_info.js | 116 ----
.../console/themes/theme0/theme.js | 7 +
.../console/users_form.jag | 16 +-
51 files changed, 2350 insertions(+), 1435 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/applications_form.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/applications_form.jag b/components/org.apache.stratos.manager.console/console/applications_form.jag
index bdac23e..15b91a0 100644
--- a/components/org.apache.stratos.manager.console/console/applications_form.jag
+++ b/components/org.apache.stratos.manager.console/console/applications_form.jag
@@ -32,9 +32,8 @@ var log = new Log("apachestratos.applications_form"),
uriMatcher = new URIMatcher(request.getRequestURI()),
elements = uriMatcher.match('/{context}/applications/{formtype}/'),
breadcrumbPathLevelOne = 'applications',
- formDataEdit = topology_data = editorGroups = editorCartridges = '',
- isEdit = applicationView = applicationEditor = isForm = false,
- applicationDeploy = false,
+ formDataEdit = topologyData = editorGroups = editorCartridges = applicationHbs ='',
+ isEdit = isForm = false,
userPermissions = session.get('PERMISSIONS');
//create left menu
@@ -46,27 +45,34 @@ if (!elements) {
if(!elements){
elements = uriMatcher.match('/{context}/applications/{formtype}/{applicationId}/{action}');
- if(elements.action == 'view'){
+ var applicationName = elements.applicationId;
+ //get application json
+ var applicationJSON = util.RESTCalls.getApplicationJSON(applicationName);
+ if(elements.action == 'view'){
+ applicationHbs = 'applicationView';
}else if(elements.action == 'deploy'){
- var applicationName = elements.applicationId;
- applicationDeploy = true;
- //get application json
- var applicationJSON = util.RESTCalls.getApplicationJSON(applicationName);
+ applicationHbs = 'applicationDeploy';
}
}else{
isForm = true;
if (elements.formtype == 'applications' && elements.action != 'new') {
- applicationView = true;
- topology_data = util.RESTCalls.getApplicationTopology(elements.action);
+
+ applicationHbs = 'applicationTopology';
+ topologyData = util.RESTCalls.getApplicationTopology(elements.action);
}else if(elements.formtype == 'applications' && elements.action == 'new'){
- applicationEditor = true;
+ applicationHbs = 'applicationEditor';
editorGroups = util.RESTCalls.getGroups();
editorCartridges = util.RESTCalls.getCartridges();
- }else if(elements.action != 'new'){
+ }else if(elements.formtype == 'groups' && elements.action == 'new'){
+ applicationHbs = 'applicationsGroupEditor';
+ editorCartridges = util.RESTCalls.getCartridges();
+ }else if(elements.formtype == 'groups' && elements.action != 'new'){
isEdit = true;
+
}
+
}
}
@@ -103,21 +109,6 @@ switch (formtype) {
list_data = null;
}
break;
- case "deployments":
- list_data = util.RESTCalls.getPolicyDeployment(); //TODO fix with correct JSON
- if(list_data == null) {
- list_data = null;
- }else{
- formDataEdit = list_data;
- for (specNumber in list_data) {
- if (list_data[specNumber].id == elements.action) {
- formDataEdit = list_data[specNumber];
- }
-
- }
- //TODO need to add listing with corrected JSON
- }
- break;
default:
error.push({"errorMessage":"Incorrect resource path found"});
}
@@ -128,12 +119,10 @@ var caramelData = {
isForm: isForm,
isEdit: isEdit,
appName: elements.action,
- topology_data: JSON.stringify(topology_data),
+ topologyData: JSON.stringify(topologyData),
editorGroups: JSON.stringify(editorGroups),
editorCartridges: JSON.stringify(editorCartridges),
- applicationView: applicationView,
- applicationEditor: applicationEditor,
- applicationDeploy:applicationDeploy,
+ applicationHbs: applicationHbs,
applicationName:applicationName,
applicationJSON:JSON.stringify(applicationJSON),
formTitle: formTitle,
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/config/acl.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/config/acl.json b/components/org.apache.stratos.manager.console/console/config/acl.json
deleted file mode 100644
index 3101a67..0000000
--- a/components/org.apache.stratos.manager.console/console/config/acl.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "resourcePaths":{
- "/permission/admin/restlogin":"/",
- "":""
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/configure_form.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/configure_form.jag b/components/org.apache.stratos.manager.console/console/configure_form.jag
index d7d9d0b..ed99962 100644
--- a/components/org.apache.stratos.manager.console/console/configure_form.jag
+++ b/components/org.apache.stratos.manager.console/console/configure_form.jag
@@ -49,82 +49,87 @@ if (!elements) {
if (elements.action != 'new') {
isEdit = true;
}
-}
-
-try {
- var formData = require('controllers/forms/schema/configure/' + elements.formtype + '.json'),
- formDataRaw = require('controllers/forms/default/configure/' + elements.formtype + '.json'),
- formTitle = formData.title,
- buttonText = formData.name;
-} catch (e) {
- log.error(e.message);
- error.push({"errorMessage": e.message});
-}
+ //load schema files to JSON editor
+ try {
+ var formData = require('controllers/forms/schema/configure/' + elements.formtype + '.json'),
+ formDataRaw = require('controllers/forms/default/configure/' + elements.formtype + '.json'),
+ formTitle = formData.title,
+ buttonText = formData.name;
+ } catch (e) {
+ log.error(e.message);
+ error.push({"errorMessage": e.message});
+ }
-//get the title for view option
-if (elements.action != 'new' && isEdit) {
- formTitle = formData.title + ' Details - ' + elements.action;
}
-var formtype = elements.formtype;
+//get data for listing pages
+if(isEdit == false && elements.action != 'new') {
+ var formtype = elements.formtype;
-switch (formtype) {
-
- case "autoscalingpolicies":
- list_data = util.RESTCalls.getPolicyAutoScale();
- if (list_data && list_data.length === 0) {
- list_data = null;
- }else{
- formDataEdit = list_data;
- for (specNumber in list_data) {
- if (list_data[specNumber].id == elements.action) {
- formDataEdit = list_data[specNumber];
- }
+ switch (formtype) {
+ case "autoscalingpolicies":
+ formTitle = "Auto-scaling Policie",
+ buttonText = "Auto-scaling Policy";
+ list_data = util.RESTCalls.getPolicyAutoScales();
+ if (list_data && list_data.length === 0) {
+ list_data = null;
}
- }
- break;
-
- case "cartridges":
- list_data = util.RESTCalls.getCartridges();
- if (list_data && list_data.length === 0) {
- list_data = null;
- } else{
- formDataEdit = list_data;
- for (specNumber in list_data) {
- if (list_data[specNumber].type == elements.action) {
- formDataEdit = list_data[specNumber];
- }
-
+ break;
+
+ case "cartridges":
+ formTitle = "Cartridge",
+ buttonText = "Cartridge";
+ list_data = util.RESTCalls.getCartridges();
+ if (list_data && list_data.length === 0) {
+ list_data = null;
}
- }
- break;
-
- case "docker":
- list_data = util.RESTCalls.getKubernetesClusters();
- if(list_data == null){
- list_data = null; //TODO endpoint doesn't return correct info
- }else{
- formDataEdit = list_data.kubernetesCluster;
- for (specNumber in list_data) {
- if (list_data[specNumber].groupId == elements.action) {
- formDataEdit = list_data[specNumber];
- }
-
+ break;
+
+ case "docker":
+ formTitle = "Docker Cluster",
+ buttonText = "Docker Cluster";
+ list_data = util.RESTCalls.getKubernetesClusters();
+ if (list_data == null) {
+ list_data = null; //TODO endpoint doesn't return correct info
}
- }
- break;
+ break;
- default:
- error.push({"errorMessage":"Incorrect resource path found"});
+ default:
+ error.push({"errorMessage": "Incorrect resource path found"});
-}
+ }
//check user has permission to access endpoints
-if (list_data != null && list_data.hasOwnProperty('Error')) {
- error.push(list_data.Error);
+ if (list_data != null && list_data.hasOwnProperty('Error')) {
+ error.push(list_data.Error);
+ }
+
}
+//get the detail view for each listing
+if (elements.action != 'new' && isEdit) {
+ formTitle = formData.title + ' Details - ' + elements.action;
+
+ var formtype = elements.formtype,
+ id = escape(elements.action);
+
+ switch (formtype) {
+ case "autoscalingpolicies":
+ formDataEdit = util.RESTCalls.getPolicyAutoScale(id);
+ break;
+
+ case "cartridges":
+ formDataEdit = util.RESTCalls.getCartridge(id);
+ break;
+
+ case "docker":
+ formDataEdit = util.RESTCalls.getKubernetesCluster(id);
+ break;
+ }
+}
+
+
var caramelData = {
breadcrumbPathLevelOne: breadcrumbPathLevelOne,
breadcrumbPathLevelTwo: elements.formtype,
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag b/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag
index 5d1534b..87ea0b0 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag
+++ b/components/org.apache.stratos.manager.console/console/controllers/applications/application_requests.jag
@@ -34,6 +34,9 @@ try {
case "groups":
formSubmit = util.RESTCalls.deployGroupDefinition(formPayload);
break;
+ case "deletegroups":
+ formSubmit = util.RESTCalls.deleteGroup(formPayload);
+ break;
case "applications":
formSubmit = util.RESTCalls.deployApplicationDefinition(formPayload);
break;
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/cartridges/subscription_requests.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/cartridges/subscription_requests.jag b/components/org.apache.stratos.manager.console/console/controllers/cartridges/subscription_requests.jag
deleted file mode 100644
index 1ede803..0000000
--- a/components/org.apache.stratos.manager.console/console/controllers/cartridges/subscription_requests.jag
+++ /dev/null
@@ -1,43 +0,0 @@
-<%
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-var log = new Log("apachestratos.subscription_request"),
- util = require('/controllers/rest/rest_calls.jag'),
- formPayload = request.getParameter('formPayload'),
- formtype = request.getParameter('formtype'),
- formSubmit;
-
-//add login validator for pages
-include('/controllers/login/validator.jag');
-
-try {
- if(formtype == 'subscribe'){
- formSubmit = util.RESTCalls.subscribeToCartridge(JSON.parse(formPayload));
-
- }
-
-}catch(e){
- log.info(e);
-}
-
-
-print(session.get("get-status"));
-%>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/cartridges/unsubscription_requests.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/cartridges/unsubscription_requests.jag b/components/org.apache.stratos.manager.console/console/controllers/cartridges/unsubscription_requests.jag
deleted file mode 100644
index fed63fc..0000000
--- a/components/org.apache.stratos.manager.console/console/controllers/cartridges/unsubscription_requests.jag
+++ /dev/null
@@ -1,39 +0,0 @@
-<%
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-var log = new Log("apachestratos.subscription_request"),
- util = require('/controllers/rest/rest_calls.jag'),
- cartridge_name = request.getParameter('cartridge_name'),
- formSubmit;
-
-//add login validator for pages
-include('/controllers/login/validator.jag');
-
-try {
- formSubmit = util.RESTCalls.unsubscribeCartridge(cartridge_name);
-}catch(e){
- log.info(e);
-}
-
-log.info(formSubmit)
-
-print(session.get("deploy-status"));
-%>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/default/applications/deployments.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/default/applications/deployments.json b/components/org.apache.stratos.manager.console/console/controllers/forms/default/applications/deployments.json
deleted file mode 100644
index feb94cb..0000000
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/default/applications/deployments.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "id":"dakshika-ec2",
- "description":"Deployment policy description",
- "isPublic":false,
- "partitionGroup":{
- "id":"ec2",
- "partitionAlgo":"one-after-another",
- "partition":[
- {
- "id":"P1",
- "description":"description",
- "partitionMax":"3",
- "partitionMin":"1"
- }
- ]
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/docker.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/docker.json b/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/docker.json
index 0f5b02b..7c05cd0 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/docker.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/default/configure/docker.json
@@ -1,5 +1,5 @@
{
- "groupId": "KubGrp1",
+ "clusterId": "KubGrp1",
"description": "Kubernetes CoreOS cluster on EC2 ",
"kubernetesMaster": {
"hostId": "KubHostMaster1",
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/applications/deployments.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/applications/deployments.json b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/applications/deployments.json
deleted file mode 100644
index 647d028..0000000
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/applications/deployments.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "type":"object",
- "$schema": "http://json-schema.org/draft-04/schema",
- "id": "root",
- "title": "Deployment Definition",
- "name": "Deployment Policy",
- "options": {
- "disable_properties": true,
- "disable_collapse": true
- },
- "required":[],
- "properties":{
- "id": {
- "type":"string",
- "id": "root/id",
- "title": "Deployment Policy ID",
- "name": "Deployment Policy ID",
- "default": "isuruh-ec2",
- "maxItems":1
- },
- "description": {
- "type":"string",
- "id": "root/description",
- "title": "Description",
- "name": "Description",
- "maxItems":1
- },
- "isPublic": {
- "type":"boolean",
- "id": "root/isPublic",
- "title": "Is Public",
- "name": "Is Public",
- "default": false,
- "maxItems":1
- },
- "partitionGroup": {
- "type":"object",
- "id": "root/partitionGroup",
- "title": "Partition Group",
- "name": "Partition Group",
- "required":["id","partitionAlgo","partition"],
- "properties":{
- "id": {
- "type":"string",
- "id": "root/partitionGroup/id",
- "title": "Partition Group ID",
- "name": "Partition Group ID",
- "default": "ec2",
- "maxItems":1
- },
- "partitionAlgo": {
- "type":"string",
- "id": "root/partitionGroup/partitionAlgo",
- "title": "Partition Algorithm",
- "name": "Partition Algorithm",
- "default": "one-after-another",
- "enum": ["round-robin", "one-after-another"],
- "maxItems":1
- },
- "partition": {
- "type":"array",
- "id": "root/partitionGroup/partition",
- "title": "Partition",
- "name": "Partition",
- "minItems":1,
- "items":
- {
- "type":"object",
- "id": "root/partitionGroup/partition/0",
- "required":["id","partitionMin","partitionMax"],
- "format": "grid",
- "properties":{
- "id": {
- "type":"string",
- "id": "root/partitionGroup/partition/0/id",
- "default": "P1",
-
- },
- "partitionMax": {
- "type":"string",
- "id": "root/partitionGroup/partition/0/partitionMax",
- "default": "3",
- },
- "partitionMin": {
- "type":"string",
- "id": "root/partitionGroup/partition/0/partitionMin",
- "default": "1",
- },
- "description": {
- "type": "string",
- "id": "root/partitionGroup/partition/0/description",
- "default": "description",
-
- }
- }
- }
-
-
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/autoscalingpolicies.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/autoscalingpolicies.json b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/autoscalingpolicies.json
index f65e758..70f88c8 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/autoscalingpolicies.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/autoscalingpolicies.json
@@ -2,8 +2,8 @@
"type":"object",
"$schema": "http://json-schema.org/draft-04/schema",
"id": "root",
- "title":"Auto Scaling Policy Definition",
- "name": "Auto Scaling Policy",
+ "title":"Auto-scaling Policy Definition",
+ "name": "Auto-scaling Policy",
"options": {
"disable_properties": true,
"disable_collapse": true
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
index f48590c..a3076e1 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/cartridges.json
@@ -16,6 +16,7 @@
"id": "root/type",
"title": "Type",
"name": "Type",
+ "minLength":2,
"default": "php",
"propertyOrder": 1,
"maxItems": 1
@@ -46,6 +47,7 @@
"title": "Provider",
"name": "Provider",
"default": "apache",
+ "minLength":2,
"propertyOrder": 3,
"maxItems": 1
},
@@ -56,6 +58,7 @@
"name": "Host",
"default": "stratos.org",
"propertyOrder": 4,
+ "minLength":2,
"maxItems": 1
},
"displayName": {
@@ -73,6 +76,7 @@
"title": "Description",
"name": "Description",
"default": "LB Cartridge",
+ "minLength":5,
"propertyOrder": 6,
"maxItems": 1
},
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/docker.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/docker.json b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/docker.json
index 4f2e710..2f23e59 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/docker.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/docker.json
@@ -11,9 +11,9 @@
"default": "Kubernetes CoreOS cluster on EC2 ",
"required":false
},
- "groupId": {
+ "clusterId": {
"type":"string",
- "id": "root/groupId",
+ "id": "root/clusterId",
"default": "KubGrp1",
"required":false
},
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/tenants.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/tenants.json b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/tenants.json
index d8b07ee..a8a7ed2 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/tenants.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/tenants.json
@@ -20,6 +20,7 @@
"adminPassword": {
"type":"string",
"id": "root/adminPassword",
+ "format":"password",
"default": "admin123",
"title": "Admin user password",
"name": "Admin user password"
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/users.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/users.json b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/users.json
index 8c0218e..93fa6f3 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/users.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/users/users.json
@@ -2,7 +2,7 @@
"type":"object",
"$schema": "http://json-schema.org/draft-04/schema",
"id": "root",
- "title": "Users",
+ "title": "User",
"options": {
"disable_properties": true,
"disable_collapse": true
@@ -14,11 +14,15 @@
"id": "root/userName",
"title": "User Name",
"name": "User Name",
+ "minLength":4,
+ "required":true,
"default": ""
},
"credential": {
"type":"string",
"id": "root/credential",
+ "minLength":6,
+ "format":"password",
"title": "Password",
"name": "Password",
"default": ""
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/menu/menu.json
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/menu/menu.json b/components/org.apache.stratos.manager.console/console/controllers/menu/menu.json
index 8019ddb..84f731b 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/menu/menu.json
+++ b/components/org.apache.stratos.manager.console/console/controllers/menu/menu.json
@@ -13,7 +13,7 @@
"link": "configure/autoscalingpolicies/",
"linkexternal": false,
"context": "/configure",
- "title": "Autoscaling Policies",
+ "title": "Auto-scaling Policies",
"icon": "fa-expand",
"permissionPaths": ["/permission", "/permission/admin", "/permission/admin/manage/view/autoscalingpolicy"],
"description": "Define policies which specify inbound requests, memory usage and CPU usage etc."
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/menu/menu_generator.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/menu/menu_generator.jag b/components/org.apache.stratos.manager.console/console/controllers/menu/menu_generator.jag
index e075964..5cd8e26 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/menu/menu_generator.jag
+++ b/components/org.apache.stratos.manager.console/console/controllers/menu/menu_generator.jag
@@ -30,6 +30,7 @@ var log = new Log("controller.menu_generator");
function menuGenerator(context, jsonobject, permissions) {
var menupermission,
link='',
+ target = '_self',
menu_html = '';
if (permissions instanceof Array) {
@@ -40,10 +41,11 @@ function menuGenerator(context, jsonobject, permissions) {
if (hasPermission.length > 0) {
if(jsonPermission.linkexternal){
link = jsonPermission.link;
+ target = "_blank";
}else{
link = context + '/' + jsonPermission.link;
}
- menu_html += '<li><a href="'+ link + '">' +
+ menu_html += '<li><a href="'+ link + '" target="'+target+'">' +
'<i class="fa ' + jsonPermission.icon + '"></i>' +
jsonPermission.title + '</a>';
if (jsonPermission.hasOwnProperty('sub-menu')) {
@@ -55,7 +57,7 @@ function menuGenerator(context, jsonobject, permissions) {
if (hasSubmenuPermission.length > 0) {
menu_html += '<li><a href="' + context + '/' + jsonSubmenuPermission.link +
- '"><i class="fa ' + jsonSubmenuPermission.icon + '"></i>' + jsonSubmenuPermission.title + '</a></li>';
+ '" target="'+target+'"><i class="fa ' + jsonSubmenuPermission.icon + '"></i>' + jsonSubmenuPermission.title + '</a></li>';
}
}
menu_html += '</ul></li>';
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag b/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag
index be8beb6..9ff5dfe 100644
--- a/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag
+++ b/components/org.apache.stratos.manager.console/console/controllers/rest/rest_calls.jag
@@ -79,6 +79,10 @@ RESTCalls = new function(){
return this.send("POST","/applications/"+applicationId+"/undeploy",{});
};
+ this.deleteGroup = function(groupName){
+ return this.send("DELETE","/groups/" + groupName,{});
+ };
+
this.subscribeToCartridge = function(cartridgeBeanInfo){
return this.sendReceive("POST","/cartridge/subscribe", cartridgeBeanInfo);
};
@@ -108,6 +112,10 @@ RESTCalls = new function(){
return this.sendReceive("GET","/kubernetesClusters",{});
};
+ this.getKubernetesCluster = function(kubernetesClusterId){
+ return this.sendReceive("GET","/kubernetesClusters/"+kubernetesClusterId,{});
+ };
+
this.getApplicableDeploymentPolicies = function(cartridgeType){
return this.sendReceive("GET","/" + cartridgeType + "/policy/deployment/",{});
};
@@ -120,10 +128,14 @@ RESTCalls = new function(){
return this.sendReceive("GET","/service/" + cartridgeType,{});
};
- this.getPolicyAutoScale = function(){
+ this.getPolicyAutoScales = function(){
return this.sendReceive("GET","/autoscalingPolicies",{});
};
+ this.getPolicyAutoScale = function(autoscalePolicyId){
+ return this.sendReceive("GET","/autoscalingPolicies/"+autoscalePolicyId,{});
+ };
+
this.getPolicyDeployment = function(){
return this.sendReceive("GET","/deploymentPolicies",{});
};
@@ -134,6 +146,10 @@ RESTCalls = new function(){
return this.sendReceive("GET","/cartridges",{});
};
+ this.getCartridge = function(cartridgeType){
+ return this.sendReceive("GET","/cartridges/"+cartridgeType,{});
+ };
+
this.getGroups = function(){
return this.sendReceive("GET","/groups",{});
};
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/jaggery.conf
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/jaggery.conf b/components/org.apache.stratos.manager.console/console/jaggery.conf
index 9936c4e..7f9b6f5 100644
--- a/components/org.apache.stratos.manager.console/console/jaggery.conf
+++ b/components/org.apache.stratos.manager.console/console/jaggery.conf
@@ -39,14 +39,6 @@
"path": "/applications_form.jag"
},
{
- "url": "/mycartridges/",
- "path": "/my_cartridges.jag"
- },
- {
- "url": "/mycartridges/*",
- "path": "/my_cartridges_info.jag"
- },
- {
"url": "/wizard/*",
"path": "/wizard.jag"
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/my_cartridges.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/my_cartridges.jag b/components/org.apache.stratos.manager.console/console/my_cartridges.jag
deleted file mode 100644
index 4341c08..0000000
--- a/components/org.apache.stratos.manager.console/console/my_cartridges.jag
+++ /dev/null
@@ -1,71 +0,0 @@
-<%
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-//add login validator for pages
-include('/controllers/login/validator.jag');
-include('/controllers/menu/menu_generator.jag');
-
-var log = new Log("apacheStratos.mycartridges");
-var error = [],
- caramel = require('caramel'),
- context = caramel.configs().context,
- menuJson = require('/controllers/menu/menu.json'),
- userPermissions = session.get('PERMISSIONS'),
- uriMatcher = new URIMatcher(request.getRequestURI()),
- util = require('/controllers/rest/rest_calls.jag');
-
-var myCartridges, cartridgeAlias, myCartridgeInfo, myCartridgeInfoStatus;
-//create left menu
-var leftMenu = menuGenerator(context, menuJson.menu, userPermissions);
-
-try {
- myCartridges = util.RESTCalls.getSubscribedCartridges();
-} catch (e) {
- log.warn(e);
-}
-
-
-elements = uriMatcher.match('/{context}/mycartridges/{formtype}/{aliasType}')
-
-if (elements != null) {
- cartridgeAlias = elements.aliasType;
- myCartridgeInfoStatus = true;
- try {
- myCartridgeInfo = util.RESTCalls.getCartridgeInfo(cartridgeAlias);
- } catch (e) {
- log.warn(e);
- }
-} else {
- myCartridgeInfoStatus = false;
-}
-
-log.info(myCartridgeInfoStatus);
-
-caramel.render({
- error: error,
- breadcrumbPathLevelOne: 'mycartridges',
- left_menu: leftMenu,
- myCartridgeInfoStatus: myCartridgeInfoStatus,
- myCartridgeInfo: myCartridgeInfo,
- myCartridges: myCartridges.cartridge
-});
-
-%>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/my_cartridges_info.jag
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/my_cartridges_info.jag b/components/org.apache.stratos.manager.console/console/my_cartridges_info.jag
deleted file mode 100644
index b999e10..0000000
--- a/components/org.apache.stratos.manager.console/console/my_cartridges_info.jag
+++ /dev/null
@@ -1,65 +0,0 @@
-<%
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-//add login validator for pages
-include('/controllers/login/validator.jag');
-include('/controllers/menu/menu_generator.jag');
-
-var log = new Log("apacheStratos.mycartridges");
-var error = [],
- caramel = require('caramel'),
- context = caramel.configs().context,
- menuJson = require('/controllers/menu/menu.json'),
- userPermissions = session.get('PERMISSIONS'),
- uriMatcher = new URIMatcher(request.getRequestURI()),
- cartridgeHtml = '',
- util = require('/controllers/rest/rest_calls.jag');
-var myCartridgeInfo, myCartridgeInfoStatus;
-
-//create left menu
-var leftMenu = menuGenerator(context, menuJson.menu, userPermissions);
-
-elements = uriMatcher.match('/{context}/mycartridges/{formtype}/{aliasType}')
-
-if (elements != null) {
- cartridgeAlias = elements.aliasType;
- myCartridgeInfoStatus = true;
- try {
- myCartridgeInfo = util.RESTCalls.getCartridgeInfo(cartridgeAlias);
- for (specNumber in myCartridgeInfo.cartridge) {
- log.info(myCartridgeInfo.cartridge[specNumber])
- cartridgeHtml +='<tr><td>' + specNumber +' </td><td>'+ myCartridgeInfo.cartridge[specNumber] + '</td></tr>';
- }
- } catch (e) {
-
- }
-} else {
- myCartridgeInfoStatus = false;
-}
-
-caramel.render({
- error: error,
- breadcrumbPathLevelOne: 'mycartridges',
- left_menu: leftMenu,
- myCartridgeInfo: cartridgeHtml
-});
-
-%>
\ 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/css/custom.css
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css
index 5964fba..5e99274 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom.css
@@ -192,6 +192,6 @@ a.btn:hover {
margin-top: 0.7em;
}
-button.hover-unsubscribe, button.hover-details, button.hover-delete, button.hover-undeploy{
+button.hover-unsubscribe, button.hover-details, button.hover-delete,button.hover-delete-group, button.hover-undeploy{
margin-top: .7em;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/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 24fd886..482dfcf 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
@@ -121,8 +121,8 @@
.link {
fill: none;
- stroke: #ccc;
- stroke-width: 2px;
+ stroke: rgb(0, 0, 255);
+ stroke-width: 0.5px;
}
.input-false{
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_group_editor.css
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_group_editor.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_group_editor.css
new file mode 100644
index 0000000..3dd7528
--- /dev/null
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/application_group_editor.css
@@ -0,0 +1,156 @@
+
+#general>div>h3{
+ display: none;
+}
+.left-side{
+ float: left;
+ width: 20%;
+}
+
+.right-side{
+ float: left;
+ width: 79%;
+ margin-top:20px;
+}
+#group-base{
+ left: 318px;
+ top: 33px;
+}
+
+.stepnode {
+ border: 1px solid silver;
+ position: absolute !important;
+ width: 5em;
+ height: 5em;
+ padding: 0.5em;
+ z-index: 1;
+ border-radius: 0.5em;
+ box-shadow: 2px 2px 19px #aaa;
+ background: white;
+ word-wrap: break-word;
+ padding-top: 24px;
+ text-align: center;
+ cursor: pointer;
+}
+
+.block-cartridge {
+ border: 1px solid silver;
+ border-radius: 0.5em;
+ width: 80px;
+ height: 80px;
+ background-color:#CCC;
+ float: left;
+ margin: 5px;
+ padding: 5px;
+ word-wrap: break-word;
+ padding-top: 24px;
+ cursor: pointer;
+}
+
+.block-group {
+ border: 1px solid silver;
+ border-radius: 0.5em;
+ width: 80px;
+ height: 80px;
+ background-color: #CCC;
+ float: left;
+ margin: 5px;
+ padding: 5px;
+ word-wrap: break-word;
+ padding-top: 24px;
+ cursor: pointer;
+}
+
+.app-creator {
+ height: 600px;
+ background-color: rgb(244, 244, 244);
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ margin-left: 10px;
+ position: relative;
+}
+
+#whiteboard{
+ width: 100%;
+ height: 585px;
+ position: absolute;
+ overflow: auto;
+}
+
+.description{
+ min-height: 300px;
+ max-height: 400px;
+}
+.component-section{
+ max-height: 200px;
+ overflow: auto;
+ min-height: 200px;
+}
+
+.description-section{
+ min-height: 260px;
+ max-height: 400px;
+ overflow: auto;
+}
+
+.app-details {
+ margin: 10px;
+}
+
+.app-details-tab-content{
+ border: 1px solid #ddd;
+ border-top: transparent;
+ min-height: 233px;
+ padding: 20px;
+ border-radius: 0 0 4px 4px;
+}
+.dragActive {
+ border: 2px dotted orange;
+
+}
+
+.input-false{
+ background-color: #CCC;
+ border-color: #ddd;
+ border-width: 1px;
+}
+
+#component-info-update{
+ margin-top: -5px;
+ margin-bottom: 20px;
+ float: right;
+ z-index: 100;
+ position: relative;
+}
+
+.stepnode i {
+ margin-top: 2px;
+ color: #e67e22;
+}
+
+.notification {
+ position: absolute;
+ background-color: #fff;
+ width: 30px;
+ height: 30px;
+ border-radius: 15px;
+ top: 52px;
+ left: 52px;
+}
+.reposition {
+ float: right;
+ margin: 11px 20px;
+ padding: 5px;
+ background-color: white;
+ border-radius: 40px;
+ width: 40px;
+ z-index: 9999;
+ position: relative;
+ cursor: pointer;
+}
+
+.reposition i{
+ padding-left: 4px;
+ color: rgb(93, 170, 254);
+ padding-top: 2px;
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_deploy.css
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_deploy.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_deploy.css
index 38d9a09..61b8792 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_deploy.css
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/applications_deploy.css
@@ -49,3 +49,10 @@
left: 52px;
}
+.stepnode-disable{
+ background-color: rgb(228, 228, 228);
+}
+
+#deploy-ui>div>h3{
+ display: none;
+ }
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/style.css
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/style.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/style.css
index 47f590e..a8fd6b0 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/style.css
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/custom/style.css
@@ -218,4 +218,11 @@
/*.has-success{background-color: rgb(219, 255, 195);border: 1px solid rgb(219, 255, 195) !important;}*/
.editor-button{margin-top: 0.4em;font-size: 18px;}
-.auto-correct{display: none}
\ No newline at end of file
+.auto-correct{display: none}
+
+.well {
+ border: none !important;
+ border-radius: 0px !important;
+ -webkit-box-shadow: inset 0 0px 0px rgba(0,0,0,.05);
+ box-shadow: inset 0 0px 0px rgba(0,0,0,.05);
+}
\ 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/css/jquery.contextMenu/jquery.contextMenu.css
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/css/jquery.contextMenu/jquery.contextMenu.css b/components/org.apache.stratos.manager.console/console/themes/theme0/css/jquery.contextMenu/jquery.contextMenu.css
new file mode 100644
index 0000000..81b6d4a
--- /dev/null
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/css/jquery.contextMenu/jquery.contextMenu.css
@@ -0,0 +1,142 @@
+/*!
+ * jQuery contextMenu - Plugin for simple contextMenu handling
+ *
+ * Version: git-master
+ *
+ * Authors: Rodney Rehm, Addy Osmani (patches for FF)
+ * Web: http://medialize.github.com/jQuery-contextMenu/
+ *
+ * Licensed under
+ * MIT License http://www.opensource.org/licenses/mit-license
+ * GPL v3 http://opensource.org/licenses/GPL-3.0
+ *
+ */
+
+.context-menu-list {
+ margin:0;
+ padding:0;
+
+ min-width: 120px;
+ max-width: 250px;
+ display: inline-block;
+ position: absolute;
+ list-style-type: none;
+
+ border: 1px solid #DDD;
+ background: #EEE;
+
+ -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+ -moz-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+ -ms-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+ -o-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
+
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+}
+
+.context-menu-item {
+ padding: 2px 2px 2px 24px;
+ background-color: #EEE;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: -moz-none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.context-menu-separator {
+ padding-bottom:0;
+ border-bottom: 1px solid #DDD;
+}
+
+.context-menu-item > label > input,
+.context-menu-item > label > textarea {
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text;
+}
+
+.context-menu-item.hover {
+ cursor: pointer;
+ background-color: #39F;
+}
+
+.context-menu-item.disabled {
+ color: #666;
+}
+
+.context-menu-input.hover,
+.context-menu-item.disabled.hover {
+ cursor: default;
+ background-color: #EEE;
+}
+
+.context-menu-submenu:after {
+ content: ">";
+ color: #666;
+ position: absolute;
+ top: 0;
+ right: 3px;
+ z-index: 1;
+}
+
+/* icons
+ #protip:
+ In case you want to use sprites for icons (which I would suggest you do) have a look at
+ http://css-tricks.com/13224-pseudo-spriting/ to get an idea of how to implement
+ .context-menu-item.icon:before {}
+ */
+.context-menu-item.icon { min-height: 18px; background-repeat: no-repeat; background-position: 4px 2px; }
+.context-menu-item.icon-edit { background-image: url(../../images/ContextMenu/page_white_edit.png); }
+.context-menu-item.icon-cut { background-image: url(../../images/ContextMenu/cut.png); }
+.context-menu-item.icon-copy { background-image: url(../../images/ContextMenu/page_white_copy.png); }
+.context-menu-item.icon-paste { background-image: url(../../images/ContextMenu/page_white_paste.png); }
+.context-menu-item.icon-delete { background-image: url(../../images/ContextMenu/page_white_delete.png); }
+.context-menu-item.icon-add { background-image: url(../../images/ContextMenu/page_white_add.png); }
+.context-menu-item.icon-quit { background-image: url(../../images/ContextMenu/door.png); }
+
+/* vertically align inside labels */
+.context-menu-input > label > * { vertical-align: top; }
+
+/* position checkboxes and radios as icons */
+.context-menu-input > label > input[type="checkbox"],
+.context-menu-input > label > input[type="radio"] {
+ margin-left: -17px;
+}
+.context-menu-input > label > span {
+ margin-left: 5px;
+}
+
+.context-menu-input > label,
+.context-menu-input > label > input[type="text"],
+.context-menu-input > label > textarea,
+.context-menu-input > label > select {
+ display: block;
+ width: 100%;
+
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ -o-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.context-menu-input > label > textarea {
+ height: 100px;
+}
+.context-menu-item > .context-menu-list {
+ display: none;
+ /* re-positioned by js */
+ right: -5px;
+ top: 5px;
+}
+
+.context-menu-item.hover > .context-menu-list {
+ display: block;
+}
+
+.context-menu-accesskey {
+ text-decoration: underline;
+}
\ 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/helpers/applications_editor.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_editor.js b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_editor.js
index abec326..8032fcb 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_editor.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_editor.js
@@ -3,6 +3,7 @@ var resources = function (page, meta) {
js: ['JSONEditor-0.7.12/jsoneditor-0.7.12.js','bootstrap-switch-3.0.2/bootstrap-switch.min.js', 'custom/script.js','custom/form.js', 'd3js-v3/d3.v3.min.js',
'jquery.contextMenu/jquery.contextMenu.js', 'jquery.contextMenu/jquery.ui.position.js', 'jsplumb-1.7.2/dom.jsPlumb-1.7.2-min.js',
'dagre-v0.7.0/dagre.min.js','custom/applications-editor.js'],
- css: ['bootstrap-switch-3.0.2/bootstrap-switch.min.css', 'custom/style.css', 'custom/application_editor.css']
+ css: ['bootstrap-switch-3.0.2/bootstrap-switch.min.css', 'custom/style.css', 'custom/application_editor.css',
+ 'jquery.contextMenu/jquery.contextMenu.css']
};
};
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_group_editor.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_group_editor.js b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_group_editor.js
new file mode 100644
index 0000000..83291e7
--- /dev/null
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_group_editor.js
@@ -0,0 +1,9 @@
+var resources = function (page, meta) {
+ return {
+ js: ['JSONEditor-0.7.12/jsoneditor-0.7.12.js','bootstrap-switch-3.0.2/bootstrap-switch.min.js', 'custom/script.js','custom/form.js', 'd3js-v3/d3.v3.min.js',
+ 'jquery.contextMenu/jquery.contextMenu.js', 'jquery.contextMenu/jquery.ui.position.js', 'jsplumb-1.7.2/dom.jsPlumb-1.7.2-min.js',
+ 'dagre-v0.7.0/dagre.min.js','custom/applications_group_editor.js'],
+ css: ['bootstrap-switch-3.0.2/bootstrap-switch.min.css', 'custom/style.css', 'custom/application_group_editor.css',
+ 'jquery.contextMenu/jquery.contextMenu.css']
+ };
+};
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_topology.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_topology.js b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_topology.js
index 3dab726..dc73200 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_topology.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_topology.js
@@ -1,6 +1,7 @@
var resources = function (page, meta) {
return {
- js: ['JSONEditor-0.7.12/jsoneditor-0.7.12.js','bootstrap-switch-3.0.2/bootstrap-switch.min.js', 'custom/script.js', 'd3js-v3/d3.v3.min.js' ],
+ js: ['JSONEditor-0.7.12/jsoneditor-0.7.12.js','bootstrap-switch-3.0.2/bootstrap-switch.min.js', 'custom/script.js', 'd3js-v3/d3.v3.min.js' ,
+ 'custom/applications_topology.js'],
css: ['bootstrap-switch-3.0.2/bootstrap-switch.min.css', 'custom/style.css', 'custom/topology.css']
};
};
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_view.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_view.js b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_view.js
new file mode 100644
index 0000000..a40efa5
--- /dev/null
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/applications_view.js
@@ -0,0 +1,8 @@
+var resources = function (page, meta) {
+ return {
+ js: ['JSONEditor-0.7.12/jsoneditor-0.7.12.js','bootstrap-switch-3.0.2/bootstrap-switch.min.js', 'custom/script.js','custom/form.js',
+ 'jquery.contextMenu/jquery.contextMenu.js', 'jquery.contextMenu/jquery.ui.position.js', 'jsplumb-1.7.2/dom.jsPlumb-1.7.2-min.js',
+ 'dagre-v0.7.0/dagre.min.js','custom/applications-view.js'],
+ css: ['bootstrap-switch-3.0.2/bootstrap-switch.min.css', 'custom/style.css', 'custom/applications_deploy.css']
+ };
+};
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/my_cartridges.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/my_cartridges.js b/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/my_cartridges.js
deleted file mode 100644
index faa4740..0000000
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/helpers/my_cartridges.js
+++ /dev/null
@@ -1,7 +0,0 @@
-
-var resources = function (page, meta) {
- return {
- js: ['custom/form.js' ],
- css: [ 'custom/style.css','font-mfizz-1.2/font-mfizz.css']
- };
-};
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-deploy.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-deploy.js b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-deploy.js
index 2d435f9..2cfc093 100644
--- a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-deploy.js
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-deploy.js
@@ -112,6 +112,7 @@ function addJsplumbGroup(groupJSON, cartridgeCounter){
var divRoot = $('<div>').attr({'id':cartridgeCounter+'-'+groupJSON.alias,'data-type':'group','data-ctype':groupJSON.alias})
.text(groupJSON.alias)
.addClass('input-false')
+ .addClass('application')
.addClass('stepnode')
.appendTo('#whiteboard');
$(divRoot).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>');
@@ -135,7 +136,9 @@ function addJsplumbGroup(groupJSON, cartridgeCounter){
.addClass('input-false')
.addClass('stepnode')
.appendTo('#whiteboard');
+
$(divCartridge).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>');
+
jsPlumb.addEndpoint($(divCartridge), {
anchor: "TopCenter"
}, generatedCartridgeEndpointOptions);
@@ -161,7 +164,9 @@ function addJsplumbGroup(groupJSON, cartridgeCounter){
.addClass('stepnode')
.addClass('input-false')
.appendTo('#whiteboard');
+
$(divGroup).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>');
+
jsPlumb.addEndpoint($(divGroup), {
anchor:"BottomCenter"
}, bottomConnectorOptions);
@@ -202,9 +207,177 @@ jsPlumb.bind("ready", function() {
dagrePosition();
});
+//use to activate tab
+function activateTab(tab){
+ $('.nav-tabs a[href="#' + tab + '"]').tab('show');
+};
+var applicationPolicyTemplate = {
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "root",
+ "type": "object",
+ "options": {
+ "disable_properties": true,
+ "disable_collapse": true
+ },
+ "properties": {
+ "applicationId": {
+ "id": "root/applicationId",
+ "type": "string",
+ "title":"Application Id"
+ },
+ "applicationPolicy": {
+ "id": "root/applicationPolicy",
+ "type": "object",
+ "options": {
+ "disable_properties": true,
+ "disable_collapse": true
+ },
+ "properties": {
+ "networkPartition": {
+ "id": "root/applicationPolicy/networkPartition",
+ "type": "array",
+ "items": {
+ "id": "root/applicationPolicy/networkPartition/0",
+ "type": "object",
+ "properties": {
+ "id": {
+ "id": "root/applicationPolicy/networkPartition/0/id",
+ "type": "string"
+ },
+ "activeByDefault": {
+ "id": "root/applicationPolicy/networkPartition/0/activeByDefault",
+ "type": "boolean"
+ },
+ "partitions": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions",
+ "type": "array",
+ "items": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions/0",
+ "type": "object",
+ "properties": {
+ "id": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions/0/id",
+ "type": "string"
+ },
+ "provider": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions/0/provider",
+ "type": "string"
+ },
+ "property": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions/0/property",
+ "type": "array",
+ "items": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions/0/property/0",
+ "type": "object",
+ "properties": {
+ "name": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions/0/property/0/name",
+ "type": "string"
+ },
+ "value": {
+ "id": "root/applicationPolicy/networkPartition/0/partitions/0/property/0/value",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+};
+
+var applicationPolicyDefault = {
+ "applicationId": "app_cartridge_v1",
+ "applicationPolicy": {
+ "networkPartition": [
+ {
+ "id": "openstack_R1",
+ "activeByDefault": "true",
+ "partitions": [
+ {
+ "id": "P1",
+ "provider": "mock",
+ "property": [
+ {
+ "name": "region",
+ "value": "RegionOne"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+};
// Document ready events
$(document).ready(function(){
+
+ //*******************Adding JSON editor *************//
+ JSONEditor.defaults.theme = 'bootstrap3';
+ JSONEditor.defaults.iconlib = 'fontawesome4';
+ JSONEditor.defaults.show_errors = "always";
+ var applicationPolicyEditor, childPolicyEditor;
+
+/* applicationPolicyDefault['applicationId']= applicationJSON.applicationId;
+
+ applicationPolicyEditor = new JSONEditor(document.getElementById('deploy-ui'), {
+ ajax: false,
+ disable_edit_json: true,
+ schema: applicationPolicyTemplate,
+ format: "grid",
+ startval: applicationPolicyDefault
+ });
+ applicationPolicyEditor.getEditor('root.applicationId').disable();*/
+
+ $('#whiteboard').on('click', '.stepnode', function(){
+ tabData($(this));
+ treeActivation($(this));
+ });
+
+ function tabData(node){
+ //get tab activated
+ if(node.hasClass( "application" )){
+ activateTab('general');
+ }else{
+ activateTab('components');
+ }
+
+ }
+
+ function treeActivation(node){
+ var treePath = jsPlumb.getAllConnections();
+
+ for (var i = 0; i < treePath.length; i++) {
+ var nodeitem = treePath[i];
+ var nodeid = node.attr('id');
+ if(nodeitem.source.id == nodeid){
+ $('#'+nodeitem.target.id).addClass('stepnode-disable');
+ }else if(nodeitem.target.id == nodeid){
+ $('#'+nodeitem.source.id).addClass('stepnode-disable');
+ }
+ }
+
+ }
+
+ function generateHtmlBlock(schema, startval){
+ // Initialize the editor
+ childPolicyEditor = new JSONEditor(document.getElementById('component-data'), {
+ ajax: false,
+ disable_edit_json: true,
+ schema: schema,
+ format: "grid",
+ startval: startval
+ });
+
+ }
+
//trigger deploy button
$('#deploy').click(function(){
var deployjson = $('textarea#deployjsonedit').val();
@@ -233,4 +406,6 @@ $(document).ready(function(){
});
});
+
+
});
\ 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/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 33daac6..d3d4685 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
@@ -305,7 +305,7 @@ function generateGroupPreview(data) {
links = tree.links(nodes);
// Normalize for fixed-depth.
- nodes.forEach(function(d) { d.y = d.depth * 100; });
+ nodes.forEach(function(d) { d.y = d.depth * 60; });
// Declare the nodes…
var node = svg.selectAll("g.node")
@@ -317,8 +317,15 @@ function generateGroupPreview(data) {
.attr("transform", function(d) {
return "translate(" + d.x + "," + d.y + ")"; });
- nodeEnter.append("circle")
- .attr("r", 4)
+ nodeEnter.append("rect")
+ .attr("x", -10)
+ .attr("y", -10)
+ .attr("rx",2)
+ .attr("ry",2)
+ .attr("width", 20)
+ .attr("height", 20)
+ .attr("stroke-width", 1)
+ .attr("stroke", "silver")
.style("fill", "#fff");
nodeEnter.append("text")
@@ -340,46 +347,6 @@ function generateGroupPreview(data) {
}
-// ************* Add context menu for nodes ******************
-//remove nodes from workarea
-function deleteNode(endPoint){
- if(endPoint.attr('id') != 'applicationId'){
- var that=endPoint; //get all of your DIV tags having endpoints
- for (var i=0;i<that.length;i++) {
- var endpoints = jsPlumb.getEndpoints($(that[i])); //get all endpoints of that DIV
- for (var m=0;m<endpoints.length;m++) {
- // if(endpoints[m].anchor.type=="TopCenter") //Endpoint on right side
- jsPlumb.deleteEndpoint(endpoints[m]); //remove endpoint
- }
- }
- jsPlumb.detachAllConnections(endPoint);
- endPoint.remove();
- }
-
-}
-
-//genrate context menu for nodes
-$(function(){
- /*$.contextMenu({
- selector: '.stepnode',
- callback: function(key, options) {
- var m = "clicked: " + key + $(this);
- if(key == 'delete'){
- deleteNode($(this));
- }else if(key == 'edit'){
-
- }
- },
- items: {
- "edit": {name: "Edit", icon: "edit"},
- "delete": {name: "Delete", icon: "delete"},
- "sep1": "---------",
- "quit": {name: "Quit", icon: "quit"}
- }
- });*/
-
-});
-
var applicationJson = {};
//Definition JSON builder
function generateJsplumbTree(collector, connections){
@@ -616,15 +583,20 @@ var groupBlockDefault = {
//create cartridge list
var cartridgeListHtml='';
function generateCartridges(data){
- 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>'
+ 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);
}
@@ -632,13 +604,17 @@ function generateCartridges(data){
//create group list
var groupListHtml='';
function generateGroups(data){
- for(var group in data){
- var groupData = data[group];
- groupListHtml += '<div class="block-group" ' +
- ' data-info="'+encodeURIComponent(JSON.stringify(groupData))+'"'+
- 'id="'+groupData.name+'">'
- + groupData.name+
- '</div>'
+ if(data.length == 0){
+ groupListHtml = 'No Groups found..';
+ }else {
+ for (var group in data) {
+ var groupData = data[group];
+ groupListHtml += '<div class="block-group" ' +
+ ' data-info="' + encodeURIComponent(JSON.stringify(groupData)) + '"' +
+ 'id="' + groupData.name + '">'
+ + groupData.name +
+ '</div>'
+ }
}
//append cartridge into html content
$('#group-list').append(groupListHtml);
@@ -666,7 +642,6 @@ function dagrePosition(){
// Applying the calculated layout
g.nodes().forEach(function(v) {
- console.log(g.nodes(v).x)
$("#" + v).css("left", g.node(v).x + "px");
$("#" + v).css("top", g.node(v).y + "px");
});
@@ -715,18 +690,22 @@ $(document).ready(function(){
Repaint();
$('#whiteboard').on('click', '.stepnode', function(){
+ tabData($(this));
+ });
+
+ function tabData(node){
//get tab activated
- if($(this).attr('id') == 'applicationId'){
+ if(node.attr('id') == 'applicationId'){
activateTab('general');
}else{
activateTab('components');
$('#component-info-update').prop("disabled", false);
}
- blockId = $(this).attr('id');
- var blockType = $(this).attr('data-type');
+ blockId = node.attr('id');
+ var blockType = node.attr('data-type');
var startval;
- var ctype = $(this).attr('data-ctype');
+ var ctype = node.attr('data-ctype');
if(blockType == 'cartridge' || blockType == 'group-cartridge'){
startval = cartridgeBlockDefault;
startval['type'] = ctype;
@@ -735,8 +714,8 @@ $(document).ready(function(){
startval['name'] = ctype;
}
- if($(this).attr('data-generated')) {
- startval = JSON.parse(decodeURIComponent($(this).attr('data-generated')));
+ if(node.attr('data-generated')) {
+ startval = JSON.parse(decodeURIComponent(node.attr('data-generated')));
}
$('#component-data').html('');
@@ -753,8 +732,7 @@ $(document).ready(function(){
generateHtmlBlock(cartridgeBlockTemplate, startval);
break;
}
-
- });
+ }
function generateHtmlBlock(schema, startval){
// Initialize the editor
@@ -822,9 +800,93 @@ $(document).ready(function(){
dagrePosition();
});
+ //genrate context menu for nodes
+ $.contextMenu({
+ selector: '.stepnode',
+ callback: function(key, options) {
+ var m = "clicked: " + key + $(this);
+ if(key == 'delete'){
+ deleteNode($(this));
+ }else if(key == 'edit'){
+ document.getElementById('component-data').scrollIntoView();
+ tabData($(this));
+ }
+ },
+ items: {
+ "edit": {name: "Edit", icon: "edit"},
+ "delete": {name: "Delete", icon: "delete"}
+ }
+ });
+
});
//bootstrap tooltip added
$(function () {
$('[data-toggle="tooltip"]').tooltip()
-})
\ No newline at end of file
+})
+
+
+// ************* Add context menu for nodes ******************
+//remove nodes from workarea
+function deleteNode(endPoint){
+ if(endPoint.attr('id') != 'applicationId'){
+ var allnodes = $(".stepnode");
+ var superParent = endPoint.attr('id').split("-")[0]+endPoint.attr('id').split("-")[1];
+ var nodeName = endPoint.attr('data-ctype');
+ var nodeType = endPoint.attr('data-type');
+ var notyText = '';
+
+ if(nodeType == 'group'){
+ notyText = 'This will remove related nodes from the Editor. Are you sure you want to delete '
+ +nodeType + ': '+nodeName+'?';
+ }else{
+ notyText = 'Are you sure you want to delete '+nodeType + ': '+nodeName+'?';
+ }
+ noty({
+ layout: 'bottomRight',
+ type: 'warning',
+ text: notyText,
+ buttons: [
+ {addClass: 'btn btn-primary', text: 'Yes', onClick: function($noty) {
+ $noty.close();
+
+ allnodes.each(function(){
+ var currentId = $(this).attr('id').split("-")[0]+$(this).attr('id').split("-")[1];
+ if(currentId == superParent){
+ var that=$(this); //get all of your DIV tags having endpoints
+ for (var i=0;i<that.length;i++) {
+ var endpoints = jsPlumb.getEndpoints($(that[i])); //get all endpoints of that DIV
+ if(endpoints){
+ for (var m=0;m<endpoints.length;m++) {
+ // if(endpoints[m].anchor.type=="TopCenter") //Endpoint on right side
+ jsPlumb.deleteEndpoint(endpoints[m]); //remove endpoint
+ }
+ }
+
+ }
+ jsPlumb.detachAllConnections($(this));
+ $(this).remove();
+ }
+
+ });
+
+ //clear html area
+ $('#component-data').html('');
+ activateTab('general');
+ }
+ },
+ {addClass: 'btn btn-danger', text: 'No', onClick: function($noty) {
+ $noty.close();
+ }
+ }
+ ]
+ });
+
+
+
+ }else{
+ var n = noty({text: 'Sorry you can\'t remove application node' , layout: 'bottomRight', type: 'warning'});
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/stratos/blob/0251ad3a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-view.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-view.js b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-view.js
new file mode 100644
index 0000000..87eb679
--- /dev/null
+++ b/components/org.apache.stratos.manager.console/console/themes/theme0/js/custom/applications-view.js
@@ -0,0 +1,203 @@
+// 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
+};
+
+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();
+}
+//add group to editor
+var cartridgeCounter =0;
+//add group to editor
+function addJsplumbGroup(groupJSON, cartridgeCounter){
+
+ var divRoot = $('<div>').attr({'id':cartridgeCounter+'-'+groupJSON.alias,'data-type':'group','data-ctype':groupJSON.alias})
+ .text(groupJSON.alias)
+ .addClass('input-false')
+ .addClass('stepnode')
+ .appendTo('#whiteboard');
+ $(divRoot).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>');
+ jsPlumb.addEndpoint($(divRoot), {
+ anchor:"BottomCenter"
+ }, bottomConnectorOptions);
+
+ DragEl($(divRoot));
+ if(groupJSON['components']['cartridges']) {
+ genJsplumbCartridge(groupJSON['components']['cartridges'], divRoot, groupJSON.alias);
+ }
+ if(groupJSON['components']['groups']){
+ genJsplumbGroups(groupJSON['components']['groups'], divRoot, groupJSON.alias);
+ }
+
+ function genJsplumbCartridge(item, currentParent, parentName){
+ for (var prop in item) {
+ var id = item[prop].type;
+ var divCartridge = $('<div>').attr({'id':cartridgeCounter+'-'+parentName+'-'+item[prop].type} )
+ .text(item[prop].type)
+ .addClass('input-false')
+ .addClass('stepnode')
+ .appendTo('#whiteboard');
+ $(divCartridge).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>');
+ jsPlumb.addEndpoint($(divCartridge), {
+ anchor: "TopCenter"
+ }, generatedCartridgeEndpointOptions);
+
+ //add connection options
+ jsPlumb.connect({
+ source:$(currentParent),
+ target:$(divCartridge),
+ paintStyle:{strokeStyle:"blue", lineWidth:1 },
+ Connector : [ "Bezier", { curviness:63 } ],
+ anchors:["BottomCenter", "TopCenter"],
+ endpoint:"Dot"
+ });
+
+ DragEl($(divCartridge));
+ }
+ }
+
+ function genJsplumbGroups(item, currentParent, parentName) {
+ for (var prop in item) {
+ var divGroup = $('<div>').attr({'id':cartridgeCounter+'-'+parentName+'-'+item[prop]['name'],'data-type':'group','data-ctype':item[prop]['name'] })
+ .text(item[prop]['name'])
+ .addClass('stepnode')
+ .addClass('input-false')
+ .appendTo('#whiteboard');
+ $(divGroup).append('<div class="notification"><i class="fa fa-exclamation-circle fa-2x"></i></div>');
+ jsPlumb.addEndpoint($(divGroup), {
+ anchor:"BottomCenter"
+ }, bottomConnectorOptions);
+
+ jsPlumb.addEndpoint($(divGroup), {
+ anchor: "TopCenter"
+ }, generatedGroupOptions);
+
+ //add connection options
+ jsPlumb.connect({
+ source:$(currentParent),
+ target:$(divGroup),
+ paintStyle:{strokeStyle:"blue", lineWidth:1 },
+ Connector : [ "Bezier", { curviness:63 } ],
+ anchors:["BottomCenter", "TopCenter"],
+ endpoint:"Dot"
+ });
+
+ DragEl($(divGroup));
+
+ if(item[prop].hasOwnProperty('cartridges')) {
+ genJsplumbCartridge(item[prop].cartridges, divGroup, parentName+'-'+item[prop]['name'] );
+ }
+ if(item[prop].hasOwnProperty('groups')) {
+ genJsplumbGroups(item[prop].groups, divGroup, parentName+'-'+item[prop]['name'])
+ }
+ }
+ }
+
+
+
+}
+
+
+jsPlumb.bind("ready", function() {
+ addJsplumbGroup(applicationJSON, cartridgeCounter);
+ //reposition after group add
+ dagrePosition();
+});
\ No newline at end of file
[2/3] stratos git commit: fix for [STRATOS-1057], [STRATOS-1059],
[STRATOS-1061], [STRATOS-1062], [STRATOS-1063], [STRATOS-1064], [STRATOS-1071],
[STRATOS-1072], [STRATOS-1073], [STRATOS-1074]
Posted by ma...@apache.org.
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