Browse Source

chore: grid tasks

appflowy 2 years ago
parent
commit
dc81ac8e24

+ 1 - 1
frontend/app_flowy/lib/workspace/application/grid/grid_service.dart

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

+ 1 - 0
frontend/rust-lib/flowy-grid/src/services/filter/filter_runner.rs

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

+ 3 - 0
frontend/rust-lib/flowy-grid/src/services/filter/mod.rs

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

+ 2 - 0
frontend/rust-lib/flowy-grid/src/services/mod.rs

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

+ 0 - 0
frontend/rust-lib/flowy-grid/src/services/tasks/filter/mod.rs


+ 3 - 0
frontend/rust-lib/flowy-grid/src/services/tasks/mod.rs

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

+ 0 - 0
frontend/rust-lib/flowy-grid/src/services/tasks/runner.rs


+ 76 - 0
frontend/rust-lib/flowy-grid/src/services/tasks/scheduler.rs

@@ -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(),
+        }
+    }
+}

+ 2 - 5
shared-lib/flowy-folder-data-model/src/revision/view_rev.rs

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

+ 2 - 4
shared-lib/flowy-grid-data-model/src/revision/grid_rev.rs

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

+ 4 - 6
shared-lib/flowy-user-data-model/src/entities/user_setting.rs

@@ -20,10 +20,12 @@ pub struct AppearanceSettings {
     pub locale: LocaleSettings,
     pub locale: LocaleSettings,
 
 
     #[pb(index = 3)]
     #[pb(index = 3)]
-    #[serde(default = "reset_default_value")]
+    #[serde(default = "DEFAULT_RESET_VALUE")]
     pub reset_as_default: bool,
     pub reset_as_default: bool,
 }
 }
 
 
+const DEFAULT_RESET_VALUE: fn() -> bool = || APPEARANCE_RESET_AS_DEFAULT;
+
 #[derive(ProtoBuf, Serialize, Deserialize, Debug, Clone)]
 #[derive(ProtoBuf, Serialize, Deserialize, Debug, Clone)]
 pub struct LocaleSettings {
 pub struct LocaleSettings {
     #[pb(index = 1)]
     #[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_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 {
 impl std::default::Default for AppearanceSettings {
     fn default() -> Self {
     fn default() -> Self {