meemup-library 1.0.64 → 1.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ import EnumOrderType from "../enums/EnumOrderType";
2
+ import IKitchenScreenSetting from "../interfaces/IKitchenScreenSetting";
3
+ import IKitchenOrderDetail from "../interfaces/IKitchenOrderDetail";
4
+ import IKitchenTimes from "../interfaces/IKitchenTimes";
5
+ import IEmergencyBrake from "../interfaces/IEmergencyBrake";
6
+ import IKitchenZone from "../interfaces/IKitchenZone";
7
+ import IKitchenOrderDetailItems from "../interfaces/IKitchenOrderDetailItems";
8
+ declare const _default: {
9
+ atLeastOneItemToShowInKitchen(list: IKitchenOrderDetailItems[]): boolean;
10
+ filterOrderDetailReducer(orders: IKitchenOrderDetail[], setting: IKitchenScreenSetting): IKitchenOrderDetail[];
11
+ forToday(desiredDate: string): boolean;
12
+ convertStrToSecond(str?: string | null): number;
13
+ dateToSecond(date: Date): number;
14
+ calculateTik(detail: IKitchenOrderDetail, times: IKitchenTimes, emergency: IEmergencyBrake, zones: IKitchenZone[]): number;
15
+ sortOrders(orders: IKitchenOrderDetail[], setting: IKitchenScreenSetting): IKitchenOrderDetail[];
16
+ listToMatrix(setting: IKitchenScreenSetting, orders: IKitchenOrderDetail[], page: number): IKitchenOrderDetail[][];
17
+ calculateTotalPage(listLength: number, pageSize: number): number;
18
+ getOrderTypeColor(orderType: EnumOrderType, setting: IKitchenScreenSetting): string;
19
+ getOrderTypeLabel(orderType: EnumOrderType): "" | "Delivery" | "Dining" | "Pickup";
20
+ };
21
+ export default _default;
@@ -0,0 +1,149 @@
1
+ import EnumOrderType from "../enums/EnumOrderType";
2
+ import EnumKitchenScreenSortOrders from "../enums/EnumKitchenScreenSortOrders";
3
+ import { initKitchenOrderDetail } from "../interfaces/IKitchenOrderDetail";
4
+ export default new class KitchenController {
5
+ atLeastOneItemToShowInKitchen(list) {
6
+ let result = false;
7
+ list.forEach(value => {
8
+ if (value.displayOnKitchenDisplay)
9
+ result = true;
10
+ });
11
+ return result;
12
+ }
13
+ filterOrderDetailReducer(orders, setting) {
14
+ orders = orders.filter(i => setting.showOrdersViaStatus.includes(i.state));
15
+ orders = orders.filter(i => i.desiredDateTime === null || i.desiredDateTime === "" || this.forToday(i.desiredDateTime));
16
+ orders = orders.filter(i => i.displayOnKitchenDisplay && this.atLeastOneItemToShowInKitchen(i.items));
17
+ return this.sortOrders(orders.filter(i => i.id !== initKitchenOrderDetail.id), setting);
18
+ }
19
+ forToday(desiredDate) {
20
+ try {
21
+ let dd = new Date();
22
+ let des = new Date(desiredDate);
23
+ return dd.getFullYear() === des.getFullYear() && dd.getMonth() === des.getMonth() && dd.getDate() === des.getDate();
24
+ }
25
+ catch (_a) {
26
+ return true;
27
+ }
28
+ }
29
+ convertStrToSecond(str = "00:00:00") {
30
+ if (str === null)
31
+ return 0;
32
+ let second = 0;
33
+ let minute = 0;
34
+ let hour = 0;
35
+ let parts = str.split(":").reverse();
36
+ if (parts.length > 0)
37
+ second = +parts[0];
38
+ if (parts.length > 1)
39
+ minute = +parts[1];
40
+ if (parts.length > 2)
41
+ hour = +parts[2];
42
+ return (hour * 60 * 60) + (minute * 60) + second;
43
+ }
44
+ dateToSecond(date) {
45
+ return parseInt((date.getTime() / 1000) + "");
46
+ }
47
+ calculateTik(detail, times, emergency, zones) {
48
+ // console.log(`desired date time : ${new Date(detail.desiredDateTime)}`)
49
+ // console.log(`current date time : ${new Date()}`)
50
+ const { deliveryMinimumTime, minimumPreparationTime, pickupMinimumTime, diningMinimumTime } = times;
51
+ const { deliveryDelayTime, pickupDelayTime } = emergency;
52
+ let des = this.dateToSecond(new Date(detail.desiredDateTime));
53
+ let cur = this.dateToSecond(new Date());
54
+ let deliveryTime = 0;
55
+ let pre = this.convertStrToSecond(detail.preparationTime);
56
+ switch (detail.type) {
57
+ case EnumOrderType.delivery:
58
+ //append delivery delay time
59
+ des += (deliveryDelayTime * 60);
60
+ deliveryTime = (deliveryMinimumTime * 60);
61
+ let zone = zones.find(i => i.id === detail.zoneId);
62
+ if (zone)
63
+ deliveryTime += (zone === null || zone === void 0 ? void 0 : zone.additionalDeliveryTime) * 60;
64
+ des += deliveryTime;
65
+ break;
66
+ case EnumOrderType.pickup:
67
+ //append delivery delay time
68
+ des += (pickupDelayTime * 60);
69
+ des += (pickupMinimumTime * 60);
70
+ break;
71
+ case EnumOrderType.dining:
72
+ des += (diningMinimumTime * 60);
73
+ break;
74
+ default:
75
+ break;
76
+ }
77
+ des += (minimumPreparationTime * 60);
78
+ des += pre;
79
+ des -= cur;
80
+ if (des > 0)
81
+ return des;
82
+ return 0;
83
+ }
84
+ sortOrders(orders, setting) {
85
+ switch (setting.sortOrders) {
86
+ case EnumKitchenScreenSortOrders.ORDER_NUMBER:
87
+ return orders.sort((a, b) => a.number > b.number ? -1 : 1);
88
+ case EnumKitchenScreenSortOrders.REGISTRATION_TIME:
89
+ return orders.sort((a, b) => a.registrationDate > b.registrationDate ? -1 : 1);
90
+ case EnumKitchenScreenSortOrders.DESIRED_TIME:
91
+ return orders.sort((a, b) => a.desiredDateTime > b.desiredDateTime ? 1 : -1);
92
+ case EnumKitchenScreenSortOrders.PREPARATION_TIME:
93
+ return orders.sort((a, b) => a.preparationTime > b.preparationTime ? 1 : -1);
94
+ default:
95
+ return orders;
96
+ }
97
+ }
98
+ listToMatrix(setting, orders, page) {
99
+ let matrix = [];
100
+ let i;
101
+ let k;
102
+ const pageSize = setting.row * setting.column;
103
+ let start = (page - 1) * pageSize;
104
+ let stop = page * pageSize;
105
+ let list = this.sortOrders(orders, setting).slice(start, stop);
106
+ for (i = 0, k = -1; i < list.length; i++) {
107
+ if (i % setting.column === 0) {
108
+ k++;
109
+ matrix.push([]);
110
+ }
111
+ matrix[k].push(list[i]);
112
+ }
113
+ matrix.forEach(value => {
114
+ while (value.length < setting.column) {
115
+ value.push(initKitchenOrderDetail);
116
+ }
117
+ });
118
+ return matrix;
119
+ }
120
+ calculateTotalPage(listLength, pageSize) {
121
+ let part1 = parseInt((listLength / pageSize) + "");
122
+ let part2 = listLength % pageSize === 0 ? 0 : 1;
123
+ return part1 + part2 === 0 ? 1 : part1 + part2;
124
+ }
125
+ getOrderTypeColor(orderType, setting) {
126
+ switch (orderType) {
127
+ case EnumOrderType.delivery:
128
+ return setting.deliveryColor;
129
+ case EnumOrderType.dining:
130
+ return setting.diningColor;
131
+ case EnumOrderType.pickup:
132
+ return setting.pickupColor;
133
+ default:
134
+ return "#000";
135
+ }
136
+ }
137
+ getOrderTypeLabel(orderType) {
138
+ switch (orderType) {
139
+ case EnumOrderType.delivery:
140
+ return "Delivery";
141
+ case EnumOrderType.dining:
142
+ return "Dining";
143
+ case EnumOrderType.pickup:
144
+ return "Pickup";
145
+ default:
146
+ return "";
147
+ }
148
+ }
149
+ }();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meemup-library",
3
- "version": "1.0.64",
3
+ "version": "1.0.65",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",