diff --git a/web/public/js/components/common/chart-columns-grid.js b/web/public/js/components/common/chart-columns-grid.js new file mode 100644 index 00000000..fce661fa --- /dev/null +++ b/web/public/js/components/common/chart-columns-grid.js @@ -0,0 +1,80 @@ +Vue.component("chart-columns-grid", { + props: [], + mounted: function () { + this.columns = this.calculateColumns() + + let that = this + window.addEventListener("resize", function () { + that.columns = that.calculateColumns() + }) + }, + updated: function () { + let totalElements = this.$el.getElementsByClassName("column").length + if (totalElements == this.totalElements) { + return + } + this.totalElements = totalElements + this.calculateColumns() + }, + data: function () { + return { + columns: "four", + totalElements: 0 + } + }, + methods: { + calculateColumns: function () { + let w = window.innerWidth + let columns = Math.floor(w / 500) + if (columns == 0) { + columns = 1 + } + + let columnElements = this.$el.getElementsByClassName("column") + if (columnElements.length == 0) { + return "one" + } + let maxColumns = columnElements.length + if (columns > maxColumns) { + columns = maxColumns + } + + // 添加右侧边框 + for (let index = 0; index < columnElements.length; index++) { + let el = columnElements[index] + el.className = el.className.replace("with-border", "") + if (index % columns == columns - 1 || index == columnElements.length - 1 /** 最后一个 **/) { + el.className += " with-border" + } + } + + switch (columns) { + case 1: + return "one" + case 2: + return "two" + case 3: + return "three" + case 4: + return "four" + case 5: + return "five" + case 6: + return "six" + case 7: + return "seven" + case 8: + return "eight" + case 9: + return "nine" + case 10: + return "ten" + default: + return "ten" + } + } + }, + template: `
{{typeDefinition.description}}
{{typeDefinition.description}}