grid_mock_data.rs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. // #![allow(clippy::all)]
  2. // #![allow(dead_code)]
  3. // #![allow(unused_imports)]
  4. use crate::grid::block_test::util::GridRowTestBuilder;
  5. use crate::grid::mock_data::{
  6. COMPLETED, FACEBOOK, FIRST_THING, GOOGLE, PAUSED, PLANNED, SECOND_THING, THIRD_THING, TWITTER,
  7. };
  8. use flowy_client_sync::client_database::DatabaseBuilder;
  9. use flowy_database::entities::*;
  10. use flowy_database::services::field::SelectOptionPB;
  11. use flowy_database::services::field::*;
  12. use grid_model::*;
  13. use strum::IntoEnumIterator;
  14. pub fn make_test_grid() -> BuildDatabaseContext {
  15. let mut grid_builder = DatabaseBuilder::new();
  16. // Iterate through the FieldType to create the corresponding Field.
  17. for field_type in FieldType::iter() {
  18. let field_type: FieldType = field_type;
  19. // The
  20. match field_type {
  21. FieldType::RichText => {
  22. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  23. .name("Name")
  24. .visibility(true)
  25. .primary(true)
  26. .build();
  27. grid_builder.add_field(text_field);
  28. }
  29. FieldType::Number => {
  30. // Number
  31. let number = NumberTypeOptionBuilder::default().set_format(NumberFormat::USD);
  32. let number_field = FieldBuilder::new(number).name("Price").visibility(true).build();
  33. grid_builder.add_field(number_field);
  34. }
  35. FieldType::DateTime => {
  36. // Date
  37. let date = DateTypeOptionBuilder::default()
  38. .date_format(DateFormat::US)
  39. .time_format(TimeFormat::TwentyFourHour);
  40. let date_field = FieldBuilder::new(date).name("Time").visibility(true).build();
  41. grid_builder.add_field(date_field);
  42. }
  43. FieldType::SingleSelect => {
  44. // Single Select
  45. let single_select = SingleSelectTypeOptionBuilder::default()
  46. .add_option(SelectOptionPB::new(COMPLETED))
  47. .add_option(SelectOptionPB::new(PLANNED))
  48. .add_option(SelectOptionPB::new(PAUSED));
  49. let single_select_field = FieldBuilder::new(single_select).name("Status").visibility(true).build();
  50. grid_builder.add_field(single_select_field);
  51. }
  52. FieldType::MultiSelect => {
  53. // MultiSelect
  54. let multi_select = MultiSelectTypeOptionBuilder::default()
  55. .add_option(SelectOptionPB::new(GOOGLE))
  56. .add_option(SelectOptionPB::new(FACEBOOK))
  57. .add_option(SelectOptionPB::new(TWITTER));
  58. let multi_select_field = FieldBuilder::new(multi_select)
  59. .name("Platform")
  60. .visibility(true)
  61. .build();
  62. grid_builder.add_field(multi_select_field);
  63. }
  64. FieldType::Checkbox => {
  65. // Checkbox
  66. let checkbox = CheckboxTypeOptionBuilder::default();
  67. let checkbox_field = FieldBuilder::new(checkbox).name("is urgent").visibility(true).build();
  68. grid_builder.add_field(checkbox_field);
  69. }
  70. FieldType::URL => {
  71. // URL
  72. let url = URLTypeOptionBuilder::default();
  73. let url_field = FieldBuilder::new(url).name("link").visibility(true).build();
  74. grid_builder.add_field(url_field);
  75. }
  76. FieldType::Checklist => {
  77. let checklist = ChecklistTypeOptionBuilder::default()
  78. .add_option(SelectOptionPB::new(FIRST_THING))
  79. .add_option(SelectOptionPB::new(SECOND_THING))
  80. .add_option(SelectOptionPB::new(THIRD_THING));
  81. let checklist_field = FieldBuilder::new(checklist).name("TODO").visibility(true).build();
  82. grid_builder.add_field(checklist_field);
  83. }
  84. }
  85. }
  86. for i in 0..6 {
  87. let block_id = grid_builder.block_id().to_owned();
  88. let field_revs = grid_builder.field_revs();
  89. let mut row_builder = GridRowTestBuilder::new(&block_id, field_revs);
  90. match i {
  91. 0 => {
  92. for field_type in FieldType::iter() {
  93. match field_type {
  94. FieldType::RichText => row_builder.insert_text_cell("A"),
  95. FieldType::Number => row_builder.insert_number_cell("1"),
  96. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  97. FieldType::MultiSelect => row_builder
  98. .insert_multi_select_cell(|mut options| vec![options.remove(0), options.remove(0)]),
  99. FieldType::Checklist => row_builder.insert_checklist_cell(|options| options),
  100. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  101. FieldType::URL => row_builder.insert_url_cell("AppFlowy website - https://www.appflowy.io"),
  102. _ => "".to_owned(),
  103. };
  104. }
  105. }
  106. 1 => {
  107. for field_type in FieldType::iter() {
  108. match field_type {
  109. FieldType::RichText => row_builder.insert_text_cell(""),
  110. FieldType::Number => row_builder.insert_number_cell("2"),
  111. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  112. FieldType::MultiSelect => row_builder
  113. .insert_multi_select_cell(|mut options| vec![options.remove(0), options.remove(1)]),
  114. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  115. _ => "".to_owned(),
  116. };
  117. }
  118. }
  119. 2 => {
  120. for field_type in FieldType::iter() {
  121. match field_type {
  122. FieldType::RichText => row_builder.insert_text_cell("C"),
  123. FieldType::Number => row_builder.insert_number_cell("3"),
  124. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  125. FieldType::SingleSelect => {
  126. row_builder.insert_single_select_cell(|mut options| options.remove(0))
  127. }
  128. FieldType::MultiSelect => {
  129. row_builder.insert_multi_select_cell(|mut options| vec![options.remove(1)])
  130. }
  131. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  132. _ => "".to_owned(),
  133. };
  134. }
  135. }
  136. 3 => {
  137. for field_type in FieldType::iter() {
  138. match field_type {
  139. FieldType::RichText => row_builder.insert_text_cell("DA"),
  140. FieldType::Number => row_builder.insert_number_cell("4"),
  141. FieldType::DateTime => row_builder.insert_date_cell("1668704685"),
  142. FieldType::SingleSelect => {
  143. row_builder.insert_single_select_cell(|mut options| options.remove(0))
  144. }
  145. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  146. _ => "".to_owned(),
  147. };
  148. }
  149. }
  150. 4 => {
  151. for field_type in FieldType::iter() {
  152. match field_type {
  153. FieldType::RichText => row_builder.insert_text_cell("AE"),
  154. FieldType::Number => row_builder.insert_number_cell(""),
  155. FieldType::DateTime => row_builder.insert_date_cell("1668359085"),
  156. FieldType::SingleSelect => {
  157. row_builder.insert_single_select_cell(|mut options| options.remove(1))
  158. }
  159. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  160. _ => "".to_owned(),
  161. };
  162. }
  163. }
  164. 5 => {
  165. for field_type in FieldType::iter() {
  166. match field_type {
  167. FieldType::RichText => row_builder.insert_text_cell("AE"),
  168. FieldType::Number => row_builder.insert_number_cell("5"),
  169. FieldType::DateTime => row_builder.insert_date_cell("1671938394"),
  170. FieldType::SingleSelect => {
  171. row_builder.insert_single_select_cell(|mut options| options.remove(1))
  172. }
  173. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  174. _ => "".to_owned(),
  175. };
  176. }
  177. }
  178. _ => {}
  179. }
  180. let row_rev = row_builder.build();
  181. grid_builder.add_row(row_rev);
  182. }
  183. grid_builder.build()
  184. }