@amcharts/amcharts5 5.2.6 → 5.2.7
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/percent/PercentSeries.d.ts +1 -1
- package/.internal/charts/percent/PercentSeries.js.map +1 -1
- package/.internal/charts/pie/PieSeries.d.ts.map +1 -1
- package/.internal/charts/pie/PieSeries.js +3 -2
- package/.internal/charts/pie/PieSeries.js.map +1 -1
- package/.internal/charts/stock/StockChart.d.ts +1 -0
- package/.internal/charts/stock/StockChart.d.ts.map +1 -1
- package/.internal/charts/stock/StockChart.js +34 -25
- package/.internal/charts/stock/StockChart.js.map +1 -1
- package/.internal/charts/stock/drawing/CalloutSeries.d.ts +6 -2
- package/.internal/charts/stock/drawing/CalloutSeries.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/CalloutSeries.js.map +1 -1
- package/.internal/charts/stock/drawing/SpriteResizer.d.ts +4 -2
- package/.internal/charts/stock/drawing/SpriteResizer.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/SpriteResizer.js.map +1 -1
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.d.ts +6 -6
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.js +1 -1
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/Aroon.d.ts +2 -2
- package/.internal/charts/stock/indicators/Aroon.js.map +1 -1
- package/.internal/charts/stock/indicators/AwesomeOscillator.d.ts +2 -2
- package/.internal/charts/stock/indicators/AwesomeOscillator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/AwesomeOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.d.ts +3 -3
- package/.internal/charts/stock/indicators/BollingerBands.js.map +1 -1
- package/.internal/charts/stock/indicators/CommodityChannelIndex.d.ts +4 -4
- package/.internal/charts/stock/indicators/CommodityChannelIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.d.ts +17 -12
- package/.internal/charts/stock/indicators/Indicator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.js.map +1 -1
- package/.internal/charts/stock/indicators/MACD.d.ts +6 -6
- package/.internal/charts/stock/indicators/MACD.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/MACD.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.d.ts +2 -2
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.d.ts +2 -2
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js.map +1 -1
- package/.internal/charts/stock/indicators/RelativeStrengthIndex.d.ts +4 -4
- package/.internal/charts/stock/indicators/RelativeStrengthIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/StochasticOscillator.d.ts +3 -3
- package/.internal/charts/stock/indicators/StochasticOscillator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/StochasticOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/Volume.d.ts +2 -2
- package/.internal/charts/stock/indicators/Volume.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/Volume.js.map +1 -1
- package/.internal/charts/stock/indicators/WilliamsR.d.ts +4 -4
- package/.internal/charts/stock/indicators/WilliamsR.js.map +1 -1
- package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/DateRangeSelector.js +7 -5
- package/.internal/charts/stock/toolbar/DateRangeSelector.js.map +1 -1
- package/.internal/charts/stock/toolbar/StockToolbarCSS.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/StockToolbarCSS.js +7 -2
- package/.internal/charts/stock/toolbar/StockToolbarCSS.js.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.d.ts +1 -1
- package/.internal/charts/xy/axes/DateAxis.js +1 -1
- package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
- package/.internal/charts/xy/series/LineSeries.d.ts +16 -2
- package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/LineSeries.js +29 -4
- package/.internal/charts/xy/series/LineSeries.js.map +1 -1
- package/.internal/core/Root.d.ts +16 -1
- package/.internal/core/Root.d.ts.map +1 -1
- package/.internal/core/Root.js +139 -6
- package/.internal/core/Root.js.map +1 -1
- package/.internal/core/render/Sprite.d.ts +11 -1
- package/.internal/core/render/Sprite.d.ts.map +1 -1
- package/.internal/core/render/Sprite.js +25 -15
- package/.internal/core/render/Sprite.js.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.d.ts +2 -0
- package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
- package/.internal/core/render/backend/CanvasRenderer.js +74 -15
- package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
- package/.internal/core/render/backend/Renderer.d.ts +1 -0
- package/.internal/core/render/backend/Renderer.d.ts.map +1 -1
- package/.internal/core/render/backend/Renderer.js.map +1 -1
- package/.internal/plugins/exporting/Exporting.js +2 -2
- package/.internal/plugins/exporting/Exporting.js.map +1 -1
- package/CHANGELOG.md +22 -2
- 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/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/json/package.json +1 -1
- package/examples/javascript/map-animating-along-lines/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-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/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-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/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/json/package.json +1 -1
- package/examples/typescript/map-animating-along-lines/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-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/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 +1 -1
|
@@ -3,13 +3,17 @@ import type { Container } from "../../../core/render/Container";
|
|
|
3
3
|
import { LabelSeries, ILabelSeriesSettings, ILabelSeriesPrivate, ILabelSeriesDataItem } from "./LabelSeries";
|
|
4
4
|
export interface ICalloutSeriesDataItem extends ILabelSeriesDataItem {
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Indicates whether callout will attach itself to the closest data item, as
|
|
7
|
+
* opposed to exact location of the click.
|
|
7
8
|
*/
|
|
8
9
|
snapToData?: boolean;
|
|
9
10
|
}
|
|
10
11
|
export interface ICalloutSeriesSettings extends ILabelSeriesSettings {
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* If set to `true`, callout will attach itself to the closest data item, as
|
|
14
|
+
* opposed to exact location of the click.
|
|
15
|
+
*
|
|
16
|
+
* @default true
|
|
13
17
|
*/
|
|
14
18
|
snapToData?: boolean;
|
|
15
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalloutSeries.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/CalloutSeries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAM7G,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;
|
|
1
|
+
{"version":3,"file":"CalloutSeries.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/CalloutSeries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAM7G,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAEnE;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CAErB;AAED,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAEnE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CAErB;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;CACjE;AAED,qBAAa,aAAc,SAAQ,WAAW;IAC7C,OAAc,SAAS,EAAE,MAAM,CAAmB;IAClD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAA4D;IAEpF,SAAS,EAAE,sBAAsB,CAAC;IAClC,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,iBAAiB,EAAE,sBAAsB,CAAC;IAEzD,SAAS,CAAC,IAAI,SAAa;IAE3B,SAAS,CAAC,SAAS;IAInB,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK;IAMpC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS;IA8B3C,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK;IAYrC,SAAS,CAAC,eAAe;CAGzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalloutSeries.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/CalloutSeries.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAmE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,KAAK,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"CalloutSeries.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/CalloutSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Label } from \"../../../core/render/Label\";\r\nimport type { Container } from \"../../../core/render/Container\";\r\n\r\nimport { LabelSeries, ILabelSeriesSettings, ILabelSeriesPrivate, ILabelSeriesDataItem } from \"./LabelSeries\";\r\nimport { PointedRectangle } from \"../../../core/render/PointedRectangle\";\r\nimport { Color, color } from \"../../../core/util/Color\";\r\n\r\nimport * as $ease from \"../../../core/util/Ease\";\r\n\r\nexport interface ICalloutSeriesDataItem extends ILabelSeriesDataItem {\r\n\r\n\t/**\r\n\t * Indicates whether callout will attach itself to the closest data item, as\r\n\t * opposed to exact location of the click.\r\n\t */\r\n\tsnapToData?: boolean;\r\n\r\n}\r\n\r\nexport interface ICalloutSeriesSettings extends ILabelSeriesSettings {\r\n\r\n\t/**\r\n\t * If set to `true`, callout will attach itself to the closest data item, as\r\n\t * opposed to exact location of the click.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tsnapToData?: boolean;\r\n\r\n}\r\n\r\nexport interface ICalloutSeriesPrivate extends ILabelSeriesPrivate {\r\n}\r\n\r\nexport class CalloutSeries extends LabelSeries {\r\n\tpublic static className: string = \"CalloutSeries\";\r\n\tpublic static classNames: Array<string> = LabelSeries.classNames.concat([CalloutSeries.className]);\r\n\r\n\tdeclare public _settings: ICalloutSeriesSettings;\r\n\tdeclare public _privateSettings: ICalloutSeriesPrivate;\r\n\tdeclare public _dataItemSettings: ICalloutSeriesDataItem;\r\n\r\n\tprotected _tag = \"callout\";\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\t}\r\n\r\n\tprotected _tweakBullet2(label: Label) {\r\n\t\tconst bgColor = this.get(\"fillColor\", this.get(\"fill\", color(0x000000)));\r\n\t\tlabel.set(\"background\", PointedRectangle.new(this._root, { themeTags: [\"callout\"], strokeOpacity: 0, fill: bgColor }));\r\n\t\tlabel.set(\"fill\", this.get(\"labelFill\", Color.alternative(bgColor, this._root.interfaceColors.get(\"alternativeText\"), this._root.interfaceColors.get(\"text\"))));\r\n\t}\r\n\r\n\tprotected _tweakBullet(container: Container) {\r\n\t\tsuper._tweakBullet(container);\r\n\r\n\t\tconst label = this.getPrivate(\"label\");\r\n\t\tif (label) {\r\n\t\t\tlabel.events.on(\"positionchanged\", () => {\r\n\t\t\t\tthis._updatePointer(label);\r\n\t\t\t})\r\n\r\n\t\t\tlabel.events.on(\"click\", () => {\r\n\t\t\t\tthis.spriteResizer.set(\"sprite\", label);\r\n\t\t\t})\r\n\r\n\t\t\tlabel.on(\"scale\", () => {\r\n\t\t\t\tthis._updatePointer(label);\r\n\t\t\t})\r\n\r\n\t\t\tlabel.on(\"rotation\", () => {\r\n\t\t\t\tthis._updatePointer(label);\r\n\t\t\t})\r\n\r\n\t\t\tlabel.setAll({ draggable: true });\r\n\r\n\t\t\tconst defaultState = label.states.lookup(\"default\")!;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tlabel.animate({ key: \"y\", to: -label.height() / 2 - 10, from: 0, duration: defaultState.get(\"stateAnimationDuration\", 500), easing: defaultState.get(\"stateAnimationEasing\", $ease.out($ease.cubic)) })\r\n\t\t\t}, 50)\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _updatePointer(label: Label) {\r\n\t\tconst background = label.get(\"background\");\r\n\t\tif (background instanceof PointedRectangle) {\r\n\t\t\tconst parent = label.parent;\r\n\t\t\tif (parent) {\r\n\t\t\t\tlet point = parent.toGlobal({ x: 0, y: 0 });\r\n\t\t\t\tpoint = background.toLocal(point);\r\n\t\t\t\tbackground.setAll({ pointerX: point.x, pointerY: point.y });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _hideAllBullets() {\r\n\r\n\t}\r\n}"]}
|
|
@@ -5,11 +5,13 @@ import { Container, IContainerPrivate, IContainerSettings, IContainerEvents } fr
|
|
|
5
5
|
import { Rectangle } from "../../../core/render/Rectangle";
|
|
6
6
|
export interface ISpriteResizerSettings extends IContainerSettings {
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Target [[Sprite]] element.
|
|
9
9
|
*/
|
|
10
10
|
sprite?: Sprite;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Rotation increment in degrees.
|
|
13
|
+
*
|
|
14
|
+
* @default 10
|
|
13
15
|
*/
|
|
14
16
|
rotationStep?: number;
|
|
15
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpriteResizer.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/SpriteResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGpH,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAK3D,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"file":"SpriteResizer.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/SpriteResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGpH,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAK3D,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAEjE;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CAEtB;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;CAE/D;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;CAE7D;AAED,qBAAa,aAAc,SAAQ,SAAS;IAE5B,SAAS,EAAE,sBAAsB,CAAC;IAClC,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,OAAO,EAAE,oBAAoB,CAAC;IAE7C,OAAc,SAAS,EAAE,MAAM,CAAmB;IAClD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAA0D;IAEjG,SAAgB,SAAS,EAAE,SAAS,CAAsH;IAC1J,SAAgB,KAAK,EAAE,SAAS,CAA4B;IAC5D,SAAgB,KAAK,EAAE,SAAS,CAA6B;IAC7D,SAAgB,KAAK,EAAE,SAAS,CAA2B;IAC3D,SAAgB,KAAK,EAAE,SAAS,CAA8B;IAE9D,SAAS,CAAC,GAAG,EAAE,MAAM,CAAK;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAK;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAK;IAE1B,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IAElC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAS;IAEpC,SAAS,CAAC,SAAS;IAsCnB,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM;IASnC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IASzC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM;IAcvD,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAoB/B,eAAe;IAkCtB,SAAS,CAAC,gBAAgB;CAoC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpriteResizer.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/SpriteResizer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Sprite } from \"../../../core/render/Sprite\";\r\nimport type { ISpritePointerEvent } from \"../../../core/render/Sprite\";\r\nimport type { IDisposer } from \"../../../core/util/Disposer\";\r\n\r\nimport { Container, IContainerPrivate, IContainerSettings, IContainerEvents } from \"../../../core/render/Container\";\r\nimport { p50, Percent } from \"../../../core/util/Percent\";\r\nimport { RoundedRectangle } from \"../../../core/render/RoundedRectangle\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\nimport { color } from \"../../../core/util/Color\";\r\n\r\nimport * as $math from \"../../../core/util/Math\";\r\n\r\nexport interface ISpriteResizerSettings extends IContainerSettings {\r\n\t/**\r\n\t * @todo review\r\n\t */\t\r\n\tsprite?: Sprite\r\n\t/**\r\n\t * @todo review\r\n\t */\t\r\n\trotationStep?: number;\r\n}\r\n\r\nexport interface ISpriteResizerPrivate extends IContainerPrivate {\r\n\r\n}\r\n\r\nexport interface ISpriteResizerEvents extends IContainerEvents {\r\n\r\n}\r\n\r\nexport class SpriteResizer extends Container {\r\n\r\n\tdeclare public _settings: ISpriteResizerSettings;\r\n\tdeclare public _privateSettings: ISpriteResizerPrivate;\r\n\tdeclare public _events: ISpriteResizerEvents;\r\n\r\n\tpublic static className: string = \"SpriteResizer\";\r\n\tpublic static classNames: Array<string> = Container.classNames.concat([SpriteResizer.className]);\r\n\r\n\tpublic readonly rectangle: Rectangle = this.children.push(Rectangle.new(this._root, { themeTags: [\"rectangle\"], fillOpacity: 0, fill: color(0xFFFFFF) }));\r\n\tpublic readonly gripL: Container = this._createGrip(\"left\");\r\n\tpublic readonly gripR: Container = this._createGrip(\"right\");\r\n\tpublic readonly gripT: Container = this._createGrip(\"top\");\r\n\tpublic readonly gripB: Container = this._createGrip(\"bottom\");\r\n\r\n\tprotected _is: number = 1;\r\n\tprotected _ix: number = 0;\r\n\tprotected _iw: number = 0;\r\n\r\n\tprotected _positionDP?: IDisposer;\r\n\r\n\tprotected _isHover: boolean = false;\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\t\tthis.addTag(\"resizer\");\r\n\t\tthis.set(\"visible\", false);\r\n\r\n\t\tthis.gripL.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._resize(e.target, -1);\r\n\t\t})\r\n\r\n\t\tthis.gripR.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._resize(e.target, 1);\r\n\t\t})\r\n\r\n\t\tthis.gripL.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\r\n\t\tthis.gripR.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\r\n\t\tthis.gripT.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._rotate(e, 90);\r\n\t\t})\r\n\r\n\t\tthis.gripB.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._rotate(e, -90);\r\n\t\t})\r\n\r\n\t\tthis.gripT.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\r\n\t\tthis.gripB.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\t}\r\n\r\n\tprotected _resizeStart(grip: Sprite) {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\t\t\tthis._is = sprite.get(\"scale\", 1);\r\n\t\t\tthis._ix = grip.x();\r\n\t\t\tthis._iw = this.width() / 2;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _resize(grip: Sprite, c: number) {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\r\n\t\t\tsprite.set(\"scale\", Math.max(0.01, this._is * (1 + c * (grip.x() - this._ix) / this._iw)));\r\n\t\t\tthis._updatePositions();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _rotate(e: ISpritePointerEvent, delta: number) {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\t\t\tconst parent = this.parent;\r\n\t\t\tif (parent) {\r\n\r\n\t\t\t\tconst rotationStep = this.get(\"rotationStep\", 10);\r\n\t\t\t\tlet angle = Math.round((($math.getAngle({ x: this.x(), y: this.y() }, parent.toLocal(e.point)) + delta) / rotationStep)) * rotationStep;\r\n\t\t\t\tsprite.set(\"rotation\", angle);\r\n\t\t\t\tthis._updatePositions();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _createGrip(themeTag: string) {\r\n\t\tconst container = this.children.push(Container.new(this._root, {\r\n\t\t\tthemeTags: [\"grip\", themeTag],\r\n\t\t\tsetStateOnChildren: true,\r\n\t\t\tdraggable: true\r\n\t\t}))\r\n\r\n\t\tcontainer.children.push(RoundedRectangle.new(this._root, {\r\n\t\t\tthemeTags: [\"outline\"],\r\n\t\t\tcenterX: p50,\r\n\t\t\tcenterY: p50\r\n\t\t}))\r\n\r\n\t\tcontainer.children.push(RoundedRectangle.new(this._root, {\r\n\t\t\tcenterX: p50,\r\n\t\t\tcenterY: p50\r\n\t\t}));\r\n\t\treturn container;\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"sprite\")) {\r\n\t\t\tconst sprite = this.get(\"sprite\");\r\n\t\t\tif (sprite) {\r\n\t\t\t\tthis.show(0);\r\n\r\n\t\t\t\tthis._updatePositions();\r\n\r\n\t\t\t\tconst parent = sprite.parent;\r\n\r\n\t\t\t\tif (parent) {\r\n\t\t\t\t\tparent.children.moveValue(this, 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._positionDP = sprite.events.on(\"positionchanged\", () => {\r\n\t\t\t\t\tthis._updatePositions();\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.hide(0);\r\n\r\n\t\t\t\tif (this._positionDP) {\r\n\t\t\t\t\tthis._positionDP.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"width\") || this.isDirty(\"height\") || this.isDirty(\"rotation\")) {\r\n\t\t\tthis._updatePositions();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _updatePositions() {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\t\t\tlet bounds = sprite.localBounds();\r\n\t\t\tlet scale = sprite.get(\"scale\", 1);\r\n\t\t\tlet d = 20\r\n\t\t\tlet w = (bounds.right - bounds.left) * scale + d;\r\n\t\t\tlet h = (bounds.bottom - bounds.top) * scale + d;\r\n\t\t\tlet a = sprite.get(\"rotation\", 0);\r\n\r\n\t\t\tconst rectangle = this.rectangle;\r\n\r\n\t\t\tlet cx = sprite.get(\"centerX\");\r\n\t\t\tlet cy = sprite.get(\"centerY\");\r\n\r\n\t\t\tlet cxr = 0;\r\n\t\t\tif (cx instanceof Percent) {\r\n\t\t\t\tcxr = cx.value;\r\n\t\t\t}\r\n\r\n\t\t\tlet cyr = 0;\r\n\t\t\tif (cy instanceof Percent) {\r\n\t\t\t\tcyr = cy.value;\r\n\t\t\t}\r\n\r\n\t\t\trectangle.setAll({ centerX: cx, centerY: cy, width: w, height: h });\r\n\t\t\tthis.setAll({ x: sprite.x() + d * (cxr - 0.5) * $math.cos(a) - d * (cyr - 0.5) * $math.sin(a), y: sprite.y() + d * (cyr - 0.5) * $math.cos(a) + d * (cxr - 0.5) * $math.sin(a), width: w, height: h, rotation: a });\r\n\r\n\t\t\tthis.gripT.setAll({ x: (0.5 - cxr) * w, y: -cyr * h });\r\n\t\t\tthis.gripB.setAll({ x: (0.5 - cxr) * w, y: (1 - cyr) * h });\r\n\t\t\tthis.gripL.setAll({ x: -cxr * w, y: (0.5 - cyr) * h });\r\n\t\t\tthis.gripR.setAll({ x: (1 - cxr) * w, y: (0.5 - cyr) * h });\r\n\r\n\t\t\tthis.rectangle.setAll({ width: w, height: h });\r\n\t\t}\r\n\t}\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"SpriteResizer.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/drawing/SpriteResizer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Sprite } from \"../../../core/render/Sprite\";\r\nimport type { ISpritePointerEvent } from \"../../../core/render/Sprite\";\r\nimport type { IDisposer } from \"../../../core/util/Disposer\";\r\n\r\nimport { Container, IContainerPrivate, IContainerSettings, IContainerEvents } from \"../../../core/render/Container\";\r\nimport { p50, Percent } from \"../../../core/util/Percent\";\r\nimport { RoundedRectangle } from \"../../../core/render/RoundedRectangle\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\nimport { color } from \"../../../core/util/Color\";\r\n\r\nimport * as $math from \"../../../core/util/Math\";\r\n\r\nexport interface ISpriteResizerSettings extends IContainerSettings {\r\n\r\n\t/**\r\n\t * Target [[Sprite]] element.\r\n\t */\r\n\tsprite?: Sprite\r\n\r\n\t/**\r\n\t * Rotation increment in degrees.\r\n\t * \r\n\t * @default 10\r\n\t */\r\n\trotationStep?: number;\r\n\r\n}\r\n\r\nexport interface ISpriteResizerPrivate extends IContainerPrivate {\r\n\r\n}\r\n\r\nexport interface ISpriteResizerEvents extends IContainerEvents {\r\n\r\n}\r\n\r\nexport class SpriteResizer extends Container {\r\n\r\n\tdeclare public _settings: ISpriteResizerSettings;\r\n\tdeclare public _privateSettings: ISpriteResizerPrivate;\r\n\tdeclare public _events: ISpriteResizerEvents;\r\n\r\n\tpublic static className: string = \"SpriteResizer\";\r\n\tpublic static classNames: Array<string> = Container.classNames.concat([SpriteResizer.className]);\r\n\r\n\tpublic readonly rectangle: Rectangle = this.children.push(Rectangle.new(this._root, { themeTags: [\"rectangle\"], fillOpacity: 0, fill: color(0xFFFFFF) }));\r\n\tpublic readonly gripL: Container = this._createGrip(\"left\");\r\n\tpublic readonly gripR: Container = this._createGrip(\"right\");\r\n\tpublic readonly gripT: Container = this._createGrip(\"top\");\r\n\tpublic readonly gripB: Container = this._createGrip(\"bottom\");\r\n\r\n\tprotected _is: number = 1;\r\n\tprotected _ix: number = 0;\r\n\tprotected _iw: number = 0;\r\n\r\n\tprotected _positionDP?: IDisposer;\r\n\r\n\tprotected _isHover: boolean = false;\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\t\tthis.addTag(\"resizer\");\r\n\t\tthis.set(\"visible\", false);\r\n\r\n\t\tthis.gripL.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._resize(e.target, -1);\r\n\t\t})\r\n\r\n\t\tthis.gripR.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._resize(e.target, 1);\r\n\t\t})\r\n\r\n\t\tthis.gripL.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\r\n\t\tthis.gripR.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\r\n\t\tthis.gripT.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._rotate(e, 90);\r\n\t\t})\r\n\r\n\t\tthis.gripB.events.on(\"dragged\", (e) => {\r\n\t\t\tthis._rotate(e, -90);\r\n\t\t})\r\n\r\n\t\tthis.gripT.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\r\n\t\tthis.gripB.events.on(\"dragstart\", (e) => {\r\n\t\t\tthis._resizeStart(e.target);\r\n\t\t})\r\n\t}\r\n\r\n\tprotected _resizeStart(grip: Sprite) {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\t\t\tthis._is = sprite.get(\"scale\", 1);\r\n\t\t\tthis._ix = grip.x();\r\n\t\t\tthis._iw = this.width() / 2;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _resize(grip: Sprite, c: number) {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\r\n\t\t\tsprite.set(\"scale\", Math.max(0.01, this._is * (1 + c * (grip.x() - this._ix) / this._iw)));\r\n\t\t\tthis._updatePositions();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _rotate(e: ISpritePointerEvent, delta: number) {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\t\t\tconst parent = this.parent;\r\n\t\t\tif (parent) {\r\n\r\n\t\t\t\tconst rotationStep = this.get(\"rotationStep\", 10);\r\n\t\t\t\tlet angle = Math.round((($math.getAngle({ x: this.x(), y: this.y() }, parent.toLocal(e.point)) + delta) / rotationStep)) * rotationStep;\r\n\t\t\t\tsprite.set(\"rotation\", angle);\r\n\t\t\t\tthis._updatePositions();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _createGrip(themeTag: string) {\r\n\t\tconst container = this.children.push(Container.new(this._root, {\r\n\t\t\tthemeTags: [\"grip\", themeTag],\r\n\t\t\tsetStateOnChildren: true,\r\n\t\t\tdraggable: true\r\n\t\t}))\r\n\r\n\t\tcontainer.children.push(RoundedRectangle.new(this._root, {\r\n\t\t\tthemeTags: [\"outline\"],\r\n\t\t\tcenterX: p50,\r\n\t\t\tcenterY: p50\r\n\t\t}))\r\n\r\n\t\tcontainer.children.push(RoundedRectangle.new(this._root, {\r\n\t\t\tcenterX: p50,\r\n\t\t\tcenterY: p50\r\n\t\t}));\r\n\t\treturn container;\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"sprite\")) {\r\n\t\t\tconst sprite = this.get(\"sprite\");\r\n\t\t\tif (sprite) {\r\n\t\t\t\tthis.show(0);\r\n\r\n\t\t\t\tthis._updatePositions();\r\n\r\n\t\t\t\tconst parent = sprite.parent;\r\n\r\n\t\t\t\tif (parent) {\r\n\t\t\t\t\tparent.children.moveValue(this, 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._positionDP = sprite.events.on(\"positionchanged\", () => {\r\n\t\t\t\t\tthis._updatePositions();\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.hide(0);\r\n\r\n\t\t\t\tif (this._positionDP) {\r\n\t\t\t\t\tthis._positionDP.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"width\") || this.isDirty(\"height\") || this.isDirty(\"rotation\")) {\r\n\t\t\tthis._updatePositions();\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _updatePositions() {\r\n\t\tconst sprite = this.get(\"sprite\");\r\n\t\tif (sprite) {\r\n\t\t\tlet bounds = sprite.localBounds();\r\n\t\t\tlet scale = sprite.get(\"scale\", 1);\r\n\t\t\tlet d = 20\r\n\t\t\tlet w = (bounds.right - bounds.left) * scale + d;\r\n\t\t\tlet h = (bounds.bottom - bounds.top) * scale + d;\r\n\t\t\tlet a = sprite.get(\"rotation\", 0);\r\n\r\n\t\t\tconst rectangle = this.rectangle;\r\n\r\n\t\t\tlet cx = sprite.get(\"centerX\");\r\n\t\t\tlet cy = sprite.get(\"centerY\");\r\n\r\n\t\t\tlet cxr = 0;\r\n\t\t\tif (cx instanceof Percent) {\r\n\t\t\t\tcxr = cx.value;\r\n\t\t\t}\r\n\r\n\t\t\tlet cyr = 0;\r\n\t\t\tif (cy instanceof Percent) {\r\n\t\t\t\tcyr = cy.value;\r\n\t\t\t}\r\n\r\n\t\t\trectangle.setAll({ centerX: cx, centerY: cy, width: w, height: h });\r\n\t\t\tthis.setAll({ x: sprite.x() + d * (cxr - 0.5) * $math.cos(a) - d * (cyr - 0.5) * $math.sin(a), y: sprite.y() + d * (cyr - 0.5) * $math.cos(a) + d * (cxr - 0.5) * $math.sin(a), width: w, height: h, rotation: a });\r\n\r\n\t\t\tthis.gripT.setAll({ x: (0.5 - cxr) * w, y: -cyr * h });\r\n\t\t\tthis.gripB.setAll({ x: (0.5 - cxr) * w, y: (1 - cyr) * h });\r\n\t\t\tthis.gripL.setAll({ x: -cxr * w, y: (0.5 - cyr) * h });\r\n\t\t\tthis.gripR.setAll({ x: (1 - cxr) * w, y: (0.5 - cyr) * h });\r\n\r\n\t\t\tthis.rectangle.setAll({ width: w, height: h });\r\n\t\t}\r\n\t}\r\n}\r\n"]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import type { IIndicatorEditableSetting } from "./Indicator";
|
|
2
|
-
import { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from "./ChartIndicator";
|
|
3
|
-
import { LineSeries } from "../../xy/series/LineSeries";
|
|
4
|
-
import { Color } from "../../../core/util/Color";
|
|
5
2
|
import type { ILineSeriesAxisRange } from "../../xy/series/LineSeries";
|
|
6
3
|
import type { DataItem } from "../../../core/render/Component";
|
|
7
4
|
import type { IValueAxisDataItem } from "../../xy/axes/ValueAxis";
|
|
5
|
+
import { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from "./ChartIndicator";
|
|
6
|
+
import { LineSeries } from "../../xy/series/LineSeries";
|
|
7
|
+
import { Color } from "../../../core/util/Color";
|
|
8
8
|
export interface IAccumulativeSwingIndexSettings extends IChartIndicatorSettings {
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* A "limit move" value.
|
|
11
11
|
*/
|
|
12
12
|
limitMoveValue?: number;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Positive color.
|
|
15
15
|
*/
|
|
16
16
|
positiveColor?: Color;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* Negative color.
|
|
19
19
|
*/
|
|
20
20
|
negativeColor?: Color;
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccumulativeSwingIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AccumulativeSwingIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AccumulativeSwingIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AccumulativeSwingIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAIjD,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAE/E;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;CAEtB;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,UAAU,CAAC;IAE3B,iBAAiB,EAAE,yBAAyB,EAAE,CAYlD;IAEH,SAAS,CAAC,SAAS,EAAE,MAAM,CAA4B;IAEvD,SAAS,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC5C,SAAS,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAE/C,aAAa,IAAI,UAAU;IAqB3B,gBAAgB;IA6BvB;;OAEG;IACI,WAAW;CAkElB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import * as $type from "../../../core/util/Type";
|
|
3
2
|
import { ChartIndicator } from "./ChartIndicator";
|
|
4
3
|
import { LineSeries } from "../../xy/series/LineSeries";
|
|
5
4
|
import { Color } from "../../../core/util/Color";
|
|
5
|
+
import * as $type from "../../../core/util/Type";
|
|
6
6
|
/**
|
|
7
7
|
* An implementation of a [[StockChart]] indicator.
|
|
8
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccumulativeSwingIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AccumulativeSwingIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\nimport { Color } from \"../../../core/util/Color\";\r\nimport type { ILineSeriesAxisRange } from \"../../xy/series/LineSeries\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { IValueAxisDataItem } from \"../../xy/axes/ValueAxis\";\r\n\r\nexport interface IAccumulativeSwingIndexSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\t\r\n\tlimitMoveValue?: number;\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\t\r\n\tpositiveColor?: Color;\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\t\r\n\tnegativeColor?: Color;\r\n\r\n}\r\n\r\nexport interface IAccumulativeSwingIndexPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IAccumulativeSwingIndexEvents 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 AccumulativeSwingIndex extends ChartIndicator {\r\n\tpublic static className: string = \"AccumulativeSwingIndex\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([AccumulativeSwingIndex.className]);\r\n\r\n\tdeclare public _settings: IAccumulativeSwingIndexSettings;\r\n\tdeclare public _privateSettings: IAccumulativeSwingIndexPrivate;\r\n\tdeclare public _events: IAccumulativeSwingIndexEvents;\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: \"positiveColor\",\r\n\t\tname: this.root.language.translateAny(\"Positive color\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"negativeColor\",\r\n\t\tname: this.root.language.translateAny(\"Negative color\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"limitMoveValue\",\r\n\t\tname: this.root.language.translateAny(\"Limit move value\"),\r\n\t\ttype: \"number\"\r\n\t}];\r\n\r\n\tprotected _themeTag: string = \"accumulativeswingindex\";\r\n\r\n\tprotected _axisRange?: ILineSeriesAxisRange;\r\n\tprotected _axisRangeDI?: DataItem<IValueAxisDataItem>;\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\tconst series = this.panel.series.push(LineSeries.new(this._root, {\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: \"asi\"\r\n\t\t}))\r\n\r\n\t\tconst dataItem = this.yAxis.makeDataItem({})\r\n\t\tthis._axisRangeDI = dataItem;\r\n\t\tdataItem.set(\"value\", 0);\r\n\t\tdataItem.set(\"endValue\", -100);\r\n\t\tthis._axisRange = series.createAxisRange(dataItem);\r\n\r\n\t\tthis.yAxis.onPrivate(\"min\", (min) => {\r\n\t\t\tdataItem.set(\"endValue\", min);\r\n\t\t})\r\n\r\n\t\treturn series;\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"limitMoveValue\")) {\r\n\t\t\tthis.setCustomData(\"limitMoveValue\", this.get(\"limitMoveValue\"))\r\n\t\t\tthis._dataDirty = true;\r\n\t\t}\r\n\r\n\t\tconst series = this.series;\r\n\t\tif (this.isDirty(\"positiveColor\")) {\r\n\t\t\tlet color = this.get(\"positiveColor\");\r\n\t\t\tseries.setAll({ fill: color, stroke: color });\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"negativeColor\")) {\r\n\t\t\tlet color = this.get(\"negativeColor\");\r\n\t\t\tlet axisRange = this._axisRange;\r\n\t\t\tif (axisRange) {\r\n\t\t\t\tconst fills = axisRange.fills;\r\n\t\t\t\tif (fills) {\r\n\t\t\t\t\tfills.template.set(\"fill\", color);\r\n\t\t\t\t}\r\n\t\t\t\tconst strokes = axisRange.strokes;\r\n\t\t\t\tif (strokes) {\r\n\t\t\t\t\tstrokes.template.set(\"stroke\", color);\r\n\t\t\t\t}\r\n\t\t\t}\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\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tthis.setRaw(\"field\", \"close\");\r\n\t\t\tlet data: Array<any> = this._getDataArray(dataItems);\r\n\r\n\t\t\tlet t = this.get(\"limitMoveValue\", 0.5);\r\n\r\n\t\t\tlet asi = 0;\r\n\r\n\t\t\tlet negativeColor = this.get(\"negativeColor\", Color.fromHex(0xff0000)).toCSSHex();\r\n\t\t\tlet positiveColor = this.get(\"positiveColor\", Color.fromHex(0x00ff00)).toCSSHex();\r\n\r\n\t\t\tif (dataItems.length > 2) {\r\n\r\n\t\t\t\tdata[0].asi = 0;\r\n\t\t\t\tdata[0].swingColor = positiveColor;\r\n\r\n\t\t\t\tfor (let i = 1, len = dataItems.length; i < len; i++) {\r\n\t\t\t\t\tconst dataItem = dataItems[i];\r\n\t\t\t\t\tconst yDataItem = dataItems[i - 1];\r\n\r\n\t\t\t\t\tlet c = dataItem.get(\"valueY\");\r\n\t\t\t\t\tif ($type.isNumber(c)) {\r\n\t\t\t\t\t\tlet cy = yDataItem.get(\"valueY\", c);\r\n\r\n\t\t\t\t\t\tlet h = dataItem.get(\"highValueY\", c);\r\n\t\t\t\t\t\tlet l = dataItem.get(\"lowValueY\", c);\r\n\t\t\t\t\t\tlet o = dataItem.get(\"openValueY\", c);\r\n\t\t\t\t\t\tlet oy = yDataItem.get(\"openValueY\", c);\r\n\r\n\t\t\t\t\t\tlet hl = h - l;\r\n\t\t\t\t\t\tlet hc = Math.abs(h - cy);\r\n\t\t\t\t\t\tlet lc = Math.abs(l - cy);\r\n\t\t\t\t\t\tlet tr = Math.max(hc, lc, hl);\r\n\r\n\t\t\t\t\t\tlet er = 0;\r\n\t\t\t\t\t\tif (cy > h) {\r\n\t\t\t\t\t\t\ter = hc;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (cy < l) {\r\n\t\t\t\t\t\t\ter = lc;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet k = Math.max(hc, lc);\r\n\r\n\t\t\t\t\t\tlet sh = Math.abs(cy - oy);\r\n\r\n\t\t\t\t\t\tlet r = tr - er / 2 + sh / 4;\r\n\r\n\t\t\t\t\t\tasi += 50 * (c - cy + (c - o) / 2 + (cy - oy) / 4) / r * k / t;\r\n\r\n\t\t\t\t\t\tlet color = positiveColor;\r\n\t\t\t\t\t\tif (asi < 0) {\r\n\t\t\t\t\t\t\tcolor = negativeColor;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdata[i].asi = asi;\r\n\t\t\t\t\t\tdata[i].swingColor = color;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"AccumulativeSwingIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AccumulativeSwingIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { ILineSeriesAxisRange } from \"../../xy/series/LineSeries\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { IValueAxisDataItem } from \"../../xy/axes/ValueAxis\";\r\n\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\nimport { Color } from \"../../../core/util/Color\";\r\n\r\nimport * as $type from \"../../../core/util/Type\";\r\n\r\nexport interface IAccumulativeSwingIndexSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * A \"limit move\" value.\r\n\t */\r\n\tlimitMoveValue?: number;\r\n\r\n\t/**\r\n\t * Positive color.\r\n\t */\r\n\tpositiveColor?: Color;\r\n\r\n\t/**\r\n\t * Negative color.\r\n\t */\r\n\tnegativeColor?: Color;\r\n\r\n}\r\n\r\nexport interface IAccumulativeSwingIndexPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IAccumulativeSwingIndexEvents 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 AccumulativeSwingIndex extends ChartIndicator {\r\n\tpublic static className: string = \"AccumulativeSwingIndex\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([AccumulativeSwingIndex.className]);\r\n\r\n\tdeclare public _settings: IAccumulativeSwingIndexSettings;\r\n\tdeclare public _privateSettings: IAccumulativeSwingIndexPrivate;\r\n\tdeclare public _events: IAccumulativeSwingIndexEvents;\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: \"positiveColor\",\r\n\t\tname: this.root.language.translateAny(\"Positive color\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"negativeColor\",\r\n\t\tname: this.root.language.translateAny(\"Negative color\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"limitMoveValue\",\r\n\t\tname: this.root.language.translateAny(\"Limit move value\"),\r\n\t\ttype: \"number\"\r\n\t}];\r\n\r\n\tprotected _themeTag: string = \"accumulativeswingindex\";\r\n\r\n\tprotected _axisRange?: ILineSeriesAxisRange;\r\n\tprotected _axisRangeDI?: DataItem<IValueAxisDataItem>;\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\tconst series = this.panel.series.push(LineSeries.new(this._root, {\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: \"asi\"\r\n\t\t}))\r\n\r\n\t\tconst dataItem = this.yAxis.makeDataItem({})\r\n\t\tthis._axisRangeDI = dataItem;\r\n\t\tdataItem.set(\"value\", 0);\r\n\t\tdataItem.set(\"endValue\", -100);\r\n\t\tthis._axisRange = series.createAxisRange(dataItem);\r\n\r\n\t\tthis.yAxis.onPrivate(\"min\", (min) => {\r\n\t\t\tdataItem.set(\"endValue\", min);\r\n\t\t})\r\n\r\n\t\treturn series;\r\n\t}\r\n\r\n\tpublic _prepareChildren() {\r\n\t\tif (this.isDirty(\"limitMoveValue\")) {\r\n\t\t\tthis.setCustomData(\"limitMoveValue\", this.get(\"limitMoveValue\"))\r\n\t\t\tthis._dataDirty = true;\r\n\t\t}\r\n\r\n\t\tconst series = this.series;\r\n\t\tif (this.isDirty(\"positiveColor\")) {\r\n\t\t\tlet color = this.get(\"positiveColor\");\r\n\t\t\tseries.setAll({ fill: color, stroke: color });\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"negativeColor\")) {\r\n\t\t\tlet color = this.get(\"negativeColor\");\r\n\t\t\tlet axisRange = this._axisRange;\r\n\t\t\tif (axisRange) {\r\n\t\t\t\tconst fills = axisRange.fills;\r\n\t\t\t\tif (fills) {\r\n\t\t\t\t\tfills.template.set(\"fill\", color);\r\n\t\t\t\t}\r\n\t\t\t\tconst strokes = axisRange.strokes;\r\n\t\t\t\tif (strokes) {\r\n\t\t\t\t\tstrokes.template.set(\"stroke\", color);\r\n\t\t\t\t}\r\n\t\t\t}\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\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tthis.setRaw(\"field\", \"close\");\r\n\t\t\tlet data: Array<any> = this._getDataArray(dataItems);\r\n\r\n\t\t\tlet t = this.get(\"limitMoveValue\", 0.5);\r\n\r\n\t\t\tlet asi = 0;\r\n\r\n\t\t\tlet negativeColor = this.get(\"negativeColor\", Color.fromHex(0xff0000)).toCSSHex();\r\n\t\t\tlet positiveColor = this.get(\"positiveColor\", Color.fromHex(0x00ff00)).toCSSHex();\r\n\r\n\t\t\tif (dataItems.length > 2) {\r\n\r\n\t\t\t\tdata[0].asi = 0;\r\n\t\t\t\tdata[0].swingColor = positiveColor;\r\n\r\n\t\t\t\tfor (let i = 1, len = dataItems.length; i < len; i++) {\r\n\t\t\t\t\tconst dataItem = dataItems[i];\r\n\t\t\t\t\tconst yDataItem = dataItems[i - 1];\r\n\r\n\t\t\t\t\tlet c = dataItem.get(\"valueY\");\r\n\t\t\t\t\tif ($type.isNumber(c)) {\r\n\t\t\t\t\t\tlet cy = yDataItem.get(\"valueY\", c);\r\n\r\n\t\t\t\t\t\tlet h = dataItem.get(\"highValueY\", c);\r\n\t\t\t\t\t\tlet l = dataItem.get(\"lowValueY\", c);\r\n\t\t\t\t\t\tlet o = dataItem.get(\"openValueY\", c);\r\n\t\t\t\t\t\tlet oy = yDataItem.get(\"openValueY\", c);\r\n\r\n\t\t\t\t\t\tlet hl = h - l;\r\n\t\t\t\t\t\tlet hc = Math.abs(h - cy);\r\n\t\t\t\t\t\tlet lc = Math.abs(l - cy);\r\n\t\t\t\t\t\tlet tr = Math.max(hc, lc, hl);\r\n\r\n\t\t\t\t\t\tlet er = 0;\r\n\t\t\t\t\t\tif (cy > h) {\r\n\t\t\t\t\t\t\ter = hc;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (cy < l) {\r\n\t\t\t\t\t\t\ter = lc;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet k = Math.max(hc, lc);\r\n\r\n\t\t\t\t\t\tlet sh = Math.abs(cy - oy);\r\n\r\n\t\t\t\t\t\tlet r = tr - er / 2 + sh / 4;\r\n\r\n\t\t\t\t\t\tasi += 50 * (c - cy + (c - o) / 2 + (cy - oy) / 4) / r * k / t;\r\n\r\n\t\t\t\t\t\tlet color = positiveColor;\r\n\t\t\t\t\t\tif (asi < 0) {\r\n\t\t\t\t\t\t\tcolor = negativeColor;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdata[i].asi = asi;\r\n\t\t\t\t\t\tdata[i].swingColor = color;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -4,11 +4,11 @@ import { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChart
|
|
|
4
4
|
import { LineSeries } from "../../xy/series/LineSeries";
|
|
5
5
|
export interface IAroonSettings extends IChartIndicatorSettings {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Color for ups.
|
|
8
8
|
*/
|
|
9
9
|
upColor?: Color;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Color for downs.
|
|
12
12
|
*/
|
|
13
13
|
downColor?: Color;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Aroon.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/Aroon.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport { Color } from \"../../../core/util/Color\";\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IAroonSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t *
|
|
1
|
+
{"version":3,"file":"Aroon.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/Aroon.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport { Color } from \"../../../core/util/Color\";\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries } from \"../../xy/series/LineSeries\";\r\n\r\nimport * as $array from \"../../../core/util/Array\";\r\n\r\nexport interface IAroonSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * Color for ups.\r\n\t */\r\n\tupColor?: Color;\r\n\r\n\t/**\r\n\t * Color for downs.\r\n\t */\r\n\tdownColor?: Color;\r\n\r\n}\r\n\r\nexport interface IAroonPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IAroonEvents 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 Aroon extends ChartIndicator {\r\n\tpublic static className: string = \"Aroon\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([Aroon.className]);\r\n\r\n\tdeclare public _settings: IAroonSettings;\r\n\tdeclare public _privateSettings: IAroonPrivate;\r\n\tdeclare public _events: IAroonEvents;\r\n\r\n\t/**\r\n\t * Indicator series.\r\n\t */\r\n\tdeclare public series: LineSeries;\r\n\r\n\t/**\r\n\t * Indicator series for downs.\r\n\t */\r\n\tdeclare public downSeries: 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: \"upColor\",\r\n\t\tname: this.root.language.translateAny(\"Aroon up\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"downColor\",\r\n\t\tname: this.root.language.translateAny(\"Aroon down\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _themeTag: string = \"aroon\";\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\treturn this.panel.series.push(LineSeries.new(this._root, {\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: \"up\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\t\tthis.downSeries = this.panel.series.push(LineSeries.new(this._root, {\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: \"down\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\r\n\t\tthis.yAxis.setAll({ min: -1, max: 101, strictMinMax: true });\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tif (this.isDirty(\"upColor\")) {\r\n\t\t\tlet color = this.get(\"upColor\", Color.fromHex(0x00ff00));\r\n\t\t\tthis._updateSeriesColor(this.series, color);\r\n\t\t\tthis.setCustomData(\"upColor\", color);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"downColor\")) {\r\n\t\t\tlet color = this.get(\"downColor\", Color.fromHex(0xff0000));\r\n\t\t\tthis._updateSeriesColor(this.downSeries, color);\r\n\t\t\tthis.setCustomData(\"downColor\", color);\r\n\t\t}\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\r\n\t\t\tthis.set(\"field\", \"close\");\r\n\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tlet data = this._getDataArray(dataItems);\r\n\t\t\tlet period = this.get(\"period\", 14);\r\n\r\n\t\t\tlet i = 0;\r\n\t\t\t$array.each(data, (dataItem) => {\r\n\t\t\t\tlet b = Math.max(0, i - period);\r\n\t\t\t\tlet h = -Infinity;\r\n\t\t\t\tlet l = Infinity;\r\n\r\n\t\t\t\tlet li = 0;\r\n\t\t\t\tlet hi = 0;\r\n\r\n\t\t\t\tfor (let j = b; j <= i; j++) {\r\n\t\t\t\t\tlet vh = dataItems[j].get(\"highValueY\", 0);\r\n\t\t\t\t\tif (vh >= h) {\r\n\t\t\t\t\t\th = vh;\r\n\t\t\t\t\t\thi = j;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet vl = dataItems[j].get(\"lowValueY\", 0);\r\n\t\t\t\t\tif (vl <= l) {\r\n\t\t\t\t\t\tl = vl;\r\n\t\t\t\t\t\tli = j;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataItem.up = (period - (i - hi)) / period * 100;\r\n\t\t\t\tdataItem.down = (period - (i - li)) / period * 100;\r\n\r\n\t\t\t\ti++;\r\n\t\t\t})\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t\tthis.downSeries.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -4,11 +4,11 @@ import { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChart
|
|
|
4
4
|
import { ColumnSeries } from "../../xy/series/ColumnSeries";
|
|
5
5
|
export interface IAwesomeOscillatorSettings extends IChartIndicatorSettings {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Increasing color.
|
|
8
8
|
*/
|
|
9
9
|
increasingColor?: Color;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Decreasing color.
|
|
12
12
|
*/
|
|
13
13
|
decreasingColor?: Color;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwesomeOscillator.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AwesomeOscillator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AwesomeOscillator.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AwesomeOscillator.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,0BAA2B,SAAQ,uBAAuB;IAE1E;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;CAExB;AAED,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;CACxE;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB;CACtE;AAGD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACpD,OAAc,SAAS,EAAE,MAAM,CAAuB;IACtD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAmE;IAE3F,SAAS,EAAE,0BAA0B,CAAC;IACtC,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,OAAO,EAAE,wBAAwB,CAAC;IAEjD;;OAEG;IACY,MAAM,EAAE,YAAY,CAAC;IAE7B,iBAAiB,EAAE,yBAAyB,EAAE,CAQlD;IAEH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAuB;IAE3C,aAAa,IAAI,YAAY;IAW7B,eAAe;IAatB;;OAEG;IACI,WAAW;CAqClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwesomeOscillator.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AwesomeOscillator.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"AwesomeOscillator.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/AwesomeOscillator.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 IAwesomeOscillatorSettings 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}\r\n\r\nexport interface IAwesomeOscillatorPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface IAwesomeOscillatorEvents 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 AwesomeOscillator extends ChartIndicator {\r\n\tpublic static className: string = \"AwesomeOscillator\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([AwesomeOscillator.className]);\r\n\r\n\tdeclare public _settings: IAwesomeOscillatorSettings;\r\n\tdeclare public _privateSettings: IAwesomeOscillatorPrivate;\r\n\tdeclare public _events: IAwesomeOscillatorEvents;\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\tkey: \"increasingColor\",\r\n\t\tname: this.root.language.translateAny(\"Increasing\"),\r\n\t\ttype: \"color\"\r\n\t}, {\r\n\t\tkey: \"decreasingColor\",\r\n\t\tname: this.root.language.translateAny(\"Decreasing\"),\r\n\t\ttype: \"color\"\r\n\t}];\r\n\r\n\tprotected _themeTag: string = \"awesomeoscillator\";\r\n\r\n\tpublic _createSeries(): ColumnSeries {\r\n\t\treturn this.panel.series.push(ColumnSeries.new(this._root, {\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: \"ao\",\r\n\t\t\tstroke: this.get(\"seriesColor\"),\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\tthis._dataDirty = true;\r\n\t\t}\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\tthis.set(\"field\", \"hl/2\");\r\n\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 = 5;\r\n\t\t\tthis._sma(data, 5, \"value_y\", \"sma5\");\r\n\r\n\t\t\tperiod = 34;\r\n\t\t\tthis._sma(data, 34, \"value_y\", \"sma34\");\r\n\r\n\t\t\tlet po = -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 o = dataItem.sma5 - dataItem.sma34\r\n\t\t\t\t\tlet color = increasingColor;\r\n\r\n\t\t\t\t\tif (o < po) {\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.ao = o;\r\n\t\t\t\t\tdataItem.oscillatorColor = color;\r\n\t\t\t\t\tpo = o;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
@@ -4,15 +4,15 @@ import { MovingAverage, IMovingAverageSettings, IMovingAveragePrivate, IMovingAv
|
|
|
4
4
|
import { LineSeries } from "../../xy/series/LineSeries";
|
|
5
5
|
export interface IBollingerBandsSettings extends IMovingAverageSettings {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* A value of standard deviations.
|
|
8
8
|
*/
|
|
9
9
|
standardDeviations?: number;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* A color for upper section.
|
|
12
12
|
*/
|
|
13
13
|
upperColor?: Color;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* A color for lower section.
|
|
16
16
|
*/
|
|
17
17
|
lowerColor?: Color;
|
|
18
18
|
}
|
|
@@ -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 * @todo review\r\n\t */\r\n\tstandardDeviations?: number;\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\r\n\tupperColor?: Color;\r\n\r\n\t/**\r\n\t * @todo review\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: \"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: [\"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: [\"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 _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\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.data.setAll(smaData);\r\n\t\t\tthis.lowerBandSeries.data.setAll(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}"]}
|
|
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: \"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: [\"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: [\"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 _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\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.data.setAll(smaData);\r\n\t\t\tthis.lowerBandSeries.data.setAll(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}"]}
|
|
@@ -6,19 +6,19 @@ import { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChart
|
|
|
6
6
|
import { LineSeries, ILineSeriesAxisRange } from "../../xy/series/LineSeries";
|
|
7
7
|
export interface ICommodityChannelIndexSettings extends IChartIndicatorSettings {
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* A value for "overbought" threshold.
|
|
10
10
|
*/
|
|
11
11
|
overBought?: number;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* A value for "oversold" threshold.
|
|
14
14
|
*/
|
|
15
15
|
overSold?: number;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* A color for "overbought" section.
|
|
18
18
|
*/
|
|
19
19
|
overBoughtColor?: Color;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* A color for "oversold" section.
|
|
22
22
|
*/
|
|
23
23
|
overSoldColor?: Color;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommodityChannelIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/CommodityChannelIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { IValueAxisDataItem } from \"../../xy/axes/ValueAxis\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries, ILineSeriesAxisRange } from \"../../xy/series/LineSeries\";\r\n\r\nexport interface ICommodityChannelIndexSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\r\n\toverBought?: number;\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\r\n\toverSold?: number;\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\r\n\toverBoughtColor?: Color;\r\n\r\n\t/**\r\n\t * @todo review\r\n\t */\r\n\toverSoldColor?: Color;\r\n\r\n}\r\n\r\nexport interface ICommodityChannelIndexPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface ICommodityChannelIndexEvents 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 CommodityChannelIndex extends ChartIndicator {\r\n\tpublic static className: string = \"CommodityChannelIndex\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([CommodityChannelIndex.className]);\r\n\r\n\tdeclare public _settings: ICommodityChannelIndexSettings;\r\n\tdeclare public _privateSettings: ICommodityChannelIndexPrivate;\r\n\tdeclare public _events: ICommodityChannelIndexEvents;\r\n\r\n\tpublic overBought!: DataItem<IValueAxisDataItem>;\r\n\tpublic overSold!: DataItem<IValueAxisDataItem>;\r\n\r\n\tpublic overSoldRange!: ILineSeriesAxisRange;\r\n\tpublic overBoughtRange!: ILineSeriesAxisRange;\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\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: \"seriesColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Color\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"overBought\",\r\n\t\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"overBoughtColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"overSold\",\r\n\t\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"overSoldColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}];\r\n\r\n\tprotected _themeTag: string = \"commoditychannelindex\";\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\t//this.yAxis.setAll({ min: -100, max: 0, strictMinMax: true });\r\n\r\n\t\t// overbought range\r\n\t\tconst overBought = this.yAxis.makeDataItem({});\r\n\t\tthis.overBought = overBought;\r\n\r\n\t\toverBought.set(\"endValue\", 1000);\r\n\t\tconst overBoughtRange = this.series.createAxisRange(overBought);\r\n\t\tthis.overBoughtRange = overBoughtRange;\r\n\t\tconst overBoughtFills = overBoughtRange.fills;\r\n\t\tif (overBoughtFills) {\r\n\t\t\toverBoughtFills.template.set(\"themeTags\", [\"overbought\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overBoughtGrid = overBought.get(\"grid\");\r\n\t\tif (overBoughtGrid) {\r\n\t\t\toverBoughtGrid.setAll({ themeTags: [\"overbought\"], visible: true });\r\n\t\t\toverBoughtGrid._applyThemes();\r\n\t\t}\r\n\r\n\t\tconst overBoughtLabel = overBought.get(\"label\");\r\n\t\tif (overBoughtLabel) {\r\n\t\t\toverBoughtLabel.setAll({ themeTags: [\"overbought\"], visible: true, location: 0 });\r\n\t\t\toverBoughtLabel._applyThemes();\r\n\t\t}\r\n\r\n\t\tconst overSold = this.yAxis.makeDataItem({});\r\n\t\tthis.overSold = overSold;\r\n\r\n\t\toverSold.set(\"endValue\", -1000);\r\n\t\tconst overSoldRange = this.series.createAxisRange(overSold);\r\n\t\tthis.overSoldRange = overSoldRange;\r\n\t\tconst overSoldFills = overSoldRange.fills;\r\n\t\tif (overSoldFills) {\r\n\t\t\toverSoldFills.template.set(\"themeTags\", [\"oversold\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overSoldGrid = overSold.get(\"grid\");\r\n\t\tif (overSoldGrid) {\r\n\t\t\toverSoldGrid.setAll({ themeTags: [\"oversold\"], visible: true });\r\n\t\t\toverSoldGrid._applyThemes();\r\n\t\t}\r\n\r\n\t\tconst overSoldLabel = overSold.get(\"label\");\r\n\t\tif (overSoldLabel) {\r\n\t\t\toverSoldLabel.setAll({ themeTags: [\"oversold\"], visible: true, location: 0 });\r\n\t\t\toverSoldLabel._applyThemes();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\treturn this.panel.series.push(LineSeries.new(this._root, {\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: \"cci\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tconst overSoldValue = this.get(\"overSold\", 100);\r\n\t\tconst overBoughtValue = this.get(\"overBought\", -100);\r\n\r\n\t\tif (this.isDirty(\"overBought\")) {\r\n\t\t\tthis.overBought.set(\"value\", overBoughtValue);\r\n\r\n\t\t\tconst label = this.overBought.get(\"label\");\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"text\", this.getNumberFormatter().format(overBoughtValue));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overSold\")) {\r\n\t\t\tthis.overSold.set(\"value\", overSoldValue);\r\n\r\n\t\t\tconst label = this.overSold.get(\"label\");\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"text\", this.getNumberFormatter().format(overSoldValue));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overSoldColor\")) {\r\n\t\t\tconst color = this.get(\"overSoldColor\");\r\n\t\t\tconst label = this.overSold.get(\"label\");\r\n\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"fill\", color);\r\n\t\t\t}\r\n\r\n\t\t\tthis.overSold.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overSoldRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overSoldRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overBoughtColor\")) {\r\n\t\t\tconst color = this.get(\"overBoughtColor\");\r\n\t\t\tconst label = this.overBought.get(\"label\");\r\n\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"fill\", color);\r\n\t\t\t}\r\n\r\n\t\t\tthis.overBought.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overBoughtRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overBoughtRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\r\n\t\tlet min = Math.min(overBoughtValue, overSoldValue)\r\n\t\tlet max = Math.max(overBoughtValue, overSoldValue)\r\n\r\n\t\tthis.series.get(\"yAxis\").set(\"baseValue\", min + (max - min) / 2);\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\tthis.set(\"field\", \"close\");\r\n\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tlet data = this._getTypicalPrice(dataItems);\r\n\t\t\tlet period = this.get(\"period\", 20);\r\n\r\n\t\t\tthis._sma(data, period, \"value_y\", \"sma\");\r\n\r\n\t\t\tfor (let i = 0, len = data.length; i < len; i++) {\r\n\t\t\t\tconst dataItem = data[i];\r\n\t\t\t\tconst value = dataItem.value_y;\r\n\t\t\t\tlet ma = dataItem.sma;\r\n\r\n\t\t\t\tlet meanDeviation = 0;\r\n\t\t\t\tif (i >= period - 1) {\r\n\r\n\t\t\t\t\tfor (let j = i; j > i - period; j--) {\r\n\t\t\t\t\t\tlet di = data[j];\r\n\t\t\t\t\t\tmeanDeviation += Math.abs(di.value_y - ma)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmeanDeviation = meanDeviation / period;\r\n\t\t\t\t\tdataItem.cci = (value - ma) / (0.015 * meanDeviation);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|
|
1
|
+
{"version":3,"file":"CommodityChannelIndex.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/stock/indicators/CommodityChannelIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IIndicatorEditableSetting } from \"./Indicator\";\r\nimport type { IValueAxisDataItem } from \"../../xy/axes/ValueAxis\";\r\nimport type { DataItem } from \"../../../core/render/Component\";\r\nimport type { Color } from \"../../../core/util/Color\";\r\n\r\nimport { ChartIndicator, IChartIndicatorSettings, IChartIndicatorPrivate, IChartIndicatorEvents } from \"./ChartIndicator\";\r\nimport { LineSeries, ILineSeriesAxisRange } from \"../../xy/series/LineSeries\";\r\n\r\nexport interface ICommodityChannelIndexSettings extends IChartIndicatorSettings {\r\n\r\n\t/**\r\n\t * A value for \"overbought\" threshold.\r\n\t */\r\n\toverBought?: number;\r\n\r\n\t/**\r\n\t * A value for \"oversold\" threshold.\r\n\t */\r\n\toverSold?: number;\r\n\r\n\t/**\r\n\t * A color for \"overbought\" section.\r\n\t */\r\n\toverBoughtColor?: Color;\r\n\r\n\t/**\r\n\t * A color for \"oversold\" section.\r\n\t */\r\n\toverSoldColor?: Color;\r\n\r\n}\r\n\r\nexport interface ICommodityChannelIndexPrivate extends IChartIndicatorPrivate {\r\n}\r\n\r\nexport interface ICommodityChannelIndexEvents 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 CommodityChannelIndex extends ChartIndicator {\r\n\tpublic static className: string = \"CommodityChannelIndex\";\r\n\tpublic static classNames: Array<string> = ChartIndicator.classNames.concat([CommodityChannelIndex.className]);\r\n\r\n\tdeclare public _settings: ICommodityChannelIndexSettings;\r\n\tdeclare public _privateSettings: ICommodityChannelIndexPrivate;\r\n\tdeclare public _events: ICommodityChannelIndexEvents;\r\n\r\n\tpublic overBought!: DataItem<IValueAxisDataItem>;\r\n\tpublic overSold!: DataItem<IValueAxisDataItem>;\r\n\r\n\tpublic overSoldRange!: ILineSeriesAxisRange;\r\n\tpublic overBoughtRange!: ILineSeriesAxisRange;\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\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: \"seriesColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Color\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"overBought\",\r\n\t\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"overBoughtColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Overbought\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}, {\r\n\t\t\tkey: \"overSold\",\r\n\t\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\t\ttype: \"number\"\r\n\t\t}, {\r\n\t\t\tkey: \"overSoldColor\",\r\n\t\t\tname: this.root.language.translateAny(\"Oversold\"),\r\n\t\t\ttype: \"color\"\r\n\t\t}];\r\n\r\n\tprotected _themeTag: string = \"commoditychannelindex\";\r\n\r\n\tprotected _afterNew() {\r\n\t\tsuper._afterNew();\r\n\r\n\t\t//this.yAxis.setAll({ min: -100, max: 0, strictMinMax: true });\r\n\r\n\t\t// overbought range\r\n\t\tconst overBought = this.yAxis.makeDataItem({});\r\n\t\tthis.overBought = overBought;\r\n\r\n\t\toverBought.set(\"endValue\", 1000);\r\n\t\tconst overBoughtRange = this.series.createAxisRange(overBought);\r\n\t\tthis.overBoughtRange = overBoughtRange;\r\n\t\tconst overBoughtFills = overBoughtRange.fills;\r\n\t\tif (overBoughtFills) {\r\n\t\t\toverBoughtFills.template.set(\"themeTags\", [\"overbought\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overBoughtGrid = overBought.get(\"grid\");\r\n\t\tif (overBoughtGrid) {\r\n\t\t\toverBoughtGrid.setAll({ themeTags: [\"overbought\"], visible: true });\r\n\t\t\toverBoughtGrid._applyThemes();\r\n\t\t}\r\n\r\n\t\tconst overBoughtLabel = overBought.get(\"label\");\r\n\t\tif (overBoughtLabel) {\r\n\t\t\toverBoughtLabel.setAll({ themeTags: [\"overbought\"], visible: true, location: 0 });\r\n\t\t\toverBoughtLabel._applyThemes();\r\n\t\t}\r\n\r\n\t\tconst overSold = this.yAxis.makeDataItem({});\r\n\t\tthis.overSold = overSold;\r\n\r\n\t\toverSold.set(\"endValue\", -1000);\r\n\t\tconst overSoldRange = this.series.createAxisRange(overSold);\r\n\t\tthis.overSoldRange = overSoldRange;\r\n\t\tconst overSoldFills = overSoldRange.fills;\r\n\t\tif (overSoldFills) {\r\n\t\t\toverSoldFills.template.set(\"themeTags\", [\"oversold\", \"fill\"]);\r\n\t\t}\r\n\r\n\t\tconst overSoldGrid = overSold.get(\"grid\");\r\n\t\tif (overSoldGrid) {\r\n\t\t\toverSoldGrid.setAll({ themeTags: [\"oversold\"], visible: true });\r\n\t\t\toverSoldGrid._applyThemes();\r\n\t\t}\r\n\r\n\t\tconst overSoldLabel = overSold.get(\"label\");\r\n\t\tif (overSoldLabel) {\r\n\t\t\toverSoldLabel.setAll({ themeTags: [\"oversold\"], visible: true, location: 0 });\r\n\t\t\toverSoldLabel._applyThemes();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic _createSeries(): LineSeries {\r\n\t\treturn this.panel.series.push(LineSeries.new(this._root, {\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: \"cci\",\r\n\t\t\tfill: undefined\r\n\t\t}))\r\n\t}\r\n\r\n\tpublic _updateChildren() {\r\n\r\n\t\tsuper._updateChildren();\r\n\r\n\t\tconst overSoldValue = this.get(\"overSold\", 100);\r\n\t\tconst overBoughtValue = this.get(\"overBought\", -100);\r\n\r\n\t\tif (this.isDirty(\"overBought\")) {\r\n\t\t\tthis.overBought.set(\"value\", overBoughtValue);\r\n\r\n\t\t\tconst label = this.overBought.get(\"label\");\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"text\", this.getNumberFormatter().format(overBoughtValue));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overSold\")) {\r\n\t\t\tthis.overSold.set(\"value\", overSoldValue);\r\n\r\n\t\t\tconst label = this.overSold.get(\"label\");\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"text\", this.getNumberFormatter().format(overSoldValue));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overSoldColor\")) {\r\n\t\t\tconst color = this.get(\"overSoldColor\");\r\n\t\t\tconst label = this.overSold.get(\"label\");\r\n\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"fill\", color);\r\n\t\t\t}\r\n\r\n\t\t\tthis.overSold.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overSoldRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overSoldRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\r\n\t\tif (this.isDirty(\"overBoughtColor\")) {\r\n\t\t\tconst color = this.get(\"overBoughtColor\");\r\n\t\t\tconst label = this.overBought.get(\"label\");\r\n\r\n\t\t\tif (label) {\r\n\t\t\t\tlabel.set(\"fill\", color);\r\n\t\t\t}\r\n\r\n\t\t\tthis.overBought.get(\"grid\")!.set(\"stroke\", color);\r\n\t\t\tthis.overBoughtRange.fills!.template.set(\"fill\", color);\r\n\t\t\tthis.overBoughtRange.strokes!.template.set(\"stroke\", color);\r\n\t\t}\r\n\r\n\t\tlet min = Math.min(overBoughtValue, overSoldValue)\r\n\t\tlet max = Math.max(overBoughtValue, overSoldValue)\r\n\r\n\t\tthis.series.get(\"yAxis\").set(\"baseValue\", min + (max - min) / 2);\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\tthis.set(\"field\", \"close\");\r\n\r\n\t\t\tconst dataItems = this.get(\"stockSeries\").dataItems;\r\n\t\t\tlet data = this._getTypicalPrice(dataItems);\r\n\t\t\tlet period = this.get(\"period\", 20);\r\n\r\n\t\t\tthis._sma(data, period, \"value_y\", \"sma\");\r\n\r\n\t\t\tfor (let i = 0, len = data.length; i < len; i++) {\r\n\t\t\t\tconst dataItem = data[i];\r\n\t\t\t\tconst value = dataItem.value_y;\r\n\t\t\t\tlet ma = dataItem.sma;\r\n\r\n\t\t\t\tlet meanDeviation = 0;\r\n\t\t\t\tif (i >= period - 1) {\r\n\r\n\t\t\t\t\tfor (let j = i; j > i - period; j--) {\r\n\t\t\t\t\t\tlet di = data[j];\r\n\t\t\t\t\t\tmeanDeviation += Math.abs(di.value_y - ma)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmeanDeviation = meanDeviation / period;\r\n\t\t\t\t\tdataItem.cci = (value - ma) / (0.015 * meanDeviation);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.series.data.setAll(data);\r\n\t\t}\r\n\t}\r\n}"]}
|