@Stevie0427 #35 发布于2024/2/19 09:10:00,编辑于2024/2/19 09:11:40 @xy #0 用lvgj大佬的主题修改后将#app改为#network之后点击别的机器就会403(访问被拒绝) 不好意思是我的问题 后面有个地方函数名没改,现在把用LVGJ大佬的修改后(app修改为network)的代码贴上来 {{define "theme-custom/network"}} {{template "theme-custom/header" .}} {{if ts .CustomCode}} {{.CustomCode|safe}} {{end}} {{template "theme-custom/menu" .}} <div id="network" class="nb-container"> <div class="ui container"> <div class="service-status"> <div class="ui icon button" v-for='server in servers' :id="server.ID" style="margin-top: 3px" @click="redirectNetwork(server.ID)"> @#server.Name#@<i :class="server.Host.CountryCode + ' flag'"></i> <i v-if='server.Host.Platform == "darwin"' class="apple icon"></i><i v-else-if='isWindowsPlatform(server.Host.Platform)' class="windows icon"></i><i v-else :class="'fl-' + getFontLogoClass(server.Host.Platform)"></i> </div> <div ref="chartDom" style="border-radius: 28px; margin-top: 15px;height: 520px;max-width: 1400px;overflow: hidden"></div> </div> </div> </div> {{template "theme-custom/footer" .}} <script> const monitorInfo = JSON.parse('{{.MonitorInfos}}'); const initData = JSON.parse('{{.Servers}}').servers; let MaxTCPPingValue = {{.MaxTCPPingValue}}; if (MaxTCPPingValue == null) { MaxTCPPingValue = 1000; } new Vue({ el: '#network', delimiters: ['@#', '#@'], data: { servers: initData, option: { tooltip: { trigger: 'axis', position: function (pt) { return [pt[0], '10%']; }, formatter: function(params){ let result = params[0].axisValueLabel + "<br />"; params.forEach(function(item){ result += item.marker + item.seriesName + ": " + item.value[1].toFixed(2) + " ms<br />"; }) return result; }, confine: true, transitionDuration: 0 }, title: { left: 'center', text: "", textStyle: {} }, legend: { top: '5%', data: [], textStyle: { fontSize: 14 } }, backgroundColor: 'rgba(255, 255, 255, 0.8)', toolbox: { feature: { dataZoom: { yAxisIndex: 'none' }, restore: {}, saveAsImage: {} } }, dataZoom: [ { start: 0, end: 100 } ], xAxis: { type: 'time', boundaryGap: false }, yAxis: { type: 'value', boundaryGap: false }, series: [], }, chartOnOff: true, }, mounted() { this.renderChart(); this.parseMonitorInfo(monitorInfo); }, methods: { getFontLogoClass(str) { if (["almalinux", "alpine", "aosc", "apple", "archlinux", "archlabs", "artix", "budgie", "centos", "coreos", "debian", "deepin", "devuan", "docker", "elementary", "fedora", "ferris", "flathub", "freebsd", "gentoo", "gnu-guix", "illumos", "kali-linux", "linuxmint", "mageia", "mandriva", "manjaro", "nixos", "openbsd", "opensuse", "pop-os", "raspberry-pi", "redhat", "rocky-linux", "sabayon", "slackware", "snappy", "solus", "tux", "ubuntu", "void", "zorin"].indexOf(str) > -1) { return str; } if (['openwrt', 'linux', "immortalwrt"].indexOf(str) > -1) { return 'tux'; } if (str == 'amazon') { return 'redhat'; } if (str == 'arch') { return 'archlinux'; } return ''; }, redirectNetwork(id) { this.getMonitorHistory(id) .then(function(monitorInfo) { var vm = network.__vue__; vm.parseMonitorInfo(monitorInfo); }) .catch(function(error){ window.location.href = "/404"; }) }, getMonitorHistory(id) { return $.ajax({ url: "/api/v1/monitor/"+id, method: "GET" }); }, parseMonitorInfo(monitorInfo) { let tSeries = []; let tLegendData = []; for (let i = 0; i < monitorInfo.result.length; i++) { let loss = 0; let data = []; for (let j = 0; j < monitorInfo.result[i].created_at.length; j++) { avgDelay = Math.round(monitorInfo.result[i].avg_delay[j]); if (avgDelay > 0.9 * MaxTCPPingValue) { loss += 1 } if (avgDelay > 0) { data.push([monitorInfo.result[i].created_at[j], avgDelay]); } } lossRate = ((loss / monitorInfo.result[i].created_at.length) * 100).toFixed(1); legendName = monitorInfo.result[i].monitor_name +" "+ lossRate + "%"; tLegendData.push(legendName); tSeries.push({ name: legendName, type: 'line', smooth: true, symbol: 'none', data: data, markPoint: { data: [ { type: 'max', symbol: 'pin', name: 'Max', itemStyle: { color: '#f00' } }, { type: 'min', symbol: 'pin', name: 'Min', itemStyle: { color: '#0f0' } } ] } }); } this.option.title.text = monitorInfo.result[0].server_name; this.option.series = tSeries; this.option.legend.data = tLegendData; this.myChart.clear(); this.myChart.setOption(this.option); }, isWindowsPlatform(str) { return str.includes('Windows') }, renderChart() { this.myChart = echarts.init(this.$refs.chartDom); this.myChart.setOption(this.option); }, }, beforeDestroy() { this.myChart.dispose(); this.myChart = null; }, }); </script> {{end}}
有空试试,帮顶!
mark
大神牛逼!!!!
@xy #0 用lvgj大佬的主题修改后将#app改为#network之后点击别的机器就会403(访问被拒绝)
牛逼
不好意思是我的问题
后面有个地方函数名没改,现在把用LVGJ大佬的修改后(app修改为network)的代码贴上来
教程适用于官方升级版本,先保证官方版本能正常显示后,在使用本教程进行美化
@搁浅 #29 @frederick #26 @Stevie0427 #37
好耶,mark
有些主题没有网络监控这一栏,这个怎么解决呢