util.rs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. use crate::entities::FieldType;
  2. use crate::services::field::*;
  3. use crate::services::row::RowRevisionBuilder;
  4. use flowy_grid_data_model::revision::BuildGridContext;
  5. use flowy_sync::client_grid::GridBuilder;
  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, 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. #[allow(dead_code)]
  65. pub fn make_default_board_2() -> BuildGridContext {
  66. let mut grid_builder = GridBuilder::new();
  67. // text
  68. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  69. .name("Description")
  70. .visibility(true)
  71. .primary(true)
  72. .build();
  73. let text_field_id = text_field.id.clone();
  74. grid_builder.add_field(text_field);
  75. // single select
  76. let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple);
  77. let doing_option = SelectOptionPB::with_color("Doing", SelectOptionColorPB::Orange);
  78. let done_option = SelectOptionPB::with_color("Done", SelectOptionColorPB::Yellow);
  79. let single_select_type_option = SingleSelectTypeOptionBuilder::default()
  80. .add_option(to_do_option.clone())
  81. .add_option(doing_option.clone())
  82. .add_option(done_option.clone());
  83. let single_select_field = FieldBuilder::new(single_select_type_option)
  84. .name("Status")
  85. .visibility(true)
  86. .build();
  87. let single_select_field_id = single_select_field.id.clone();
  88. grid_builder.add_field(single_select_field);
  89. // MultiSelect
  90. let work_option = SelectOptionPB::with_color("Work", SelectOptionColorPB::Aqua);
  91. let travel_option = SelectOptionPB::with_color("Travel", SelectOptionColorPB::Green);
  92. let fun_option = SelectOptionPB::with_color("Fun", SelectOptionColorPB::Lime);
  93. let health_option = SelectOptionPB::with_color("Health", SelectOptionColorPB::Pink);
  94. let multi_select_type_option = MultiSelectTypeOptionBuilder::default()
  95. .add_option(travel_option.clone())
  96. .add_option(work_option.clone())
  97. .add_option(fun_option.clone())
  98. .add_option(health_option.clone());
  99. let multi_select_field = FieldBuilder::new(multi_select_type_option)
  100. .name("Tags")
  101. .visibility(true)
  102. .build();
  103. let multi_select_field_id = multi_select_field.id.clone();
  104. grid_builder.add_field(multi_select_field);
  105. for i in 0..3 {
  106. let mut row_builder = RowRevisionBuilder::new(grid_builder.block_id(), grid_builder.field_revs());
  107. row_builder.insert_select_option_cell(&single_select_field_id, to_do_option.id.clone());
  108. match i {
  109. 0 => {
  110. row_builder.insert_text_cell(&text_field_id, "Update AppFlowy Website".to_string());
  111. row_builder.insert_select_option_cell(&multi_select_field_id, work_option.id.clone());
  112. }
  113. 1 => {
  114. row_builder.insert_text_cell(&text_field_id, "Learn French".to_string());
  115. let mut options = SelectOptionIds::new();
  116. options.push(fun_option.id.clone());
  117. options.push(travel_option.id.clone());
  118. row_builder.insert_select_option_cell(&multi_select_field_id, options.to_string());
  119. }
  120. 2 => {
  121. row_builder.insert_text_cell(&text_field_id, "Exercise 4x/week".to_string());
  122. row_builder.insert_select_option_cell(&multi_select_field_id, fun_option.id.clone());
  123. }
  124. _ => {}
  125. }
  126. let row = row_builder.build();
  127. grid_builder.add_row(row);
  128. }
  129. for i in 0..3 {
  130. let mut row_builder = RowRevisionBuilder::new(grid_builder.block_id(), grid_builder.field_revs());
  131. row_builder.insert_select_option_cell(&single_select_field_id, doing_option.id.clone());
  132. match i {
  133. 0 => {
  134. row_builder.insert_text_cell(&text_field_id, "Learn how to swim".to_string());
  135. row_builder.insert_select_option_cell(&multi_select_field_id, fun_option.id.clone());
  136. }
  137. 1 => {
  138. row_builder.insert_text_cell(&text_field_id, "Meditate 10 mins each day".to_string());
  139. row_builder.insert_select_option_cell(&multi_select_field_id, health_option.id.clone());
  140. }
  141. 2 => {
  142. row_builder.insert_text_cell(&text_field_id, "Write atomic essays ".to_string());
  143. let mut options = SelectOptionIds::new();
  144. options.push(fun_option.id.clone());
  145. options.push(work_option.id.clone());
  146. row_builder.insert_select_option_cell(&multi_select_field_id, options.to_string());
  147. }
  148. _ => {}
  149. }
  150. let row = row_builder.build();
  151. grid_builder.add_row(row);
  152. }
  153. for i in 0..2 {
  154. let mut row_builder = RowRevisionBuilder::new(grid_builder.block_id(), grid_builder.field_revs());
  155. row_builder.insert_select_option_cell(&single_select_field_id, done_option.id.clone());
  156. match i {
  157. 0 => {
  158. row_builder.insert_text_cell(&text_field_id, "Publish an article".to_string());
  159. row_builder.insert_select_option_cell(&multi_select_field_id, work_option.id.clone());
  160. }
  161. 1 => {
  162. row_builder.insert_text_cell(&text_field_id, "Visit Chicago".to_string());
  163. let mut options = SelectOptionIds::new();
  164. options.push(travel_option.id.clone());
  165. options.push(fun_option.id.clone());
  166. row_builder.insert_select_option_cell(&multi_select_field_id, options.to_string());
  167. }
  168. _ => {}
  169. }
  170. let row = row_builder.build();
  171. grid_builder.add_row(row);
  172. }
  173. grid_builder.build()
  174. }