From 7e994b220f3a2b430864025ccc2849aa903056d6 Mon Sep 17 00:00:00 2001
From: Ione 15 <ione15@ione15.com>
Date: Tue, 26 Mar 2024 00:07:22 +0100
Subject: [PATCH] Inital Commit.

---
 commands.sql       |   3 ++
 create_db.sh       |   2 ++
 create_db.sql      |  10 +++++++
 db_to_csv.sh       |   2 ++
 dump.txt           |   3 ++
 fresh_db.sh        |  30 ++++++++++++++++++++
 main.py            |  68 +++++++++++++++++++++++++++++++++++++++++++++
 sample.py          |  16 +++++++++++
 todo.db            | Bin 0 -> 28672 bytes
 txt_to_cmd.sh      |  25 +++++++++++++++++
 write_cmd_to_db.sh |   3 ++
 11 files changed, 162 insertions(+)
 create mode 100644 commands.sql
 create mode 100755 create_db.sh
 create mode 100644 create_db.sql
 create mode 100755 db_to_csv.sh
 create mode 100644 dump.txt
 create mode 100755 fresh_db.sh
 create mode 100644 main.py
 create mode 100644 sample.py
 create mode 100644 todo.db
 create mode 100755 txt_to_cmd.sh
 create mode 100755 write_cmd_to_db.sh

diff --git a/commands.sql b/commands.sql
new file mode 100644
index 0000000..5200618
--- /dev/null
+++ b/commands.sql
@@ -0,0 +1,3 @@
+INSERT INTO "main"."todo"("ID","TODO","CREATION_DATE","DUE_DATE","PRIO","IMP") VALUES (NULL,'example task 1','1711408035','1711408095',100,0);
+INSERT INTO "main"."todo"("ID","TODO","CREATION_DATE","DUE_DATE","PRIO","IMP") VALUES (NULL,'example task 2','1711408035','1711408095',100,0);
+INSERT INTO "main"."todo"("ID","TODO","CREATION_DATE","DUE_DATE","PRIO","IMP") VALUES (NULL,'example task 3','1711408035','1711408095',100,0);
diff --git a/create_db.sh b/create_db.sh
new file mode 100755
index 0000000..4e20d6a
--- /dev/null
+++ b/create_db.sh
@@ -0,0 +1,2 @@
+sqlite3 todo.db ".read create_db.sql"
+echo created database
diff --git a/create_db.sql b/create_db.sql
new file mode 100644
index 0000000..588a557
--- /dev/null
+++ b/create_db.sql
@@ -0,0 +1,10 @@
+CREATE TABLE "todo" (
+    "ID"    INTEGER UNIQUE,
+    "TODO"    TEXT NOT NULL,
+    "CREATION_DATE"    INTEGER NOT NULL,
+    "DUE_DATE"    INTEGER NOT NULL,
+    "PRIO"    INTEGER NOT NULL,
+"IMP" INTEGER NOT NULL,
+
+    PRIMARY KEY("ID" AUTOINCREMENT)
+);
diff --git a/db_to_csv.sh b/db_to_csv.sh
new file mode 100755
index 0000000..cf9fdd5
--- /dev/null
+++ b/db_to_csv.sh
@@ -0,0 +1,2 @@
+rm -v input.csv
+sqlite3 todo.db 'SELECT * FROM todo;' -csv> db.csv
diff --git a/dump.txt b/dump.txt
new file mode 100644
index 0000000..4e41967
--- /dev/null
+++ b/dump.txt
@@ -0,0 +1,3 @@
+example task 1
+example task 2
+example task 3
diff --git a/fresh_db.sh b/fresh_db.sh
new file mode 100755
index 0000000..9421208
--- /dev/null
+++ b/fresh_db.sh
@@ -0,0 +1,30 @@
+sqlite3 todo.db "DROP TABLE todo;"
+sqlite3 todo.db ".read create_db.sql"
+echo created database
+#!/bin/bash
+rm commands.sql -v
+# File to read
+file="dump.txt"
+
+# Counter for line number
+line_number=1
+
+# Read each line of the file
+while IFS= read -r line; do
+    # Store the line in a variable
+    variable_name="line_$line_number"
+    declare "$variable_name"="$line"
+
+    # Increment the line number counter
+    ((line_number++))
+done < "$file"
+
+# Print the variables to verify
+for ((i=1; i<line_number; i++)); do
+    var="line_$i"
+    date=$(date +%s)
+    echo "INSERT INTO \"main\".\"todo\"(\"ID\",\"TODO\",\"CREATION_DATE\",\"DUE_DATE\",\"PRIO\",\"IMP\") VALUES (NULL,'${!var}','$date','$(($date+60))',100,0);" >> commands.sql
+done
+echo converted $file to sql statements
+sqlite3 todo.db ".read commands.sql"
+echo inserted sql statements to database
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..43677ca
--- /dev/null
+++ b/main.py
@@ -0,0 +1,68 @@
+import sqlite3
+from datetime import datetime
+import time
+import tkinter as tk
+
+con = sqlite3.connect("todo.db")
+cur = con.cursor()
+
+
+def add_item():
+    item = entry.get()
+    if item:
+        listbox.insert(tk.END, item)
+        entry.delete(0, tk.END)  # deletes input
+
+
+def remove_item():
+    selected_index = listbox.curselection()
+    if selected_index:
+        listbox.delete(selected_index)
+
+
+def update_list():
+    cur_time = (datetime.now() - datetime(1970, 1, 1)).total_seconds() + time.timezone
+
+    total_time = []
+    remaining_time = []
+    importance = []
+
+    res = cur.execute("SELECT * FROM todo").fetchall()
+    for i, tmp1 in enumerate(res):
+        total_time.append(res[i][3] - res[i][2])
+        remaining_time.append(res[i][3] - cur_time)
+        importance.append(total_time[i] / remaining_time[i] * res[i][4])
+        if int(importance[i]) == 0:
+            importance[i] = 1
+        print("UPDATE todo SET IMP = %s WHERE ID = %s" % (int(importance[i]), i + 1))
+        cur.execute("UPDATE todo SET IMP = %s WHERE ID = %s" % (int(importance[i]), i + 1))
+        print(i)
+        listbox.insert(tk.END, res[i][0])
+    con.commit()
+
+
+# Create the main window
+root = tk.Tk()
+root.title("Ion-Todo-Planner")
+
+# Create a listbox to display the items
+listbox = tk.Listbox(root, width=100)
+listbox.pack(padx=5, pady=5)
+
+
+# Create an entry for adding items
+entry = tk.Entry(root, width=50)
+entry.pack(padx=10, pady=5)
+
+# Create buttons to add and remove items
+add_button = tk.Button(root, text="Add", command=add_item)
+add_button.pack(side=tk.LEFT, padx=5, pady=5)
+
+remove_button = tk.Button(root, text="Remove", command=remove_item)
+remove_button.pack(side=tk.LEFT, padx=5, pady=5)
+
+update_button = tk.Button(root, text="Update", command=update_list)
+update_button.pack(padx=5, pady=5)
+
+# Run the Tkinter event loop
+root.mainloop()
diff --git a/sample.py b/sample.py
new file mode 100644
index 0000000..68aa93d
--- /dev/null
+++ b/sample.py
@@ -0,0 +1,16 @@
+# This is a sample Python script.
+
+# Press Shift+F10 to execute it or replace it with your code.
+# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
+
+
+def print_hi(name):
+    # Use a breakpoint in the code line below to debug your script.
+    print(f'Hi, {name}')  # Press Ctrl+8 to toggle the breakpoint.
+
+
+# Press the green button in the gutter to run the script.
+if __name__ == '__main__':
+    print_hi('PyCharm')
+
+# See PyCharm help at https://www.jetbrains.com/help/pycharm/
diff --git a/todo.db b/todo.db
new file mode 100644
index 0000000000000000000000000000000000000000..5913516e6617b9e336c4588d64da4ca5caf7cd15
GIT binary patch
literal 28672
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

