modified: templates/available_projects.html
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user