frontend-dali/source/base/functions.ts

95 lines
2 KiB
TypeScript

namespace _dali
{
/**
*/
export function access_level_encode(
access_level : _dali.type.enum_access_level
) : ("none" | "view" | "edit" | "admin")
{
switch (access_level) {
case _dali.type.enum_access_level.none: return "none";
case _dali.type.enum_access_level.view: return "view";
case _dali.type.enum_access_level.edit: return "edit";
case _dali.type.enum_access_level.admin: return "admin";
}
}
/**
*/
export function access_level_decode(
representation : /*("none" | "view" | "edit" | "admin")*/string
) : _dali.type.enum_access_level
{
switch (representation)
{
case "none": return _dali.type.enum_access_level.none;
case "view": return _dali.type.enum_access_level.view;
case "edit": return _dali.type.enum_access_level.edit;
case "admin": return _dali.type.enum_access_level.admin;
default: throw (new Error("invalid access level representation: " + representation));
}
}
/**
*/
export function view_mode_encode(
mode : _dali.type.enum_view_mode
) : string
{
switch (mode)
{
case _dali.type.enum_view_mode.week: {return "week"; break;}
case _dali.type.enum_view_mode.list: {return "list"; break;}
default: {throw (new Error("invalid mode"));}
}
}
/**
*/
export function view_mode_decode(
view_mode_encoded : string
) : _dali.type.enum_view_mode
{
const map : Record<string, _dali.type.enum_view_mode> = {
"week": _dali.type.enum_view_mode.week,
"list": _dali.type.enum_view_mode.list,
};
if (! (view_mode_encoded in map))
{
throw (new Error("invalid mode: " + view_mode_encoded));
}
else
{
return map[view_mode_encoded];
}
}
/**
*/
export function view_mode_determine(
mode_descriptor : string
) : _dali.type.enum_view_mode
{
if (mode_descriptor === "auto")
{
return (
(window.innerWidth >= 800)
?
_dali.type.enum_view_mode.week
:
_dali.type.enum_view_mode.list
);
}
else
{
return view_mode_decode(mode_descriptor);
}
}
}