HOME


Mini Shell 1.0
DIR: /home/dhnidqcz/journal.pragmaticsng.org/plugins__47455f6/generic/citations/js/
Upload File :
Current File : /home/dhnidqcz/journal.pragmaticsng.org/plugins__47455f6/generic/citations/js/citations.js
const citationsContainer = document.querySelector('.citations-container');
const citationsLoader = document.querySelector('#citations-loader');
const citationsImagePath = citationsContainer.getAttribute('data-image-path');
const citationUrl = citationsContainer.getAttribute('data-citations-url');
const citationProvider = citationsContainer.getAttribute('data-citations-provider');
const citationShowTotal = citationsContainer.getAttribute('data-citations-total');
const citationShowList = citationsContainer.getAttribute('data-citations-list');
const showGoogle = citationsContainer.getAttribute('data-show-google');
const showPmc = citationsContainer.getAttribute('data-show-pmc');

fetch(citationUrl, {
	method: 'GET',
}).then(function (response) {
	if (response.ok) {
		return response.json();
	} else
		throw new Error('Error getting API Data!');
}).then((data) => {
	displayTotalContent(data.content);
	displayListContent(data.content);
	citationsLoader.style.display = 'none';
}).catch(error => {
	citationsLoader.style.display = 'none';
	console.log(error);
});

function displayTotalContent(data) {
	if (citationProvider && citationShowTotal) {
		let crossrefTotal = document.querySelector('.citations-count-crossref');
		let scopusTotal = document.querySelector('.citations-count-scopus');
		let gridColumns = "1fr";
		switch (citationProvider) {
			case 'crossref':
				crossrefTotal.style.display = 'block';
				crossrefTotal.querySelector('.badge_total').innerText = data["crossref_count"] ? data["crossref_count"] : 0;
				break;
			case 'scopus':
				scopusTotal.style.display = 'block';
				scopusTotal.querySelector('.badge_total').innerText = data["scopus_count"] ? data["scopus_count"] : 0;
				break;
			case 'all':
				crossrefTotal.style.display = 'block';
				scopusTotal.style.display = 'block';
				crossrefTotal.querySelector('.badge_total').innerText = data["crossref_count"] ? data["crossref_count"] : 0;
				scopusTotal.querySelector('.badge_total').innerText = data["scopus_count"] ? data["scopus_count"] : 0;
				gridColumns += ' 1fr';
				break;
		}
		if (showGoogle === "1") {
			document.querySelector('.citations-count-google').style.display = 'block';
			gridColumns += ' 1fr';
		}
		if (showPmc === "1") {
			document.querySelector('.citations-count-pmc').style.display = 'block';
			document.querySelector('.citations-count-pmc').querySelector('.badge_total').innerText = data["pmc_count"] ? data["pmc_count"] : 0;
			gridColumns += ' 1fr';
		}
		document.querySelector('.citations-count').style.gridTemplateColumns = gridColumns;
		if (gridColumns.length === 3) {
			document.querySelector('.citations-count').querySelector('img').style.maxWidth = '50%';
		}
	}
}

function displayListContent(data) {
	if (citationShowList) {
		let list = data[citationProvider + '_list'];
		if (list && list.length > 0)
			for (let item of list) {
				document.querySelector('.citations-list').appendChild(createListElement(item));
			}
	}
}

function createListElement(item) {
	let outerDiv = document.createElement('div');
	let img = document.createElement("img");
	img.src = citationsImagePath + '/' + item['type'] + '.png';
	img.alt = item['type'] + " Logo";
	/*outerDiv.appendChild(img);*/
	let author = document.createElement('div');
	author.innerHTML = item['authors'] + ' (' + item['year'] + ')';
	outerDiv.appendChild(author);
	let title = document.createElement('span');
	title.style.fontWeight = 'bold';
	title.innerHTML = item['article_title'] + '. ';
	outerDiv.append(title);
	if (item['journal_title'] && item['journal_title'] !== '')
		outerDiv.append(item['journal_title'] + ', ');
	if (item['volume'] && item['volume'] !== '') {
		outerDiv.append(" " + item['volume']);
		if (item['issue'] && item['issue'] !== '')
			outerDiv.append("(" + item['issue'] + '), ');
		else
			outerDiv.append(", ");
	}
	if (item['first_page'] && item['first_page'] !== ' :')
		outerDiv.append(item['first_page'] + '.');
	outerDiv.appendChild(document.createElement('br'));
	let doi = document.createElement('a');
	doi.href = "https://doi.org/" + item['doi'];
	doi.target = "_blank";
	doi.rel = "noreferrer";
	doi.innerText = item['doi'];
	outerDiv.append(doi);
	return outerDiv;
}