diff --git a/tools/otagui/src/components/PartialCheckbox.vue b/tools/otagui/src/components/PartialCheckbox.vue index fc7694fa6..3cd2de887 100644 --- a/tools/otagui/src/components/PartialCheckbox.vue +++ b/tools/otagui/src/components/PartialCheckbox.vue @@ -1,5 +1,11 @@ + + \ No newline at end of file diff --git a/tools/otagui/src/services/echarts_data.js b/tools/otagui/src/services/echarts_data.js index faddeecc9..6e3b41c8d 100644 --- a/tools/otagui/src/services/echarts_data.js +++ b/tools/otagui/src/services/echarts_data.js @@ -1,9 +1,19 @@ -// This function will be used later for generating a pie chart through eCharts export class EchartsData { - constructor(statisticData) { + /** + * Given a set of [key, value] pairs and title, create an object for further + * usage in Vue-Echarts. + * @param {Map} statisticData + * @param {String} title + */ + constructor(statisticData, title) { this.statisticData = statisticData + this.title = title } + /** + * Convert the raw data into a string. + * @return {String} A list of [key, value]. + */ listData() { let table = '' for (let [key, value] of this.statisticData) { @@ -11,4 +21,47 @@ export class EchartsData { } return table } + + /** + * Generate necessary parameters (option) for vue-echarts. + * Format of the parameters can be found here: + * https://echarts.apache.org/en/option.html + * @return {Object} an ECharts option object. + */ + getEchartsOption() { + let option = new Object() + option.title = { + text: this.title, + left: "center" + } + option.tooltip = { + trigger: "item", + formatter: "{a}
{b} : {c} ({d}%)" + } + option.legend = { + orient: "horizontal", + left: "top", + top: "10%", + data: Array.from(this.statisticData.keys()) + } + option.series = [ + { + name: this.title, + type: "pie", + radius: "55%", + center: ["50%", "60%"], + data: Array.from(this.statisticData).map((pair) => { + return { value: pair[1], name: pair[0] } + }), + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: "rgba(0, 0, 0, 0.5)" + } + } + } + ] + return option + } } \ No newline at end of file diff --git a/tools/otagui/src/views/SimpleForm.vue b/tools/otagui/src/views/SimpleForm.vue index 809f80f63..3ade7d5a5 100644 --- a/tools/otagui/src/views/SimpleForm.vue +++ b/tools/otagui/src/views/SimpleForm.vue @@ -125,6 +125,7 @@ export default { }, computed: { updatePartitions() { + if (!this.input.target) return [] let target = this.targetDetails.filter( (d) => d.path === this.input.target ) @@ -145,7 +146,7 @@ export default { handler: function () { this.input.partial = this.partitionList }, - }, + } }, created() { this.resetInput()