@fleetbase/fleetops-engine 0.3.1 → 0.3.3

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 (264) hide show
  1. package/addon/components/admin/visibility-controls.js +1 -0
  2. package/addon/components/contact-form-panel.hbs +82 -0
  3. package/addon/components/contact-form-panel.js +195 -0
  4. package/addon/components/contact-panel/details.hbs +36 -0
  5. package/addon/components/contact-panel/details.js +3 -0
  6. package/addon/components/contact-panel.hbs +52 -0
  7. package/addon/components/contact-panel.js +161 -0
  8. package/addon/components/driver-form-panel.hbs +39 -55
  9. package/addon/components/driver-form-panel.js +41 -0
  10. package/addon/components/driver-panel/details.hbs +2 -2
  11. package/addon/components/driver-panel.hbs +12 -10
  12. package/addon/components/driver-panel.js +13 -0
  13. package/addon/components/fleet-form-panel.hbs +28 -28
  14. package/addon/components/fleet-form-panel.js +150 -1
  15. package/addon/components/fleet-listing-panel.hbs +8 -0
  16. package/addon/components/fleet-listing-panel.js +34 -0
  17. package/addon/components/fleet-panel/details.hbs +30 -0
  18. package/addon/components/fleet-panel/driver-listing.hbs +72 -0
  19. package/addon/components/fleet-panel/driver-listing.js +149 -0
  20. package/addon/components/fleet-panel/vehicle-listing.hbs +72 -0
  21. package/addon/components/fleet-panel/vehicle-listing.js +149 -0
  22. package/addon/components/fleet-panel.hbs +12 -58
  23. package/addon/components/fleet-panel.js +148 -26
  24. package/addon/components/fleet-vehicle-listing.hbs +0 -1
  25. package/addon/components/fuel-report-form-panel.hbs +41 -0
  26. package/addon/components/fuel-report-form-panel.js +122 -0
  27. package/addon/components/fuel-report-panel/details.hbs +38 -0
  28. package/addon/components/fuel-report-panel.hbs +30 -0
  29. package/addon/components/fuel-report-panel.js +161 -0
  30. package/addon/components/issue-form-panel.hbs +85 -0
  31. package/addon/components/issue-form-panel.js +211 -0
  32. package/addon/components/issue-panel/details.hbs +48 -0
  33. package/addon/components/issue-panel.hbs +30 -0
  34. package/addon/components/issue-panel.js +160 -0
  35. package/addon/components/layout/fleet-ops-sidebar.hbs +2 -2
  36. package/addon/components/layout/fleet-ops-sidebar.js +2 -1
  37. package/addon/components/live-map-drawer/driver-listing.hbs +6 -0
  38. package/addon/components/live-map-drawer/driver-listing.js +240 -0
  39. package/addon/components/live-map-drawer/place-listing.hbs +6 -0
  40. package/addon/components/live-map-drawer/place-listing.js +204 -0
  41. package/addon/components/live-map-drawer/vehicle-listing.hbs +6 -0
  42. package/addon/components/live-map-drawer/vehicle-listing.js +216 -0
  43. package/addon/components/live-map-drawer.hbs +17 -0
  44. package/addon/components/live-map-drawer.js +104 -0
  45. package/addon/components/live-map.hbs +5 -1
  46. package/addon/components/live-map.js +109 -15
  47. package/addon/components/map-container/toolbar.hbs +15 -9
  48. package/addon/components/map-container/topbar.hbs +1 -1
  49. package/addon/components/modals/issue-details.hbs +38 -0
  50. package/addon/components/modals/issue-from.hbs +138 -0
  51. package/addon/components/modals/order-event.hbs +1 -1
  52. package/addon/components/order/schedule-card.hbs +4 -4
  53. package/addon/components/order/schedule-card.js +13 -6
  54. package/addon/components/place-form-panel.hbs +50 -0
  55. package/addon/components/place-form-panel.js +134 -0
  56. package/addon/components/place-panel/details.hbs +95 -0
  57. package/addon/components/place-panel.hbs +30 -0
  58. package/addon/components/place-panel.js +161 -0
  59. package/addon/components/vehicle-form-panel.hbs +35 -44
  60. package/addon/components/vehicle-form-panel.js +41 -0
  61. package/addon/components/vehicle-panel/details.hbs +8 -2
  62. package/addon/components/vehicle-panel.hbs +8 -6
  63. package/addon/components/vendor-form-panel/create-form.hbs +114 -0
  64. package/addon/components/vendor-form-panel/create-form.js +158 -0
  65. package/addon/components/vendor-form-panel/edit-form.hbs +98 -0
  66. package/addon/components/vendor-form-panel/edit-form.js +51 -0
  67. package/addon/components/vendor-form-panel.hbs +48 -0
  68. package/addon/components/vendor-form-panel.js +226 -0
  69. package/addon/components/vendor-panel/details.hbs +77 -0
  70. package/addon/components/vendor-panel/details.js +12 -0
  71. package/addon/components/vendor-panel.hbs +58 -0
  72. package/addon/components/vendor-panel.js +161 -0
  73. package/addon/controllers/management/contacts/index/details.js +55 -0
  74. package/addon/controllers/management/contacts/index/edit.js +111 -0
  75. package/addon/controllers/management/contacts/index/new.js +88 -0
  76. package/addon/controllers/management/contacts/index.js +23 -128
  77. package/addon/controllers/management/drivers/index/new.js +2 -2
  78. package/addon/controllers/management/drivers/index.js +18 -32
  79. package/addon/controllers/management/fleets/index/details.js +53 -0
  80. package/addon/controllers/management/fleets/index/edit.js +75 -41
  81. package/addon/controllers/management/fleets/index/new.js +42 -57
  82. package/addon/controllers/management/fleets/index.js +0 -1
  83. package/addon/controllers/management/fuel-reports/index/details.js +63 -0
  84. package/addon/controllers/management/fuel-reports/index/edit.js +111 -0
  85. package/addon/controllers/management/fuel-reports/index/new.js +95 -0
  86. package/addon/controllers/management/fuel-reports/index.js +57 -127
  87. package/addon/controllers/management/issues/index/details.js +54 -0
  88. package/addon/controllers/management/issues/index/edit.js +111 -0
  89. package/addon/controllers/management/issues/index/new.js +94 -0
  90. package/addon/controllers/management/issues/index.js +131 -26
  91. package/addon/controllers/management/places/index/details.js +55 -0
  92. package/addon/controllers/management/places/index/edit.js +111 -0
  93. package/addon/controllers/management/places/index/new.js +88 -0
  94. package/addon/controllers/management/places/index.js +21 -182
  95. package/addon/controllers/management/vehicles/index/new.js +2 -6
  96. package/addon/controllers/management/vendors/index/details.js +55 -0
  97. package/addon/controllers/management/vendors/index/edit.js +111 -0
  98. package/addon/controllers/management/vendors/index/new.js +88 -0
  99. package/addon/controllers/management/vendors/index.js +43 -247
  100. package/addon/controllers/operations/orders/index.js +29 -15
  101. package/addon/controllers/operations/scheduler/index.js +45 -30
  102. package/addon/routes/management/contacts/index/details.js +14 -0
  103. package/addon/routes/management/contacts/index/edit.js +10 -0
  104. package/addon/routes/management/contacts/index/new.js +3 -0
  105. package/addon/routes/management/contacts/index.js +1 -1
  106. package/addon/routes/management/fleets/index/details.js +1 -1
  107. package/addon/routes/management/fleets/index/edit.js +1 -1
  108. package/addon/routes/management/fleets/index.js +1 -1
  109. package/addon/routes/management/fuel-reports/index/details.js +14 -0
  110. package/addon/routes/management/fuel-reports/index/edit.js +10 -0
  111. package/addon/routes/management/fuel-reports/index/new.js +3 -0
  112. package/addon/routes/management/fuel-reports/index.js +3 -1
  113. package/addon/routes/management/issues/index/details.js +14 -0
  114. package/addon/routes/management/issues/index/edit.js +10 -0
  115. package/addon/routes/management/issues/index/new.js +3 -0
  116. package/addon/routes/management/issues/index.js +1 -1
  117. package/addon/routes/management/places/index/details.js +14 -0
  118. package/addon/routes/management/places/index/edit.js +10 -0
  119. package/addon/routes/management/places/index/new.js +3 -0
  120. package/addon/routes/management/places/index.js +6 -1
  121. package/addon/routes/management/vendors/index/details.js +15 -0
  122. package/addon/routes/management/vendors/index/edit.js +11 -0
  123. package/addon/routes/management/vendors/index/new.js +3 -0
  124. package/addon/routes/management/vendors/index.js +1 -0
  125. package/addon/routes/operations/scheduler/index.js +25 -0
  126. package/addon/routes.js +27 -7
  127. package/addon/services/context-panel.js +60 -0
  128. package/addon/styles/fleetops-engine.css +28 -0
  129. package/addon/templates/management/contacts/index/details.hbs +1 -0
  130. package/addon/templates/management/contacts/index/edit.hbs +1 -0
  131. package/addon/templates/management/contacts/index/new.hbs +1 -0
  132. package/addon/templates/management/contacts/index.hbs +22 -3
  133. package/addon/templates/management/drivers/index.hbs +29 -5
  134. package/addon/templates/management/fleets/index/details.hbs +1 -1
  135. package/addon/templates/management/fleets/index/edit.hbs +1 -1
  136. package/addon/templates/management/fleets/index/new.hbs +1 -1
  137. package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
  138. package/addon/templates/management/fuel-reports/index/edit.hbs +1 -0
  139. package/addon/templates/management/fuel-reports/index/new.hbs +1 -0
  140. package/addon/templates/management/fuel-reports/index.hbs +25 -4
  141. package/addon/templates/management/issues/index/details.hbs +1 -0
  142. package/addon/templates/management/issues/index/edit.hbs +1 -0
  143. package/addon/templates/management/issues/index/new.hbs +1 -0
  144. package/addon/templates/management/issues/index.hbs +5 -3
  145. package/addon/templates/management/places/index/details.hbs +1 -0
  146. package/addon/templates/management/places/index/edit.hbs +1 -0
  147. package/addon/templates/management/places/index/new.hbs +1 -0
  148. package/addon/templates/management/vendors/index/details.hbs +1 -0
  149. package/addon/templates/management/vendors/index/edit.hbs +1 -0
  150. package/addon/templates/management/vendors/index/new.hbs +1 -0
  151. package/addon/templates/operations/orders/index.hbs +5 -5
  152. package/addon/templates/operations/scheduler/index.hbs +33 -9
  153. package/addon/utils/create-full-calendar-event-from-order.js +8 -0
  154. package/app/components/contact-form-panel.js +1 -0
  155. package/app/components/contact-panel/details.js +1 -0
  156. package/app/components/contact-panel.js +1 -0
  157. package/app/components/{full-calendar/draggable.js → fleet-listing-panel.js} +1 -1
  158. package/app/components/fleet-panel/details.js +1 -0
  159. package/app/components/fleet-panel/driver-listing.js +1 -0
  160. package/app/components/fleet-panel/vehicle-listing.js +1 -0
  161. package/app/components/fuel-report-form-panel.js +1 -0
  162. package/app/components/{full-calendar.js → fuel-report-panel.js} +1 -1
  163. package/app/components/issue-form-panel.js +1 -0
  164. package/app/components/issue-panel.js +1 -0
  165. package/app/components/live-map-drawer/driver-listing.js +1 -0
  166. package/app/components/live-map-drawer/place-listing.js +1 -0
  167. package/app/components/live-map-drawer/vehicle-listing.js +1 -0
  168. package/app/components/live-map-drawer.js +1 -0
  169. package/app/components/place-form-panel.js +1 -0
  170. package/app/components/place-panel.js +1 -0
  171. package/app/components/vendor-form-panel/create-form.js +1 -0
  172. package/app/components/vendor-form-panel/edit-form.js +1 -0
  173. package/app/components/vendor-form-panel.js +1 -0
  174. package/app/components/vendor-panel/details.js +1 -0
  175. package/app/components/vendor-panel.js +1 -0
  176. package/app/controllers/management/contacts/index/details.js +1 -0
  177. package/app/controllers/management/contacts/index/edit.js +1 -0
  178. package/app/controllers/management/contacts/index/new.js +1 -0
  179. package/app/controllers/management/fuel-reports/index/details.js +1 -0
  180. package/app/controllers/management/fuel-reports/index/edit.js +1 -0
  181. package/app/controllers/management/fuel-reports/index/new.js +1 -0
  182. package/app/controllers/management/issues/index/details.js +1 -0
  183. package/app/controllers/management/issues/index/edit.js +1 -0
  184. package/app/controllers/management/issues/index/new.js +1 -0
  185. package/app/controllers/management/places/index/details.js +1 -0
  186. package/app/controllers/management/places/index/edit.js +1 -0
  187. package/app/controllers/management/places/index/new.js +1 -0
  188. package/app/controllers/management/vendors/index/edit.js +1 -0
  189. package/app/controllers/management/vendors/index/new.js +1 -0
  190. package/app/routes/addon/routes/management/places/index/new.js +1 -0
  191. package/app/routes/management/contacts/index/details.js +1 -0
  192. package/app/routes/management/contacts/index/edit.js +1 -0
  193. package/app/routes/management/contacts/index/new.js +1 -0
  194. package/app/routes/management/fuel-reports/index/details.js +1 -0
  195. package/app/routes/management/fuel-reports/index/edit.js +1 -0
  196. package/app/routes/management/fuel-reports/index/new.js +1 -0
  197. package/app/routes/management/issues/index/details.js +1 -0
  198. package/app/routes/management/issues/index/edit.js +1 -0
  199. package/app/routes/management/issues/index/new.js +1 -0
  200. package/app/routes/management/places/index/details.js +1 -0
  201. package/app/routes/management/places/index/edit.js +1 -0
  202. package/app/routes/management/places/index/new.js +1 -0
  203. package/app/routes/management/vendors/index/details.js +1 -0
  204. package/app/routes/management/vendors/index/edit.js +1 -0
  205. package/app/routes/management/vendors/index/new.js +1 -0
  206. package/app/templates/addon/routes/management/places/index/new.js +1 -0
  207. package/app/templates/management/contacts/index/details.js +1 -0
  208. package/app/templates/management/contacts/index/edit.js +1 -0
  209. package/app/templates/management/contacts/index/new.js +1 -0
  210. package/app/templates/management/fuel-reports/index/details.js +1 -0
  211. package/app/templates/management/fuel-reports/index/edit.js +1 -0
  212. package/app/templates/management/fuel-reports/index/new.js +1 -0
  213. package/app/templates/management/issues/index/details.js +1 -0
  214. package/app/templates/management/issues/index/edit.js +1 -0
  215. package/app/templates/management/issues/index/new.js +1 -0
  216. package/app/templates/management/places/index/details.js +1 -0
  217. package/app/templates/management/places/index/edit.js +1 -0
  218. package/app/templates/management/places/index/new.js +1 -0
  219. package/app/templates/management/vendors/index/details.js +1 -0
  220. package/app/templates/management/vendors/index/edit.js +1 -0
  221. package/app/templates/management/vendors/index/new.js +1 -0
  222. package/app/utils/create-full-calendar-event-from-order.js +1 -0
  223. package/composer.json +1 -1
  224. package/config/environment.js +2 -1
  225. package/extension.json +1 -1
  226. package/package.json +5 -4
  227. package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +42 -0
  228. package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +38 -0
  229. package/server/src/Casts/Point.php +15 -1
  230. package/server/src/Http/Controllers/Internal/v1/DriverController.php +33 -15
  231. package/server/src/Http/Filter/FleetFilter.php +7 -0
  232. package/server/src/Http/Filter/FuelReportFilter.php +58 -0
  233. package/server/src/Http/Filter/IssueFilter.php +69 -0
  234. package/server/src/Http/Filter/VehicleFilter.php +10 -0
  235. package/server/src/Http/Middleware/TransformLocationMiddleware.php +48 -0
  236. package/server/src/Http/Resources/v1/Driver.php +1 -0
  237. package/server/src/Http/Resources/v1/Fleet.php +20 -21
  238. package/server/src/Http/Resources/v1/FuelReport.php +37 -35
  239. package/server/src/Http/Resources/v1/Issue.php +77 -0
  240. package/server/src/Http/Resources/v1/ParentFleet.php +60 -0
  241. package/server/src/Http/Resources/v1/SubFleet.php +60 -0
  242. package/server/src/Http/Resources/v1/Vehicle.php +4 -2
  243. package/server/src/Integrations/Lalamove/Lalamove.php +6 -6
  244. package/server/src/Models/Contact.php +7 -0
  245. package/server/src/Models/Driver.php +1 -1
  246. package/server/src/Models/Fleet.php +35 -4
  247. package/server/src/Models/FuelReport.php +53 -3
  248. package/server/src/Models/Issue.php +106 -7
  249. package/server/src/Models/Order.php +22 -0
  250. package/server/src/Models/Vehicle.php +1 -1
  251. package/server/src/Models/VehicleDevice.php +4 -2
  252. package/server/src/Models/VehicleDeviceEvent.php +8 -4
  253. package/server/src/Notifications/OrderAssigned.php +0 -6
  254. package/server/src/Notifications/OrderCanceled.php +0 -6
  255. package/server/src/Notifications/OrderDispatchFailed.php +0 -6
  256. package/server/src/Notifications/OrderDispatched.php +0 -6
  257. package/server/src/Notifications/OrderPing.php +0 -6
  258. package/server/src/Notifications/OrderSplit.php +0 -6
  259. package/server/src/Observers/FleetObserver.php +19 -0
  260. package/server/src/Providers/FleetOpsServiceProvider.php +1 -0
  261. package/server/src/Providers/NotificationServiceProvider.php +1 -1
  262. package/server/src/routes.php +2 -2
  263. package/addon/components/full-calendar/draggable.js +0 -1
  264. package/addon/components/full-calendar.js +0 -1
