// Enums import { eGpsHeadingDirection, eGpsMotionStatus, eSharedString, eStringPlaceholder, } from '../../enums'; // Constants import { GpsLocationConstants } from '../constants'; export class GpsLocationHelper { static getGpsIcon = ( motionStatus: eGpsMotionStatus, headingDirection: eGpsHeadingDirection, isIgnition?: boolean ): string => { const svgInnerContent = GpsLocationHelper.getGpsSvgInnerContent( motionStatus, headingDirection, isIgnition ); const svg = GpsLocationHelper.getGpsSvg( motionStatus, svgInnerContent ); return svg; }; static getGpsCurrentLocationIcon = ( motionStatus: eGpsMotionStatus ): string => { if (motionStatus === eGpsMotionStatus.NO_GPS_DEVICE) return eStringPlaceholder.EMPTY; const classes = GpsLocationHelper.getGpsSvgClasses(motionStatus); return ` `; }; static getGpsSvg = ( motionStatus: eGpsMotionStatus, innerSvgContent: string ): string => { const classes = GpsLocationHelper.getGpsSvgClasses(motionStatus); return ` ${innerSvgContent} `; }; static getGpsSvgClasses = (motionStatus: eGpsMotionStatus): string => { const svgClassesString = GpsLocationConstants.GPS_SVG_CLASSES[motionStatus]; return `svg-rect-fill-${svgClassesString.fill} svg-rect-hover-${svgClassesString.hover}`; }; static getGpsSvgInnerContent = ( motionStatus: eGpsMotionStatus, headingDirection: eGpsHeadingDirection, isIgnition?: boolean ): string => { let svgContent: string = eStringPlaceholder.EMPTY; switch (motionStatus) { case eGpsMotionStatus.NO_GPS_DEVICE: svgContent = GpsLocationHelper.getNoGpsDeviceIconPath(); break; case eGpsMotionStatus.MOVING: svgContent = GpsLocationHelper.getMovingIconPath(headingDirection); break; default: svgContent = GpsLocationHelper.getStoppedIconPath(isIgnition); break; } return svgContent; }; static getGpsTitle = ( motionStatus: eGpsMotionStatus, headingDirection?: eGpsHeadingDirection, isIgnition?: boolean ): string => { let gpsTitle = GpsLocationConstants.GPS_TITLES[motionStatus] ?? eStringPlaceholder.EMPTY; if (motionStatus === eGpsMotionStatus.MOVING && headingDirection) { gpsTitle += `${eStringPlaceholder.DASH_WITH_SPACES} ${headingDirection}`; } const isStopStatus = [ eGpsMotionStatus.SHORT_STOP, eGpsMotionStatus.EXTENDED_STOP, eGpsMotionStatus.PARKING, ].includes(motionStatus); if (isStopStatus && isIgnition) { gpsTitle += `${eStringPlaceholder.DASH_WITH_SPACES} ${eSharedString.IGNITION}`; } return gpsTitle; }; static getGpsTitleColorClass = ( motionStatus: eGpsMotionStatus, isDarkMode?: boolean ): string => { const colorClasses = isDarkMode ? GpsLocationConstants.GPS_TITLE_DROPDOWN_COLOR_CLASSES : GpsLocationConstants.GPS_TITLE_COLOR_CLASSES; return colorClasses[motionStatus] ?? eStringPlaceholder.EMPTY; }; static getMovingIconPath = ( headingDirection: eGpsHeadingDirection ): string => { const rotationDeg = GpsLocationConstants.GPS_HEADING_ROTATION_ANGLE[ headingDirection ]; return ` `; }; static getStoppedIconPath = (isIgnition?: boolean): string => { return isIgnition ? ` ` : ``; }; static getNoGpsDeviceIconPath = (): string => { return ` `; }; }