aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.WebDashboard/Html/scripts/LogPage.js
blob: 133eb34fbb21bd6c02a157d878f64611a5884b56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var LogPage = {

    onPageShow: function () {

        LogPage.startLine = 0;

        $('#logContents', this).html('');

        $(document).on("websocketmessage", LogPage.onWebSocketMessage).on("websocketopen", LogPage.onWebSocketConnectionChange).on("websocketerror", LogPage.onWebSocketConnectionChange).on("websocketclose", LogPage.onWebSocketConnectionChange);

        LogPage.startInterval();

        var autoScroll = localStorage.getItem("autoScrollLogPage");
        
        if (autoScroll == "true") {
            LogPage.updateAutoScroll(true);
        }
        else if (autoScroll == "false") {
            LogPage.updateAutoScroll(false);
        }
    },

    onPageHide: function () {

        $(document).off("websocketmessage", LogPage.onWebSocketMessage).off("websocketopen", LogPage.onWebSocketConnectionChange).off("websocketerror", LogPage.onWebSocketConnectionChange).off("websocketclose", LogPage.onWebSocketConnectionChange);

        LogPage.stopInterval();
    },

    startInterval: function () {

        if (Dashboard.isWebSocketOpen()) {
            Dashboard.sendWebSocketMessage("LogFileStart", "0,2000");
        } 
    },

    stopInterval: function () {

        if (Dashboard.isWebSocketOpen()) {
            Dashboard.sendWebSocketMessage("LogFileStop");
        }
    },

    onWebSocketConnectionChange: function () {
        LogPage.stopInterval();
        LogPage.startInterval();
    },

    onWebSocketMessage: function (e, msg) {

        if (msg.MessageType == "LogFile") {
            LogPage.appendLines(msg.Data);
        }
    },

    appendLines: function (lines) {

        if (!lines.length) {
            return;
        }

        LogPage.startLine += lines.length;

        lines = lines.join('\n') + '\n';

        var elem = $('#logContents', $.mobile.activePage).append(lines)[0];

        elem.style.height = (elem.scrollHeight) + 'px';

        if ($('#chkAutoScroll', $.mobile.activePage).checked()) {
            $('html, body').animate({ scrollTop: $(document).height() }, 'slow');
        }
    },

    updateAutoScroll: function (value) {

        var page = $.mobile.activePage;
        
        $('#chkAutoScrollBottom', page).checked(value).checkboxradio('refresh');
        $('#chkAutoScroll', page).checked(value).checkboxradio('refresh');
        
        localStorage.setItem("autoScrollLogPage", value.toString());
    }
};

$(document).on('pageshow', "#logPage", LogPage.onPageShow).on('pagehide', "#logPage", LogPage.onPageHide);