diff --git a/resources/report/js/script.js b/resources/report/js/script.js
index 845ca139..b387f4c3 100644
--- a/resources/report/js/script.js
+++ b/resources/report/js/script.js
@@ -170,20 +170,20 @@ function showMessageDialog(title, text) {
clone.id = 'modalDialog';
- clone.children[0].className += ' warn';
+ clone.getElementsByTagName('span')[0].className += ' warn';
- clone.children[1].textContent = title;
- clone.children[2].textContent = text;
+ clone.getElementsByTagName('h1')[0].textContent = title;
+ clone.getElementsByTagName('p')[0].textContent = text;
var overlay = document.getElementById('overlay');
overlay.removeEventListener('click', hideDialog, false);
showElement(overlay);
- clone.children[3].children[0].setAttribute('data-dialog', clone.id);
- clone.children[3].children[0].addEventListener('click', hideDialog, false);
+ clone.getElementsByClassName('accept')[0].setAttribute('data-dialog', clone.id);
+ clone.getElementsByClassName('accept')[0].addEventListener('click', hideDialog, false);
- clone.children[3].children[1].setAttribute('data-dialog', clone.id);
- clone.children[3].children[1].addEventListener('click', hideDialog, false);
+ clone.getElementsByClassName('cancel')[0].setAttribute('data-dialog', clone.id);
+ clone.getElementsByClassName('cancel')[0].addEventListener('click', hideDialog, false);
}
function showMessageBox(type, title, text) {
@@ -238,12 +238,11 @@ function processButtonClick(evt) {
} else if (action == 'redate-plugins') {
redatePlugins();
} else if (action == 'clear-metadata') {
- clearMetadata(evt.target.parentNode.parentNode.parentNode.parentNode.children[0].textContent);
+ clearMetadata(evt.target.getAttribute('data-target'));
} else if (action == 'wipe-userlist') {
clearAllMetadata();
} else if (action == 'show-editor') {
- var section = evt.target.parentElement.parentElement.parentElement.parentElement.parentElement;
- section.classList.toggle('flip');
+ document.getElementById(evt.target.getAttribute('data-target')).classList.toggle('flip');
}
}
function toggleInputRO(evt) {
@@ -263,10 +262,10 @@ function addNewGameRow(evt) {
inputs[i].removeAttribute('readonly');
inputs[i].addEventListener('dblclick', toggleInputRO, false);
}
- clone.querySelector('.name').placeholder = '';
- showElement(clone.querySelector('.type'));
- showElement(clone.querySelector('.fa-trash-o'));
- clone.querySelector('.fa-trash-o').addEventListener('click', removeGameRow, false);
+ clone.getElementsByClassName('name')[0].placeholder = '';
+ showElement(clone.getElementsByClassName('type')[0]);
+ showElement(clone.getElementsByClassName('fa-trash-o')[0]);
+ clone.getElementsByClassName('fa-trash-o')[0].addEventListener('click', removeGameRow, false);
evt.currentTarget.parentElement.insertBefore(clone, evt.currentTarget);
}
function setupEventHandlers() {
@@ -292,13 +291,13 @@ function setupEventHandlers() {
elements[i].addEventListener('click', processButtonClick, false);
}
/* Set up handlers for game table. */
- elements = document.getElementById('gameTable').querySelectorAll('tbody > tr');
+ elements = document.getElementById('gameTable').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
for (var i = 0; i < elements.length - 1; ++i) {
var inputs = elements[i].getElementsByTagName('input');
for (var j = 0; j < inputs.length; ++j) {
inputs[j].addEventListener('dblclick', toggleInputRO, false);
}
- elements[i].querySelector('.fa-trash-o').addEventListener('click', removeGameRow, false);
+ elements[i].getElementsByClassName('fa-trash-o')[0].addEventListener('click', removeGameRow, false);
}
elements[elements.length - 1].addEventListener('dblclick', addNewGameRow, false);
}
@@ -345,8 +344,8 @@ function processURLParams() {
pluginsNav.appendChild(clone);
clone = pluginsNav.lastElementChild;
- clone.children[3].textContent = data.plugins[i].name;
- clone.children[3].href = '#' + data.plugins[i].name.replace(/\s+/g, '');
+ clone.getElementsByTagName('a')[0].textContent = data.plugins[i].name;
+ clone.getElementsByTagName('a')[0].href = '#' + data.plugins[i].name.replace(/\s+/g, '');
if (data.plugins[i].isDummy) {
clone.getElementsByClassName('dummyPlugin')[0].className += ' fa fa-eye-slash';
@@ -365,10 +364,10 @@ function processURLParams() {
content = document.getElementById('pluginSection').content;
clone = document.importNode(content, true);
pluginsList.appendChild(clone);
- var section = pluginsList.lastElementChild;
+ clone = pluginsList.lastElementChild;
- section.setAttribute('data-active', data.plugins[i].isActive);
- section.id = data.plugins[i].name.replace(/\s+/g, '');
+ clone.setAttribute('data-active', data.plugins[i].isActive);
+ clone.id = data.plugins[i].name.replace(/\s+/g, '');
if (data.plugins[i].isActive) {
++activePluginNo;
@@ -378,45 +377,48 @@ function processURLParams() {
++dirtyPluginNo;
}
- section.getElementsByTagName('h1')[0].textContent = data.plugins[i].name;
- section.getElementsByTagName('h1')[1].textContent = data.plugins[i].name;
+ clone.getElementsByTagName('h1')[0].textContent = data.plugins[i].name;
+ clone.getElementsByTagName('h1')[1].textContent = data.plugins[i].name;
- section.getElementsByClassName('crc')[0].textContent = 'CRC: ' + data.plugins[i].crc;
- section.getElementsByClassName('crc')[1].textContent = 'CRC: ' + data.plugins[i].crc;
+ clone.getElementsByClassName('crc')[0].textContent = 'CRC: ' + data.plugins[i].crc;
+ clone.getElementsByClassName('crc')[1].textContent = 'CRC: ' + data.plugins[i].crc;
if (data.plugins[i].isDummy) {
- showElement(section.getElementsByClassName('dummyPlugin')[0]);
+ showElement(clone.getElementsByClassName('dummyPlugin')[0]);
}
if (data.plugins[i].loadsBSA) {
- showElement(section.getElementsByClassName('loadsBSA')[0]);
+ showElement(clone.getElementsByClassName('loadsBSA')[0]);
}
if (data.plugins[i].hasUserEdits) {
/* This won't actually be handled anything like this in the real data implementation. */
- showElement(section.getElementsByClassName('hasUserEdits')[0]);
+ showElement(clone.getElementsByClassName('hasUserEdits')[0]);
}
if (data.plugins[i].version) {
- section.getElementsByClassName('crc')[0].textContent = data.plugins[i].version;
- section.getElementsByClassName('crc')[1].textContent = data.plugins[i].version;
+ clone.getElementsByClassName('version')[0].textContent = 'Version: ' + data.plugins[i].version;
+ clone.getElementsByClassName('version')[1].textContent = 'Version: ' + data.plugins[i].version;
} else {
- section.getElementsByClassName('version')[0].className += ' hidden';
- section.getElementsByClassName('version')[1].className += ' hidden';
+ hideElement(clone.getElementsByClassName('version')[0]);
+ hideElement(clone.getElementsByClassName('version')[1]);
}
if (data.plugins[i].tagsAdd && data.plugins[i].tagsAdd.length != 0) {
- section.querySelector('.tag.add').textContent = data.plugins[i].tagsAdd.join(', ');
+ clone.getElementsByClassName('tag add')[0].textContent = data.plugins[i].tagsAdd.join(', ');
} else {
- section.querySelector('.tag.add').className += ' hidden';
+ hideElement(clone.getElementsByClassName('tag add')[0]);
}
if (data.plugins[i].tagRemove && data.plugins[i].tagRemove.length != 0) {
- section.querySelector('.tag.remove').textContent = data.plugins[i].tagsRemove.join(', ');
+ clone.getElementsByClassName('tag remove')[0].textContent = data.plugins[i].tagsRemove.join(', ');
} else {
- section.querySelector('.tag.remove').className += ' hidden';
+ hideElement(clone.getElementsByClassName('tag remove')[0]);
}
+ clone.getElementsByClassName('editMetadata')[0].setAttribute('data-target', data.plugins[i].name);
+ clone.getElementsByClassName('copyMetadata')[0].setAttribute('data-target', data.plugins[i].name);
+ clone.getElementsByClassName('clearMetadata')[0].setAttribute('data-target', clone.id);
if (data.plugins[i].messages && data.plugins[i].messages.length != 0) {
for (var j = 0; j < data.plugins[i].messages.length; ++j) {
@@ -424,7 +426,7 @@ function processURLParams() {
messageLi.className = data.plugins[i].messages[j].type;
/* innerHTML is open to abuse, but for hyperlinking it's too useful. */
messageLi.innerHTML = data.plugins[i].messages[j].content;
- section.getElementsByTagName('ul')[0].appendChild(messageLi);
+ clone.getElementsByTagName('ul')[0].appendChild(messageLi);
if (messageLi.className == 'warn') {
warnMessageNo++;
@@ -434,7 +436,7 @@ function processURLParams() {
totalMessageNo++;
}
} else {
- section.getElementsByTagName('ul')[0].className += ' hidden';
+ clone.getElementsByTagName('ul')[0].className += ' hidden';
}
}
document.getElementById('filterTotalMessageNo').textContent = totalMessageNo;
@@ -454,10 +456,19 @@ function processURLParams() {
}
}
+ /* Fill in game row template's game type options. */
+ var select = document.getElementById('gameRow').content.querySelector('.name');
+ for (var j = 0; j < data.gameTypes.length; ++j) {
+ var option = document.createElement('option');
+ option.value = data.gameTypes[j];
+ option.textContent = data.gameTypes[j];
+ select.appendChild(option);
+ }
+
/* Now fill game lists/table. */
var gameSelect = document.getElementById('defaultGameSelect');
var gameMenu = document.getElementById('gameMenu');
- var gameTable = document.getElementById('gameTable');
+ var gameTableBody = document.getElementById('gameTable').getElementsByTagName('tbody')[0];
for (var i = 0; i < data.games.length; ++i) {
var option = document.createElement('option');
option.value = data.games[i].folder;
@@ -471,32 +482,26 @@ function processURLParams() {
gameMenu.appendChild(li);
var content = document.getElementById('gameRow').content;
- for (var j = 0; j < data.gameTypes.length; ++j) {
- var option = document.createElement('option');
- option.value = data.gameTypes[j];
- option.textContent = data.gameTypes[j];
- content.querySelector('.type').appendChild(option);
- }
var clone = document.importNode(content, true);
- gameTable.appendChild(clone);
- clone = gameTable.lastElementChild;
- clone.querySelector('.name').value = data.games[i].name;
- clone.querySelector('.type').value = data.games[i].type;
- clone.querySelector('.folder').value = data.games[i].folder;
- clone.querySelector('.masterFile').value = data.games[i].masterFile;
- clone.querySelector('.url').value = data.games[i].url;
- clone.querySelector('.branch').value = data.games[i].branch;
- clone.querySelector('.path').value = data.games[i].path;
- clone.querySelector('.registryKey').value = data.games[i].registryKey;
+ gameTableBody.appendChild(clone);
+ clone = gameTableBody.lastElementChild;
+ clone.getElementsByClassName('name')[0].value = data.games[i].name;
+ clone.getElementsByClassName('type')[0].value = data.games[i].type;
+ clone.getElementsByClassName('folder')[0].value = data.games[i].folder;
+ clone.getElementsByClassName('masterFile')[0].value = data.games[i].masterFile;
+ clone.getElementsByClassName('url')[0].value = data.games[i].url;
+ clone.getElementsByClassName('branch')[0].value = data.games[i].branch;
+ clone.getElementsByClassName('path')[0].value = data.games[i].path;
+ clone.getElementsByClassName('registryKey')[0].value = data.games[i].registryKey;
}
/* Add row for creating new rows. */
var content = document.getElementById('gameRow').content;
var clone = document.importNode(content, true);
- gameTable.appendChild(clone);
- clone = gameTable.lastElementChild;
- clone.querySelector('.name').placeholder = 'Add new row...';
- hideElement(clone.querySelector('.type'));
- hideElement(clone.querySelector('.fa-trash-o'));
+ gameTableBody.appendChild(clone);
+ clone = gameTableBody.lastElementChild;
+ clone.getElementsByClassName('name')[0].placeholder = 'Add new row...';
+ hideElement(clone.getElementsByClassName('type')[0]);
+ hideElement(clone.getElementsByClassName('fa-trash-o')[0]);
/* Now fill in language options. */
var langSelect = document.getElementById('languageSelect');
diff --git a/resources/report/report.html b/resources/report/report.html
index a208c2ef..cbb1a1a0 100644
--- a/resources/report/report.html
+++ b/resources/report/report.html
@@ -66,13 +66,13 @@
@@ -145,9 +145,9 @@
-
| Name | Base Game | LOOT Folder | Master File | Masterlist Repository URL | Masterlist Repository Branch | Install Path | Install Path Registry Key | - |
|---|
Language and game changes will be applied after LOOT is restarted. diff --git a/resources/report/testdata.js b/resources/report/testdata.js index 58a17a62..b7ecdf4a 100644 --- a/resources/report/testdata.js +++ b/resources/report/testdata.js @@ -25,7 +25,7 @@ var data = { "loadsBSA": true, "isActive": false, "crc": "29D2C7DF", - "version": "Version: 2.0.0a", + "version": "2.0.0a", "tagsAdd": ["Delev", "Relev"] }, @@ -33,7 +33,7 @@ var data = { "name": "Unofficial Dawnguard Patch.esp", "isActive": false, "crc": "FF134167", - "version": "Version: 2.0.0b", + "version": "2.0.0b", "tagsAdd": ["Delev", "Relev"], "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Dawnguard.esm\" to be installed, but it is missing."}] @@ -42,7 +42,7 @@ var data = { "name": "Unofficial Hearthfire Patch.esp", "isActive": false, "crc": "F913F25E", - "version": "Version: 2.0.0", + "version": "2.0.0", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"HearthFires.esm\" to be installed, but it is missing."}] }, @@ -59,7 +59,7 @@ var data = { "loadsBSA": true, "isActive": true, "crc": "DA46F3C8", - "version": "Version: 2.0.0", + "version": "2.0.0", "tagsAdd": ["Delev"] }, { @@ -67,7 +67,7 @@ var data = { "loadsBSA": true, "isActive": false, "crc": "6629BE21", - "version": "Version: 1.10", + "version": "1.10", "messages": [{"type": "warn", "content": "Warning: This plugin is incompatible with \"Dragonborn.esm\", but both are present."}] }, @@ -75,7 +75,7 @@ var data = { "name": "EnchantingAwakened.esp", "isActive": false, "crc": "4E2FE0C1", - "version": "Version: 1.60" + "version": "1.60" }, { "name": "SPIKE.esm", @@ -97,7 +97,7 @@ var data = { "name": "Cutting Room Floor.esp", "isActive": false, "crc": "1BA027FF", - "version": "Version: 1.0.2", + "version": "1.0.2", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Unofficial Skyrim Patch.esp\" to be active, but it is inactive."}] }, @@ -105,13 +105,13 @@ var data = { "name": "Run For Your Lives.esp", "isActive": false, "crc": "1931B1F5", - "version": "Version: 1.2.3" + "version": "1.2.3" }, { "name": "WATER DB.esp", "isActive": false, "crc": "1765B1A6", - "version": "Version: 1.87" + "version": "1.87" }, { "name": "MorePP.esp", @@ -157,7 +157,7 @@ var data = { "name": "BFSEffects.esp", "isActive": false, "crc": "543D56D4", - "version": "Version: 3.6", + "version": "3.6", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Dawnguard.esm\" to be installed, but it is missing."}] }, @@ -172,7 +172,7 @@ var data = { "name": "AMatterOftime.esp", "isActive": false, "crc": "75025A7E", - "version": "Version: 1.00" + "version": "1.00" }, { "name": "STEP-part5.esp", @@ -287,7 +287,7 @@ var data = { "name": "fFastTravelSpeedMult_4.esp", "isActive": false, "crc": "CC1A0B4E", - "version": "Version: 1.0" + "version": "1.0" }, { "name": "BarenziahQuestMarkers_Droppable.esp", @@ -345,7 +345,7 @@ var data = { "name": "Lightweight Potions and Poisons.esp", "isActive": false, "crc": "276314FF", - "version": "Version: 0.1." + "version": "0.1." }, { "name": "No Empty Tag on Containers.esp", @@ -399,13 +399,13 @@ var data = { "name": "Ars Metallica.esp", "isActive": false, "crc": "8D03ECC0", - "version": "Version: 1.2.1" + "version": "1.2.1" }, { "name": "Ars Metallica - Dawnguard.esp", "isActive": false, "crc": "FE8960A3", - "version": "Version: 1.2.1", + "version": "1.2.1", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Dawnguard.esm\" to be installed, but it is missing." }, @@ -417,7 +417,7 @@ var data = { "name": "Ars Metallica - Hearthfire.esp", "isActive": false, "crc": "18A5C66B", - "version": "Version: 1.2.1", + "version": "1.2.1", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"HearthFires.esm\" to be installed, but it is missing." }, @@ -465,14 +465,14 @@ var data = { "name": "Reduced Distance NPC Greetings.esp", "isActive": false, "crc": "24658104", - "version": "Version: 50" + "version": "50" }, { "name": "SkyUI.esp", "loadsBSA": true, "isActive": true, "crc": "9330CAF7", - "version": "Version: 4.1" + "version": "4.1" }, { "name": "AnimeticaKobato.esp", @@ -490,7 +490,7 @@ var data = { "name": "SoS - The Wilds.esp", "isActive": false, "crc": "49F5E301", - "version": "Version: 1.13", + "version": "1.13", "messages": [{"type": "say", "content": "Note: Do not use the Crash Fix ESP for this mod. It is flagged as a master and is only meant as a last resort for fixing crashes."}] }, @@ -517,7 +517,7 @@ var data = { "name": "Bring Out Your Dead.esp", "isActive": false, "crc": "3ABC3315", - "version": "Version: 1.2.2", + "version": "1.2.2", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Unofficial Skyrim Patch.esp\" to be active, but it is inactive."}] }, @@ -554,7 +554,7 @@ var data = { "name": "SoS - The Dungeons.esp", "isActive": false, "crc": "79377267", - "version": "Version: 1.23", + "version": "1.23", "messages": [{"type": "say", "content": "Note: Do not use the Crash Fix ESP for this mod. It is flagged as a master and is only meant as a last resort for fixing crashes."}] }, @@ -621,7 +621,7 @@ var data = { "name": "SplashofRain.esp", "isActive": false, "crc": "363772B6", - "version": "Version: 1.04" + "version": "1.04" }, { "name": "Unique Grasses.esp", @@ -632,13 +632,13 @@ var data = { "name": "SPTDiverseMuscleTones.esp", "isActive": false, "crc": "2D5C68FE", - "version": "Version: 5.1" + "version": "5.1" }, { "name": "SPTDiverseMuscleTonesViljaPatch.esp", "isActive": false, "crc": "117758E3", - "version": "Version: 5.0", + "version": "5.0", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"EMCompViljaSkyrim.esp\" to be active, but it is inactive." }, @@ -650,7 +650,7 @@ var data = { "name": "SPTDiverseMuscleTonesDawnguardDragonborn.esp", "isActive": false, "crc": "F4927D22", - "version": "Version: 5.0", + "version": "5.0", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Dawnguard.esm\" to be installed, but it is missing." }, @@ -662,7 +662,7 @@ var data = { "name": "SPTDiverseMuscleTonesNPCs.esp", "isActive": false, "crc": "554F1CAB", - "version": "Version: 5.0", + "version": "5.0", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Unofficial Skyrim Patch.esp\" to be active, but it is inactive." }, @@ -682,7 +682,7 @@ var data = { "name": "SPTDiverseGuardsSkyrim.esp", "isActive": false, "crc": "682A3893", - "version": "Version: 4.6", + "version": "4.6", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"SPTDiverseMuscleTones.esp\" to be active, but it is inactive."}] }, @@ -690,7 +690,7 @@ var data = { "name": "SPTConsistentOlderPeople.esp", "isActive": false, "crc": "CAF3C1BE", - "version": "Version: 1.8", + "version": "1.8", "messages": [{"type": "say", "content": "Note: If this is not newer than v1.3, update to the latest version." }, @@ -706,7 +706,7 @@ var data = { "name": "EnchantingAwakenedAWEPatch.esp", "isActive": false, "crc": "DDDCC598", - "version": "Version: 1.50", + "version": "1.50", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Animated Weapon Enchants.esp\" to be installed, but it is missing." }, @@ -733,7 +733,7 @@ var data = { "name": "Ars Metallica - Dragonborn.esp", "isActive": false, "crc": "1091DB21", - "version": "Version: 1.2.1", + "version": "1.2.1", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Ars Metallica.esp\" to be active, but it is inactive."}] }, @@ -780,13 +780,13 @@ var data = { "name": "Point The Way.esp", "isActive": false, "crc": "F372CBC2", - "version": "Version: 1.0.2" + "version": "1.0.2" }, { "name": "SkyrimImprovedPuddles-DG-HF-DB.esp", "isActive": false, "crc": "D0427B6", - "version": "Version: 1.1", + "version": "1.1", "messages": [{"type": "say", "content": "Note: Use only one SkyrimImprovedPuddles esp." }, @@ -802,7 +802,7 @@ var data = { "name": "The Paarthurnax Dilemma.esp", "isActive": false, "crc": "9E446FBD", - "version": "Version: 1.2.5" + "version": "1.2.5" }, { "name": "TheTownIsSafe.esp", @@ -827,26 +827,26 @@ var data = { "name": "Tamriel Compendium - Skill Books.esp", "isActive": false, "crc": "1F348D90", - "version": "Version: 1.1", + "version": "1.1", "tagsAdd": ["Relev"] }, { "name": "WATER.esp", "isActive": false, "crc": "AFE4A968", - "version": "Version: 1.87" + "version": "1.87" }, { "name": "WetandCold.esp", "isActive": false, "crc": "E034A81F", - "version": "Version: 1.321" + "version": "1.321" }, { "name": "WetandCold - Ashes.esp", "isActive": false, "crc": "8C003085", - "version": "Version: 1.06", + "version": "1.06", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"WetandCold.esp\" to be active, but it is inactive."}] }, @@ -854,7 +854,7 @@ var data = { "name": "When Vampires Attack.esp", "isActive": false, "crc": "4743D674", - "version": "Version: 1.1", + "version": "1.1", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Dawnguard.esm\" to be installed, but it is missing." }, @@ -876,13 +876,13 @@ var data = { "name": "Oblivion Gates in Cities.esp", "isActive": false, "crc": "E7D68506", - "version": "Version: 1.0" + "version": "1.0" }, { "name": "Gildergreen Regrown.esp", "isActive": false, "crc": "7AFAAD00", - "version": "Version: 1.2.5" + "version": "1.2.5" }, { "name": "TheChoiceIsYours_Dawnguard.esp", @@ -907,7 +907,7 @@ var data = { "name": "Bashed Patch, 0.esp", "isActive": false, "crc": "C2306BE5", - "version": "Version: 2013-12-13 13:55:02", + "version": "2013-12-13 13:55:02", "messages": [{"type": "warn", "content": "Warning: This plugin requires \"Dawnguard.esm\" to be installed, but it is missing." },