#javascript #jquery #flask #bootstrap-4 #fetch
Вопрос:
Я реализую функцию ведения журнала в модальном окне, которое запускается ссылкой с тегом привязки. Во время запуска приложения, нажав на btn1, пользователь может щелкнуть по тегу привязки для просмотра журналов, но приложение меняет шаблон html на другой, и модальный закрывается. Содержимое журнала было считано из текстового файла и помещено в список неупорядоченных элементов. Как сохранить модальный режим открытым после перенаправления на другой html-шаблон из шаблона def_entry и сохранить тот же журнал? Как использовать один и тот же модальный код для каждого имеющегося у меня html-шаблона? любая идея или помощь будут очень признательны!
Ниже показан код.
<script>
// fire an event on an anchor tag
$('#MainLog').click(function () {
// resetting the position of the modal
if (!$(".modal.in").length) {
$(".modal-dialog").css({
top: 0,
left: 0
});
}
});
function submit_entry(def_entry){
fetch(`${window.origin}/process_definition/`, {
method: "POST",
credentials: "include",
body: JSON.stringify(entry),
cache: "no-cache",
headers: new Headers ({
"content-type": "application/JSON"
})
})
.then(function(response){
// deal with the response that has been received from flask view in /preporcess_definition
// deal with other than 307 status cases
if(response.status != 307){
console.log(`Response.status was not 200: ${response.status}`)
return ;
}
}
}
$(document).ready(function(){
var output = document.getElementById('output');
var xhr = new XMLHttpRequest();
xhr.open('GET', '{{ url_for('stream') }}', true);
xhr.send();
var position = 0;
setInterval(function() {
// output.textContent = xhr.responseText;
var messages = xhr.responseText.split('n');
messages.slice(position, -1).forEach(function(value) {
// latest.textContent = value; // update the latest value in place
// build and append a new item to a list to log all output
var item = document.createElement('li');
item.textContent = value;
output.appendChild(item);
output.parentNode.scrollTop = output.parentNode.scrollHeight;
});
position = messages.length - 1;
// $('#exampleModalLong').animate({ scrollTop: $('#exampleModalLong .modal-content').height() }, 'slow');
// $("#exampleModalLong").animate({ scrollTop: $("#exampleModalLong").height() }, "slow");
}, 500);
});
</script>
<body>
<!-- body content of def_entry template -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<!-- Navbar content -->
<a class="navbar-brand" href="{{ url_for('login') }}">DENA</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="{{ url_for('login') }}">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<!-- <a class="nav-link" href="#">Link</a> -->
<a data-target="#exampleModalLong" data-toggle="modal" class="nav-link" id="MainLog"
href="#exampleModalLong">View Logs</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
</div>
</nav>
<button id="btn1" class="btn btn-primary" onclick="submit_entry('def_entry');" style="float: right;">Submit</button>
<!-- Modal -->
<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle">
<div class="modal-dialog mw-100 w-75" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">DENA Logging</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">amp;times;</span>
</button>
</div>
<div class="modal-body">
<!-- <pre id="output"></pre> -->
<ul id="output"></ul>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<!-- Modal -->
</body>