mirror of
https://github.com/getnora-io/nora.git
synced 2026-04-12 13:50:31 +00:00
style: fix formatting and ignore txt files
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -12,3 +12,4 @@ TODO.md
|
|||||||
ROADMAP*.md
|
ROADMAP*.md
|
||||||
docs-site/
|
docs-site/
|
||||||
docs/
|
docs/
|
||||||
|
*.txt
|
||||||
|
|||||||
@@ -181,9 +181,19 @@ async fn build_docker_index(storage: &Storage) -> Vec<RepoInfo> {
|
|||||||
|
|
||||||
if let Ok(data) = storage.get(key).await {
|
if let Ok(data) = storage.get(key).await {
|
||||||
if let Ok(m) = serde_json::from_slice::<serde_json::Value>(&data) {
|
if let Ok(m) = serde_json::from_slice::<serde_json::Value>(&data) {
|
||||||
let cfg = m.get("config").and_then(|c| c.get("size")).and_then(|s| s.as_u64()).unwrap_or(0);
|
let cfg = m
|
||||||
let layers: u64 = m.get("layers").and_then(|l| l.as_array())
|
.get("config")
|
||||||
.map(|arr| arr.iter().filter_map(|l| l.get("size").and_then(|s| s.as_u64())).sum())
|
.and_then(|c| c.get("size"))
|
||||||
|
.and_then(|s| s.as_u64())
|
||||||
|
.unwrap_or(0);
|
||||||
|
let layers: u64 = m
|
||||||
|
.get("layers")
|
||||||
|
.and_then(|l| l.as_array())
|
||||||
|
.map(|arr| {
|
||||||
|
arr.iter()
|
||||||
|
.filter_map(|l| l.get("size").and_then(|s| s.as_u64()))
|
||||||
|
.sum()
|
||||||
|
})
|
||||||
.unwrap_or(0);
|
.unwrap_or(0);
|
||||||
entry.1 += cfg + layers;
|
entry.1 += cfg + layers;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,13 @@ pub async fn api_stats(State(state): State<Arc<AppState>>) -> Json<RegistryStats
|
|||||||
let _ = state.repo_index.get("pypi", &state.storage).await;
|
let _ = state.repo_index.get("pypi", &state.storage).await;
|
||||||
|
|
||||||
let (docker, maven, npm, cargo, pypi) = state.repo_index.counts();
|
let (docker, maven, npm, cargo, pypi) = state.repo_index.counts();
|
||||||
Json(RegistryStats { docker, maven, npm, cargo, pypi })
|
Json(RegistryStats {
|
||||||
|
docker,
|
||||||
|
maven,
|
||||||
|
npm,
|
||||||
|
cargo,
|
||||||
|
pypi,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn api_dashboard(State(state): State<Arc<AppState>>) -> Json<DashboardResponse> {
|
pub async fn api_dashboard(State(state): State<Arc<AppState>>) -> Json<DashboardResponse> {
|
||||||
@@ -135,8 +141,11 @@ pub async fn api_dashboard(State(state): State<Arc<AppState>>) -> Json<Dashboard
|
|||||||
let pypi_size: u64 = pypi_repos.iter().map(|r| r.size).sum();
|
let pypi_size: u64 = pypi_repos.iter().map(|r| r.size).sum();
|
||||||
let total_storage = docker_size + maven_size + npm_size + cargo_size + pypi_size;
|
let total_storage = docker_size + maven_size + npm_size + cargo_size + pypi_size;
|
||||||
|
|
||||||
let total_artifacts = docker_repos.len() + maven_repos.len() + npm_repos.len()
|
let total_artifacts = docker_repos.len()
|
||||||
+ cargo_repos.len() + pypi_repos.len();
|
+ maven_repos.len()
|
||||||
|
+ npm_repos.len()
|
||||||
|
+ cargo_repos.len()
|
||||||
|
+ pypi_repos.len();
|
||||||
|
|
||||||
let global_stats = GlobalStats {
|
let global_stats = GlobalStats {
|
||||||
downloads: state.metrics.downloads.load(Ordering::Relaxed),
|
downloads: state.metrics.downloads.load(Ordering::Relaxed),
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
use super::api::{DashboardResponse, DockerDetail, MavenDetail, PackageDetail};
|
use super::api::{DashboardResponse, DockerDetail, MavenDetail, PackageDetail};
|
||||||
use crate::repo_index::RepoInfo;
|
|
||||||
use super::components::*;
|
use super::components::*;
|
||||||
use super::i18n::{get_translations, Lang};
|
use super::i18n::{get_translations, Lang};
|
||||||
|
use crate::repo_index::RepoInfo;
|
||||||
|
|
||||||
/// Renders the main dashboard page with dark theme
|
/// Renders the main dashboard page with dark theme
|
||||||
pub fn render_dashboard(data: &DashboardResponse, lang: Lang) -> String {
|
pub fn render_dashboard(data: &DashboardResponse, lang: Lang) -> String {
|
||||||
@@ -304,7 +304,8 @@ pub fn render_registry_list_paginated(
|
|||||||
r##"<tr><td colspan="4" class="px-6 py-12 text-center text-slate-500">
|
r##"<tr><td colspan="4" class="px-6 py-12 text-center text-slate-500">
|
||||||
<div class="text-4xl mb-2">📭</div>
|
<div class="text-4xl mb-2">📭</div>
|
||||||
<div>No more items on this page</div>
|
<div>No more items on this page</div>
|
||||||
</td></tr>"##.to_string()
|
</td></tr>"##
|
||||||
|
.to_string()
|
||||||
} else {
|
} else {
|
||||||
repos
|
repos
|
||||||
.iter()
|
.iter()
|
||||||
@@ -341,7 +342,11 @@ pub fn render_registry_list_paginated(
|
|||||||
|
|
||||||
// Pagination
|
// Pagination
|
||||||
let total_pages = (total + limit - 1) / limit;
|
let total_pages = (total + limit - 1) / limit;
|
||||||
let start_item = if total == 0 { 0 } else { (page - 1) * limit + 1 };
|
let start_item = if total == 0 {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
(page - 1) * limit + 1
|
||||||
|
};
|
||||||
let end_item = (start_item + repos.len()).saturating_sub(1);
|
let end_item = (start_item + repos.len()).saturating_sub(1);
|
||||||
|
|
||||||
let pagination = if total_pages > 1 {
|
let pagination = if total_pages > 1 {
|
||||||
|
|||||||
Reference in New Issue
Block a user