diff --git a/src/components/widgets/runout-sensors/RunoutSensorsCard.vue b/src/components/widgets/runout-sensors/RunoutSensorsCard.vue index abc9a39093..0e7be2c215 100644 --- a/src/components/widgets/runout-sensors/RunoutSensorsCard.vue +++ b/src/components/widgets/runout-sensors/RunoutSensorsCard.vue @@ -25,6 +25,9 @@ > {{ item.prettyName }} + + {{ item.diameter.toFixed(2) }} mm + { return Object.keys(state.printer) .filter(key => ( + key === 'hall_filament_width_sensor' || key.startsWith('filament_switch_sensor ') || key.startsWith('filament_motion_sensor ') )) - .map(key => { + .map((key): RunoutSensor | null => { + const sensor = state.printer[key] + + if (sensor?.filament_detected == null) { + return null + } + const name = key.trim().split(/\s+/).pop() || '' + const diameter = ( + 'is_active' in sensor && + sensor.is_active && + 'Diameter' in sensor + ) + ? sensor.Diameter + : undefined + return { - ...state.printer[key], + ...sensor, name, prettyName: Vue.$filters.prettyCase(name), + diameter } }) + .filter(sensor => sensor !== null) }, getEndstops: (state): Endstop[] => { diff --git a/src/store/printer/types.ts b/src/store/printer/types.ts index 29418b252e..4e3cd361d4 100644 --- a/src/store/printer/types.ts +++ b/src/store/printer/types.ts @@ -114,6 +114,7 @@ export interface Sensor extends Partial, Partial export interface RunoutSensor extends Partial, Partial { name: string; prettyName: string; + diameter?: number; } export interface Endstop { diff --git a/src/typings/klipper.d.ts b/src/typings/klipper.d.ts index 333f8cf7bc..75ad05d1b7 100644 --- a/src/typings/klipper.d.ts +++ b/src/typings/klipper.d.ts @@ -345,6 +345,9 @@ declare namespace Klipper { is_active: boolean; Diameter: number; Raw: number; + enabled?: boolean; + filament_detected?: boolean; + flow_compensation_enabled?: boolean; } export interface ExtruderState {