| | |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.GetMarketStatus = function(symbol) { |
| | | return 2; |
| | | }; // 一直交易 |
| | | |
| | | // HQChart 各数据接口均需纳入轮询(IsAutoUpdate 无效);切换 tab 后通常只触发历史类请求 |
| | | const POLL_REQUEST_TYPES = new Set([ |
| | | "MinuteChartContainer::RequestMinuteData", |
| | | "MinuteChartContainer::RequestHistoryMinuteData", |
| | | "KLineChartContainer::RequestHistoryData", |
| | | "KLineChartContainer::RequestRealtimeData", |
| | | "KLineChartContainer::RequestFlowCapitalData", |
| | | "KLineChartContainer::ReqeustHistoryMinuteData", |
| | | "KLineChartContainer::RequestMinuteRealtimeData", |
| | | ]); |
| | | const REFRESH_INTERVAL = 10000; |
| | | |
| | | function DefaultData() {} |
| | | |
| | | DefaultData.GetMinuteOption = function() { |
| | |
| | | ], |
| | | |
| | | Symbol: "AAPL.usa", |
| | | IsAutoUpdate: true, // 是自动更新数据 |
| | | IsAutoUpdate: false, |
| | | AutoUpdateFrequency: 20000, |
| | | DayCount: 1, // 1 最新交易日数据 >1 多日走势图 |
| | | IsShowRightMenu: false, // 是否显示右键菜单 |
| | |
| | | // { Index: 'MACD', Modify: true, Change: true, Close: false } |
| | | ], |
| | | Symbol: "600015.sh", |
| | | IsAutoUpdate: true, // 是自动更新数据 |
| | | IsAutoUpdate: false, |
| | | AutoUpdateFrequency: 15000, |
| | | IsApiPeriod: true, |
| | | IsShowRightMenu: false, // 是否显示右键菜单 |
| | |
| | | |
| | | VolChartHeight: 10, |
| | | chartType: "kline", |
| | | timerss: null, |
| | | refreshHandlers: {}, |
| | | refreshTimer: null, |
| | | isShow: false, |
| | | xData: [], |
| | | }; |
| | |
| | | // 自适应K线图 |
| | | var elementResizeDetectorMaker = require("element-resize-detector"); |
| | | |
| | | // 创建实例,无参数 |
| | | var erd = elementResizeDetectorMaker(); // 使用默认选项(将使用基于对象的方法)。 |
| | | |
| | | // 创建实例带参数 |
| | | // 使用基于超快速滚动的方法。 |
| | | // 这是推荐的策略。 |
| | | elementResizeDetectorMaker({ |
| | | this.erd = elementResizeDetectorMaker({ |
| | | // var erdUltraFast = elementResizeDetectorMaker({ |
| | | strategy: "scroll", |
| | | callOnAdd: true, // callOnAdd选项,用于确定在添加侦听器时是否应调用它们。默认为true。 |
| | |
| | | var self = this; |
| | | // 侦听元素的调整大小事件,并使用元素作为调整大小事件的参数来调用侦听器函数。传递给函数的选项将 |
| | | // 覆盖实例选项 |
| | | erd.listenTo(this.$refs["rightContent"], function(element) { |
| | | this.erd.listenTo(this.$refs["rightContent"], function(element) { |
| | | var width = element.offsetWidth; |
| | | var height = element.offsetHeight; |
| | | self.tableHeight = height - 10; // 将监听到的宽高进行赋值 |
| | |
| | | }); |
| | | }, |
| | | beforeDestroy() { |
| | | clearInterval(this.timerss); // 在组件销毁前清除定时器 |
| | | this.timerss = null |
| | | this.stopRefreshTimer(); |
| | | if (this.erd && this.$refs.rightContent) { |
| | | this.erd.uninstall(this.$refs.rightContent); |
| | | this.erd = null; |
| | | } |
| | | window.onresize = null; |
| | | }, |
| | | methods: { |
| | | resetRefreshHandlers() { |
| | | this.refreshHandlers = {}; |
| | | }, |
| | | |
| | | startRefreshTimer() { |
| | | if (this.refreshTimer) { |
| | | return; |
| | | } |
| | | this.refreshTimer = setInterval(() => { |
| | | Object.values(this.refreshHandlers).forEach(({ data, callback }) => { |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | }); |
| | | }, REFRESH_INTERVAL); |
| | | }, |
| | | |
| | | stopRefreshTimer() { |
| | | if (this.refreshTimer) { |
| | | clearInterval(this.refreshTimer); |
| | | this.refreshTimer = null; |
| | | } |
| | | this.refreshHandlers = {}; |
| | | }, |
| | | |
| | | OnSize() { |
| | | var width = this.$refs.right.clientWidth; |
| | |
| | | this.IsShowRightMenu = isShowRightMenu; |
| | | |
| | | this.Symbol = symbol; |
| | | this.resetRefreshHandlers(); |
| | | this.Chart.ChangeSymbol(this.Symbol); |
| | | this.KLineChart.ChangeSymbol(this.Symbol); |
| | | }, |
| | |
| | | //分时额外处理才注释的 |
| | | this.chartType = type; |
| | | this.KLinePeriodIndex = index; |
| | | this.resetRefreshHandlers(); |
| | | this.KLineChart.ChangePeriod(item.ID); |
| | | }, |
| | | |
| | |
| | | item // K线复权 |
| | | ) { |
| | | this.KLineRightIndex = index; |
| | | this.resetRefreshHandlers(); |
| | | this.KLineChart.ChangeRight(item.ID); |
| | | }, |
| | | |
| | |
| | | callback // 第3方数据替换接口 |
| | | ) { |
| | | EastMoney.HQData.Log("[HQChartDemo::NetworkFilter] data", data); |
| | | // console.log(data.Name,123123); |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | this.timerss = setInterval(() => { |
| | | switch (data.Name) { |
| | | // 分时图数据对接 |
| | | case "MinuteChartContainer::RequestMinuteData": |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "MinuteChartContainer::RequestHistoryMinuteData": |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | |
| | | case "KLineChartContainer::RequestHistoryData": // 日线全量数据下载 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestRealtimeData": // 日线实时数据更新 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestFlowCapitalData": // 流通股本 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::ReqeustHistoryMinuteData": // 分钟全量数据下载 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestMinuteRealtimeData": // 分钟增量数据更新 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | } |
| | | }, 10000); |
| | | |
| | | |
| | | if (!POLL_REQUEST_TYPES.has(data.Name)) { |
| | | return; |
| | | } |
| | | // 始终更新为最新 callback,避免切换 tab 后仍用旧周期参数轮询 |
| | | this.refreshHandlers[data.Name] = { data, callback }; |
| | | this.startRefreshTimer(); |
| | | }, |
| | | |
| | | handleSelect(key, keyPath) { |