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" => {
|
||||||
dtstart = prop.value.as_deref();
|
dtstart = prop.value.as_deref();
|
||||||
if let Some(params) = &prop.params {
|
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) {
|
if let Some(val) = values.get(0) {
|
||||||
tzid = Some(val.clone());
|
tzid = Some(val.clone());
|
||||||
}
|
}
|
||||||
@ -1716,8 +1716,13 @@ pub fn render_ical_summary(ical_data: &str) -> Result<String, ServerError> {
|
|||||||
.unwrap_or("UTC")
|
.unwrap_or("UTC")
|
||||||
.parse()
|
.parse()
|
||||||
.unwrap_or(chrono_tz::UTC);
|
.unwrap_or(chrono_tz::UTC);
|
||||||
let fallback =
|
let fallback = chrono::DateTime::<chrono::Utc>::from_timestamp(0, 0)
|
||||||
tz.from_utc_datetime(&chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap());
|
.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 start = parse_ical_datetime_tz(dtstart, tz).unwrap_or(fallback);
|
||||||
let end = dtend
|
let end = dtend
|
||||||
.and_then(|d| parse_ical_datetime_tz(d, tz))
|
.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()
|
local_end.format("%-I:%M %p %a %b %e, %Y").to_string()
|
||||||
};
|
};
|
||||||
let mut days = vec![];
|
let mut days = vec![];
|
||||||
let mut d = start.date_naive();
|
let d = start.date_naive();
|
||||||
let mut end_d = end.date_naive();
|
let mut end_d = end.date_naive();
|
||||||
// Check for all-day event (DATE, not DATE-TIME)
|
// Check for all-day event (DATE, not DATE-TIME)
|
||||||
let allday = dtstart.len() == 8 && (dtend.map(|s| s.len() == 8).unwrap_or(false));
|
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>"))
|
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>> {
|
fn parse_ical_datetime_tz(dt: &str, tz: Tz) -> Option<chrono::DateTime<Tz>> {
|
||||||
let dt = dt.split(':').last().unwrap_or(dt);
|
let dt = dt.split(':').last().unwrap_or(dt);
|
||||||
|
|||||||
@ -812,6 +812,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_tls_report_v1() {
|
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