use super::partition::StatusClass;
use crate::backlog_order::OverrideReason;
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) enum ReasonKind {
Eligibility {
status: Option<String>,
class: StatusClass,
},
BlockedBy { items: Vec<String> },
Blocking { items: Vec<String> },
Consequence { inbound: u32 },
EvictedEdge {
from: String,
to: String,
reason: OverrideReason,
},
CycleDegraded { nodes: Vec<String> },
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Actionability {
Actionable,
Blocked,
}
impl Actionability {
pub(crate) fn badge(self) -> &'static str {
match self {
Actionability::Actionable => "",
Actionability::Blocked => "BLOCKED",
}
}
pub(crate) fn token(self) -> &'static str {
match self {
Actionability::Actionable => "actionable",
Actionability::Blocked => "blocked",
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct SurveyRow {
pub(crate) id: String,
pub(crate) title: String,
pub(crate) kind: String,
pub(crate) status: String,
pub(crate) act: Actionability,
pub(crate) consequence: u32,
pub(crate) blockers: Vec<String>,
pub(crate) reasons: Vec<ReasonKind>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct NextRow {
pub(crate) id: String,
pub(crate) title: String,
pub(crate) kind: String,
pub(crate) status: String,
pub(crate) act: Actionability,
pub(crate) reasons: Vec<ReasonKind>,
pub(crate) blockers: Vec<String>,
pub(crate) blocking: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct BlockersView {
pub(crate) id: String,
pub(crate) transitive: bool,
pub(crate) blocked_by: Vec<String>,
pub(crate) blocking: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct ActionabilityBlock {
pub(crate) eligible: bool,
pub(crate) actionable: bool,
pub(crate) blockers: Vec<String>,
pub(crate) blocking: Vec<String>,
pub(crate) consequence: u32,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct Explanation {
pub(crate) id: String,
pub(crate) eligibility: ReasonKind,
pub(crate) blocker_chain: Vec<ReasonKind>,
pub(crate) evictions: Vec<ReasonKind>,
pub(crate) consequence: ReasonKind,
}