chore: grid tasks

This commit is contained in:
appflowy 2022-06-27 20:53:47 +08:00
parent 7504ea7555
commit dc81ac8e24
11 changed files with 94 additions and 16 deletions

View File

@ -22,7 +22,7 @@ class GridService {
await FolderEventSetLatestView(ViewId(value: gridId)).send();
final payload = GridId(value: gridId);
return GridEventGetGridData(payload).send();
return GridEventGetGrid(payload).send();
}
Future<Either<Row, FlowyError>> createRow({Option<String>? startRowId}) {

View File

@ -0,0 +1 @@
pub(crate) struct FilterRunner {}

View File

@ -0,0 +1,3 @@
mod filter_runner;
pub use filter_runner::*;

View File

@ -3,7 +3,9 @@ mod util;
mod block_manager;
pub mod block_revision_editor;
pub mod field;
mod filter;
pub mod grid_editor;
pub mod persistence;
pub mod row;
pub mod setting;
// mod tasks;

View File

@ -0,0 +1,3 @@
mod filter;
mod runner;
mod scheduler;

View File

@ -0,0 +1,76 @@
use std::cmp::Ordering;
use std::collections::BinaryHeap;
use std::ops::{Deref, DerefMut};
enum TaskType {
/// Remove the row if it doesn't satisfy the filter.
Filter,
/// Generate snapshot for grid, unused by now.
Snapshot,
}
/// Two tasks are equal if they have the same type.
impl PartialEq for TaskType {
fn eq(&self, other: &Self) -> bool {
matches!((self, other),)
}
}
pub type TaskId = u32;
#[derive(Eq, Debug, Clone, Copy)]
struct PendingTask {
kind: TaskType,
id: TaskId,
}
impl PartialEq for PendingTask {
fn eq(&self, other: &Self) -> bool {
self.id.eq(&other.id)
}
}
impl PartialOrd for PendingTask {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl Ord for PendingTask {
fn cmp(&self, other: &Self) -> Ordering {
self.id.cmp(&other.id).reverse()
}
}
#[derive(PartialEq, Eq, Hash, Debug, Clone)]
enum TaskListIdentifier {
Filter(String),
Snapshot(String),
}
#[derive(Debug)]
struct TaskList {
tasks: BinaryHeap<PendingTask>,
}
impl Deref for TaskList {
type Target = BinaryHeap<PendingTask>;
fn deref(&self) -> &Self::Target {
&self.tasks
}
}
impl DerefMut for TaskList {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.tasks
}
}
impl TaskList {
fn new() -> Self {
Self {
tasks: Default::default(),
}
}
}

View File

@ -30,13 +30,10 @@ pub struct ViewRevision {
#[serde(default)]
pub thumbnail: String,
#[serde(default = "default_plugin_type")]
#[serde(default = "DEFAULT_PLUGIN_TYPE")]
pub plugin_type: i32,
}
fn default_plugin_type() -> i32 {
0
}
const DEFAULT_PLUGIN_TYPE: fn() -> i32 = || 0;
impl std::convert::From<ViewRevision> for View {
fn from(view_serde: ViewRevision) -> Self {

View File

@ -127,13 +127,11 @@ pub struct FieldRevision {
#[serde(with = "indexmap::serde_seq")]
pub type_options: IndexMap<String, String>,
#[serde(default = "default_is_primary")]
#[serde(default = "DEFAULT_IS_PRIMARY")]
pub is_primary: bool,
}
fn default_is_primary() -> bool {
false
}
const DEFAULT_IS_PRIMARY: fn() -> bool = || false;
impl FieldRevision {
pub fn new(name: &str, desc: &str, field_type: FieldType, is_primary: bool) -> Self {

View File

@ -20,10 +20,12 @@ pub struct AppearanceSettings {
pub locale: LocaleSettings,
#[pb(index = 3)]
#[serde(default = "reset_default_value")]
#[serde(default = "DEFAULT_RESET_VALUE")]
pub reset_as_default: bool,
}
const DEFAULT_RESET_VALUE: fn() -> bool = || APPEARANCE_RESET_AS_DEFAULT;
#[derive(ProtoBuf, Serialize, Deserialize, Debug, Clone)]
pub struct LocaleSettings {
#[pb(index = 1)]
@ -42,12 +44,8 @@ impl std::default::Default for LocaleSettings {
}
}
fn reset_default_value() -> bool {
APPEARANCE_RESET_AS_DEFAULT
}
pub const APPEARANCE_DEFAULT_THEME: &str = "light";
pub const APPEARANCE_RESET_AS_DEFAULT: bool = true;
const APPEARANCE_RESET_AS_DEFAULT: bool = true;
impl std::default::Default for AppearanceSettings {
fn default() -> Self {