openlayers-8.x-4.x-dev/js/openlayers.pluginManager.js
js/openlayers.pluginManager.js
(function ($, Drupal) {
"use strict";
var plugins = [];
Drupal.openlayersPluginManager = {
attach: function (context, settings) {
for (var i in plugins) {
var plugin = plugins[i];
if (typeof plugin.attach === 'function') {
plugin.attach(context, settings);
}
}
},
detach: function (context, settings) {
for (var i in plugins) {
var plugin = plugins[i];
if (typeof plugin.detach === 'function') {
plugin.detach(context, settings);
}
}
},
alter: function () {
// TODO: alter hook
},
getPlugin: function (factoryService) {
if (this.isRegistered(factoryService)) {
return plugins[factoryService];
}
return false;
},
getPlugins: function () {
return Object.keys(plugins);
},
register: function (plugin) {
if ((typeof plugin !== 'object') || (plugin === null)) {
return false;
}
if (typeof plugin.init !== 'function') {
return false;
}
if (!plugin.hasOwnProperty('fs')) {
return false;
}
plugins[plugin.fs] = plugin;
},
createInstance: function (factoryService, data) {
if (!this.isRegistered(factoryService)) {
return false;
}
try {
var obj = plugins[factoryService].init(data);
} catch (e) {
if (console !== undefined) {
Drupal.openlayers.console.log(e.message);
Drupal.openlayers.console.log(e.stack);
}
else {
$(this).text('Error during map rendering: ' + e.message);
$(this).text('Stack: ' + e.stack);
}
}
var objType = typeof obj;
if ((objType === 'object') && (objType !== null) || (objType === 'function')) {
obj.mn = data.data.mn;
return obj;
}
return false;
},
isRegistered: function (factoryService) {
return (factoryService in plugins); // TODO: plugins array is empty !!
}
};
}(jQuery, Drupal));
