FreeCompetitors2/app.js
2024-05-14 17:21:25 +02:00

68 lines
3.3 KiB
JavaScript

// ==UserScript==
// @name Free Competitors 2.0
// @namespace https://suod.madiator.com
// @description Script to search and display software and recommendations
// @license AGPLv3
// ==/UserScript==
function searchSoftware() {
const query = document.getElementById('searchBox').value;
// Clear previous results and recommendations
document.getElementById('results').innerHTML = '';
document.getElementById('recommendations').innerHTML = '';
fetch(`/software/${query}`)
.then(response => response.json())
.then(data => displayResults([data]))
.catch(error => console.error('Error:', error));
fetch(`/recommendations?q=${query}`)
.then(response => response.json())
.then(data => displayRecommendations(data))
.catch(error => console.error('Error:', error));
}
function displayResults(data) {
const resultsSection = document.getElementById('results');
resultsSection.innerHTML = '';
data.forEach(software => {
const softwareDiv = document.createElement('div');
softwareDiv.classList.add('software');
softwareDiv.innerHTML = `
<h2><img src="${software.links?.icon ?? '#'}" alt="${software.names[0]} logo"> ${software.names[0]}</h2>
<p>${software.comment}</p>
<p><strong>Platforms:</strong> ${software.platforms?.join(', ') ?? 'Unknown'}</p>
<p><strong>Licenses:</strong> ${software.licenses?.join(', ') ?? 'Unknown'}</p>
<p><strong>Interfaces:</strong> ${software.interface?.join(', ') ?? 'Unknown'}</p>
<p><strong>Programming Languages:</strong> ${software.languages?.join(', ') ?? 'Unknown'}</p>
<p><strong>Issues:</strong> ${software.issues?.join(', ') ?? 'None'}</p>
<a href="${software.links?.website ?? '#'}" target="_blank">Website</a>
<a href="${software.links?.wikipedia ?? '#'}" target="_blank">Wikipedia</a>
`;
resultsSection.appendChild(softwareDiv);
});
}
function displayRecommendations(data) {
const recommendationsSection = document.getElementById('recommendations');
recommendationsSection.innerHTML = '';
data.forEach(({software, score}) => {
const softwareDiv = document.createElement('div');
softwareDiv.classList.add('software');
softwareDiv.innerHTML = `
<h2><img src="${software.links?.icon ?? '#'}" alt="${software.names[0]} logo"> ${software.names[0]}</h2>
<p>Score: ${score}</p>
<p>${software.comment}</p>
<p><strong>Platforms:</strong> ${software.platforms?.join(', ') ?? 'Unknown'}</p>
<p><strong>Licenses:</strong> ${software.licenses?.join(', ') ?? 'Unknown'}</p>
<p><strong>Interfaces:</strong> ${software.interface?.join(', ') ?? 'Unknown'}</p>
<p><strong>Programming Languages:</strong> ${software.languages?.join(', ') ?? 'Unknown'}</p>
<p><strong>Issues:</strong> ${software.issues?.join(', ') ?? 'None'}</p>
<a href="${software.links?.website ?? '#'}" target="_blank">Website</a>
<a href="${software.links?.wikipedia ?? '#'}" target="_blank">Wikipedia</a>
`;
recommendationsSection.appendChild(softwareDiv);
});
}