diff --git a/internal/utils/numberutils/utils.go b/internal/utils/numberutils/utils.go index cc649fa6..5ccf2148 100644 --- a/internal/utils/numberutils/utils.go +++ b/internal/utils/numberutils/utils.go @@ -42,6 +42,24 @@ func FormatBytes(bytes int64) string { } } +func FormatBits(bits int64) string { + if bits < Pow1024(1) { + return FormatInt64(bits) + "Bps" + } else if bits < Pow1024(2) { + return fmt.Sprintf("%.4fKBps", float64(bits)/float64(Pow1024(1))) + } else if bits < Pow1024(3) { + return fmt.Sprintf("%.4fMBps", float64(bits)/float64(Pow1024(2))) + } else if bits < Pow1024(4) { + return fmt.Sprintf("%.4fGBps", float64(bits)/float64(Pow1024(3))) + } else if bits < Pow1024(5) { + return fmt.Sprintf("%.4fTBps", float64(bits)/float64(Pow1024(4))) + } else if bits < Pow1024(6) { + return fmt.Sprintf("%.4fPBps", float64(bits)/float64(Pow1024(5))) + } else { + return fmt.Sprintf("%.4fEBps", float64(bits)/float64(Pow1024(6))) + } +} + func FormatCount(count int64) string { if count < 1000 { return types.String(count) diff --git a/internal/web/actions/default/servers/index.go b/internal/web/actions/default/servers/index.go index 5b26b94b..a9223552 100644 --- a/internal/web/actions/default/servers/index.go +++ b/internal/web/actions/default/servers/index.go @@ -3,7 +3,6 @@ package servers import ( "encoding/json" "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/configutils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" @@ -225,9 +224,9 @@ func (this *IndexAction) RunGet(params struct { } // 统计数据 - var bandwidth = "" + var bandwidthBits int64 = 0 if server.BandwidthBytes > 0 { - bandwidth = numberutils.FormatBytes(server.BandwidthBytes) + bandwidthBits = server.BandwidthBytes * 8 } serverMaps = append(serverMaps, maps.Map{ @@ -247,7 +246,7 @@ func (this *IndexAction) RunGet(params struct { "auditingIsOk": auditingIsOk, "user": userMap, "auditingTime": auditingTime, - "bandwidth": bandwidth, + "bandwidthBits": bandwidthBits, }) } this.Data["servers"] = serverMaps diff --git a/web/public/js/components/common/bits-var.js b/web/public/js/components/common/bits-var.js new file mode 100644 index 00000000..ce2190a1 --- /dev/null +++ b/web/public/js/components/common/bits-var.js @@ -0,0 +1,16 @@ +Vue.component("bits-var", { + props: ["v-bits"], + data: function () { + let bits = this.vBits + if (typeof bits != "number") { + bits = 0 + } + let format = teaweb.splitFormat(teaweb.formatBits(bits)) + return { + format: format + } + }, + template:` + {{format[0]}}{{format[1]}} +` +}) \ No newline at end of file diff --git a/web/public/js/components/common/bytes-var.js b/web/public/js/components/common/bytes-var.js new file mode 100644 index 00000000..b334919b --- /dev/null +++ b/web/public/js/components/common/bytes-var.js @@ -0,0 +1,16 @@ +Vue.component("bytes-var", { + props: ["v-bytes"], + data: function () { + let bytes = this.vBytes + if (typeof bytes != "number") { + bytes = 0 + } + let format = teaweb.splitFormat(teaweb.formatBytes(bytes)) + return { + format: format + } + }, + template:` + {{format[0]}}{{format[1]}} +` +}) \ No newline at end of file diff --git a/web/public/js/components/common/datepicker.js b/web/public/js/components/common/datepicker.js index 5a6b22a8..bc8b4095 100644 --- a/web/public/js/components/common/datepicker.js +++ b/web/public/js/components/common/datepicker.js @@ -1,5 +1,5 @@ Vue.component("datepicker", { - props: ["v-name", "v-value", "v-bottom-left"], + props: ["value", "v-name", "name", "v-value", "v-bottom-left", "placeholder"], mounted: function () { let that = this teaweb.datepicker(this.$refs.dayInput, function (v) { @@ -9,26 +9,44 @@ Vue.component("datepicker", { }, data: function () { let name = this.vName + if (name == null) { + name = this.name + } if (name == null) { name = "day" } let day = this.vValue if (day == null) { - day = "" + day = this.value + if (day == null) { + day = "" + } + } + + let placeholder = "YYYY-MM-DD" + if (this.placeholder != null) { + placeholder = this.placeholder } return { - name: name, + realName: name, + realPlaceholder: placeholder, day: day } }, + watch: { + value: function (v) { + this.day = v + } + }, methods: { change: function () { + this.$emit("input", this.day) // support v-model,事件触发需要在 change 之前 this.$emit("change", this.day) } }, template: `
- +
` }) \ No newline at end of file diff --git a/web/public/js/utils.js b/web/public/js/utils.js index efbce850..ddca55de 100644 --- a/web/public/js/utils.js +++ b/web/public/js/utils.js @@ -113,7 +113,6 @@ window.teaweb = { reposition: !bottomLeft }) }, - formatBytes: function (bytes) { bytes = Math.ceil(bytes); if (bytes < Math.pow(1024, 1)) { @@ -136,6 +135,28 @@ window.teaweb = { } return (Math.round(bytes * 100 / Math.pow(1024, 6)) / 100) + "EB"; }, + formatBits: function (bits) { + bits = Math.ceil(bits); + if (bits < Math.pow(1024, 1)) { + return bits + "Bps"; + } + if (bits < Math.pow(1024, 2)) { + return (Math.round(bits * 10000 / Math.pow(1024, 1)) / 10000) + "Kbps"; + } + if (bits < Math.pow(1024, 3)) { + return (Math.round(bits * 10000 / Math.pow(1024, 2)) / 10000) + "Mbps"; + } + if (bits < Math.pow(1024, 4)) { + return (Math.round(bits * 10000 / Math.pow(1024, 3)) / 10000) + "Gbps"; + } + if (bits < Math.pow(1024, 5)) { + return (Math.round(bits * 10000 / Math.pow(1024, 4)) / 10000) + "Tbps"; + } + if (bits < Math.pow(1024, 6)) { + return (Math.round(bits * 10000 / Math.pow(1024, 5)) / 10000) + "Pbps"; + } + return (Math.round(bits * 10000 / Math.pow(1024, 6)) / 10000) + "Ebps"; + }, formatNumber: function (x) { if (x == null) { return "null" @@ -205,6 +226,19 @@ window.teaweb = { divider: divider } }, + bitsAxis: function (stats, countFunc) { + let axis = this.bytesAxis(stats, countFunc) + let unit = axis.unit + if (unit == "B") { + unit = "Bps" + } else { + unit += "bps" + } + return { + unit: unit, + divider: axis.divider + } + }, countAxis: function (stats, countFunc) { let max = Math.max.apply(this, stats.map(countFunc)) let divider = 1 @@ -559,12 +593,22 @@ window.teaweb = { let max = options.max let interval = options.interval + let left = options.left + if (typeof left != "number") { + left = 0 + } + + let right = options.right + if (typeof right != "number") { + right = 0 + } + let chartBox = document.getElementById(chartId) if (chartBox == null) { console.error("chart id '" + chartId + "' not found") return } - let chart = this.initChart(chartBox) + let chart = this.initChart(chartBox, options.cache) let option = { xAxis: { data: values.map(xFunc), @@ -591,9 +635,9 @@ window.teaweb = { } }, grid: { - left: 40, + left: 40 + left, top: 10, - right: 20, + right: 20 + right, bottom: 20 }, series: [ @@ -605,7 +649,8 @@ window.teaweb = { color: this.DefaultChartColor }, areaStyle: {}, - smooth: true + smooth: true, + markLine: options.markLine } ], animation: true, @@ -893,7 +938,11 @@ window.teaweb = { return [40, -20] }, chartMap: {}, // dom id => chart - initChart: function (dom) { + initChart: function (dom, cache) { + if (typeof(cache) != "boolean") { + cache = true + } + let domId = dom.getAttribute("id") if (domId != null && domId.length > 0 && typeof (this.chartMap[domId]) == "object") { return this.chartMap[domId] @@ -902,7 +951,9 @@ window.teaweb = { window.addEventListener("resize", function () { instance.resize() }) - this.chartMap[domId] = instance + if (cache) { + this.chartMap[domId] = instance + } return instance }, encodeHTML: function (s) { diff --git a/web/views/@default/@layout.css b/web/views/@default/@layout.css index 4311d9b7..1465d97f 100644 --- a/web/views/@default/@layout.css +++ b/web/views/@default/@layout.css @@ -731,6 +731,9 @@ var.olive { var.dash { border-bottom: 1px dashed grey; } +var.normal { + font-style: normal; +} /** checkbox **/ .checkbox label a, .checkbox label { diff --git a/web/views/@default/@layout.css.map b/web/views/@default/@layout.css.map index 17da2cc1..1014b7ec 100644 --- a/web/views/@default/@layout.css.map +++ b/web/views/@default/@layout.css.map @@ -1 +1 @@ -{"version":3,"sources":["@left_menu.less","@grids.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file +{"version":3,"sources":["@left_menu.less","@grids.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file diff --git a/web/views/@default/@layout.less b/web/views/@default/@layout.less index 7d524883..efa4689b 100644 --- a/web/views/@default/@layout.less +++ b/web/views/@default/@layout.less @@ -752,6 +752,10 @@ var.dash { border-bottom: 1px dashed grey; } +var.normal { + font-style: normal; +} + /** checkbox **/ .checkbox label a, .checkbox label { font-size: 0.9em !important; diff --git a/web/views/@default/servers/index.css b/web/views/@default/servers/index.css index 17de8198..a93626f9 100644 --- a/web/views/@default/servers/index.css +++ b/web/views/@default/servers/index.css @@ -26,4 +26,10 @@ .server-name-td:hover .icon.setting { display: inline; } +.bandwidth-span var { + font-size: 0.8em; +} +.bandwidth-span var span { + font-size: 1.2em; +} /*# sourceMappingURL=index.css.map */ \ No newline at end of file diff --git a/web/views/@default/servers/index.css.map b/web/views/@default/servers/index.css.map index 0f85d29a..d92c637d 100644 --- a/web/views/@default/servers/index.css.map +++ b/web/views/@default/servers/index.css.map @@ -1 +1 @@ -{"version":3,"sources":["index.less"],"names":[],"mappings":"AAAA,GAAG,QACF,MAAK;EACJ,kBAAA;EACA,UAAA;EACA,UAAA;;AAJF,GAAG,QAOF;EACC,kBAAA;;AAIF;EACC,gBAAA;EACA,gBAAA;;AAGD,cAAc;EACb,UAAA;;AAGD;EACC,kBAAA;;AADD,eAGC,MAAK;EACJ,aAAA;EACA,kBAAA;EACA,UAAA;EACA,QAAA;EACA,gBAAA;;AAIF,eAAe,MACd,MAAK;EACJ,eAAA","file":"index.css"} \ No newline at end of file +{"version":3,"sources":["index.less"],"names":[],"mappings":"AAAA,GAAG,QACF,MAAK;EACJ,kBAAA;EACA,UAAA;EACA,UAAA;;AAJF,GAAG,QAOF;EACC,kBAAA;;AAIF;EACC,gBAAA;EACA,gBAAA;;AAGD,cAAc;EACb,UAAA;;AAGD;EACC,kBAAA;;AADD,eAGC,MAAK;EACJ,aAAA;EACA,kBAAA;EACA,UAAA;EACA,QAAA;EACA,gBAAA;;AAIF,eAAe,MACd,MAAK;EACJ,eAAA;;AAIF,eACC;EACC,gBAAA;;AAFF,eACC,IAGC;EACC,gBAAA","file":"index.css"} \ No newline at end of file diff --git a/web/views/@default/servers/index.html b/web/views/@default/servers/index.html index da8f6140..2f7ce415 100644 --- a/web/views/@default/servers/index.html +++ b/web/views/@default/servers/index.html @@ -63,7 +63,7 @@ 部署集群 域名 端口 - 下行带宽 + 下行带宽 状态 操作 @@ -103,7 +103,7 @@ - {{server.bandwidth}}/s + - diff --git a/web/views/@default/servers/index.less b/web/views/@default/servers/index.less index 2556d024..8e21f541 100644 --- a/web/views/@default/servers/index.less +++ b/web/views/@default/servers/index.less @@ -35,4 +35,14 @@ .icon.setting { display: inline; } -} \ No newline at end of file +} + +.bandwidth-span { + var { + font-size: 0.8em; + + span { + font-size: 1.2em; + } + } +} diff --git a/web/views/@default/settings/user-ui/index.html b/web/views/@default/settings/user-ui/index.html deleted file mode 100644 index 34ef1d36..00000000 --- a/web/views/@default/settings/user-ui/index.html +++ /dev/null @@ -1,128 +0,0 @@ -{$layout} - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
产品名称 * - -
用户系统名称 * - -
是否显示底部开源信息 - -
是否显示版本号 - -
定制版本号 - -

定制自己的版本号,留空表示使用系统自带的版本号。

-
是否显示财务相关功能 - -
浏览器图标 -
- -
-
- 还没有上传。 -
-
- -
-

在浏览器标签栏显示的图标,请使用PNG格式。

-
Logo -
- -
-
- 还没有上传。 -
-
- -
-

显示在系统界面上的图标,请使用PNG格式。

-
注册设置 - 修改用户注册相关设置 » -
- -

数据看板

- - - - - - - - - - - - - -
显示流量相关数据和图表
显示带宽相关数据和图表
带宽单位 - -
- -

其他

- - - - - -
时区 -
-
- -
-
- -
-
-

显示时间使用的时区;如果你的API节点是独立部署的,需要手动重启API节点后生效。

-
- -

修改后,在3分钟内生效。

- - -
\ No newline at end of file diff --git a/web/views/@default/settings/user-ui/index.js b/web/views/@default/settings/user-ui/index.js deleted file mode 100644 index 5d6c3f5f..00000000 --- a/web/views/@default/settings/user-ui/index.js +++ /dev/null @@ -1,36 +0,0 @@ -Tea.context(function () { - this.success = NotifyReloadSuccess("保存成功") - - // 时区 - this.timeZoneGroupCode = "asia" - if (this.timeZoneLocation != null) { - this.timeZoneGroupCode = this.timeZoneLocation.group - } - - let oldTimeZoneGroupCode = this.timeZoneGroupCode - let oldTimeZoneName = "" - if (this.timeZoneLocation != null) { - oldTimeZoneName = this.timeZoneLocation.name - } - - this.$delay(function () { - this.$watch("timeZoneGroupCode", function (groupCode) { - if (groupCode == oldTimeZoneGroupCode && oldTimeZoneName.length > 0) { - this.config.timeZone = oldTimeZoneName - return - } - let firstLocation = null - this.timeZoneLocations.forEach(function (v) { - if (firstLocation != null) { - return - } - if (v.group == groupCode) { - firstLocation = v - } - }) - if (firstLocation != null) { - this.config.timeZone = firstLocation.name - } - }) - }) -}) \ No newline at end of file