@situm/cordova 3.0.0

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.
Files changed (313) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/CHANGELOG_UNRELEASED.md +28 -0
  3. package/Jenkinsfile +84 -0
  4. package/LICENSE +21 -0
  5. package/README.md +472 -0
  6. package/azure/common-steps.yaml +5 -0
  7. package/azure-pipelines.yml +336 -0
  8. package/docs/JSDoc/MapView.html +300 -0
  9. package/docs/JSDoc/MapViewControllerImpl.html +299 -0
  10. package/docs/JSDoc/Situm.html +5257 -0
  11. package/docs/JSDoc/android_Interfaces.js.html +825 -0
  12. package/docs/JSDoc/android_situm.js.html +380 -0
  13. package/docs/JSDoc/fonts/glyphicons-halflings-regular.eot +0 -0
  14. package/docs/JSDoc/fonts/glyphicons-halflings-regular.svg +288 -0
  15. package/docs/JSDoc/fonts/glyphicons-halflings-regular.ttf +0 -0
  16. package/docs/JSDoc/fonts/glyphicons-halflings-regular.woff +0 -0
  17. package/docs/JSDoc/fonts/glyphicons-halflings-regular.woff2 +0 -0
  18. package/docs/JSDoc/global.html +7538 -0
  19. package/docs/JSDoc/img/toast-ui.png +0 -0
  20. package/docs/JSDoc/index.html +90 -0
  21. package/docs/JSDoc/map-view-controller.js.html +307 -0
  22. package/docs/JSDoc/map-view.js.html +172 -0
  23. package/docs/JSDoc/scripts/jquery.min.js +2 -0
  24. package/docs/JSDoc/scripts/linenumber.js +30 -0
  25. package/docs/JSDoc/scripts/prettify/Apache-License-2.0.txt +202 -0
  26. package/docs/JSDoc/scripts/prettify/lang-css.js +2 -0
  27. package/docs/JSDoc/scripts/prettify/prettify.js +28 -0
  28. package/docs/JSDoc/scripts/tui-doc.js +200 -0
  29. package/docs/JSDoc/styles/bootstrap.min.css +6 -0
  30. package/docs/JSDoc/styles/custom.css +23 -0
  31. package/docs/JSDoc/styles/prettify-jsdoc.css +111 -0
  32. package/docs/JSDoc/styles/prettify-tomorrow.css +132 -0
  33. package/docs/JSDoc/styles/tui-doc.css +485 -0
  34. package/docs/conf.json +28 -0
  35. package/docs/getting-started.md +298 -0
  36. package/docs/imagotype-SITUM-transparent-90.png +0 -0
  37. package/docs/static/styles/custom.css +23 -0
  38. package/package.json +60 -0
  39. package/plugin.xml +102 -0
  40. package/scripts/update_changelog.sh +22 -0
  41. package/src/android/app/build.gradle +51 -0
  42. package/src/android/app/proguard-rules.pro +21 -0
  43. package/src/android/app/src/main/AndroidManifest.xml +11 -0
  44. package/src/android/app/src/main/java/es/situm/plugin/DateUtils.java +15 -0
  45. package/src/android/app/src/main/java/es/situm/plugin/PluginHelper.java +919 -0
  46. package/src/android/app/src/main/java/es/situm/plugin/SitumMapper.java +968 -0
  47. package/src/android/app/src/main/java/es/situm/plugin/SitumPlugin.java +109 -0
  48. package/src/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  49. package/src/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
  50. package/src/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  51. package/src/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
  52. package/src/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  53. package/src/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  54. package/src/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  55. package/src/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  56. package/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  57. package/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  58. package/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  59. package/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  60. package/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  61. package/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  62. package/src/android/app/src/main/res/values/colors.xml +6 -0
  63. package/src/android/app/src/main/res/values/strings.xml +3 -0
  64. package/src/android/app/src/main/res/values/styles.xml +11 -0
  65. package/src/android/app/src/test/java/es/situm/plugin/PluginHelperTest.java +27 -0
  66. package/src/android/app/src/test/java/es/situm/plugin/SitumMapperTest.java +1485 -0
  67. package/src/android/app/src/test/java/es/situm/plugin/angle/AngleCreator.java +46 -0
  68. package/src/android/app/src/test/java/es/situm/plugin/bounds/BoundsCreator.java +50 -0
  69. package/src/android/app/src/test/java/es/situm/plugin/building/BuildingCreator.java +76 -0
  70. package/src/android/app/src/test/java/es/situm/plugin/cartesianCoordinate/CartesianCoordinateCreator.java +31 -0
  71. package/src/android/app/src/test/java/es/situm/plugin/circle/CircleCreator.java +41 -0
  72. package/src/android/app/src/test/java/es/situm/plugin/coordinate/CoordinateCreator.java +32 -0
  73. package/src/android/app/src/test/java/es/situm/plugin/dimensions/DimensionsCreator.java +31 -0
  74. package/src/android/app/src/test/java/es/situm/plugin/directionsRequest/DirectionsRequestCreator.java +105 -0
  75. package/src/android/app/src/test/java/es/situm/plugin/event/EventCreator.java +108 -0
  76. package/src/android/app/src/test/java/es/situm/plugin/floor/FloorCreator.java +58 -0
  77. package/src/android/app/src/test/java/es/situm/plugin/indication/IndicationCreator.java +40 -0
  78. package/src/android/app/src/test/java/es/situm/plugin/location/LocationCreator.java +197 -0
  79. package/src/android/app/src/test/java/es/situm/plugin/locationRequest/LocationRequestCreator.java +45 -0
  80. package/src/android/app/src/test/java/es/situm/plugin/locationStatus/LocationStatusCreator.java +211 -0
  81. package/src/android/app/src/test/java/es/situm/plugin/navigationProgress/NavigationProgressCreator.java +154 -0
  82. package/src/android/app/src/test/java/es/situm/plugin/poi/PoiCreator.java +126 -0
  83. package/src/android/app/src/test/java/es/situm/plugin/poiCategory/PoiCategoryCreator.java +38 -0
  84. package/src/android/app/src/test/java/es/situm/plugin/point/PointCreator.java +200 -0
  85. package/src/android/app/src/test/java/es/situm/plugin/route/RouteCreator.java +142 -0
  86. package/src/android/app/src/test/java/es/situm/plugin/routeStep/RouteStepCreator.java +173 -0
  87. package/src/android/app/src/test/java/es/situm/plugin/situmConversionArea/SitumConversionAreaCreator.java +35 -0
  88. package/src/android/build.gradle +31 -0
  89. package/src/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  90. package/src/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  91. package/src/android/gradle.properties +16 -0
  92. package/src/android/gradlew +172 -0
  93. package/src/android/gradlew.bat +84 -0
  94. package/src/android/settings.gradle +3 -0
  95. package/src/android/situm.gradle +19 -0
  96. package/src/ios/Classes/Private/CDVDebug.h +25 -0
  97. package/src/ios/Classes/Private/CDVJSON_private.h +31 -0
  98. package/src/ios/Classes/Private/CDVJSON_private.m +99 -0
  99. package/src/ios/Classes/Private/CDVPlugin+Private.h +24 -0
  100. package/src/ios/Classes/Private/CDVPlugins/CDVGestureHandler/CDVGestureHandler.h +26 -0
  101. package/src/ios/Classes/Private/CDVPlugins/CDVGestureHandler/CDVGestureHandler.m +70 -0
  102. package/src/ios/Classes/Private/CDVPlugins/CDVHandleOpenURL/CDVHandleOpenURL.h +27 -0
  103. package/src/ios/Classes/Private/CDVPlugins/CDVHandleOpenURL/CDVHandleOpenURL.m +86 -0
  104. package/src/ios/Classes/Private/CDVPlugins/CDVIntentAndNavigationFilter/CDVIntentAndNavigationFilter.h +34 -0
  105. package/src/ios/Classes/Private/CDVPlugins/CDVIntentAndNavigationFilter/CDVIntentAndNavigationFilter.m +153 -0
  106. package/src/ios/Classes/Private/CDVPlugins/CDVLocalStorage/CDVLocalStorage.h +50 -0
  107. package/src/ios/Classes/Private/CDVPlugins/CDVLocalStorage/CDVLocalStorage.m +487 -0
  108. package/src/ios/Classes/Private/CDVPlugins/CDVLogger/CDVLogger.h +26 -0
  109. package/src/ios/Classes/Private/CDVPlugins/CDVLogger/CDVLogger.m +37 -0
  110. package/src/ios/Classes/Private/CDVPlugins/CDVUIWebViewEngine/CDVUIWebViewDelegate.h +41 -0
  111. package/src/ios/Classes/Private/CDVPlugins/CDVUIWebViewEngine/CDVUIWebViewDelegate.m +399 -0
  112. package/src/ios/Classes/Private/CDVPlugins/CDVUIWebViewEngine/CDVUIWebViewEngine.h +27 -0
  113. package/src/ios/Classes/Private/CDVPlugins/CDVUIWebViewEngine/CDVUIWebViewEngine.m +202 -0
  114. package/src/ios/Classes/Private/CDVPlugins/CDVUIWebViewEngine/CDVUIWebViewNavigationDelegate.h +29 -0
  115. package/src/ios/Classes/Private/CDVPlugins/CDVUIWebViewEngine/CDVUIWebViewNavigationDelegate.m +153 -0
  116. package/src/ios/Classes/Public/CDV.h +32 -0
  117. package/src/ios/Classes/Public/CDVAppDelegate.h +28 -0
  118. package/src/ios/Classes/Public/CDVAppDelegate.m +118 -0
  119. package/src/ios/Classes/Public/CDVAvailability.h +111 -0
  120. package/src/ios/Classes/Public/CDVAvailabilityDeprecated.h +26 -0
  121. package/src/ios/Classes/Public/CDVCommandDelegate.h +51 -0
  122. package/src/ios/Classes/Public/CDVCommandDelegateImpl.h +36 -0
  123. package/src/ios/Classes/Public/CDVCommandDelegateImpl.m +186 -0
  124. package/src/ios/Classes/Public/CDVCommandQueue.h +39 -0
  125. package/src/ios/Classes/Public/CDVCommandQueue.m +194 -0
  126. package/src/ios/Classes/Public/CDVConfigParser.h +30 -0
  127. package/src/ios/Classes/Public/CDVConfigParser.m +81 -0
  128. package/src/ios/Classes/Public/CDVInvokedUrlCommand.h +52 -0
  129. package/src/ios/Classes/Public/CDVInvokedUrlCommand.m +116 -0
  130. package/src/ios/Classes/Public/CDVPlugin+Resources.h +39 -0
  131. package/src/ios/Classes/Public/CDVPlugin+Resources.m +38 -0
  132. package/src/ios/Classes/Public/CDVPlugin.h +85 -0
  133. package/src/ios/Classes/Public/CDVPlugin.m +202 -0
  134. package/src/ios/Classes/Public/CDVPluginResult.h +66 -0
  135. package/src/ios/Classes/Public/CDVPluginResult.m +186 -0
  136. package/src/ios/Classes/Public/CDVScreenOrientationDelegate.h +33 -0
  137. package/src/ios/Classes/Public/CDVTimer.h +27 -0
  138. package/src/ios/Classes/Public/CDVTimer.m +123 -0
  139. package/src/ios/Classes/Public/CDVURLProtocol.h +27 -0
  140. package/src/ios/Classes/Public/CDVURLProtocol.m +113 -0
  141. package/src/ios/Classes/Public/CDVUserAgentUtil.h +27 -0
  142. package/src/ios/Classes/Public/CDVUserAgentUtil.m +124 -0
  143. package/src/ios/Classes/Public/CDVViewController.h +92 -0
  144. package/src/ios/Classes/Public/CDVViewController.m +821 -0
  145. package/src/ios/Classes/Public/CDVWebViewEngineProtocol.h +42 -0
  146. package/src/ios/Classes/Public/CDVWhitelist.h +34 -0
  147. package/src/ios/Classes/Public/CDVWhitelist.m +285 -0
  148. package/src/ios/Classes/Public/NSDictionary+CordovaPreferences.h +35 -0
  149. package/src/ios/Classes/Public/NSDictionary+CordovaPreferences.m +63 -0
  150. package/src/ios/Classes/Public/NSMutableArray+QueueAdditions.h +29 -0
  151. package/src/ios/Classes/Public/NSMutableArray+QueueAdditions.m +58 -0
  152. package/src/ios/Cordova/Cordova.h +51 -0
  153. package/src/ios/Cordova/Info.plist +24 -0
  154. package/src/ios/Podfile +5 -0
  155. package/src/ios/SitumCordovaPlugin.xcodeproj/project.pbxproj +1324 -0
  156. package/src/ios/SitumCordovaPlugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  157. package/src/ios/SitumCordovaPlugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  158. package/src/ios/SitumCordovaPlugin.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  159. package/src/ios/SitumCordovaPlugin.xcodeproj/xcshareddata/xcschemes/CordovaLib.xcscheme +100 -0
  160. package/src/ios/SitumCordovaPlugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  161. package/src/ios/SitumCordovaPlugin_Prefix.pch +22 -0
  162. package/src/ios/VERSION +1 -0
  163. package/src/ios/cordova.js +2432 -0
  164. package/src/ios/situmcordovaplugin/AppDelegate.h +22 -0
  165. package/src/ios/situmcordovaplugin/AppDelegate.m +98 -0
  166. package/src/ios/situmcordovaplugin/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  167. package/src/ios/situmcordovaplugin/Base.lproj/LaunchScreen.storyboard +25 -0
  168. package/src/ios/situmcordovaplugin/Base.lproj/Main.storyboard +24 -0
  169. package/src/ios/situmcordovaplugin/Constants.h +14 -0
  170. package/src/ios/situmcordovaplugin/Constants.m +14 -0
  171. package/src/ios/situmcordovaplugin/Info.plist +45 -0
  172. package/src/ios/situmcordovaplugin/SITUtils.h +7 -0
  173. package/src/ios/situmcordovaplugin/SITUtils.m +13 -0
  174. package/src/ios/situmcordovaplugin/SitumLocationWrapper.h +109 -0
  175. package/src/ios/situmcordovaplugin/SitumLocationWrapper.m +983 -0
  176. package/src/ios/situmcordovaplugin/SitumPlugin.h +41 -0
  177. package/src/ios/situmcordovaplugin/SitumPlugin.m +752 -0
  178. package/src/ios/situmcordovaplugin/ViewController.h +15 -0
  179. package/src/ios/situmcordovaplugin/ViewController.m +29 -0
  180. package/src/ios/situmcordovaplugin/main.m +16 -0
  181. package/src/ios/situmcordovaplugin/situmcordovaplugin.xcdatamodeld/.xccurrentversion +8 -0
  182. package/src/ios/situmcordovaplugin/situmcordovaplugin.xcdatamodeld/situmcordovaplugin.xcdatamodel/contents +4 -0
  183. package/src/ios/situmcordovaplugintests/AngleTests.m +53 -0
  184. package/src/ios/situmcordovaplugintests/BoundTests.m +51 -0
  185. package/src/ios/situmcordovaplugintests/BuildingTests.m +41 -0
  186. package/src/ios/situmcordovaplugintests/CartesianCoordinateTests.m +42 -0
  187. package/src/ios/situmcordovaplugintests/ConversionAreaTests.m +43 -0
  188. package/src/ios/situmcordovaplugintests/CoordinateTests.m +42 -0
  189. package/src/ios/situmcordovaplugintests/DimensionTests.m +43 -0
  190. package/src/ios/situmcordovaplugintests/EventTests.m +42 -0
  191. package/src/ios/situmcordovaplugintests/FloorTests.m +52 -0
  192. package/src/ios/situmcordovaplugintests/Info.plist +38 -0
  193. package/src/ios/situmcordovaplugintests/InputTests/DirectionsRequestTest.m +108 -0
  194. package/src/ios/situmcordovaplugintests/InputTests/InputCartesianCoordinateTests.m +45 -0
  195. package/src/ios/situmcordovaplugintests/InputTests/InputCoordinateTests.m +45 -0
  196. package/src/ios/situmcordovaplugintests/InputTests/InputFloorTests.m +59 -0
  197. package/src/ios/situmcordovaplugintests/InputTests/InputIndicationTests.m +45 -0
  198. package/src/ios/situmcordovaplugintests/InputTests/InputLocationTests.m +163 -0
  199. package/src/ios/situmcordovaplugintests/InputTests/InputPoiCategoryTests.m +46 -0
  200. package/src/ios/situmcordovaplugintests/InputTests/InputPointTests.m +137 -0
  201. package/src/ios/situmcordovaplugintests/InputTests/LocationRequestTest.m +79 -0
  202. package/src/ios/situmcordovaplugintests/LocationStatusTests.m +60 -0
  203. package/src/ios/situmcordovaplugintests/LocationTests.m +114 -0
  204. package/src/ios/situmcordovaplugintests/NavigationProgressTests.m +50 -0
  205. package/src/ios/situmcordovaplugintests/PoiCategoryIconTests.m +43 -0
  206. package/src/ios/situmcordovaplugintests/PoiCategoryTests.m +42 -0
  207. package/src/ios/situmcordovaplugintests/PoiTests.m +83 -0
  208. package/src/ios/situmcordovaplugintests/PointTests.m +107 -0
  209. package/src/ios/situmcordovaplugintests/RouteStepTests.m +78 -0
  210. package/src/ios/situmcordovaplugintests/RouteTests.m +42 -0
  211. package/src/ios/situmcordovaplugintests/SitumCreatorTests.h +91 -0
  212. package/src/ios/situmcordovaplugintests/SitumCreatorTests.m +928 -0
  213. package/src/ios/situmcordovaplugintests/TestingHelper.h +48 -0
  214. package/src/ios/situmcordovaplugintests/TestingHelper.m +342 -0
  215. package/src/ios/situmcordovaplugintests/indicationTests.m +43 -0
  216. package/tests/common-resources/angle/angle1.json +6 -0
  217. package/tests/common-resources/angle/angle2.json +6 -0
  218. package/tests/common-resources/bounds/bounds1.json +18 -0
  219. package/tests/common-resources/bounds/bounds2.json +18 -0
  220. package/tests/common-resources/building/building1.json +64 -0
  221. package/tests/common-resources/cartesianCoordinate/cartesianCoordinate1.json +4 -0
  222. package/tests/common-resources/circle/circle1.json +17 -0
  223. package/tests/common-resources/coordinate/coordinate1.json +4 -0
  224. package/tests/common-resources/dimensions/dimensions1.json +4 -0
  225. package/tests/common-resources/directionsRequest/directionsRequest1.json +166 -0
  226. package/tests/common-resources/directionsRequest/directionsRequest2.json +167 -0
  227. package/tests/common-resources/directionsRequest/directionsRequest3.json +166 -0
  228. package/tests/common-resources/directionsRequest/directionsRequest4.json +166 -0
  229. package/tests/common-resources/directionsRequest/directionsRequest5.json +167 -0
  230. package/tests/common-resources/directionsRequest/directionsRequest6.json +153 -0
  231. package/tests/common-resources/events/event1.json +66 -0
  232. package/tests/common-resources/floor/floor1.json +13 -0
  233. package/tests/common-resources/floor/floor2.json +13 -0
  234. package/tests/common-resources/indication/indication1.json +10 -0
  235. package/tests/common-resources/location/location1.json +48 -0
  236. package/tests/common-resources/location/location10.json +48 -0
  237. package/tests/common-resources/location/location2.json +48 -0
  238. package/tests/common-resources/location/location3.json +48 -0
  239. package/tests/common-resources/location/location4.json +48 -0
  240. package/tests/common-resources/location/location5.json +48 -0
  241. package/tests/common-resources/location/location6.json +48 -0
  242. package/tests/common-resources/location/location7.json +48 -0
  243. package/tests/common-resources/location/location8.json +48 -0
  244. package/tests/common-resources/location/location9.json +48 -0
  245. package/tests/common-resources/locationRequest/locationRequest1.json +6 -0
  246. package/tests/common-resources/locationRequest/locationRequest2.json +32 -0
  247. package/tests/common-resources/locationRequest/locationRequest3.json +33 -0
  248. package/tests/common-resources/locationRequest/locationRequest4.json +31 -0
  249. package/tests/common-resources/locationStatus/locationStatus1.json +4 -0
  250. package/tests/common-resources/locationStatus/locationStatus10.json +4 -0
  251. package/tests/common-resources/locationStatus/locationStatus11.json +4 -0
  252. package/tests/common-resources/locationStatus/locationStatus12.json +4 -0
  253. package/tests/common-resources/locationStatus/locationStatus13.json +4 -0
  254. package/tests/common-resources/locationStatus/locationStatus2.json +4 -0
  255. package/tests/common-resources/locationStatus/locationStatus3.json +4 -0
  256. package/tests/common-resources/locationStatus/locationStatus4.json +4 -0
  257. package/tests/common-resources/locationStatus/locationStatus5.json +4 -0
  258. package/tests/common-resources/locationStatus/locationStatus6.json +4 -0
  259. package/tests/common-resources/locationStatus/locationStatus7.json +4 -0
  260. package/tests/common-resources/locationStatus/locationStatus8.json +4 -0
  261. package/tests/common-resources/locationStatus/locationStatus9.json +4 -0
  262. package/tests/common-resources/navigationProgress/navigationProgress1.json +77 -0
  263. package/tests/common-resources/navigationProgress/navigationProgress2.json +77 -0
  264. package/tests/common-resources/poi/poi1.json +35 -0
  265. package/tests/common-resources/poi/poi2.json +35 -0
  266. package/tests/common-resources/poi/poi3.json +35 -0
  267. package/tests/common-resources/poi/poi4.json +38 -0
  268. package/tests/common-resources/poi/poi5.json +35 -0
  269. package/tests/common-resources/poiCategory/poiCategory1.json +7 -0
  270. package/tests/common-resources/poiCategoryIcon/poiCategoryIcon1.json +1 -0
  271. package/tests/common-resources/poiCategoryIcon/poiCategoryIcon1.png +0 -0
  272. package/tests/common-resources/point/point1.json +14 -0
  273. package/tests/common-resources/point/point2.json +14 -0
  274. package/tests/common-resources/point/point3.json +14 -0
  275. package/tests/common-resources/point/point4.json +14 -0
  276. package/tests/common-resources/point/point5.json +14 -0
  277. package/tests/common-resources/point/point6.json +14 -0
  278. package/tests/common-resources/point/point7.json +14 -0
  279. package/tests/common-resources/point/point8.json +14 -0
  280. package/tests/common-resources/route/route1.json +530 -0
  281. package/tests/common-resources/routeStep/routeStep1.json +35 -0
  282. package/tests/common-resources/routeStep/routeStep2.json +35 -0
  283. package/tests/common-resources/routeStep/routeStep3.json +35 -0
  284. package/tests/common-resources/routeStep/routeStep4.json +35 -0
  285. package/tests/common-resources/routeStep/routeStep5.json +35 -0
  286. package/tests/common-resources/situmConversionArea/situmConversionArea1.json +19 -0
  287. package/tests/js/resources/fetchBuildings.json +176 -0
  288. package/tests/js/resources/fetchEventsFromBuilding.json +201 -0
  289. package/tests/js/resources/fetchFloorsFromBuilding.json +34 -0
  290. package/tests/js/resources/fetchIndoorPOIsFromBuilding.json +574 -0
  291. package/tests/js/resources/fetchMapFromFloor.json +3 -0
  292. package/tests/js/resources/fetchOutdoorPOIsFromBuilding.json +68 -0
  293. package/tests/js/resources/fetchPoiCategories.json +72 -0
  294. package/tests/js/resources/fetchPoiCategoryIconNormal.json +3 -0
  295. package/tests/js/resources/fetchPoiCategoryIconSelected.json +3 -0
  296. package/tests/js/resources/requestDirections.json +1167 -0
  297. package/tests/js/resources/startPositioning/0_starting.json +4 -0
  298. package/tests/js/resources/startPositioning/1_preparingPositioningModel.json +4 -0
  299. package/tests/js/resources/startPositioning/2_startingPositioning.json +4 -0
  300. package/tests/js/resources/startPositioning/3_calculating.json +4 -0
  301. package/tests/js/resources/startPositioning/4_position.json +48 -0
  302. package/tests/js/resources/startPositioning/5_position.json +48 -0
  303. package/tests/js/test.js +416 -0
  304. package/tests/scripts/clean_android_resources.sh +3 -0
  305. package/tests/scripts/clean_ios_resources.sh +3 -0
  306. package/tests/scripts/copy_android_resources.sh +3 -0
  307. package/tests/scripts/copy_ios_resources.sh +3 -0
  308. package/tests/scripts/self-destruct.sh +1 -0
  309. package/www/android/Interfaces.js +742 -0
  310. package/www/android/situm.js +296 -0
  311. package/www/ios/situm.js +99 -0
  312. package/www/map-view-controller.js +223 -0
  313. package/www/map-view.js +88 -0
