feat: showing recipe list values
- add displaying for values in recipe list, with some editable fields except topping, string params, feed pattern/level Signed-off-by: pakintada@gmail.com <Pakin>
This commit is contained in:
parent
4866674f26
commit
dbb5ce466c
14 changed files with 640 additions and 37 deletions
|
|
@ -137,4 +137,137 @@ function buildOverviewFromServer() {
|
|||
}
|
||||
}
|
||||
|
||||
export { buildOverviewFromServer };
|
||||
const 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),
|
||||
topping: (id: number) => inRange(8110, 8130, id)
|
||||
};
|
||||
|
||||
function inRange(min: number, max: number, value: number) {
|
||||
// console.log(min, max, value, value >= min && value <= max);
|
||||
return value >= min && value <= max;
|
||||
}
|
||||
|
||||
function getCategories() {
|
||||
let keys = Object.keys(rangeMaterialMapping);
|
||||
keys.push('equipment');
|
||||
return keys;
|
||||
}
|
||||
|
||||
function getMaterialType(materialId: number) {
|
||||
for (const key of Object.keys(rangeMaterialMapping)) {
|
||||
if (rangeMaterialMapping[key](materialId)) {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
return 'others';
|
||||
}
|
||||
|
||||
function isNonMaterial(materialId: number) {
|
||||
// test cup, lid, straw
|
||||
return (
|
||||
rangeMaterialMapping['cup'](materialId) ||
|
||||
rangeMaterialMapping['lid'](materialId) ||
|
||||
rangeMaterialMapping['straw'](materialId) ||
|
||||
rangeMaterialMapping['whipper'](materialId) ||
|
||||
rangeMaterialMapping['ice'](materialId)
|
||||
);
|
||||
}
|
||||
|
||||
const MATERIAL_INTER_GUARD = 300000;
|
||||
|
||||
// Inter mode checker
|
||||
function convertFromInterProductCode(materialId: number) {
|
||||
if (materialId > MATERIAL_INTER_GUARD) {
|
||||
try {
|
||||
let pure_id = materialId.toString().slice(2);
|
||||
return parseInt(pure_id);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
return materialId;
|
||||
}
|
||||
|
||||
// Extract material id from display
|
||||
function extractMaterialIdFromDisplay(material_id: string): number {
|
||||
// console.log('extracting from ', material_id);
|
||||
let mat_split = material_id.split(' ');
|
||||
let pure_mat_id = mat_split[mat_split.length - 1] ?? '0';
|
||||
|
||||
try {
|
||||
// console.log('pure mat', pure_mat_id);
|
||||
let mat_id_int = parseInt(pure_mat_id.replace('(', '').replace(')', '').trim());
|
||||
return mat_id_int;
|
||||
} catch (ignored) {}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// StringParam
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
const stringParamsDefinition: { [key: string]: string } = {
|
||||
'esp-v2-press-value': 'Current 100 x mA ( 10 - 24 )'
|
||||
};
|
||||
|
||||
const 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 {
|
||||
buildOverviewFromServer,
|
||||
StringParam,
|
||||
convertFromInterProductCode,
|
||||
getMaterialType,
|
||||
getCategories,
|
||||
isNonMaterial,
|
||||
extractMaterialIdFromDisplay
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue