lxconsole/lxconsole/templates/simplestreams.html
matthewalanpenning 058485d5b1 v0.4.0
2023-11-01 06:21:44 -04:00

166 lines
4.9 KiB
HTML

{% extends "main.html" %}
{% block header %}
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{ page_title | safe }}</h1>
</div>
<div class="col-sm-6">
<button class="btn btn-outline-primary float-sm-right mr-4" data-bs-toggle="modal" data-bs-target="#addModal" title="Add Simplestreams Repository" aria-hidden="true">
<i class="fas fa-plus fa-sm fa-fw"></i> Simplestreams Repository
</button>
</div>
</div>
{% endblock header %}
{% block content %}
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Simplestreams</h3>
<div class="card-tools">
<button type="button" class="btn btn-tool" onclick="reloadPageContent()" title="Refresh">
<i class="fas fa-sync"></i>
</button>
</div>
</div>
<div class="card-body">
<table class="table table-hover" id="myDataTable" width="100%" cellspacing="0">
</table>
</div>
</div>
</div>
{% endblock content %}
{% block modal %}
{% include 'modals/simplestreams.html' %}
{% endblock modal %}
{% block script %}
<script>
var reloadTime = 10000;
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const serverId = urlParams.get('id');
const project = urlParams.get('project');
applySidebarStyles();
applySidebarLinks();
populateSidebarLinks();
populateNavbarLinks();
function reloadPageContent() {
//Clear the automatic page reload
clearTimeout(pageReloadTimeout);
//Reload the datatables content
$('#myDataTable').DataTable().ajax.reload(null, false);
//Set the automatic page reload
pageReloadTimeout = setTimeout(() => { reloadPageContent(); }, reloadTime);
}
function loadPageContent(){
//Display the current project
$("#selectedProject").text(project);
//Loaded from main.html template
populateServerSelectDropdown()
populateProjectSelectDropdown()
// Configure Datatable
$('#myDataTable').DataTable({
ajax: {
url: "../api/simplestreams/list_simplestreams",
dataType: "json",
dataSrc: "data",
contentType: "application/json",
error: function (xhr, error, code) {
console.log(xhr, code);
}
},
columns: [
{ title: "URL", data: function (row, type, set) {
if (row.hasOwnProperty('url')) {
if (row.url)
return row.url
}
return '-'
},
},
{ title: "Alias", data: function (row, type, set) {
if (row.hasOwnProperty('alias')) {
if (row.alias)
return row.alias
}
return '-'
},
},
{ title: "Actions", data: function (row, type, set) {
links = ''
if (row.hasOwnProperty('id') && row.hasOwnProperty('url') && row.hasOwnProperty('alias')) {
links = '<a href="#" onclick=confirmDeleteSimplestreams(\''+row.id+'\',\''+row.url+'\',\''+row.alias+'\')> <i class="fas fa-trash-alt fa-lg" style="color:#ddd" title="Delete" aria-hidden="true"></i> </a>'
}
return links
},
},
],
order: [],
});
//Set reload page content
pageReloadTimeout = setTimeout(() => { reloadPageContent(); }, reloadTime);
}
function addItem(){
console.log("Info: adding new simplestreams repo");
data = $('#addForm').serialize();
$.post("../api/simplestreams/add_simplestream", data, function (data) {
console.log(data)
if (data.error_code >= 400){
alert(data.error);
}
//Sync type
setTimeout(() => { reloadPageContent(); }, 1000);
});
}
function confirmDeleteSimplestreams(id, url, alias){
if (alias == '')
name = url
else
name = alias
console.log("Info: confirming deletion of simplestreams repo " + name);
if (confirm("Are you sure you want to delete simplestreams repo " + name + "?") == true) {
deleteSimplestreams(id);
}
}
function deleteSimplestreams(id){
console.log("Info: deleting simplestreams repo " + id);
$.post("../api/simplestreams/delete_simplestream", { id: id }, function (data) {
console.log(data);
if (data.error_code >= 400){
alert(data.error);
}
//Sync type
setTimeout(() => { reloadPageContent(); }, 1000);
});
}
$(document).ready(function(){
//If id or project variables are missing redirect to servers page
if (!serverId || !project) {
window.location.href = 'servers';
}
else {
loadPageContent()
operationStatusCheck()
}
});
</script>
{% endblock script %}