Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / public / js / main.js @ db6fbc92

History | View | Annotate | Download (4.69 KB)

1
/*
2
 * Vigiboard
3
 *
4
 * Copyright (C) 2009-2011 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
    /**
22
     * HACK: le closed: True est nécessaire pour éviter que
23
     * JxLib affiche le panel lors de la création du dialogue
24
     * (affiche des rectangles blancs). Avec cette modification,
25
     * le dialogue apparaît replié, mais est considéré comme
26
     * déplié par Jx.Dialog. Les toggleCollapse permettent de
27
     * marquer le Dialog comme replié dans Jx.Dialog avant de
28
     * le déplier pour qu'il soit affiché correctement.
29
     */
30
    window.search_dialog = new Jx.Dialog({
31
        id: "SearchDialog",
32
        label: _('Search Event'),
33
        modal: false,
34
        resize: false,
35
        move: true,
36
        content: "search_form",
37
        onOpen: window.dlg_open_handler,
38
        onClose: window.dlg_close_handler,
39
        width: 400,
40
        height: 325,
41
        closed: true
42
    });
43
    window.search_dialog.toggleCollapse();
44
    window.search_dialog.toggleCollapse();
45

    
46
    var selector = new TreeGroup({
47
        url: app_path + '/get_groups',
48
        app_path: app_path,
49
        title: _("Select a group")
50
    });
51
    $('search_form_supitemgroup').addEvent('click', selector.selectGroup.bind(selector));
52
    selector.addEvent('select', function (item) {
53
        $('search_form_supitemgroup.ui').set('value', item.options.label);
54
        $('search_form_supitemgroup.value').set('value', item.options.data);
55
    });
56
    $('search_form_supitemgroup.clear').addEvent('click', function () {
57
        $('search_form_supitemgroup.ui').set('value', '');
58
        $('search_form_supitemgroup.value').set('value', '');
59
    });
60

    
61
    add_autocompleter('search_form_host', 'host', app_path + '/autocomplete/host');
62
    add_autocompleter('search_form_service', 'service', app_path + '/autocomplete/service');
63

    
64
    change_refresh_rate(refresh_status);
65

    
66
    $$('.date_field_button').addEvent('click', function () {
67
        $$(".calendar").setStyles({"zIndex": window.search_dialog.domObj.getStyle('zIndex').toInt()});
68
    });
69
});
70

    
71
function change_fontsize(size) {
72
    document.body.style.fontSize = size;
73
    var req = new Request.JSON({
74
        link: 'cancel',
75
        url: app_path + '/set_fontsize',
76
        onFailure: function () {
77
            alert(_('Unable to save preferences'));
78
        }
79
    });
80
    req.post({fontsize: size});
81

    
82
    vigiloLog.log("Font size set to " + size + ".");
83
}
84

    
85
var refresh_timeout = null;
86
function change_refresh_rate(enabled) {
87
    var delay = refresh_delay;
88
    if (refresh_timeout) refresh_timeout = $clear(refresh_timeout);
89
    if (parseInt(enabled) && delay) refresh_timeout = refresh_page.periodical(delay * 1000);
90
}
91

    
92
function set_refresh() {
93
    var enabled = $$('refresh').get('checked') ? 1 : 0;
94
    var req = new Request.JSON({
95
        link: 'cancel',
96
        url: app_path + '/set_refresh',
97
        onFailure: function () {
98
            alert(_('Unable to save preferences'));
99
        }
100
    });
101
    req.post({'refresh': enabled});
102
    change_refresh_rate(enabled);
103
}
104

    
105
function refresh_page() {
106
    var dialogs = $$(".jxDialog");
107
    for (var i=0; i<dialogs.length; i++) {
108
        if (dialogs[i].getStyle('display') != 'none') {
109
            vigiloLog.log("A dialog is active on the page ('" + dialogs[i].getElement('.jxDialogLabel').get('text') + "'): refresh is not possible.");
110
            return;
111
        }
112
    }
113

    
114
    vigiloLog.log("No active dialog on the page: refreshing...");
115
    window.location.reload(true);
116
}
117

    
118
function change_theme(theme_id, theme_name) {
119
    var req = new Request.JSON({
120
        link: 'cancel',
121
        url: app_path + '/set_theme',
122
        onFailure: function () {
123
            alert(_('Unable to save preferences'));
124
        }
125
    });
126
    req.post({'theme': theme_id});
127
    setActiveStyleSheet(theme_name);
128

    
129
    vigiloLog.log("Theme set to '" + theme_name + "'.");
130
}
131

    
132
function setActiveStyleSheet(theme_name) {
133
    $$('link[rel~=stylesheet][title]').each(function (link_obj) {
134
        link_obj.set('disabled', true);
135
        if (link_obj.get('title') == theme_name)
136
            link_obj.set('disabled', false);
137
    })
138
}
139

    
140
function add_autocompleter(elem, varname, url) {
141
    new Autocompleter.Request.VigiloJSON(elem, url, {
142
        // ATTENTION: domObj n'est pas documenté dans l'API.
143
        zIndex: window.search_dialog.domObj.getStyle('zIndex').toInt(),
144
        minLength: 1,
145
        selectMode: 'pick',
146
        postVar: varname,
147
        overflow: true
148
    });
149
}
150