history: add "history_changed" notification
Notify clients when a job has been added or when it has been finished. Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
1367083f99
commit
84bc9aa311
|
@ -22,9 +22,10 @@ class History:
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:status_update", self._status_update)
|
"server:status_update", self._status_update)
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:klippy_disconnect", self._save_job_on_error)
|
"server:klippy_disconnect", self._handle_disconnect)
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:klippy_shutdown", self._save_job_on_error)
|
"server:klippy_shutdown", self._handle_shutdown)
|
||||||
|
self.server.register_notification("history:history_changed")
|
||||||
|
|
||||||
self.server.register_endpoint(
|
self.server.register_endpoint(
|
||||||
"/server/history/job", ['GET', 'DELETE'], self._handle_job_request)
|
"/server/history/job", ['GET', 'DELETE'], self._handle_job_request)
|
||||||
|
@ -118,19 +119,22 @@ class History:
|
||||||
if new_state == "printing" and old_state != "paused":
|
if new_state == "printing" and old_state != "paused":
|
||||||
self.print_stats.update(ps)
|
self.print_stats.update(ps)
|
||||||
self.add_job(PrinterJob(self.print_stats))
|
self.add_job(PrinterJob(self.print_stats))
|
||||||
elif new_state == "complete" and \
|
elif self.current_job is not None:
|
||||||
self.current_job is not None:
|
if new_state == "complete":
|
||||||
self.print_stats.update(ps)
|
self.print_stats.update(ps)
|
||||||
self.finish_job("completed")
|
self.finish_job("completed")
|
||||||
elif new_state == "standby" and \
|
if new_state == "standby":
|
||||||
self.current_job is not None:
|
self.finish_job("cancelled")
|
||||||
self.finish_job("cancelled")
|
elif new_state == "error":
|
||||||
|
self.finish_job("error")
|
||||||
|
|
||||||
self.print_stats.update(ps)
|
self.print_stats.update(ps)
|
||||||
|
|
||||||
def _save_job_on_error(self):
|
def _handle_shutdown(self):
|
||||||
if self.current_job is not None:
|
self.finish_job("klippy_shutdown")
|
||||||
self.save_current_job()
|
|
||||||
|
def _handle_disconnect(self):
|
||||||
|
self.finish_job("klippy_disconnect")
|
||||||
|
|
||||||
def add_job(self, job):
|
def add_job(self, job):
|
||||||
self.current_job_id = str(
|
self.current_job_id = str(
|
||||||
|
@ -140,6 +144,7 @@ class History:
|
||||||
self.current_job = job
|
self.current_job = job
|
||||||
self.grab_job_metadata()
|
self.grab_job_metadata()
|
||||||
self.history_ns[self.current_job_id] = job.get_stats()
|
self.history_ns[self.current_job_id] = job.get_stats()
|
||||||
|
self.send_history_event("added")
|
||||||
|
|
||||||
def delete_job(self, id):
|
def delete_job(self, id):
|
||||||
id = str(id)
|
id = str(id)
|
||||||
|
@ -157,6 +162,7 @@ class History:
|
||||||
# Regrab metadata incase metadata wasn't parsed yet due to file upload
|
# Regrab metadata incase metadata wasn't parsed yet due to file upload
|
||||||
self.grab_job_metadata()
|
self.grab_job_metadata()
|
||||||
self.save_current_job()
|
self.save_current_job()
|
||||||
|
self.send_history_event("finished")
|
||||||
self.current_job = None
|
self.current_job = None
|
||||||
self.current_job_id = None
|
self.current_job_id = None
|
||||||
|
|
||||||
|
@ -176,6 +182,15 @@ class History:
|
||||||
def save_current_job(self):
|
def save_current_job(self):
|
||||||
self.history_ns[self.current_job_id] = self.current_job.get_stats()
|
self.history_ns[self.current_job_id] = self.current_job.get_stats()
|
||||||
|
|
||||||
|
def send_history_event(self, evt_action):
|
||||||
|
job = dict(self.current_job.get_stats())
|
||||||
|
job['job_id'] = self.current_job_id
|
||||||
|
self.server.send_event("history:history_changed",
|
||||||
|
{'action': evt_action, 'job': job})
|
||||||
|
|
||||||
|
def on_exit(self):
|
||||||
|
self.finish_job("server_exit")
|
||||||
|
|
||||||
class PrinterJob:
|
class PrinterJob:
|
||||||
def __init__(self, data={}):
|
def __init__(self, data={}):
|
||||||
self.end_time = None
|
self.end_time = None
|
||||||
|
|
Loading…
Reference in New Issue