You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/11/21 22:55:32 UTC
[1/3] System, main routers page: Split into subsections (WIP)
Updated Branches:
refs/heads/4.3 cb14dad75 -> 5b4fa5c06
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5b4fa5c0/ui/scripts/system.js
----------------------------------------------------------------------
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index ba875a0..63e0c90 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -7391,417 +7391,425 @@
return listView;
},
virtualRouters: function() {
- var listView = $.extend(true, {}, cloudStack.sections.system.subsections.virtualRouters.listView, {
- actions: {
- upgradeRouterToUseNewerTemplate: {
- isHeader: true,
-
- label: 'Upgrade Router to Use Newer Template',
-
- messages: {
- notification: function (args) {
- return 'Upgrade Router to Use Newer Template';
- }
- },
-
- createForm: {
- title: 'Upgrade Router to Use Newer Template',
- fields: {
- zoneid: {
- label: 'label.zone',
- select: function (args) {
- var items = [{
- id: '',
- description: ''
- }];
- $.ajax({
- url: createURL('listZones'),
- data: {
- listAll: true
- },
- success: function (json) {
- var objs = json.listzonesresponse.zone;
- if (objs != null) {
- for (var i = 0; i < objs.length; i++) {
- items.push({
- id: objs[i].id,
- description: objs[i].name
- });
- }
- }
- args.response.success({
- data: items
- });
- }
- });
- }
- },
- podid: {
- label: 'Pod',
- dependsOn: 'zoneid',
- select: function (args) {
- var items = [{
- id: '',
- description: ''
- }];
- if (args.zoneid.length > 0) {
- $.ajax({
- url: createURL('listPods'),
- data: {
- zoneid: args.zoneid
- },
- success: function (json) {
- var objs = json.listpodsresponse.pod;
- if (objs != null) {
- for (var i = 0; i < objs.length; i++) {
- items.push({
- id: objs[i].id,
- description: objs[i].name
- });
- }
- }
- args.response.success({
- data: items
- });
- }
- });
- } else {
- args.response.success({
- data: items
- });
- }
- }
- },
- clusterid: {
- label: 'label.cluster',
- dependsOn: 'podid',
- select: function (args) {
- var items = [{
- id: '',
- description: ''
- }];
- if (args.podid.length > 0) {
- $.ajax({
- url: createURL('listClusters'),
- data: {
- podid: args.podid
- },
- success: function (json) {
- var objs = json.listclustersresponse.cluster;
- if (objs != null) {
- for (var i = 0; i < objs.length; i++) {
- items.push({
- id: objs[i].id,
- description: objs[i].name
- });
- }
- }
- args.response.success({
- data: items
- });
- }
- });
- } else {
- args.response.success({
- data: items
- });
- }
- }
- }
- }
- },
-
- action: function (args) {
- var data = {};
- if (args.data.clusterid.length > 0) {
- $.extend(data, {
- clusterid: args.data.clusterid
- });
- } else if (args.data.podid.length > 0) {
- $.extend(data, {
- podid: args.data.podid
- });
- } else if (args.data.zoneid.length > 0) {
- $.extend(data, {
- zoneid: args.data.zoneid
- });
- } else {
- args.response.error('Please specify a zone, a pod or a cluster.');
- return;
- }
-
- $.ajax({
- url: createURL('upgradeRouterTemplate'),
- data: data,
- success: function (json) {
- //example
- /*
- json = {
- "upgraderoutertemplateresponse": {
- "count": 3,
- "asyncjobs": [
- {
- "jobid": "2d51f1f9-ea39-4871-9512-431f4a65a5f2"
- },
- {
- "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
- },
- {
- "jobid": "850a3cfd-c265-48f1-880a-f001481fc7f7"
- }
- ]
- }
- };
- */
-
- var jobs = json.upgraderoutertemplateresponse.asyncjobs;
- if (jobs != undefined) {
- for (var i = 0; i < jobs.length; i++) {
- var jid = jobs[i].jobid;
- args.response.success({
- _custom: {
- jobId: jid
- }
- });
-
- //example begins
- /*
- {
- "queryasyncjobresultresponse": {
- "accountid": "ce5820a8-5099-11e3-80db-3c970e739c3e",
- "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
- "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
- "jobstatus": 2,
- "jobprocstatus": 0,
- "jobresultcode": 530,
- "jobresulttype": "object",
- "jobresult": {
- "errorcode": 530,
- "errortext": "Resource [DataCenter:1] is unreachable: Unable to reboot domR, it is not in right state Stopped"
- },
- "created": "2013-11-19T11:41:40-0800",
- "jobid": "2d51f1f9-ea39-4871-9512-431f4a65a5f2"
- }
- }
- {
- "queryasyncjobresultresponse": {
- "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
- "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
- "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
- "jobstatus": 0,
- "jobprocstatus": 0,
- "jobresultcode": 0,
- "jobinstancetype": "DomainRouter",
- "jobinstanceid": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
- "created": "2013-11-19T11:41:40-0800",
- "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
- }
- }
- {
- "queryasyncjobresultresponse": {
- "accountid": "6b5334a2-1c0e-46e0-b4d9-524698549f08",
- "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
- "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
- "jobstatus": 2,
- "jobprocstatus": 0,
- "jobresultcode": 530,
- "jobresulttype": "object",
- "jobresult": {
- "errorcode": 530,
- "errortext": "Resource [DataCenter:1] is unreachable: Unable to reboot domR, it is not in right state Starting"
- },
- "created": "2013-11-19T11:41:40-0800",
- "jobid": "850a3cfd-c265-48f1-880a-f001481fc7f7"
- }
- }
-
-
- {
- "queryasyncjobresultresponse": {
- "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
- "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
- "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
- "jobstatus": 0,
- "jobprocstatus": 0,
- "jobresultcode": 0,
- "jobinstancetype": "DomainRouter",
- "jobinstanceid": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
- "created": "2013-11-19T11:41:40-0800",
- "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
- }
- }
- {
- "queryasyncjobresultresponse": {
- "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
- "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
- "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
- "jobstatus": 0,
- "jobprocstatus": 0,
- "jobresultcode": 0,
- "jobinstancetype": "DomainRouter",
- "jobinstanceid": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
- "created": "2013-11-19T11:41:40-0800",
- "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
- }
- }
- {
- "queryasyncjobresultresponse": {
- "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
- "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
- "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
- "jobstatus": 1,
- "jobprocstatus": 0,
- "jobresultcode": 0,
- "jobresulttype": "object",
- "jobresult": {
- "router": {
- "id": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
- "zoneid": "3bfdd7d1-134a-4d75-8621-0ccfc8641660",
- "zonename": "jw-adv",
- "dns1": "8.8.8.8",
- "gateway": "10.223.67.1",
- "name": "r-6-VM",
- "linklocalip": "169.254.2.29",
- "linklocalmacaddress": "0e:00:a9:fe:02:1d",
- "linklocalnetmask": "255.255.0.0",
- "linklocalnetworkid": "4a02a05f-1312-484a-a82b-246a86ed6949",
- "publicip": "10.223.67.6",
- "publicmacaddress": "06:8d:22:00:00:18",
- "publicnetmask": "255.255.255.0",
- "publicnetworkid": "e7056c3c-2c7f-4e84-909e-af288ae170e9",
- "templateid": "cd70f70a-5099-11e3-80db-3c970e739c3e",
- "created": "2013-11-19T11:36:04-0800",
- "state": "Running",
- "account": "aaa_admin",
- "domainid": "b95a5b02-e45d-4971-b0d8-d1620f7bf44e",
- "domain": "aaa",
- "serviceofferingid": "7dd7687c-01f0-4a14-846e-8e46067a8ff9",
- "serviceofferingname": "System Offering For Software Router",
- "isredundantrouter": false,
- "redundantstate": "UNKNOWN",
- "version": "3.0",
- "role": "VIRTUAL_ROUTER",
- "nic": [
- {
- "id": "d41bf67e-1d58-4ec9-bf61-41903140cc53",
- "networkid": "e7056c3c-2c7f-4e84-909e-af288ae170e9",
- "netmask": "255.255.255.0",
- "gateway": "10.223.67.1",
- "ipaddress": "10.223.67.6",
- "isolationuri": "vlan://159",
- "broadcasturi": "vlan://159",
- "traffictype": "Public",
- "isdefault": true,
- "macaddress": "06:8d:22:00:00:18"
- },
- {
- "id": "a6d1f6ac-fc45-474e-b372-3571e639fa8e",
- "networkid": "4a02a05f-1312-484a-a82b-246a86ed6949",
- "netmask": "255.255.0.0",
- "gateway": "169.254.0.1",
- "ipaddress": "169.254.2.29",
- "traffictype": "Control",
- "isdefault": false,
- "macaddress": "0e:00:a9:fe:02:1d"
- }
- ],
- "requiresupgrade": true,
- "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c",
- "jobstatus": 0
- }
- },
- "created": "2013-11-19T11:41:40-0800",
- "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
- }
- }
- */
- //example ends
- }
- }
- }
- });
- },
- notification: {
- poll: pollAsyncJobResult
- }
- }
- },
-
- dataProvider: function(args) {
- var data = {};
- listViewDataProvider(args, data);
-
- var routers = [];
-
- //get account-owned routers
- $.ajax({
- url: createURL('listRouters'),
- data: $.extend(data,{
- listAll: true
- }),
- async: false,
- success: function(json) {
- var items = json.listroutersresponse.router ? json.listroutersresponse.router : [];
- $(items).map(function(index, item) {
- routers.push(item);
- });
-
- //get project-owned routers
- var toSearchByProjectid = true;
- if (args.filterBy != null) {
- if (args.filterBy.advSearch != null && typeof(args.filterBy.advSearch) == "object") { //advanced search
- if ('account' in args.filterBy.advSearch && args.filterBy.advSearch.account.length > 0) { //if account is specified in advanced search, don't search project-owned routers
- toSearchByProjectid = false; //since account and projectid can't be specified together
- }
- }
- }
- if (toSearchByProjectid) {
- $.ajax({
- url: createURL('listRouters'),
- data: $.extend(data,{
- listAll: true,
- projectid: -1
- }),
- async: false,
- success: function(json) {
- var items = json.listroutersresponse.router ? json.listroutersresponse.router : [];
- $(items).map(function(index, item) {
- routers.push(item);
- });
- }
- });
- }
- }
- });
+ var listView = $.extend(true, {}, cloudStack.sections.system.subsections.virtualRouters, {
+ //???????
+ sections: {
+ virtualRouterNoGrouping: {
+ listView: {
+ actions: {
+ upgradeRouterToUseNewerTemplate: {
+ isHeader: true,
- args.response.success({
- actionFilter: routerActionfilter,
- data: $(routers).map(mapRouterType)
- });
- },
+ label: 'Upgrade Router to Use Newer Template',
- detailView: {
- updateContext: function(args) {
- var zone;
+ messages: {
+ notification: function (args) {
+ return 'Upgrade Router to Use Newer Template';
+ }
+ },
- $.ajax({
- url: createURL('listZones'),
- data: {
- id: args.context.routers[0].zoneid
+ createForm: {
+ title: 'Upgrade Router to Use Newer Template',
+ fields: {
+ zoneid: {
+ label: 'label.zone',
+ select: function (args) {
+ var items = [{
+ id: '',
+ description: ''
+ }];
+ $.ajax({
+ url: createURL('listZones'),
+ data: {
+ listAll: true
+ },
+ success: function (json) {
+ var objs = json.listzonesresponse.zone;
+ if (objs != null) {
+ for (var i = 0; i < objs.length; i++) {
+ items.push({
+ id: objs[i].id,
+ description: objs[i].name
+ });
+ }
+ }
+ args.response.success({
+ data: items
+ });
+ }
+ });
+ }
+ },
+ podid: {
+ label: 'Pod',
+ dependsOn: 'zoneid',
+ select: function (args) {
+ var items = [{
+ id: '',
+ description: ''
+ }];
+ if (args.zoneid.length > 0) {
+ $.ajax({
+ url: createURL('listPods'),
+ data: {
+ zoneid: args.zoneid
+ },
+ success: function (json) {
+ var objs = json.listpodsresponse.pod;
+ if (objs != null) {
+ for (var i = 0; i < objs.length; i++) {
+ items.push({
+ id: objs[i].id,
+ description: objs[i].name
+ });
+ }
+ }
+ args.response.success({
+ data: items
+ });
+ }
+ });
+ } else {
+ args.response.success({
+ data: items
+ });
+ }
+ }
+ },
+ clusterid: {
+ label: 'label.cluster',
+ dependsOn: 'podid',
+ select: function (args) {
+ var items = [{
+ id: '',
+ description: ''
+ }];
+ if (args.podid.length > 0) {
+ $.ajax({
+ url: createURL('listClusters'),
+ data: {
+ podid: args.podid
+ },
+ success: function (json) {
+ var objs = json.listclustersresponse.cluster;
+ if (objs != null) {
+ for (var i = 0; i < objs.length; i++) {
+ items.push({
+ id: objs[i].id,
+ description: objs[i].name
+ });
+ }
+ }
+ args.response.success({
+ data: items
+ });
+ }
+ });
+ } else {
+ args.response.success({
+ data: items
+ });
+ }
+ }
+ }
+ }
+ },
+
+ action: function (args) {
+ var data = {};
+ if (args.data.clusterid.length > 0) {
+ $.extend(data, {
+ clusterid: args.data.clusterid
+ });
+ } else if (args.data.podid.length > 0) {
+ $.extend(data, {
+ podid: args.data.podid
+ });
+ } else if (args.data.zoneid.length > 0) {
+ $.extend(data, {
+ zoneid: args.data.zoneid
+ });
+ } else {
+ args.response.error('Please specify a zone, a pod or a cluster.');
+ return;
+ }
+
+ $.ajax({
+ url: createURL('upgradeRouterTemplate'),
+ data: data,
+ success: function (json) {
+ //example
+ /*
+ json = {
+ "upgraderoutertemplateresponse": {
+ "count": 3,
+ "asyncjobs": [
+ {
+ "jobid": "2d51f1f9-ea39-4871-9512-431f4a65a5f2"
+ },
+ {
+ "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
+ },
+ {
+ "jobid": "850a3cfd-c265-48f1-880a-f001481fc7f7"
+ }
+ ]
+ }
+ };
+ */
+
+ var jobs = json.upgraderoutertemplateresponse.asyncjobs;
+ if (jobs != undefined) {
+ for (var i = 0; i < jobs.length; i++) {
+ var jid = jobs[i].jobid;
+ args.response.success({
+ _custom: {
+ jobId: jid
+ }
+ });
+
+ //example begins
+ /*
+ {
+ "queryasyncjobresultresponse": {
+ "accountid": "ce5820a8-5099-11e3-80db-3c970e739c3e",
+ "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
+ "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
+ "jobstatus": 2,
+ "jobprocstatus": 0,
+ "jobresultcode": 530,
+ "jobresulttype": "object",
+ "jobresult": {
+ "errorcode": 530,
+ "errortext": "Resource [DataCenter:1] is unreachable: Unable to reboot domR, it is not in right state Stopped"
+ },
+ "created": "2013-11-19T11:41:40-0800",
+ "jobid": "2d51f1f9-ea39-4871-9512-431f4a65a5f2"
+ }
+ }
+ {
+ "queryasyncjobresultresponse": {
+ "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
+ "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
+ "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
+ "jobstatus": 0,
+ "jobprocstatus": 0,
+ "jobresultcode": 0,
+ "jobinstancetype": "DomainRouter",
+ "jobinstanceid": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
+ "created": "2013-11-19T11:41:40-0800",
+ "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
+ }
+ }
+ {
+ "queryasyncjobresultresponse": {
+ "accountid": "6b5334a2-1c0e-46e0-b4d9-524698549f08",
+ "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
+ "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
+ "jobstatus": 2,
+ "jobprocstatus": 0,
+ "jobresultcode": 530,
+ "jobresulttype": "object",
+ "jobresult": {
+ "errorcode": 530,
+ "errortext": "Resource [DataCenter:1] is unreachable: Unable to reboot domR, it is not in right state Starting"
+ },
+ "created": "2013-11-19T11:41:40-0800",
+ "jobid": "850a3cfd-c265-48f1-880a-f001481fc7f7"
+ }
+ }
+
+
+ {
+ "queryasyncjobresultresponse": {
+ "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
+ "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
+ "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
+ "jobstatus": 0,
+ "jobprocstatus": 0,
+ "jobresultcode": 0,
+ "jobinstancetype": "DomainRouter",
+ "jobinstanceid": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
+ "created": "2013-11-19T11:41:40-0800",
+ "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
+ }
+ }
+ {
+ "queryasyncjobresultresponse": {
+ "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
+ "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
+ "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
+ "jobstatus": 0,
+ "jobprocstatus": 0,
+ "jobresultcode": 0,
+ "jobinstancetype": "DomainRouter",
+ "jobinstanceid": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
+ "created": "2013-11-19T11:41:40-0800",
+ "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
+ }
+ }
+ {
+ "queryasyncjobresultresponse": {
+ "accountid": "9b0ea3b4-a699-431c-932b-570388ef7b86",
+ "userid": "ce58353e-5099-11e3-80db-3c970e739c3e",
+ "cmd": "org.apache.cloudstack.api.command.admin.router.RebootRouterCmd",
+ "jobstatus": 1,
+ "jobprocstatus": 0,
+ "jobresultcode": 0,
+ "jobresulttype": "object",
+ "jobresult": {
+ "router": {
+ "id": "d6e625ea-76f9-4c35-9f89-0998a04a3b9c",
+ "zoneid": "3bfdd7d1-134a-4d75-8621-0ccfc8641660",
+ "zonename": "jw-adv",
+ "dns1": "8.8.8.8",
+ "gateway": "10.223.67.1",
+ "name": "r-6-VM",
+ "linklocalip": "169.254.2.29",
+ "linklocalmacaddress": "0e:00:a9:fe:02:1d",
+ "linklocalnetmask": "255.255.0.0",
+ "linklocalnetworkid": "4a02a05f-1312-484a-a82b-246a86ed6949",
+ "publicip": "10.223.67.6",
+ "publicmacaddress": "06:8d:22:00:00:18",
+ "publicnetmask": "255.255.255.0",
+ "publicnetworkid": "e7056c3c-2c7f-4e84-909e-af288ae170e9",
+ "templateid": "cd70f70a-5099-11e3-80db-3c970e739c3e",
+ "created": "2013-11-19T11:36:04-0800",
+ "state": "Running",
+ "account": "aaa_admin",
+ "domainid": "b95a5b02-e45d-4971-b0d8-d1620f7bf44e",
+ "domain": "aaa",
+ "serviceofferingid": "7dd7687c-01f0-4a14-846e-8e46067a8ff9",
+ "serviceofferingname": "System Offering For Software Router",
+ "isredundantrouter": false,
+ "redundantstate": "UNKNOWN",
+ "version": "3.0",
+ "role": "VIRTUAL_ROUTER",
+ "nic": [
+ {
+ "id": "d41bf67e-1d58-4ec9-bf61-41903140cc53",
+ "networkid": "e7056c3c-2c7f-4e84-909e-af288ae170e9",
+ "netmask": "255.255.255.0",
+ "gateway": "10.223.67.1",
+ "ipaddress": "10.223.67.6",
+ "isolationuri": "vlan://159",
+ "broadcasturi": "vlan://159",
+ "traffictype": "Public",
+ "isdefault": true,
+ "macaddress": "06:8d:22:00:00:18"
+ },
+ {
+ "id": "a6d1f6ac-fc45-474e-b372-3571e639fa8e",
+ "networkid": "4a02a05f-1312-484a-a82b-246a86ed6949",
+ "netmask": "255.255.0.0",
+ "gateway": "169.254.0.1",
+ "ipaddress": "169.254.2.29",
+ "traffictype": "Control",
+ "isdefault": false,
+ "macaddress": "0e:00:a9:fe:02:1d"
+ }
+ ],
+ "requiresupgrade": true,
+ "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c",
+ "jobstatus": 0
+ }
+ },
+ "created": "2013-11-19T11:41:40-0800",
+ "jobid": "d66fa7ef-c91f-425f-b820-2f8ff2a0da8c"
+ }
+ }
+ */
+ //example ends
+ }
+ }
+ }
+ });
+ },
+ notification: {
+ poll: pollAsyncJobResult
+ }
+ }
},
- async: false,
- success: function(json) {
- zone = json.listzonesresponse.zone[0];
- }
- });
- selectedZoneObj = zone;
+ dataProvider: function(args) {
+ var data = {};
+ listViewDataProvider(args, data);
- return {
- zones: [zone]
- };
+ var routers = [];
+
+ //get account-owned routers
+ $.ajax({
+ url: createURL('listRouters'),
+ data: $.extend(data,{
+ listAll: true
+ }),
+ async: false,
+ success: function(json) {
+ var items = json.listroutersresponse.router ? json.listroutersresponse.router : [];
+ $(items).map(function(index, item) {
+ routers.push(item);
+ });
+
+ //get project-owned routers
+ var toSearchByProjectid = true;
+ if (args.filterBy != null) {
+ if (args.filterBy.advSearch != null && typeof(args.filterBy.advSearch) == "object") { //advanced search
+ if ('account' in args.filterBy.advSearch && args.filterBy.advSearch.account.length > 0) { //if account is specified in advanced search, don't search project-owned routers
+ toSearchByProjectid = false; //since account and projectid can't be specified together
+ }
+ }
+ }
+ if (toSearchByProjectid) {
+ $.ajax({
+ url: createURL('listRouters'),
+ data: $.extend(data,{
+ listAll: true,
+ projectid: -1
+ }),
+ async: false,
+ success: function(json) {
+ var items = json.listroutersresponse.router ? json.listroutersresponse.router : [];
+ $(items).map(function(index, item) {
+ routers.push(item);
+ });
+ }
+ });
+ }
+ }
+ });
+
+ args.response.success({
+ actionFilter: routerActionfilter,
+ data: $(routers).map(mapRouterType)
+ });
+ },
+
+ detailView: {
+ updateContext: function(args) {
+ var zone;
+
+ $.ajax({
+ url: createURL('listZones'),
+ data: {
+ id: args.context.routers[0].zoneid
+ },
+ async: false,
+ success: function(json) {
+ zone = json.listzonesresponse.zone[0];
+ }
+ });
+
+ selectedZoneObj = zone;
+
+ return {
+ zones: [zone]
+ };
+ }
+ }
+ }
}
}
+ //???????
});
return listView;
@@ -7882,726 +7890,1492 @@
}),
subsections: {
virtualRouters: {
- listView: {
- label: 'label.virtual.appliances',
- id: 'routers',
- fields: {
- name: {
- label: 'label.name'
- },
- zonename: {
- label: 'label.zone'
- },
- routerType: {
- label: 'label.type'
- },
- state: {
- converter: function(str) {
- // For localization
- return str;
- },
- label: 'label.status',
- indicator: {
- 'Running': 'on',
- 'Stopped': 'off',
- 'Error': 'off'
- }
- }
- },
-
- advSearchFields: {
- name: {
- label: 'Name'
- },
- zoneid: {
- label: 'Zone',
- select: function(args) {
- $.ajax({
- url: createURL('listZones'),
- data: {
- listAll: true
+ sectionSelect: {
+ label: 'label.select-view'
+ },
+ sections: {
+ routerNoGroup: {
+ id: 'routers',
+ type: 'select',
+ title: '(no grouping)',
+ listView: {
+ id: 'routers',
+ label: 'label.virtual.appliances',
+ fields: {
+ name: {
+ label: 'label.name'
+ },
+ zonename: {
+ label: 'label.zone'
+ },
+ routerType: {
+ label: 'label.type'
+ },
+ state: {
+ converter: function(str) {
+ // For localization
+ return str;
},
- success: function(json) {
- var zones = json.listzonesresponse.zone ? json.listzonesresponse.zone : [];
-
- args.response.success({
- data: $.map(zones, function(zone) {
- return {
- id: zone.id,
- description: zone.name
- };
- })
- });
- }
- });
- }
- },
- podid: {
- label: 'Pod',
- dependsOn: 'zoneid',
- select: function (args) {
- $.ajax({
- url: createURL("listPods&zoneid=" + args.zoneid),
- dataType: "json",
- async: true,
- success: function (json) {
- var pods = json.listpodsresponse.pod ? json.listpodsresponse.pod : [];
- args.response.success({
- data: $.map(pods, function(pod) {
- return {
- id: pod.id,
- description: pod.name
- };
- })
- });
- }
- });
- }
- },
- clusterid: {
- label: 'label.cluster',
- dependsOn: 'podid',
- select: function(args) {
- $.ajax({
- url: createURL("listClusters&podid=" + args.podid),
- dataType: "json",
- async: false,
- success: function(json) {
- var clusters = json.listclustersresponse.cluster ? json.listclustersresponse.cluster : [];
- args.response.success({
- data: $.map(clusters, function(cluster) {
- return {
- id: cluster.id,
- description: cluster.name
- };
- })
- });
+ label: 'label.status',
+ indicator: {
+ 'Running': 'on',
+ 'Stopped': 'off',
+ 'Error': 'off'
}
- });
- }
- },
- domainid: {
- label: 'Domain',
- select: function(args) {
- if (isAdmin() || isDomainAdmin()) {
- $.ajax({
- url: createURL('listDomains'),
- data: {
- listAll: true,
- details: 'min'
- },
- success: function(json) {
- var array1 = [{
- id: '',
- description: ''
- }];
- var domains = json.listdomainsresponse.domain;
- if (domains != null && domains.length > 0) {
- for (var i = 0; i < domains.length; i++) {
- array1.push({
- id: domains[i].id,
- description: domains[i].path
- });
- }
- }
- args.response.success({
- data: array1
- });
- }
- });
- } else {
- args.response.success({
- data: null
- });
}
},
- isHidden: function(args) {
- if (isAdmin() || isDomainAdmin())
- return false;
- else
- return true;
- }
- },
-
- account: {
- label: 'Account',
- isHidden: function(args) {
- if (isAdmin() || isDomainAdmin())
- return false;
- else
- return true;
- }
- }
- },
-
- dataProvider: function(args) {
- var array1 = [];
- if (args.filterBy != null) {
- if (args.filterBy.search != null && args.filterBy.search.by != null && args.filterBy.search.value != null) {
- switch (args.filterBy.search.by) {
- case "name":
- if (args.filterBy.search.value.length > 0)
- array1.push("&keyword=" + args.filterBy.search.value);
- break;
- }
- }
- }
-
- var data2 = {
- forvpc: false
- };
- var routers = [];
- $.ajax({
- url: createURL("listRouters&zoneid=" + selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("")),
- data: data2,
- success: function(json) {
- var items = json.listroutersresponse.router ?
- json.listroutersresponse.router : [];
+ advSearchFields: {
+ name: {
+ label: 'Name'
+ },
+ zoneid: {
+ label: 'Zone',
+ select: function(args) {
+ $.ajax({
+ url: createURL('listZones'),
+ data: {
+ listAll: true
+ },
+ success: function(json) {
+ var zones = json.listzonesresponse.zone ? json.listzonesresponse.zone : [];
- $(items).map(function(index, item) {
- routers.push(item);
- });
- // Get project routers
- $.ajax({
- url: createURL("listRouters&zoneid=" + selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("") + "&projectid=-1"),
- data: data2,
- success: function(json) {
- var items = json.listroutersresponse.router ?
- json.listroutersresponse.router : [];
-
- $(items).map(function(index, item) {
- routers.push(item);
+ args.response.success({
+ data: $.map(zones, function(zone) {
+ return {
+ id: zone.id,
+ description: zone.name
+ };
+ })
+ });
+ }
});
- args.response.success({
- actionFilter: routerActionfilter,
- data: $(routers).map(mapRouterType)
+ }
+ },
+ podid: {
+ label: 'Pod',
+ dependsOn: 'zoneid',
+ select: function (args) {
+ $.ajax({
+ url: createURL("listPods&zoneid=" + args.zoneid),
+ dataType: "json",
+ async: true,
+ success: function (json) {
+ var pods = json.listpodsresponse.pod ? json.listpodsresponse.pod : [];
+ args.response.success({
+ data: $.map(pods, function(pod) {
+ return {
+ id: pod.id,
+ description: pod.name
+ };
+ })
+ });
+ }
});
}
- });
- }
-
<TRUNCATED>
[2/3] git commit: updated refs/heads/4.3 to 5b4fa5c
Posted by bf...@apache.org.
System, main routers page: Split into subsections (WIP)
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5b4fa5c0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5b4fa5c0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5b4fa5c0
Branch: refs/heads/4.3
Commit: 5b4fa5c0680d86d6a916ab641d601feeacf794b1
Parents: fb876d3
Author: Brian Federle <bf...@gmail.com>
Authored: Thu Nov 21 13:54:50 2013 -0800
Committer: Brian Federle <bf...@gmail.com>
Committed: Thu Nov 21 13:55:28 2013 -0800
----------------------------------------------------------------------
ui/scripts/system.js | 2836 +++++++++++++++++++++++++++++----------------
1 file changed, 1805 insertions(+), 1031 deletions(-)
----------------------------------------------------------------------
[3/3] git commit: updated refs/heads/4.3 to 5b4fa5c
Posted by bf...@apache.org.
List view: Support passing custom ID to detail view context
For section select list views, if 'id' is specied under section: {},
then use that ID instead of the section's key ID. This allows sections
to use i.e. the same ID as each other for a consistent context ID.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/fb876d3f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fb876d3f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fb876d3f
Branch: refs/heads/4.3
Commit: fb876d3f451e9849bcee3241b6216d8936dd47aa
Parents: cb14dad
Author: Brian Federle <bf...@gmail.com>
Authored: Thu Nov 21 13:53:11 2013 -0800
Committer: Brian Federle <bf...@gmail.com>
Committed: Thu Nov 21 13:55:28 2013 -0800
----------------------------------------------------------------------
ui/scripts/ui/widgets/listView.js | 36 +++++++++++++++++++++++++++++-----
1 file changed, 31 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fb876d3f/ui/scripts/ui/widgets/listView.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui/widgets/listView.js b/ui/scripts/ui/widgets/listView.js
index 3fa8f54..53b37f1 100644
--- a/ui/scripts/ui/widgets/listView.js
+++ b/ui/scripts/ui/widgets/listView.js
@@ -1330,9 +1330,24 @@
var itemID = $tr.data('list-view-item-id');
var jsonObj = $tr.data('json-obj');
var $loading = $('<div>').addClass('loading-overlay').appendTo($detailsContainer);
+ var listViewArgs = $listView.data('view-args');
+ var listViewActiveSection = activeSection;
+ var targetSection;
if ($tr.hasClass('loading')) return;
+ if (listViewActiveSection != '_zone') {
+ if (listViewArgs.sections &&
+ listViewArgs.sections[listViewActiveSection] &&
+ listViewArgs.sections[listViewActiveSection].id) {
+ targetSection = listViewArgs.sections[listViewActiveSection].id;
+ } else {
+ targetSection = listViewActiveSection;
+ }
+ } else {
+ targetSection = detailViewArgs.section;
+ }
+
// Title
$title.append(
$('<span>').html(_l('label.quickview') + ': '),
@@ -1352,7 +1367,7 @@
if (!$quickViewTooltip.is(':visible')) return;
// Init detail view
- context[activeSection] = [jsonObj];
+ context[targetSection] = [jsonObj];
createDetailView({
data: $.extend(true, {}, detailView, {
onLoad: function($detailView) {
@@ -1998,13 +2013,24 @@
var listViewArgs = $listView.data('view-args');
+ var targetSection;
+
detailViewArgs.section = listViewArgs.activeSection ?
listViewArgs.activeSection : listViewArgs.id;
- detailViewArgs.context[
- listViewActiveSection != '_zone' ?
- listViewActiveSection : detailViewArgs.section
- ] = [jsonObj];
+ if (listViewActiveSection != '_zone') {
+ if (listViewArgs.sections &&
+ listViewArgs.sections[listViewActiveSection] &&
+ listViewArgs.sections[listViewActiveSection].id) {
+ targetSection = listViewArgs.sections[listViewActiveSection].id;
+ } else {
+ targetSection = listViewActiveSection;
+ }
+ } else {
+ targetSection = detailViewArgs.section;
+ }
+
+ detailViewArgs.context[targetSection] = [jsonObj];
if ($.isFunction(detailViewArgs.data)) {
detailViewArgs.data = detailViewArgs.data({