Quantcast

quick fixes for data and reports

Munglunch [03-11-15 - 17:39]
quick fixes for data and reports
Filename
SVUI_!Core/libs/_SVUI_Lib/Registry.lua
SVUI_!Core/system/_reports/reputation.lua
SVUI_!Core/system/core.lua
SVUI_!Core/system/reports.lua
diff --git a/SVUI_!Core/libs/_SVUI_Lib/Registry.lua b/SVUI_!Core/libs/_SVUI_Lib/Registry.lua
index ad0fc7e..50e925f 100644
--- a/SVUI_!Core/libs/_SVUI_Lib/Registry.lua
+++ b/SVUI_!Core/libs/_SVUI_Lib/Registry.lua
@@ -102,9 +102,6 @@ local GLOBAL_SV, PRIVATE_SV, FILTER_SV, MEDIA_SV, ERROR_SV;
 local MODULES, PLUGINS;
 local LoadOnDemand, ScriptQueue = {},{};
 local DirtyDataList, DirtyMediaList = {},{};
-local SAFE_DATA_KEYS  = {["LAYOUT"] = true, ["REPORT_SLOTS"] = true}
-local SAFE_MEDIA_KEYS = {["customClassColor"] = true, ["extended"] = true, ["shared"] = true, ["color"] = true, ["bordercolor"] = true}
-local SAFE_THEME_KEYS = {["Default"] = true, ["Simple"] = true, ["Warcraft"] = true}
 local debugHeader = "|cffFF2F00%s|r [|cff992FFF%s|r]|cffFF2F00:|r";
 local debugPattern = '|cffFF2F00%s|r [|cff0affff%s|r]|cffFF2F00:|r @|cffFF0000(|r%s|cffFF0000)|r - %s';

@@ -127,6 +124,14 @@ end

 lib.EventManager = CreateFrame("Frame", nil)

+--[[ LIB CONSTRAINTS ]]--
+
+lib.CONSTRAINTS = {
+    ["IGNORED"] = {},
+    ["PROTECTED"] = {},
+    ["DYNAMIC"] = {}
+}
+
 --[[ COMMON META METHODS ]]--

 local rootstring = function(self) return self.NameID end
@@ -193,7 +198,7 @@ local function remove_undefined(src, db)
     end
 end

-local function removedefaults(db, src, nometa)
+local function remove_defaults(db, src, nometa)
     if(type(src) ~= "table") then
         if(db == src) then db = nil end
         return
@@ -203,7 +208,7 @@ local function removedefaults(db, src, nometa)
     end
     for k,v in pairs(src) do
         if type(v) == "table" and type(db[k]) == "table" then
-            removedefaults(db[k], v, nometa)
+            remove_defaults(db[k], v, nometa)
             if next(db[k]) == nil then
                 db[k] = nil
             end
@@ -216,16 +221,21 @@ local function removedefaults(db, src, nometa)
 end

 local function sanitize(db, src)
-    local saved = PRIVATE_SV.SAFEDATA.SAVED;
+    local cns       = lib.CONSTRAINTS;
+    local ignored   = cns.IGNORED;
+    local protected = cns.PROTECTED;
+    local dynamic   = cns.DYNAMIC;
     if((type(src) == "table")) then
         if(type(db) == "table") then
             for k,v in pairs(db) do
-                if(not SAFE_DATA_KEYS[k]) then
-                    if((src[k] == nil) and (saved[k] == nil)) then
+                if(not ignored[k]) then
+                    if((src[k] == nil) and (protected[k] == nil)) then
                         db[k] = nil
                     elseif(src[k] ~= nil) then
-                        removedefaults(db[k], src[k])
-                        remove_undefined(src[k], db[k])
+                        remove_defaults(db[k], src[k])
+                        if(dynamic[k] == nil) then
+                            remove_undefined(src[k], db[k])
+                        end
                     end
                 end
             end
