(function ($) { function xml2json(Xml) { var tempvalue, tempJson = {}; $(Xml).each(function () { var tagName = ($(this).attr('id') || this.tagName); tempvalue = (this.childElementCount == 0) ? this.textContent : xml2json($(this).children()); switch ($.type(tempJson[tagName])) { case 'undefined': tempJson[tagName] = tempvalue; break; case 'object': tempJson[tagName] = Array(tempJson[tagName]); case 'array': tempJson[tagName].push(tempvalue); } }); return tempJson; } function setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + '=' + escape(value) + ((expiredays == null) ? '' : ';expires=' + exdate.toGMTString()) + '; path=' + window.nps.web_base_url + '/;'; } function getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf(c_name + '='); if (c_start != -1) { c_start = c_start + c_name.length + 1; c_end = document.cookie.indexOf(';', c_start); if (c_end == -1) c_end = document.cookie.length; return unescape(document.cookie.substring(c_start, c_end)); } } return null; } function setchartlang(langobj, chartobj) { if ($.type(langobj) == 'string') return langobj; if ($.type(langobj) == 'chartobj') return false; var flag = true; for (key in langobj) { var item = key; children = (chartobj.hasOwnProperty(item)) ? setchartlang(langobj[item], chartobj[item]) : setchartlang(langobj[item], undefined); switch ($.type(children)) { case 'string': if ($.type(chartobj[item]) != 'string') continue; case 'object': chartobj[item] = (children['value'] || children); default: flag = false; } } if (flag) { return {'value': (langobj[languages['current']] || langobj[languages['default']] || 'N/A')} } } $.fn.cloudLang = function () { $.ajax({ type: 'GET', url: window.nps.web_base_url + '/static/page/languages.xml?v=' + window.nps.version, dataType: 'xml', success: function (xml) { languages['content'] = xml2json($(xml).children())['content']; languages['menu'] = languages['content']['languages']; languages['default'] = languages['content']['default']; // languages['navigator'] = (getCookie('lang') || navigator.language || navigator.browserLanguage); var navLang = (getCookie('lang') || navigator.language || navigator.browserLanguage || ''); languages['navigator'] = navLang.startsWith('zh') ? 'zh-CN' : navLang; for (var key in languages['menu']) { $('#languagemenu').next().append('
  • ' + languages['menu'][key] + '
  • '); if (key == languages['navigator']) languages['current'] = key; } $('#languagemenu').attr('lang', (languages['current'] || languages['default'])); $('body').setLang(''); if ($.fn.selectpicker != null) { $('.selectpicker').selectpicker('refresh'); } } }); }; $.fn.setLang = function (dom) { languages['current'] = $('#languagemenu').attr('lang'); if (dom == '') { $('#languagemenu span').text(' ' + languages['menu'][languages['current']]); if (languages['current'] != getCookie('lang')) setCookie('lang', languages['current']); if ($("#table").length > 0) $('#table').bootstrapTable('refreshOptions', {'locale': languages['current']}); } $.each($(dom + ' [langtag]'), function (i, item) { var index = $(item).attr('langtag'); string = languages['content'][index.toLowerCase()]; switch ($.type(string)) { case 'string': break; case 'array': string = string[Math.floor((Math.random() * string.length))]; case 'object': string = (string[languages['current']] || string[languages['default']] || null); break; default: string = 'Missing language string "' + index + '"'; $(item).css('background-color', '#ffeeba'); } if ($.type($(item).attr('placeholder')) == 'undefined') { $(item).text(string); } else { $(item).attr('placeholder', string); } }); if (!$.isEmptyObject(chartdatas)) { setchartlang(languages['content']['charts'], chartdatas); for (var key in chartdatas) { if ($('#' + key).length == 0) continue; if ($.type(chartdatas[key]) == 'object') charts[key] = echarts.init(document.getElementById(key)); charts[key].setOption(chartdatas[key], true); } } if(window.hasOwnProperty('internationalized')){ internationalized(languages['current']); } } })(jQuery); $(document).ready(function () { const savedTheme = localStorage.getItem('nps-theme'); const html = document.documentElement; const icon = document.querySelector('#theme-toggle i'); if (savedTheme === 'dark') { html.setAttribute('theme', 'dark-mode'); icon.classList.remove('fa-moon'); icon.classList.add('fa-sun'); } else { html.removeAttribute('theme'); icon.classList.remove('fa-sun'); icon.classList.add('fa-moon'); } $('body').cloudLang(); $('body').on('click', 'li[lang]', function () { $('#languagemenu').attr('lang', $(this).attr('lang')); $('body').setLang(''); }); }); var languages = {}; var charts = {}; var chartdatas = {}; var postsubmit; function langreply(langstr) { var langobj = languages['content']['reply'][langstr.replace(/[\s,\.\?]*/g, "").toLowerCase()]; if ($.type(langobj) == 'undefined') return langstr langobj = (langobj[languages['current']] || langobj[languages['default']] || langstr); return langobj } function goback() { history.back(); } function submitform(action, url, postdata) { postsubmit = false; $.each(postdata, function (i, v) { if (v['value']) { v['value'] = v['value'].trim(); } }); switch (action) { case 'turn': case 'clear': case 'delete': var langobj = languages['content']['confirm'][action]; action = (langobj[languages['current']] || langobj[languages['default']] || 'Are you sure you want to ' + action + ' it?'); if (!confirm(action)) return; case 'start': case 'stop': postsubmit = true; case 'add': case 'edit': $.ajax({ type: "POST", url: url, data: postdata, success: function (res) { if (res.status) { showMsg(langreply(res.msg), 'success', 1000, function() { if (postsubmit) { document.location.reload(); } else { window.location.href = document.referrer; } }); } else { showMsg(langreply(res.msg), 'error', 5000); } } }); return; case 'global': $.ajax({ type: "POST", url: url, data: postdata, success: function (res) { if (res.status) { showMsg(langreply(res.msg), 'success', 1000, function() { document.location.reload(); }); } else { showMsg(langreply(res.msg), 'error', 5000); } } }); } } function changeunit(limit) { var size = ""; if (limit < 0.1 * 1024) { size = limit.toFixed(2) + "B"; } else if (limit < 0.1 * 1024 * 1024) { size = (limit / 1024).toFixed(2) + "KB"; } else if (limit < 0.1 * 1024 * 1024 * 1024) { size = (limit / (1024 * 1024)).toFixed(2) + "MB"; } else { size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB"; } var sizeStr = size + ""; var index = sizeStr.indexOf("."); var dou = sizeStr.substr(index + 1, 2); if (dou == "00") { return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2); } return size; } function oCopy(obj){ var tempInput = document.createElement("input"); document.body.appendChild(tempInput); tempInput.value = obj.innerText || obj.textContent; tempInput.select(); document.execCommand('copy'); document.body.removeChild(tempInput); showMsg(langreply('Copied')); } function copyText(text) { const textarea = document.createElement("textarea"); textarea.value = text; document.body.appendChild(textarea); textarea.select(); document.execCommand("copy"); document.body.removeChild(textarea); showMsg(langreply('Copied')); } function showMsg(text, type = 'success', dur = 1500, cb) { var old = document.getElementById('wangmarket_loading'); if (old) old.parentNode.removeChild(old); var isLong = text && text.length > 5; var svg = type === 'error' ? '' : ''; var w = document.createElement('div'); w.id = 'wangmarket_loading'; w.style = 'position:fixed;top:0;z-index: 2147483647;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center'; w.innerHTML = '
    ' +'
    ' +'
    '+svg+'
    ' +'
    ' + text + '
    ' +'
    ' +'
    '; document.body.appendChild(w); setTimeout(function(){ w.parentNode.removeChild(w); if (typeof cb === 'function') cb(); }, dur); } function toggleTheme() { const html = document.documentElement; const icon = document.querySelector('#theme-toggle i'); const isDark = html.getAttribute('theme') === 'dark-mode'; if (isDark) { html.removeAttribute('theme'); icon.classList.remove('fa-sun'); icon.classList.add('fa-moon'); localStorage.setItem('nps-theme', 'light'); } else { html.setAttribute('theme', 'dark-mode'); icon.classList.remove('fa-moon'); icon.classList.add('fa-sun'); localStorage.setItem('nps-theme', 'dark'); } } function escapeHtml(str) { return String(str).replace(/[&<>"']/g, function (s) { return ({'&': '&', '<': '<', '>': '>', '"': '"', "'": '''})[s]; }); } function getBridgeMode(data) { if (typeof data !== 'string') return ''; const parts = data.split(',', 2); const first = parts[0] || ''; const second = parts[1] || ''; const escapedFirst = escapeHtml(first).toUpperCase(); const escapedSecond = escapeHtml(second).toUpperCase(); if (!second || first === second) { return escapedFirst; } return escapedSecond + ' → ' + escapedFirst; }