echarts LegendVisualProvider 源码

  • 2022-10-20
  • 浏览 (603)

echarts LegendVisualProvider 代码

文件路径:/src/visual/LegendVisualProvider.ts

import SeriesData from '../data/SeriesData';

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/


/**
 * LegendVisualProvider is an bridge that pick encoded color from data and
 * provide to the legend component.
 */
class LegendVisualProvider {

    private _getDataWithEncodedVisual: () => SeriesData;
    private _getRawData: () => SeriesData;

    constructor(
        // Function to get data after filtered. It stores all the encoding info
        getDataWithEncodedVisual: () => SeriesData,
        // Function to get raw data before filtered.
        getRawData: () => SeriesData
    ) {
        this._getDataWithEncodedVisual = getDataWithEncodedVisual;
        this._getRawData = getRawData;
    }

    getAllNames(): string[] {
        const rawData = this._getRawData();
        // We find the name from the raw data. In case it's filtered by the legend component.
        // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.
        return rawData.mapArray(rawData.getName);
    }

    containName(name: string): boolean {
        const rawData = this._getRawData();
        return rawData.indexOfName(name) >= 0;
    }

    indexOfName(name: string): number {
        // Only get data when necessary.
        // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.
        // Invoking Series#getData immediately will throw an error.
        const dataWithEncodedVisual = this._getDataWithEncodedVisual();
        return dataWithEncodedVisual.indexOfName(name);
    }

    getItemVisual(dataIndex: number, key: string): any {
        // Get encoded visual properties from final filtered data.
        const dataWithEncodedVisual = this._getDataWithEncodedVisual();
        return dataWithEncodedVisual.getItemVisual(dataIndex, key as any);
    }
}

export default LegendVisualProvider;

相关信息

echarts 源码目录

相关文章

echarts VisualMapping 源码

echarts aria 源码

echarts commonVisualTypes 源码

echarts decal 源码

echarts helper 源码

echarts style 源码

echarts symbol 源码

echarts visualDefault 源码

echarts visualSolution 源码

0  赞