@@ -233,20 +243,6 @@ local function sanitize(db, src)
     end
 end

-local function sanitizeMedia(db, src)
-    if((type(src) == "table")) then
-        if(type(db) == "table") then
-            for k,v in pairs(db) do
-                if(SAFE_MEDIA_KEYS[k] and (src[k] ~= nil)) then
-                    removedefaults(db[k], src[k])
-                else
-                    db[k] = nil
-                end
-            end
-        end
-    end
-end
-
 --DATABASE META METHODS
 local meta_transdata = {
     __index = function(t, k)
@@ -506,14 +502,12 @@ function lib:CleanUpData(deep)
             sanitize(data, defaults)
         end
         for theme,profile in pairs(MEDIA_SV.profiles) do
-            if(not SAFE_THEME_KEYS[theme]) then
-                MEDIA_SV.profiles[theme] = nil
-            else
+            if(CoreObject.AvailableThemes[theme]) then
                 for key,data in pairs(profile) do
                     if(not GLOBAL_SV.profileKeys[key]) then
                         MEDIA_SV.profiles[theme][key] = nil
                     else
-                        sanitizeMedia(data, media)
+                        sanitize(data, media)
                     end
                 end
             end
@@ -523,7 +517,7 @@ function lib:CleanUpData(deep)
             local linked = DirtyDataList[key]
             if(linked) then
                 sanitize(data, defaults)
-                sanitizeMedia(MEDIA_SV.profiles[linked][key], media)
+                sanitize(MEDIA_SV.profiles[linked][key], media)
             end
         end
     else
@@ -602,6 +596,12 @@ local function UpdateProfileSources(newKey)
     end
 end

+local function UpdateConstraints()
+    for k,v in pairs(PRIVATE_SV.SAFEDATA.SAVED) do
+        lib.CONSTRAINTS.PROTECTED[k] = true
+    end
+end
+
 local function UpdateCoreDatabases()
     UpdateProfileSources()

@@ -620,6 +620,8 @@ local function UpdateCoreDatabases()
     CoreObject.private = private

     CoreObject.ERRORLOG = ERROR_SV.FOUND
+
+    UpdateConstraints()
 end

 local function CorePreInitialize()
@@ -1123,6 +1125,8 @@ function lib:Launch()
             end
         end
     end
+
+    UpdateConstraints()
 end

 function lib:LoadScripts()
@@ -1220,7 +1224,7 @@ function lib:ExportDatabase()
     tablecopy(t["MEDIA"][THEME_KEY], MEDIA_SV.profiles[THEME_KEY][PROFILE_KEY]);

     sanitize(t["PROFILE"], CoreObject.defaults)
-    sanitizeMedia(t["MEDIA"][THEME_KEY], CoreObject.mediadefaults)
+    sanitize(t["MEDIA"][THEME_KEY], CoreObject.mediadefaults)

     local export = table.tostring(t)

@@ -1275,6 +1279,33 @@ function lib:SaveSafeData(index, value)
     PRIVATE_SV.SAFEDATA[index] = value
 end

+function lib:AddProtectedKeys(...)
+    for i = 1, select('#', ...) do
+        local index = select(i, ...)
+        if(index and type(index) == "string") then
+            self.CONSTRAINTS.PROTECTED[index] = true
+        end
+    end
+end
+
+function lib:AddIgnoredKeys(...)
+    for i = 1, select('#', ...) do
+        local index = select(i, ...)
+        if(index and type(index) == "string") then
+            self.CONSTRAINTS.IGNORED[index] = true
+        end
+    end
+end
+
+function lib:AddDynamicKeys(...)
+    for i = 1, select('#', ...) do
+        local index = select(i, ...)
+        if(index and type(index) == "string") then
+            self.CONSTRAINTS.DYNAMIC[index] = true
+        end
+    end
+end
+
 function lib:CheckData(schema, key)
     local file = GLOBAL_SV.profiles[PROFILE_KEY][schema]
     print("______" .. schema .. ".db[" .. key .. "]_____")
diff --git a/SVUI_!Core/system/_reports/reputation.lua b/SVUI_!Core/system/_reports/reputation.lua
index 9e783c5..89884a7 100644
--- a/SVUI_!Core/system/_reports/reputation.lua
+++ b/SVUI_!Core/system/_reports/reputation.lua
@@ -195,7 +195,7 @@ ReportBar.OnEvent = function(self, event, ...)
 end

 Report.OnClick = function(self, button)
-	CacheRepData()
+	CacheRepData(self.InnerData)
 	SV.Dropdown:Open(self, self.InnerData, "Select Faction")
 end

@@ -220,5 +220,5 @@ Report.OnInit = function(self)
 	if(not self.InnerData) then
 		self.InnerData = {}
 	end
-	CacheRepData()
+	CacheRepData(self.InnerData)
 end
\ No newline at end of file
diff --git a/SVUI_!Core/system/core.lua b/SVUI_!Core/system/core.lua
index e61dcb9..40fe9cf 100644
--- a/SVUI_!Core/system/core.lua
+++ b/SVUI_!Core/system/core.lua
@@ -222,6 +222,11 @@ SV.Hidden:Hide();

 SV.RollFrames         = {};
 SV.SystemAlert        = {};
+
+SVUILib:AddIgnoredKeys("customClassColor", "LAYOUT", "REPORT_SLOTS");
+SVUILib:AddProtectedKeys("extended", "shared", "color", "bordercolor");
+SVUILib:AddDynamicKeys("Filters");
+
 SV.mediadefaults      = {};
 SV.defaults           = {
     ["LAYOUT"] = {},
diff --git a/SVUI_!Core/system/reports.lua b/SVUI_!Core/system/reports.lua
index faa938c..4c88653 100644
--- a/SVUI_!Core/system/reports.lua
+++ b/SVUI_!Core/system/reports.lua
@@ -89,6 +89,8 @@ local PVP_INFO_LOOKUP = {
 	["Changes"] = {13, RATING_CHANGE},
 	["Spec"] = {16, SPECIALIZATION}
 };
+local LDB_TEXT_PATTERN = "|cff22CFFF(|r%s|cff22CFFF)|r";
+local LDB_ICON_PATTERN = "\124T%s:12\124t %s";
 local DIRTY_LIST = true;
 --[[
 ##########################################################
@@ -284,14 +286,12 @@ local function GetDataSlot(parent, index)
 	return parent.Stats.Slots[index];
 end

-local LDB_TEXT_PATTERN = "|cff22CFFF(|r%s|cff22CFFF)|r";
-local LDB_ICON_PATTERN = "\124T%s:12\124t %s";
 local function LDB_AttributeChanged(event, data_name, key, value, obj)
 	local name = obj.ReportName
 	local socket = MOD.References[name]
 	if(not socket) then return end
 	value = value or obj.text
-	icon = obj.icon
+	local icon = obj.icon
 	if(type(value) ~= "string") then
 		value = name
 	end
@@ -310,9 +310,6 @@ end
 local function CreateLDB_OnEventHandler(name, obj)
 	return function(self, ...)
 		LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name, LDB_AttributeChanged)
-		-- LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name.."_text", LDB_AttributeChanged)
-		-- LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name.."_label", LDB_AttributeChanged)
-		-- LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name.."_value", LDB_AttributeChanged)
 		LDB_AttributeChanged(nil, name, nil, nil, obj)
 	end
 end
@@ -382,7 +379,6 @@ function MOD:EnableReport(socket, name)
 	Socket_OnUpdate(socket, 20000)

 	if(LDB and obj.LDBName and obj.OnTooltipShow) then
-		print(name .. ' OnTooltipShow')
 		socket:SetScript("OnEnter", LDB_OnEnter)
 	end