| @@ -1,250 +1,254 @@ | |||
| function AddNew() { | |||
| $DE('addTab').style.display = 'block'; | |||
| $DE('addTab').style.display = 'block'; | |||
| } | |||
| function CloseTab(tb) { | |||
| $DE(tb).style.display = 'none'; | |||
| $DE(tb).style.display = 'none'; | |||
| } | |||
| function ListAll() { | |||
| $DE('editTab').style.display = 'block'; | |||
| fetch('index_body.php?dopost=editshow').then(resp => resp.text()).then((d) => { | |||
| $DE('editTabBody').innerHTML = d; | |||
| }); | |||
| $DE('editTab').style.display = 'block'; | |||
| fetch('index_body.php?dopost=editshow').then(resp => resp.text()).then((d) => { | |||
| $DE('editTabBody').innerHTML = d; | |||
| }); | |||
| } | |||
| function ShowWaitDiv() { | |||
| $DE('loaddiv').style.display = 'block'; | |||
| return true; | |||
| $DE('loaddiv').style.display = 'block'; | |||
| return true; | |||
| } | |||
| function DedeCopyToClipboard(text) { | |||
| if (navigator.clipboard) { | |||
| navigator.clipboard.writeText(text); | |||
| } else { | |||
| var textarea = document.createElement('textarea'); | |||
| document.body.appendChild(textarea); | |||
| //隐藏此输入框 | |||
| textarea.style.position = 'fixed'; | |||
| textarea.style.clip = 'rect(0 0 0 0)'; | |||
| textarea.style.top = '10px'; | |||
| textarea.style.display = 'none'; | |||
| textarea.value = text; | |||
| textarea.select(); | |||
| document.execCommand('copy', true); | |||
| document.body.removeChild(textarea); | |||
| } | |||
| if (navigator.clipboard) { | |||
| navigator.clipboard.writeText(text); | |||
| } else { | |||
| var textarea = document.createElement('textarea'); | |||
| document.body.appendChild(textarea); | |||
| //隐藏此输入框 | |||
| textarea.style.position = 'fixed'; | |||
| textarea.style.clip = 'rect(0 0 0 0)'; | |||
| textarea.style.top = '10px'; | |||
| textarea.style.display = 'none'; | |||
| textarea.value = text; | |||
| textarea.select(); | |||
| document.execCommand('copy', true); | |||
| document.body.removeChild(textarea); | |||
| } | |||
| } | |||
| $(function () { | |||
| $.get("index_testenv.php", function (data) { | |||
| if (data !== '') { | |||
| $("#body-tips").html(data); | |||
| } | |||
| }); | |||
| $.get("index_body.php?dopost=get_articles", function (data) { | |||
| if (data !== '') { | |||
| $("#system-word").html(data); | |||
| } | |||
| }); | |||
| $.get("index_testenv.php", function (data) { | |||
| if (data !== '') { | |||
| $("#body-tips").html(data); | |||
| } | |||
| }); | |||
| $.get("index_body.php?dopost=get_articles", function (data) { | |||
| if (data !== '') { | |||
| $("#system-word").html(data); | |||
| } | |||
| }); | |||
| }); | |||
| function Copyinfo() { | |||
| var val = document.getElementById('text'); | |||
| window.getSelection().selectAllChildren(val); | |||
| document.execCommand("Copy"); | |||
| ShowMsg("复制环境配置信息成功"); | |||
| var val = document.getElementById('text'); | |||
| window.getSelection().selectAllChildren(val); | |||
| document.execCommand("Copy"); | |||
| ShowMsg("复制环境配置信息成功"); | |||
| } | |||
| //Dedebiz info | |||
| var dedebizInfo; | |||
| function ViewDedeBIZ() { | |||
| if (dedebizInfo === false) { | |||
| ShowMsg("启动商业组件失败"); | |||
| return; | |||
| } | |||
| ShowMsg(`<table class="table table-borderless w-100"> | |||
| <tr> | |||
| <td width="120">版本号:</td> | |||
| <td>V${dedebizInfo.result.server_version}</td> | |||
| <td width="120">服务器系统:</td> | |||
| <td>${dedebizInfo.result.server_goos}(${dedebizInfo.result.server_goarch})</td> | |||
| </tr> | |||
| <tr> | |||
| <td>运行时间:</td> | |||
| <td>${dedebizInfo.result.server_run_time}</td> | |||
| <td>内存占用:</td> | |||
| <td>${dedebizInfo.result.server_memory_usage}%</td> | |||
| </tr> | |||
| </table>`); | |||
| if (dedebizInfo === false) { | |||
| ShowMsg("启动商业组件失败"); | |||
| return; | |||
| } | |||
| ShowMsg(`<table class="table table-borderless w-100"> | |||
| <tr> | |||
| <td width="120">版本号:</td> | |||
| <td>V${dedebizInfo.result.server_version}</td> | |||
| <td width="120">服务器系统:</td> | |||
| <td>${dedebizInfo.result.server_goos}(${dedebizInfo.result.server_goarch})</td> | |||
| </tr> | |||
| <tr> | |||
| <td>运行时间:</td> | |||
| <td>${dedebizInfo.result.server_run_time}</td> | |||
| <td>内存占用:</td> | |||
| <td>${dedebizInfo.result.server_memory_usage}%</td> | |||
| </tr> | |||
| </table>`); | |||
| } | |||
| function LoadServer() { | |||
| $.get("index_body.php?dopost=system_info", function (data) { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code === 200) { | |||
| if (rsp.result.core.code === 200) { | |||
| dedebizInfo = JSON.parse(rsp.result.core.data); | |||
| } else { | |||
| dedebizInfo = false; | |||
| } | |||
| let infoStr = `<table class="table table-borderless w-100">`; | |||
| if (typeof rsp.result.domain !== "undefined") { | |||
| infoStr += `<tr> | |||
| <td width="90">授权域名:</td> | |||
| <td>${rsp.result.domain}</td> | |||
| <td width="90">授权版本:</td> | |||
| <td>${rsp.result.auth_version}.x.x(时间:${rsp.result.auth_at})</td> | |||
| </tr> | |||
| <tr> | |||
| <td>站点名称:</td> | |||
| <td>${rsp.result.title}(${rsp.result.stype})</td> | |||
| <td>证书组件:</td> | |||
| <td> | |||
| <a href="${cfg_biz_dedebizUrl}/auth/?domain=${rsp.result.domain}" target="_blank" class="btn btn-success btn-sm">授权证书</a> | |||
| <a href="javascript:ViewDedeBIZ()" class="btn btn-primary btn-sm">组件信息</a> | |||
| </td> | |||
| </tr>`; | |||
| } | |||
| infoStr += "</table>"; | |||
| $("#system-info").html(infoStr); | |||
| } else { | |||
| $("#system-info").html(`<table class="table table-borderless w-100"> | |||
| <tr> | |||
| <td>${rsp.msg}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>您已购买了商业版授权,登录DedeBIZ官网会员中心可查看相关授权信息。若授权结果与实际授权存在差异,可能购买到其它非商业授权,及时与我们取得联系。</td> | |||
| </tr> | |||
| </table>`); | |||
| } | |||
| }); | |||
| $.get("index_body.php?dopost=system_info", function (data) { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code === 200) { | |||
| if (rsp.result.core.code === 200) { | |||
| dedebizInfo = JSON.parse(rsp.result.core.data); | |||
| } else { | |||
| dedebizInfo = false; | |||
| } | |||
| let infoStr = `<table class="table table-borderless w-100">`; | |||
| if (typeof rsp.result.domain !== "undefined") { | |||
| infoStr += `<tr> | |||
| <td width="90">授权域名:</td> | |||
| <td>${rsp.result.domain}</td> | |||
| <td width="90">授权版本:</td> | |||
| <td>${rsp.result.auth_version}.x.x(时间:${rsp.result.auth_at})</td> | |||
| </tr> | |||
| <tr> | |||
| <td>站点名称:</td> | |||
| <td>${rsp.result.title}(${rsp.result.stype})</td> | |||
| <td>证书组件:</td> | |||
| <td> | |||
| <a href="${cfg_biz_dedebizUrl}/auth/?domain=${rsp.result.domain}" target="_blank" class="btn btn-success btn-sm">授权证书</a> | |||
| <a href="javascript:ViewDedeBIZ()" class="btn btn-primary btn-sm">组件信息</a> | |||
| </td> | |||
| </tr>`; | |||
| } | |||
| infoStr += "</table>"; | |||
| $("#system-info").html(infoStr); | |||
| } else { | |||
| $("#system-info").html(`<table class="table table-borderless w-100"> | |||
| <tr> | |||
| <td>${rsp.msg}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>您已购买了商业版授权,登录DedeBIZ官网会员中心可查看相关授权信息。若授权结果与实际授权存在差异,可能购买到其它非商业授权,及时与我们取得联系。</td> | |||
| </tr> | |||
| </table>`); | |||
| } | |||
| }); | |||
| } | |||
| Date.prototype.Format = function (fmt) { //author: meizz | |||
| var o = { | |||
| "M+": this.getMonth() + 1, //月份 | |||
| "d+": this.getDate(), //日 | |||
| "h+": this.getHours(), //小时 | |||
| "m+": this.getMinutes(), //分 | |||
| "s+": this.getSeconds(), //秒 | |||
| "q+": Math.floor((this.getMonth() + 3) / 3), //季度 | |||
| "S": this.getMilliseconds() //毫秒 | |||
| }; | |||
| if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); | |||
| for (var k in o) | |||
| if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); | |||
| return fmt; | |||
| var o = { | |||
| "M+": this.getMonth() + 1, //月份 | |||
| "d+": this.getDate(), //日 | |||
| "h+": this.getHours(), //小时 | |||
| "m+": this.getMinutes(), //分 | |||
| "s+": this.getSeconds(), //秒 | |||
| "q+": Math.floor((this.getMonth() + 3) / 3), //季度 | |||
| "S": this.getMilliseconds() //毫秒 | |||
| }; | |||
| if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); | |||
| for (var k in o) | |||
| if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); | |||
| return fmt; | |||
| } | |||
| function LoadStat() { | |||
| $.get("index_body.php?dopost=get_statistics", function (data) { | |||
| try { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code == 200) { | |||
| var tpv = parseInt(rsp.result.pv); | |||
| var tuv = parseInt(rsp.result.uv); | |||
| var tip = parseInt(rsp.result.ip); | |||
| var tvv = parseInt(rsp.result.vv); | |||
| $("#today_pv").html(tpv); | |||
| $("#today_uv").html(tuv); | |||
| $("#today_ip").html(tip); | |||
| $("#today_vv").html(tvv); | |||
| $.get("index_body.php?dopost=get_statistics&sdate=-1", function (data) { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code == 200) { | |||
| $("#total_pv").html(parseInt(rsp.result.pv) + tpv); | |||
| $("#total_uv").html(parseInt(rsp.result.uv) + tuv); | |||
| $("#total_ip").html(parseInt(rsp.result.ip) + tip); | |||
| $("#total_vv").html(parseInt(rsp.result.vv) + tvv); | |||
| } | |||
| }); | |||
| } | |||
| } catch (error) { | |||
| console.log("加载流量统计数据失败") | |||
| } | |||
| }); | |||
| var d = new Date(); | |||
| d.setDate(d.getDate() - 1); | |||
| var s = d.Format("yyyy-MM-dd"); | |||
| s = s.replaceAll("-", ""); | |||
| $.get("index_body.php?dopost=get_statistics&sdate=" + s, function (data) { | |||
| try { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code == 200) { | |||
| $("#yestoday_pv").html(rsp.result.pv); | |||
| $("#yestoday_uv").html(rsp.result.uv); | |||
| $("#yestoday_ip").html(rsp.result.ip); | |||
| $("#yestoday_vv").html(rsp.result.vv); | |||
| } | |||
| } catch (error) { | |||
| console.log("加载流量统计数据失败") | |||
| } | |||
| }); | |||
| $.get("index_body.php?dopost=get_statistics", function (data) { | |||
| try { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code == 200) { | |||
| var tpv = parseInt(rsp.result.pv); | |||
| var tuv = parseInt(rsp.result.uv); | |||
| var tip = parseInt(rsp.result.ip); | |||
| var tvv = parseInt(rsp.result.vv); | |||
| $("#today_pv").html(tpv); | |||
| $("#today_uv").html(tuv); | |||
| $("#today_ip").html(tip); | |||
| $("#today_vv").html(tvv); | |||
| $.get("index_body.php?dopost=get_statistics&sdate=-1", function (data) { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code == 200) { | |||
| $("#total_pv").html(parseInt(rsp.result.pv) + tpv); | |||
| $("#total_uv").html(parseInt(rsp.result.uv) + tuv); | |||
| $("#total_ip").html(parseInt(rsp.result.ip) + tip); | |||
| $("#total_vv").html(parseInt(rsp.result.vv) + tvv); | |||
| } | |||
| }); | |||
| } | |||
| } catch (error) { | |||
| console.log("加载流量统计数据失败") | |||
| } | |||
| }); | |||
| var d = new Date(); | |||
| d.setDate(d.getDate() - 1); | |||
| var s = d.Format("yyyy-MM-dd"); | |||
| s = s.replaceAll("-", ""); | |||
| $.get("index_body.php?dopost=get_statistics&sdate=" + s, function (data) { | |||
| try { | |||
| let rsp = JSON.parse(data); | |||
| if (rsp.code == 200) { | |||
| $("#yestoday_pv").html(rsp.result.pv); | |||
| $("#yestoday_uv").html(rsp.result.uv); | |||
| $("#yestoday_ip").html(rsp.result.ip); | |||
| $("#yestoday_vv").html(rsp.result.vv); | |||
| } | |||
| } catch (error) { | |||
| console.log("加载流量统计数据失败") | |||
| } | |||
| }); | |||
| } | |||
| async function LoadStatChart() { | |||
| const ctx = document.getElementById('statChart').getContext('2d'); | |||
| let labels = []; | |||
| let dates = []; | |||
| let pvs = []; | |||
| let ips = []; | |||
| let uvs = []; | |||
| let vvs = []; | |||
| for (let i = 15; i > 0; i--) { | |||
| var d = new Date(); | |||
| d.setDate(d.getDate() - i); | |||
| var s = d.Format("yyyy-MM-dd"); | |||
| labels.push(d.Format("MM-dd")); | |||
| s = s.replaceAll("-", ""); | |||
| dates.push(s); | |||
| } | |||
| let resp = await fetch("index_body.php?dopost=get_statistics_multi&sdates=" + dates.join(",")); | |||
| let data = await resp.json(); | |||
| if (data.code == 200) { | |||
| data.result.forEach(e => { | |||
| pvs.push(typeof e.pv == "undefined" ? 0 : e.pv); | |||
| ips.push(typeof e.ip == "undefined" ? 0 : e.ip); | |||
| uvs.push(typeof e.uv == "undefined" ? 0 : e.uv); | |||
| vvs.push(typeof e.vv == "undefined" ? 0 : e.vv); | |||
| }); | |||
| } | |||
| const myChart = new Chart(ctx, { | |||
| type: 'line', | |||
| options: { | |||
| responsive: true, | |||
| plugins: { | |||
| legend: { | |||
| position: 'right', | |||
| } | |||
| } | |||
| }, | |||
| data: { | |||
| labels: labels, | |||
| datasets: [ | |||
| { | |||
| label: 'PV', | |||
| data: pvs, | |||
| borderColor: 'rgba(54, 162, 235, 1)', | |||
| backgroundColor: 'rgba(54, 162, 235, 0.2)', | |||
| borderWidth: 1 | |||
| }, { | |||
| label: 'UV', | |||
| data: uvs, | |||
| borderColor: 'rgba(255, 206, 86, 1)', | |||
| backgroundColor: 'rgba(255, 206, 86, 0.2)', | |||
| borderWidth: 1 | |||
| }, { | |||
| label: 'IP', | |||
| data: ips, | |||
| borderColor: 'rgba(255, 99, 132, 1)', | |||
| backgroundColor: 'rgba(255, 99, 132, 0.2)', | |||
| borderWidth: 1 | |||
| }, { | |||
| label: 'VV', | |||
| data: vvs, | |||
| borderColor: 'rgba(75, 192, 192, 1)', | |||
| backgroundColor: 'rgba(75, 192, 192, 0.2)', | |||
| borderWidth: 1 | |||
| } | |||
| ] | |||
| }, | |||
| }); | |||
| const ctx = document.getElementById('statChart').getContext('2d'); | |||
| let labels = []; | |||
| let dates = []; | |||
| let pvs = []; | |||
| let ips = []; | |||
| let uvs = []; | |||
| let vvs = []; | |||
| for (let i = 15; i > 0; i--) { | |||
| var d = new Date(); | |||
| d.setDate(d.getDate() - i); | |||
| var s = d.Format("yyyy-MM-dd"); | |||
| labels.push(d.Format("MM-dd")); | |||
| s = s.replaceAll("-", ""); | |||
| dates.push(s); | |||
| } | |||
| let resp = await fetch("index_body.php?dopost=get_statistics_multi&sdates=" + dates.join(",")); | |||
| let data = await resp.json(); | |||
| if (data.code == 200) { | |||
| data.result.forEach(e => { | |||
| pvs.push(typeof e.pv == "undefined" ? 0 : e.pv); | |||
| ips.push(typeof e.ip == "undefined" ? 0 : e.ip); | |||
| uvs.push(typeof e.uv == "undefined" ? 0 : e.uv); | |||
| vvs.push(typeof e.vv == "undefined" ? 0 : e.vv); | |||
| }); | |||
| } | |||
| const myChart = new Chart(ctx, { | |||
| type: 'line', | |||
| options: { | |||
| responsive: true, | |||
| plugins: { | |||
| legend: { | |||
| position: 'right', | |||
| } | |||
| } | |||
| }, | |||
| data: { | |||
| labels: labels, | |||
| datasets: [ | |||
| { | |||
| label: 'PV', | |||
| data: pvs, | |||
| lineTension: 0.6, | |||
| borderColor: 'rgba(54, 162, 235, 1)', | |||
| backgroundColor: 'rgba(54, 162, 235, 0.2)', | |||
| borderWidth: 1 | |||
| }, { | |||
| label: 'UV', | |||
| data: uvs, | |||
| lineTension: 0.6, | |||
| borderColor: 'rgba(255, 206, 86, 1)', | |||
| backgroundColor: 'rgba(255, 206, 86, 0.2)', | |||
| borderWidth: 1 | |||
| }, { | |||
| label: 'IP', | |||
| data: ips, | |||
| lineTension: 0.6, | |||
| borderColor: 'rgba(255, 99, 132, 1)', | |||
| backgroundColor: 'rgba(255, 99, 132, 0.2)', | |||
| borderWidth: 1 | |||
| }, { | |||
| label: 'VV', | |||
| data: vvs, | |||
| lineTension: 0.6, | |||
| borderColor: 'rgba(75, 192, 192, 1)', | |||
| backgroundColor: 'rgba(75, 192, 192, 0.2)', | |||
| borderWidth: 1 | |||
| } | |||
| ] | |||
| }, | |||
| }); | |||
| } | |||
| $(document).ready(function () { | |||
| LoadServer(); | |||
| LoadStat(); | |||
| LoadStatChart(); | |||
| setInterval(function () { | |||
| LoadServer(); | |||
| }, 60000) | |||
| LoadServer(); | |||
| LoadStat(); | |||
| LoadStatChart(); | |||
| setInterval(function () { | |||
| LoadServer(); | |||
| }, 60000) | |||
| }); | |||