plugins.client.js
1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
*
*/
(function (angular) {
var SECTION_NAME = "plugins";
angular
.module("BrowserSync")
.controller("PluginsController", [
"options",
"Socket",
"pagesConfig",
PluginsPageController
]);
/**
* @param options
* @param Socket
* @param pagesConfig
* @constructor
*/
function PluginsPageController(options, Socket, pagesConfig) {
var ctrl = this;
ctrl.section = pagesConfig[SECTION_NAME];
ctrl.options = options.bs;
ctrl.uiOptions = options.ui;
/**
* Don't show this UI as user plugin
*/
var filtered = ctrl.options.userPlugins.filter(function (item) {
return item.name !== "UI";
}).map(function (item) {
item.title = item.name;
return item;
});
var named = filtered.reduce(function (all, item) {
all[item.name] = item;
return all;
}, {});
/**
* @type {{loading: boolean}}
*/
ctrl.ui = {
loading: false,
plugins: filtered,
named: named
};
/**
* Toggle a pluginrs
*/
ctrl.togglePlugin = function (plugin) {
Socket.uiEvent({
namespace: SECTION_NAME,
event: "set",
data: plugin
});
};
/**
* Set the state of many options
* @param value
*/
ctrl.setMany = function (value) {
Socket.uiEvent({
namespace: SECTION_NAME,
event: "setMany",
data: value
});
ctrl.ui.plugins = ctrl.ui.plugins.map(function (item) {
item.active = value;
return item;
});
};
}
})(angular);