util.rs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. use collab_database::fields::Field;
  2. use flowy_database2::entities::{CreateFieldParams, FieldType};
  3. use flowy_database2::services::field::{
  4. type_option_to_pb, DateCellChangeset, FieldBuilder, RichTextTypeOption, SelectOption,
  5. SingleSelectTypeOption,
  6. };
  7. pub fn create_text_field(grid_id: &str) -> (CreateFieldParams, Field) {
  8. let field_type = FieldType::RichText;
  9. let type_option = RichTextTypeOption::default();
  10. let text_field = FieldBuilder::new(field_type.clone(), type_option.clone())
  11. .name("Name")
  12. .visibility(true)
  13. .primary(true)
  14. .build();
  15. let type_option_data = type_option_to_pb(type_option.into(), &field_type).to_vec();
  16. let params = CreateFieldParams {
  17. view_id: grid_id.to_owned(),
  18. field_type,
  19. type_option_data: Some(type_option_data),
  20. };
  21. (params, text_field)
  22. }
  23. pub fn create_single_select_field(grid_id: &str) -> (CreateFieldParams, Field) {
  24. let field_type = FieldType::SingleSelect;
  25. let mut type_option = SingleSelectTypeOption::default();
  26. type_option.options.push(SelectOption::new("Done"));
  27. type_option.options.push(SelectOption::new("Progress"));
  28. let single_select_field = FieldBuilder::new(field_type.clone(), type_option.clone())
  29. .name("Name")
  30. .visibility(true)
  31. .build();
  32. let type_option_data = type_option_to_pb(type_option.into(), &field_type).to_vec();
  33. let params = CreateFieldParams {
  34. view_id: grid_id.to_owned(),
  35. field_type,
  36. type_option_data: Some(type_option_data),
  37. };
  38. (params, single_select_field)
  39. }
  40. // The grid will contains all existing field types and there are three empty rows in this grid.
  41. pub fn make_date_cell_string(s: &str) -> String {
  42. serde_json::to_string(&DateCellChangeset {
  43. date: Some(s.to_string()),
  44. time: None,
  45. include_time: Some(false),
  46. timezone_id: None,
  47. })
  48. .unwrap()
  49. }