0
I think you can change mutations
to
calculateMetrics(state) {
let {portfoliosData, period, status} = state // ES6 syntax
let updatedMetrics = []
for (let s in portfoliosData.performance) {
if (portfoliosData.performance.hasOwnProperty(s)) {
//console.log("Calculate metrics", period.startDateIdx, period.endDateIdx)
let port = {...portfoliosData.performance[s]}
updatedMetrics.push({
name: port.name,
maxDd: maxDrawdown(port.data, period.startDateIdx, period.endDateIdx),
acRet: accumulativeReturn(port.data, period.startDateIdx, period.endDateIdx),
anRet: annualReturn(port.data, period.startDateIdx, period.endDateIdx),
anVol: annualVolatility(port.data, period.startDateIdx, period.endDateIdx),
sRatio: sharpeRatio(port.data, period.startDateIdx, period.endDateIdx),
inRatio: informationRatio(port.data, period.startDateIdx, period.endDateIdx)
})
}
}
portfoliosData.metrics = updatedMetrics
state.portfoliosData = JSON.parse(JSON.stringify(portfoliosData)) // assign to new object
}
We need to create new object (I used JSON.parse(JSON.stringify()) technique) to make vuex
understand data is changed.
- [Vuejs]-Vuejs mounted hook in component not working as expected
- [Vuejs]-UI is not updating after data change in vue
Source:stackexchange.com