util.rs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. use crate::entities::FieldType;
  2. use crate::services::field::*;
  3. use crate::services::row::RowRevisionBuilder;
  4. use database_model::BuildDatabaseContext;
  5. use flowy_client_sync::client_database::DatabaseBuilder;
  6. pub fn make_default_grid() -> BuildDatabaseContext {
  7. let mut database_builder = DatabaseBuilder::new();
  8. // text
  9. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  10. .name("Name")
  11. .visibility(true)
  12. .primary(true)
  13. .build();
  14. database_builder.add_field(text_field);
  15. // single select
  16. let single_select = SingleSelectTypeOptionBuilder::default();
  17. let single_select_field = FieldBuilder::new(single_select)
  18. .name("Type")
  19. .visibility(true)
  20. .build();
  21. database_builder.add_field(single_select_field);
  22. // checkbox
  23. let checkbox_field = FieldBuilder::from_field_type(&FieldType::Checkbox)
  24. .name("Done")
  25. .visibility(true)
  26. .build();
  27. database_builder.add_field(checkbox_field);
  28. database_builder.add_empty_row();
  29. database_builder.add_empty_row();
  30. database_builder.add_empty_row();
  31. database_builder.build()
  32. }
  33. pub fn make_default_board() -> BuildDatabaseContext {
  34. let mut database_builder = DatabaseBuilder::new();
  35. // text
  36. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  37. .name("Description")
  38. .visibility(true)
  39. .primary(true)
  40. .build();
  41. let text_field_id = text_field.id.clone();
  42. database_builder.add_field(text_field);
  43. // single select
  44. let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple);
  45. let doing_option = SelectOptionPB::with_color("Doing", SelectOptionColorPB::Orange);
  46. let done_option = SelectOptionPB::with_color("Done", SelectOptionColorPB::Yellow);
  47. let single_select_type_option = SingleSelectTypeOptionBuilder::default()
  48. .add_option(to_do_option.clone())
  49. .add_option(doing_option)
  50. .add_option(done_option);
  51. let single_select_field = FieldBuilder::new(single_select_type_option)
  52. .name("Status")
  53. .visibility(true)
  54. .build();
  55. let single_select_field_id = single_select_field.id.clone();
  56. database_builder.add_field(single_select_field);
  57. for i in 0..3 {
  58. let mut row_builder = RowRevisionBuilder::new(
  59. database_builder.block_id(),
  60. database_builder.field_revs().clone(),
  61. );
  62. row_builder.insert_select_option_cell(&single_select_field_id, vec![to_do_option.id.clone()]);
  63. let data = format!("Card {}", i + 1);
  64. row_builder.insert_text_cell(&text_field_id, data);
  65. let row = row_builder.build();
  66. database_builder.add_row(row);
  67. }
  68. database_builder.build()
  69. }
  70. pub fn make_default_calendar() -> BuildDatabaseContext {
  71. let mut database_builder = DatabaseBuilder::new();
  72. // text
  73. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  74. .name("Description")
  75. .visibility(true)
  76. .primary(true)
  77. .build();
  78. database_builder.add_field(text_field);
  79. // date
  80. let date_type_option = DateTypeOptionBuilder::default();
  81. let date_field = FieldBuilder::new(date_type_option)
  82. .name("Date")
  83. .visibility(true)
  84. .build();
  85. database_builder.add_field(date_field);
  86. // single select
  87. let multi_select_type_option = MultiSelectTypeOptionBuilder::default();
  88. let multi_select_field = FieldBuilder::new(multi_select_type_option)
  89. .name("Tags")
  90. .visibility(true)
  91. .build();
  92. database_builder.add_field(multi_select_field);
  93. database_builder.build()
  94. }
  95. #[allow(dead_code)]
  96. pub fn make_default_board_2() -> BuildDatabaseContext {
  97. let mut database_builder = DatabaseBuilder::new();
  98. // text
  99. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  100. .name("Description")
  101. .visibility(true)
  102. .primary(true)
  103. .build();
  104. let text_field_id = text_field.id.clone();
  105. database_builder.add_field(text_field);
  106. // single select
  107. let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple);
  108. let doing_option = SelectOptionPB::with_color("Doing", SelectOptionColorPB::Orange);
  109. let done_option = SelectOptionPB::with_color("Done", SelectOptionColorPB::Yellow);
  110. let single_select_type_option = SingleSelectTypeOptionBuilder::default()
  111. .add_option(to_do_option.clone())
  112. .add_option(doing_option.clone())
  113. .add_option(done_option.clone());
  114. let single_select_field = FieldBuilder::new(single_select_type_option)
  115. .name("Status")
  116. .visibility(true)
  117. .build();
  118. let single_select_field_id = single_select_field.id.clone();
  119. database_builder.add_field(single_select_field);
  120. // MultiSelect
  121. let work_option = SelectOptionPB::with_color("Work", SelectOptionColorPB::Aqua);
  122. let travel_option = SelectOptionPB::with_color("Travel", SelectOptionColorPB::Green);
  123. let fun_option = SelectOptionPB::with_color("Fun", SelectOptionColorPB::Lime);
  124. let health_option = SelectOptionPB::with_color("Health", SelectOptionColorPB::Pink);
  125. let multi_select_type_option = MultiSelectTypeOptionBuilder::default()
  126. .add_option(travel_option.clone())
  127. .add_option(work_option.clone())
  128. .add_option(fun_option.clone())
  129. .add_option(health_option.clone());
  130. let multi_select_field = FieldBuilder::new(multi_select_type_option)
  131. .name("Tags")
  132. .visibility(true)
  133. .build();
  134. let multi_select_field_id = multi_select_field.id.clone();
  135. database_builder.add_field(multi_select_field);
  136. for i in 0..3 {
  137. let mut row_builder = RowRevisionBuilder::new(
  138. database_builder.block_id(),
  139. database_builder.field_revs().clone(),
  140. );
  141. row_builder.insert_select_option_cell(&single_select_field_id, vec![to_do_option.id.clone()]);
  142. match i {
  143. 0 => {
  144. row_builder.insert_text_cell(&text_field_id, "Update AppFlowy Website".to_string());
  145. row_builder.insert_select_option_cell(&multi_select_field_id, vec![work_option.id.clone()]);
  146. },
  147. 1 => {
  148. row_builder.insert_text_cell(&text_field_id, "Learn French".to_string());
  149. let mut options = SelectOptionIds::new();
  150. options.push(fun_option.id.clone());
  151. options.push(travel_option.id.clone());
  152. row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
  153. },
  154. 2 => {
  155. row_builder.insert_text_cell(&text_field_id, "Exercise 4x/week".to_string());
  156. row_builder.insert_select_option_cell(&multi_select_field_id, vec![fun_option.id.clone()]);
  157. },
  158. _ => {},
  159. }
  160. let row = row_builder.build();
  161. database_builder.add_row(row);
  162. }
  163. for i in 0..3 {
  164. let mut row_builder = RowRevisionBuilder::new(
  165. database_builder.block_id(),
  166. database_builder.field_revs().clone(),
  167. );
  168. row_builder.insert_select_option_cell(&single_select_field_id, vec![doing_option.id.clone()]);
  169. match i {
  170. 0 => {
  171. row_builder.insert_text_cell(&text_field_id, "Learn how to swim".to_string());
  172. row_builder.insert_select_option_cell(&multi_select_field_id, vec![fun_option.id.clone()]);
  173. },
  174. 1 => {
  175. row_builder.insert_text_cell(&text_field_id, "Meditate 10 mins each day".to_string());
  176. row_builder
  177. .insert_select_option_cell(&multi_select_field_id, vec![health_option.id.clone()]);
  178. },
  179. 2 => {
  180. row_builder.insert_text_cell(&text_field_id, "Write atomic essays ".to_string());
  181. let mut options = SelectOptionIds::new();
  182. options.push(fun_option.id.clone());
  183. options.push(work_option.id.clone());
  184. row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
  185. },
  186. _ => {},
  187. }
  188. let row = row_builder.build();
  189. database_builder.add_row(row);
  190. }
  191. for i in 0..2 {
  192. let mut row_builder = RowRevisionBuilder::new(
  193. database_builder.block_id(),
  194. database_builder.field_revs().clone(),
  195. );
  196. row_builder.insert_select_option_cell(&single_select_field_id, vec![done_option.id.clone()]);
  197. match i {
  198. 0 => {
  199. row_builder.insert_text_cell(&text_field_id, "Publish an article".to_string());
  200. row_builder.insert_select_option_cell(&multi_select_field_id, vec![work_option.id.clone()]);
  201. },
  202. 1 => {
  203. row_builder.insert_text_cell(&text_field_id, "Visit Chicago".to_string());
  204. let mut options = SelectOptionIds::new();
  205. options.push(travel_option.id.clone());
  206. options.push(fun_option.id.clone());
  207. row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
  208. },
  209. _ => {},
  210. }
  211. let row = row_builder.build();
  212. database_builder.add_row(row);
  213. }
  214. database_builder.build()
  215. }