@trackunit/iris-app 1.4.46 → 1.4.48

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/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 1.4.48 (2025-08-14)
2
+
3
+ ### 🧱 Updated Dependencies
4
+
5
+ - Updated iris-app-webpack-plugin to 1.4.45
6
+
7
+ ## 1.4.47 (2025-08-13)
8
+
9
+ This was a version bump only for iris-app to align it with other projects, there were no code changes.
10
+
1
11
  ## 1.4.46 (2025-08-13)
2
12
 
3
13
  This was a version bump only for iris-app to align it with other projects, there were no code changes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/iris-app",
3
- "version": "1.4.46",
3
+ "version": "1.4.48",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "main": "src/index.js",
6
6
  "generators": "./generators.json",
@@ -35,7 +35,7 @@
35
35
  "@trackunit/iris-app-build-utilities": "1.4.44",
36
36
  "@trackunit/shared-utils": "1.6.39",
37
37
  "@trackunit/iris-app-api": "1.4.44",
38
- "@trackunit/iris-app-webpack-plugin": "1.4.44",
38
+ "@trackunit/iris-app-webpack-plugin": "1.4.45",
39
39
  "tslib": "^2.6.2",
40
40
  "@trackunit/react-test-setup": "1.1.39"
41
41
  },
@@ -1,8 +1,7 @@
1
1
  ---
2
- globs: *.graphql
2
+ description: Time series API, get time series data from GraphQL. Machine insights data over time.
3
3
  alwaysApply: false
4
4
  ---
5
-
6
5
  # GraphQL Time Series API Usage
7
6
 
8
7
  This rule covers how to query time series data through GraphQL in IrisX App SDK using PromQL (Prometheus Query Language).
