UNPKG

angular-tradingview-widget

Version:

Angular component for rendering the TradingView Advanced Real-Time Chart Widget

1 lines 13.6 kB
{"version":3,"file":"angular-tradingview-widget.mjs","sources":["../../../projects/angular-tradingview-widget/src/lib/tradingview-widget.model.ts","../../../projects/angular-tradingview-widget/src/lib/tradingview-widget.component.ts","../../../projects/angular-tradingview-widget/src/lib/tradingview-widget.module.ts","../../../projects/angular-tradingview-widget/src/public-api.ts","../../../projects/angular-tradingview-widget/src/angular-tradingview-widget.ts"],"sourcesContent":["export enum BarStyles {\r\n BARS= '0',\r\n CANDLES= '1',\r\n HOLLOW_CANDLES= '9',\r\n HEIKIN_ASHI= '8',\r\n LINE= '2',\r\n AREA= '3',\r\n RENKO= '4',\r\n LINE_BREAK= '7',\r\n KAGI= '5',\r\n POINT_AND_FIGURE= '6'\r\n}\r\n\r\nexport enum IntervalTypes {\r\n D= 'D',\r\n W= 'W'\r\n};\r\n \r\nexport enum RangeTypes {\r\n YTD= 'ytd',\r\n ALL= 'all'\r\n};\r\n\r\nexport enum Themes {\r\n LIGHT= 'Light',\r\n DARK= 'Dark'\r\n};\r\n\r\n\r\n\r\nexport const SCRIPT_ID = 'tradingview-widget-script';\r\nexport const CONTAINER_ID = `tradingview-widget-${Math.random()}`;\r\n\r\nexport interface ITradingViewWidget {\r\n allow_symbol_change?: boolean;\r\n autosize?: boolean;\r\n calendar?: boolean;\r\n details?: boolean;\r\n enable_publishing?: boolean;\r\n height?: number;\r\n hideideas?: boolean;\r\n hide_legend?: boolean;\r\n hide_side_toolbar?: boolean;\r\n hide_top_toolbar?: boolean;\r\n hotlist?: boolean;\r\n interval?: \r\n '1' |\r\n '3' |\r\n '5' |\r\n '15' |\r\n '30' |\r\n '60' |\r\n '120' |\r\n '180' |\r\n IntervalTypes.D |\r\n IntervalTypes.W;\r\n locale?: string;\r\n news?: string[];\r\n no_referral_id?: boolean;\r\n popup_height?: number | string;\r\n popup_width?: number | string;\r\n referral_id?: string;\r\n range?: \r\n '1d' |\r\n '5d' |\r\n '1m' |\r\n '3m' |\r\n '6m' |\r\n RangeTypes.YTD |\r\n '12m' |\r\n '60m' |\r\n RangeTypes.ALL;\r\n save_image?: boolean;\r\n show_popup_button?: boolean;\r\n studies?: string[];\r\n style?: BarStyles.BARS |\r\n BarStyles.CANDLES |\r\n BarStyles.HOLLOW_CANDLES |\r\n BarStyles.HEIKIN_ASHI |\r\n BarStyles.LINE |\r\n BarStyles.AREA |\r\n BarStyles.RENKO |\r\n BarStyles.LINE_BREAK |\r\n BarStyles.KAGI |\r\n BarStyles.POINT_AND_FIGURE;\r\n symbol: string;\r\n theme?: Themes.LIGHT | Themes.DARK;\r\n timezone?: string;\r\n toolbar_bg?: string;\r\n watchlist?: string[];\r\n widgetType: string;\r\n width?: number;\r\n withdateranges?: boolean;\r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BarStyles, CONTAINER_ID, IntervalTypes, ITradingViewWidget, SCRIPT_ID, Themes } from './tradingview-widget.model';\r\n\r\ndeclare const TradingView: any;\r\n\r\n@Component({\r\n selector: 'tradingview-widget',\r\n template: `\r\n <section [id]=\"containerId\"> </section>\r\n `,\r\n styles: []\r\n})\r\nexport class TradingviewWidgetComponent implements OnInit {\r\n\r\n private _widgetConfig!: ITradingViewWidget;\r\n private _defaultConfig: ITradingViewWidget = {\r\n symbol: 'NASDAQ:AAPL',\r\n allow_symbol_change: true,\r\n autosize: false,\r\n enable_publishing: false,\r\n height: 610,\r\n hideideas: true,\r\n hide_legend: false,\r\n hide_side_toolbar: true,\r\n hide_top_toolbar: false,\r\n interval: IntervalTypes.D,\r\n locale: 'en',\r\n save_image: true,\r\n show_popup_button: false,\r\n style: BarStyles.CANDLES,\r\n theme: Themes.LIGHT,\r\n timezone: 'Etc/UTC',\r\n toolbar_bg: '#F1F3F6',\r\n widgetType: 'widget',\r\n width: 980,\r\n withdateranges: false\r\n };\r\n\r\n style: {} = {};\r\n containerId = CONTAINER_ID;\r\n\r\n @Input('widgetConfig') set widgetConfig (value: ITradingViewWidget) {\r\n this._widgetConfig = value;\r\n this.cleanWidget();\r\n this.initWidget();\r\n }\r\n\r\n get widgetConfig (): ITradingViewWidget {\r\n return this._widgetConfig || this._defaultConfig;\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.appendScript(this.initWidget.bind(this));\r\n }\r\n\r\n initWidget () {\r\n /* global TradingView */\r\n if (typeof TradingView === 'undefined' || !this.getContainer()) return;\r\n \r\n const { widgetType, ...widgetConfig } = this.widgetConfig;\r\n const config = { ...widgetConfig, container_id: this.containerId };\r\n\r\n if (config.autosize) {\r\n delete config.width;\r\n delete config.height;\r\n }\r\n\r\n\r\n if (config.popup_width && typeof config.popup_width === 'number') {\r\n config.popup_width = config.popup_width.toString();\r\n }\r\n\r\n if (config.popup_height && typeof config.popup_height === 'number') {\r\n config.popup_height = config.popup_height.toString();\r\n }\r\n\r\n if(config.autosize) {\r\n this.style = {\r\n width: '100%',\r\n height: '100%'\r\n };\r\n }\r\n /* global TradingView */\r\n if(!!widgetType)\r\n new TradingView[widgetType](config);\r\n else \r\n console.error(`Can not create \"TradingView\", because \"widgetType\" is missing`)\r\n };\r\n\r\n appendScript (onload : (() => any)) {\r\n if (!this.canUseDOM()) {\r\n onload();\r\n return;\r\n }\r\n\r\n if (this.scriptExists()) {\r\n /* global TradingView */\r\n if (typeof TradingView === 'undefined') {\r\n this.updateOnloadListener(onload);\r\n return;\r\n }\r\n onload();\r\n return;\r\n }\r\n const script = document.createElement('script');\r\n script.id = SCRIPT_ID;\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.src = 'https://s3.tradingview.com/tv.js';\r\n script.onload = onload;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n };\r\n \r\n canUseDOM () {\r\n return typeof window !== 'undefined' &&\r\n window.document &&\r\n window.document.createElement\r\n }\r\n\r\n scriptExists () {\r\n return this.getScriptElement() !== null;\r\n }\r\n\r\n updateOnloadListener (onload: (() => any)) {\r\n const script = this.getScriptElement() || {} as any;\r\n const oldOnload = script.onload.bind(this);\r\n return script.onload = () => {\r\n oldOnload();\r\n onload();\r\n };\r\n };\r\n\r\n getScriptElement () {\r\n return document.getElementById(SCRIPT_ID);\r\n }\r\n\r\n cleanWidget () {\r\n if (!this.canUseDOM()) return;\r\n const container = this.getContainer();\r\n if(container) {\r\n container.innerHTML = '';\r\n }\r\n };\r\n\r\n getContainer () {\r\n return document.getElementById(this.containerId);\r\n }\r\n\r\n \r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TradingviewWidgetComponent } from './tradingview-widget.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [TradingviewWidgetComponent],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [TradingviewWidgetComponent],\r\n providers: []\r\n})\r\nexport class TradingviewWidgetModule {}\r\n","/*\r\n * Public API Surface of angular-tradingview-widget\r\n */\r\n\r\nexport * from './lib/tradingview-widget.component';\r\nexport * from './lib/tradingview-widget.module';\r\nexport * from './lib/tradingview-widget.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}