Show models above folders in child folders to avoid models from appearing to belong the grandchild folder, prevent creating empty <optgroup />s

This commit is contained in:
Olivia Godone-Maresca 2023-02-07 21:13:06 -05:00
parent e0f22d29e8
commit e7bf2ee58b
2 changed files with 11 additions and 7 deletions

View File

@ -179,10 +179,10 @@ def getModels():
"Raised when picklescan reports a problem with a model"
pass
def scan_directory(directory, suffixes):
def scan_directory(directory, suffixes, directoriesFirst:bool=True):
nonlocal models_scanned
tree = []
for entry in sorted(os.scandir(directory), key = lambda entry: (entry.is_file(), entry.name.lower())):
for entry in sorted(os.scandir(directory), key = lambda entry: (entry.is_file() == directoriesFirst, entry.name.lower())):
if entry.is_file():
matching_suffix = list(filter(lambda s: entry.name.endswith(s), suffixes))
if len(matching_suffix) == 0: continue
@ -197,9 +197,10 @@ def getModels():
known_models[entry.path] = mtime
tree.append(entry.name[:-len(matching_suffix)])
elif entry.is_dir():
scan=scan_directory(entry.path, suffixes)
scan=scan_directory(entry.path, suffixes, directoriesFirst=False)
if len(scan) != 0:
tree.append( (entry.name, scan ) )
tree.append( (entry.name, scan ) )
return tree
def listModels(model_type):

View File

@ -1322,9 +1322,12 @@ async function getModels() {
}
modelField.appendChild(modelOption)
} else {
const modelGroup = document.createElement('optgroup')
modelGroup.label = path + modelName[0]
modelField.appendChild(modelGroup)
// Since <optgroup/>s can't be nested, don't show empty groups
if (modelName[1].some(child => typeof(child) == 'string')) {
const modelGroup = document.createElement('optgroup')
modelGroup.label = path + modelName[0]
modelField.appendChild(modelGroup)
}
modelName[1].forEach( createModelOptions(modelField, selectedModel, path + modelName[0] + "/" ) )
}
}