Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (6.06 KB)

1
/*
2
 * Vigiboard
3
 *
4
 * Copyright (C) 2009-2020 CS GROUP - France
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
    document.fireEvent('board-update');
79
});
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
    if (parseInt(enabled, 10) && delay) refresh_timeout = refresh_page.periodical(delay * 1000);
100
}
101

    
102
function set_refresh() {
103
    var enabled = $('refresh').get('checked') ? 1 : 0;
104
    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

    
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
    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
            tree.replaces($$('table.vigitable')[0]);
140
            document.fireEvent('board-update');
141
        },
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
}
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
    req.post({theme: theme_id});
160
    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
    });
171
}
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

    
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
}