Files
homelable/backend/app/schemas/canvas.py
T
Pouzor 8437f5ef49 feat: customizable link color per edge
- Add custom_color field to EdgeData type, Edge DB model and all schemas
- HomelableEdge applies custom_color as stroke override (before selected highlight)
- EDGE_DEFAULT_COLORS extracted to utils/edgeColors.ts (react-refresh compliant)
- EdgeModal: color picker row showing effective color (custom or type default)
  with hex value, Reset button when custom color is active
- Auto-migration adds custom_color column to edges table
2026-03-07 14:42:34 +01:00

50 lines
1.1 KiB
Python

from typing import Any
from pydantic import BaseModel
from app.schemas.edges import EdgeResponse
from app.schemas.nodes import NodeResponse
class NodeSave(BaseModel):
id: str
type: str
label: str
hostname: str | None = None
ip: str | None = None
mac: str | None = None
os: str | None = None
status: str = "unknown"
check_method: str | None = None
check_target: str | None = None
services: list[Any] = []
notes: str | None = None
parent_id: str | None = None
container_mode: bool = False
custom_colors: dict | None = None
pos_x: float = 0
pos_y: float = 0
class EdgeSave(BaseModel):
id: str
source: str
target: str
type: str = "ethernet"
label: str | None = None
vlan_id: int | None = None
speed: str | None = None
custom_color: str | None = None
class CanvasSaveRequest(BaseModel):
nodes: list[NodeSave] = []
edges: list[EdgeSave] = []
viewport: dict = {}
class CanvasStateResponse(BaseModel):
nodes: list[NodeResponse]
edges: list[EdgeResponse]
viewport: dict