import { computed, makeObservable } from 'mobx' import { AttributeData } from '../../interfaces' import { GPS_COORDINATES } from '../constants' import { Element } from '../element' export const RecordStatus = { OPEN: 'record_open', IN_PROGRESS: 'record_in_progress', CLOSED: 'record_closed', INCOMPLETE: 'record_incomplete', FAILED: 'record_failed', PASSED: 'record_passed', PASSED_WITH_ISSUES: 'record_passed_with_issues', } as const export type RecordStatusValue = (typeof RecordStatus)[keyof typeof RecordStatus] export class Record extends Element { // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(...args: any) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: this is fine super(...args) makeObservable(this, { status: computed, }) } static get TYPE() { return 'Record' } static get ATTRIBUTES() { return { ...Element.ATTRIBUTES, COORDINATES: GPS_COORDINATES, CHECKLIST_ATE: 'checklist_ate', ORDER: 'numerical_order', REQUEST_ATE: 'request_ate', ELEMENTS: 'elements', FILES: 'files', STATUS: 'record_status', RECORD_ACTION: 'record_action', RECORD_DESCRIPTION: 'record_description', IS_INCOMPLETE: 'is_incomplete', } } get status(): RecordStatusValue | undefined { return ( this.data?.[Record.ATTRIBUTES.STATUS] as AttributeData )?.value } }