123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- use collab_database::database::{gen_database_id, gen_row_id};
- use collab_database::rows::CreateRowParams;
- use collab_database::views::{CreateDatabaseParams, DatabaseLayout, LayoutSettings};
- use crate::entities::FieldType;
- use crate::services::cell::{insert_select_option_cell, insert_text_cell};
- use crate::services::field::{
- FieldBuilder, SelectOption, SelectOptionColor, SingleSelectTypeOption,
- };
- use crate::services::setting::CalendarLayoutSetting;
- pub fn make_default_grid(view_id: &str, name: &str) -> CreateDatabaseParams {
- let text_field = FieldBuilder::from_field_type(FieldType::RichText)
- .name("Name")
- .visibility(true)
- .primary(true)
- .build();
- let single_select = FieldBuilder::from_field_type(FieldType::SingleSelect)
- .name("Type")
- .visibility(true)
- .build();
- let checkbox_field = FieldBuilder::from_field_type(FieldType::Checkbox)
- .name("Done")
- .visibility(true)
- .build();
- CreateDatabaseParams {
- database_id: gen_database_id(),
- view_id: view_id.to_string(),
- name: name.to_string(),
- layout: DatabaseLayout::Grid,
- layout_settings: Default::default(),
- filters: vec![],
- groups: vec![],
- sorts: vec![],
- created_rows: vec![
- CreateRowParams::new(gen_row_id()),
- CreateRowParams::new(gen_row_id()),
- CreateRowParams::new(gen_row_id()),
- ],
- fields: vec![text_field, single_select, checkbox_field],
- }
- }
- pub fn make_default_board(view_id: &str, name: &str) -> CreateDatabaseParams {
- // text
- let text_field = FieldBuilder::from_field_type(FieldType::RichText)
- .name("Description")
- .visibility(true)
- .primary(true)
- .build();
- let text_field_id = text_field.id.clone();
- // single select
- let to_do_option = SelectOption::with_color("To Do", SelectOptionColor::Purple);
- let doing_option = SelectOption::with_color("Doing", SelectOptionColor::Orange);
- let done_option = SelectOption::with_color("Done", SelectOptionColor::Yellow);
- let mut single_select_type_option = SingleSelectTypeOption::default();
- single_select_type_option
- .options
- .extend(vec![to_do_option.clone(), doing_option, done_option]);
- let single_select = FieldBuilder::new(FieldType::SingleSelect, single_select_type_option)
- .name("Status")
- .visibility(true)
- .build();
- let single_select_field_id = single_select.id.clone();
- let mut rows = vec![];
- for i in 0..3 {
- let mut row = CreateRowParams::new(gen_row_id());
- row.cells.insert(
- single_select_field_id.clone(),
- insert_select_option_cell(vec![to_do_option.id.clone()], &single_select),
- );
- row.cells.insert(
- text_field_id.clone(),
- insert_text_cell(format!("Card {}", i + 1), &text_field),
- );
- rows.push(row);
- }
- CreateDatabaseParams {
- database_id: gen_database_id(),
- view_id: view_id.to_string(),
- name: name.to_string(),
- layout: DatabaseLayout::Board,
- layout_settings: Default::default(),
- filters: vec![],
- groups: vec![],
- sorts: vec![],
- created_rows: rows,
- fields: vec![text_field, single_select],
- }
- }
- pub fn make_default_calendar(view_id: &str, name: &str) -> CreateDatabaseParams {
- // text
- let text_field = FieldBuilder::from_field_type(FieldType::RichText)
- .name("Title")
- .visibility(true)
- .primary(true)
- .build();
- // date
- let date_field = FieldBuilder::from_field_type(FieldType::DateTime)
- .name("Date")
- .visibility(true)
- .build();
- let date_field_id = date_field.id.clone();
- // multi select
- let multi_select_field = FieldBuilder::from_field_type(FieldType::MultiSelect)
- .name("Tags")
- .visibility(true)
- .build();
- let mut layout_settings = LayoutSettings::default();
- layout_settings.insert(
- DatabaseLayout::Calendar,
- CalendarLayoutSetting::new(date_field_id).into(),
- );
- CreateDatabaseParams {
- database_id: gen_database_id(),
- view_id: view_id.to_string(),
- name: name.to_string(),
- layout: DatabaseLayout::Calendar,
- layout_settings,
- filters: vec![],
- groups: vec![],
- sorts: vec![],
- created_rows: vec![],
- fields: vec![text_field, date_field, multi_select_field],
- }
- }
|