@fleetbase/fleetops-engine 0.0.1

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 (446) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +32 -0
  3. package/addon/components/cell/driver-name.hbs +13 -0
  4. package/addon/components/cell/driver-name.js +30 -0
  5. package/addon/components/custom-field-value.hbs +11 -0
  6. package/addon/components/custom-field-value.js +41 -0
  7. package/addon/components/custom-field.hbs +42 -0
  8. package/addon/components/custom-field.js +46 -0
  9. package/addon/components/display-place.hbs +52 -0
  10. package/addon/components/display-place.js +11 -0
  11. package/addon/components/driver-card-mini.hbs +12 -0
  12. package/addon/components/driver-card-mini.js +25 -0
  13. package/addon/components/driver-card.hbs +27 -0
  14. package/addon/components/driver-card.js +14 -0
  15. package/addon/components/event-timeline/event.hbs +5 -0
  16. package/addon/components/event-timeline.hbs +7 -0
  17. package/addon/components/event-timeline.js +423 -0
  18. package/addon/components/file-icon.js +1 -0
  19. package/addon/components/fleet-driver-listing.hbs +73 -0
  20. package/addon/components/fleet-driver-listing.js +117 -0
  21. package/addon/components/full-calendar/draggable.js +1 -0
  22. package/addon/components/full-calendar.js +1 -0
  23. package/addon/components/full-size.js +1 -0
  24. package/addon/components/global-search.hbs +84 -0
  25. package/addon/components/global-search.js +52 -0
  26. package/addon/components/horizontal-route.hbs +33 -0
  27. package/addon/components/horizontal-route.js +48 -0
  28. package/addon/components/integrated-order-details.hbs +117 -0
  29. package/addon/components/integrated-order-details.js +10 -0
  30. package/addon/components/leaflet-draw-control.js +147 -0
  31. package/addon/components/leaflet-rotated-marker.js +24 -0
  32. package/addon/components/live-map.hbs +63 -0
  33. package/addon/components/live-map.js +856 -0
  34. package/addon/components/map-container/toolbar/zones-panel.hbs +41 -0
  35. package/addon/components/map-container/toolbar/zones-panel.js +106 -0
  36. package/addon/components/map-container/toolbar-container.hbs +1 -0
  37. package/addon/components/map-container/toolbar-container.js +3 -0
  38. package/addon/components/map-container/toolbar.hbs +51 -0
  39. package/addon/components/map-container/toolbar.js +34 -0
  40. package/addon/components/map-container/topbar.hbs +1 -0
  41. package/addon/components/map-container/topbar.js +3 -0
  42. package/addon/components/map-container/view-switch.hbs +1 -0
  43. package/addon/components/map-container/view-switch.js +3 -0
  44. package/addon/components/map-container.hbs +1 -0
  45. package/addon/components/map-container.js +15 -0
  46. package/addon/components/modals/assign-driver.hbs +24 -0
  47. package/addon/components/modals/assign-driver.js +3 -0
  48. package/addon/components/modals/clone-config-form.hbs +6 -0
  49. package/addon/components/modals/contact-details.hbs +44 -0
  50. package/addon/components/modals/contact-form.hbs +56 -0
  51. package/addon/components/modals/driver-assign-order.hbs +67 -0
  52. package/addon/components/modals/driver-assign-vehicle.hbs +20 -0
  53. package/addon/components/modals/driver-assign-vendor.hbs +20 -0
  54. package/addon/components/modals/driver-details.hbs +85 -0
  55. package/addon/components/modals/driver-form.hbs +83 -0
  56. package/addon/components/modals/edit-meta-form.hbs +20 -0
  57. package/addon/components/modals/entity-form.hbs +57 -0
  58. package/addon/components/modals/entity-meta-field-prompt.hbs +6 -0
  59. package/addon/components/modals/fleet-details.hbs +31 -0
  60. package/addon/components/modals/fleet-form.hbs +26 -0
  61. package/addon/components/modals/fuel-report-details.hbs +34 -0
  62. package/addon/components/modals/fuel-report-form.hbs +26 -0
  63. package/addon/components/modals/group-details.hbs +42 -0
  64. package/addon/components/modals/group-form.hbs +54 -0
  65. package/addon/components/modals/install-prompt.hbs +21 -0
  66. package/addon/components/modals/map-field-form.hbs +9 -0
  67. package/addon/components/modals/map-field-group-form.hbs +6 -0
  68. package/addon/components/modals/map-layer-form.hbs +29 -0
  69. package/addon/components/modals/meta-field-form.hbs +8 -0
  70. package/addon/components/modals/meta-field-group-form.hbs +5 -0
  71. package/addon/components/modals/new-order-config.hbs +11 -0
  72. package/addon/components/modals/option-prompt.hbs +17 -0
  73. package/addon/components/modals/order-assign-driver.hbs +25 -0
  74. package/addon/components/modals/order-config-new-status.hbs +5 -0
  75. package/addon/components/modals/order-event.hbs +18 -0
  76. package/addon/components/modals/order-form.hbs +63 -0
  77. package/addon/components/modals/order-import.hbs +84 -0
  78. package/addon/components/modals/order-label.hbs +7 -0
  79. package/addon/components/modals/order-meta.hbs +12 -0
  80. package/addon/components/modals/order-new-activity.hbs +62 -0
  81. package/addon/components/modals/order-route-form.hbs +111 -0
  82. package/addon/components/modals/place-assign-vendor.hbs +20 -0
  83. package/addon/components/modals/place-details.hbs +105 -0
  84. package/addon/components/modals/place-form.hbs +30 -0
  85. package/addon/components/modals/point-map.hbs +16 -0
  86. package/addon/components/modals/policy-form.hbs +22 -0
  87. package/addon/components/modals/resend-verification-email.hbs +25 -0
  88. package/addon/components/modals/role-form.hbs +16 -0
  89. package/addon/components/modals/select-payment-method.hbs +12 -0
  90. package/addon/components/modals/service-area-form.hbs +31 -0
  91. package/addon/components/modals/set-password.hbs +15 -0
  92. package/addon/components/modals/uninstall-prompt.hbs +21 -0
  93. package/addon/components/modals/user-form.hbs +56 -0
  94. package/addon/components/modals/vehicle-details.hbs +227 -0
  95. package/addon/components/modals/vehicle-form.hbs +282 -0
  96. package/addon/components/modals/vendor-details.hbs +77 -0
  97. package/addon/components/modals/vendor-form.hbs +168 -0
  98. package/addon/components/modals/view-service-area.hbs +12 -0
  99. package/addon/components/modals/view-zone.hbs +12 -0
  100. package/addon/components/modals/zone-form.hbs +16 -0
  101. package/addon/components/operations-pane/pane.hbs +1 -0
  102. package/addon/components/order/header.hbs +48 -0
  103. package/addon/components/order/header.js +26 -0
  104. package/addon/components/order/place-card.hbs +51 -0
  105. package/addon/components/order/place-card.js +33 -0
  106. package/addon/components/order/schedule-card.hbs +35 -0
  107. package/addon/components/order/schedule-card.js +17 -0
  108. package/addon/components/order/sub-header/item.hbs +16 -0
  109. package/addon/components/order/sub-header.hbs +3 -0
  110. package/addon/components/order-config/activity-flow-editor.hbs +108 -0
  111. package/addon/components/order-config/activity-flow-editor.js +374 -0
  112. package/addon/components/order-config/details-editor.hbs +32 -0
  113. package/addon/components/order-config/details-editor.js +16 -0
  114. package/addon/components/order-config/entities-editor.hbs +84 -0
  115. package/addon/components/order-config/entities-editor.js +123 -0
  116. package/addon/components/order-config/fields-editor.hbs +122 -0
  117. package/addon/components/order-config/fields-editor.js +233 -0
  118. package/addon/components/order-config/selector.hbs +1 -0
  119. package/addon/components/order-config/selector.js +3 -0
  120. package/addon/components/order-config.hbs +66 -0
  121. package/addon/components/order-config.js +296 -0
  122. package/addon/components/order-list-overlay/driver-panel-title.hbs +6 -0
  123. package/addon/components/order-list-overlay/order.hbs +22 -0
  124. package/addon/components/order-list-overlay/order.js +3 -0
  125. package/addon/components/order-list-overlay.hbs +120 -0
  126. package/addon/components/order-list-overlay.js +227 -0
  127. package/addon/components/route-list.hbs +47 -0
  128. package/addon/components/route-list.js +11 -0
  129. package/addon/components/settings-window.hbs +15 -0
  130. package/addon/components/settings-window.js +62 -0
  131. package/addon/components/split-grid.js +1 -0
  132. package/addon/components/widget/fleet-ops-quickstart.hbs +40 -0
  133. package/addon/components/widget/fleet-ops-quickstart.js +58 -0
  134. package/addon/components/widget/issues.hbs +1 -0
  135. package/addon/components/widget/key-metrics.hbs +121 -0
  136. package/addon/components/widget/key-metrics.js +46 -0
  137. package/addon/components/widget/live-order-map.hbs +59 -0
  138. package/addon/components/widget/live-order-map.js +11 -0
  139. package/addon/components/widget/recent-orders.hbs +35 -0
  140. package/addon/components/widget/recent-orders.js +24 -0
  141. package/addon/components/widget/transaction-earnings.hbs +1 -0
  142. package/addon/components/widget/transactions.hbs +36 -0
  143. package/addon/components/widget/transactions.js +29 -0
  144. package/addon/components/widget/weekly-orders.hbs +1 -0
  145. package/addon/components/widget/weekly-orders.js +3 -0
  146. package/addon/controllers/application.js +40 -0
  147. package/addon/controllers/management/contacts/index.js +438 -0
  148. package/addon/controllers/management/drivers/index.js +868 -0
  149. package/addon/controllers/management/fleets/index.js +507 -0
  150. package/addon/controllers/management/fuel-reports/index.js +428 -0
  151. package/addon/controllers/management/issues/index.js +335 -0
  152. package/addon/controllers/management/places/index.js +571 -0
  153. package/addon/controllers/management/vehicles/index.js +616 -0
  154. package/addon/controllers/management/vendors/index.js +626 -0
  155. package/addon/controllers/management.js +5 -0
  156. package/addon/controllers/operations/orders/index/config/types.js +17 -0
  157. package/addon/controllers/operations/orders/index/config.js +13 -0
  158. package/addon/controllers/operations/orders/index/new.js +1213 -0
  159. package/addon/controllers/operations/orders/index/view.js +794 -0
  160. package/addon/controllers/operations/orders/index.js +674 -0
  161. package/addon/controllers/operations/scheduler/index.js +110 -0
  162. package/addon/controllers/operations/service-rates/index/edit.js +59 -0
  163. package/addon/controllers/operations/service-rates/index/new.js +369 -0
  164. package/addon/controllers/operations/service-rates/index.js +275 -0
  165. package/addon/controllers/operations/zones/index.js +470 -0
  166. package/addon/engine.js +19 -0
  167. package/addon/helpers/avatar-url.js +9 -0
  168. package/addon/helpers/extract-coordinates.js +6 -0
  169. package/addon/helpers/feature-group.js +14 -0
  170. package/addon/helpers/flow-raw-status.js +13 -0
  171. package/addon/helpers/format-point.js +13 -0
  172. package/addon/helpers/get-tip-amount.js +19 -0
  173. package/addon/helpers/is-active-route.js +1 -0
  174. package/addon/helpers/is-facilitator-supported-place.js +6 -0
  175. package/addon/helpers/is-not-facilitator-supported-place.js +6 -0
  176. package/addon/helpers/is-waypoint-record.js +6 -0
  177. package/addon/helpers/point-coordinates.js +10 -0
  178. package/addon/helpers/point-to-coordinates.js +28 -0
  179. package/addon/helpers/service-name.js +6 -0
  180. package/addon/helpers/waypoint-label.js +1 -0
  181. package/addon/instance-initializers/register-leaflet-draw-control-layer.js +17 -0
  182. package/addon/instance-initializers/register-leaflet-rotated-marker.js +17 -0
  183. package/addon/modifiers/translate-x.js +5 -0
  184. package/addon/routes/application.js +25 -0
  185. package/addon/routes/comms/chat.js +3 -0
  186. package/addon/routes/comms/intercom.js +3 -0
  187. package/addon/routes/comms.js +3 -0
  188. package/addon/routes/home.js +20 -0
  189. package/addon/routes/management/contacts/index.js +24 -0
  190. package/addon/routes/management/contacts.js +3 -0
  191. package/addon/routes/management/drivers/index.js +33 -0
  192. package/addon/routes/management/drivers.js +3 -0
  193. package/addon/routes/management/fleets/index.js +27 -0
  194. package/addon/routes/management/fleets.js +3 -0
  195. package/addon/routes/management/fuel-reports/index.js +23 -0
  196. package/addon/routes/management/fuel-reports.js +3 -0
  197. package/addon/routes/management/index.js +3 -0
  198. package/addon/routes/management/issues/index.js +24 -0
  199. package/addon/routes/management/issues.js +3 -0
  200. package/addon/routes/management/places/index.js +18 -0
  201. package/addon/routes/management/places.js +3 -0
  202. package/addon/routes/management/vehicles/index.js +35 -0
  203. package/addon/routes/management/vehicles.js +3 -0
  204. package/addon/routes/management/vendors/index.js +34 -0
  205. package/addon/routes/management/vendors.js +3 -0
  206. package/addon/routes/management.js +3 -0
  207. package/addon/routes/operations/dispatch.js +3 -0
  208. package/addon/routes/operations/orders/index/config/types.js +17 -0
  209. package/addon/routes/operations/orders/index/config.js +3 -0
  210. package/addon/routes/operations/orders/index/new.js +16 -0
  211. package/addon/routes/operations/orders/index/view.js +37 -0
  212. package/addon/routes/operations/orders/index.js +35 -0
  213. package/addon/routes/operations/orders.js +4 -0
  214. package/addon/routes/operations/scheduler/index.js +10 -0
  215. package/addon/routes/operations/scheduler.js +3 -0
  216. package/addon/routes/operations/service-rates/index/edit.js +35 -0
  217. package/addon/routes/operations/service-rates/index/new.js +15 -0
  218. package/addon/routes/operations/service-rates/index.js +49 -0
  219. package/addon/routes/operations/service-rates.js +10 -0
  220. package/addon/routes/operations/zones/index.js +25 -0
  221. package/addon/routes/operations/zones.js +7 -0
  222. package/addon/routes/operations.js +3 -0
  223. package/addon/routes.js +55 -0
  224. package/addon/services/map-manager.js +3 -0
  225. package/addon/services/service-areas.js +385 -0
  226. package/addon/templates/application.hbs +27 -0
  227. package/addon/templates/comms/chat.hbs +1 -0
  228. package/addon/templates/comms/intercom.hbs +1 -0
  229. package/addon/templates/comms.hbs +1 -0
  230. package/addon/templates/home.hbs +1 -0
  231. package/addon/templates/management/contacts/index.hbs +23 -0
  232. package/addon/templates/management/contacts.hbs +1 -0
  233. package/addon/templates/management/drivers/index.hbs +35 -0
  234. package/addon/templates/management/drivers.hbs +1 -0
  235. package/addon/templates/management/fleets/index.hbs +22 -0
  236. package/addon/templates/management/fleets.hbs +1 -0
  237. package/addon/templates/management/fuel-reports/index.hbs +21 -0
  238. package/addon/templates/management/fuel-reports.hbs +1 -0
  239. package/addon/templates/management/index.hbs +53 -0
  240. package/addon/templates/management/issues/index.hbs +21 -0
  241. package/addon/templates/management/issues.hbs +1 -0
  242. package/addon/templates/management/places/index.hbs +34 -0
  243. package/addon/templates/management/places.hbs +1 -0
  244. package/addon/templates/management/vehicles/index.hbs +22 -0
  245. package/addon/templates/management/vehicles.hbs +1 -0
  246. package/addon/templates/management/vendors/index.hbs +22 -0
  247. package/addon/templates/management/vendors.hbs +1 -0
  248. package/addon/templates/management.hbs +1 -0
  249. package/addon/templates/operations/dispatch.hbs +1 -0
  250. package/addon/templates/operations/orders/index/config/types.hbs +26 -0
  251. package/addon/templates/operations/orders/index/config.hbs +24 -0
  252. package/addon/templates/operations/orders/index/new.hbs +506 -0
  253. package/addon/templates/operations/orders/index/view.hbs +428 -0
  254. package/addon/templates/operations/orders/index.hbs +48 -0
  255. package/addon/templates/operations/orders.hbs +1 -0
  256. package/addon/templates/operations/scheduler/index.hbs +30 -0
  257. package/addon/templates/operations/scheduler.hbs +1 -0
  258. package/addon/templates/operations/service-rates/index/edit.hbs +1 -0
  259. package/addon/templates/operations/service-rates/index/new.hbs +308 -0
  260. package/addon/templates/operations/service-rates/index.hbs +23 -0
  261. package/addon/templates/operations/service-rates.hbs +1 -0
  262. package/addon/templates/operations/zones/index.hbs +72 -0
  263. package/addon/templates/operations/zones.hbs +1 -0
  264. package/addon/templates/operations.hbs +1 -0
  265. package/addon/utils/calculate-percentage.js +1 -0
  266. package/addon/utils/extract-coordinates.js +1 -0
  267. package/addon/utils/format-currency.js +1 -0
  268. package/addon/utils/geojson/geo-json.js +17 -0
  269. package/addon/utils/is-facilitator-supported-place.js +14 -0
  270. package/addon/utils/to-model.js +1 -0
  271. package/app/components/cell/driver-name.js +1 -0
  272. package/app/components/custom-field-value.js +1 -0
  273. package/app/components/custom-field.js +1 -0
  274. package/app/components/display-place.js +1 -0
  275. package/app/components/driver-card-mini.js +1 -0
  276. package/app/components/driver-card.js +1 -0
  277. package/app/components/event-timeline/event.js +1 -0
  278. package/app/components/event-timeline.js +1 -0
  279. package/app/components/file-icon.js +1 -0
  280. package/app/components/fleet-driver-listing.js +1 -0
  281. package/app/components/full-calendar/draggable.js +1 -0
  282. package/app/components/full-calendar.js +1 -0
  283. package/app/components/full-size.js +1 -0
  284. package/app/components/global-search.js +1 -0
  285. package/app/components/horizontal-route.js +1 -0
  286. package/app/components/integrated-order-details.js +1 -0
  287. package/app/components/leaflet-draw-control.js +1 -0
  288. package/app/components/leaflet-rotated-marker.js +1 -0
  289. package/app/components/live-map.js +1 -0
  290. package/app/components/map-container/toolbar/zones-panel.js +1 -0
  291. package/app/components/map-container/toolbar-container.js +1 -0
  292. package/app/components/map-container/toolbar.js +1 -0
  293. package/app/components/map-container/topbar.js +1 -0
  294. package/app/components/map-container/view-switch.js +1 -0
  295. package/app/components/map-container.js +1 -0
  296. package/app/components/modals/assign-driver.js +1 -0
  297. package/app/components/modals/clone-config-form.js +1 -0
  298. package/app/components/modals/contact-details.js +1 -0
  299. package/app/components/modals/contact-form.js +1 -0
  300. package/app/components/modals/driver-assign-order.js +1 -0
  301. package/app/components/modals/driver-assign-vehicle.js +1 -0
  302. package/app/components/modals/driver-assign-vendor.js +1 -0
  303. package/app/components/modals/driver-details.js +1 -0
  304. package/app/components/modals/driver-form.js +1 -0
  305. package/app/components/modals/edit-meta-form.js +1 -0
  306. package/app/components/modals/entity-form.js +1 -0
  307. package/app/components/modals/entity-meta-field-prompt.js +1 -0
  308. package/app/components/modals/fleet-details.js +1 -0
  309. package/app/components/modals/fleet-form.js +1 -0
  310. package/app/components/modals/fuel-report-details.js +1 -0
  311. package/app/components/modals/fuel-report-form.js +1 -0
  312. package/app/components/modals/group-details.js +1 -0
  313. package/app/components/modals/group-form.js +1 -0
  314. package/app/components/modals/install-prompt.js +1 -0
  315. package/app/components/modals/map-field-form.js +1 -0
  316. package/app/components/modals/map-field-group-form.js +1 -0
  317. package/app/components/modals/map-layer-form.js +1 -0
  318. package/app/components/modals/meta-field-form.js +1 -0
  319. package/app/components/modals/meta-field-group-form.js +1 -0
  320. package/app/components/modals/new-order-config.js +1 -0
  321. package/app/components/modals/option-prompt.js +1 -0
  322. package/app/components/modals/order-assign-driver.js +1 -0
  323. package/app/components/modals/order-config-new-status.js +1 -0
  324. package/app/components/modals/order-event.js +1 -0
  325. package/app/components/modals/order-form.js +1 -0
  326. package/app/components/modals/order-import.js +1 -0
  327. package/app/components/modals/order-label.js +1 -0
  328. package/app/components/modals/order-meta.js +1 -0
  329. package/app/components/modals/order-new-activity.js +1 -0
  330. package/app/components/modals/order-route-form.js +1 -0
  331. package/app/components/modals/place-assign-vendor.js +1 -0
  332. package/app/components/modals/place-details.js +1 -0
  333. package/app/components/modals/place-form.js +1 -0
  334. package/app/components/modals/point-map.js +1 -0
  335. package/app/components/modals/policy-form.js +1 -0
  336. package/app/components/modals/resend-verification-email.js +1 -0
  337. package/app/components/modals/role-form.js +1 -0
  338. package/app/components/modals/select-payment-method.js +1 -0
  339. package/app/components/modals/service-area-form.js +1 -0
  340. package/app/components/modals/set-password.js +1 -0
  341. package/app/components/modals/uninstall-prompt.js +1 -0
  342. package/app/components/modals/user-form.js +1 -0
  343. package/app/components/modals/vehicle-details.js +1 -0
  344. package/app/components/modals/vehicle-form.js +1 -0
  345. package/app/components/modals/vendor-details.js +1 -0
  346. package/app/components/modals/vendor-form.js +1 -0
  347. package/app/components/modals/view-service-area.js +1 -0
  348. package/app/components/modals/view-zone.js +1 -0
  349. package/app/components/modals/zone-form.js +1 -0
  350. package/app/components/operations-pane/pane.js +1 -0
  351. package/app/components/order/header.js +1 -0
  352. package/app/components/order/place-card.js +1 -0
  353. package/app/components/order/schedule-card.js +1 -0
  354. package/app/components/order/sub-header/item.js +1 -0
  355. package/app/components/order/sub-header.js +1 -0
  356. package/app/components/order-config/activity-flow-editor.js +1 -0
  357. package/app/components/order-config/details-editor.js +1 -0
  358. package/app/components/order-config/entities-editor.js +1 -0
  359. package/app/components/order-config/fields-editor.js +1 -0
  360. package/app/components/order-config/selector.js +1 -0
  361. package/app/components/order-config.js +1 -0
  362. package/app/components/order-list-overlay/driver-panel-title.js +1 -0
  363. package/app/components/order-list-overlay/order.js +1 -0
  364. package/app/components/order-list-overlay.js +1 -0
  365. package/app/components/route-list.js +1 -0
  366. package/app/components/settings-window.js +1 -0
  367. package/app/components/split-grid.js +1 -0
  368. package/app/components/widget/issues.js +1 -0
  369. package/app/components/widget/key-metrics.js +1 -0
  370. package/app/components/widget/live-order-map.js +1 -0
  371. package/app/components/widget/recent-orders.js +1 -0
  372. package/app/components/widget/recommended-todo.js +1 -0
  373. package/app/components/widget/transaction-earnings.js +1 -0
  374. package/app/components/widget/transactions.js +1 -0
  375. package/app/components/widget/weekly-orders.js +1 -0
  376. package/app/controllers/application.js +1 -0
  377. package/app/controllers/management/contacts/index.js +1 -0
  378. package/app/controllers/management/drivers/index/details.js +1 -0
  379. package/app/controllers/management/drivers/index.js +1 -0
  380. package/app/controllers/management/fleets/index/details.js +1 -0
  381. package/app/controllers/management/fleets/index.js +1 -0
  382. package/app/controllers/management/fuel-reports/index.js +1 -0
  383. package/app/controllers/management/issues/index.js +1 -0
  384. package/app/controllers/management/places/index.js +1 -0
  385. package/app/controllers/management/vehicles/index.js +1 -0
  386. package/app/controllers/management/vendors/index/details/remarks.js +1 -0
  387. package/app/controllers/management/vendors/index/details.js +1 -0
  388. package/app/controllers/management/vendors/index.js +1 -0
  389. package/app/controllers/management.js +1 -0
  390. package/app/controllers/operations/orders/index/config/types.js +1 -0
  391. package/app/controllers/operations/orders/index/config.js +1 -0
  392. package/app/controllers/operations/orders/index/new.js +1 -0
  393. package/app/controllers/operations/orders/index/view.js +1 -0
  394. package/app/controllers/operations/scheduler/index.js +1 -0
  395. package/app/controllers/operations/service-rates/index/edit.js +1 -0
  396. package/app/controllers/operations/service-rates/index/new.js +1 -0
  397. package/app/controllers/operations/service-rates/index.js +1 -0
  398. package/app/controllers/operations/zones/index.js +1 -0
  399. package/app/helpers/avatar-url.js +1 -0
  400. package/app/helpers/extract-coordinates.js +1 -0
  401. package/app/helpers/feature-group.js +1 -0
  402. package/app/helpers/flow-raw-status.js +1 -0
  403. package/app/helpers/format-point.js +1 -0
  404. package/app/helpers/get-tip-amount.js +1 -0
  405. package/app/helpers/is-facilitator-supported-place.js +1 -0
  406. package/app/helpers/is-not-facilitator-supported-place.js +1 -0
  407. package/app/helpers/is-waypoint-record.js +1 -0
  408. package/app/helpers/point-coordinates.js +1 -0
  409. package/app/helpers/point-to-coordinates.js +1 -0
  410. package/app/helpers/service-name.js +1 -0
  411. package/app/helpers/waypoint-label.js +1 -0
  412. package/app/modifiers/translate-x.js +1 -0
  413. package/app/routes/home.js +1 -0
  414. package/app/routes/management/fleets/index/details.js +1 -0
  415. package/app/routes/operations/orders/index/config/types.js +1 -0
  416. package/app/routes/operations/orders/index/config.js +1 -0
  417. package/app/routes/operations/orders/index/new.js +1 -0
  418. package/app/routes/operations/orders/index/view.js +1 -0
  419. package/app/routes/operations/scheduler/index.js +1 -0
  420. package/app/routes/operations/scheduler.js +1 -0
  421. package/app/routes/operations/service-rates/index/edit.js +1 -0
  422. package/app/routes/operations/service-rates/index/new.js +1 -0
  423. package/app/services/map-manager.js +1 -0
  424. package/app/services/service-areas.js +1 -0
  425. package/app/templates/home.js +1 -0
  426. package/app/templates/management/fleets/index/details.js +1 -0
  427. package/app/templates/operations/orders/index/config/types.js +1 -0
  428. package/app/templates/operations/orders/index/config.js +1 -0
  429. package/app/templates/operations/orders/index/new.js +1 -0
  430. package/app/templates/operations/orders/index/view.js +1 -0
  431. package/app/templates/operations/scheduler/index.js +1 -0
  432. package/app/templates/operations/scheduler.js +1 -0
  433. package/app/templates/operations/service-rates/index/edit.js +1 -0
  434. package/app/templates/operations/service-rates/index/new.js +1 -0
  435. package/app/utils/calculate-percentage.js +1 -0
  436. package/app/utils/extract-coordinates.js +1 -0
  437. package/app/utils/format-currency.js +1 -0
  438. package/app/utils/geojson/geo-json.js +1 -0
  439. package/app/utils/is-facilitator-supported-place.js +1 -0
  440. package/app/utils/is-latitude.js +1 -0
  441. package/app/utils/to-model.js +1 -0
  442. package/assets/images/drawing-controls-spritesheet-inverted.png +0 -0
  443. package/config/environment.js +25 -0
  444. package/index.js +73 -0
  445. package/package.json +132 -0
  446. package/pnpm-lock.yaml +12613 -0
