pub struct BoardRow {
pub task: Task,
pub worked_secs: u64,
pub updated_secs_ago: u64,
pub marks: Marks,
pub rollup: Option<(usize, usize)>,
pub parent_subject: Option<String>,
pub history: Vec<TaskTransition>,
pub history_total: usize,
}Expand description
One row as the board reads it: the record plus what is derived.
Fields§
§task: Task§worked_secs: u64The sum of its in_progress intervals, from the history.
updated_secs_ago: u64Time since any touch.
marks: Marks§rollup: Option<(usize, usize)>A parent’s children: how many are completed, of how many.
parent_subject: Option<String>A child’s parent subject.
history: Vec<TaskTransition>The row’s own transitions, in time order - the newest
HISTORY_CAP of them, which is what the detail drawer draws when
it opens. The tail beyond the cap is stated by history_total rather
than carried: the walk below already groups the transitions for the
worked time, and carrying the whole trail costs every board_rows
caller - every board read and every tasks__list - the record’s full
weight.
default is backward compatibility with older records, and nothing
more: no server-side pin decodes a BoardRow, so nothing in the tree
depends on it - a capture written before the field can still be read
wherever one is.
history_total: usizeHow many transitions the row has in all - never fewer than
history.len(). The drawer words its showing the last N of M from
it, so a capped tail is stated rather than silent.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for BoardRow
impl<'de> Deserialize<'de> for BoardRow
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for BoardRow
impl StructuralPartialEq for BoardRow
Auto Trait Implementations§
impl Freeze for BoardRow
impl RefUnwindSafe for BoardRow
impl Send for BoardRow
impl Sync for BoardRow
impl Unpin for BoardRow
impl UnsafeUnpin for BoardRow
impl UnwindSafe for BoardRow
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more