calendar_mock_data.rs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. use crate::database::database_editor::TestRowBuilder;
  2. use collab_database::database::{gen_database_id, gen_database_view_id, DatabaseData};
  3. use collab_database::views::{DatabaseLayout, DatabaseView, LayoutSetting, LayoutSettings};
  4. use flowy_database2::entities::FieldType;
  5. use flowy_database2::services::field::{FieldBuilder, MultiSelectTypeOption};
  6. use flowy_database2::services::setting::CalendarLayoutSetting;
  7. use strum::IntoEnumIterator;
  8. // Calendar unit test mock data
  9. pub fn make_test_calendar() -> DatabaseData {
  10. let mut fields = vec![];
  11. let mut rows = vec![];
  12. // text
  13. let text_field = FieldBuilder::from_field_type(FieldType::RichText)
  14. .name("Name")
  15. .visibility(true)
  16. .primary(true)
  17. .build();
  18. fields.push(text_field);
  19. // date
  20. let date_field = FieldBuilder::from_field_type(FieldType::DateTime)
  21. .name("Date")
  22. .visibility(true)
  23. .build();
  24. let date_field_id = date_field.id.clone();
  25. fields.push(date_field);
  26. // multi select
  27. let type_option = MultiSelectTypeOption::default();
  28. let multi_select_field = FieldBuilder::new(FieldType::MultiSelect, type_option)
  29. .name("Tags")
  30. .visibility(true)
  31. .build();
  32. fields.push(multi_select_field);
  33. let calendar_setting: LayoutSetting = CalendarLayoutSetting::new(date_field_id).into();
  34. for i in 0..5 {
  35. let mut row_builder = TestRowBuilder::new(i.into(), &fields);
  36. match i {
  37. 0 => {
  38. for field_type in FieldType::iter() {
  39. match field_type {
  40. FieldType::RichText => row_builder.insert_text_cell("A"),
  41. FieldType::DateTime => row_builder.insert_date_cell(
  42. "1678090778",
  43. None,
  44. None,
  45. Some(chrono_tz::Tz::Etc__GMTPlus8.to_string()),
  46. &field_type,
  47. ),
  48. _ => "".to_owned(),
  49. };
  50. }
  51. },
  52. 1 => {
  53. for field_type in FieldType::iter() {
  54. match field_type {
  55. FieldType::RichText => row_builder.insert_text_cell("B"),
  56. FieldType::DateTime => row_builder.insert_date_cell(
  57. "1677917978",
  58. None,
  59. None,
  60. Some(chrono_tz::Tz::Etc__GMTPlus8.to_string()),
  61. &field_type,
  62. ),
  63. _ => "".to_owned(),
  64. };
  65. }
  66. },
  67. 2 => {
  68. for field_type in FieldType::iter() {
  69. match field_type {
  70. FieldType::RichText => row_builder.insert_text_cell("C"),
  71. FieldType::DateTime => row_builder.insert_date_cell(
  72. "1679213978",
  73. None,
  74. None,
  75. Some(chrono_tz::Tz::Etc__GMTPlus8.to_string()),
  76. &field_type,
  77. ),
  78. _ => "".to_owned(),
  79. };
  80. }
  81. },
  82. 3 => {
  83. for field_type in FieldType::iter() {
  84. match field_type {
  85. FieldType::RichText => row_builder.insert_text_cell("D"),
  86. FieldType::DateTime => row_builder.insert_date_cell(
  87. "1678695578",
  88. None,
  89. None,
  90. Some(chrono_tz::Tz::Etc__GMTPlus8.to_string()),
  91. &field_type,
  92. ),
  93. _ => "".to_owned(),
  94. };
  95. }
  96. },
  97. 4 => {
  98. for field_type in FieldType::iter() {
  99. match field_type {
  100. FieldType::RichText => row_builder.insert_text_cell("E"),
  101. FieldType::DateTime => row_builder.insert_date_cell(
  102. "1678695578",
  103. None,
  104. None,
  105. Some(chrono_tz::Tz::Etc__GMTPlus8.to_string()),
  106. &field_type,
  107. ),
  108. _ => "".to_owned(),
  109. };
  110. }
  111. },
  112. _ => {},
  113. }
  114. let row = row_builder.build();
  115. rows.push(row);
  116. }
  117. let mut layout_settings = LayoutSettings::new();
  118. layout_settings.insert(DatabaseLayout::Calendar, calendar_setting);
  119. let view = DatabaseView {
  120. id: gen_database_view_id(),
  121. database_id: gen_database_id(),
  122. name: "".to_string(),
  123. layout: DatabaseLayout::Calendar,
  124. layout_settings,
  125. filters: vec![],
  126. group_settings: vec![],
  127. sorts: vec![],
  128. row_orders: vec![],
  129. field_orders: vec![],
  130. created_at: 0,
  131. modified_at: 0,
  132. };
  133. DatabaseData { view, fields, rows }
  134. }