default_controller.rs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. use crate::entities::{GroupRowsNotificationPB, GroupViewChangesetPB, RowPB};
  2. use crate::services::group::action::GroupControllerSharedActions;
  3. use crate::services::group::{Group, GroupController, MoveGroupRowContext};
  4. use flowy_error::FlowyResult;
  5. use grid_rev_model::{FieldRevision, RowRevision};
  6. use std::sync::Arc;
  7. /// A [DefaultGroupController] is used to handle the group actions for the [FieldType] that doesn't
  8. /// implement its own group controller. The default group controller only contains one group, which
  9. /// means all rows will be grouped in the same group.
  10. ///
  11. pub struct DefaultGroupController {
  12. pub field_id: String,
  13. pub group: Group,
  14. }
  15. const DEFAULT_GROUP_CONTROLLER: &str = "DefaultGroupController";
  16. impl DefaultGroupController {
  17. pub fn new(field_rev: &Arc<FieldRevision>) -> Self {
  18. let group = Group::new(
  19. DEFAULT_GROUP_CONTROLLER.to_owned(),
  20. field_rev.id.clone(),
  21. "".to_owned(),
  22. "".to_owned(),
  23. );
  24. Self {
  25. field_id: field_rev.id.clone(),
  26. group,
  27. }
  28. }
  29. }
  30. impl GroupControllerSharedActions for DefaultGroupController {
  31. fn field_id(&self) -> &str {
  32. &self.field_id
  33. }
  34. fn groups(&self) -> Vec<&Group> {
  35. vec![&self.group]
  36. }
  37. fn get_group(&self, _group_id: &str) -> Option<(usize, Group)> {
  38. Some((0, self.group.clone()))
  39. }
  40. fn fill_groups(&mut self, row_revs: &[Arc<RowRevision>], _field_rev: &FieldRevision) -> FlowyResult<()> {
  41. row_revs.iter().for_each(|row_rev| {
  42. self.group.add_row(RowPB::from(row_rev));
  43. });
  44. Ok(())
  45. }
  46. fn move_group(&mut self, _from_group_id: &str, _to_group_id: &str) -> FlowyResult<()> {
  47. Ok(())
  48. }
  49. fn did_update_group_row(
  50. &mut self,
  51. _row_rev: &RowRevision,
  52. _field_rev: &FieldRevision,
  53. ) -> FlowyResult<Vec<GroupRowsNotificationPB>> {
  54. Ok(vec![])
  55. }
  56. fn did_delete_delete_row(
  57. &mut self,
  58. _row_rev: &RowRevision,
  59. _field_rev: &FieldRevision,
  60. ) -> FlowyResult<Vec<GroupRowsNotificationPB>> {
  61. Ok(vec![])
  62. }
  63. fn move_group_row(&mut self, _context: MoveGroupRowContext) -> FlowyResult<Vec<GroupRowsNotificationPB>> {
  64. todo!()
  65. }
  66. fn did_update_group_field(&mut self, _field_rev: &FieldRevision) -> FlowyResult<Option<GroupViewChangesetPB>> {
  67. Ok(None)
  68. }
  69. }
  70. impl GroupController for DefaultGroupController {
  71. fn will_create_row(&mut self, _row_rev: &mut RowRevision, _field_rev: &FieldRevision, _group_id: &str) {}
  72. fn did_create_row(&mut self, _row_rev: &RowPB, _group_id: &str) {}
  73. }