Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2022, 22:50
Новичок на форуме
Отправить личное сообщение для rfnj Посмотреть профиль Найти все сообщения от rfnj
 
Регистрация: 10.11.2021
Сообщений: 7

как правильно построить диаграмму JQPlot
Здравствуйте. Я столкнулся с такой проблемой. Почему-то не
не появляется всплывающее окно значения.

Если зайти на страницу
https://steamcommunity.com/market/li...htmares%20Case
и вставить в консоль код выведет диаграмму, но зум и всплывающие значения диаграммы не выводятся. Возможно это из-за функции pricehistory_zoomMonthOrLifetime. Как её правильно написать?

let itemInfoDiv = document.getElementById("largeiteminfo");
let itemDiagramHistory = `<div id="diagram_history"></div>`;
itemInfoDiv.insertAdjacentHTML('afterend', itemDiagramHistory);
var lineHistory=[["Jan 21 2022 01: +0",10.675,"76680"],["Jan 22 2022 01: +0",6.173,"70330"],["Jan 23 2022 01: +0",4.914,"62767"],["Jan 24 2022 01: +0",4.328,"52950"],["Jan 25 2022 01: +0",3.996,"51942"],["Jan 26 2022 01: +0",3.329,"52060"],["Jan 27 2022 01: +0",3.007,"53145"],["Jan 28 2022 01: +0",2.833,"58964"],["Jan 29 2022 01: +0",2.639,"62989"],["Jan 30 2022 01: +0",2.32,"62221"],["Jan 31 2022 01: +0",2.149,"57524"],["Feb 01 2022 01: +0",2.253,"52495"],["Feb 02 2022 01: +0",2.249,"53070"],["Feb 03 2022 01: +0",2.177,"52633"],["Feb 04 2022 01: +0",2.091,"56569"],["Feb 05 2022 01: +0",2.028,"59364"],["Feb 06 2022 01: +0",1.827,"59430"],["Feb 07 2022 01: +0",1.677,"57285"],["Feb 08 2022 01: +0",1.595,"53459"],["Feb 09 2022 01: +0",1.458,"54600"],["Feb 10 2022 01: +0",1.478,"53461"],["Feb 11 2022 01: +0",1.53,"57660"],["Feb 12 2022 01: +0",1.537,"61756"],["Feb 13 2022 01: +0",1.478,"58925"],["Feb 14 2022 01: +0",1.371,"49140"],["Feb 15 2022 01: +0",1.348,"51438"],["Feb 16 2022 01: +0",1.382,"52438"],["Feb 17 2022 01: +0",1.376,"50224"],["Feb 18 2022 01: +0",1.37,"57686"],["Feb 19 2022 01: +0",1.347,"61149"],["Feb 20 2022 01: +0",1.248,"59893"],["Feb 21 2022 01: +0",1.2,"56376"],["Feb 22 2022 01: +0",1.207,"58730"],["Feb 23 2022 01: +0",1.187,"58204"]]

m_timePriceHistoryEarliest = new Date();
if (lineHistory != false) {
	m_timePriceHistoryEarliest = new Date(lineHistory[0][0]);
	m_timePriceHistoryLatest = new Date(lineHistory[lineHistory.length - 1][0]);
}



m_plotPriceHistory = CreateMyPriceHistoryGraph(lineHistory, 5, "$", "");

pricehistory_zoomMonthOrLifetime(m_plotPriceHistory, m_timePriceHistoryEarliest, m_timePriceHistoryLatest);

