diff --git a/css/style.css b/css/style.css
index 81b863c..af74029 100644
--- a/css/style.css
+++ b/css/style.css
@@ -353,7 +353,8 @@ footer p{
/* Tooltips */
.wt-tooltip{
- display: none;
+ display: none;
+ z-index: 5;
}
.tooltip-icon{
clear: both;
@@ -380,7 +381,8 @@ footer p{
background: rgba(17, 17, 34, 0.90);
color: white;
margin-left: 4px;
- font: normal 12px/1.5 Verdana,sans-serif;
+ font: normal 12px/1.5 Verdana,sans-serif;
+ z-index: 10;
}
.tooltip-desc h2{
diff --git a/dbc/css/dbc.css b/dbc/css/dbc.css
index 2677262..4087f37 100644
--- a/dbc/css/dbc.css
+++ b/dbc/css/dbc.css
@@ -123,4 +123,8 @@ thead input { width: 100% }
max-height: 200px;
overflow-x: hidden;
min-width: 700px;
+}
+
+.diffTable tr td{
+ padding: 2px;
}
\ No newline at end of file
diff --git a/dbc/hotfixes.php b/dbc/hotfixes.php
index 5a9b2a6..5af9915 100644
--- a/dbc/hotfixes.php
+++ b/dbc/hotfixes.php
@@ -116,9 +116,9 @@
"targets": 4,
"render": function ( data, type, full, meta ) {
if(full[4] == 1){
- return "Valid";
+ return " Valid";
}else{
- return "Invalidated (" + full[4] + ")";
+ return " Invalidated (" + full[4] + ")";
}
}
},
@@ -150,48 +150,80 @@ function getAddendum(dbc, col, value){
return addendum;
}
+ function richValue(dbc, col, val, build, fk){
+ let returnedValue = "";
+ let displayValue = val;
+
+ if(flagMap.has(dbc.toLowerCase() + "." + col)){
+ displayValue = "0x" + Number(val).toString(16);
+ }
+
+ if (fk == "FileData::ID"){
+ returnedValue = "" + val + "";
+ } else if (fk == "SoundEntries::ID" && parseInt(build[0]) > 6){
+ returnedValue = "" + val + "";
+ } else if (fk == "Item::ID" && val > 0){
+ returnedValue = "" + val + "";
+ } else if (fk == "Spell::ID" || fk == "SpellName::ID" && val > 0){
+ returnedValue = "" + val + "";
+ } else if (fk == "Creature::ID" && val > 0){
+ returnedValue = "" + val + "";
+ } else if (fk == "QuestV2::ID" && val > 0){
+ returnedValue = "" + val + "";
+ } else if (fk !== undefined && val > 0){
+ returnedValue = "" + val + "";
+ } else{
+ returnedValue = displayValue;
+ }
+
+ if(enumMap.has(dbc.toLowerCase() + "." + col)){
+ if(val in enumMap.get(dbc.toLowerCase() + "." + col)){
+ returnedValue += " (" + enumMap.get(dbc.toLowerCase() + "." + col)[val] + ")";
+ }else{
+ returnedValue += " (unknown)";
+ }
+ }
+
+ if(flagMap.has(dbc.toLowerCase() + "." + col)){
+ let usedFlags = getFlagDescriptions(dbc.toLowerCase(), col, val);
+ usedFlags.forEach(function (flag) {
+ returnedValue += " (" + flag[0] + ": " + flag[1] + ")";
+ });
+ }
+
+ return returnedValue;
+ }
+
function showRowDiff(dbc, build, recordID){
+ var headerReq = fetch("/dbc/api/header/" + dbc.toLowerCase() + "?build=" + build).then(data => data.json());
var beforeReq = fetch("/dbc/hotfix_api.php?cacheproxy=1&dbc=" + dbc.toLowerCase() + "&build=" + build + "&col=ID&val=" + recordID + "&useHotfixes=false&calcOffset=false").then(data => data.json());
var afterReq = fetch("/dbc/hotfix_api.php?cacheproxy=1&dbc=" + dbc.toLowerCase() + "&build=" + build + "&col=ID&val=" + recordID + "&useHotfixes=true&calcOffset=false").then(data => data.json());
- Promise.all([beforeReq, afterReq])
+ Promise.all([headerReq, beforeReq, afterReq])
.then(json => {
- const before = json[0].values;
- const after = json[1].values;
+ const header = json[0];
+ const before = json[1].values;
+ const after = json[2].values;
- let changes = "
";
+ let changes = "";
if(Object.keys(before).length == 0){
Object.keys(after).forEach(function (key) {
- let addendum = getAddendum(dbc, key, after[key]);
- let displayedValue = after[key];
- if(flagMap.has(dbc.toLowerCase() + "." + key)){
- displayedValue = "0x" + Number(after[key]).toString(16);
- }
- changes += ""+ key + " | "+ displayedValue + addendum + " |
";
+ const displayedValue = richValue(dbc, key, after[key], build, header.fks[key]);
+ changes += " " + key + " | " + displayedValue + " |
";
});
} else if(Object.keys(after).length == 0){
Object.keys(before).forEach(function (key) {
- let addendum = getAddendum(dbc, key, before[key]);
- let displayedValue = before[key];
- if(flagMap.has(dbc.toLowerCase() + "." + key)){
- displayedValue = "0x" + Number(before[key]).toString(16);
- }
- changes += ""+ key + " | "+ displayedValue + addendum + " |
";
+ const displayedValue = richValue(dbc, key, before[key], build, header.fks[key]);
+ changes += " " + key + " | " + displayedValue + " |
";
});
}else{
Object.keys(before).forEach(function (key) {
if(before[key] != after[key]){
if (!isNaN(before[key]) && !isNaN(after[key])) {
- let addendumBefore = getAddendum(dbc, key, before[key]);
- let addendumAfter = getAddendum(dbc, key, after[key]);
- let displayedValBefore = before[key];
- let displayedValAfter = after[key];
- if(flagMap.has(dbc.toLowerCase() + "." + key)){
- displayedValBefore = "0x" + Number(before[key]).toString(16);
- displayedValAfter = "0x" + Number(after[key]).toString(16);
- }
- changes += "" + key + " | " + displayedValBefore + addendumBefore + " → " + displayedValAfter + addendumAfter + " |
";
+ let displayedValBefore = richValue(dbc, key, before[key], build, header.fks[key]);
+ let displayedValAfter = richValue(dbc, key, after[key], build, header.fks[key]);
+ changes += " " + key + " | " + displayedValBefore + " → " + displayedValAfter + " |
";
} else {
var dmp = new diff_match_patch();
var dmp_diff = dmp.diff_main(before[key], after[key]);
@@ -205,8 +237,8 @@ function showRowDiff(dbc, build, recordID){
changes += "
";
- if(changes == ""){
- changes = "No changes detected (view record)";
+ if(changes == ""){
+ changes = "No changes found (view record)";
}
var resultHolder = document.getElementById("resultHolder-" + dbc + "-" + build + "-" + recordID);
diff --git a/dbc/index.php b/dbc/index.php
index 92e3113..c2e3085 100644
--- a/dbc/index.php
+++ b/dbc/index.php
@@ -477,7 +477,7 @@ function loadTable(){
let idHeader = 0;
$.ajax({
- "url": "/dbc/api/header/" + apiArgs,
+ "url": "/dbc/api/header/" + currentParams["dbc"] + "/?build=" + currentParams["build"],
"success": function(json) {
if(json['error'] != null){
if(json['error'] == "No valid definition found for this layouthash or build!"){
diff --git a/dbc/js/dbc.js b/dbc/js/dbc.js
index 902f510..1981372 100644
--- a/dbc/js/dbc.js
+++ b/dbc/js/dbc.js
@@ -86,9 +86,11 @@ function openFKModal(value, location, build){
} else if (headerjson.fks[key] == "SoundEntries::ID" && parseInt(build[0]) > 6){
$("#fktable").append("" + key + " | " + val + " |
");
} else if (headerjson.fks[key] == "Item::ID" && val > 0){
- $("#fktable").append("" + key + " | " + val + " |
");
+ $("#fktable").append("" + key + " | " + val + " |
");
+ } else if (headerjson.fks[key] == "Spell::ID" || headerjson.fks[key] == "SpellName::ID" && val > 0){
+ $("#fktable").append("" + key + " | " + val + " |
");
} else {
- $("#fktable").append("" + key + " | " + val + " |
");
+ $("#fktable").append("" + key + " | " + val + " |
");
}
var cleanDBname = headerjson.fks[key].split('::')[0].toLowerCase();
diff --git a/dbc/js/enums.js b/dbc/js/enums.js
index 68648fa..56ced0f 100644
--- a/dbc/js/enums.js
+++ b/dbc/js/enums.js
@@ -394,16 +394,16 @@ const criteriaAdditionalCondition = {
const itemStatType = {
0: 'MANA',
1: 'HEALTH',
- // 2: 'UNUSED',
+ 2: 'ENDURANCE',
3: 'AGILITY',
4: 'STRENGTH',
5: 'INTELLECT',
- 6: 'SPIRIT', // Removed in 7.3.0
+ 6: 'SPIRIT_UNUSED', // Removed in 7.3.0
7: 'STAMINA',
- // 8: 'UNUSED',
- // 9: 'UNUSED',
- // 10: 'UNUSED',
- // 11: 'UNUSED',
+ 8: 'ENERGY',
+ 9: 'RAGE',
+ 10: 'FOCUS',
+ 11: 'WEAPON_SKILL_RATING_OBSOLETE',
12: 'DEFENSE_SKILL_RATING',
13: 'DODGE_RATING',
14: 'PARRY_RATING',
diff --git a/dbc/scripts/updateHotfixes.php b/dbc/scripts/updateHotfixes.php
index 03e4070..a0b455f 100644
--- a/dbc/scripts/updateHotfixes.php
+++ b/dbc/scripts/updateHotfixes.php
@@ -20,13 +20,13 @@
$filesToProcess = [];
foreach ($files as $file) {
- if (empty($argv[1]) && filemtime($file) < strtotime("-1 hour")) {
+ if (empty($argv[1]) && filemtime($file) < strtotime("-2 hours")) {
continue;
}
$md5 = md5_file($file);
if (in_array($md5, $processedMD5s)) {
- // echo "[Hotfix updater] [".date("Y-m-d H:i:s")."] Skipping already processed DBCache ". $file . " (" . $md5 . ")\n";
+ // echo "[Hotfix updater] [" . date("Y-m-d H:i:s") . "] Skipping already processed DBCache " . $file . " (" . $md5 . ")\n";
continue;
}
@@ -126,6 +126,8 @@
echo "[Hotfix updater] [" . date("Y-m-d H:i:s") . "] Reloaded TACT keys\n";
}
- $insertMD5->execute([$md5]);
- echo "[Hotfix updater] [" . date("Y-m-d H:i:s") . "] Inserted " . $md5 . " as processed cache\n";
+ if (!in_array($md5, $processedMD5s)) {
+ $insertMD5->execute([$md5]);
+ echo "[Hotfix updater] [" . date("Y-m-d H:i:s") . "] Inserted " . $md5 . " as processed cache\n";
+ }
}
diff --git a/js/tooltips.js b/js/tooltips.js
index 9f1f80e..4b4f37c 100644
--- a/js/tooltips.js
+++ b/js/tooltips.js
@@ -28,6 +28,8 @@ function showTooltip(el){
const tooltipDiv = document.createElement("div");
tooltipDiv.innerHTML = tooltipHTML;
tooltipDiv.style.position = "absolute";
+ // tooltipDiv.style.position.top = el.getBoundingClientRect().top + el.ownerDocument.defaultView.pageYOffset;
+ // tooltipDiv.style.position.left = el.getBoundingClientRect().left + el.ownerDocument.defaultView.pageXOffset;
tooltipDiv.style.zIndex = 5;
tooltipDiv.style.display = "block";
tooltipDiv.style.marginLeft = tooltipMarginLeft + "px";
@@ -49,7 +51,7 @@ function showTooltip(el){
generateQuestTooltip(tooltipTargetValue, tooltipDiv);
} else if (tooltipType == 'fk'){
if ((el.dataset.fk == "Map::ID" || tooltipTargetValue != 0) && tooltipTargetValue != -1){
- generateFKTooltip(el.dataset.fk, tooltipTargetValue, tooltipDiv);
+ generateFKTooltip(el.dataset.fk, tooltipTargetValue, tooltipDiv, localBuild);
} else {
hideTooltip(el);
}
@@ -313,10 +315,13 @@ function generateSpellTooltip(id, tooltip, build)
return;
}
- console.log(data);
-
const calcData = data[0];
+ if (calcData["name"] == null){
+ calcData["name"] = "Unknown spell";
+ calcData["description"] = "It is possible this spell was added through hotfixes or is entirely unavailable in the client.";
+ }
+
tooltipDesc.innerHTML = "" + calcData["name"] + "
";
if (calcData["description"] != null){
tooltipDesc.innerHTML += "" + calcData["description"].replace("\n", "
");
@@ -328,7 +333,7 @@ function generateSpellTooltip(id, tooltip, build)
});
}
-function generateFKTooltip(targetFK, value, tooltip)
+function generateFKTooltip(targetFK, value, tooltip, build)
{
console.log("Generating foreign key tooltip for " + value);