checkbox_controller.rs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. use crate::entities::{CheckboxGroupConfigurationPB, GroupRowsChangesetPB};
  2. use flowy_grid_data_model::revision::{FieldRevision, RowChangeset, RowRevision};
  3. use crate::services::field::{CheckboxCellData, CheckboxCellDataParser, CheckboxTypeOptionPB, CHECK, UNCHECK};
  4. use crate::services::group::{GenericGroupController, Group, GroupController, GroupGenerator, Groupable};
  5. pub type CheckboxGroupController = GenericGroupController<
  6. CheckboxGroupConfigurationPB,
  7. CheckboxTypeOptionPB,
  8. CheckboxGroupGenerator,
  9. CheckboxCellDataParser,
  10. >;
  11. impl Groupable for CheckboxGroupController {
  12. type CellDataType = CheckboxCellData;
  13. fn can_group(&self, _content: &str, _cell_data: &Self::CellDataType) -> bool {
  14. false
  15. }
  16. fn add_row_if_match(
  17. &mut self,
  18. _row_rev: &RowRevision,
  19. _cell_data: &Self::CellDataType,
  20. ) -> Vec<GroupRowsChangesetPB> {
  21. todo!()
  22. }
  23. fn remove_row_if_match(
  24. &mut self,
  25. _row_rev: &RowRevision,
  26. _cell_data: &Self::CellDataType,
  27. ) -> Vec<GroupRowsChangesetPB> {
  28. todo!()
  29. }
  30. fn move_row_if_match(
  31. &mut self,
  32. _field_rev: &FieldRevision,
  33. _row_rev: &RowRevision,
  34. _row_changeset: &mut RowChangeset,
  35. _cell_data: &Self::CellDataType,
  36. _to_row_id: &str,
  37. ) -> Vec<GroupRowsChangesetPB> {
  38. todo!()
  39. }
  40. }
  41. impl GroupController for CheckboxGroupController {
  42. fn will_create_row(&mut self, _row_rev: &mut RowRevision, _field_rev: &FieldRevision, _group_id: &str) {
  43. todo!()
  44. }
  45. }
  46. pub struct CheckboxGroupGenerator();
  47. impl GroupGenerator for CheckboxGroupGenerator {
  48. type ConfigurationType = CheckboxGroupConfigurationPB;
  49. type TypeOptionType = CheckboxTypeOptionPB;
  50. fn generate_groups(
  51. field_id: &str,
  52. _configuration: &Option<Self::ConfigurationType>,
  53. _type_option: &Option<Self::TypeOptionType>,
  54. ) -> Vec<Group> {
  55. let check_group = Group::new(
  56. "true".to_string(),
  57. field_id.to_owned(),
  58. "".to_string(),
  59. CHECK.to_string(),
  60. );
  61. let uncheck_group = Group::new(
  62. "false".to_string(),
  63. field_id.to_owned(),
  64. "".to_string(),
  65. UNCHECK.to_string(),
  66. );
  67. vec![check_group, uncheck_group]
  68. }
  69. }