Décompte du temps de parole

This commit is contained in:
2020-12-17 18:59:29 +01:00
parent 42a5629c42
commit 6bea1ee4a1
7 changed files with 86 additions and 75 deletions

View File

@@ -1,9 +1,9 @@
mod utils;
use wasm_bindgen::prelude::*;
use web_sys;
use wasm_bindgen::JsCast;
use js_sys::Date;
use rand::prelude::*;
use wasm_bindgen::prelude::*;
use wasm_bindgen::JsCast;
// When the `wee_alloc` feature is enabled, use `wee_alloc` as the global
// allocator.
@@ -12,45 +12,80 @@ use rand::prelude::*;
static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
#[wasm_bindgen]
extern {
extern "C" {
fn alert(s: &str);
}
#[wasm_bindgen]
pub fn next() {
let window = web_sys::window().expect("no global `window` exists");
let document = window.document().expect("should have a document on window");
pub fn intervalle_orateurice() {
let document = le_document();
let now: f64 = Date::new_0().get_time();
let prochain = document.get_element_by_id("orateurice").expect("blu");
let compte = document.get_element_by_id("compte").expect("blaou");
match js_sys::Reflect::get(&prochain, &JsValue::from("debut")) {
Err(_) => return,
Ok(date_debut) => {
let date_debut = date_debut.as_f64().expect("tut tut");
let diff = ((now - date_debut) / 1000.0) as u64;
let sec = diff % 60;
let min = diff / 60;
compte.set_inner_html(&format!("{}:{:02}", min, sec));
}
}
}
let prochain = document.get_element_by_id("prochain").expect("blu");
let queue_prio = document.get_elements_by_class_name("courante").item(0).expect("bla");
let queue_non_prio = document.get_elements_by_class_name("attente").item(0).expect("bla");
fn le_document() -> web_sys::Document {
let window = web_sys::window().expect("no global `window` exists");
window.document().expect("should have a document on window")
}
#[wasm_bindgen]
pub fn next() {
let document = le_document();
let prochain = document.get_element_by_id("orateurice").expect("blu");
let queue_prio = document
.get_elements_by_class_name("courante")
.item(0)
.expect("bla");
let queue_non_prio = document
.get_elements_by_class_name("attente")
.item(0)
.expect("bla");
let lis_prio = queue_prio.get_elements_by_tag_name("li");
let queue = if lis_prio.length() == 0 {
&queue_non_prio
&queue_non_prio
} else {
&queue_prio
&queue_prio
};
let lis = queue.get_elements_by_tag_name("li");
queue_prio.set_class_name("queue attente");
queue_non_prio.set_class_name("queue courante");
match lis.item(0) {
Some(li) => {
let nom_prochain = li.text_content().expect("");
prochain.set_text_content(Some(nom_prochain.as_str()));
li.parent_element().expect("").remove_child(&li);
prochain.set_class_name("");
},
None => {
prochain.set_text_content(Some("Personne"));
prochain.set_class_name("personne");
}
}
Some(li) => {
let nom_prochain = li.text_content().expect("");
let temps_debut = Date::new_0().get_time();
prochain.set_text_content(Some(nom_prochain.as_str()));
js_sys::Reflect::set(
&prochain,
&JsValue::from("debut"),
&JsValue::from(temps_debut),
);
li.parent_element().expect("").remove_child(&li);
prochain.set_class_name("");
}
None => {
prochain.set_text_content(Some("Personne"));
prochain.set_class_name("personne");
}
};
intervalle_orateurice();
}
#[wasm_bindgen]
pub fn ajoute_kp(ev: web_sys::KeyboardEvent, id: &str) {
if ev.key_code() == 13 {
ajoute(id)
ajoute(id)
}
}
@@ -61,23 +96,29 @@ pub fn ajoute(id: &str) {
let section = document.get_element_by_id(id).expect("bla");
let inputs = section.get_elements_by_tag_name("input");
let input = inputs.item(0).unwrap().dyn_into::<web_sys::HtmlInputElement>().unwrap();
let input = inputs
.item(0)
.unwrap()
.dyn_into::<web_sys::HtmlInputElement>()
.unwrap();
let content = input.value();
let ols = section.get_elements_by_tag_name("ol");
let ol = ols.item(0).unwrap().dyn_into::<web_sys::HtmlOListElement>().unwrap();
let ol = ols
.item(0)
.unwrap()
.dyn_into::<web_sys::HtmlOListElement>()
.unwrap();
let lis = ol.get_elements_by_tag_name("li");
let n = lis.length();
let mut rng = thread_rng();
let k = rng.gen_range(0, n+1);
let k = rng.gen_range(0, n + 1);
let new_li = document.create_element("li").unwrap();
new_li.set_inner_html(&content);
if k == n {
ol.append_child(&new_li);
ol.append_child(&new_li);
} else {
let li = lis.item(k).unwrap();
li.after_with_node_1(&new_li);
let li = lis.item(k).unwrap();
li.after_with_node_1(&new_li);
}
}