93 lines
3.2 KiB
QML
93 lines
3.2 KiB
QML
import QtQuick 2.12
|
|
import QtQuick.Controls 2.12
|
|
import QtQuick.Layouts 1.12
|
|
import "../components"
|
|
|
|
Item {
|
|
id: page
|
|
|
|
property var status: ({ state: "idle" })
|
|
|
|
function stateText(s) {
|
|
switch (s) {
|
|
case "staging": return "Распаковка пакета…"
|
|
case "switching": return "Переключение версии…"
|
|
case "health_check": return "Проверка работоспособности…"
|
|
case "success": return "Обновление успешно применено"
|
|
case "rolledback": return "Запуск новой версии не удался — выполнен откат"
|
|
case "rollback_done": return "Откат выполнен"
|
|
case "error": return "Ошибка обновления"
|
|
default: return "Готово к обновлению"
|
|
}
|
|
}
|
|
|
|
function reload() {
|
|
status = systemInfo.updateStatus()
|
|
systemInfo.refresh()
|
|
}
|
|
|
|
Component.onCompleted: reload()
|
|
|
|
Timer {
|
|
interval: 2500
|
|
running: true
|
|
repeat: true
|
|
onTriggered: page.reload()
|
|
}
|
|
|
|
ColumnLayout {
|
|
anchors.fill: parent
|
|
anchors.margins: 8
|
|
spacing: 12
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
Button { text: "\u2190 Назад"; onClicked: page.StackView.view.pop() }
|
|
Label {
|
|
Layout.fillWidth: true
|
|
text: "Обновление ПО"
|
|
font.bold: true
|
|
font.pixelSize: 16
|
|
color: settingsContainer.darkMode ? "white" : "black"
|
|
horizontalAlignment: Text.AlignHCenter
|
|
}
|
|
Button { text: "\u21BB"; onClicked: page.reload() }
|
|
}
|
|
|
|
Text {
|
|
Layout.fillWidth: true
|
|
text: "Текущая версия: " + systemInfo.currentVersion
|
|
color: settingsContainer.darkMode ? "white" : "black"
|
|
font.pixelSize: 14
|
|
}
|
|
|
|
Rectangle {
|
|
Layout.fillWidth: true
|
|
Layout.preferredHeight: stTxt.implicitHeight + 20
|
|
radius: 6
|
|
color: settingsContainer.darkMode ? "#40222c58" : "#40ffffff"
|
|
border.color: settingsContainer.darkMode ? "#80ffffff" : "#80000000"
|
|
border.width: 1
|
|
Text {
|
|
id: stTxt
|
|
anchors.fill: parent
|
|
anchors.margins: 10
|
|
text: "Статус: " + page.stateText(page.status.state)
|
|
+ (page.status.message ? "\n" + page.status.message : "")
|
|
color: settingsContainer.darkMode ? "white" : "black"
|
|
wrapMode: Text.Wrap
|
|
}
|
|
}
|
|
|
|
Text {
|
|
Layout.fillWidth: true
|
|
text: "Загрузка нового пакета ПО выполняется через веб-конфигуратор. После применения выполняется проверка запуска; при ошибке произойдёт автоматический откат на предыдущую версию."
|
|
color: settingsContainer.darkMode ? "#cccccc" : "#444444"
|
|
font.pixelSize: 12
|
|
wrapMode: Text.Wrap
|
|
}
|
|
|
|
Item { Layout.fillHeight: true }
|
|
}
|
|
}
|