Skip to main content

View

Struct View 

Source
pub struct View {}
Expand description

A utility struct for rendering application data to the console.

Serves as a namespace for various table rendering functions. All methods are static, making it easy to call formatting functions without needing to instantiate the struct.

Implementations§

Source§

impl View

Source

pub fn tasks(tasks: &[Task]) -> Result<()>

Displays a formatted table of tasks with comprehensive metadata.

Renders a detailed table showing task information including identification numbers, names, completion status, comments, and associated tags.

§Arguments
  • tasks - A slice of Task structs to display in the table
§Returns

Returns Ok(()) on successful table rendering, or an error if the table cannot be displayed due to terminal or formatting issues.

Source

pub fn report( workday: &Workday, intervals: &[WorkInterval], filtered_duration: &TimeDelta, productivity: &f64, tasks: &[Task], ) -> Result<()>

Displays a formatted daily work report using pre-calculated intervals.

This method displays the core report data in a structured table format, including work intervals, total time, and productivity metrics calculated using the centralized Productivity module.

§Display Components
  1. Work Intervals: Detailed breakdown of focused work periods
  2. Total Duration: Sum of all work intervals (may be filtered)
  3. Productivity Percentage: Calculated using comprehensive Productivity logic
  4. Associated Tasks: Tasks completed during the workday for context

The productivity value displayed here is calculated using the same centralized logic used throughout the application for consistency.

§Arguments
  • workday - The workday record containing start/end times
  • intervals - Pre-calculated and optionally filtered work intervals for display
  • filtered_duration - Sum of displayed interval durations
  • productivity - Productivity percentage from centralized Productivity calculation
  • tasks - Tasks completed during the workday for context
Source

pub fn sum( (daily_durations, total_duration, average_duration): &(HashMap<NaiveDate, (String, String)>, String, String), ) -> Result<()>

Displays a monthly summary of working hours with daily breakdowns.

This method renders a comprehensive monthly view that shows daily work patterns, totals, and averages. It provides both detailed daily data and aggregate statistics to help users understand their work patterns over the entire month.

§Summary Structure

The monthly summary includes:

  • Daily Breakdown: Each day with date, hours worked, and workday status
  • Total Hours: Cumulative time worked across all days in the month
  • Average Hours: Mean daily working time for better pattern analysis
  • Work Days: Count of days with recorded work activity
§Data Interpretation
  • Workday Hours: Actual time recorded for productive work days
  • Rest Day Hours: Default hours applied to weekends and holidays
  • Missing Days: Days without any recorded activity (shown as 0:00)
§Arguments
  • summary_data - A tuple containing:
    • HashMap<NaiveDate, (String, String)>: Daily durations and productivity data
    • String: Total duration for the entire month
    • String: Average daily duration across all days
§Returns

Returns Ok(()) on successful summary display, or an error if table formatting or rendering fails.

§Examples
use kasl::libs::view::View;
use std::collections::HashMap;

let daily_map = HashMap::new();
let total_hours = String::new();
let average_hours = String::new();

let summary_data = (daily_map, total_hours, average_hours);
View::sum(&summary_data)?;
Source

pub fn pauses(pauses: &[Pause], total_pause_time: Duration) -> Result<()>

Displays a table of pauses for a given day with total pause time.

§Arguments
  • pauses - A slice of Pause records to display.
  • total_pause_time - The total duration of all pauses.
§Returns

A Result indicating success.

Source

pub fn templates(templates: &[TaskTemplate]) -> Result<()>

Displays a formatted table of task templates for reusable task creation.

This method renders a comprehensive view of all available task templates, showing their configuration and usage information. Templates provide a convenient way to create commonly used tasks with pre-filled parameters.

§Template Information

The table displays essential template metadata:

  • Template Name: Unique identifier for template selection
  • Task Name: Default task title that will be used
  • Comment: Pre-configured task description or notes
  • Completeness: Default completion percentage for new tasks
§Usage Context

Templates are particularly useful for:

  • Recurring tasks with standard parameters
  • Team workflows with consistent task structures
  • Quick task creation with minimal input required
  • Standardized task naming and completion patterns
§Arguments
  • templates - A slice of TaskTemplate structs to display
§Returns

Returns Ok(()) on successful table rendering, or an error if display operations fail.

§Examples
use kasl::libs::view::View;
use kasl::db::templates::TaskTemplate;

let templates: Vec<TaskTemplate> = vec![/* template instances */];
View::templates(&templates)?;
Source

pub fn tags(tags: &[Tag]) -> Result<()>

Displays a formatted table of tags for task categorization and organization.

This method provides a comprehensive view of all available tags that can be applied to tasks for organization and filtering purposes. The table shows both the functional and visual aspects of each tag.

§Tag Information

The table displays key tag metadata:

  • ID: Unique database identifier for programmatic reference
  • NAME: Human-readable tag name used for categorization
  • COLOR: Optional color coding for visual organization (if supported)
§Organizational Benefits

Tags provide several organizational advantages:

  • Categorization: Group related tasks by project, priority, or type
  • Filtering: Quickly find tasks based on specific criteria
  • Visual Organization: Color coding for rapid visual identification
  • Reporting: Generate reports filtered by specific tag categories
§Color Display

Colors are displayed as text values (hex codes, names, etc.) since terminal color support varies. A dash (-) indicates no color assigned.

§Arguments
  • tags - A slice of Tag structs to display in the table
§Returns

Returns Ok(()) on successful table rendering, or an error if display operations fail.

§Examples
use kasl::libs::view::View;
use kasl::db::tags::Tag;

let tags: Vec<Tag> = vec![/* tag instances */];
View::tags(&tags)?;
Source

pub fn jira_inbox(items: &[JiraInboxItem]) -> Result<()>

Displays active Jira inbox items (pinned, score, then priority).

SUMMARY is truncated to fit the terminal width (same approach as View::tasks).

Auto Trait Implementations§

§

impl Freeze for View

§

impl RefUnwindSafe for View

§

impl Send for View

§

impl Sync for View

§

impl Unpin for View

§

impl UnsafeUnpin for View

§

impl UnwindSafe for View

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more