Refactored code, and added Amiga CDTV and CD32, and ColecoVision to the PlatformMap (#252)

* More bug fixes

* Update PlatformMap for Amiga CDTV and CD32, and ColecoVision

* Fixed default platform setting for library scan

* Refactor of rematcher

* Temp unzips are no longer deleted immediately - now kept and cleaned up after 5 minutes

* Library Scan now spawns worker processes to perform scans in parallel. Number of workers is limited by MaxWorkers default = 4

* More logging

* More null reference checks

* Overhaul of ROM and MediaGroup handling in web page

* Minor collections updates

* Newlines are now replaced with breaks in HTML on Game summary page
This commit is contained in:
Michael Green
2024-01-10 12:57:31 +11:00
committed by GitHub
parent 7d5419d33c
commit 7f2e186d06
33 changed files with 977 additions and 484 deletions

View File

@@ -42,15 +42,18 @@
var statusText = result[i].buildStatus;
var downloadLink = '';
var packageSize = '-';
var inProgress = false;
switch (result[i].buildStatus) {
case 'NoStatus':
statusText = '-';
break;
case "WaitingForBuild":
statusText = 'Build pending';
inProgress = true;
break;
case "Building":
statusText = 'Building';
inProgress = true;
break;
case "Completed":
statusText = 'Available';
@@ -64,6 +67,10 @@
statusText = result[i].buildStatus;
break;
}
if (inProgress == true) {
setTimeout(GetCollections, 10000);
}
var editButton = '';
var deleteButton = '';

View File

@@ -97,6 +97,18 @@
BIOS files for each platform will be stored in /BIOS
</td>
</tr>
<!-- <tr>
<th>
Archive format
</th>
<td>
<select id="collection_archiveformat" style="width: 100%;">
<option id="collection_archiveformat_zip" selected="selected" value="Zip">Zip</option>
<option id="collection_archiveformat_rar" value="RAR">RAR</option>
<option id="collection_archiveformat_7z" value="SevenZip">7z</option>
</select>
</td>
</tr> -->
</table>
</div>
<table style="position: absolute; top: 0px; right: 0px; bottom: 0px; width: 60%;">

View File

@@ -16,10 +16,12 @@
'DELETE',
function (result) {
loadRoms();
loadMediaGroups();
closeSubDialog();
},
function (error) {
loadRoms();
loadMediaGroups();
closeSubDialog();
}
);

View File

