[pdm-devel] [PATCH yew-comp 1/7] tasks: make date filter functional
Dominik Csapak
d.csapak at proxmox.com
Mon Jan 20 13:10:45 CET 2025
On 1/20/25 12:30, Thomas Lamprecht wrote:
> Am 20.01.25 um 10:29 schrieb Dominik Csapak:
>> by converting the strings like '2014-05-01' into epochs by using the
>> js-sys Date interface.
>>
>> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
>> ---
>> src/tasks.rs | 22 +++++++++++++++++++++-
>> 1 file changed, 21 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/tasks.rs b/src/tasks.rs
>> index 4ea243f..fa17602 100644
>> --- a/src/tasks.rs
>> +++ b/src/tasks.rs
>> @@ -134,7 +134,27 @@ impl LoadableComponent for ProxmoxTasks {
>> let store = self.store.clone();
>>
>> let form_context = self.filter_form_context.read();
>> - let filter = form_context.get_submit_data();
>> + let mut filter = form_context.get_submit_data();
>> +
>> + // Transform Date values
>> + if let Some(since) = filter.get("since").and_then(|v| v.as_str()) {
>> + let since = js_sys::Date::new(&wasm_bindgen::JsValue::from_str(since));
>> + since.set_hours(0);
>> + since.set_minutes(0);
>> + since.set_seconds(0);
>> + let since = (since.get_time() / 1000.0).round() as u64;
>
> Is round doing something here? Could only be the case if one could enter
> milliseconds in the since/until strings, and if that would be the case
> it might be better to just call set_milliseconds(0) too.
We currently rely on the browser to display a date time selector, and since
this is browser dependent, we technically cannot really know what we're getting here.
so the round was just to be overly careful to respect the input, but yeah
simply omitting the round to truncate the decimal places seems better.
and 'f64 as u64' already does rounds to zero, so i'll send a follow up to remove the round()
to reference the offical rust docs for 'as':
https://doc.rust-lang.org/1.84.0/reference/expressions/operator-expr.html#type-cast-expressions
>
>> + filter["since"] = since.into();
>> + }
>> +
>> + if let Some(until) = filter.get("until").and_then(|v| v.as_str()) {
>> + let until = js_sys::Date::new(&wasm_bindgen::JsValue::from_str(until));
>> + until.set_hours(23);
>> + until.set_minutes(59);
>> + until.set_seconds(59);
>> + let until = (until.get_time() / 1000.0).round() as u64;
>
> same here.
>
>> + filter["until"] = until.into();
>> + }
>> +
>> Box::pin(async move {
>> let data = crate::http_get(&path, Some(filter)).await?;
>> store.write().set_data(data);
>
More information about the pdm-devel
mailing list