@@ -0,0 +1,63 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="grid grid-cols-2 gap-3 text-xs dark:text-gray-100">
4
+ <InputGroup @name="Internal ID" @value={{@options.order.internal_id}} @helpText="Use this field to optionally set a custom identifier or internal identifier for the order." />
5
+
6
+ <div class="input-group">
7
+ <InputLabel @labelText="Schedule" @helpText="The date and time the order will be dispatched. If no driver is assigned at time of dispatch, the dispatch will fail. If the order is Ad-Hoc the order will be pinged to drivers in vicinity of pickup." />
8
+ <DateTimeInput class="form-input" @value={{@options.order.scheduled_at}} @minDate={{format-date (now) "yyyy-MM-d"}} @minTime={{format-date (now) "HH:mm"}} @onUpdate={{@options.scheduleOrder}} @disabled={{@options.order.isIntegratedVendorOrder}} />
9
+ </div>
10
+
11
+ <InputGroup @name="Customer" @helpText="Optionally assign the customer of this order. If it's a new customer, use the 'New Customer' button above.">
12
+ <ModelSelect @modelName="customer" @selectedModel={{@options.order.customer}} @placeholder="Select Customer" @triggerClass="form-select form-input" @infiniteScroll={{false}} @renderInPlace={{true}} @allowClear={{true}} @onChange={{fn @options.setOrderCustomer}} as |model|>
13
+ <div class="flex items-center">
14
+ <div class="w-7">
15
+ <FaIcon @icon={{if model.isVendor "warehouse" "user" }} />
16
+ </div>
17
+ <span class="uppercase">
18
+ {{model.name}}
19
+ </span>
20
+ </div>
21
+ </ModelSelect>
22
+ </InputGroup>
23
+
24
+ <InputGroup @name="Facilitator" @helpText="Optionally assign a facilitator for this order, a facilitator can be a 3rd party subcontractor or service that will facilitate the transport of this order.">
25
+ <ModelSelect @modelName="facilitator" @selectedModel={{@options.order.facilitator}} @placeholder="Select Facilitator" @triggerClass="form-select form-input" @allowClear={{true}} @infiniteScroll={{false}} @renderInPlace={{true}} @disabled={{@options.order.isIntegratedVendorOrder}} @onChange={{@options.setOrderFacilitator}} as |model|>
26
+ <div class="flex items-center">
27
+ <div class="w-7">
28
+ {{#if model.isIntegratedVendor}}
29
+ <Image src={{model.photo_url}} alt={{model.name}} class="w-4 h-4" width="16" height="16" />
30
+ {{else}}
31
+ <FaIcon @icon={{if model.isVendor "warehouse" "user" }} />
32
+ {{/if}}
33
+ </div>
34
+ <span class="uppercase">
35
+ {{model.name}}
36
+ </span>
37
+ </div>
38
+ </ModelSelect>
39
+ </InputGroup>
40
+
41
+ <InputGroup @name="Assign Driver" @helpText="Assign the driver this order will be dispatched to.">
42
+ <ModelSelect @modelName="driver" @selectedModel={{@options.order.driver_assigned}} @query={{this.driversQuery}} @placeholder="Select Driver" @triggerClass="form-select form-input" @infiniteScroll={{false}} @renderInPlace={{true}} @disabled={{@options.order.isIntegratedVendorOrder}} @allowClear={{true}} @onChange={{@options.setDriver}} as |model|>
43
+ <div class="flex items-center">
44
+ <div class="w-7">
45
+ <FaIcon @icon="id-card-alt" />
46
+ </div>
47
+ <div class="flex-1 flex flex-row truncate">
48
+ <span class="uppercase mr-2">{{model.name}}</span>
49
+ <span class="uppercase">{{model.phone}}</span>
50
+ </div>
51
+ {{#if this.order.facilitator}}
52
+ <div class="px-1 ml-2 leading-5 bg-green-400 rounded shadow">
53
+ <span class="text-xs text-green-900">
54
+ {{this.order.facilitator.name}}
55
+ </span>
56
+ </div>
57
+ {{/if}}
58
+ </div>
59
+ </ModelSelect>
60
+ </InputGroup>
61
+ </div>
62
+ </div>
63
+ </Modal::Default>
@@ -0,0 +1,84 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container my-5">
3
+ {{#if @options.isProcessing}}
4
+ <div class="min-h-56 dropzone w-full rounded px-4 py-8 min-h text-gray-900 dark:text-white text-center flex flex-col items-center justify-center border-2 border-dashed border-gray-200 dark:border-indigo-500">
5
+ <div class="flex items-center justify-center py-5">
6
+ <PageLoader class="text-sm dar:text-gray-100" @loadingMessage="Processing import..." />
7
+ </div>
8
+ </div>
9
+ {{else}}
10
+ {{#let (file-queue name="spreadsheets" onFileAdded=this.queueFile accept=(join "," @options.acceptedFileTypes)) as |queue|}}
11
+ <FileDropzone @queue={{queue}} class="min-h-56 dropzone w-full rounded px-4 py-8 min-h text-gray-900 dark:text-white text-center flex flex-col items-center justify-center border-2 border-dashed border-gray-200 dark:border-indigo-500" as |dropzone|>
12
+ {{#if dropzone.active}}
13
+ {{#if dropzone.valid}}
14
+ Drop to upload
15
+ {{else}}
16
+ Invalid
17
+ {{/if}}
18
+ {{else if queue.files.length}}
19
+ <div class="my-2">
20
+ <FaIcon @icon="file-spreadsheet" class="text-indigo-500 mr-2" />
21
+ {{pluralize queue.files.length "spreadsheet"}} ready for upload.
22
+ </div>
23
+ <div class="my-2">({{queue.progress}}%)</div>
24
+ {{else}}
25
+ <h4 class="font-semibold mb-8">
26
+ <FaIcon @icon="file-spreadsheet" class="text-indigo-500 mr-2" /> Upload Spreadsheets
27
+ </h4>
28
+ <div>
29
+ {{#if dropzone.supported}}
30
+ <p class="text-base font-semibold my-5">Drag and drop spreadsheet files onto this dropzone</p>
31
+ {{/if}}
32
+
33
+ <UploadButton @buttonText="or select spreadsheets to upload" @type="magic" @name="spreadsheets" @for="spreadsheets" @accept={{join "," @options.acceptedFileTypes}} @multiple={{true}} @onFileAdded={{fn @options.queueFile}} class="w-72" />
34
+ </div>
35
+ {{/if}}
36
+ </FileDropzone>
37
+ {{/let}}
38
+
39
+ {{#if @options.uploadQueue}}
40
+ <div class="mx-0 my-6">
41
+ <div class="flex items-center justify-between mb-4">
42
+ <span class="leading-6 dark:text-gray-100">Upload Queue</span>
43
+ </div>
44
+
45
+ <div class="table-wrapper table-fluid">
46
+ <table class="table table-fixed">
47
+ <thead>
48
+ <tr>
49
+ {{#each @options.fileQueueColumns as |column|}}
50
+ <th>{{column.name}}</th>
51
+ {{/each}}
52
+ </tr>
53
+ </thead>
54
+ <tbody>
55
+ {{#each @options.uploadQueue as |file|}}
56
+ <tr>
57
+ {{#each @options.fileQueueColumns as |column|}}
58
+ <td>
59
+ {{#if (eq column.key "delete")}}
60
+ <a href="javascript:;" {{on "click" (fn @options.removeFile file)}}>
61
+ <FaIcon @icon="trash" class="text-red-500" />
62
+ </a>
63
+ {{else if (eq column.key "type")}}
64
+ <FileIcon @file={{file}} />
65
+ {{else if (eq column.key "fileSize")}}
66
+ {{format-bytes (get file column.valuePath)}}
67
+ {{else if (eq column.key "uploadDate")}}
68
+ {{format-date (get file column.valuePath) "d MMM yyyy"}}
69
+ {{else}}
70
+ <div class="w-44 truncate">{{get file column.valuePath}}</div>
71
+ {{/if}}
72
+ </td>
73
+ {{/each}}
74
+ </tr>
75
+ {{/each}}
76
+ </tbody>
77
+ </table>
78
+ </div>
79
+ </div>
80
+ {{/if}}
81
+ {{/if}}
82
+
83
+ </div>
84
+ </Modal::Default>
@@ -0,0 +1,7 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <object id="pdf" class="border-0 w-full shadow-sm h-40rem" data={{@options.data}} type="application/pdf" alt={{@options.order.public_id}}>
4
+ <div class="text-center font-semibold dark:text-gray-100 p-6 flex items-center justify-center">Loading Label...</div>
5
+ </object>
6
+ </div>
7
+ </Modal::Default>
@@ -0,0 +1,12 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ {{#each-in @options.order.meta as |key value|}}
3
+ <div class="grid grid-cols-2 border-t border-gray-200 dark:border-gray-700">
4
+ <div class="px-6 py-1.5 border-r border-gray-200 dark:border-gray-700">
5
+ <span class="text-gray-700 dark:text-white text-xs font-mono">{{key}}</span>
6
+ </div>
7
+ <div class="px-6 py-1.5">
8
+ <span class="text-gray-700 dark:text-white text-xs font-mono">{{value}}</span>
9
+ </div>
10
+ </div>
11
+ {{/each-in}}
12
+ </Modal::Default>
@@ -0,0 +1,62 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <p class="mb-5 dark:text-gray-100">Select an activity status to update order tracking activity, or input a custom activity.</p>
4
+
5
+ {{#if @options.order.activityHasEnded}}
6
+ <InfoBlock class="warning mt-2" @icon="exclamation-triangle">
7
+ This order is currently {{@options.order.status}}, additional activity will overwrite this status.
8
+ Fleetbase does not recommend this unless you absolutely know what you're doing.
9
+ </InfoBlock>
10
+ {{/if}}
11
+
12
+ <fieldset class="my-5">
13
+ <legend class="sr-only">
14
+ Activity Options
15
+ </legend>
16
+
17
+ <div class="radio-group-condensed -space-y-px">
18
+ {{#each @options.activityOptions as |activity index|}}
19
+ <div class="radio-group-item shadow-sm {{if (eq @options.selected index) 'is-checked'}}">
20
+ <div class="flex items-center h-5">
21
+ <RadioButton @radioClass="focus:ring-blue-500" @radioId={{concat "activity_" index}} @value={{index}} @groupValue={{@options.selected}} @name="activity" @changed={{fn (mut @options.selected)}} />
22
+ </div>
23
+ <label for={{concat "activity_" index}} class="ml-3 flex flex-col cursor-pointer w-full">
24
+ <span class="block text-sm font-semibold">
25
+ {{activity.status}}
26
+ </span>
27
+ <span class="block text-sm">
28
+ {{activity.details}}
29
+
30
+ {{#if (eq activity.code "dispatched")}}
31
+ <InfoBlock class="warning xs mt-2" @icon="exclamation-triangle" @text="This will trigger the order to dispatch." />
32
+ {{/if}}
33
+ </span>
34
+ </label>
35
+ <div>
36
+ <Badge @status="default" class="uppercase">{{activity.code}}</Badge>
37
+ </div>
38
+ </div>
39
+ {{/each}}
40
+
41
+ <div class="radio-group-item shadow-sm {{if (eq @options.selected 'custom') 'is-checked'}}">
42
+ <div class="flex items-center h-5">
43
+ <RadioButton @radioClass="focus:ring-blue-500" @radioId="activity_custom" @value="custom" @groupValue={{@options.selected}} @name="activity"
44
+ @changed={{fn (mut @options.selected)}} />
45
+ </div>
46
+ <label for="activity_custom" class="ml-3 flex flex-col cursor-pointer w-full pr-5">
47
+ <span class="block text-sm font-medium">
48
+ <Input @type="text" class="form-input form-input-sm w-full rounded-b-none" placeholder="Custom activity status" />
49
+ </span>
50
+ <span class="block text-sm">
51
+ <Input @type="text" class="form-input form-input-sm w-full rounded-t-none" placeholder="Custom activity details" />
52
+ </span>
53
+ </label>
54
+ <div>
55
+ <Input @type="text" class="form-input form-input-sm" placeholder="Custom activity code" />
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </fieldset>
60
+
61
+ </div>
62
+ </Modal::Default>
@@ -0,0 +1,111 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="flex flex-row justify-between mb-6">
4
+ <div class="flex">
5
+ <ShortToggle @isToggled={{@options.order.payload.isMultiDrop}} @onToggle={{@options.toggleMultiDropOrder}} @label="Toggle Multiple Dropoff's" />
6
+ </div>
7
+ <div class="flex flex-1 justify-end space-x-2">
8
+ {{#if @options.order.payload.isMultiDrop}}
9
+ {{!-- <Button @type="magic" @icon="magic" @text="Optimize Route" @size="sm" @onClick={{fn @options.optimizeRoute}} @helpText="Fleetbase will automatically optimize the route." @disabled={{lt @options.order.payload.waypoints.length 3}} @isLoading={{@options.isOptimizingRoute}} /> --}}
10
+ <Button @icon="map-marked-alt" @text="Add Waypoint" @size="sm" @onClick={{@options.addWaypoint}} @helpText="Use the `Add Waypoint` button to add more stops for this order. The Fleetbase routing engine will automatically optimize the route as each stop is added or removed." />
11
+ {{/if}}
12
+ </div>
13
+ </div>
14
+
15
+ {{#if @options.order.payload.isMultiDrop}}
16
+ <DragSortList class="overflow-visible" @items={{@options.order.payload.waypoints}} @dragEndAction={{@options.sortWaypoints}} as |waypoint index|>
17
+ <div id={{concat "waypoint_" (add index 1)}} class="py-1 mb-3">
18
+ <div class="flex items-center justify-between">
19
+ <div class="flex items-center justify-between cursor-move">
20
+ <FaIcon @icon="grip-lines" @prefix="fas" class="mr-3 text-gray-100" />
21
+ <label class="waypoint-label dark:text-gray-100 text-sm">
22
+ {{waypoint-label (add index 1)}}
23
+ </label>
24
+ </div>
25
+
26
+ <div class="flex-1 px-4">
27
+ <ModelSelect @modelName="place" @selectedModel={{waypoint.place}} @placeholder={{concat "Select Waypoint " (add index 1)}} @triggerClass="form-select form-input truncate" @wrapperClass="w-96" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=@options.userLatitude longitude=@options.userLongitude}} @renderInPlace={{true}} @onChange={{fn @options.setWaypointPlace index}} as |model|>
28
+ {{model.address}}
29
+ </ModelSelect>
30
+
31
+ {{#if waypoint.place.hasInvalidCoordinates}}
32
+ <div class="leading-5 text-sm text-red-400 mt-2">
33
+ <FaIcon @icon="exclamation-triangle" class="mr-1" /> Invalid coordinates!
34
+ </div>
35
+ {{/if}}
36
+ </div>
37
+
38
+ <div class="flex items-center">
39
+ {{#if waypoint.place}}
40
+ <Button class="mr-2" @icon="edit" @size="sm" @onClick={{fn @options.editPlace waypoint.place}} />
41
+ {{/if}}
42
+ <Button @type="danger" @icon="trash" @iconPrefix="fas" @size="sm" @onClick={{fn @options.removeWaypoint waypoint}} />
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </DragSortList>
47
+ {{else}}
48
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-3 text-xs dark:text-gray-100">
49
+ <div class="input-group">
50
+ <div class="flex items-center justify-between">
51
+ <label>Pickup</label>
52
+
53
+ {{#if @options.order.payload.pickup}}
54
+ <a href="javascript:;" {{on "click" (fn @options.editPlace @options.order.payload.pickup)}}>Edit Address</a>
55
+ {{/if}}
56
+ </div>
57
+
58
+ <ModelSelect @modelName="place" @selectedModel={{@options.order.payload.pickup}} @placeholder="Select Pickup" @triggerClass="form-select form-input" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=@options.userLatitude longitude=@options.userLongitude}} @renderInPlace={{true}} @onChange={{fn @options.setPayloadPlace "pickup" }} as |model|>
59
+ {{model.address}}
60
+ </ModelSelect>
61
+
62
+ {{#if @options.order.payload.pickup.hasInvalidCoordinates}}
63
+ <div class="leading-5 text-sm text-red-400 mt-2">
64
+ <FaIcon @icon="exclamation-triangle" class="mr-1" /> Invalid coordinates!
65
+ </div>
66
+ {{/if}}
67
+ </div>
68
+
69
+ <div class="input-group">
70
+ <div class="flex items-center justify-between">
71
+ <label>Dropoff</label>
72
+
73
+ {{#if @options.order.payload.dropoff}}
74
+ <a href="javascript:;" {{on "click" (fn @options.editPlace @options.order.payload.dropoff)}}>Edit Address</a>
75
+ {{/if}}
76
+ </div>
77
+
78
+ <ModelSelect @modelName="place" @selectedModel={{@options.order.payload.dropoff}} @placeholder="Select Dropoff" @triggerClass="form-select form-input" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=@options.userLatitude longitude=@options.userLongitude}} @renderInPlace={{true}} @onChange={{fn @options.setPayloadPlace "dropoff" }} as |model|>
79
+ {{model.address}}
80
+ </ModelSelect>
81
+
82
+ {{#if @options.order.payload.dropoff.hasInvalidCoordinates}}
83
+ <div class="leading-5 text-sm text-red-400 mt-2">
84
+ <FaIcon @icon="exclamation-triangle" class="mr-1" /> Invalid coordinates!
85
+ </div>
86
+ {{/if}}
87
+ </div>
88
+
89
+ <div class="input-group">
90
+ <div class="flex items-center justify-between">
91
+ <label>Return</label>
92
+
93
+ {{#if @options.order.payload.return}}
94
+ <a href="javascript:;" {{on "click" (fn @options.editPlace @options.order.payload.return)}}>Edit Address</a>
95
+ {{/if}}
96
+ </div>
97
+
98
+ <ModelSelect @modelName="place" @selectedModel={{@options.order.payload.return}} @placeholder="Select Return" @triggerClass="form-select form-input" @infiniteScroll={{false}} @customSearchEndpoint="places/search" @query={{hash geo=true latitude=@options.userLatitude longitude=@options.userLongitude}} @renderInPlace={{true}} @onChange={{fn @options.setPayloadPlace "return" }} as |model|>
99
+ {{model.address}}
100
+ </ModelSelect>
101
+
102
+ {{#if @options.order.payload.return.hasInvalidCoordinates}}
103
+ <div class="leading-5 text-sm text-red-400 mt-2">
104
+ <FaIcon @icon="exclamation-triangle" class="mr-1" /> Invalid coordinates!
105
+ </div>
106
+ {{/if}}
107
+ </div>
108
+ </div>
109
+ {{/if}}
110
+ </div>
111
+ </Modal::Default>
@@ -0,0 +1,20 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="grid grid-cols-1 gap-2 text-xs dark:text-gray-100">
4
+ <InputGroup @name="Select Vendor" @value={{@options.place.vendor_uuid}}>
5
+ <ModelSelect
6
+ @modelName="vendor"
7
+ @selectedModel={{@options.place.vendor_uuid}}
8
+ @placeholder="Select Vendor"
9
+ @triggerClass="form-select form-input"
10
+ @infiniteScroll={{false}}
11
+ @renderInPlace={{true}}
12
+ @onChange={{fn (mut @options.place.vendor_uuid)}} as |model|
13
+ >
14
+ {{model.name}}
15
+ </ModelSelect>
16
+ </InputGroup>
17
+ </div>
18
+ </div>
19
+ {{yield}}
20
+ </Modal::Default>
@@ -0,0 +1,105 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="flex">
4
+ <div class="w-48 mb-6 mr-6">
5
+ <LeafletMap class="w-full h-48 mb-2 rounded-md shadow-md" @lat={{@options.place.latitude}} @lng={{@options.place.longitude}} @zoom={{12}} as |layers|>
6
+ <layers.tile @url="https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png" />
7
+
8
+ <layers.marker @location={{@options.place.coordinates}} />
9
+ </LeafletMap>
10
+ </div>
11
+ <div class="flex-1">
12
+ <div class="grid grid-cols-1 gap-2 text-xs dark:text-gray-100">
13
+
14
+ <div class="field-info-container">
15
+ <div class="field-name">Name</div>
16
+ <div class="field-value">{{n-a @options.place.name}}</div>
17
+ </div>
18
+
19
+ <div class="field-info-container">
20
+ <div class="field-name">Street</div>
21
+ <div class="field-value">{{n-a @options.place.street1}}</div>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="grid grid-cols-3 gap-2 text-xs dark:text-gray-100">
26
+
27
+ <div class="field-info-container">
28
+ <div class="field-name">Neighborhood</div>
29
+ <div class="field-value">{{n-a @options.place.neighborhood}}</div>
30
+ </div>
31
+
32
+ <div class="field-info-container">
33
+ <div class="field-name">Building</div>
34
+ <div class="field-value">{{n-a @options.place.building}}</div>
35
+ </div>
36
+
37
+ <div class="field-info-container">
38
+ <div class="field-name">Security Access Code</div>
39
+ <div class="field-value">{{n-a @options.place.security_access_code}}</div>
40
+ </div>
41
+ </div>
42
+
43
+ <div class="grid grid-cols-3 gap-2 text-xs dark:text-gray-100">
44
+
45
+ <div class="field-info-container">
46
+ <div class="field-name">City</div>
47
+ <div class="field-value">{{n-a @options.place.city}}</div>
48
+ </div>
49
+
50
+ <div class="field-info-container">
51
+ <div class="field-name">State</div>
52
+ <div class="field-value">{{n-a @options.place.province}}</div>
53
+ </div>
54
+
55
+ <div class="field-info-container">
56
+ <div class="field-name">Country</div>
57
+ <div class="field-value"><CountryName @country={{@options.place.country}} @showFlag={{true}} /></div>
58
+ </div>
59
+ </div>
60
+
61
+ <div class="grid grid-cols-3 gap-2 text-xs dark:text-gray-100">
62
+
63
+ <div class="field-info-container">
64
+ <div class="field-name">Phone</div>
65
+ <div class="field-value">{{n-a @options.place.phone}}</div>
66
+ </div>
67
+
68
+ <div class="field-info-container">
69
+ <div class="field-name">Email</div>
70
+ <div class="field-value">{{n-a @options.place.email}}</div>
71
+ </div>
72
+
73
+ <div class="field-info-container">
74
+ <div class="field-name">Vendor</div>
75
+ <div class="field-value">
76
+ {{#if @options.place.vendor_uuid}}
77
+ <a href="javascript:;" {{on "click" @options.viewVendor}}>
78
+ {{@options.place.vendor_name}}
79
+ </a>
80
+ {{else}}
81
+ {{@options.place.vendor_name}}
82
+ {{/if}}
83
+ </div>
84
+ </div>
85
+ </div>
86
+
87
+ <div class="grid grid-cols-2 gap-2 text-xs dark:text-gray-100">
88
+ <div class="mb-5">
89
+ <label class="flex items-center mb-2 font-bold">
90
+ Coordinates
91
+ <a href="javascript:;" class="block ml-3" {{on "click" @options.viewPlaceOnMap}}>
92
+ <FaIcon @icon="map" class="mr-1" />
93
+ View on map
94
+ </a>
95
+ </label>
96
+ <span class="block truncate">
97
+ {{point-coordinates @options.place.location}}
98
+ </span>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ {{yield}}
105
+ </Modal::Default>
@@ -0,0 +1,30 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="grid grid-cols-3 gap-1 text-xs dark:text-gray-100">
4
+ <InputGroup @name="Name" @autocomplete="nope" @value={{@options.place.name}} @wrapperClass="col-span-3" />
5
+ <InputGroup @name="Street 1" @value={{@options.place.street1}} @wrapperClass="col-span-3">
6
+ <AutocompleteInput @value={{@options.place.street1}} @fetchUrl="places/lookup" @onSelect={{@options.autocomplete}} placeholder="Street 1" class="w-full" as |result|>
7
+ {{result.address}}
8
+ </AutocompleteInput>
9
+ </InputGroup>
10
+ <InputGroup @name="Street 2" @autocomplete="nope" @value={{@options.place.street2}} @wrapperClass="col-span-3" />
11
+ <InputGroup @name="Neighborhood" @autocomplete="nope" @value={{@options.place.neighborhood}} />
12
+ <InputGroup @name="Building" @autocomplete="nope" @value={{@options.place.building}} />
13
+ <InputGroup @name="Security Access Code" @autocomplete="nope" @value={{@options.place.security_access_code}} />
14
+ <InputGroup @name="Postal Code" @autocomplete="nope" @value={{@options.place.postal_code}} />
15
+ <InputGroup @name="City" @autocomplete="nope" @value={{@options.place.city}} />
16
+ <InputGroup @name="State" @autocomplete="nope" @value={{@options.place.province}} />
17
+ <InputGroup @name="Country" @wrapperClass="col-span-2">
18
+ <CountrySelect class="w-full form-input form-select form-datalist" @value={{@options.place.country}} @onChange={{fn (mut @options.place.country)}} placeholder="Country" />
19
+ </InputGroup>
20
+ <InputGroup @name="Coordinates" @wrapperClass="col-span-2">
21
+ <CoordinatesInput @value={{@options.place.location}} @onChange={{@options.updatePlaceCoordinates}} @onGeocode={{@options.autocomplete}} @onInit={{@options.setCoordinatesInput}} />
22
+ </InputGroup>
23
+ <div class="col-span-1"></div>
24
+ <InputGroup @name="Phone">
25
+ <PhoneInput @value={{@options.place.phone}} @autocomplete="nope" @onInput={{fn (mut @options.place.phone)}} class="form-input w-full" />
26
+ </InputGroup>
27
+ <InputGroup @name="Email" @autocomplete="nope" @value={{@options.place.email}} />
28
+ </div>
29
+ </div>
30
+ </Modal::Default>
@@ -0,0 +1,16 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <LeafletMap class="rounded-md shadow-md map-height-base" @lat={{@options.latitude}} @lng={{@options.longitude}} @zoom={{12}} as |layers|>
4
+ <layers.tile @url="https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png" />
5
+
6
+ <layers.marker @icon={{@options.icon}} @location={{point-to-coordinates @options.location}} as |marker|>
7
+ <marker.popup @maxWidth="500" @minWidth="180">
8
+ {{#if @options.popupText}}
9
+ <div>{{@options.popupText}}</div>
10
+ {{/if}}
11
+ <div>{{format-point @options.location}}</div>
12
+ </marker.popup>
13
+ </layers.marker>
14
+ </LeafletMap>
15
+ </div>
16
+ </Modal::Default>
@@ -0,0 +1,22 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}} as |options|>
2
+ <div class="modal-body-container" ...attributes>
3
+ <div class="input-group">
4
+ <label>
5
+ Policy Name
6
+ </label>
7
+ <Input @value={{@options.policy.name}} type="text" class="w-full form-input" placeholder="Enter a name for your policy" />
8
+ </div>
9
+ <div class="input-group">
10
+ <label>
11
+ Policy Description
12
+ </label>
13
+ <Input @value={{@options.policy.description}} type="text" class="w-full form-input" placeholder="Enter a description for your policy" />
14
+ </div>
15
+ <div class="input-group">
16
+ <label>
17
+ Select Permissions
18
+ </label>
19
+ <PermissionPicker @selected={{@options.policy.permissions}} @onChange={{fn (mut @options.policy.permissions)}} />
20
+ </div>
21
+ </div>
22
+ </Modal::Default>
@@ -0,0 +1,25 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="bg-blue-50 rounded shadow-sm border-l-4 border-blue-400 p-4 mb-5">
4
+ <div class="flex">
5
+ <div class="flex-shrink-0">
6
+ <svg class="h-5 w-5 text-blue-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"
7
+ fill="currentColor" aria-hidden="true">
8
+ <path fill-rule="evenodd"
9
+ d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z"
10
+ clip-rule="evenodd" />
11
+ </svg>
12
+ </div>
13
+ <div class="ml-3 flex items-center">
14
+ <span class="font-extrabold text-blue-800">Verify your email address</span>
15
+ </div>
16
+ </div>
17
+ <div class="py-3">
18
+ <p class="text-blue-700">Re-verify your email address and click Send to continue.</p>
19
+ </div>
20
+ </div>
21
+
22
+ <InputGroup @type="email" @name="Verify your email address" @value={{@options.email}}
23
+ @helpText="Have a second look and confirm your email address is correct." @inputClass="input-lg" />
24
+ </div>
25
+ </Modal::Default>
@@ -0,0 +1,16 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}} as |options|>
2
+ <div class="modal-body-container" ...attributes>
3
+ <div class="input-group">
4
+ <label>
5
+ Role Name
6
+ </label>
7
+ <Input @value={{@options.role.name}} type="text" class="w-full form-input" placeholder="Enter a name for this role" />
8
+ </div>
9
+ <div class="input-group">
10
+ <label>
11
+ Select Permissions
12
+ </label>
13
+ <PermissionPicker @selected={{@options.role.permissions}} @onChange={{fn (mut @options.role.permissions)}} />
14
+ </div>
15
+ </div>
16
+ </Modal::Default>
@@ -0,0 +1,12 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ {{#each @options.paymentMethods as |paymentMethod|}}
4
+ <a href="javascript:;" {{on "click" (fn @options.selectPaymentMethod paymentMethod)}} class="flex items-center justify-between px-3 py-2 shadow-sm rounded-md border border-gray-900 {{if (eq @options.selectedPaymentMethod.id paymentMethod.id) 'border-blue-500 shadow-outline-blue'}}">
5
+ <div class="flex items-center dark:text-gray-100">
6
+ <FaIcon @icon="cc-visa" class="mr-1" />
7
+ <span class="mr-2">Card ending in {{paymentMethod.last4}}</span>
8
+ </div>
9
+ </a>
10
+ {{/each}}
11
+ </div>
12
+ </Modal::Default>