Fix: recover filament IDs correctly; edit nozzle size; nozzle as a schedule constraint
This commit is contained in:
parent
efae37ad88
commit
e9c059e69d
8 changed files with 46 additions and 14 deletions
|
@ -123,7 +123,7 @@ def handle_edit_printers():
|
|||
args["enabled"] = int(args["enabled"])
|
||||
args["filament_id"] = int(args["filament_id"])
|
||||
args["chassis_id"] = int(args["chassis_id"])
|
||||
print(args)
|
||||
args["nozzle_diameter"] = float(args["nozzle_diameter"])
|
||||
ctx.db.edit_printer(**args)
|
||||
return redirect("/admin")
|
||||
|
||||
|
|
|
@ -213,3 +213,7 @@ class Db(Queries):
|
|||
|
||||
def finish_job(self, *, jid: int, state: str, message: Optional[str] = None):
|
||||
super().finish_job(jid=jid, state=state, message=message)
|
||||
|
||||
def create_filament(self, *, name: str):
|
||||
super().create_filament(name=name)
|
||||
return super().fetch_filament(name=name)
|
||||
|
|
|
@ -78,6 +78,7 @@ SELECT
|
|||
, fa.max_end
|
||||
, fa.nozzle_diameter
|
||||
, fa.filament_id
|
||||
, (SELECT name FROM filament WHERE id = fa.filament_id) AS filament_name
|
||||
FROM jobs j
|
||||
INNER JOIN files f
|
||||
ON j.file_id = f.id
|
||||
|
|
|
@ -102,6 +102,7 @@ SELECT
|
|||
, p.chassis_id
|
||||
, p.enabled
|
||||
, s.name as status
|
||||
, p.nozzle_diameter
|
||||
FROM printers p
|
||||
INNER JOIN printer_statuses s ON p.status_id = s.id
|
||||
WHERE p.id = :pid
|
||||
|
@ -140,6 +141,7 @@ SELECT
|
|||
, c.limit_bed
|
||||
, c.limit_hotend
|
||||
, p.nozzle_diameter
|
||||
, p.filament_id
|
||||
FROM printers p
|
||||
LEFT JOIN (SELECT id, printer_id FROM jobs WHERE finished_at IS NULL) j
|
||||
ON p.id = j.printer_id
|
||||
|
@ -174,6 +176,7 @@ SET
|
|||
, filament_id = :filament_id
|
||||
, chassis_id = :chassis_id
|
||||
, enabled = :enabled
|
||||
, nozzle_diameter = :nozzle_diameter
|
||||
WHERE
|
||||
id = :id
|
||||
;
|
||||
|
@ -202,3 +205,9 @@ VALUES (
|
|||
RETURNING
|
||||
id
|
||||
;
|
||||
|
||||
-- name: fetch-filament^
|
||||
SELECT *
|
||||
FROM filament
|
||||
WHERE name = :name
|
||||
;
|
||||
|
|
|
@ -4,10 +4,18 @@
|
|||
<div class="row">
|
||||
<form method="post">
|
||||
<div class="row">
|
||||
<div class="twelve columns">
|
||||
<div class="six columns">
|
||||
<label for="name">Printer name</label>
|
||||
<input type="text" name="name" value="{{ printer.name }}" />
|
||||
</div>
|
||||
<div class="six columns">
|
||||
<label for="chassis">Chassis</label>
|
||||
<select name="chassis_id">
|
||||
{% for c in ctx.db.list_chassis() %}
|
||||
<option value="{{c.id}}" {% if printer.chassis_id == c.id %}selected{%endif%}>{{c.name}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="twelve columns">
|
||||
|
@ -27,15 +35,7 @@
|
|||
<input type="text" name="api_key" value="{{ printer.api_key }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class"row">
|
||||
<div class="four columns">
|
||||
<label for="chassis">Chassis</label>
|
||||
<select name="chassis_id">
|
||||
{% for c in ctx.db.list_chassis() %}
|
||||
<option value="{{c.id}}" {% if printer.chassis_id == c.id %}selected{%endif%}>{{c.name}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="four columns">
|
||||
<label for="filament">Filament load</label>
|
||||
<select name="filament_id">
|
||||
|
@ -44,6 +44,10 @@
|
|||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="four columns">
|
||||
<label for="nozzle_diameter">Nozzle diameter (mm)</label>
|
||||
<input type="text" name="nozzle_diameter" value="{{ printer.nozzle_diameter}}" />
|
||||
</div>
|
||||
<div class="four columns">
|
||||
<label for="enabled">Printing enabled</label>
|
||||
<select name="enabled">
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% if jobs %}
|
||||
{% for job in jobs %}
|
||||
<div class="job row u-flex">
|
||||
<div class="details six columns u-flex">
|
||||
<div class="details six columns u-flex u-flex-wrap">
|
||||
<div class="job-filename u-flex">
|
||||
<label for="filename">File</label>
|
||||
<span name="filename">{{ctx.db.fetch_file(ctx.uid, job.file_id).filename or "it's a secret"}}</span>
|
||||
|
@ -20,6 +20,15 @@
|
|||
<label for="runtime">Runtime</label>
|
||||
<span name="Runtime">{{ (datetime.now() - datetime.fromisoformat(job.started_at)) }}</span>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="job-constraint u-flex">
|
||||
<label>Material</label>
|
||||
{{ job.filament_name }}
|
||||
</div>
|
||||
<div class="job-constraint u-flex">
|
||||
<label>Limits</label>
|
||||
{{ job.max_x }}mm x{{ job.max_y }}mm x{{ job.max_z }}mm, bed {{ job.max_bed }}c, end {{ job.max_end }}c, nozzle {{ "%.2f"|format(job.nozzle_diameter) }}mm
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="two columns">
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<span><label>Status</label>{{printer.status}}, {% if printer.enabled %}accepting jobs{%else%}not scheduling{%endif%}</span>
|
||||
<span><label>Loaded material</label>{{printer.filament_name}}</span>
|
||||
<span><label>Machine</label>{{printer.machine_name}}</span>
|
||||
<span><label>Nozzle</label>{{ "%.2f"|format(printer.nozzle_diameter) }}mm</span>
|
||||
<span><label>Limits</label>{{printer.limit_x}}mm x{{printer.limit_y}}mm x{{printer.limit_z}}mm, bed {{printer.limit_bed}}c, end {{printer.limit_hotend}}c</span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
|
|
@ -152,7 +152,8 @@ def assign_jobs(app: App, db: Db) -> None:
|
|||
for job in db.list_job_queue(uid=None):
|
||||
for printer in db.list_idle_printers():
|
||||
if (
|
||||
printer.limit_x >= job.max_x
|
||||
job.analysis_id is not None
|
||||
and printer.limit_x >= job.max_x
|
||||
and printer.limit_y >= job.max_y
|
||||
and printer.limit_z >= job.max_z
|
||||
and printer.limit_hotend >= job.max_end
|
||||
|
@ -163,6 +164,8 @@ def assign_jobs(app: App, db: Db) -> None:
|
|||
db.assign_job(jid=job.id, pid=printer.id)
|
||||
log.info(f"Mapped job {job.id} to printer {printer.id}")
|
||||
break
|
||||
else:
|
||||
print("Could not map\n", job, "\n", printer)
|
||||
|
||||
|
||||
def push_jobs(app: App, db: Db) -> None:
|
||||
|
@ -336,6 +339,7 @@ def analyze_files(app: App, db: Db):
|
|||
|
||||
continue
|
||||
|
||||
log.info(f"Analyzed {file}")
|
||||
db.create_analysis(
|
||||
file_id=file.id,
|
||||
max_x=record.max_x,
|
||||
|
@ -344,7 +348,7 @@ def analyze_files(app: App, db: Db):
|
|||
max_end=record.max_end,
|
||||
max_bed=record.max_bed,
|
||||
nozzle=record.nozzle,
|
||||
filament_id=db.create_filament(record.filament),
|
||||
filament_id=db.create_filament(name=record.filament).id,
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue