mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: show checklist items inline in row page (#3737)
* feat: show checklist items inline in row page * fix: tauri build
This commit is contained in:
@ -5,7 +5,6 @@ use flowy_error::{ErrorCode, FlowyError};
|
||||
|
||||
use crate::entities::parser::NotEmptyStr;
|
||||
use crate::entities::SelectOptionPB;
|
||||
use crate::services::field::checklist_type_option::ChecklistCellData;
|
||||
use crate::services::field::SelectOption;
|
||||
|
||||
#[derive(Debug, Clone, Default, ProtoBuf)]
|
||||
@ -20,25 +19,6 @@ pub struct ChecklistCellDataPB {
|
||||
pub percentage: f64,
|
||||
}
|
||||
|
||||
impl From<ChecklistCellData> for ChecklistCellDataPB {
|
||||
fn from(cell_data: ChecklistCellData) -> Self {
|
||||
let selected_options = cell_data.selected_options();
|
||||
let percentage = cell_data.percentage_complete();
|
||||
Self {
|
||||
options: cell_data
|
||||
.options
|
||||
.into_iter()
|
||||
.map(|option| option.into())
|
||||
.collect(),
|
||||
selected_options: selected_options
|
||||
.into_iter()
|
||||
.map(|option| option.into())
|
||||
.collect(),
|
||||
percentage,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, ProtoBuf)]
|
||||
pub struct ChecklistCellDataChangesetPB {
|
||||
#[pb(index = 1)]
|
||||
|
@ -596,20 +596,6 @@ pub(crate) async fn update_select_option_cell_handler(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "trace", skip_all, err)]
|
||||
pub(crate) async fn get_checklist_cell_data_handler(
|
||||
data: AFPluginData<CellIdPB>,
|
||||
manager: AFPluginState<Weak<DatabaseManager>>,
|
||||
) -> DataResult<ChecklistCellDataPB, FlowyError> {
|
||||
let manager = upgrade_manager(manager)?;
|
||||
let params: CellIdParams = data.into_inner().try_into()?;
|
||||
let database_editor = manager.get_database_with_view_id(¶ms.view_id).await?;
|
||||
let data = database_editor
|
||||
.get_checklist_option(params.row_id, ¶ms.field_id)
|
||||
.await;
|
||||
data_result_ok(data)
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "trace", skip_all, err)]
|
||||
pub(crate) async fn update_checklist_cell_handler(
|
||||
data: AFPluginData<ChecklistCellDataChangesetPB>,
|
||||
@ -625,7 +611,7 @@ pub(crate) async fn update_checklist_cell_handler(
|
||||
update_options: params.update_options,
|
||||
};
|
||||
database_editor
|
||||
.set_checklist_options(¶ms.view_id, params.row_id, ¶ms.field_id, changeset)
|
||||
.update_cell_with_changeset(¶ms.view_id, params.row_id, ¶ms.field_id, changeset)
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
|
@ -50,7 +50,6 @@ pub fn init(database_manager: Weak<DatabaseManager>) -> AFPlugin {
|
||||
.event(DatabaseEvent::GetSelectOptionCellData, get_select_option_handler)
|
||||
.event(DatabaseEvent::UpdateSelectOptionCell, update_select_option_cell_handler)
|
||||
// Checklist
|
||||
.event(DatabaseEvent::GetChecklistCellData, get_checklist_cell_data_handler)
|
||||
.event(DatabaseEvent::UpdateChecklistCell, update_checklist_cell_handler)
|
||||
// Date
|
||||
.event(DatabaseEvent::UpdateDateCell, update_date_cell_handler)
|
||||
@ -256,11 +255,8 @@ pub enum DatabaseEvent {
|
||||
#[event(input = "SelectOptionCellChangesetPB")]
|
||||
UpdateSelectOptionCell = 72,
|
||||
|
||||
#[event(input = "CellIdPB", output = "ChecklistCellDataPB")]
|
||||
GetChecklistCellData = 73,
|
||||
|
||||
#[event(input = "ChecklistCellDataChangesetPB")]
|
||||
UpdateChecklistCell = 74,
|
||||
UpdateChecklistCell = 73,
|
||||
|
||||
/// [UpdateDateCell] event is used to update a date cell's data. [DateChangesetPB]
|
||||
/// contains the date and the time string. It can be cast to [CellChangesetPB] that
|
||||
|
@ -21,7 +21,7 @@ use crate::services::cell::{
|
||||
use crate::services::database::util::database_view_setting_pb_from_view;
|
||||
use crate::services::database::UpdatedRow;
|
||||
use crate::services::database_view::{DatabaseViewChanged, DatabaseViewData, DatabaseViews};
|
||||
use crate::services::field::checklist_type_option::{ChecklistCellChangeset, ChecklistCellData};
|
||||
use crate::services::field::checklist_type_option::ChecklistCellChangeset;
|
||||
use crate::services::field::{
|
||||
default_type_option_data_from_type, select_type_option_from_field, transform_type_option,
|
||||
type_option_data_from_pb_or_default, type_option_to_pb, SelectOptionCellChangeset,
|
||||
@ -858,15 +858,6 @@ impl DatabaseEditor {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get_checklist_option(&self, row_id: RowId, field_id: &str) -> ChecklistCellDataPB {
|
||||
let row_cell = self.database.lock().get_cell(field_id, &row_id);
|
||||
let cell_data = match row_cell.cell {
|
||||
None => ChecklistCellData::default(),
|
||||
Some(cell) => ChecklistCellData::from(&cell),
|
||||
};
|
||||
ChecklistCellDataPB::from(cell_data)
|
||||
}
|
||||
|
||||
pub async fn set_checklist_options(
|
||||
&self,
|
||||
view_id: &str,
|
||||
|
Reference in New Issue
Block a user