@@ -0,0 +1,296 @@
1
+ var exec = require('cordova/exec');
2
+
3
+ var PLUGIN_NAME = 'Situm';
4
+ let _internalEventDelegate = undefined;
5
+
6
+ /**
7
+ * @namespace Situm
8
+ */
9
+
10
+ var Situm = {
11
+ /**
12
+ * An internal method.
13
+ * @param {internalEventDelegate} callback.
14
+ */
15
+ internalSetEventDelegate: function (callback) {
16
+ _internalEventDelegate = callback;
17
+ },
18
+ /**
19
+ * Provides your API key to the Situm SDK.
20
+ * @description Provides your API key to the Situm SDK. This key is generated for your application in the Dashboard. Old credentials will be removed.
21
+ * @param {string} email Email that identifies the account. Can't be empty.
22
+ * @param {string} apiKey Key obtained at situm.es. Can't be empty.
23
+ * @param {function} cb Cordova native callback to recive data.
24
+ * @param {function} error Cordova native callback to recive errors.
25
+ * @return {boolean} success True if operation finished successfully, otherwise false
26
+ */
27
+ setApiKey: function (email, apiKey, cb, error) {
28
+ exec(cb, error, PLUGIN_NAME, 'setApiKey', [email, apiKey]);
29
+ },
30
+ setUseRemoteConfig: function (useRemoteConfig, cb, error) {
31
+ exec(cb, error, PLUGIN_NAME, 'setUseRemoteConfig', [useRemoteConfig]);
32
+ },
33
+ /**
34
+ * Provides user's email and password.
35
+ * @description Provides user's email and password. This credentials will be used to obtain a valid user token to authenticate the server request, when necessary. Token obtaining is not necessary done when this method is executed. Old credentials will be removed.
36
+ * @param {string} email User's email. Can't be empty.
37
+ * @param {string} password User's password. Can't be empty.
38
+ * @param {function} cb Cordova native callback to recive data.
39
+ * @param {function} error Cordova native callback to recive errors.
40
+ * @return {boolean} success True if operation finished successfully, otherwise false
41
+ */
42
+ setUserPass: function (email, password, cb, error) {
43
+ exec(cb, error, PLUGIN_NAME, 'setUserPass', [email, password]);
44
+ },
45
+ /**
46
+ * Sets the maximum age of a cached response.
47
+ * @description Sets the maximum age of a cached response. If the cache response's age exceeds maxAge, it will not be used and a network request will be made.
48
+ * @param {number} cacheAge A non-negative integer
49
+ * @param {function} cb Cordova native callback to recive data.
50
+ * @param {function} error Cordova native callback to recive errors.
51
+ * @return {void}
52
+ */
53
+ setCacheMaxAge: function (cacheAge, cb, error) {
54
+ exec(cb, error, PLUGIN_NAME, 'setCacheMaxAge', [cacheAge]);
55
+ },
56
+ /**
57
+ * Set callback and starts listen onLocationChanged event.
58
+ * @param {LocationRequest} request Location Request.
59
+ * @param {function} cb Cordova native callback to recive data.
60
+ * @param {function} error Cordova native callback to recive errors.
61
+ * @return {Location} position Current position of device.
62
+ */
63
+ startPositioning: function (request, cb, error) {
64
+ let internalCallback = (res) => {
65
+ _internalEventDelegate('onLocationUpdate', res);
66
+ cb(res);
67
+ };
68
+ exec(internalCallback, error, PLUGIN_NAME, 'startPositioning', request);;
69
+ },
70
+ /**
71
+ * Stop locationListener on current active listener.
72
+ * @description Stop locationListener on current active listener.
73
+ * @param {function} cb Cordova native callback to recive data.
74
+ * @param {function} error Cordova native callback to recive errors.
75
+ * @return {void}
76
+ */
77
+ stopPositioning: function (cb, error) {
78
+ exec(cb, error, PLUGIN_NAME, 'stopPositioning', []);
79
+ },
80
+ /**
81
+ * Get notified about users entering geofences. Take into account:
82
+ * * This method must be called before the positioning is started.
83
+ * * Positioning geofences (with `trainer_metadata` custom field configured in the dashboard (https://situm.com/docs/special-custom-fields/#activating-the-uncalibrated-indoor-geolocation-mode)) won't be notified.
84
+ * * This callback works only with indoor locations. Any outdoor location will produce a call to onExitGeofences with the last positioned geofences as argument.
85
+ * @description Set the geofence listener to receive updates when you enter or exit one of them.
86
+ * @param {function} cb Cordova native callback to recive data. The data is an array of geofences.
87
+ * @param {function} error Cordova native callback to recive errors.
88
+ * @return {Geofence[]}
89
+ */
90
+ onEnterGeofences: function (cb, error) {
91
+ exec(cb, error, PLUGIN_NAME, 'onEnterGeofences', []);
92
+ },
93
+ /**
94
+ * Get notified about exiting geofences. Take into account the considerations described at onEnterGeofences
95
+ * @description Set the geofence listener to receive updates when you enter or exit one of them.
96
+ * @param {function} cb Cordova native callback to recive data. The data is an array of geofences.
97
+ * @param {function} error Cordova native callback to recive errors.
98
+ * @return {Geofence[]}
99
+ */
100
+ onExitGeofences: function (cb, error) {
101
+ exec(cb, error, PLUGIN_NAME, 'onExitGeofences', []);
102
+ },
103
+ /**
104
+ * Download all the buildings for the current user.
105
+ * @description Download all the buildings for the current user
106
+ * @param {function} cb Cordova native callback to recive data.
107
+ * @param {function} error Cordova native callback to recive errors.
108
+ * @return {Building[]} buildings Array of buildings.
109
+ */
110
+ fetchBuildings: function (cb, error) {
111
+ exec(cb, error, PLUGIN_NAME, 'fetchBuildings', []);
112
+ },
113
+ /**
114
+ * Download all the floors of a building.
115
+ * @description Download all the floors of a building
116
+ * @param {Building} building The building. Not null.
117
+ * @param {function} cb Cordova native callback to recive data.
118
+ * @param {function} error Cordova native callback to recive errors.
119
+ * @return {Floor[]} floors Array of floors.
120
+ */
121
+ fetchFloorsFromBuilding: function (building, cb, error) {
122
+ exec(cb, error, PLUGIN_NAME, 'fetchFloorsFromBuilding', [building]);
123
+ },
124
+ /**
125
+ * Download the indoor POIs of a building.
126
+ * @description Download the indoor POIs of a building
127
+ * @param {Building} building The building. Not null.
128
+ * @param {function} cb Cordova native callback to recive data.
129
+ * @param {function} error Cordova native callback to recive errors.
130
+ * @return {Poi[]} pois Array of POIs
131
+ */
132
+ fetchIndoorPOIsFromBuilding: function (building, cb, error) {
133
+ exec(cb, error, PLUGIN_NAME, 'fetchIndoorPOIsFromBuilding', [building]);
134
+ },
135
+ /**
136
+ * Download the outdoor POIs of a building.
137
+ * @description Download the outdoor POIs of a building
138
+ * @param {Building} building The building. Not null.
139
+ * @param {function} cb Cordova native callback to recive data.
140
+ * @param {function} error Cordova native callback to recive errors.
141
+ * @return {Poi[]} pois Array of POIs
142
+ */
143
+ fetchOutdoorPOIsFromBuilding: function (building, cb, error) {
144
+ exec(cb, error, PLUGIN_NAME, 'fetchOutdoorPOIsFromBuilding', [building]);
145
+ },
146
+ /**
147
+ * Download the events of a building.
148
+ * @description Download the events of a building
149
+ * @param {Building} building The building. Not null.
150
+ * @param {function} cb Cordova native callback to recive data.
151
+ * @param {function} error Cordova native callback to recive errors.
152
+ * @return {event[]} events The events of a building
153
+ */
154
+ fetchEventsFromBuilding: function (building, cb, error) {
155
+ exec(cb, error, PLUGIN_NAME, 'fetchEventsFromBuilding', [building]);
156
+ },
157
+ /**
158
+ * Get all POI categories, download and cache their icons asynchronously.
159
+ * @description Get all POI categories, download and cache their icons asynchronously. To get some of those icons from local storage @see {@link fetchPoiCategoryIconNormal(PoiCategory)} or {@link fetchPoiCategoryIconSelected(PoiCategory)}
160
+ * @param {function} cb Cordova native callback to recive data.
161
+ * @param {function} error Cordova native callback to recive errors.
162
+ * @return {PoiCategory[]} poiCategories The poiCategories array
163
+ */
164
+ fetchPoiCategories: function (cb, error) {
165
+ exec(cb, error, PLUGIN_NAME, 'fetchPoiCategories');
166
+ },
167
+ /**
168
+ * Download the map image of a floor
169
+ * @description Download the map image of a floor
170
+ * @param {Floor} floor The floor. Not null.
171
+ * @param {function} cb Cordova native callback to recive data.
172
+ * @param {function} error Cordova native callback to recive errors.
173
+ * @return {bitmap} map The map image
174
+ */
175
+ fetchMapFromFloor: function (floor, cb, error) {
176
+ exec(cb, error, PLUGIN_NAME, 'fetchMapFromFloor', [floor]);
177
+ },
178
+ /**
179
+ * Get the normal category icon for a category.
180
+ * @description Get the normal category icon for a category
181
+ * @param {PoiCategory} category The category. Not null.
182
+ * @param {function} cb Cordova native callback to recive data.
183
+ * @param {function} error Cordova native callback to recive errors.
184
+ * @return {bitmap} icon The category icon
185
+ */
186
+ fetchPoiCategoryIconNormal: function (category, cb, error) {
187
+ exec(cb, error, PLUGIN_NAME, 'fetchPoiCategoryIconNormal', [category]);
188
+ },
189
+ /**
190
+ * Get the selected category icon for a category.
191
+ * @description Get the selected category icon for a category
192
+ * @param {PoiCategory} category The category. Not null.
193
+ * @param {function} cb Cordova native callback to recive data.
194
+ * @param {function} error Cordova native callback to recive errors.
195
+ * @return {bitmap} icon The category icon
196
+ */
197
+ fetchPoiCategoryIconSelected: function (category, cb, error) {
198
+ exec(cb, error, PLUGIN_NAME, 'fetchPoiCategoryIconSelected', [category]);
199
+ },
200
+ /**
201
+ * Download all the information of a building.
202
+ * @description Download the information of a building (floors, pois, basic information, ...)
203
+ * @param {Building} building The building identifier. Not null.
204
+ * @param {function} cb Cordova native callback to recive data.
205
+ * @param {function} error Cordova native callback to recive errors.
206
+ * @return {BuildingInfo} buildingInfo structure
207
+ */
208
+ fetchBuildingInfo: function (building, cb, error) {
209
+ exec(cb, error, PLUGIN_NAME, 'fetchBuildingInfo', [building]);
210
+ },
211
+ /**
212
+ * Download all the information of a building.
213
+ * @description Download the indoor POIs of a building
214
+ * @param {Int} buildingIdentifier The building identifier. Not null.
215
+ * @param {function} cb Cordova native callback to recive data.
216
+ * @param {function} error Cordova native callback to recive errors.
217
+ * @return {Building[]} pois Array of POIs
218
+ */
219
+ fetchGeofencesFromBuilding: function (building, cb, error) {
220
+ exec(cb, error, PLUGIN_NAME, 'fetchGeofencesFromBuilding', [building]);
221
+ },
222
+ /**
223
+ * Invalidate all the resources in the cache.
224
+ * @description Invalidate all the resources in the cache
225
+ * @param {function} cb Cordova native callback to recive data.
226
+ * @param {function} error Cordova native callback to recive errors.
227
+ * @return {void}
228
+ */
229
+ invalidateCache: function (cb, error) {
230
+ exec(cb, error, PLUGIN_NAME, 'invalidateCache');
231
+ },
232
+ /**
233
+ * Calculates a route between two points.
234
+ * @description Calculates a route between two points.
235
+ * @param {DirectionsRequest} directionsRequest Request - non-null search parameters.
236
+ * @param {function} cb Cordova native callback to recive data.
237
+ * @param {function} error Cordova native callback to recive errors.
238
+ * @return {Route} route The route between provided points
239
+ */
240
+ requestDirections: function (directionsRequest, cb, error) {
241
+ exec(cb, error, PLUGIN_NAME, 'requestDirections', directionsRequest);
242
+ },
243
+ /**
244
+ * Set the navigation params, and the listener that receives the updated navigation progress.
245
+ * @description Set the navigation params, and the listener that receives the updated navigation progress. Can only exist one navigation with one listener at a time. If this method was previously invoked, but removeUpdates() wasn't, removeUpdates() is called internally.
246
+ * @param {NavigationRequest} navigationRequest Request non-null search parameters.
247
+ * @param {function} cb Cordova native callback to recive data. See {@link NavigationProgress}
248
+ * @param {function} error Cordova native callback to recive errors.
249
+ * @return {void}
250
+ */
251
+ requestNavigationUpdates: function (navigationRequest, cb, error) {
252
+ exec(cb, error, PLUGIN_NAME, 'requestNavigationUpdates', navigationRequest);
253
+ },
254
+ /**
255
+ * Informs NavigationManager object the change of the user's location.
256
+ * @description Informs NavigationManager object the change of the user's location.
257
+ * @param {Location} location New Location of the user. If null, nothing is done.
258
+ * @param {function} cb Cordova native callback to recive data.
259
+ * @param {function} error Cordova native callback to recive errors.
260
+ * @return {boolean} success True if there is a listener to which notify progress update. False if there isn't, so this method do nothing.
261
+ */
262
+ updateNavigationWithLocation: function (location, cb, error) {
263
+ exec(cb, error, PLUGIN_NAME, 'updateNavigationWithLocation', [location]);
264
+ },
265
+ /**
266
+ * Removes all location updates.
267
+ * @description Removes all location updates. This removes the internal state of the manager, including the listener provided in requestNavigationUpdates(NavigationRequest, NavigationListener), so it won't receive more progress updates.
268
+ * @param {function} cb Cordova native callback to recive data.
269
+ * @param {function} error Cordova native callback to recive errors.
270
+ * @return {boolean} success True if a listener was removed. False if there was no listener.
271
+ */
272
+ removeNavigationUpdates: function (cb, error) {
273
+ exec(cb, error, PLUGIN_NAME, 'removeNavigationUpdates', []);
274
+ },
275
+ // Realtime
276
+
277
+ /**
278
+ * Set the realtime params and listener that receives realtime location updates
279
+ * @param {RealTimeRequest} request Request - non-null search parameters.
280
+ * @param {fuction} cb Cordova native callback to recive data.
281
+ * @param {function} error Cordova native callback to recive errors.
282
+ */
283
+ requestRealTimeUpdates: function (request, cb, error) {
284
+ exec(cb, error, PLUGIN_NAME, 'requestRealTimeUpdates', [request]);
285
+ },
286
+
287
+ /**
288
+ * Stops receiving updates in realtime about user location.
289
+ * @param {function} cb Cordova native callback to recive data.
290
+ * @param {function} error Cordova native callback to recive errors.
291
+ */
292
+ removeRealTimeUpdates: function(cb, error) {
293
+ exec(cb, error, PLUGIN_NAME, 'removeRealTimeUpdates', []);
294
+ }
295
+ };
296
+ module.exports = Situm;
@@ -0,0 +1,99 @@
1
+ var exec = require('cordova/exec');
2
+
3
+ var PLUGIN_NAME = 'SitumPlugin';
4
+ let _internalEventDelegate = undefined;
5
+
6
+ var Situm = {
7
+ internalSetEventDelegate: function (callback) {
8
+ _internalEventDelegate = callback;
9
+ },
10
+ setApiKey: function (email, apiKey, cb, error) {
11
+ exec(cb, error, PLUGIN_NAME, 'setApiKey', [email, apiKey]);
12
+ },
13
+ setUseRemoteConfig: function (useRemoteConfig, cb, error) {
14
+ exec(cb, error, PLUGIN_NAME, 'setUseRemoteConfig', [useRemoteConfig]);
15
+ },
16
+ setUserPass: function (email, password, cb, error) {
17
+ exec(cb, error, PLUGIN_NAME, 'setUserPass', [email, password]);
18
+ },
19
+ setCacheMaxAge: function (cacheAge, cb, error) {
20
+ exec(cb, error, PLUGIN_NAME, 'setCacheMaxAge', [cacheAge]);
21
+ },
22
+ startPositioning: function (request, cb, error) {
23
+ let internalCallback = (res) => {
24
+ _internalEventDelegate('onLocationUpdate', res);
25
+ cb(res);
26
+ };
27
+ exec(internalCallback, error, PLUGIN_NAME, 'startPositioning', request);
28
+ },
29
+ stopPositioning: function (cb, error) {
30
+ exec(cb, error, PLUGIN_NAME, 'stopPositioning', []);
31
+ },
32
+ onEnterGeofences: function (cb, error) {
33
+ exec(cb, error, PLUGIN_NAME, 'onEnterGeofences', []);
34
+ },
35
+ onExitGeofences: function (cb, error) {
36
+ exec(cb, error, PLUGIN_NAME, 'onExitGeofences', []);
37
+ },
38
+ fetchBuildings: function (cb, error) {
39
+ exec(cb, error, PLUGIN_NAME, 'fetchBuildings', []);
40
+ },
41
+ fetchFloorsFromBuilding: function (building, cb, error) {
42
+ exec(cb, error, PLUGIN_NAME, 'fetchFloorsFromBuilding', [building]);
43
+ },
44
+ fetchIndoorPOIsFromBuilding: function (building, cb, error) {
45
+ exec(cb, error, PLUGIN_NAME, 'fetchIndoorPOIsFromBuilding', [building]);
46
+ },
47
+ fetchOutdoorPOIsFromBuilding: function (building, cb, error) {
48
+ exec(cb, error, PLUGIN_NAME, 'fetchOutdoorPOIsFromBuilding', [building]);
49
+ },
50
+ fetchEventsFromBuilding: function (building, cb, error) {
51
+ exec(cb, error, PLUGIN_NAME, 'fetchEventsFromBuilding', [building]);
52
+ },
53
+ fetchPoiCategories: function (cb, error) {
54
+ exec(cb, error, PLUGIN_NAME, 'fetchPoiCategories');
55
+ },
56
+ fetchMapFromFloor: function (floor, cb, error) {
57
+ exec(cb, error, PLUGIN_NAME, 'fetchMapFromFloor', [floor]);
58
+ },
59
+ fetchPoiCategoryIconNormal: function (category, cb, error) {
60
+ exec(cb, error, PLUGIN_NAME, 'fetchPoiCategoryIconNormal', [category]);
61
+ },
62
+ fetchPoiCategoryIconSelected: function (category, cb, error) {
63
+ exec(cb, error, PLUGIN_NAME, 'fetchPoiCategoryIconSelected', [category]);
64
+ },
65
+ fetchBuildingInfo: function(building, cb, error) {
66
+ exec(cb, error, PLUGIN_NAME, 'fetchBuildingInfo', [building]);
67
+ },
68
+ fetchGeofencesFromBuilding: function (building, cb, error) {
69
+ exec(cb, error, PLUGIN_NAME, 'fetchGeofencesFromBuilding', [building]);
70
+ },
71
+ invalidateCache: function (cb, error) {
72
+ exec(cb, error, PLUGIN_NAME, 'invalidateCache');
73
+ },
74
+ requestDirections: function (args, cb, error) {
75
+ exec(cb, error, PLUGIN_NAME, 'requestDirections', args);
76
+ },
77
+ requestNavigationUpdates: function (args, cb, error) {
78
+ exec(cb, error, PLUGIN_NAME, 'requestNavigationUpdates', args);
79
+ },
80
+ updateNavigationWithLocation: function (args, cb, error) {
81
+ if (!args) {
82
+ args = []
83
+ } else if (!Array.isArray(args)) {
84
+ args = [args]
85
+ }
86
+
87
+ exec(cb, error, PLUGIN_NAME, 'updateNavigationWithLocation', args);
88
+ },
89
+ removeNavigationUpdates: function (cb, error) {
90
+ exec(cb, error, PLUGIN_NAME, 'removeNavigationUpdates', []);
91
+ },
92
+ requestRealTimeUpdates: function (request, cb, error) {
93
+ exec(cb, error, PLUGIN_NAME, 'requestRealTimeUpdates', [request]);
94
+ },
95
+ removeRealTimeUpdates: function(cb, error) {
96
+ exec(cb, error, PLUGIN_NAME, 'removeRealTimeUpdates', []);
97
+ }
98
+ };
99
+ module.exports = Situm;
@@ -0,0 +1,223 @@
1
+ const Situm = require("@situm/cordova.situm");
2
+
3
+ /**
4
+ * @namespace MapViewControllerImpl
5
+ */
6
+ class MapViewControllerImpl {
7
+ _onLoadCallback = undefined;
8
+ _buildings = undefined;
9
+ _mapView = undefined;
10
+ _isNavigating = false;
11
+
12
+ constructor() {
13
+ Situm.internalSetEventDelegate(this._handleSdkNativeEvents.bind(this));
14
+ }
15
+
16
+ _prepare(mapView) {
17
+ this._mapView = mapView;
18
+ }
19
+
20
+ _setOnLoadCallback(callback) {
21
+ this._onLoadCallback = callback;
22
+ }
23
+
24
+ _sendMessageToViewer(type, payload) {
25
+ let message = {
26
+ type: type,
27
+ payload: payload,
28
+ };
29
+ if (this._mapView && this._mapView.firstElementChild){
30
+ this._mapView.firstElementChild.contentWindow.postMessage(
31
+ message,
32
+ this._mapView._getViewerDomain()
33
+ )
34
+ };
35
+ }
36
+
37
+ // ==================================================
38
+ // SDK MESSAGES:
39
+ // ==================================================
40
+
41
+ _handleSdkNativeEvents(eventName, payload) {
42
+ switch (eventName) {
43
+ case "onLocationUpdate":
44
+ // TODO: iOS is sending messages here not related to Location. Check
45
+ // some fields to avoid assuming that we receive an object of type Location.
46
+ if (payload.buildingIdentifier && payload.position) {
47
+ this._handleOnLocationUpdate(payload);
48
+ } else if (payload.statusName) {
49
+ this._handleOnLocationStatus(payload);
50
+ }
51
+ break;
52
+ }
53
+ }
54
+
55
+ _handleOnLocationUpdate(payload) {
56
+ this._sendMessageToViewer("location.update", payload);
57
+ if (this._isNavigating) {
58
+ Situm.updateNavigationWithLocation(
59
+ [payload],
60
+ () => {
61
+ // Do nothing.
62
+ },
63
+ () => {
64
+ console.error("Error at updateNavigationWithLocation")
65
+ }
66
+ );
67
+ }
68
+ }
69
+
70
+ _handleOnLocationStatus(payload) {
71
+ this._sendMessageToViewer("location.update_status", {status: payload.statusName});
72
+ }
73
+
74
+ // ==================================================
75
+ // MAP-VIEWER MESSAGES:
76
+ // ==================================================
77
+
78
+ _handleMapViewMessages(m) {
79
+ switch (m.type) {
80
+ case "app.map_is_ready":
81
+ if (this._onLoadCallback && typeof this._onLoadCallback === 'function') {
82
+ this._onLoadCallback(this);
83
+ console.debug('Map is ready!');
84
+ }
85
+ break;
86
+ case "cartography.poi_selected":
87
+ console.debug(`poi (${m.payload.identifier}) was selected`);
88
+ break;
89
+ case "directions.requested":
90
+ this._onDirectionsRequested(m.payload);
91
+ break;
92
+ case "navigation.requested":
93
+ this._onNavigationRequested(m.payload);
94
+ break;
95
+ case "navigation.stopped":
96
+ this._onNavigationCancel();
97
+ break;
98
+ default:
99
+ console.debug("Got unmanaged message: ", m);
100
+ break;
101
+ }
102
+ }
103
+
104
+ // Fetch the given building and return it or undefined if not found.
105
+ _ensureBuilding(buildingId, callback) {
106
+ if (this._buildings) {
107
+ let building = this._buildings.find(b => b.buildingIdentifier == buildingId);
108
+ callback(building);
109
+ } else {
110
+ // Fetch buildings and calculate route.
111
+ cordova.plugins.Situm.fetchBuildings(
112
+ (res) => {
113
+ this._buildings = res;
114
+ let building = this._buildings.find(b => b.buildingIdentifier == buildingId);
115
+ callback(building);
116
+ },
117
+ (err) => {
118
+ callback(undefined);
119
+ }
120
+ );
121
+ }
122
+ }
123
+
124
+ // DIRECTIONS:
125
+
126
+ _onDirectionsRequested(payload) {
127
+ let directionsRequest = payload.directionsRequest;
128
+ let mapViewerData = {
129
+ identifier: payload.identifier,
130
+ originIdentifier: payload.originIdentifier,
131
+ destinationIdentifier: payload.destinationIdentifier,
132
+ type: directionsRequest.accessibilityMode,
133
+ }
134
+ this._ensureBuilding(payload.buildingIdentifier, (building) => {
135
+ if (building){
136
+ Situm.requestDirections(
137
+ [building, directionsRequest.from, directionsRequest.to, directionsRequest],
138
+ (route) => {
139
+ this._sendMessageToViewer("directions.update", { ...route, ...mapViewerData });
140
+ },
141
+ (error) => {
142
+ this._sendMessageToViewer("directions.update", { error: -1, identifier: mapViewerData.identifier });
143
+ }
144
+ );
145
+ } else {
146
+ this._sendMessageToViewer("directions.update", { error: -1, identifier: payload.identifier });
147
+ }
148
+ });
149
+ }
150
+
151
+ // NAVIGATION
152
+
153
+ _onNavigationRequested(payload) {
154
+ let directionsRequest = payload.directionsRequest;
155
+ let mapViewerData = {
156
+ identifier: payload.identifier,
157
+ originIdentifier: payload.originIdentifier,
158
+ destinationIdentifier: payload.destinationIdentifier,
159
+ type: directionsRequest.accessibilityMode,
160
+ }
161
+ let navigationRequest = payload.navigationRequest;
162
+ this._ensureBuilding(payload.buildingIdentifier, (building) => {
163
+ // Request directions again to update the calculated route on the native side.
164
+ Situm.requestDirections(
165
+ [building, directionsRequest.from, directionsRequest.to, directionsRequest],
166
+ (route) => {
167
+ this._isNavigating = true;
168
+ this._sendMessageToViewer("navigation.start", { ...route, ...mapViewerData });
169
+ Situm.requestNavigationUpdates(
170
+ [navigationRequest],
171
+ (progress) => {
172
+ // Navigation is working, handle different progress types:
173
+ if (progress.type == "progress") {
174
+ progress.type = 'PROGRESS'; // The map-viewer waits for an upper case "type".
175
+ this._sendMessageToViewer("navigation.update", progress);
176
+ } else if (progress.type == "destinationReached") {
177
+ this._sendMessageToViewer("navigation.update", {type: "DESTINATION_REACHED"});
178
+ this._isNavigating = false;
179
+ } else if (progress.type == "userOutsideRoute") {
180
+ this._sendMessageToViewer("navigation.update", {type: "OUT_OF_ROUTE"});
181
+ }
182
+ },
183
+ (error) => {
184
+ this._sendMessageToViewer("directions.update", { error: -1, identifier: mapViewerData.identifier });
185
+ this._isNavigating = false;
186
+ });
187
+ },
188
+ (error) => {
189
+ this._sendMessageToViewer("directions.update", { error: -1, identifier: mapViewerData.identifier });
190
+ this._isNavigating = false;
191
+ }
192
+ );
193
+ });
194
+ }
195
+
196
+ _onNavigationCancel() {
197
+ this._isNavigating = false;
198
+ Situm.removeNavigationUpdates(
199
+ () => {
200
+ // Do nothing.
201
+ },
202
+ () => {
203
+ console.error("Error removing navigation updates.");
204
+ }
205
+ );
206
+ }
207
+
208
+ // ==================================================
209
+ // ACTIONS
210
+ // ==================================================
211
+
212
+ /**
213
+ * Select a {@link POI} of a building.
214
+ * @param {number} identifier The unique identifier of the resource.
215
+ * */
216
+ selectPoi(identifier) {
217
+ this._sendMessageToViewer("cartography.select_poi", { identifier: identifier });
218
+ }
219
+
220
+ }
221
+
222
+ let MapViewController = new MapViewControllerImpl();
223
+ module.exports = MapViewController;