UI data-driven, pages, tables et prefabs By Module
Rôle
L'UI By Module est générée à partir de module_pages.json, des pages_settings et des données runtime du TeamModuleTypeData. La structure visuelle n'est donc pas entièrement codée en dur dans les prefabs.
Hiérarchie UI
flowchart TD
M[TeamModuleControl] --> PAGE[ModulePageControlBase]
PAGE --> TABLE[ModulePageTableControlBase]
TABLE --> SEC[Section / EditableSection]
SEC --> ROW[Row / EditableRow]
ROW --> CELL[CellControlBase]
CELL --> INPUT[InputControlBase]
INPUT --> TEXT[TextInput]
INPUT --> DROP[Dropdown / AutoComplete]
INPUT --> CHECK[Checkbox / Toggle]
Classes structurantes
| Responsabilité | Classes |
|---|---|
| Liste/modules | TeamModuleListControl, TeamModuleItemControl, TeamModuleControl, TeamModuleMenuControl |
| Pages | ModulePageControlBase, ModulePageInputsControl, ModulePageTableControl* |
| Tables data-driven | DataDrivenTableControl, DataDrivenSectionControl, DataDrivenRowControl, DataDrivenInputsControl |
| Rows/sections dynamiques | EditableRowControlBase, EditableSectionControlBase, CustomRowControl |
| Inputs | InputControlBase, InputCellControl, TextInputControl, DropdownInputControl, autocomplete, checkbox |
| Correction | CorrectedTeamModuleWindowControl, ModuleErrorsPopupControl, CellErrorButtonControl |
Types de pages
Le modèle Unity expose plusieurs classes de données : ModulePageDataInputs, ModulePageDataTable, ModulePageDataTableWithInputs, ModulePageDataTableWithDropdown, etc. Le type configuré dans la static data détermine quel contrôle Unity est utilisé.
Pages Accounting spécialisées
En plus du moteur générique, le dossier Assets/Src/UI/SimByModule/UI/ contient les vues spécialisées : trial balance, balance sheet, income statement, statement of equity, bank reconciliation, formulaires de taxes, reports d'employés, immobilisations, contrats, bills et autres documents.
Frontend JSON → runtime
flowchart LR
MP[module_pages.json] --> SD[StaticDataByModule]
PS[pages_settings.json] --> SD
SD --> PC[ModulePageControl]
TM[TeamModuleTypeData.pagesData] --> PC
PC --> INPUTS[Rows / Cells / Inputs]
INPUTS --> CTRL[TeamByModuleController]
CTRL --> SERVER[Custom Command]
Quand modifier quoi
- Structure d'une page :
module_pages.json. - Comportement dynamique/validation :
pages_settings.jsonet definitions associées. - Nouveau rendu visuel réutilisable : classe/prefab sous
SimByModule/UI. - Donnée persistée : modèle
DataDriven*+ custom command serveur. - Nouvelle page Accounting réellement spécialisée : ajouter le contrôle dédié et le brancher dans le système de page correspondant.