diff --git a/src/api/series-api.ts b/src/api/series-api.ts index a2bcb64ca1..077e2b6e58 100644 --- a/src/api/series-api.ts +++ b/src/api/series-api.ts @@ -16,7 +16,7 @@ import { CreatePriceLineOptions, PriceLineOptions } from '../model/price-line-op import { RangeImpl } from '../model/range-impl'; import { Series } from '../model/series'; import { SeriesPlotRow } from '../model/series-data'; -import { SeriesMarker } from '../model/series-markers'; +import { convertSeriesMarker, SeriesMarker } from '../model/series-markers'; import { SeriesOptionsMap, SeriesPartialOptionsMap, @@ -137,8 +137,8 @@ export class SeriesApi< if (dataFirstBarInRange !== null && dataLastBarInRange !== null) { // result.from = dataFirstBarInRange.time.businessDay || dataFirstBarInRange.time.timestamp; // result.to = dataLastBarInRange.time.businessDay || dataLastBarInRange.time.timestamp; - result.from = this._horzScaleBehavior.convertInternalToHorzItem(dataFirstBarInRange.time); - result.to = this._horzScaleBehavior.convertInternalToHorzItem(dataLastBarInRange.time); + result.from = dataFirstBarInRange.originalTime as HorzScaleItem; + result.to = dataLastBarInRange.originalTime as HorzScaleItem; } return result; @@ -187,21 +187,15 @@ export class SeriesApi< public setMarkers(data: SeriesMarker[]): void { checkItemsAreOrdered(data, this._horzScaleBehavior, true); - const convertedMarkers = data.map((marker: SeriesMarker) => ({ - ...marker as Omit, 'time' | 'originalTime'>, - originalTime: marker.time, - time: this._horzScaleBehavior.convertHorzItemToInternal(marker.time), - })); + const convertedMarkers = data.map((marker: SeriesMarker) => + convertSeriesMarker(marker, this._horzScaleBehavior.convertHorzItemToInternal(marker.time), marker.time) + ); this._series.setMarkers(convertedMarkers); } public markers(): SeriesMarker[] { return this._series.markers().map>((internalItem: SeriesMarker) => { - const { originalTime, time, ...item } = internalItem; - return { - time: originalTime as HorzScaleItem, - ...item as Omit, 'time' | 'originalTIme'>, - }; + return convertSeriesMarker(internalItem, internalItem.originalTime as HorzScaleItem, undefined); }); } diff --git a/src/api/time-scale-api.ts b/src/api/time-scale-api.ts index 7ca99182d1..1778402f06 100644 --- a/src/api/time-scale-api.ts +++ b/src/api/time-scale-api.ts @@ -9,8 +9,8 @@ import { clone, DeepPartial } from '../helpers/strict-type-checks'; import { ChartModel } from '../model/chart-model'; import { Coordinate } from '../model/coordinate'; -import { IHorzScaleBehavior } from '../model/ihorz-scale-behavior'; -import { Logical, LogicalRange, Range, TimePointIndex, TimePointsRange } from '../model/time-data'; +import { IHorzScaleBehavior, InternalHorzScaleItem } from '../model/ihorz-scale-behavior'; +import { Logical, LogicalRange, Range, TimePointIndex } from '../model/time-data'; import { HorzScaleOptions, TimeScale } from '../model/time-scale'; import { @@ -78,13 +78,13 @@ export class TimeScaleApi implements ITimeScaleApi } return { - from: this._horzScaleBehavior.convertInternalToHorzItem(timeRange.from), - to: this._horzScaleBehavior.convertInternalToHorzItem(timeRange.to), + from: timeRange.from.originalTime as HorzScaleItem, + to: timeRange.to.originalTime as HorzScaleItem, }; } public setVisibleRange(range: Range): void { - const convertedRange: TimePointsRange = { + const convertedRange: Range = { from: this._horzScaleBehavior.convertHorzItemToInternal(range.from), to: this._horzScaleBehavior.convertHorzItemToInternal(range.to), }; @@ -149,12 +149,12 @@ export class TimeScaleApi implements ITimeScaleApi public coordinateToTime(x: number): HorzScaleItem | null { const timeScale = this._model.timeScale(); const timePointIndex = timeScale.coordinateToIndex(x as Coordinate); - const timePoint = timeScale.indexToTime(timePointIndex); + const timePoint = timeScale.indexToTimeScalePoint(timePointIndex); if (timePoint === null) { return null; } - return this._horzScaleBehavior.convertInternalToHorzItem(timePoint); + return timePoint.originalTime as HorzScaleItem; } public width(): number { diff --git a/src/index.ts b/src/index.ts index 6cbd8c5fb1..8d697ac2f6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,7 +19,7 @@ export const customSeriesDefaultOptions: CustomSeriesOptions = { ...customStyleDefaults, }; -export { createChart } from './api/create-chart'; +export { createChart, createChartEx } from './api/create-chart'; /** * Returns the current version as a string. For example `'3.3.0'`. diff --git a/src/model/horz-scale-behavior-time/horz-scale-behavior-time.ts b/src/model/horz-scale-behavior-time/horz-scale-behavior-time.ts index 7e1771510f..d053aaf38a 100644 --- a/src/model/horz-scale-behavior-time/horz-scale-behavior-time.ts +++ b/src/model/horz-scale-behavior-time/horz-scale-behavior-time.ts @@ -21,18 +21,19 @@ import { BusinessDay, isBusinessDay, isUTCTimestamp, TickMarkType, TickMarkWeigh type TimeConverter = (time: Time) => InternalHorzScaleItem; function businessDayConverter(time: Time): InternalHorzScaleItem { + let businessDay = time; if (isString(time)) { - time = stringToBusinessDay(time); + businessDay = stringToBusinessDay(time); } - if (!isBusinessDay(time)) { + if (!isBusinessDay(businessDay)) { throw new Error('time must be of type BusinessDay'); } - const date = new Date(Date.UTC(time.year, time.month - 1, time.day, 0, 0, 0, 0)); + const date = new Date(Date.UTC(businessDay.year, businessDay.month - 1, businessDay.day, 0, 0, 0, 0)); return { timestamp: Math.round(date.getTime() / 1000) as UTCTimestamp, - businessDay: time, + businessDay, } as unknown as InternalHorzScaleItem; } @@ -181,11 +182,6 @@ export class HorzScaleBehaviorTime implements IHorzScaleBehavior