@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,31 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <InputGroup @value={{@options.serviceArea.name}} @name="Service Area Name" @helpText="Set a display name for the service area." @required={{true}} />
4
+ <InputGroup @name="Service Area Type" @helpText="Select the type definition for this service area .">
5
+ <Select
6
+ @options={{@options.serviceAreaTypes}}
7
+ @value={{@options.serviceArea.type}}
8
+ @onSelect={{fn (mut @options.serviceArea.type)}}
9
+ @placeholder="Select service area type..."
10
+ class="w-full"
11
+ />
12
+ </InputGroup>
13
+ <InputGroup
14
+ @type="color"
15
+ @value={{@options.serviceArea.stroke_color}}
16
+ @name="Service Area Border Color"
17
+ @helpText="Customize the border color for this service area."
18
+ class="p-0 border-0 m-0 w-8 h-8 bg-transparent rounded-none"
19
+ />
20
+ <InputGroup
21
+ @type="color"
22
+ @value={{@options.serviceArea.color}}
23
+ @name="Service Area Color"
24
+ @helpText="Customize the fill color for this service area."
25
+ class="p-0 border-0 m-0 w-8 h-8 bg-transparent rounded-none"
26
+ />
27
+ <InputGroup @name="Service Area Country" @helpText="Optionally set the country in which this service area is located or based in.">
28
+ <CountrySelect class="w-full form-input" @value={{@options.serviceArea.country}} @onChange={{fn (mut @options.serviceArea.country)}} />
29
+ </InputGroup>
30
+ </div>
31
+ </Modal::Default>
@@ -0,0 +1,15 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="flex px-3 py-2 mb-6 rounded-md shadow-sm bg-blue-200">
4
+ <div>
5
+ <FaIcon @icon="info-circle" class="text-blue-900 mr-4" />
6
+ </div>
7
+ <p class="flex-1 text-sm text-blue-900 dark:text-blue-900">
8
+ Welcome to Fleetbase! Before you get started, set a new password to continue below.
9
+ </p>
10
+ </div>
11
+
12
+ <InputGroup @name="New Password" @value={{@options.password}} @type="password" @inputClass="form-input-lg" @helpText="Enter a password at-least 8 characters to continue." />
13
+ <InputGroup @name="Confirm Password" @value={{@options.password_confirmation}} @type="password" @inputClass="form-input-lg" @helpText="Enter a password at-least 8 characters to continue." />
14
+ </div>
15
+ </Modal::Default>
@@ -0,0 +1,21 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container space-y-4">
3
+ <div class="flex">
4
+ <div>
5
+ <div class="flex items-center justify-center p-3 rounded-full bg-red-50 shadow mr-4">
6
+ <FaIcon @icon="trash" class="text-red-900" @size="2x" />
7
+ </div>
8
+ </div>
9
+ <div class="flex-1 dark:text-gray-100">
10
+ <p class="text-base mb-2">You are attempting to uninstall the extension "{{or @options.extensionName}}".
11
+ Are you sure you wish to proceed with this uninstallation?</p>
12
+ <small>All configuration and customized settings will be lost.</small>
13
+ </div>
14
+ </div>
15
+ {{#if @options.isUninstalling}}
16
+ <div>
17
+ <ProgressBar @task="uninstall" @color="red" @progress={{@options.uninstallProgress}} />
18
+ </div>
19
+ {{/if}}
20
+ </div>
21
+ </Modal::Default>
@@ -0,0 +1,56 @@
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-32 mb-6 mr-6">
5
+ <img src={{@options.user.avatar_url}} alt={{@options.user.name}} class="w-32 h-32 rounded-md" />
6
+ <FileUpload @name="photos" @accept="image/*" @onFileAdded={{fn @options.uploadNewPhoto}} as |queue|>
7
+ <a tabindex={{0}} class="flex items-center px-0 mt-2 text-xs no-underline truncate btn btn-sm btn-default">
8
+ {{#if queue.files.length}}
9
+ <Spinner class="mr-1" />
10
+ <span>
11
+ Uploading...
12
+ </span>
13
+ {{else}}
14
+ <FaIcon @icon="image" class="mr-1" />
15
+ <span>
16
+ Upload new
17
+ </span>
18
+ {{/if}}
19
+ </a>
20
+ </FileUpload>
21
+ </div>
22
+ <div class="flex-1">
23
+ <div class="grid grid-cols-2 gap-3 text-xs dark:text-gray-100">
24
+ <div class="input-group">
25
+ <label>
26
+ Name
27
+ </label>
28
+ <Input @value={{@options.user.name}} type="text" class="w-full form-input" placeholder="Name" />
29
+ </div>
30
+
31
+ <div class="input-group">
32
+ <label>
33
+ Email
34
+ </label>
35
+ <Input @value={{@options.user.email}} type="text" class="w-full form-input" placeholder="Email" />
36
+ </div>
37
+
38
+ <div class="input-group">
39
+ <label>
40
+ Phone
41
+ </label>
42
+ <PhoneInput @value={{@options.user.phone}} @onInput={{fn (mut @options.user.phone)}} class="form-input w-full" />
43
+ </div>
44
+
45
+ <div class="input-group">
46
+ <label>
47
+ Country
48
+ </label>
49
+ <CountrySelect class="w-full form-input form-select form-datalist" @value={{@options.user.country}} @onChange={{fn (mut @options.user.country)}} placeholder="Country" />
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ {{yield}}
56
+ </Modal::Default>
@@ -0,0 +1,227 @@
1
+ <Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}}>
2
+ <div class="modal-body-container">
3
+ <div class="flex flex-col md:flex-row">
4
+ <div class="lg:flex-none lg:w-40 mb-4 md:mb-0">
5
+ <div class="w-32">
6
+ <Image src={{@options.vehicle.photo_url}} @fallbackSrc={{@options.vehicle.avatar_url}} alt={{@options.vehicle.name}} height="128" width="128" class="h-32 w-32" />
7
+ </div>
8
+ </div>
9
+ <div class="flex-1 space-y-4">
10
+ <ContentPanel @title="Details" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
11
+ <div class="grid grid-cols-2 gap-2 text-xs md:mb-6 dark:text-gray-100">
12
+ <div class="field-info-container">
13
+ <div class="field-name">Name</div>
14
+ <div class="field-value">{{n-a @options.vehicle.name}}</div>
15
+ </div>
16
+
17
+ <div class="field-info-container">
18
+ <div class="field-name">Vehicle</div>
19
+ <div class="field-value">{{n-a @options.vehicle.internal_id}}</div>
20
+ </div>
21
+
22
+ <div class="field-info-container">
23
+ <div class="field-name">Plate Number</div>
24
+ <div class="field-value">{{n-a @options.vehicle.plate_number}}</div>
25
+ </div>
26
+
27
+ <div class="field-info-container">
28
+ <div class="field-name">VIN Number</div>
29
+ <div class="field-value">{{n-a @options.vehicle.vin}}</div>
30
+ </div>
31
+
32
+ <div class="field-info-container">
33
+ <div class="field-name">Make</div>
34
+ <div class="field-value">{{n-a @options.vehicle.name}}</div>
35
+ </div>
36
+
37
+ <div class="field-info-container">
38
+ <div class="field-name">Model</div>
39
+ <div class="field-value">{{n-a @options.vehicle.model}}</div>
40
+ </div>
41
+
42
+ <div class="field-info-container">
43
+ <div class="field-name">Year</div>
44
+ <div class="field-value">{{n-a @options.vehicle.year}}</div>
45
+ </div>
46
+
47
+ <div class="field-info-container">
48
+ <div class="field-name">Status</div>
49
+ <Badge @status={{@options.vehicle.status}} />
50
+ </div>
51
+ </div>
52
+
53
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2 mb-2 mt-2">
54
+ <div class="col-span-2">
55
+ <div class="field-info-container">
56
+ <div class="field-name">Driver Assigned</div>
57
+ <div class="field-value">
58
+ {{#if @options.vehicle.driver}}
59
+ <DriverCard class="dark:bg-gray-800 rounded-md px-3 py-2" @driver={{@options.vehicle.driver}} @onClick={{@options.viewDriver}} />
60
+ {{else}}
61
+ <span>No driver assigned</span>
62
+ {{/if}}
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </ContentPanel>
68
+
69
+ <ContentPanel @title="Avatar" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
70
+ <div class="grid grid-cols-1 gap-2 text-xs dark:text-gray-100">
71
+ <div>
72
+ <Image alt={{@options.vehicle.public_id}} src={{@options.vehicle.avatar_url}} class="w-24 h-24" />
73
+ </div>
74
+ </div>
75
+ </ContentPanel>
76
+
77
+ <ContentPanel @title="Model Information" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
78
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
79
+ <div class="field-info-container">
80
+ <div class="field-name">0 to 100 Kph</div>
81
+ <div class="field-value">{{n-a @options.vehicle.model_0_to_100_kph}}</div>
82
+ </div>
83
+
84
+ <div class="field-info-container">
85
+ <div class="field-name">Body</div>
86
+ <div class="field-value">{{n-a @options.vehicle.model_body}}</div>
87
+ </div>
88
+
89
+ <div class="field-info-container">
90
+ <div class="field-name">Doors</div>
91
+ <div class="field-value">{{n-a @options.vehicle.model_doors}}</div>
92
+ </div>
93
+
94
+ <div class="field-info-container">
95
+ <div class="field-name">Drive</div>
96
+ <div class="field-value">{{n-a @options.vehicle.model_drive}}</div>
97
+ </div>
98
+
99
+ <div class="field-info-container">
100
+ <div class="field-name">Length (mm)</div>
101
+ <div class="field-value">{{n-a @options.vehicle.model_length_mm}}</div>
102
+ </div>
103
+
104
+ <div class="field-info-container">
105
+ <div class="field-name">Seats</div>
106
+ <div class="field-value">{{n-a @options.vehicle.model_seats}}</div>
107
+ </div>
108
+
109
+ <div class="field-info-container">
110
+ <div class="field-name">Top Speed (kph)</div>
111
+ <div class="field-value">{{n-a @options.vehicle.model_top_speed_kph}}</div>
112
+ </div>
113
+
114
+ <div class="field-info-container">
115
+ <div class="field-name">Transmission Type</div>
116
+ <div class="field-value">{{n-a @options.vehicle.model_transmission_type}}</div>
117
+ </div>
118
+
119
+ <div class="field-info-container">
120
+ <div class="field-name">Weight (kg)</div>
121
+ <div class="field-value">{{n-a @options.vehicle.model_weight_kg}}</div>
122
+ </div>
123
+
124
+ <div class="field-info-container">
125
+ <div class="field-name">Wheelbase (mm)</div>
126
+ <div class="field-value">{{n-a @options.vehicle.model_wheelbase_mm}}</div>
127
+ </div>
128
+
129
+ <div class="field-info-container">
130
+ <div class="field-name">Width (mm)</div>
131
+ <div class="field-value">{{n-a @options.vehicle.model_width_mm}}</div>
132
+ </div>
133
+ </div>
134
+ </ContentPanel>
135
+
136
+ <ContentPanel @title="Engine Information" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
137
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
138
+ <div class="field-info-container">
139
+ <div class="field-name">Engine Bore (mm)</div>
140
+ <div class="field-value">{{n-a @options.vehicle.model_engine_bore_mm}}</div>
141
+ </div>
142
+
143
+ <div class="field-info-container">
144
+ <div class="field-name">CC</div>
145
+ <div class="field-value">{{n-a @options.vehicle.model_engine_cc}}</div>
146
+ </div>
147
+
148
+ <div class="field-info-container">
149
+ <div class="field-name">Compression</div>
150
+ <div class="field-value">{{n-a @options.vehicle.model_engine_compression}}</div>
151
+ </div>
152
+
153
+ <div class="field-info-container">
154
+ <div class="field-name">Cylinders</div>
155
+ <div class="field-value">{{n-a @options.vehicle.model_engine_cyl}}</div>
156
+ </div>
157
+
158
+ <div class="field-info-container">
159
+ <div class="field-name">Position</div>
160
+ <div class="field-value">{{n-a @options.vehicle.model_engine_position}}</div>
161
+ </div>
162
+
163
+ <div class="field-info-container">
164
+ <div class="field-name">Power (ps)</div>
165
+ <div class="field-value">{{n-a @options.vehicle.model_engine_power_ps}}</div>
166
+ </div>
167
+
168
+ <div class="field-info-container">
169
+ <div class="field-name">Power (rpm)</div>
170
+ <div class="field-value">{{n-a @options.vehicle.model_engine_power_rpm}}</div>
171
+ </div>
172
+
173
+ <div class="field-info-container">
174
+ <div class="field-name">Stroke (mm))</div>
175
+ <div class="field-value">{{n-a @options.vehicle.model_engine_stroke_mm}}</div>
176
+ </div>
177
+
178
+ <div class="field-info-container">
179
+ <div class="field-name">Torque (nm)</div>
180
+ <div class="field-value">{{n-a @options.vehicle.model_engine_torque_nm}}</div>
181
+ </div>
182
+
183
+ <div class="field-info-container">
184
+ <div class="field-name">Torque (rpm)</div>
185
+ <div class="field-value">{{n-a @options.vehicle.model_engine_torque_rpm}}</div>
186
+ </div>
187
+
188
+ <div class="field-info-container">
189
+ <div class="field-name">Valves Per Cylinder</div>
190
+ <div class="field-value">{{n-a @options.vehicle.model_valves_per_cyl}}</div>
191
+ </div>
192
+ </div>
193
+ </ContentPanel>
194
+
195
+ <ContentPanel @title="Fuel Information" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
196
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
197
+ <div class="field-info-container">
198
+ <div class="field-name">Fuel</div>
199
+ <div class="field-value">{{n-a @options.vehicle.model_engine_fuel}}</div>
200
+ </div>
201
+
202
+ <div class="field-info-container">
203
+ <div class="field-name">Fuel Cap (l)</div>
204
+ <div class="field-value">{{n-a @options.vehicle.model_fuel_cap_l}}</div>
205
+ </div>
206
+
207
+ <div class="field-info-container">
208
+ <div class="field-name">Liters Per km City</div>
209
+ <div class="field-value">{{n-a @options.vehicle.model_lkm_city}}</div>
210
+ </div>
211
+
212
+ <div class="field-info-container">
213
+ <div class="field-name">Liters Per km Highway)</div>
214
+ <div class="field-value">{{n-a @options.vehicle.model_lkm_hwy}}</div>
215
+ </div>
216
+
217
+ <div class="field-info-container">
218
+ <div class="field-name">Liters Per km Mixed</div>
219
+ <div class="field-value">{{n-a @options.vehicle.model_lkm_mixed}}</div>
220
+ </div>
221
+ </div>
222
+ </ContentPanel>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ {{yield}}
227
+ </Modal::Default>
@@ -0,0 +1,282 @@
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-32 mb-6 mr-6">
5
+ <Image src={{@options.vehicle.photo_url}} @fallbackSrc={{config "defaultValues.vehicleImage"}} alt={{@options.vehicle.name}} height="128" width="128" class="h-32 w-32 rounded-md" />
6
+ <UploadButton @name="photos" @accept="image/*" @onFileAdded={{fn @options.uploadNewPhoto}} class="w-32" />
7
+ </div>
8
+ <div class="flex-1 space-y-4">
9
+ <ContentPanel @title="Details" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
10
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
11
+ <div class="input-group mb-2">
12
+ <label>
13
+ Internal ID
14
+ </label>
15
+ <Input @value={{@options.vehicle.internal_id}} type="text" class="w-full form-input" placeholder="Internal ID" />
16
+ </div>
17
+
18
+ <div class="input-group mb-2">
19
+ <label>
20
+ Plate Number
21
+ </label>
22
+ <Input @value={{@options.vehicle.plate_number}} type="text" class="w-full form-input" placeholder="Plate Number" />
23
+ </div>
24
+
25
+ <div class="input-group mb-2">
26
+ <label>
27
+ VIN Number
28
+ </label>
29
+ <Input @value={{@options.vehicle.vin}} type="text" class="w-full form-input" placeholder="VIN Number" />
30
+ </div>
31
+
32
+ <div class="input-group mb-2">
33
+ <label>
34
+ Make
35
+ </label>
36
+ <Input @value={{@options.vehicle.make}} type="text" class="w-full form-input" placeholder="Vehicle Make" />
37
+ </div>
38
+
39
+ <div class="input-group mb-2">
40
+ <label>
41
+ Model
42
+ </label>
43
+ <Input @value={{@options.vehicle.model}} type="text" class="w-full form-input" placeholder="Vehicle Model" />
44
+ </div>
45
+
46
+ <div class="input-group mb-2">
47
+ <label>
48
+ Year
49
+ </label>
50
+ <Input @value={{@options.vehicle.year}} type="text" class="w-full form-input" placeholder="Vehicle Year" />
51
+ </div>
52
+
53
+ <div class="input-group mb-2">
54
+ <label>
55
+ Driver Assigned
56
+ </label>
57
+ <ModelSelect @modelName="driver" @selectedModel={{@options.vehicle.driver}} @placeholder="Select Driver" @triggerClass="form-select form-input" @infiniteScroll={{false}} @renderInPlace={{true}} @onChange={{fn (mut @options.vehicle.driver)}} as |model|>
58
+ {{model.name}}
59
+ </ModelSelect>
60
+ </div>
61
+ </div>
62
+ </ContentPanel>
63
+
64
+ <ContentPanel @title="Avatar" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
65
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
66
+ <div class="input-group mb-2">
67
+ <InputLabel @labelText="Select map avatar" @helpText="Select an avatar to be used for rendering on maps when using geolocation tracking features." />
68
+ <FetchSelect class="w-60" @placeholder="Select avatar" @path="vehicles/avatars" @value={{@options.vehicle.avatar_url}} @onSelect={{fn (mut @options.vehicle.avatar_url)}} as |option key|>
69
+ {{titleize (humanize key)}}
70
+ </FetchSelect>
71
+ </div>
72
+ <div>
73
+ <img alt={{@options.vehicle.public_id}} src={{@options.vehicle.avatar_url}} class="w-24 h-24" />
74
+ </div>
75
+ </div>
76
+ </ContentPanel>
77
+
78
+ <ContentPanel @title="Model Information" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
79
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
80
+ <div class="input-group mb-2">
81
+ <label>
82
+ 0 To 100 kph
83
+ </label>
84
+ <Input @value={{@options.vehicle.model_0_to_100_kph}} type="text" class="w-full form-input" placeholder="0 To 100 kph" />
85
+ </div>
86
+
87
+ <div class="input-group mb-2">
88
+ <label>
89
+ Body
90
+ </label>
91
+ <Input @value={{@options.vehicle.model_body}} type="text" class="w-full form-input" placeholder="Vehicle Body Type" />
92
+ </div>
93
+
94
+ <div class="input-group mb-2">
95
+ <label>
96
+ Doors
97
+ </label>
98
+ <Input @value={{@options.vehicle.model_doors}} type="text" class="w-full form-input" placeholder="Number of Doors" />
99
+ </div>
100
+
101
+ <div class="input-group mb-2">
102
+ <label>
103
+ Drive
104
+ </label>
105
+ <Input @value={{@options.vehicle.model_drive}} type="text" class="w-full form-input" placeholder="Vehicle Drive Type" />
106
+ </div>
107
+
108
+ <div class="input-group mb-2">
109
+ <label>
110
+ Length (mm)
111
+ </label>
112
+ <Input @value={{@options.vehicle.model_length_mm}} type="text" class="w-full form-input" placeholder="Vehicle Length (mm)" />
113
+ </div>
114
+
115
+ <div class="input-group mb-2">
116
+ <label>
117
+ Seats
118
+ </label>
119
+ <Input @value={{@options.vehicle.model_seats}} type="text" class="w-full form-input" placeholder="Number of Seats" />
120
+ </div>
121
+
122
+ <div class="input-group mb-2">
123
+ <label>
124
+ Top Speed (kph)
125
+ </label>
126
+ <Input @value={{@options.vehicle.model_top_speed_kph}} type="text" class="w-full form-input" placeholder="Vehicle Top Speed (kph)" />
127
+ </div>
128
+
129
+ <div class="input-group mb-2">
130
+ <label>
131
+ Transmission Type
132
+ </label>
133
+ <Input @value={{@options.vehicle.model_transmission_type}} type="text" class="w-full form-input" placeholder=" Vehicle Transmission Type" />
134
+ </div>
135
+
136
+ <div class="input-group mb-2">
137
+ <label>
138
+ Weight (kg)
139
+ </label>
140
+ <Input @value={{@options.vehicle.model_weight_kg}} type="text" class="w-full form-input" placeholder="Vehicle Weight (kg)" />
141
+ </div>
142
+
143
+ <div class="input-group mb-2">
144
+ <label>
145
+ Wheelbase (mm)
146
+ </label>
147
+ <Input @value={{@options.vehicle.model_wheelbase_mm}} type="text" class="w-full form-input" placeholder="Vehicle Wheelbase Length (mm)" />
148
+ </div>
149
+
150
+ <div class="input-group mb-2">
151
+ <label>
152
+ Width (mm)
153
+ </label>
154
+ <Input @value={{@options.vehicle.model_width_mm}} type="text" class="w-full form-input" placeholder="Vehicle Width (mm)" />
155
+ </div>
156
+ </div>
157
+ </ContentPanel>
158
+
159
+ <ContentPanel @title="Engine Information" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
160
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
161
+ <div class="input-group mb-2">
162
+ <label>
163
+ Engine Bore (mm)
164
+ </label>
165
+ <Input @value={{@options.vehicle.model_engine_bore_mm}} type="text" class="w-full form-input" placeholder="Engine Bore (mm)" />
166
+ </div>
167
+
168
+ <div class="input-group mb-2">
169
+ <label>
170
+ CC
171
+ </label>
172
+ <Input @value={{@options.vehicle.model_engine_cc}} type="text" class="w-full form-input" placeholder="Engine CC" />
173
+ </div>
174
+
175
+ <div class="input-group mb-2">
176
+ <label>
177
+ Compression
178
+ </label>
179
+ <Input @value={{@options.vehicle.model_engine_compression}} type="text" class="w-full form-input" placeholder=" Engine Compression" />
180
+ </div>
181
+
182
+ <div class="input-group mb-2">
183
+ <label>
184
+ Cylinders
185
+ </label>
186
+ <Input @value={{@options.vehicle.model_engine_cyl}} type="text" class="w-full form-input" placeholder="Number of Cylinders" />
187
+ </div>
188
+
189
+ <div class="input-group mb-2">
190
+ <label>
191
+ Position
192
+ </label>
193
+ <Input @value={{@options.vehicle.model_engine_position}} type="text" class="w-full form-input" placeholder="Engine Position" />
194
+ </div>
195
+
196
+ <div class="input-group mb-2">
197
+ <label>
198
+ Power (ps)
199
+ </label>
200
+ <Input @value={{@options.vehicle.model_engine_power_ps}} type="text" class="w-full form-input" placeholder="Engine Power (ps)" />
201
+ </div>
202
+
203
+ <div class="input-group mb-2">
204
+ <label>
205
+ Power (rpm)
206
+ </label>
207
+ <Input @value={{@options.vehicle.model_engine_power_rpm}} type="text" class="w-full form-input" placeholder="Engine Power (rpm)" />
208
+ </div>
209
+
210
+ <div class="input-group mb-2">
211
+ <label>
212
+ Stroke (mm)
213
+ </label>
214
+ <Input @value={{@options.vehicle.model_engine_stroke_mm}} type="text" class="w-full form-input" placeholder="Stroke Length (mm)" />
215
+ </div>
216
+
217
+ <div class="input-group mb-2">
218
+ <label>
219
+ Torque (nm)
220
+ </label>
221
+ <Input @value={{@options.vehicle.model_engine_torque_nm}} type="text" class="w-full form-input" placeholder="Engine Torque (nm)" />
222
+ </div>
223
+
224
+ <div class="input-group mb-2">
225
+ <label>
226
+ Torque (rpm)
227
+ </label>
228
+ <Input @value={{@options.vehicle.model_engine_torque_rpm}} type="text" class="w-full form-input" placeholder="Engine Torque (rpm)" />
229
+ </div>
230
+
231
+ <div class="input-group mb-2">
232
+ <label>
233
+ Valves per Cylinder
234
+ </label>
235
+ <Input @value={{@options.vehicle.model_engine_valves_per_cyl}} type="text" class="w-full form-input" placeholder="Valves per Cylinder" />
236
+ </div>
237
+ </div>
238
+ </ContentPanel>
239
+
240
+ <ContentPanel @title="Fuel Information" @open={{false}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
241
+ <div class="grid grid-cols-1 gap-4 lg:grid-cols-2 lg:gap-2">
242
+ <div class="input-group mb-2">
243
+ <label>
244
+ Fuel
245
+ </label>
246
+ <Input @value={{@options.vehicle.model_engine_fuel}} type="text" class="w-full form-input" placeholder="Fuel Type" />
247
+ </div>
248
+
249
+ <div class="input-group mb-2">
250
+ <label>
251
+ Fuel Cap (L)
252
+ </label>
253
+ <Input @value={{@options.vehicle.model_fuel_cap_l}} type="text" class="w-full form-input" placeholder="Fuel Cap Volume (L)" />
254
+ </div>
255
+
256
+ <div class="input-group mb-2">
257
+ <label>
258
+ Liters Per km City
259
+ </label>
260
+ <Input @value={{@options.vehicle.model_lkm_city}} type="text" class="w-full form-input" placeholder="Liters Per km City" />
261
+ </div>
262
+
263
+ <div class="input-group mb-2">
264
+ <label>
265
+ Liters Per km Highway
266
+ </label>
267
+ <Input @value={{@options.vehicle.model_lkm_hwy}} type="text" class="w-full form-input" placeholder="Liters Per km Highway" />
268
+ </div>
269
+
270
+ <div class="input-group mb-2">
271
+ <label>
272
+ Liters Per km Mixed
273
+ </label>
274
+ <Input @value={{@options.vehicle.model_lkm_mixed}} type="text" class="w-full form-input" placeholder="Liters Per km Mixed" />
275
+ </div>
276
+ </div>
277
+ </ContentPanel>
278
+
279
+ </div>
280
+ </div>
281
+ </div>
282
+ </Modal::Default>