* Find target component by payload like: * ```js * { legendId: 'some_id', name: 'xxx' } * { toolboxIndex: 1, name: 'xxx' } * { geoName: 'some_name', name: 'xxx' } * ``` * PENDING: at present only * * If not found, return null/undefined.
(
payload: ShowTipPayload,
ecModel: GlobalModel,
api: ExtensionAPI
)
| 1218 | * If not found, return null/undefined. |
| 1219 | */ |
| 1220 | function findComponentReference( |
| 1221 | payload: ShowTipPayload, |
| 1222 | ecModel: GlobalModel, |
| 1223 | api: ExtensionAPI |
| 1224 | ): { |
| 1225 | componentMainType: ComponentMainType; |
| 1226 | componentIndex: number; |
| 1227 | el: ECElement; |
| 1228 | } { |
| 1229 | const { queryOptionMap } = preParseFinder(payload); |
| 1230 | const componentMainType = queryOptionMap.keys()[0]; |
| 1231 | if (!componentMainType || componentMainType === 'series') { |
| 1232 | return; |
| 1233 | } |
| 1234 | |
| 1235 | const queryResult = queryReferringComponents( |
| 1236 | ecModel, |
| 1237 | componentMainType, |
| 1238 | queryOptionMap.get(componentMainType), |
| 1239 | { useDefault: false, enableAll: false, enableNone: false } |
| 1240 | ); |
| 1241 | const model = queryResult.models[0]; |
| 1242 | if (!model) { |
| 1243 | return; |
| 1244 | } |
| 1245 | |
| 1246 | const view = api.getViewOfComponentModel(model); |
| 1247 | let el: ECElement; |
| 1248 | view.group.traverse((subEl: ECElement) => { |
| 1249 | const tooltipConfig = getECData(subEl).tooltipConfig; |
| 1250 | if (tooltipConfig && tooltipConfig.name === payload.name) { |
| 1251 | el = subEl; |
| 1252 | return true; // stop |
| 1253 | } |
| 1254 | }); |
| 1255 | |
| 1256 | if (el) { |
| 1257 | return { |
| 1258 | componentMainType, |
| 1259 | componentIndex: model.componentIndex, |
| 1260 | el |
| 1261 | }; |
| 1262 | } |
| 1263 | } |
| 1264 | |
| 1265 | export default TooltipView; |
no test coverage detected
searching dependent graphs…