mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			133 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			5.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.uiCustom.physicalResources = function(args) {
 | 
						|
    var listView = function(targetID) {
 | 
						|
      var target = args.sections.physicalResources.listView[targetID];
 | 
						|
 | 
						|
      return $('<div>').listView({ listView: $.isFunction(target) ? target() : target });
 | 
						|
    };
 | 
						|
    var $dashboard = $('#template').find('.system-dashboard-view').clone();
 | 
						|
    var getData = function() {
 | 
						|
      // Populate data
 | 
						|
      $dashboard.find('[data-item]').hide();
 | 
						|
      cloudStack.sections.system.dashboard.dataProvider({
 | 
						|
        response: {
 | 
						|
          success: function(args) {
 | 
						|
            var data = args.data;
 | 
						|
            $.each(data, function(key, value) {
 | 
						|
              var $elem = $dashboard.find('[data-item=' + key + ']');
 | 
						|
              $elem.hide().html(value).fadeIn();
 | 
						|
            });
 | 
						|
          }
 | 
						|
        }
 | 
						|
      });
 | 
						|
    };
 | 
						|
    var resourceChart = function(args) {
 | 
						|
      getData();
 | 
						|
      return $dashboard
 | 
						|
        .click(function(event) {
 | 
						|
          var $target = $(event.target);
 | 
						|
          if ($target.closest('[view-all-target]').size()) {
 | 
						|
            var targetID = $target.closest('[view-all-target]').attr('view-all-target');
 | 
						|
            args.$browser.cloudBrowser('addPanel', {
 | 
						|
              title: $target.closest('[view-all-title]').attr('view-all-title'),
 | 
						|
              data: '',
 | 
						|
              noSelectPanel: true,
 | 
						|
              maximizeIfSelected: true,
 | 
						|
              complete: function($newPanel) {
 | 
						|
                listView(targetID).appendTo($newPanel);
 | 
						|
              }
 | 
						|
            });
 | 
						|
          }
 | 
						|
        });
 | 
						|
    };
 | 
						|
    $(window).bind('cloudStack.fullRefresh cloudStack.updateResources', function() {
 | 
						|
      if ($dashboard.is(':visible')) {
 | 
						|
        getData();
 | 
						|
      }
 | 
						|
    });
 | 
						|
    return function(args) {
 | 
						|
      $dashboard.find('#update_ssl_button').click(function() {
 | 
						|
        cloudStack.dialog.createForm({
 | 
						|
          form: {
 | 
						|
            title: 'label.update.ssl',
 | 
						|
            desc: 'message.update.ssl',
 | 
						|
            fields: {
 | 
						|
              certificate: { label: 'label.certificate', isTextarea: true },
 | 
						|
              privatekey: { label: 'label.privatekey', isTextarea: true },
 | 
						|
              domainsuffix: { label: 'label.domain.suffix' }
 | 
						|
            }
 | 
						|
          },
 | 
						|
          after: function(args) {
 | 
						|
            var $loading = $('<div>').addClass('loading-overlay');
 | 
						|
            $('.system-dashboard-view:visible').prepend($loading);
 | 
						|
            $.ajax({
 | 
						|
              url: createURL('uploadCustomCertificate'),
 | 
						|
              data: {
 | 
						|
                certificate: args.data.certificate,
 | 
						|
                privatekey: args.data.privatekey,
 | 
						|
                domainsuffix: args.data.domainsuffix
 | 
						|
              },
 | 
						|
              dataType: 'json',
 | 
						|
              success: function(json) {
 | 
						|
                var jid = json.uploadcustomcertificateresponse.jobid;
 | 
						|
                var uploadCustomCertificateIntervalID = setInterval(function() { 	
 | 
						|
                  $.ajax({
 | 
						|
                    url: createURL("queryAsyncJobResult&jobId=" + jid),
 | 
						|
                    dataType: "json",
 | 
						|
                    success: function(json) {
 | 
						|
                      var result = json.queryasyncjobresultresponse;
 | 
						|
                      if (result.jobstatus == 0) {
 | 
						|
                        return; //Job has not completed
 | 
						|
                      }
 | 
						|
                      else {
 | 
						|
                        clearInterval(uploadCustomCertificateIntervalID); 
 | 
						|
                        if (result.jobstatus == 1) {
 | 
						|
                          cloudStack.dialog.notice({ message: 'Update SSL Certiciate succeeded' });
 | 
						|
                        }
 | 
						|
                        else if (result.jobstatus == 2) {
 | 
						|
                          cloudStack.dialog.notice({ message: 'Failed to update SSL Certificate. ' + _s(result.jobresult.errortext) });
 | 
						|
                        }
 | 
						|
                        $loading.remove();
 | 
						|
                      }
 | 
						|
                    },
 | 
						|
                    error: function(XMLHttpResponse) {
 | 
						|
                      cloudStack.dialog.notice({ message: 'Failed to update SSL Certificate. ' + parseXMLHttpResponse(XMLHttpResponse) });
 | 
						|
                      $loading.remove();
 | 
						|
                    }
 | 
						|
                  });
 | 
						|
                }, 3000); 		
 | 
						|
              },
 | 
						|
              error: function(XMLHttpResponse) {
 | 
						|
                cloudStack.dialog.notice({ message: 'Failed to update SSL Certificate. ' + parseXMLHttpResponse(XMLHttpResponse) });
 | 
						|
                $loading.remove();
 | 
						|
              }
 | 
						|
            });
 | 
						|
          },
 | 
						|
          context: {}
 | 
						|
        });
 | 
						|
        return false;
 | 
						|
      });
 | 
						|
      $dashboard.find('#refresh_button').click(function() {
 | 
						|
        getData();
 | 
						|
        return false;
 | 
						|
      });
 | 
						|
      return resourceChart(args);
 | 
						|
    };
 | 
						|
  };
 | 
						|
}(cloudStack, jQuery)); |