modified: templates/available_projects.html

This commit is contained in:
SimolZimol
2025-07-07 00:52:38 +02:00
parent 484491649d
commit bbb75054ba

View File

@@ -366,28 +366,72 @@
</div>
<div class="card-body">
<div class="row text-center">
<div class="col-md-3">
<div class="col-lg-2 col-md-3 col-6 mb-3">
<div class="stat-item">
<span class="stat-number">{{ projects|length }}</span>
<span>Verfügbare Apps</span>
<span class="stat-number text-primary">{{ projects|length }}</span>
<span class="text-muted small">Verfügbare Apps</span>
</div>
</div>
<div class="col-md-3">
<div class="col-lg-2 col-md-3 col-6 mb-3">
<div class="stat-item">
<span class="stat-number" id="installedCount">0</span>
<span>Installierte Apps</span>
<span class="stat-number text-success" id="installedCount">0</span>
<span class="text-muted small">Installierte Apps</span>
</div>
</div>
<div class="col-md-3">
<div class="col-lg-2 col-md-3 col-6 mb-3">
<div class="stat-item">
<span class="stat-number">{{ projects|selectattr('language', 'equalto', 'JavaScript')|list|length }}</span>
<span>JavaScript Apps</span>
<span class="stat-number text-info">{{ projects|selectattr('category', 'equalto', 'Web Application')|list|length }}</span>
<span class="text-muted small">Web Applications</span>
</div>
</div>
<div class="col-md-3">
<div class="col-lg-2 col-md-3 col-6 mb-3">
<div class="stat-item">
<span class="stat-number">{{ projects|selectattr('language', 'equalto', 'Python')|list|length }}</span>
<span>Python Apps</span>
<span class="stat-number text-warning">{{ projects|selectattr('category', 'equalto', 'Web Server')|list|length }}</span>
<span class="text-muted small">Web Server</span>
</div>
</div>
<div class="col-lg-2 col-md-3 col-6 mb-3">
<div class="stat-item">
<span class="stat-number text-secondary">{{ projects|selectattr('category', 'equalto', 'Productivity')|list|length }}</span>
<span class="text-muted small">Productivity</span>
</div>
</div>
<div class="col-lg-2 col-md-3 col-6 mb-3">
<div class="stat-item">
<span class="stat-number text-danger">{{ projects|selectattr('category', 'equalto', 'Media & Entertainment')|list|length }}</span>
<span class="text-muted small">Media & Entertainment</span>
</div>
</div>
</div>
<!-- Zusätzliche Statistiken Zeile -->
<div class="row text-center mt-3 pt-3 border-top">
<div class="col-lg-3 col-md-6 col-12 mb-2">
<div class="stat-item-small">
<i class="fab fa-docker text-primary me-1"></i>
<span class="stat-number-small">{{ projects|selectattr('requirements.docker', 'equalto', true)|list|length }}</span>
<span class="text-muted small">Docker-fähig</span>
</div>
</div>
<div class="col-lg-3 col-md-6 col-12 mb-2">
<div class="stat-item-small">
<i class="fab fa-js-square text-warning me-1"></i>
<span class="stat-number-small">{{ projects|selectattr('language', 'equalto', 'JavaScript')|list|length + projects|selectattr('language', 'equalto', 'Node.js')|list|length }}</span>
<span class="text-muted small">JavaScript/Node.js</span>
</div>
</div>
<div class="col-lg-3 col-md-6 col-12 mb-2">
<div class="stat-item-small">
<i class="fab fa-python text-success me-1"></i>
<span class="stat-number-small">{{ projects|selectattr('language', 'equalto', 'Python')|list|length }}</span>
<span class="text-muted small">Python</span>
</div>
</div>
<div class="col-lg-3 col-md-6 col-12 mb-2">
<div class="stat-item-small">
<i class="fas fa-code text-info me-1"></i>
<span class="stat-number-small">{{ (projects|length) - (projects|selectattr('language', 'equalto', 'JavaScript')|list|length) - (projects|selectattr('language', 'equalto', 'Node.js')|list|length) - (projects|selectattr('language', 'equalto', 'Python')|list|length) }}</span>
<span class="text-muted small">Andere Sprachen</span>
</div>
</div>
</div>
@@ -461,6 +505,57 @@
{% endblock %}
{% block scripts %}
<style>
.stat-item {
text-align: center;
padding: 1rem;
}
.stat-item .stat-number {
display: block;
font-size: 2rem;
font-weight: bold;
line-height: 1;
margin-bottom: 0.5rem;
}
.stat-item span:last-child {
display: block;
font-size: 0.875rem;
font-weight: 500;
}
.stat-item-small {
text-align: center;
padding: 0.5rem;
}
.stat-item-small .stat-number-small {
font-size: 1.25rem;
font-weight: bold;
margin: 0 0.25rem;
}
.stat-item-small i {
font-size: 1.1rem;
}
.stat-item-small span:last-child {
font-size: 0.8rem;
margin-left: 0.25rem;
}
/* Responsive Anpassungen für Statistiken */
@media (max-width: 768px) {
.stat-item .stat-number {
font-size: 1.5rem;
}
.stat-item-small .stat-number-small {
font-size: 1rem;
}
}
</style>
<script>
let installedProjects = [];
@@ -718,12 +813,13 @@ function installProject(url, name, method = 'clone') {
updateInstalledCount();
// Erfolgsmeldung anzeigen
showAlert('success', `${name} erfolgreich installiert! Seite wird aktualisiert...`);
showAlert('success', `${name} erfolgreich installiert! Seite wird in 3 Sekunden neu geladen...`);
// Nach 2 Sekunden Seite neuladen um aktuellen Status zu zeigen
// Nach 3 Sekunden Seite neuladen um aktuellen Status zu zeigen
setTimeout(() => {
console.log('🔄 Lade Seite nach erfolgreicher Installation neu...');
window.location.reload();
}, 2000);
}, 3000);
} else {
button.innerHTML = originalText;
button.disabled = false;
@@ -766,12 +862,13 @@ function updateProject(url, name) {
button.className = 'btn btn-success';
// Erfolgsmeldung anzeigen
showAlert('success', `${name} erfolgreich aktualisiert! Seite wird aktualisiert...`);
showAlert('success', `${name} erfolgreich aktualisiert! Seite wird in 3 Sekunden neu geladen...`);
// Nach 2 Sekunden Seite neuladen um aktuellen Status zu zeigen
// Nach 3 Sekunden Seite neuladen um aktuellen Status zu zeigen
setTimeout(() => {
console.log('🔄 Lade Seite nach erfolgreichem Update neu...');
window.location.reload();
}, 2000);
}, 3000);
} else {
button.innerHTML = originalText;
button.disabled = false;