|
|
|
|
"use strict";
|
|
|
|
|
!(function () {
|
|
|
|
|
if (!window.TradingView || !window.TradingView.host || window.TradingView.reoloadTvjs) {
|
|
|
|
|
var e,
|
|
|
|
|
t,
|
|
|
|
|
o,
|
|
|
|
|
i,
|
|
|
|
|
n,
|
|
|
|
|
r,
|
|
|
|
|
s,
|
|
|
|
|
a = { "color-gull-gray": "#9db2bd", "color-brand": "#2962FF", "color-brand-hover": "#1E53E5", "color-brand-active": "#1848CC" },
|
|
|
|
|
d = "-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif",
|
|
|
|
|
l = {
|
|
|
|
|
host: null == window.location.host.match(/tradingview\.com|pyrrosinvestment\.com/i) ? "https://s.tradingview.com" : "https://www.tradingview.com",
|
|
|
|
|
ideasHost: "https://www.tradingview.com",
|
|
|
|
|
chatHost: "https://www.tradingview.com",
|
|
|
|
|
widgetHost: "https://www.tradingview-widget.com",
|
|
|
|
|
getHost: function (e) {
|
|
|
|
|
return e.useWidgetHost ? l.widgetHost : l.host;
|
|
|
|
|
},
|
|
|
|
|
embedStylesForCopyright: function () {
|
|
|
|
|
var e = document.createElement("style");
|
|
|
|
|
return (
|
|
|
|
|
(e.innerHTML =
|
|
|
|
|
".tradingview-widget-copyright {font-size: 13px !important; line-height: 32px !important; text-align: center !important; vertical-align: middle !important; font-family: " +
|
|
|
|
|
d +
|
|
|
|
|
" !important; color: " +
|
|
|
|
|
a["color-gull-gray"] +
|
|
|
|
|
" !important;} .tradingview-widget-copyright .blue-text {color: " +
|
|
|
|
|
a["color-brand"] +
|
|
|
|
|
" !important;} .tradingview-widget-copyright a {text-decoration: none !important; color: " +
|
|
|
|
|
a["color-gull-gray"] +
|
|
|
|
|
" !important;} .tradingview-widget-copyright a:visited {color: " +
|
|
|
|
|
a["color-gull-gray"] +
|
|
|
|
|
" !important;} .tradingview-widget-copyright a:hover .blue-text {color: " +
|
|
|
|
|
a["color-brand-hover"] +
|
|
|
|
|
" !important;} .tradingview-widget-copyright a:active .blue-text {color: " +
|
|
|
|
|
a["color-brand-active"] +
|
|
|
|
|
" !important;} .tradingview-widget-copyright a:visited .blue-text {color: " +
|
|
|
|
|
a["color-brand"] +
|
|
|
|
|
" !important;}"),
|
|
|
|
|
e
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
embedStylesForFullHeight: function (e, t, o) {
|
|
|
|
|
var i = t ? "calc(" + e + " - 32px)" : e,
|
|
|
|
|
n = document.querySelector("#" + o);
|
|
|
|
|
(n.parentElement.style.height = i), (n.style.height = "100%");
|
|
|
|
|
},
|
|
|
|
|
gId: function () {
|
|
|
|
|
return "tradingview_" + ((1048576 * (1 + Math.random())) | 0).toString(16).substring(1);
|
|
|
|
|
},
|
|
|
|
|
isPersentHeight: function (e) {
|
|
|
|
|
return "%" === e;
|
|
|
|
|
},
|
|
|
|
|
getSuffix: function (e) {
|
|
|
|
|
var t = e.toString().match(/(%|px|em|ex)/);
|
|
|
|
|
return t ? t[0] : "px";
|
|
|
|
|
},
|
|
|
|
|
hasCopyright: function (e) {
|
|
|
|
|
var t = document.getElementById(e),
|
|
|
|
|
o = t && t.parentElement;
|
|
|
|
|
return !!o && !!o.querySelector(".tradingview-widget-copyright");
|
|
|
|
|
},
|
|
|
|
|
calculateWidgetHeight: function (e, t) {
|
|
|
|
|
var o = parseInt(e),
|
|
|
|
|
i = this.getSuffix(e),
|
|
|
|
|
n = this.isPersentHeight(i),
|
|
|
|
|
r = t && this.hasCopyright(t);
|
|
|
|
|
return n && t && (this.embedStylesForFullHeight(o + i, r, t), r) ? 100 + i : r ? "calc(" + o + i + " - 32px)" : o + i;
|
|
|
|
|
},
|
|
|
|
|
onready: function (e) {
|
|
|
|
|
window.addEventListener ? window.addEventListener("DOMContentLoaded", e, !1) : window.attachEvent("onload", e);
|
|
|
|
|
},
|
|
|
|
|
css: function (e) {
|
|
|
|
|
var t,
|
|
|
|
|
o = document.getElementsByTagName("head")[0],
|
|
|
|
|
i = document.createElement("style");
|
|
|
|
|
(i.type = "text/css"), i.styleSheet ? (i.styleSheet.cssText = e) : ((t = document.createTextNode(e)), i.appendChild(t)), o.appendChild(i);
|
|
|
|
|
},
|
|
|
|
|
bindEvent: function (e, t, o) {
|
|
|
|
|
e.addEventListener ? e.addEventListener(t, o, !1) : e.attachEvent && e.attachEvent("on" + t, o);
|
|
|
|
|
},
|
|
|
|
|
unbindEvent: function (e, t, o) {
|
|
|
|
|
e.removeEventListener ? e.removeEventListener(t, o, !1) : e.detachEvent && e.detachEvent("on" + t, o);
|
|
|
|
|
},
|
|
|
|
|
cloneSimpleObject: function (e) {
|
|
|
|
|
if (null == e || "object" != typeof e) return e;
|
|
|
|
|
var t = e.constructor();
|
|
|
|
|
for (var o in e) e.hasOwnProperty(o) && (t[o] = e[o]);
|
|
|
|
|
return t;
|
|
|
|
|
},
|
|
|
|
|
isArray: function (e) {
|
|
|
|
|
return "[object Array]" === Object.prototype.toString.call(e);
|
|
|
|
|
},
|
|
|
|
|
isMobileDevice:
|
|
|
|
|
((e = { Android: /Android/i.test(navigator.userAgent), BlackBerry: /BlackBerry/i.test(navigator.userAgent), iOS: /iPhone|iPad|iPod/i.test(navigator.userAgent), Opera: /Opera Mini/i.test(navigator.userAgent) }),
|
|
|
|
|
(e.any = e.Android || e.BlackBerry || e.iOS || e.Opera),
|
|
|
|
|
e),
|
|
|
|
|
generateUtmForUrlParams: function (e) {
|
|
|
|
|
return (
|
|
|
|
|
"utm_source=" +
|
|
|
|
|
encodeURI(window.location.hostname) +
|
|
|
|
|
"&utm_medium=" +
|
|
|
|
|
(l.hasCopyright(e.container) ? "widget_new" : "widget") +
|
|
|
|
|
(e.type ? "&utm_campaign=" + e.type : "") +
|
|
|
|
|
(e.type && "chart" === e.type ? "&utm_term=" + encodeURIComponent(e.symbol) : "")
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
WidgetAbstract: function () {},
|
|
|
|
|
MiniWidget: function (e) {
|
|
|
|
|
(this.id = l.gId()),
|
|
|
|
|
(this.options = {
|
|
|
|
|
whitelabel: e.whitelabel || "",
|
|
|
|
|
width: l.WidgetAbstract.prototype.fixSize(e.width) || 300,
|
|
|
|
|
height: l.WidgetAbstract.prototype.fixSize(e.height) || 400,
|
|
|
|
|
symbols: e.symbols,
|
|
|
|
|
tabs: e.tabs || "",
|
|
|
|
|
symbols_description: e.symbols_description || "",
|
|
|
|
|
customer: e.customer || "",
|
|
|
|
|
container: e.container_id || "",
|
|
|
|
|
greyText: e.greyText || "",
|
|
|
|
|
large_chart_url: e.large_chart_url || "",
|
|
|
|
|
large_chart_target: e.large_chart_target || "",
|
|
|
|
|
gridLineColor: e.gridLineColor || "",
|
|
|
|
|
fontColor: e.fontColor || "",
|
|
|
|
|
widgetFontColor: e.widgetFontColor || "",
|
|
|
|
|
underLineColor: e.underLineColor || "",
|
|
|
|
|
underLineBottomColor: e.underLineBottomColor || "",
|
|
|
|
|
trendLineColor: e.trendLineColor || "",
|
|
|
|
|
timeAxisBackgroundColor: e.timeAxisBackgroundColor || "",
|
|
|
|
|
activeTickerBackgroundColor: e.activeTickerBackgroundColor || "",
|
|
|
|
|
noGraph: e.noGraph || !1,
|
|
|
|
|
locale: e.locale,
|
|
|
|
|
styleTickerActiveBg: e.styleTickerActiveBg || "",
|
|
|
|
|
styleTabActiveBorderColor: e.styleTabActiveBorderColor || "",
|
|
|
|
|
styleTickerBodyFontSize: e.styleTickerBodyFontSize || "",
|
|
|
|
|
styleTickerBodyFontWeight: e.styleTickerBodyFontWeight || "",
|
|
|
|
|
styleTickerHeadFontSize: e.styleTickerHeadFontSize || "",
|
|
|
|
|
styleTickerHeadFontWeight: e.styleTickerHeadFontWeight || "",
|
|
|
|
|
styleTickerChangeDownColor: e.styleTickerChangeDownColor || "",
|
|
|
|
|
styleTickerChangeUpColor: e.styleTickerChangeUpColor || "",
|
|
|
|
|
styleTickerLastDownBg: e.styleTickerLastDownBg || "",
|
|
|
|
|
styleTickerLastUpBg: e.styleTickerLastUpBg || "",
|
|
|
|
|
styleTickerSymbolColor: e.styleTickerSymbolColor || "",
|
|
|
|
|
styleTickerSymbolHoverTextDecoration: e.styleTickerSymbolHoverTextDecoration || "",
|
|
|
|
|
styleTickerActiveSymbolTextDecoration: e.styleTickerActiveSymbolTextDecoration || "",
|
|
|
|
|
styleTabsActiveBorderColor: e.styleTabsActiveBorderColor || "",
|
|
|
|
|
styleTabsNoBorder: e.styleTabsNoBorder || "",
|
|
|
|
|
styleWidgetNoBorder: e.styleWidgetNoBorder || "",
|
|
|
|
|
useWidgetHost: Boolean(e.useWidgetHost),
|
|
|
|
|
}),
|
|
|
|
|
this.createWidget();
|
|
|
|
|
},
|
|
|
|
|
MediumWidget: function (e) {
|
|
|
|
|
this.id = l.gId();
|
|
|
|
|
const t = l.calculateWidgetHeight(e.height || 400, e.container_id);
|
|
|
|
|
let o;
|
|
|
|
|
switch (e.chartType) {
|
|
|
|
|
case "candlesticks": {
|
|
|
|
|
const { chartType: t, upColor: i, downColor: n, borderUpColor: r, borderDownColor: s, wickUpColor: a, wickDownColor: d } = e;
|
|
|
|
|
o = { chartType: t, upColor: i, downColor: n, borderUpColor: r, borderDownColor: s, wickUpColor: a, wickDownColor: d };
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "bars": {
|
|
|
|
|
const { chartType: t, upColor: i, downColor: n } = e;
|
|
|
|
|
o = { chartType: t, upColor: i, downColor: n };
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "line": {
|
|
|
|
|
const { chartType: t, color: i, colorGrowing: n, colorFalling: r, lineWidth: s } = e;
|
|
|
|
|
o = { chartType: t, color: i, colorGrowing: n, colorFalling: r, lineWidth: s };
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "area":
|
|
|
|
|
default: {
|
|
|
|
|
const {
|
|
|
|
|
chartType: t = "area",
|
|
|
|
|
lineColor: i = e.trendLineColor || "",
|
|
|
|
|
lineColorGrowing: n,
|
|
|
|
|
lineColorFalling: r,
|
|
|
|
|
topColor: s = e.underLineColor || "",
|
|
|
|
|
bottomColor: a = e.underLineBottomColor || "",
|
|
|
|
|
lineWidth: d,
|
|
|
|
|
} = e;
|
|
|
|
|
o = { chartType: t, lineColor: i, lineColorGrowing: n, lineColorFalling: r, topColor: s, bottomColor: a, lineWidth: d };
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
(this.options = {
|
|
|
|
|
container: e.container_id || "",
|
|
|
|
|
width: l.WidgetAbstract.prototype.fixSize(e.width) || "",
|
|
|
|
|
height: l.WidgetAbstract.prototype.fixSize(t) || "",
|
|
|
|
|
symbols: e.symbols,
|
|
|
|
|
greyText: e.greyText || "",
|
|
|
|
|
symbols_description: e.symbols_description || "",
|
|
|
|
|
large_chart_url: e.large_chart_url || "",
|
|
|
|
|
customer: e.customer || "",
|
|
|
|
|
backgroundColor: e.backgroundColor || "",
|
|
|
|
|
gridLineColor: e.gridLineColor || "",
|
|
|
|
|
fontColor: e.fontColor || "",
|
|
|
|
|
widgetFontColor: e.widgetFontColor || "",
|
|
|
|
|
timeAxisBackgroundColor: e.timeAxisBackgroundColor || "",
|
|
|
|
|
chartOnly: !!e.chartOnly,
|
|
|
|
|
locale: e.locale,
|
|
|
|
|
whitelabel: !!e.whitelabel || "",
|
|
|
|
|
colorTheme: e.colorTheme,
|
|
|
|
|
isTransparent: e.isTransparent,
|
|
|
|
|
useWidgetHost: Boolean(e.useWidgetHost),
|
|
|
|
|
showFloatingTooltip: e.showFloatingTooltip,
|
|
|
|
|
valuesTracking: e.valuesTracking,
|
|
|
|
|
showVolume: e.showVolume,
|
|
|
|
|
volumeUpColor: e.volumeUpColor,
|
|
|
|
|
volumeDownColor: e.volumeDownColor,
|
|
|
|
|
hideDateRanges: e.hideDateRanges,
|
|
|
|
|
scalePosition: e.scalePosition,
|
|
|
|
|
scaleMode: e.scaleMode,
|
|
|
|
|
fontFamily: e.fontFamily,
|
|
|
|
|
noTimeScale: e.noTimeScale,
|
|
|
|
|
...o,
|
|
|
|
|
}),
|
|
|
|
|
this.createWidget();
|
|
|
|
|
},
|
|
|
|
|
widget: function (e) {
|
|
|
|
|
this.id = e.id || l.gId();
|
|
|
|
|
var t = l.getUrlParams(),
|
|
|
|
|
o = e.tvwidgetsymbol || t.tvwidgetsymbol || t.symbol || e.symbol || "NASDAQ:AAPL",
|
|
|
|
|
i = e.logo || "";
|
|
|
|
|
i.src && (i = i.src), i && i.replace(".png", "");
|
|
|
|
|
var n = l.calculateWidgetHeight(e.height || 500, e.container_id);
|
|
|
|
|
(this.options = {
|
|
|
|
|
whitelabel: e.whitelabel || "",
|
|
|
|
|
width: e.width || 800,
|
|
|
|
|
height: n,
|
|
|
|
|
symbol: o,
|
|
|
|
|
interval: e.interval || "1",
|
|
|
|
|
range: e.range || "",
|
|
|
|
|
timezone: e.timezone || "",
|
|
|
|
|
autosize: e.autosize,
|
|
|
|
|
hide_top_toolbar: e.hide_top_toolbar,
|
|
|
|
|
hide_side_toolbar: e.hide_side_toolbar,
|
|
|
|
|
hide_legend: e.hide_legend,
|
|
|
|
|
allow_symbol_change: e.allow_symbol_change,
|
|
|
|
|
save_image: void 0 === e.save_image || e.save_image,
|
|
|
|
|
container: e.container_id || "",
|
|
|
|
|
toolbar_bg: e.toolbar_bg || "f4f7f9",
|
|
|
|
|
watchlist: e.watchlist || [],
|
|
|
|
|
editablewatchlist: !!e.editablewatchlist,
|
|
|
|
|
studies: e.studies || [],
|
|
|
|
|
theme: e.theme || "",
|
|
|
|
|
style: e.style || "",
|
|
|
|
|
extended_hours: void 0 === e.extended_hours ? void 0 : +e.extended_hours,
|
|
|
|
|
details: !!e.details,
|
|
|
|
|
calendar: !!e.calendar,
|
|
|
|
|
hotlist: !!e.hotlist,
|
|
|
|
|
hideideas: !!e.hideideas,
|
|
|
|
|
hideideasbutton: !!e.hideideasbutton,
|
|
|
|
|
widgetbar_width: +e.widgetbar_width || void 0,
|
|
|
|
|
withdateranges: e.withdateranges || "",
|
|
|
|
|
customer: e.customer || i || "",
|
|
|
|
|
venue: e.venue,
|
|
|
|
|
symbology: e.symbology,
|
|
|
|
|
logo: i,
|
|
|
|
|
show_popup_button: !!e.show_popup_button,
|
|
|
|
|
popup_height: e.popup_height || "",
|
|
|
|
|
popup_width: e.popup_width || "",
|
|
|
|
|
studies_overrides: e.studies_overrides,
|
|
|
|
|
overrides: e.overrides,
|
|
|
|
|
enabled_features: e.enabled_features,
|
|
|
|
|
disabled_features: e.disabled_features,
|
|
|
|
|
publish_source: e.publish_source || "",
|
|
|
|
|
enable_publishing: e.enable_publishing,
|
|
|
|
|
whotrades: e.whotrades || void 0,
|
|
|
|
|
locale: e.locale,
|
|
|
|
|
referral_id: e.referral_id,
|
|
|
|
|
no_referral_id: e.no_referral_id,
|
|
|
|
|
fundamental: e.fundamental,
|
|
|
|
|
percentage: e.percentage,
|
|
|
|
|
hidevolume: e.hidevolume,
|
|
|
|
|
padding: e.padding,
|
|
|
|
|
greyText: e.greyText || "",
|
|
|
|
|
horztouchdrag: e.horztouchdrag,
|
|
|
|
|
verttouchdrag: e.verttouchdrag,
|
|
|
|
|
useWidgetHost: Boolean(e.useWidgetHost),
|
|
|
|
|
}),
|
|
|
|
|
e.cme && (this.options.customer = "cme"),
|
|
|
|
|
isFinite(e.widgetbar_width) && e.widgetbar_width > 0 && (this.options.widgetbar_width = e.widgetbar_width),
|
|
|
|
|
(this._ready_handlers = []),
|
|
|
|
|
this.create();
|
|
|
|
|
},
|
|
|
|
|
chart: function (e) {
|
|
|
|
|
(this.id = l.gId()),
|
|
|
|
|
(this.options = {
|
|
|
|
|
width: e.width || 640,
|
|
|
|
|
height: e.height || 500,
|
|
|
|
|
container: e.container_id || "",
|
|
|
|
|
realtime: e.realtime,
|
|
|
|
|
chart: e.chart,
|
|
|
|
|
locale: e.locale,
|
|
|
|
|
type: "chart",
|
|
|
|
|
autosize: e.autosize,
|
|
|
|
|
mobileStatic: e.mobileStatic,
|
|
|
|
|
}),
|
|
|
|
|
(this._ready_handlers = []),
|
|
|
|
|
this.create();
|
|
|
|
|
},
|
|
|
|
|
stream: function (e) {
|
|
|
|
|
(this.id = l.gId()), (this.options = { width: e.width || 640, height: e.height || 500, container: e.container_id || "", stream: e.stream, locale: e.locale, autosize: e.autosize }), this.create();
|
|
|
|
|
},
|
|
|
|
|
EventsWidget: function (e) {
|
|
|
|
|
(this.id = l.gId()),
|
|
|
|
|
(this.options = { container: e.container_id || "", width: e.width || 486, height: e.height || 670, currency: e.currencyFilter || "", importance: e.importanceFilter || "", type: "economic-calendar" }),
|
|
|
|
|
this.createWidget(e);
|
|
|
|
|
},
|
|
|
|
|
IdeasStreamWidget: function (e) {
|
|
|
|
|
(this.id = l.gId()),
|
|
|
|
|
(this.options = {
|
|
|
|
|
container: e.container_id || "",
|
|
|
|
|
width: e.width || 486,
|
|
|
|
|
height: e.height || 670,
|
|
|
|
|
symbol: e.symbol || "",
|
|
|
|
|
username: e.username || "",
|
|
|
|
|
mode: e.mode || "",
|
|
|
|
|
publishSource: e.publishSource || "",
|
|
|
|
|
sort: e.sort || "trending",
|
|
|
|
|
stream: e.stream,
|
|
|
|
|
waitSymbol: e.waitSymbol,
|
|
|
|
|
hideDescription: e.hideDescription,
|
|
|
|
|
startingCount: e.startingCount,
|
|
|
|
|
bgColor: e.bgColor || "",
|
|
|
|
|
headerColor: e.headerColor || "",
|
|
|
|
|
borderColor: e.borderColor || "",
|
|
|
|
|
locale: e.locale,
|
|
|
|
|
type: "ideas-stream",
|
|
|
|
|
useWidgetHost: Boolean(e.useWidgetHost),
|
|
|
|
|
}),
|
|
|
|
|
(this._ready_handlers = []),
|
|
|
|
|
this.createWidget();
|
|
|
|
|
},
|
|
|
|
|
IdeaWidget: function (e) {
|
|
|
|
|
(this.id = l.gId()),
|
|
|
|
|
(this.options = { container: e.container_id || "", width: e.width || 486, height: e.height || 670, idea: e.idea || "", chartUrl: e.chartUrl || "", whotrades: e.whotrades || void 0, locale: e.locale, type: "idea" }),
|
|
|
|
|
this.createWidget(e);
|
|
|
|
|
},
|
|
|
|
|
ChatWidgetEmbed: function (e) {
|
|
|
|
|
(this.id = l.gId()),
|
|
|
|
|
(this.options = { container: e.container_id || "", width: e.width || 400, height: e.height || 500, room: e.room || "", whotrades: e.whotrades || void 0, locale: e.locale, type: "chat-embed" }),
|
|
|
|
|
this.createWidget(e);
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
(l.WidgetAbstract.prototype = {
|
|
|
|
|
fixSize: function (e) {
|
|
|
|
|
return /^[0-9]+(\.|,[0-9])*$/.test(e) ? e + "px" : e;
|
|
|
|
|
},
|
|
|
|
|
width: function () {
|
|
|
|
|
return this.options.autosize ? "100%" : l.WidgetAbstract.prototype.fixSize(this.options.width);
|
|
|
|
|
},
|
|
|
|
|
height: function () {
|
|
|
|
|
return this.options.autosize ? "100%" : l.WidgetAbstract.prototype.fixSize(this.options.height);
|
|
|
|
|
},
|
|
|
|
|
addWrapperFrame: function (e, t, o) {
|
|
|
|
|
var i = l.WidgetAbstract.prototype.height.call(this),
|
|
|
|
|
n = l.WidgetAbstract.prototype.width.call(this);
|
|
|
|
|
o = o || "transparent";
|
|
|
|
|
return (
|
|
|
|
|
'<div id="' +
|
|
|
|
|
this.id +
|
|
|
|
|
'-wrapper" style="position: relative;box-sizing: content-box;width: ' +
|
|
|
|
|
n +
|
|
|
|
|
";height: " +
|
|
|
|
|
i +
|
|
|
|
|
";margin: 0 auto !important;padding: 0 !important;font-family: " +
|
|
|
|
|
d +
|
|
|
|
|
';"><div style="width: ' +
|
|
|
|
|
n +
|
|
|
|
|
";height: " +
|
|
|
|
|
i +
|
|
|
|
|
";background: " +
|
|
|
|
|
o +
|
|
|
|
|
';padding: 0 !important;">' +
|
|
|
|
|
e +
|
|
|
|
|
"</div>" +
|
|
|
|
|
(t || "") +
|
|
|
|
|
"</div>"
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
addFooterLogo: function (e, t) {
|
|
|
|
|
var o = (t || {}).greyText || "powered by",
|
|
|
|
|
i = (t || {}).linkText || "tradingview.com",
|
|
|
|
|
n = (t || {}).href || "https://www.tradingview.com/";
|
|
|
|
|
return l.WidgetAbstract.prototype.addWrapperFrame.call(
|
|
|
|
|
this,
|
|
|
|
|
e,
|
|
|
|
|
'<div style="position:absolute;display: block;box-sizing: content-box;height: 24px;width: ' +
|
|
|
|
|
l.WidgetAbstract.prototype.width.call(this) +
|
|
|
|
|
";bottom: 0;left: 0;margin: 0;padding: 0;font-family: " +
|
|
|
|
|
d +
|
|
|
|
|
';"><div style="display: block;margin: 0 1px 1px 1px;line-height: 7px;box-sizing: content-box;height: 11px;padding: 6px 10px;text-align: right;background: #fff;"><a href="' +
|
|
|
|
|
n +
|
|
|
|
|
"?" +
|
|
|
|
|
l.generateUtmForUrlParams(this.options) +
|
|
|
|
|
'" target="_blank" style="color: #0099d4;text-decoration: none;font-size: 11px;"><span style="color: #b4b4b4;font-size: 11px;">' +
|
|
|
|
|
o +
|
|
|
|
|
"</span> " +
|
|
|
|
|
i +
|
|
|
|
|
"</a></div></div>",
|
|
|
|
|
"#fff"
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.ChatWidgetEmbed.prototype = {
|
|
|
|
|
createWidget: function () {
|
|
|
|
|
var e = this.widgetCode();
|
|
|
|
|
(e = l.WidgetAbstract.prototype.addFooterLogo.call(this, e)), h(e, this.options.container);
|
|
|
|
|
},
|
|
|
|
|
widgetCode: function () {
|
|
|
|
|
var e = this.options.room ? "#" + encodeURIComponent(this.options.room) : "",
|
|
|
|
|
t = "&" + l.createUrlParams({ whotrades: this.options.whotrades, locale: this.options.locale }),
|
|
|
|
|
o = l.generateUtmForUrlParams(this.options, { type: "UserInfoWidget" });
|
|
|
|
|
return (
|
|
|
|
|
'<iframe src="' +
|
|
|
|
|
(l.chatHost + "/chatwidgetembed/?" + o + t + e) +
|
|
|
|
|
'"' +
|
|
|
|
|
(this.options.width ? ' width="' + this.options.width + '"' : "") +
|
|
|
|
|
(this.options.height ? ' height="' + this.options.height + '"' : "") +
|
|
|
|
|
' frameborder="0" allowTransparency="true" scrolling="no"></iframe>'
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.IdeaWidget.prototype = {
|
|
|
|
|
createWidget: function () {
|
|
|
|
|
var e = this.widgetCode();
|
|
|
|
|
h(e, this.options.container);
|
|
|
|
|
var t = this,
|
|
|
|
|
o = document.getElementById(this.id);
|
|
|
|
|
(this.postMessage = l.postMessageWrapper(o.contentWindow, this.id)),
|
|
|
|
|
this.postMessage.on(
|
|
|
|
|
"resize",
|
|
|
|
|
function (e) {
|
|
|
|
|
e.id === t.id && (o.style.height = e.height + "px");
|
|
|
|
|
},
|
|
|
|
|
!0
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
widgetCode: function () {
|
|
|
|
|
var e = l.createUrlParams({
|
|
|
|
|
id: this.id,
|
|
|
|
|
width: this.options.width,
|
|
|
|
|
height: this.options.height,
|
|
|
|
|
idea: this.options.idea,
|
|
|
|
|
chart_url: this.options.chartUrl,
|
|
|
|
|
whotrades: this.options.whotrades,
|
|
|
|
|
locale: this.options.locale,
|
|
|
|
|
});
|
|
|
|
|
this.options.type = "idea";
|
|
|
|
|
var t = "&" + l.generateUtmForUrlParams(this.options),
|
|
|
|
|
o = l.ideasHost + "/idea-popup/?" + e + t;
|
|
|
|
|
return (
|
|
|
|
|
'<iframe id="' +
|
|
|
|
|
this.id +
|
|
|
|
|
'" src="' +
|
|
|
|
|
o +
|
|
|
|
|
'" width="' +
|
|
|
|
|
this.options.width +
|
|
|
|
|
'"' +
|
|
|
|
|
(this.options.height ? ' height="' + this.options.height + '"' : "") +
|
|
|
|
|
' frameborder="0" allowTransparency="true" scrolling="no"></iframe>'
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
getSymbol: function (e) {
|
|
|
|
|
this.postMessage.on("symbolInfo", e);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.EventsWidget.prototype = {
|
|
|
|
|
createWidget: function () {
|
|
|
|
|
var e = this.widgetCode();
|
|
|
|
|
h(e, this.options.container);
|
|
|
|
|
},
|
|
|
|
|
widgetCode: function () {
|
|
|
|
|
var e = l.createUrlParams({ currency: this.options.currency, importance: this.options.importance });
|
|
|
|
|
this.options.type = "events";
|
|
|
|
|
var t = "&" + l.generateUtmForUrlParams(this.options);
|
|
|
|
|
return (
|
|
|
|
|
'<iframe src="' +
|
|
|
|
|
(l.getHost(this.options) + "/eventswidgetembed/?" + e + t) +
|
|
|
|
|
'" width="' +
|
|
|
|
|
this.options.width +
|
|
|
|
|
'"' +
|
|
|
|
|
(this.options.height ? ' height="' + this.options.height + '"' : "") +
|
|
|
|
|
' frameborder="0" scrolling="no"></iframe>'
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.IdeasStreamWidget.prototype = {
|
|
|
|
|
createWidget: function () {
|
|
|
|
|
var e = this.widgetCode();
|
|
|
|
|
h(e, this.options.container);
|
|
|
|
|
var t = this,
|
|
|
|
|
o = document.getElementById(this.id);
|
|
|
|
|
(this.postMessage = l.postMessageWrapper(o.contentWindow, this.id)),
|
|
|
|
|
l.bindEvent(o, "load", function () {
|
|
|
|
|
t._ready = !0;
|
|
|
|
|
for (var e = t._ready_handlers.length; e--; ) t._ready_handlers[e].call(t);
|
|
|
|
|
}),
|
|
|
|
|
t.postMessage.on(
|
|
|
|
|
"resize",
|
|
|
|
|
function (e) {
|
|
|
|
|
if (e.id === t.id) {
|
|
|
|
|
var i = Math.max(e.height, 450);
|
|
|
|
|
o.style.height = i + "px";
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
!0
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
widgetCode: function () {
|
|
|
|
|
var e = this.options,
|
|
|
|
|
t = l.createUrlParams({
|
|
|
|
|
id: this.id,
|
|
|
|
|
width: e.width,
|
|
|
|
|
height: e.height,
|
|
|
|
|
symbol: e.symbol,
|
|
|
|
|
username: e.username,
|
|
|
|
|
mode: e.mode,
|
|
|
|
|
publish_source: e.publishSource,
|
|
|
|
|
sort: e.sort,
|
|
|
|
|
stream: e.stream,
|
|
|
|
|
wait_symbol: e.waitSymbol,
|
|
|
|
|
hide_desc: e.hideDescription,
|
|
|
|
|
s_count: e.startingCount,
|
|
|
|
|
bg_color: e.bgColor,
|
|
|
|
|
h_color: e.headerColor,
|
|
|
|
|
borderColor: e.borderColor,
|
|
|
|
|
locale: e.locale,
|
|
|
|
|
useWidgetHost: Boolean(e.useWidgetHost),
|
|
|
|
|
}),
|
|
|
|
|
o = l.generateUtmForUrlParams(this.options) + "&",
|
|
|
|
|
i = l.getHost(e) + "/ideaswidgetembed/?" + o + t;
|
|
|
|
|
return '<iframe id="' + this.id + '" src="' + i + '" width="' + e.width + '"' + (e.height ? ' height="' + e.height + '"' : "") + ' frameborder="0" allowTransparency="true" scrolling="no"></iframe>';
|
|
|
|
|
},
|
|
|
|
|
setSymbol: function (e) {
|
|
|
|
|
var t = document.getElementById(this.id);
|
|
|
|
|
this.postMessage.post(t.contentWindow, "setSymbol", e);
|
|
|
|
|
},
|
|
|
|
|
ready: function (e) {
|
|
|
|
|
this._ready ? e.call(this) : this._ready_handlers.push(e);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.MiniWidget.prototype = {
|
|
|
|
|
createWidget: function () {
|
|
|
|
|
var e = this.widgetCode(),
|
|
|
|
|
t = this.options;
|
|
|
|
|
if (!t.noLogoOverlay && !t.whitelabel) {
|
|
|
|
|
var o = this.options.greyText || "Quotes by";
|
|
|
|
|
e = l.WidgetAbstract.prototype.addFooterLogo.call(this, e, { greyText: o, linkText: "TradingView" });
|
|
|
|
|
}
|
|
|
|
|
h(e, t.container);
|
|
|
|
|
},
|
|
|
|
|
widgetCode: function () {
|
|
|
|
|
var e = "",
|
|
|
|
|
t = "",
|
|
|
|
|
o = "",
|
|
|
|
|
i = "/miniwidgetembed/",
|
|
|
|
|
n = this.options.width ? "&width=" + encodeURIComponent(this.options.width) : "",
|
|
|
|
|
r = this.options.height ? "&height=" + encodeURIComponent(this.options.height) : "",
|
|
|
|
|
s = this.options.noGraph ? "&noGraph=" + encodeURIComponent(this.options.noGraph) : "",
|
|
|
|
|
a = this.options.locale ? "&locale=" + encodeURIComponent(this.options.locale) : "",
|
|
|
|
|
d = this.options.whitelabel ? "&whitelabel=1" : "";
|
|
|
|
|
this.options.type = "market-overview";
|
|
|
|
|
for (
|
|
|
|
|
var h = "&" + l.generateUtmForUrlParams(this.options),
|
|
|
|
|
c = [
|
|
|
|
|
"large_chart_url",
|
|
|
|
|
"large_chart_target",
|
|
|
|
|
"backgroundColor",
|
|
|
|
|
"gridLineColor",
|
|
|
|
|
"fontColor",
|
|
|
|
|
"underLineColor",
|
|
|
|
|
"underLineBottomColor",
|
|
|
|
|
"trendLineColor",
|
|
|
|
|
"activeTickerBackgroundColor",
|
|
|
|
|
"timeAxisBackgroundColor",
|
|
|
|
|
"locale",
|
|
|
|
|
"styleTickerActiveBg",
|
|
|
|
|
"styleTabActiveBorderColor",
|
|
|
|
|
"styleTickerBodyFontSize",
|
|
|
|
|
"styleTickerBodyFontWeight",
|
|
|
|
|
"styleTickerHeadFontSize",
|
|
|
|
|
"styleTickerHeadFontWeight",
|
|
|
|
|
"styleTickerChangeDownColor",
|
|
|
|
|
"styleTickerChangeUpColor",
|
|
|
|
|
"styleTickerLastDownBg",
|
|
|
|
|
"styleTickerLastUpBg",
|
|
|
|
|
"styleTickerSymbolColor",
|
|
|
|
|
"styleTickerSymbolHoverTextDecoration",
|
|
|
|
|
"styleTickerActiveSymbolTextDecoration",
|
|
|
|
|
"styleTabsActiveBorderColor",
|
|
|
|
|
"styleTabsNoBorder",
|
|
|
|
|
"styleWidgetNoBorder",
|
|
|
|
|
],
|
|
|
|
|
p = "",
|
|
|
|
|
g = c.length - 1;
|
|
|
|
|
g >= 0;
|
|
|
|
|
g--
|
|
|
|
|
) {
|
|
|
|
|
var m = c[g],
|
|
|
|
|
u = this.options[m];
|
|
|
|
|
p += u ? "&" + m + "=" + encodeURIComponent(u) : "";
|
|
|
|
|
}
|
|
|
|
|
var y = function (e) {
|
|
|
|
|
for (var t = [], i = 0; i < e.length; i++) {
|
|
|
|
|
var n = e[i];
|
|
|
|
|
if (l.isArray(n)) {
|
|
|
|
|
var r = encodeURIComponent(n[0]),
|
|
|
|
|
s = encodeURIComponent(n[1]);
|
|
|
|
|
t.push(r), (o += "&" + r + "=" + s);
|
|
|
|
|
} else "string" == typeof n && t.push(encodeURIComponent(n));
|
|
|
|
|
}
|
|
|
|
|
return t.join(",");
|
|
|
|
|
};
|
|
|
|
|
if (this.options.tabs) {
|
|
|
|
|
g = 0;
|
|
|
|
|
for (var w = this.options.tabs.length; g < w; g++) {
|
|
|
|
|
var b = this.options.tabs[g];
|
|
|
|
|
this.options.symbols[b] && (e += (e ? "&" : "") + encodeURIComponent(b) + "=" + y(this.options.symbols[b]));
|
|
|
|
|
}
|
|
|
|
|
t = "&tabs=" + encodeURIComponent(this.options.tabs.join(","));
|
|
|
|
|
} else this.options.symbols && (e = "symbols=" + y(this.options.symbols));
|
|
|
|
|
if (this.options.symbols_description) for (var f in this.options.symbols_description) o += "&" + encodeURIComponent(f) + "=" + encodeURIComponent(this.options.symbols_description[f]);
|
|
|
|
|
this.options.customer && (i = "/" + this.options.customer + i);
|
|
|
|
|
var v = l.getHost(this.options) + i + "?" + e + t + o + p + n + r + s + a + d + h;
|
|
|
|
|
return (
|
|
|
|
|
'<iframe id="' +
|
|
|
|
|
this.id +
|
|
|
|
|
'" src="' +
|
|
|
|
|
v +
|
|
|
|
|
'" width="' +
|
|
|
|
|
this.options.width +
|
|
|
|
|
'"' +
|
|
|
|
|
(this.options.height ? ' height="' + this.options.height + '"' : "") +
|
|
|
|
|
' frameborder="0" allowTransparency="true" scrolling="no" style="margin: 0 !important; padding: 0 !important;"></iframe>'
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
remove: function () {
|
|
|
|
|
var e = document.getElementById("tradingview_widget");
|
|
|
|
|
e.parentNode.removeChild(e);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.MediumWidget.prototype = {
|
|
|
|
|
createWidget: function () {
|
|
|
|
|
var e = this.widgetCode();
|
|
|
|
|
h(e, this.options.container);
|
|
|
|
|
},
|
|
|
|
|
widgetCode: function () {
|
|
|
|
|
var e = "",
|
|
|
|
|
t =
|
|
|
|
|
"symbols=" +
|
|
|
|
|
(function (t) {
|
|
|
|
|
for (var o = [], i = 0; i < t.length; i++) {
|
|
|
|
|
var n = t[i];
|
|
|
|
|
if (l.isArray(n)) {
|
|
|
|
|
var r = encodeURIComponent(n[0]),
|
|
|
|
|
s = encodeURIComponent(n[1]);
|
|
|
|
|
o.push(r), 2 === n.length && (e += "&" + r + "=" + s);
|
|
|
|
|
} else "string" == typeof n && o.push(encodeURIComponent(n));
|
|
|
|
|
}
|
|
|
|
|
return o.join(",");
|
|
|
|
|
})(this.options.symbols),
|
|
|
|
|
o = "&width=" + encodeURIComponent(this.options.width),
|
|
|
|
|
i = "&height=" + encodeURIComponent(this.options.height),
|
|
|
|
|
n = "&colorTheme=" + encodeURIComponent(this.options.colorTheme);
|
|
|
|
|
this.options.type = "symbol-overview";
|
|
|
|
|
var r = "&" + l.generateUtmForUrlParams(this.options);
|
|
|
|
|
for (
|
|
|
|
|
var s = [
|
|
|
|
|
"backgroundColor",
|
|
|
|
|
"gridLineColor",
|
|
|
|
|
"fontColor",
|
|
|
|
|
"widgetFontColor",
|
|
|
|
|
"underLineColor",
|
|
|
|
|
"underLineBottomColor",
|
|
|
|
|
"trendLineColor",
|
|
|
|
|
"activeTickerBackgroundColor",
|
|
|
|
|
"timeAxisBackgroundColor",
|
|
|
|
|
"locale",
|
|
|
|
|
"scalePosition",
|
|
|
|
|
"scaleMode",
|
|
|
|
|
"chartType",
|
|
|
|
|
"color",
|
|
|
|
|
"colorGrowing",
|
|
|
|
|
"colorFalling",
|
|
|
|
|
"lineColor",
|
|
|
|
|
"lineColorGrowing",
|
|
|
|
|
"lineColorFalling",
|
|
|
|
|
"topColor",
|
|
|
|
|
"bottomColor",
|
|
|
|
|
"upColor",
|
|
|
|
|
"downColor",
|
|
|
|
|
"borderUpColor",
|
|
|
|
|
"borderDownColor",
|
|
|
|
|
"wickUpColor",
|
|
|
|
|
"wickDownColor",
|
|
|
|
|
"fontFamily",
|
|
|
|
|
"noTimeScale",
|
|
|
|
|
"valuesTracking",
|
|
|
|
|
"lineWidth",
|
|
|
|
|
"volumeUpColor",
|
|
|
|
|
"volumeDownColor",
|
|
|
|
|
],
|
|
|
|
|
a = "",
|
|
|
|
|
d = s.length - 1;
|
|
|
|
|
d >= 0;
|
|
|
|
|
d--
|
|
|
|
|
) {
|
|
|
|
|
var h = s[d],
|
|
|
|
|
c = this.options[h];
|
|
|
|
|
a += c ? "&" + h + "=" + encodeURIComponent(c) : "";
|
|
|
|
|
}
|
|
|
|
|
var p = this.options.chartOnly ? "&chartOnly=1" : "",
|
|
|
|
|
g = this.options.whitelabel ? "&whitelabel=1" : "",
|
|
|
|
|
m = this.options.isTransparent ? "&isTransparent=1" : "",
|
|
|
|
|
u = this.options.showFloatingTooltip ? "&showFloatingTooltip=1" : "",
|
|
|
|
|
y = this.options.showVolume ? "&showVolume=1" : "",
|
|
|
|
|
w = this.options.hideDateRanges ? "&hideDateRanges=1" : "",
|
|
|
|
|
b = "/mediumwidgetembed/";
|
|
|
|
|
this.options.customer && (b = "/" + this.options.customer + b);
|
|
|
|
|
var f = l.getHost(this.options) + b + "?" + t + e + a + p + g + o + i + n + m + r + u + y + w;
|
|
|
|
|
return (
|
|
|
|
|
'<iframe id="' +
|
|
|
|
|
this.id +
|
|
|
|
|
'" src="' +
|
|
|
|
|
f +
|
|
|
|
|
'" style="margin: 0 !important; padding: 0 !important; ' +
|
|
|
|
|
(this.options.width ? "width: " + this.options.width + "; " : "") +
|
|
|
|
|
(this.options.height ? "height: " + this.options.height + ";" : "") +
|
|
|
|
|
'" frameborder="0" allowTransparency="true" scrolling="no"></iframe>'
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
remove: function () {
|
|
|
|
|
var e = document.getElementById("tradingview_widget");
|
|
|
|
|
e.parentNode.removeChild(e);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.widget.prototype = {
|
|
|
|
|
create: function () {
|
|
|
|
|
this.options.type = this.options.fundamental ? "fundamental" : "chart";
|
|
|
|
|
var e = this.render(),
|
|
|
|
|
t = this;
|
|
|
|
|
this.options.noLogoOverlay || (e = l.WidgetAbstract.prototype.addWrapperFrame.call(this, e)), h(e, this.options.container);
|
|
|
|
|
var o = document.getElementById("tradingview-copyright");
|
|
|
|
|
o && o.parentElement && o.parentElement.removeChild(o),
|
|
|
|
|
(this.iframe = document.getElementById(this.id)),
|
|
|
|
|
(this.postMessage = l.postMessageWrapper(this.iframe.contentWindow, this.id)),
|
|
|
|
|
l.bindEvent(this.iframe, "load", function () {
|
|
|
|
|
t.postMessage.get("widgetReady", {}, function () {
|
|
|
|
|
var e;
|
|
|
|
|
for (t._ready = !0, e = t._ready_handlers.length; e--; ) t._ready_handlers[e].call(t);
|
|
|
|
|
});
|
|
|
|
|
}),
|
|
|
|
|
t.postMessage.on("logoCreated", function (e) {
|
|
|
|
|
if (e.left && e.bottom && e.width && e.height && e.href) {
|
|
|
|
|
t._logoOverlay && (t._logoOverlay.parentNode.removeChild(t._logoOverlay), delete t._logoOverlay);
|
|
|
|
|
var o = document.createElement("a");
|
|
|
|
|
e.text && ((o.textContent = e.text), (o.style.color = "transparent")),
|
|
|
|
|
(o.style.position = "absolute"),
|
|
|
|
|
(o.style.display = "inline-block"),
|
|
|
|
|
(o.style.left = e.left),
|
|
|
|
|
(o.style.bottom = e.bottom),
|
|
|
|
|
(o.style.width = e.width),
|
|
|
|
|
(o.style.height = e.height),
|
|
|
|
|
(o.style.backgroundColor = "transparent"),
|
|
|
|
|
(o.style.pointerEvents = "none"),
|
|
|
|
|
(o.href = e.href),
|
|
|
|
|
o.setAttribute("target", "_blank"),
|
|
|
|
|
(t._logoOverlay = o),
|
|
|
|
|
document.getElementById(t.id + "-wrapper").appendChild(o);
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
t.postMessage.on("setLogoOverlayVisibility", function (e) {
|
|
|
|
|
t._logoOverlay && e && "boolean" == typeof e.visible && (t._logoOverlay.style.display = e.visible ? "inline-block" : "none");
|
|
|
|
|
}),
|
|
|
|
|
t.postMessage.on("openChartInPopup", function (e) {
|
|
|
|
|
for (var o = l.cloneSimpleObject(t.options), i = ["symbol", "interval"], n = i.length - 1; n >= 0; n--) {
|
|
|
|
|
var r = i[n],
|
|
|
|
|
s = e[r];
|
|
|
|
|
s && (o[r] = s);
|
|
|
|
|
}
|
|
|
|
|
o.show_popup_button = !1;
|
|
|
|
|
var a = t.options.popup_width || 900,
|
|
|
|
|
d = t.options.popup_height || 600,
|
|
|
|
|
h = (screen.width - a) / 2,
|
|
|
|
|
c = (screen.height - d) / 2,
|
|
|
|
|
p = window.open(t.generateUrl(o), "_blank", "resizable=yes, top=" + c + ", left=" + h + ", width=" + a + ", height=" + d);
|
|
|
|
|
p && (p.opener = null);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
ready: function (e) {
|
|
|
|
|
this._ready ? e.call(this) : this._ready_handlers.push(e);
|
|
|
|
|
},
|
|
|
|
|
render: function () {
|
|
|
|
|
var e = this.generateUrl();
|
|
|
|
|
return '<iframe id="' + this.id + '" src="' + e + '" style="width: 100%; height: 100%; margin: 0 !important; padding: 0 !important;" frameborder="0" allowTransparency="true" scrolling="no" allowfullscreen></iframe>';
|
|
|
|
|
},
|
|
|
|
|
generateUrl: function (e) {
|
|
|
|
|
var t;
|
|
|
|
|
function o(t, o) {
|
|
|
|
|
return (o = o || t), void 0 === e[t] ? "" : "&" + encodeURIComponent(o) + "=" + (e[t] ? "1" : "0");
|
|
|
|
|
}
|
|
|
|
|
function i(t, o, i) {
|
|
|
|
|
return (i = i || t), e[t] ? "&" + i + "=" + o : "";
|
|
|
|
|
}
|
|
|
|
|
function n(t, o, i) {
|
|
|
|
|
return (i = i || {}), "&" + t + "=" + (e[t] ? encodeURIComponent(JSON.stringify(o)) : encodeURIComponent(JSON.stringify(i)));
|
|
|
|
|
}
|
|
|
|
|
return (
|
|
|
|
|
(t = "cme" === (e = e || this.options).customer ? "/cmewidgetembed/" : e.customer ? "/" + e.customer + "/widgetembed/" : "/widgetembed/"),
|
|
|
|
|
(e.enable_publishing ? l.ideasHost : l.getHost(e)) +
|
|
|
|
|
t +
|
|
|
|
|
"?frameElementId=" +
|
|
|
|
|
this.id +
|
|
|
|
|
"&symbol=" +
|
|
|
|
|
encodeURIComponent(e.symbol) +
|
|
|
|
|
"&interval=" +
|
|
|
|
|
encodeURIComponent(e.interval) +
|
|
|
|
|
(e.range ? "&range=" + encodeURIComponent(e.range) : "") +
|
|
|
|
|
(e.whitelabel ? "&whitelabel=1" : "") +
|
|
|
|
|
(e.hide_top_toolbar ? "&hidetoptoolbar=1" : "") +
|
|
|
|
|
(e.hide_legend ? "&hidelegend=1" : "") +
|
|
|
|
|
o("hide_side_toolbar", "hidesidetoolbar") +
|
|
|
|
|
o("allow_symbol_change", "symboledit") +
|
|
|
|
|
o("save_image", "saveimage") +
|
|
|
|
|
"&toolbarbg=" +
|
|
|
|
|
e.toolbar_bg.replace("#", "") +
|
|
|
|
|
(e.watchlist && e.watchlist.length && e.watchlist.join ? "&watchlist=" + encodeURIComponent(e.watchlist.join("")) : "") +
|
|
|
|
|
i("editablewatchlist", "1") +
|
|
|
|
|
i("details", "1") +
|
|
|
|
|
i("calendar", "1") +
|
|
|
|
|
i("hotlist", "1") +
|
|
|
|
|
(e.studies && l.isArray(e.studies) ? ("string" == typeof e.studies[0] ? i("studies", encodeURIComponent(e.studies.join(""))) : n("studies", e.studies)) : "") +
|
|
|
|
|
o("horztouchdrag") +
|
|
|
|
|
o("verttouchdrag") +
|
|
|
|
|
i("widgetbar_width", e.widgetbar_width, "widgetbarwidth") +
|
|
|
|
|
i("hideideas", "1") +
|
|
|
|
|
i("theme", encodeURIComponent(e.theme)) +
|
|
|
|
|
i("style", encodeURIComponent(e.style)) +
|
|
|
|
|
(void 0 === e.extended_hours ? "" : "&extended_hours=" + e.extended_hours) +
|
|
|
|
|
i("timezone", encodeURIComponent(e.timezone)) +
|
|
|
|
|
i("hideideasbutton", "1") +
|
|
|
|
|
i("withdateranges", "1") +
|
|
|
|
|
i("hidevolume", "1") +
|
|
|
|
|
(void 0 === e.padding ? "" : "&padding=" + e.padding) +
|
|
|
|
|
i("show_popup_button", "1", "showpopupbutton") +
|
|
|
|
|
n("studies_overrides", e.studies_overrides, {}) +
|
|
|
|
|
n("overrides", e.overrides, {}) +
|
|
|
|
|
n("enabled_features", e.enabled_features, []) +
|
|
|
|
|
n("disabled_features", e.disabled_features, []) +
|
|
|
|
|
(e.show_popup_button ? "&showpopupbutton=1" : "") +
|
|
|
|
|
(e.publish_source ? "&publishsource=" + encodeURIComponent(e.publish_source) : "") +
|
|
|
|
|
(e.enable_publishing ? "&enablepublishing=" + encodeURIComponent(e.enable_publishing) : "") +
|
|
|
|
|
(e.venue ? "&venue=" + encodeURIComponent(e.venue) : "") +
|
|
|
|
|
(e.symbology ? "&symbology=" + encodeURIComponent(e.symbology) : "") +
|
|
|
|
|
(e.whotrades ? "&whotrades=" + encodeURIComponent(e.whotrades) : "") +
|
|
|
|
|
(e.locale ? "&locale=" + e.locale : "") +
|
|
|
|
|
(e.referral_id ? "&referral_id=" + e.referral_id : "") +
|
|
|
|
|
(e.no_referral_id ? "&no_referral_id=1" : "") +
|
|
|
|
|
(e.fundamental ? "&fundamental=" + encodeURIComponent(e.fundamental) : "") +
|
|
|
|
|
(e.percentage ? "&percentage=" + encodeURIComponent(e.percentage) : "") +
|
|
|
|
|
"&utm_source=" +
|
|
|
|
|
encodeURI(window.location.hostname) +
|
|
|
|
|
"&utm_medium=" +
|
|
|
|
|
(l.hasCopyright(e.container) ? "widget_new" : "widget") +
|
|
|
|
|
(e.type ? "&utm_campaign=" + e.type : "") +
|
|
|
|
|
(e.type && "chart" === e.type ? "&utm_term=" + encodeURIComponent(e.symbol) : "")
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
image: function (e) {
|
|
|
|
|
this.postMessage.get("imageURL", {}, function (t) {
|
|
|
|
|
var o = l.host + "/x/" + t + "/";
|
|
|
|
|
e(o);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
subscribeToQuote: function (e) {
|
|
|
|
|
var t = document.getElementById(this.id);
|
|
|
|
|
this.postMessage.post(t.contentWindow, "quoteSubscribe"), this.postMessage.on("quoteUpdate", e);
|
|
|
|
|
},
|
|
|
|
|
getSymbolInfo: function (e) {
|
|
|
|
|
this.postMessage.get("symbolInfo", {}, e);
|
|
|
|
|
},
|
|
|
|
|
remove: function () {
|
|
|
|
|
var e = document.getElementById(this.id);
|
|
|
|
|
e.parentNode.removeChild(e);
|
|
|
|
|
},
|
|
|
|
|
reload: function () {
|
|
|
|
|
var e = document.getElementById(this.id),
|
|
|
|
|
t = e.parentNode;
|
|
|
|
|
t.removeChild(e), (t.innerHTML = this.render());
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.chart.prototype = {
|
|
|
|
|
create: function () {
|
|
|
|
|
this.isMobile = l.isMobileDevice.any;
|
|
|
|
|
var e,
|
|
|
|
|
t = this.render(),
|
|
|
|
|
o = this;
|
|
|
|
|
l.chartCssAttached || (l.css(this.renderCss()), (l.chartCssAttached = !0)),
|
|
|
|
|
h(t, this.options.container),
|
|
|
|
|
(e = document.getElementById(this.id)),
|
|
|
|
|
l.bindEvent(e, "load", function () {
|
|
|
|
|
var e;
|
|
|
|
|
for (o._ready = !0, e = o._ready_handlers.length; e--; ) o._ready_handlers[e].call(o);
|
|
|
|
|
}),
|
|
|
|
|
l.onready(function () {
|
|
|
|
|
var t = !1;
|
|
|
|
|
if ((document.querySelector && document.querySelector('a[href$="/v/' + o.options.chart + '/"]') && (t = !0), !t))
|
|
|
|
|
for (var i = document.getElementsByTagName("a"), n = new RegExp("/v/" + o.options.chart + "/$"), r = new RegExp("/chart/([0-9a-zA-Z:+*-/()]+)/" + o.options.chart), s = 0; s < i.length; s++)
|
|
|
|
|
if (n.test(i[s].href) || r.test(i[s].href)) {
|
|
|
|
|
t = !0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
t && ((e.src += "#nolinks"), (e.name = "nolinks"));
|
|
|
|
|
}),
|
|
|
|
|
(this.postMessage = l.postMessageWrapper(e.contentWindow, this.id)),
|
|
|
|
|
this.postMessage.on(
|
|
|
|
|
"toggleFullscreen",
|
|
|
|
|
function (t) {
|
|
|
|
|
e.contentWindow === this.source && o.toggleFullscreen(t.value);
|
|
|
|
|
},
|
|
|
|
|
!0
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
ready: l.widget.prototype.ready,
|
|
|
|
|
renderCss: function () {
|
|
|
|
|
return ".tradingview-widget {position: relative;}";
|
|
|
|
|
},
|
|
|
|
|
render: function () {
|
|
|
|
|
var e = this.options.mobileStatic && this.isMobile ? l.host + "/embed-static/" : l.host + "/embed/",
|
|
|
|
|
t = "?method=script" + (this.options.locale ? "&locale=" + encodeURIComponent(this.options.locale) : "");
|
|
|
|
|
return (
|
|
|
|
|
(this.options.type = "chart"),
|
|
|
|
|
'<div class="tradingview-widget" ' +
|
|
|
|
|
(this.options.autosize ? ' style="width: 100%; height: 100%; margin: 0 !important; padding: 0 !important;"' : ' style="width:' + this.options.width + "px; height:" + this.options.height + 'px;"') +
|
|
|
|
|
'><iframe id="' +
|
|
|
|
|
this.id +
|
|
|
|
|
'" src="' +
|
|
|
|
|
e +
|
|
|
|
|
this.options.chart +
|
|
|
|
|
"/" +
|
|
|
|
|
t +
|
|
|
|
|
"&" +
|
|
|
|
|
l.generateUtmForUrlParams(this.options) +
|
|
|
|
|
'"' +
|
|
|
|
|
(this.options.autosize ? ' style="width: 100%; height: 100%; margin: 0 !important; padding: 0 !important;"' : ' width="' + this.options.width + '" height="' + this.options.height + '"') +
|
|
|
|
|
' frameborder="0" allowTransparency="true" scrolling="no"></iframe></div>'
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
toggleFullscreen: function (e) {
|
|
|
|
|
var t = document.getElementById(this.id);
|
|
|
|
|
e
|
|
|
|
|
? ((t.style.position = "fixed"),
|
|
|
|
|
(t.style.width = "100vw"),
|
|
|
|
|
(t.style.maxWidth = "100%"),
|
|
|
|
|
(t.style.height = "100vh"),
|
|
|
|
|
(t.style.maxHeight = "100%"),
|
|
|
|
|
(t.style.left = "0px"),
|
|
|
|
|
(t.style.top = "0px"),
|
|
|
|
|
(t.style.zIndex = "1000000"),
|
|
|
|
|
(t.style.backgroundColor = "#fff"))
|
|
|
|
|
: ((t.style.position = "static"),
|
|
|
|
|
this.options.autosize ? ((t.style.width = "100%"), (t.style.height = "100%")) : ((t.style.width = this.options.width + "px"), (t.style.height = this.options.height + "px")),
|
|
|
|
|
(t.style.maxWidth = "none"),
|
|
|
|
|
(t.style.maxHeight = "none"),
|
|
|
|
|
(t.style.zIndex = "auto"),
|
|
|
|
|
(t.style.backgroundColor = "transparent"));
|
|
|
|
|
},
|
|
|
|
|
getSymbolInfo: function (e) {
|
|
|
|
|
this.postMessage.get("symbolInfo", {}, e);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.stream.prototype = {
|
|
|
|
|
create: function () {
|
|
|
|
|
this.isMobile = l.isMobileDevice.any;
|
|
|
|
|
var e = this.render();
|
|
|
|
|
h(e, this.options.container);
|
|
|
|
|
},
|
|
|
|
|
render: function () {
|
|
|
|
|
var e = "?" + (this.options.locale ? "&locale=" + encodeURIComponent(this.options.locale) : "");
|
|
|
|
|
return (
|
|
|
|
|
(this.options.type = "chart"),
|
|
|
|
|
'<div class="tradingview-widget" ' +
|
|
|
|
|
(this.options.autosize ? ' style="width: 100%; height: 100%; margin: 0 !important; padding: 0 !important;"' : ' style="width:' + this.options.width + "px; height:" + this.options.height + 'px;"') +
|
|
|
|
|
'><iframe id="' +
|
|
|
|
|
this.id +
|
|
|
|
|
'" src="' +
|
|
|
|
|
l.host +
|
|
|
|
|
this.options.stream +
|
|
|
|
|
"/embed/" +
|
|
|
|
|
e +
|
|
|
|
|
"&" +
|
|
|
|
|
l.generateUtmForUrlParams(this.options) +
|
|
|
|
|
'"' +
|
|
|
|
|
(this.options.autosize ? ' style="width: 100%; height: 100%; margin: 0 !important; padding: 0 !important;"' : ' width="' + this.options.width + '" height="' + this.options.height + '"') +
|
|
|
|
|
' frameborder="0" allowTransparency="true" scrolling="no"></iframe></div>'
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
(l.postMessageWrapper =
|
|
|
|
|
((o = {}),
|
|
|
|
|
(i = {}),
|
|
|
|
|
(n = {}),
|
|
|
|
|
(r = 0),
|
|
|
|
|
(s = 0),
|
|
|
|
|
window.addEventListener &&
|
|
|
|
|
window.addEventListener("message", function (e) {
|
|
|
|
|
var n;
|
|
|
|
|
try {
|
|
|
|
|
n = JSON.parse(e.data);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (n && n.provider && "TradingView" === n.provider)
|
|
|
|
|
if (((n.source = e.source), "get" === n.type)) {
|
|
|
|
|
if (!i[n.name]) return;
|
|
|
|
|
i[n.name].forEach(function (e) {
|
|
|
|
|
"function" == typeof e &&
|
|
|
|
|
e.call(n, n.data, function (e) {
|
|
|
|
|
var o = { id: n.id, type: "on", name: n.name, client_id: n.client_id, data: e, provider: "TradingView" };
|
|
|
|
|
t.postMessage(JSON.stringify(o), "*");
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
} else if ("on" === n.type) o[n.client_id] && o[n.client_id][n.id] && (o[n.client_id][n.id].call(n, n.data), delete o[n.client_id][n.id]);
|
|
|
|
|
else if ("post" === n.type) {
|
|
|
|
|
if (!i[n.name]) return;
|
|
|
|
|
i[n.name].forEach(function (e) {
|
|
|
|
|
"function" == typeof e && e.call(n, n.data, function () {});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
function (e, a) {
|
|
|
|
|
return (
|
|
|
|
|
(o[a] = {}),
|
|
|
|
|
(n[a] = e),
|
|
|
|
|
(t = e),
|
|
|
|
|
{
|
|
|
|
|
on: function (e, t, o) {
|
|
|
|
|
(i[e] && o) || (i[e] = []), i[e].push(t);
|
|
|
|
|
},
|
|
|
|
|
off: function (e, t) {
|
|
|
|
|
if (!i[e]) return !1;
|
|
|
|
|
var o = i[e].indexOf(t);
|
|
|
|
|
o > -1 && i[e].splice(o, 1);
|
|
|
|
|
},
|
|
|
|
|
get: function (e, t, i) {
|
|
|
|
|
var s = { id: r++, type: "get", name: e, client_id: a, data: t, provider: "TradingView" };
|
|
|
|
|
(o[a][s.id] = i), n[a].postMessage(JSON.stringify(s), "*");
|
|
|
|
|
},
|
|
|
|
|
post: function (e, t, o) {
|
|
|
|
|
var i = { id: s++, type: "post", name: t, data: o, provider: "TradingView" };
|
|
|
|
|
e && "function" == typeof e.postMessage && e.postMessage(JSON.stringify(i), "*");
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
})),
|
|
|
|
|
(l.getUrlParams = function () {
|
|
|
|
|
for (
|
|
|
|
|
var e = /\+/g,
|
|
|
|
|
t = /([^&=]+)=?([^&]*)/g,
|
|
|
|
|
o = window.location.search.substring(1),
|
|
|
|
|
i = t.exec(o),
|
|
|
|
|
n = function (t) {
|
|
|
|
|
return decodeURIComponent(t.replace(e, " "));
|
|
|
|
|
},
|
|
|
|
|
r = {};
|
|
|
|
|
i;
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
(r[n(i[1])] = n(i[2])), (i = t.exec(o));
|
|
|
|
|
return r;
|
|
|
|
|
}),
|
|
|
|
|
(l.createUrlParams = function (e) {
|
|
|
|
|
var t = [];
|
|
|
|
|
for (var o in e) e.hasOwnProperty(o) && null != e[o] && t.push(encodeURIComponent(o) + "=" + encodeURIComponent(e[o]));
|
|
|
|
|
return t.join("&");
|
|
|
|
|
});
|
|
|
|
|
var h = function (e, t) {
|
|
|
|
|
var o = document.getElementById(t);
|
|
|
|
|
if (o) {
|
|
|
|
|
o.innerHTML = e;
|
|
|
|
|
var i = o.parentElement && o.parentElement.querySelector(".tradingview-widget-copyright");
|
|
|
|
|
i && (i.style.width = o.querySelector("iframe").style.width);
|
|
|
|
|
} else document.write(e);
|
|
|
|
|
document.body.appendChild(l.embedStylesForCopyright());
|
|
|
|
|
},
|
|
|
|
|
c = function (e, t) {
|
|
|
|
|
for (var o in t) "object" == typeof t[o] && e.hasOwnProperty(o) ? c(e[o], t[o]) : (e[o] = t[o]);
|
|
|
|
|
return e;
|
|
|
|
|
};
|
|
|
|
|
window.TradingView ? c(window.TradingView, l) : (window.TradingView = l);
|
|
|
|
|
}
|
|
|
|
|
})();
|