@trackunit/iris-app 1.4.45 → 1.4.47
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 +8 -0
- package/package.json +1 -1
- package/src/generators/preset/files/.cursor/rules/graphql-timeseries.mdc +197 -45
- package/src/generators/preset/files/.cursor/rules/structured-development.mdc +75 -98
- package/src/generators/preset/files/.cursor/rules/tables-and-sorting.mdc +0 -3
- package/src/generators/preset/files/.cursor/rules/widget-extensions.mdc +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 1.4.47 (2025-08-13)
|
|
2
|
+
|
|
3
|
+
This was a version bump only for iris-app to align it with other projects, there were no code changes.
|
|
4
|
+
|
|
5
|
+
## 1.4.46 (2025-08-13)
|
|
6
|
+
|
|
7
|
+
This was a version bump only for iris-app to align it with other projects, there were no code changes.
|
|
8
|
+
|
|
1
9
|
## 1.4.45 (2025-08-12)
|
|
2
10
|
|
|
3
11
|
### 🧱 Updated Dependencies
|
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
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
|
-
- `
|
|
52
|
-
- `
|
|
53
|
-
- `
|
|
54
|
-
- `
|
|
55
|
-
- `
|
|
56
|
-
- `
|
|
57
|
-
- `
|
|
58
|
-
- `
|
|
59
|
-
- `
|
|
60
|
-
- `
|
|
61
|
-
- `
|
|
62
|
-
- `
|
|
63
|
-
- `
|
|
64
|
-
- `
|
|
65
|
-
- `
|
|
66
|
-
- `
|
|
67
|
-
- `
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
- `
|
|
71
|
-
- `
|
|
72
|
-
- `
|
|
73
|
-
- `
|
|
74
|
-
- `
|
|
75
|
-
- `
|
|
76
|
-
- `
|
|
77
|
-
- `
|
|
78
|
-
- `
|
|
79
|
-
- `
|
|
80
|
-
- `
|
|
81
|
-
- `
|
|
82
|
-
- `
|
|
83
|
-
- `
|
|
84
|
-
- `
|
|
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:
|
|
91
|
-
|
|
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:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
86
|
-
## In Progress Tasks
|
|
5
|
+
# Structured Feature Development Documentation
|
|
87
6
|
|
|
88
|
-
|
|
89
|
-
|
|
7
|
+
## Overview
|
|
8
|
+
When developing new features, maintain concise documentation to track progress, decisions, and implementation details.
|
|
90
9
|
|
|
91
|
-
##
|
|
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
|
-
|
|
94
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
100
|
-
## In Progress Tasks
|
|
29
|
+
## Required File Structure
|
|
101
30
|
|
|
102
|
-
|
|
31
|
+
### File Naming
|
|
32
|
+
Use kebab-case naming convention: `feature-name.md`
|
|
103
33
|
|
|
104
|
-
|
|
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
|
-
|
|
107
|
-
-
|
|
108
|
-
-
|
|
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.
|
|
@@ -164,9 +164,9 @@ export const App = () => {
|
|
|
164
164
|
if (isEditMode) {
|
|
165
165
|
return (
|
|
166
166
|
<WidgetEditBody
|
|
167
|
-
onSave={(newData) => {
|
|
168
|
-
setData(newData, 1);
|
|
169
|
-
closeEditMode();
|
|
167
|
+
onSave={async (newData) => {
|
|
168
|
+
await setData(newData, 1);
|
|
169
|
+
await closeEditMode();
|
|
170
170
|
}}
|
|
171
171
|
onCancel={closeEditMode}
|
|
172
172
|
initialData={data}
|