field_util.rs 2.5 KB

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