mirror of
https://github.com/Karaka-Management/jsOMS.git
synced 2026-01-11 01:48:40 +00:00
Sync loading still not implemented. Now only one file can be included and the callback still needs to be implemented. Maybe allow arrays for includes and THEN do the callback?!
106 lines
2.7 KiB
JavaScript
106 lines
2.7 KiB
JavaScript
/**
|
|
* Autoloader.
|
|
*
|
|
* @author OMS Development Team <dev@oms.com>
|
|
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
|
* @copyright 2013 Dennis Eichhorn
|
|
* @license OMS License 1.0
|
|
* @version 1.0.0 * @since 1.0.0
|
|
*/
|
|
(function (jsOMS)
|
|
{
|
|
"use strict";
|
|
|
|
jsOMS.Autoloader = {};
|
|
jsOMS.Autoloader.loaded = [];
|
|
jsOMS.Autoloader.namespaced = [];
|
|
jsOMS.Autoloader.assetLoader = new jsOMS.Asset.AssetManager();
|
|
|
|
/**
|
|
* Define namespace
|
|
*
|
|
* @param {string} namespace Namespace
|
|
*
|
|
* @since 1.0.0
|
|
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
|
*/
|
|
jsOMS.Autoloader.defineNamespace = function (namespace)
|
|
{
|
|
if (jsOMS.Autoloader.namespaced.indexOf(namespace) === -1) {
|
|
let paths = namespace.split('.');
|
|
paths.splice(0, 1);
|
|
|
|
let length = paths.length,
|
|
current = jsOMS;
|
|
|
|
for (let i = 0; i < length; i++) {
|
|
if (typeof current[paths[i]] === 'undefined') {
|
|
current[paths[i]] = {};
|
|
}
|
|
|
|
current = current[paths[i]];
|
|
}
|
|
|
|
jsOMS.Autoloader.namespaced.push(namespace);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Collect all loaded javascript files
|
|
*
|
|
* @since 1.0.0
|
|
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
|
*/
|
|
jsOMS.Autoloader.initPreloaded = function ()
|
|
{
|
|
let scripts = document.getElementsByTagName('script'),
|
|
length = scripts.length;
|
|
|
|
for (let i = 0; i < length; i++) {
|
|
/** global: URL */
|
|
/** @var {string} URL */
|
|
scripts[i].src.replace(URL + '/', '');
|
|
|
|
if (jsOMS.Autoloader.loaded.indexOf(scripts[i].src) === -1) {
|
|
jsOMS.Autoloader.loaded.push(scripts[i].src);
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Add loaded script
|
|
*
|
|
* @param {string} file Script URI
|
|
*
|
|
* @since 1.0.0
|
|
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
|
*/
|
|
jsOMS.Autoloader.addPreloaded = function (file)
|
|
{
|
|
if (jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
|
jsOMS.Autoloader.loaded.push(file);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Include script
|
|
*
|
|
* @param {string} file Script URI
|
|
* @param {function} callback Callback after script loading
|
|
*
|
|
* @since 1.0.0
|
|
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
|
*/
|
|
jsOMS.Autoloader.include = function (file, callback)
|
|
{
|
|
let length = file.length;
|
|
|
|
for (let i = 0; i < length; i++) {
|
|
if (jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
|
this.assetLoader.load(file, 'js');
|
|
|
|
jsOMS.Autoloader.loaded.push(file);
|
|
}
|
|
}
|
|
};
|
|
}(window.jsOMS = window.jsOMS || {})); |