Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: rework of the KlippyState panel #1118

Merged
merged 9 commits into from
Oct 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 107 additions & 51 deletions src/components/panels/KlippyStatePanel.vue
Original file line number Diff line number Diff line change
@@ -1,37 +1,80 @@
<template>
<panel
v-if="klipperState !== 'ready' && socketIsConnected"
:icon="mdiAlertCircle"
:title="$t('Panels.KlippyStatePanel.KlippyState') + ': ' + klipperState"
card-class="klippy-state-panel">
<template v-if="klippyIsConnected">
<v-card-text v-if="klippy_message !== null" class="py-1 mt-2">
<pre style="white-space: pre-wrap">{{ klippy_message }}</pre>
</v-card-text>
<v-card-text v-else class="text-center py-3">
<v-progress-circular indeterminate color="primary"></v-progress-circular>
</v-card-text>
<v-divider class="mt-2"></v-divider>
<v-card-actions class="justify-start">
<v-btn small class="ml-2 error--text" @click="restart">
<v-icon class="mr-sm-2">{{ mdiRestart }}</v-icon>
{{ $t('Panels.KlippyStatePanel.Restart') }}
</v-btn>
<v-btn small class="ml-4 error--text" @click="firmwareRestart">
<v-icon class="mr-sm-2">{{ mdiRestart }}</v-icon>
{{ $t('Panels.KlippyStatePanel.FirmwareRestart') }}
</v-btn>
</v-card-actions>
</template>
<template v-else>
<v-card-text class="pt-5 pb-1">
<div v-if="klipperState !== 'ready' && socketIsConnected">
<v-container v-if="klippyIsConnected" class="pa-0 pb-6">
<v-alert :color="messageType.color" dense text border="left" class="mb-0">
<!-- KLIPPER MESSAGE TITLE -->
<p class="font-weight-medium d-flex align-center">
<v-icon :color="messageType.color" class="pr-2">{{ messageType.icon }}</v-icon>
{{ $t('Panels.KlippyStatePanel.ServiceReports', { service: 'Klipper' }) }}:
{{ klipperState.toUpperCase() }}
</p>
<!-- KLIPPER MESSAGE -->
<div v-if="klippy_message !== null">
<pre style="white-space: pre-wrap">{{ klippy_message.trim() }}</pre>
<v-divider class="mt-2 pb-3"></v-divider>
<v-row>
<!-- RESTART BUTTONS -->
<v-col>
<v-btn
small
:class="`${messageType.color}--text my-1`"
style="width: 100%"
@click="restart">
<v-icon class="mr-sm-2">{{ mdiRestart }}</v-icon>
{{ $t('Panels.KlippyStatePanel.Restart') }}
</v-btn>
<v-btn
small
:class="`${messageType.color}--text my-1`"
style="width: 100%"
@click="firmwareRestart">
<v-icon class="mr-sm-2">{{ mdiRestart }}</v-icon>
{{ $t('Panels.KlippyStatePanel.FirmwareRestart') }}
</v-btn>
</v-col>
<!-- LOG DOWNLOAD BUTTONS -->
<v-col>
<v-btn
:href="apiUrl + '/server/files/klippy.log'"
small
:class="`${messageType.color}--text my-1`"
style="width: 100%"
@click="downloadLog">
<v-icon class="mr-2">{{ mdiDownload }}</v-icon>
Klipper Log
</v-btn>
<v-btn
:href="apiUrl + '/server/files/moonraker.log'"
small
:class="`${messageType.color}--text my-1`"
style="width: 100%"
@click="downloadLog">
<v-icon class="mr-2">{{ mdiDownload }}</v-icon>
Moonraker Log
</v-btn>
</v-col>
</v-row>
</div>
<!-- LOADER -->
<v-card-text v-else class="text-center py-3">
<v-progress-circular indeterminate :color="messageType.color"></v-progress-circular>
</v-card-text>
</v-alert>
</v-container>
<!-- DISCONNECTED INFOGRAPHIC -->
<v-container v-if="klipperState === 'disconnected'" class="pa-0">
<v-alert dense text border="left">
<p class="font-weight-medium d-flex align-center">
<v-icon class="pr-2">{{ messageType.icon }}</v-icon>
{{ $t('Panels.KlippyStatePanel.ServiceReports', { service: 'Moonraker' }) }}:
{{ klipperState.toUpperCase() }}
</p>
<connection-status :moonraker="true" :klipper="false"></connection-status>
<p class="mt-2 mb-0 text-center">{{ $t('Panels.KlippyStatePanel.MoonrakerCannotConnect') }}</p>
<v-divider class="my-2"></v-divider>
<p class="mt-2">{{ $t('Panels.KlippyStatePanel.KlipperCheck') }}</p>
</v-card-text>
</template>
</panel>
<p class="mb-0 text-center">{{ $t('Panels.KlippyStatePanel.KlipperCheck') }}</p>
</v-alert>
</v-container>
</div>
</template>

