| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- use crate::entities::{
- GridLayout, GridLayoutType, GridSetting, RepeatedGridFilter, RepeatedGridGroup, RepeatedGridSort,
- };
- use flowy_grid_data_model::revision::{FieldRevision, GridSettingRevision};
- use flowy_sync::entities::grid::{CreateGridFilterParams, DeleteFilterParams, GridSettingChangesetParams};
- use std::collections::HashMap;
- use std::sync::Arc;
- pub struct GridSettingChangesetBuilder {
- params: GridSettingChangesetParams,
- }
- impl GridSettingChangesetBuilder {
- pub fn new(grid_id: &str, layout_type: &GridLayoutType) -> Self {
- let params = GridSettingChangesetParams {
- grid_id: grid_id.to_string(),
- layout_type: layout_type.clone().into(),
- insert_filter: None,
- delete_filter: None,
- insert_group: None,
- delete_group: None,
- insert_sort: None,
- delete_sort: None,
- };
- Self { params }
- }
- pub fn insert_filter(mut self, params: CreateGridFilterParams) -> Self {
- self.params.insert_filter = Some(params);
- self
- }
- pub fn delete_filter(mut self, params: DeleteFilterParams) -> Self {
- self.params.delete_filter = Some(params);
- self
- }
- pub fn build(self) -> GridSettingChangesetParams {
- self.params
- }
- }
- pub fn make_grid_setting(grid_setting_rev: &GridSettingRevision, field_revs: &[Arc<FieldRevision>]) -> GridSetting {
- let current_layout_type: GridLayoutType = grid_setting_rev.layout.clone().into();
- let filters_by_field_id = grid_setting_rev
- .get_all_filter(field_revs)
- .map(|filters_by_field_id| {
- filters_by_field_id
- .into_iter()
- .map(|(k, v)| (k, v.into()))
- .collect::<HashMap<String, RepeatedGridFilter>>()
- })
- .unwrap_or_default();
- let groups_by_field_id = grid_setting_rev
- .get_all_group()
- .map(|groups_by_field_id| {
- groups_by_field_id
- .into_iter()
- .map(|(k, v)| (k, v.into()))
- .collect::<HashMap<String, RepeatedGridGroup>>()
- })
- .unwrap_or_default();
- let sorts_by_field_id = grid_setting_rev
- .get_all_sort()
- .map(|sorts_by_field_id| {
- sorts_by_field_id
- .into_iter()
- .map(|(k, v)| (k, v.into()))
- .collect::<HashMap<String, RepeatedGridSort>>()
- })
- .unwrap_or_default();
- GridSetting {
- layouts: GridLayout::all(),
- current_layout_type,
- filters_by_field_id,
- groups_by_field_id,
- sorts_by_field_id,
- }
- }
|