enumTrackType{PERSONAL="PERSONAL",GROUP="GROUP",OPEN="OPEN",}enumTrackFieldInputControl{SELECT="SELECT",SLIDER="SLIDER",TEXT_FIELD="TEXT_FIELD",DATETIME_PICKER="DATETIME_PICKER",}enumTrackFieldValueType{STRING="STRING",INTEGER="INTEGER",FLOAT="FLOAT",TIMESTAMP="TIMESTAMP",}interfaceTrackFieldBase{position:number;// TODO why is this not implicit through array ordering?key:string;name:string;}interfaceTrackFieldSelectOption{name:string;value:string;}interfaceTrackFieldSelectextendsTrackFieldBase{input:TrackFieldInputControl.SELECT;type:|TrackFieldValueType.STRING|TrackFieldValueType.INTEGER|TrackFieldValueType.FLOAT;options:Array<TrackFieldSelectOption>;}interfaceTrackFieldSliderextendsTrackFieldBase{input:TrackFieldInputControl.SLIDER;type:TrackFieldValueType.INTEGER|TrackFieldValueType.FLOAT;min:number;max:number;step:number;}interfaceTrackFieldTextextendsTrackFieldBase{input:TrackFieldInputControl.TEXT_FIELD;type:|TrackFieldValueType.STRING|TrackFieldValueType.INTEGER|TrackFieldValueType.FLOAT;}interfaceTrackFieldDateTimeextendsTrackFieldBase{input:TrackFieldInputControl.DATETIME_PICKER;type:TrackFieldValueType.TIMESTAMP;}typeTrackField=|TrackFieldSelect|TrackFieldSlider|TrackFieldText|TrackFieldDateTime;interfaceTrackBase{_created_at:string;// TODO: reference to UserEntity?_created_by:string;// TODO: reference to session user or user entity?_updated_at:string;// TODO: reference to UserEntity?_updated_by:string;// TODO: reference to session user or user entity?step_count:number;name:string;fields:Array<TrackField>;}interfaceTrackPersonalextendsTrackBase{type:TrackType.PERSONAL;}interfaceTrackGroupextendsTrackBase{type:TrackType.GROUP;members:Array<string>;// TODO: references to users}interfaceTrackOpenextendsTrackBase{type:TrackType.OPEN;}typeTrackEntity=TrackPersonal|TrackGroup|TrackOpen;exportdefaultTrackEntity;
Field Input Control Enum
This defines the input control for each step entry.
TEXT
Text field
SELECT
Drop-down selection of predetermined values
SLIDER
A slider in a predetermined number range
TIMESTAMP
Datetime picker
Field Value Type Enum
Field value conversion happens when a new step is saved.
STRING
Convert to string with String
INTEGER
Convert to integer number with parseInt
FLOAT
Convert to double precision floating point number with parseFloat
TIMESTAMP
Convert to ISO-timestamp string with Date.toISOString()
REST Interface
GET /api/track
Read all tracks (implicitly restricted to user-visible)
GET /api/track?limit=10&offset=0
Paging for read all tracks
POST /api/track
Create new track
PATCH /api/track/:trackId
Update track
DELETE /api/track/:trackId
Delete track
Step Entity
Typescript interface
interfaceStepEntity{_created_at:string;// TODO: reference to UserEntity?_created_by:string;// TODO: reference to session user or user entity?_updated_at:string;// TODO: reference to UserEntity?_updated_by:string;// TODO: reference to session user or user entity?track_id:string;posted_at:string;posted_by:string;values:Map<string,string|number>;}exportdefaultStepEntity;
Legacy
Track Setting Enum
This type is on the User entity and governs which settings are available during track creation.