util.rs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. use flowy_grid::entities::*;
  2. use flowy_grid::services::field::select_option::SelectOption;
  3. use flowy_grid::services::field::*;
  4. use flowy_grid_data_model::revision::*;
  5. pub fn create_text_field(grid_id: &str) -> (InsertFieldParams, FieldRevision) {
  6. let field_rev = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  7. .name("Name")
  8. .visibility(true)
  9. .build();
  10. let cloned_field_rev = field_rev.clone();
  11. let type_option_data = field_rev
  12. .get_type_option_entry::<RichTextTypeOption>(field_rev.field_type_rev)
  13. .unwrap()
  14. .protobuf_bytes()
  15. .to_vec();
  16. let field = Field {
  17. id: field_rev.id,
  18. name: field_rev.name,
  19. desc: field_rev.desc,
  20. field_type: field_rev.field_type_rev.into(),
  21. frozen: field_rev.frozen,
  22. visibility: field_rev.visibility,
  23. width: field_rev.width,
  24. is_primary: false,
  25. };
  26. let params = InsertFieldParams {
  27. grid_id: grid_id.to_owned(),
  28. field,
  29. type_option_data,
  30. start_field_id: None,
  31. };
  32. (params, cloned_field_rev)
  33. }
  34. pub fn create_single_select_field(grid_id: &str) -> (InsertFieldParams, FieldRevision) {
  35. let single_select = SingleSelectTypeOptionBuilder::default()
  36. .option(SelectOption::new("Done"))
  37. .option(SelectOption::new("Progress"));
  38. let field_rev = FieldBuilder::new(single_select).name("Name").visibility(true).build();
  39. let cloned_field_rev = field_rev.clone();
  40. let type_option_data = field_rev
  41. .get_type_option_entry::<SingleSelectTypeOption>(field_rev.field_type_rev)
  42. .unwrap()
  43. .protobuf_bytes()
  44. .to_vec();
  45. let field = Field {
  46. id: field_rev.id,
  47. name: field_rev.name,
  48. desc: field_rev.desc,
  49. field_type: field_rev.field_type_rev.into(),
  50. frozen: field_rev.frozen,
  51. visibility: field_rev.visibility,
  52. width: field_rev.width,
  53. is_primary: false,
  54. };
  55. let params = InsertFieldParams {
  56. grid_id: grid_id.to_owned(),
  57. field,
  58. type_option_data,
  59. start_field_id: None,
  60. };
  61. (params, cloned_field_rev)
  62. }
  63. // The grid will contains all existing field types and there are three empty rows in this grid.
  64. pub fn make_date_cell_string(s: &str) -> String {
  65. serde_json::to_string(&DateCellChangeset {
  66. date: Some(s.to_string()),
  67. time: None,
  68. })
  69. .unwrap()
  70. }