From 687c1652bc708772802cf33321eefc3588abd361 Mon Sep 17 00:00:00 2001 From: Diana Gromova <72144169+16adianay@users.noreply.github.com> Date: Mon, 12 Oct 2026 22:28:00 +0400 Subject: [PATCH 1/3] Improve the Charts - Stock demo (jQuery) (#35604) --- apps/demos/Demos/Charts/Stock/jQuery/data.js | 170 ++++------------- .../Demos/Charts/Stock/jQuery/index.html | 1 + apps/demos/Demos/Charts/Stock/jQuery/index.js | 171 ++++++++++++++---- .../Charts-Stock (fluent.blue.light).png | Bin 24920 -> 19161 bytes .../Charts-Stock (material.blue.light).png | Bin 23505 -> 18407 bytes 5 files changed, 167 insertions(+), 175 deletions(-) diff --git a/apps/demos/Demos/Charts/Stock/jQuery/data.js b/apps/demos/Demos/Charts/Stock/jQuery/data.js index 0c54305cbfbd..d458fe0dcd5b 100644 --- a/apps/demos/Demos/Charts/Stock/jQuery/data.js +++ b/apps/demos/Demos/Charts/Stock/jQuery/data.js @@ -1,139 +1,31 @@ -const dataSource = [{ - date: new Date(1994, 2, 1), - l: 24.00, - h: 25.00, - o: 25.00, - c: 24.875, -}, { - date: new Date(1994, 2, 2), - l: 23.625, - h: 25.125, - o: 24.00, - c: 24.875, -}, { - date: new Date(1994, 2, 3), - l: 26.25, - h: 28.25, - o: 26.75, - c: 27.00, -}, { - date: new Date(1994, 2, 4), - l: 26.50, - h: 27.875, - o: 26.875, - c: 27.25, -}, { - date: new Date(1994, 2, 7), - l: 26.375, - h: 27.50, - o: 27.375, - c: 26.75, -}, { - date: new Date(1994, 2, 8), - l: 25.75, - h: 26.875, - o: 26.75, - c: 26.00, -}, { - date: new Date(1994, 2, 9), - l: 25.75, - h: 26.75, - o: 26.125, - c: 26.25, -}, { - date: new Date(1994, 2, 10), - l: 25.75, - h: 26.375, - o: 26.375, - c: 25.875, -}, { - date: new Date(1994, 2, 11), - l: 24.875, - h: 26.125, - o: 26.00, - c: 25.375, -}, { - date: new Date(1994, 2, 14), - l: 25.125, - h: 26.00, - o: 25.625, - c: 25.75, -}, { - date: new Date(1994, 2, 15), - l: 25.875, - h: 26.625, - o: 26.125, - c: 26.375, -}, { - date: new Date(1994, 2, 16), - l: 26.25, - h: 27.375, - o: 26.25, - c: 27.25, -}, { - date: new Date(1994, 2, 17), - l: 26.875, - h: 27.25, - o: 27.125, - c: 26.875, -}, { - date: new Date(1994, 2, 18), - l: 26.375, - h: 27.125, - o: 27.00, - c: 27.125, -}, { - date: new Date(1994, 2, 21), - l: 26.75, - h: 27.875, - o: 26.875, - c: 27.75, -}, { - date: new Date(1994, 2, 22), - l: 26.75, - h: 28.375, - o: 27.50, - c: 27.00, -}, { - date: new Date(1994, 2, 23), - l: 26.875, - h: 28.125, - o: 27.00, - c: 28.00, -}, { - date: new Date(1994, 2, 24), - l: 26.25, - h: 27.875, - o: 27.75, - c: 27.625, -}, { - date: new Date(1994, 2, 25), - l: 27.50, - h: 28.75, - o: 27.75, - c: 28.00, -}, { - date: new Date(1994, 2, 28), - l: 25.75, - h: 28.25, - o: 28.00, - c: 27.25, -}, { - date: new Date(1994, 2, 29), - l: 26.375, - h: 27.50, - o: 27.50, - c: 26.875, -}, { - date: new Date(1994, 2, 30), - l: 25.75, - h: 27.50, - o: 26.375, - c: 26.25, -}, { - date: new Date(1994, 2, 31), - l: 24.75, - h: 27.00, - o: 26.50, - c: 25.25, -}]; +function generateStockData(startDate, days) { + function randomOffset(amplitude) { + return (Math.random() - 0.5) * amplitude; + } + + const data = []; + const current = new Date(startDate); + let price = 25; + + while (data.length < days) { + const day = current.getDay(); + if (day !== 0 && day !== 6) { + const open = price + randomOffset(1.5); + const close = open + randomOffset(1.5); + const high = Math.max(open, close) + Math.random() * 0.8; + const low = Math.min(open, close) - Math.random() * 0.8; + + data.push({ + date: new Date(current), + o: +open.toFixed(2), + h: +high.toFixed(2), + l: +low.toFixed(2), + c: +close.toFixed(2), + }); + + price = close; + } + current.setDate(current.getDate() + 1); + } + return data; +} diff --git a/apps/demos/Demos/Charts/Stock/jQuery/index.html b/apps/demos/Demos/Charts/Stock/jQuery/index.html index 06da1058e48a..5c2280d22490 100644 --- a/apps/demos/Demos/Charts/Stock/jQuery/index.html +++ b/apps/demos/Demos/Charts/Stock/jQuery/index.html @@ -14,6 +14,7 @@
+
diff --git a/apps/demos/Demos/Charts/Stock/jQuery/index.js b/apps/demos/Demos/Charts/Stock/jQuery/index.js index 3ee2aaefbda1..a06a4ce5681c 100644 --- a/apps/demos/Demos/Charts/Stock/jQuery/index.js +++ b/apps/demos/Demos/Charts/Stock/jQuery/index.js @@ -1,55 +1,154 @@ $(() => { - $('#chart').dxChart({ + const dayMs = 24 * 60 * 60 * 1000; + + const panStepFraction = 0.25; + const zoomFactor = 0.75; + const minVisibleSpanMs = 3 * dayMs; + + const initialStart = new Date(1994, 3, 15); + const initialEnd = new Date(1994, 3, 29); + + const data = generateStockData(new Date(1994, 3, 1), 65); + const dataMin = data[0].date.getTime(); + const dataMax = data[data.length - 1].date.getTime(); + + const chart = $('#chart').dxChart({ title: 'Stock Price', - dataSource, - commonSeriesSettings: { - argumentField: 'date', - type: 'stock', + dataSource: data, + commonSeriesSettings: { argumentField: 'date', type: 'stock' }, + series: [{ + name: 'E-Mart', + openValueField: 'o', + highValueField: 'h', + lowValueField: 'l', + closeValueField: 'c', + reduction: { color: 'red' }, + }], + zoomAndPan: { + argumentAxis: 'both', + dragToZoom: true, + allowMouseWheel: true, }, - series: [ - { - name: 'E-Mart', - openValueField: 'o', - highValueField: 'h', - lowValueField: 'l', - closeValueField: 'c', - reduction: { - color: 'red', - }, - }, - ], + scrollBar: { visible: true, position: 'bottom' }, + legend: { verticalAlignment: 'bottom', horizontalAlignment: 'center' }, valueAxis: { + position: 'right', tickInterval: 1, - title: { - text: 'US dollars', - }, - label: { - format: { - type: 'currency', - precision: 0, - }, - }, + title: { text: 'US dollars' }, + label: { format: { type: 'currency', precision: 0 } }, }, argumentAxis: { - workdaysOnly: true, + workdaysOnly: false, + visualRange: { startValue: initialStart, endValue: initialEnd }, label: { - format: 'shortDate', + format: 'MMM dd', + overlappingBehavior: 'rotate', + rotationAngle: 30, }, }, - export: { - enabled: true, - }, + export: { enabled: true }, tooltip: { enabled: true, location: 'edge', - customizeTooltip(arg) { + customizeTooltip({ + openValue, closeValue, highValue, lowValue, + }) { return { - text: `Open: $${arg.openValue}
` - + `Close: $${arg.closeValue}
` - + `High: $${arg.highValue}
` - + `Low: $${arg.lowValue}
`, + text: [ + `Open: $${openValue}`, + `Close: $${closeValue}`, + `High: $${highValue}`, + `Low: $${lowValue}`, + ].join('
'), }; }, }, + }).dxChart('instance'); + + function clamp(value, min, max) { + return Math.min(Math.max(value, min), max); + } + + function getRange() { + const { startValue, endValue } = chart.getArgumentAxis().visualRange(); + return { start: startValue.getTime(), end: endValue.getTime() }; + } + + function setRange(start, end) { + const span = clamp(end - start, minVisibleSpanMs, dataMax - dataMin); + const center = (start + end) / 2; + const newStart = clamp(center - span / 2, dataMin, dataMax - span); + + chart.getArgumentAxis().visualRange({ + startValue: new Date(newStart), + endValue: new Date(newStart + span), + }); + } + + function pan(direction) { + const { start, end } = getRange(); + const shift = (end - start) * panStepFraction * direction; + setRange(start + shift, end + shift); + } + + function zoom(factor) { + const { start, end } = getRange(); + const center = (start + end) / 2; + const half = ((end - start) * factor) / 2; + setRange(center - half, center + half); + } + + function resetZoom() { + setRange(initialStart.getTime(), initialEnd.getTime()); + } + + $('#toolbar').dxToolbar({ + items: [ + { + location: 'after', + widget: 'dxButton', + options: { + icon: 'chevronleft', + hint: 'Pan Left', + onClick: () => pan(-1), + }, + }, + { + location: 'after', + widget: 'dxButton', + options: { + icon: 'chevronright', + hint: 'Pan Right', + onClick: () => pan(1), + }, + }, + { + location: 'after', + widget: 'dxButton', + options: { + icon: 'plus', + hint: 'Zoom In', + onClick: () => zoom(zoomFactor), + }, + }, + { + location: 'after', + widget: 'dxButton', + options: { + icon: 'minus', + hint: 'Zoom Out', + onClick: () => zoom(1 / zoomFactor), + }, + }, + { + location: 'after', + widget: 'dxButton', + options: { + icon: 'refresh', + hint: 'Reset Zoom', + onClick: resetZoom, + }, + }, + ], }); }); diff --git a/apps/demos/testing/etalons/Charts-Stock (fluent.blue.light).png b/apps/demos/testing/etalons/Charts-Stock (fluent.blue.light).png index 3932b5bca8409e88f6d2e2d2803915f6bc07f017..82dcc4e61833a1b8664f46ffeccdec1ebf3b03bb 100644 GIT binary patch literal 19161 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 DZJWx{ literal 24920 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 RIIa@2gs7}Y?lY}-{|_qH7bE}x diff --git a/apps/demos/testing/etalons/Charts-Stock (material.blue.light).png b/apps/demos/testing/etalons/Charts-Stock (material.blue.light).png index 94c83f45d2e8e82e74882c8d26ed57fe20e39f70..88063b161822abe7832aeb1ac598198db50c47b7 100644 GIT binary patch literal 18407 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 Date: Thu, 15 Oct 2026 23:03:14 +0400 Subject: [PATCH 2/3] Improve the Charts - Stock demo (Angular, React, Vue + jQuery data fix) (#35669) --- .../Stock/Angular/app/app.component.html | 56 ++++- .../Charts/Stock/Angular/app/app.component.ts | 107 ++++++++- .../Charts/Stock/Angular/app/app.service.ts | 179 ++++----------- apps/demos/Demos/Charts/Stock/React/App.tsx | 171 +++++++++++--- apps/demos/Demos/Charts/Stock/React/data.ts | 187 ++++----------- apps/demos/Demos/Charts/Stock/ReactJs/App.js | 215 +++++++++++++++--- apps/demos/Demos/Charts/Stock/ReactJs/data.js | 196 +++------------- apps/demos/Demos/Charts/Stock/Vue/App.vue | 156 ++++++++++++- apps/demos/Demos/Charts/Stock/Vue/data.ts | 187 ++++----------- apps/demos/Demos/Charts/Stock/jQuery/data.js | 13 +- .../Charts-Stock (fluent.blue.light).png | Bin 19161 -> 19599 bytes .../Charts-Stock (material.blue.light).png | Bin 18407 -> 18809 bytes ...orm__readonly (fluent.blue.light)_mask.png | Bin 227 -> 141 bytes ...-form__weekly (fluent.blue.light)_mask.png | Bin 227 -> 141 bytes 14 files changed, 806 insertions(+), 661 deletions(-) diff --git a/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html b/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html index b2564bc3cc80..54e5f5b16037 100644 --- a/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html +++ b/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html @@ -1,3 +1,35 @@ + + + + + + + + + + + + - + + + + + - - + + this.pan(-1), + }; + + panRightButtonOptions: DxButtonTypes.Properties = { + icon: 'chevronright', + hint: 'Pan Right', + onClick: () => this.pan(1), + }; + + zoomInButtonOptions: DxButtonTypes.Properties = { + icon: 'plus', + hint: 'Zoom In', + onClick: () => this.zoom(zoomFactor), + }; + + zoomOutButtonOptions: DxButtonTypes.Properties = { + icon: 'minus', + hint: 'Zoom Out', + onClick: () => this.zoom(1 / zoomFactor), + }; + + resetZoomButtonOptions: DxButtonTypes.Properties = { + icon: 'refresh', + hint: 'Reset Zoom', + onClick: () => this.resetZoom(), + }; + + constructor(service: Service, private changeDetectorRef: ChangeDetectorRef) { this.stockPrices = service.getStockPrices(); + this.dataMin = this.stockPrices[0].date.getTime(); + this.dataMax = this.stockPrices[this.stockPrices.length - 1].date.getTime(); + } + + getRange() { + return { + start: (this.visualRange.startValue as Date).getTime(), + end: (this.visualRange.endValue as Date).getTime(), + }; + } + + setRange(start: number, end: number) { + const span = clamp(end - start, minVisibleSpanMs, this.dataMax - this.dataMin); + const center = (start + end) / 2; + const newStart = clamp(center - span / 2, this.dataMin, this.dataMax - span); + + this.visualRange = { + startValue: new Date(newStart), + endValue: new Date(newStart + span), + }; + this.changeDetectorRef.detectChanges(); + } + + pan(direction: number) { + const { start, end } = this.getRange(); + const shift = (end - start) * panStepFraction * direction; + this.setRange(start + shift, end + shift); + } + + zoom(factor: number) { + const { start, end } = this.getRange(); + const center = (start + end) / 2; + const half = ((end - start) * factor) / 2; + this.setRange(center - half, center + half); + } + + resetZoom() { + this.setRange(this.initialStart.getTime(), this.initialEnd.getTime()); } - customizeTooltip(arg) { + customizeTooltip(arg: DxChartTypes.PointInfo) { + if (!('openValue' in arg)) { + return { text: '' }; + } return { text: `Open: $${arg.openValue}
` + `Close: $${arg.closeValue}
` diff --git a/apps/demos/Demos/Charts/Stock/Angular/app/app.service.ts b/apps/demos/Demos/Charts/Stock/Angular/app/app.service.ts index 0240c22abc90..31902d64df8d 100644 --- a/apps/demos/Demos/Charts/Stock/Angular/app/app.service.ts +++ b/apps/demos/Demos/Charts/Stock/Angular/app/app.service.ts @@ -12,145 +12,46 @@ export class StockPrice { c: number; } -const stockPrices: StockPrice[] = [{ - date: new Date(1994, 2, 1), - l: 24.00, - h: 25.00, - o: 25.00, - c: 24.875, -}, { - date: new Date(1994, 2, 2), - l: 23.625, - h: 25.125, - o: 24.00, - c: 24.875, -}, { - date: new Date(1994, 2, 3), - l: 26.25, - h: 28.25, - o: 26.75, - c: 27.00, -}, { - date: new Date(1994, 2, 4), - l: 26.50, - h: 27.875, - o: 26.875, - c: 27.25, -}, { - date: new Date(1994, 2, 7), - l: 26.375, - h: 27.50, - o: 27.375, - c: 26.75, -}, { - date: new Date(1994, 2, 8), - l: 25.75, - h: 26.875, - o: 26.75, - c: 26.00, -}, { - date: new Date(1994, 2, 9), - l: 25.75, - h: 26.75, - o: 26.125, - c: 26.25, -}, { - date: new Date(1994, 2, 10), - l: 25.75, - h: 26.375, - o: 26.375, - c: 25.875, -}, { - date: new Date(1994, 2, 11), - l: 24.875, - h: 26.125, - o: 26.00, - c: 25.375, -}, { - date: new Date(1994, 2, 14), - l: 25.125, - h: 26.00, - o: 25.625, - c: 25.75, -}, { - date: new Date(1994, 2, 15), - l: 25.875, - h: 26.625, - o: 26.125, - c: 26.375, -}, { - date: new Date(1994, 2, 16), - l: 26.25, - h: 27.375, - o: 26.25, - c: 27.25, -}, { - date: new Date(1994, 2, 17), - l: 26.875, - h: 27.25, - o: 27.125, - c: 26.875, -}, { - date: new Date(1994, 2, 18), - l: 26.375, - h: 27.125, - o: 27.00, - c: 27.125, -}, { - date: new Date(1994, 2, 21), - l: 26.75, - h: 27.875, - o: 26.875, - c: 27.75, -}, { - date: new Date(1994, 2, 22), - l: 26.75, - h: 28.375, - o: 27.50, - c: 27.00, -}, { - date: new Date(1994, 2, 23), - l: 26.875, - h: 28.125, - o: 27.00, - c: 28.00, -}, { - date: new Date(1994, 2, 24), - l: 26.25, - h: 27.875, - o: 27.75, - c: 27.625, -}, { - date: new Date(1994, 2, 25), - l: 27.50, - h: 28.75, - o: 27.75, - c: 28.00, -}, { - date: new Date(1994, 2, 28), - l: 25.75, - h: 28.25, - o: 28.00, - c: 27.25, -}, { - date: new Date(1994, 2, 29), - l: 26.375, - h: 27.50, - o: 27.50, - c: 26.875, -}, { - date: new Date(1994, 2, 30), - l: 25.75, - h: 27.50, - o: 26.375, - c: 26.25, -}, { - date: new Date(1994, 2, 31), - l: 24.75, - h: 27.00, - o: 26.50, - c: 25.25, -}]; +function generateStockData(startDate: Date, days: number): StockPrice[] { + let seed = 12345; + + function random(): number { + seed = (seed * 16807) % 2147483647; + return (seed - 1) / 2147483646; + } + + function randomOffset(amplitude: number): number { + return (random() - 0.5) * amplitude; + } + + const data: StockPrice[] = []; + const current = new Date(startDate); + let price = 25; + + while (data.length < days) { + const day = current.getDay(); + if (day !== 0 && day !== 6) { + const open = price + randomOffset(1.5); + const close = open + randomOffset(1.5); + const high = Math.max(open, close) + random() * 0.8; + const low = Math.min(open, close) - random() * 0.8; + + data.push({ + date: new Date(current), + o: +open.toFixed(2), + h: +high.toFixed(2), + l: +low.toFixed(2), + c: +close.toFixed(2), + }); + + price = close; + } + current.setDate(current.getDate() + 1); + } + return data; +} + +const stockPrices: StockPrice[] = generateStockData(new Date(1994, 3, 1), 65); @Injectable() export class Service { diff --git a/apps/demos/Demos/Charts/Stock/React/App.tsx b/apps/demos/Demos/Charts/Stock/React/App.tsx index fa73f5c3571e..2d60fbfc5915 100644 --- a/apps/demos/Demos/Charts/Stock/React/App.tsx +++ b/apps/demos/Demos/Charts/Stock/React/App.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import Chart, { CommonSeriesSettings, Series, @@ -8,12 +8,40 @@ import Chart, { Format, ValueAxis, Title, + ZoomAndPan, + ScrollBar, + Legend, Export, Tooltip, } from 'devextreme-react/chart'; import type { ChartTypes } from 'devextreme-react/chart'; +import type { VisualRange } from 'devextreme-react/common/charts'; +import type { ButtonTypes } from 'devextreme-react/button'; +import Toolbar, { Item } from 'devextreme-react/toolbar'; import { dataSource } from './data.ts'; +const dayMs = 24 * 60 * 60 * 1000; +const panStepFraction = 0.25; +const zoomFactor = 0.75; +const minVisibleSpanMs = 3 * dayMs; + +const initialStart = new Date(1994, 3, 15); +const initialEnd = new Date(1994, 3, 29); + +const dataMin = dataSource[0].date.getTime(); +const dataMax = dataSource[dataSource.length - 1].date.getTime(); + +function clamp(value: number, min: number, max: number): number { + return Math.min(Math.max(value, min), max); +} + +function getRange(range: VisualRange) { + return { + start: (range.startValue as Date).getTime(), + end: (range.endValue as Date).getTime(), + }; +} + function customizeTooltip(arg: ChartTypes.PointInfo): Record { if (!('openValue' in arg)) { return { text: '' }; @@ -28,34 +56,123 @@ function customizeTooltip(arg: ChartTypes.PointInfo): Record { } function App() { + const [visualRange, setVisualRange] = useState({ + startValue: initialStart, + endValue: initialEnd, + }); + + const setRange = useCallback((start: number, end: number) => { + const span = clamp(end - start, minVisibleSpanMs, dataMax - dataMin); + const center = (start + end) / 2; + const newStart = clamp(center - span / 2, dataMin, dataMax - span); + + setVisualRange({ + startValue: new Date(newStart), + endValue: new Date(newStart + span), + }); + }, []); + + const pan = useCallback((direction: number) => { + const { start, end } = getRange(visualRange); + const shift = (end - start) * panStepFraction * direction; + setRange(start + shift, end + shift); + }, [visualRange, setRange]); + + const zoom = useCallback((factor: number) => { + const { start, end } = getRange(visualRange); + const center = (start + end) / 2; + const half = ((end - start) * factor) / 2; + setRange(center - half, center + half); + }, [visualRange, setRange]); + + const resetZoom = useCallback(() => { + setRange(initialStart.getTime(), initialEnd.getTime()); + }, [setRange]); + + const panLeftButtonOptions = useMemo(() => ({ + icon: 'chevronleft', + hint: 'Pan Left', + onClick: () => pan(-1), + }), [pan]); + + const panRightButtonOptions = useMemo(() => ({ + icon: 'chevronright', + hint: 'Pan Right', + onClick: () => pan(1), + }), [pan]); + + const zoomInButtonOptions = useMemo(() => ({ + icon: 'plus', + hint: 'Zoom In', + onClick: () => zoom(zoomFactor), + }), [zoom]); + + const zoomOutButtonOptions = useMemo(() => ({ + icon: 'minus', + hint: 'Zoom Out', + onClick: () => zoom(1 / zoomFactor), + }), [zoom]); + + const resetZoomButtonOptions = useMemo(() => ({ + icon: 'refresh', + hint: 'Reset Zoom', + onClick: resetZoom, + }), [resetZoom]); + return ( - - - + + + + + + + + - - - - - - - <Label> - <Format precision={0} type="currency" /> - </Label> - </ValueAxis> - <Export enabled={true} /> - <Tooltip - enabled={true} - customizeTooltip={customizeTooltip} - location="edge" - /> - </Chart> + <CommonSeriesSettings argumentField="date" type="stock" /> + <Series + name="E-Mart" + openValueField="o" + highValueField="h" + lowValueField="l" + closeValueField="c" + > + <Reduction color="red" /> + </Series> + <ZoomAndPan + argumentAxis="both" + dragToZoom={true} + allowMouseWheel={true} + /> + <ScrollBar visible={true} position="bottom" /> + <Legend verticalAlignment="bottom" horizontalAlignment="center" /> + <ArgumentAxis + visualRange={visualRange} + > + <Label + format="MMM dd" + overlappingBehavior="rotate" + rotationAngle={30} + /> + </ArgumentAxis> + <ValueAxis tickInterval={1} position="right"> + <Title text="US dollars" /> + <Label> + <Format precision={0} type="currency" /> + </Label> + </ValueAxis> + <Export enabled={true} /> + <Tooltip + enabled={true} + customizeTooltip={customizeTooltip} + location="edge" + /> + </Chart> + </> ); } diff --git a/apps/demos/Demos/Charts/Stock/React/data.ts b/apps/demos/Demos/Charts/Stock/React/data.ts index 29303780dd9e..1130d8f41409 100644 --- a/apps/demos/Demos/Charts/Stock/React/data.ts +++ b/apps/demos/Demos/Charts/Stock/React/data.ts @@ -1,139 +1,48 @@ -export const dataSource = [{ - date: new Date(1994, 2, 1), - l: 24.00, - h: 25.00, - o: 25.00, - c: 24.875, -}, { - date: new Date(1994, 2, 2), - l: 23.625, - h: 25.125, - o: 24.00, - c: 24.875, -}, { - date: new Date(1994, 2, 3), - l: 26.25, - h: 28.25, - o: 26.75, - c: 27.00, -}, { - date: new Date(1994, 2, 4), - l: 26.50, - h: 27.875, - o: 26.875, - c: 27.25, -}, { - date: new Date(1994, 2, 7), - l: 26.375, - h: 27.50, - o: 27.375, - c: 26.75, -}, { - date: new Date(1994, 2, 8), - l: 25.75, - h: 26.875, - o: 26.75, - c: 26.00, -}, { - date: new Date(1994, 2, 9), - l: 25.75, - h: 26.75, - o: 26.125, - c: 26.25, -}, { - date: new Date(1994, 2, 10), - l: 25.75, - h: 26.375, - o: 26.375, - c: 25.875, -}, { - date: new Date(1994, 2, 11), - l: 24.875, - h: 26.125, - o: 26.00, - c: 25.375, -}, { - date: new Date(1994, 2, 14), - l: 25.125, - h: 26.00, - o: 25.625, - c: 25.75, -}, { - date: new Date(1994, 2, 15), - l: 25.875, - h: 26.625, - o: 26.125, - c: 26.375, -}, { - date: new Date(1994, 2, 16), - l: 26.25, - h: 27.375, - o: 26.25, - c: 27.25, -}, { - date: new Date(1994, 2, 17), - l: 26.875, - h: 27.25, - o: 27.125, - c: 26.875, -}, { - date: new Date(1994, 2, 18), - l: 26.375, - h: 27.125, - o: 27.00, - c: 27.125, -}, { - date: new Date(1994, 2, 21), - l: 26.75, - h: 27.875, - o: 26.875, - c: 27.75, -}, { - date: new Date(1994, 2, 22), - l: 26.75, - h: 28.375, - o: 27.50, - c: 27.00, -}, { - date: new Date(1994, 2, 23), - l: 26.875, - h: 28.125, - o: 27.00, - c: 28.00, -}, { - date: new Date(1994, 2, 24), - l: 26.25, - h: 27.875, - o: 27.75, - c: 27.625, -}, { - date: new Date(1994, 2, 25), - l: 27.50, - h: 28.75, - o: 27.75, - c: 28.00, -}, { - date: new Date(1994, 2, 28), - l: 25.75, - h: 28.25, - o: 28.00, - c: 27.25, -}, { - date: new Date(1994, 2, 29), - l: 26.375, - h: 27.50, - o: 27.50, - c: 26.875, -}, { - date: new Date(1994, 2, 30), - l: 25.75, - h: 27.50, - o: 26.375, - c: 26.25, -}, { - date: new Date(1994, 2, 31), - l: 24.75, - h: 27.00, - o: 26.50, - c: 25.25, -}]; +export interface StockPrice { + date: Date; + l: number; + h: number; + o: number; + c: number; +} + +function generateStockData(startDate: Date, days: number): StockPrice[] { + let seed = 12345; + + function random(): number { + seed = (seed * 16807) % 2147483647; + return (seed - 1) / 2147483646; + } + + function randomOffset(amplitude: number): number { + return (random() - 0.5) * amplitude; + } + + const data: StockPrice[] = []; + const current = new Date(startDate); + let price = 25; + + while (data.length < days) { + const day = current.getDay(); + if (day !== 0 && day !== 6) { + const open = price + randomOffset(1.5); + const close = open + randomOffset(1.5); + const high = Math.max(open, close) + random() * 0.8; + const low = Math.min(open, close) - random() * 0.8; + + data.push({ + date: new Date(current), + o: +open.toFixed(2), + h: +high.toFixed(2), + l: +low.toFixed(2), + c: +close.toFixed(2), + }); + + price = close; + } + current.setDate(current.getDate() + 1); + } + return data; +} + +export const dataSource = generateStockData(new Date(1994, 3, 1), 65); diff --git a/apps/demos/Demos/Charts/Stock/ReactJs/App.js b/apps/demos/Demos/Charts/Stock/ReactJs/App.js index 24cf604fc115..2696524e0c3d 100644 --- a/apps/demos/Demos/Charts/Stock/ReactJs/App.js +++ b/apps/demos/Demos/Charts/Stock/ReactJs/App.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import Chart, { CommonSeriesSettings, Series, @@ -8,11 +8,32 @@ import Chart, { Format, ValueAxis, Title, + ZoomAndPan, + ScrollBar, + Legend, Export, Tooltip, } from 'devextreme-react/chart'; +import Toolbar, { Item } from 'devextreme-react/toolbar'; import { dataSource } from './data.js'; +const dayMs = 24 * 60 * 60 * 1000; +const panStepFraction = 0.25; +const zoomFactor = 0.75; +const minVisibleSpanMs = 3 * dayMs; +const initialStart = new Date(1994, 3, 15); +const initialEnd = new Date(1994, 3, 29); +const dataMin = dataSource[0].date.getTime(); +const dataMax = dataSource[dataSource.length - 1].date.getTime(); +function clamp(value, min, max) { + return Math.min(Math.max(value, min), max); +} +function getRange(range) { + return { + start: range.startValue.getTime(), + end: range.endValue.getTime(), + }; +} function customizeTooltip(arg) { if (!('openValue' in arg)) { return { text: '' }; @@ -25,44 +46,166 @@ function customizeTooltip(arg) { }; } function App() { + const [visualRange, setVisualRange] = useState({ + startValue: initialStart, + endValue: initialEnd, + }); + const setRange = useCallback((start, end) => { + const span = clamp(end - start, minVisibleSpanMs, dataMax - dataMin); + const center = (start + end) / 2; + const newStart = clamp(center - span / 2, dataMin, dataMax - span); + setVisualRange({ + startValue: new Date(newStart), + endValue: new Date(newStart + span), + }); + }, []); + const pan = useCallback( + (direction) => { + const { start, end } = getRange(visualRange); + const shift = (end - start) * panStepFraction * direction; + setRange(start + shift, end + shift); + }, + [visualRange, setRange], + ); + const zoom = useCallback( + (factor) => { + const { start, end } = getRange(visualRange); + const center = (start + end) / 2; + const half = ((end - start) * factor) / 2; + setRange(center - half, center + half); + }, + [visualRange, setRange], + ); + const resetZoom = useCallback(() => { + setRange(initialStart.getTime(), initialEnd.getTime()); + }, [setRange]); + const panLeftButtonOptions = useMemo( + () => ({ + icon: 'chevronleft', + hint: 'Pan Left', + onClick: () => pan(-1), + }), + [pan], + ); + const panRightButtonOptions = useMemo( + () => ({ + icon: 'chevronright', + hint: 'Pan Right', + onClick: () => pan(1), + }), + [pan], + ); + const zoomInButtonOptions = useMemo( + () => ({ + icon: 'plus', + hint: 'Zoom In', + onClick: () => zoom(zoomFactor), + }), + [zoom], + ); + const zoomOutButtonOptions = useMemo( + () => ({ + icon: 'minus', + hint: 'Zoom Out', + onClick: () => zoom(1 / zoomFactor), + }), + [zoom], + ); + const resetZoomButtonOptions = useMemo( + () => ({ + icon: 'refresh', + hint: 'Reset Zoom', + onClick: resetZoom, + }), + [resetZoom], + ); return ( - <Chart - id="chart" - title="Stock Price" - dataSource={dataSource} - > - <CommonSeriesSettings - argumentField="date" - type="stock" - /> - <Series - name="E-Mart" - openValueField="o" - highValueField="h" - lowValueField="l" - closeValueField="c" + <> + <Toolbar> + <Item + location="after" + widget="dxButton" + options={panLeftButtonOptions} + /> + <Item + location="after" + widget="dxButton" + options={panRightButtonOptions} + /> + <Item + location="after" + widget="dxButton" + options={zoomInButtonOptions} + /> + <Item + location="after" + widget="dxButton" + options={zoomOutButtonOptions} + /> + <Item + location="after" + widget="dxButton" + options={resetZoomButtonOptions} + /> + </Toolbar> + <Chart + id="chart" + title="Stock Price" + dataSource={dataSource} > - <Reduction color="red" /> - </Series> - <ArgumentAxis workdaysOnly={true}> - <Label format="shortDate" /> - </ArgumentAxis> - <ValueAxis tickInterval={1}> - <Title text="US dollars" /> - <Label> - <Format - precision={0} - type="currency" + <CommonSeriesSettings + argumentField="date" + type="stock" + /> + <Series + name="E-Mart" + openValueField="o" + highValueField="h" + lowValueField="l" + closeValueField="c" + > + <Reduction color="red" /> + </Series> + <ZoomAndPan + argumentAxis="both" + dragToZoom={true} + allowMouseWheel={true} + /> + <ScrollBar + visible={true} + position="bottom" + /> + <Legend + verticalAlignment="bottom" + horizontalAlignment="center" + /> + <ArgumentAxis visualRange={visualRange}> + <Label + format="MMM dd" + overlappingBehavior="rotate" + rotationAngle={30} /> - </Label> - </ValueAxis> - <Export enabled={true} /> - <Tooltip - enabled={true} - customizeTooltip={customizeTooltip} - location="edge" - /> - </Chart> + </ArgumentAxis> + <ValueAxis + tickInterval={1} + position="right" + > + <Title text="US dollars" /> + <Label> + <Format + precision={0} + type="currency" + /> + </Label> + </ValueAxis> + <Export enabled={true} /> + <Tooltip + enabled={true} + customizeTooltip={customizeTooltip} + location="edge" + /> + </Chart> + </> ); } export default App; diff --git a/apps/demos/Demos/Charts/Stock/ReactJs/data.js b/apps/demos/Demos/Charts/Stock/ReactJs/data.js index 8ac0d34d2404..0361f3fea288 100644 --- a/apps/demos/Demos/Charts/Stock/ReactJs/data.js +++ b/apps/demos/Demos/Charts/Stock/ReactJs/data.js @@ -1,163 +1,33 @@ -export const dataSource = [ - { - date: new Date(1994, 2, 1), - l: 24.0, - h: 25.0, - o: 25.0, - c: 24.875, - }, - { - date: new Date(1994, 2, 2), - l: 23.625, - h: 25.125, - o: 24.0, - c: 24.875, - }, - { - date: new Date(1994, 2, 3), - l: 26.25, - h: 28.25, - o: 26.75, - c: 27.0, - }, - { - date: new Date(1994, 2, 4), - l: 26.5, - h: 27.875, - o: 26.875, - c: 27.25, - }, - { - date: new Date(1994, 2, 7), - l: 26.375, - h: 27.5, - o: 27.375, - c: 26.75, - }, - { - date: new Date(1994, 2, 8), - l: 25.75, - h: 26.875, - o: 26.75, - c: 26.0, - }, - { - date: new Date(1994, 2, 9), - l: 25.75, - h: 26.75, - o: 26.125, - c: 26.25, - }, - { - date: new Date(1994, 2, 10), - l: 25.75, - h: 26.375, - o: 26.375, - c: 25.875, - }, - { - date: new Date(1994, 2, 11), - l: 24.875, - h: 26.125, - o: 26.0, - c: 25.375, - }, - { - date: new Date(1994, 2, 14), - l: 25.125, - h: 26.0, - o: 25.625, - c: 25.75, - }, - { - date: new Date(1994, 2, 15), - l: 25.875, - h: 26.625, - o: 26.125, - c: 26.375, - }, - { - date: new Date(1994, 2, 16), - l: 26.25, - h: 27.375, - o: 26.25, - c: 27.25, - }, - { - date: new Date(1994, 2, 17), - l: 26.875, - h: 27.25, - o: 27.125, - c: 26.875, - }, - { - date: new Date(1994, 2, 18), - l: 26.375, - h: 27.125, - o: 27.0, - c: 27.125, - }, - { - date: new Date(1994, 2, 21), - l: 26.75, - h: 27.875, - o: 26.875, - c: 27.75, - }, - { - date: new Date(1994, 2, 22), - l: 26.75, - h: 28.375, - o: 27.5, - c: 27.0, - }, - { - date: new Date(1994, 2, 23), - l: 26.875, - h: 28.125, - o: 27.0, - c: 28.0, - }, - { - date: new Date(1994, 2, 24), - l: 26.25, - h: 27.875, - o: 27.75, - c: 27.625, - }, - { - date: new Date(1994, 2, 25), - l: 27.5, - h: 28.75, - o: 27.75, - c: 28.0, - }, - { - date: new Date(1994, 2, 28), - l: 25.75, - h: 28.25, - o: 28.0, - c: 27.25, - }, - { - date: new Date(1994, 2, 29), - l: 26.375, - h: 27.5, - o: 27.5, - c: 26.875, - }, - { - date: new Date(1994, 2, 30), - l: 25.75, - h: 27.5, - o: 26.375, - c: 26.25, - }, - { - date: new Date(1994, 2, 31), - l: 24.75, - h: 27.0, - o: 26.5, - c: 25.25, - }, -]; +function generateStockData(startDate, days) { + let seed = 12345; + function random() { + seed = (seed * 16807) % 2147483647; + return (seed - 1) / 2147483646; + } + function randomOffset(amplitude) { + return (random() - 0.5) * amplitude; + } + const data = []; + const current = new Date(startDate); + let price = 25; + while (data.length < days) { + const day = current.getDay(); + if (day !== 0 && day !== 6) { + const open = price + randomOffset(1.5); + const close = open + randomOffset(1.5); + const high = Math.max(open, close) + random() * 0.8; + const low = Math.min(open, close) - random() * 0.8; + data.push({ + date: new Date(current), + o: +open.toFixed(2), + h: +high.toFixed(2), + l: +low.toFixed(2), + c: +close.toFixed(2), + }); + price = close; + } + current.setDate(current.getDate() + 1); + } + return data; +} +export const dataSource = generateStockData(new Date(1994, 3, 1), 65); diff --git a/apps/demos/Demos/Charts/Stock/Vue/App.vue b/apps/demos/Demos/Charts/Stock/Vue/App.vue index 5d6a15657757..302612cc928e 100644 --- a/apps/demos/Demos/Charts/Stock/Vue/App.vue +++ b/apps/demos/Demos/Charts/Stock/Vue/App.vue @@ -1,4 +1,31 @@ <template> + <DxToolbar> + <DxItem + :options="panLeftButtonOptions" + location="after" + widget="dxButton" + /> + <DxItem + :options="panRightButtonOptions" + location="after" + widget="dxButton" + /> + <DxItem + :options="zoomInButtonOptions" + location="after" + widget="dxButton" + /> + <DxItem + :options="zoomOutButtonOptions" + location="after" + widget="dxButton" + /> + <DxItem + :options="resetZoomButtonOptions" + location="after" + widget="dxButton" + /> + </DxToolbar> <DxChart id="chart" :data-source="dataSource" @@ -17,10 +44,34 @@ > <DxReduction color="red"/> </DxSeries> - <DxArgumentAxis :workdays-only="true"> - <DxLabel format="shortDate"/> + <DxZoomAndPan + :drag-to-zoom="true" + :allow-mouse-wheel="true" + argument-axis="both" + /> + <DxScrollBar + :visible="true" + position="bottom" + /> + <DxLegend + vertical-alignment="bottom" + horizontal-alignment="center" + /> + <DxArgumentAxis> + <DxVisualRange + v-model:start-value="startValue" + v-model:end-value="endValue" + /> + <DxLabel + :rotation-angle="30" + format="MMM dd" + overlapping-behavior="rotate" + /> </DxArgumentAxis> - <DxValueAxis :tick-interval="1"> + <DxValueAxis + :tick-interval="1" + position="right" + > <DxTitle text="US dollars"/> <DxLabel> <DxFormat @@ -38,26 +89,115 @@ </DxChart> </template> <script setup lang="ts"> +import { ref } from 'vue'; import DxChart, { DxCommonSeriesSettings, DxSeries, DxReduction, DxArgumentAxis, + DxVisualRange, DxLabel, DxFormat, DxValueAxis, DxTitle, + DxZoomAndPan, + DxScrollBar, + DxLegend, DxExport, DxTooltip, + type DxChartTypes, } from 'devextreme-vue/chart'; +import type { DxButtonTypes } from 'devextreme-vue/button'; +import DxToolbar, { DxItem } from 'devextreme-vue/toolbar'; import { dataSource } from './data.ts'; -const customizeTooltip = (pointInfo: any) => ({ - text: `Open: $${pointInfo.openValue}<br/> - Close: $${pointInfo.closeValue}<br/> - High: $${pointInfo.highValue}<br/> - Low: $${pointInfo.lowValue}<br/>`, +const dayMs = 24 * 60 * 60 * 1000; +const panStepFraction = 0.25; +const zoomFactor = 0.75; +const minVisibleSpanMs = 3 * dayMs; + +const initialStart = new Date(1994, 3, 15); +const initialEnd = new Date(1994, 3, 29); + +const dataMin = dataSource[0].date.getTime(); +const dataMax = dataSource[dataSource.length - 1].date.getTime(); + +const startValue = ref(initialStart); +const endValue = ref(initialEnd); + +const clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max); + +const getRange = () => ({ + start: startValue.value.getTime(), + end: endValue.value.getTime(), }); + +const setRange = (start: number, end: number) => { + const span = clamp(end - start, minVisibleSpanMs, dataMax - dataMin); + const center = (start + end) / 2; + const newStart = clamp(center - span / 2, dataMin, dataMax - span); + + startValue.value = new Date(newStart); + endValue.value = new Date(newStart + span); +}; + +const pan = (direction: number) => { + const { start, end } = getRange(); + const shift = (end - start) * panStepFraction * direction; + setRange(start + shift, end + shift); +}; + +const zoom = (factor: number) => { + const { start, end } = getRange(); + const center = (start + end) / 2; + const half = ((end - start) * factor) / 2; + setRange(center - half, center + half); +}; + +const resetZoom = () => { + setRange(initialStart.getTime(), initialEnd.getTime()); +}; + +const panLeftButtonOptions: DxButtonTypes.Properties = { + icon: 'chevronleft', + hint: 'Pan Left', + onClick: () => pan(-1), +}; + +const panRightButtonOptions: DxButtonTypes.Properties = { + icon: 'chevronright', + hint: 'Pan Right', + onClick: () => pan(1), +}; + +const zoomInButtonOptions: DxButtonTypes.Properties = { + icon: 'plus', + hint: 'Zoom In', + onClick: () => zoom(zoomFactor), +}; + +const zoomOutButtonOptions: DxButtonTypes.Properties = { + icon: 'minus', + hint: 'Zoom Out', + onClick: () => zoom(1 / zoomFactor), +}; + +const resetZoomButtonOptions: DxButtonTypes.Properties = { + icon: 'refresh', + hint: 'Reset Zoom', + onClick: resetZoom, +}; + +const customizeTooltip = (pointInfo: DxChartTypes.PointInfo) => { + const info = pointInfo as DxChartTypes.PointInfo & Record<string, unknown>; + + return { + text: `Open: $${info.openValue}<br/> + Close: $${info.closeValue}<br/> + High: $${info.highValue}<br/> + Low: $${info.lowValue}<br/>`, + }; +}; </script> <style> #chart { diff --git a/apps/demos/Demos/Charts/Stock/Vue/data.ts b/apps/demos/Demos/Charts/Stock/Vue/data.ts index 29303780dd9e..1130d8f41409 100644 --- a/apps/demos/Demos/Charts/Stock/Vue/data.ts +++ b/apps/demos/Demos/Charts/Stock/Vue/data.ts @@ -1,139 +1,48 @@ -export const dataSource = [{ - date: new Date(1994, 2, 1), - l: 24.00, - h: 25.00, - o: 25.00, - c: 24.875, -}, { - date: new Date(1994, 2, 2), - l: 23.625, - h: 25.125, - o: 24.00, - c: 24.875, -}, { - date: new Date(1994, 2, 3), - l: 26.25, - h: 28.25, - o: 26.75, - c: 27.00, -}, { - date: new Date(1994, 2, 4), - l: 26.50, - h: 27.875, - o: 26.875, - c: 27.25, -}, { - date: new Date(1994, 2, 7), - l: 26.375, - h: 27.50, - o: 27.375, - c: 26.75, -}, { - date: new Date(1994, 2, 8), - l: 25.75, - h: 26.875, - o: 26.75, - c: 26.00, -}, { - date: new Date(1994, 2, 9), - l: 25.75, - h: 26.75, - o: 26.125, - c: 26.25, -}, { - date: new Date(1994, 2, 10), - l: 25.75, - h: 26.375, - o: 26.375, - c: 25.875, -}, { - date: new Date(1994, 2, 11), - l: 24.875, - h: 26.125, - o: 26.00, - c: 25.375, -}, { - date: new Date(1994, 2, 14), - l: 25.125, - h: 26.00, - o: 25.625, - c: 25.75, -}, { - date: new Date(1994, 2, 15), - l: 25.875, - h: 26.625, - o: 26.125, - c: 26.375, -}, { - date: new Date(1994, 2, 16), - l: 26.25, - h: 27.375, - o: 26.25, - c: 27.25, -}, { - date: new Date(1994, 2, 17), - l: 26.875, - h: 27.25, - o: 27.125, - c: 26.875, -}, { - date: new Date(1994, 2, 18), - l: 26.375, - h: 27.125, - o: 27.00, - c: 27.125, -}, { - date: new Date(1994, 2, 21), - l: 26.75, - h: 27.875, - o: 26.875, - c: 27.75, -}, { - date: new Date(1994, 2, 22), - l: 26.75, - h: 28.375, - o: 27.50, - c: 27.00, -}, { - date: new Date(1994, 2, 23), - l: 26.875, - h: 28.125, - o: 27.00, - c: 28.00, -}, { - date: new Date(1994, 2, 24), - l: 26.25, - h: 27.875, - o: 27.75, - c: 27.625, -}, { - date: new Date(1994, 2, 25), - l: 27.50, - h: 28.75, - o: 27.75, - c: 28.00, -}, { - date: new Date(1994, 2, 28), - l: 25.75, - h: 28.25, - o: 28.00, - c: 27.25, -}, { - date: new Date(1994, 2, 29), - l: 26.375, - h: 27.50, - o: 27.50, - c: 26.875, -}, { - date: new Date(1994, 2, 30), - l: 25.75, - h: 27.50, - o: 26.375, - c: 26.25, -}, { - date: new Date(1994, 2, 31), - l: 24.75, - h: 27.00, - o: 26.50, - c: 25.25, -}]; +export interface StockPrice { + date: Date; + l: number; + h: number; + o: number; + c: number; +} + +function generateStockData(startDate: Date, days: number): StockPrice[] { + let seed = 12345; + + function random(): number { + seed = (seed * 16807) % 2147483647; + return (seed - 1) / 2147483646; + } + + function randomOffset(amplitude: number): number { + return (random() - 0.5) * amplitude; + } + + const data: StockPrice[] = []; + const current = new Date(startDate); + let price = 25; + + while (data.length < days) { + const day = current.getDay(); + if (day !== 0 && day !== 6) { + const open = price + randomOffset(1.5); + const close = open + randomOffset(1.5); + const high = Math.max(open, close) + random() * 0.8; + const low = Math.min(open, close) - random() * 0.8; + + data.push({ + date: new Date(current), + o: +open.toFixed(2), + h: +high.toFixed(2), + l: +low.toFixed(2), + c: +close.toFixed(2), + }); + + price = close; + } + current.setDate(current.getDate() + 1); + } + return data; +} + +export const dataSource = generateStockData(new Date(1994, 3, 1), 65); diff --git a/apps/demos/Demos/Charts/Stock/jQuery/data.js b/apps/demos/Demos/Charts/Stock/jQuery/data.js index d458fe0dcd5b..dfb1969617d6 100644 --- a/apps/demos/Demos/Charts/Stock/jQuery/data.js +++ b/apps/demos/Demos/Charts/Stock/jQuery/data.js @@ -1,6 +1,13 @@ function generateStockData(startDate, days) { + let seed = 12345; + + function random() { + seed = (seed * 16807) % 2147483647; + return (seed - 1) / 2147483646; + } + function randomOffset(amplitude) { - return (Math.random() - 0.5) * amplitude; + return (random() - 0.5) * amplitude; } const data = []; @@ -12,8 +19,8 @@ function generateStockData(startDate, days) { if (day !== 0 && day !== 6) { const open = price + randomOffset(1.5); const close = open + randomOffset(1.5); - const high = Math.max(open, close) + Math.random() * 0.8; - const low = Math.min(open, close) - Math.random() * 0.8; + const high = Math.max(open, close) + random() * 0.8; + const low = Math.min(open, close) - random() * 0.8; data.push({ date: new Date(current), diff --git a/apps/demos/testing/etalons/Charts-Stock (fluent.blue.light).png b/apps/demos/testing/etalons/Charts-Stock (fluent.blue.light).png index 82dcc4e61833a1b8664f46ffeccdec1ebf3b03bb..19e5bbbc0b66f64f4a84bce32abd0e98b76a52e3 100644 GIT binary patch literal 19599 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 literal 19161 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%0D9gwz) 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 DZJWx{ diff --git a/apps/demos/testing/etalons/Charts-Stock (material.blue.light).png b/apps/demos/testing/etalons/Charts-Stock (material.blue.light).png index 88063b161822abe7832aeb1ac598198db50c47b7..eaf2922983ffe42db917d887c201ea912130dbb7 100644 GIT binary patch literal 18809 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 literal 18407 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 diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/appointmentForm/etalons/scheduler__appointment__recurrence-form__readonly (fluent.blue.light)_mask.png b/e2e/testcafe-devextreme/tests/scheduler/common/appointmentForm/etalons/scheduler__appointment__recurrence-form__readonly (fluent.blue.light)_mask.png index bf1f8ff5c902630d42fad35d4cc12c20109fc110..cbea79d4b285404e83df9e02023f2c8a390b0bf8 100644 GIT binary patch delta 112 zcmaFN*vmLUC6g_{C&cyt|NjgO455cE*8wRfPZ!6KiaBpj8*(uy2rzH>_22z^q(#8@ w6n`e5EGoFOW}XsH3zzZ2Lq0E@p;9OI^DgxLW0K@Mmk}i5>FVdQ&MBb@00>PY0ssI2 literal 227 zcmeAS@N?(olHy`uVBq!ia0y~yV60(aVA5q|28u8U2fG1D#^NA%C&rs6b?Si}&H|6f zVg?3oVGw3ym^DWND99Gz6XN>+|9>De^w8xxAXVn+;uumf=j|CsE(Qf2X2;L}?Yrey zIQg^Av`wFMRR^eo46wiHO%W#pg8^HfJyzZQd>Rv^^mc7-eFc*CboFyt=akR{0PG_u AjsO4v diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/appointmentForm/etalons/scheduler__appointment__recurrence-form__weekly (fluent.blue.light)_mask.png b/e2e/testcafe-devextreme/tests/scheduler/common/appointmentForm/etalons/scheduler__appointment__recurrence-form__weekly (fluent.blue.light)_mask.png index bf1f8ff5c902630d42fad35d4cc12c20109fc110..cbea79d4b285404e83df9e02023f2c8a390b0bf8 100644 GIT binary patch delta 112 zcmaFN*vmLUC6g_{C&cyt|NjgO455cE*8wRfPZ!6KiaBpj8*(uy2rzH>_22z^q(#8@ w6n`e5EGoFOW}XsH3zzZ2Lq0E@p;9OI^DgxLW0K@Mmk}i5>FVdQ&MBb@00>PY0ssI2 literal 227 zcmeAS@N?(olHy`uVBq!ia0y~yV60(aVA5q|28u8U2fG1D#^NA%C&rs6b?Si}&H|6f zVg?3oVGw3ym^DWND99Gz6XN>+|9>De^w8xxAXVn+;uumf=j|CsE(Qf2X2;L}?Yrey zIQg^Av`wFMRR^eo46wiHO%W#pg8^HfJyzZQd>Rv^^mc7-eFc*CboFyt=akR{0PG_u AjsO4v From 2bc72307f5e84fe6dc853a8dbd662c7f7af12f02 Mon Sep 17 00:00:00 2001 From: "assylbek.danyshbek" <assylbek.danyshbek@devexpress.com> Date: Thu, 22 Oct 2026 17:27:00 +0500 Subject: [PATCH 3/3] apply suggestions to improve demos further (#35855) --- .../Stock/Angular/app/app.component.html | 5 ++++- .../Charts/Stock/Angular/app/app.component.ts | 4 ++-- apps/demos/Demos/Charts/Stock/React/App.tsx | 11 +++++++++-- apps/demos/Demos/Charts/Stock/ReactJs/App.js | 14 +++++++++++--- apps/demos/Demos/Charts/Stock/Vue/App.vue | 18 ++++++++++-------- apps/demos/Demos/Charts/Stock/description.md | 6 +++++- apps/demos/Demos/Charts/Stock/jQuery/index.js | 6 +++--- apps/demos/menuMeta.json | 4 ++-- .../Charts-Stock (fluent.blue.light).png | Bin 19599 -> 19596 bytes .../Charts-Stock (material.blue.light).png | Bin 18809 -> 18799 bytes 10 files changed, 46 insertions(+), 22 deletions(-) diff --git a/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html b/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html index 54e5f5b16037..489d11f83074 100644 --- a/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html +++ b/apps/demos/Demos/Charts/Stock/Angular/app/app.component.html @@ -62,7 +62,10 @@ <dxo-chart-format type="currency" [precision]="0"> </dxo-chart-format> </dxo-chart-label> </dxi-chart-value-axis> - <dxo-chart-argument-axis [(visualRange)]="visualRange"> + <dxo-chart-argument-axis + [(visualRange)]="visualRange" + [minVisualRangeLength]="{ days: 3 }" + > <dxo-chart-label format="MMM dd" overlappingBehavior="rotate" diff --git a/apps/demos/Demos/Charts/Stock/Angular/app/app.component.ts b/apps/demos/Demos/Charts/Stock/Angular/app/app.component.ts index 524f2803cf85..d7bb55c32446 100644 --- a/apps/demos/Demos/Charts/Stock/Angular/app/app.component.ts +++ b/apps/demos/Demos/Charts/Stock/Angular/app/app.component.ts @@ -34,9 +34,9 @@ function clamp(value: number, min: number, max: number): number { export class AppComponent { stockPrices: StockPrice[]; - initialStart = new Date(1994, 3, 15); + initialStart = new Date(1994, 3, 14, 12); - initialEnd = new Date(1994, 3, 29); + initialEnd = new Date(1994, 3, 29, 12); visualRange: VisualRange = { startValue: this.initialStart, diff --git a/apps/demos/Demos/Charts/Stock/React/App.tsx b/apps/demos/Demos/Charts/Stock/React/App.tsx index 2d60fbfc5915..4d776069b5dd 100644 --- a/apps/demos/Demos/Charts/Stock/React/App.tsx +++ b/apps/demos/Demos/Charts/Stock/React/App.tsx @@ -24,9 +24,10 @@ const dayMs = 24 * 60 * 60 * 1000; const panStepFraction = 0.25; const zoomFactor = 0.75; const minVisibleSpanMs = 3 * dayMs; +const minVisualRangeLength = { days: 3 }; -const initialStart = new Date(1994, 3, 15); -const initialEnd = new Date(1994, 3, 29); +const initialStart = new Date(1994, 3, 14, 12); +const initialEnd = new Date(1994, 3, 29, 12); const dataMin = dataSource[0].date.getTime(); const dataMax = dataSource[dataSource.length - 1].date.getTime(); @@ -61,6 +62,10 @@ function App() { endValue: initialEnd, }); + const onVisualRangeChange = useCallback((range: VisualRange | (Date | number | string)[]) => { + setVisualRange(range as VisualRange); + }, []); + const setRange = useCallback((start: number, end: number) => { const span = clamp(end - start, minVisibleSpanMs, dataMax - dataMin); const center = (start + end) / 2; @@ -152,6 +157,8 @@ function App() { <Legend verticalAlignment="bottom" horizontalAlignment="center" /> <ArgumentAxis visualRange={visualRange} + onVisualRangeChange={onVisualRangeChange} + minVisualRangeLength={minVisualRangeLength} > <Label format="MMM dd" diff --git a/apps/demos/Demos/Charts/Stock/ReactJs/App.js b/apps/demos/Demos/Charts/Stock/ReactJs/App.js index 2696524e0c3d..083d15f11825 100644 --- a/apps/demos/Demos/Charts/Stock/ReactJs/App.js +++ b/apps/demos/Demos/Charts/Stock/ReactJs/App.js @@ -21,8 +21,9 @@ const dayMs = 24 * 60 * 60 * 1000; const panStepFraction = 0.25; const zoomFactor = 0.75; const minVisibleSpanMs = 3 * dayMs; -const initialStart = new Date(1994, 3, 15); -const initialEnd = new Date(1994, 3, 29); +const minVisualRangeLength = { days: 3 }; +const initialStart = new Date(1994, 3, 14, 12); +const initialEnd = new Date(1994, 3, 29, 12); const dataMin = dataSource[0].date.getTime(); const dataMax = dataSource[dataSource.length - 1].date.getTime(); function clamp(value, min, max) { @@ -50,6 +51,9 @@ function App() { startValue: initialStart, endValue: initialEnd, }); + const onVisualRangeChange = useCallback((range) => { + setVisualRange(range); + }, []); const setRange = useCallback((start, end) => { const span = clamp(end - start, minVisibleSpanMs, dataMax - dataMin); const center = (start + end) / 2; @@ -179,7 +183,11 @@ function App() { verticalAlignment="bottom" horizontalAlignment="center" /> - <ArgumentAxis visualRange={visualRange}> + <ArgumentAxis + visualRange={visualRange} + onVisualRangeChange={onVisualRangeChange} + minVisualRangeLength={minVisualRangeLength} + > <Label format="MMM dd" overlappingBehavior="rotate" diff --git a/apps/demos/Demos/Charts/Stock/Vue/App.vue b/apps/demos/Demos/Charts/Stock/Vue/App.vue index 302612cc928e..d09a8271510a 100644 --- a/apps/demos/Demos/Charts/Stock/Vue/App.vue +++ b/apps/demos/Demos/Charts/Stock/Vue/App.vue @@ -57,7 +57,7 @@ vertical-alignment="bottom" horizontal-alignment="center" /> - <DxArgumentAxis> + <DxArgumentAxis :min-visual-range-length="{ days: 3 }"> <DxVisualRange v-model:start-value="startValue" v-model:end-value="endValue" @@ -116,8 +116,8 @@ const panStepFraction = 0.25; const zoomFactor = 0.75; const minVisibleSpanMs = 3 * dayMs; -const initialStart = new Date(1994, 3, 15); -const initialEnd = new Date(1994, 3, 29); +const initialStart = new Date(1994, 3, 14, 12); +const initialEnd = new Date(1994, 3, 29, 12); const dataMin = dataSource[0].date.getTime(); const dataMax = dataSource[dataSource.length - 1].date.getTime(); @@ -189,13 +189,15 @@ const resetZoomButtonOptions: DxButtonTypes.Properties = { }; const customizeTooltip = (pointInfo: DxChartTypes.PointInfo) => { - const info = pointInfo as DxChartTypes.PointInfo & Record<string, unknown>; + if (!('openValue' in pointInfo)) { + return { text: '' }; + } return { - text: `Open: $${info.openValue}<br/> - Close: $${info.closeValue}<br/> - High: $${info.highValue}<br/> - Low: $${info.lowValue}<br/>`, + text: `Open: $${pointInfo.openValue}<br/> + Close: $${pointInfo.closeValue}<br/> + High: $${pointInfo.highValue}<br/> + Low: $${pointInfo.lowValue}<br/>`, }; }; </script> diff --git a/apps/demos/Demos/Charts/Stock/description.md b/apps/demos/Demos/Charts/Stock/description.md index c4d6d9706a27..6797257e3fae 100644 --- a/apps/demos/Demos/Charts/Stock/description.md +++ b/apps/demos/Demos/Charts/Stock/description.md @@ -7,5 +7,9 @@ Open and close prices are displayed as left and right tick marks. To specify the To reflect changes on the market, the Chart component compares the price of every point with the price of the previous point. The Chart paints the points whose price has decreased in a specific [reduction color](/Documentation/ApiReference/UI_Components/dxChart/Configuration/series/reduction/#color). To switch between high, low, open or close prices of points as sources for data comparison, use the [series](/Documentation/ApiReference/UI_Components/dxChart/Configuration/series/).[reduction](/Documentation/ApiReference/UI_Components/dxChart/Configuration/series/reduction/).[level](/Documentation/ApiReference/UI_Components/dxChart/Configuration/series/reduction/#level) property. -Additionally, use the [tooltip](/Documentation/ApiReference/UI_Components/dxChart/Configuration/tooltip/).[contentTemplate](/Documentation/ApiReference/UI_Components/dxChart/Configuration/tooltip/#contentTemplate) property to declare a custom tooltip that shows prices. You can also enable the [argumentAxis](/Documentation/ApiReference/UI_Components/dxChart/Configuration/argumentAxis/).[workdaysOnly](/Documentation/ApiReference/UI_Components/dxChart/Configuration/argumentAxis/#workdaysOnly) property to display only the work days on the argument axis. +Additionally, use the [tooltip](/Documentation/ApiReference/UI_Components/dxChart/Configuration/tooltip/).[customizeTooltip](/Documentation/ApiReference/UI_Components/dxChart/Configuration/tooltip/#customizeTooltip) function to customize a tooltip that shows prices. + +Use the [zoomAndPan](/Documentation/ApiReference/UI_Components/dxChart/Configuration/zoomAndPan/) object to enable zooming and panning along the argument axis. Enable the [scrollBar](/Documentation/ApiReference/UI_Components/dxChart/Configuration/scrollBar/).[visible](/Documentation/ApiReference/UI_Components/dxChart/Configuration/scrollBar/#visible) property to display a scroll bar, and set its [position](/Documentation/ApiReference/UI_Components/dxChart/Configuration/scrollBar/#position) to **bottom** to place it below the chart. + +The [argumentAxis](/Documentation/ApiReference/UI_Components/dxChart/Configuration/argumentAxis/).[visualRange](/Documentation/ApiReference/UI_Components/dxChart/Configuration/argumentAxis/visualRange/) property specifies the visible date range. In this demo, toolbar buttons update this range to pan left or right, zoom in or out, and reset the chart to its initial range. diff --git a/apps/demos/Demos/Charts/Stock/jQuery/index.js b/apps/demos/Demos/Charts/Stock/jQuery/index.js index a06a4ce5681c..225cbc5634c2 100644 --- a/apps/demos/Demos/Charts/Stock/jQuery/index.js +++ b/apps/demos/Demos/Charts/Stock/jQuery/index.js @@ -5,8 +5,8 @@ $(() => { const zoomFactor = 0.75; const minVisibleSpanMs = 3 * dayMs; - const initialStart = new Date(1994, 3, 15); - const initialEnd = new Date(1994, 3, 29); + const initialStart = new Date(1994, 3, 14, 12); + const initialEnd = new Date(1994, 3, 29, 12); const data = generateStockData(new Date(1994, 3, 1), 65); const dataMin = data[0].date.getTime(); @@ -38,7 +38,7 @@ $(() => { label: { format: { type: 'currency', precision: 0 } }, }, argumentAxis: { - workdaysOnly: false, + minVisualRangeLength: { days: 3 }, visualRange: { startValue: initialStart, endValue: initialEnd }, label: { format: 'MMM dd', diff --git a/apps/demos/menuMeta.json b/apps/demos/menuMeta.json index 40db2dbcba42..76a23ad06b92 100644 --- a/apps/demos/menuMeta.json +++ b/apps/demos/menuMeta.json @@ -2756,10 +2756,10 @@ "Name": "Stock", "Widget": "Charts", "MvcAdditionalFiles": [ - "/Models/SampleData/FinancialData.cs" + "/Models/SampleData/StockChartData.cs" ], "DemoType": "Viz", - "Equivalents": "workdaysOnly, tickInterval, stock price, reduction" + "Equivalents": "zoomAndPan, scrollBar, visualRange, tickInterval, stock price, reduction" }, { "Title": "Candlestick", diff --git a/apps/demos/testing/etalons/Charts-Stock (fluent.blue.light).png b/apps/demos/testing/etalons/Charts-Stock (fluent.blue.light).png index 19e5bbbc0b66f64f4a84bce32abd0e98b76a52e3..91a502aada2fcfacf4100bac9484ace977e2c5bb 100644 GIT binary patch literal 19596 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 literal 19599 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 diff --git a/apps/demos/testing/etalons/Charts-Stock (material.blue.light).png b/apps/demos/testing/etalons/Charts-Stock (material.blue.light).png index eaf2922983ffe42db917d887c201ea912130dbb7..8836c8c608d866b0dc7826c8f1c70ffdc9056fe1 100644 GIT binary patch literal 18799 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 literal 18809 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