dashboard.js 7.35 KB
Newer Older
NGO THI HONG committed
1 2 3 4
/**
 * Dashboard js in dashboard.html
 * @since cms:1.4.3.2&1.4.3.3 web:1.0
 */
NGO THI HONG committed
5 6
var DASHBOARD = {};

NGO THI HONG committed
7
/** pickup dashboard configuration */
NGO THI HONG committed
8
DASHBOARD.pickupItems = [
9 10 11
    { id: 'newReport', href: "javascript:DASHBOARD.goPickup('newReport');", count: 0, enabled: true, img: { src: '../common/img/dahboard_icon_new.svg' }, msg: 'newRegistrationTitle' },
    { id: 'continousWork', href: "javascript:DASHBOARD.goPickup('continousWork');", count: 0, enabled: true, img: { src: '../common/img/dahboard_icon_proccess.svg' }, msg: 'continousWorkTitle' },
    { id: 'warningReport', href: "javascript:DASHBOARD.goPickup('reportWarning');", count: 0, enabled: true, img: { src: '../common/img/dahboard_icon_alert.svg' }, msg: 'reportWarningTitle' },
NGO THI HONG committed
12
];
NGO THI HONG committed
13

NGO THI HONG committed
14
/** comunication dashboard configuration */
NGO THI HONG committed
15
DASHBOARD.communicationItems = [
16 17
    { id: 'messageList', href: 'javascript:DASHBOARD.goMessageList();', count: 0, enabled: true, img: { src: '../common/img/dahboard_icon_message_list.svg' }, msg: 'pushMessageList' },
    { id: 'sendMessage', href: 'javascript:DASHBOARD.goSendMessage();', count: 0, enabled: true, img: { src: '../common/img/dahboard_icon_send_message.svg' }, msg: 'sendMessage' },
NGO THI HONG committed
18 19
];

NGO THI HONG committed
20
/**   Default dashboard setting data */
21
DASHBOARD.defaultDashboard = {
22 23 24 25 26 27 28
    dashboard: {
        newReport: 0,
        continousWork: 0,
        warningReport: 0,
        pushMesage: 0
    }
    
29
};
30

Kang Donghun committed
31
DASHBOARD.getDataApiUrl = COMMON.format(ClientData.conf_checkApiUrl(), ClientData.userInfo_accountPath()) + CONSTANT.URL.CMS.API.DASHBOARD;
32

NGO THI HONG committed
33
/**
34
 * Call api get data
Takumi Imai committed
35
 * @param callback
NGO THI HONG committed
36
 */
37 38
DASHBOARD.getDashboardData = function (callback) {
    let param = {
39
        sid: COMMON.getSid()
40
    };
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
    COMMON.cmsAjax(
        DASHBOARD.getDataApiUrl,
        param,
        false,
        function (json) {
            if (callback) {
                callback(json);
            }
        },
        function () {
            console.log('DASHBOARD.getData error');
            if (callback) {
                callback(DASHBOARD.defaultDashboard);
            }
        },
    );
57 58
};

NGO THI HONG committed
59
/** Initialization dashboard pickup items html */
60 61 62 63
DASHBOARD.initPickups = function () {
    $('#pickupItems').empty();
    DASHBOARD.pickupItems.forEach(function (item) {
        if (item.enabled == true) {
NGO THI HONG committed
64
            var html = DASHBOARD.initHtmlItem(item);
65
            $('#pickupItems').append(html);
NGO THI HONG committed
66 67 68
        }
    });
    //pickup empty
69 70
    if ($('#pickupItems').children().length > 0) {
        $('#pickupHeader').removeClass('d-none');
NGO THI HONG committed
71
    } else {
72
        $('#pickupHeader').addClass('d-none');
NGO THI HONG committed
73
    }
74
};
NGO THI HONG committed
75

NGO THI HONG committed
76
/** Initialization dashboard communication items html */
77 78 79
DASHBOARD.initCommunications = function () {
    $('#communicationItems').empty();
    DASHBOARD.communicationItems.forEach(function (item) {
NGO THI HONG committed
80
        if (item.enabled == true) {
NGO THI HONG committed
81
            const html = DASHBOARD.initHtmlItem(item);
82
            $('#communicationItems').append(html);
NGO THI HONG committed
83 84
        }
    });
85
};
NGO THI HONG committed
86

Takumi Imai committed
87 88 89 90 91
/**
 * Initialization dashboard items html
 * @param {*} item
 * @returns
 */
92
DASHBOARD.initHtmlItem = function (item) {
NGO THI HONG committed
93
    let countText = '' + item.count;
NGO THI HONG committed
94 95 96
    if (item.count >= 100) {
        countText = '99+';
    }
NGO THI HONG committed
97
    let countDClass = '';
98
    let countSpan = '';
99 100 101
    if (typeof item.count != 'undefined' && item.count > 0) {
        countDClass = ' ';
        countSpan = '<span class="fs-8 circle-tag-danger' + countDClass + '">' + countText + '</span>';
NGO THI HONG committed
102
    }
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
    let html = $(
        '<li class="card mb-2 position-relative" id="' +
            item.id +
            '">' +
            '<a href="' +
            item.href +
            '" class="d-block text-dark text-decoration-none mb-1 p-3 text-center">' +
            '<div class="bg-lightblue p-2 d-inline-block rounded-circle mb-3">' +
            '<img src="' +
            item.img.src +
            '" alt="' +
            I18N.i18nText(item.msg) +
            '" class="img-fluid"> </div>' +
            '<div class="fs-10 lang" lang="' +
            item.msg +
            '">' +
            I18N.i18nText(item.msg) +
            '</div>' +
            countSpan +
            '</a>' +
            '</li>',
    );
NGO THI HONG committed
125
    return html;
126
};
NGO THI HONG committed
127

