Taobin-Recipe-Manager/client/src/app/shared/helpers/recipe.ts
2024-02-06 17:00:32 +07:00

128 lines
3.2 KiB
TypeScript

import { Tuple } from "./tuple";
var rangeMaterialMapping: { [key: string]: (id: number) => boolean } = {
soda: (id: number) => id == 1031,
water: (id: number) => id == 1,
ice: (id: number) => id == 9100,
whipper: (id: number) => id == 8102,
bean: (id: number) => inRange(1001, 1009, id) || inRange(1100, 1199, id),
leaves: (id: number) => inRange(1600, 1799, id),
syrup: (id: number) =>
inRange(1032, 1039, id) ||
inRange(1020, 1030, id) ||
inRange(1200, 1299, id),
powder: (id: number) => inRange(1040, 1080, id) || inRange(1300, 1399, id),
cup: (id: number) => inRange(9500, 9549, id),
lid: (id: number) => inRange(9600, 9649, id),
straw: (id: number) => inRange(9700, 9749, id),
icecream: (id: number) => inRange(2100, 2200, id),
};
export function inRange(min: number, max: number, value: number) {
// console.log(min, max, value, value >= min && value <= max);
return value >= min && value <= max;
}
export function getCategories() {
let keys = Object.keys(rangeMaterialMapping);
keys.push('equipment');
return keys;
}
export function getMaterialType(materialId: number) {
for (const key of Object.keys(rangeMaterialMapping)) {
if (rangeMaterialMapping[key](materialId)) {
return key;
}
}
return 'others';
}
export function isNonMaterial(materialId: number) {
// test cup, lid, straw
return (
rangeMaterialMapping['cup'](materialId) ||
rangeMaterialMapping['lid'](materialId) ||
rangeMaterialMapping['straw'](materialId) ||
rangeMaterialMapping['whipper'](materialId) ||
rangeMaterialMapping['ice'](materialId)
);
}
// Inter mode checker
export function convertFromInterProductCode(materialId: number) {
let interPrefix = Math.floor(materialId / 10000) * 10000;
let interId = materialId - interPrefix;
return interId;
}
// StringParam
export class StringParam {
StringParam: string;
extractedParams: { [key: string]: any } = {};
constructor(StringParam: string) {
this.StringParam = StringParam;
}
extract(){
// split by ,
const params = this.StringParam.split(',');
for (const param of params) {
const [key, value] = param.split('=');
if(key != ''){
this.extractedParams[key] = value;
}
}
return this;
}
as_list(){
let res: {pkey: string; pvalue:any}[] = [];
// iter through param
for(let p of Object.keys(this.extractedParams)){
res.push({
"pkey": p,
"pvalue": this.extractedParams[p]
})
}
return res
}
}
export var stringParamsDefinition: { [key: string]: string } = {
'esp-v2-press-value': 'Current 100 x mA ( 10 - 24 )'
}
export var conditionTests: { [key: string]: (arg: any) => boolean } = {
'not-zero': (arg: any) => arg != 0,
'zero': (arg: any) => arg == 0,
'false-if-another-exist': (arg: any) => arg[1] != undefined
}
export var countryMap: Tuple<string, string>[] = [
new Tuple<string, string>('tha', 'Thailand'),
new Tuple<string, string>('mys', 'Malaysia'),
new Tuple<string, string>('aus', 'Australia'),
];
export function getCountryMapSwitcher(param: string) {
console.log("param = ", param);
for (const country of countryMap) {
if(country.first == param || country.second == param){
return country.switchGet(param);
}
}
}