chore: create field

This commit is contained in:
appflowy
2022-03-25 15:02:43 +08:00
parent 2eccd0452b
commit 90e7873135
43 changed files with 1371 additions and 326 deletions

View File

@ -1,8 +1,9 @@
use crate::manager::GridManager;
use flowy_error::FlowyError;
use flowy_grid_data_model::entities::{
CellMetaChangeset, CreateFieldPayload, CreateRowPayload, Field, FieldChangeset, Grid, GridId, QueryFieldPayload,
QueryGridBlocksPayload, QueryRowPayload, RepeatedField, RepeatedGridBlock, Row,
CellMetaChangeset, CreateEditFieldContextParams, CreateFieldPayload, CreateRowPayload, EditFieldContext, Field,
FieldChangeset, Grid, GridId, QueryFieldPayload, QueryGridBlocksPayload, QueryRowPayload, RepeatedField,
RepeatedGridBlock, Row,
};
use flowy_grid_data_model::parser::{
CreateFieldParams, CreateRowParams, QueryFieldParams, QueryGridBlocksParams, QueryRowParams,
@ -72,14 +73,23 @@ pub(crate) async fn create_field_handler(
}
#[tracing::instrument(level = "debug", skip(data, manager), err)]
pub(crate) async fn create_default_field_handler(
data: Data<GridId>,
pub(crate) async fn create_field_edit_context_handler(
data: Data<CreateEditFieldContextParams>,
manager: AppData<Arc<GridManager>>,
) -> DataResult<Field, FlowyError> {
let grid_id: GridId = data.into_inner();
let editor = manager.get_grid_editor(grid_id.as_ref())?;
let field = editor.make_default_field().await?;
data_result(field)
) -> DataResult<EditFieldContext, FlowyError> {
let params: CreateEditFieldContextParams = data.into_inner();
let editor = manager.get_grid_editor(&params.grid_id)?;
let field_meta = editor.make_field_meta_from_ty(&params.field_type).await?;
let type_option_data = field_meta.type_option.as_bytes().to_vec();
let field: Field = field_meta.into();
let edit_context = EditFieldContext {
grid_id: params.grid_id,
grid_field: field,
type_option_data,
};
data_result(edit_context)
}
#[tracing::instrument(level = "debug", skip(data, manager), err)]

View File

@ -13,7 +13,7 @@ pub fn create(grid_manager: Arc<GridManager>) -> Module {
.event(GridEvent::GetFields, get_fields_handler)
.event(GridEvent::UpdateField, update_field_handler)
.event(GridEvent::CreateField, create_field_handler)
.event(GridEvent::CreateDefaultField, create_default_field_handler)
.event(GridEvent::CreateEditFieldContext, create_field_edit_context_handler)
.event(GridEvent::CreateRow, create_row_handler)
.event(GridEvent::GetRow, get_row_handler)
.event(GridEvent::UpdateCell, update_cell_handler);
@ -39,8 +39,8 @@ pub enum GridEvent {
#[event(input = "CreateFieldPayload")]
CreateField = 12,
#[event(input = "GridId", output = "Field")]
CreateDefaultField = 13,
#[event(input = "CreateEditFieldContextParams", output = "EditFieldContext")]
CreateEditFieldContext = 13,
#[event(input = "CreateRowPayload", output = "Row")]
CreateRow = 21,

View File

@ -30,7 +30,7 @@ pub enum GridEvent {
GetFields = 10,
UpdateField = 11,
CreateField = 12,
CreateDefaultField = 13,
CreateEditFieldContext = 13,
CreateRow = 21,
GetRow = 22,
UpdateCell = 30,
@ -48,7 +48,7 @@ impl ::protobuf::ProtobufEnum for GridEvent {
10 => ::std::option::Option::Some(GridEvent::GetFields),
11 => ::std::option::Option::Some(GridEvent::UpdateField),
12 => ::std::option::Option::Some(GridEvent::CreateField),
13 => ::std::option::Option::Some(GridEvent::CreateDefaultField),
13 => ::std::option::Option::Some(GridEvent::CreateEditFieldContext),
21 => ::std::option::Option::Some(GridEvent::CreateRow),
22 => ::std::option::Option::Some(GridEvent::GetRow),
30 => ::std::option::Option::Some(GridEvent::UpdateCell),
@ -63,7 +63,7 @@ impl ::protobuf::ProtobufEnum for GridEvent {
GridEvent::GetFields,
GridEvent::UpdateField,
GridEvent::CreateField,
GridEvent::CreateDefaultField,
GridEvent::CreateEditFieldContext,
GridEvent::CreateRow,
GridEvent::GetRow,
GridEvent::UpdateCell,
@ -95,11 +95,11 @@ impl ::protobuf::reflect::ProtobufValue for GridEvent {
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0fevent_map.proto*\xa3\x01\n\tGridEvent\x12\x0f\n\x0bGetGridData\x10\
\n\x0fevent_map.proto*\xa7\x01\n\tGridEvent\x12\x0f\n\x0bGetGridData\x10\
\0\x12\x11\n\rGetGridBlocks\x10\x01\x12\r\n\tGetFields\x10\n\x12\x0f\n\
\x0bUpdateField\x10\x0b\x12\x0f\n\x0bCreateField\x10\x0c\x12\x16\n\x12Cr\
eateDefaultField\x10\r\x12\r\n\tCreateRow\x10\x15\x12\n\n\x06GetRow\x10\
\x16\x12\x0e\n\nUpdateCell\x10\x1eb\x06proto3\
\x0bUpdateField\x10\x0b\x12\x0f\n\x0bCreateField\x10\x0c\x12\x1a\n\x16Cr\
eateEditFieldContext\x10\r\x12\r\n\tCreateRow\x10\x15\x12\n\n\x06GetRow\
\x10\x16\x12\x0e\n\nUpdateCell\x10\x1eb\x06proto3\
";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

View File

@ -6,7 +6,7 @@ enum GridEvent {
GetFields = 10;
UpdateField = 11;
CreateField = 12;
CreateDefaultField = 13;
CreateEditFieldContext = 13;
CreateRow = 21;
GetRow = 22;
UpdateCell = 30;

View File

@ -62,11 +62,10 @@ impl ClientGridEditor {
Ok(())
}
pub async fn make_default_field(&self) -> FlowyResult<Field> {
let field_type = FieldType::default();
pub async fn make_field_meta_from_ty(&self, field_type: &FieldType) -> FlowyResult<FieldMeta> {
let name = format!("Property {}", self.pad.read().await.fields().len());
let field_meta = FieldBuilder::from_field_type(&field_type).name(&name).build();
Ok(field_meta.into())
Ok(field_meta)
}
pub async fn contain_field(&self, field_id: &str) -> bool {