NGO THI HONG committed
128
/** Initialization dashboard screen */
129
DASHBOARD.init = function () {
130
    //Check if user is logged in
131
    COMMON.showLoading();
132 133
    COMMON.checkAuth(false);

NGO THI HONG committed
134
    sessionStorage.activeHomePage = CONSTANT.PAGE_TAB.DASHBOARD;
135
    sessionStorage.removeItem("operationId");
136
    sessionStorage.removeItem("RL_searchWord");
NGO THI HONG committed
137
    DASHBOARD.loadCommon();
138
    DashboardSetting.getSettingData(function (settings) {
139 140 141 142
        DASHBOARD.getDashboardData(function (dataDashboard) 
        {
            if(!dataDashboard.dashboard || jQuery.isEmptyObject(dataDashboard.dashboard ) )
                dataDashboard.dashboard = DASHBOARD.defaultDashboard.dashboard;
143 144 145
            DASHBOARD.updateDataPickups(settings, dataDashboard);
            DASHBOARD.initPickups();
            DASHBOARD.updateDataCommunications(dataDashboard);
146
            DASHBOARD.initCommunications();
147
        });
148
    });
149
    COMMON.closeLoading();
150
};
NGO THI HONG committed
151
/** load common data */
152
DASHBOARD.loadCommon = function () {
Kang Donghun committed
153
    TEMPLATE.loadHeader('#includedHeader');
154 155 156 157
    TEMPLATE.loadDashboardSetting('#includedDashboardSetting', DASHBOARD.changeSettingCallback);
    TEMPLATE.loadConfirmModal('#includedConfirmModal');
    TEMPLATE.loadMainNavsTitle('#includedMainTitle', 'dashboard', null, DASHBOARD.loadMainTitleCallback);
};
NGO THI HONG committed
158

Takumi Imai committed
159 160 161 162 163
/**
 * Update pickup config from setting dashboard data
 * @param {*} settings
 * @param {*} dataDashboard
 */
164 165
DASHBOARD.updateDataPickups = function (settings, dataDashboard) {
    DASHBOARD.pickupItems.forEach(function (item) {
NGO THI HONG committed
166
        const enabled = settings[item.id];
NGO THI HONG committed
167 168 169 170
        if (enabled == true || enabled == false) {
            item.enabled = enabled;
        }
        item.count = 0;
NGO THI HONG committed
171 172
        if (dataDashboard.dashboard[item.id]) {
            item.count = dataDashboard.dashboard[item.id];
NGO THI HONG committed
173 174
        }
    });
175
};
NGO THI HONG committed
176

Takumi Imai committed
177 178 179 180
/**
 * Update communication setting from dashboard data
 * @param {*} dataDashboard
 */
181 182
DASHBOARD.updateDataCommunications = function (dataDashboard) {
    DASHBOARD.communicationItems.forEach(function (item) {
NGO THI HONG committed
183 184
        if (item.id == 'messageList') {
            item.count = 0;
185 186 187 188

            if (dataDashboard.dashboard['pushMesage']) {
                item.count = dataDashboard.dashboard['pushMesage'];
            }
189
        }
NGO THI HONG committed
190
    });
191
};
NGO THI HONG committed
192

Takumi Imai committed
193 194 195 196
/**
 * Direct to pickup screen
 * @param {*} pickupId
 */
197 198 199
DASHBOARD.goPickup = function (pickupId) {
    COMMON.goUrlWithCurrentParams('pickup.html', { pickupActive: pickupId });
};
NGO THI HONG committed
200

NGO THI HONG committed
201
/** Direct to Message list screen */
202
DASHBOARD.goMessageList = function () {
NGO THI HONG committed
203
    COMMON.goUrlWithCurrentParams('pushMessageList.html', {});
204
};
205 206 207 208

/**
 * Direct to send message screen
 */
209
DASHBOARD.goSendMessage = function () {
NGO THI HONG committed
210
    COMMON.goUrlWithCurrentParams('sendMessage.html', {});
211
};
212 213 214 215

/**
 * callback when setting changed
 */
216
DASHBOARD.changeSettingCallback = function () {
217
    location.reload();
218 219 220 221 222 223 224 225 226 227 228 229 230
};

/**
 * callback when complete load main title html
 */
DASHBOARD.loadMainTitleCallback = function () {
    //add dashboard setting item
    var elmA = $('<a href="#" data-toggle="modal" data-target="#dashboard-setting-modal">');
    let elmImg = $('<img src="../common/img/icon_dashboard_setting.svg" alt="" class="p-1 w-40px lang" lang="dashboardSettings" data-toggle="tooltip" data-placement="bottom" title="">');
    elmImg.attr('title', I18N.i18nText('dashboardSettings'));
    elmA.append(elmImg);
    $('#mainTitleHeader').after(elmA);
};