wrote helper function fto accomodate improper enums
This commit is contained in:
parent
438451690b
commit
23bcb467e9
1 changed files with 20 additions and 9 deletions
|
|
@ -44,18 +44,29 @@ const DEVICE_STATE_MAP = new Map<pond.DeviceState, DeviceStateHelper>([
|
|||
[pond.DeviceState.DEVICE_STATE_MISSING, Missing]
|
||||
]);
|
||||
|
||||
export function compareEnum<T>(value: string | number, enumMember: T): boolean {
|
||||
// Get the enum object from the enum member
|
||||
const enumObj = Object.freeze(enumMember as any).constructor;
|
||||
|
||||
// Check if the value matches either the key or the value of the enum member
|
||||
return Object.keys(enumObj).some(
|
||||
key => enumObj[key] === value || key === value
|
||||
);
|
||||
export function compareEnum<T extends object>(value: T[keyof T], e: T, enumMember: T[keyof T]): boolean {
|
||||
// let has = false
|
||||
// if (typeof value === 'string') {
|
||||
// Object.values(e).forEach((val: keyof T) => {
|
||||
if (e[value as keyof T] === enumMember) {
|
||||
// has = true
|
||||
return true
|
||||
}
|
||||
return false
|
||||
// })
|
||||
// } else if (typeof value === 'number') {
|
||||
// Object.keys(e as any).forEach(val => {
|
||||
// if (val === enumMember) {
|
||||
// has = true
|
||||
// return
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// return has
|
||||
}
|
||||
|
||||
export function getDeviceStateHelper(state: pond.DeviceState): DeviceStateHelper {
|
||||
if (compareEnum(state, pond.DeviceState.DEVICE_STATE_OK)) {
|
||||
if (compareEnum(state, pond.DeviceState, pond.DeviceState.DEVICE_STATE_OK)) {
|
||||
return OK;
|
||||
}
|
||||
const deviceStates = Array.from(DEVICE_STATE_MAP.keys());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue