atriusmaps-node-sdk 3.3.993 → 3.3.995
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.
- package/dist/cjs/package.json.js +1 -1
- package/dist/cjs/plugins/poiDataManager/src/poiDataManager.js +0 -11
- package/dist/cjs/plugins/searchService/src/searchService.js +4 -6
- package/dist/package.json.js +1 -1
- package/dist/plugins/poiDataManager/src/poiDataManager.js +1 -1
- package/dist/plugins/searchService/src/searchService.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/plugins/online/poiView/src/weekdayPeriodsParser.js +0 -157
- package/dist/cjs/plugins/poiDataManager/src/computeIsOpenNow.js +0 -28
- package/dist/plugins/online/poiView/src/weekdayPeriodsParser.js +0 -1
- package/dist/plugins/poiDataManager/src/computeIsOpenNow.js +0 -1
package/dist/cjs/package.json.js
CHANGED
|
@@ -5,7 +5,6 @@ var Zousan = require('zousan');
|
|
|
5
5
|
var buildStructureLookup = require('../../../src/utils/buildStructureLookup.js');
|
|
6
6
|
var configUtils = require('../../../src/utils/configUtils.js');
|
|
7
7
|
var i18n = require('../../../src/utils/i18n.js');
|
|
8
|
-
var computeIsOpenNow = require('./computeIsOpenNow.js');
|
|
9
8
|
|
|
10
9
|
function _interopNamespaceDefault(e) {
|
|
11
10
|
var n = Object.create(null);
|
|
@@ -158,9 +157,6 @@ async function create(app) {
|
|
|
158
157
|
}
|
|
159
158
|
pois = filterBadPois(pois);
|
|
160
159
|
await enhanceImages(pois);
|
|
161
|
-
Object.values(pois).forEach((poi) => {
|
|
162
|
-
poi.isOpenNow = computeIsOpenNow.computeIsOpenNow(poi);
|
|
163
|
-
});
|
|
164
160
|
poisLoaded.resolve(pois);
|
|
165
161
|
if (app.config.debug && app.env.isBrowser) {
|
|
166
162
|
window._pois = pois;
|
|
@@ -264,13 +260,6 @@ async function create(app) {
|
|
|
264
260
|
const newPoi = R__namespace.mergeRight(pois[poiId], { dynamicData });
|
|
265
261
|
pois[poiId] = newPoi;
|
|
266
262
|
}
|
|
267
|
-
if (plugin === "open-closed-status") {
|
|
268
|
-
Object.keys(idValuesMap).forEach((poiId) => {
|
|
269
|
-
if (pois[poiId]) {
|
|
270
|
-
pois[poiId].isOpenNow = computeIsOpenNow.computeIsOpenNow(pois[poiId]);
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
263
|
});
|
|
275
264
|
});
|
|
276
265
|
app.bus.on("poi/setCoreAttributes", (idAttributesMap) => {
|
|
@@ -69,10 +69,9 @@ function create(app, config) {
|
|
|
69
69
|
app.bus.send("search/showCategory", { pois, category, categoryName });
|
|
70
70
|
return pois;
|
|
71
71
|
});
|
|
72
|
-
app.bus.on("search/query", ({ term
|
|
72
|
+
app.bus.on("search/query", ({ term }) => {
|
|
73
73
|
return state.indexesCreated.then(() => {
|
|
74
|
-
const
|
|
75
|
-
const pois = openNow === true ? allResults.filter((poi) => poi.isOpenNow !== false) : allResults;
|
|
74
|
+
const pois = state.poiSearch.search({ query: term });
|
|
76
75
|
app.bus.send("search/showSearchResults", { results: pois, term });
|
|
77
76
|
return pois;
|
|
78
77
|
});
|
|
@@ -122,9 +121,8 @@ function create(app, config) {
|
|
|
122
121
|
);
|
|
123
122
|
app.bus.on(
|
|
124
123
|
"search/typeahead",
|
|
125
|
-
({ term, limit
|
|
126
|
-
const { keywords, pois
|
|
127
|
-
const pois = openNow === true ? allPois.filter((poi) => poi.isOpenNow !== false) : allPois;
|
|
124
|
+
({ term, limit }) => state.indexesCreated.then(() => {
|
|
125
|
+
const { keywords, pois } = state.typeahead.query(term, limit);
|
|
128
126
|
return { keywords, pois, term };
|
|
129
127
|
})
|
|
130
128
|
);
|
package/dist/package.json.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var a="3.3.
|
|
1
|
+
var a="3.3.995",e={version:a};export{e as default,a as version};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"ramda";import o from"zousan";import{buildStructuresLookup as t}from"../../../src/utils/buildStructureLookup.js";import{debugIsTrue as a}from"../../../src/utils/configUtils.js";import{toLang as i}from"../../../src/utils/i18n.js";
|
|
1
|
+
import*as e from"ramda";import o from"zousan";import{buildStructuresLookup as t}from"../../../src/utils/buildStructureLookup.js";import{debugIsTrue as a}from"../../../src/utils/configUtils.js";import{toLang as i}from"../../../src/utils/i18n.js";async function n(i){const n=i.log.sublog("poiDataManager"),u=()=>{i.bus.send("venueData/loadPoiData")};let p=new o;const d=(e,o)=>{const{position:t}=e,a=o.floorIdToStructure(t.floorId);if(!a)return n.error(`No structure found for floorId: ${t.floorId} for POI ${e.poiId}`),{...e};const i=o.floorIdToFloor(t.floorId),r={...t,structureName:a.name,buildingId:a.id,floorName:i.name,floorOrdinal:i.ordinal};return{...e,position:r}},l=(e,o)=>{e.roomInfo||(e.roomInfo=[]),e.roomInfo.push(o)},c=e.pipe(e.propOr([],"externalIds"),e.find(e.propEq("roomId","type")),e.prop("id"),e.unless(e.isNil,e.tail));i.bus.on("venueData/poiDataLoaded",async({pois:o,structures:r})=>{if(o=((o,t)=>e.pipe(e.values,e.map(e=>{e.distance=null,e.staticName=e.name,e.isNavigable=void 0===e.isNavigable||!0===e.isNavigable,e.capacity&&l(e,{name:`Seats ${e.capacity.join("-")}`,svgId:"number-of-seats"}),e.category.startsWith("meeting")&&l(e,{name:i.gt()("poiView:Conference Room"),svgId:"conference-room"});const o=c(e);return o&&(e.roomId=o),[e.poiId,d(e,t)]}),e.fromPairs)(o))(o,t(r)),a(i,"pseudoTransPois"))for(const e in o)o[e]=s(o[e],i.i18n().language);o=function(e){const o=[];return Object.values(e).forEach(e=>{try{const t=e.position;t?["buildingId","structureName","floorId","floorName","floorOrdinal","latitude","longitude"].forEach(a=>{null!==t[a]&&void 0!==t[a]||o.push({id:e.poiId,e:`invalid position property: ${a}: ${t[a]}`})}):o.push({poi:e,e:"No position information"})}catch(t){n.error(t),o.push({id:e.poiId,e:t.message})}}),o.length&&(n.warn("badPois:",o),o.forEach(o=>{delete e[o.id]})),e}(o),await async function(e){for(const o of Object.values(e))await I(o);return e}(o),p.resolve(o),i.config.debug&&i.env.isBrowser&&(window._pois=o),i.config.debug&&async function(e){const o=Date.now(),t=[],a=await i.bus.get("wayfinder/_getNavGraph");Object.values(e).forEach(e=>{try{const o=e.position;a.findClosestNode(o.floorId,o.latitude,o.longitude)||t.push({id:e.poiId,e:"No closest Navgraph Node"})}catch(o){n.error(o),t.push({id:e.poiId,e:o.message})}}),t.length&&n.warn("badPois:",t),n(`Total time for navgraph POI check: ${Date.now()-o}ms`)}(o)}),i.bus.on("poi/getById",async({id:e})=>p.then(o=>o[e])),i.bus.on("poi/getByFloorId",async({floorId:o})=>p.then(e.pickBy(e.pathEq(o,["position","floorId"])))),i.bus.on("poi/getByCategoryId",async({categoryId:o})=>p.then(e.pickBy(e=>e.category===o||e.category.startsWith(o+".")))),i.bus.on("poi/getAll",async()=>p);const m=["queue","primaryQueueId"],f=(o,t,a)=>{const i=e.path(["queue","queueType"],t);if(!i)return null;const n=o[i],r=e.path(m,t);return a.filter(e.pathEq(r,m)).filter(e=>e.poiId!==t.poiId).map(o=>{const t=e.path(["queue","queueSubtype"],o),a=g(t)(n);return{poiId:o.poiId,...a}})},g=o=>{return e.pipe(e.find(e.propEq(o,"id")),(t=`No queue found with ID: ${o}`,e=>{if(null!=e)return e;throw Error(t)}),e.pick(["displayText","imageId"]));var t};i.bus.on("poi/addOtherSecurityLanes",({poi:o})=>(async o=>{if(!e.path(m,o))return o;const t=await i.bus.get("venueData/getQueueTypes"),a=await i.bus.get("poi/getByCategoryId",{categoryId:"security"}),n=Object.values(a);return o.queue.otherQueues=f(t,o,n),o})(o));const y=e=>!!e?.startsWith("https:");async function I(t){if(!t)return;const a="undefined"==typeof window?1:window.devicePixelRatio||1,n=`${Math.round(351*a)}x${Math.round(197*a)}`;return e.length(t.images)?y(t.images[0])||(t.images=await o.all(t.images.map(e=>i.bus.get("venueData/getPoiImageUrl",{imageName:e,size:n})))):t.images=[],e.length(t.fullImages)?y(t.fullImages[0]?.url)||(t.fullImages=await o.all(t.fullImages.map(async({url:e,...o})=>({url:await i.bus.get("venueData/getPoiImageUrl",{imageName:e,size:n}),...o})))):t.fullImages=[],t}const h=e.memoizeWith(e.identity,e.pipe(e.pluck("category"),e.values,e.uniq));i.bus.on("poi/getAllCategories",async()=>p.then(h)),i.bus.on("venueData/loadNewVenue",()=>{p=new o,u()}),i.bus.on("poi/setDynamicData",({plugin:o,idValuesMap:t})=>{p.then(a=>{for(const i in t){const n=a[i].dynamicData||{};n[o]={...t[i]};const r=e.mergeRight(a[i],{dynamicData:n});a[i]=r}})}),i.bus.on("poi/setCoreAttributes",e=>{p.then(o=>{const t=[];for(const a in e){r(o,a,e[a]?.name)&&(i.bus.send("map/mutateFeature",{poiId:a,name:o[a].name}),t.push(o[a]))}t.length>0&&i.bus.send("poi/updated",{pois:t})})});return{init:u,runTest:async e=>(await e(),p),internal:{addImages:I,pseudoTransPoi:s,applyPoiNameOverride:r}}}function r(e,o,t){return!!e[o]&&(e[o].name=t||e[o].staticName,!0)}function s(e,o){return["description","nearbyLandmark","name","phone","operationHours"].forEach(t=>{e[t]&&(e[t]=i(e[t],o))}),e.keywords&&(e.keywords=e.keywords.map(e=>(e.name=i(e.name,o),e))),e.position.floorName&&(e.position.floorName=i(e.position.floorName,o)),e.position.structureName&&(e.position.structureName=i(e.position.structureName,o)),e}export{r as applyPoiNameOverride,n as create};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"ramda";import a from"zousan";import{getLocalized as r}from"../../../src/utils/configUtils.js";import{randomizeArray as s,arrayPick as t}from"../../../src/utils/rand.js";import n from"./poiSearch.js";import o from"./searchTypeahead.js";function i(i,c){const u={poiSearch:null,typeahead:null,indexesCreated:new a,defaultSearchTerms:null,specialQueryTerms:{}},d=async()=>{const e=await i.bus.get("poi/getAll");u.poiSearch=n(e,i.i18n().language),u.typeahead=o(e,u.poiSearch.search,i.i18n().language),u.defaultSearchTerms=r(c,"defaultSearchTerms",i.i18n().language),u.indexesCreated.resolve()};async function h(){const a=await i.bus.getFirst("user/getPhysicalLocation");if(!a?.floorId)return[];const r=await i.bus.get("poi/getByFloorId",{floorId:a?.floorId}),s=Object.values(e.pickBy(e=>-1===e.category.indexOf("portal")&&"element.door"!==e.category,r)),t=await i.bus.get("wayfinder/addPathTimeMultiple",{pois:s,startLocation:a});return Object.values(t).slice(0,50)}i.bus.on("search/queryNearby",async()=>{const e=await h();return i.bus.send("search/showNearby",{pois:e,term:"Nearby"}),e}),i.bus.on("search/queryNearbyAsync",h),i.bus.on("search/queryCategory",async({category:e,categoryName:a,searchTerm:r})=>{const s=await u.indexesCreated.then(()=>u.poiSearch.search({query:r||e}));return i.bus.send("search/showCategory",{pois:s,category:e,categoryName:a}),s}),i.bus.on("search/query",({term:e
|
|
1
|
+
import*as e from"ramda";import a from"zousan";import{getLocalized as r}from"../../../src/utils/configUtils.js";import{randomizeArray as s,arrayPick as t}from"../../../src/utils/rand.js";import n from"./poiSearch.js";import o from"./searchTypeahead.js";function i(i,c){const u={poiSearch:null,typeahead:null,indexesCreated:new a,defaultSearchTerms:null,specialQueryTerms:{}},d=async()=>{const e=await i.bus.get("poi/getAll");u.poiSearch=n(e,i.i18n().language),u.typeahead=o(e,u.poiSearch.search,i.i18n().language),u.defaultSearchTerms=r(c,"defaultSearchTerms",i.i18n().language),u.indexesCreated.resolve()};async function h(){const a=await i.bus.getFirst("user/getPhysicalLocation");if(!a?.floorId)return[];const r=await i.bus.get("poi/getByFloorId",{floorId:a?.floorId}),s=Object.values(e.pickBy(e=>-1===e.category.indexOf("portal")&&"element.door"!==e.category,r)),t=await i.bus.get("wayfinder/addPathTimeMultiple",{pois:s,startLocation:a});return Object.values(t).slice(0,50)}i.bus.on("search/queryNearby",async()=>{const e=await h();return i.bus.send("search/showNearby",{pois:e,term:"Nearby"}),e}),i.bus.on("search/queryNearbyAsync",h),i.bus.on("search/queryCategory",async({category:e,categoryName:a,searchTerm:r})=>{const s=await u.indexesCreated.then(()=>u.poiSearch.search({query:r||e}));return i.bus.send("search/showCategory",{pois:s,category:e,categoryName:a}),s}),i.bus.on("search/query",({term:e})=>u.indexesCreated.then(()=>{const a=u.poiSearch.search({query:e});return i.bus.send("search/showSearchResults",{results:a,term:e}),a})),i.bus.on("search/queryAsync",({term:e})=>u.indexesCreated.then(()=>u.poiSearch.search({query:e}))),i.bus.on("search/queryWithSpecial",({term:e})=>{if(u.specialQueryTerms[e]){const{event:a,params:r}=u.specialQueryTerms[e];return i.bus.send(a,r)}return i.bus.get("search/query",{term:e})}),i.bus.on("search/getDefaultSearchTerms",async({limit:e=5}={})=>{const a=u.defaultSearchTerms,r=a&&a.length?a:await async function(e){const a=(await i.bus.send("poi/getAllCategories"))[0],r=Array.from(new Set(a));return s(r).slice(0,e)}(e);return i.bus.send("search/showDefaultSearchKeywords",{keywords:r}),r}),i.bus.on("search/getDefaultSearchPois",async({limit:a=5}={})=>{const r=await i.bus.get("poi/getAll"),s=e.pickBy(e=>e.isNavigable,r);return t(Object.values(s),a)}),i.bus.on("search/registerSpecialQuery",({term:e,event:a,params:r,addKeyword:s=!0})=>{u.indexesCreated.then(()=>{s&&u.typeahead.addKeyword(e),u.specialQueryTerms[e]={event:a,params:r}})}),i.bus.on("search/addKeywords",({keywords:e})=>u.indexesCreated.then(()=>e.forEach(e=>u.typeahead.addKeyword(e)))),i.bus.on("search/typeahead",({term:e,limit:a})=>u.indexesCreated.then(()=>{const{keywords:r,pois:s}=u.typeahead.query(e,a);return{keywords:r,pois:s,term:e}})),i.bus.on("venueData/loadNewVenue",()=>{u.indexesCreated=new a,d()}),i.bus.on("poi/setDynamicData",async({plugin:e,idValuesMap:a})=>{if("grab"!==e)return;const r=Object.keys(a).map(e=>i.bus.get("poi/getById",{id:e}));return Promise.all(r).then(e=>u.indexesCreated.then(()=>u.poiSearch.updateMultiple(e)))}),i.bus.on("poi/updated",async({pois:e})=>{e&&0!==e.length&&(await u.indexesCreated,u.poiSearch.updateMultiple(e),u.typeahead.updatePOIs(e),i.bus.send("search/typeaheadChanged",{pois:e}))});return{init:d,runTest:async(e,a)=>(await a(),u)}}export{i as create};
|
package/package.json
CHANGED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
require('luxon');
|
|
4
|
-
var R = require('ramda');
|
|
5
|
-
|
|
6
|
-
function _interopNamespaceDefault(e) {
|
|
7
|
-
var n = Object.create(null);
|
|
8
|
-
if (e) {
|
|
9
|
-
Object.keys(e).forEach(function (k) {
|
|
10
|
-
if (k !== 'default') {
|
|
11
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () { return e[k]; }
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
n.default = e;
|
|
20
|
-
return Object.freeze(n);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
var R__namespace = /*#__PURE__*/_interopNamespaceDefault(R);
|
|
24
|
-
|
|
25
|
-
function isOpen(weekdayPeriods, today) {
|
|
26
|
-
const currentWeekday = findWeekday(weekdayPeriods, today);
|
|
27
|
-
if (!currentWeekday) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
const hours = today.getHours();
|
|
31
|
-
const minutes = today.getMinutes();
|
|
32
|
-
const { from, to } = currentWeekday.timePeriod;
|
|
33
|
-
return isInTimePeriod(hours, minutes, from.hours, from.minutes, to.hours, to.minutes);
|
|
34
|
-
}
|
|
35
|
-
function isInTimePeriod(nowHours, nowMinutes, fromHours, fromMinutes, toHours, toMinutes) {
|
|
36
|
-
const isOvernightPeriod = isFirstTimeAfterSecond(fromHours, fromMinutes, toHours, toMinutes);
|
|
37
|
-
if (isOvernightPeriod) {
|
|
38
|
-
return isInTimePeriod(nowHours, nowMinutes, fromHours, fromMinutes, 24, 0) || isInTimePeriod(nowHours, nowMinutes, 0, 0, toHours, toMinutes);
|
|
39
|
-
} else {
|
|
40
|
-
const isAfterFrom = isFirstTimeAfterSecond(nowHours, nowMinutes, fromHours, fromMinutes);
|
|
41
|
-
const isBeforeTo = isFirstTimeAfterSecond(toHours, toMinutes, nowHours, nowMinutes);
|
|
42
|
-
return isAfterFrom && isBeforeTo;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function isFirstTimeAfterSecond(firstHours, firstMinutes, secondHours, secondMinutes) {
|
|
46
|
-
return firstHours > secondHours || firstHours === secondHours && firstMinutes >= secondMinutes;
|
|
47
|
-
}
|
|
48
|
-
function findWeekday(weekdayPeriods, today) {
|
|
49
|
-
return findWeekdayByDayIndex(weekdayPeriods, today.getDay());
|
|
50
|
-
}
|
|
51
|
-
function findWeekdayByDayIndex(weekdayPeriods, index) {
|
|
52
|
-
const currentWeekdayName = WEEKDAY_ARRAY[index];
|
|
53
|
-
return weekdayPeriods.find(({ weekday }) => weekday === currentWeekdayName);
|
|
54
|
-
}
|
|
55
|
-
function parseAndOrderWeekdays(rawWeekdayPeriods, today) {
|
|
56
|
-
const weekdays = parseWeekdayPeriods(rawWeekdayPeriods);
|
|
57
|
-
const orderedWeekdays = orderFromSunday(weekdays);
|
|
58
|
-
return markCurrentWeekday(orderedWeekdays, today);
|
|
59
|
-
}
|
|
60
|
-
const SHORT_WEEKDAY_TO_NUMERAL = {
|
|
61
|
-
Su: 0,
|
|
62
|
-
Mo: 1,
|
|
63
|
-
Tu: 2,
|
|
64
|
-
We: 3,
|
|
65
|
-
Th: 4,
|
|
66
|
-
Fr: 5,
|
|
67
|
-
Sa: 6
|
|
68
|
-
};
|
|
69
|
-
const WEEKDAY_ARRAY = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
70
|
-
const WEEKDAY_TO_NUMERAL = WEEKDAY_ARRAY.reduce(
|
|
71
|
-
(obj, weekday, index) => Object.assign(obj, { [weekday]: index }),
|
|
72
|
-
{}
|
|
73
|
-
);
|
|
74
|
-
const WEEKDAYS_DELIMITER = ";";
|
|
75
|
-
const WEEKDAY_AND_TIME_DELIMITER = /\s+/;
|
|
76
|
-
const WEEKDAY_DELIMITER = "-";
|
|
77
|
-
const TIME_PERIOD_DELIMITER = "-";
|
|
78
|
-
const TIME_DELIMITER = ":";
|
|
79
|
-
const AM = " AM";
|
|
80
|
-
const PM = " PM";
|
|
81
|
-
function parseWeekdayPeriods(rawWeekdayPeriods) {
|
|
82
|
-
return rawWeekdayPeriods.split(WEEKDAYS_DELIMITER).map((weekdayAndTimePeriod) => weekdayAndTimePeriod.trim()).map((weekdayAndTimePeriod) => weekdayAndTimePeriod.split(WEEKDAY_AND_TIME_DELIMITER)).flatMap(([weekdayPeriod, timePeriod]) => {
|
|
83
|
-
const weekdays = parseWeekdayPeriod(weekdayPeriod);
|
|
84
|
-
const formattedTimePeriod = prepareTimePeriodData(timePeriod);
|
|
85
|
-
return createWeekdayAndTimePeriodPairs(weekdays, formattedTimePeriod);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
function parseWeekdayPeriod(weekdayPeriod) {
|
|
89
|
-
const [start, end] = weekdayPeriod.split(WEEKDAY_DELIMITER);
|
|
90
|
-
const startIndex = SHORT_WEEKDAY_TO_NUMERAL[start];
|
|
91
|
-
let weekdayIndices;
|
|
92
|
-
if (end) {
|
|
93
|
-
const endIndex = SHORT_WEEKDAY_TO_NUMERAL[end];
|
|
94
|
-
weekdayIndices = weekdayIndicesRange(startIndex, endIndex);
|
|
95
|
-
} else {
|
|
96
|
-
weekdayIndices = [startIndex];
|
|
97
|
-
}
|
|
98
|
-
return weekdayIndices.map((index) => WEEKDAY_ARRAY[index]);
|
|
99
|
-
}
|
|
100
|
-
function weekdayIndicesRange(startIndex, endIndex) {
|
|
101
|
-
const weekdayIndices = [startIndex];
|
|
102
|
-
let currentDayIndex = startIndex;
|
|
103
|
-
do {
|
|
104
|
-
currentDayIndex = (currentDayIndex + 1) % WEEKDAY_ARRAY.length;
|
|
105
|
-
weekdayIndices.push(currentDayIndex);
|
|
106
|
-
} while (currentDayIndex !== endIndex);
|
|
107
|
-
return weekdayIndices;
|
|
108
|
-
}
|
|
109
|
-
function prepareTimePeriodData(timePeriod) {
|
|
110
|
-
const [from, to] = timePeriod.split(TIME_PERIOD_DELIMITER);
|
|
111
|
-
const [fromTime, fromTimeFormatted] = getHoursMinutesAndFormatted(from);
|
|
112
|
-
const [toTime, toTimeFormatted] = getHoursMinutesAndFormatted(to);
|
|
113
|
-
const timePeriodFormatted = fromTimeFormatted + ` ${TIME_PERIOD_DELIMITER} ` + toTimeFormatted;
|
|
114
|
-
return {
|
|
115
|
-
from: fromTime,
|
|
116
|
-
to: toTime,
|
|
117
|
-
formatted: timePeriodFormatted
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
function getHoursMinutesAndFormatted(time) {
|
|
121
|
-
const [hours, minutes] = time.split(TIME_DELIMITER);
|
|
122
|
-
const timeFormatted = formatTimeAmPm(+hours, +minutes);
|
|
123
|
-
return [{ hours: +hours, minutes: +minutes }, timeFormatted];
|
|
124
|
-
}
|
|
125
|
-
function formatTimeAmPm(hours, minutes) {
|
|
126
|
-
const ampm = hours < 12 || hours === 24 ? AM : PM;
|
|
127
|
-
const h = hours % 12 || 12;
|
|
128
|
-
const minutesStr = minutes > 9 ? minutes : "0" + minutes;
|
|
129
|
-
return h + TIME_DELIMITER + minutesStr + ampm;
|
|
130
|
-
}
|
|
131
|
-
function createWeekdayAndTimePeriodPairs(weekdays, timePeriod) {
|
|
132
|
-
return weekdays.map((weekday) => ({ weekday, timePeriod }));
|
|
133
|
-
}
|
|
134
|
-
function orderFromSunday(weekdayPeriods) {
|
|
135
|
-
const startWeekdayIndex = 0;
|
|
136
|
-
const orderedWeekdays = [];
|
|
137
|
-
weekdayPeriods.forEach((weekday) => {
|
|
138
|
-
const weekdayIndex = WEEKDAY_TO_NUMERAL[weekday.weekday];
|
|
139
|
-
let order = weekdayIndex - startWeekdayIndex;
|
|
140
|
-
if (order < 0) {
|
|
141
|
-
order += WEEKDAY_ARRAY.length;
|
|
142
|
-
}
|
|
143
|
-
orderedWeekdays[order] = weekday;
|
|
144
|
-
});
|
|
145
|
-
return filterEmptyDays(orderedWeekdays);
|
|
146
|
-
}
|
|
147
|
-
function filterEmptyDays(weekdays) {
|
|
148
|
-
return weekdays.filter((x) => !!x);
|
|
149
|
-
}
|
|
150
|
-
function markCurrentWeekday(weekdays, today) {
|
|
151
|
-
const todayDayName = WEEKDAY_ARRAY[today.getDay()];
|
|
152
|
-
const addIsToday = R__namespace.converge(R__namespace.assoc("isToday"), [R__namespace.propEq(todayDayName, "weekday"), R__namespace.identity]);
|
|
153
|
-
return weekdays.map(addIsToday);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
exports.isOpen = isOpen;
|
|
157
|
-
exports.parseAndOrderWeekdays = parseAndOrderWeekdays;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var weekdayPeriodsParser = require('../../online/poiView/src/weekdayPeriodsParser.js');
|
|
4
|
-
|
|
5
|
-
function computeIsOpenNow(poi, today = /* @__PURE__ */ new Date()) {
|
|
6
|
-
if (poi.state === "permanently-closed") {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
const dynamicOC = poi.dynamicData?.["open-closed-status"];
|
|
10
|
-
if (dynamicOC && dynamicOC.expiration > Date.now()) {
|
|
11
|
-
return dynamicOC.isOpen;
|
|
12
|
-
}
|
|
13
|
-
if (poi.operationHours) {
|
|
14
|
-
try {
|
|
15
|
-
const weekdayPeriods = weekdayPeriodsParser.parseAndOrderWeekdays(poi.operationHours, today);
|
|
16
|
-
if (!weekdayPeriods || weekdayPeriods.length === 0) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
return weekdayPeriodsParser.isOpen(weekdayPeriods, today);
|
|
20
|
-
} catch (err) {
|
|
21
|
-
console.warn(`computeIsOpenNow: failed to parse operationHours for POI (hours: "${poi.operationHours}")`, err);
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
exports.computeIsOpenNow = computeIsOpenNow;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"luxon";import*as t from"ramda";function n(t,n){const e=function(t,n){return function(t,n){const r=i[n];return t.find(({weekday:t})=>t===r)}(t,n.getDay())}(t,n);if(!e)return!1;const o=n.getHours(),u=n.getMinutes(),{from:s,to:c}=e.timePeriod;return r(o,u,s.hours,s.minutes,c.hours,c.minutes)}function r(t,n,o,u,i,s){if(e(o,u,i,s))return r(t,n,o,u,24,0)||r(t,n,0,0,i,s);{const r=e(t,n,o,u),c=e(i,s,t,n);return r&&c}}function e(t,n,r,e){return t>r||t===r&&n>=e}function o(n,r){const e=function(t){return t.split(c).map(t=>t.trim()).map(t=>t.split(a)).flatMap(([t,n])=>{const r=function(t){const[n,r]=t.split(f),e=u[n];let o;if(r){o=function(t,n){const r=[t];let e=t;do{e=(e+1)%i.length,r.push(e)}while(e!==n);return r}(e,u[r])}else o=[e];return o.map(t=>i[t])}(t),e=function(t){const[n,r]=t.split(d),[e,o]=y(n),[u,i]=y(r);return{from:e,to:u,formatted:o+` ${d} `+i}}(n);return function(t,n){return t.map(t=>({weekday:t,timePeriod:n}))}(r,e)})}(n),o=function(t){const n=0,r=[];return t.forEach(t=>{let e=s[t.weekday]-n;e<0&&(e+=i.length),r[e]=t}),function(t){return t.filter(t=>!!t)}(r)}(e);return function(n,r){const e=i[r.getDay()],o=t.converge(t.assoc("isToday"),[t.propEq(e,"weekday"),t.identity]);return n.map(o)}(o,r)}const u={Su:0,Mo:1,Tu:2,We:3,Th:4,Fr:5,Sa:6},i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],s=i.reduce((t,n,r)=>Object.assign(t,{[n]:r}),{}),c=";",a=/\s+/,f="-",d="-",m=":",p=" AM",l=" PM";function y(t){const[n,r]=t.split(m),e=function(t,n){const r=t<12||24===t?p:l,e=t%12||12,o=n>9?n:"0"+n;return e+m+o+r}(+n,+r);return[{hours:+n,minutes:+r},e]}export{n as isOpen,o as parseAndOrderWeekdays};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{parseAndOrderWeekdays as e,isOpen as o}from"../../online/poiView/src/weekdayPeriodsParser.js";function r(r,t=new Date){if("permanently-closed"===r.state)return!1;const n=r.dynamicData?.["open-closed-status"];if(n&&n.expiration>Date.now())return n.isOpen;if(r.operationHours)try{const n=e(r.operationHours,t);return!n||0===n.length||o(n,t)}catch(e){return console.warn(`computeIsOpenNow: failed to parse operationHours for POI (hours: "${r.operationHours}")`,e),!0}return!0}export{r as computeIsOpenNow};
|