mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: clear date value (#2700)
* chore: Add _ClearDateFieldButton * chore: Add new DateCellCalendarEvent to clear date * chore: Add grid_field_clearDate translation token * refactor: _ClearDateFieldButton -> _ClearDateButton * fix: Fix dart(unused_element) in _ClearDateButton * feat: Handle clearDate * Revert "feat: Handle clearDate" This reverts commit fd145ef8e9589f3b4aa1a16e5d72c15b6d0b53c4. * feat: Handle clearDate * feat: Add clear_flag field * feat: check clear_flag to clear date * chore: update exisitng tests * fix: add mssing import * refactor: remove check for timeFormatError * fix: fix margin on _ClearDateButton * refactor: _ClearDateButton -> ClearDateButton * test: add clear date backend unit test * test: add clear date integration test * test: add clear date to edit time cell test * chore: mark ClearDateButton visible for testing * feat: close date editor popover on clear date * style: make AppFlowyPopover taller * fix: trim dateStr in _dateStrFromCellData * fix: don't dismiss CellEditor after clearDate
This commit is contained in:
@ -35,6 +35,9 @@ pub struct DateChangesetPB {
|
||||
|
||||
#[pb(index = 4, one_of)]
|
||||
pub include_time: Option<bool>,
|
||||
|
||||
#[pb(index = 5, one_of)]
|
||||
pub clear_flag: Option<bool>,
|
||||
}
|
||||
|
||||
// Date
|
||||
|
@ -640,6 +640,7 @@ pub(crate) async fn update_date_cell_handler(
|
||||
date: data.date,
|
||||
time: data.time,
|
||||
include_time: data.include_time,
|
||||
clear_flag: data.clear_flag,
|
||||
};
|
||||
let database_editor = manager.get_database_with_view_id(&cell_id.view_id).await?;
|
||||
database_editor
|
||||
|
@ -212,6 +212,7 @@ pub fn insert_date_cell(timestamp: i64, include_time: Option<bool>, field: &Fiel
|
||||
date: Some(timestamp.to_string()),
|
||||
time: None,
|
||||
include_time,
|
||||
clear_flag: None,
|
||||
})
|
||||
.unwrap();
|
||||
apply_cell_changeset(cell_data, None, field, None).unwrap()
|
||||
|
@ -27,6 +27,7 @@ mod tests {
|
||||
date: Some("1647251762".to_owned()),
|
||||
time: None,
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"Mar 14, 2022",
|
||||
@ -40,6 +41,7 @@ mod tests {
|
||||
date: Some("1647251762".to_owned()),
|
||||
time: None,
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"2022/03/14",
|
||||
@ -53,6 +55,7 @@ mod tests {
|
||||
date: Some("1647251762".to_owned()),
|
||||
time: None,
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"2022-03-14",
|
||||
@ -66,6 +69,7 @@ mod tests {
|
||||
date: Some("1647251762".to_owned()),
|
||||
time: None,
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"03/14/2022",
|
||||
@ -79,6 +83,7 @@ mod tests {
|
||||
date: Some("1647251762".to_owned()),
|
||||
time: None,
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"14/03/2022",
|
||||
@ -104,6 +109,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: None,
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 00:00",
|
||||
@ -115,6 +121,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("9:00".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 09:00",
|
||||
@ -126,6 +133,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("23:00".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 23:00",
|
||||
@ -139,6 +147,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: None,
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 12:00 AM",
|
||||
@ -150,6 +159,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("9:00 AM".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 09:00 AM",
|
||||
@ -161,6 +171,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("11:23 pm".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 11:23 PM",
|
||||
@ -182,6 +193,7 @@ mod tests {
|
||||
date: Some("abc".to_owned()),
|
||||
time: None,
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"",
|
||||
@ -202,6 +214,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("1:".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 01:00",
|
||||
@ -222,6 +235,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 01:00",
|
||||
@ -240,6 +254,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("00:00".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 00:00",
|
||||
@ -260,6 +275,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("1:00 am".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 01:00 AM",
|
||||
@ -283,6 +299,7 @@ mod tests {
|
||||
date: Some("1653609600".to_owned()),
|
||||
time: Some("20:00".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
None,
|
||||
"May 27, 2022 08:00 PM",
|
||||
@ -330,6 +347,7 @@ mod tests {
|
||||
date: Some("1700006400".to_owned()),
|
||||
time: Some("08:00".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
);
|
||||
assert_date(
|
||||
@ -339,6 +357,7 @@ mod tests {
|
||||
date: Some("1701302400".to_owned()),
|
||||
time: None,
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
Some(old_cell_data),
|
||||
"Nov 30, 2023 08:00",
|
||||
@ -356,6 +375,7 @@ mod tests {
|
||||
date: Some("1700006400".to_owned()),
|
||||
time: Some("08:00".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
);
|
||||
assert_date(
|
||||
@ -365,12 +385,41 @@ mod tests {
|
||||
date: None,
|
||||
time: Some("14:00".to_owned()),
|
||||
include_time: None,
|
||||
clear_flag: None,
|
||||
},
|
||||
Some(old_cell_data),
|
||||
"Nov 15, 2023 14:00",
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn clear_date() {
|
||||
let type_option = DateTypeOption::test();
|
||||
let field = FieldBuilder::from_field_type(FieldType::DateTime).build();
|
||||
|
||||
let old_cell_data = initialize_date_cell(
|
||||
&type_option,
|
||||
DateCellChangeset {
|
||||
date: Some("1700006400".to_owned()),
|
||||
time: Some("08:00".to_owned()),
|
||||
include_time: Some(true),
|
||||
clear_flag: None,
|
||||
},
|
||||
);
|
||||
assert_date(
|
||||
&type_option,
|
||||
&field,
|
||||
DateCellChangeset {
|
||||
date: None,
|
||||
time: None,
|
||||
include_time: Some(true),
|
||||
clear_flag: Some(true),
|
||||
},
|
||||
Some(old_cell_data),
|
||||
"",
|
||||
);
|
||||
}
|
||||
|
||||
fn assert_date(
|
||||
type_option: &DateTypeOption,
|
||||
field: &Field,
|
||||
|
@ -232,6 +232,18 @@ impl CellDataChangeset for DateTypeOption {
|
||||
None => (None, false),
|
||||
};
|
||||
|
||||
if changeset.clear_flag == Some(true) {
|
||||
let (timestamp, include_time) = (None, include_time);
|
||||
|
||||
let cell_data = DateCellData {
|
||||
timestamp,
|
||||
include_time,
|
||||
};
|
||||
|
||||
let cell_wrapper: DateCellDataWrapper = (self.field_type.clone(), cell_data.clone()).into();
|
||||
return Ok((Cell::from(cell_wrapper), cell_data));
|
||||
}
|
||||
|
||||
// update include_time if necessary
|
||||
let include_time = changeset.include_time.unwrap_or(include_time);
|
||||
|
||||
|
@ -22,6 +22,7 @@ pub struct DateCellChangeset {
|
||||
pub date: Option<String>,
|
||||
pub time: Option<String>,
|
||||
pub include_time: Option<bool>,
|
||||
pub clear_flag: Option<bool>,
|
||||
}
|
||||
|
||||
impl DateCellChangeset {
|
||||
|
Reference in New Issue
Block a user