@fleetbase/fleetops-engine 0.6.56 → 0.6.58

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 (82) hide show
  1. package/addon/components/ai/create-order-preview.hbs +297 -0
  2. package/addon/components/ai/create-order-preview.js +362 -0
  3. package/addon/components/ai/route-preview-map.hbs +79 -0
  4. package/addon/components/ai/route-preview-map.js +527 -0
  5. package/addon/components/fleet/details.hbs +21 -8
  6. package/addon/components/fleet/details.js +55 -1
  7. package/addon/components/fleet/hierarchy-tree.hbs +137 -0
  8. package/addon/components/fleet/hierarchy-tree.js +528 -0
  9. package/addon/components/map/drawer/device-event-listing.js +1 -0
  10. package/addon/components/map/drawer/driver-listing.js +1 -0
  11. package/addon/components/map/drawer/place-listing.js +1 -0
  12. package/addon/components/map/drawer/vehicle-listing.js +1 -0
  13. package/addon/components/order/details.hbs +34 -1
  14. package/addon/components/order/form/details.hbs +4 -0
  15. package/addon/components/order/form.hbs +9 -1
  16. package/addon/components/vehicle/card.hbs +14 -2
  17. package/addon/components/vehicle/form.hbs +13 -1
  18. package/addon/controllers/settings/map.js +4 -0
  19. package/addon/extension.js +14 -0
  20. package/addon/routes/management/fleets/index/details.js +1 -1
  21. package/addon/services/map-adapter/google.js +56 -16
  22. package/addon/services/map-manager.js +12 -0
  23. package/addon/styles/fleetops-engine.css +487 -1
  24. package/addon/utils/map-drawer-dropdown-position.js +11 -13
  25. package/app/components/ai/create-order-preview.js +1 -0
  26. package/app/components/ai/route-preview-map.js +1 -0
  27. package/app/components/fleet/hierarchy-tree.js +1 -0
  28. package/app/services/route-engine.js +1 -0
  29. package/composer.json +9 -2
  30. package/extension.json +1 -1
  31. package/package.json +6 -4
  32. package/phpunit.xml.dist +4 -4
  33. package/pnpm-workspace.yaml +2 -1
  34. package/scripts/coverage-runner.php +51 -0
  35. package/scripts/coverage-summary.php +110 -0
  36. package/scripts/normalize-rgba-alpha.js +90 -0
  37. package/scripts/pest-bootstrap.php +177 -0
  38. package/scripts/pest-file-runner.php +82 -0
  39. package/scripts/pest-runner.php +64 -0
  40. package/server/src/Http/Resources/v1/Fleet.php +8 -2
  41. package/server/src/Models/Driver.php +6 -0
  42. package/server/src/Models/Order.php +18 -6
  43. package/server/src/Models/Place.php +11 -3
  44. package/server/src/Orchestration/Support/OrchestrationPayloadBuilder.php +3 -1
  45. package/server/src/Providers/FleetOpsServiceProvider.php +26 -0
  46. package/server/src/Support/Ai/Capabilities/AbstractFleetOpsAICapability.php +88 -0
  47. package/server/src/Support/Ai/Capabilities/AssetStatusCapability.php +108 -0
  48. package/server/src/Support/Ai/Capabilities/ConsoleNavigationCapability.php +55 -0
  49. package/server/src/Support/Ai/Capabilities/CreateOrderPreviewCapability.php +508 -0
  50. package/server/src/Support/Ai/Capabilities/DocsHelpCapability.php +49 -0
  51. package/server/src/Support/Ai/Capabilities/ImportOrdersPreviewCapability.php +66 -0
  52. package/server/src/Support/Ai/Capabilities/OperationalQueryCapability.php +319 -0
  53. package/server/src/Support/Ai/Capabilities/OptimizeOrderRouteCapability.php +240 -0
  54. package/server/src/Support/Ai/Capabilities/OrderInsightsCapability.php +95 -0
  55. package/server/src/Support/Ai/Capabilities/SearchResourcesCapability.php +195 -0
  56. package/server/src/Support/Ai/FleetOpsAiQueryResources.php +150 -0
  57. package/server/src/Support/Utils.php +52 -0
  58. package/server/src/Tracking/TrackingOptions.php +6 -1
  59. package/server/src/routes.php +0 -11
  60. package/server/tests/AiCreateOrderPreviewCapabilityTest.php +131 -0
  61. package/server/tests/AiOperationalQueryCapabilityTest.php +75 -0
  62. package/server/tests/AnalyticsRoutesTest.php +5 -3
  63. package/server/tests/CustomerEndpointTest.php +1 -0
  64. package/server/tests/DeviceFilterTest.php +1 -2
  65. package/server/tests/FleetHierarchyResourceTest.php +12 -0
  66. package/server/tests/FuelProviderRegistryTest.php +7 -9
  67. package/server/tests/LiveControllerViewportTest.php +8 -16
  68. package/server/tests/LiveOrderQueryTest.php +18 -24
  69. package/server/tests/OrderPayloadPlaceResolutionTest.php +53 -0
  70. package/server/tests/PointResolutionTest.php +63 -0
  71. package/server/tests/ServiceAreaZoneApiShapeTest.php +8 -9
  72. package/server/tests/ServiceRateAlgorithmWeightVariablesTest.php +1 -1
  73. package/server/tests/TelematicsHardeningTest.php +31 -26
  74. package/server/tests/TrackingIntelligenceTest.php +65 -25
  75. package/server/tests/VehicleDriverAssignmentTest.php +8 -9
  76. package/addon/components/table/cell/dropdown/action-item.hbs +0 -31
  77. package/addon/components/table/cell/dropdown/action-item.js +0 -62
  78. package/addon/components/table/cell/dropdown.hbs +0 -28
  79. package/addon/components/table/cell/dropdown.js +0 -91
  80. package/app/components/table/cell/dropdown/action-item.js +0 -1
  81. package/app/components/table/cell/dropdown.js +0 -1
  82. package/server/src/Http/Controllers/Api/v1/OrganizationController.php +0 -45
