Skip to content

Commit

Permalink
feat: change runtime logic about get the character config
Browse files Browse the repository at this point in the history
  • Loading branch information
xuefei1313 committed Dec 23, 2024
1 parent cf962c3 commit 70b3291
Show file tree
Hide file tree
Showing 9 changed files with 44 additions and 36 deletions.
4 changes: 4 additions & 0 deletions packages/vstory-core/src/character/chart/character-chart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,4 +217,8 @@ export class CharacterChart<T extends IChartGraphicAttribute>
super._clearGraphic();
this._vchart = null;
}

getRuntimeConfig() {
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type { IChartCharacterConfig } from '../../../interface/dsl/chart';

export interface ICharacterChart extends ICharacter {
config: IChartCharacterConfig;
getRuntimeConfig: () => ICharacterChartRuntimeConfig;
}

export interface ICharacterChartRuntimeConfig extends ICharacterRuntimeConfig {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { merge } from '@visactor/vutils';
import type { IChartCharacterRuntime } from '../interface/runtime';
import { getLayoutFromWidget } from '../../../utils/layout';
import type { ICharacterChartRuntimeConfig } from '../interface/character-chart';
import type { ICharacterChart } from '../interface/character-chart';
export class CommonLayoutRuntime implements IChartCharacterRuntime {
type = 'CommonLayout';

applyConfigToAttribute(character: ICharacterChartRuntimeConfig): void {
const rawAttribute = character.getAttribute();
const config = character.config;
applyConfigToAttribute(character: ICharacterChart): void {
const rawAttribute = character.getRuntimeConfig().getAttribute();
const config = character.getRuntimeConfig().config;
const layoutData = getLayoutFromWidget(config.position);
const layout = getLayoutFromWidget(config.position);
const viewBox = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import { merge } from '@visactor/vutils';
import type { IChartCharacterRuntime } from '../interface/runtime';
import type { ICharacterChartRuntimeConfig } from '../interface/character-chart';
import type { ICharacterChart } from '../interface/character-chart';

export class CommonSpecRuntime implements IChartCharacterRuntime {
type = 'CommonSpec';

applyConfigToAttribute(character: ICharacterChartRuntimeConfig): void {
const rawAttribute = character.getAttribute();
applyConfigToAttribute(character: ICharacterChart): void {
const rawAttribute = character.getRuntimeConfig().getAttribute();
const config = character.getRuntimeConfig().config;
const { spec } = rawAttribute;
const options = character.config.options;
const options = config.options;
const { title, legends, data, color, axes, rootConfig = {}, padding } = options;

if (title) {
Expand Down
22 changes: 12 additions & 10 deletions packages/vstory-core/src/character/chart/runtime/label-style.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { array, isValid, merge } from '@visactor/vutils';
import type { IChartCharacterRuntime } from '../interface/runtime';
import type { ICharacterChartRuntimeConfig } from '../interface/character-chart';
import type { ICharacterChart } from '../interface/character-chart';
import type { ISeries, IVChart } from '@visactor/vchart';
import type { ILabelInfo, Label as VChartLabelComponent } from '@visactor/vchart/esm/component/label/label';
import { MarkStyleRuntime } from './mark-style';
Expand All @@ -13,10 +13,11 @@ import { CommonMarkAttributeMap, fillMarkAttribute, SeriesMarkStyleMap } from '.
export class LabelStyleRuntime implements IChartCharacterRuntime {
type = 'LabelStyle';

applyConfigToAttribute(character: ICharacterChartRuntimeConfig) {
applyConfigToAttribute(character: ICharacterChart) {
// 设置 visible 为 true 关闭标签能力放到分组上
// 当前 dataGroupStyle 中有 label.visible 配置,在这里添加上 visible = true
const dataGroupStyle = character.config.options?.dataGroupStyle;
const config = character.getRuntimeConfig().config;
const dataGroupStyle = config.options?.dataGroupStyle;
if (!dataGroupStyle) {
return;
}
Expand All @@ -34,7 +35,7 @@ export class LabelStyleRuntime implements IChartCharacterRuntime {
return;
}
// 否则全部设置为 true
const rawAttribute = character.getAttribute();
const rawAttribute = character.getRuntimeConfig().getAttribute();
const { spec } = rawAttribute;
if (!spec.label) {
spec.label = { visible: true };
Expand All @@ -57,16 +58,16 @@ export class LabelStyleRuntime implements IChartCharacterRuntime {
* @param vchart
* @returns
*/
afterInitialize(character: ICharacterChartRuntimeConfig, vchart: IVChart) {
afterInitialize(character: ICharacterChart, vchart: IVChart) {
const labelComponent = vchart.getChart().getComponentsByKey('label')[0] as VChartLabelComponent;
if (!labelComponent) {
return;
}
this._setDataGroupStyle(character, labelComponent);
}

private _setDataGroupStyle(character: ICharacterChartRuntimeConfig, labelComponent: VChartLabelComponent) {
const config = character.config;
private _setDataGroupStyle(character: ICharacterChart, labelComponent: VChartLabelComponent) {
const config = character.getRuntimeConfig().config;
const dataGroupStyle = config.options?.dataGroupStyle;
if (!dataGroupStyle) {
return;
Expand Down Expand Up @@ -164,9 +165,10 @@ export class LabelStyleRuntime implements IChartCharacterRuntime {
* @param vchart
* @returns
*/
afterVRenderDraw(character: ICharacterChartRuntimeConfig, vchart: IVChart) {
const dataGroupStyle = character.config.options?.dataGroupStyle;
const labelStyle = character.config.options?.labelStyle;
afterVRenderDraw(character: ICharacterChart, vchart: IVChart) {
const config = character.getRuntimeConfig().config;
const dataGroupStyle = config.options?.dataGroupStyle;
const labelStyle = config.options?.labelStyle;
if (!labelStyle && !dataGroupStyle) {
return;
}
Expand Down
18 changes: 9 additions & 9 deletions packages/vstory-core/src/character/chart/runtime/mark-style.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { IChartCharacterRuntime } from '../interface/runtime';
import type { ICharacterChartRuntimeConfig } from '../interface/character-chart';
import type { ICharacterChart } from '../interface/character-chart';
import type { ISeries, IVChart } from '@visactor/vchart';
import { getSeriesKeyScalesMap, GetVChartSeriesWithMatch, matchDatumWithScaleMap } from './utils';
import type { IChartCharacterConfig } from '../../../interface/dsl/chart';
Expand Down Expand Up @@ -39,17 +39,17 @@ export class MarkStyleRuntime implements IChartCharacterRuntime {
return value;
}

applyConfigToAttribute(character: ICharacterChartRuntimeConfig) {
applyConfigToAttribute(character: ICharacterChart) {
// visible
// 如果 dataGroupStyle 中有 visible 配置,在这里添加上 visible = true
// 具体 visible 的逻辑在下方 afterInitialize 中设置到 mark 上
const config = character.config;
const config = character.getRuntimeConfig().config;
const dataGroupStyle = config.options?.dataGroupStyle;
// 没有的话,忽略
if (!dataGroupStyle) {
return;
}
const rawAttribute = character.getAttribute();
const rawAttribute = character.getRuntimeConfig().getAttribute();
const { spec } = rawAttribute;
const visibleMarkNames: string[] = [];
// 得到全部被设置过 visible 的 markName
Expand Down Expand Up @@ -78,14 +78,14 @@ export class MarkStyleRuntime implements IChartCharacterRuntime {
return;
}

afterInitialize(character: ICharacterChartRuntimeConfig, vchart: IVChart) {
afterInitialize(character: ICharacterChart, vchart: IVChart) {
this._setDataGroupStyle(character, vchart);
this._setMarkStyle(character, vchart);
return;
}

private _setDataGroupStyle(character: ICharacterChartRuntimeConfig, vchart: IVChart) {
const config = character.config;
private _setDataGroupStyle(character: ICharacterChart, vchart: IVChart) {
const config = character.getRuntimeConfig().config;
const dataGroupStyle = config.options?.dataGroupStyle;
if (!dataGroupStyle) {
return;
Expand Down Expand Up @@ -158,8 +158,8 @@ export class MarkStyleRuntime implements IChartCharacterRuntime {
});
}

private _setMarkStyle(character: ICharacterChartRuntimeConfig, vchart: IVChart) {
const config = character.config;
private _setMarkStyle(character: ICharacterChart, vchart: IVChart) {
const config = character.getRuntimeConfig().config;
const markStyle = config.options?.markStyle;
if (!markStyle) {
return;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import type { IChartCharacterRuntime } from '../interface/runtime';
import type { ICharacterChartRuntimeConfig } from '../interface/character-chart';
import type { ICharacterChart } from '../interface/character-chart';

export class RankingBarRuntime implements IChartCharacterRuntime {
type = 'RankingBar';

applyConfigToAttribute(character: ICharacterChartRuntimeConfig): void {
const rawAttribute = character.getAttribute();
applyConfigToAttribute(character: ICharacterChart): void {
const rawAttribute = character.getRuntimeConfig().getAttribute();
const { spec } = rawAttribute;
// 关掉player显示
spec.player = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// import { merge } from '@visactor/vutils';
// import type { IVChart } from '@visactor/vchart';
// import type { IChartCharacterRuntime } from '../interface/runtime';
// import type { ICharacterChartRuntimeConfig } from '../interface/character-chart';
// import type { ICharacterChart } from '../interface/character-chart';

// export class ScatterBarRuntime implements IChartCharacterRuntime {
// type = 'ScatterBar';

// protected declare _character: ICharacterChart;

// constructor(character: ICharacterChartRuntimeConfig) {
// constructor(character: ICharacterChart) {
// this._character = character;
// }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { merge } from '@visactor/vutils';
import { ACustomAnimate } from '@visactor/vrender-core';
import type { IChartCharacterRuntime } from '../interface/runtime';
import type { ICharacterChartRuntimeConfig } from '../interface/character-chart';
import type { ICharacterChart } from '../interface/character-chart';

export class WaveAnimate extends ACustomAnimate<any> {
static label: string = 'wave-animate';
Expand All @@ -28,10 +28,10 @@ export class WaveAnimate extends ACustomAnimate<any> {
export class WaveScatterRuntime implements IChartCharacterRuntime {
type = 'WaveScatter';

applyConfigToAttribute(character: ICharacterChartRuntimeConfig): void {
const rawAttribute = character.getAttribute();
applyConfigToAttribute(character: ICharacterChart): void {
const rawAttribute = character.getRuntimeConfig().getAttribute();
const { spec } = rawAttribute;
const config = character.config as any;
const config = character.getRuntimeConfig().config as any;
const {
waveDuration = 1000,
categoryField,
Expand Down

0 comments on commit 70b3291

Please sign in to comment.