InvokeAI/invokeai/app/services
psychedelicious bf94412d14 feat: add multi-select to gallery
multi-select actions include:
- drag to board to move all to that board
- right click to add all to board or delete all

backend changes:
- add routes for changing board for list of image names, deleting list of images
- change image-specific routes to `images/i/{image_name}` to not clobber other routes (like `images/upload`, `images/delete`)
- subclass pydantic `BaseModel` as `BaseModelExcludeNull`, which excludes null values when calling `dict()` on the model. this fixes inconsistent types related to JSON parsing null values into `null` instead of `undefined`
- remove `board_id` from `remove_image_from_board`

frontend changes:
- multi-selection stuff uses `ImageDTO[]` as payloads, for dnd and other mutations. this gives us access to image `board_id`s when hitting routes, and enables efficient cache updates.
- consolidate change board and delete image modals to handle single and multiples
- board totals are now re-fetched on mutation and not kept in sync manually - was way too tedious to do this
- fixed warning about nested `<p>` elements
- closes #4088 , need to handle case when `autoAddBoardId` is `"none"`
- add option to show gallery image delete button on every gallery image

frontend refactors/organisation:
- make typegen script js instead of ts
- enable `noUncheckedIndexedAccess` to help avoid bugs when indexing into arrays, many small changes needed to satisfy TS after this
- move all image-related endpoints into `endpoints/images.ts`, its a big file now, but this fixes a number of circular dependency issues that were otherwise felt impossible to resolve
2023-08-03 11:46:59 +10:00
..
models feat: add multi-select to gallery 2023-08-03 11:46:59 +10:00
__init__.py all files migrated; tweaks needed 2023-03-03 00:02:15 -05:00
board_image_record_storage.py feat: add multi-select to gallery 2023-08-03 11:46:59 +10:00
board_images.py feat: add multi-select to gallery 2023-08-03 11:46:59 +10:00
board_record_storage.py Apply black 2023-07-27 10:54:01 -04:00
boards.py Apply black 2023-07-27 10:54:01 -04:00
config.py additional refactoring 2023-07-31 22:36:11 -04:00
default_graphs.py Apply black 2023-07-27 10:54:01 -04:00
events.py Apply black 2023-07-27 10:54:01 -04:00
graph.py Apply black 2023-07-27 10:54:01 -04:00
image_file_storage.py Apply black 2023-07-27 10:54:01 -04:00
image_record_storage.py Apply black 2023-07-27 10:54:01 -04:00
images.py fix(db): retrieve metadata even when no session_id 2023-08-03 10:43:44 +10:00
invocation_queue.py Apply black 2023-07-27 10:54:01 -04:00
invocation_services.py fix(nodes): fix typing of configuration service 2023-07-16 10:52:18 +10:00
invoker.py Apply black 2023-07-27 10:54:01 -04:00
item_storage.py Apply black 2023-07-27 10:54:01 -04:00
latent_storage.py Apply black 2023-07-27 10:54:01 -04:00
model_manager_service.py Apply black 2023-07-27 10:54:01 -04:00
processor.py Apply black 2023-07-27 10:54:01 -04:00
resource_name.py feat(nodes): add nameservice 2023-05-28 20:19:56 -04:00
sqlite.py Apply black 2023-07-27 10:54:01 -04:00
urls.py feat: add multi-select to gallery 2023-08-03 11:46:59 +10:00