@fleetbase/fleetops-engine 0.6.52 → 0.6.54
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.
- package/addon/components/device/details.hbs +106 -135
- package/addon/components/device/details.js +174 -1
- package/addon/components/device/panel-header.hbs +2 -2
- package/addon/components/layout/fleet-ops-sidebar/operations-monitor.hbs +201 -0
- package/addon/components/layout/fleet-ops-sidebar/operations-monitor.js +654 -0
- package/addon/components/layout/fleet-ops-sidebar.hbs +19 -233
- package/addon/components/layout/fleet-ops-sidebar.js +364 -395
- package/addon/components/maintenance-schedule/form.js +1 -0
- package/addon/components/order/form/details.hbs +1 -43
- package/addon/components/order/form/details.js +18 -53
- package/addon/components/order/form/orchestrator-constraints.hbs +40 -0
- package/addon/components/order/form/orchestrator-constraints.js +61 -0
- package/addon/components/order/form/payload.js +50 -2
- package/addon/components/order/form/route.js +15 -0
- package/addon/components/order/form/service-rate.hbs +62 -11
- package/addon/components/order/form/service-rate.js +124 -2
- package/addon/components/order/form.hbs +2 -0
- package/addon/components/telematic/details.hbs +7 -1
- package/addon/components/telematic/form.js +16 -8
- package/addon/components/work-order/details.hbs +5 -1
- package/addon/components/work-order/form.hbs +26 -4
- package/addon/components/work-order/form.js +5 -1
- package/addon/controllers/connectivity/devices/index/details/events.js +244 -1
- package/addon/controllers/connectivity/devices/index/details/sensors.js +199 -0
- package/addon/controllers/connectivity/devices/index/details/vehicle.js +74 -0
- package/addon/controllers/connectivity/devices/index/details.js +12 -0
- package/addon/controllers/connectivity/devices/index.js +4 -1
- package/addon/controllers/connectivity/telematics/details/attachments.js +220 -54
- package/addon/controllers/connectivity/telematics/details/devices.js +90 -41
- package/addon/controllers/connectivity/telematics/details/events.js +39 -11
- package/addon/controllers/connectivity/telematics/details/sensors.js +39 -19
- package/addon/controllers/maintenance/index.js +100 -0
- package/addon/controllers/maintenance/work-orders/index.js +18 -1
- package/addon/controllers/management/fuel-transactions/index.js +1 -1
- package/addon/controllers/management/index.js +88 -0
- package/addon/controllers/settings/index.js +142 -0
- package/addon/extension.js +21 -0
- package/addon/routes/analytics/index.js +3 -0
- package/addon/routes/connectivity/devices/index/details/events.js +37 -1
- package/addon/routes/connectivity/devices/index/details/sensors.js +35 -0
- package/addon/routes/connectivity/devices/index/details/vehicle.js +7 -0
- package/addon/routes/connectivity/devices/index.js +3 -0
- package/addon/routes/connectivity/telematics/details/attachments.js +72 -9
- package/addon/routes/connectivity/telematics/details/devices.js +4 -0
- package/addon/routes/connectivity/telematics/details/sensors.js +1 -0
- package/addon/routes/connectivity/telematics/details.js +1 -1
- package/addon/routes/connectivity/telematics/edit.js +1 -1
- package/addon/routes/maintenance/index.js +3 -0
- package/addon/routes/maintenance/work-orders/index.js +3 -0
- package/addon/routes/settings/index.js +3 -0
- package/addon/routes.js +2 -0
- package/addon/services/order-creation.js +54 -1
- package/addon/services/order-validation.js +3 -2
- package/addon/services/service-rate-actions.js +1 -0
- package/addon/styles/fleetops-engine.css +1821 -6
- package/addon/templates/analytics/index.hbs +14 -0
- package/addon/templates/analytics/reports/index.hbs +4 -4
- package/addon/templates/connectivity/devices/index/details/events.hbs +85 -1
- package/addon/templates/connectivity/devices/index/details/sensors.hbs +73 -0
- package/addon/templates/connectivity/devices/index/details/vehicle.hbs +84 -0
- package/addon/templates/connectivity/telematics/details/attachments.hbs +198 -121
- package/addon/templates/connectivity/telematics/details/devices.hbs +4 -1
- package/addon/templates/connectivity/telematics/details/events.hbs +4 -1
- package/addon/templates/connectivity/telematics/details/sensors.hbs +3 -0
- package/addon/templates/maintenance/index.hbs +113 -0
- package/addon/templates/management/fuel-transactions/index/details.hbs +1 -1
- package/addon/templates/management/index.hbs +109 -73
- package/addon/templates/management/vehicles/index/edit.hbs +1 -1
- package/addon/templates/operations/orders/index.hbs +1 -1
- package/addon/templates/operations/service-rates/index.hbs +1 -1
- package/addon/templates/settings/index.hbs +83 -0
- package/addon/templates/settings/routing.hbs +2 -2
- package/addon/utils/fleet-ops-options.js +38 -0
- package/app/components/order/form/orchestrator-constraints.js +1 -0
- package/app/controllers/connectivity/devices/index/details/sensors.js +1 -0
- package/app/controllers/connectivity/devices/index/details/vehicle.js +1 -0
- package/app/controllers/maintenance/index.js +1 -0
- package/app/controllers/management/index.js +1 -0
- package/app/controllers/settings/index.js +1 -0
- package/app/routes/analytics/index.js +1 -0
- package/app/routes/connectivity/devices/index/details/sensors.js +1 -0
- package/app/routes/connectivity/devices/index/details/vehicle.js +1 -0
- package/app/routes/maintenance/index.js +1 -0
- package/app/routes/settings/index.js +1 -0
- package/app/templates/analytics/index.js +1 -0
- package/app/templates/connectivity/devices/index/details/sensors.js +1 -0
- package/app/templates/connectivity/devices/index/details/vehicle.js +1 -0
- package/app/templates/maintenance/index.js +1 -0
- package/app/templates/management/index.js +1 -0
- package/app/templates/settings/index.js +1 -0
- package/composer.json +1 -1
- package/extension.json +1 -1
- package/package.json +3 -3
- package/server/migrations/2025_08_28_054930_create_work_orders_table.php +1 -0
- package/server/migrations/2026_06_15_000001_normalize_device_attachable_vehicle_morph_types.php +30 -0
- package/server/migrations/2026_06_18_000001_add_category_to_work_orders_table.php +32 -0
- package/server/seeders/Testing/MaintenanceSeeder.php +5 -4
- package/server/src/Console/Commands/FixInvalidPolymorphicRelationTypeNamespaces.php +1 -0
- package/server/src/Console/Commands/ProcessMaintenanceTriggers.php +1 -0
- package/server/src/Console/Commands/SyncTelematics.php +89 -0
- package/server/src/Exceptions/TelematicProviderException.php +13 -2
- package/server/src/Http/Controllers/Api/v1/OrderController.php +6 -21
- package/server/src/Http/Controllers/Internal/v1/DeviceController.php +112 -11
- package/server/src/Http/Controllers/Internal/v1/DeviceEventController.php +16 -5
- package/server/src/Http/Controllers/Internal/v1/FleetController.php +9 -0
- package/server/src/Http/Controllers/Internal/v1/HubController.php +300 -0
- package/server/src/Http/Controllers/Internal/v1/LiveController.php +177 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceScheduleController.php +1 -0
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +4 -32
- package/server/src/Http/Controllers/Internal/v1/SearchController.php +506 -0
- package/server/src/Http/Controllers/Internal/v1/ServiceQuoteController.php +4 -4
- package/server/src/Http/Controllers/Internal/v1/TelematicController.php +1 -1
- package/server/src/Http/Controllers/Internal/v1/VehicleController.php +94 -10
- package/server/src/Http/Filter/DeviceEventFilter.php +44 -0
- package/server/src/Http/Filter/DeviceFilter.php +131 -0
- package/server/src/Http/Filter/DriverFilter.php +6 -0
- package/server/src/Http/Filter/SensorFilter.php +125 -0
- package/server/src/Http/Filter/VehicleFilter.php +19 -0
- package/server/src/Http/Requests/CreateDriverRequest.php +14 -13
- package/server/src/Http/Requests/Internal/CreateDriverRequest.php +1 -0
- package/server/src/Http/Resources/v1/Driver.php +11 -2
- package/server/src/Http/Resources/v1/WorkOrder.php +1 -0
- package/server/src/Jobs/FinalizeApiOrderCreation.php +47 -0
- package/server/src/Jobs/FinalizeInternalOrderCreation.php +35 -0
- package/server/src/Jobs/NotifyBulkAssignedDriver.php +47 -0
- package/server/src/Jobs/SyncTelematicDevicesJob.php +181 -66
- package/server/src/Models/Device.php +15 -1
- package/server/src/Models/DeviceEvent.php +1 -1
- package/server/src/Models/Driver.php +17 -1
- package/server/src/Models/Sensor.php +15 -2
- package/server/src/Models/Telematic.php +1 -1
- package/server/src/Models/Vehicle.php +5 -1
- package/server/src/Models/WorkOrder.php +5 -2
- package/server/src/Observers/DriverObserver.php +3 -3
- package/server/src/Observers/FleetObserver.php +23 -0
- package/server/src/Observers/VehicleObserver.php +3 -3
- package/server/src/Providers/FleetOpsServiceProvider.php +12 -0
- package/server/src/Support/LiveCacheService.php +1 -1
- package/server/src/Support/Telematics/Providers/AfaqyProvider.php +188 -28
- package/server/src/Support/Telematics/Providers/SafeeProvider.php +44 -3
- package/server/src/Support/Telematics/TelematicService.php +330 -30
- package/server/src/routes.php +10 -0
- package/server/tests/DeviceFilterTest.php +36 -0
- package/server/tests/HubRoutesTest.php +62 -0
- package/server/tests/OperationsMonitorEndpointTest.php +38 -0
- package/server/tests/OrderQueuedClosureRegressionTest.php +36 -0
- package/server/tests/TelematicsHardeningTest.php +455 -3
- package/server/tests/VehicleDriverAssignmentTest.php +27 -0
- package/translations/ar-ae.yml +1 -1
- package/translations/en-us.yaml +1 -0
- package/translations/vi-vn.yaml +1 -1
|
@@ -1,235 +1,21 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{{#each this.universeMenuItems as |menuItem|}}
|
|
17
|
-
{{#if menuItem.renderComponentInPlace}}
|
|
18
|
-
{{component menuItem.component}}
|
|
19
|
-
{{else}}
|
|
20
|
-
<Layout::Sidebar::Item
|
|
21
|
-
@onClick={{fn this.universe.transitionMenuItem (concat this.routePrefix "virtual") menuItem}}
|
|
22
|
-
@menuItem={{menuItem}}
|
|
23
|
-
@icon={{menuItem.icon}}
|
|
24
|
-
@iconComponent={{menuItem.iconComponent}}
|
|
25
|
-
@iconComponentOptions={{menuItem.iconComponentOptions}}
|
|
26
|
-
@iconSize={{menuItem.iconSize}}
|
|
27
|
-
@iconPrefix={{menuItem.iconPrefix}}
|
|
28
|
-
@iconClass={{menuItem.iconClass}}
|
|
29
|
-
@rightSideComponent={{menuItem.rightSideComponent}}
|
|
30
|
-
@rightSideComponentContext={{menuItem.rightSideComponentContext}}
|
|
31
|
-
@rightSideStatus={{menuItem.rightSideStatus}}
|
|
32
|
-
@rightSideStatusText={{menuItem.rightSideStatusText}}
|
|
33
|
-
@hideRightSideStatusDot={{menuItem.hideRightSideStatusDot}}
|
|
34
|
-
@rightSideStatusClass={{menuItem.rightSideStatusClass}}
|
|
35
|
-
@disableRightSideStatusHumanize={{menuItem.disableRightSideStatusHumanize}}
|
|
36
|
-
@dropdownButton={{menuItem.dropdownButton}}
|
|
37
|
-
@dropdownButtonActions={{menuItem.dropdownButtonActions}}
|
|
38
|
-
@dropdownButtonIcon={{menuItem.dropdownButtonIcon}}
|
|
39
|
-
@dropdownButtonIconPrefix={{menuItem.dropdownButtonIconPrefix}}
|
|
40
|
-
@dropdownButtonText={{menuItem.dropdownButtonText}}
|
|
41
|
-
@dropdownButtonCalculatePosition={{menuItem.dropdownButtonCalculatePosition}}
|
|
42
|
-
@dropdownButtonRenderInPlace={{menuItem.dropdownButtonRenderInPlace}}
|
|
43
|
-
@dropdownButtonMenuLabel={{menuItem.dropdownButtonMenuLabel}}
|
|
44
|
-
@dropdownButtonWrapperClass={{menuItem.dropdownButtonWrapperClass}}
|
|
45
|
-
@dropdownButtonTriggerClass={{menuItem.dropdownButtonTriggerClass}}
|
|
46
|
-
@registerDropdownButtonAPI={{menuItem.registerDropdownButtonAPI}}
|
|
47
|
-
@permission={{menuItem.permission}}
|
|
48
|
-
@visible={{menuItem.visible}}
|
|
49
|
-
>{{if menuItem.intl (t menuItem.intl) menuItem.title}}</Layout::Sidebar::Item>
|
|
50
|
-
{{/if}}
|
|
51
|
-
{{/each}}
|
|
52
|
-
{{#each this.menuPanels as |menuPanel|}}
|
|
53
|
-
<Layout::Sidebar::Panel
|
|
54
|
-
@open={{menuPanel.open}}
|
|
55
|
-
@title={{if menuPanel.intl (t menuPanel.intl) menuPanel.title}}
|
|
56
|
-
@titleIcon={{menuPanel.icon}}
|
|
57
|
-
@caretLeft={{true}}
|
|
58
|
-
@caretIcon="caret"
|
|
59
|
-
@hideCaret={{menuPanel.hideCaret}}
|
|
60
|
-
@toggleOnCaretOnly={{menuPanel.toggleOnCaretOnly}}
|
|
61
|
-
@onClickPanelTitle={{menuPanel.onClickPanelTitle}}
|
|
62
|
-
@wrapperClass={{menuPanel.wrapperClass}}
|
|
63
|
-
@dropdownButton={{menuPanel.dropdownButton}}
|
|
64
|
-
@dropdownButtonActions={{menuPanel.dropdownButtonActions}}
|
|
65
|
-
@dropdownButtonRenderInPlace={{menuPanel.dropdownButtonRenderInPlace}}
|
|
66
|
-
@dropdownHorizontalPosition={{menuPanel.dropdownHorizontalPosition}}
|
|
67
|
-
@dropdownButtonMenuLabel={{menuPanel.dropdownButtonMenuLabel}}
|
|
68
|
-
@onToggle={{menuPanel.onToggle}}
|
|
69
|
-
>
|
|
70
|
-
{{#each menuPanel.items as |menuItem|}}
|
|
71
|
-
{{#if menuItem.renderComponentInPlace}}
|
|
72
|
-
{{component
|
|
73
|
-
menuItem.component
|
|
74
|
-
menuItem=menuItem
|
|
75
|
-
title=(if menuItem.intl (t menuItem.intl) menuItem.title)
|
|
76
|
-
onClick=menuItem.onClick
|
|
77
|
-
route=(concat this.routePrefix menuItem.route)
|
|
78
|
-
icon=menuItem.icon
|
|
79
|
-
iconComponent=menuItem.iconComponent
|
|
80
|
-
iconComponentOptions=menuItem.iconComponentOptions
|
|
81
|
-
iconSize=menuItem.iconSize
|
|
82
|
-
iconPrefix=menuItem.iconPrefix
|
|
83
|
-
iconClass=menuItem.iconClass
|
|
84
|
-
rightSideComponent=menuItem.rightSideComponent
|
|
85
|
-
rightSideComponentContext=menuItem.rightSideComponentContext
|
|
86
|
-
rightSideStatus=menuItem.rightSideStatus
|
|
87
|
-
rightSideStatusText=menuItem.rightSideStatusText
|
|
88
|
-
hideRightSideStatusDot=menuItem.hideRightSideStatusDot
|
|
89
|
-
rightSideStatusClass=menuItem.rightSideStatusClass
|
|
90
|
-
disableRightSideStatusHumanize=menuItem.disableRightSideStatusHumanize
|
|
91
|
-
dropdownButton=menuItem.dropdownButton
|
|
92
|
-
dropdownButtonActions=menuItem.dropdownButtonActions
|
|
93
|
-
dropdownButtonIcon=menuItem.dropdownButtonIcon
|
|
94
|
-
dropdownButtonIconPrefix=menuItem.dropdownButtonIconPrefix
|
|
95
|
-
dropdownButtonText=menuItem.dropdownButtonText
|
|
96
|
-
dropdownButtonCalculatePosition=menuItem.dropdownButtonCalculatePosition
|
|
97
|
-
dropdownButtonRenderInPlace=menuItem.dropdownButtonRenderInPlace
|
|
98
|
-
dropdownButtonMenuLabel=menuItem.dropdownButtonMenuLabel
|
|
99
|
-
dropdownButtonWrapperClass=menuItem.dropdownButtonWrapperClass
|
|
100
|
-
dropdownButtonTriggerClass=menuItem.dropdownButtonTriggerClass
|
|
101
|
-
registerDropdownButtonAPI=menuItem.registerDropdownButtonAPI
|
|
102
|
-
permission=menuItem.permission
|
|
103
|
-
visible=menuItem.visible
|
|
104
|
-
}}
|
|
105
|
-
{{else}}
|
|
106
|
-
<Layout::Sidebar::Item
|
|
107
|
-
@onClick={{if menuItem._virtual (fn this.universe.transitionMenuItem (concat this.routePrefix "virtual") menuItem) menuItem.onClick}}
|
|
108
|
-
@menuItem={{menuItem}}
|
|
109
|
-
@route={{if menuItem._virtual null (concat this.routePrefix menuItem.route)}}
|
|
110
|
-
@icon={{menuItem.icon}}
|
|
111
|
-
@iconComponent={{menuItem.iconComponent}}
|
|
112
|
-
@iconComponentOptions={{menuItem.iconComponentOptions}}
|
|
113
|
-
@iconSize={{menuItem.iconSize}}
|
|
114
|
-
@iconPrefix={{menuItem.iconPrefix}}
|
|
115
|
-
@iconClass={{menuItem.iconClass}}
|
|
116
|
-
@rightSideComponent={{menuItem.rightSideComponent}}
|
|
117
|
-
@rightSideComponentContext={{menuItem.rightSideComponentContext}}
|
|
118
|
-
@rightSideStatus={{menuItem.rightSideStatus}}
|
|
119
|
-
@rightSideStatusText={{menuItem.rightSideStatusText}}
|
|
120
|
-
@hideRightSideStatusDot={{menuItem.hideRightSideStatusDot}}
|
|
121
|
-
@rightSideStatusClass={{menuItem.rightSideStatusClass}}
|
|
122
|
-
@disableRightSideStatusHumanize={{menuItem.disableRightSideStatusHumanize}}
|
|
123
|
-
@dropdownButton={{menuItem.dropdownButton}}
|
|
124
|
-
@dropdownButtonActions={{menuItem.dropdownButtonActions}}
|
|
125
|
-
@dropdownButtonIcon={{menuItem.dropdownButtonIcon}}
|
|
126
|
-
@dropdownButtonIconPrefix={{menuItem.dropdownButtonIconPrefix}}
|
|
127
|
-
@dropdownButtonText={{menuItem.dropdownButtonText}}
|
|
128
|
-
@dropdownButtonCalculatePosition={{menuItem.dropdownButtonCalculatePosition}}
|
|
129
|
-
@dropdownButtonRenderInPlace={{menuItem.dropdownButtonRenderInPlace}}
|
|
130
|
-
@dropdownButtonMenuLabel={{menuItem.dropdownButtonMenuLabel}}
|
|
131
|
-
@dropdownButtonWrapperClass={{menuItem.dropdownButtonWrapperClass}}
|
|
132
|
-
@dropdownButtonTriggerClass={{menuItem.dropdownButtonTriggerClass}}
|
|
133
|
-
@registerDropdownButtonAPI={{menuItem.registerDropdownButtonAPI}}
|
|
134
|
-
@permission={{menuItem.permission}}
|
|
135
|
-
@visible={{menuItem.visible}}
|
|
136
|
-
>{{if menuItem.intl (t menuItem.intl) menuItem.title}}</Layout::Sidebar::Item>
|
|
137
|
-
{{/if}}
|
|
1
|
+
<Layout::Sidebar::Navigator
|
|
2
|
+
@items={{this.navigationItems}}
|
|
3
|
+
@primaryAction={{this.createOrderAction}}
|
|
4
|
+
@searchPlaceholder="Search Fleet-Ops..."
|
|
5
|
+
@searchProvider={{this.searchNavigation}}
|
|
6
|
+
@initialActiveParentSync={{false}}
|
|
7
|
+
class="fleet-ops-sidebar-navigator"
|
|
8
|
+
>
|
|
9
|
+
<:footer as |state|>
|
|
10
|
+
{{#if (or (not state.isNested) (eq state.currentParent.id "operations"))}}
|
|
11
|
+
<Layout::FleetOpsSidebar::OperationsMonitor />
|
|
12
|
+
{{/if}}
|
|
13
|
+
|
|
14
|
+
{{#each (get this.footerRegistryComponents (or state.currentParent.id "root")) as |menuItem|}}
|
|
15
|
+
{{component menuItem.component}}
|
|
138
16
|
{{/each}}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
{{#each (get this (concat "universe" (capitalize section) "MenuItems")) as |menuItem|}}
|
|
143
|
-
{{#if menuItem.renderComponentInPlace}}
|
|
144
|
-
{{component menuItem.component}}
|
|
145
|
-
{{else}}
|
|
146
|
-
<Layout::Sidebar::Item
|
|
147
|
-
@onClick={{fn this.universe.transitionMenuItem (concat this.routePrefix "virtual") menuItem}}
|
|
148
|
-
@menuItem={{menuItem}}
|
|
149
|
-
@icon={{menuItem.icon}}
|
|
150
|
-
@iconComponent={{menuItem.iconComponent}}
|
|
151
|
-
@iconComponentOptions={{menuItem.iconComponentOptions}}
|
|
152
|
-
@iconSize={{menuItem.iconSize}}
|
|
153
|
-
@iconPrefix={{menuItem.iconPrefix}}
|
|
154
|
-
@iconClass={{menuItem.iconClass}}
|
|
155
|
-
@rightSideComponent={{menuItem.rightSideComponent}}
|
|
156
|
-
@rightSideComponentContext={{menuItem.rightSideComponentContext}}
|
|
157
|
-
@rightSideStatus={{menuItem.rightSideStatus}}
|
|
158
|
-
@rightSideStatusText={{menuItem.rightSideStatusText}}
|
|
159
|
-
@hideRightSideStatusDot={{menuItem.hideRightSideStatusDot}}
|
|
160
|
-
@rightSideStatusClass={{menuItem.rightSideStatusClass}}
|
|
161
|
-
@disableRightSideStatusHumanize={{menuItem.disableRightSideStatusHumanize}}
|
|
162
|
-
@dropdownButton={{menuItem.dropdownButton}}
|
|
163
|
-
@dropdownButtonActions={{menuItem.dropdownButtonActions}}
|
|
164
|
-
@dropdownButtonIcon={{menuItem.dropdownButtonIcon}}
|
|
165
|
-
@dropdownButtonIconPrefix={{menuItem.dropdownButtonIconPrefix}}
|
|
166
|
-
@dropdownButtonText={{menuItem.dropdownButtonText}}
|
|
167
|
-
@dropdownButtonCalculatePosition={{menuItem.dropdownButtonCalculatePosition}}
|
|
168
|
-
@dropdownButtonRenderInPlace={{menuItem.dropdownButtonRenderInPlace}}
|
|
169
|
-
@dropdownButtonMenuLabel={{menuItem.dropdownButtonMenuLabel}}
|
|
170
|
-
@dropdownButtonWrapperClass={{menuItem.dropdownButtonWrapperClass}}
|
|
171
|
-
@dropdownButtonTriggerClass={{menuItem.dropdownButtonTriggerClass}}
|
|
172
|
-
@registerDropdownButtonAPI={{menuItem.registerDropdownButtonAPI}}
|
|
173
|
-
@permission={{menuItem.permission}}
|
|
174
|
-
@visible={{menuItem.visible}}
|
|
175
|
-
>{{if menuItem.intl (t menuItem.intl) menuItem.title}}</Layout::Sidebar::Item>
|
|
176
|
-
{{/if}}
|
|
177
|
-
{{/each}}
|
|
178
|
-
{{/if}}
|
|
179
|
-
{{/each}}
|
|
180
|
-
{{/let}} --}}
|
|
181
|
-
</Layout::Sidebar::Panel>
|
|
182
|
-
{{/each}}
|
|
183
|
-
{{#each this.universeMenuPanels as |menuPanel|}}
|
|
184
|
-
<Layout::Sidebar::Panel
|
|
185
|
-
@open={{menuPanel.open}}
|
|
186
|
-
@title={{if menuPanel.intl (t menuPanel.intl) menuPanel.title}}
|
|
187
|
-
@titleIcon={{menuPanel.icon}}
|
|
188
|
-
@caretLeft={{true}}
|
|
189
|
-
@caretIcon="caret"
|
|
190
|
-
@hideCaret={{menuPanel.hideCaret}}
|
|
191
|
-
@toggleOnCaretOnly={{menuPanel.toggleOnCaretOnly}}
|
|
192
|
-
@onClickPanelTitle={{menuPanel.onClickPanelTitle}}
|
|
193
|
-
@wrapperClass={{menuPanel.wrapperClass}}
|
|
194
|
-
@dropdownButton={{menuPanel.dropdownButton}}
|
|
195
|
-
@dropdownButtonActions={{menuPanel.dropdownButtonActions}}
|
|
196
|
-
@dropdownButtonRenderInPlace={{menuPanel.dropdownButtonRenderInPlace}}
|
|
197
|
-
@dropdownHorizontalPosition={{menuPanel.dropdownHorizontalPosition}}
|
|
198
|
-
@dropdownButtonMenuLabel={{menuPanel.dropdownButtonMenuLabel}}
|
|
199
|
-
>
|
|
200
|
-
{{#each menuPanel.items as |menuItem|}}
|
|
201
|
-
<Layout::Sidebar::Item
|
|
202
|
-
@onClick={{fn this.universe.transitionMenuItem (concat this.routePrefix "virtual") menuItem}}
|
|
203
|
-
@menuItem={{menuItem}}
|
|
204
|
-
@icon={{menuItem.icon}}
|
|
205
|
-
@iconComponent={{menuItem.iconComponent}}
|
|
206
|
-
@iconComponentOptions={{menuItem.iconComponentOptions}}
|
|
207
|
-
@iconSize={{menuItem.iconSize}}
|
|
208
|
-
@iconPrefix={{menuItem.iconPrefix}}
|
|
209
|
-
@iconClass={{menuItem.iconClass}}
|
|
210
|
-
@rightSideComponent={{menuItem.rightSideComponent}}
|
|
211
|
-
@rightSideComponentContext={{menuItem.rightSideComponentContext}}
|
|
212
|
-
@rightSideStatus={{menuItem.rightSideStatus}}
|
|
213
|
-
@rightSideStatusText={{menuItem.rightSideStatusText}}
|
|
214
|
-
@hideRightSideStatusDot={{menuItem.hideRightSideStatusDot}}
|
|
215
|
-
@rightSideStatusClass={{menuItem.rightSideStatusClass}}
|
|
216
|
-
@disableRightSideStatusHumanize={{menuItem.disableRightSideStatusHumanize}}
|
|
217
|
-
@dropdownButton={{menuItem.dropdownButton}}
|
|
218
|
-
@dropdownButtonActions={{menuItem.dropdownButtonActions}}
|
|
219
|
-
@dropdownButtonIcon={{menuItem.dropdownButtonIcon}}
|
|
220
|
-
@dropdownButtonIconPrefix={{menuItem.dropdownButtonIconPrefix}}
|
|
221
|
-
@dropdownButtonText={{menuItem.dropdownButtonText}}
|
|
222
|
-
@dropdownButtonCalculatePosition={{menuItem.dropdownButtonCalculatePosition}}
|
|
223
|
-
@dropdownButtonRenderInPlace={{menuItem.dropdownButtonRenderInPlace}}
|
|
224
|
-
@dropdownButtonMenuLabel={{menuItem.dropdownButtonMenuLabel}}
|
|
225
|
-
@dropdownButtonWrapperClass={{menuItem.dropdownButtonWrapperClass}}
|
|
226
|
-
@dropdownButtonTriggerClass={{menuItem.dropdownButtonTriggerClass}}
|
|
227
|
-
@registerDropdownButtonAPI={{menuItem.registerDropdownButtonAPI}}
|
|
228
|
-
@permission={{menuItem.permission}}
|
|
229
|
-
@visible={{menuItem.visible}}
|
|
230
|
-
>{{if menuItem.intl (t menuItem.intl) menuItem.title}}</Layout::Sidebar::Item>
|
|
231
|
-
{{/each}}
|
|
232
|
-
</Layout::Sidebar::Panel>
|
|
233
|
-
{{/each}}
|
|
17
|
+
</:footer>
|
|
18
|
+
</Layout::Sidebar::Navigator>
|
|
19
|
+
|
|
234
20
|
{{yield}}
|
|
235
|
-
<Spacer @height="10px" />
|
|
21
|
+
<Spacer @height="10px" />
|