superset CategoricalColorNamespace 源码
superset CategoricalColorNamespace 代码
文件路径:/superset-frontend/packages/superset-ui-core/src/color/CategoricalColorNamespace.ts
/*
* 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.
*/
import CategoricalColorScale from './CategoricalColorScale';
import { ColorsLookup } from './types';
import getCategoricalSchemeRegistry from './CategoricalSchemeRegistrySingleton';
import stringifyAndTrim from './stringifyAndTrim';
export default class CategoricalColorNamespace {
name: string;
forcedItems: ColorsLookup;
scales: {
[key: string]: CategoricalColorScale;
};
constructor(name: string) {
this.name = name;
this.scales = {};
this.forcedItems = {};
}
getScale(schemeId?: string) {
const id = schemeId ?? getCategoricalSchemeRegistry().getDefaultKey() ?? '';
const scheme = getCategoricalSchemeRegistry().get(id);
return new CategoricalColorScale(scheme?.colors ?? [], this.forcedItems);
}
/**
* Enforce specific color for given value
* This will apply across all color scales
* in this namespace.
* @param {*} value value
* @param {*} forcedColor color
*/
setColor(value: string, forcedColor: string) {
this.forcedItems[stringifyAndTrim(value)] = forcedColor;
return this;
}
resetColors() {
this.forcedItems = {};
}
}
const namespaces: {
[key: string]: CategoricalColorNamespace;
} = {};
export const DEFAULT_NAMESPACE = 'GLOBAL';
export function getNamespace(name: string = DEFAULT_NAMESPACE) {
const instance = namespaces[name];
if (instance) {
return instance;
}
const newInstance = new CategoricalColorNamespace(name);
namespaces[name] = newInstance;
return newInstance;
}
export function getColor(
value?: string,
schemeId?: string,
namespace?: string,
) {
return getNamespace(namespace).getScale(schemeId).getColor(value);
}
/*
Returns a new scale instance within the same namespace.
Especially useful when a chart is booting for the first time
*/
export function getScale(scheme?: string, namespace?: string) {
return getNamespace(namespace).getScale(scheme);
}
相关信息
相关文章
superset CategoricalColorScale 源码
superset CategoricalSchemeRegistrySingleton 源码
superset ColorSchemeRegistry 源码
superset SequentialSchemeRegistrySingleton 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