UNPKG

@open-tender/store

Version:

A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API

568 lines (567 loc) 25.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeHeaderStatusColor = exports.makeOrderPrepTimes = exports.makeBucketColor = exports.displayCounts = exports.makeDisplayCounts = exports.makeTicketGroups = exports.makeModifiersMetadataLookup = exports.makeCartLookup = exports.makeItemTypesMap = exports.makeItemTypeSettings = exports.makeTicketCounts = exports.makeOrderBucketsCounts = exports.makeOrderBuckets = exports.makeKdsStationCounts = exports.makeKdsStationCount = exports.makeCurrentAndFutureOrders = exports.makeKdsCounts = exports.makeItemCounts = exports.makeOrderItemSignature = exports.makeOrdersForPrepStation = exports.filterOrdersToday = exports.filterOrdersByPrepType = exports.filterOrdersByItemType = exports.makeOrdersOfType = exports.makeCompletedOrders = exports.makeIncompleteOrders = exports.makeFutureOrders = exports.makeCurrentOrders = exports.makeKdsOrders = exports.makeKdsOrder = exports.isFutureOrder = exports.isCompleted = exports.notCompleted = exports.isDone = exports.notDone = exports.makeOrdersParams = exports.prepStatus = void 0; var tslib_1 = require("tslib"); var utils_1 = require("@open-tender/utils"); var utils_2 = require("@open-tender/utils"); exports.prepStatus = { TODO: 'TODO', IN_PROGRESS: 'IN_PROGRESS', DONE: 'DONE', COMPLETED: 'COMPLETED', FULFILLED: 'FULFILLED' }; var makeOrdersParams = function (_a) { var businessDate = _a.businessDate, receiptType = _a.receiptType, channelType = _a.channelType, prepStatus = _a.prepStatus, search = _a.search, sortBy = _a.sortBy, sortDirection = _a.sortDirection, parentOrderId = _a.parentOrderId; var args = {}; if (businessDate) { args = tslib_1.__assign(tslib_1.__assign({}, args), { business_date: businessDate }); } if (receiptType) { args = tslib_1.__assign(tslib_1.__assign({}, args), { receipt_type: receiptType }); } if (channelType) { args = tslib_1.__assign(tslib_1.__assign({}, args), { channel_type: channelType.join(',') }); } if (prepStatus) { args = tslib_1.__assign(tslib_1.__assign({}, args), { prep_status: prepStatus.join(',') }); } if (search) { args = tslib_1.__assign(tslib_1.__assign({}, args), { search: search }); } if (sortBy) { args = tslib_1.__assign(tslib_1.__assign({}, args), { sort_by: sortBy }); } if (sortDirection) { args = tslib_1.__assign(tslib_1.__assign({}, args), { sort_direction: sortDirection }); } if (parentOrderId) { args = tslib_1.__assign(tslib_1.__assign({}, args), { parent_receipt_uuid: parentOrderId }); } return args; }; exports.makeOrdersParams = makeOrdersParams; var notDone = function (prep_status) { var notDoneStates = [exports.prepStatus.TODO, exports.prepStatus.IN_PROGRESS]; return notDoneStates.includes(prep_status); }; exports.notDone = notDone; var isDone = function (prep_status) { var doneStates = [ exports.prepStatus.DONE, exports.prepStatus.COMPLETED, exports.prepStatus.FULFILLED ]; return doneStates.includes(prep_status); }; exports.isDone = isDone; var notCompleted = function (prep_status) { var notCompletedStates = [ exports.prepStatus.TODO, exports.prepStatus.IN_PROGRESS, exports.prepStatus.DONE ]; return notCompletedStates.includes(prep_status); }; exports.notCompleted = notCompleted; var isCompleted = function (prep_status) { var completeStates = [exports.prepStatus.COMPLETED, exports.prepStatus.FULFILLED]; return completeStates.includes(prep_status); }; exports.isCompleted = isCompleted; var isFutureOrder = function (order) { var timezone = order.timezone, order_prep = order.order_prep; if (!order_prep) return false; var fire_at = order_prep.fire_at, prep_status = order_prep.prep_status; var tz = utils_2.timezoneMap[timezone]; var fireDate = fire_at ? (0, utils_1.isoToDate)(fire_at, tz) : null; var currentDate = (0, utils_2.currentLocalDate)(tz); return (0, exports.notDone)(prep_status) && fireDate && fireDate > currentDate; }; exports.isFutureOrder = isFutureOrder; var makeKdsOrder = function (order) { return order; }; exports.makeKdsOrder = makeKdsOrder; var makeKdsOrders = function (orders) { return orders.filter(function (i) { var _a; return ((_a = i.order_prep) === null || _a === void 0 ? void 0 : _a.expected_at) && i.order_prep.fire_at && i.tickets; }); }; exports.makeKdsOrders = makeKdsOrders; var makeCurrentOrders = function (orders) { return orders.filter(function (i) { var tz = utils_2.timezoneMap[i.timezone]; if (!i.order_prep) return false; var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status; if (!fire_at) return false; var fireDate = (0, utils_1.isoToDate)(fire_at, tz); var currentDate = (0, utils_2.currentLocalDate)(tz); return (0, exports.notCompleted)(prep_status) && fireDate < currentDate; }); }; exports.makeCurrentOrders = makeCurrentOrders; var makeFutureOrders = function (orders) { return orders.filter(function (i) { var tz = utils_2.timezoneMap[i.timezone]; if (!i.order_prep) return false; var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status; if (!fire_at) return false; var fireDate = (0, utils_1.isoToDate)(fire_at, tz); var currentDate = (0, utils_2.currentLocalDate)(tz); return (0, exports.notDone)(prep_status) && fireDate > currentDate; }); }; exports.makeFutureOrders = makeFutureOrders; var makeIncompleteOrders = function (orders) { return orders.filter(function (i) { var tz = utils_2.timezoneMap[i.timezone]; if (!i.order_prep) return false; var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status; if (!fire_at) return false; var fireDate = (0, utils_1.isoToDate)(fire_at, tz); return (0, exports.notCompleted)(prep_status) && fireDate; }); }; exports.makeIncompleteOrders = makeIncompleteOrders; var makeCompletedOrders = function (orders) { return orders.filter(function (i) { var tz = utils_2.timezoneMap[i.timezone]; if (!i.order_prep) return false; var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status; if (!fire_at) return false; var fireDate = (0, utils_1.isoToDate)(fire_at, tz); var fireDateStr = (0, utils_2.formatDate)(fireDate, 'yyyy-MM-dd'); var currentDate = (0, utils_2.currentLocalDate)(tz); var currentDateStr = (0, utils_2.formatDate)(currentDate, 'yyyy-MM-dd'); return (0, exports.isCompleted)(prep_status) && fireDateStr === currentDateStr; }); }; exports.makeCompletedOrders = makeCompletedOrders; var makeOrdersOfType = function (orders, orderType) { switch (orderType) { case 'FUTURE': return (0, exports.makeFutureOrders)(orders); case 'INCOMPLETE': return (0, exports.makeIncompleteOrders)(orders); case 'COMPLETED': return (0, exports.makeCompletedOrders)(orders); default: return (0, exports.makeCurrentOrders)(orders); } }; exports.makeOrdersOfType = makeOrdersOfType; var filterOrdersByItemType = function (orders, itemTypeIds) { if (!itemTypeIds) return orders; return orders .reduce(function (arr, i) { var _a; var tickets = (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.filter(function (t) { return itemTypeIds.includes(t.item_type_id); }); return tslib_1.__spreadArray(tslib_1.__spreadArray([], arr, true), [tslib_1.__assign(tslib_1.__assign({}, i), { tickets: tickets })], false); }, []) .filter(function (i) { var _a; return (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.length; }); }; exports.filterOrdersByItemType = filterOrdersByItemType; var filterOrdersByPrepType = function (orders, prepType) { var statusFunc = prepType === 'ASSEMBLY' ? exports.notDone : exports.notCompleted; return orders .reduce(function (arr, i) { var _a; var tickets = (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.filter(function (t) { return statusFunc(t.ticket_status); }); return tslib_1.__spreadArray(tslib_1.__spreadArray([], arr, true), [tslib_1.__assign(tslib_1.__assign({}, i), { tickets: tickets })], false); }, []) .filter(function (i) { var _a; return (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.length; }); }; exports.filterOrdersByPrepType = filterOrdersByPrepType; var filterOrdersToday = function (orders) { if (!orders.length) return []; var tz = utils_2.timezoneMap[orders[0].timezone]; var today = (0, utils_2.currentLocalDateStr)(tz); return orders.filter(function (i) { if (i.requested_at === 'asap') return true; var requesteDateStr = (0, utils_1.isoToDateStr)(i.requested_at, tz, utils_2.DATE); return today === requesteDateStr; }); }; exports.filterOrdersToday = filterOrdersToday; var makeOrdersForPrepStation = function (orders, prepStation, orderType) { var item_type_ids = prepStation.item_type_ids, prep_type = prepStation.prep_type, expo_done_only = prepStation.expo_done_only; var ordersOfType = (0, exports.makeOrdersOfType)(orders, orderType); if (orderType === 'COMPLETED') { return (0, exports.filterOrdersByItemType)(ordersOfType, item_type_ids); } var filteredOrders = prep_type === 'ASSEMBLY' ? ordersOfType.filter(function (i) { return i.order_prep ? (0, exports.notDone)(i.order_prep.prep_status) : false; }) : ordersOfType.filter(function (i) { return !i.order_prep ? false : expo_done_only ? i.order_prep.prep_status === 'DONE' : (0, exports.notCompleted)(i.order_prep.prep_status); }); var filtered = (0, exports.filterOrdersByItemType)(filteredOrders, item_type_ids); return prep_type === 'EXPO' ? filtered : filtered.filter(function (i) { var _a; return (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.filter(function (t) { return (0, exports.notDone)(t.ticket_status); }).length; }); }; exports.makeOrdersForPrepStation = makeOrdersForPrepStation; var makeOrderItemSignature = function (item, withNotes) { if (withNotes === void 0) { withNotes = false; } var groups = item.groups || []; var optionIds = groups .reduce(function (arr, group) { var ids = group.options .filter(function (o) { return o.quantity > 0; }) .reduce(function (optionsArr, o) { var optionArr = new Array(o.quantity); optionArr.fill(o.id); return tslib_1.__spreadArray(tslib_1.__spreadArray([], optionsArr, true), optionArr, true); }, []); return tslib_1.__spreadArray(tslib_1.__spreadArray([], arr, true), ids, true); }, []) .sort(function (a, b) { return a - b; }); var itemIds = tslib_1.__spreadArray([item.id], optionIds, true).join('.'); return withNotes ? "".concat(itemIds, ".").concat(item.made_for, ".").concat(item.notes) : itemIds; }; exports.makeOrderItemSignature = makeOrderItemSignature; var makeItemCounts = function (orders, withMods) { if (withMods === void 0) { withMods = true; } return orders.reduce(function (obj, order) { order.cart.forEach(function (item) { var itemId = withMods ? (0, exports.makeOrderItemSignature)(item) : "".concat(item.id); var existing = obj[itemId]; obj[itemId] = existing ? { item: item, count: (existing.count += item.quantity) } : { item: item, count: item.quantity }; }); return obj; }, {}); }; exports.makeItemCounts = makeItemCounts; var updateCounts = function (counts, ticketCounts) { // console.log('BEFORE', counts, ticketCounts) var updated = Object.entries(counts).reduce(function (obj, _a) { var _b; var key = _a[0], count = _a[1]; return tslib_1.__assign(tslib_1.__assign({}, obj), (_b = {}, _b[key] = count + (ticketCounts[key] || 0), _b)); }, {}); updated.Orders = counts.Orders + 1; // console.log('AFTER', updated) return updated; }; var makeKdsCounts = function (itemTypes, orders) { if (!itemTypes || !orders) { return { current: null, future: null, qa: null }; } console.time('makeKdsCounts'); var itemTypeCounts = itemTypes .filter(function (i) { return i.is_default; }) .reduce(function (obj, i) { var _a; return (tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.name] = 0, _a))); }, {}); var current = tslib_1.__assign({ Orders: 0 }, itemTypeCounts); var qa = tslib_1.__assign({ Orders: 0 }, itemTypeCounts); var future = tslib_1.__assign({ Orders: 0 }, itemTypeCounts); var openOrders = orders.filter(function (i) { return i.order_prep && (0, exports.notCompleted)(i.order_prep.prep_status); }); openOrders.forEach(function (order) { if (!order.order_prep || !order.tickets) return; var _a = order.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status; var tz = utils_2.timezoneMap[order.timezone]; var fireDate = fire_at ? (0, utils_1.isoToDate)(fire_at, tz) : null; var currentDate = (0, utils_2.currentLocalDate)(tz); var isDone = prep_status === exports.prepStatus.DONE; var isCurrent = fireDate ? fireDate < currentDate : false; var ticketCounts = order.tickets.reduce(function (obj, ticket) { var _a; var count = obj[ticket.item_type_name] || 0; return tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[ticket.item_type_name] = count + ticket.item_nos.length, _a)); }, {}); if (isDone) { qa = updateCounts(qa, ticketCounts); } else if (isCurrent) { current = updateCounts(current, ticketCounts); } else { future = updateCounts(future, ticketCounts); } }); console.timeEnd('makeKdsCounts'); return { current: current, future: future, qa: qa }; }; exports.makeKdsCounts = makeKdsCounts; var makeCurrentAndFutureOrders = function (orders) { var current = []; var future = []; orders.forEach(function (i) { var tz = utils_2.timezoneMap[i.timezone]; if (!i.order_prep) return; var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status; var fireDate = fire_at ? (0, utils_1.isoToDate)(fire_at, tz) : null; if ((0, exports.isCompleted)(prep_status) || !fireDate) return; var currentDate = (0, utils_2.currentLocalDate)(tz); if (fireDate < currentDate) { current.push(i); } else if (fireDate > currentDate) { future.push(i); } }); return { current: current, future: future }; }; exports.makeCurrentAndFutureOrders = makeCurrentAndFutureOrders; var makeKdsStationCount = function (orders, itemTypeIds, prepType) { var byItemType = (0, exports.filterOrdersByItemType)(orders, itemTypeIds); var filtered = (0, exports.filterOrdersByPrepType)(byItemType, prepType); var tickets = filtered.reduce(function (arr, i) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], arr, true), (i.tickets || []), true); }, []); return { orders: filtered.length, tickets: tickets.length }; }; exports.makeKdsStationCount = makeKdsStationCount; var makeKdsStationCounts = function (orders, prepStations) { var _a = (0, exports.makeCurrentAndFutureOrders)(orders), currentOrders = _a.current, futureOrders = _a.future; var currentAssembly = currentOrders.filter(function (i) { return i.order_prep ? (0, exports.notDone)(i.order_prep.prep_status) : false; }); var futureAssembly = futureOrders.filter(function (i) { return i.order_prep ? (0, exports.notDone)(i.order_prep.prep_status) : false; }); var currentExpoDone = currentOrders.filter(function (i) { return i.order_prep ? i.order_prep.prep_status === 'DONE' : false; }); var currentExpo = currentOrders.filter(function (i) { return i.order_prep ? (0, exports.notCompleted)(i.order_prep.prep_status) : false; }); var futureExpoDone = futureOrders.filter(function (i) { return i.order_prep ? i.order_prep.prep_status === 'DONE' : false; }); var futureExpo = futureOrders.filter(function (i) { return i.order_prep ? (0, exports.notCompleted)(i.order_prep.prep_status) : false; }); return prepStations.reduce(function (obj, i) { var _a; var currentFiltered = i.prep_type === 'ASSEMBLY' ? currentAssembly : i.expo_done_only ? currentExpoDone : currentExpo; var current = (0, exports.makeKdsStationCount)(currentFiltered, i.item_type_ids, i.prep_type); var futureFiltered = i.prep_type === 'ASSEMBLY' ? futureAssembly : i.expo_done_only ? futureExpoDone : futureExpo; var future = (0, exports.makeKdsStationCount)(futureFiltered, i.item_type_ids, i.prep_type); return tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.prep_station_id] = { CURRENT: current, FUTURE: future }, _a)); }, {}); }; exports.makeKdsStationCounts = makeKdsStationCounts; var makeOrderBuckets = function (orders, tz) { var intervals = (0, utils_2.makeIntervals)(tz); var withOrders = intervals.map(function (interval) { var inBucket = orders.filter(function (order) { if (!order.order_prep) return false; var ready_at = order.order_prep.ready_at; if (!ready_at) return false; var readyAt = (0, utils_1.isoToDate)(ready_at, tz); return readyAt > interval.start && readyAt <= interval.end; }); return tslib_1.__assign(tslib_1.__assign({}, interval), { orders: inBucket }); }); return withOrders; }; exports.makeOrderBuckets = makeOrderBuckets; var makeOrderBucketsCounts = function (itemTypes, orders) { if (itemTypes === void 0) { itemTypes = []; } if (orders === void 0) { orders = []; } var itemTypeCounts = itemTypes .filter(function (i) { return i.is_default; }) .reduce(function (obj, i) { var _a; return (tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.name] = 0, _a))); }, {}); var counts = tslib_1.__assign({ Orders: 0 }, itemTypeCounts); orders.forEach(function (order) { var _a; var ticketCounts = (_a = order.tickets) === null || _a === void 0 ? void 0 : _a.reduce(function (obj, ticket) { var _a; var count = obj[ticket.item_type_name] || 0; return tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[ticket.item_type_name] = count + ticket.item_nos.length, _a)); }, {}); if (ticketCounts) counts = updateCounts(counts, ticketCounts); }); return counts; }; exports.makeOrderBucketsCounts = makeOrderBucketsCounts; var makeTicketCounts = function (tickets) { return tickets.reduce(function (obj, i) { var _a; var count = obj[i.item_type_id.toString()] || 0; return tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.item_type_id] = count + i.item_nos.length, _a)); }, {}); }; exports.makeTicketCounts = makeTicketCounts; var makeItemTypeSettings = function (itemType) { var _a = itemType || {}, is_default = _a.is_default, is_grouped = _a.is_grouped, is_hidden_assembly = _a.is_hidden_assembly, is_hidden_qa = _a.is_hidden_qa, print_on_completed = _a.print_on_completed; return { is_default: is_default, is_grouped: is_grouped, is_hidden_assembly: is_hidden_assembly, is_hidden_qa: is_hidden_qa, print_on_completed: print_on_completed }; }; exports.makeItemTypeSettings = makeItemTypeSettings; var makeItemTypesMap = function (itemTypes) { return itemTypes.reduce(function (obj, i) { var _a; return (tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.item_type_id] = i, _a))); }, {}); }; exports.makeItemTypesMap = makeItemTypesMap; var makeCartLookup = function (cart) { return cart.reduce(function (obj, i) { var _a; if (!i.item_no) return obj; return tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.item_no.toString()] = i, _a)); }, {}); }; exports.makeCartLookup = makeCartLookup; var makeModifiersMetadataLookup = function (cart) { return cart.reduce(function (obj, i) { var _a; return (tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.item_no.toString()] = i, _a))); }, {}); }; exports.makeModifiersMetadataLookup = makeModifiersMetadataLookup; var makeTicketGroups = function (tickets, itemTypes, isAssembly, cart, modifiersMetadata) { var lookup = cart ? (0, exports.makeCartLookup)(cart) : modifiersMetadata ? (0, exports.makeModifiersMetadataLookup)(modifiersMetadata) : {}; var itemTypesMap = (0, exports.makeItemTypesMap)(itemTypes); var grouped = tickets.reduce(function (obj, i) { var _a; var items = i.item_nos.map(function (n) { return lookup[n.toString()]; }); var settings = (0, exports.makeItemTypeSettings)(itemTypesMap[i.item_type_id]); var hideTicket = isAssembly && settings.is_hidden_assembly; var ticket = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, i), { items: items }), settings); var group = obj[i.item_type_id.toString()] || []; var newGroup = hideTicket ? group : tslib_1.__spreadArray(tslib_1.__spreadArray([], group, true), [ticket], false); return tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.item_type_id] = newGroup, _a)); }, {}); var groups = Object.values(grouped); return groups.filter(function (group) { return group.length; }); }; exports.makeTicketGroups = makeTicketGroups; var makeDisplayCounts = function (counts) { if (!counts) return ''; return Object.entries(counts).map(function (_a) { var value = _a[1]; return value; }); }; exports.makeDisplayCounts = makeDisplayCounts; var displayCounts = function (counts) { if (!counts) return ''; var countStr = Object.entries(counts) // .map(([key, value]) => `${value}-${key.charAt(0)}`) .map(function (_a) { var value = _a[1]; return "".concat(value); }) .join('/'); return " (".concat(countStr, ")"); }; exports.displayCounts = displayCounts; var makeBucketColor = function (settings, minutes) { var _a = settings || {}, warning_minutes = _a.warning_minutes, alert_minutes = _a.alert_minutes; if (!warning_minutes && !alert_minutes) return ''; return minutes < warning_minutes ? 'error' : minutes < alert_minutes ? 'alert' : 'text'; }; exports.makeBucketColor = makeBucketColor; var makeOrderPrepTimes = function (order, amPm, warningMinutes, alertMinutes) { if (amPm === void 0) { amPm = false; } if (warningMinutes === void 0) { warningMinutes = 5; } if (alertMinutes === void 0) { alertMinutes = 10; } var order_prep = order.order_prep, timezone = order.timezone, requested_at = order.requested_at; if (!order_prep) return null; var ready_at = order_prep.ready_at, expected_at = order_prep.expected_at, prep_status = order_prep.prep_status; if (!ready_at || !expected_at || requested_at === 'asap') return null; var tz = utils_2.timezoneMap[timezone]; var current = (0, utils_2.currentLocalDate)(tz); var readyBy = (0, utils_1.isoToDate)(ready_at || expected_at, tz); var requested = (0, utils_1.isoToDate)(requested_at, tz); var expected = (0, utils_1.isoToDate)(expected_at, tz); var delayed = (0, utils_2.minutesLeft)(expected, requested); var minutes = (0, utils_2.minutesLeft)(readyBy, current); var readyTime = (0, utils_2.formatDate)(readyBy, amPm ? 'h:mm a' : 'h:mm'); var requestedTime = (0, utils_2.formatDate)(requested, amPm ? 'h:mm a' : 'h:mm'); var expectedTime = (0, utils_2.formatDate)(expected, amPm ? 'h:mm a' : 'h:mm'); var expectedDate = (0, utils_2.formatDate)(expected, 'EEE, MMM d'); var todayDate = (0, utils_2.formatDate)(current, 'yyyy-MM-dd'); var dateStr = (0, utils_2.formatDate)(expected, 'yyyy-MM-dd'); dateStr = dateStr === todayDate ? '' : (0, utils_2.formatDate)(expected, 'EEE, MMM d'); var status = (0, exports.isCompleted)(prep_status) ? 'COMPLETE' : minutes < warningMinutes ? 'WARNING' : minutes < alertMinutes ? 'ALERT' : 'PREP'; return { delayed: delayed, requested: requested, requestedTime: requestedTime, expected: expected, expectedDate: expectedDate, expectedTime: expectedTime, readyBy: readyBy, readyTime: readyTime, dateStr: dateStr, status: status }; }; exports.makeOrderPrepTimes = makeOrderPrepTimes; var makeHeaderStatusColor = function (status) { switch (status) { case 'WARNING': return 'error'; case 'ALERT': return 'alert'; default: return 'default'; } }; exports.makeHeaderStatusColor = makeHeaderStatusColor;