UNPKG

@dynamic-data/uber-mockups

Version:
929 lines (841 loc) 26.3 kB
import { getRandomInt, getRandomString, randomUUID, randomCurrency, getRandBool, randomIntPhone, getRandomName, getRandomCarDetails, getRandomLatLng, getRandomAddress } from '@dynamic-data/utils'; import MOCK from '@dynamic-data/uber-data'; var PriceEstimatesModel = { localized_display_name: function localized_display_name(display_name) { return display_name; }, distance: function distance() { return getRandomInt(99, 999999) / 100; }, display_name: function display_name() { return getRandomString(10); }, product_id: function product_id() { return randomUUID(); }, high_estimate: function high_estimate(estimate, currency_code) { if (estimate.includes("-")) { var currency = randomCurrency("SIMPLE WEST ISO-4217", { code: currency_code }); var a = estimate.split("-")[1]; var replaced = a.replace(currency.symbol, ""); return parseInt(replaced); } else { return null; } }, low_estimate: function low_estimate(estimate, currency_code) { if (estimate.includes("-")) { var currency = randomCurrency("SIMPLE WEST ISO-4217", { code: currency_code }); var a = estimate.split("-")[0]; var replaced = a.replace(currency.symbol, ""); return parseInt(replaced); } else { return null; } }, duration: function duration() { return getRandomInt(0, 18000); }, estimate: function estimate(currency_code) { switch (currency_code) { case null: return "Metered"; default: var currency = randomCurrency("SIMPLE WEST ISO-4217", { code: currency_code }); switch (getRandomInt(1, 2)) { case 1: var float = getRandomInt(1000, 5000) / 100; return currency.symbol + float.toString(); case 2: var start = getRandomInt(10, 12); var difference = getRandomInt(1, 30); return "".concat(currency.symbol).concat(start.toString(), "-").concat(currency.symbol).concat((start + difference).toString()); } } }, currency_code: function currency_code() { switch (getRandomInt(1, 100)) { case 1: return null; default: return randomCurrency("SIMPLE WEST ISO-4217").code; } } }; var ProductDetailsModel = { upfront_fare_enabled: function upfront_fare_enabled() { return false; }, capacity: function capacity() { return getRandomInt(0, 10); }, product_id: function product_id() { return randomUUID(); }, image: function image() { return "http://d1a3f4spazzrp4.cloudfront.net/car-types/mono/mono-uberx.png"; }, cash_enabled: function cash_enabled() { return false; }, shared: function shared() { return getRandBool(); }, short_description: function short_description() { return getRandomString(10); }, display_name: function display_name() { return getRandomString(10); }, product_group: function product_group() { return getRandomString(10); }, description: function description() { return getRandomString(20); }, service_fees: function service_fees() { var final = []; var number = getRandomInt(0, 2); for (var i = 0; i < number; i++) { final.push({ "fee": getRandomInt(0, 300) / 100, "name": getRandomString(10) }); } return final; }, cost_per_minute: function cost_per_minute() { return getRandomInt(0, 200) / 100; }, distance_unit: function distance_unit() { var units = ["mile", "km"]; return units[getRandomInt(0, units.length - 1)]; }, minimum: function minimum() { return getRandomInt(0, 1000) / 100; }, cost_per_distance: function cost_per_distance() { return getRandomInt(0, 200) / 100; }, base: function base() { return getRandomInt(0, 500) / 100; }, cancellation_fee: function cancellation_fee() { return getRandomInt(0, 500) / 100; }, currency_code: function currency_code() { return randomCurrency("SIMPLE WEST ISO-4217").code; } }; var RideDetailsModel = { product_id: function product_id() { return randomUUID(); }, request_id: function request_id() { return randomUUID(); }, status: function status() { var statuses = ["processing", "no_drivers_available", "accepted", "arriving", "in_progress", "driver_canceled", "rider_canceled", "completed"]; return statuses[getRandomInt(0, statuses.length - 1)]; }, surge_multiplier: function surge_multiplier() { return getRandomInt(0, 200) / 100; }, shared: function shared() { return getRandBool(); }, driver: function driver() { return { "phone_number": randomIntPhone(), "sms_number": randomIntPhone(), "rating": getRandomInt(0, 5), "picture_url": "https:\/\/d1w2poirtb3as9.cloudfront.net\/img.jpeg", "name": getRandomName() }; }, vehicle: function vehicle() { var car = getRandomCarDetails(); return { "make": car.make, "model": car.model, "license_plate": car.license, "picture_url": "https:\/\/d1w2poirtb3as9.cloudfront.net\/car.jpeg" }; }, location: function location() { var location = getRandomLatLng(); return { "latitude": location[0], "longitude": location[1], "bearing": getRandomInt(0, 360) - 1 }; }, pickup: function pickup(status) { var location = getRandomLatLng(); var address = getRandomAddress(); var eta = null; switch (status) { case "accepted": case "arriving": eta = getRandomInt(0, 60); } var alias = ["work", "home", null]; return { "alias": alias[getRandomInt(0, alias.length - 1)], "latitude": location[0], "longitude": location[1], "name": "".concat(address["streetNumber"], " ").concat(address["streetName"]), "address": "".concat(address["streetNumber"], " ").concat(address["streetName"], ", ").concat(address["city"], ", ").concat(address["county"], ", ").concat(address["postalCode"], ", ").concat(address["country"]), "eta": eta }; }, destination: function destination(status) { var location = getRandomLatLng(); var address = getRandomAddress(); var eta = null; switch (status) { case "in_progress": eta = getRandomInt(0, 60); } var alias = ["work", "home", null]; return { "alias": alias[getRandomInt(0, alias.length - 1)], "latitude": location[0], "longitude": location[1], "name": "".concat(address["streetNumber"], " ").concat(address["streetName"]), "address": "".concat(address["streetNumber"], " ").concat(address["streetName"], ", ").concat(address["city"], ", ").concat(address["county"], ", ").concat(address["postalCode"], ", ").concat(address["country"]), "eta": eta }; }, waypoints: function waypoints(rider_id) { var types = ["dropoff", "pickup"]; var location = getRandomLatLng(); return { "rider_id": rider_id, "latitude": location[0], "type": types[getRandomInt(0, types.length - 1)], "longitude": location[1] }; }, riders: function riders(me) { var riderID = getRandomString(18); switch (me) { case false: switch (getRandomInt(1, 10)) { case 1: riderID = null; } } return { "rider_id": riderID, "first_name": getRandomName(), "me": me }; } }; var RideMapDetailsModel = { request_id: function request_id() { return randomUUID(); }, href: function href() { return "https://trip.uber.com/abc123"; } }; var RideReceiptDetailsModel = { request_id: function request_id() { return randomUUID(); }, subtotal: function subtotal(total_fare, total_charged, currency_code) { var currency = randomCurrency("SIMPLE WEST ISO-4217", { code: currency_code }); var ammount = parseFloat(total_fare.replace(currency.symbol, "")); ammount += parseFloat(total_charged.replace(currency.symbol, "")); return "".concat(currency.symbol).concat(ammount.toFixed(2)); }, total_charged: function total_charged(currency_code) { var currency = randomCurrency("SIMPLE WEST ISO-4217", { code: currency_code }); var ammount = getRandomInt(0, 10000) / 100; return "".concat(currency.symbol).concat(ammount); }, total_owed: function total_owed() { return null; }, total_fare: function total_fare(currency_code) { var currency = randomCurrency("SIMPLE WEST ISO-4217", { code: currency_code }); var ammount = getRandomInt(0, 10000) / 100; return "".concat(currency.symbol).concat(ammount); }, currency_code: function currency_code() { return randomCurrency("SIMPLE WEST ISO-4217").code; }, charge_adjustments: function charge_adjustments() { return []; }, duration: function duration() { var hours = getRandomInt(0, 24) - 1; var minutes = getRandomInt(0, 60) - 1; var seconds = getRandomInt(0, 60) - 1; if (hours < 10) { hours = "0".concat(hours); } if (minutes < 10) { minutes = "0".concat(minutes); } if (seconds < 10) { seconds = "0".concat(seconds); } return "".concat(hours, ":").concat(minutes, ":").concat(seconds); }, distance: function distance() { return getRandomInt(0, 100000) / 100; }, distance_label: function distance_label() { var labels = ["miles"]; return labels[getRandomInt(0, labels.length - 1)]; } }; var SavedPlacesModel = { address: function address() { var address = getRandomAddress(); return "".concat(address["streetNumber"], " ").concat(address["streetName"], ", ").concat(address["city"], ", ").concat(address["county"], ", ").concat(address["postalCode"], ", ").concat(address["country"]); } }; var TimeEstimatesModel = { localized_display_name: function localized_display_name(display_name) { return display_name; }, estimate: function estimate() { return getRandomInt(10, 600); }, display_name: function display_name() { return getRandomString(5, 10); }, product_id: function product_id() { return randomUUID(); } }; var PaymentMethodsModel = { payment_methods: function payment_methods() { var types = [{ Type: "airtel_money", format: null }, { Type: "alipay", format: ["***23", "ga***@uber.com"] }, { Type: "apple_pay", format: "***23" }, { Type: "american_express", format: "***23" }, { Type: "android_pay", format: null }, { Type: "baidu_wallet", format: "***23" }, { Type: "business_account", format: "BusinessName" }, { Type: "family_account", format: "FamilyName" }, { Type: "cash", format: null }, { Type: "discover", format: "***23" }, { Type: "jcb", format: "***23" }, { Type: "lianlian", format: "***23" }, { Type: "maestro", format: "***23" }, { Type: "mastercard", format: "***23" }, { Type: "paypal", format: "ga***@uber.com" }, { Type: "paytm", format: null }, { Type: "ucharge", format: null }, { Type: "upi", format: null }, { Type: "unionpay", format: "***23" }, { Type: "unknown", format: null }, { Type: "visa", format: "***23" }, { Type: "zaakpay", format: null }]; var method = types[getRandomInt(0, types.length - 1)]; var format = ""; switch (method.format) { case null: format = null; break; case "***23": format = "***".concat(getRandomInt(9, 99).toString()); break; case "ga***@uber.com": format = "".concat(getRandomString(2), "***@").concat(getRandomString(getRandomInt(3, 7)), ".com"); break; case "FamilyName": format = getRandomName(); break; case "BusinessName": format = getRandomString(getRandomInt(5, 15)); break; } return { payment_method_id: randomUUID(), type: method.Type, description: format }; } }; var UserInfoModel = { picture: function picture() { return "https://d1w2poirtb3as9.cloudfront.net/f3be498cb0bbf570aa3d.jpeg"; }, first_name: function first_name() { return getRandomName(); }, last_name: function last_name() { return getRandomName(); }, uuid: function uuid() { return randomUUID(); }, rider_id: function rider_id() { return getRandomString(132); }, email: function email() { return "".concat(getRandomString(getRandomInt(3, 7)), "@").concat(getRandomString(getRandomInt(3, 7)), ".com"); }, mobile_verified: function mobile_verified() { return getRandBool(); }, promo_code: function promo_code() { return getRandomString(10); } }; var dataModels = { PriceEstimates: { data: MOCK.priceEstimates, mockup: PriceEstimatesModel }, ProductDetails: { data: MOCK.productDetails, mockup: ProductDetailsModel }, Products: { data: MOCK.products, mockup: ProductDetailsModel }, RideDetails: { data: MOCK.rideDetails, mockup: RideDetailsModel }, RideMapDetails: { data: MOCK.rideMapDetails, mockup: RideMapDetailsModel }, RideReceiptDetails: { data: MOCK.rideReceiptDetails, mockup: RideReceiptDetailsModel }, SavedPlaces: { data: MOCK.savedPlaces, mockup: SavedPlacesModel }, TimeEstimates: { data: MOCK.timeEstimates, mockup: TimeEstimatesModel }, PaymentMethods: { data: MOCK.paymentMethods, mockup: PaymentMethodsModel }, UserInfo: { data: MOCK.userInfo, mockup: UserInfoModel } }; function getModelCSVHeader(dataModel) { return dataModels[dataModel].data[0].split("\t"); } function getPriceEstimatesMockupData(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } mockupData["prices"].forEach(function (priceEstimate) { ["distance", "display_name", "product_id", "duration", "currency_code", "estimate", "localized_display_name", "high_estimate", "low_estimate"].forEach(function (key, i) { switch (key) { case "estimate": priceEstimate[key] = mockupModel[key](priceEstimate["currency_code"]); break; case "localized_display_name": priceEstimate[key] = mockupModel[key](priceEstimate["display_name"]); break; case "high_estimate": case "low_estimate": priceEstimate[key] = mockupModel[key](priceEstimate["estimate"], priceEstimate["currency_code"]); break; default: priceEstimate[key] = mockupModel[key](); break; } }); }); return mockupData; } function getProductDetails(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } ["upfront_fare_enabled", "capacity", "product_id", "price_details", "image", "cash_enabled", "shared", "short_description", "display_name", "product_group", "description"].forEach(function (key, i) { switch (key) { case "price_details": switch (getRandomInt(1, 100)) { case 1: mockupData[key] = null; break; default: ["service_fees", "cost_per_minute", "distance_unit", "minimum", "cost_per_distance", "base", "cancellation_fee", "currency_code"].forEach(function (key2, i2) { switch (key2) { default: mockupData[key][key2] = mockupModel[key2](); break; } }); break; } break; default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } function getProducts(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } mockupData["products"] = [mockupData["products"][0]]; mockupData["products"].forEach(function (product) { ["upfront_fare_enabled", "capacity", "product_id", "price_details", "image", "cash_enabled", "shared", "short_description", "display_name", "product_group", "description"].forEach(function (key, i) { switch (key) { case "price_details": switch (getRandomInt(1, 100)) { case 1: product[key] = null; break; default: ["service_fees", "cost_per_minute", "distance_unit", "minimum", "cost_per_distance", "base", "cancellation_fee", "currency_code"].forEach(function (key2, i2) { switch (key2) { default: product[key][key2] = mockupModel[key2](); break; } }); break; } break; default: product[key] = mockupModel[key](); break; } }); }); return mockupData; } function getRideDetails(dataType, dataModel, dataDate) { //Improvements: Have the ride details make more sense, e.g. a 60 minute ride is reflected in the change of latitude and longitude var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } ["product_id", "request_id", "status", "surge_multiplier", "shared", "driver", "vehicle", "location", "pickup", "destination", "riders", "waypoints"].forEach(function (key, i) { switch (key) { case "vehicle": case "driver": case "location": case "surge_multiplier": switch (mockupData["status"]) { case "completed": case "no_drivers_available": case "driver_canceled": case "rider_canceled": mockupData[key] = null; break; default: mockupData[key] = mockupModel[key](); break; } break; case "waypoints": switch (mockupData["status"]) { case "completed": case "no_drivers_available": case "driver_canceled": case "rider_canceled": mockupData[key] = null; break; default: mockupData[key] = [mockupData[key][0]]; for (var index = 0; index < mockupData[key].length; index++) { mockupData[key][index] = mockupModel[key](mockupData["riders"][getRandomInt(0, mockupData["riders"].length - 1)]["rider_id"]); } break; } break; case "riders": switch (mockupData["status"]) { case "completed": case "no_drivers_available": case "driver_canceled": case "rider_canceled": mockupData[key] = null; break; default: mockupData[key] = [mockupData[key][0]]; for (var index = 0; index < mockupData[key].length; index++) { switch (index) { case 0: mockupData[key][index] = mockupModel[key](true); break; default: mockupData[key][index] = mockupModel[key](false); break; } } } break; case "pickup": case "destination": switch (mockupData["status"]) { case "completed": case "no_drivers_available": case "driver_canceled": case "rider_canceled": mockupData[key] = null; break; default: mockupData[key] = mockupModel[key](mockupData["status"]); break; } break; default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } function getRideMapDetails(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } ["request_id", "href"].forEach(function (key, i) { switch (key) { default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } function getRideReceiptDetails(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } ["request_id", "currency_code", "total_charged", "total_owed", "total_fare", "charge_adjustments", "duration", "distance", "distance_label", "subtotal"].forEach(function (key, i) { switch (key) { case "total_charged": case "total_fare": mockupData[key] = mockupModel[key](mockupData["currency_code"]); break; case "subtotal": mockupData[key] = mockupModel[key](mockupData["total_fare"], mockupData["total_charged"], mockupData["currency_code"]); break; default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } function getSavedPlaces(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } ["address"].forEach(function (key, i) { switch (key) { default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } function getTimeEstimates(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } mockupData["times"] = [mockupData["times"][0]]; mockupData["times"].forEach(function (time) { ["estimate", "display_name", "localized_display_name", "product_id"].forEach(function (key, i) { switch (key) { case "localized_display_name": time[key] = mockupModel[key](time["display_name"]); break; default: time[key] = mockupModel[key](); break; } }); }); return mockupData; } function getPaymentMethods(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } mockupData["payment_methods"] = [mockupData["payment_methods"][0]]; for (var i = 0; i < mockupData["payment_methods"].length; i++) { mockupData["payment_methods"][i] = mockupModel["payment_methods"](); } mockupData["last_used"] = mockupData["payment_methods"][getRandomInt(0, mockupData["payment_methods"].length - 1)]["payment_method_id"]; return mockupData; } function getUserInfo(dataType, dataModel, dataDate) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; if (dataType === "SYNC") { mockupData = dataModels[dataModel].data; } if (dataType === "ASYNC") { var mockupDataRow = dataModels[dataModel].data[1].split("\t"); var mockupDataHeader = dataModels[dataModel].data[0].split("\t"); mockupDataHeader.forEach(function (k, i) { mockupData[k] = mockupDataRow[i]; }); } ["picture", "first_name", "last_name", "uuid", "rider_id", "email", "mobile_verified", "promo_code"].forEach(function (key, i) { switch (key) { default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } export { getModelCSVHeader, getPaymentMethods, getPriceEstimatesMockupData, getProductDetails, getProducts, getRideDetails, getRideMapDetails, getRideReceiptDetails, getSavedPlaces, getTimeEstimates, getUserInfo };