You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.3 KiB
57 lines
1.3 KiB
<template> |
|
<div></div> |
|
</template> |
|
|
|
<script> |
|
export default { |
|
async mounted() { |
|
await this.$nextTick(); |
|
this.update(); |
|
}, |
|
updated() { |
|
this.update(); |
|
}, |
|
methods: { |
|
update() { |
|
// default responsive to true |
|
const options = this.options; |
|
if (options.config === undefined) options.config = { responsive: true }; |
|
if (options.config.responsive === undefined) options.config.responsive = true; |
|
|
|
// re-use plotly instance if config is the same |
|
if (JSON.stringify(options.config) == JSON.stringify(this.last_options.config)) { |
|
Plotly.react(this.$el.id, this.options.data, this.options.layout); |
|
} else { |
|
Plotly.newPlot(this.$el.id, this.options.data, this.options.layout, options.config); |
|
} |
|
|
|
// store last options |
|
this.last_options = options; |
|
}, |
|
}, |
|
data() { |
|
return { |
|
last_options: {}, |
|
}; |
|
}, |
|
props: { |
|
options: Object, |
|
}, |
|
}; |
|
</script> |
|
|
|
<style> |
|
/* |
|
fix styles to correctly render modebar, otherwise large buttons with unwanted line breaks are shown, |
|
possibly due to other CSS libraries overriding default styles affecting plotly styling. |
|
*/ |
|
.js-plotly-plot .plotly .modebar-group { |
|
display: flex; |
|
} |
|
.js-plotly-plot .plotly .modebar-btn { |
|
display: flex; |
|
} |
|
.js-plotly-plot .plotly .modebar-btn svg { |
|
position: static; |
|
} |
|
</style>
|
|
|