Yangman - precheck patharray, fix modal z-index and so on
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / services / plugins-handler.services.js
1 var yangmanPluginsFactories = [
2     'ymDisplayMountPoints',
3 ];
4
5 var yangmanPluginContollers = [
6 ];
7
8 define([
9     'common/yangutils/services/custom-funct.services',
10 ].concat(yangmanPluginsFactories.map(function (plugin) {
11     'use strict';
12     return 'app/yangman/services/plugins/' + plugin + '.services';
13 })).concat(yangmanPluginContollers.map(function (ctrl) {
14     'use strict';
15     return 'app/yangman/plugins/cv/' + ctrl + '.controller';
16 })), function () {
17     'use strict';
18
19     angular.module('app.yangman').service('PluginsHandlerService', PluginsHandlerService);
20
21     function PluginsHandlerService($injector, CustomFuncService) {
22
23         var service = {
24             addPlugins: addPlugins,
25             plugAll: plugAll,
26             plugins: [],
27         };
28
29         service.addPlugins();
30
31         return service;
32
33         // TODO: add service's description
34         function addPlugins() {
35             yangmanPluginsFactories.forEach(function (pluginFactFullName) {
36                 var pluginServiceName = pluginFactFullName.split('/'),
37                     pluginName = pluginServiceName[pluginServiceName.length - 1].split('.')[0];
38
39                 $injector.invoke([pluginName, function (pluginFact) {
40                     service.plugins.push(pluginFact);
41                 }]);
42             });
43
44         }
45
46         /**
47          * Method for importing additional plugins
48          * @param apis
49          */
50         function plugAll(apis) {
51             service.plugins.forEach(function (plugin) {
52                 console.info('YANGMAN :: adding plugin', plugin.label);
53                 plugin.module.forEach(function (plModule, i){
54                     CustomFuncService.createCustomFunctionalityApis(apis, plModule, plugin.revision,
55                                                                     plugin.pathString[i], plugin.label,
56                                                                     plugin.getCallback, plugin.view,
57                                                                     plugin.hideButtonOnSelect);
58                 });
59             });
60         }
61     }
62 });