@@ -47,58 +46,211 @@ query GetInstantData($assetId: ID!, $time: DateTime!) {
47
46
 
48
47
  ## Common Metrics
49
48
 
50
- ### Machine Insights
51
- - `machine_insight_cumulative_operating_hours` - Operating hours
52
- - `machine_insight_cumulative_operating_hours_raw` - Raw operating hours
53
- - `machine_insight_engine_total_fuel_used` - Fuel consumed
54
- - `machine_insight_engine_total_idle_hours` - Idle hours
55
- - `machine_insight_cumulative_distance_travelled` - Distance
56
- - `machine_insight_cumulative_payload_total` - Payload
57
- - `machine_insight_cumulative_moving_hours` - Moving hours
58
- - `machine_insight_total_vehicle_distance` - Vehicle distance
59
- - `machine_insight_total_vehicle_distance_raw` - Raw vehicle distance
60
- - `machine_insight_speed` - Current speed
61
- - `machine_insight_altitude` - Current altitude
62
- - `machine_insight_engine_status` - Engine status
63
- - `machine_insight_battery_potential` - Battery voltage
64
- - `machine_insight_impact` - Impact detection
65
- - `machine_insight_accelerometer_x_axis` - X-axis acceleration
66
- - `machine_insight_accelerometer_y_axis` - Y-axis acceleration
67
- - `machine_insight_accelerometer_z_axis` - Z-axis acceleration
68
-
69
- ### Advanced Sensors
70
- - `advanced_sensor_run_1` - Run sensor 1
71
- - `advanced_sensor_run_1_raw` - Raw run sensor 1
72
- - `advanced_sensor_run_2` - Run sensor 2
73
- - `advanced_sensor_run_2_raw` - Raw run sensor 2
74
- - `advanced_sensor_run_4` - Run sensor 4
75
- - `advanced_sensor_input_1` - Digital input 1
76
- - `advanced_sensor_input_2` - Digital input 2
77
- - `advanced_sensor_input_3` - Digital input 3
78
- - `advanced_sensor_input_4` - Digital input 4
79
- - `advanced_sensor_input_7` - Digital input 7
80
- - `advanced_sensor_input_8` - Digital input 8
81
- - `advanced_sensor_input_change_counter_1` - Input change counter 1
82
- - `advanced_sensor_input_change_counter_2` - Input change counter 2
83
- - `advanced_sensor_input_change_counter_3` - Input change counter 3
84
- - `advanced_sensor_input_change_counter_4` - Input change counter 4
49
+ ### Machine Insights (Possible Insights, not all assets will have all Insights)
50
+ - `machine_insight_ac_average_frequency`
51
+ - `machine_insight_ac_average_phase_to_neutral_rms_voltage`
52
+ - `machine_insight_ac_average_phase_to_phase_rms_voltage`
53
+ - `machine_insight_ac_average_rms_current`
54
+ - `machine_insight_accelerometer_x_axis`
55
+ - `machine_insight_accelerometer_y_axis`
56
+ - `machine_insight_accelerometer_z_axis`
57
+ - `machine_insight_ac_phase_l1_active_power`
58
+ - `machine_insight_ac_phase_l1_frequency`
59
+ - `machine_insight_ac_phase_l1_l2_rms_voltage`
60
+ - `machine_insight_ac_phase_l1_netural_rms_voltage`
61
+ - `machine_insight_ac_phase_l1_neutral_rms_voltage`
62
+ - `machine_insight_ac_phase_l1_rms_current`
63
+ - `machine_insight_ac_phase_l2_active_power`
64
+ - `machine_insight_ac_phase_l2_frequency`
65
+ - `machine_insight_ac_phase_l2_l3_rms_voltage`
66
+ - `machine_insight_ac_phase_l2_netural_rms_voltage`
67
+ - `machine_insight_ac_phase_l2_neutral_rms_voltage`
68
+ - `machine_insight_ac_phase_l2_rms_current`
69
+ - `machine_insight_ac_phase_l3_active_power`
70
+ - `machine_insight_ac_phase_l3_frequency`
71
+ - `machine_insight_ac_phase_l3_l1_rms_voltage`
72
+ - `machine_insight_ac_phase_l3_netural_rms_voltage`
73
+ - `machine_insight_ac_phase_l3_neutral_rms_voltage`
74
+ - `machine_insight_ac_phase_l3_rms_current`
75
+ - `machine_insight_ac_total_active_power`
76
+ - `machine_insight_ac_total_apparent_power`
77
+ - `machine_insight_ac_total_power_factor`
78
+ - `machine_insight_ac_total_reactive_power`
79
+ - `machine_insight_ac_total_relative_active_power_load_percentage`
80
+ - `machine_insight_ac_total_relative_apparent_power_load_percentage`
81
+ - `machine_insight_ac_total_relative_load_percentage`
82
+ - `machine_insight_actual_engine_percent_torque`
83
+ - `machine_insight_after_treatment_diesel_exhaust_fluid_concentration`
84
+ - `machine_insight_after_treatment_diesel_exhaust_fluid_tank_level`
85
+ - `machine_insight_after_treatment_diesel_exhaust_fluid_tank_temperature`
86
+ - `machine_insight_after_treatment_diesel_particulate_filter_active_regeneration_state`
87
+ - `machine_insight_after_treatment_diesel_particulate_filter_active_regeneration_status`
88
+ - `machine_insight_after_treatment_diesel_particulate_filter_ash_load_percent`
89
+ - `machine_insight_after_treatment_diesel_particulate_filter_differential_pressure`
90
+ - `machine_insight_after_treatment_diesel_particulate_filter_intake_temperature`
91
+ - `machine_insight_after_treatment_diesel_particulate_filter_passive_regeneration_status`
92
+ - `machine_insight_after_treatment_diesel_particulate_filter_soot_load_percent`
93
+ - `machine_insight_after_treatment_diesel_particulate_filter_state`
94
+ - `machine_insight_after_treatment_diesel_particulate_filter_status`
95
+ - `machine_insight_after_treatment_diesel_particulate_filter_time_since_last_active_regeneration`
96
+ - `machine_insight_aftertreatment_diesel_particulate_filter_time_to_next_active_regeneration`
97
+ - `machine_insight_after_treatment_exhaust_temperature`
98
+ - `machine_insight_aftertreatment_scr_time_since_last_cleaning_event`
99
+ - `machine_insight_altitude`
100
+ - `machine_insight_ambient_air_temperature`
101
+ - `machine_insight_average_load_factor_last_24`
102
+ - `machine_insight_barometric_pressure`
103
+ - `machine_insight_battery_charge_cycles_count`
104
+ - `machine_insight_battery_charger_cumulative_input_energy`
105
+ - `machine_insight_battery_charger_input_current`
106
+ - `machine_insight_battery_charger_input_current_limit`
107
+ - `machine_insight_battery_charger_input_voltage`
108
+ - `machine_insight_battery_charger_output_current`
109
+ - `machine_insight_battery_charger_output_current_limit`
110
+ - `machine_insight_battery_charger_output_voltage`
111
+ - `machine_insight_battery_charger_power_line_state`
112
+ - `machine_insight_battery_charger_state`
113
+ - `machine_insight_battery_cumulative_discharged_energy`
114
+ - `machine_insight_battery_current`
115
+ - `machine_insight_battery_potential`
116
+ - `machine_insight_battery_remaining_charge_time`
117
+ - `machine_insight_battery_remaining_run_time`
118
+ - `machine_insight_battery_state_of_charge_percent`
119
+ - `machine_insight_battery_state_of_health_percent`
120
+ - `machine_insight_battery_temperature`
121
+ - `machine_insight_cumulative_active_regeneration_hours`
122
+ - `machine_insight_cumulative_co2_emissions`
123
+ - `machine_insight_cumulative_engine_hours`
124
+ - `machine_insight_cumulative_idle_hours`
125
+ - `machine_insight_cumulative_idle_non_operating_hours`
126
+ - `machine_insight_cumulative_load_count`
127
+ - `machine_insight_cumulative_moving_hours`
128
+ - `machine_insight_cumulative_operating_hours`
129
+ - `machine_insight_cumulative_payload_totals`
130
+ - `machine_insight_cumulative_productive_hours`
131
+ - `machine_insight_diesel_particulate_filter_active_regeneration_inhibited_due_to_inhibit_switch`
132
+ - `machine_insight_engine_air_filter_differential_pressure`
133
+ - `machine_insight_engine_coolant_level`
134
+ - `machine_insight_engine_coolant_pressure`
135
+ - `machine_insight_engine_coolant_temperature`
136
+ - `machine_insight_engine_exhaust_temperature`
137
+ - `machine_insight_engine_fuel_delivery_pressure`
138
+ - `machine_insight_engine_fuel_filter_differential_pressure`
139
+ - `machine_insight_engine_fuel_rate`
140
+ - `machine_insight_engine_fuel_temperature`
141
+ - `machine_insight_engine_intake_air_pressure`
142
+ - `machine_insight_engine_intake_air_temperature`
143
+ - `machine_insight_engine_intake_manifold_pressure`
144
+ - `machine_insight_engine_intake_manifold_temperature`
145
+ - `machine_insight_engine_intercooler_temperature`
146
+ - `machine_insight_engine_oil_filter_differential_pressure`
147
+ - `machine_insight_engine_oil_level`
148
+ - `machine_insight_engine_oil_pressure`
149
+ - `machine_insight_engine_oil_temperature`
150
+ - `machine_insight_engine_percent_load_at_current_speed`
151
+ - `machine_insight_engine_speed`
152
+ - `machine_insight_engine_status`
153
+ - `machine_insight_engine_total_fuel_used`
154
+ - `machine_insight_engine_total_idle_fuel_used`
155
+ - `machine_insight_engine_trip_fuel`
156
+ - `machine_insight_exhaust_system_high_temperature_lamp_command`
157
+ - `machine_insight_fuel_level`
158
+ - `machine_insight_fuel_tank_capacity`
159
+ - `machine_insight_fuel_used_last_24`
160
+ - `machine_insight_generator_total_kw_hours_export`
161
+ - `machine_insight_hydraulic_oil_filter_restriction_switch`
162
+ - `machine_insight_hydraulic_oil_level`
163
+ - `machine_insight_hydraulic_pressure`
164
+ - `machine_insight_hydraulic_temperature`
165
+ - `machine_insight_impact`
166
+ - `machine_insight_maximum_speed_last_24`
167
+ - `machine_insight_operation_status`
168
+ - `machine_insight_payload`
169
+ - `machine_insight_payload_percentage`
170
+ - `machine_insight_payload_temperature`
171
+ - `machine_insight_pitch_angle`
172
+ - `machine_insight_platform_elevated`
173
+ - `machine_insight_platform_height`
174
+ - `machine_insight_platform_height_percent`
175
+ - `machine_insight_platform_stowed`
176
+ - `machine_insight_rescue_mode_active`
177
+ - `machine_insight_road_surface_temperature`
178
+ - `machine_insight_roll_angle`
179
+ - `machine_insight_seat_belt_switch`
180
+ - `machine_insight_speed`
181
+ - `machine_insight_stabilizers_deployed`
182
+ - `machine_insight_total_power_take_off_hours`
183
+ - `machine_insight_total_vehicle_distance`
184
+ - `machine_insight_transmission_oil_temperature`
185
+ - `machine_insight_water_in_fuel_indicator`
186
+ - `machine_insight_wheel_based_vehicle_speed`
85
187
 
86
- ## PromQL Examples
188
+ ## PromQL Examples via GraphQL
87
189
 
88
190
  ### Calculate daily increases
89
- ```
90
- query: "increase(machine_insight_cumulative_operating_hours[1d])"
91
- step: "1d"
191
+ ```graphql
192
+ query IncreaseOperatingHours($assetId: ID!, $start: DateTime!, $end: DateTime!, $step: Duration!) {
193
+ asset(id: $assetId) {
194
+ timeSeries {
195
+ rangeQuery(
196
+ query: "increase(machine_insight_cumulative_operating_hours[1d])",
197
+ start: $start,
198
+ end: $end,
199
+ step: $step
200
+ ) {
201
+ data {
202
+ ... on TimeSeriesMatrixData {
203
+ result { values { timestamp value } }
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
92
210
  ```
93
211
 
94
212
  ### Filter with conditions
95
- ```
96
- query: "increase(machine_insight_engine_total_fuel_used[1d]) > 13"
213
+ ```graphql
214
+ query HighFuelConsumption($assetId: ID!, $start: DateTime!, $end: DateTime!, $step: Duration!) {
215
+ asset(id: $assetId) {
216
+ timeSeries {
217
+ rangeQuery(
218
+ query: "increase(machine_insight_engine_total_fuel_used[1d]) > 13",
219
+ start: $start,
220
+ end: $end,
221
+ step: $step
222
+ ) {
223
+ data {
224
+ ... on TimeSeriesMatrixData {
225
+ result { values { timestamp value } }
226
+ }
227
+ }
228
+ }
229
+ }
230
+ }
231
+ }
97
232
  ```
98
233
 
99
234
  ### Combine metrics
100
- ```
101
- query: "(increase(machine_insight_engine_total_fuel_used[1d]) > 13) and (increase(machine_insight_engine_total_idle_hours[1d]) > 4)"
235
+ ```graphql
236
+ query FuelWithHighIdle($assetId: ID!, $start: DateTime!, $end: DateTime!, $step: Duration!) {
237
+ asset(id: $assetId) {
238
+ timeSeries {
239
+ rangeQuery(
240
+ query: "(increase(machine_insight_engine_total_fuel_used[1d]) > 13) and (increase(machine_insight_engine_total_idle_hours[1d]) > 4)",
241
+ start: $start,
242
+ end: $end,
243
+ step: $step
244
+ ) {
245
+ data {
246
+ ... on TimeSeriesMatrixData {
247
+ result { values { timestamp value } }
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }
253
+ }
102
254
  ```
103
255
 
104
256
  ## Key Points
@@ -1,109 +1,86 @@
1
1
  ---
2
- description:
3
- globs:
4
- alwaysApply: false
2
+ alwaysApply: true
5
3
  ---
6
- # Structured Development
7
-
8
- Guidelines for following the Structured Development pattern and managing task lists in Markdown files to track project progress.
9
-
10
- ## Clarification step
11
-
12
- Always take into account significant questions that require answers prior to implementation. Before proceeding with development, pose these inquiries to the user.
13
-
14
- ## Task List step
15
-
16
- 1. Create task lists in a markdown file (place it in the root in a folder calld "structured-development"):
17
- - Use `TASKS.md` or a descriptive name relevant to the feature (e.g., `ASSISTANT_CHAT.md`)
18
- - Include a clear title and description of the feature being implemented
19
-
20
- 2. Structure the file with these sections:
21
- ```markdown
22
- # Feature Name Implementation
23
-
24
- Brief description of the feature and its purpose.
25
-
26
- ## Completed Tasks
27
-
28
- - [x] Task 1 that has been completed
29
- - [x] Task 2 that has been completed
30
-
31
- ## In Progress Tasks
32
-
33
- - [ ] Task 3 currently being worked on
34
- - [ ] Task 4 to be completed soon
35
-
36
- ## Future Tasks
37
-
38
- - [ ] Task 5 planned for future implementation
39
- - [ ] Task 6 planned for future implementation
40
-
41
- ## Implementation Plan
42
-
43
- Detailed description of how the feature will be implemented.
44
-
45
- ### Relevant Files
46
-
47
- - path/to/file1.ts - Description of purpose
48
- - path/to/file2.ts - Description of purpose
49
- ```
50
-
51
- ## Task List Maintenance
52
-
53
- 1. Update the task list as you progress:
54
- - Mark tasks as completed by changing `[ ]` to `[x]`
55
- - Add new tasks as they are identified
56
- - Move tasks between sections as appropriate
57
-
58
- 2. Keep "Relevant Files" section updated with:
59
- - File paths that have been created or modified
60
- - Brief descriptions of each file's purpose
61
- - Status indicators (e.g., ✅) for completed components
62
-
63
- 3. Add implementation details:
64
- - Architecture decisions
65
- - Data flow descriptions
66
- - Technical components needed
67
- - Environment configuration
68
-
69
- ## AI Instructions
70
-
71
- When working with task lists, the AI should:
72
-
73
- 1. Regularly update the task list file after implementing significant components
74
- 2. Mark completed tasks with [x] when finished
75
- 3. Add new tasks discovered during implementation
76
- 4. Maintain the "Relevant Files" section with accurate file paths and descriptions
77
- 5. Document implementation details, especially for complex features
78
- 6. When implementing tasks one by one, first check which task to implement next
79
- 7. After implementing a task, update the file to reflect progress
80
-
81
- ## Example Task Update
82
-
83
- When updating a task from "In Progress" to "Completed":
84
4
 
85
- ```markdown
86
- ## In Progress Tasks
5
+ # Structured Feature Development Documentation
87
6
 
88
- - [ ] Implement database schema
89
- - [ ] Create API endpoints for data access
7
+ ## Overview
8
+ When developing new features, maintain concise documentation to track progress, decisions, and implementation details.
90
9
 
91
- ## Completed Tasks
10
+ ## Process
11
+ 1. **Check for existing documentation**: Look in `/docs` folder for a markdown file named after the feature (e.g., `user-authentication.md`, `shopping-cart.md`)
12
+ 2. **Create or update**:
13
+ - If documentation exists: Update it with new requirements and progress
14
+ - If it doesn't exist: Create a new file with the feature name as filename
15
+ 3. **Use visual aids**: Include mermaid diagrams for complex flows, architecture, or data relationships
16
+ 4. **Keep it current**: Update the documentation as development progresses
92
17
 
93
- - [x] Set up project structure
94
- - [x] Configure environment variables
95
- ```
18
+ ## Important Guidelines
19
+ - **Be concise**: Keep descriptions brief and to the point
20
+ - **Only document what was requested**: Do not make up future steps or tasks that weren't part of the user's suggestions, unless explitly asked.
21
+ - **Focus on implementation**: Document what was actually built, not theoretical features
96
22
 
97
- Should become:
23
+ ## Task Analysis Process
24
+ 1. **Analyze the user's request**: Understand exactly what the user asked for
25
+ 2. **Break down into tasks**: Split the request into specific, actionable tasks
26
+ 3. **Document only requested work**: Only include tasks that directly relate to the user's request
27
+ 4. **Optional sections**: Todo and In Progress sections are OPTIONAL - only include them if there are actual remaining tasks from the user's request
98
28
 
99
- ```markdown
100
- ## In Progress Tasks
29
+ ## Required File Structure
101
30
 
102
- - [ ] Create API endpoints for data access
31
+ ### File Naming
32
+ Use kebab-case naming convention: `feature-name.md`
103
33
 
104
- ## Completed Tasks
34
+ ### Template Structure
35
+
36
+ ```markdown
37
+ # Feature Name
38
+
39
+ ## Description
40
+ Brief overview of what the feature does and why it's needed.
41
+
42
+ ## Architecture
43
+ Technical approach and key design decisions.
44
+
45
+ ## Progress Tracking
46
+
47
+ ### ✅ Completed Steps
48
+ - [x] Task 1: Description
49
+ - [x] Task 2: Description
50
+
51
+ ### 🔄 In Progress
52
+ *OPTIONAL: Only include if there are actual tasks from the user's request that are currently being worked on*
53
+ - [ ] Task 3: Description
54
+ - [ ] Task 4: Description
55
+
56
+ ### 📝 Todo
57
+ *OPTIONAL: Only include if there are remaining tasks from the user's request that haven't been started*
58
+ - [ ] Task 5: Description
59
+ - [ ] Task 6: Description
60
+
61
+ ## Technologies Used
62
+ - **Technology Name**: Brief description of usage
63
+ - **Library Name**: Version and purpose
64
+
65
+ ## Implementation Details
66
+ Key technical specifics:
67
+ - API endpoints used
68
+ - Configuration requirements
69
+ - Performance considerations
70
+
71
+ ## Good To Know
72
+ Important findings, decisions, and gotchas:
73
+ - Quirks or workarounds implemented
74
+ - Alternative approaches considered
75
+ - Performance implications
76
+ - Security considerations
77
+ - Testing strategies
78
+ ```
105
79
 
106
- - [x] Set up project structure
107
- - [x] Configure environment variables
108
- - [x] Implement database schema
109
- ```
80
+ ## Best Practices
81
+ - Keep descriptions brief and focused
82
+ - Only document requested features and tasks
83
+ - Include mermaid diagrams for complex flows
84
+ - Document actual implementation details
85
+ - Update progress as development happens
86
+ - **CRITICAL**: Never add tasks or features that weren't explicitly mentioned in the user's request
@@ -1,9 +1,6 @@
1
1
  ---
2
- description: Create filterable, sortable data tables using Trackunit's Table and FilterBar components with GraphQL pagination for asset lists, user management, dashboards, and reporting interfaces requiring interactive data presentation
3
- globs:
4
2
  alwaysApply: false
5
3
  ---
6
-
7
4
  # 📊 Trackunit Table with Filtering & Sorting
8
5
 
9
6
  Create interactive data tables with server-side filtering, sorting, and pagination using Trackunit components and GraphQL.