mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			198 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // 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.
 | |
| (function(cloudStack) {
 | |
|   cloudStack.sections.regions = {
 | |
|     title: 'label.menu.regions',
 | |
|     id: 'regions',
 | |
|     regionSelector: {
 | |
|       dataProvider: function(args) {
 | |
|         $.ajax({
 | |
|           url: createURL('listRegions&listAll=true'),
 | |
|           success: function(json) {
 | |
|             var regions = json.listregionsresponse.region;
 | |
| 
 | |
|             args.response.success({
 | |
|               data: regions ? regions : [
 | |
|                 { id: -1, name: _l('label.no.data') }
 | |
|               ]
 | |
|             });
 | |
|           }
 | |
|         }); 
 | |
|       }
 | |
|     },
 | |
|     listView: {
 | |
|       section: 'regions',
 | |
|       fields: {
 | |
|         name: { label: 'label.name' },
 | |
|         id: { label: 'ID' },
 | |
|         endpoint: { label: 'label.endpoint' }
 | |
|       },
 | |
|       actions: {
 | |
|         add: {
 | |
|           label: 'label.add.region',
 | |
|           messages: {
 | |
|             notification: function() { return 'label.add.region'; }
 | |
|           },
 | |
|           createForm: {
 | |
|             title: 'label.add.region',
 | |
|             desc: 'message.add.region',
 | |
|             fields: {
 | |
|               id: { label: 'label.id', validation: { required: true } },
 | |
|               name: { label: 'label.name', validation: { required: true } },
 | |
|               endpoint: { label: 'label.endpoint', validation: { required: true } }             
 | |
|             }
 | |
|           },
 | |
|           action: function(args) {					  
 | |
| 						var data = {							
 | |
| 							id: args.data.id,
 | |
| 							name: args.data.name,
 | |
| 							endpoint: args.data.endpoint
 | |
| 						};		
 | |
| 						
 | |
|             $.ajax({
 | |
|               url: createURL('addRegion'),
 | |
|               data: data,
 | |
|               success: function(json) {							 
 | |
|                 var item = json.addregionresponse.region;
 | |
|                 args.response.success({data: item});               
 | |
|                 $(window).trigger('cloudStack.refreshRegions');
 | |
|               },
 | |
|               error: function(json) {
 | |
|                 args.response.error(parseXMLHttpResponse(json));
 | |
|               } 
 | |
|             });
 | |
|           },										
 | |
| 					notification: {
 | |
| 						poll: function(args) {
 | |
| 							args.complete();
 | |
| 						}
 | |
| 					}			
 | |
|         }
 | |
|       },
 | |
|       dataProvider: function(args) {
 | |
|         $.ajax({
 | |
|           url: createURL('listRegions&listAll=true'),
 | |
|           success: function(json) {
 | |
|             var regions = json.listregionsresponse.region
 | |
| 
 | |
|             args.response.success({
 | |
|               data: regions ? regions : []
 | |
|             });
 | |
|           },
 | |
|           error: function(json) {
 | |
|             args.response.error(parseXMLHttpResponse(json));
 | |
|           } 
 | |
|         });
 | |
|       },
 | |
|       detailView: {
 | |
|         name: 'Region details',
 | |
|         actions: {
 | |
|           edit: {
 | |
|             label: 'label.edit.region',
 | |
|             action: function(args) {
 | |
| 							var data = {
 | |
| 							  id: args.context.regions[0].id,
 | |
| 								name: args.data.name,
 | |
| 								endpoint: args.data.endpoint
 | |
| 							};							
 | |
| 						
 | |
|               $.ajax({
 | |
|                 url: createURL('updateRegion'),
 | |
|                 data: data,
 | |
|                 success: function(json) {
 | |
|                   args.response.success();
 | |
|                   $(window).trigger('cloudStack.refreshRegions');
 | |
|                 },
 | |
|                 error: function(json) {
 | |
|                   args.response.error(parseXMLHttpResponse(json));
 | |
|                 } 
 | |
|               });
 | |
|             }
 | |
|           },
 | |
|           remove: {
 | |
|             label: 'label.remove.region',
 | |
|             messages: {
 | |
|               notification: function() { return 'label.remove.region'; },
 | |
|               confirm: function() { return 'message.remove.region'; }
 | |
|             },						
 | |
| 						preAction: function(args) {
 | |
| 						  var region = args.context.regions[0];							
 | |
| 														
 | |
| 							/* e.g.
 | |
| 							region.endpoint	== "http://localhost:8080/client/" 
 | |
| 							document.location.href == "http://localhost:8080/client/#" 
 | |
| 							*/
 | |
| 							/*
 | |
| 							if(document.location.href.indexOf(region.endpoint) != -1) {	
 | |
| 							  cloudStack.dialog.notice({ message: _l('You can not remove the region that you are currently in.') });
 | |
|                 return false;
 | |
| 							}				
 | |
|               */							
 | |
|               return true;
 | |
|             },	
 | |
|             action: function(args) {
 | |
|               var region = args.context.regions[0];
 | |
| 
 | |
|               $.ajax({ 
 | |
|                 url: createURL('removeRegion'),
 | |
|                 data: { id: region.id },
 | |
|                 success: function(json) {
 | |
|                   args.response.success();
 | |
|                   $(window).trigger('cloudStack.refreshRegions');
 | |
|                 },
 | |
|                 error: function(json) {
 | |
|                   args.response.error(parseXMLHttpResponse(json));
 | |
|                 } 
 | |
|               });
 | |
|             }
 | |
|           }
 | |
|         },
 | |
|         tabs: {
 | |
|           details: {
 | |
|             title: 'label.details',
 | |
|             fields: [
 | |
|               {
 | |
|                 id: { label: 'label.id' }
 | |
|               },
 | |
|               {
 | |
| 							  name: { label: 'label.name', isEditable: true },
 | |
|                 endpoint: { label: 'label.endpoint', isEditable: true }                
 | |
|               }
 | |
|             ],
 | |
|             dataProvider: function(args) {								  
 | |
|               $.ajax({
 | |
|                 url: createURL('listRegions&listAll=true'),
 | |
|                 data: { id: args.context.regions[0].id },
 | |
|                 success: function(json) {
 | |
|                   var region = json.listregionsresponse.region
 | |
| 
 | |
|                   args.response.success({
 | |
|                     data: region ? region[0] : {}
 | |
|                   });
 | |
|                 },
 | |
|                 error: function(json) {
 | |
|                   args.response.error(parseXMLHttpResponse(json));
 | |
|                 } 
 | |
|               });  
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   };
 | |
| })(cloudStack);
 |