25e89ada2b
pool.reorder() permutes slots (validated permutation) and keeps the active selection on its slot; exposed via /grid_pool/reorder. The grid thumbnails are drag handles; dropping on another cell reorders. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
"""aiohttp routes for the Image Pool node. Imported only inside ComfyUI."""
|
|
import json
|
|
from aiohttp import web
|
|
from server import PromptServer
|
|
from . import handlers
|
|
from .gates_compat import grid_pool_base
|
|
|
|
routes = PromptServer.instance.routes
|
|
|
|
|
|
def _base():
|
|
return grid_pool_base()
|
|
|
|
|
|
@routes.post("/grid_pool/add")
|
|
async def _add(request):
|
|
reader = await request.multipart()
|
|
pool_id, ts, data = "default", 0, None
|
|
async for part in reader:
|
|
if part.name == "pool_id":
|
|
pool_id = (await part.text())
|
|
elif part.name == "ts":
|
|
ts = int(await part.text())
|
|
elif part.name == "image":
|
|
data = await part.read(decode=False)
|
|
m = handlers.handle_add(_base(), pool_id, data, "png", ts=ts)
|
|
return web.json_response(m)
|
|
|
|
|
|
@routes.post("/grid_pool/remove")
|
|
async def _remove(request):
|
|
body = await request.json()
|
|
return web.json_response(handlers.handle_remove(_base(), body["pool_id"], int(body["index"])))
|
|
|
|
|
|
@routes.post("/grid_pool/active")
|
|
async def _active(request):
|
|
body = await request.json()
|
|
return web.json_response(handlers.handle_active(_base(), body["pool_id"], int(body["index"])))
|
|
|
|
|
|
@routes.post("/grid_pool/label")
|
|
async def _label(request):
|
|
body = await request.json()
|
|
return web.json_response(handlers.handle_label(_base(), body["pool_id"], int(body["index"]), body["label"]))
|
|
|
|
|
|
@routes.post("/grid_pool/set_mask")
|
|
async def _set_mask(request):
|
|
reader = await request.multipart()
|
|
pool_id, index, data = "default", 0, None
|
|
async for part in reader:
|
|
if part.name == "pool_id":
|
|
pool_id = (await part.text())
|
|
elif part.name == "index":
|
|
index = int(await part.text())
|
|
elif part.name == "mask":
|
|
data = await part.read(decode=False)
|
|
m = handlers.handle_set_mask(_base(), pool_id, index, data)
|
|
return web.json_response(m)
|
|
|
|
|
|
@routes.post("/grid_pool/reorder")
|
|
async def _reorder(request):
|
|
body = await request.json()
|
|
order = [int(i) for i in body["order"]]
|
|
return web.json_response(handlers.handle_reorder(_base(), body["pool_id"], order))
|
|
|
|
|
|
@routes.get("/grid_pool/list")
|
|
async def _list(request):
|
|
pool_id = request.query.get("pool_id", "default")
|
|
return web.json_response(handlers.handle_list(_base(), pool_id))
|