Загрузка данных
import { AxisLine } from '@src/core/Drawings/axisLine';
import { Diapson } from '@src/core/Drawings/diapson';
import { FibonacciRetracement } from '@src/core/Drawings/fibonacciRetracement';
import { LineDrawing } from '@src/core/Drawings/line';
import { ParallelChannel } from '@src/core/Drawings/parallelChannel';
import { Ray } from '@src/core/Drawings/ray';
import { Rectangle } from '@src/core/Drawings/rectangle';
import { RegressionTrend } from '@src/core/Drawings/regressionTrend';
import { Ruler } from '@src/core/Drawings/ruler';
import { SliderPosition } from '@src/core/Drawings/sliderPosition';
import { Text } from '@src/core/Drawings/text';
import { Traectory } from '@src/core/Drawings/traectory';
import { VolumeProfile } from '@src/core/Drawings/volumeProfile';
import { t } from '@src/translations';
import { DrawingConfig, DrawingParams, LineMarker } from '@src/types';
export enum DrawingsNames {
'trendLine' = 'trendLine',
'arrow' = 'arrow',
'parallelChannel' = 'parallelChannel',
'regressionTrend' = 'regressionTrend',
'ray' = 'ray',
'horizontalLine' = 'horizontalLine',
'horizontalRay' = 'horizontalRay',
'verticalLine' = 'verticalLine',
'ruler' = 'ruler',
'fibonacciRetracement' = 'fibonacciRetracement',
'sliderLong' = 'sliderLong',
'sliderShort' = 'sliderShort',
'diapsonDates' = 'diapsonDates',
'diapsonPrices' = 'diapsonPrices',
'fixedRangeProfile' = 'fixedRangeProfile',
'visibleRangeProfile' = 'visibleRangeProfile',
'rectangle' = 'rectangle',
'traectory' = 'traectory',
'text' = 'text',
}
export const drawingLabelById = (): Record<DrawingsNames, string> => ({
[DrawingsNames.trendLine]: t('Trend line'),
[DrawingsNames.arrow]: t('Arrow'),
[DrawingsNames.parallelChannel]: t('Parallel channel'),
[DrawingsNames.regressionTrend]: t('Regression trend'),
[DrawingsNames.ray]: t('Ray'),
[DrawingsNames.horizontalLine]: t('Horizontal line'),
[DrawingsNames.horizontalRay]: t('Horizontal ray'),
[DrawingsNames.verticalLine]: t('Vertical line'),
[DrawingsNames.fibonacciRetracement]: t('Fibonacci retracement'),
[DrawingsNames.ruler]: t('Ruler'),
[DrawingsNames.sliderLong]: t('Long position'),
[DrawingsNames.sliderShort]: t('Short position'),
[DrawingsNames.diapsonDates]: t('Dates range'),
[DrawingsNames.diapsonPrices]: t('Prices range'),
[DrawingsNames.fixedRangeProfile]: t('Fixed range volume profile'),
[DrawingsNames.visibleRangeProfile]: t('Anchored volume profile'),
[DrawingsNames.rectangle]: t('Rectangle'),
[DrawingsNames.traectory]: t('Traectory'),
[DrawingsNames.text]: t('Text'),
});
export const drawingsMap: Record<DrawingsNames, DrawingConfig> = {
[DrawingsNames.trendLine]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new LineDrawing({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.arrow]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new LineDrawing({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
defaultMarkers: {
endMarker: LineMarker.arrow,
},
});
},
},
[DrawingsNames.parallelChannel]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new ParallelChannel({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.regressionTrend]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new RegressionTrend({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.ray]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new Ray({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.horizontalLine]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new AxisLine({
...rest,
direction: 'horizontal',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.horizontalRay]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new LineDrawing({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
defaultMarkers: {
endMarker: LineMarker.arrow,
},
});
},
},
[DrawingsNames.verticalLine]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new AxisLine({
...rest,
direction: 'vertical',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.sliderLong]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new SliderPosition({
...rest,
side: 'long',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.fibonacciRetracement]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new FibonacciRetracement({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.sliderShort]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new SliderPosition({
...rest,
side: 'short',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.diapsonDates]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new Diapson({
...rest,
rangeMode: 'date',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.diapsonPrices]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new Diapson({
...rest,
rangeMode: 'price',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.fixedRangeProfile]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new VolumeProfile({
...rest,
profileKind: 'fixedRange',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.visibleRangeProfile]: {
singleInstance: true,
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new VolumeProfile({
...rest,
profileKind: 'visibleRange',
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.rectangle]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new Rectangle({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.ruler]: {
singleInstance: true,
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new Ruler({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
resetTriggers: [eventManager.getTimeframeObs(), eventManager.getInterval()],
});
},
},
[DrawingsNames.traectory]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new Traectory({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
[DrawingsNames.text]: {
construct: (params: DrawingParams) => {
const { eventManager, ...rest } = params;
return new Text({
...rest,
formatObservable: eventManager.getChartOptionsModel(),
});
},
},
};