grid_mock_data.rs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. // #![allow(clippy::all)]
  2. // #![allow(dead_code)]
  3. // #![allow(unused_imports)]
  4. use crate::database::block_test::util::DatabaseRowTestBuilder;
  5. use crate::database::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 database_model::*;
  13. use strum::IntoEnumIterator;
  14. pub fn make_test_grid() -> BuildDatabaseContext {
  15. let mut database_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. database_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)
  33. .name("Price")
  34. .visibility(true)
  35. .build();
  36. database_builder.add_field(number_field);
  37. },
  38. FieldType::DateTime => {
  39. // Date
  40. let date = DateTypeOptionBuilder::default()
  41. .date_format(DateFormat::US)
  42. .time_format(TimeFormat::TwentyFourHour);
  43. let date_field = FieldBuilder::new(date)
  44. .name("Time")
  45. .visibility(true)
  46. .build();
  47. database_builder.add_field(date_field);
  48. },
  49. FieldType::SingleSelect => {
  50. // Single Select
  51. let single_select = SingleSelectTypeOptionBuilder::default()
  52. .add_option(SelectOptionPB::new(COMPLETED))
  53. .add_option(SelectOptionPB::new(PLANNED))
  54. .add_option(SelectOptionPB::new(PAUSED));
  55. let single_select_field = FieldBuilder::new(single_select)
  56. .name("Status")
  57. .visibility(true)
  58. .build();
  59. database_builder.add_field(single_select_field);
  60. },
  61. FieldType::MultiSelect => {
  62. // MultiSelect
  63. let multi_select = MultiSelectTypeOptionBuilder::default()
  64. .add_option(SelectOptionPB::new(GOOGLE))
  65. .add_option(SelectOptionPB::new(FACEBOOK))
  66. .add_option(SelectOptionPB::new(TWITTER));
  67. let multi_select_field = FieldBuilder::new(multi_select)
  68. .name("Platform")
  69. .visibility(true)
  70. .build();
  71. database_builder.add_field(multi_select_field);
  72. },
  73. FieldType::Checkbox => {
  74. // Checkbox
  75. let checkbox = CheckboxTypeOptionBuilder::default();
  76. let checkbox_field = FieldBuilder::new(checkbox)
  77. .name("is urgent")
  78. .visibility(true)
  79. .build();
  80. database_builder.add_field(checkbox_field);
  81. },
  82. FieldType::URL => {
  83. // URL
  84. let url = URLTypeOptionBuilder::default();
  85. let url_field = FieldBuilder::new(url).name("link").visibility(true).build();
  86. database_builder.add_field(url_field);
  87. },
  88. FieldType::Checklist => {
  89. let checklist = ChecklistTypeOptionBuilder::default()
  90. .add_option(SelectOptionPB::new(FIRST_THING))
  91. .add_option(SelectOptionPB::new(SECOND_THING))
  92. .add_option(SelectOptionPB::new(THIRD_THING));
  93. let checklist_field = FieldBuilder::new(checklist)
  94. .name("TODO")
  95. .visibility(true)
  96. .build();
  97. database_builder.add_field(checklist_field);
  98. },
  99. }
  100. }
  101. for i in 0..6 {
  102. let block_id = database_builder.block_id().to_owned();
  103. let field_revs = database_builder.field_revs().clone();
  104. let mut row_builder = DatabaseRowTestBuilder::new(block_id, field_revs);
  105. match i {
  106. 0 => {
  107. for field_type in FieldType::iter() {
  108. match field_type {
  109. FieldType::RichText => row_builder.insert_text_cell("A"),
  110. FieldType::Number => row_builder.insert_number_cell("1"),
  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(0)]),
  114. FieldType::Checklist => row_builder.insert_checklist_cell(|options| options),
  115. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  116. FieldType::URL => {
  117. row_builder.insert_url_cell("AppFlowy website - https://www.appflowy.io")
  118. },
  119. _ => "".to_owned(),
  120. };
  121. }
  122. },
  123. 1 => {
  124. for field_type in FieldType::iter() {
  125. match field_type {
  126. FieldType::RichText => row_builder.insert_text_cell(""),
  127. FieldType::Number => row_builder.insert_number_cell("2"),
  128. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  129. FieldType::MultiSelect => row_builder
  130. .insert_multi_select_cell(|mut options| vec![options.remove(0), options.remove(1)]),
  131. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  132. _ => "".to_owned(),
  133. };
  134. }
  135. },
  136. 2 => {
  137. for field_type in FieldType::iter() {
  138. match field_type {
  139. FieldType::RichText => row_builder.insert_text_cell("C"),
  140. FieldType::Number => row_builder.insert_number_cell("3"),
  141. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  142. FieldType::SingleSelect => {
  143. row_builder.insert_single_select_cell(|mut options| options.remove(0))
  144. },
  145. FieldType::MultiSelect => {
  146. row_builder.insert_multi_select_cell(|mut options| vec![options.remove(1)])
  147. },
  148. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  149. _ => "".to_owned(),
  150. };
  151. }
  152. },
  153. 3 => {
  154. for field_type in FieldType::iter() {
  155. match field_type {
  156. FieldType::RichText => row_builder.insert_text_cell("DA"),
  157. FieldType::Number => row_builder.insert_number_cell("14"),
  158. FieldType::DateTime => row_builder.insert_date_cell("1668704685"),
  159. FieldType::SingleSelect => {
  160. row_builder.insert_single_select_cell(|mut options| options.remove(0))
  161. },
  162. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  163. _ => "".to_owned(),
  164. };
  165. }
  166. },
  167. 4 => {
  168. for field_type in FieldType::iter() {
  169. match field_type {
  170. FieldType::RichText => row_builder.insert_text_cell("AE"),
  171. FieldType::Number => row_builder.insert_number_cell(""),
  172. FieldType::DateTime => row_builder.insert_date_cell("1668359085"),
  173. FieldType::SingleSelect => {
  174. row_builder.insert_single_select_cell(|mut options| options.remove(1))
  175. },
  176. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  177. _ => "".to_owned(),
  178. };
  179. }
  180. },
  181. 5 => {
  182. for field_type in FieldType::iter() {
  183. match field_type {
  184. FieldType::RichText => row_builder.insert_text_cell("AE"),
  185. FieldType::Number => row_builder.insert_number_cell("5"),
  186. FieldType::DateTime => row_builder.insert_date_cell("1671938394"),
  187. FieldType::SingleSelect => {
  188. row_builder.insert_single_select_cell(|mut options| options.remove(1))
  189. },
  190. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  191. _ => "".to_owned(),
  192. };
  193. }
  194. },
  195. _ => {},
  196. }
  197. let row_rev = row_builder.build();
  198. database_builder.add_row(row_rev);
  199. }
  200. database_builder.build()
  201. }