diff --git a/resources/report/js/custom.js b/resources/report/html/plugin-card.html
similarity index 71%
rename from resources/report/js/custom.js
rename to resources/report/html/plugin-card.html
index a188b7be..7931f2e7 100644
--- a/resources/report/js/custom.js
+++ b/resources/report/html/plugin-card.html
@@ -1,164 +1,293 @@
-/* LOOT
+
- A load order optimisation tool for Oblivion, Skyrim, Fallout 3 and
- Fallout: New Vegas.
-
- Copyright (C) 2013-2014 WrinklyNinja
-
- This file is part of LOOT.
-
- LOOT is free software: you can redistribute
- it and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- LOOT is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with LOOT. If not, see
- .
-*/
-'use strict';
-
-/* Create a element type. */
-var pluginMenuProto = Object.create(HTMLElement.prototype, {
-
- getPluginCard: {
- value: function() {
- return document.getElementById(this.getAttribute('data-for'));
- }
- },
-
- onShowOnlyConflicts: {
- value: function(evt) {
- /* Depending on what was clicked, this function may be run before
- the checkbox state has updated. Handle both cases. */
- var activateFilter;
- if (evt.currentTarget == evt.target) {
- /* Clicked on the label, checkbox state isn't updated yet. */
- activateFilter = !evt.target.firstElementChild.checked;
- } else {
- /* Clicked on the checkbox. */
- activateFilter = evt.target.checked;
- }
- if (activateFilter) {
- /* Un-highlight any existing filter plugin. */
- var cards = document.getElementsByTagName('main')[0].getElementsByTagName('plugin-card');
- for (var i = 0; i < cards.length; ++i) {
- cards[i].classList.toggle('highlight', false);
- }
- evt.currentTarget.parentNode.host.getPluginCard().classList.toggle('highlight', true);
- document.body.setAttribute('data-conflicts', evt.currentTarget.parentNode.host.getPluginCard().getName());
- } else {
- evt.currentTarget.parentNode.host.getPluginCard().classList.toggle('highlight', false);
- document.body.removeAttribute('data-conflicts');
- }
- applyFilters(evt);
- }
- },
-
- onEditMetadata: {
- value: function(evt) {
- evt.target.parentNode.host.getPluginCard().showEditor();
- }
- },
-
- onCopyMetadata: {
- value: function(evt) {
- var request = JSON.stringify({
- name: 'copyMetadata',
- args: [
- evt.target.parentNode.host.getPluginCard().getName()
- ]
- });
-
- loot.query(request).catch(processCefError);
- }
- },
-
- onClearMetadata: {
- value: function(evt) {
- var pluginCard = evt.target.parentNode.host.getPluginCard();
-
- showMessageDialog('Clear Plugin Metadata', 'Are you sure you want to clear all existing user-added metadata from "' + pluginCard.getName() + '"?', function(result){
- if (result) {
- var request = JSON.stringify({
- name: 'clearPluginMetadata',
- args: [
- pluginCard.getName()
- ]
- });
-
- loot.query(request).then(JSON.parse).then(function(result){
- if (result) {
- /* Need to empty the UI-side user metadata. */
- for (var i = 0; i < loot.game.plugins.length; ++i) {
- if (loot.game.plugins[i].id == pluginCard.id) {
- loot.game.plugins[i].userlist = undefined;
-
- loot.game.plugins[i].modPriority = result.modPriority;
- loot.game.plugins[i].isGlobalPriority = result.isGlobalPriority;
- loot.game.plugins[i].messages = result.messages;
- loot.game.plugins[i].tags = result.tags;
- loot.game.plugins[i].isDirty = result.isDirty;
-
- break;
- }
- }
- }
- }).catch(processCefError);
- }
- });
- }
- },
-
- createdCallback: {
- value: function() {
-
- var template = document.getElementById('pluginMenu');
- var clone = document.importNode(template.content, true);
-
- this.createShadowRoot().appendChild(clone);
- }
- },
-
- attachedCallback: {
- value: function() {
- /* Add event listeners for the menu items. */
- /* For some reason clicking on the label is processed slower
- than the checkbox state, and in the time difference the menu
- gets closed, so that the conflicts filter never gets applied.
- To get around this, listen for a click on the label rather
- than for checkbox state change. */
- if (document.body.getAttribute('data-conflicts') == this.getPluginCard().getName()) {
- this.shadowRoot.getElementById('showOnlyConflicts').checked = true;
- }
- this.shadowRoot.getElementById('showOnlyConflicts').parentElement.addEventListener('click', this.onShowOnlyConflicts, false);
- this.shadowRoot.getElementById('editMetadata').addEventListener('click', this.onEditMetadata, false);
- this.shadowRoot.getElementById('copyMetadata').addEventListener('click', this.onCopyMetadata, false);
- this.shadowRoot.getElementById('clearMetadata').addEventListener('click', this.onClearMetadata, false);
- }
- },
-
- detachedCallback: {
- value: function() {
- /* Remove event listeners for the menu items. */
- /* Nothing happens if we try to remove a listener that doesn't exist,
- so don't bother checking first. */
- this.shadowRoot.getElementById('showOnlyConflicts').parentElement.removeEventListener('click', this.onShowOnlyConflicts, false);
- this.shadowRoot.getElementById('editMetadata').removeEventListener('click', this.onEditMetadata, false);
- this.shadowRoot.getElementById('copyMetadata').removeEventListener('click', this.onCopyMetadata, false);
- this.shadowRoot.getElementById('clearMetadata').removeEventListener('click', this.onClearMetadata, false);
-
- }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Load After
+ Requirements
+ Incompatibilities
+ Messages
+ Bash Tags
+ Dirty Info
+ Locations
+
+
+
+
Filename
Display Name
Condition
+
+
+
+
Add new row...
+
+
+
+
+
Filename
Display Name
Condition
+
+
+
+
Add new row...
+
+
+
+
+
Filename
Display Name
Condition
+
+
+
+
Add new row...
+
+
+
+
+
Type
Content
Condition
Language
+
+
+
+
Add new row...
+
+
+
+
+
Add/Remove
Bash Tag
Condition
+
+
+
+
Add new row...
+
+
+
+
+
CRC
ITM Count
Deleted References
Deleted Navmeshes
Cleaning Utility
+
+
+
+
Add new row...
+
+
+
+
+
URL
Version
+
+
+
+
Add new row...
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/report/html/plugin-menu.html b/resources/report/html/plugin-menu.html
new file mode 100644
index 00000000..770697aa
--- /dev/null
+++ b/resources/report/html/plugin-menu.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+