сделал получение параметров через api, немного подредачил фронт
This commit is contained in:
@@ -3,54 +3,101 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Главная</title>
|
||||
<title>Вход</title>
|
||||
<link rel="stylesheet" type="text/css" href="/style.css">
|
||||
<style>
|
||||
#form-wrapper {
|
||||
overflow: hidden;
|
||||
max-width: 27em;
|
||||
margin: 5em auto;
|
||||
height: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.form-row {
|
||||
padding: 4px 0;
|
||||
margin: 1.5em;
|
||||
}
|
||||
|
||||
.form-row * {
|
||||
font-size: 1em;
|
||||
text-align: left;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.form-row label {
|
||||
line-height: 2em;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.form-row input {
|
||||
padding: 8px;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
border: none;
|
||||
border-bottom: var(--brand-bg) 2px solid;
|
||||
background-color: var(--bg-color);
|
||||
text-overflow: ellipsis;
|
||||
min-height: 2em;
|
||||
}
|
||||
|
||||
.form-row input:focus {
|
||||
outline: none;
|
||||
border: none;
|
||||
border-bottom: var(--brand-text) 2px solid;
|
||||
background-color: var(--bg-selected);
|
||||
}
|
||||
|
||||
#submit {
|
||||
border: none;
|
||||
font-weight: bolder;
|
||||
background: var(--bg-action);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="mainState" hidden>
|
||||
<h1>Общее состояние</h1>
|
||||
<ul>
|
||||
<li>Прием: {{ rxState }}</li>
|
||||
<li>Передача: {{ txState }}</li>
|
||||
<li>Тест: {{ testState }}</li>
|
||||
<li>Последнее обновление: {{ lastUpdateTime }}</li>
|
||||
</ul>
|
||||
|
||||
<div id="form-wrapper">
|
||||
<h1> Вход </h1>
|
||||
<form method="POST" id="login-form">
|
||||
{% csrf_token %}
|
||||
|
||||
{% if message %}
|
||||
<div class="form-row value-bad">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="form-row">
|
||||
<label for="username">Имя пользователя</label>
|
||||
<input type="text" name="username" id="username" required/>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<label for="password">Пароль</label>
|
||||
<input type="password" name="password" id="password" required/>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<input id="submit" type="submit" value="Войти">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="status-header"></div>
|
||||
|
||||
<!-- Версия для разработки включает в себя возможность вывода в консоль полезных уведомлений -->
|
||||
<script src="/js/vue.js"></script>
|
||||
<script>
|
||||
const mainState = new Vue({
|
||||
el: '#mainState',
|
||||
data: {
|
||||
rxState: '?',
|
||||
txState: '?',
|
||||
testState: '?',
|
||||
lastUpdateTime: new Date()
|
||||
},
|
||||
methods: {
|
||||
updateMainState(vals) {
|
||||
this.lastUpdateTime = new Date();
|
||||
this.rxState = vals["mainState"]["rxState"]
|
||||
this.txState = vals["mainState"]["txState"]
|
||||
this.testState = vals["mainState"]["testState"]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
setInterval(() => {
|
||||
fetch("/api/mainStatistics").then(async (val) => {
|
||||
this.updateMainState(await val.json())
|
||||
});
|
||||
}, 1000);
|
||||
document.getElementById("username").onkeydown = (e) => {
|
||||
if (e.key === 'Enter') {
|
||||
document.getElementById("password").focus()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
document.getElementById("mainState").removeAttribute("hidden")
|
||||
|
||||
// import MyComponent from './modules/header'
|
||||
// const sh = new Vue(MyComponent)
|
||||
document.getElementById("password").onkeydown = (e) => {
|
||||
if (e.key === 'Enter') {
|
||||
document.getElementById("login-form").submit()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user