util.rs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. use crate::entities::FieldType;
  2. use crate::services::field::*;
  3. use crate::services::row::RowRevisionBuilder;
  4. use database_model::{BuildDatabaseContext, CalendarLayoutSetting, LayoutRevision, LayoutSetting};
  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("Title")
  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. let date_field_id = date_field.id.clone();
  86. database_builder.add_field(date_field);
  87. // single select
  88. let multi_select_type_option = MultiSelectTypeOptionBuilder::default();
  89. let multi_select_field = FieldBuilder::new(multi_select_type_option)
  90. .name("Tags")
  91. .visibility(true)
  92. .build();
  93. database_builder.add_field(multi_select_field);
  94. let calendar_layout_setting = CalendarLayoutSetting::new(date_field_id);
  95. let mut layout_setting = LayoutSetting::new();
  96. let calendar_setting = serde_json::to_string(&calendar_layout_setting).unwrap();
  97. layout_setting.insert(LayoutRevision::Calendar, calendar_setting);
  98. database_builder.set_layout_setting(layout_setting);
  99. database_builder.build()
  100. }
  101. #[allow(dead_code)]
  102. pub fn make_default_board_2() -> BuildDatabaseContext {
  103. let mut database_builder = DatabaseBuilder::new();
  104. // text
  105. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  106. .name("Description")
  107. .visibility(true)
  108. .primary(true)
  109. .build();
  110. let text_field_id = text_field.id.clone();
  111. database_builder.add_field(text_field);
  112. // single select
  113. let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple);
  114. let doing_option = SelectOptionPB::with_color("Doing", SelectOptionColorPB::Orange);
  115. let done_option = SelectOptionPB::with_color("Done", SelectOptionColorPB::Yellow);
  116. let single_select_type_option = SingleSelectTypeOptionBuilder::default()
  117. .add_option(to_do_option.clone())
  118. .add_option(doing_option.clone())
  119. .add_option(done_option.clone());
  120. let single_select_field = FieldBuilder::new(single_select_type_option)
  121. .name("Status")
  122. .visibility(true)
  123. .build();
  124. let single_select_field_id = single_select_field.id.clone();
  125. database_builder.add_field(single_select_field);
  126. // MultiSelect
  127. let work_option = SelectOptionPB::with_color("Work", SelectOptionColorPB::Aqua);
  128. let travel_option = SelectOptionPB::with_color("Travel", SelectOptionColorPB::Green);
  129. let fun_option = SelectOptionPB::with_color("Fun", SelectOptionColorPB::Lime);
  130. let health_option = SelectOptionPB::with_color("Health", SelectOptionColorPB::Pink);
  131. let multi_select_type_option = MultiSelectTypeOptionBuilder::default()
  132. .add_option(travel_option.clone())
  133. .add_option(work_option.clone())
  134. .add_option(fun_option.clone())
  135. .add_option(health_option.clone());
  136. let multi_select_field = FieldBuilder::new(multi_select_type_option)
  137. .name("Tags")
  138. .visibility(true)
  139. .build();
  140. let multi_select_field_id = multi_select_field.id.clone();
  141. database_builder.add_field(multi_select_field);
  142. for i in 0..3 {
  143. let mut row_builder = RowRevisionBuilder::new(
  144. database_builder.block_id(),
  145. database_builder.field_revs().clone(),
  146. );
  147. row_builder.insert_select_option_cell(&single_select_field_id, vec![to_do_option.id.clone()]);
  148. match i {
  149. 0 => {
  150. row_builder.insert_text_cell(&text_field_id, "Update AppFlowy Website".to_string());
  151. row_builder.insert_select_option_cell(&multi_select_field_id, vec![work_option.id.clone()]);
  152. },
  153. 1 => {
  154. row_builder.insert_text_cell(&text_field_id, "Learn French".to_string());
  155. let mut options = SelectOptionIds::new();
  156. options.push(fun_option.id.clone());
  157. options.push(travel_option.id.clone());
  158. row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
  159. },
  160. 2 => {
  161. row_builder.insert_text_cell(&text_field_id, "Exercise 4x/week".to_string());
  162. row_builder.insert_select_option_cell(&multi_select_field_id, vec![fun_option.id.clone()]);
  163. },
  164. _ => {},
  165. }
  166. let row = row_builder.build();
  167. database_builder.add_row(row);
  168. }
  169. for i in 0..3 {
  170. let mut row_builder = RowRevisionBuilder::new(
  171. database_builder.block_id(),
  172. database_builder.field_revs().clone(),
  173. );
  174. row_builder.insert_select_option_cell(&single_select_field_id, vec![doing_option.id.clone()]);
  175. match i {
  176. 0 => {
  177. row_builder.insert_text_cell(&text_field_id, "Learn how to swim".to_string());
  178. row_builder.insert_select_option_cell(&multi_select_field_id, vec![fun_option.id.clone()]);
  179. },
  180. 1 => {
  181. row_builder.insert_text_cell(&text_field_id, "Meditate 10 mins each day".to_string());
  182. row_builder
  183. .insert_select_option_cell(&multi_select_field_id, vec![health_option.id.clone()]);
  184. },
  185. 2 => {
  186. row_builder.insert_text_cell(&text_field_id, "Write atomic essays ".to_string());
  187. let mut options = SelectOptionIds::new();
  188. options.push(fun_option.id.clone());
  189. options.push(work_option.id.clone());
  190. row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
  191. },
  192. _ => {},
  193. }
  194. let row = row_builder.build();
  195. database_builder.add_row(row);
  196. }
  197. for i in 0..2 {
  198. let mut row_builder = RowRevisionBuilder::new(
  199. database_builder.block_id(),
  200. database_builder.field_revs().clone(),
  201. );
  202. row_builder.insert_select_option_cell(&single_select_field_id, vec![done_option.id.clone()]);
  203. match i {
  204. 0 => {
  205. row_builder.insert_text_cell(&text_field_id, "Publish an article".to_string());
  206. row_builder.insert_select_option_cell(&multi_select_field_id, vec![work_option.id.clone()]);
  207. },
  208. 1 => {
  209. row_builder.insert_text_cell(&text_field_id, "Visit Chicago".to_string());
  210. let mut options = SelectOptionIds::new();
  211. options.push(travel_option.id.clone());
  212. options.push(fun_option.id.clone());
  213. row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
  214. },
  215. _ => {},
  216. }
  217. let row = row_builder.build();
  218. database_builder.add_row(row);
  219. }
  220. database_builder.build()
  221. }