@@ -71,6 +71,7 @@
</div>
<div id="gamesummarymediagroups" style="display: none;">
<h3>Media Groups</h3>
<div id="gamesummarymediagroupscontent"></div>
</div>
<div id="gamesummaryroms">
<span id="rom_edit" class="romlink" onclick="DisplayROMCheckboxes(true);">Edit</span>
@@ -85,6 +86,21 @@
<button id="rom_edit_creategroup" onclick="createMgGroup();" disabled="disabled">Create Media Group</button>
</div>
</div>
<div id="games_library_controls">
<div class="games_library_controlblock">
<input id="name_filter" type="text" placeholder="Name Search">
</div>
<div class="games_library_controlblock">
<select id="platform_filter"></select>
</div>
<div class="games_library_controlblock">
<button value="Search" onclick="loadRoms();">Search</button>
</div>
<div class="games_library_controlblock">
<span class="games_library_label">0 ROMs</span>
</div>
</div>
<div id="gamesummaryromscontent"></div>
</div>
<div id="gamesummarysimilar" style="display: none;">
<h3>Similar Games</h3>
@@ -144,9 +160,9 @@
var gameSummaryLabel = document.getElementById('gamesummarytext_label');
if (result.summary || result.storyline) {
if (result.summary) {
gameSummaryLabel.innerHTML = result.summary;
gameSummaryLabel.innerHTML = result.summary.replaceAll("\n", "<br />");
} else {
gameSummaryLabel.innerHTML = result.storyline;
gameSummaryLabel.innerHTML = result.storyline.replaceAll("\n", "<br />");
}
if (gameSummaryLabel.offsetHeight < gameSummaryLabel.scrollHeight ||
@@ -161,21 +177,30 @@
gameSummaryLabel.setAttribute('style', 'display: none;');
}
// load artwork
if (result.artworksItem) {
artworks = result.artworksItem;
var startPos = randomIntFromInterval(0, result.artworksItem.length);
artworksPosition = startPos;
rotateBackground();
// load cover
var gameSummaryCover = document.getElementById('gamesummary_cover');
var gameImage = document.createElement('img');
gameImage.className = 'game_cover_image';
if (result.cover) {
ajaxCall('/api/v1.1/games/' + gameId + '/cover', 'GET', function (coverResult) {
if (coverResult) {
gameImage.src = '/api/v1.1/Games/' + gameId + '/cover/image/cover_big/' + coverResult.imageId + '.jpg';
loadArtwork(result, coverResult);
} else {
gameImage.src = '/images/unknowngame.png';
gameImage.className = 'game_cover_image unknown';
loadArtwork(result);
}
});
} else {
var bg = document.getElementById('bgImage');
if (result.coverItem) {
bg.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/cover/image/original/' + result.coverItem.imageId + '.jpg"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);');
} else {
var randomInt = randomIntFromInterval(1, 3);
bg.setAttribute('style', 'background-image: url("/images/gamebg' + randomInt + '.jpg"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);');
}
gameImage.src = '/images/unknowngame.png';
gameImage.className = 'game_cover_image unknown';
loadArtwork(result);
}
gameSummaryCover.appendChild(gameImage);
// load companies
var gameHeaderDeveloperLabel = document.getElementById('gamedeveloper_label');
@@ -231,18 +256,6 @@
gamePublisherLabel.setAttribute('style', 'display: none;');
}
// load cover
var gameSummaryCover = document.getElementById('gamesummary_cover');
var gameImage = document.createElement('img');
gameImage.className = 'game_cover_image';
if (result.cover) {
gameImage.src = '/api/v1.1/Games/' + result.id + '/cover/image/cover_big/' + result.coverItem.imageId + '.jpg';
} else {
gameImage.src = '/images/unknowngame.png';
gameImage.className = 'game_cover_image unknown';
}
gameSummaryCover.appendChild(gameImage);
// load release date
var gameSummaryRelease = document.getElementById('gamesummary_firstrelease');
if (result.firstReleaseDate) {
@@ -314,6 +327,34 @@
gameSummaryGenres.setAttribute('style', 'display: none;');
}
// get platforms
var platformFilter = document.getElementById('platform_filter');
platformFilter.style.width = "200px";
$(platformFilter).select2({
minimumResultsForSearch: Infinity
});
ajaxCall('/api/v1.1/Games/' + gameId + '/platforms', 'GET', function (result) {
// add default option
var platformFilter_default = document.createElement('option');
platformFilter_default.value = "-1";
platformFilter_default.innerHTML = "All Platforms";
platformFilter_default.selected = "selected";
platformFilter.appendChild(platformFilter_default);
for (var i = 0; i < result.length; i++) {
var platformFilter_opt = document.createElement('option');
platformFilter_opt.value = result[i].key;
platformFilter_opt.innerHTML = result[i].value;
platformFilter.appendChild(platformFilter_opt);
}
// load media groups
loadMediaGroups();
// load roms
loadRoms(false, 1);
});
// load screenshots
var gameScreenshots = document.getElementById('gamescreenshots');
if (result.screenshots || result.videos) {
@@ -325,19 +366,23 @@
if (result.videos) {
imageIndex = result.videos.ids.length;
}
if (result.screenshotsItem) {
for (var i = 0; i < result.screenshotsItem.length; i++) {
var screenshotItem = document.createElement('div');
screenshotItem.id = 'gamescreenshots_gallery_' + imageIndex;
screenshotItem.setAttribute('name', 'gamescreenshots_gallery_item');
screenshotItem.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/screenshots/' + result.screenshotsItem[i].id + '/image/screenshot_thumb/' + result.screenshotsItem[i].imageId + '.jpg"); background-position: center; background-repeat: no-repeat; background-size: contain;)');
screenshotItem.setAttribute('imageid', imageIndex);
screenshotItem.setAttribute('imagetype', 0);
screenshotItem.className = 'gamescreenshots_gallery_item';
screenshotItem.setAttribute('onclick', 'selectScreenshot(' + imageIndex + ');');
gameScreenshots_Gallery.appendChild(screenshotItem);
imageIndex += 1;
}
if (result.screenshots) {
ajaxCall('/api/v1.1/Games/' + gameId + '/screenshots', 'GET', function (screenshotsItem) {
for (var i = 0; i < screenshotsItem.length; i++) {
var screenshotItem = document.createElement('div');
screenshotItem.id = 'gamescreenshots_gallery_' + imageIndex;
screenshotItem.setAttribute('name', 'gamescreenshots_gallery_item');
screenshotItem.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/screenshots/' + screenshotsItem[i].id + '/image/screenshot_thumb/' + screenshotsItem[i].imageId + '.jpg"); background-position: center; background-repeat: no-repeat; background-size: contain;)');
screenshotItem.setAttribute('imageid', imageIndex);
screenshotItem.setAttribute('imagetype', 0);
screenshotItem.className = 'gamescreenshots_gallery_item';
screenshotItem.setAttribute('onclick', 'selectScreenshot(' + imageIndex + ');');
gameScreenshots_Gallery.appendChild(screenshotItem);
imageIndex += 1;
}
selectScreenshot(0);
});
}
// load videos
@@ -387,7 +432,7 @@
selectScreenshot(0);
});
} else {
selectScreenshot(0);
//selectScreenshot(0);
}
} else {
gamescreenshots.setAttribute('style', 'display: none;');
@@ -414,30 +459,125 @@
gameSummarySimilar.setAttribute('style', 'display: none;');
}
});
// load roms
loadRoms(false);
});
function loadRoms(displayCheckboxes, pageNumber, selectedPlatform, nameSearch) {
function loadMediaGroups() {
ajaxCall('/api/v1.1/Games/' + gameId + '/romgroup', 'GET', function (result) {
// display media groups
var mediaGroup = document.getElementById('gamesummarymediagroups');
var mediaGroupDiv = document.getElementById('gamesummarymediagroupscontent');
if (result.length == 0) {
mediaGroup.style.display = 'none';
} else {
console.log(result);
mediaGroup.style.display = '';
mediaGroupDiv.innerHTML = '';
var mgTable = document.createElement('table');
mgTable.id = 'mediagrouptable';
mgTable.className = 'romtable';
mgTable.setAttribute('cellspacing', 0);
mgTable.appendChild(createTableRow(true, ['Platform', 'Images', 'Size', '', '', '']));
lastPlatform = '';
for (var i = 0; i < result.length; i++) {
var mediaGroup = result[i];
// get rom details including emulator and friendly platform name
var launchButton = '';
if (mediaGroup.emulator) {
if (mediaGroup.emulator.type.length > 0) {
launchButton = '<a href="/index.html?page=emulator&engine=' + mediaGroup.emulator.type + '&core=' + mediaGroup.emulator.core + '&platformid=' + mediaGroup.platformId + '&gameid=' + gameId + '&rompath=' + encodeURIComponent('/api/v1.1/Games/' + gameId + '/romgroup/' + mediaGroup.id + '/' + gameData.name + '(' + mediaGroup.id + ')' + '.zip') + '" class="romstart">Launch</a>';
}
}
var statusText = mediaGroup.status;
var downloadLink = '';
var packageSize = '-';
var launchButtonContent = '';
var inProgress = false;
switch (mediaGroup.status) {
case 'NoStatus':
statusText = '-';
break;
case "WaitingForBuild":
statusText = 'Build pending';
inProgress = true;
break;
case "Building":
statusText = 'Building';
inProgress = true;
break;
case "Completed":
statusText = 'Available';
downloadLink = '<a href="/api/v1.1/Games/' + gameId + '/romgroup/' + mediaGroup.id + '/' + gameData.name + '.zip" class="romlink"><img src="/images/download.svg" class="banner_button_image" alt="Download" title="Download" /></a>';
packageSize = formatBytes(mediaGroup.size);
launchButtonContent = launchButton;
break;
case "Failed":
statusText = 'Build error';
break;
default:
statusText = result[i].buildStatus;
break;
}
if (inProgress == true) {
setTimeout(loadMediaGroups, 10000);
}
var deleteButton = '<a href="#" onclick="showSubDialog(\'mediagroupdelete\', ' + mediaGroup.id + ');" class="romlink"><img src="/images/delete.svg" class="banner_button_image" alt="Delete" title="Delete" /></a>';
var newRow = [
mediaGroup.platform,
mediaGroup.romIds.length,
packageSize,
statusText,
launchButtonContent,
'<div style="text-align: right;">' + downloadLink + deleteButton + '</div>'
]
mgTable.appendChild(createTableRow(false, newRow, 'romrow', 'romcell'));
var mgRomRow = document.createElement('tr');
var mgRomCell = document.createElement('td');
mgRomCell.setAttribute('colspan', 6);
mgRomCell.className = 'romGroupTitles';
// iterate the group members
var groupMembers = [];
for (var r = 0; r < mediaGroup.roms.length; r++) {
groupMembers.push(mediaGroup.roms[r]);
}
groupMembers.sort((a, b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0));
var groupMemberNames = [];
for (var r = 0; r < groupMembers.length; r++) {
groupMemberNames.push(groupMembers[r].name);
}
mgRomCell.innerHTML = groupMemberNames.join("<br />");
mgRomRow.appendChild(mgRomCell);
mgTable.appendChild(mgRomRow);
}
mediaGroupDiv.appendChild(mgTable);
}
});
}
function loadRoms(displayCheckboxes, pageNumber) {
if (!pageNumber) {
pageNumber = 1;
}
if (selectedPlatform == undefined) {
selectedPlatform = -1;
}
selectedPlatform = $('#platform_filter').select2('data')[0].id;
var nameSearchQuery = '';
if (nameSearch != undefined) {
var nameSearch = document.getElementById('name_filter').value;
if (nameSearch != undefined && nameSearch != "") {
nameSearchQuery = '&NameSearch=' + encodeURIComponent(nameSearch);
}
var filterControlBlock = document.getElementById('games_library_controls');
if (filterControlBlock) {
filterControlBlock.remove();
}
var existingTable = document.getElementById('romtable');
if (existingTable) {
existingTable.remove();
@@ -448,11 +588,6 @@
romPager.remove();
}
var existingMgTable = document.getElementById('mediagrouptable');
if (existingMgTable) {
existingMgTable.remove();
}
if (displayCheckboxes == undefined) {
if (document.getElementById('rom_edit_panel').style.display == 'none') {
displayCheckboxes = false;
@@ -461,14 +596,12 @@
}
}
var gameRoms = document.getElementById('gamesummaryroms');
var gameRomsSection = document.getElementById('gamesummaryroms');
var gameRoms = document.getElementById('gamesummaryromscontent');
var pageSize = 20;
ajaxCall('/api/v1.1/Games/' + gameId + '/roms?pageNumber=' + pageNumber + '&pageSize=' + pageSize + '&platformId=' + selectedPlatform + nameSearchQuery, 'GET', function (result) {
drawRomFilterTools(result, gameRoms, displayCheckboxes, pageNumber, selectedPlatform, nameSearch);
if (result.gameRomItems) {
var gameRomItems = result.gameRomItems;
var mediaGroups = result.mediaGroups;
// display roms
var newTable = document.createElement('table');
@@ -558,193 +691,37 @@
romPaginator.appendChild(nextPage);
gameRoms.appendChild(romPaginator);
}
// display media groups
var mediaGroupDiv = document.getElementById('gamesummarymediagroups');
if (mediaGroups.length == 0) {
mediaGroupDiv.style.display = 'none';
} else {
mediaGroupDiv.style.display = '';
var mgTable = document.createElement('table');
mgTable.id = 'mediagrouptable';
mgTable.className = 'romtable';
mgTable.setAttribute('cellspacing', 0);
mgTable.appendChild(createTableRow(true, ['Platform', 'Images', 'Size', '', '', '']));
lastPlatform = '';
for (var i = 0; i < mediaGroups.length; i++) {
var mediaGroup = mediaGroups[i];
// get rom details including emulator and friendly platform name
var launchButton = '';
for (var r = 0; r < gameRomItems.length; r++) {
var gameRomItem = gameRomItems[r];
if (gameRomItem.platformId == mediaGroup.platformId) {
if (gameRomItem.emulator) {
if (gameRomItem.emulator.type.length > 0) {
launchButton = '<a href="/index.html?page=emulator&engine=' + gameRomItem.emulator.type + '&core=' + gameRomItem.emulator.core + '&platformid=' + gameRomItem.platformId + '&gameid=' + gameId + '&rompath=' + encodeURIComponent('/api/v1.1/Games/' + gameId + '/romgroup/' + mediaGroup.id + '/' + gameData.name + '(' + mediaGroup.id + ')' + '.zip') + '" class="romstart">Launch</a>';
break;
}
}
}
}
var statusText = mediaGroup.status;
var downloadLink = '';
var packageSize = '-';
var launchButtonContent = '';
switch (mediaGroup.status) {
case 'NoStatus':
statusText = '-';
break;
case "WaitingForBuild":
statusText = 'Build pending';
break;
case "Building":
statusText = 'Building';
break;
case "Completed":
statusText = 'Available';
downloadLink = '<a href="/api/v1.1/Games/' + gameId + '/romgroup/' + mediaGroup.id + '/' + gameData.name + '.zip" class="romlink"><img src="/images/download.svg" class="banner_button_image" alt="Download" title="Download" /></a>';
packageSize = formatBytes(mediaGroup.size);
launchButtonContent = launchButton;
break;
case "Failed":
statusText = 'Build error';
break;
default:
statusText = result[i].buildStatus;
break;
}
var deleteButton = '<a href="#" onclick="showSubDialog(\'mediagroupdelete\', ' + mediaGroup.id + ');" class="romlink"><img src="/images/delete.svg" class="banner_button_image" alt="Delete" title="Delete" /></a>';
var newRow = [
mediaGroup.platformName,
mediaGroup.romIds.length,
packageSize,
statusText,
launchButtonContent,
'<div style="text-align: right;">' + downloadLink + deleteButton + '</div>'
]
mgTable.appendChild(createTableRow(false, newRow, 'romrow', 'romcell'));
var mgRomRow = document.createElement('tr');
var mgRomCell = document.createElement('td');
mgRomCell.setAttribute('colspan', 6);
mgRomCell.className = 'romGroupTitles';
// iterate the group members
var groupMembers = [];
for (var r = 0; r < mediaGroup.romIds.length; r++) {
for (var x = 0; x < gameRomItems.length; x++) {
if (mediaGroup.romIds[r] == gameRomItems[x].id) {
groupMembers.push(gameRomItems[x]);
}
}
}
groupMembers.sort((a, b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0));
var groupMemberNames = [];
for (var r = 0; r < groupMembers.length; r++) {
groupMemberNames.push(groupMembers[r].name);
}
mgRomCell.innerHTML = groupMemberNames.join("<br />");
mgRomRow.appendChild(mgRomCell);
mgTable.appendChild(mgRomRow);
}
mediaGroupDiv.appendChild(mgTable);
gameRomsSection.appendChild(gameRoms);
}
} else {
gameRoms.setAttribute('style', 'display: none;');
gameRomsSection.setAttribute('style', 'display: none;');
}
},
function(error) {
drawRomFilterTools(error, gameRoms, displayCheckboxes, pageNumber, selectedPlatform, nameSearch);
});
}
function drawRomFilterTools(result, gameRoms, displayCheckboxes, pageNumber, selectedPlatform, nameSearch) {
// display filter tools
var filterControls = document.createElement('div');
filterControls.id = "games_library_controls";
var nameSearchFilterBlock = document.createElement('div');
nameSearchFilterBlock.className = 'games_library_controlblock';
var nameSearchbox = document.createElement('input');
nameSearchbox.id = 'name_filter';
nameSearchbox.type = 'text';
if (nameSearch) {
nameSearchbox.value = nameSearch;
}
nameSearchbox.setAttribute('placeholder', "Name Search");
nameSearchFilterBlock.appendChild(nameSearchbox);
filterControls.appendChild(nameSearchFilterBlock);
var platformFilterBlock = document.createElement('div');
platformFilterBlock.className = 'games_library_controlblock';
var platformFilterOpt = document.createElement('select');
platformFilterOpt.id = "platform_filter";
var platformFilterOptDefault = document.createElement('option');
platformFilterOptDefault.value = '-1';
platformFilterOptDefault.innerHTML = 'All Platforms';
if (selectedPlatform == -1) {
platformFilterOptDefault.selected = 'selected';
}
platformFilterOpt.appendChild(platformFilterOptDefault);
if (result.platforms) {
for (var i = 0; i < result.platforms.length; i++) {
var platformFilterOptValue = document.createElement('option');
platformFilterOptValue.value = result.platforms[i].key;
platformFilterOptValue.innerHTML = result.platforms[i].value;
if (selectedPlatform == Number(result.platforms[i].key)) {
platformFilterOptValue.selected = 'selected';
}
platformFilterOpt.appendChild(platformFilterOptValue);
}
}
platformFilterBlock.appendChild(platformFilterOpt);
$(platformFilterOpt).select2({
minimumResultsForSearch: Infinity
});
filterControls.appendChild(platformFilterBlock);
var searchButtonFilterBlock = document.createElement('div');
searchButtonFilterBlock.className = 'games_library_controlblock';
var searchButton = document.createElement('button');
searchButton.value = 'Search';
searchButton.innerHTML = 'Search';
searchButton.setAttribute('onclick', 'loadRoms(' + undefined + ', ' + 1 + ', Number(document.getElementById("platform_filter").value), document.getElementById("name_filter").value);');
searchButtonFilterBlock.appendChild(searchButton);
filterControls.appendChild(searchButtonFilterBlock);
var romCounter = document.createElement('div');
romCounter.className = 'games_library_controlblock';
var romCounterLabel = document.createElement('span');
romCounterLabel.className = 'games_library_label';
if (result.count) {
if (result.count < 1000) {
romCounterLabel.innerHTML = result.count + ' ROMs';
} else {
romCounterLabel.innerHTML = 'Maximum of 1000 ROMs';
}
function loadArtwork(game, cover) {
// show default background
var bg = document.getElementById('bgImage');
if (cover) {
bg.setAttribute('style', 'background-image: url("/api/v1.1/Games/' + gameId + '/cover/image/original/' + cover.imageId + '.jpg"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);');
} else {
romCounterLabel.innerHTML = '0 ROMs';
var randomInt = randomIntFromInterval(1, 3);
bg.setAttribute('style', 'background-image: url("/images/gamebg' + randomInt + '.jpg"); background-position: center; background-repeat: no-repeat; background-size: cover; filter: blur(10px); -webkit-filter: blur(10px);');
}
romCounter.appendChild(romCounterLabel);
filterControls.appendChild(romCounter);
gameRoms.appendChild(filterControls);
// // load artwork
// if (game.artworks) {
// ajaxCall('/api/v1.1/games/' + gameId + '/artwork', 'GET', function (result) {
// artworks = result;
// var startPos = randomIntFromInterval(0, result.length);
// artworksPosition = startPos;
// rotateBackground();
// });
// }
}
function rotateBackground() {
@@ -778,6 +755,7 @@
gameScreenshots_Main.innerHTML = '';
switch (gameScreenshots_Selected.getAttribute('imagetype')) {
case "0":
default:
// screenshot
gameScreenshots_Main.setAttribute('style', gameScreenshots_Selected.getAttribute('style').replace("/image/screenshot_thumb", "/image/original"));
break;
@@ -1096,10 +1074,12 @@
function (result) {
DisplayROMCheckboxes(false);
loadRoms();
loadMediaGroups();
},
function (error) {
DisplayROMCheckboxes(false);
loadRoms();
loadMediaGroups();
},
JSON.stringify(romIds)
);

View File

@@ -3,7 +3,6 @@
</div>
<div id="games_filter_scroller">
<div id="games_filter"></div>
</div>
<div id="games_home">
<div id="games_home_box">
@@ -38,9 +37,8 @@
<script type="text/javascript">
ajaxCall('/api/v1.1/Filter', 'GET', function (result) {
var filterElement = document.getElementById('games_filter');
var scrollerElement = document.getElementById('games_filter_scroller');
formatFilterPanel(filterElement, scrollerElement, result);
formatFilterPanel(scrollerElement, result);
executeFilter1_1();
});

View File

@@ -149,7 +149,7 @@
moment(result[i].eventTime).format("YYYY-MM-DD h:mm:ss a"),
result[i].eventType,
result[i].process,
result[i].message
result[i].message.replaceAll("\n", "<br />")
];
surroundingRow.appendChild(createTableRow(false, newRow, '', 'romcell logs_table_cell'));

View File

@@ -82,7 +82,7 @@
var nextRunTime = moment(result[i].nextRunTime).format("YYYY-MM-DD h:mm:ss a");
var startButton = '';
if (userProfile.roles.includes("Admin")) {
if (result[i].allowManualStart == true && result[i].itemState != "Running") {
if (result[i].allowManualStart == true && ![ "Running"].includes(result[i].itemState) && result[i].isBlocked == false) {
startButton = "<span id='startProcess' class='romstart' onclick='StartProcess(\"" + result[i].itemType + "\");'>Start</span>";
}
}

View File

@@ -1,6 +1,11 @@
var existingSearchModel;
function formatFilterPanel(targetElement, scrollerElement, result) {
function formatFilterPanel(containerElement, result) {
containerElement.innerHTML = '';
var targetElement = document.createElement('div');
targetElement.id = 'games_filter';
var panel = document.createElement('div');
panel.id = 'filter_panel_box';
@@ -115,8 +120,6 @@ function formatFilterPanel(targetElement, scrollerElement, result) {
buttonsDiv.appendChild(resetButton);
scrollerElement.appendChild(buttonsDiv);
// set order by values
var orderByCookie = getCookie('games_library_orderby_select');
if (orderByCookie) {
@@ -126,6 +129,10 @@ function formatFilterPanel(targetElement, scrollerElement, result) {
if (orderByDirectionCookie) {
document.getElementById('games_library_orderby_direction_select').value = orderByDirectionCookie;
}
containerElement.appendChild(targetElement);
containerElement.appendChild(buttonsDiv);
}
function buildFilterPanel(targetElement, headerString, friendlyHeaderString, valueList, showToggle, initialDisplay) {
@@ -422,7 +429,7 @@ function executeFilter1_1(pageNumber, pageSize) {
'POST',
function (result) {
var gameElement = document.getElementById('games_library');
formatGamesPanel(gameElement, result, pageNumber, pageSize);
formatGamesPanel(gameElement, result, pageNumber, pageSize, true);
},
function (error) {
console.log('An error occurred: ' + JSON.stringify(error));

View File

@@ -55,7 +55,9 @@ var ClassificationRatings = {
"ACB_RC": "Refused Classification"
};
function formatGamesPanel(targetElement, result, pageNumber, pageSize) {
var pageReloadInterval;
function formatGamesPanel(targetElement, result, pageNumber, pageSize, forceScrollTop) {
console.log("Displaying page: " + pageNumber);
console.log("Page size: " + pageSize);
@@ -66,7 +68,9 @@ function formatGamesPanel(targetElement, result, pageNumber, pageSize) {
}
if (pageMode == 'paged') {
window.scrollTo(0, 0);
if (forceScrollTop == true) {
window.scrollTo(0, 0);
}
}
var pagerCheck = document.getElementById('games_library_pagerstore');
@@ -193,6 +197,18 @@ function formatGamesPanel(targetElement, result, pageNumber, pageSize) {
break;
}
}
// var pageReloadFunction = function() {
// formatGamesPanel(targetElement, result, pageNumber, pageSize, false);
// ajaxCall('/api/v1.1/Filter', 'GET', function (result) {
// var scrollerElement = document.getElementById('games_filter_scroller');
// formatFilterPanel(scrollerElement, result);
// })
// };
// window.clearTimeout(pageReloadInterval);
// pageReloadInterval = setTimeout(pageReloadFunction, 10000);
}
function isScrolledIntoView(elem) {

View File

@@ -415,6 +415,8 @@ function GetTaskFriendlyName(TaskName, options) {
return "Compress collection id: " + options;
case 'BackgroundDatabaseUpgrade':
return "Background database upgrade";
case 'TempCleanup':
return "Temporary directory cleanup";
default:
return TaskName;
}

View File

@@ -459,6 +459,7 @@ input[id='filter_panel_userrating_max'] {
margin-left: 10px;
display: inline-block;
vertical-align: top;
text-align: left;
}
.games_library_label {