mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-11-14 09:27:55 +00:00
* refactor: remove unused notification and listener * revert: remove hide_ungrouped from group settings * chore: add board layout setting * chore: listen to layout settings on ui * fix: duplicated group controller initialization * chore: add a tooltip to the ungrouped items button * chore: trailing comma
74 lines
2.2 KiB
Rust
74 lines
2.2 KiB
Rust
use collab_database::views::{DatabaseLayout, DatabaseView};
|
|
|
|
use crate::entities::{
|
|
DatabaseLayoutPB, DatabaseLayoutSettingPB, DatabaseViewSettingPB, FieldSettingsPB, FilterPB,
|
|
GroupSettingPB, SortPB,
|
|
};
|
|
use crate::services::field_settings::FieldSettings;
|
|
use crate::services::filter::Filter;
|
|
use crate::services::group::GroupSetting;
|
|
use crate::services::sort::Sort;
|
|
|
|
pub(crate) fn database_view_setting_pb_from_view(view: DatabaseView) -> DatabaseViewSettingPB {
|
|
let layout_type: DatabaseLayoutPB = view.layout.into();
|
|
let layout_setting = if let Some(layout_setting) = view.layout_settings.get(&view.layout) {
|
|
match view.layout {
|
|
DatabaseLayout::Board => {
|
|
let board_setting = layout_setting.clone().into();
|
|
DatabaseLayoutSettingPB::from_board(board_setting)
|
|
},
|
|
DatabaseLayout::Calendar => {
|
|
let calendar_setting = layout_setting.clone().into();
|
|
DatabaseLayoutSettingPB::from_calendar(calendar_setting)
|
|
},
|
|
_ => DatabaseLayoutSettingPB::default(),
|
|
}
|
|
} else {
|
|
DatabaseLayoutSettingPB::default()
|
|
};
|
|
|
|
let filters = view
|
|
.filters
|
|
.into_iter()
|
|
.flat_map(|value| match Filter::try_from(value) {
|
|
Ok(filter) => Some(FilterPB::from(&filter)),
|
|
Err(_) => None,
|
|
})
|
|
.collect::<Vec<FilterPB>>();
|
|
|
|
let group_settings = view
|
|
.group_settings
|
|
.into_iter()
|
|
.flat_map(|value| match GroupSetting::try_from(value) {
|
|
Ok(setting) => Some(GroupSettingPB::from(&setting)),
|
|
Err(_) => None,
|
|
})
|
|
.collect::<Vec<GroupSettingPB>>();
|
|
|
|
let sorts = view
|
|
.sorts
|
|
.into_iter()
|
|
.flat_map(|value| match Sort::try_from(value) {
|
|
Ok(sort) => Some(SortPB::from(&sort)),
|
|
Err(_) => None,
|
|
})
|
|
.collect::<Vec<SortPB>>();
|
|
|
|
let field_settings = view
|
|
.field_settings
|
|
.into_inner()
|
|
.into_iter()
|
|
.flat_map(|(field_id, field_settings)| FieldSettings::try_from_anymap(field_id, field_settings))
|
|
.map(FieldSettingsPB::from)
|
|
.collect::<Vec<FieldSettingsPB>>();
|
|
|
|
DatabaseViewSettingPB {
|
|
layout_type,
|
|
filters: filters.into(),
|
|
group_settings: group_settings.into(),
|
|
sorts: sorts.into(),
|
|
field_settings: field_settings.into(),
|
|
layout_setting,
|
|
}
|
|
}
|