First pass at web interface is working

This commit is contained in:
Kinesin Data Technologies Incorporated
2022-10-07 10:49:30 -03:00
parent 4d2a71d028
commit 6b49038db6
6 changed files with 145 additions and 14 deletions
+20 -4
View File
@@ -24,8 +24,8 @@ pub enum ActionState {
#[derive(Debug, Clone, Copy, Serialize)]
pub struct Action {
task: usize,
interval: Interval,
state: ActionState,
pub interval: Interval,
pub state: ActionState,
// kill: Option<oneshot::Receiver<()>>,
}
@@ -273,7 +273,8 @@ impl Runner {
let res = rx.await.unwrap();
res
};
let target = current.clone();
// let target = current.clone();
let target = ResourceInterval::new();
let end_state = tasks.coverage();
let mut runner = Runner {
@@ -306,6 +307,15 @@ impl Runner {
.iter()
.enumerate()
.fold(Vec::new(), |mut acc, (idx, task)| {
let get_state = |intv: Interval| {
if task.provides.iter().all(|res| {
self.current.contains_key(res) && self.current[res].has_subset(intv)
}) {
ActionState::Completed
} else {
ActionState::Queued
}
};
let res: Vec<Action> = task
.generate_intervals(&new_required)
.unwrap()
@@ -314,7 +324,7 @@ impl Runner {
|interval| Action {
task: idx,
interval,
state: ActionState::Queued,
state: get_state(interval),
}
})
.collect();
@@ -393,6 +403,12 @@ impl Runner {
.cloned()
.collect();
info!(
"Filtered {} actions down to {}",
self.actions.len(),
actions.len()
);
for action in actions {
let task = &self.tasks[action.task];
for resource in &task.provides {