mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: grid tasks
This commit is contained in:
parent
7504ea7555
commit
dc81ac8e24
@ -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}) {
|
||||
|
@ -0,0 +1 @@
|
||||
pub(crate) struct FilterRunner {}
|
3
frontend/rust-lib/flowy-grid/src/services/filter/mod.rs
Normal file
3
frontend/rust-lib/flowy-grid/src/services/filter/mod.rs
Normal file
@ -0,0 +1,3 @@
|
||||
mod filter_runner;
|
||||
|
||||
pub use filter_runner::*;
|
@ -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;
|
||||
|
3
frontend/rust-lib/flowy-grid/src/services/tasks/mod.rs
Normal file
3
frontend/rust-lib/flowy-grid/src/services/tasks/mod.rs
Normal file
@ -0,0 +1,3 @@
|
||||
mod filter;
|
||||
mod runner;
|
||||
mod scheduler;
|
76
frontend/rust-lib/flowy-grid/src/services/tasks/scheduler.rs
Normal file
76
frontend/rust-lib/flowy-grid/src/services/tasks/scheduler.rs
Normal 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(),
|
||||
}
|
||||
}
|
||||
}
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user