field_util.rs 2.3 KB

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