src/pyams_skin/resources/js/myams-loader.js
changeset 566 a1707c607eec
parent 565 318533413200
child 567 bca1726b1d85
equal deleted inserted replaced
565:318533413200 566:a1707c607eec
     1 /**
       
     2  * MyAMS extensions loader
       
     3  * This extension can be used when application or site is only using the core MyAMS package, to
       
     4  * download a set of required extensions
       
     5  */
       
     6 (function($, globals) {
       
     7 
       
     8 	var ams = globals.MyAMS;
       
     9 
       
    10 	// Array of already loaded extensions
       
    11 	var loaded_extensions = [];
       
    12 
       
    13 	/**
       
    14 	 * MyAMS require function
       
    15 	 * This function can be used to download a set of MyAMS packages
       
    16 	 *
       
    17 	 * @param packages: array of packages names to download
       
    18 	 * @param callback: a function callback which will be executed when all required packages
       
    19 	 *   have been downloaded
       
    20 	 */
       
    21 	ams.require = function(packages, callback) {
       
    22 		var deferred = [];
       
    23 		for (var index=0; index < packages.length; index++) {
       
    24 			var package_name = packages[index];
       
    25 			if (loaded_extensions.indexOf(package_name) < 0) {
       
    26 				if (package_name.startsWith('http://') || package_name.startsWith('https://')) {
       
    27 					var source = package_name;
       
    28 				} else {
       
    29 					source = ams.baseURL + 'myams-' + package_name + ams.devext + '.js';
       
    30 				}
       
    31 				deferred.push(ams.getScript(source, {async: true}, console.error));
       
    32 				loaded_extensions.push(package_name);
       
    33 			}
       
    34 		}
       
    35 		if (deferred.length > 0) {
       
    36 			$.when.apply($, deferred).then(function () {
       
    37 				callback();
       
    38 			});
       
    39 		} else {
       
    40 			callback();
       
    41 		}
       
    42 	};
       
    43 
       
    44 })(jQuery, this);