Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / public / js / main.js @ 011743be

History | View | Annotate | Download (6.06 KB)

1 db6fbc92 Aurelien BOMPARD
/*
2
 * Vigiboard
3
 *
4 011743be Francois POIROTTE
 * Copyright (C) 2009-2020 CS GROUP - France
5 db6fbc92 Aurelien BOMPARD
 */
6
7 eaac00c2 Francois POIROTTE
var vigiloLog = new Log();
8 7bde24ad Francois POIROTTE
// Activation ou désactivation du log en fonction
9
// de la valeur de la variable debug.
10 db6fbc92 Aurelien BOMPARD
if (debug_mode) {
11
    vigiloLog.enableLog();
12
} else {
13
    vigiloLog.disableLog();
14
}
15
16
17
window.search_dialog = null;
18 a6979553 Aurelien BOMPARD
window.dlg_open_handler = function () { this.isOpen = true; };
19
window.dlg_close_handler = function () { this.isOpen = false; };
20 db6fbc92 Aurelien BOMPARD
21
window.addEvent('domready', function (){
22 f2803249 Francois POIROTTE
    // 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 db6fbc92 Aurelien BOMPARD
    /**
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 5cb28e04 Francois POIROTTE
        resize: true,
43 db6fbc92 Aurelien BOMPARD
        move: true,
44
        content: "search_form",
45
        onOpen: window.dlg_open_handler,
46
        onClose: window.dlg_close_handler,
47
        width: 400,
48 eced9ab0 Vincent QUEMENER
        height: 395,
49 db6fbc92 Aurelien BOMPARD
        closed: true
50
    });
51
    window.search_dialog.toggleCollapse();
52
    window.search_dialog.toggleCollapse();
53
54 aa6e5fe9 Aurelien BOMPARD
    var selector = new SelectGroupTree({
55
        title: _("Select a group"),
56
        labelId: "search_form_supitemgroup.ui",
57
        idId: "search_form_supitemgroup.value"
58 db6fbc92 Aurelien BOMPARD
    });
59 aa6e5fe9 Aurelien BOMPARD
    selector.load();
60
    $('search_form_supitemgroup').addEvent('click', function() {
61
        selector.open();
62 db6fbc92 Aurelien BOMPARD
    });
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 3ba1cdd2 Francois POIROTTE
    add_autocompleter('search_form_hls', 'service', app_path + '/autocomplete/hls');
71 db6fbc92 Aurelien BOMPARD
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 6d2f147e Francois POIROTTE
78
    document.fireEvent('board-update');
79 db6fbc92 Aurelien BOMPARD
});
80
81
function change_fontsize(size) {
82
    document.body.style.fontSize = size;
83
    var req = new Request.JSON({
84
        link: 'cancel',
85
        url: app_path + '/set_fontsize',
86
        onFailure: function () {
87
            alert(_('Unable to save preferences'));
88
        }
89
    });
90
    req.post({fontsize: size});
91
92
    vigiloLog.log("Font size set to " + size + ".");
93
}
94
95
var refresh_timeout = null;
96
function change_refresh_rate(enabled) {
97
    var delay = refresh_delay;
98
    if (refresh_timeout) refresh_timeout = $clear(refresh_timeout);
99 a6979553 Aurelien BOMPARD
    if (parseInt(enabled, 10) && delay) refresh_timeout = refresh_page.periodical(delay * 1000);
100 db6fbc92 Aurelien BOMPARD
}
101
102
function set_refresh() {
103 8d822583 Francois POIROTTE
    var enabled = $('refresh').get('checked') ? 1 : 0;
104 db6fbc92 Aurelien BOMPARD
    var req = new Request.JSON({
105
        link: 'cancel',
106
        url: app_path + '/set_refresh',
107
        onFailure: function () {
108
            alert(_('Unable to save preferences'));
109
        }
110
    });
111
    req.post({'refresh': enabled});
112
    change_refresh_rate(enabled);
113
}
114
115
function refresh_page() {
116
    var dialogs = $$(".jxDialog");
117
    for (var i=0; i<dialogs.length; i++) {
118
        if (dialogs[i].getStyle('display') != 'none') {
119
            vigiloLog.log("A dialog is active on the page ('" + dialogs[i].getElement('.jxDialogLabel').get('text') + "'): refresh is not possible.");
120
            return;
121
        }
122
    }
123
124
    vigiloLog.log("No active dialog on the page: refreshing...");
125 04e15401 Francois POIROTTE
126
    /* La page principale est toujours rechargée, mais si on désactive
127
     * le cache, cela vaut pour TOUTES les ressources. Ici, on veut
128
     * réutiliser au maximum le contenu du cache.
129
     * Observations faites sous Fx 3.6.8.
130
     */
131 7bde24ad Francois POIROTTE
    var req = new Request.HTML({
132
        method: "get",
133
        noCache: false,
134
        link: 'cancel',
135
        url: (new URI()),
136
        evalScripts: false,
137
        filter: 'table.vigitable',
138
        onSuccess: function (tree) {
139 fbbf34f8 Francois POIROTTE
            tree.replaces($$('table.vigitable')[0]);
140 6d2f147e Francois POIROTTE
            document.fireEvent('board-update');
141 7bde24ad Francois POIROTTE
        },
142
        onException: function () {
143
            // En cas d'erreur, on recharge toute la page.
144
            alert(_('Could not refresh data, reloading the page'));
145
            window.location.reload(false);
146
        }
147
    });
148
    req.send();
149 db6fbc92 Aurelien BOMPARD
}
150
151
function change_theme(theme_id, theme_name) {
152
    var req = new Request.JSON({
153
        link: 'cancel',
154
        url: app_path + '/set_theme',
155
        onFailure: function () {
156
            alert(_('Unable to save preferences'));
157
        }
158
    });
159 36f6910e Francois POIROTTE
    req.post({theme: theme_id});
160 db6fbc92 Aurelien BOMPARD
    setActiveStyleSheet(theme_name);
161
162
    vigiloLog.log("Theme set to '" + theme_name + "'.");
163
}
164
165
function setActiveStyleSheet(theme_name) {
166
    $$('link[rel~=stylesheet][title]').each(function (link_obj) {
167
        link_obj.set('disabled', true);
168
        if (link_obj.get('title') == theme_name)
169
            link_obj.set('disabled', false);
170 a6979553 Aurelien BOMPARD
    });
171 db6fbc92 Aurelien BOMPARD
}
172
173
function add_autocompleter(elem, varname, url) {
174
    new Autocompleter.Request.VigiloJSON(elem, url, {
175
        // ATTENTION: domObj n'est pas documenté dans l'API.
176
        zIndex: window.search_dialog.domObj.getStyle('zIndex').toInt(),
177
        minLength: 1,
178
        selectMode: 'pick',
179
        postVar: varname,
180
        overflow: true
181
    });
182
}
183 36f6910e Francois POIROTTE
184
function set_items_per_page(ipp) {
185
    var req = new Request.JSON({
186
        link: 'cancel',
187
        url: app_path + '/set_items_per_page',
188
        onFailure: function () {
189
            alert(_('Unable to save preferences'));
190
        },
191
        onSuccess: function () {
192
            refresh_page();
193
        }
194
    });
195
    req.post({items: ipp});
196
}