// 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 ``;
};
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 `
`;
};
}