util.rs 8.8 KB

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