feat: enhance torrent details general tab
All checks were successful
Build MIPS Binary / build (push) Successful in 1m57s
All checks were successful
Build MIPS Binary / build (push) Successful in 1m57s
This commit is contained in:
@@ -51,6 +51,21 @@ mod fields {
|
||||
|
||||
pub const IDX_LABEL: usize = 12;
|
||||
pub const CMD_LABEL: &str = "d.custom1=";
|
||||
|
||||
pub const IDX_RATIO: usize = 13;
|
||||
pub const CMD_RATIO: &str = "d.ratio=";
|
||||
|
||||
pub const IDX_UPLOADED: usize = 14;
|
||||
pub const CMD_UPLOADED: &str = "d.up.total=";
|
||||
|
||||
pub const IDX_WASTED: usize = 15;
|
||||
pub const CMD_WASTED: &str = "d.skip.total=";
|
||||
|
||||
pub const IDX_SAVE_PATH: usize = 16;
|
||||
pub const CMD_SAVE_PATH: &str = "d.base_path=";
|
||||
|
||||
pub const IDX_FREE_DISK: usize = 17;
|
||||
pub const CMD_FREE_DISK: &str = "d.free_diskspace=";
|
||||
}
|
||||
|
||||
use fields::*;
|
||||
@@ -72,6 +87,11 @@ const RTORRENT_FIELDS: &[&str] = &[
|
||||
CMD_CREATION_DATE,
|
||||
CMD_HASHING,
|
||||
CMD_LABEL,
|
||||
CMD_RATIO,
|
||||
CMD_UPLOADED,
|
||||
CMD_WASTED,
|
||||
CMD_SAVE_PATH,
|
||||
CMD_FREE_DISK,
|
||||
];
|
||||
|
||||
fn parse_long(s: Option<&String>) -> i64 {
|
||||
@@ -98,6 +118,11 @@ fn from_rtorrent_row(row: Vec<String>) -> Torrent {
|
||||
let added_date = parse_long(row.get(IDX_CREATION_DATE));
|
||||
let is_hashing = parse_long(row.get(IDX_HASHING));
|
||||
let label_raw = parse_string(row.get(IDX_LABEL));
|
||||
let ratio = parse_long(row.get(IDX_RATIO)) as f64 / 1000.0;
|
||||
let uploaded = parse_long(row.get(IDX_UPLOADED));
|
||||
let wasted = parse_long(row.get(IDX_WASTED));
|
||||
let save_path = parse_string(row.get(IDX_SAVE_PATH));
|
||||
let free_disk_space = parse_long(row.get(IDX_FREE_DISK));
|
||||
|
||||
let label = if label_raw.is_empty() {
|
||||
None
|
||||
@@ -144,6 +169,11 @@ fn from_rtorrent_row(row: Vec<String>) -> Torrent {
|
||||
error_message: message,
|
||||
added_date,
|
||||
label,
|
||||
ratio,
|
||||
uploaded,
|
||||
wasted,
|
||||
save_path,
|
||||
free_disk_space,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -89,16 +89,59 @@ pub fn TorrentDetailsSheet() -> impl IntoView {
|
||||
error_message: "".to_string(),
|
||||
added_date: 0,
|
||||
label: None,
|
||||
ratio: 0.0,
|
||||
uploaded: 0,
|
||||
wasted: 0,
|
||||
save_path: "Yükleniyor...".to_string(),
|
||||
free_disk_space: 0,
|
||||
});
|
||||
|
||||
view! {
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-6">
|
||||
<InfoItem label="İndirilen / Toplam" value=format!("{} / {}", format_bytes(t.completed), format_bytes(t.size)) />
|
||||
<InfoItem label="İndirme Hızı" value=format_speed(t.down_rate) class="text-blue-500" />
|
||||
<InfoItem label="Gönderme Hızı" value=format_speed(t.up_rate) class="text-green-500" />
|
||||
<InfoItem label="Eklenme Tarihi" value=format_date(t.added_date) />
|
||||
<InfoItem label="Kalan Süre" value=format_duration(t.eta) />
|
||||
<InfoItem label="Hash" value=t.hash class="col-span-2 md:col-span-4 break-all font-mono text-xs" />
|
||||
<div class="flex flex-col gap-6">
|
||||
// Aktarım
|
||||
<div>
|
||||
<h3 class="text-sm font-bold border-b pb-2 mb-4">"Aktarım"</h3>
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
||||
<InfoItem label="Geçen Süre" value="N/A".to_string() />
|
||||
<InfoItem label="Kalan" value=format_duration(t.eta) />
|
||||
<InfoItem label="Paylaşım Oranı" value=format!("{:.3}", t.ratio) />
|
||||
<div class="hidden md:block"></div>
|
||||
|
||||
<InfoItem label="İndirilen" value=format_bytes(t.completed) />
|
||||
<InfoItem label="İndirme Hızı" value=format_speed(t.down_rate) class="text-blue-500" />
|
||||
<InfoItem label="Boşa Giden" value=format_bytes(t.wasted) />
|
||||
<div class="hidden md:block"></div>
|
||||
|
||||
<InfoItem label="Gönderilen" value=format_bytes(t.uploaded) />
|
||||
<InfoItem label="Gönderme Hızı" value=format_speed(t.up_rate) class="text-green-500" />
|
||||
<div class="hidden md:block"></div>
|
||||
<div class="hidden md:block"></div>
|
||||
|
||||
<InfoItem label="Ortaklar" value="0 / 0 bağlı".to_string() />
|
||||
<InfoItem label="Eşler" value="0 / 0 bağlı".to_string() />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
// İzleyici
|
||||
<div>
|
||||
<h3 class="text-sm font-bold border-b pb-2 mb-4">"İzleyici"</h3>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<InfoItem label="İzleyici URL'si" value="İzleyiciler sekmesine bakınız".to_string() class="col-span-1 md:col-span-2 break-all text-xs" />
|
||||
<InfoItem label="İzleyici Durumu" value="N/A".to_string() />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
// Genel
|
||||
<div>
|
||||
<h3 class="text-sm font-bold border-b pb-2 mb-4">"Genel"</h3>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<InfoItem label="Kaydedilen Yer" value=t.save_path class="col-span-1 md:col-span-2 break-all font-mono text-xs" />
|
||||
<InfoItem label="Boş Disk Alanı" value=format_bytes(t.free_disk_space) />
|
||||
<InfoItem label="Oluşturulma Tarihi" value=format_date(t.added_date) />
|
||||
<InfoItem label="Hash" value=t.hash class="col-span-1 md:col-span-2 break-all font-mono text-xs" />
|
||||
<InfoItem label="Yorum" value="Yok".to_string() class="col-span-1 md:col-span-2 break-words text-xs" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}}
|
||||
|
||||
@@ -42,6 +42,11 @@ pub struct Torrent {
|
||||
pub error_message: String,
|
||||
pub added_date: i64,
|
||||
pub label: Option<String>,
|
||||
pub ratio: f64,
|
||||
pub uploaded: i64,
|
||||
pub wasted: i64,
|
||||
pub save_path: String,
|
||||
pub free_disk_space: i64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, ToSchema)]
|
||||
|
||||
Reference in New Issue
Block a user