Refactor of http client and addition of sonarr anime table
This commit is contained in:
@@ -8,9 +8,11 @@ const refreshFrontEnd = async () => {
|
||||
|
||||
var moviesTitle = document.getElementById("moviesTitle");
|
||||
var seriesTitle = document.getElementById("seriesTitle");
|
||||
var animeSeriesTitle = document.getElementById("animeSeriesTitle");
|
||||
|
||||
moviesTitle.innerHTML = await getMediaCleanerMoviesTitle();
|
||||
seriesTitle.innerHTML = await getMediaCleanerSeriesTitle();
|
||||
animeSeriesTitle.innerHTML = await getMediaCleanerAnimeSeriesTitle();
|
||||
|
||||
await populateTables();
|
||||
addClickHandlersToLinks();
|
||||
@@ -48,6 +50,16 @@ const updateMediaCleanerState = async () => {
|
||||
return response.json();
|
||||
};
|
||||
|
||||
const getMediaCleanerAnimeSeriesTitle = async () => {
|
||||
const response = await fetch("/mediacleaner/state/getAnimeSeriesTitle");
|
||||
|
||||
if(!response.ok){
|
||||
throw new Error(`Response status: ${response.status}`);
|
||||
}
|
||||
|
||||
return response.json();
|
||||
};
|
||||
|
||||
const getMediaCleanerSeriesTitle = async () => {
|
||||
const response = await fetch("/mediacleaner/state/getSeriesTitle");
|
||||
|
||||
@@ -72,6 +84,11 @@ const getMediaCleanerMoviesTitle = async () => {
|
||||
const populateTables = async () => {
|
||||
var moviesInfo = await getMediaCleanerMovieInfo();
|
||||
var seriesInfo = await getMediaCleanerSeriesInfo();
|
||||
var animeSeriesInfo = await getMediaCleanerAnimeSeriesInfo();
|
||||
|
||||
var seriesTable = document.getElementById("seriesTable");
|
||||
var moviesTable = document.getElementById("moviesTable");
|
||||
var animeSeriesTable = document.getElementById("animeSeriesTable");
|
||||
|
||||
var seriesTableBody = seriesTable.getElementsByTagName('tbody')[0];
|
||||
seriesTableBody.replaceChildren();
|
||||
@@ -81,6 +98,10 @@ const populateTables = async () => {
|
||||
moviesTableBody.replaceChildren();
|
||||
var moviesDeleteButton = document.getElementById('moviesDeleteButton');
|
||||
|
||||
var animeSeriesTableBody = animeSeriesTable.getElementsByTagName('tbody')[0];
|
||||
animeSeriesTableBody.replaceChildren();
|
||||
var animeSeriesDeleteButton = document.getElementById('animeSeriesDeleteButton');
|
||||
|
||||
if (moviesInfo.length > 0){
|
||||
for(let i = 0; i < moviesInfo.length; i++){
|
||||
var row = moviesTableBody.insertRow(-1);
|
||||
@@ -120,7 +141,30 @@ const populateTables = async () => {
|
||||
var row = seriesTableBody.insertRow(-1);
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.colSpan = columnCount;
|
||||
cell1.innerHTML = "No stale series found.";
|
||||
cell1.innerHTML = "No stale tv series found.";
|
||||
cell1.className = "table-text";
|
||||
}
|
||||
|
||||
if(animeSeriesInfo.length > 0){
|
||||
for(let i = 0; i < animeSeriesInfo.length; i++){
|
||||
var row = animeSeriesTableBody.insertRow(-1);
|
||||
var cell1 = row.insertCell(0);
|
||||
var cell2 = row.insertCell(1);
|
||||
var cell3 = row.insertCell(2);
|
||||
cell1.innerHTML = animeSeriesInfo[i].Name;
|
||||
cell1.className = "table-text";
|
||||
cell2.innerHTML = animeSeriesInfo[i].Seasons.map(season => season).join(", ");
|
||||
cell2.className = "table-text";
|
||||
cell3.appendChild(createCheckbox(animeSeriesInfo[i], animeSeriesTable, animeSeriesDeleteButton));
|
||||
cell3.className = "table-checkbox"
|
||||
}
|
||||
}
|
||||
else{
|
||||
var columnCount = animeSeriesTableBody.tHead.rows[0].cells.length;
|
||||
var row = animeSeriesTableBody.insertRow(-1);
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.colSpan = columnCount;
|
||||
cell1.innerHTML = "No stale anime series found.";
|
||||
cell1.className = "table-text";
|
||||
}
|
||||
};
|
||||
@@ -179,8 +223,10 @@ const addClickHandlersToLinks = () => {
|
||||
const addClickHandlersToDeleteButtons = () => {
|
||||
const deleteMoviesButtonElement = document.getElementById("moviesDeleteButton");
|
||||
const deleteSeriesButtonElement = document.getElementById("seriesDeleteButton");
|
||||
const deleteAnimeSeriesButtonElement = document.getElementById("animeSeriesDeleteButton");
|
||||
deleteMoviesButtonElement.addEventListener("click", deleteFromRadarr);
|
||||
deleteSeriesButtonElement.addEventListener("click", deleteFromSonarr);
|
||||
deleteAnimeSeriesButtonElement.addEventListener("click", deleteFromSonarrAnime);
|
||||
}
|
||||
|
||||
const getCheckedMedia = (table) => {
|
||||
@@ -219,6 +265,20 @@ const deleteSeriesFromSonarrApi = async (series) => {
|
||||
}
|
||||
}
|
||||
|
||||
const deleteSeriesFromSonarrAnimeApi = async (series) => {
|
||||
const response = await fetch("/sonarr/deleteSeriesFromSonarrAnime", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(series)
|
||||
});
|
||||
|
||||
if(!response.ok){
|
||||
throw new Error(`Response status: ${response.status}`)
|
||||
}
|
||||
}
|
||||
|
||||
const deleteFromRadarr = async () => {
|
||||
const selectedMovies = getCheckedMedia(moviesTable);
|
||||
selectedMovies.forEach(async movie => await deleteMovieFromRadarrApi(movie));
|
||||
@@ -231,6 +291,12 @@ const deleteFromSonarr = () => {
|
||||
refreshFrontEnd();
|
||||
}
|
||||
|
||||
const deleteFromAnimeSonarr = () => {
|
||||
const selectedSeries = getCheckedMedia(animeSeriesTable);
|
||||
selectedSeries.forEach(async series => await deleteSeriesFromSonarrApi(series));
|
||||
refreshFrontEnd();
|
||||
}
|
||||
|
||||
const finishLoading = () => {
|
||||
const loadingElement = document.getElementById("loading");
|
||||
const homepage = document.getElementById("homepage");
|
||||
|
||||
Reference in New Issue
Block a user