<script lang="ts">
Expand All @@ -40,21 +83,43 @@ import { Mixins } from 'vue-property-decorator'
import BaseMixin from '../mixins/base'
import ConnectionStatus from '../ui/ConnectionStatus.vue'
import Panel from '@/components/ui/Panel.vue'
import { mdiAlertCircle, mdiRestart } from '@mdi/js'
import {
mdiRestart,
mdiDownload,
mdiMessageOutline,
mdiAlertOutline,
mdiRocketLaunch,
mdiConnection,
mdiPrinter3d,
} from '@mdi/js'

@Component({
components: { Panel, ConnectionStatus },
})
export default class KlippyStatePanel extends Mixins(BaseMixin) {
//private timer: number | null = null

mdiAlertCircle = mdiAlertCircle
mdiPrinter3d = mdiPrinter3d
mdiRestart = mdiRestart
mdiDownload = mdiDownload

get klippy_message() {
return this.$store.state.server.klippy_message ?? null
}

get messageType(): { color: string; icon: string } {
switch (this.klipperState) {
case 'startup':
return { color: 'info', icon: mdiRocketLaunch }
case 'shutdown':
return { color: 'warning', icon: mdiAlertOutline }
case 'error':
return { color: 'error', icon: mdiAlertOutline }
case 'disconnected':
return { color: '', icon: mdiConnection }
default:
return { color: '', icon: mdiMessageOutline }
}
}

restart() {
this.$socket.emit('printer.restart', {}, { loading: 'restart' })
}
Expand All @@ -63,22 +128,13 @@ export default class KlippyStatePanel extends Mixins(BaseMixin) {
this.$socket.emit('printer.firmware_restart', {}, { loading: 'firmwareRestart' })
}

/*requestKlippyState() {
this.$socket.emit('printer.info', {}, { action: 'printer/getInfo' })
}
downloadLog(event: any) {
event.preventDefault()
let href = ''
if ('href' in event.target.attributes) href = event.target.attributes.href.value
if ('href' in event.target.parentElement.attributes) href = event.target.parentElement.attributes.href.value

@Watch('klipperState')
klipperStateChanged(newVal: string) {
if (['ready', 'disconnected'].includes(newVal)) {
if (this.timer) {
clearInterval(this.timer)
this.timer = null
}
} else if (this.timer === null) {
this.timer = setInterval(() => {
this.requestKlippyState()
}, 2000)
}
}*/
window.open(href)
}
}
</script>
1 change: 0 additions & 1 deletion src/locales/da.json
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Genstart alt",
"KlipperCheck": "Check at Klipper service kører og at en UDS (Unix Domain Socket) er konfigureret.",
"KlippyState": "Klippy-Status",
"MoonrakerCannotConnect": "Moonraker kan ikke forbinde til Klipper!",
"Restart": "Genstart"
},
Expand Down
4 changes: 2 additions & 2 deletions src/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -498,9 +498,9 @@
"KlippyStatePanel": {
"FirmwareRestart": "Firmware Neustart",
"KlipperCheck": "Bitte überprüfen Sie, ob der Klipper-Dienst läuft und ein UDS (Unix Domain Socket) konfiguriert ist.",
"KlippyState": "Klippy-Status",
"MoonrakerCannotConnect": "Moonraker kann keine Verbindung zu Klipper herstellen!",
"Restart": "Neustart"
"Restart": "Neustart",
"ServiceReports": "{service} meldet"
},
"MachineSettingsPanel": {
"Headline": "Maschine",
Expand Down
6 changes: 3 additions & 3 deletions src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -497,10 +497,10 @@
},
"KlippyStatePanel": {
"FirmwareRestart": "Firmware Restart",
"KlipperCheck": "Please check if the Klipper service is running and an UDS (Unix Domain Socket) is configured.",
"KlippyState": "Klippy-State",
"KlipperCheck": "Please check if the Klipper service is running.",
"MoonrakerCannotConnect": "Moonraker can't connect to Klipper!",
"Restart": "Restart"
"Restart": "Restart",
"ServiceReports": "{service} reports"
},
"MachineSettingsPanel": {
"Headline": "Machine",
Expand Down
1 change: 0 additions & 1 deletion src/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Reiniciar Firmware",
"KlipperCheck": "Verifique que el servicio Klipper está corriendo y que un UDS (Unix Domain Socket) esta configurado.",
"KlippyState": "Estado de Klippy",
"MoonrakerCannotConnect": "¡Moonraker no se pudo conectar a Klipper!",
"Restart": "Reiniciar"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Redémarrage Firmware",
"KlipperCheck": "Contrôlez que le sevice Klipper est actif et qu'un UDS (Unix Domain Socket) est configuré",
"KlippyState": "Etat-Klippy",
"MoonrakerCannotConnect": "Moonraker n'arrive pas à se connecter à Klipper",
"Restart": "Redémarrage"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/hu.json
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Firmware újraindítása",
"KlipperCheck": "Kérjük, ellenőrizd, a Klipper szolgáltatás fut-e, konfigurálva van-e UDS (Unix Domain Socket).",
"KlippyState": "Klippy-állapota",
"MoonrakerCannotConnect": "A Moonraker nem tud csatlakozni a Klipperhez!",
"Restart": "Újraindítás"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Riavvio Firmware",
"KlipperCheck": "Controlla se il servizio Klipper è in esecuzione e se è configurato un UDS (Unix Domain Socket).",
"KlippyState": "Stato Klippy",
"MoonrakerCannotConnect": "Moonraker non riesce a connettersi a Klipper!",
"Restart": "Riavvia"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "ファームウェア再始動",
"KlipperCheck": "Klipperサービスが動いていて、UDS (Unix Domain Socket)が設定されているかどうか確認してください。",
"KlippyState": "Klippy-State",
"MoonrakerCannotConnect": "MoonrakerはKlipperに接続できません!",
"Restart": "再始動"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "펌웨어 재시작",
"KlipperCheck": "Klipper 서비스가 실행 중이고 UDS(Unix Domain Socket)의 구성 확인 또는 클리퍼 재시작을 눌러 주세요",
"KlippyState": "Klippy 상태",
"MoonrakerCannotConnect": "문래커가 클리퍼로 접속할 수 없습니다!",
"Restart": "재시작"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Firmware Herstart",
"KlipperCheck": "Controleer of de Klipper service draait en een UDS (Unix Domain Socket) geconfigureerd is.",
"KlippyState": "Klippy-Status",
"MoonrakerCannotConnect": "Moonraker kan niet met Klipper verbinden!",
"Restart": "Herstart"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Ponowne uruchomienie oprogramowania",
"KlipperCheck": "Sprawdź , czy Klipper jest uruchomiony oraz czy UDS (Unix Domain Socket) został skonfigurowany poprawnie.",
"KlippyState": "Status Klippera",
"MoonrakerCannotConnect": "Moonraker nie może połączyć się z Klipperem!",
"Restart": "Ponowne uruchomienie"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Перезапуск прошивки",
"KlipperCheck": "Проверьте, запущена ли служба Klipper и настроен ли UDS (Unix Domain Socket).",
"KlippyState": "Klippy-Статус",
"MoonrakerCannotConnect": "Moonraker не может соединиться с Клиппером!",
"Restart": "Перезапустить"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/sv.json
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Omstart av Firmware",
"KlipperCheck": "Kontrollera om Klipper-tjänsten körs och en UDS (Unix Domain Socket) är konfigurerad.",
"KlippyState": "Klippy-läge",
"MoonrakerCannotConnect": "Moonraker kan inte ansluta till Klipper!",
"Restart": "Starta om"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/tr.json
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Firmware Yeniden Başlatma",
"KlipperCheck": "Lütfen Klipper hizmetinin çalışıp çalışmadığını ve bir UDS'nin (Unix Etki Alanı Soketi) yapılandırılıp yapılandırılmadığını kontrol edin.",
"KlippyState": "Klippy-Durumu",
"MoonrakerCannotConnect": "Moonraker Klipper'a bağlanamıyor!",
"Restart": "Yeniden Başlat"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/uk.json
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "Перезапуск Прошивки",
"KlipperCheck": "Будь ласка, перевірте, чи працює служба Klipper та налаштована UDS (UNIX домен).",
"KlippyState": "Klippy-Стан",
"MoonrakerCannotConnect": "Moonraker не може підключитися до Klipper!",
"Restart": "Перезапустити"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "重启Klipper并重置主控",
"KlipperCheck": "请检查Klipper服务是否运行并且已经设置UDS(Unix Domain Socket)。",
"KlippyState": "Klippy状态",
"MoonrakerCannotConnect": "Moonraker无法连接到Klipper !",
"Restart": "重启Klipper"
},
Expand Down
1 change: 0 additions & 1 deletion src/locales/zh_TW.json
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,6 @@
"KlippyStatePanel": {
"FirmwareRestart": "韌體重新啟動",
"KlipperCheck": "請檢查Klipper服務是否運行並且已經設定UDS(Unix Domain Socket)。",
"KlippyState": "Klippy狀態: ",
"MoonrakerCannotConnect": "Moonraker 不能連接 Klipper!",
"Restart": "重新啟動"
},
Expand Down