From 9767eea276644969a1528164e393f123070e664b Mon Sep 17 00:00:00 2001 From: steveyourcreativepeople Date: Fri, 23 Feb 2024 10:24:08 -0500 Subject: [PATCH] Add filters to private logger for wildprompt and base model --- modules/private_logger.py | 108 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 105 insertions(+), 3 deletions(-) diff --git a/modules/private_logger.py b/modules/private_logger.py index b4d8af51..b7c6a32f 100644 --- a/modules/private_logger.py +++ b/modules/private_logger.py @@ -7,10 +7,8 @@ import urllib.parse from PIL import Image from modules.util import generate_temp_filename - log_cache = {} - def get_current_html_path(): date_string, local_temp_filename, only_name, logpath = generate_temp_filename(folder=modules.config.path_outputs, extension='png') html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html') @@ -64,11 +62,115 @@ def log(img, dic, wildprompt=''): } alert('Copied to Clipboard!\\nPaste to prompt area to load parameters.\\nCurrent clipboard content is:\\n\\n' + txt); } + + // Function to update visibility of log items based on filters + function updateFilters() { + var baseModelFilters = document.querySelectorAll('input[name="baseModelFilter"]:checked'); + var wildpromptFilters = document.querySelectorAll('input[name="wildpromptFilter"]:checked'); + + // Loop through all log items + var logItems = document.querySelectorAll('.image-container'); + logItems.forEach(function(item) { + var baseModel = item.getAttribute('data-model'); + var wildprompts = item.getAttribute('data-wildprompts').match(/'[^']+'/g).map(function(item) { + return item.replace(/'/g, ''); + }); + var isVisible = true; + + // Check if base model filter is active + if (baseModelFilters.length > 0) { + var baseModelMatch = false; + baseModelFilters.forEach(function(filter) { + if (baseModel === filter.value) { + baseModelMatch = true; + } + }); + if (!baseModelMatch) { + isVisible = false; + } + } + + // Check if wildprompt filter is active + if (wildpromptFilters.length > 0) { + var wildpromptMatch = false; + wildpromptFilters.forEach(function(filter) { + if (wildprompts.includes(filter.value)) { + wildpromptMatch = true; + } + }); + if (!wildpromptMatch) { + isVisible = false; + } + } + + // Update visibility + if (isVisible) { + item.style.display = 'block'; + } else { + item.style.display = 'none'; + } + }); + } + + // Function to initialize filters + function initFilters() { + // Base model filter + var baseModels = {}; + var baseModelCheckboxes = document.getElementById('baseModelFilters'); + var baseModelOptions = document.querySelectorAll('.image-container'); + baseModelOptions.forEach(function(item) { + var baseModel = item.getAttribute('data-model'); + if (!baseModels.hasOwnProperty(baseModel)) { + baseModels[baseModel] = 0; + } + baseModels[baseModel]++; + }); + for (var model in baseModels) { + var checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.name = 'baseModelFilter'; + checkbox.value = model; + checkbox.addEventListener('change', updateFilters); + var label = document.createElement('label'); + label.appendChild(checkbox); + label.appendChild(document.createTextNode(model + ' (' + baseModels[model] + ')')); + baseModelCheckboxes.appendChild(label); + } + + // Wildprompt filter + var wildpromptCheckboxes = document.getElementById('wildpromptFilters'); + var wildprompts = {}; + baseModelOptions.forEach(function(item) { + var prompts = item.getAttribute('data-wildprompts').match(/'[^']+'/g).map(function(item) { + return item.replace(/'/g, ''); + }); + prompts.forEach(function(prompt) { + if (!wildprompts.hasOwnProperty(prompt)) { + wildprompts[prompt] = 0; + } + wildprompts[prompt]++; + }); + }); + for (var prompt in wildprompts) { + var checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.name = 'wildpromptFilter'; + checkbox.value = prompt; + checkbox.addEventListener('change', updateFilters); + var label = document.createElement('label'); + label.appendChild(checkbox); + label.appendChild(document.createTextNode(prompt + ' (' + wildprompts[prompt] + ')')); + wildpromptCheckboxes.appendChild(label); + } + } + + // Initialize filters when the page is loaded + window.addEventListener('load', initFilters); """ ) - begin_part = f"Fooocus Log {date_string}{css_styles}\n{js}\n

Fooocus Log {date_string} (private)

\n\n" + begin_part = f"Fooocus Log {date_string}{css_styles}\n\n{js}\n\n
\n\n
\n\n" end_part = f'\n' middle_part = log_cache.get(html_name, "")