* Update symbol properties
(data: SeriesData, idx: number)
| 162 | * Update symbol properties |
| 163 | */ |
| 164 | updateData(data: SeriesData, idx: number) { |
| 165 | const seriesModel = data.hostModel; |
| 166 | |
| 167 | (this.childAt(0) as SymbolClz).updateData(data, idx); |
| 168 | |
| 169 | const rippleGroup = this.childAt(1); |
| 170 | const itemModel = data.getItemModel<SymbolDrawItemModelOption>(idx); |
| 171 | const symbolType = data.getItemVisual(idx, 'symbol'); |
| 172 | const symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); |
| 173 | |
| 174 | const symbolStyle = data.getItemVisual(idx, 'style'); |
| 175 | const color = symbolStyle && symbolStyle.fill; |
| 176 | const emphasisModel = itemModel.getModel('emphasis'); |
| 177 | |
| 178 | rippleGroup.setScale(symbolSize); |
| 179 | |
| 180 | rippleGroup.traverse(function (ripplePath: Path) { |
| 181 | ripplePath.setStyle('fill', color); |
| 182 | }); |
| 183 | |
| 184 | const symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize); |
| 185 | if (symbolOffset) { |
| 186 | rippleGroup.x = symbolOffset[0]; |
| 187 | rippleGroup.y = symbolOffset[1]; |
| 188 | } |
| 189 | |
| 190 | const symbolRotate = data.getItemVisual(idx, 'symbolRotate'); |
| 191 | rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; |
| 192 | |
| 193 | const effectCfg: RippleEffectCfg = {}; |
| 194 | |
| 195 | effectCfg.showEffectOn = seriesModel.get('showEffectOn'); |
| 196 | effectCfg.rippleScale = itemModel.get(['rippleEffect', 'scale']); |
| 197 | effectCfg.brushType = itemModel.get(['rippleEffect', 'brushType']); |
| 198 | effectCfg.period = itemModel.get(['rippleEffect', 'period']) * 1000; |
| 199 | effectCfg.effectOffset = idx / data.count(); |
| 200 | effectCfg.z = seriesModel.getShallow('z') || 0; |
| 201 | effectCfg.zlevel = seriesModel.getShallow('zlevel') || 0; |
| 202 | effectCfg.symbolType = symbolType; |
| 203 | effectCfg.color = color; |
| 204 | effectCfg.rippleEffectColor = itemModel.get(['rippleEffect', 'color']); |
| 205 | effectCfg.rippleNumber = itemModel.get(['rippleEffect', 'number']); |
| 206 | |
| 207 | if (effectCfg.showEffectOn === 'render') { |
| 208 | this._effectCfg |
| 209 | ? this.updateEffectAnimation(effectCfg) |
| 210 | : this.startEffectAnimation(effectCfg); |
| 211 | |
| 212 | this._effectCfg = effectCfg; |
| 213 | } |
| 214 | else { |
| 215 | // Not keep old effect config |
| 216 | this._effectCfg = null; |
| 217 | |
| 218 | this.stopEffectAnimation(); |
| 219 | |
| 220 | (this as ECElement).onHoverStateChange = (toState) => { |
| 221 | if (toState === 'emphasis') { |
no test coverage detected