@@ -0,0 +1,14 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ManagementIssuesIndexDetailsRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ view: { refreshModel: false },
9
+ };
10
+
11
+ model({ public_id }) {
12
+ return this.store.queryRecord('issue', { public_id, single: true, with: ['driver', 'vehicle', 'assignee', 'reporter'] });
13
+ }
14
+ }
@@ -0,0 +1,10 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ManagementIssuesIndexEditRoute extends Route {
5
+ @service store;
6
+
7
+ model({ public_id }) {
8
+ return this.store.queryRecord('issue', { public_id, single: true, with: ['driver', 'vehicle', 'assignee', 'reporter'] });
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ManagementIssuesIndexNewRoute extends Route {}
@@ -19,6 +19,6 @@ export default class ManagementIssuesIndexRoute extends Route {
19
19
  };
20
20
 
21
21
  model(params) {
22
- return this.store.query('issue', { ...params });
22
+ return this.store.query('issue', { ...params, with: ['driver', 'vehicle', 'assignee', 'reporter'] });
23
23
  }
24
24
  }
@@ -0,0 +1,14 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ManagementPlacesIndexDetailsRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ view: { refreshModel: false },
9
+ };
10
+
11
+ model({ public_id }) {
12
+ return this.store.findRecord('place', public_id);
13
+ }
14
+ }
@@ -0,0 +1,10 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ManagementPlacesIndexEditRoute extends Route {
5
+ @service store;
6
+
7
+ model({ public_id }) {
8
+ return this.store.findRecord('place', public_id);
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ManagementPlacesIndexNewRoute extends Route {}
@@ -4,6 +4,11 @@ import { inject as service } from '@ember/service';
4
4
  export default class ManagementPlacesIndexRoute extends Route {
5
5
  @service store;
6
6
 
7
+ /**
8
+ * Queryable parameters
9
+ *
10
+ * @var {Object}
11
+ */
7
12
  queryParams = {
8
13
  page: { refreshModel: true },
9
14
  limit: { refreshModel: true },
@@ -13,6 +18,6 @@ export default class ManagementPlacesIndexRoute extends Route {
13
18
  };
14
19
 
15
20
  model(params) {
16
- return this.store.query('place', { ...params });
21
+ return this.store.query('place', { params });
17
22
  }
18
23
  }
@@ -0,0 +1,15 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ManagementVendorsIndexDetailsRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ view: { refreshModel: false },
9
+ };
10
+
11
+ model({ public_id }) {
12
+ const isIntegratedVendor = typeof public_id === 'string' && public_id.startsWith('integrated_vendor_');
13
+ return this.store.findRecord(isIntegratedVendor ? 'integrated-vendor' : 'vendor', public_id);
14
+ }
15
+ }
@@ -0,0 +1,11 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ManagementVendorsIndexEditRoute extends Route {
5
+ @service store;
6
+
7
+ model({ public_id }) {
8
+ const isIntegratedVendor = typeof public_id === 'string' && public_id.startsWith('integrated_vendor_');
9
+ return this.store.findRecord(isIntegratedVendor ? 'integrated-vendor' : 'vendor', public_id);
10
+ }
11
+ }
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ManagementVendorsIndexNewRoute extends Route {}
@@ -23,6 +23,7 @@ export default class ManagementVendorsIndexRoute extends Route {
23
23
  }
24
24
 
25
25
  async setupController(controller, model) {
26
+ console.log('setupController action called');
26
27
  super.setupController(...arguments);
27
28
 
28
29
  // load integrated vendors
@@ -1,5 +1,16 @@
1
1
  import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
+ import { isValid as isValidDate } from 'date-fns';
4
+ import { isNone } from '@ember/utils';
5
+ import createFullCalendarEventFromOrder from '../../../utils/create-full-calendar-event-from-order';
6
+
7
+ const getUnscheduledOrder = (order) => {
8
+ return isNone(order.scheduled_at);
9
+ };
10
+
11
+ const getScheduledOrder = (order) => {
12
+ return isValidDate(order.scheduled_at);
13
+ };
3
14
 
4
15
  export default class OperationsSchedulerIndexRoute extends Route {
5
16
  @service store;
@@ -7,4 +18,18 @@ export default class OperationsSchedulerIndexRoute extends Route {
7
18
  model() {
8
19
  return this.store.query('order', { status: 'created', with: ['payload'] });
9
20
  }
21
+
22
+ setupController(controller, model) {
23
+ // get orders
24
+ const orders = model.toArray();
25
+
26
+ // set unscheduled orders
27
+ controller.unscheduledOrders = orders.filter(getUnscheduledOrder);
28
+
29
+ // set scheduled orders
30
+ controller.scheduledOrders = orders.filter(getScheduledOrder);
31
+
32
+ // create events from scheduledOrders
33
+ controller.events = controller.scheduledOrders.map(createFullCalendarEventFromOrder);
34
+ }
10
35
  }
package/addon/routes.js CHANGED
@@ -31,7 +31,11 @@ export default buildRoutes(function () {
31
31
  });
32
32
  });
33
33
  this.route('vendors', function () {
34
- this.route('index', { path: '/' });
34
+ this.route('index', { path: '/' }, function () {
35
+ this.route('new');
36
+ this.route('details', { path: '/:public_id' });
37
+ this.route('edit', { path: '/edit/:public_id' });
38
+ });
35
39
  });
36
40
  this.route('drivers', function () {
37
41
  this.route('index', { path: '/' }, function () {
@@ -48,16 +52,32 @@ export default buildRoutes(function () {
48
52
  });
49
53
  });
50
54
  this.route('places', function () {
51
- this.route('index', { path: '/' });
55
+ this.route('index', { path: '/' }, function () {
56
+ this.route('new');
57
+ this.route('details', { path: '/:public_id' });
58
+ this.route('edit', { path: '/edit/:public_id' });
59
+ });
52
60
  });
53
61
  this.route('contacts', function () {
54
- this.route('index', { path: '/' });
55
- });
56
- this.route('issues', function () {
57
- this.route('index', { path: '/' });
62
+ this.route('index', { path: '/' }, function () {
63
+ this.route('new');
64
+ this.route('details', { path: '/:public_id' });
65
+ this.route('edit', { path: '/edit/:public_id' });
66
+ });
58
67
  });
59
68
  this.route('fuel-reports', function () {
60
- this.route('index', { path: '/' });
69
+ this.route('index', { path: '/' }, function () {
70
+ this.route('new');
71
+ this.route('details', { path: '/:public_id' });
72
+ this.route('edit', { path: '/edit/:public_id' });
73
+ });
74
+ });
75
+ this.route('issues', function () {
76
+ this.route('index', { path: '/' }, function () {
77
+ this.route('new');
78
+ this.route('details', { path: '/:public_id' });
79
+ this.route('edit', { path: '/edit/:public_id' });
80
+ });
61
81
  });
62
82
  this.route('settings', function () {});
63
83
  });
@@ -36,6 +36,66 @@ export default class ContextPanelService extends Service {
36
36
  componentArguments: [{ isResizable: true }, { width: '600px' }],
37
37
  },
38
38
  },
