Add accumulator preview reorder diagnostics
This commit is contained in:
+34
-5
@@ -236,6 +236,18 @@ def _entry_infos(store: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
||||
return entries
|
||||
|
||||
|
||||
def _attach_preview_images(entries: list[dict[str, Any]], images: list[dict[str, str]]) -> None:
|
||||
by_key = {
|
||||
str(image.get("preview_key") or ""): image
|
||||
for image in images
|
||||
if str(image.get("preview_key") or "")
|
||||
}
|
||||
for entry in entries:
|
||||
image = by_key.get(str(entry.get("preview_key") or ""))
|
||||
if image:
|
||||
entry["preview_image"] = image
|
||||
|
||||
|
||||
def _accumulator_status(key: str, store: list[dict[str, Any]]) -> str:
|
||||
images = [entry.get("image") for entry in store if entry.get("image") is not None]
|
||||
shapes = []
|
||||
@@ -252,19 +264,23 @@ def accumulator_list_entries(store_key: str, preview_limit: int = 0) -> dict[str
|
||||
if not key:
|
||||
raise ValueError("store_key is required for accumulator preview actions")
|
||||
store = _ACCUMULATOR_STORES.setdefault(key, [])
|
||||
entries = _entry_infos(store)
|
||||
result = {
|
||||
"store_key": key,
|
||||
"entries": _entry_infos(store),
|
||||
"entries": entries,
|
||||
"count": len(store),
|
||||
"status": _accumulator_status(key, store),
|
||||
}
|
||||
if int(preview_limit) > 0:
|
||||
result["images"] = _preview_image_results(store, preview_limit, None, None)
|
||||
images = _preview_image_results(store, preview_limit, None, None)
|
||||
_attach_preview_images(entries, images)
|
||||
result["images"] = images
|
||||
return result
|
||||
|
||||
|
||||
def accumulator_delete_entries(
|
||||
store_key: str,
|
||||
preview_key: str = "",
|
||||
entry_id: str = "",
|
||||
index: int = 0,
|
||||
clear: bool = False,
|
||||
@@ -279,8 +295,13 @@ def accumulator_delete_entries(
|
||||
removed = len(store)
|
||||
store.clear()
|
||||
else:
|
||||
preview_key = str(preview_key or "").strip()
|
||||
entry_id = str(entry_id or "").strip()
|
||||
if entry_id:
|
||||
if preview_key:
|
||||
before = len(store)
|
||||
store[:] = [entry for entry in store if _entry_preview_key(entry) != preview_key]
|
||||
removed = before - len(store)
|
||||
elif entry_id:
|
||||
before = len(store)
|
||||
store[:] = [entry for entry in store if str(entry.get("id") or "") != entry_id]
|
||||
removed = before - len(store)
|
||||
@@ -298,6 +319,7 @@ def accumulator_delete_entries(
|
||||
|
||||
def accumulator_move_entry(
|
||||
store_key: str,
|
||||
preview_key: str = "",
|
||||
entry_id: str = "",
|
||||
index: int = 0,
|
||||
direction: str = "up",
|
||||
@@ -313,8 +335,14 @@ def accumulator_move_entry(
|
||||
result["moved"] = False
|
||||
return result
|
||||
zero_index = -1
|
||||
preview_key = str(preview_key or "").strip()
|
||||
entry_id = str(entry_id or "").strip()
|
||||
if entry_id:
|
||||
if preview_key:
|
||||
for current_index, entry in enumerate(store):
|
||||
if _entry_preview_key(entry) == preview_key:
|
||||
zero_index = current_index
|
||||
break
|
||||
elif entry_id:
|
||||
for current_index, entry in enumerate(store):
|
||||
if str(entry.get("id") or "") == entry_id:
|
||||
zero_index = current_index
|
||||
@@ -1121,8 +1149,9 @@ class SxCPAccumulatorPreview:
|
||||
images = []
|
||||
save_status += "; cleared_after_save"
|
||||
|
||||
preview_images = _preview_image_results(store, preview_limit, prompt, extra_pnginfo)
|
||||
entries = _entry_infos(store)
|
||||
preview_images = _preview_image_results(store, preview_limit, prompt, extra_pnginfo)
|
||||
_attach_preview_images(entries, preview_images)
|
||||
status = _accumulator_status(key, store)
|
||||
if removed:
|
||||
status += f"; removed={removed}"
|
||||
|
||||
Reference in New Issue
Block a user