function CreateMyPriceHistoryGraph(lineHistory, numYAxisTicks, strFormatPrefix, strFormatSuffix) {
	var plot = $J.jqplot('diagram_history', [lineHistory], {
		title: { text: 'Медиана цен', textAlign: 'left' },
		gridPadding: { left: 45, right: 45, top: 25 },
		axesDefaults: { showTickMarks: false },
		axes: {
			xaxis: {
				renderer: $J.jqplot.DateAxisRenderer,
				tickOptions: { formatString: '%b %#d<span class="priceHistoryTime"> %#I%p<span>' },
				pad: 1
			},
			yaxis: {
				pad: 1.1,
				tickOptions: { formatString: strFormatPrefix + '%0.2f' + strFormatSuffix, labelPosition: 'start', showMark: false },
				numberTicks: numYAxisTicks
			}
		},
		grid: {
			gridLineColor: '#1b2939',
			borderColor: '#1b2939',
			background: '#101822'
		},
		cursor: {
			show: true,
			zoom: true,
			showTooltip: false
		},
		highlighter: {
			show: true,
			lineWidthAdjust: 2.5,
			sizeAdjust: 5,
			showTooltip: true,
			tooltipLocation: 'n',
			tooltipOffset: 20,
			fadeTooltip: true,
			yvalues: 2,
			formatString: '<strong>%s</strong><br>%s<br>Продано: %d'
		},
		series: [{ lineWidth: 3, markerOptions: { show: false, style: 'circle' } }],
		seriesColors: ["#688F3E"]
	});

	plot.defaultNumberTicks = numYAxisTicks;
	return plot;
}

function GetYAXisForPriceHistoryGraph(plotPriceHistory, timeMin, timeMax) {
	var min = -1;
	var max = 0.06;
	for (var index in plotPriceHistory.series[0].data) {
		var rgData = plotPriceHistory.series[0].data[index];
		if (rgData[0] >= timeMin.getTime() && rgData[0] <= timeMax.getTime()) {
			if (rgData[1] > max) {
				max = rgData[1];
			}

			if (rgData[1] < min || min == -1) {
				min = rgData[1];
			}
		}
	}

	return $J.jqplot.LinearTickGenerator(min, max, null, plotPriceHistory.defaultNumberTicks, false, false);
}



function pricehistory_zoomMonthOrLifetime(plotPriceHistory, timePriceHistoryEarliest, timePriceHistoryLatest) {
	var timeMonthAgo = new Date(timePriceHistoryLatest.getTime() - (30 * 24 * 60 * 60 * 1000));
	plotPriceHistory.resetZoom();

	var days = (timePriceHistoryLatest.getTime() - timePriceHistoryEarliest.getTime()) / (24 * 60 * 60 * 1000);
	if (days / 7 < 1) {
		var difference = timePriceHistoryLatest.getTime() - timePriceHistoryEarliest.getTime();
		plotPriceHistory.axes.xaxis.ticks = [timePriceHistoryEarliest, new Date(timePriceHistoryEarliest.getTime() + difference * 0.25), new Date(timePriceHistoryEarliest.getTime() + difference * 0.5), new Date(timePriceHistoryEarliest.getTime() + difference * 0.75), timePriceHistoryLatest];
	}
	else {
		plotPriceHistory.axes.xaxis.tickInterval = (days / 7) + " days";
	}
	if (timePriceHistoryEarliest > timeMonthAgo)
		plotPriceHistory.axes.xaxis.min = timePriceHistoryEarliest;
	else
		plotPriceHistory.axes.xaxis.min = timeMonthAgo;
	plotPriceHistory.axes.xaxis.max = timePriceHistoryLatest;

	var rgYAxis = GetYAXisForPriceHistoryGraph(plotPriceHistory, plotPriceHistory.axes.xaxis.min, timePriceHistoryLatest);
	plotPriceHistory.axes.yaxis.min = rgYAxis[0];
	plotPriceHistory.axes.yaxis.max = rgYAxis[1];
	plotPriceHistory.axes.yaxis.numberTicks = rgYAxis[2];
	plotPriceHistory.axes.yaxis.tickInterval = rgYAxis[4];

	plotPriceHistory.replot();

	$J('#diagram_history').children().first().remove();
	$J('#diagram_history').children().last().remove();

	return false;
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно организовать подключение скриптов? s24344 Общие вопросы Javascript 0 31.12.2018 11:53
Как правильно подключить стили в webpack? s24344 Сборка проекта, утилиты 0 08.11.2018 09:00
Пасоны, как правильно парсить параметры? megaupload Оффтопик 15 05.05.2013 14:44
Как правильно прицепить обработку события slowklg Events/DOM/Window 6 15.03.2012 16:20
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14