literal 0
HcmV?d00001

diff --git a/txt_to_cmd.sh b/txt_to_cmd.sh
new file mode 100755
index 0000000..2714da2
--- /dev/null
+++ b/txt_to_cmd.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+rm commands.sql -v
+# File to read
+file="dump.txt"
+
+# Counter for line number
+line_number=1
+
+# Read each line of the file
+while IFS= read -r line; do
+    # Store the line in a variable
+    variable_name="line_$line_number"
+    declare "$variable_name"="$line"
+
+    # Increment the line number counter
+    ((line_number++))
+done < "$file"
+
+# Print the variables to verify
+for ((i=1; i<line_number; i++)); do
+    var="line_$i"
+    date=$(date +%s)
+    echo "INSERT INTO \"main\".\"todo\"(\"ID\",\"TODO\",\"CREATION_DATE\",\"DUE_DATE\",\"PRIO\",\"IMP\") VALUES (NULL,'${!var}','$date','$(($date+60))',100,0);" >> commands.sql
+done
+echo converted $file to sql statements
diff --git a/write_cmd_to_db.sh b/write_cmd_to_db.sh
new file mode 100755
index 0000000..50a356f
--- /dev/null
+++ b/write_cmd_to_db.sh
@@ -0,0 +1,3 @@
+sqlite3 todo.db ".read commands.sql"
+echo inserted sql statements to database
+rm commands.sql -v