Naming Convention für Frontend Elemente
Bitte den StyleGuide beachten.
- Dateinamen sind in [c|C]amelCase
- Definitionen von Properties, Events und lokalen Variablen in camelCase
- Element-Attribute in Kebab-Case
Die Benennung erfolgt grundsätzlich auf Englisch, mit Ausnahme von Fachbegriffen welche auf Deutsch verwendet werden.
Views
[UWB|BWB]<Domain>[<Funktion>]View.vue
Der Prefix UWB oder BWB ist zu setzen wenn diese View nur für eine bestimmte Wahlbezirksart gedacht ist. Erfolgt innerhalb der View eine Unterscheidung welche Subkomponenten angezeigt werden, oder ist die View unabhängig von der Wahlbezirksart, ist kein Prefix zu vergeben.
Beispiel
WahlvorstandView.vue ... eine View für den Wahlvorstand, die für alle Wahlbezirksarten gedacht istUWBWaehlerverzeichnisView.vue ... eine View die nur bei der Wahlbezirksart UWB angezeigt werden soll
Components
Basiskomponenten
Base<Type>[<Domain>]<Funktion>.vue
Beispiele:
BaseButtonRefresh.vue ... Allgemeiner Button zur Aktualisierung
BaseButtonSave.vue ... Allgemeiner Button zum Speichern
BaseWahlvorstandMitgliedCard.vue ... V-Card zur Darstellung eines Wahlvorstandsmitgliedes
Single-Instance-Komponenten
The[<Domain>]<Funktion><Type>.vue
NOTE
Die Bezeichnung stammt aus einem älteren StyleGuide
Beispiele:
TheWahlvorstandLastSendDiv.vue ... Wahlvorstandskomponente welche die Uhrzeit der letzten Übermittlung darstellt
TheWahlvorstandMitgliederTable.vue ... Wahlvorstandskomponente welche Mitglieder des Wahlvorstandes als Tabelle anzeigt
Stores
<domain>Store.ts
Beispiel:
wahlvorstandStore.ts ... Store für den Wahlvorstand
Composables
Rules
[<domain>]Rules.ts
Für eine Modularisierung ist es möglich spezielle Rules einer Domain zuzuordnen.
Formatter
<domain|typ>Formatter.ts
Formatter gehören zu einem Datentyp oder einer Domain.
Beispiel:
textFormatter.ts ... Formartierungsfunktionen für Text
dateTimeFormatter.ts ... Formatierungsfunktionen für Date
Utils
<komponentenName>Utils.ts
Beispiel:
theBeschlussfassungStartenDialogUtils.ts ... ist das Utils-Composable für die Komponente TheBeschlussfassungStartenDialog
StoreModule
<domain>[<Funktion>]StoreModule.ts
Beispiel:
briefwahlGetterStoreModule.ts ... kapselt Funktionalität zu einem Thema eines Stores
State
<domain>[<Funktion>]State.ts
Beispiel:
stimmzettelWorkflowStatusState.ts ... Verwaltet einen konkreten WorkflowStatus (Daten und Loading) für einen konkreten Wahlbezirk
Mapper
<domain>Mapper.ts
Beispiel:
wahlvorstandMapper.ts ... enthält Mappingfunktionen zum Wahlvorstand
FetchService
<domain>FetchService.ts
Beispiel:
wahlvorstandFetchService.ts ... stellt Funktionen bereit, um Daten des Wahlvorstandes aus dem Backend abzurufen
Tools
<typ>Tools.ts
Beispiel:
wahlvorstandsMitgliedTools.ts ... stellt Funktionen rund um den Datentyp bereit, wie z.B. die Erstellung eines fachlich leeren Objektes
Manager
<topic>Manager.ts
Beispiel:
requestStrategyManager.ts ... kapselt die diversen RequestStrategien und entscheidet im Rahmen der Verarbeitung, welche Strategy anzuwenden ist
Service
<topic>Service.ts
Beispiel:
loggingService.ts ... stellt Funktionen zu einem Thema bereit, dass sonst zu keinem Typ Composable passt
Types
<interface>.ts
Beispiel:
Wahlvorstand.ts ... enthält das Interface Wahlvorstand und eine Hilfsklasse die das Interface implementiert
Tests
Die Tests liegen im tests-Ordner, welcher der Aufbaustruktur des src-Ordners folgt.
<Testgegenstand ohne Dateiendung>.spec.ts
Beispiel:
TheWahlvorstandMitgliederTable.spec.ts ... Tests zu TheWahlvorstandMitgliederTable.vue
wahlvorstandStore.spec.ts ... Tests zu wahlvorstandStore.ts
Storybook Stories
<Storybookgegenstand ohne Dateiendung>.stories.ts
IMPORTANT
Stories zu Komponenten, die den Store verwenden, haben auf der Übersichtsseite (docs) alle denselben Zustand. Der Zustand für alle Komponenten entsprecht dem Zustand im Store mit der letzten Story.
Beispiel:
BaseButtonRefresh.stories.ts ... Stories zu BaseButtonRefresh.vue
Testattribut
Damit Elemente leichter für Tests zugänglich sind, sollen sie ein Attribut für Tests bekommen. Der Name des Attributes ist data-test.
Bei dem Wert handelt es sich nicht um eine ID.
Eventhandlingmethoden
on<Data><Event>
Beispiel:
onAnwesenheitChanged($event, mitglied) ... Eventhandler, wenn sich die Anwesenheit geändert hat