Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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
}