@blaze-cms/plugin-google-maps-fe 0.123.0-alpha.25 → 0.123.0-alpha.29
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/CHANGELOG.md +30 -0
- package/lib/GoogleMaps/GoogleMaps.js +68 -40
- package/lib/GoogleMaps/GoogleMaps.js.map +1 -1
- package/lib/GoogleMaps/GoogleMapsFactory.js +8 -4
- package/lib/GoogleMaps/GoogleMapsFactory.js.map +1 -1
- package/lib/GoogleMaps/GoogleMapsRender.js +24 -41
- package/lib/GoogleMaps/GoogleMapsRender.js.map +1 -1
- package/lib/GoogleMaps/helpers/add-zoom-listener.js +3 -50
- package/lib/GoogleMaps/helpers/add-zoom-listener.js.map +1 -1
- package/lib/GoogleMaps/helpers/build-map-shapes.js +97 -0
- package/lib/GoogleMaps/helpers/build-map-shapes.js.map +1 -0
- package/lib/GoogleMaps/helpers/build-query.js +24 -14
- package/lib/GoogleMaps/helpers/build-query.js.map +1 -1
- package/lib/GoogleMaps/helpers/build-shapes-configs.js +196 -0
- package/lib/GoogleMaps/helpers/build-shapes-configs.js.map +1 -0
- package/lib/GoogleMaps/helpers/get-center-coordinates.js +49 -0
- package/lib/GoogleMaps/helpers/get-center-coordinates.js.map +1 -0
- package/lib/GoogleMaps/helpers/get-image-ids.js +16 -14
- package/lib/GoogleMaps/helpers/get-image-ids.js.map +1 -1
- package/lib/GoogleMaps/helpers/index.js +21 -5
- package/lib/GoogleMaps/helpers/index.js.map +1 -1
- package/lib/GoogleMaps/helpers/set-shapes.js +213 -200
- package/lib/GoogleMaps/helpers/set-shapes.js.map +1 -1
- package/lib/GoogleMaps/hooks/use-get-images.js +3 -2
- package/lib/GoogleMaps/hooks/use-get-images.js.map +1 -1
- package/lib/GoogleMaps/queries.js +22 -4
- package/lib/GoogleMaps/queries.js.map +1 -1
- package/lib-es/GoogleMaps/GoogleMaps.js +51 -25
- package/lib-es/GoogleMaps/GoogleMaps.js.map +1 -1
- package/lib-es/GoogleMaps/GoogleMapsFactory.js +10 -6
- package/lib-es/GoogleMaps/GoogleMapsFactory.js.map +1 -1
- package/lib-es/GoogleMaps/GoogleMapsRender.js +24 -32
- package/lib-es/GoogleMaps/GoogleMapsRender.js.map +1 -1
- package/lib-es/GoogleMaps/helpers/add-zoom-listener.js +3 -23
- package/lib-es/GoogleMaps/helpers/add-zoom-listener.js.map +1 -1
- package/lib-es/GoogleMaps/helpers/build-map-shapes.js +86 -0
- package/lib-es/GoogleMaps/helpers/build-map-shapes.js.map +1 -0
- package/lib-es/GoogleMaps/helpers/build-query.js +17 -8
- package/lib-es/GoogleMaps/helpers/build-query.js.map +1 -1
- package/lib-es/GoogleMaps/helpers/build-shapes-configs.js +134 -0
- package/lib-es/GoogleMaps/helpers/build-shapes-configs.js.map +1 -0
- package/lib-es/GoogleMaps/helpers/get-center-coordinates.js +31 -0
- package/lib-es/GoogleMaps/helpers/get-center-coordinates.js.map +1 -0
- package/lib-es/GoogleMaps/helpers/get-image-ids.js +9 -14
- package/lib-es/GoogleMaps/helpers/get-image-ids.js.map +1 -1
- package/lib-es/GoogleMaps/helpers/index.js +4 -2
- package/lib-es/GoogleMaps/helpers/index.js.map +1 -1
- package/lib-es/GoogleMaps/helpers/set-shapes.js +80 -125
- package/lib-es/GoogleMaps/helpers/set-shapes.js.map +1 -1
- package/lib-es/GoogleMaps/hooks/use-get-images.js +4 -3
- package/lib-es/GoogleMaps/hooks/use-get-images.js.map +1 -1
- package/lib-es/GoogleMaps/queries.js +23 -2
- package/lib-es/GoogleMaps/queries.js.map +1 -1
- package/package.json +3 -3
- package/src/GoogleMaps/GoogleMaps.js +40 -27
- package/src/GoogleMaps/GoogleMapsFactory.js +11 -4
- package/src/GoogleMaps/GoogleMapsRender.js +22 -21
- package/src/GoogleMaps/helpers/add-zoom-listener.js +3 -22
- package/src/GoogleMaps/helpers/build-map-shapes.js +70 -0
- package/src/GoogleMaps/helpers/build-query.js +25 -10
- package/src/GoogleMaps/helpers/build-shapes-configs.js +110 -0
- package/src/GoogleMaps/helpers/get-center-coordinates.js +24 -0
- package/src/GoogleMaps/helpers/get-image-ids.js +6 -15
- package/src/GoogleMaps/helpers/index.js +12 -2
- package/src/GoogleMaps/helpers/set-shapes.js +87 -123
- package/src/GoogleMaps/hooks/use-get-images.js +4 -3
- package/src/GoogleMaps/queries.js +30 -3
- package/lib/GoogleMaps/helpers/set-entity-configs.js +0 -144
- package/lib/GoogleMaps/helpers/set-entity-configs.js.map +0 -1
- package/lib-es/GoogleMaps/helpers/set-entity-configs.js +0 -94
- package/lib-es/GoogleMaps/helpers/set-entity-configs.js.map +0 -1
- package/src/GoogleMaps/helpers/set-entity-configs.js +0 -84
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/GoogleMaps/helpers/set-shapes.js"],"names":["React","isNumber","ReactDOMServer","Link","buildPropsToDisplayWithContent","summaryComponents","getClassModifiers","getPath","MARKER","POLYLINE","POLYGON","RECTANGLE","CIRCLE","COLOR","CLICK","HEADING_LARGE","LIST","shapesArray","infoWindowArray","clearShapes","length","forEach","shape","setMap","closeInfoWindows","infoWindow","close","addShapeListeners","map","router","entityData","imageData","shapeInstance","displayItems","entity","enableInfoPane","dataSummaries","url","getEntityUrl","window","google","maps","InfoWindow","content","addListener","event","renderToString","InfoWindowContent","setContent","setPosition","latLng","open","push","setStyleOptions","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","styleSettings","Object","keys","reduce","acc","key","settingValue","shouldValueBeNumber","includes","hasValuePassedCondition","areRectangleBoundsNumbers","bounds","every","bound","isPositionCorrect","lat","lng","entityId","entityRecord","filter","id","getImageUrl","imageId","image","getFiles","getIconUrl","entityRecordData","summariesWithContent","dataSummary","elementTitle","type","propsToDisplay","otherProps","isTypeHeading","summaryPropsWithContent","modifier","SummaryComponent","getDataSummaryComponent","component","shouldShowImage","getImageElement","imageUrl","data","imageElement","altText","setMarker","latitude","longitude","label","markerWidth","markerHeight","iconUrl","icon","scaledSize","Size","marker","Marker","position","title","setPolyline","paths","path","polyline","Polyline","geodesic","setPolygon","unParsedPaths","polygon","Polygon","setRectangle","northBound","southBound","eastBound","westBound","rectangle","Rectangle","north","south","east","west","setCircle","radius","circle","Circle","center","setShapes","shapes","mapZoom","getZoom","shapeType","minZoom","maxZoom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport isNumber from 'lodash.isnumber';\nimport ReactDOMServer from 'react-dom/server';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport {\n buildPropsToDisplayWithContent,\n summaryComponents,\n getClassModifiers\n} from '@blaze-cms/react-page-builder';\nimport getPath from './get-path';\nimport {\n MARKER,\n POLYLINE,\n POLYGON,\n RECTANGLE,\n CIRCLE,\n COLOR,\n CLICK,\n HEADING_LARGE,\n LIST\n} from '../../constants';\n\nconst shapesArray = [];\nconst infoWindowArray = [];\n\nconst clearShapes = () => {\n if (shapesArray.length) {\n shapesArray.forEach(shape => shape.setMap(null));\n shapesArray.length = 0;\n }\n};\n\nconst closeInfoWindows = () => {\n if (infoWindowArray.length) {\n infoWindowArray.forEach(infoWindow => infoWindow.close());\n infoWindowArray.length = 0;\n }\n};\n\nconst addShapeListeners = (map, router, shape, entityData, imageData, shapeInstance) => {\n const { displayItems, entity, enableInfoPane = false, dataSummaries = [] } = shape;\n\n const url = getEntityUrl(displayItems, entity, entityData);\n\n if (enableInfoPane) {\n const infoWindow = new window.google.maps.InfoWindow({\n content: ''\n });\n\n shapeInstance.addListener(CLICK, event => {\n closeInfoWindows();\n const content = ReactDOMServer.renderToString(\n InfoWindowContent(entityData, imageData, displayItems, dataSummaries, url)\n );\n infoWindow.setContent(content);\n infoWindow.setPosition(event.latLng);\n infoWindow.open(map, shapeInstance);\n infoWindowArray.push(infoWindow);\n });\n } else if (url) {\n shapeInstance.addListener(CLICK, () => {\n router.push(url);\n });\n }\n};\n\nconst setStyleOptions = shape => {\n const { strokeColor, strokeOpacity, strokeWeight, fillColor, fillOpacity } = shape;\n const styleSettings = { strokeColor, fillColor, strokeOpacity, strokeWeight, fillOpacity };\n\n return {\n ...Object.keys(styleSettings).reduce((acc, key) => {\n const settingValue = styleSettings[key];\n const shouldValueBeNumber = !key.includes(COLOR);\n const hasValuePassedCondition = shouldValueBeNumber ? isNumber(settingValue) : settingValue;\n if (hasValuePassedCondition) acc[key] = settingValue;\n return acc;\n }, {})\n };\n};\n\nconst areRectangleBoundsNumbers = bounds => bounds.every(bound => isNumber(bound));\n\nconst isPositionCorrect = (lat, lng) => isNumber(lat) && isNumber(lng);\n\nconst getEntityUrl = (displayItems, entity, entityData) => {\n let url = '';\n\n if (entity && displayItems) {\n const [entityId] = displayItems;\n const [entityRecord] = entityData.filter(({ id }) => id === entityId);\n if (entityRecord) {\n ({ url = '' } = entityRecord);\n }\n }\n\n return url;\n};\n\nconst getImageUrl = (imageData, imageId) => {\n const [image] = imageData.getFiles.filter(({ id }) => id === imageId);\n if (image) return image.url;\n\n return '';\n};\n\nconst getIconUrl = (shape, imageData) => {\n const { imageId } = shape;\n\n if (!imageData.getFiles) return '';\n\n return imageId ? getImageUrl(imageData, imageId) : '';\n};\n\nconst InfoWindowContent = (entityData, imageData, displayItems, dataSummaries, url) => {\n const [entityId] = displayItems;\n const [entityRecordData] = entityData.filter(({ id }) => id === entityId);\n\n const summariesWithContent = dataSummaries.map(dataSummary => {\n const { elementTitle, type, propsToDisplay, ...otherProps } = dataSummary;\n const isTypeHeading = type === HEADING_LARGE;\n const summaryPropsWithContent = buildPropsToDisplayWithContent(\n entityRecordData,\n propsToDisplay\n );\n const modifier = getClassModifiers(LIST, otherProps);\n const SummaryComponent = summaryComponents[type];\n if (!summaryPropsWithContent.length) {\n return null;\n }\n\n const getDataSummaryComponent = () => {\n const component = (\n <SummaryComponent\n key={type}\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithContent}\n />\n );\n\n if (isTypeHeading && url) return <Link href={url}>{component}</Link>;\n\n return component;\n };\n\n return getDataSummaryComponent();\n });\n\n let image = {};\n const { imageId } = entityRecordData || {};\n if (imageId) [image] = imageData.getFiles.filter(({ id }) => id === imageId);\n const shouldShowImage = image && image.url;\n\n const getImageElement = () => {\n const { url: imageUrl, data } = image;\n const imageElement = (\n <img className=\"info__window\" src={imageUrl} alt={data && data.altText ? data.altText : ''} />\n );\n\n if (url) return <Link href={url}>{imageElement}</Link>;\n\n return imageElement;\n };\n\n return (\n <>\n {shouldShowImage && getImageElement()}\n {summariesWithContent}\n </>\n );\n};\n\nconst setMarker = (map, router, shape, data, imageData) => {\n const { latitude, longitude, entity, label = '', markerWidth = 50, markerHeight = 50 } = shape;\n if (isPositionCorrect(latitude, longitude)) {\n const entityData = entity ? data[entity] || [] : [];\n\n const iconUrl = getIconUrl(shape, imageData);\n\n const icon = iconUrl\n ? {\n url: iconUrl,\n scaledSize: new window.google.maps.Size(markerWidth || 50, markerHeight || 50)\n }\n : {};\n\n const marker = new window.google.maps.Marker({\n position: { lat: latitude, lng: longitude },\n map,\n icon,\n title: label || ''\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, marker);\n\n shapesArray.push(marker);\n\n marker.setMap(map);\n }\n};\n\nconst setPolyline = (map, router, shape, data, imageData) => {\n const { paths, entity } = shape;\n const path = getPath(paths);\n\n if (path.length) {\n const entityData = entity ? data[entity] || [] : [];\n const polyline = new window.google.maps.Polyline({\n path,\n geodesic: true,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, polyline);\n\n shapesArray.push(polyline);\n\n polyline.setMap(map);\n }\n};\n\nconst setPolygon = (map, router, shape, data, imageData) => {\n const { paths: unParsedPaths, entity } = shape;\n const paths = getPath(unParsedPaths);\n\n if (paths.length) {\n const entityData = entity ? data[entity] || [] : [];\n const polygon = new window.google.maps.Polygon({\n paths,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, polygon);\n\n shapesArray.push(polygon);\n\n polygon.setMap(map);\n }\n};\n\nconst setRectangle = (map, router, shape, data, imageData) => {\n const { northBound, southBound, eastBound, westBound, entity } = shape;\n if (areRectangleBoundsNumbers([northBound, southBound, eastBound, westBound])) {\n const entityData = entity ? data[entity] || [] : [];\n const rectangle = new window.google.maps.Rectangle({\n ...setStyleOptions(shape),\n map,\n bounds: {\n north: northBound,\n south: southBound,\n east: eastBound,\n west: westBound\n }\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, rectangle);\n\n shapesArray.push(rectangle);\n\n rectangle.setMap(map);\n }\n};\n\nconst setCircle = (map, router, shape, data, imageData) => {\n const { latitude, longitude, radius, entity } = shape;\n if (isPositionCorrect(latitude, longitude) && isNumber(radius)) {\n const entityData = entity ? data[entity] || [] : [];\n const circle = new window.google.maps.Circle({\n ...setStyleOptions(shape),\n map,\n center: { lat: latitude, lng: longitude },\n radius\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, circle);\n\n shapesArray.push(circle);\n\n circle.setMap(map);\n }\n};\n\nconst setShapes = (map, router, shapes, data, imageData) => {\n const mapZoom = map.getZoom();\n clearShapes();\n\n if (shapes.length) {\n shapes.forEach(shape => {\n const { type: shapeType, minZoom, maxZoom } = shape;\n\n if (mapZoom >= minZoom && mapZoom <= maxZoom) {\n switch (shapeType) {\n case MARKER: {\n setMarker(map, router, shape, data, imageData);\n break;\n }\n case POLYLINE: {\n setPolyline(map, router, shape, data, imageData);\n break;\n }\n case POLYGON: {\n setPolygon(map, router, shape, data, imageData);\n break;\n }\n case RECTANGLE: {\n setRectangle(map, router, shape, data, imageData);\n break;\n }\n case CIRCLE: {\n setCircle(map, router, shape, data, imageData);\n break;\n }\n default:\n break;\n }\n }\n });\n }\n};\n\nexport default setShapes;\n"],"file":"set-shapes.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/GoogleMaps/helpers/set-shapes.js"],"names":["React","isNumber","ReactDOMServer","Link","buildPropsToDisplayWithContent","summaryComponents","getClassModifiers","getPath","MARKER","POLYLINE","POLYGON","RECTANGLE","CIRCLE","COLOR","CLICK","HEADING_LARGE","LIST","shapesArray","infoWindowArray","clearShapes","length","forEach","shape","setMap","closeInfoWindows","infoWindow","close","addShapeListeners","map","router","imageData","shapeInstance","enableInfoPane","dataSummaries","url","shapeData","window","google","maps","InfoWindow","content","addListener","event","renderToString","infoWindowContent","setContent","setPosition","latLng","open","push","setStyleOptions","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","styleSettings","Object","keys","reduce","acc","key","settingValue","shouldValueBeNumber","includes","hasValuePassedCondition","areRectangleBoundsNumbers","bounds","every","bound","isPositionCorrect","lat","lng","getIconUrl","imageId","image","find","id","summariesWithContent","Promise","all","dataSummary","elementTitle","type","propsToDisplay","otherProps","isTypeHeading","summaryPropsWithContent","modifier","SummaryComponent","render","preload","getDataSummaryComponent","component","shouldShowImage","getImageElement","imageUrl","data","imageElement","altText","setMarker","label","markerWidth","markerHeight","latitude","longitude","iconUrl","icon","scaledSize","Size","marker","Marker","position","title","setPolyline","paths","path","polyline","Polyline","geodesic","setPolygon","unParsedPaths","polygon","Polygon","setRectangle","northBound","southBound","eastBound","westBound","rectangle","Rectangle","north","south","east","west","setCircle","radius","circle","Circle","center","setShapes","shapes","mapZoom","getZoom","minZoom","maxZoom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport isNumber from 'lodash.isnumber';\nimport ReactDOMServer from 'react-dom/server';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport {\n buildPropsToDisplayWithContent,\n summaryComponents,\n getClassModifiers\n} from '@blaze-cms/react-page-builder';\nimport getPath from './get-path';\nimport {\n MARKER,\n POLYLINE,\n POLYGON,\n RECTANGLE,\n CIRCLE,\n COLOR,\n CLICK,\n HEADING_LARGE,\n LIST\n} from '../../constants';\n\nconst shapesArray = [];\nconst infoWindowArray = [];\n\nconst clearShapes = () => {\n if (shapesArray.length) {\n shapesArray.forEach(shape => shape.setMap(null));\n shapesArray.length = 0;\n }\n};\n\nconst closeInfoWindows = () => {\n if (infoWindowArray.length) {\n infoWindowArray.forEach(infoWindow => infoWindow.close());\n infoWindowArray.length = 0;\n }\n};\n\nconst addShapeListeners = (map, router, shape, imageData, shapeInstance) => {\n const { enableInfoPane = false, dataSummaries = [], url, shapeData } = shape;\n\n if (enableInfoPane) {\n const infoWindow = new window.google.maps.InfoWindow({\n content: ''\n });\n\n shapeInstance.addListener(CLICK, async event => {\n closeInfoWindows();\n const content = ReactDOMServer.renderToString(\n await infoWindowContent(imageData, dataSummaries, url, shapeData)\n );\n infoWindow.setContent(content);\n infoWindow.setPosition(event.latLng);\n infoWindow.open(map, shapeInstance);\n infoWindowArray.push(infoWindow);\n });\n } else if (url) {\n shapeInstance.addListener(CLICK, () => {\n router.push(url);\n });\n }\n};\n\nconst setStyleOptions = shape => {\n const { strokeColor, strokeOpacity, strokeWeight, fillColor, fillOpacity } = shape;\n const styleSettings = { strokeColor, fillColor, strokeOpacity, strokeWeight, fillOpacity };\n\n return {\n ...Object.keys(styleSettings).reduce((acc, key) => {\n const settingValue = styleSettings[key];\n const shouldValueBeNumber = !key.includes(COLOR);\n const hasValuePassedCondition = shouldValueBeNumber ? isNumber(settingValue) : settingValue;\n if (hasValuePassedCondition) acc[key] = settingValue;\n return acc;\n }, {})\n };\n};\n\nconst areRectangleBoundsNumbers = bounds => bounds.every(bound => isNumber(bound));\n\nconst isPositionCorrect = (lat, lng) => isNumber(lat) && isNumber(lng);\n\nconst getIconUrl = (imageId, imageData) => {\n if (!imageId) return '';\n const image = imageData.find(({ id }) => id === imageId);\n if (!image || !image.url) return '';\n\n return image.url;\n};\n\nconst infoWindowContent = async (imageData, dataSummaries, url, shapeData) => {\n const summariesWithContent = await Promise.all(\n dataSummaries.map(async dataSummary => {\n const { elementTitle, type, propsToDisplay, ...otherProps } = dataSummary;\n const isTypeHeading = type === HEADING_LARGE;\n const summaryPropsWithContent = buildPropsToDisplayWithContent(shapeData, propsToDisplay);\n const modifier = getClassModifiers(LIST, otherProps);\n const SummaryComponent = summaryComponents[type];\n await SummaryComponent.render.preload(); // preload dynamic nextjs component\n\n if (!summaryPropsWithContent.length) return null;\n\n const getDataSummaryComponent = () => {\n const component = (\n <SummaryComponent\n key={type}\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithContent}\n />\n );\n\n if (isTypeHeading && url) return <Link href={url}>{component}</Link>;\n\n return component;\n };\n\n return getDataSummaryComponent();\n })\n );\n const { imageId } = shapeData || {};\n const image = imageData.find(({ id }) => id === imageId);\n const shouldShowImage = image && image.url;\n\n const getImageElement = () => {\n const { url: imageUrl, data } = image;\n const imageElement = (\n <img className=\"info__window\" src={imageUrl} alt={data && data.altText ? data.altText : ''} />\n );\n\n if (url) return <Link href={url}>{imageElement}</Link>;\n\n return imageElement;\n };\n\n return (\n <>\n {shouldShowImage && getImageElement()}\n {summariesWithContent}\n </>\n );\n};\n\nconst setMarker = (map, router, shape, imageData) => {\n const { label = '', markerWidth = 50, markerHeight = 50, latitude, longitude, imageId } = shape;\n\n if (isPositionCorrect(latitude, longitude)) {\n const iconUrl = getIconUrl(imageId, imageData);\n\n const icon = iconUrl\n ? {\n url: iconUrl,\n scaledSize: new window.google.maps.Size(markerWidth || 50, markerHeight || 50)\n }\n : {};\n\n const marker = new window.google.maps.Marker({\n position: { lat: latitude, lng: longitude },\n map,\n icon,\n title: label || ''\n });\n\n addShapeListeners(map, router, shape, imageData, marker);\n\n shapesArray.push(marker);\n\n marker.setMap(map);\n }\n};\n\nconst setPolyline = (map, router, shape, imageData) => {\n const { paths } = shape;\n const path = getPath(paths);\n\n if (path.length) {\n const polyline = new window.google.maps.Polyline({\n path,\n geodesic: true,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, imageData, polyline);\n\n shapesArray.push(polyline);\n\n polyline.setMap(map);\n }\n};\n\nconst setPolygon = (map, router, shape, imageData) => {\n const { paths: unParsedPaths } = shape;\n const paths = getPath(unParsedPaths);\n\n if (paths.length) {\n const polygon = new window.google.maps.Polygon({\n paths,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, imageData, polygon);\n\n shapesArray.push(polygon);\n\n polygon.setMap(map);\n }\n};\n\nconst setRectangle = (map, router, shape, imageData) => {\n const { northBound, southBound, eastBound, westBound } = shape;\n if (areRectangleBoundsNumbers([northBound, southBound, eastBound, westBound])) {\n const rectangle = new window.google.maps.Rectangle({\n ...setStyleOptions(shape),\n map,\n bounds: {\n north: northBound,\n south: southBound,\n east: eastBound,\n west: westBound\n }\n });\n\n addShapeListeners(map, router, shape, imageData, rectangle);\n\n shapesArray.push(rectangle);\n\n rectangle.setMap(map);\n }\n};\n\nconst setCircle = (map, router, shape, imageData) => {\n const { latitude, longitude, radius } = shape;\n if (isPositionCorrect(latitude, longitude) && isNumber(radius)) {\n const circle = new window.google.maps.Circle({\n ...setStyleOptions(shape),\n map,\n center: { lat: latitude, lng: longitude },\n radius\n });\n\n addShapeListeners(map, router, shape, imageData, circle);\n\n shapesArray.push(circle);\n\n circle.setMap(map);\n }\n};\n\nconst setShapes = (map, router, shapes, imageData) => {\n const mapZoom = map.getZoom();\n clearShapes();\n\n shapes.forEach(shape => {\n const { type, minZoom, maxZoom } = shape;\n\n if (mapZoom >= minZoom && mapZoom <= maxZoom) {\n switch (type) {\n case MARKER: {\n setMarker(map, router, shape, imageData);\n break;\n }\n case POLYLINE: {\n setPolyline(map, router, shape, imageData);\n break;\n }\n case POLYGON: {\n setPolygon(map, router, shape, imageData);\n break;\n }\n case RECTANGLE: {\n setRectangle(map, router, shape, imageData);\n break;\n }\n case CIRCLE: {\n setCircle(map, router, shape, imageData);\n break;\n }\n default:\n break;\n }\n }\n });\n};\n\nexport default setShapes;\n"],"file":"set-shapes.js"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useQuery } from '@apollo/client';
|
|
2
|
-
import {
|
|
2
|
+
import { generateWhereQuery, generateQueryString } from '../queries';
|
|
3
3
|
|
|
4
4
|
const useGetImages = imageIds => {
|
|
5
5
|
const queryName = 'getFiles';
|
|
6
|
-
const action =
|
|
6
|
+
const action = generateWhereQuery(generateQueryString(queryName, queryName, 'id url data'));
|
|
7
7
|
const {
|
|
8
8
|
data = {},
|
|
9
9
|
loading,
|
|
@@ -15,7 +15,8 @@ const useGetImages = imageIds => {
|
|
|
15
15
|
_in: imageIds
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
}
|
|
18
|
+
},
|
|
19
|
+
skip: !imageIds || !imageIds.length
|
|
19
20
|
});
|
|
20
21
|
return {
|
|
21
22
|
data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/GoogleMaps/hooks/use-get-images.js"],"names":["useQuery","
|
|
1
|
+
{"version":3,"sources":["../../../src/GoogleMaps/hooks/use-get-images.js"],"names":["useQuery","generateWhereQuery","generateQueryString","useGetImages","imageIds","queryName","action","data","loading","error","variables","where","id","_in","skip","length"],"mappings":"AAAA,SAASA,QAAT,QAAyB,gBAAzB;AACA,SAASC,kBAAT,EAA6BC,mBAA7B,QAAwD,YAAxD;;AAEA,MAAMC,YAAY,GAAGC,QAAQ,IAAI;AAC/B,QAAMC,SAAS,GAAG,UAAlB;AACA,QAAMC,MAAM,GAAGL,kBAAkB,CAACC,mBAAmB,CAACG,SAAD,EAAYA,SAAZ,EAAuB,aAAvB,CAApB,CAAjC;AACA,QAAM;AAAEE,IAAAA,IAAI,GAAG,EAAT;AAAaC,IAAAA,OAAb;AAAsBC,IAAAA;AAAtB,MAAgCT,QAAQ,CAACM,MAAD,EAAS;AACrDI,IAAAA,SAAS,EAAE;AAAEC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,EAAE,EAAE;AAAEC,UAAAA,GAAG,EAAET;AAAP;AAAN;AAAT,KAD0C;AAErDU,IAAAA,IAAI,EAAE,CAACV,QAAD,IAAa,CAACA,QAAQ,CAACW;AAFwB,GAAT,CAA9C;AAIA,SAAO;AAAER,IAAAA,IAAF;AAAQC,IAAAA,OAAR;AAAiBC,IAAAA;AAAjB,GAAP;AACD,CARD;;AAUA,eAAeN,YAAf","sourcesContent":["import { useQuery } from '@apollo/client';\nimport { generateWhereQuery, generateQueryString } from '../queries';\n\nconst useGetImages = imageIds => {\n const queryName = 'getFiles';\n const action = generateWhereQuery(generateQueryString(queryName, queryName, 'id url data'));\n const { data = {}, loading, error } = useQuery(action, {\n variables: { where: { id: { _in: imageIds } } },\n skip: !imageIds || !imageIds.length\n });\n return { data, loading, error };\n};\n\nexport default useGetImages;\n"],"file":"use-get-images.js"}
|
|
@@ -11,6 +11,12 @@ const GET_ENTITY_SCHEMAS = gql`
|
|
|
11
11
|
`;
|
|
12
12
|
|
|
13
13
|
const generateQuery = queryString => gql`
|
|
14
|
+
query getEntityData {
|
|
15
|
+
${queryString}
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
const generateWhereQuery = queryString => gql`
|
|
14
20
|
query getEntityData($where: JSON){
|
|
15
21
|
${queryString}
|
|
16
22
|
}
|
|
@@ -19,9 +25,24 @@ const generateQuery = queryString => gql`
|
|
|
19
25
|
const generateQueryString = (action, query, props) => `
|
|
20
26
|
${query}: ${action}(where: $where){
|
|
21
27
|
${props}
|
|
22
|
-
__typename
|
|
23
28
|
}
|
|
24
29
|
`;
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
const generateIdsQuery = (query, props, action, ids) => `
|
|
32
|
+
${query}: ${action}(where: { id: { _in: ${JSON.stringify(ids)} } }){
|
|
33
|
+
${props}
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
|
|
37
|
+
const generateFiltersQuery = (query, props, rawQUery, filterQueryKey) => `
|
|
38
|
+
${query}: searchPublishedContent(rawQueryStringified: ${JSON.stringify(rawQUery)}){
|
|
39
|
+
results {
|
|
40
|
+
...on ${filterQueryKey} {
|
|
41
|
+
${props}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
export { GET_ENTITY_SCHEMAS, generateQuery, generateQueryString, generateIdsQuery, generateFiltersQuery, generateWhereQuery };
|
|
27
48
|
//# sourceMappingURL=queries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/GoogleMaps/queries.js"],"names":["gql","GET_ENTITY_SCHEMAS","generateQuery","queryString","generateQueryString","action","query","props"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AAEA,MAAMC,kBAAkB,GAAGD,GAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATA;;AAWA,MAAME,aAAa,GAAGC,WAAW,IAAIH,GAAI;AACzC;AACA,MAAMG,WAAY;AAClB;AACA,CAJA;;AAMA,MAAMC,mBAAmB,GAAG,CAACC,MAAD,EAASC,KAAT,EAAgBC,KAAhB,KAA2B;AACvD,IAAID,KAAM,KAAID,MAAO;AACrB,MAAME,KAAM;AACZ;AACA;AACA,
|
|
1
|
+
{"version":3,"sources":["../../src/GoogleMaps/queries.js"],"names":["gql","GET_ENTITY_SCHEMAS","generateQuery","queryString","generateWhereQuery","generateQueryString","action","query","props","generateIdsQuery","ids","JSON","stringify","generateFiltersQuery","rawQUery","filterQueryKey"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AAEA,MAAMC,kBAAkB,GAAGD,GAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATA;;AAWA,MAAME,aAAa,GAAGC,WAAW,IAAIH,GAAI;AACzC;AACA,MAAMG,WAAY;AAClB;AACA,CAJA;;AAMA,MAAMC,kBAAkB,GAAGD,WAAW,IAAIH,GAAI;AAC9C;AACA,MAAMG,WAAY;AAClB;AACA,CAJA;;AAKA,MAAME,mBAAmB,GAAG,CAACC,MAAD,EAASC,KAAT,EAAgBC,KAAhB,KAA2B;AACvD,IAAID,KAAM,KAAID,MAAO;AACrB,MAAME,KAAM;AACZ;AACA,CAJA;;AAMA,MAAMC,gBAAgB,GAAG,CAACF,KAAD,EAAQC,KAAR,EAAeF,MAAf,EAAuBI,GAAvB,KAAgC;AACzD,IAAIH,KAAM,KAAID,MAAO,wBAAuBK,IAAI,CAACC,SAAL,CAAeF,GAAf,CAAoB;AAChE,MAAMF,KAAM;AACZ;AACA,CAJA;;AAMA,MAAMK,oBAAoB,GAAG,CAACN,KAAD,EAAQC,KAAR,EAAeM,QAAf,EAAyBC,cAAzB,KAA6C;AAC1E,IAAIR,KAAM,kDAAiDI,IAAI,CAACC,SAAL,CAAeE,QAAf,CAAyB;AACpF;AACA,cAAcC,cAAe;AAC7B,UAAUP,KAAM;AAChB;AACA;AACA;AACA,CARA;;AAUA,SACEP,kBADF,EAEEC,aAFF,EAGEG,mBAHF,EAIEI,gBAJF,EAKEI,oBALF,EAMET,kBANF","sourcesContent":["import { gql } from '@apollo/client';\n\nconst GET_ENTITY_SCHEMAS = gql`\n query getEntitySchemas($identifier: String) {\n getEntitySchemas(identifier: $identifier) {\n identifier\n actions\n dynamicProperties\n properties\n }\n }\n`;\n\nconst generateQuery = queryString => gql`\n query getEntityData {\n ${queryString}\n }\n`;\n\nconst generateWhereQuery = queryString => gql`\n query getEntityData($where: JSON){\n ${queryString}\n }\n`;\nconst generateQueryString = (action, query, props) => `\n ${query}: ${action}(where: $where){\n ${props}\n }\n`;\n\nconst generateIdsQuery = (query, props, action, ids) => `\n ${query}: ${action}(where: { id: { _in: ${JSON.stringify(ids)} } }){\n ${props}\n }\n`;\n\nconst generateFiltersQuery = (query, props, rawQUery, filterQueryKey) => `\n ${query}: searchPublishedContent(rawQueryStringified: ${JSON.stringify(rawQUery)}){\n results {\n ...on ${filterQueryKey} {\n ${props}\n }\n }\n }\n`;\n\nexport {\n GET_ENTITY_SCHEMAS,\n generateQuery,\n generateQueryString,\n generateIdsQuery,\n generateFiltersQuery,\n generateWhereQuery\n};\n"],"file":"queries.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/plugin-google-maps-fe",
|
|
3
|
-
"version": "0.123.0-alpha.
|
|
3
|
+
"version": "0.123.0-alpha.29",
|
|
4
4
|
"description": "Blaze Google maps plugin fe",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"license": "GPL-3.0",
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@blaze-cms/nextjs-components": "^0.123.0-alpha.25",
|
|
31
|
-
"@blaze-cms/react-page-builder": "^0.123.0-alpha.
|
|
31
|
+
"@blaze-cms/react-page-builder": "^0.123.0-alpha.27",
|
|
32
32
|
"@blaze-cms/setup-ui": "^0.92.0",
|
|
33
33
|
"core-js": "^3.2.1",
|
|
34
34
|
"lodash.isnumber": "^3.0.3",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"lib/*",
|
|
45
45
|
"lib-es/*"
|
|
46
46
|
],
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "71687f97bbe4705da75c13e0e7b8913a29a902b8"
|
|
48
48
|
}
|
|
@@ -1,31 +1,54 @@
|
|
|
1
1
|
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import {
|
|
3
|
+
import { useRouter } from 'next/router';
|
|
4
4
|
import { withTitle } from '@blaze-cms/react-page-builder';
|
|
5
5
|
import { useInView } from '@blaze-react/utils/lib/customHooks';
|
|
6
6
|
import { functions, isEqual, omit } from 'lodash';
|
|
7
7
|
import { setMapOptions, addZoomListener } from './helpers';
|
|
8
8
|
import { GOOGLE_MAPS_SCRIPT, LOAD, SCRIPT, IN_VIEW_CONFIG } from '../constants';
|
|
9
9
|
|
|
10
|
+
const shouldNotUpdate = (props, nextProps) => {
|
|
11
|
+
const [funcs, nextFuncs] = [functions(props), functions(nextProps)];
|
|
12
|
+
const noPropChange = isEqual(omit(props, funcs), omit(nextProps, nextFuncs));
|
|
13
|
+
const noFuncChange =
|
|
14
|
+
funcs.length === nextFuncs.length &&
|
|
15
|
+
funcs.every(fn => props[fn].toString() === nextProps[fn].toString());
|
|
16
|
+
return noPropChange && noFuncChange;
|
|
17
|
+
};
|
|
18
|
+
|
|
10
19
|
const GoogleMaps = ({
|
|
11
|
-
router,
|
|
12
|
-
data,
|
|
13
20
|
type,
|
|
14
21
|
name,
|
|
15
22
|
modifier,
|
|
16
23
|
elementTitle,
|
|
17
|
-
entityGroups,
|
|
18
24
|
imageData,
|
|
19
25
|
onMount,
|
|
20
26
|
onMountProps,
|
|
27
|
+
parent,
|
|
28
|
+
mapShapes,
|
|
29
|
+
centerCoordinates,
|
|
21
30
|
...otherProps
|
|
22
31
|
}) => {
|
|
32
|
+
const router = useRouter();
|
|
23
33
|
const [isIntersecting, mapRef] = useInView(IN_VIEW_CONFIG);
|
|
24
34
|
const [map, setMap] = useState();
|
|
25
35
|
|
|
26
36
|
useEffect(() => {
|
|
27
37
|
const options = setMapOptions(otherProps);
|
|
28
|
-
const onLoad = () =>
|
|
38
|
+
const onLoad = () => {
|
|
39
|
+
const initialMap = new window.google.maps.Map(mapRef.current, options);
|
|
40
|
+
if (centerCoordinates.length === 1) {
|
|
41
|
+
const [{ latitude: lat, longitude: lng }] = centerCoordinates;
|
|
42
|
+
initialMap.setCenter({ lat, lng });
|
|
43
|
+
} else {
|
|
44
|
+
const bounds = new window.google.maps.LatLngBounds();
|
|
45
|
+
centerCoordinates.forEach(({ latitude, longitude }) => {
|
|
46
|
+
bounds.extend(new window.google.maps.LatLng(latitude, longitude));
|
|
47
|
+
});
|
|
48
|
+
initialMap.fitBounds(bounds);
|
|
49
|
+
}
|
|
50
|
+
setMap(initialMap);
|
|
51
|
+
};
|
|
29
52
|
|
|
30
53
|
if (!window.google) {
|
|
31
54
|
const script = document.createElement(SCRIPT);
|
|
@@ -39,7 +62,6 @@ const GoogleMaps = ({
|
|
|
39
62
|
|
|
40
63
|
if (map) {
|
|
41
64
|
map.setOptions(options);
|
|
42
|
-
|
|
43
65
|
const { enableGeolocation } = otherProps;
|
|
44
66
|
const shouldActivateGeolocation = enableGeolocation && navigator.geolocation;
|
|
45
67
|
if (shouldActivateGeolocation) {
|
|
@@ -62,44 +84,35 @@ const GoogleMaps = ({
|
|
|
62
84
|
}, []);
|
|
63
85
|
|
|
64
86
|
if (map && typeof onMount === `function`) onMount(map, onMountProps);
|
|
65
|
-
|
|
66
|
-
if (isIntersecting) addZoomListener(map, router, data, imageData, entityGroups);
|
|
87
|
+
if (isIntersecting) addZoomListener(map, router, mapShapes, imageData);
|
|
67
88
|
|
|
68
89
|
return <div className="google-maps" ref={mapRef} />;
|
|
69
90
|
};
|
|
70
91
|
|
|
71
|
-
const shouldNotUpdate = (props, nextProps) => {
|
|
72
|
-
const [funcs, nextFuncs] = [functions(props), functions(nextProps)];
|
|
73
|
-
const noPropChange = isEqual(omit(props, funcs), omit(nextProps, nextFuncs));
|
|
74
|
-
const noFuncChange =
|
|
75
|
-
funcs.length === nextFuncs.length &&
|
|
76
|
-
funcs.every(fn => props[fn].toString() === nextProps[fn].toString());
|
|
77
|
-
return noPropChange && noFuncChange;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
92
|
GoogleMaps.propTypes = {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
imageData: PropTypes.object,
|
|
93
|
+
mapShapes: PropTypes.array,
|
|
94
|
+
imageData: PropTypes.array,
|
|
84
95
|
type: PropTypes.string,
|
|
85
96
|
name: PropTypes.string,
|
|
86
97
|
modifier: PropTypes.string,
|
|
87
98
|
elementTitle: PropTypes.string,
|
|
88
|
-
entityGroups: PropTypes.array,
|
|
89
99
|
onMount: PropTypes.func,
|
|
90
|
-
onMountProps: PropTypes.object
|
|
100
|
+
onMountProps: PropTypes.object,
|
|
101
|
+
parent: PropTypes.object,
|
|
102
|
+
centerCoordinates: PropTypes.array
|
|
91
103
|
};
|
|
92
104
|
|
|
93
105
|
GoogleMaps.defaultProps = {
|
|
94
|
-
|
|
95
|
-
imageData:
|
|
106
|
+
mapShapes: [],
|
|
107
|
+
imageData: [],
|
|
108
|
+
centerCoordinates: [],
|
|
96
109
|
type: '',
|
|
97
110
|
name: '',
|
|
98
111
|
modifier: '',
|
|
99
112
|
elementTitle: '',
|
|
100
|
-
entityGroups: [],
|
|
101
113
|
onMount: null,
|
|
102
|
-
onMountProps: null
|
|
114
|
+
onMountProps: null,
|
|
115
|
+
parent: {}
|
|
103
116
|
};
|
|
104
117
|
|
|
105
|
-
export default React.memo(
|
|
118
|
+
export default React.memo(withTitle(GoogleMaps), shouldNotUpdate);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { useGetEntitySchemasAsObj } from '@blaze-cms/react-page-builder';
|
|
4
|
-
import {
|
|
4
|
+
import { buildShapesConfig } from './helpers';
|
|
5
5
|
import GoogleMapsRender from './GoogleMapsRender';
|
|
6
6
|
|
|
7
|
-
const GoogleMapsFactory = ({ entityGroups, ...otherProps }) => {
|
|
7
|
+
const GoogleMapsFactory = ({ entityGroups, parent, ...otherProps }) => {
|
|
8
8
|
const { data, loading, error } = useGetEntitySchemasAsObj(
|
|
9
9
|
entityGroups.map(({ entity }) => entity)
|
|
10
10
|
);
|
|
@@ -12,18 +12,25 @@ const GoogleMapsFactory = ({ entityGroups, ...otherProps }) => {
|
|
|
12
12
|
if (loading) return '';
|
|
13
13
|
if (error) return error.message;
|
|
14
14
|
|
|
15
|
-
const
|
|
15
|
+
const shapeConfigs = buildShapesConfig(data, entityGroups, parent);
|
|
16
16
|
|
|
17
17
|
return (
|
|
18
|
-
<GoogleMapsRender
|
|
18
|
+
<GoogleMapsRender
|
|
19
|
+
shapeConfigs={shapeConfigs}
|
|
20
|
+
entityGroups={entityGroups}
|
|
21
|
+
parent={parent}
|
|
22
|
+
{...otherProps}
|
|
23
|
+
/>
|
|
19
24
|
);
|
|
20
25
|
};
|
|
21
26
|
|
|
22
27
|
GoogleMapsFactory.propTypes = {
|
|
28
|
+
parent: PropTypes.object,
|
|
23
29
|
entityGroups: PropTypes.array
|
|
24
30
|
};
|
|
25
31
|
|
|
26
32
|
GoogleMapsFactory.defaultProps = {
|
|
33
|
+
parent: {},
|
|
27
34
|
entityGroups: []
|
|
28
35
|
};
|
|
29
36
|
|
|
@@ -4,46 +4,47 @@ import isNumber from 'lodash.isnumber';
|
|
|
4
4
|
import { useQuery } from '@apollo/client';
|
|
5
5
|
import { getAction } from '@blaze-cms/react-page-builder';
|
|
6
6
|
import { useGetImages } from './hooks';
|
|
7
|
-
import { buildQuery, getImageIds } from './helpers';
|
|
7
|
+
import { buildQuery, getImageIds, getCenterCoordinates, buildMapShapes } from './helpers';
|
|
8
8
|
import GoogleMaps from './GoogleMaps';
|
|
9
9
|
|
|
10
10
|
const defaultQuery = getAction('getPublishedPages', 'id');
|
|
11
11
|
|
|
12
|
-
const GoogleMapsRender = ({
|
|
13
|
-
const {
|
|
14
|
-
const { query
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
const { data = {}, loading, error } = useQuery(query || defaultQuery, {
|
|
20
|
-
variables: { where: { id: { _in: ids } } },
|
|
21
|
-
skip: !(ids.length && query)
|
|
12
|
+
const GoogleMapsRender = ({ shapeConfigs, entityGroups, id, ...otherProps }) => {
|
|
13
|
+
const { defaultZoom } = otherProps;
|
|
14
|
+
const { query } = buildQuery(shapeConfigs);
|
|
15
|
+
const { data, loading, error } = useQuery(query || defaultQuery, {
|
|
16
|
+
skip: !query
|
|
22
17
|
});
|
|
18
|
+
const mapShapes = buildMapShapes(shapeConfigs, data);
|
|
19
|
+
const imageIds = getImageIds(mapShapes);
|
|
20
|
+
const {
|
|
21
|
+
data: { getFiles: imageData } = {},
|
|
22
|
+
loading: imagesLoading,
|
|
23
|
+
error: imagesError
|
|
24
|
+
} = useGetImages(imageIds);
|
|
25
|
+
if (loading || imagesLoading) return '';
|
|
26
|
+
if (error || imagesError) return null;
|
|
27
|
+
|
|
28
|
+
const centerCoordinates = getCenterCoordinates(mapShapes, otherProps);
|
|
29
|
+
const shouldDisplayMap = isNumber(defaultZoom) && !!centerCoordinates.length;
|
|
23
30
|
|
|
24
|
-
const imageIds = getImageIds(entityConfigs, data);
|
|
25
|
-
const { data: imageData = {}, loading: _loading, error: _error } = useGetImages(imageIds);
|
|
26
|
-
|
|
27
|
-
if (loading || _loading) return '';
|
|
28
|
-
if (error || _error) return null;
|
|
29
31
|
if (!shouldDisplayMap) return null;
|
|
30
32
|
|
|
31
33
|
return (
|
|
32
34
|
<GoogleMaps
|
|
33
35
|
key={otherProps.slug}
|
|
34
|
-
|
|
36
|
+
centerCoordinates={centerCoordinates}
|
|
37
|
+
mapShapes={mapShapes}
|
|
35
38
|
imageData={imageData}
|
|
36
|
-
entityGroups={entityGroups}
|
|
37
39
|
{...otherProps}
|
|
38
40
|
/>
|
|
39
41
|
);
|
|
40
42
|
};
|
|
41
43
|
|
|
42
44
|
GoogleMapsRender.propTypes = {
|
|
43
|
-
parent: PropTypes.object.isRequired,
|
|
44
45
|
entityGroups: PropTypes.array,
|
|
45
46
|
id: PropTypes.string,
|
|
46
|
-
|
|
47
|
+
shapeConfigs: PropTypes.array,
|
|
47
48
|
centerLatitude: PropTypes.number,
|
|
48
49
|
centerLongitude: PropTypes.number,
|
|
49
50
|
defaultZoom: PropTypes.number
|
|
@@ -51,7 +52,7 @@ GoogleMapsRender.propTypes = {
|
|
|
51
52
|
|
|
52
53
|
GoogleMapsRender.defaultProps = {
|
|
53
54
|
entityGroups: [],
|
|
54
|
-
|
|
55
|
+
shapeConfigs: [],
|
|
55
56
|
id: '',
|
|
56
57
|
centerLatitude: null,
|
|
57
58
|
centerLongitude: null,
|
|
@@ -1,29 +1,10 @@
|
|
|
1
1
|
import { ZOOM_CHANGED } from '../../constants';
|
|
2
2
|
import setShapes from './set-shapes';
|
|
3
3
|
|
|
4
|
-
const addZoomListener = (map, router,
|
|
4
|
+
const addZoomListener = (map, router, shapes, imageData) => {
|
|
5
5
|
if (!map) return;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
entity,
|
|
9
|
-
shapes: entityShapes,
|
|
10
|
-
enableInfoPane = false,
|
|
11
|
-
dataSummaries = []
|
|
12
|
-
} = entityGroup;
|
|
13
|
-
acc.push(
|
|
14
|
-
...entityShapes.map(entityShape => ({
|
|
15
|
-
...entityShape,
|
|
16
|
-
entity,
|
|
17
|
-
enableInfoPane,
|
|
18
|
-
dataSummaries
|
|
19
|
-
}))
|
|
20
|
-
);
|
|
21
|
-
return acc;
|
|
22
|
-
}, []);
|
|
23
|
-
|
|
24
|
-
setShapes(map, router, shapes, data, imageData);
|
|
25
|
-
|
|
26
|
-
map.addListener(ZOOM_CHANGED, () => setShapes(map, router, shapes, data, imageData));
|
|
6
|
+
setShapes(map, router, shapes, imageData);
|
|
7
|
+
map.addListener(ZOOM_CHANGED, () => setShapes(map, router, shapes, imageData));
|
|
27
8
|
};
|
|
28
9
|
|
|
29
10
|
export default addZoomListener;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const getLatLonValues = (keys, data) => {
|
|
2
|
+
if (keys.length === 1) return data[keys];
|
|
3
|
+
const key = keys.shift();
|
|
4
|
+
return getLatLonValues(keys, data[key]);
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
const getLatLong = (latProp, lonProp, shape, data) => {
|
|
8
|
+
const { latitude, longitude } = shape;
|
|
9
|
+
|
|
10
|
+
if (!latProp || !lonProp) return { latitude, longitude };
|
|
11
|
+
const latKeys = latProp.split('.');
|
|
12
|
+
const lonKeys = lonProp.split('.');
|
|
13
|
+
const lat = getLatLonValues(latKeys, data);
|
|
14
|
+
const lon = getLatLonValues(lonKeys, data);
|
|
15
|
+
|
|
16
|
+
return { latitude: lat, longitude: lon };
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const buildMapShapes = (shapesOptions, shapesData) => {
|
|
20
|
+
if (!shapesData) return [];
|
|
21
|
+
const mapShapes = [];
|
|
22
|
+
shapesOptions.forEach(shape => {
|
|
23
|
+
const { shapeKey, entityOptions, shapeOptions } = shape;
|
|
24
|
+
const { dataSummaries, enableInfoPane } = entityOptions;
|
|
25
|
+
const {
|
|
26
|
+
imageId,
|
|
27
|
+
label,
|
|
28
|
+
markerHeight,
|
|
29
|
+
markerWidth,
|
|
30
|
+
maxZoom,
|
|
31
|
+
minZoom,
|
|
32
|
+
type,
|
|
33
|
+
useAsCenter
|
|
34
|
+
} = shapeOptions;
|
|
35
|
+
|
|
36
|
+
const shapeData = Array.isArray(shapesData[shapeKey])
|
|
37
|
+
? shapesData[shapeKey]
|
|
38
|
+
: shapesData[shapeKey].results;
|
|
39
|
+
if (!shapeData) return;
|
|
40
|
+
const { latProp, lonProp } = entityOptions;
|
|
41
|
+
|
|
42
|
+
shapeData.forEach(data => {
|
|
43
|
+
const { url } = data;
|
|
44
|
+
const { latitude, longitude } = getLatLong(latProp, lonProp, shapeOptions, data);
|
|
45
|
+
|
|
46
|
+
const formatedShape = {
|
|
47
|
+
latitude,
|
|
48
|
+
longitude,
|
|
49
|
+
dataSummaries,
|
|
50
|
+
enableInfoPane,
|
|
51
|
+
imageId,
|
|
52
|
+
label,
|
|
53
|
+
markerHeight,
|
|
54
|
+
markerWidth,
|
|
55
|
+
maxZoom,
|
|
56
|
+
minZoom,
|
|
57
|
+
type,
|
|
58
|
+
url,
|
|
59
|
+
useAsCenter,
|
|
60
|
+
shapeData: data
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
mapShapes.push(formatedShape);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
return mapShapes;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export default buildMapShapes;
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
import { generateQuery,
|
|
1
|
+
import { generateQuery, generateIdsQuery, generateFiltersQuery } from '../queries';
|
|
2
2
|
|
|
3
3
|
const buildQuery = entityConfigs => {
|
|
4
4
|
const entityIds = [];
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
const rawQueryStringified = '';
|
|
6
|
+
const queryString = entityConfigs
|
|
7
|
+
.map(entityConfig => {
|
|
8
|
+
const { action, ids, entity, propsQuery, shapeKey, filtersObject } = entityConfig;
|
|
9
|
+
if (!action) return '';
|
|
10
|
+
const formatedEntity = `${entity[0].toUpperCase()}${entity.slice(1)}`;
|
|
11
|
+
const filterQueryKey =
|
|
12
|
+
action.indexOf('Published') !== -1 ? `Published${formatedEntity}` : formatedEntity;
|
|
13
|
+
|
|
14
|
+
entityIds.push(...ids);
|
|
15
|
+
const props = propsQuery.trim() || 'id';
|
|
16
|
+
const singleItemQuery = filtersObject
|
|
17
|
+
? generateFiltersQuery(shapeKey, props, JSON.stringify(filtersObject), filterQueryKey)
|
|
18
|
+
: generateIdsQuery(shapeKey, props, action, ids);
|
|
19
|
+
|
|
20
|
+
return singleItemQuery;
|
|
21
|
+
})
|
|
22
|
+
.join(' ');
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
query: queryString ? generateQuery(queryString) : '',
|
|
26
|
+
ids: entityIds,
|
|
27
|
+
rawQueryStringified
|
|
28
|
+
};
|
|
14
29
|
};
|
|
15
30
|
|
|
16
31
|
export default buildQuery;
|