Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / public / js / main.js @ 25892058

History | View | Annotate | Download (5.13 KB)

1
/*
2
 * Vigiboard
3
 *
4
 * Copyright (C) 2009-2013 CS-SI
5
 */
6

    
7
var vigiloLog = new Log();
8
// Activation ou désactivation du log en fonction de valeur de la variable debug.
9
if (debug_mode) {
10
    vigiloLog.enableLog();
11
} else {
12
    vigiloLog.disableLog();
13
}
14

    
15

    
16
window.search_dialog = null;
17
window.dlg_open_handler = function () { this.isOpen = true; };
18
window.dlg_close_handler = function () { this.isOpen = false; };
19

    
20
window.addEvent('domready', function (){
21
    // Permet de refermer les dialogues en appuyant sur 'Échap'.
22
    document.addEvent('keydown', function(e) {
23
        e = new Event(e);
24
        if (e.key == 'esc' && Jx.Dialog.Stack.length)
25
            Jx.Dialog.Stack[Jx.Dialog.Stack.length-1].close();
26
    });
27

    
28
    /**
29
     * HACK: le closed: True est nécessaire pour éviter que
30
     * JxLib affiche le panel lors de la création du dialogue
31
     * (affiche des rectangles blancs). Avec cette modification,
32
     * le dialogue apparaît replié, mais est considéré comme
33
     * déplié par Jx.Dialog. Les toggleCollapse permettent de
34
     * marquer le Dialog comme replié dans Jx.Dialog avant de
35
     * le déplier pour qu'il soit affiché correctement.
36
     */
37
    window.search_dialog = new Jx.Dialog({
38
        id: "SearchDialog",
39
        label: _('Search Event'),
40
        modal: false,
41
        resize: false,
42
        move: true,
43
        content: "search_form",
44
        onOpen: window.dlg_open_handler,
45
        onClose: window.dlg_close_handler,
46
        width: 400,
47
        height: 325,
48
        closed: true
49
    });
50
    window.search_dialog.toggleCollapse();
51
    window.search_dialog.toggleCollapse();
52

    
53
    var selector = new SelectGroupTree({
54
        title: _("Select a group"),
55
        labelId: "search_form_supitemgroup.ui",
56
        idId: "search_form_supitemgroup.value"
57
    });
58
    selector.load();
59
    $('search_form_supitemgroup').addEvent('click', function() {
60
        selector.open();
61
    });
62
    $('search_form_supitemgroup.clear').addEvent('click', function () {
63
        $('search_form_supitemgroup.ui').set('value', '');
64
        $('search_form_supitemgroup.value').set('value', '');
65
    });
66

    
67
    add_autocompleter('search_form_host', 'host', app_path + '/autocomplete/host');
68
    add_autocompleter('search_form_service', 'service', app_path + '/autocomplete/service');
69
    add_autocompleter('search_form_hls', 'service', app_path + '/autocomplete/hls');
70

    
71
    change_refresh_rate(refresh_status);
72

    
73
    $$('.date_field_button').addEvent('click', function () {
74
        $$(".calendar").setStyles({"zIndex": window.search_dialog.domObj.getStyle('zIndex').toInt()});
75
    });
76
});
77

    
78
function change_fontsize(size) {
79
    document.body.style.fontSize = size;
80
    var req = new Request.JSON({
81
        link: 'cancel',
82
        url: app_path + '/set_fontsize',
83
        onFailure: function () {
84
            alert(_('Unable to save preferences'));
85
        }
86
    });
87
    req.post({fontsize: size});
88

    
89
    vigiloLog.log("Font size set to " + size + ".");
90
}
91

    
92
var refresh_timeout = null;
93
function change_refresh_rate(enabled) {
94
    var delay = refresh_delay;
95
    if (refresh_timeout) refresh_timeout = $clear(refresh_timeout);
96
    if (parseInt(enabled, 10) && delay) refresh_timeout = refresh_page.periodical(delay * 1000);
97
}
98

    
99
function set_refresh() {
100
    var enabled = $('refresh').get('checked') ? 1 : 0;
101
    var req = new Request.JSON({
102
        link: 'cancel',
103
        url: app_path + '/set_refresh',
104
        onFailure: function () {
105
            alert(_('Unable to save preferences'));
106
        }
107
    });
108
    req.post({'refresh': enabled});
109
    change_refresh_rate(enabled);
110
}
111

    
112
function refresh_page() {
113
    var dialogs = $$(".jxDialog");
114
    for (var i=0; i<dialogs.length; i++) {
115
        if (dialogs[i].getStyle('display') != 'none') {
116
            vigiloLog.log("A dialog is active on the page ('" + dialogs[i].getElement('.jxDialogLabel').get('text') + "'): refresh is not possible.");
117
            return;
118
        }
119
    }
120

    
121
    vigiloLog.log("No active dialog on the page: refreshing...");
122

    
123
    /* La page principale est toujours rechargée, mais si on désactive
124
     * le cache, cela vaut pour TOUTES les ressources. Ici, on veut
125
     * réutiliser au maximum le contenu du cache.
126
     * Observations faites sous Fx 3.6.8.
127
     */
128
    window.location.reload(false);
129
}
130

    
131
function change_theme(theme_id, theme_name) {
132
    var req = new Request.JSON({
133
        link: 'cancel',
134
        url: app_path + '/set_theme',
135
        onFailure: function () {
136
            alert(_('Unable to save preferences'));
137
        }
138
    });
139
    req.post({'theme': theme_id});
140
    setActiveStyleSheet(theme_name);
141

    
142
    vigiloLog.log("Theme set to '" + theme_name + "'.");
143
}
144

    
145
function setActiveStyleSheet(theme_name) {
146
    $$('link[rel~=stylesheet][title]').each(function (link_obj) {
147
        link_obj.set('disabled', true);
148
        if (link_obj.get('title') == theme_name)
149
            link_obj.set('disabled', false);
150
    });
151
}
152

    
153
function add_autocompleter(elem, varname, url) {
154
    new Autocompleter.Request.VigiloJSON(elem, url, {
155
        // ATTENTION: domObj n'est pas documenté dans l'API.
156
        zIndex: window.search_dialog.domObj.getStyle('zIndex').toInt(),
157
        minLength: 1,
158
        selectMode: 'pick',
159
        postVar: varname,
160
        overflow: true
161
    });
162
}