|
@@ -42,63 +42,136 @@ pub fn create(grid_manager: Arc<GridManager>) -> Module {
|
|
|
module
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/// [GridEvent] defines events that are used to interact with the Grid. You could check [this](https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/architecture/backend/protobuf)
|
|
|
+/// out, it includes how to use these annotations: input, output, etc.
|
|
|
#[derive(Clone, Copy, PartialEq, Eq, Debug, Display, Hash, ProtoBuf_Enum, Flowy_Event)]
|
|
|
#[event_err = "FlowyError"]
|
|
|
pub enum GridEvent {
|
|
|
+ /// [GetGrid] event is used to get the [GridPB]
|
|
|
+ ///
|
|
|
+ /// The event handler accepts [GridIdPB] and return [GridPB] if there is no errors.
|
|
|
+ ///
|
|
|
#[event(input = "GridIdPB", output = "GridPB")]
|
|
|
GetGrid = 0,
|
|
|
|
|
|
+ /// [GetGridBlocks] event is used to get the grid's block.
|
|
|
+ ///
|
|
|
+ /// The event handler accepts [QueryGridBlocksPayloadPB] and return [RepeatedGridBlockPB]
|
|
|
+ /// if there is no errors.
|
|
|
#[event(input = "QueryGridBlocksPayloadPB", output = "RepeatedGridBlockPB")]
|
|
|
GetGridBlocks = 1,
|
|
|
|
|
|
+ /// [GetGridSetting] event is used to get the grid's setting.
|
|
|
+ ///
|
|
|
+ /// The event handler accepts [GridIdPB] and return [GridSettingPB]
|
|
|
+ /// if there is no errors.
|
|
|
#[event(input = "GridIdPB", output = "GridSettingPB")]
|
|
|
GetGridSetting = 2,
|
|
|
|
|
|
+ /// [UpdateGridSetting] event is used to update the grid's setting.
|
|
|
+ ///
|
|
|
+ /// The event handler accepts [GridIdPB] and return errors if failed to modify the grid's setting.
|
|
|
#[event(input = "GridIdPB", input = "GridSettingChangesetPayloadPB")]
|
|
|
UpdateGridSetting = 3,
|
|
|
|
|
|
+ /// [GetFields] event is used to get the grid's setting.
|
|
|
+ ///
|
|
|
+ /// The event handler accepts [QueryFieldPayloadPB] and return [RepeatedGridFieldPB]
|
|
|
+ /// if there is no errors.
|
|
|
#[event(input = "QueryFieldPayloadPB", output = "RepeatedGridFieldPB")]
|
|
|
GetFields = 10,
|
|
|
|
|
|
+ /// [UpdateField] event is used to update the field attributes.
|
|
|
+ ///
|
|
|
+ /// The event handler accepts [FieldChangesetPayloadPB] and return errors if failed to modify the
|
|
|
+ /// field.
|
|
|
#[event(input = "FieldChangesetPayloadPB")]
|
|
|
UpdateField = 11,
|
|
|
|
|
|
+
|
|
|
+ /// [UpdateFieldTypeOption] event is used to update the field's type option data. Certain field
|
|
|
+ /// types have user-defined options such as color, date format, number format, or a list of values
|
|
|
+ /// for a multi-select list. These options are defined within a specialization of the
|
|
|
+ /// FieldTypeOption class.
|
|
|
+ ///
|
|
|
+ /// Check out [this](https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/architecture/frontend/grid#fieldtype)
|
|
|
+ /// for more information.
|
|
|
+ ///
|
|
|
+ /// The event handler accepts [UpdateFieldTypeOptionPayloadPB] and return errors if failed to modify the
|
|
|
+ /// field.
|
|
|
#[event(input = "UpdateFieldTypeOptionPayloadPB")]
|
|
|
UpdateFieldTypeOption = 12,
|
|
|
|
|
|
+ /// [InsertField] event is used to insert a new field. If the field is already exists, the event
|
|
|
+ /// handler will replace the value with the new field value.
|
|
|
#[event(input = "InsertFieldPayloadPB")]
|
|
|
InsertField = 13,
|
|
|
|
|
|
+ /// [DeleteField] event is used to delete a new field. [DeleteFieldPayloadPB] is the context that
|
|
|
+ /// is used to delete the field from the Grid.
|
|
|
#[event(input = "DeleteFieldPayloadPB")]
|
|
|
DeleteField = 14,
|
|
|
|
|
|
+ /// [SwitchToField] event is used to update the current field's type.
|
|
|
+ /// It will insert a new FieldTypeOptionData if the new FieldType doesn't exist before, otherwise
|
|
|
+ /// reuse the existing FieldTypeOptionData. You could check the [GridRevisionPad] for more details.
|
|
|
#[event(input = "EditFieldPayloadPB", output = "FieldTypeOptionDataPB")]
|
|
|
SwitchToField = 20,
|
|
|
|
|
|
+ /// [DuplicateField] event is used to duplicate the field. The duplicated field data is kind of
|
|
|
+ /// deep copy of the target field. The passed in [DuplicateFieldPayloadPB] is the context that is
|
|
|
+ /// used to duplicate the field.
|
|
|
+ ///
|
|
|
+ /// Return errors if failed to duplicate the field.
|
|
|
+ ///
|
|
|
#[event(input = "DuplicateFieldPayloadPB")]
|
|
|
DuplicateField = 21,
|
|
|
|
|
|
+ /// [MoveItem] event is used to move the item. For the moment, the item has two types defined in
|
|
|
+ /// the [MoveItemTypePB].
|
|
|
#[event(input = "MoveItemPayloadPB")]
|
|
|
MoveItem = 22,
|
|
|
|
|
|
+ /// [GetFieldTypeOption] event is used to get the FieldTypeOption data for the specific field type.
|
|
|
+ ///
|
|
|
+ /// Check out the [FieldTypeOptionDataPB] for more details. If the [FieldTypeOptionData] does exist
|
|
|
+ /// for the target type, the [TypeOptionBuilder] will create the default data for that type.
|
|
|
+ ///
|
|
|
+ /// Return the [FieldTypeOptionDataPB] if there is no errors.
|
|
|
#[event(input = "GridFieldTypeOptionIdPB", output = "FieldTypeOptionDataPB")]
|
|
|
GetFieldTypeOption = 23,
|
|
|
|
|
|
+ /// [CreateFieldTypeOption] event is used to create a new FieldTypeOptionData.
|
|
|
#[event(input = "CreateFieldPayloadPB", output = "FieldTypeOptionDataPB")]
|
|
|
CreateFieldTypeOption = 24,
|
|
|
|
|
|
+ /// [NewSelectOption] event is used to create a new select option. Return the [SelectOptionPB] if
|
|
|
+ /// there is no errors.
|
|
|
#[event(input = "CreateSelectOptionPayloadPB", output = "SelectOptionPB")]
|
|
|
NewSelectOption = 30,
|
|
|
|
|
|
+ /// [GetSelectOptionCellData] event is used to get the select option data for cell editing.
|
|
|
+ /// [GridCellIdPB] locate which cell data that will be read from. The return value, [SelectOptionCellDataPB]
|
|
|
+ /// contains the available options and the currently selected options.
|
|
|
#[event(input = "GridCellIdPB", output = "SelectOptionCellDataPB")]
|
|
|
GetSelectOptionCellData = 31,
|
|
|
|
|
|
+ /// [UpdateSelectOption] event is used to update the FieldTypeOptionData that its field_type is
|
|
|
+ /// FieldType::SingleSelect or FieldType::MultiSelect.
|
|
|
+ ///
|
|
|
+ /// This event may trigger the GridNotification::DidUpdateCell event.
|
|
|
+ /// For example, the [SelectOptionChangesetPayloadPB] carries a change that update the name of
|
|
|
+ /// the option.
|
|
|
+ ///
|
|
|
#[event(input = "SelectOptionChangesetPayloadPB")]
|
|
|
UpdateSelectOption = 32,
|
|
|
|
|
|
#[event(input = "CreateRowPayloadPB", output = "GridRowPB")]
|
|
|
CreateRow = 50,
|
|
|
|
|
|
+ /// [GetRow] event is used to get the row data,[GridRowPB]. [OptionalRowPB] is a wrapper that enables
|
|
|
+ /// to return a nullable row data.
|
|
|
#[event(input = "GridRowIdPB", output = "OptionalRowPB")]
|
|
|
GetRow = 51,
|
|
|
|
|
@@ -111,12 +184,28 @@ pub enum GridEvent {
|
|
|
#[event(input = "GridCellIdPB", output = "GridCellPB")]
|
|
|
GetCell = 70,
|
|
|
|
|
|
+ /// [UpdateCell] event is used to update the cell content. The passed in data, [CellChangesetPB],
|
|
|
+ /// carries the changes that will be applied to the cell content by calling `update_cell` function.
|
|
|
+ ///
|
|
|
+ /// The 'content' property of the [CellChangesetPB] is String type. It can be used directly if the
|
|
|
+ /// cell use string data. For example, the TextCell or NumberCell.
|
|
|
+ ///
|
|
|
+ /// But,it can be treated as a generic type, because we can use [serde] to deserialize the string
|
|
|
+ /// into a specific data type.For the moment, the 'content' will be deserialized to concrete type
|
|
|
+ /// when the FieldType is SingleSelect, DateTime, and MultiSelect. We will discuss the details
|
|
|
+ /// in [UpdateSelectOptionCell] and [UpdateDateCell] event.
|
|
|
#[event(input = "CellChangesetPB")]
|
|
|
UpdateCell = 71,
|
|
|
|
|
|
+ /// [UpdateSelectOptionCell] event is used to update the select option cell data. [SelectOptionCellChangesetPayloadPB]
|
|
|
+ /// contains options that will be deleted or inserted. It can be cast to [CellChangesetPB] that
|
|
|
+ /// will be used by the `update_cell` function.
|
|
|
#[event(input = "SelectOptionCellChangesetPayloadPB")]
|
|
|
UpdateSelectOptionCell = 72,
|
|
|
|
|
|
+ /// [UpdateDateCell] event is used to update the date cell data. [DateChangesetPayloadPB]
|
|
|
+ /// contains the date and the time string. It can be cast to [CellChangesetPB] that
|
|
|
+ /// will be used by the `update_cell` function.
|
|
|
#[event(input = "DateChangesetPayloadPB")]
|
|
|
UpdateDateCell = 80,
|
|
|
}
|