vigiboard / vigiboard / public / js / main.js @ 7bde24ad
History | View | Annotate | Download (5.96 KB)
1 |
/*
|
---|---|
2 |
* Vigiboard
|
3 |
*
|
4 |
* Copyright (C) 2009-2015 CS-SI
|
5 |
*/
|
6 |
|
7 |
var vigiloLog = new Log(); |
8 |
// Activation ou désactivation du log en fonction
|
9 |
// de la valeur de la variable debug.
|
10 |
if (debug_mode) {
|
11 |
vigiloLog.enableLog(); |
12 |
} else {
|
13 |
vigiloLog.disableLog(); |
14 |
} |
15 |
|
16 |
|
17 |
window.search_dialog = null;
|
18 |
window.dlg_open_handler = function () { this.isOpen = true; }; |
19 |
window.dlg_close_handler = function () { this.isOpen = false; }; |
20 |
|
21 |
window.addEvent('domready', function (){ |
22 |
// Permet de refermer les dialogues en appuyant sur 'Échap'.
|
23 |
document.addEvent('keydown', function(e) { |
24 |
e = new Event(e);
|
25 |
if (e.key == 'esc' && Jx.Dialog.Stack.length) |
26 |
Jx.Dialog.Stack[Jx.Dialog.Stack.length-1].close();
|
27 |
}); |
28 |
|
29 |
/**
|
30 |
* HACK: le closed: True est nécessaire pour éviter que
|
31 |
* JxLib affiche le panel lors de la création du dialogue
|
32 |
* (affiche des rectangles blancs). Avec cette modification,
|
33 |
* le dialogue apparaît replié, mais est considéré comme
|
34 |
* déplié par Jx.Dialog. Les toggleCollapse permettent de
|
35 |
* marquer le Dialog comme replié dans Jx.Dialog avant de
|
36 |
* le déplier pour qu'il soit affiché correctement.
|
37 |
*/
|
38 |
window.search_dialog = new Jx.Dialog({
|
39 |
id: "SearchDialog", |
40 |
label: _('Search Event'), |
41 |
modal: false, |
42 |
resize: true, |
43 |
move: true, |
44 |
content: "search_form", |
45 |
onOpen: window.dlg_open_handler,
|
46 |
onClose: window.dlg_close_handler,
|
47 |
width: 400, |
48 |
height: 395, |
49 |
closed: true |
50 |
}); |
51 |
window.search_dialog.toggleCollapse(); |
52 |
window.search_dialog.toggleCollapse(); |
53 |
|
54 |
var selector = new SelectGroupTree({ |
55 |
title: _("Select a group"), |
56 |
labelId: "search_form_supitemgroup.ui", |
57 |
idId: "search_form_supitemgroup.value" |
58 |
}); |
59 |
selector.load(); |
60 |
$('search_form_supitemgroup').addEvent('click', function() { |
61 |
selector.open(); |
62 |
}); |
63 |
$('search_form_supitemgroup.clear').addEvent('click', function () { |
64 |
$('search_form_supitemgroup.ui').set('value', ''); |
65 |
$('search_form_supitemgroup.value').set('value', ''); |
66 |
}); |
67 |
|
68 |
add_autocompleter('search_form_host', 'host', app_path + '/autocomplete/host'); |
69 |
add_autocompleter('search_form_service', 'service', app_path + '/autocomplete/service'); |
70 |
add_autocompleter('search_form_hls', 'service', app_path + '/autocomplete/hls'); |
71 |
|
72 |
change_refresh_rate(refresh_status); |
73 |
|
74 |
$$('.date_field_button').addEvent('click', function () { |
75 |
$$(".calendar").setStyles({"zIndex": window.search_dialog.domObj.getStyle('zIndex').toInt()}); |
76 |
}); |
77 |
}); |
78 |
|
79 |
function change_fontsize(size) { |
80 |
document.body.style.fontSize = size; |
81 |
var req = new Request.JSON({ |
82 |
link: 'cancel', |
83 |
url: app_path + '/set_fontsize', |
84 |
onFailure: function () { |
85 |
alert(_('Unable to save preferences'));
|
86 |
} |
87 |
}); |
88 |
req.post({fontsize: size});
|
89 |
|
90 |
vigiloLog.log("Font size set to " + size + "."); |
91 |
} |
92 |
|
93 |
var refresh_timeout = null; |
94 |
function change_refresh_rate(enabled) { |
95 |
var delay = refresh_delay;
|
96 |
if (refresh_timeout) refresh_timeout = $clear(refresh_timeout); |
97 |
if (parseInt(enabled, 10) && delay) refresh_timeout = refresh_page.periodical(delay * 1000); |
98 |
} |
99 |
|
100 |
function set_refresh() { |
101 |
var enabled = $('refresh').get('checked') ? 1 : 0; |
102 |
var req = new Request.JSON({ |
103 |
link: 'cancel', |
104 |
url: app_path + '/set_refresh', |
105 |
onFailure: function () { |
106 |
alert(_('Unable to save preferences'));
|
107 |
} |
108 |
}); |
109 |
req.post({'refresh': enabled});
|
110 |
change_refresh_rate(enabled); |
111 |
} |
112 |
|
113 |
function refresh_page() { |
114 |
var dialogs = $$(".jxDialog"); |
115 |
for (var i=0; i<dialogs.length; i++) { |
116 |
if (dialogs[i].getStyle('display') != 'none') { |
117 |
vigiloLog.log("A dialog is active on the page ('" + dialogs[i].getElement('.jxDialogLabel').get('text') + "'): refresh is not possible."); |
118 |
return;
|
119 |
} |
120 |
} |
121 |
|
122 |
vigiloLog.log("No active dialog on the page: refreshing...");
|
123 |
|
124 |
/* La page principale est toujours rechargée, mais si on désactive
|
125 |
* le cache, cela vaut pour TOUTES les ressources. Ici, on veut
|
126 |
* réutiliser au maximum le contenu du cache.
|
127 |
* Observations faites sous Fx 3.6.8.
|
128 |
*/
|
129 |
var req = new Request.HTML({ |
130 |
method: "get", |
131 |
noCache: false, |
132 |
link: 'cancel', |
133 |
url: (new URI()), |
134 |
evalScripts: false, |
135 |
filter: 'table.vigitable', |
136 |
onSuccess: function (tree) { |
137 |
$$('table.vigitable')[0].empty().adopt(tree); |
138 |
}, |
139 |
onException: function () { |
140 |
// En cas d'erreur, on recharge toute la page.
|
141 |
alert(_('Could not refresh data, reloading the page'));
|
142 |
window.location.reload(false);
|
143 |
} |
144 |
}); |
145 |
req.send(); |
146 |
} |
147 |
|
148 |
function change_theme(theme_id, theme_name) { |
149 |
var req = new Request.JSON({ |
150 |
link: 'cancel', |
151 |
url: app_path + '/set_theme', |
152 |
onFailure: function () { |
153 |
alert(_('Unable to save preferences'));
|
154 |
} |
155 |
}); |
156 |
req.post({theme: theme_id});
|
157 |
setActiveStyleSheet(theme_name); |
158 |
|
159 |
vigiloLog.log("Theme set to '" + theme_name + "'."); |
160 |
} |
161 |
|
162 |
function setActiveStyleSheet(theme_name) { |
163 |
$$('link[rel~=stylesheet][title]').each(function (link_obj) { |
164 |
link_obj.set('disabled', true); |
165 |
if (link_obj.get('title') == theme_name) |
166 |
link_obj.set('disabled', false); |
167 |
}); |
168 |
} |
169 |
|
170 |
function add_autocompleter(elem, varname, url) { |
171 |
new Autocompleter.Request.VigiloJSON(elem, url, {
|
172 |
// ATTENTION: domObj n'est pas documenté dans l'API.
|
173 |
zIndex: window.search_dialog.domObj.getStyle('zIndex').toInt(), |
174 |
minLength: 1, |
175 |
selectMode: 'pick', |
176 |
postVar: varname,
|
177 |
overflow: true |
178 |
}); |
179 |
} |
180 |
|
181 |
function set_items_per_page(ipp) { |
182 |
var req = new Request.JSON({ |
183 |
link: 'cancel', |
184 |
url: app_path + '/set_items_per_page', |
185 |
onFailure: function () { |
186 |
alert(_('Unable to save preferences'));
|
187 |
}, |
188 |
onSuccess: function () { |
189 |
refresh_page(); |
190 |
} |
191 |
}); |
192 |
req.post({items: ipp});
|
193 |
} |