39
+ fleet: {
40
+ viewing: {
41
+ component: 'fleet-panel',
42
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
43
+ },
44
+ editing: {
45
+ component: 'fleet-form-panel',
46
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
47
+ },
48
+ },
49
+ fuelReport: {
50
+ viewing: {
51
+ component: 'fuel-report-panel',
52
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
53
+ },
54
+ editing: {
55
+ component: 'fuel-report-form-panel',
56
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
57
+ },
58
+ },
59
+ vendor: {
60
+ viewing: {
61
+ component: 'vendor-panel',
62
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
63
+ },
64
+ editing: {
65
+ component: 'vendor-form-panel',
66
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
67
+ },
68
+ },
69
+ contact: {
70
+ viewing: {
71
+ component: 'contact-panel',
72
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
73
+ },
74
+ editing: {
75
+ component: 'contact-form-panel',
76
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
77
+ },
78
+ },
79
+ place: {
80
+ viewing: {
81
+ component: 'place-panel',
82
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
83
+ },
84
+ editing: {
85
+ component: 'place-form-panel',
86
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
87
+ },
88
+ },
89
+ issue: {
90
+ viewing: {
91
+ component: 'issue-panel',
92
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
93
+ },
94
+ editing: {
95
+ component: 'issue-form-panel',
96
+ componentArguments: [{ isResizable: true }, { width: '600px' }],
97
+ },
98
+ },
39
99
  };
