diff --git a/projects/tentacles/src/gcode.py b/projects/tentacles/src/gcode.py index f1f5d9c..11636c7 100644 --- a/projects/tentacles/src/gcode.py +++ b/projects/tentacles/src/gcode.py @@ -38,6 +38,7 @@ class GcodeAnalysis: max_bed: int max_end: int filament: str + color: str nozzle: int @@ -95,6 +96,11 @@ def analyze_gcode_str(text: str) -> Optional[GcodeAnalysis]: else: return None + if "filament_colour" in opts: + kwargs["color"] = opts["filament_colour"] + else: + return None + return GcodeAnalysis(**kwargs) diff --git a/projects/tentacles/src/tentacles/blueprints/admin_ui.py b/projects/tentacles/src/tentacles/blueprints/admin_ui.py index a5e299b..82cf66b 100644 --- a/projects/tentacles/src/tentacles/blueprints/admin_ui.py +++ b/projects/tentacles/src/tentacles/blueprints/admin_ui.py @@ -122,6 +122,7 @@ def handle_edit_printers(): args["id"] = int(args["id"]) args["enabled"] = int(args["enabled"]) args["filament_id"] = int(args["filament_id"]) + args["color_id"] = int(args["color_id"]) args["chassis_id"] = int(args["chassis_id"]) args["nozzle_diameter"] = float(args["nozzle_diameter"]) ctx.db.edit_printer(**args) diff --git a/projects/tentacles/src/tentacles/sql/color.sql b/projects/tentacles/src/tentacles/sql/color.sql new file mode 100644 index 0000000..b373dd3 --- /dev/null +++ b/projects/tentacles/src/tentacles/sql/color.sql @@ -0,0 +1,45 @@ +-- name: migration-0001-create-filament-color# +CREATE TABLE IF NOT EXISTS filament_color ( + id INTEGER PRIMARY KEY AUTOINCREMENT + , code TEXT + , name TEXT DEFAULT NULL + , UNIQUE(code) +); + +INSERT OR IGNORE INTO filament_color (id, code, name) VALUES (1, '#DDDDDD', 'Any'); +INSERT OR IGNORE INTO filament_color (code, name) VALUES ('#000000', 'Black'); +INSERT OR IGNORE INTO filament_color (code, name) VALUES ('#FFFFFF', 'White'); + +-- name: migration-0002-create-orange-color# +INSERT OR IGNORE INTO filament_color (code, name) VALUES ('#FF6925', 'Orange'); + +-- name: create-color^ +INSERT OR IGNORE INTO filament_color ( + code +) +VALUES ( + :code +) +RETURNING + id +; + +-- name: fetch-color^ +SELECT * +FROM filament_color +WHERE + code = :code +; + +-- name: set-color-name! +UPDATE filament_color +SET + name = :name +WHERE + id = :cid +; + +-- name: list-color +SELECT * +FROM filament_color +; diff --git a/projects/tentacles/src/tentacles/sql/files.sql b/projects/tentacles/src/tentacles/sql/files.sql index ec10187..50d226c 100644 --- a/projects/tentacles/src/tentacles/sql/files.sql +++ b/projects/tentacles/src/tentacles/sql/files.sql @@ -8,7 +8,7 @@ CREATE TABLE IF NOT EXISTS files ( , FOREIGN KEY(user_id) REFERENCES user(id) ); --- name: migration-0004-create-file-analysis# +-- name: migration-0001-create-file-analysis# CREATE TABLE IF NOT EXISTS file_analysis ( id INTEGER PRIMARY KEY AUTOINCREMENT , max_x INTEGER @@ -21,6 +21,9 @@ CREATE TABLE IF NOT EXISTS file_analysis ( , file_id INTEGER REFERENCES file(id) ); +-- name: migration-0002-file-analysis-color# +ALTER TABLE file_analysis ADD color_id INTEGER REFERENCES filament_color(id) DEFAULT 1; + -- name: create-file^ INSERT INTO files ( user_id @@ -81,6 +84,7 @@ INSERT INTO file_analysis ( , nozzle_diameter , filament_id , file_id + , color_id ) VALUES ( :max_x @@ -91,6 +95,7 @@ VALUES ( , :nozzle , :filament_id , :file_id + , :color_id ) RETURNING id diff --git a/projects/tentacles/src/tentacles/sql/jobs.sql b/projects/tentacles/src/tentacles/sql/jobs.sql index 0705964..222d788 100644 --- a/projects/tentacles/src/tentacles/sql/jobs.sql +++ b/projects/tentacles/src/tentacles/sql/jobs.sql @@ -81,7 +81,9 @@ SELECT , fa.max_end , fa.nozzle_diameter , fa.filament_id + , fa.color_id , (SELECT name FROM filament WHERE id = fa.filament_id) AS filament_name + , (SELECT name AS name FROM filament_color WHERE id = fa.color_id) AS color_name , (SELECT name FROM job_statuses WHERE id = j.status_id) AS status , j.started_at , j.time_left diff --git a/projects/tentacles/src/tentacles/sql/printers.sql b/projects/tentacles/src/tentacles/sql/printers.sql index 54dac78..a7233d6 100644 --- a/projects/tentacles/src/tentacles/sql/printers.sql +++ b/projects/tentacles/src/tentacles/sql/printers.sql @@ -81,6 +81,9 @@ ALTER TABLE printers ADD nozzle_diameter FLOAT DEFAULT 0.4; -- name: migration-0006-create-printer-level-date# ALTER TABLE printers ADD last_level_date TEXT DEFAULT NULL; +-- name: migration-0006-create-printer-filament-color# +ALTER TABLE printers ADD color_id INTEGER REFERENCES filament_color(id) DEFAULT 1; + -- name: try-create-printer^ INSERT INTO printers ( name @@ -103,6 +106,7 @@ SELECT , p.last_poll_date , p.last_level_date , p.filament_id + , p.color_id , p.chassis_id , p.enabled , s.name as status @@ -124,6 +128,8 @@ SELECT , s.name as status , p.enabled , f.name as filament_name + , fc.name as filament_color + , fc.code as filament_color_code , c.name as machine_name , c.limit_x , c.limit_y @@ -134,6 +140,7 @@ SELECT FROM printers p INNER JOIN printer_statuses s ON p.status_id = s.id INNER JOIN filament f on p.filament_id = f.id +INNER JOIN filament_color fc on p.color_id = fc.id INNER JOIN printer_chassis c on p.chassis_id = c.id ; @@ -147,6 +154,7 @@ SELECT , c.limit_hotend , p.nozzle_diameter , p.filament_id + , p.color_id FROM printers p LEFT JOIN (SELECT id, printer_id FROM jobs WHERE finished_at IS NULL) j ON p.id = j.printer_id @@ -187,6 +195,7 @@ SET , stream_url = :stream_url , api_key = :api_key , filament_id = :filament_id + , color_id = :color_id , chassis_id = :chassis_id , enabled = :enabled , nozzle_diameter = :nozzle_diameter diff --git a/projects/tentacles/src/tentacles/templates/edit_printer.html.j2 b/projects/tentacles/src/tentacles/templates/edit_printer.html.j2 index b22cb7a..cecad76 100644 --- a/projects/tentacles/src/tentacles/templates/edit_printer.html.j2 +++ b/projects/tentacles/src/tentacles/templates/edit_printer.html.j2 @@ -36,19 +36,27 @@
-
- +
+
-
+
+ + +
+
-
+