Richard Shiue b9a25f449f
refactor: hide ungrouped feature (#3817)
* 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
2023-10-29 11:26:49 +08:00

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,
}
}