Naming Conventions
Keywords
Code generators matches following patterns in AST identifiers (while renaming and inlining the templates):
Entity - name of generated entity (e.g.
customers)EntityById - name of detail query for entity (e.g.
useCustomerQuery)InsertEntity - name of insert mutation for entity (e.g.
useInsertCustomersMutation)UpdateEntity - name of update mutation for entity (e.g.
useUpdateCustomersMutation)FIELD - field from GraphQL schema (e.g.
first_name)columns - generated datagrid columns (list view)
HEADER_NAME - header name of the column (e.g.
First name)fields - fields for object relationships
FormatEntityField - react component for type formatting, attributes: value - field, label - label for field
File name convention
Pages
Typical CRUD pages import Entity Components:
templates/src/pages/entity/index.tsx- list (filter, sort)templates/src/pages/entity/[id].tsx- detail by id
Generator can handle also other page
templates/src/pages/blank/index.tsxblank & without API query (useful totoal custom content)templates/src/pages/landing-xy/index.tsxstatic content without API query (useful for information content ala landing pages)templates/src/pages/dashboard/index.tsxwith graphql query that contains multiple query roots (WIP)
Entity List/Array Components
API:
- EntityListContainer - container for list component for accessing the server API, (
src/components/entities/Entity)
Views: (visualisation without server API calls):
EntityTable - readonly array relationship, (
src/components/entities/Entity)EntityDataTable - datagrid for desktop devices (
src/components/entities/Entity)EntityGraph - readonly array relationship, (
src/components/entities/Entity)EntityCalendar - readonly array relationship, (
src/components/entities/Entity)EntityList - list for mobile devices, (
src/components/entities/Entity)EntityCardList - card list, (
src/components/entities/Entity)
Entity Detail Components
API:
- EntityCrudContainer - container for detail component, (
src/components/entities/Entity)
Views: (visualisation without server API calls):
EntityFormView - view for detail, (
src/components/entities/Entity)EntityFormTable - array relationship formular, (
src/components/entities/Entity)EntityForm - object relationship formular, (
src/components/entities/Entity)EntityShow - object relationship readonly, (
src/components/entities/Entity)
Format Field
Primitive fields can have different view based on data type.
Generator inlines components/templates (src/components/fields/typography, src/components/fields/chips or src/components/fields/contains):
BooleanFormat.tsx
DateFormat.tsx
DateTimeFormat.tsx
DefaultFormat.tsx
TimeFormat.tsx
If the field is relation to the entity then the generator inlines following code:
ArraFormat.tsx
ObjectFormat.tsx
Common files
There are common files that can be customize per project and does not have notion of an Entity (renaming feature of the generator):
FormCard - card component to split tables in detail, (
src/components/entities)LookupDialog - lookup for object relationship, (
src/components/entities)DeleteDialog - delete dialog, (
src/components/entities)