server: address lint
This commit is contained in:
parent
25839328ac
commit
3827f87111
@ -1687,7 +1687,7 @@ pub fn render_ical_summary(ical_data: &str) -> Result<String, ServerError> {
|
||||
"DTSTART" => {
|
||||
dtstart = prop.value.as_deref();
|
||||
if let Some(params) = &prop.params {
|
||||
if let Some((k, values)) = params.iter().find(|(k, _)| k == "TZID") {
|
||||
if let Some((_, values)) = params.iter().find(|(k, _)| k == "TZID") {
|
||||
if let Some(val) = values.get(0) {
|
||||
tzid = Some(val.clone());
|
||||
}
|
||||
@ -1716,8 +1716,13 @@ pub fn render_ical_summary(ical_data: &str) -> Result<String, ServerError> {
|
||||
.unwrap_or("UTC")
|
||||
.parse()
|
||||
.unwrap_or(chrono_tz::UTC);
|
||||
let fallback =
|
||||
tz.from_utc_datetime(&chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap());
|
||||
let fallback = chrono::DateTime::<chrono::Utc>::from_timestamp(0, 0)
|
||||
.map(|dt| dt.with_timezone(&tz))
|
||||
.unwrap_or_else(|| {
|
||||
tz.with_ymd_and_hms(1970, 1, 1, 0, 0, 0)
|
||||
.single()
|
||||
.unwrap_or_else(|| tz.timestamp_opt(0, 0).single().unwrap())
|
||||
});
|
||||
let start = parse_ical_datetime_tz(dtstart, tz).unwrap_or(fallback);
|
||||
let end = dtend
|
||||
.and_then(|d| parse_ical_datetime_tz(d, tz))
|
||||
@ -1736,7 +1741,7 @@ pub fn render_ical_summary(ical_data: &str) -> Result<String, ServerError> {
|
||||
local_end.format("%-I:%M %p %a %b %e, %Y").to_string()
|
||||
};
|
||||
let mut days = vec![];
|
||||
let mut d = start.date_naive();
|
||||
let d = start.date_naive();
|
||||
let mut end_d = end.date_naive();
|
||||
// Check for all-day event (DATE, not DATE-TIME)
|
||||
let allday = dtstart.len() == 8 && (dtend.map(|s| s.len() == 8).unwrap_or(false));
|
||||
@ -1833,67 +1838,6 @@ pub fn render_ical_summary(ical_data: &str) -> Result<String, ServerError> {
|
||||
Ok(summary_parts.join("<hr>"))
|
||||
}
|
||||
|
||||
fn render_merged_calendar_table(event_days: &[NaiveDate]) -> String {
|
||||
use chrono::Datelike;
|
||||
let first_event = event_days.first().unwrap();
|
||||
let last_event = event_days.last().unwrap();
|
||||
let first_of_month =
|
||||
NaiveDate::from_ymd_opt(first_event.year(), first_event.month(), 1).unwrap();
|
||||
let last_of_month = {
|
||||
let next_month = if last_event.month() == 12 {
|
||||
NaiveDate::from_ymd_opt(last_event.year() + 1, 1, 1).unwrap()
|
||||
} else {
|
||||
NaiveDate::from_ymd_opt(last_event.year(), last_event.month() + 1, 1).unwrap()
|
||||
};
|
||||
next_month.pred_opt().unwrap()
|
||||
};
|
||||
let mut cal_start = first_of_month;
|
||||
while cal_start.weekday() != chrono::Weekday::Sun {
|
||||
cal_start = cal_start.pred_opt().unwrap();
|
||||
}
|
||||
let mut cal_end = last_of_month;
|
||||
while cal_end.weekday() != chrono::Weekday::Sat {
|
||||
cal_end = cal_end.succ_opt().unwrap();
|
||||
}
|
||||
let mut all_days = vec![];
|
||||
let mut d = cal_start;
|
||||
while d <= cal_end {
|
||||
all_days.push(d);
|
||||
d = d.succ_opt().unwrap();
|
||||
}
|
||||
let start_month = first_event.format("%B %Y");
|
||||
let end_month = last_event.format("%B %Y");
|
||||
let caption = if start_month.to_string() == end_month.to_string() {
|
||||
start_month.to_string()
|
||||
} else {
|
||||
format!("{} – {}", start_month, end_month)
|
||||
};
|
||||
let mut calendar_html = String::new();
|
||||
calendar_html.push_str(&format!(
|
||||
"<table class='ical-month' style='border-collapse:collapse; min-width:220px; background:#fff; box-shadow:0 2px 8px #bbb; font-size:14px; margin:0;'>"
|
||||
));
|
||||
calendar_html.push_str(&format!("<caption style='caption-side:top; text-align:center; font-weight:bold; font-size:16px; padding:8px 0;'>{}</caption>", caption));
|
||||
calendar_html.push_str("<thead><tr>");
|
||||
for wd in ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] {
|
||||
calendar_html.push_str(&format!("<th style='padding:4px 6px; border-bottom:1px solid #ccc; color:#666; font-weight:600; background:#f7f7f7'>{}</th>", wd));
|
||||
}
|
||||
calendar_html.push_str("</tr></thead><tbody>");
|
||||
for week in all_days.chunks(7) {
|
||||
calendar_html.push_str("<tr>");
|
||||
for day in week {
|
||||
let is_event = event_days.contains(day);
|
||||
let style = if is_event {
|
||||
"background:#ffd700; color:#222; font-weight:bold; border:1px solid #aaa; border-radius:4px; text-align:center;"
|
||||
} else {
|
||||
"border:1px solid #eee; text-align:center;background:#f7f7f7;color:#bbb;"
|
||||
};
|
||||
calendar_html.push_str(&format!("<td style='{}'>{}</td>", style, day.day()));
|
||||
}
|
||||
calendar_html.push_str("</tr>");
|
||||
}
|
||||
calendar_html.push_str("</tbody></table>");
|
||||
calendar_html
|
||||
}
|
||||
|
||||
fn parse_ical_datetime_tz(dt: &str, tz: Tz) -> Option<chrono::DateTime<Tz>> {
|
||||
let dt = dt.split(':').last().unwrap_or(dt);
|
||||
|
||||
@ -812,6 +812,6 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_parse_tls_report_v1() {
|
||||
let report: TlsRpt = serde_json::from_str(REPORT_V1).unwrap();
|
||||
let _report: TlsRpt = serde_json::from_str(REPORT_V1).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user