40
100
 
41
101
  /**
@@ -0,0 +1,28 @@
1
+ .scheduler-left-sidebar {
2
+ border-right: 1px rgba(229, 231, 235, 1) solid;
3
+ height: 100vh;
4
+ overflow-y: scroll;
5
+ }
6
+
7
+ body[data-theme="dark"] .scheduler-left-sidebar {
8
+ border-right: 1px rgba(55, 65, 81, 1) solid;
9
+ }
10
+
11
+ .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-header.next-content-panel-is-closed {
12
+ border-bottom-left-radius: 0;
13
+ border-bottom-right-radius: 0;
14
+ }
15
+ .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-header {
16
+ border-top-left-radius: 0;
17
+ border-top-right-radius: 0;
18
+ border-top: 0;
19
+ border-left: 0;
20
+ border-right: 0;
21
+ }
22
+
23
+ .scheduler-left-sidebar > .next-content-panel-wrapper > .next-content-panel-container > .next-content-panel > .next-content-panel-body {
24
+ border-left: 0;
25
+ border-right: 0;
26
+ border-bottom-left-radius: 0;
27
+ border-bottom-right-radius: 0;
28
+ }
@@ -0,0 +1 @@
1
+ <ContactPanel @contact={{@model}} @tab={{this.view}} @onTabChanged={{this.onTabChanged}} @onPressCancel={{this.transitionBack}} @onEdit={{this.onEdit}} />
@@ -0,0 +1 @@
1
+ <ContactFormPanel @contact={{@model}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onViewDetails={{this.onViewDetails}} @onLoad={{this.setOverlayContext}} />
@@ -0,0 +1 @@
1
+ <ContactFormPanel @contact={{this.contact}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onLoad={{this.setOverlayContext}} />
@@ -1,7 +1,14 @@
1
1
  <Layout::Section::Header @title="Contacts" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
2
+ <FiltersPicker
3
+ @columns={{this.columns}}
4
+ @onApply={{fn this.filters.apply this}}
5
+ @onClear={{fn this.filters.reset this}}
6
+ @onFilterClear={{this.filters.clear}}
7
+ @onChange={{this.filters.set}}
8
+ @buttonWrapperClass="mr-2"
9
+ />
3
10
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
4
- {{#if (safe-has this.table "selectedRows")}}
11
+ {{#if (safe-has this.table "selectedRows")}}
5
12
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
6
13
  <div class="next-dd-menu mt-2 mx-0">
7
14
  <div class="px-1">
@@ -17,7 +24,19 @@
17
24
  </Layout::Section::Header>
18
25
 
19
26
  <Layout::Section::Body>
20
- <Table @rows={{@model}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
27
+ <Table
28
+ @rows={{@model}}
29
+ @columns={{this.columns}}
30
+ @selectable={{true}}
31
+ @canSelectAll={{true}}
32
+ @onSetup={{fn (mut this.table)}}
33
+ @pagination={{true}}
34
+ @paginationMeta={{@model.meta}}
35
+ @page={{this.page}}
36
+ @onPageChange={{fn (mut this.page)}}
37
+ @tfootVerticalOffset="53"
38
+ @tfootVerticalOffsetElements=".next-view-section-subheader"
39
+ />
21
40
  </Layout::Section::Body>
22
41
 
23
42
  {{outlet}}
@@ -1,9 +1,21 @@
1
- <Layout::Section::Header @title={{t "fleet-ops.management.drivers.index.title"}} @searchPlaceholder={{t "fleet-ops.management.drivers.index.fields.search.placeholder"}} @searchQuery={{this.query}} @onSearch={{perform this.search}}>
1
+ <Layout::Section::Header
2
+ @title={{t "fleet-ops.management.drivers.index.title"}}
3
+ @searchPlaceholder={{t "fleet-ops.management.drivers.index.fields.search.placeholder"}}
4
+ @searchQuery={{this.query}}
5
+ @onSearch={{perform this.search}}
6
+ >
2
7
  <Button @icon="grip-horizontal" @prefix="fas" @onClick={{fn this.changeLayout "grid"}} @disabled={{this.isGridLayout}} class="mr-2" />
3
8
  <Button @icon="table" @prefix="fas" @onClick={{fn this.changeLayout "table"}} @disabled={{this.isTableLayout}} class="mr-2" />
4
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
9
+ <FiltersPicker
10
+ @columns={{this.columns}}
11
+ @onApply={{fn this.filters.apply this}}
12
+ @onClear={{fn this.filters.reset this}}
13
+ @onFilterClear={{this.filters.clear}}
14
+ @onChange={{this.filters.set}}
15
+ @buttonWrapperClass="mr-2"
16
+ />
5
17
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
6
- {{#if (safe-has this.table "selectedRows")}}
18
+ {{#if (safe-has this.table "selectedRows")}}
7
19
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
8
20
  <div class="next-dd-menu mt-2 mx-0">
9
21
  <div class="px-1">
@@ -20,7 +32,19 @@
20
32
 
21
33
  {{#if this.isTableLayout}}
22
34
  <Layout::Section::Body>
23
- <Table @rows={{@model}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
35
+ <Table
36
+ @rows={{@model}}
37
+ @columns={{this.columns}}
38
+ @selectable={{true}}
39
+ @canSelectAll={{true}}
40
+ @onSetup={{fn (mut this.table)}}
41
+ @pagination={{true}}
42
+ @paginationMeta={{@model.meta}}
43
+ @page={{this.page}}
44
+ @onPageChange={{fn (mut this.page)}}
45
+ @tfootVerticalOffset="53"
46
+ @tfootVerticalOffsetElements=".next-view-section-subheader"
47
+ />
24
48
  </Layout::Section::Body>
25
49
  {{/if}}
26
50
 
@@ -34,4 +58,4 @@
34
58
  </div>
35
59
  {{/if}}
36
60
 
37
- {{outlet}}
61
+ {{outlet}}
@@ -1 +1 @@
1
- <FleetPanel @fleet={{@model}} @tab={{this.view}} @onPressCancel={{this.transitionBack}} />
1
+ <FleetPanel @fleet={{@model}} @tab={{this.view}} @onTabChanged={{this.onTabChanged}} @onPressCancel={{this.transitionBack}} @onEdit={{this.onEdit}} />
@@ -1 +1 @@
1
- <FleetFormPanel @fleet={{@model}} @onUpdateFleet={{this.updateFleet}} @onPressCancel={{this.transitionBack}}/>
1
+ <FleetFormPanel @fleet={{@model}} @onPressCancel={{this.transitionBack}} @onViewDetails={{this.onViewDetails}} @onAfterSave={{this.onAfterSave}} @onLoad={{this.setOverlayContext}} />
@@ -1 +1 @@
1
- <FleetFormPanel @fleet={{this.fleet}} @onCreateFleet={{this.createFleet}} @onPressCancel={{this.transitionBack}}/>
1
+ <FleetFormPanel @fleet={{this.fleet}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onLoad={{this.setOverlayContext}} />
@@ -0,0 +1 @@
1
+ <FuelReportPanel @fuelReport={{@model}} @tab={{this.view}} @onTabChanged={{this.onTabChanged}} @onPressCancel={{this.transitionBack}} @onEdit={{this.onEdit}} />
@@ -0,0 +1 @@
1
+ <FuelReportFormPanel @fuelReport={{@model}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onViewDetails={{this.onViewDetails}} @onLoad={{this.setOverlayContext}} />
@@ -0,0 +1 @@
1
+ <FuelReportFormPanel @fuelReport={{this.fuelReport}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onLoad={{this.setOverlayContext}} />
@@ -1,7 +1,14 @@
1
1
  <Layout::Section::Header @title="Fuel Reports" @searchQuery={{this.query}} @onSearch={{perform this.search}}>
2
- <FiltersPicker @columns={{this.columns}} @onApply={{fn this.filters.apply this}} @onClear={{fn this.filters.reset this}} @onFilterClear={{this.filters.clear}} @onChange={{this.filters.set}} @buttonWrapperClass="mr-2" />
2
+ <FiltersPicker
3
+ @columns={{this.columns}}
4
+ @onApply={{fn this.filters.apply this}}
5
+ @onClear={{fn this.filters.reset this}}
6
+ @onFilterClear={{this.filters.clear}}
7
+ @onChange={{this.filters.set}}
8
+ @buttonWrapperClass="mr-2"
9
+ />
3
10
  <VisibleColumnPicker @columns={{this.columns}} @onChange={{fn (mut this.columns)}} class="mr-2" />
4
- {{#if (safe-has this.table "selectedRows")}}
11
+ {{#if (safe-has this.table "selectedRows")}}
5
12
  <DropdownButton @icon="layer-group" @text="Bulk Action" @type="magic" @size="sm" @buttonWrapperClass="mr-2" @contentClass="dropdown-menu" as |dd|>
6
13
  <div class="next-dd-menu mt-2 mx-0">
7
14
  <div class="px-1">
@@ -17,5 +24,19 @@
17
24
  </Layout::Section::Header>
18
25
 
19
26
  <Layout::Section::Body @pagination={{true}} @onToggleAll={{this.toggleAll}} @allToggled={{this.allToggled}}>
20
- <Table @rows={{@model}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
21
- </Layout::Section::Body>
27
+ <Table
28
+ @rows={{@model}}
29
+ @columns={{this.columns}}
30
+ @selectable={{true}}
31
+ @canSelectAll={{true}}
32
+ @onSetup={{fn (mut this.table)}}
33
+ @pagination={{true}}
34
+ @paginationMeta={{@model.meta}}
35
+ @page={{this.page}}
36
+ @onPageChange={{fn (mut this.page)}}
37
+ @tfootVerticalOffset="53"
38
+ @tfootVerticalOffsetElements=".next-view-section-subheader"
39
+ />
40
+ </Layout::Section::Body>
41
+
42
+ {{outlet}}
@@ -0,0 +1 @@
1
+ <IssuePanel @issue={{@model}} @tab={{this.view}} @onTabChanged={{this.onTabChanged}} @onPressCancel={{this.transitionBack}} @onEdit={{this.onEdit}} />
@@ -0,0 +1 @@
1
+ <IssueFormPanel @issue={{@model}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onViewDetails={{this.onViewDetails}} @onLoad={{this.setOverlayContext}} />
@@ -0,0 +1 @@
1
+ <IssueFormPanel @issue={{this.issue}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onLoad={{this.setOverlayContext}} />
@@ -12,10 +12,12 @@
12
12
  </div>
13
13
  </DropdownButton>
14
14
  {{/if}}
15
- <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" />
16
- <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" />
15
+ <Button @icon="plus" @iconPrefix="fas" @type="primary" @text="New" class="mr-2" @onClick={{this.createIssue}} />
16
+ <Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text="Export" @onClick={{this.exportIssues}} />
17
17
  </Layout::Section::Header>
18
18
 
19
19
  <Layout::Section::Body>
20
20
  <Table @rows={{@model}} @columns={{this.columns}} @selectable={{true}} @canSelectAll={{true}} @onSetup={{fn (mut this.table)}} @pagination={{true}} @paginationMeta={{@model.meta}} @page={{this.page}} @onPageChange={{fn (mut this.page)}} @tfootVerticalOffset="53" @tfootVerticalOffsetElements=".next-view-section-subheader" />
21
- </Layout::Section::Body>
21
+ </Layout::Section::Body>
22
+
23
+ {{outlet}}
@@ -0,0 +1 @@
1
+ <PlacePanel @place={{@model}} @tab={{this.view}} @onTabChanged={{this.onTabChanged}} @onPressCancel={{this.transitionBack}} @onEdit={{this.onEdit}} />
@@ -0,0 +1 @@
1
+ <PlaceFormPanel @place={{@model}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onViewDetails={{this.onViewDetails}} @onLoad={{this.setOverlayContext}} />
@@ -0,0 +1 @@
1
+ <PlaceFormPanel @place={{this.place}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onLoad={{this.setOverlayContext}} />
@@ -0,0 +1 @@
1
+ <VendorPanel @vendor={{@model}} @tab={{this.view}} @onTabChanged={{this.onTabChanged}} @onPressCancel={{this.transitionBack}} @onEdit={{this.onEdit}} />
@@ -0,0 +1 @@
1
+ <VendorFormPanel @vendor={{@model}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onViewDetails={{this.onViewDetails}} @onLoad={{this.setOverlayContext}} />
@@ -0,0 +1 @@
1
+ <VendorFormPanel @vendor={{this.vendor}} @onPressCancel={{this.transitionBack}} @onAfterSave={{this.onAfterSave}} @onLoad={{this.setOverlayContext}} />
@@ -1,21 +1,21 @@
1
1
  <MapContainer::Topbar class="next-topbar-{{this.layout}}">
2
2
  <MapContainer::ViewSwitch>
3
3
  <FaIcon @icon="layer-group" class="mr-2 text-gray-400 dark:text-gray-600" />
4
- <button type="button" class="{{if this.isMapLayout 'active'}}" {{on "click" (fn this.setLayoutMode "map")}}>Map</button>
5
- <button type="button" class="{{if this.isTableLayout 'active'}} flex flex-row items-center relative" {{on "click" (fn this.setLayoutMode "table")}}>
4
+ <button type="button" id="ops-map-view-button" class="{{if this.isMapLayout 'active'}}" {{on "click" (fn this.setLayoutMode "map")}}>Map</button>
5
+ <button type="button" id="ops-table-view-button" class="{{if this.isTableLayout 'active'}} flex flex-row items-center relative" {{on "click" (fn this.setLayoutMode "table")}}>
6
6
  <div class="mr-1.5">Table</div>
7
7
  <Badge class="flex items-center justify-center -mr-4" @spanClass="rounded-full items-center justify-center h-4 w-4" @hideStatusDot={{true}} @status="info">{{@model.meta.total}}</Badge>
8
8
  </button>
9
- {{!-- <button type="button" class="{{if this.isKanbanView 'active'}}" {{on "click" (fn this.setLayoutMode "kanban")}}>Board</button> --}}
9
+ {{!-- <button type="button" id="ops-kanban-view-button" class="{{if this.isKanbanView 'active'}}" {{on "click" (fn this.setLayoutMode "kanban")}}>Board</button> --}}
10
10
  </MapContainer::ViewSwitch>
11
11
  </MapContainer::Topbar>
12
12
 
13
13
  {{#if this.isMapLayout}}
14
14
  <MapContainer @layout={{this.layout}} @onReady={{this.onMapContainerReady}}>
15
15
  <GlobalSearch @visible={{this.isSearchVisible}} @onPressOrder={{this.viewOrder}} />
16
- <MapContainer::Toolbar @activeOrdersCount={{this.activeOrdersCount}} @liveMap={{this.liveMap}} @map={{this.leafletMap}} @onPressViewOrders={{this.toggleOrdersPanel}} @onPressSearch={{this.toggleSearch}} @onPressCreateOrder={{this.createOrder}} @onPressCreateDriver={{this.driversController.createDriver}} @onPressDriverProfile={{this.driversController.viewDriver}} />
16
+ <MapContainer::Toolbar @activeOrdersCount={{this.activeOrdersCount}} @liveMap={{this.liveMap}} @map={{this.leafletMap}} @onPressViewOrders={{this.toggleOrdersPanel}} @onPressSearch={{this.toggleSearch}} @onPressCreateOrder={{this.createOrder}} @onPressLiveMapDrawerToggle={{this.onPressLiveMapDrawerToggle}} />
17
17
  <OrderListOverlay @noBackdrop={{true}} @fullHeight={{true}} @outView={{not this.isOrdersPanelVisible}} @width={{if (media 'isMobile') "100%" "338px"}} @onPressCancel={{this.hideOrdersPanel}} @onPressCreateOrder={{this.createOrder}} @onPressViewOrder={{this.viewOrder}} @onPressCreateFleet={{this.fleetController.createFleet}} @onPressManageFleet={{this.fleetController.viewFleet}} @onPressCancelOrders={{this.bulkCancelOrders}} @onPressDeleteOrders={{this.bulkDeleteOrders}} />
18
- <LiveMap id="leafletMap" class="next-leaflet-container-map" @lat={{1.3521}} @lng={{103.8198}} @zoom={{12}} @zoomControl={{false}} @onLoad={{this.setMapReference}} {{set-container-dimensions}} />
18
+ <LiveMap id="leafletMap" class="next-leaflet-container-map" @lat={{1.3521}} @lng={{103.8198}} @zoom={{12}} @zoomControl={{false}} @onLoad={{this.setMapReference}} @onDrawerReady={{this.setDrawerContext}} {{set-container-dimensions}} />
19
19
  </MapContainer>
20
20
  {{/if}}
21
21
 
@@ -1,10 +1,18 @@
1
1
  <Layout::Section::Header @title="Scheduler" />
2
2
 
3
- {{!-- <div>
4
- <div class="p-6">
5
- <div class="grid grid-cols-3 gap-4">
6
- <div class="space-y-4">
7
- <ContentPanel @title="Unscheduled Orders" @titleStatuRight={{this.unscheduledOrders.length}} @titleStatuRightClass="info-status-badge" @hideStatusDot={{true}} @open={{this.unscheduledOrders.length}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
3
+ <Layout::Section::Body class="overflow-y-scroll h-screen">
4
+ <div class="h-screen">
5
+ <div class="grid grid-cols-1 lg:grid-cols-3">
6
+ <div class="scheduler-left-sidebar">
7
+ <ContentPanel
8
+ @title="Unscheduled Orders"
9
+ @titleStatuRight={{this.unscheduledOrders.length}}
10
+ @titleStatuRightClass="info-status-badge"
11
+ @hideStatusDot={{true}}
12
+ @open={{true}}
13
+ @pad={{true}}
14
+ @panelBodyClass="bg-white dark:bg-gray-900"
15
+ >
8
16
  <div class="space-y-4">
9
17
  {{#each this.unscheduledOrders as |order|}}
10
18
  <FullCalendar::Draggable @eventData={{json-hash id=order.id title=order.eventTitle allDay=true}}>
@@ -13,7 +21,15 @@
13
21
  {{/each}}
14
22
  </div>
15
23
  </ContentPanel>
16
- <ContentPanel @title="Scheduled Orders" @titleStatuRight={{this.scheduledOrders.length}} @titleStatusRightClass="info-status-badge" @hideStatusDot={{true}} @open={{this.scheduledOrders.length}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
24
+ <ContentPanel
25
+ @title="Scheduled Orders"
26
+ @titleStatuRight={{this.scheduledOrders.length}}
27
+ @titleStatusRightClass="info-status-badge"
28
+ @hideStatusDot={{true}}
29
+ @open={{true}}
30
+ @pad={{true}}
31
+ @panelBodyClass="bg-white dark:bg-gray-900"
32
+ >
17
33
  <div class="space-y-4">
18
34
  {{#each this.scheduledOrders as |order|}}
19
35
  <Order::ScheduleCard @order={{order}} @titleClass="cursor-pointer" @onTitleClick={{fn this.viewEvent order}} />
@@ -22,9 +38,17 @@
22
38
  </ContentPanel>
23
39
  </div>
24
40
 
25
- <div class="col-span-2">
26
- <FullCalendar @events={{this.events}} @onDrop={{this.scheduleEventFromDrop}} @onEventReceive={{this.receivedEvent}} @onEventDrop={{this.rescheduleEventFromDrag}} @onEventClick={{this.viewOrderAsEvent}} />
41
+ <div class="col-span-2 p-4">
42
+ <FullCalendar
43
+ @events={{this.events}}
44
+ @editable={{true}}
45
+ @onDrop={{this.scheduleEventFromDrop}}
46
+ @onEventReceive={{this.receivedEvent}}
47
+ @onEventDrop={{this.rescheduleEventFromDrag}}
48
+ @onEventClick={{this.viewOrderAsEvent}}
49
+ @onInit={{this.setCalendarApi}}
50
+ />
27
51
  </div>
28
52
  </div>
29
53
  </div>
30
- </div> --}}
54
+ </Layout::Section::Body>