doc-survival-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of doc-survival-kit might be problematic. Click here for more details.

package/taches.js ADDED
@@ -0,0 +1,96 @@
1
+ // ── Données des tâches ───────────────────────────────────────────────
2
+ const KEY = "mes_taches";
3
+ let filter = "all";
4
+
5
+ function load() {
6
+ try {
7
+ return JSON.parse(localStorage.getItem(KEY)) || [];
8
+ } catch {
9
+ return [];
10
+ }
11
+ }
12
+
13
+ function save(tasks) {
14
+ localStorage.setItem(KEY, JSON.stringify(tasks));
15
+ }
16
+
17
+ // ── Actions ──────────────────────────────────────────────────────────
18
+ function addTask() {
19
+ const input = document.getElementById("taskInput");
20
+ const text = input.value.trim();
21
+ if (!text) return;
22
+ const priority = document.getElementById("taskPriority").value;
23
+ const tasks = load();
24
+ tasks.unshift({ id: Date.now(), text, priority, done: false });
25
+ save(tasks);
26
+ input.value = "";
27
+ render();
28
+ }
29
+
30
+ function toggle(id) {
31
+ const tasks = load();
32
+ const t = tasks.find((t) => t.id === id);
33
+ if (t) t.done = !t.done;
34
+ save(tasks);
35
+ render();
36
+ }
37
+
38
+ function remove(id) {
39
+ save(load().filter((t) => t.id !== id));
40
+ render();
41
+ }
42
+
43
+ function setFilter(f, btn) {
44
+ filter = f;
45
+ document
46
+ .querySelectorAll(".filters button")
47
+ .forEach((b) => b.classList.remove("active"));
48
+ btn.classList.add("active");
49
+ render();
50
+ }
51
+
52
+ // ── Rendu ────────────────────────────────────────────────────────────
53
+ function render() {
54
+ const tasks = load();
55
+ const list = document.getElementById("taskList");
56
+
57
+ const filtered = tasks.filter((t) => {
58
+ if (filter === "todo") return !t.done;
59
+ if (filter === "done") return t.done;
60
+ if (filter === "urgent" || filter === "normal" || filter === "later")
61
+ return t.priority === filter;
62
+ return true;
63
+ });
64
+
65
+ if (filtered.length === 0) {
66
+ list.innerHTML = '<p class="empty-msg">' + window.t.taches_empty + '</p>';
67
+ return;
68
+ }
69
+
70
+ const labels = {
71
+ urgent: window.t.taches_priority_urgent,
72
+ normal: window.t.taches_priority_normal,
73
+ later: window.t.taches_priority_later,
74
+ };
75
+
76
+ list.innerHTML = filtered
77
+ .map(
78
+ (t) => `
79
+ <div class="task task-${t.priority} ${t.done ? "done" : ""}">
80
+ <div class="check" onclick="toggle(${t.id})"></div>
81
+ <span class="task-text">${esc(t.text)}</span>
82
+ <span class="task-tag">${labels[t.priority]}</span>
83
+ <button class="task-del" onclick="remove(${t.id})" title="${window.t.taches_delete_title}">✕</button>
84
+ </div>
85
+ `,
86
+ )
87
+ .join("");
88
+ }
89
+
90
+ function esc(s) {
91
+ const d = document.createElement("div");
92
+ d.textContent = s;
93
+ return d.innerHTML;
94
+ }
95
+
96
+ render();