@@ -1,4 +1,3 @@
1
- /* stylelint-disable alpha-value-notation -- Fleet-Ops lazy engine production CSS is minified by legacy clean-css, which corrupts comma-form rgba() percent alpha values. */
2
1
  .scheduler-left-sidebar {
3
2
  border-right: 1px rgb(229 231 235 / 100%) solid;
4
3
  height: 100vh;
@@ -2242,6 +2241,20 @@ body[data-theme='dark'] .fleet-ops-operations-monitor-divider::before {
2242
2241
  padding-left: 2.75rem !important;
2243
2242
  }
2244
2243
 
2244
+ .fleet-hierarchy-tree-row-depth-1 {
2245
+ padding-left: 1.5rem !important;
2246
+ }
2247
+
2248
+ .fleet-hierarchy-tree-row-depth-2 {
2249
+ padding-left: 2.5rem !important;
2250
+ }
2251
+
2252
+ .fleet-hierarchy-tree-row-depth-3,
2253
+ .fleet-hierarchy-tree-row-depth-4,
2254
+ .fleet-hierarchy-tree-row-depth-5 {
2255
+ padding-left: 3.5rem !important;
2256
+ }
2257
+
2245
2258
  .fleet-ops-operations-monitor-child-row {
2246
2259
  margin-top: -0.125rem;
2247
2260
  }
@@ -8049,3 +8062,476 @@ body[data-theme='dark'] .issue-timeline-card time,
8049
8062
  body[data-theme='dark'] .issue-timeline-card p {
8050
8063
  color: #d1d5db;
8051
8064
  }
8065
+
8066
+ .fleetbase-ai-create-order-preview {
8067
+ display: flex;
8068
+ flex-direction: column;
8069
+ gap: 8px;
8070
+ padding: 8px;
8071
+ }
8072
+
8073
+ .fleetbase-ai-create-order-preview__header {
8074
+ display: flex;
8075
+ align-items: flex-start;
8076
+ justify-content: space-between;
8077
+ gap: 8px;
8078
+ }
8079
+
8080
+ .fleetbase-ai-create-order-preview__map {
8081
+ position: relative;
8082
+ overflow: hidden;
8083
+ border: 1px solid rgb(148 163 184 / 20%);
8084
+ border-radius: 7px;
8085
+ background: rgb(15 23 42 / 5%);
8086
+ }
8087
+
8088
+ .fleetbase-ai-create-order-preview__leaflet,
8089
+ .fleetbase-ai-create-order-preview__google,
8090
+ .fleetbase-ai-create-order-preview__empty-map {
8091
+ width: 100%;
8092
+ height: 190px;
8093
+ }
8094
+
8095
+ .fleetbase-ai-create-order-preview__empty-map {
8096
+ display: flex;
8097
+ align-items: center;
8098
+ justify-content: center;
8099
+ gap: 8px;
8100
+ color: #64748b;
8101
+ font-size: 12px;
8102
+ }
8103
+
8104
+ .fleetbase-ai-create-order-preview__map-status {
8105
+ position: absolute;
8106
+ right: 8px;
8107
+ bottom: 8px;
8108
+ display: inline-flex;
8109
+ align-items: center;
8110
+ gap: 6px;
8111
+ border: 1px solid rgb(255 255 255 / 28%);
8112
+ border-radius: 999px;
8113
+ background: rgb(15 23 42 / 62%);
8114
+ padding: 4px 8px;
8115
+ color: #f8fafc;
8116
+ font-size: 11px;
8117
+ line-height: 1;
8118
+ backdrop-filter: blur(5px);
8119
+ }
8120
+
8121
+ .fleetbase-ai-create-order-preview__map-status--error {
8122
+ border-color: rgb(245 158 11 / 32%);
8123
+ background: rgb(120 53 15 / 64%);
8124
+ }
8125
+
8126
+ .fleetbase-ai-create-order-preview__fields {
8127
+ display: grid;
8128
+ grid-template-columns: repeat(2, minmax(0, 1fr));
8129
+ gap: 4px 8px;
8130
+ }
8131
+
8132
+ .fleetbase-ai-create-order-preview__field-row {
8133
+ display: flex;
8134
+ min-width: 0;
8135
+ align-items: center;
8136
+ justify-content: space-between;
8137
+ gap: 6px;
8138
+ border-radius: 7px;
8139
+ padding: 5px 6px;
8140
+ transition:
8141
+ background 120ms ease,
8142
+ box-shadow 120ms ease;
8143
+ }
8144
+
8145
+ .fleetbase-ai-create-order-preview__field-row:hover,
8146
+ .fleetbase-ai-create-order-preview__field-row:focus-within {
8147
+ background: rgb(255 255 255 / 20%);
8148
+ box-shadow: inset 0 0 0 1px rgb(148 163 184 / 14%);
8149
+ }
8150
+
8151
+ .fleetbase-ai-create-order-preview__field-row--notes {
8152
+ grid-column: 1 / -1;
8153
+ }
8154
+
8155
+ .fleetbase-ai-create-order-preview__field-copy {
8156
+ min-width: 0;
8157
+ flex: 1 1 auto;
8158
+ }
8159
+
8160
+ .fleetbase-ai-create-order-preview__field-copy > span {
8161
+ display: block;
8162
+ margin-bottom: 1px;
8163
+ color: #64748b;
8164
+ font-size: 10px;
8165
+ font-weight: 700;
8166
+ letter-spacing: 0;
8167
+ line-height: 1.1;
8168
+ text-transform: uppercase;
8169
+ }
8170
+
8171
+ .fleetbase-ai-create-order-preview__field-copy > strong {
8172
+ display: block;
8173
+ overflow: hidden;
8174
+ color: #0f172a;
8175
+ font-size: 12px;
8176
+ font-weight: 650;
8177
+ line-height: 1.25;
8178
+ text-overflow: ellipsis;
8179
+ white-space: nowrap;
8180
+ }
8181
+
8182
+ .fleetbase-ai-create-order-preview__field-row--notes .fleetbase-ai-create-order-preview__field-copy > strong {
8183
+ white-space: normal;
8184
+ }
8185
+
8186
+ .fleetbase-ai-create-order-preview__edit-wrapper {
8187
+ width: 24px;
8188
+ height: 24px;
8189
+ flex: 0 0 24px;
8190
+ box-shadow: none;
8191
+ }
8192
+
8193
+ .fleetbase-ai-create-order-preview__edit-button {
8194
+ display: inline-flex;
8195
+ width: 24px;
8196
+ height: 24px;
8197
+ align-items: center;
8198
+ justify-content: center;
8199
+ border: 0;
8200
+ border-radius: 6px;
8201
+ color: #64748b;
8202
+ }
8203
+
8204
+ .fleetbase-ai-create-order-preview__edit-button:hover {
8205
+ background: rgb(148 163 184 / 16%);
8206
+ color: #2563eb;
8207
+ }
8208
+
8209
+ .fleetbase-ai-create-order-preview__inline-select,
8210
+ .fleetbase-ai-create-order-preview__inline-native-select,
8211
+ .fleetbase-ai-create-order-preview__inline-datetime,
8212
+ .fleetbase-ai-create-order-preview__inline-textarea {
8213
+ width: 100%;
8214
+ min-height: 24px;
8215
+ border: 0;
8216
+ background: transparent;
8217
+ color: #0f172a;
8218
+ font-size: 12px;
8219
+ line-height: 1.25;
8220
+ outline: 0;
8221
+ box-shadow: none;
8222
+ }
8223
+
8224
+ .fleetbase-ai-create-order-preview__inline-select.ember-power-select-trigger {
8225
+ display: flex;
8226
+ min-height: 24px;
8227
+ align-items: center;
8228
+ border: 0;
8229
+ border-radius: 0;
8230
+ background: transparent;
8231
+ padding: 0;
8232
+ color: #0f172a;
8233
+ box-shadow: none;
8234
+ }
8235
+
8236
+ .fleetbase-ai-create-order-preview .ember-power-select-trigger,
8237
+ .fleetbase-ai-create-order-preview .ember-basic-dropdown-trigger,
8238
+ .fleetbase-ai-create-order-preview .ember-model-select,
8239
+ .fleetbase-ai-create-order-preview .fleetbase-model-select,
8240
+ .fleetbase-ai-create-order-preview .ember-power-select-status-icon,
8241
+ .fleetbase-ai-create-order-preview .ember-power-select-clear-btn {
8242
+ border: 0;
8243
+ background: transparent;
8244
+ box-shadow: none;
8245
+ }
8246
+
8247
+ .fleetbase-ai-create-order-preview .ember-power-select-trigger {
8248
+ min-height: 24px;
8249
+ padding: 0;
8250
+ }
8251
+
8252
+ .fleetbase-ai-create-order-preview .ember-power-select-status-icon {
8253
+ right: 0;
8254
+ width: 12px;
8255
+ height: 12px;
8256
+ }
8257
+
8258
+ .fleetbase-ai-create-order-preview .ember-power-select-clear-btn {
8259
+ right: 14px;
8260
+ color: #94a3b8;
8261
+ }
8262
+
8263
+ .fleetbase-ai-create-order-preview .ember-power-select-search-input,
8264
+ .fleetbase-ai-create-order-preview .ember-power-select-search-input:focus {
8265
+ border: 0;
8266
+ background: transparent;
8267
+ color: inherit;
8268
+ outline: 0;
8269
+ box-shadow: none;
8270
+ }
8271
+
8272
+ .fleetbase-ai-create-order-preview__inline-select .ember-power-select-selected-item,
8273
+ .fleetbase-ai-create-order-preview__inline-select .ember-power-select-placeholder {
8274
+ overflow: hidden;
8275
+ margin-left: 0;
8276
+ margin-right: 16px;
8277
+ color: inherit;
8278
+ font-size: 12px;
8279
+ line-height: 1.25;
8280
+ text-overflow: ellipsis;
8281
+ white-space: nowrap;
8282
+ }
8283
+
8284
+ .fleetbase-ai-create-order-preview__inline-native-select {
8285
+ width: auto;
8286
+ max-width: 150px;
8287
+ appearance: none;
8288
+ border-radius: 0;
8289
+ padding: 0 16px 0 0;
8290
+ font-weight: 650;
8291
+ cursor: pointer;
8292
+ }
8293
+
8294
+ .fleetbase-ai-create-order-preview__inline-textarea {
8295
+ resize: vertical;
8296
+ }
8297
+
8298
+ .fleetbase-ai-create-order-preview__inline-datetime,
8299
+ .fleetbase-ai-create-order-preview__inline-datetime input {
8300
+ border: 0;
8301
+ background: transparent;
8302
+ padding: 0;
8303
+ color: inherit;
8304
+ font-size: 12px;
8305
+ line-height: 1.25;
8306
+ outline: 0;
8307
+ box-shadow: none;
8308
+ }
8309
+
8310
+ .fleetbase-ai-create-order-preview__inline-datetime {
8311
+ display: grid;
8312
+ grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
8313
+ gap: 6px;
8314
+ }
8315
+
8316
+ .fleetbase-ai-create-order-preview__inline-datetime input {
8317
+ width: 100%;
8318
+ min-width: 0;
8319
+ }
8320
+
8321
+ .fleetbase-ai-create-order-preview__toggles {
8322
+ display: flex;
8323
+ flex-direction: column;
8324
+ gap: 8px;
8325
+ }
8326
+
8327
+ .fleetbase-ai-create-order-preview__toggle-row {
8328
+ display: flex;
8329
+ min-height: 28px;
8330
+ align-items: center;
8331
+ justify-content: space-between;
8332
+ gap: 10px;
8333
+ border-top: 1px solid rgb(148 163 184 / 14%);
8334
+ padding: 7px 2px 0;
8335
+ }
8336
+
8337
+ .fleetbase-ai-create-order-preview__inline-pill {
8338
+ display: inline-flex;
8339
+ align-items: center;
8340
+ gap: 5px;
8341
+ border: 0;
8342
+ border-radius: 999px;
8343
+ background: rgb(148 163 184 / 14%);
8344
+ padding: 3px 7px;
8345
+ color: #475569;
8346
+ font-size: 11px;
8347
+ line-height: 1;
8348
+ }
8349
+
8350
+ .fleetbase-ai-create-order-preview__inline-pill:hover {
8351
+ background: rgb(37 99 235 / 14%);
8352
+ color: #2563eb;
8353
+ }
8354
+
8355
+ .fleetbase-ai-create-order-preview__select-label {
8356
+ overflow: hidden;
8357
+ color: #0f172a;
8358
+ font-size: 12px;
8359
+ font-weight: 600;
8360
+ line-height: 1.25;
8361
+ text-overflow: ellipsis;
8362
+ text-transform: uppercase;
8363
+ white-space: nowrap;
8364
+ }
8365
+
8366
+ .fleetbase-ai-create-order-preview__controls {
8367
+ display: flex;
8368
+ align-items: center;
8369
+ gap: 8px;
8370
+ }
8371
+
8372
+ .fleetbase-ai-create-order-preview__refreshing {
8373
+ color: #64748b;
8374
+ font-size: 11px;
8375
+ }
8376
+
8377
+ .fleetbase-ai-create-order-preview__applying,
8378
+ .fleetbase-ai-create-order-preview__completed,
8379
+ .fleetbase-ai-create-order-preview__cancelled {
8380
+ display: flex;
8381
+ align-items: center;
8382
+ gap: 7px;
8383
+ border-radius: 7px;
8384
+ padding: 8px 9px;
8385
+ font-size: 12px;
8386
+ }
8387
+
8388
+ .fleetbase-ai-create-order-preview__applying {
8389
+ border: 1px solid rgb(96 165 250 / 20%);
8390
+ background: rgb(37 99 235 / 10%);
8391
+ color: #1d4ed8;
8392
+ }
8393
+
8394
+ .fleetbase-ai-create-order-preview__magic-loader {
8395
+ display: inline-flex;
8396
+ align-items: center;
8397
+ gap: 3px;
8398
+ }
8399
+
8400
+ .fleetbase-ai-create-order-preview__magic-loader span {
8401
+ width: 5px;
8402
+ height: 5px;
8403
+ border-radius: 999px;
8404
+ background: currentcolor;
8405
+ opacity: 0.45;
8406
+ animation: fleetbase-ai-create-order-dot 900ms ease-in-out infinite;
8407
+ }
8408
+
8409
+ .fleetbase-ai-create-order-preview__magic-loader span:nth-child(2) {
8410
+ animation-delay: 120ms;
8411
+ }
8412
+
8413
+ .fleetbase-ai-create-order-preview__magic-loader span:nth-child(3) {
8414
+ animation-delay: 240ms;
8415
+ }
8416
+
8417
+ @keyframes fleetbase-ai-create-order-dot {
8418
+ 0%,
8419
+ 80%,
8420
+ 100% {
8421
+ opacity: 0.35;
8422
+ transform: translateY(0);
8423
+ }
8424
+
8425
+ 40% {
8426
+ opacity: 1;
8427
+ transform: translateY(-2px);
8428
+ }
8429
+ }
8430
+
8431
+ .fleetbase-ai-create-order-preview__completed {
8432
+ border: 1px solid rgb(34 197 94 / 20%);
8433
+ background: rgb(22 163 74 / 10%);
8434
+ color: #166534;
8435
+ }
8436
+
8437
+ .fleetbase-ai-create-order-preview__completed-icon {
8438
+ display: inline-flex;
8439
+ width: 26px;
8440
+ height: 26px;
8441
+ flex: 0 0 26px;
8442
+ align-items: center;
8443
+ justify-content: center;
8444
+ border-radius: 999px;
8445
+ background: rgb(34 197 94 / 16%);
8446
+ }
8447
+
8448
+ .fleetbase-ai-create-order-preview__completed-copy {
8449
+ display: flex;
8450
+ min-width: 0;
8451
+ flex: 1 1 auto;
8452
+ flex-direction: column;
8453
+ gap: 2px;
8454
+ }
8455
+
8456
+ .fleetbase-ai-create-order-preview__completed-copy strong,
8457
+ .fleetbase-ai-create-order-preview__completed-copy span {
8458
+ overflow: hidden;
8459
+ text-overflow: ellipsis;
8460
+ white-space: nowrap;
8461
+ }
8462
+
8463
+ .fleetbase-ai-create-order-preview__completed-copy span {
8464
+ opacity: 0.8;
8465
+ }
8466
+
8467
+ .fleetbase-ai-create-order-preview__cancelled {
8468
+ border: 1px solid rgb(239 68 68 / 20%);
8469
+ background: rgb(239 68 68 / 10%);
8470
+ color: #991b1b;
8471
+ }
8472
+
8473
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__map,
8474
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__field-row:hover,
8475
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__field-row:focus-within {
8476
+ border-color: rgb(148 163 184 / 20%);
8477
+ background: rgb(15 23 42 / 30%);
8478
+ }
8479
+
8480
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__field-copy > strong,
8481
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__inline-select,
8482
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__inline-native-select,
8483
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__inline-datetime,
8484
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__inline-textarea,
8485
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__inline-select.ember-power-select-trigger,
8486
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__select-label {
8487
+ color: #f8fafc;
8488
+ }
8489
+
8490
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__field-copy > span,
8491
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__edit-button,
8492
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__refreshing,
8493
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__empty-map {
8494
+ color: #cbd5e1;
8495
+ }
8496
+
8497
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__toggle-row {
8498
+ border-top-color: rgb(148 163 184 / 18%);
8499
+ }
8500
+
8501
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__inline-pill {
8502
+ background: rgb(148 163 184 / 14%);
8503
+ color: #cbd5e1;
8504
+ }
8505
+
8506
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__inline-pill:hover {
8507
+ background: rgb(96 165 250 / 14%);
8508
+ color: #bfdbfe;
8509
+ }
8510
+
8511
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__applying {
8512
+ border-color: rgb(96 165 250 / 24%);
8513
+ background: rgb(30 64 175 / 24%);
8514
+ color: #bfdbfe;
8515
+ }
8516
+
8517
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__completed {
8518
+ border-color: rgb(74 222 128 / 22%);
8519
+ background: rgb(20 83 45 / 28%);
8520
+ color: #bbf7d0;
8521
+ }
8522
+
8523
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__completed-icon {
8524
+ background: rgb(34 197 94 / 18%);
8525
+ }
8526
+
8527
+ body[data-theme='dark'] .fleetbase-ai-create-order-preview__cancelled {
8528
+ border-color: rgb(248 113 113 / 22%);
8529
+ background: rgb(127 29 29 / 22%);
8530
+ color: #fecaca;
8531
+ }
8532
+
8533
+ @media (prefers-reduced-motion: reduce) {
8534
+ .fleetbase-ai-create-order-preview__magic-loader span {
8535
+ animation: none;
8536
+ }
8537
+ }
@@ -1,17 +1,15 @@
1
1
  export default function calculateMapDrawerDropdownPosition(trigger, content) {
2
- const dropdownRoot = trigger?.closest?.('.ember-basic-dropdown');
3
2
  const drawerPanel = trigger?.closest?.('.next-drawer-panel');
4
3
 
5
- if (!trigger || !dropdownRoot) {
4
+ if (!trigger) {
6
5
  return { style: {} };
7
6
  }
8
7
 
9
8
  const triggerRect = trigger.getBoundingClientRect();
10
- const rootRect = dropdownRoot.getBoundingClientRect();
11
9
  const drawerRect = drawerPanel?.getBoundingClientRect?.();
12
10
  const contentRect = content?.getBoundingClientRect?.();
13
11
  const contentWidth = contentRect?.width || 224;
14
- // const contentHeight = contentRect?.height || 240;
12
+ const contentHeight = contentRect?.height || 240;
15
13
  const gap = 6;
16
14
 
17
15
  const viewportRect = {
@@ -21,21 +19,21 @@ export default function calculateMapDrawerDropdownPosition(trigger, content) {
21
19
  left: 0,
22
20
  };
23
21
  const boundaryRect = drawerRect ?? viewportRect;
24
- const minLeft = boundaryRect.left - rootRect.left + gap;
25
- const maxLeft = boundaryRect.right - rootRect.left - contentWidth - gap;
26
- // const minTop = boundaryRect.top - rootRect.top + gap;
27
- // const maxTop = boundaryRect.bottom - rootRect.top - contentHeight - gap;
22
+ const minLeft = boundaryRect.left + gap;
23
+ const maxLeft = boundaryRect.right - contentWidth - gap;
24
+ const minTop = boundaryRect.top;
25
+ const maxTop = boundaryRect.bottom - contentHeight + 8;
28
26
 
29
- const preferredLeft = triggerRect.left - rootRect.left - contentWidth - gap;
30
- // const preferredTop = triggerRect.top - rootRect.top;
27
+ const preferredLeft = triggerRect.left - contentWidth - gap;
28
+ const preferredTop = triggerRect.top;
31
29
  const left = clamp(preferredLeft, minLeft, Math.max(minLeft, maxLeft));
32
- const top = 0; //clamp(preferredTop, minTop, Math.max(minTop, maxTop));
30
+ const top = clamp(preferredTop, minTop, Math.max(minTop, maxTop));
33
31
 
34
32
  return {
35
33
  style: {
36
34
  position: 'absolute',
37
- left: `${left}px`,
38
- top: `${top}px`,
35
+ left,
36
+ top,
39
37
  marginTop: '0px',
40
38
  zIndex: '10000',
41
39
  },
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/ai/create-order-preview';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/ai/route-preview-map';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/components/fleet/hierarchy-tree';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/services/route-engine';
package/composer.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbase/fleetops-api",
3
- "version": "0.6.56",
3
+ "version": "0.6.58",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "keywords": [
6
6
  "fleetbase-extension",
@@ -86,10 +86,17 @@
86
86
  }
87
87
  },
88
88
  "scripts": {
89
+ "coverage:baseline": [
90
+ "@test:coverage:clover",
91
+ "@coverage:summary"
92
+ ],
93
+ "coverage:summary": "php scripts/coverage-summary.php coverage/clover.xml",
89
94
  "lint": "php-cs-fixer fix -v",
90
95
  "test:lint": "php-cs-fixer fix -v --dry-run",
96
+ "test:coverage": "php scripts/coverage-runner.php --coverage --coverage-text --colors=always",
97
+ "test:coverage:clover": "mkdir -p coverage && php scripts/coverage-runner.php --coverage-clover=coverage/clover.xml --colors=always",
91
98
  "test:types": "phpstan analyse --ansi --memory-limit=4G",
92
- "test:unit": "pest --colors=always",
99
+ "test:unit": "php scripts/pest-file-runner.php --colors=always",
93
100
  "test": [
94
101
  "@test:lint",
95
102
  "@test:types",
package/extension.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Fleet-Ops",
3
- "version": "0.6.56",
3
+ "version": "0.6.58",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "repository": "https://github.com/fleetbase/fleetops",
6
6
  "license": "AGPL-3.0-or-later",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetbase/fleetops-engine",
3
- "version": "0.6.56",
3
+ "version": "0.6.58",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "fleetbase": {
6
6
  "route": "fleet-ops"
@@ -25,7 +25,9 @@
25
25
  "scripts": {
26
26
  "build": "ember build --environment=production",
27
27
  "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\"",
28
- "lint:css": "stylelint \"**/*.css\"",
28
+ "check:css-alpha": "node scripts/normalize-rgba-alpha.js --check",
29
+ "fix:css-alpha": "node scripts/normalize-rgba-alpha.js",
30
+ "lint:css": "npm run check:css-alpha && stylelint \"**/*.css\"",
29
31
  "lint:css:fix": "concurrently \"npm:lint:css -- --fix\"",
30
32
  "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\"",
31
33
  "lint:hbs": "ember-template-lint .",
@@ -42,8 +44,8 @@
42
44
  },
43
45
  "dependencies": {
44
46
  "@babel/core": "^7.23.2",
45
- "@fleetbase/ember-core": "^0.3.23",
46
- "@fleetbase/ember-ui": "^0.3.38",
47
+ "@fleetbase/ember-core": "^0.3.24",
48
+ "@fleetbase/ember-ui": "^0.3.41",
47
49
  "@fleetbase/fleetops-data": "^0.1.40",
48
50
  "@fleetbase/leaflet-routing-machine": "^3.2.17",
49
51
  "@fortawesome/ember-fontawesome": "^2.0.0",
package/phpunit.xml.dist CHANGED
@@ -8,9 +8,9 @@
8
8
  <directory suffix=".php">./server/tests</directory>
9
9
  </testsuite>
10
10
  </testsuites>
11
- <filter>
12
- <whitelist processUncoveredFilesFromWhitelist="true">
11
+ <source>
12
+ <include>
13
13
  <directory suffix=".php">./server/src</directory>
14
- </whitelist>
15
- </filter>
14
+ </include>
15
+ </source>
16
16
  </phpunit>
@@ -5,4 +5,5 @@ allowBuilds:
5
5
  '@fortawesome/free-solid-svg-icons': false
6
6
  core-js: false
7
7
  fsevents: false
8
- minimumReleaseAge: 0
8
+ minimumReleaseAge: 0
9
+ packages: []