# elasticpress/4.2.2/assets/js/stats.js

ElasticPress, version 4.2.2. 146 lines.

- Page: https://pluginprobe.com/plugins/elasticpress/4.2.2/code/assets/js/stats.js
- Raw: https://pluginprobe.com/plugins/elasticpress/4.2.2/raw/assets/js/stats.js
- Modified: 2022-03-08T21:28:26+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/elasticpress/4.2.2/code/assets/js/stats.js#L10-L20`.

```javascript
/* eslint-disable no-new */

import Chart from 'chart.js';

const { epChartData } = window;

/**
 * Generates a random string representing a color.
 *
 * @returns {string} Random color
 */
function getRandomColor() {
	const letters = '0123456789ABCDEF';
	let color = '#';

	for (let i = 0; i < 6; i += 1) {
		color += letters[Math.floor(Math.random() * 16)];
	}

	return color;
}

const barData = Object.entries(epChartData.indices_data);
const barLabels = [];
const barDocs = [];
const barColors = [];

Chart.defaults.global.legend.labels.usePointStyle = true;

barData.forEach(function (data) {
	barLabels.push(data[1].name);
	barDocs.push(data[1].docs);
	barColors.push(getRandomColor());
});

const documentChart = document.getElementById('documentChart');
if (documentChart) {
	new Chart(documentChart, {
		type: 'horizontalBar',
		data: {
			labels: barLabels,
			datasets: [
				{
					label: 'Documents',
					backgroundColor: barColors,
					data: barDocs,
				},
			],
		},
		options: {
			legend: {
				display: false,
			},
			title: {
				display: true,
			},
		},
	});
}

const queriesTotalChart = document.getElementById('queriesTotalChart');
if (queriesTotalChart) {
	new Chart(document.getElementById('queriesTotalChart'), {
		type: 'pie',
		data: {
			labels: ['Indexing operations', 'Total Query operations'],
			datasets: [
				{
					label: '',
					backgroundColor: ['#5ba9a7', '#2e7875', '#a980a4'],
					data: [epChartData.index_total, epChartData.query_total],
				},
			],
		},
		options: {
			responsive: false,
			title: {
				display: true,
			},
			legend: {
				position: 'right',
			},
			tooltips: {
				callbacks: {
					/**
					 * Appends the string operations before tooltip value
					 *
					 * @param {object} item Chat item
					 * @param {object} data Data
					 * @returns {string} Operations
					 */
					label(item, data) {
						const dataset = data.datasets[item.datasetIndex];
						const currentValue = dataset.data[item.index];

						return `Operations: ${currentValue}`;
					},
				},
			},
		},
	});
}

const queriesTimeChart = document.getElementById('queriesTimeChart');
if (queriesTimeChart) {
	new Chart(queriesTimeChart, {
		type: 'pie',
		data: {
			labels: ['Avg indexing time in ms', 'Avg query time in ms'],
			datasets: [
				{
					label: '',
					backgroundColor: ['#9ea6c7', '#93b3d5'],
					data: [epChartData.index_time_in_millis, epChartData.query_time_in_millis],
				},
			],
		},
		options: {
			responsive: false,
			title: {
				display: true,
			},
			legend: {
				position: 'right',
			},
			tooltips: {
				callbacks: {
					/**
					 * Appends the string milliseconds after tooltip value
					 *
					 * @param {object} item Tooltip item
					 * @param {object} data Tooltip data
					 * @returns {string} current value in milliseconds
					 */
					label(item, data) {
						const dataset = data.datasets[item.datasetIndex];
						const currentValue = dataset.data[item.index];

						return `${+currentValue} milliseconds`;
					},
				},
			},
		},
	});
}

```
