mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
* chore: enable calendar view * chore: update database group listener * refactor: remove board data controller * refactor: remove group backend service * refactor: remove calendar controller * chore: create default calendar setting * chore: send calednar setting notifications * refactor: rename the card in kanban board, prepare to reuse in calendar * refactor: support custom card cell * chore: return calendar events * refactor: remove groupId in card, make card more generic * chore: display cell * chore: display three cards in calendar * chore: create calendar card * refactor: create row with data * chore: support create event * ci: fix tauri build * chore: disable create calendar
244 lines
8.8 KiB
Rust
244 lines
8.8 KiB
Rust
use crate::entities::FieldType;
|
|
use crate::services::field::*;
|
|
use crate::services::row::RowRevisionBuilder;
|
|
use database_model::{BuildDatabaseContext, CalendarLayoutSetting, LayoutRevision, LayoutSetting};
|
|
use flowy_client_sync::client_database::DatabaseBuilder;
|
|
|
|
pub fn make_default_grid() -> BuildDatabaseContext {
|
|
let mut database_builder = DatabaseBuilder::new();
|
|
// text
|
|
let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
|
|
.name("Name")
|
|
.visibility(true)
|
|
.primary(true)
|
|
.build();
|
|
database_builder.add_field(text_field);
|
|
|
|
// single select
|
|
let single_select = SingleSelectTypeOptionBuilder::default();
|
|
let single_select_field = FieldBuilder::new(single_select)
|
|
.name("Type")
|
|
.visibility(true)
|
|
.build();
|
|
database_builder.add_field(single_select_field);
|
|
|
|
// checkbox
|
|
let checkbox_field = FieldBuilder::from_field_type(&FieldType::Checkbox)
|
|
.name("Done")
|
|
.visibility(true)
|
|
.build();
|
|
database_builder.add_field(checkbox_field);
|
|
|
|
database_builder.add_empty_row();
|
|
database_builder.add_empty_row();
|
|
database_builder.add_empty_row();
|
|
database_builder.build()
|
|
}
|
|
|
|
pub fn make_default_board() -> BuildDatabaseContext {
|
|
let mut database_builder = DatabaseBuilder::new();
|
|
// text
|
|
let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
|
|
.name("Description")
|
|
.visibility(true)
|
|
.primary(true)
|
|
.build();
|
|
let text_field_id = text_field.id.clone();
|
|
database_builder.add_field(text_field);
|
|
|
|
// single select
|
|
let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple);
|
|
let doing_option = SelectOptionPB::with_color("Doing", SelectOptionColorPB::Orange);
|
|
let done_option = SelectOptionPB::with_color("Done", SelectOptionColorPB::Yellow);
|
|
let single_select_type_option = SingleSelectTypeOptionBuilder::default()
|
|
.add_option(to_do_option.clone())
|
|
.add_option(doing_option)
|
|
.add_option(done_option);
|
|
let single_select_field = FieldBuilder::new(single_select_type_option)
|
|
.name("Status")
|
|
.visibility(true)
|
|
.build();
|
|
let single_select_field_id = single_select_field.id.clone();
|
|
database_builder.add_field(single_select_field);
|
|
|
|
for i in 0..3 {
|
|
let mut row_builder = RowRevisionBuilder::new(
|
|
database_builder.block_id(),
|
|
database_builder.field_revs().clone(),
|
|
);
|
|
row_builder.insert_select_option_cell(&single_select_field_id, vec![to_do_option.id.clone()]);
|
|
let data = format!("Card {}", i + 1);
|
|
row_builder.insert_text_cell(&text_field_id, data);
|
|
let row = row_builder.build();
|
|
database_builder.add_row(row);
|
|
}
|
|
|
|
database_builder.build()
|
|
}
|
|
|
|
pub fn make_default_calendar() -> BuildDatabaseContext {
|
|
let mut database_builder = DatabaseBuilder::new();
|
|
// text
|
|
let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
|
|
.name("Title")
|
|
.visibility(true)
|
|
.primary(true)
|
|
.build();
|
|
database_builder.add_field(text_field);
|
|
|
|
// date
|
|
let date_type_option = DateTypeOptionBuilder::default();
|
|
let date_field = FieldBuilder::new(date_type_option)
|
|
.name("Date")
|
|
.visibility(true)
|
|
.build();
|
|
let date_field_id = date_field.id.clone();
|
|
database_builder.add_field(date_field);
|
|
|
|
// single select
|
|
let multi_select_type_option = MultiSelectTypeOptionBuilder::default();
|
|
let multi_select_field = FieldBuilder::new(multi_select_type_option)
|
|
.name("Tags")
|
|
.visibility(true)
|
|
.build();
|
|
database_builder.add_field(multi_select_field);
|
|
|
|
let calendar_layout_setting = CalendarLayoutSetting::new(date_field_id);
|
|
let mut layout_setting = LayoutSetting::new();
|
|
let calendar_setting = serde_json::to_string(&calendar_layout_setting).unwrap();
|
|
layout_setting.insert(LayoutRevision::Calendar, calendar_setting);
|
|
database_builder.set_layout_setting(layout_setting);
|
|
database_builder.build()
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
pub fn make_default_board_2() -> BuildDatabaseContext {
|
|
let mut database_builder = DatabaseBuilder::new();
|
|
// text
|
|
let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
|
|
.name("Description")
|
|
.visibility(true)
|
|
.primary(true)
|
|
.build();
|
|
let text_field_id = text_field.id.clone();
|
|
database_builder.add_field(text_field);
|
|
|
|
// single select
|
|
let to_do_option = SelectOptionPB::with_color("To Do", SelectOptionColorPB::Purple);
|
|
let doing_option = SelectOptionPB::with_color("Doing", SelectOptionColorPB::Orange);
|
|
let done_option = SelectOptionPB::with_color("Done", SelectOptionColorPB::Yellow);
|
|
let single_select_type_option = SingleSelectTypeOptionBuilder::default()
|
|
.add_option(to_do_option.clone())
|
|
.add_option(doing_option.clone())
|
|
.add_option(done_option.clone());
|
|
let single_select_field = FieldBuilder::new(single_select_type_option)
|
|
.name("Status")
|
|
.visibility(true)
|
|
.build();
|
|
let single_select_field_id = single_select_field.id.clone();
|
|
database_builder.add_field(single_select_field);
|
|
|
|
// MultiSelect
|
|
let work_option = SelectOptionPB::with_color("Work", SelectOptionColorPB::Aqua);
|
|
let travel_option = SelectOptionPB::with_color("Travel", SelectOptionColorPB::Green);
|
|
let fun_option = SelectOptionPB::with_color("Fun", SelectOptionColorPB::Lime);
|
|
let health_option = SelectOptionPB::with_color("Health", SelectOptionColorPB::Pink);
|
|
let multi_select_type_option = MultiSelectTypeOptionBuilder::default()
|
|
.add_option(travel_option.clone())
|
|
.add_option(work_option.clone())
|
|
.add_option(fun_option.clone())
|
|
.add_option(health_option.clone());
|
|
let multi_select_field = FieldBuilder::new(multi_select_type_option)
|
|
.name("Tags")
|
|
.visibility(true)
|
|
.build();
|
|
let multi_select_field_id = multi_select_field.id.clone();
|
|
database_builder.add_field(multi_select_field);
|
|
|
|
for i in 0..3 {
|
|
let mut row_builder = RowRevisionBuilder::new(
|
|
database_builder.block_id(),
|
|
database_builder.field_revs().clone(),
|
|
);
|
|
row_builder.insert_select_option_cell(&single_select_field_id, vec![to_do_option.id.clone()]);
|
|
match i {
|
|
0 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Update AppFlowy Website".to_string());
|
|
row_builder.insert_select_option_cell(&multi_select_field_id, vec![work_option.id.clone()]);
|
|
},
|
|
1 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Learn French".to_string());
|
|
let mut options = SelectOptionIds::new();
|
|
options.push(fun_option.id.clone());
|
|
options.push(travel_option.id.clone());
|
|
row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
|
|
},
|
|
|
|
2 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Exercise 4x/week".to_string());
|
|
row_builder.insert_select_option_cell(&multi_select_field_id, vec![fun_option.id.clone()]);
|
|
},
|
|
_ => {},
|
|
}
|
|
let row = row_builder.build();
|
|
database_builder.add_row(row);
|
|
}
|
|
|
|
for i in 0..3 {
|
|
let mut row_builder = RowRevisionBuilder::new(
|
|
database_builder.block_id(),
|
|
database_builder.field_revs().clone(),
|
|
);
|
|
row_builder.insert_select_option_cell(&single_select_field_id, vec![doing_option.id.clone()]);
|
|
match i {
|
|
0 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Learn how to swim".to_string());
|
|
row_builder.insert_select_option_cell(&multi_select_field_id, vec![fun_option.id.clone()]);
|
|
},
|
|
1 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Meditate 10 mins each day".to_string());
|
|
row_builder
|
|
.insert_select_option_cell(&multi_select_field_id, vec![health_option.id.clone()]);
|
|
},
|
|
|
|
2 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Write atomic essays ".to_string());
|
|
let mut options = SelectOptionIds::new();
|
|
options.push(fun_option.id.clone());
|
|
options.push(work_option.id.clone());
|
|
row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
|
|
},
|
|
_ => {},
|
|
}
|
|
let row = row_builder.build();
|
|
database_builder.add_row(row);
|
|
}
|
|
|
|
for i in 0..2 {
|
|
let mut row_builder = RowRevisionBuilder::new(
|
|
database_builder.block_id(),
|
|
database_builder.field_revs().clone(),
|
|
);
|
|
row_builder.insert_select_option_cell(&single_select_field_id, vec![done_option.id.clone()]);
|
|
match i {
|
|
0 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Publish an article".to_string());
|
|
row_builder.insert_select_option_cell(&multi_select_field_id, vec![work_option.id.clone()]);
|
|
},
|
|
1 => {
|
|
row_builder.insert_text_cell(&text_field_id, "Visit Chicago".to_string());
|
|
let mut options = SelectOptionIds::new();
|
|
options.push(travel_option.id.clone());
|
|
options.push(fun_option.id.clone());
|
|
row_builder.insert_select_option_cell(&multi_select_field_id, vec![options.to_string()]);
|
|
},
|
|
|
|
_ => {},
|
|
}
|
|
let row = row_builder.build();
|
|
database_builder.add_row(row);
|
|
}
|
|
|
|
database_builder.build()
|
|
}
|