[Feature]: HMS Actions (#1743)

This commit is contained in:
Zelda
2026-06-26 14:40:25 +02:00
committed by GitHub
parent d3fd8d6ad8
commit 3ddf8d847e
23 changed files with 10138 additions and 23 deletions
+13
View File
@@ -333,6 +333,14 @@ export interface HMSError {
attr: number; // Attribute value for constructing wiki URL
module: number;
severity: number; // 1=fatal, 2=serious, 3=common, 4=info
actions?: string[]; // List of user-facing action keys (e.g. "CHECK_FILAMENT")
job_id?: string; // Optional job ID for actions that require it (e.g. "CHECK_ASSISTANT")
}
export interface HMSActionBody {
print_error: string; // HMS error code (e.g. "05000070")
action: string; // "HMS action to execute (e.g. 'resume_after_error')"
job_id: string | null; // Optional job ID for context (if applicable)
}
export interface AMSTray {
@@ -3703,6 +3711,11 @@ export const api = {
// HMS Errors
clearHMSErrors: (printerId: number) =>
request<{ success: boolean; message: string }>(`/printers/${printerId}/hms/clear`, { method: 'POST' }),
executeHMSAction: (printerId: number, data: HMSActionBody) =>
request<{ success: boolean; message: string }>(`/printers/${printerId}/hms/execute-action`, {
method: 'POST',
body: JSON.stringify(data),
}),
// AMS Control
refreshAmsSlot: (printerId: number, amsId: number, slotId: number) =>
+51 -7
View File
@@ -2,7 +2,7 @@
// Source: https://github.com/greghesp/ha-bambulab
import { useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { useMutation } from '@tanstack/react-query';
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { X, AlertTriangle, AlertCircle, Info, ExternalLink, Loader2, Trash2 } from 'lucide-react';
import type { HMSError, Permission } from '../api/client';
import { api } from '../api/client';
@@ -874,17 +874,17 @@ const ERROR_DESCRIPTIONS: Record<string, string> = {
'18FF_C00A': 'Please observe the nozzle of the right extruder. If the filament has been extruded, select \'Continue\'; if not, please push the filament forward slightly and then select \'Retry\'.',
};
function getSeverityInfo(severity: number): { label: string; color: string; bgColor: string; Icon: typeof AlertTriangle } {
function getSeverityInfo(severity: number): { label: string; color: string; bgColor: string; buttonHoverColor: string; Icon: typeof AlertTriangle } {
switch (severity) {
case 1:
return { label: 'Fatal', color: 'text-red-500', bgColor: 'bg-red-500/20', Icon: AlertTriangle };
return { label: 'Fatal', color: 'text-red-500', bgColor: 'bg-red-500/20', buttonHoverColor: 'bg-red-500/10', Icon: AlertTriangle };
case 2:
return { label: 'Serious', color: 'text-red-400', bgColor: 'bg-red-500/15', Icon: AlertTriangle };
return { label: 'Serious', color: 'text-red-400', bgColor: 'bg-red-500/15', buttonHoverColor: 'bg-red-500/10', Icon: AlertTriangle };
case 3:
return { label: 'Warning', color: 'text-orange-400', bgColor: 'bg-orange-500/20', Icon: AlertCircle };
return { label: 'Warning', color: 'text-orange-400', bgColor: 'bg-orange-500/20', buttonHoverColor: 'bg-orange-500/10', Icon: AlertCircle };
case 4:
default:
return { label: 'Info', color: 'text-blue-400', bgColor: 'bg-blue-500/20', Icon: Info };
return { label: 'Info', color: 'text-blue-400', bgColor: 'bg-blue-500/20', buttonHoverColor: 'bg-blue-500/10', Icon: Info };
}
}
@@ -912,6 +912,7 @@ function getHMSHomeUrl(): string {
export function HMSErrorModal({ printerName, errors, onClose, printerId, hasPermission }: HMSErrorModalProps) {
const { t } = useTranslation();
const { showToast } = useToast();
const queryClient = useQueryClient();
const clearMutation = useMutation({
mutationFn: () => api.clearHMSErrors(printerId),
@@ -940,6 +941,30 @@ export function HMSErrorModal({ printerName, errors, onClose, printerId, hasPerm
return () => window.removeEventListener('keydown', handleKeyDown);
}, [onClose]);
// printerStatusMutation with optimistic update
const activateActionMutation = useMutation({
mutationFn: (data: {
action: string,
print_error: string,
job_id: string | null,
}) => api.executeHMSAction(printerId, {
action: data.action,
print_error: data.print_error,
job_id: data.job_id,
}),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['printerStatus'] });
showToast(t('hmsErrors.actionSuccess', 'Action sent to printer'), 'success');
onClose();
},
onError: (error: Error) => {
showToast(
`${t('hmsErrors.actionFailed', 'Failed to send action')}: ${error.message}`,
'error',
);
},
});
return (
<div className="fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4">
<div className="bg-bambu-dark-secondary rounded-lg shadow-xl max-w-lg w-full max-h-[80vh] flex flex-col">
@@ -967,7 +992,7 @@ export function HMSErrorModal({ printerName, errors, onClose, printerId, hasPerm
) : (
<div className="space-y-3">
{knownErrors.map((error, index) => {
const { label, color, bgColor, Icon } = getSeverityInfo(error.severity);
const { label, color, bgColor, buttonHoverColor, Icon } = getSeverityInfo(error.severity);
const codeNum = parseInt(error.code.replace('0x', ''), 16) || 0;
const shortCode = getShortCode(error.attr, codeNum);
const description = ERROR_DESCRIPTIONS[shortCode];
@@ -989,6 +1014,25 @@ export function HMSErrorModal({ printerName, errors, onClose, printerId, hasPerm
</span>
</div>
<p className="text-sm text-bambu-gray mb-2">{description}</p>
{error.actions && error.actions.length > 0 && (
<div className="flex flex-wrap gap-2 my-2">
{error.actions.map((action) => (
<button
key={action}
onClick={() => {
activateActionMutation.mutate({
action,
print_error: shortCode.replace("_", ""),
job_id: error.job_id ?? null,
});
}}
className={`flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-lg ${bgColor} ${color} hover:${buttonHoverColor} transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0`}
>
{t(`hmsErrors.actions.${action}`, action)}
</button>
))}
</div>
)}
<a
href={hmsHomeUrl}
target="_blank"
+36
View File
@@ -2586,6 +2586,42 @@ export default {
clearErrors: 'Fehler löschen',
clearSuccess: 'HMS-Fehler gelöscht',
clearFailed: 'HMS-Fehler konnten nicht gelöscht werden',
actionSuccess: 'Aktion an Drucker gesendet',
actionFailed: 'Aktion konnte nicht gesendet werden',
actions: {
RESUME_PRINTING: 'Druck fortsetzen',
RESUME_PRINTING_DEFECTS: 'Fortsetzen (Mängel akzeptabel)',
RESUME_PRINTING_PROBELM_SOLVED: 'Fortsetzen (Problem gelöst)',
STOP_PRINTING: 'Druck stoppen',
CHECK_ASSISTANT: 'Assistent öffnen',
FILAMENT_EXTRUDED: 'Filament extrudiert, weiter',
RETRY_FILAMENT_EXTRUDED: 'Noch nicht extrudiert, erneut',
CONTINUE: 'Fertig, weiter',
LOAD_VIRTUAL_TRAY: 'Filament laden',
OK_BUTTON: 'OK',
FILAMENT_LOAD_RESUME: 'Filament geladen, fortsetzen',
JUMP_TO_LIVEVIEW: 'Live-Ansicht öffnen',
NO_REMINDER_NEXT_TIME: 'Nicht mehr erinnern',
REFRESH_NOZZLE: 'Erneut prüfen',
IGNORE_NO_REMINDER_NEXT_TIME: 'Ignorieren und nicht mehr erinnern',
IGNORE_RESUME: 'Ignorieren und fortsetzen',
PROBLEM_SOLVED_RESUME: 'Problem gelöst, fortsetzen',
TURN_OFF_FIRE_ALARM: 'Verstanden, Brandalarm ausschalten',
RETRY_PROBLEM_SOLVED: 'Erneut versuchen (Problem gelöst)',
CANCLE: 'Abbrechen',
STOP_DRYING: 'Trocknen stoppen',
PROCEED: 'Fortfahren',
OK_JUMP_RACK: 'OK',
ABORT: 'Abbrechen',
DISABLE_PURIFICATION: 'Luftreinigung für diesen Druck deaktivieren',
DONT_REMIND_NEXT_TIME: 'Nicht mehr erinnern',
DBL_CHECK_CANCEL: 'Abbrechen',
DBL_CHECK_DONE: 'Fertig',
DBL_CHECK_RETRY: 'Erneut versuchen',
DBL_CHECK_RESUME: 'Fortsetzen',
DBL_CHECK_OK: 'Bestätigen',
REMOVE_CLOSE_BTN: 'Schließen',
},
},
// MQTT Debug modal
+36
View File
@@ -2601,6 +2601,42 @@ export default {
clearErrors: 'Clear Errors',
clearSuccess: 'HMS errors cleared',
clearFailed: 'Failed to clear HMS errors',
actionSuccess: 'Action sent to printer',
actionFailed: 'Failed to send action',
actions: {
RESUME_PRINTING: "Resume Printing",
RESUME_PRINTING_DEFECTS: "Resume (defects acceptable)",
RESUME_PRINTING_PROBELM_SOLVED: "Resume (problem solved)",
STOP_PRINTING: "Stop Printing",
CHECK_ASSISTANT: "Check Assistant",
FILAMENT_EXTRUDED: "Filament Extruded, Continue",
RETRY_FILAMENT_EXTRUDED: "Not Extruded Yet, Retry",
CONTINUE: "Finished, Continue",
LOAD_VIRTUAL_TRAY: "Load Filament",
OK_BUTTON: "OK",
FILAMENT_LOAD_RESUME: "Filament Loaded, Resume",
JUMP_TO_LIVEVIEW: "View Liveview",
NO_REMINDER_NEXT_TIME: "No Reminder Next Time",
REFRESH_NOZZLE: "Recheck",
IGNORE_NO_REMINDER_NEXT_TIME: "Ignore. Don't Remind Next Time",
IGNORE_RESUME: "Ignore this and Resume",
PROBLEM_SOLVED_RESUME: "Problem Solved and Resume",
TURN_OFF_FIRE_ALARM: "Got it, Turn off the Fire Alarm.",
RETRY_PROBLEM_SOLVED: "Retry (problem solved)",
CANCLE: "Cancle",
STOP_DRYING: "Stop Drying",
PROCEED: "Proceed",
OK_JUMP_RACK: "OK",
ABORT: "Abort",
DISABLE_PURIFICATION: "Disable Purification for This Print",
DONT_REMIND_NEXT_TIME: "Don't Remind Me",
DBL_CHECK_CANCEL: "Cancel",
DBL_CHECK_DONE: "Done",
DBL_CHECK_RETRY: "Retry",
DBL_CHECK_RESUME: "Resume",
DBL_CHECK_OK: "Confirm",
REMOVE_CLOSE_BTN: "Close",
}
},
// MQTT Debug modal
+36
View File
@@ -2589,6 +2589,42 @@ export default {
clearErrors: 'Borrar errores',
clearSuccess: 'Errores HMS borrados',
clearFailed: 'Error al borrar los errores HMS',
actionSuccess: 'Acción enviada a la impresora',
actionFailed: 'No se pudo enviar la acción',
actions: {
RESUME_PRINTING: 'Reanudar impresión',
RESUME_PRINTING_DEFECTS: 'Reanudar (defectos aceptables)',
RESUME_PRINTING_PROBELM_SOLVED: 'Reanudar (problema resuelto)',
STOP_PRINTING: 'Detener impresión',
CHECK_ASSISTANT: 'Ver asistente',
FILAMENT_EXTRUDED: 'Filamento extruido, continuar',
RETRY_FILAMENT_EXTRUDED: 'Aún no extruido, reintentar',
CONTINUE: 'Finalizado, continuar',
LOAD_VIRTUAL_TRAY: 'Cargar filamento',
OK_BUTTON: 'OK',
FILAMENT_LOAD_RESUME: 'Filamento cargado, reanudar',
JUMP_TO_LIVEVIEW: 'Ver en vivo',
NO_REMINDER_NEXT_TIME: 'No recordar la próxima vez',
REFRESH_NOZZLE: 'Volver a comprobar',
IGNORE_NO_REMINDER_NEXT_TIME: 'Ignorar y no recordar',
IGNORE_RESUME: 'Ignorar y reanudar',
PROBLEM_SOLVED_RESUME: 'Problema resuelto, reanudar',
TURN_OFF_FIRE_ALARM: 'Entendido, apagar alarma de incendio',
RETRY_PROBLEM_SOLVED: 'Reintentar (problema resuelto)',
CANCLE: 'Cancelar',
STOP_DRYING: 'Detener secado',
PROCEED: 'Continuar',
OK_JUMP_RACK: 'OK',
ABORT: 'Cancelar',
DISABLE_PURIFICATION: 'Desactivar purificación para esta impresión',
DONT_REMIND_NEXT_TIME: 'No recordarme',
DBL_CHECK_CANCEL: 'Cancelar',
DBL_CHECK_DONE: 'Hecho',
DBL_CHECK_RETRY: 'Reintentar',
DBL_CHECK_RESUME: 'Reanudar',
DBL_CHECK_OK: 'Confirmar',
REMOVE_CLOSE_BTN: 'Cerrar',
},
},
// MQTT Debug modal
+36
View File
@@ -2575,6 +2575,42 @@ export default {
clearErrors: 'Effacer les erreurs',
clearSuccess: 'Erreurs HMS effacées',
clearFailed: 'Échec de l\'effacement des erreurs HMS',
actionSuccess: 'Action envoyée à l\'imprimante',
actionFailed: 'Échec de l\'envoi de l\'action',
actions: {
RESUME_PRINTING: 'Reprendre l\'impression',
RESUME_PRINTING_DEFECTS: 'Reprendre (défauts acceptables)',
RESUME_PRINTING_PROBELM_SOLVED: 'Reprendre (problème résolu)',
STOP_PRINTING: 'Arrêter l\'impression',
CHECK_ASSISTANT: 'Ouvrir l\'assistant',
FILAMENT_EXTRUDED: 'Filament extrudé, continuer',
RETRY_FILAMENT_EXTRUDED: 'Pas encore extrudé, réessayer',
CONTINUE: 'Terminé, continuer',
LOAD_VIRTUAL_TRAY: 'Charger le filament',
OK_BUTTON: 'OK',
FILAMENT_LOAD_RESUME: 'Filament chargé, reprendre',
JUMP_TO_LIVEVIEW: 'Voir en direct',
NO_REMINDER_NEXT_TIME: 'Ne plus rappeler la prochaine fois',
REFRESH_NOZZLE: 'Revérifier',
IGNORE_NO_REMINDER_NEXT_TIME: 'Ignorer et ne plus rappeler',
IGNORE_RESUME: 'Ignorer et reprendre',
PROBLEM_SOLVED_RESUME: 'Problème résolu, reprendre',
TURN_OFF_FIRE_ALARM: 'Compris, désactiver l\'alarme incendie',
RETRY_PROBLEM_SOLVED: 'Réessayer (problème résolu)',
CANCLE: 'Annuler',
STOP_DRYING: 'Arrêter le séchage',
PROCEED: 'Continuer',
OK_JUMP_RACK: 'OK',
ABORT: 'Annuler',
DISABLE_PURIFICATION: 'Désactiver la purification pour cette impression',
DONT_REMIND_NEXT_TIME: 'Ne plus me rappeler',
DBL_CHECK_CANCEL: 'Annuler',
DBL_CHECK_DONE: 'Terminé',
DBL_CHECK_RETRY: 'Réessayer',
DBL_CHECK_RESUME: 'Reprendre',
DBL_CHECK_OK: 'Confirmer',
REMOVE_CLOSE_BTN: 'Fermer',
},
},
// MQTT Debug modal
+36
View File
@@ -2574,6 +2574,42 @@ export default {
clearErrors: 'Cancella errori',
clearSuccess: 'Errori HMS cancellati',
clearFailed: 'Impossibile cancellare gli errori HMS',
actionSuccess: 'Azione inviata alla stampante',
actionFailed: 'Impossibile inviare l\'azione',
actions: {
RESUME_PRINTING: 'Riprendi stampa',
RESUME_PRINTING_DEFECTS: 'Riprendi (difetti accettabili)',
RESUME_PRINTING_PROBELM_SOLVED: 'Riprendi (problema risolto)',
STOP_PRINTING: 'Ferma stampa',
CHECK_ASSISTANT: 'Apri assistente',
FILAMENT_EXTRUDED: 'Filamento estruso, continua',
RETRY_FILAMENT_EXTRUDED: 'Non ancora estruso, riprova',
CONTINUE: 'Completato, continua',
LOAD_VIRTUAL_TRAY: 'Carica filamento',
OK_BUTTON: 'OK',
FILAMENT_LOAD_RESUME: 'Filamento caricato, riprendi',
JUMP_TO_LIVEVIEW: 'Visualizza in diretta',
NO_REMINDER_NEXT_TIME: 'Non ricordare la prossima volta',
REFRESH_NOZZLE: 'Ricontrolla',
IGNORE_NO_REMINDER_NEXT_TIME: 'Ignora e non ricordare',
IGNORE_RESUME: 'Ignora e riprendi',
PROBLEM_SOLVED_RESUME: 'Problema risolto, riprendi',
TURN_OFF_FIRE_ALARM: 'Capito, spegni allarme antincendio',
RETRY_PROBLEM_SOLVED: 'Riprova (problema risolto)',
CANCLE: 'Annulla',
STOP_DRYING: 'Ferma essiccazione',
PROCEED: 'Procedi',
OK_JUMP_RACK: 'OK',
ABORT: 'Annulla',
DISABLE_PURIFICATION: 'Disattiva purificazione per questa stampa',
DONT_REMIND_NEXT_TIME: 'Non ricordarmelo',
DBL_CHECK_CANCEL: 'Annulla',
DBL_CHECK_DONE: 'Fatto',
DBL_CHECK_RETRY: 'Riprova',
DBL_CHECK_RESUME: 'Riprendi',
DBL_CHECK_OK: 'Conferma',
REMOVE_CLOSE_BTN: 'Chiudi',
},
},
// MQTT Debug modal
+36
View File
@@ -2586,6 +2586,42 @@ export default {
clearErrors: 'エラーをクリア',
clearSuccess: 'HMSエラーをクリアしました',
clearFailed: 'HMSエラーのクリアに失敗しました',
actionSuccess: 'アクションをプリンターに送信しました',
actionFailed: 'アクションの送信に失敗しました',
actions: {
RESUME_PRINTING: '印刷を再開',
RESUME_PRINTING_DEFECTS: '再開(不具合を許容)',
RESUME_PRINTING_PROBELM_SOLVED: '再開(問題解決)',
STOP_PRINTING: '印刷を停止',
CHECK_ASSISTANT: 'アシスタントを開く',
FILAMENT_EXTRUDED: 'フィラメント排出済み、続行',
RETRY_FILAMENT_EXTRUDED: 'まだ排出されていない、再試行',
CONTINUE: '完了、続行',
LOAD_VIRTUAL_TRAY: 'フィラメントを装填',
OK_BUTTON: 'OK',
FILAMENT_LOAD_RESUME: 'フィラメント装填完了、再開',
JUMP_TO_LIVEVIEW: 'ライブビューを表示',
NO_REMINDER_NEXT_TIME: '次回は通知しない',
REFRESH_NOZZLE: '再確認',
IGNORE_NO_REMINDER_NEXT_TIME: '無視して次回は通知しない',
IGNORE_RESUME: '無視して再開',
PROBLEM_SOLVED_RESUME: '問題解決、再開',
TURN_OFF_FIRE_ALARM: '了解、火災警報をオフ',
RETRY_PROBLEM_SOLVED: '再試行(問題解決)',
CANCLE: 'キャンセル',
STOP_DRYING: '乾燥を停止',
PROCEED: '続行',
OK_JUMP_RACK: 'OK',
ABORT: '中止',
DISABLE_PURIFICATION: 'この印刷では空気清浄を無効化',
DONT_REMIND_NEXT_TIME: '今後表示しない',
DBL_CHECK_CANCEL: 'キャンセル',
DBL_CHECK_DONE: '完了',
DBL_CHECK_RETRY: '再試行',
DBL_CHECK_RESUME: '再開',
DBL_CHECK_OK: '確認',
REMOVE_CLOSE_BTN: '閉じる',
},
},
// MQTT Debug modal
+37 -1
View File
@@ -2437,7 +2437,43 @@ export default {
clearInstructions: '오류를 해제하려면 프린터에서 오류를 지우세요.',
clearErrors: '오류 지우기',
clearSuccess: 'HMS 오류가 지워졌습니다',
clearFailed: 'HMS 오류 지우기 실패'
clearFailed: 'HMS 오류 지우기 실패',
actionSuccess: '프린터에 작업을 전송함',
actionFailed: '작업 전송 실패',
actions: {
RESUME_PRINTING: '인쇄 재개',
RESUME_PRINTING_DEFECTS: '재개 (결함 허용)',
RESUME_PRINTING_PROBELM_SOLVED: '재개 (문제 해결됨)',
STOP_PRINTING: '인쇄 중지',
CHECK_ASSISTANT: '도우미 보기',
FILAMENT_EXTRUDED: '필라멘트 압출됨, 계속',
RETRY_FILAMENT_EXTRUDED: '아직 압출되지 않음, 다시 시도',
CONTINUE: '완료, 계속',
LOAD_VIRTUAL_TRAY: '필라멘트 로드',
OK_BUTTON: '확인',
FILAMENT_LOAD_RESUME: '필라멘트 로드됨, 재개',
JUMP_TO_LIVEVIEW: '실시간 보기',
NO_REMINDER_NEXT_TIME: '다음에 알리지 않음',
REFRESH_NOZZLE: '다시 확인',
IGNORE_NO_REMINDER_NEXT_TIME: '무시 및 다시 알리지 않음',
IGNORE_RESUME: '무시하고 재개',
PROBLEM_SOLVED_RESUME: '문제 해결됨, 재개',
TURN_OFF_FIRE_ALARM: '확인, 화재 경보 끄기',
RETRY_PROBLEM_SOLVED: '다시 시도 (문제 해결됨)',
CANCLE: '취소',
STOP_DRYING: '건조 중지',
PROCEED: '계속',
OK_JUMP_RACK: '확인',
ABORT: '중단',
DISABLE_PURIFICATION: '이 인쇄에 대해 공기 정화 비활성화',
DONT_REMIND_NEXT_TIME: '알리지 않음',
DBL_CHECK_CANCEL: '취소',
DBL_CHECK_DONE: '완료',
DBL_CHECK_RETRY: '다시 시도',
DBL_CHECK_RESUME: '재개',
DBL_CHECK_OK: '확인',
REMOVE_CLOSE_BTN: '닫기',
},
},
mqttDebug: {
title: 'MQTT 디버그 로그',
+36
View File
@@ -2574,6 +2574,42 @@ export default {
clearErrors: 'Limpar Erros',
clearSuccess: 'Erros HMS limpos',
clearFailed: 'Falha ao limpar erros HMS',
actionSuccess: 'Ação enviada à impressora',
actionFailed: 'Falha ao enviar ação',
actions: {
RESUME_PRINTING: 'Retomar impressão',
RESUME_PRINTING_DEFECTS: 'Retomar (defeitos aceitáveis)',
RESUME_PRINTING_PROBELM_SOLVED: 'Retomar (problema resolvido)',
STOP_PRINTING: 'Parar impressão',
CHECK_ASSISTANT: 'Ver assistente',
FILAMENT_EXTRUDED: 'Filamento extrudado, continuar',
RETRY_FILAMENT_EXTRUDED: 'Ainda não extrudado, tentar novamente',
CONTINUE: 'Finalizado, continuar',
LOAD_VIRTUAL_TRAY: 'Carregar filamento',
OK_BUTTON: 'OK',
FILAMENT_LOAD_RESUME: 'Filamento carregado, retomar',
JUMP_TO_LIVEVIEW: 'Ver ao vivo',
NO_REMINDER_NEXT_TIME: 'Não lembrar da próxima vez',
REFRESH_NOZZLE: 'Verificar novamente',
IGNORE_NO_REMINDER_NEXT_TIME: 'Ignorar e não lembrar',
IGNORE_RESUME: 'Ignorar e retomar',
PROBLEM_SOLVED_RESUME: 'Problema resolvido, retomar',
TURN_OFF_FIRE_ALARM: 'Entendido, desligar alarme de incêndio',
RETRY_PROBLEM_SOLVED: 'Tentar novamente (problema resolvido)',
CANCLE: 'Cancelar',
STOP_DRYING: 'Parar secagem',
PROCEED: 'Prosseguir',
OK_JUMP_RACK: 'OK',
ABORT: 'Abortar',
DISABLE_PURIFICATION: 'Desativar purificação para esta impressão',
DONT_REMIND_NEXT_TIME: 'Não me lembrar',
DBL_CHECK_CANCEL: 'Cancelar',
DBL_CHECK_DONE: 'Concluído',
DBL_CHECK_RETRY: 'Tentar novamente',
DBL_CHECK_RESUME: 'Retomar',
DBL_CHECK_OK: 'Confirmar',
REMOVE_CLOSE_BTN: 'Fechar',
},
},
// MQTT Debug modal
+36
View File
@@ -2590,6 +2590,42 @@ export default {
clearErrors: 'Hataları Temizle',
clearSuccess: 'HMS hataları temizlendi',
clearFailed: 'HMS hataları temizlenemedi',
actionSuccess: 'Eylem yazıcıya gönderildi',
actionFailed: 'Eylem gönderilemedi',
actions: {
RESUME_PRINTING: 'Baskıyı sürdür',
RESUME_PRINTING_DEFECTS: 'Sürdür (kusurlar kabul edilebilir)',
RESUME_PRINTING_PROBELM_SOLVED: 'Sürdür (sorun çözüldü)',
STOP_PRINTING: 'Baskıyı durdur',
CHECK_ASSISTANT: 'Asistanı aç',
FILAMENT_EXTRUDED: 'Filament ekstrude edildi, devam et',
RETRY_FILAMENT_EXTRUDED: 'Henüz ekstrude edilmedi, tekrar dene',
CONTINUE: 'Tamamlandı, devam et',
LOAD_VIRTUAL_TRAY: 'Filament yükle',
OK_BUTTON: 'Tamam',
FILAMENT_LOAD_RESUME: 'Filament yüklendi, sürdür',
JUMP_TO_LIVEVIEW: 'Canlı görünümü aç',
NO_REMINDER_NEXT_TIME: 'Bir daha hatırlatma',
REFRESH_NOZZLE: 'Tekrar kontrol et',
IGNORE_NO_REMINDER_NEXT_TIME: 'Yok say ve bir daha hatırlatma',
IGNORE_RESUME: 'Yok say ve sürdür',
PROBLEM_SOLVED_RESUME: 'Sorun çözüldü, sürdür',
TURN_OFF_FIRE_ALARM: 'Anlaşıldı, yangın alarmını kapat',
RETRY_PROBLEM_SOLVED: 'Tekrar dene (sorun çözüldü)',
CANCLE: 'İptal',
STOP_DRYING: 'Kurutmayı durdur',
PROCEED: 'Devam et',
OK_JUMP_RACK: 'Tamam',
ABORT: 'İptal',
DISABLE_PURIFICATION: 'Bu baskı için arıtmayı devre dışı bırak',
DONT_REMIND_NEXT_TIME: 'Beni hatırlatma',
DBL_CHECK_CANCEL: 'İptal',
DBL_CHECK_DONE: 'Tamam',
DBL_CHECK_RETRY: 'Tekrar dene',
DBL_CHECK_RESUME: 'Sürdür',
DBL_CHECK_OK: 'Onayla',
REMOVE_CLOSE_BTN: 'Kapat',
},
},
// MQTT Hata Ayıklama modali
+36
View File
@@ -2574,6 +2574,42 @@ export default {
clearErrors: '清除错误',
clearSuccess: 'HMS 错误已清除',
clearFailed: '清除 HMS 错误失败',
actionSuccess: '已向打印机发送操作',
actionFailed: '操作发送失败',
actions: {
RESUME_PRINTING: '恢复打印',
RESUME_PRINTING_DEFECTS: '恢复 (缺陷可接受)',
RESUME_PRINTING_PROBELM_SOLVED: '恢复 (问题已解决)',
STOP_PRINTING: '停止打印',
CHECK_ASSISTANT: '查看助手',
FILAMENT_EXTRUDED: '已挤出耗材,继续',
RETRY_FILAMENT_EXTRUDED: '尚未挤出,重试',
CONTINUE: '已完成,继续',
LOAD_VIRTUAL_TRAY: '加载耗材',
OK_BUTTON: '确定',
FILAMENT_LOAD_RESUME: '耗材已加载,恢复',
JUMP_TO_LIVEVIEW: '查看实时画面',
NO_REMINDER_NEXT_TIME: '下次不再提醒',
REFRESH_NOZZLE: '重新检查',
IGNORE_NO_REMINDER_NEXT_TIME: '忽略,下次不再提醒',
IGNORE_RESUME: '忽略并恢复',
PROBLEM_SOLVED_RESUME: '问题已解决,恢复',
TURN_OFF_FIRE_ALARM: '知道了,关闭火警',
RETRY_PROBLEM_SOLVED: '重试 (问题已解决)',
CANCLE: '取消',
STOP_DRYING: '停止干燥',
PROCEED: '继续',
OK_JUMP_RACK: '确定',
ABORT: '终止',
DISABLE_PURIFICATION: '本次打印禁用空气净化',
DONT_REMIND_NEXT_TIME: '不再提醒',
DBL_CHECK_CANCEL: '取消',
DBL_CHECK_DONE: '完成',
DBL_CHECK_RETRY: '重试',
DBL_CHECK_RESUME: '恢复',
DBL_CHECK_OK: '确认',
REMOVE_CLOSE_BTN: '关闭',
},
},
// MQTT Debug modal
+36
View File
@@ -2574,6 +2574,42 @@ export default {
clearErrors: '清除錯誤',
clearSuccess: 'HMS 錯誤已清除',
clearFailed: '清除 HMS 錯誤失敗',
actionSuccess: '已向印表機傳送動作',
actionFailed: '動作傳送失敗',
actions: {
RESUME_PRINTING: '恢復列印',
RESUME_PRINTING_DEFECTS: '恢復 (瑕疵可接受)',
RESUME_PRINTING_PROBELM_SOLVED: '恢復 (問題已解決)',
STOP_PRINTING: '停止列印',
CHECK_ASSISTANT: '檢視助理',
FILAMENT_EXTRUDED: '已擠出耗材,繼續',
RETRY_FILAMENT_EXTRUDED: '尚未擠出,重試',
CONTINUE: '已完成,繼續',
LOAD_VIRTUAL_TRAY: '載入耗材',
OK_BUTTON: '確定',
FILAMENT_LOAD_RESUME: '耗材已載入,恢復',
JUMP_TO_LIVEVIEW: '檢視即時畫面',
NO_REMINDER_NEXT_TIME: '下次不再提醒',
REFRESH_NOZZLE: '重新檢查',
IGNORE_NO_REMINDER_NEXT_TIME: '忽略,下次不再提醒',
IGNORE_RESUME: '忽略並恢復',
PROBLEM_SOLVED_RESUME: '問題已解決,恢復',
TURN_OFF_FIRE_ALARM: '知道了,關閉火警',
RETRY_PROBLEM_SOLVED: '重試 (問題已解決)',
CANCLE: '取消',
STOP_DRYING: '停止乾燥',
PROCEED: '繼續',
OK_JUMP_RACK: '確定',
ABORT: '中止',
DISABLE_PURIFICATION: '本次列印停用空氣淨化',
DONT_REMIND_NEXT_TIME: '不再提醒',
DBL_CHECK_CANCEL: '取消',
DBL_CHECK_DONE: '完成',
DBL_CHECK_RETRY: '重試',
DBL_CHECK_RESUME: '恢復',
DBL_CHECK_OK: '確認',
REMOVE_CLOSE_BTN: '關閉',
},
},
// MQTT Debug modal