|
@@ -1,11 +1,12 @@
|
|
|
-use crate::entities::{GroupChangesetPB, InsertedRowPB, RowPB};
|
|
|
-use crate::services::cell::insert_select_option_cell;
|
|
|
-use crate::services::field::{SelectOptionCellDataPB, SelectOptionPB};
|
|
|
+use crate::entities::{FieldType, GroupChangesetPB, InsertedRowPB, RowPB};
|
|
|
+use crate::services::cell::{insert_checkbox_cell, insert_select_option_cell};
|
|
|
+use crate::services::field::{SelectOptionCellDataPB, SelectOptionPB, CHECK};
|
|
|
use crate::services::group::configuration::GroupContext;
|
|
|
-use crate::services::group::{GeneratedGroup, Group};
|
|
|
-
|
|
|
use crate::services::group::controller::MoveGroupRowContext;
|
|
|
-use flowy_grid_data_model::revision::{GroupRevision, RowRevision, SelectOptionGroupConfigurationRevision};
|
|
|
+use crate::services::group::{GeneratedGroup, Group};
|
|
|
+use flowy_grid_data_model::revision::{
|
|
|
+ CellRevision, FieldRevision, GroupRevision, RowRevision, SelectOptionGroupConfigurationRevision,
|
|
|
+};
|
|
|
|
|
|
pub type SelectOptionGroupContext = GroupContext<SelectOptionGroupConfigurationRevision>;
|
|
|
|
|
@@ -109,10 +110,16 @@ pub fn move_group_row(group: &mut Group, context: &mut MoveGroupRowContext) -> O
|
|
|
|
|
|
// Update the corresponding row's cell content.
|
|
|
if from_index.is_none() {
|
|
|
- tracing::debug!("Mark row:{} belong to group:{}", row_rev.id, group.id);
|
|
|
- let cell_rev = insert_select_option_cell(group.id.clone(), field_rev);
|
|
|
- row_changeset.cell_by_field_id.insert(field_rev.id.clone(), cell_rev);
|
|
|
- changeset.updated_rows.push(RowPB::from(*row_rev));
|
|
|
+ let cell_rev = make_inserted_cell_rev(&group.id, field_rev);
|
|
|
+ if let Some(cell_rev) = cell_rev {
|
|
|
+ tracing::debug!(
|
|
|
+ "Update content of the cell in the row:{} to group:{}",
|
|
|
+ row_rev.id,
|
|
|
+ group.id
|
|
|
+ );
|
|
|
+ row_changeset.cell_by_field_id.insert(field_rev.id.clone(), cell_rev);
|
|
|
+ changeset.updated_rows.push(RowPB::from(*row_rev));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if changeset.is_empty() {
|
|
@@ -122,6 +129,27 @@ pub fn move_group_row(group: &mut Group, context: &mut MoveGroupRowContext) -> O
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+pub fn make_inserted_cell_rev(group_id: &str, field_rev: &FieldRevision) -> Option<CellRevision> {
|
|
|
+ let field_type: FieldType = field_rev.ty.into();
|
|
|
+ match field_type {
|
|
|
+ FieldType::SingleSelect => {
|
|
|
+ let cell_rev = insert_select_option_cell(group_id.to_owned(), field_rev);
|
|
|
+ Some(cell_rev)
|
|
|
+ }
|
|
|
+ FieldType::MultiSelect => {
|
|
|
+ let cell_rev = insert_select_option_cell(group_id.to_owned(), field_rev);
|
|
|
+ Some(cell_rev)
|
|
|
+ }
|
|
|
+ FieldType::Checkbox => {
|
|
|
+ let cell_rev = insert_checkbox_cell(group_id == CHECK, field_rev);
|
|
|
+ Some(cell_rev)
|
|
|
+ }
|
|
|
+ _ => {
|
|
|
+ tracing::warn!("Unknown field type: {:?}", field_type);
|
|
|
+ None
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
pub fn generate_select_option_groups(
|
|
|
_field_id: &str,
|
|
|
_group_ctx: &SelectOptionGroupContext,
|