Phase 11b: вернули asymmetric layouts с widget cells
User: "где сетки main+preview, сетки с виджетами?". Восстановили из
прежней истории:
- tpl_3 (1+2+widget+widget): main 1440×810 + 2 преview 480×270 +
widget temp_chart справа + widget ha_chat снизу
- tpl_5 (1+4+widget): main + 4 preview right column + ha_chat снизу
- tpl_6 (1+3+2+widget): main + 3 правых + 2 нижних + widget info
- tpl_7 (1+3+3+widget): main + 3 правых + 3 нижних + widget ha_chat
- tpl_8 (1+3+4): main + 3 правых + 4 в нижней строке (полное покрытие)
- tpl_9 — 3×3 + widget полосы справа/снизу
Widget cells — placeholder (тёмно-серый Y=40 + LabelDecoration с именем
widget'а). Реальные виджеты (HA chat, температурный график) — Phase 12+.
Chёрные ячейки больше не будут — composer.maybe_relayout заполняет
свободные camera-cells остальными drawable из pool.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+72
-6
@@ -2,19 +2,30 @@
|
||||
"version": 1,
|
||||
"grid_cols": 8,
|
||||
"grid_rows": 8,
|
||||
"_doc": "Phase 11b — только пропорциональные 16:9 layouts (cs == rs микроячеек). Полностью заполняют output 1920×1080 без widget-областей. При недостатке active-камер по motion свободные camera-cells заполняются остальными drawable-камерами из pool (по priority). См. cfc::Composer::maybe_relayout().",
|
||||
"_doc": "Phase 11b — набор layouts на 8×8 микро-сетке. Свободные camera-cells при нехватке motion-камер заполняются остальными drawable из pool (cfc::Composer::maybe_relayout). Widget cells показывают placeholder (тёмно-серый + название); реальные виджеты — Phase 12+.",
|
||||
|
||||
"templates": [
|
||||
{
|
||||
"name": "tpl_1",
|
||||
"_desc": "1 камера во весь экран.",
|
||||
"_desc": "Одна камера во весь экран.",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 8, "rs": 8, "role": "camera", "order": 0}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_3",
|
||||
"_desc": "Главная 1440×810 + 2 превью 480×270 + widget справа-низ + widget снизу.",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
|
||||
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
|
||||
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
|
||||
{"col": 6, "row": 4, "cs": 2, "rs": 4, "role": "widget", "widget": "temp_chart"},
|
||||
{"col": 0, "row": 6, "cs": 6, "rs": 2, "role": "widget", "widget": "ha_chat"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_4",
|
||||
"_desc": "Quad 2×2 — 4 камеры 960×540 (16:9). order=0 — top-left (главная).",
|
||||
"_desc": "Quad 2×2 — 4 камеры 960×540 (16:9). order=0 — top-left.",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 4, "rs": 4, "role": "camera", "order": 0},
|
||||
{"col": 4, "row": 0, "cs": 4, "rs": 4, "role": "camera", "order": 1},
|
||||
@@ -22,9 +33,62 @@
|
||||
{"col": 4, "row": 4, "cs": 4, "rs": 4, "role": "camera", "order": 3}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_5",
|
||||
"_desc": "Главная + 4 превью справа стопкой, снизу — widget.",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
|
||||
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
|
||||
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
|
||||
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
|
||||
{"col": 6, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
|
||||
{"col": 0, "row": 6, "cs": 6, "rs": 2, "role": "widget", "widget": "ha_chat"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_6",
|
||||
"_desc": "Главная + 3 правых + 2 нижних, остаток нижней строки — widget.",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
|
||||
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
|
||||
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
|
||||
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
|
||||
{"col": 0, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
|
||||
{"col": 2, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 5},
|
||||
{"col": 4, "row": 6, "cs": 4, "rs": 2, "role": "widget", "widget": "info"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_7",
|
||||
"_desc": "Главная + 3 правых + 3 нижних, угол — widget.",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
|
||||
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
|
||||
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
|
||||
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
|
||||
{"col": 0, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
|
||||
{"col": 2, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 5},
|
||||
{"col": 4, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 6},
|
||||
{"col": 6, "row": 6, "cs": 2, "rs": 2, "role": "widget", "widget": "ha_chat"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_8",
|
||||
"_desc": "1+3+4 — главная + 3 правых + 4 в нижней строке (без widget).",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
|
||||
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
|
||||
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
|
||||
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
|
||||
{"col": 0, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
|
||||
{"col": 2, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 5},
|
||||
{"col": 4, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 6},
|
||||
{"col": 6, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 7}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_9",
|
||||
"_desc": "3×3 grid — 9 камер... только cells 2×2 микроячейки по 6×6 области. ВНИМАНИЕ: 8×8 не делится на 3 без остатка; используем 6×6 камер + bottom/right остаток как background. Если потом будут asymmetric с widget'ами — выделим Phase 12.",
|
||||
"_desc": "3×3 (cells по 2×2 микроячейки в области 6×6, остаток — widget).",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 0},
|
||||
{"col": 2, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
|
||||
@@ -34,12 +98,14 @@
|
||||
{"col": 4, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 5},
|
||||
{"col": 0, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 6},
|
||||
{"col": 2, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 7},
|
||||
{"col": 4, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 8}
|
||||
{"col": 4, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 8},
|
||||
{"col": 6, "row": 0, "cs": 2, "rs": 6, "role": "widget", "widget": "temp_chart"},
|
||||
{"col": 0, "row": 6, "cs": 8, "rs": 2, "role": "widget", "widget": "ha_chat"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "tpl_16",
|
||||
"_desc": "4×4 grid — 16 камер по 480×270 (16:9). Полностью покрывает 8×8 без остатка.",
|
||||
"_desc": "4×4 — 16 камер 480×270 (16:9), полностью покрывает 8×8.",
|
||||
"cells": [
|
||||
{"col": 0, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 0},
|
||||
{"col": 2, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
|
||||
|
||||
Reference in New Issue
Block a user