gpt4 book ai didi

javascript - Amstock 图表无法放大 init 事件

转载 作者:行者123 更新时间:2023-12-01 01:50:06 24 4
gpt4 key购买 nike

我需要将图表缩放到 init 上的指定时间段事件。

      "listeners": [{
"event": "zoomed",
"method": this.calulateMetrics
},{
"event": "dataUpdated",
"method": this.showPeriod
}, {
"event": "init",
"method": this.showPeriod
},{
"event": "rendered",
"method": this.showPeriod
}],


showPeriod(event) {
// Retrieve the data
let dates = this.$store.getters.getDates
let startDate = dates[0]
let endDate = (dates[dates.length - 1])
endDate.setHours(22)
try {
this.chart.zoom(startDate, endDate)
console.log("Last date", endDate)
} catch(err) {
console.log("Error",(err.message))
}
},

尽管我无法发现任何错误,但周期保持不变。旁边init我试过rendereddataUpdated但它也没有帮助我。

但是当我触发对外部事件 <v-btn v-on:click="showPeriod">Button</v-btn> 的调用时效果很好。

整个选项文件如下:

   this.chart = window.AmCharts.makeChart("chartdiv", {
"path": AmCharts_path,
"type": "stock",
"theme": "light",

"dataSets": this.$store.state.portfoliosData.performance.map(function (port, idx) {
return {
"title": port.name,
"fieldMappings": [{
"fromField": "value",
"toField": "value"
}],
"dataProvider": port.data,
"compared": (idx === 0 ? false : true),
"categoryField": "date"
}
}),

"panels": [{
"title": "Value",
"percentHeight": 70,
"stockGraphs": [
{
"id": "g1",
"valueField": "value",
"comparable": true,
"compareField": "value",
"balloonFunction": this.ballonRender,
"compareGraphBalloonFunction": this.ballonRender
}]
}],

"chartScrollbarSettings": {
"graph": "g1",
"markPeriodChange": true
},

"categoryAxis": {
"parseDates": true,
},

"categoryAxesSettings": {
"groupToPeriods": ["DD"]
},

"balloon": {
"fixedPosition": true,
"maxWidth": 10000,
"offsetY": 1,
},

"dataDateFormat": "YYYY-MM-DD",

"chartCursorSettings": {
"valueBalloonsEnabled": true,
"categoryBalloonEnabled": true,
"selectWithoutZooming": true,
"showNextAvailable": true,
"categoryBalloonAlpha": 0.8,
"bulletsEnabled": true,
"bulletSize": 10,
"valueZoomable":true,
"usePeriod": "DD",
"categoryBalloonDateFormats": [
{period:'fff',format:'JJ:NN:SS'},
{period:'ss',format:'JJ:NN:SS'},
{period:'mm',format:'JJ:NN'},
{period:'hh',format:'JJ:NN'},
{period:'DD',format:'EEEE, MMM DD'},
{period:'WW',format:'EEEE, MMM DD'},
{period:'MM',format:'MMM'},
{period:'YYYY',format:'YYYY'}
]
},

"periodSelector": {
"position": "bottom"
},
});
},

复制链接可以找到here

最佳答案

主要问题是 AmCharts 的监听器回调不了解您的组件范围。回调中的 this 指的是 AmCharts 的回调范围,而不是您的组件。每个 AmCharts 监听器在事件的 chart 属性中提供对其自身的引用(例如,请参阅 init ),因此将所有 this.chart 行更改为 回调中的 event.chart 将解决这部分问题。如果您需要对组件本身的引用,请在 renderGraph() 方法中向图表对象添加自定义属性,然后通过 event.chart 引用该属性:

  renderGraph() {
// ...
this.chart = window.AmCharts.makeChart("chartdiv", {
// ...
componentRef: this,
// ...
})
}

//example using initPeriod:
initPeriod(event) { //event parameter contains {type: "init", chart: stockChartReference}
console.log("init period")
let dates = event.chart.componentRef.$store.getters.getDates
let startDate = dates[0]
let endDate = (dates[dates.length - 1])
endDate.setHours(22)
try {
event.chart.zoom(startDate, endDate)
console.log("Last date", endDate)
} catch(err) {
console.log("Error",(err.message))
}
},

您的 zoomed 监听器引用了一个名为 calulateMetrics 的未定义方法。我在 amstore 中看到一个名为 calculateMetrics 的方法,但我不确定这是否是您的意思,将其更改为该方法似乎对我不起作用,因此我同意您添加适当的方法。添加缺少的方法并确保您像其他回调一样正确引用图表对象将解决您的问题。

由于缺少方法,除了 zoomed 之外的所有内容的演示:https://codesandbox.io/s/5wpopzwlnp

关于javascript - Amstock 图表无法放大 init 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51628089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com