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:
@@ -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 = '';
|
||||
|
||||
@@ -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%;">
|
||||
|
||||
@@ -16,10 +16,12 @@
|
||||
'DELETE',
|
||||
function (result) {
|
||||
loadRoms();
|
||||
loadMediaGroups();
|
||||
closeSubDialog();
|
||||
},
|
||||
function (error) {
|
||||
loadRoms();
|
||||
loadMediaGroups();
|
||||
closeSubDialog();
|
||||
}
|
||||
);
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -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>";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user