
if (true) then
    return
end

local Details = _G.Details
local DF = _G.DetailsFramework
local libwindow = LibStub("LibWindow-1.1")

--this function isn't in use
    function Details.OpenDpsBenchmark()
	
        --main frame
            
            local DF = Details.gump
            local _ = nil
            
            --declaration
            local f = CreateFrame("frame", "DetailsBenchmark", UIParent,"BackdropTemplate")
            f:SetSize(800, 600)
            f:SetPoint("left", UIParent, "left")
            f:SetFrameStrata("LOW")
            f:EnableMouse(true)
            f:SetMovable(true)
            f:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
            f:SetBackdropColor(0, 0, 0, 0.9)
            f:SetBackdropBorderColor(0, 0, 0, 1)
            
            --register to libwindow
            local LibWindow = LibStub("LibWindow-1.1")
            LibWindow.RegisterConfig(f, Details.benchmark_db.frame)
            LibWindow.RestorePosition(f)
            LibWindow.MakeDraggable(f)
            LibWindow.SavePosition(f)
            
            --titlebar
            f.TitleBar = CreateFrame("frame", "$parentTitleBar", f,"BackdropTemplate")
            f.TitleBar:SetPoint("topleft", f, "topleft", 2, -3)
            f.TitleBar:SetPoint("topright", f, "topright", -2, -3)
            f.TitleBar:SetHeight(20)
            f.TitleBar:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
            f.TitleBar:SetBackdropColor(.2, .2, .2, 1)
            f.TitleBar:SetBackdropBorderColor(0, 0, 0, 1)
            
            --close button
            f.Close = CreateFrame("button", "$parentCloseButton", f,"BackdropTemplate")
            f.Close:SetPoint("right", f.TitleBar, "right", -2, 0)
            f.Close:SetSize(16, 16)
            f.Close:SetNormalTexture(Details.gump.folder .. "icons")
            f.Close:SetHighlightTexture(Details.gump.folder .. "icons")
            f.Close:SetPushedTexture(Details.gump.folder .. "icons")
            f.Close:GetNormalTexture():SetTexCoord(0, 16/128, 0, 1)
            f.Close:GetHighlightTexture():SetTexCoord(0, 16/128, 0, 1)
            f.Close:GetPushedTexture():SetTexCoord(0, 16/128, 0, 1)
            f.Close:SetAlpha(0.7)
            f.Close:SetScript("OnClick", function() f:Hide() end)
            
            --title
            f.Title = f.TitleBar:CreateFontString("$parentTitle", "overlay", "GameFontNormal")
            f.Title:SetPoint("center", f.TitleBar, "center")
            f.Title:SetTextColor(.8, .8, .8, 1)
            f.Title:SetText("Details! Benchmark")
            
            DF:InstallTemplate("font", "DETAILS_BENCHMARK_NORMAL", {color = "white", size = 10, font = "Friz Quadrata TT"})
            
            function f.CreateCombatObject()
                local t = {}
                
                return t
            end
            
            function f.StartNewBenchmark()
                
            end
            
            function f.StopCurrentBenchmark()
                
            end
            
            
            f.OnTickInterval = 0
            function f.UpdateOnTick (self, deltaTime)
                f.OnTickInterval = f.OnTickInterval + deltaTime
                if (f.OnTickInterval >= 0.024) then
                    --do the update
                    
                    --reset the interval
                    f.OnTickInterval = 0
                end
            end
            function f.StartUpdateOnTick()
                f:SetScript("OnUpdate", f.UpdateOnTick)
            end
            
            --events
            f:RegisterEvent("PLAYER_REGEN_DISABLED")
            f:RegisterEvent("PLAYER_REGEN_ENABLED")
            
            f:SetScript("OnEvent", function(self, event, ...)
                if (event == "PLAYER_REGEN_DISABLED") then
                    f.StartNewBenchmark()
                    
                elseif (event == "PLAYER_REGEN_ENABLED") then
                    f.StopCurrentBenchmark()
                    
                end
            end)
            
            local normal_text_template = DF:GetTemplate("font", "DETAILS_BENCHMARK_NORMAL")
            local options_dropdown_template = DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")
            local options_switch_template = DF:GetTemplate("switch", "OPTIONS_CHECKBOX_TEMPLATE")
            local options_slider_template = DF:GetTemplate("slider", "OPTIONS_SLIDER_TEMPLATE")
            local options_button_template = DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE")
            
        --locations
            f.FrameLocations = {
                summary = {10, -30},
                auras = {10, -120},
                spells = {10, -180},
                history = {10, -280},
            }
            f.FrameSizes = {
                default = {300, 200},
            }
            
        --summary block
        
            --declaration
                local summaryFrame = CreateFrame("frame", "$parentSummaryFrame", f,"BackdropTemplate")
                summaryFrame:SetPoint("topleft", f, "topleft", unpack(f.FrameLocations.summary))
                summaryFrame:SetSize(unpack(f.FrameSizes.default))
                summaryFrame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
                summaryFrame:SetBackdropColor(0, 0, 0, 0.9)
                summaryFrame:SetBackdropBorderColor(0, 0, 0, 1)
                
            --time to test string and dropdown
                local build_time_list = function()
                    local t = {
                        {value = 40, label = "40 seconds"},
                        {value = 60, label = "60 seconds"},
                        {value = 90, label = "90 seconds"},
                        {value = 120, label = "2 minutes"},
                        {value = 180, label = "3 minutes"},
                        {value = 300, label = "5 minutes"},
                    }
                    return t
                end
                
                summaryFrame.TimeToTestLabel = DF:CreateLabel(summaryFrame, "Amount of Time", normal_text_template)
                summaryFrame.TimeToTestDropdown = DF:CreateDropDown (summaryFrame, build_time_list, default, 150, 20, _, _, options_dropdown_template)
                
            --description string and text entry
                summaryFrame.DescriptionLabel = DF:CreateLabel(summaryFrame, "Description", normal_text_template)
                summaryFrame.DescriptionEntry = DF:CreateTextEntry(summaryFrame, function()end, 120, 20, nil, _, nil, options_dropdown_template)
                
            --DPS Amount string
                summaryFrame.DPSLabel = DF:CreateLabel(summaryFrame, "100K", normal_text_template)
                
            --TIME ELAPSED string
                summaryFrame.TimeElapsedLabel = DF:CreateLabel(summaryFrame, "01:00", normal_text_template)
            
            --boss simulation string and dropdown
                local build_bosssimulation_list, default = function()
                    local t = {
                        {value = "patchwerk", label = "Patchwerk"},
                    }
                    return t
                end
                summaryFrame.BossSimulationLabel = DF:CreateLabel(summaryFrame, "Boss Simulation", normal_text_template)
                summaryFrame.BossSimulationDropdown = DF:CreateDropDown (summaryFrame, build_bosssimulation_list, default, 150, 20, _, _, options_dropdown_template)
                
            --boss records line with a tooltip importing data from the storage
                summaryFrame.BossRecordsFrame = CreateFrame("frame", nil, summaryFrame,"BackdropTemplate")
                summaryFrame.BossRecordsFrame:SetSize(f.FrameSizes.default[1]-20, 20)
                summaryFrame.BossRecordsFrame:SetBackdropColor(0, 0, 0, 0.3)
                summaryFrame.BossRecordsFrame:SetScript("OnEnter", function()
                    
                end)
                summaryFrame.BossRecordsFrame:SetScript("OnLeave", function()
                
                end)
                
            --set the points
                do
                    local x, y = 10, -10
                    summaryFrame.TimeToTestLabel:SetPoint("topleft", summaryFrame, "topleft", x, y)
                    summaryFrame.TimeToTestDropdown:SetPoint("topleft", summaryFrame.TimeToTestLabel, "bottomleft", 0, -2)
                    
                    --y = y - 40
                    summaryFrame.DescriptionLabel:SetPoint("topleft", summaryFrame, "topleft", x+160, y)
                    summaryFrame.DescriptionEntry:SetPoint("topleft", summaryFrame.DescriptionLabel, "bottomleft", 0, -2)
                    
                    y = y - 40
                    summaryFrame.DPSLabel:SetPoint("topleft", summaryFrame, "topleft", x, y)
                    summaryFrame.TimeElapsedLabel:SetPoint("topleft", summaryFrame, "topleft", x + 100, y)
                    
                    y = y - 40
                    summaryFrame.BossSimulationLabel:SetPoint("topleft", summaryFrame, "topleft", x, y)
                    summaryFrame.BossSimulationDropdown:SetPoint("topleft", summaryFrame.BossSimulationLabel, "bottomleft", 0, -2)
                    
                    y = y - 40
                    summaryFrame.BossRecordsFrame:SetPoint("topleft", summaryFrame, "topleft", 0, 0)
                end
                
                
                
                
        --spells block
            
            --declaration
                local spellsFrame = CreateFrame("frame", "$parentSpellsFrame", f,"BackdropTemplate")
                spellsFrame:SetPoint("topleft", f, "topleft", unpack(f.FrameLocations.spells))
                spellsFrame:SetSize(unpack(f.FrameSizes.default))
                spellsFrame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
                spellsFrame:SetBackdropColor(0, 0, 0, 0.9)
                spellsFrame:SetBackdropBorderColor(0, 0, 0, 1)
                
            --header with the string titles:
                --Spell Icon | DPS | Damage | Casts | Criticals | Highest Damage
                
            --scrollpanel 
                --each line with:
                    --Texture for the icon
                    --5 strings for the data
                    --hover over scripts
            
        --auras block
            
            --declaration
                local aurasFrame = CreateFrame("frame", "$parentAurasFrame", f,"BackdropTemplate")
                aurasFrame:SetPoint("topleft", f, "topleft", unpack(f.FrameLocations.auras))
                aurasFrame:SetSize(unpack(f.FrameSizes.default))
                aurasFrame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
                aurasFrame:SetBackdropColor(0, 0, 0, 0.9)
                aurasFrame:SetBackdropBorderColor(0, 0, 0, 1)
            
            --will be 9 blocks? 
            
            --each block with:
                --Texture for the icon
                --3 strings for Total Update, Applications and Refreshes
                
                
        --history block
                
            --declaration
                local historyFrame = CreateFrame("frame", "$parentHistoryFrame", f,"BackdropTemplate")
                historyFrame:SetPoint("topleft", f, "topleft", unpack(f.FrameLocations.history))
                historyFrame:SetSize(unpack(f.FrameSizes.default))
                historyFrame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
                historyFrame:SetBackdropColor(0, 0, 0, 0.9)
                historyFrame:SetBackdropBorderColor(0, 0, 0, 1)
                
            --header with the string titles:
                --Spec | ILevel | DPS | Time | Talents | Crit | Haste | Versatility | Mastery | Int | Description
                
            --scrollpanel 
                --each line with:
                    --7 Textures for talent icons
                    --10 strings for the data
                    --hover over scripts
        
        
        
        --mechanics
        
        --to open the window
            --on target a training dummy
            --need to be on a specific map / sanctuary
        
        --on start a new combat:
            --start the timer
            --start the boss script if not patchwerk
            --create the graphic tables for *player total damage and *spell damage
            --create aura tables / grab auras already applied to the player / auras with no duration wont be added
    
        --on tick: 
            --*check if the time is gone *update the time string *update the graphic *update the spells *upate the auras
            
            
        --on finishes:
            --stop the timer and check if the elapsed time is done
            --create a new benchmark object to store the test
            --export the data to this new object
            --add this new object to the benchmark storage table
            --update the history scrollbar
            
        
    end