@amcharts/amcharts5 5.17.2 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.internal/charts/funnel/PictorialStackedSeries.js +1 -1
- package/.internal/charts/funnel/PictorialStackedSeries.js.map +1 -1
- package/.internal/charts/gantt/Gantt.d.ts.map +1 -1
- package/.internal/charts/gantt/Gantt.js +0 -1
- package/.internal/charts/gantt/Gantt.js.map +1 -1
- package/.internal/charts/gantt/GanttSeries.d.ts.map +1 -1
- package/.internal/charts/gantt/GanttSeries.js +2 -0
- package/.internal/charts/gantt/GanttSeries.js.map +1 -1
- package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +1 -1
- package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
- package/.internal/charts/hierarchy/Tree.d.ts +14 -0
- package/.internal/charts/hierarchy/Tree.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Tree.js +70 -0
- package/.internal/charts/hierarchy/Tree.js.map +1 -1
- package/.internal/charts/hierarchy/VoronoiTreemap.d.ts +8 -2
- package/.internal/charts/hierarchy/VoronoiTreemap.d.ts.map +1 -1
- package/.internal/charts/hierarchy/VoronoiTreemap.js +8 -4
- package/.internal/charts/hierarchy/VoronoiTreemap.js.map +1 -1
- package/.internal/charts/stock/StockChartDefaultTheme.js +6 -6
- package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
- package/.internal/charts/stock/drawing/LabelSeries.d.ts +3 -0
- package/.internal/charts/stock/drawing/LabelSeries.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/LabelSeries.js +1 -1
- package/.internal/charts/stock/drawing/LabelSeries.js.map +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.js +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.d.ts +6 -0
- package/.internal/charts/stock/indicators/MovingAverage.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.js +9 -5
- package/.internal/charts/stock/indicators/MovingAverage.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.d.ts +6 -0
- package/.internal/charts/stock/indicators/MovingAverageDeviation.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js +8 -4
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js.map +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.d.ts +3 -0
- package/.internal/charts/stock/toolbar/DrawingControl.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.js +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.js.map +1 -1
- package/.internal/core/Registry.js +1 -1
- package/.internal/core/Registry.js.map +1 -1
- package/.internal/core/Root.d.ts.map +1 -1
- package/.internal/core/Root.js +15 -3
- package/.internal/core/Root.js.map +1 -1
- package/.internal/core/render/Label.d.ts +3 -0
- package/.internal/core/render/Label.d.ts.map +1 -1
- package/.internal/core/render/Label.js.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.d.ts +1 -1
- package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.js +27 -2
- package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
- package/.internal/core/util/Entity.d.ts +58 -2
- package/.internal/core/util/Entity.d.ts.map +1 -1
- package/.internal/core/util/Entity.js +124 -3
- package/.internal/core/util/Entity.js.map +1 -1
- package/.internal/core/util/Utils.d.ts +7 -0
- package/.internal/core/util/Utils.d.ts.map +1 -1
- package/.internal/core/util/Utils.js +9 -0
- package/.internal/core/util/Utils.js.map +1 -1
- package/.internal/plugins/exporting/Exporting.d.ts.map +1 -1
- package/.internal/plugins/exporting/Exporting.js +10 -9
- package/.internal/plugins/exporting/Exporting.js.map +1 -1
- package/.internal/plugins/json/Classes-script.js +254 -254
- package/.internal/plugins/json/Classes-script.js.map +1 -1
- package/.internal/plugins/json/Classes.js +254 -254
- package/.internal/plugins/json/Classes.js.map +1 -1
- package/CHANGELOG.md +30 -0
- package/examples/javascript/flow-arc-horizontal/package.json +1 -1
- package/examples/javascript/flow-arc-vertical/package.json +1 -1
- package/examples/javascript/flow-chord/package.json +1 -1
- package/examples/javascript/flow-chord-directed/package.json +1 -1
- package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/javascript/flow-sankey/package.json +1 -1
- package/examples/javascript/gantt/package.json +1 -1
- package/examples/javascript/gantt-multilevel/package.json +1 -1
- package/examples/javascript/gantt-simple/package.json +1 -1
- package/examples/javascript/gauge/package.json +1 -1
- package/examples/javascript/gauge-bands/package.json +1 -1
- package/examples/javascript/hierarchy-force-directed/package.json +1 -1
- package/examples/javascript/hierarchy-pack/package.json +1 -1
- package/examples/javascript/hierarchy-partition/package.json +1 -1
- package/examples/javascript/hierarchy-sunburst/package.json +1 -1
- package/examples/javascript/hierarchy-tree/package.json +1 -1
- package/examples/javascript/hierarchy-treemap/package.json +1 -1
- package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/javascript/jest/package.json +1 -1
- package/examples/javascript/json-pie/package.json +1 -1
- package/examples/javascript/json-xy/package.json +1 -1
- package/examples/javascript/map-animating-along-lines/package.json +1 -1
- package/examples/javascript/map-clustered-points/package.json +1 -1
- package/examples/javascript/map-day-and-night/package.json +1 -1
- package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/javascript/map-sankey/package.json +1 -1
- package/examples/javascript/map-sankey-waypoints/package.json +1 -1
- package/examples/javascript/map-with-bubbles/package.json +1 -1
- package/examples/javascript/map-zoom-to-country/package.json +1 -1
- package/examples/javascript/misc-40-charts/package.json +1 -1
- package/examples/javascript/misc-microchart-grid/package.json +1 -1
- package/examples/javascript/pie-chart/package.json +1 -1
- package/examples/javascript/pie-donut-chart/package.json +1 -1
- package/examples/javascript/pie-variable-radius/package.json +1 -1
- package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
- package/examples/javascript/radar-heat-map/package.json +1 -1
- package/examples/javascript/radar-line/package.json +1 -1
- package/examples/javascript/radar-time-line/package.json +1 -1
- package/examples/javascript/sliced-funnel/package.json +1 -1
- package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/javascript/sliced-pyramid/package.json +1 -1
- package/examples/javascript/stock-chart/package.json +1 -1
- package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
- package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
- package/examples/javascript/stock-chart-intraday/package.json +1 -1
- package/examples/javascript/stock-chart-live/package.json +1 -1
- package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-spiral-chart/package.json +1 -1
- package/examples/javascript/venn-diagram/package.json +1 -1
- package/examples/javascript/wordcloud-with-data/package.json +1 -1
- package/examples/javascript/wordcloud-with-text/package.json +1 -1
- package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/javascript/xy-bubble/package.json +1 -1
- package/examples/javascript/xy-candlestick/package.json +1 -1
- package/examples/javascript/xy-clustered-column/package.json +1 -1
- package/examples/javascript/xy-column/package.json +1 -1
- package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/javascript/xy-data-grouping/package.json +1 -1
- package/examples/javascript/xy-draggable-range/package.json +1 -1
- package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/javascript/xy-dumbbell plot/package.json +1 -1
- package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/javascript/xy-line/package.json +1 -1
- package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/javascript/xy-live-data/package.json +1 -1
- package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/javascript/xy-ohlc/package.json +1 -1
- package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/javascript/xy-smoothed-line/package.json +1 -1
- package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/javascript/xy-stacked-column/package.json +1 -1
- package/examples/javascript/xy-stacked-step/package.json +1 -1
- package/examples/javascript/xy-stock/package.json +1 -1
- package/examples/javascript/xy-stock-comparing/package.json +1 -1
- package/examples/typescript/flow-arc-horizontal/package.json +1 -1
- package/examples/typescript/flow-arc-vertical/package.json +1 -1
- package/examples/typescript/flow-chord/package.json +1 -1
- package/examples/typescript/flow-chord-directed/package.json +1 -1
- package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/typescript/flow-sankey/package.json +1 -1
- package/examples/typescript/gantt/package.json +1 -1
- package/examples/typescript/gantt-multilevel/package.json +1 -1
- package/examples/typescript/gantt-simple/package.json +1 -1
- package/examples/typescript/gauge/package.json +1 -1
- package/examples/typescript/gauge-bands/package.json +1 -1
- package/examples/typescript/hierarchy-force-directed/package.json +1 -1
- package/examples/typescript/hierarchy-pack/package.json +1 -1
- package/examples/typescript/hierarchy-partition/package.json +1 -1
- package/examples/typescript/hierarchy-sunburst/package.json +1 -1
- package/examples/typescript/hierarchy-tree/package.json +1 -1
- package/examples/typescript/hierarchy-treemap/package.json +1 -1
- package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/typescript/jest/package.json +1 -1
- package/examples/typescript/json-pie/package.json +1 -1
- package/examples/typescript/json-xy/package.json +1 -1
- package/examples/typescript/map-animating-along-lines/package.json +1 -1
- package/examples/typescript/map-clustered-points/package.json +1 -1
- package/examples/typescript/map-day-and-night/package.json +1 -1
- package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/typescript/map-sankey/package.json +1 -1
- package/examples/typescript/map-sankey-waypoints/package.json +1 -1
- package/examples/typescript/map-with-bubbles/package.json +1 -1
- package/examples/typescript/map-zoom-to-country/package.json +1 -1
- package/examples/typescript/misc-40-charts/package.json +1 -1
- package/examples/typescript/misc-microchart-grid/package.json +1 -1
- package/examples/typescript/pie-chart/package.json +1 -1
- package/examples/typescript/pie-donut-chart/package.json +1 -1
- package/examples/typescript/pie-variable-radius/package.json +1 -1
- package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
- package/examples/typescript/radar-heat-map/package.json +1 -1
- package/examples/typescript/radar-line/package.json +1 -1
- package/examples/typescript/radar-time-line/package.json +1 -1
- package/examples/typescript/sliced-funnel/package.json +1 -1
- package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/typescript/sliced-pyramid/package.json +1 -1
- package/examples/typescript/stock-chart/package.json +1 -1
- package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
- package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
- package/examples/typescript/stock-chart-intraday/package.json +1 -1
- package/examples/typescript/stock-chart-live/package.json +1 -1
- package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-spiral-chart/package.json +1 -1
- package/examples/typescript/venn-diagram/package.json +1 -1
- package/examples/typescript/wordcloud-with-data/package.json +1 -1
- package/examples/typescript/wordcloud-with-text/package.json +1 -1
- package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/typescript/xy-bubble/package.json +1 -1
- package/examples/typescript/xy-candlestick/package.json +1 -1
- package/examples/typescript/xy-clustered-column/package.json +1 -1
- package/examples/typescript/xy-column/package.json +1 -1
- package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/typescript/xy-data-grouping/package.json +1 -1
- package/examples/typescript/xy-draggable-range/package.json +1 -1
- package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/typescript/xy-dumbbell plot/package.json +1 -1
- package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/typescript/xy-line/package.json +1 -1
- package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/typescript/xy-live-data/package.json +1 -1
- package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/typescript/xy-ohlc/package.json +1 -1
- package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/typescript/xy-smoothed-line/package.json +1 -1
- package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/typescript/xy-stacked-column/package.json +1 -1
- package/examples/typescript/xy-stacked-step/package.json +1 -1
- package/examples/typescript/xy-stock/package.json +1 -1
- package/examples/typescript/xy-stock-comparing/package.json +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LabelSeries.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/LabelSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ISpritePointerEvent } from \"../../../core/render/Sprite\";\r\nimport type { Container } from \"../../../core/render/Container\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { SpriteResizer } from \"../../../core/render/SpriteResizer\";\r\nimport type { Graphics } from \"../../../core/render/Graphics\";\r\nimport type { IDrawingSeriesDataItem } from \"./DrawingSeries\";\r\n\r\nimport { PolylineSeries, IPolylineSeriesSettings, IPolylineSeriesPrivate, IPolylineSeriesDataItem } from \"./PolylineSeries\";\r\nimport { EditableLabel } from \"../../../core/render/EditableLabel\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\nimport { Template } from \"../../../core/util/Template\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $object from \"../../../core/util/Object\";\r\n\r\nexport interface ILabelSeriesDataItem extends IPolylineSeriesDataItem {\r\n}\r\n\r\nexport interface ILabelSeriesSettings extends IPolylineSeriesSettings {\r\n\r\n\t/**\r\n\t * Label font size.\r\n\t */\r\n\tlabelFontSize?: number | string | undefined;\r\n\r\n\t/**\r\n\t * Label font family.\r\n\t */\r\n\tlabelFontFamily?: string;\r\n\r\n\t/**\r\n\t * Font weight.\r\n\t */\r\n\tlabelFontWeight?: \"normal\" | \"bold\" | \"bolder\" | \"lighter\" | \"100\" | \"200\" | \"300\" | \"400\" | \"500\" | \"600\" | \"700\" | \"800\" | \"900\";\r\n\r\n\t/**\r\n\t * Font style.\r\n\t */\r\n\tlabelFontStyle?: \"normal\" | \"italic\" | \"oblique\";\r\n\r\n\t/**\r\n\t * Label color.\r\n\t */\r\n\tlabelFill?: Color;\r\n\r\n}\r\n\r\nexport interface ILabelSeriesPrivate extends IPolylineSeriesPrivate {\r\n\tinputContainer: HTMLDivElement;\r\n\tinput: HTMLTextAreaElement;\r\n\tlabel: EditableLabel;\r\n}\r\n\r\nexport class LabelSeries extends PolylineSeries {\r\n\tpublic static className: string = \"LabelSeries\";\r\n\tpublic static classNames: Array<string> = PolylineSeries.classNames.concat([LabelSeries.className]);\r\n\r\n\tdeclare public _settings: ILabelSeriesSettings;\r\n\tdeclare public _privateSettings: ILabelSeriesPrivate;\r\n\tdeclare public _dataItemSettings: ILabelSeriesDataItem;\r\n\r\n\tpublic spriteResizer!: SpriteResizer;\r\n\r\n\tprotected _tag = \"label\";\r\n\r\n\tprotected _isEditing: boolean = false;\r\n\r\n\tprotected _isSelected: boolean = false;\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\tthis.spriteResizer = this._getStockChart().spriteResizer;\r\n\r\n\t\tthis.strokes.template.set(\"visible\", false);\r\n\t\tthis.fills.template.set(\"visible\", false);\r\n\r\n\t\tthis.addTag(this._tag);\r\n\t}\r\n\r\n\tprotected _dispatchAdded(): void {\r\n\r\n\t}\r\n\r\n\tprotected _setContextSprite(_context: any) { }\r\n\r\n\tprotected _tweakBullet(container: Container, dataItem: DataItem<ILabelSeriesDataItem>) {\r\n\t\tconst dataContext = dataItem.dataContext as any;\r\n\t\tconst text = dataContext.text;\r\n\t\tconst template = dataContext.settings;\r\n\r\n\t\t//container.set(\"forceInactive\", true);\r\n\r\n\t\tif (template) {\r\n\t\t\tconst label = container.children.push(EditableLabel.new(this._root, {\r\n\t\t\t\tthemeTags: [\"label\"],\r\n\t\t\t\ttext: text,\r\n\t\t\t\teditOn: \"none\"\r\n\t\t\t}, template));\r\n\r\n\t\t\tlabel.on(\"text\", (text) => {\r\n\t\t\t\tdataContext.text = text;\r\n\t\t\t});\r\n\r\n\t\t\tthis.setPrivate(\"label\", label);\r\n\r\n\t\t\tlabel.on(\"active\", () => {\r\n\t\t\t\tthis.setTimeout(() => {\r\n\t\t\t\t\tthis._isEditing = label.get(\"active\", false);\r\n\t\t\t\t}, 200)\r\n\r\n\t\t\t\tif (!label.get(\"active\")) {\r\n\t\t\t\t\tthis.setTimeout(() => {\r\n\t\t\t\t\t\tif (label) {\r\n\t\t\t\t\t\t\tif (label.get(\"text\") == \"\") {\r\n\t\t\t\t\t\t\t\tthis._disposeIndex(dataContext.index);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 100);\r\n\r\n\t\t\t\t\t// Trigger a drawing updated event so that updated text is saved if\r\n\t\t\t\t\t// necessary\r\n\t\t\t\t\tconst stockChart = this._getStockChart();\r\n\t\t\t\t\tconst type = \"drawingsupdated\";\r\n\t\t\t\t\tif (stockChart.events.isEnabled(type)) {\r\n\t\t\t\t\t\tstockChart.events.dispatch(type, { type: type, target: stockChart });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcontainer.events.on(\"click\", (e) => {\r\n\t\t\t\tconst spriteResizer = this.spriteResizer;\r\n\t\t\t\tif (spriteResizer.get(\"sprite\") == label) {\r\n\t\t\t\t\tthis._isEditing = true;\r\n\t\t\t\t\tlabel.set(\"active\", true);\r\n\t\t\t\t\tthis._selectDrawing(dataContext.index, (e.originalEvent as any).ctrlKey, true);\r\n\t\t\t\t\tspriteResizer.set(\"sprite\", undefined);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._isEditing = false;\r\n\t\t\t\t\tthis._isSelected = true;\r\n\t\t\t\t\tspriteResizer.set(\"sprite\", label);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tcontainer.events.on(\"pointerover\", () => {\r\n\t\t\t\tthis._isHover = true;\r\n\t\t\t})\r\n\r\n\t\t\tcontainer.events.on(\"pointerout\", () => {\r\n\t\t\t\tthis._isHover = false;\r\n\t\t\t})\r\n\r\n\t\t\tlabel.on(\"scale\", (scale) => {\r\n\t\t\t\ttemplate.set(\"scale\", scale);\r\n\t\t\t})\r\n\r\n\t\t\tlabel.on(\"rotation\", (rotation) => {\r\n\t\t\t\ttemplate.set(\"rotation\", rotation)\r\n\t\t\t})\r\n\r\n\t\t\tlabel.events.on(\"boundschanged\", () => {\r\n\t\t\t\tthis.markDirty();\r\n\t\t\t})\r\n\r\n\t\t\tdataContext.sprite = container;\r\n\t\t\tdataContext.label = label;\r\n\r\n\t\t\tthis._tweakBullet2(label, dataItem);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _tweakBullet2(_label: EditableLabel, _dataItem: DataItem<ILabelSeriesDataItem>) {\r\n\r\n\t}\r\n\r\n\tprotected _handlePointerClick(event: ISpritePointerEvent) {\r\n\t\tif (this._isEditing) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._selected.length > 0 || this._isSelected) {\r\n\t\t\tthis._isSelected = false;\r\n\t\t\tthis._hideResizer();\r\n\t\t\tthis.unselectAllDrawings();\r\n\t\t}\r\n\t\telse if (this._drawingEnabled) {\r\n\t\t\tif (!this._isHover) {\r\n\t\t\t\tthis.isDrawing(true);\r\n\t\t\t\tthis._increaseIndex();\r\n\t\t\t\tthis._di[this._index] = {};\r\n\r\n\t\t\t\tthis._addPoint(event);\r\n\r\n\t\t\t\tconst dataContext = this.data.getIndex(this.data.length - 1) as any;\r\n\t\t\t\tdataContext.text = \"\";\r\n\t\t\t\tdataContext.index = this._index;\r\n\t\t\t\tdataContext.corner = 0;\r\n\t\t\t\tdataContext.settings = this._getLabelTemplate();\r\n\t\t\t\tthis._afterTextSave(dataContext);\r\n\r\n\t\t\t\tthis._root.events.once(\"frameended\", () => {\r\n\t\t\t\t\tdataContext.label.set(\"active\", true);\r\n\t\t\t\t\tthis._isEditing = true;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.spriteResizer.set(\"sprite\", undefined);\r\n\r\n\t\t\t\tthis._dispatchStockEvent(\"drawingadded\", this._drawingId, this._index);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.isDrawing(false);\r\n\t}\r\n\r\n\tprotected _afterTextSave(_dataContext: any) {\r\n\r\n\t}\r\n\r\n\tprotected _getLabelTemplate(): Template<any> {\r\n\t\tconst template: any = {};\r\n\r\n\t\tconst labelFontSize = this.get(\"labelFontSize\");\r\n\t\tif (labelFontSize != null) {\r\n\t\t\ttemplate.fontSize = labelFontSize;\r\n\t\t}\r\n\r\n\t\tconst labelFontFamily = this.get(\"labelFontFamily\");\r\n\t\tif (labelFontFamily != null) {\r\n\t\t\ttemplate.fontFamily = labelFontFamily;\r\n\t\t}\r\n\r\n\t\tconst labelFontWeight = this.get(\"labelFontWeight\");\r\n\t\tif (labelFontWeight != null) {\r\n\t\t\ttemplate.fontWeight = labelFontWeight;\r\n\t\t}\r\n\r\n\t\tconst labelFontStyle = this.get(\"labelFontStyle\");\r\n\t\tif (labelFontStyle != null) {\r\n\t\t\ttemplate.fontStyle = labelFontStyle;\r\n\t\t}\r\n\r\n\t\tconst labelFill = this.get(\"labelFill\");\r\n\t\tif (labelFill != null) {\r\n\t\t\ttemplate.fill = labelFill;\r\n\t\t}\r\n\r\n\t\treturn Template.new(template);\r\n\t}\r\n\r\n\tpublic disposeDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\r\n\t\tsuper.disposeDataItem(dataItem);\r\n\t\tthis.spriteResizer.set(\"sprite\", undefined);\r\n\t\tthis._isHover = false;\r\n\t}\r\n\r\n\tprotected _hideAllBullets() {\r\n\r\n\t}\r\n\r\n\tprotected _updateSelector(selector: Graphics, index: number) {\r\n\t\tconst context = this._getContext(index);\r\n\t\tif (context) {\r\n\t\t\tconst sprite = context.sprite;\r\n\r\n\t\t\tif (sprite) {\r\n\t\t\t\tif (sprite.dataItem == this.spriteResizer.get(\"sprite\")?.dataItem) {\r\n\t\t\t\t\tselector.hide(0);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this._selected.indexOf(index) != -1) {\r\n\t\t\t\t\t\tselector.show(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst selectorPadding = this.get(\"selectorPadding\", 5);\r\n\r\n\t\t\t\tlet bounds = sprite.bounds();\r\n\r\n\t\t\t\tlet w = (bounds.right - bounds.left) + selectorPadding * 2;\r\n\t\t\t\tlet h = (bounds.bottom - bounds.top) + selectorPadding * 2;\r\n\r\n\t\t\t\tselector.setAll({\r\n\t\t\t\t\twidth: w,\r\n\t\t\t\t\theight: h,\r\n\t\t\t\t\tx: bounds.left - selectorPadding,\r\n\t\t\t\t\ty: bounds.top - selectorPadding\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tsuper._prepareChildren();\r\n\t\tif (this.isDirty(\"labelFontSize\") || this.isDirty(\"labelFontFamily\") || this.isDirty(\"labelFontWeight\") || this.isDirty(\"labelFontStyle\") || this.isDirty(\"labelFill\")) {\r\n\t\t\t$array.each(this._selected, (i) => {\r\n\t\t\t\tthis._applySettings(i);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _applySettings(index: number, settings?: { [index: string]: any }) {\r\n\t\tsuper._applySettings(index, settings);\r\n\t\tlet context = this._getContext(index);\r\n\r\n\t\tif (context) {\r\n\t\t\tlet label = context.label;\r\n\r\n\t\t\tif (label) {\r\n\t\t\t\tlet template = context.settings;\r\n\r\n\t\t\t\tconst labelSettings = {\r\n\t\t\t\t\tfontSize: this.get(\"labelFontSize\"),\r\n\t\t\t\t\tfontFamily: this.get(\"labelFontFamily\"),\r\n\t\t\t\t\tfontWeight: this.get(\"labelFontWeight\"),\r\n\t\t\t\t\tfontStyle: this.get(\"labelFontStyle\"),\r\n\t\t\t\t\tfill: this.get(\"labelFill\"),\r\n\t\t\t\t\tfillColor: this.get(\"fillColor\")\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst defaultState = label.states.lookup(\"default\")!;\r\n\t\t\t\tif (labelSettings) {\r\n\t\t\t\t\t$object.each(labelSettings, (key, value) => {\r\n\t\t\t\t\t\tlabel.set(key as any, value);\r\n\t\t\t\t\t\tdefaultState.set(key as any, value);\r\n\t\t\t\t\t\tif (template) {\r\n\t\t\t\t\t\t\ttemplate.set(key, value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _handleBulletDragStart(event: ISpritePointerEvent) {\r\n\t\t// don't call super\t\t\r\n\t\tconst stockChart = this._getStockChart();\r\n\t\tif (stockChart) {\r\n\t\t\tstockChart._dragStartDrawing(event);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _handleBulletDragStop(event: ISpritePointerEvent) {\r\n\t\tconst stockChart = this._getStockChart();\r\n\t\tif (stockChart) {\r\n\t\t\tstockChart._dragStopDrawing(event);\r\n\t\t}\r\n\r\n\t\tthis._root.events.once(\"frameended\", () => {\r\n\t\t\tthis._positionBullets(event.target.dataItem as DataItem<IDrawingSeriesDataItem>);\r\n\t\t})\r\n\t}\r\n\r\n\tpublic toggleDrawing(enabled?: boolean) {\r\n\t\tthis.grips.each((grip) => {\r\n\t\t\tgrip.set(\"forceInactive\", !enabled);\r\n\t\t})\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"LabelSeries.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/LabelSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ISpritePointerEvent } from \"../../../core/render/Sprite\";\r\nimport type { Container } from \"../../../core/render/Container\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { SpriteResizer } from \"../../../core/render/SpriteResizer\";\r\nimport type { Graphics } from \"../../../core/render/Graphics\";\r\nimport type { IDrawingSeriesDataItem } from \"./DrawingSeries\";\r\n\r\nimport { PolylineSeries, IPolylineSeriesSettings, IPolylineSeriesPrivate, IPolylineSeriesDataItem } from \"./PolylineSeries\";\r\nimport { EditableLabel } from \"../../../core/render/EditableLabel\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\nimport { Template } from \"../../../core/util/Template\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $object from \"../../../core/util/Object\";\r\n\r\nexport interface ILabelSeriesDataItem extends IPolylineSeriesDataItem {\r\n}\r\n\r\nexport interface ILabelSeriesSettings extends IPolylineSeriesSettings {\r\n\r\n\t/**\r\n\t * Label font size.\r\n\t */\r\n\tlabelFontSize?: number | string | undefined;\r\n\r\n\t/**\r\n\t * Label font family.\r\n\t *\r\n\t * Use reserved value `\"inherit\"` to use computed style on chart\r\n\t * container. (since `5.17.3`)\r\n\t */\r\n\tlabelFontFamily?: string;\r\n\r\n\t/**\r\n\t * Font weight.\r\n\t */\r\n\tlabelFontWeight?: \"normal\" | \"bold\" | \"bolder\" | \"lighter\" | \"100\" | \"200\" | \"300\" | \"400\" | \"500\" | \"600\" | \"700\" | \"800\" | \"900\";\r\n\r\n\t/**\r\n\t * Font style.\r\n\t */\r\n\tlabelFontStyle?: \"normal\" | \"italic\" | \"oblique\";\r\n\r\n\t/**\r\n\t * Label color.\r\n\t */\r\n\tlabelFill?: Color;\r\n\r\n}\r\n\r\nexport interface ILabelSeriesPrivate extends IPolylineSeriesPrivate {\r\n\tinputContainer: HTMLDivElement;\r\n\tinput: HTMLTextAreaElement;\r\n\tlabel: EditableLabel;\r\n}\r\n\r\nexport class LabelSeries extends PolylineSeries {\r\n\tpublic static className: string = \"LabelSeries\";\r\n\tpublic static classNames: Array<string> = PolylineSeries.classNames.concat([LabelSeries.className]);\r\n\r\n\tdeclare public _settings: ILabelSeriesSettings;\r\n\tdeclare public _privateSettings: ILabelSeriesPrivate;\r\n\tdeclare public _dataItemSettings: ILabelSeriesDataItem;\r\n\r\n\tpublic spriteResizer!: SpriteResizer;\r\n\r\n\tprotected _tag = \"label\";\r\n\r\n\tprotected _isEditing: boolean = false;\r\n\r\n\tprotected _isSelected: boolean = false;\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\tthis.spriteResizer = this._getStockChart().spriteResizer;\r\n\r\n\t\tthis.strokes.template.set(\"visible\", false);\r\n\t\tthis.fills.template.set(\"visible\", false);\r\n\r\n\t\tthis.addTag(this._tag);\r\n\t}\r\n\r\n\tprotected _dispatchAdded(): void {\r\n\r\n\t}\r\n\r\n\tprotected _setContextSprite(_context: any) { }\r\n\r\n\tprotected _tweakBullet(container: Container, dataItem: DataItem<ILabelSeriesDataItem>) {\r\n\t\tconst dataContext = dataItem.dataContext as any;\r\n\t\tconst text = dataContext.text;\r\n\t\tconst template = dataContext.settings;\r\n\r\n\t\t//container.set(\"forceInactive\", true);\r\n\r\n\t\tif (template) {\r\n\t\t\tconst label = container.children.push(EditableLabel.new(this._root, {\r\n\t\t\t\tthemeTags: [\"label\"],\r\n\t\t\t\ttext: text,\r\n\t\t\t\teditOn: \"none\"\r\n\t\t\t}, template));\r\n\r\n\t\t\tlabel.on(\"text\", (text) => {\r\n\t\t\t\tdataContext.text = text;\r\n\t\t\t});\r\n\r\n\t\t\tthis.setPrivate(\"label\", label);\r\n\r\n\t\t\tlabel.on(\"active\", () => {\r\n\t\t\t\tthis.setTimeout(() => {\r\n\t\t\t\t\tthis._isEditing = label.get(\"active\", false);\r\n\t\t\t\t}, 200)\r\n\r\n\t\t\t\tif (!label.get(\"active\")) {\r\n\t\t\t\t\tthis.setTimeout(() => {\r\n\t\t\t\t\t\tif (label) {\r\n\t\t\t\t\t\t\tif (label.get(\"text\") == \"\") {\r\n\t\t\t\t\t\t\t\tthis._disposeIndex(dataContext.index);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 100);\r\n\r\n\t\t\t\t\t// Trigger a drawing updated event so that updated text is saved if\r\n\t\t\t\t\t// necessary\r\n\t\t\t\t\tconst stockChart = this._getStockChart();\r\n\t\t\t\t\tconst type = \"drawingsupdated\";\r\n\t\t\t\t\tif (stockChart.events.isEnabled(type)) {\r\n\t\t\t\t\t\tstockChart.events.dispatch(type, { type: type, target: stockChart });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcontainer.events.on(\"click\", (e) => {\r\n\t\t\t\tconst spriteResizer = this.spriteResizer;\r\n\t\t\t\tif (spriteResizer.get(\"sprite\") == label) {\r\n\t\t\t\t\tthis._isEditing = true;\r\n\t\t\t\t\tlabel.set(\"active\", true);\r\n\t\t\t\t\tthis._selectDrawing(dataContext.index, (e.originalEvent as any).ctrlKey, true);\r\n\t\t\t\t\tspriteResizer.set(\"sprite\", undefined);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._isEditing = false;\r\n\t\t\t\t\tthis._isSelected = true;\r\n\t\t\t\t\tspriteResizer.set(\"sprite\", label);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tcontainer.events.on(\"pointerover\", () => {\r\n\t\t\t\tthis._isHover = true;\r\n\t\t\t})\r\n\r\n\t\t\tcontainer.events.on(\"pointerout\", () => {\r\n\t\t\t\tthis._isHover = false;\r\n\t\t\t})\r\n\r\n\t\t\tlabel.on(\"scale\", (scale) => {\r\n\t\t\t\ttemplate.set(\"scale\", scale);\r\n\t\t\t})\r\n\r\n\t\t\tlabel.on(\"rotation\", (rotation) => {\r\n\t\t\t\ttemplate.set(\"rotation\", rotation)\r\n\t\t\t})\r\n\r\n\t\t\tlabel.events.on(\"boundschanged\", () => {\r\n\t\t\t\tthis.markDirty();\r\n\t\t\t})\r\n\r\n\t\t\tdataContext.sprite = container;\r\n\t\t\tdataContext.label = label;\r\n\r\n\t\t\tthis._tweakBullet2(label, dataItem);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _tweakBullet2(_label: EditableLabel, _dataItem: DataItem<ILabelSeriesDataItem>) {\r\n\r\n\t}\r\n\r\n\tprotected _handlePointerClick(event: ISpritePointerEvent) {\r\n\t\tif (this._isEditing) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._selected.length > 0 || this._isSelected) {\r\n\t\t\tthis._isSelected = false;\r\n\t\t\tthis._hideResizer();\r\n\t\t\tthis.unselectAllDrawings();\r\n\t\t}\r\n\t\telse if (this._drawingEnabled) {\r\n\t\t\tif (!this._isHover) {\r\n\t\t\t\tthis.isDrawing(true);\r\n\t\t\t\tthis._increaseIndex();\r\n\t\t\t\tthis._di[this._index] = {};\r\n\r\n\t\t\t\tthis._addPoint(event);\r\n\r\n\t\t\t\tconst dataContext = this.data.getIndex(this.data.length - 1) as any;\r\n\t\t\t\tdataContext.text = \"\";\r\n\t\t\t\tdataContext.index = this._index;\r\n\t\t\t\tdataContext.corner = 0;\r\n\t\t\t\tdataContext.settings = this._getLabelTemplate();\r\n\t\t\t\tthis._afterTextSave(dataContext);\r\n\r\n\t\t\t\tthis._root.events.once(\"frameended\", () => {\r\n\t\t\t\t\tdataContext.label.set(\"active\", true);\r\n\t\t\t\t\tthis._isEditing = true;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.spriteResizer.set(\"sprite\", undefined);\r\n\r\n\t\t\t\tthis._dispatchStockEvent(\"drawingadded\", this._drawingId, this._index);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.isDrawing(false);\r\n\t}\r\n\r\n\tprotected _afterTextSave(_dataContext: any) {\r\n\r\n\t}\r\n\r\n\tprotected _getLabelTemplate(): Template<any> {\r\n\t\tconst template: any = {};\r\n\r\n\t\tconst labelFontSize = this.get(\"labelFontSize\");\r\n\t\tif (labelFontSize != null) {\r\n\t\t\ttemplate.fontSize = labelFontSize;\r\n\t\t}\r\n\r\n\t\tconst labelFontFamily = this.get(\"labelFontFamily\");\r\n\t\tif (labelFontFamily != null) {\r\n\t\t\ttemplate.fontFamily = labelFontFamily;\r\n\t\t}\r\n\r\n\t\tconst labelFontWeight = this.get(\"labelFontWeight\");\r\n\t\tif (labelFontWeight != null) {\r\n\t\t\ttemplate.fontWeight = labelFontWeight;\r\n\t\t}\r\n\r\n\t\tconst labelFontStyle = this.get(\"labelFontStyle\");\r\n\t\tif (labelFontStyle != null) {\r\n\t\t\ttemplate.fontStyle = labelFontStyle;\r\n\t\t}\r\n\r\n\t\tconst labelFill = this.get(\"labelFill\");\r\n\t\tif (labelFill != null) {\r\n\t\t\ttemplate.fill = labelFill;\r\n\t\t}\r\n\r\n\t\treturn Template.new(template);\r\n\t}\r\n\r\n\tpublic disposeDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\r\n\t\tsuper.disposeDataItem(dataItem);\r\n\t\tthis.spriteResizer.set(\"sprite\", undefined);\r\n\t\tthis._isHover = false;\r\n\t}\r\n\r\n\tprotected _hideAllBullets() {\r\n\r\n\t}\r\n\r\n\tprotected _updateSelector(selector: Graphics, index: number) {\r\n\t\tconst context = this._getContext(index);\r\n\t\tif (context) {\r\n\t\t\tconst sprite = context.sprite;\r\n\r\n\t\t\tif (sprite) {\r\n\t\t\t\tif (sprite.dataItem == this.spriteResizer.get(\"sprite\")?.dataItem) {\r\n\t\t\t\t\tselector.hide(0);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this._selected.indexOf(index) != -1) {\r\n\t\t\t\t\t\tselector.show(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst selectorPadding = this.get(\"selectorPadding\", 5);\r\n\r\n\t\t\t\tlet bounds = sprite.bounds();\r\n\r\n\t\t\t\tlet w = (bounds.right - bounds.left) + selectorPadding * 2;\r\n\t\t\t\tlet h = (bounds.bottom - bounds.top) + selectorPadding * 2;\r\n\r\n\t\t\t\tselector.setAll({\r\n\t\t\t\t\twidth: w,\r\n\t\t\t\t\theight: h,\r\n\t\t\t\t\tx: bounds.left - selectorPadding,\r\n\t\t\t\t\ty: bounds.top - selectorPadding\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tsuper._prepareChildren();\r\n\t\tif (this.isDirty(\"labelFontSize\") || this.isDirty(\"labelFontFamily\") || this.isDirty(\"labelFontWeight\") || this.isDirty(\"labelFontStyle\") || this.isDirty(\"labelFill\")) {\r\n\t\t\t$array.each(this._selected, (i) => {\r\n\t\t\t\tthis._applySettings(i);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _applySettings(index: number, settings?: { [index: string]: any }) {\r\n\t\tsuper._applySettings(index, settings);\r\n\t\tlet context = this._getContext(index);\r\n\r\n\t\tif (context) {\r\n\t\t\tlet label = context.label;\r\n\r\n\t\t\tif (label) {\r\n\t\t\t\tlet template = context.settings;\r\n\r\n\t\t\t\tconst labelSettings = {\r\n\t\t\t\t\tfontSize: this.get(\"labelFontSize\"),\r\n\t\t\t\t\tfontFamily: this.get(\"labelFontFamily\"),\r\n\t\t\t\t\tfontWeight: this.get(\"labelFontWeight\"),\r\n\t\t\t\t\tfontStyle: this.get(\"labelFontStyle\"),\r\n\t\t\t\t\tfill: this.get(\"labelFill\"),\r\n\t\t\t\t\tfillColor: this.get(\"fillColor\")\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst defaultState = label.states.lookup(\"default\")!;\r\n\t\t\t\tif (labelSettings) {\r\n\t\t\t\t\t$object.each(labelSettings, (key, value) => {\r\n\t\t\t\t\t\tlabel.set(key as any, value);\r\n\t\t\t\t\t\tdefaultState.set(key as any, value);\r\n\t\t\t\t\t\tif (template) {\r\n\t\t\t\t\t\t\ttemplate.set(key, value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _handleBulletDragStart(event: ISpritePointerEvent) {\r\n\t\t// don't call super\r\n\t\tconst stockChart = this._getStockChart();\r\n\t\tif (stockChart) {\r\n\t\t\tstockChart._dragStartDrawing(event);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _handleBulletDragStop(event: ISpritePointerEvent) {\r\n\t\tconst stockChart = this._getStockChart();\r\n\t\tif (stockChart) {\r\n\t\t\tstockChart._dragStopDrawing(event);\r\n\t\t}\r\n\r\n\t\tthis._root.events.once(\"frameended\", () => {\r\n\t\t\tthis._positionBullets(event.target.dataItem as DataItem<IDrawingSeriesDataItem>);\r\n\t\t})\r\n\t}\r\n\r\n\tpublic toggleDrawing(enabled?: boolean) {\r\n\t\tthis.grips.each((grip) => {\r\n\t\t\tgrip.set(\"forceInactive\", !enabled);\r\n\t\t})\r\n\t}\r\n}\r\n"]}
|
|
@@ -36,7 +36,7 @@ export class BollingerBands extends MovingAverage {
|
|
|
36
36
|
type: "dropdown",
|
|
37
37
|
options: ["open", "close", "low", "high", "hl/2", "hlc/3", "hlcc/4", "ohlc/4"]
|
|
38
38
|
}, {
|
|
39
|
-
key: "
|
|
39
|
+
key: "maType",
|
|
40
40
|
name: this.root.language.translateAny("Type"),
|
|
41
41
|
type: "dropdown",
|
|
42
42
|
options: ["simple", "weighted", "exponential", "dema", "tema"]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BollingerBands.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/BollingerBands.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { MovingAverage, IMovingAverageSettings, IMovingAveragePrivate, IMovingAverageEvents } from \"./MovingAverage\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IBollingerBandsSettings extends IMovingAverageSettings {\r\n\r\n\t/**\r\n\t * A value of standard deviations.\r\n\t */\r\n\tstandardDeviations?: number;\r\n\r\n\t/**\r\n\t * A color for upper section.\r\n\t */\r\n\tupperColor?: Color;\r\n\r\n\t/**\r\n\t * A color for lower section.\r\n\t */\r\n\tlowerColor?: Color;\r\n\r\n}\r\n\r\nexport interface IBollingerBandsPrivate extends IMovingAveragePrivate {\r\n}\r\n\r\nexport interface IBollingerBandsEvents extends IMovingAverageEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class BollingerBands extends MovingAverage {\r\n\tpublic static className: string = \"BollingerBands\";\r\n\tpublic static classNames: Array<string> = MovingAverage.classNames.concat([BollingerBands.className]);\r\n\r\n\tdeclare public _settings: IBollingerBandsSettings;\r\n\tdeclare public _privateSettings: IBollingerBandsPrivate;\r\n\tdeclare public _events: IBollingerBandsEvents;\r\n\r\n\t/**\r\n\t * Indicator series for the upper band.\r\n\t */\r\n\tpublic upperBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the lower band.\r\n\t */\r\n\tpublic lowerBandSeries!: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"standardDeviations\",\r\n\t\tname: this.root.language.translateAny(\"Deviation\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"upperColor\",\r\n\t\tname: this.root.language.translateAny(\"Upper\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Average\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"lowerColor\",\r\n\t\tname: this.root.language.translateAny(\"Lower\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"type\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst upperBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"upper\",\r\n\t\t\t\topenValueYField: \"lower\",\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"bollingerbands\", \"upper\"]\r\n\t\t\t}))\r\n\r\n\t\t\tupperBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tupperBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\r\n\t\t\tthis.upperBandSeries = upperBandSeries;\r\n\r\n\t\t\tconst lowerBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"lower\",\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"bollingerbands\", \"lower\"]\r\n\t\t\t}))\r\n\r\n\t\t\tlowerBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.lowerBandSeries = lowerBandSeries;\r\n\t\t}\r\n\r\n\t\tsuper._afterNew();\r\n\t\tthis.series.addTag(\"bollingerbands\");\r\n\t\tthis.series._applyThemes();\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\r\n\t\tif (this.isDirty(\"standardDeviations\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t}\r\n\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tconst upperColor = \"upperColor\";\r\n\t\tif (this.isDirty(upperColor)) {\r\n\t\t\tconst color = this.get(upperColor);\r\n\t\t\tconst upperBandSeries = this.upperBandSeries;\r\n\t\t\tupperBandSeries.set(\"stroke\", color);\r\n\t\t\tupperBandSeries.set(\"fill\", color);\r\n\t\t\tupperBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(upperBandSeries, color, upperColor);\r\n\t\t}\r\n\r\n\t\tconst lowerColor = \"lowerColor\";\r\n\t\tif (this.isDirty(lowerColor)) {\r\n\t\t\tconst color = this.get(lowerColor);\r\n\t\t\tconst lowerBandSeries = this.lowerBandSeries;\r\n\t\t\tlowerBandSeries.set(\"stroke\", color);\r\n\t\t\tlowerBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(lowerBandSeries, color, lowerColor);\r\n\t\t}\r\n\r\n\t\tthis.setCustomData(\"standardDeviations\", this.get(\"standardDeviations\"));\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tsuper.prepareData();\r\n\r\n\t\tif (this.series) {\r\n\r\n\t\t\tlet period = this.get(\"period\", 20);\r\n\r\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\t\tconst dataItems = stockSeries.dataItems;\r\n\r\n\t\t\tlet standardDeviations = this.get(\"standardDeviations\", 2);\r\n\r\n\t\t\tlet smaData = this.series.data.values as any;\r\n\r\n\t\t\tlet i = 0;\r\n\r\n\t\t\t$array.each(smaData, (dataItem: any) => {\r\n\t\t\t\tif (i >= period - 1) {\r\n\t\t\t\t\tlet mean = dataItem.ma;\r\n\r\n\t\t\t\t\tlet stdSum = 0;\r\n\t\t\t\t\tfor (let j = i - period + 1; j <= i; j++) {\r\n\t\t\t\t\t\tlet di = dataItems[j];\r\n\t\t\t\t\t\tlet diValue = this._getValue(di);\r\n\t\t\t\t\t\tif (diValue != null) {\r\n\t\t\t\t\t\t\tstdSum += Math.pow(diValue - mean, 2);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet std = Math.sqrt(stdSum / period);\r\n\r\n\t\t\t\t\tconst lower = mean - standardDeviations * std;\r\n\t\t\t\t\tconst upper = mean + standardDeviations * std;\r\n\r\n\t\t\t\t\tdataItem.upper = upper;\r\n\t\t\t\t\tdataItem.lower = lower;\r\n\t\t\t\t}\r\n\t\t\t\ti++;\r\n\t\t\t})\r\n\r\n\t\t\tthis.upperBandSeries.updateData(smaData);\r\n\t\t\tthis.lowerBandSeries.updateData(smaData);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dispose() {\r\n\t\tthis.upperBandSeries.dispose();\r\n\t\tthis.lowerBandSeries.dispose();\r\n\t\tsuper._dispose();\r\n\t}\r\n\r\n\tpublic async hide(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.hide(duration),\r\n\t\t\tthis.upperBandSeries.hide(duration),\r\n\t\t\tthis.lowerBandSeries.hide(duration)\r\n\t\t]);\r\n\t}\r\n\r\n\tpublic async show(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.show(duration),\r\n\t\t\tthis.upperBandSeries.show(duration),\r\n\t\t\tthis.lowerBandSeries.show(duration)\r\n\t\t]);\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"BollingerBands.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/BollingerBands.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { MovingAverage, IMovingAverageSettings, IMovingAveragePrivate, IMovingAverageEvents } from \"./MovingAverage\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IBollingerBandsSettings extends IMovingAverageSettings {\r\n\r\n\t/**\r\n\t * A value of standard deviations.\r\n\t */\r\n\tstandardDeviations?: number;\r\n\r\n\t/**\r\n\t * A color for upper section.\r\n\t */\r\n\tupperColor?: Color;\r\n\r\n\t/**\r\n\t * A color for lower section.\r\n\t */\r\n\tlowerColor?: Color;\r\n\r\n}\r\n\r\nexport interface IBollingerBandsPrivate extends IMovingAveragePrivate {\r\n}\r\n\r\nexport interface IBollingerBandsEvents extends IMovingAverageEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class BollingerBands extends MovingAverage {\r\n\tpublic static className: string = \"BollingerBands\";\r\n\tpublic static classNames: Array<string> = MovingAverage.classNames.concat([BollingerBands.className]);\r\n\r\n\tdeclare public _settings: IBollingerBandsSettings;\r\n\tdeclare public _privateSettings: IBollingerBandsPrivate;\r\n\tdeclare public _events: IBollingerBandsEvents;\r\n\r\n\t/**\r\n\t * Indicator series for the upper band.\r\n\t */\r\n\tpublic upperBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the lower band.\r\n\t */\r\n\tpublic lowerBandSeries!: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"standardDeviations\",\r\n\t\tname: this.root.language.translateAny(\"Deviation\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"upperColor\",\r\n\t\tname: this.root.language.translateAny(\"Upper\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Average\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"lowerColor\",\r\n\t\tname: this.root.language.translateAny(\"Lower\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"maType\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst upperBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"upper\",\r\n\t\t\t\topenValueYField: \"lower\",\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"bollingerbands\", \"upper\"]\r\n\t\t\t}))\r\n\r\n\t\t\tupperBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tupperBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\r\n\t\t\tthis.upperBandSeries = upperBandSeries;\r\n\r\n\t\t\tconst lowerBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"lower\",\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"bollingerbands\", \"lower\"]\r\n\t\t\t}))\r\n\r\n\t\t\tlowerBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.lowerBandSeries = lowerBandSeries;\r\n\t\t}\r\n\r\n\t\tsuper._afterNew();\r\n\t\tthis.series.addTag(\"bollingerbands\");\r\n\t\tthis.series._applyThemes();\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\r\n\t\tif (this.isDirty(\"standardDeviations\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t}\r\n\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tconst upperColor = \"upperColor\";\r\n\t\tif (this.isDirty(upperColor)) {\r\n\t\t\tconst color = this.get(upperColor);\r\n\t\t\tconst upperBandSeries = this.upperBandSeries;\r\n\t\t\tupperBandSeries.set(\"stroke\", color);\r\n\t\t\tupperBandSeries.set(\"fill\", color);\r\n\t\t\tupperBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(upperBandSeries, color, upperColor);\r\n\t\t}\r\n\r\n\t\tconst lowerColor = \"lowerColor\";\r\n\t\tif (this.isDirty(lowerColor)) {\r\n\t\t\tconst color = this.get(lowerColor);\r\n\t\t\tconst lowerBandSeries = this.lowerBandSeries;\r\n\t\t\tlowerBandSeries.set(\"stroke\", color);\r\n\t\t\tlowerBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(lowerBandSeries, color, lowerColor);\r\n\t\t}\r\n\r\n\t\tthis.setCustomData(\"standardDeviations\", this.get(\"standardDeviations\"));\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tsuper.prepareData();\r\n\r\n\t\tif (this.series) {\r\n\r\n\t\t\tlet period = this.get(\"period\", 20);\r\n\r\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\t\tconst dataItems = stockSeries.dataItems;\r\n\r\n\t\t\tlet standardDeviations = this.get(\"standardDeviations\", 2);\r\n\r\n\t\t\tlet smaData = this.series.data.values as any;\r\n\r\n\t\t\tlet i = 0;\r\n\r\n\t\t\t$array.each(smaData, (dataItem: any) => {\r\n\t\t\t\tif (i >= period - 1) {\r\n\t\t\t\t\tlet mean = dataItem.ma;\r\n\r\n\t\t\t\t\tlet stdSum = 0;\r\n\t\t\t\t\tfor (let j = i - period + 1; j <= i; j++) {\r\n\t\t\t\t\t\tlet di = dataItems[j];\r\n\t\t\t\t\t\tlet diValue = this._getValue(di);\r\n\t\t\t\t\t\tif (diValue != null) {\r\n\t\t\t\t\t\t\tstdSum += Math.pow(diValue - mean, 2);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet std = Math.sqrt(stdSum / period);\r\n\r\n\t\t\t\t\tconst lower = mean - standardDeviations * std;\r\n\t\t\t\t\tconst upper = mean + standardDeviations * std;\r\n\r\n\t\t\t\t\tdataItem.upper = upper;\r\n\t\t\t\t\tdataItem.lower = lower;\r\n\t\t\t\t}\r\n\t\t\t\ti++;\r\n\t\t\t})\r\n\r\n\t\t\tthis.upperBandSeries.updateData(smaData);\r\n\t\t\tthis.lowerBandSeries.updateData(smaData);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dispose() {\r\n\t\tthis.upperBandSeries.dispose();\r\n\t\tthis.lowerBandSeries.dispose();\r\n\t\tsuper._dispose();\r\n\t}\r\n\r\n\tpublic async hide(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.hide(duration),\r\n\t\t\tthis.upperBandSeries.hide(duration),\r\n\t\t\tthis.lowerBandSeries.hide(duration)\r\n\t\t]);\r\n\t}\r\n\r\n\tpublic async show(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.show(duration),\r\n\t\t\tthis.upperBandSeries.show(duration),\r\n\t\t\tthis.lowerBandSeries.show(duration)\r\n\t\t]);\r\n\t}\r\n}"]}
|
|
@@ -6,6 +6,12 @@ export interface IMovingAverageSettings extends IIndicatorSettings {
|
|
|
6
6
|
*
|
|
7
7
|
* @default "simple"
|
|
8
8
|
*/
|
|
9
|
+
maType?: "simple" | "weighted" | "exponential" | "dema" | "tema";
|
|
10
|
+
/**
|
|
11
|
+
* Type of the moving average.
|
|
12
|
+
* Left for backward compatibility. Please use `maType` instead.
|
|
13
|
+
* @ignore
|
|
14
|
+
*/
|
|
9
15
|
type?: "simple" | "weighted" | "exponential" | "dema" | "tema";
|
|
10
16
|
/**
|
|
11
17
|
* Offset.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovingAverage.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAEjE;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/D;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAEhB;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;CAC/D;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;CAC7D;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAC3C,OAAc,SAAS,EAAE,MAAM,CAAmB;IAClD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAA0D;IAElF,SAAS,EAAE,sBAAsB,CAAC;IAClC,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,OAAO,EAAE,oBAAoB,CAAC;IAE7C;;OAEG;IACY,MAAM,EAAE,UAAU,CAAC;IAE3B,iBAAiB,EAAE,yBAAyB,EAAE,CAsBlD;IAEI,gBAAgB;
|
|
1
|
+
{"version":3,"file":"MovingAverage.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAEjE;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IAEjE;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/D;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAEhB;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;CAC/D;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;CAC7D;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAC3C,OAAc,SAAS,EAAE,MAAM,CAAmB;IAClD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAA0D;IAElF,SAAS,EAAE,sBAAsB,CAAC;IAClC,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,OAAO,EAAE,oBAAoB,CAAC;IAE7C;;OAEG;IACY,MAAM,EAAE,UAAU,CAAC;IAE3B,iBAAiB,EAAE,yBAAyB,EAAE,CAsBlD;IAEI,gBAAgB;IAgBvB,SAAS,CAAC,SAAS;IA0BnB;;OAEG;IACI,WAAW;CA8DlB"}
|
|
@@ -27,16 +27,20 @@ export class MovingAverage extends Indicator {
|
|
|
27
27
|
type: "dropdown",
|
|
28
28
|
options: ["open", "close", "low", "high", "hl/2", "hlc/3", "hlcc/4", "ohlc/4"]
|
|
29
29
|
}, {
|
|
30
|
-
key: "
|
|
30
|
+
key: "maType",
|
|
31
31
|
name: this.root.language.translateAny("Type"),
|
|
32
32
|
type: "dropdown",
|
|
33
33
|
options: ["simple", "weighted", "exponential", "dema", "tema"]
|
|
34
34
|
}];
|
|
35
35
|
}
|
|
36
36
|
_prepareChildren() {
|
|
37
|
-
if (this.isDirty("type")
|
|
37
|
+
if (this.isDirty("type") && this.get("type") !== undefined) {
|
|
38
|
+
this.set("maType", this.get("type"));
|
|
39
|
+
this.setRaw("type", undefined);
|
|
40
|
+
}
|
|
41
|
+
if (this.isDirty("maType") || this.isDirty("offset")) {
|
|
38
42
|
this.markDataDirty();
|
|
39
|
-
this.setCustomData("
|
|
43
|
+
this.setCustomData("maType", this.get("maType"));
|
|
40
44
|
this.setCustomData("offset", this.get("offset", 0));
|
|
41
45
|
}
|
|
42
46
|
super._prepareChildren();
|
|
@@ -67,11 +71,11 @@ export class MovingAverage extends Indicator {
|
|
|
67
71
|
prepareData() {
|
|
68
72
|
if (this.series) {
|
|
69
73
|
let period = this.get("period", 50);
|
|
70
|
-
const
|
|
74
|
+
const maType = this.get("maType");
|
|
71
75
|
const stockSeries = this.get("stockSeries");
|
|
72
76
|
const dataItems = stockSeries.dataItems;
|
|
73
77
|
let data = this._getDataArray(dataItems);
|
|
74
|
-
switch (
|
|
78
|
+
switch (maType) {
|
|
75
79
|
case "simple":
|
|
76
80
|
this._sma(data, period, "value_y", "ma");
|
|
77
81
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovingAverage.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverage.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DateAxis } from \"../../xy/axes/DateAxis\";\r\nimport type { AxisRenderer } from \"../../xy/axes/AxisRenderer\";\r\n\r\nimport { Indicator, IIndicatorSettings, IIndicatorPrivate, IIndicatorEvents, IIndicatorEditableSetting } from \"./Indicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageSettings extends IIndicatorSettings {\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t *\r\n\t * @default \"simple\"\r\n\t */\r\n\ttype?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\t/**\r\n\t * Offset.\r\n\t * \r\n\t * @default 0\r\n\t */\r\n\toffset?: number;\r\n\r\n}\r\n\r\nexport interface IMovingAveragePrivate extends IIndicatorPrivate {\r\n}\r\n\r\nexport interface IMovingAverageEvents extends IIndicatorEvents {\r\n}\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverage extends Indicator {\r\n\tpublic static className: string = \"MovingAverage\";\r\n\tpublic static classNames: Array<string> = Indicator.classNames.concat([MovingAverage.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageSettings;\r\n\tdeclare public _privateSettings: IMovingAveragePrivate;\r\n\tdeclare public _events: IMovingAverageEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"offset\",\r\n\t\tname: this.root.language.translateAny(\"Offset\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Color\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"type\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}];\r\n\r\n\tpublic _prepareChildren() {\r\n\r\n\t\tif (this.isDirty(\"type\") || this.isDirty(\"offset\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"type\", this.get(\"type\"));\r\n\t\t\tthis.setCustomData(\"offset\", this.get(\"offset\", 0));\r\n\t\t}\r\n\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst series = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"ma\",\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverage\"],\r\n\t\t\t\tname: \"MA\"\r\n\t\t\t}))\r\n\r\n\t\t\tseries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.series = series;\r\n\r\n\t\t\tthis._handleLegend(series);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tlet period = this.get(\"period\", 50);\r\n\t\t\tconst type = this.get(\"type\");\r\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\t\tconst dataItems = stockSeries.dataItems;\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase \"simple\":\r\n\t\t\t\t\tthis._sma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"weighted\":\r\n\t\t\t\t\tthis._wma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"exponential\":\r\n\t\t\t\t\tthis._ema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dema\":\r\n\t\t\t\t\tthis._dema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tema\":\r\n\t\t\t\t\tthis._tema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst offset = this.get(\"offset\", 0);\r\n\r\n\r\n\t\t\tif (offset != 0) {\r\n\t\t\t\tlet i = 0;\r\n\t\t\t\tconst baseDuration = (this.series.get(\"xAxis\") as DateAxis<AxisRenderer>).baseDuration();\r\n\t\t\t\tconst len = dataItems.length;\r\n\t\t\t\tconst firstTime = dataItems[0].get(\"valueX\", 0);\r\n\t\t\t\tconst lastTime = dataItems[len - 1].get(\"valueX\", 0);\r\n\r\n\t\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\t\tlet newX: number = 0;\r\n\r\n\t\t\t\t\tif (i + offset >= len) {\r\n\t\t\t\t\t\tnewX = lastTime + (offset - len + i + 1) * baseDuration;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (i + offset < 0) {\r\n\t\t\t\t\t\tnewX = firstTime + (i + offset) * baseDuration;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tnewX = dataItems[i + offset].get(\"valueX\", 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdataItem.valueX = newX;\r\n\r\n\t\t\t\t\ti++;\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tthis.series.updateData(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"MovingAverage.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverage.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DateAxis } from \"../../xy/axes/DateAxis\";\r\nimport type { AxisRenderer } from \"../../xy/axes/AxisRenderer\";\r\n\r\nimport { Indicator, IIndicatorSettings, IIndicatorPrivate, IIndicatorEvents, IIndicatorEditableSetting } from \"./Indicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageSettings extends IIndicatorSettings {\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t *\r\n\t * @default \"simple\"\r\n\t */\r\n\tmaType?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t * Left for backward compatibility. Please use `maType` instead.\r\n\t * @ignore\r\n\t */\r\n\ttype?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\t/**\r\n\t * Offset.\r\n\t * \r\n\t * @default 0\r\n\t */\r\n\toffset?: number;\r\n\r\n}\r\n\r\nexport interface IMovingAveragePrivate extends IIndicatorPrivate {\r\n}\r\n\r\nexport interface IMovingAverageEvents extends IIndicatorEvents {\r\n}\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverage extends Indicator {\r\n\tpublic static className: string = \"MovingAverage\";\r\n\tpublic static classNames: Array<string> = Indicator.classNames.concat([MovingAverage.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageSettings;\r\n\tdeclare public _privateSettings: IMovingAveragePrivate;\r\n\tdeclare public _events: IMovingAverageEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"offset\",\r\n\t\tname: this.root.language.translateAny(\"Offset\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Color\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"maType\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}];\r\n\r\n\tpublic _prepareChildren() {\r\n\r\n\t\tif (this.isDirty(\"type\") && this.get(\"type\") !== undefined) {\r\n\t\t\tthis.set(\"maType\", this.get(\"type\"));\r\n\t\t\tthis.setRaw(\"type\", undefined);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"maType\") || this.isDirty(\"offset\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"maType\", this.get(\"maType\"));\r\n\t\t\tthis.setCustomData(\"offset\", this.get(\"offset\", 0));\r\n\t\t}\r\n\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst series = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"ma\",\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverage\"],\r\n\t\t\t\tname: \"MA\"\r\n\t\t\t}))\r\n\r\n\t\t\tseries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.series = series;\r\n\r\n\t\t\tthis._handleLegend(series);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tlet period = this.get(\"period\", 50);\r\n\t\t\tconst maType = this.get(\"maType\");\r\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\t\tconst dataItems = stockSeries.dataItems;\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\r\n\t\t\tswitch (maType) {\r\n\t\t\t\tcase \"simple\":\r\n\t\t\t\t\tthis._sma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"weighted\":\r\n\t\t\t\t\tthis._wma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"exponential\":\r\n\t\t\t\t\tthis._ema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dema\":\r\n\t\t\t\t\tthis._dema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tema\":\r\n\t\t\t\t\tthis._tema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst offset = this.get(\"offset\", 0);\r\n\r\n\r\n\t\t\tif (offset != 0) {\r\n\t\t\t\tlet i = 0;\r\n\t\t\t\tconst baseDuration = (this.series.get(\"xAxis\") as DateAxis<AxisRenderer>).baseDuration();\r\n\t\t\t\tconst len = dataItems.length;\r\n\t\t\t\tconst firstTime = dataItems[0].get(\"valueX\", 0);\r\n\t\t\t\tconst lastTime = dataItems[len - 1].get(\"valueX\", 0);\r\n\r\n\t\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\t\tlet newX: number = 0;\r\n\r\n\t\t\t\t\tif (i + offset >= len) {\r\n\t\t\t\t\t\tnewX = lastTime + (offset - len + i + 1) * baseDuration;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (i + offset < 0) {\r\n\t\t\t\t\t\tnewX = firstTime + (i + offset) * baseDuration;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tnewX = dataItems[i + offset].get(\"valueX\", 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdataItem.valueX = newX;\r\n\r\n\t\t\t\t\ti++;\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tthis.series.updateData(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -16,6 +16,12 @@ export interface IMovingAverageDeviationSettings extends IChartIndicatorSettings
|
|
|
16
16
|
*
|
|
17
17
|
* @default "simple"
|
|
18
18
|
*/
|
|
19
|
+
maType?: "simple" | "weighted" | "exponential" | "dema" | "tema";
|
|
20
|
+
/**
|
|
21
|
+
* Type of the moving average.
|
|
22
|
+
* Left for backward compatibility. Please use `maType` instead.
|
|
23
|
+
* @ignore
|
|
24
|
+
*/
|
|
19
25
|
type?: "simple" | "weighted" | "exponential" | "dema" | "tema";
|
|
20
26
|
/**
|
|
21
27
|
* How units are calculated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovingAverageDeviation.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAE/E;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MovingAverageDeviation.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAE/E;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IAEjE;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;IAG/D;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAE3B;AAED,MAAM,WAAW,8BAA+B,SAAQ,sBAAsB;CAC7E;AAED,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;CAC3E;AAGD;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;IACzD,OAAc,SAAS,EAAE,MAAM,CAA4B;IAC3D,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAwE;IAEhG,SAAS,EAAE,+BAA+B,CAAC;IAC3C,gBAAgB,EAAE,8BAA8B,CAAC;IACjD,OAAO,EAAE,6BAA6B,CAAC;IAEtD;;OAEG;IACY,MAAM,EAAE,YAAY,CAAC;IAE7B,iBAAiB,EAAE,yBAAyB,EAAE,CA6BjD;IAEG,SAAS;IAKT,aAAa,IAAI,YAAY;IAW7B,eAAe;IAaf,gBAAgB;IAavB;;OAEG;IACI,WAAW;CA2DlB"}
|
|
@@ -21,7 +21,7 @@ export class MovingAverageDeviation extends ChartIndicator {
|
|
|
21
21
|
type: "dropdown",
|
|
22
22
|
options: ["open", "close", "low", "high", "hl/2", "hlc/3", "hlcc/4", "ohlc/4"]
|
|
23
23
|
}, {
|
|
24
|
-
key: "
|
|
24
|
+
key: "maType",
|
|
25
25
|
name: this.root.language.translateAny("Type"),
|
|
26
26
|
type: "dropdown",
|
|
27
27
|
options: ["simple", "weighted", "exponential", "dema", "tema"]
|
|
@@ -67,7 +67,11 @@ export class MovingAverageDeviation extends ChartIndicator {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
_prepareChildren() {
|
|
70
|
-
if (this.isDirty("type")
|
|
70
|
+
if (this.isDirty("type") && this.get("type") !== undefined) {
|
|
71
|
+
this.set("maType", this.get("type"));
|
|
72
|
+
this.setRaw("type", undefined);
|
|
73
|
+
}
|
|
74
|
+
if (this.isDirty("maType") || this.isDirty("unit")) {
|
|
71
75
|
this.markDataDirty();
|
|
72
76
|
}
|
|
73
77
|
super._prepareChildren();
|
|
@@ -82,7 +86,7 @@ export class MovingAverageDeviation extends ChartIndicator {
|
|
|
82
86
|
let increasingColor = this.get("increasingColor", Color.fromHex(0x00ff00)).toCSSHex();
|
|
83
87
|
let data = this._getDataArray(dataItems);
|
|
84
88
|
let period = this.get("period", 50);
|
|
85
|
-
const type = this.get("
|
|
89
|
+
const type = this.get("maType");
|
|
86
90
|
const unit = this.get("unit");
|
|
87
91
|
switch (type) {
|
|
88
92
|
case "simple":
|
|
@@ -105,7 +109,7 @@ export class MovingAverageDeviation extends ChartIndicator {
|
|
|
105
109
|
let i = 0;
|
|
106
110
|
$array.each(data, (dataItem) => {
|
|
107
111
|
i++;
|
|
108
|
-
if (i >= period) {
|
|
112
|
+
if (i >= period && dataItem.value_y != null && dataItem.ma != null) {
|
|
109
113
|
let deviation = dataItem.value_y - dataItem.ma;
|
|
110
114
|
if (unit == "percent") {
|
|
111
115
|
deviation = (dataItem.value_y / dataItem.ma - 1) * 100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovingAverageDeviation.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageDeviation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\n\r\nimport { Color } from \"../../../core/util/Color\";\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { ColumnSeries } from \"../../xy/series/ColumnSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageDeviationSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * Increasing color.\r\n\t */\r\n\tincreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Decreasing color.\r\n\t */\r\n\tdecreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t *\r\n\t * @default \"simple\"\r\n\t */\r\n\ttype?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\t/**\r\n\t * How units are calculated.\r\n\t *\r\n\t * @default \"points\"\r\n\t */\r\n\tunit?: \"points\" | \"percent\"\r\n\r\n}\r\n\r\nexport interface IMovingAverageDeviationPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IMovingAverageDeviationEvents extends IChartIndicatorEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageDeviation extends ChartIndicator {\r\n\tpublic static className: string = \"MovingAverageDeviation\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([MovingAverageDeviation.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageDeviationSettings;\r\n\tdeclare public _privateSettings: IMovingAverageDeviationPrivate;\r\n\tdeclare public _events: IMovingAverageDeviationEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: ColumnSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [\r\n\t\t{\r\n\t\t\tkey: \"period\",\r\n\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"field\",\r\n\t\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t\t}, {\r\n\t\t\tkey: \"type\",\r\n\t\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t\t}, {\r\n\t\t\tkey: \"unit\",\r\n\t\t\tname: this.root.language.translateAny(\"Points/Percent\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"points\", \"percent\"]\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"increasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Increasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"decreasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Decreasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}];\r\n\r\n\tpublic _afterNew(){\r\n\t\tthis._themeTags.push(\"movingaveragedeviation\");\r\n\t\tsuper._afterNew();\r\n\t}\t\t\r\n\r\n\tpublic _createSeries(): ColumnSeries {\r\n\t\treturn this.panel.series.push(ColumnSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"deviation\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"increasingColor\") || this.isDirty(\"decreasingColor\")) {\r\n\t\t\tconst template = this.series.columns.template;\r\n\t\t\tconst increasing = this.get(\"increasingColor\");\r\n\t\t\tconst decreasing = this.get(\"decreasingColor\");\r\n\t\t\ttemplate.states.create(\"riseFromPrevious\", { fill: increasing, stroke: increasing });\r\n\t\t\ttemplate.states.create(\"dropFromPrevious\", { fill: decreasing, stroke: decreasing });\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"type\") || this.isDirty(\"unit\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\r\n\t\t\tlet decreasingColor = this.get(\"decreasingColor\", Color.fromHex(0xff0000)).toCSSHex();\r\n\t\t\tlet increasingColor = this.get(\"increasingColor\", Color.fromHex(0x00ff00)).toCSSHex();\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\t\t\tlet period = this.get(\"period\", 50);\r\n\t\t\tconst type = this.get(\"type\");\r\n\t\t\tconst unit = this.get(\"unit\");\r\n\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase \"simple\":\r\n\t\t\t\t\tthis._sma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"weighted\":\r\n\t\t\t\t\tthis._wma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"exponential\":\r\n\t\t\t\t\tthis._ema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dema\":\r\n\t\t\t\t\tthis._dema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tema\":\r\n\t\t\t\t\tthis._tema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet previous = -Infinity;\r\n\t\t\tlet i = 0;\r\n\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\ti++;\r\n\t\t\t\tif (i >= period) {\r\n\t\t\t\t\tlet deviation = dataItem.value_y - dataItem.ma;\r\n\t\t\t\t\tif (unit == \"percent\") {\r\n\t\t\t\t\t\tdeviation = (dataItem.value_y / dataItem.ma - 1) * 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet color = increasingColor;\r\n\r\n\t\t\t\t\tif (deviation < previous) {\r\n\t\t\t\t\t\tcolor = decreasingColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.deviation = deviation;\r\n\t\t\t\t\tdataItem.deviationColor = color;\r\n\t\t\t\t\tprevious = deviation;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.series.updateData(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"MovingAverageDeviation.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageDeviation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\n\r\nimport { Color } from \"../../../core/util/Color\";\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { ColumnSeries } from \"../../xy/series/ColumnSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageDeviationSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * Increasing color.\r\n\t */\r\n\tincreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Decreasing color.\r\n\t */\r\n\tdecreasingColor?: Color;\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t *\r\n\t * @default \"simple\"\r\n\t */\r\n\tmaType?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\t/**\r\n\t * Type of the moving average.\r\n\t * Left for backward compatibility. Please use `maType` instead.\r\n\t * @ignore\r\n\t */\r\n\ttype?: \"simple\" | \"weighted\" | \"exponential\" | \"dema\" | \"tema\";\r\n\r\n\r\n\t/**\r\n\t * How units are calculated.\r\n\t *\r\n\t * @default \"points\"\r\n\t */\r\n\tunit?: \"points\" | \"percent\"\r\n\r\n}\r\n\r\nexport interface IMovingAverageDeviationPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IMovingAverageDeviationEvents extends IChartIndicatorEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageDeviation extends ChartIndicator {\r\n\tpublic static className: string = \"MovingAverageDeviation\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([MovingAverageDeviation.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageDeviationSettings;\r\n\tdeclare public _privateSettings: IMovingAverageDeviationPrivate;\r\n\tdeclare public _events: IMovingAverageDeviationEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: ColumnSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [\r\n\t\t{\r\n\t\t\tkey: \"period\",\r\n\t\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"field\",\r\n\t\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t\t}, {\r\n\t\t\tkey: \"maType\",\r\n\t\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t\t}, {\r\n\t\t\tkey: \"unit\",\r\n\t\t\tname: this.root.language.translateAny(\"Points/Percent\"),\r\n\t\t\ttype: \"dropdown\",\r\n\t\t\toptions: [\"points\", \"percent\"]\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"increasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Increasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"decreasingColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Decreasing\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}];\r\n\r\n\tpublic _afterNew() {\r\n\t\tthis._themeTags.push(\"movingaveragedeviation\");\r\n\t\tsuper._afterNew();\r\n\t}\r\n\r\n\tpublic _createSeries(): ColumnSeries {\r\n\t\treturn this.panel.series.push(ColumnSeries.new(this._root, {\r\n\t\t\tthemeTags: [\"indicator\"],\r\n\t\t\txAxis: this.xAxis,\r\n\t\t\tyAxis: this.yAxis,\r\n\t\t\tvalueXField: \"valueX\",\r\n\t\t\tvalueYField: \"deviation\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"increasingColor\") || this.isDirty(\"decreasingColor\")) {\r\n\t\t\tconst template = this.series.columns.template;\r\n\t\t\tconst increasing = this.get(\"increasingColor\");\r\n\t\t\tconst decreasing = this.get(\"decreasingColor\");\r\n\t\t\ttemplate.states.create(\"riseFromPrevious\", { fill: increasing, stroke: increasing });\r\n\t\t\ttemplate.states.create(\"dropFromPrevious\", { fill: decreasing, stroke: decreasing });\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"type\") && this.get(\"type\") !== undefined) {\r\n\t\t\tthis.set(\"maType\", this.get(\"type\"));\r\n\t\t\tthis.setRaw(\"type\", undefined);\r\n\t\t}\r\n\r\n\r\n\t\tif (this.isDirty(\"maType\") || this.isDirty(\"unit\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tif (this.series) {\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\r\n\t\t\tlet decreasingColor = this.get(\"decreasingColor\", Color.fromHex(0xff0000)).toCSSHex();\r\n\t\t\tlet increasingColor = this.get(\"increasingColor\", Color.fromHex(0x00ff00)).toCSSHex();\r\n\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\t\t\tlet period = this.get(\"period\", 50);\r\n\t\t\tconst type = this.get(\"maType\");\r\n\t\t\tconst unit = this.get(\"unit\");\r\n\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase \"simple\":\r\n\t\t\t\t\tthis._sma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"weighted\":\r\n\t\t\t\t\tthis._wma(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"exponential\":\r\n\t\t\t\t\tthis._ema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dema\":\r\n\t\t\t\t\tthis._dema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tema\":\r\n\t\t\t\t\tthis._tema(data, period, \"value_y\", \"ma\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet previous = -Infinity;\r\n\t\t\tlet i = 0;\r\n\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\ti++;\r\n\t\t\t\tif (i >= period && dataItem.value_y != null && dataItem.ma != null) {\r\n\t\t\t\t\tlet deviation = dataItem.value_y - dataItem.ma;\r\n\t\t\t\t\tif (unit == \"percent\") {\r\n\t\t\t\t\t\tdeviation = (dataItem.value_y / dataItem.ma - 1) * 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet color = increasingColor;\r\n\r\n\t\t\t\t\tif (deviation < previous) {\r\n\t\t\t\t\t\tcolor = decreasingColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.deviation = deviation;\r\n\t\t\t\t\tdataItem.deviationColor = color;\r\n\t\t\t\t\tprevious = deviation;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.series.updateData(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -15,7 +15,7 @@ export class MovingAverageEnvelope extends MovingAverage {
|
|
|
15
15
|
name: this.root.language.translateAny("Period"),
|
|
16
16
|
type: "number"
|
|
17
17
|
}, {
|
|
18
|
-
key: "
|
|
18
|
+
key: "maType",
|
|
19
19
|
name: this.root.language.translateAny("Type"),
|
|
20
20
|
type: "dropdown",
|
|
21
21
|
options: ["simple", "weighted", "exponential", "dema", "tema"]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovingAverageEnvelope.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageEnvelope.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { MovingAverage, IMovingAverageSettings, IMovingAveragePrivate, IMovingAverageEvents } from \"./MovingAverage\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageEnvelopeSettings extends IMovingAverageSettings {\r\n\r\n\t/**\r\n\t * Shift.\r\n\t *\r\n\t * @default 5\r\n\t */\r\n\tshift?: number;\r\n\r\n\t/**\r\n\t * Type of the shift.\r\n\t *\r\n\t * @default \"percent\"\r\n\t */\r\n\tshiftType?: \"percent\" | \"points\";\r\n\r\n\t/**\r\n\t * A color for upper section.\r\n\t */\r\n\tupperColor?: Color;\r\n\r\n\t/**\r\n\t * A color for lower section.\r\n\t */\r\n\tlowerColor?: Color;\r\n\r\n}\r\n\r\nexport interface IMovingAverageEnvelopePrivate extends IMovingAveragePrivate {\r\n}\r\n\r\nexport interface IMovingAverageEnvelopeEvents extends IMovingAverageEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageEnvelope extends MovingAverage {\r\n\tpublic static className: string = \"MovingAverageEnvelope\";\r\n\tpublic static classNames: Array<string> = MovingAverage.classNames.concat([MovingAverageEnvelope.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageEnvelopeSettings;\r\n\tdeclare public _privateSettings: IMovingAverageEnvelopePrivate;\r\n\tdeclare public _events: IMovingAverageEnvelopeEvents;\r\n\r\n\t/**\r\n\t * Indicator series for the upper band.\r\n\t */\r\n\tpublic upperBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the lower band.\r\n\t */\r\n\tpublic lowerBandSeries!: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"type\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"shiftType\",\r\n\t\tname: this.root.language.translateAny(\"Shift type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"percent\", \"points\"]\r\n\t}, {\r\n\t\tkey: \"shift\",\r\n\t\tname: this.root.language.translateAny(\"Shift\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"offset\",\r\n\t\tname: this.root.language.translateAny(\"Offset\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"upperColor\",\r\n\t\tname: this.root.language.translateAny(\"Top\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Median\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"lowerColor\",\r\n\t\tname: this.root.language.translateAny(\"Bottom\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst upperBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"upper\",\r\n\t\t\t\topenValueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"upper\"]\r\n\t\t\t}))\r\n\r\n\t\t\tupperBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tupperBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\r\n\t\t\tthis.upperBandSeries = upperBandSeries;\r\n\r\n\t\t\tconst lowerBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"lower\"]\r\n\t\t\t}))\r\n\r\n\t\t\tlowerBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.lowerBandSeries = lowerBandSeries;\r\n\t\t}\r\n\r\n\t\tsuper._afterNew();\r\n\t\tthis.series.addTag(\"movingaverageenvelope\");\r\n\t\tthis.series._applyThemes();\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tif (this.isDirty(\"upperColor\")) {\r\n\t\t\tconst color = this.get(\"upperColor\");\r\n\t\t\tconst upperBandSeries = this.upperBandSeries;\r\n\t\t\tupperBandSeries.set(\"stroke\", color);\r\n\t\t\tupperBandSeries.set(\"fill\", color);\r\n\t\t\tupperBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(upperBandSeries, color, \"upperColor\");\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"lowerColor\")) {\r\n\t\t\tconst color = this.get(\"lowerColor\");\r\n\t\t\tconst lowerBandSeries = this.lowerBandSeries;\r\n\t\t\tlowerBandSeries.set(\"stroke\", color);\r\n\t\t\tlowerBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(lowerBandSeries, color, \"lowerColor\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"shiftType\") || this.isDirty(\"shift\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"shift\", this.get(\"shift\"));\r\n\t\t\tthis.setCustomData(\"shiftType\", this.get(\"shiftType\"));\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tsuper.prepareData();\r\n\r\n\t\tif (this.series) {\r\n\t\t\tlet smaData = this.series.data.values as any;\r\n\t\t\tlet shift = Number(this.get(\"shift\", 5));\r\n\t\t\tlet shiftType = this.get(\"shiftType\");\r\n\r\n\t\t\t$array.each(smaData, (dataItem: any) => {\r\n\t\t\t\tlet value = dataItem.ma;\r\n\t\t\t\tif (value != null) {\r\n\t\t\t\t\tlet upper = value;\r\n\t\t\t\t\tlet lower = value;\r\n\t\t\t\t\tif (shiftType == \"points\") {\r\n\t\t\t\t\t\tupper += shift;\r\n\t\t\t\t\t\tlower -= shift;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tupper += upper * shift / 100;\r\n\t\t\t\t\t\tlower -= lower * shift / 100;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.upper = upper;\r\n\t\t\t\t\tdataItem.lower = lower;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.upperBandSeries.updateData(smaData);\r\n\t\t\tthis.lowerBandSeries.updateData(smaData);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dispose() {\r\n\t\tthis.upperBandSeries.dispose();\r\n\t\tthis.lowerBandSeries.dispose();\r\n\t\tsuper._dispose();\r\n\t}\r\n\r\n\tpublic async hide(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.hide(duration),\r\n\t\t\tthis.upperBandSeries.hide(duration),\r\n\t\t\tthis.lowerBandSeries.hide(duration)\r\n\t\t]);\r\n\t}\r\n\r\n\tpublic async show(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.show(duration),\r\n\t\t\tthis.upperBandSeries.show(duration),\r\n\t\t\tthis.lowerBandSeries.show(duration)\r\n\t\t]);\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"MovingAverageEnvelope.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/MovingAverageEnvelope.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAuE,MAAM,iBAAiB,CAAC;AACrH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAqCnD;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IAAxD;;QAkBQ,sBAAiB,GAAgC,CAAC;gBACxD,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC/C,IAAI,EAAE,QAAQ;aACd,EAAE;gBACF,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC7C,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;aAC9D,EAAE;gBACF,GAAG,EAAE,OAAO;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;aAC9E,EAAE;gBACF,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;gBACnD,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;aAC9B,EAAE;gBACF,GAAG,EAAE,OAAO;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,IAAI,EAAE,QAAQ;aACd,EAAE;gBACF,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC/C,IAAI,EAAE,QAAQ;aACd,EAAE;gBACF,GAAG,EAAE,YAAY;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC5C,IAAI,EAAE,OAAO;aACb,EAAE;gBACF,GAAG,EAAE,aAAa;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC/C,IAAI,EAAE,OAAO;aACb,EAAE;gBACF,GAAG,EAAE,YAAY;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC/C,IAAI,EAAE,OAAO;aACb,CAAC,CAAC;IAmIJ,CAAC;IAjIU,SAAS;QAElB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAEhC,IAAI,KAAK,EAAE;YACV,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;gBACpE,WAAW,EAAE,QAAQ;gBACrB,WAAW,EAAE,OAAO;gBACpB,eAAe,EAAE,OAAO;gBACxB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC/B,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC/B,iBAAiB,EAAE,IAAI;gBACvB,mBAAmB,EAAE,IAAI;gBACzB,SAAS,EAAE,CAAC,WAAW,EAAE,uBAAuB,EAAE,OAAO,CAAC;aAC1D,CAAC,CAAC,CAAA;YAEH,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACpD,eAAe,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YAE3D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YAEvC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;gBACpE,WAAW,EAAE,QAAQ;gBACrB,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC/B,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC/B,iBAAiB,EAAE,IAAI;gBACvB,mBAAmB,EAAE,IAAI;gBACzB,SAAS,EAAE,CAAC,WAAW,EAAE,uBAAuB,EAAE,OAAO,CAAC;aAC1D,CAAC,CAAC,CAAA;YAEH,eAAe,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;SACvC;QAED,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,eAAe;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACrC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAEtD,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;SAC9D;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACrC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAEtD,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;SAC9D;IAEF,CAAC;IAEM,gBAAgB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACvD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;SACvD;QACD,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,WAAW;QACjB,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAa,CAAC;YAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEtC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAa,EAAE,EAAE;gBACtC,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;gBACxB,IAAI,KAAK,IAAI,IAAI,EAAE;oBAClB,IAAI,KAAK,GAAG,KAAK,CAAC;oBAClB,IAAI,KAAK,GAAG,KAAK,CAAC;oBAClB,IAAI,SAAS,IAAI,QAAQ,EAAE;wBAC1B,KAAK,IAAI,KAAK,CAAC;wBACf,KAAK,IAAI,KAAK,CAAC;qBACf;yBACI;wBACJ,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;wBAC7B,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;qBAC7B;oBAED,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;oBACvB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;iBACvB;YACF,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACzC;IACF,CAAC;IAES,QAAQ;QACjB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEY,IAAI,CAAC,QAAiB;;;;;YAClC,OAAO,OAAO,CAAC,GAAG,CAAC;gBAClB,OAAM,IAAI,YAAC,QAAQ;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;aACnC,CAAC,CAAC;QACJ,CAAC;KAAA;IAEY,IAAI,CAAC,QAAiB;;;;;YAClC,OAAO,OAAO,CAAC,GAAG,CAAC;gBAClB,OAAM,IAAI,YAAC,QAAQ;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;aACnC,CAAC,CAAC;QACJ,CAAC;KAAA;;AA1La,+BAAS,GAAW,uBAAuB,CAAC;AAC5C,gCAAU,GAAkB,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { MovingAverage, IMovingAverageSettings, IMovingAveragePrivate, IMovingAverageEvents } from \"./MovingAverage\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IMovingAverageEnvelopeSettings extends IMovingAverageSettings {\r\n\r\n\t/**\r\n\t * Shift.\r\n\t *\r\n\t * @default 5\r\n\t */\r\n\tshift?: number;\r\n\r\n\t/**\r\n\t * Type of the shift.\r\n\t *\r\n\t * @default \"percent\"\r\n\t */\r\n\tshiftType?: \"percent\" | \"points\";\r\n\r\n\t/**\r\n\t * A color for upper section.\r\n\t */\r\n\tupperColor?: Color;\r\n\r\n\t/**\r\n\t * A color for lower section.\r\n\t */\r\n\tlowerColor?: Color;\r\n\r\n}\r\n\r\nexport interface IMovingAverageEnvelopePrivate extends IMovingAveragePrivate {\r\n}\r\n\r\nexport interface IMovingAverageEnvelopeEvents extends IMovingAverageEvents {\r\n}\r\n\r\n\r\n/**\r\n * An implementation of a [[StockChart]] indicator.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\r\n */\r\nexport class MovingAverageEnvelope extends MovingAverage {\r\n\tpublic static className: string = \"MovingAverageEnvelope\";\r\n\tpublic static classNames: Array<string> = MovingAverage.classNames.concat([MovingAverageEnvelope.className]);\r\n\r\n\tdeclare public _settings: IMovingAverageEnvelopeSettings;\r\n\tdeclare public _privateSettings: IMovingAverageEnvelopePrivate;\r\n\tdeclare public _events: IMovingAverageEnvelopeEvents;\r\n\r\n\t/**\r\n\t * Indicator series for the upper band.\r\n\t */\r\n\tpublic upperBandSeries!: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for the lower band.\r\n\t */\r\n\tpublic lowerBandSeries!: LineSeries;\r\n\r\n\tpublic _editableSettings: IIndicatorEditableSetting[] = [{\r\n\t\tkey: \"period\",\r\n\t\tname: this.root.language.translateAny(\"Period\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"maType\",\r\n\t\tname: this.root.language.translateAny(\"Type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"simple\", \"weighted\", \"exponential\", \"dema\", \"tema\"]\r\n\t}, {\r\n\t\tkey: \"field\",\r\n\t\tname: this.root.language.translateAny(\"Field\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"open\", \"close\", \"low\", \"high\", \"hl/2\", \"hlc/3\", \"hlcc/4\", \"ohlc/4\"]\r\n\t}, {\r\n\t\tkey: \"shiftType\",\r\n\t\tname: this.root.language.translateAny(\"Shift type\"),\r\n\t\ttype: \"dropdown\",\r\n\t\toptions: [\"percent\", \"points\"]\r\n\t}, {\r\n\t\tkey: \"shift\",\r\n\t\tname: this.root.language.translateAny(\"Shift\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"offset\",\r\n\t\tname: this.root.language.translateAny(\"Offset\"),\r\n\t\ttype: \"number\"\r\n\t}, {\r\n\t\tkey: \"upperColor\",\r\n\t\tname: this.root.language.translateAny(\"Top\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"seriesColor\",\r\n\t\tname: this.root.language.translateAny(\"Median\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"lowerColor\",\r\n\t\tname: this.root.language.translateAny(\"Bottom\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _afterNew() {\r\n\r\n\t\tconst stockSeries = this.get(\"stockSeries\");\r\n\t\tconst chart = stockSeries.chart;\r\n\r\n\t\tif (chart) {\r\n\t\t\tconst upperBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"upper\",\r\n\t\t\t\topenValueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"upper\"]\r\n\t\t\t}))\r\n\r\n\t\t\tupperBandSeries.fills.template.set(\"visible\", true);\r\n\t\t\tupperBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\r\n\t\t\tthis.upperBandSeries = upperBandSeries;\r\n\r\n\t\t\tconst lowerBandSeries = chart.series.push(LineSeries.new(this._root, {\r\n\t\t\t\tvalueXField: \"valueX\",\r\n\t\t\t\tvalueYField: \"lower\",\r\n\t\t\t\txAxis: stockSeries.get(\"xAxis\"),\r\n\t\t\t\tyAxis: stockSeries.get(\"yAxis\"),\r\n\t\t\t\tgroupDataDisabled: true,\r\n\t\t\t\tcalculateAggregates: true,\r\n\t\t\t\tthemeTags: [\"indicator\", \"movingaverageenvelope\", \"lower\"]\r\n\t\t\t}))\r\n\r\n\t\t\tlowerBandSeries.setPrivate(\"baseValueSeries\", stockSeries);\r\n\t\t\tthis.lowerBandSeries = lowerBandSeries;\r\n\t\t}\r\n\r\n\t\tsuper._afterNew();\r\n\t\tthis.series.addTag(\"movingaverageenvelope\");\r\n\t\tthis.series._applyThemes();\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\t\tif (this.isDirty(\"upperColor\")) {\r\n\t\t\tconst color = this.get(\"upperColor\");\r\n\t\t\tconst upperBandSeries = this.upperBandSeries;\r\n\t\t\tupperBandSeries.set(\"stroke\", color);\r\n\t\t\tupperBandSeries.set(\"fill\", color);\r\n\t\t\tupperBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(upperBandSeries, color, \"upperColor\");\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"lowerColor\")) {\r\n\t\t\tconst color = this.get(\"lowerColor\");\r\n\t\t\tconst lowerBandSeries = this.lowerBandSeries;\r\n\t\t\tlowerBandSeries.set(\"stroke\", color);\r\n\t\t\tlowerBandSeries.strokes.template.set(\"stroke\", color);\r\n\r\n\t\t\tthis._updateSeriesColor(lowerBandSeries, color, \"lowerColor\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"shiftType\") || this.isDirty(\"shift\")) {\r\n\t\t\tthis.markDataDirty();\r\n\t\t\tthis.setCustomData(\"shift\", this.get(\"shift\"));\r\n\t\t\tthis.setCustomData(\"shiftType\", this.get(\"shiftType\"));\r\n\t\t}\r\n\t\tsuper._prepareChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic prepareData() {\r\n\t\tsuper.prepareData();\r\n\r\n\t\tif (this.series) {\r\n\t\t\tlet smaData = this.series.data.values as any;\r\n\t\t\tlet shift = Number(this.get(\"shift\", 5));\r\n\t\t\tlet shiftType = this.get(\"shiftType\");\r\n\r\n\t\t\t$array.each(smaData, (dataItem: any) => {\r\n\t\t\t\tlet value = dataItem.ma;\r\n\t\t\t\tif (value != null) {\r\n\t\t\t\t\tlet upper = value;\r\n\t\t\t\t\tlet lower = value;\r\n\t\t\t\t\tif (shiftType == \"points\") {\r\n\t\t\t\t\t\tupper += shift;\r\n\t\t\t\t\t\tlower -= shift;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tupper += upper * shift / 100;\r\n\t\t\t\t\t\tlower -= lower * shift / 100;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.upper = upper;\r\n\t\t\t\t\tdataItem.lower = lower;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.upperBandSeries.updateData(smaData);\r\n\t\t\tthis.lowerBandSeries.updateData(smaData);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _dispose() {\r\n\t\tthis.upperBandSeries.dispose();\r\n\t\tthis.lowerBandSeries.dispose();\r\n\t\tsuper._dispose();\r\n\t}\r\n\r\n\tpublic async hide(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.hide(duration),\r\n\t\t\tthis.upperBandSeries.hide(duration),\r\n\t\t\tthis.lowerBandSeries.hide(duration)\r\n\t\t]);\r\n\t}\r\n\r\n\tpublic async show(duration?: number): Promise<any> {\r\n\t\treturn Promise.all([\r\n\t\t\tsuper.show(duration),\r\n\t\t\tthis.upperBandSeries.show(duration),\r\n\t\t\tthis.lowerBandSeries.show(duration)\r\n\t\t]);\r\n\t}\r\n}"]}
|
|
@@ -98,6 +98,9 @@ export interface IDrawingControlSettings extends IStockControlSettings {
|
|
|
98
98
|
labelFontSizes?: Array<number | string>;
|
|
99
99
|
/**
|
|
100
100
|
* Default label font.
|
|
101
|
+
*
|
|
102
|
+
* Use reserved value `"inherit"` to use computed style on chart
|
|
103
|
+
* container. (since `5.17.3`)
|
|
101
104
|
*/
|
|
102
105
|
labelFontFamily?: string;
|
|
103
106
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingControl.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/toolbar/DrawingControl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AA+BzD,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IAErE;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAExC;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAE9B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAExC
|
|
1
|
+
{"version":3,"file":"DrawingControl.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/toolbar/DrawingControl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1037,7 +1037,7 @@ export class DrawingControl extends StockControl {
|
|
|
1037
1037
|
panel.series.each((series) => {
|
|
1038
1038
|
if (series.isType("DrawingSeries")) {
|
|
1039
1039
|
const serializer = Serializer.new(this.root, {
|
|
1040
|
-
includeSettings: ["stroke", "fill", "strokeColor", "fillColor", "strokeOpacity", "fillOpacity", "strokeWidth", "strokeDasharray", "field", "snapToData", "svgPath", "labelFontSize", "labelFontFamily", "labelFontWeight", "labelFontStyle", "labelFill", "showExtension"],
|
|
1040
|
+
includeSettings: ["stroke", "fill", "strokeColor", "fillColor", "strokeOpacity", "fillOpacity", "strokeWidth", "strokeDasharray", "field", "snapToData", "svgPath", "labelFontSize", "labelFontFamily", "labelFontWeight", "labelFontStyle", "labelFill", "showExtension", "fontSize", "fontFamily", "fontWeight", "fontStyle"],
|
|
1041
1041
|
//includeSettings: ["data"],
|
|
1042
1042
|
maxDepth: 4
|
|
1043
1043
|
});
|