Verified Commit fca43970 authored by Grégor JOUET's avatar Grégor JOUET 🔧
Browse files

Show print progress

parent 07e1a0de
Loading
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ from myfab.queue import (
    get_queue_by_id,
    delete_printer,
    pull_printers,
    get_printer_for_request,
    get_queue_element_pos
)

@@ -135,7 +136,7 @@ def lookup_requests(author: str = None, status=None, req_id=None):
    req = (
        PrintRequest.select()
        .join(User, on=(PrintRequest.author == User.username))
        .limit(30)
        .limit(20)
    )  # .join(Queue, on=(PrintRequest.queue == Queue.id))
    if len(where_req) > 0:
        req = req.where(*where_req)
@@ -177,6 +178,7 @@ def loop_requests(reqs):
    for req in reqs:
        if get_access_level_to_request(req, current_user) == REQUEST_ACCESS_DENIED:
            continue
        p = get_printer_for_request(req)
        rqs.append(
            {
                "request_id": req.id,
@@ -194,6 +196,7 @@ def loop_requests(reqs):
                "queue": req.queue_element.queue.id if req.queue_element is not None else None,
                "queue_position": get_queue_element_pos(req.queue_element) if req.queue_element is not None else -1,
                "recup": req.recup_id,
                "progress": p.printer_state["job"] if p != None else None
            }
        )
    return rqs
+2 −2
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@ class Message(Model):
    id = AutoField(primary_key=True)
    author = ForeignKeyField(User, null=False)
    text = TextField()
    creation = DateTimeField(default=datetime.datetime.now(), column_name="creation")
    creation = DateTimeField(default=datetime.datetime.now, column_name="creation")
    request = ForeignKeyField(PrintRequest)
    read = BooleanField(default=False)

@@ -101,7 +101,7 @@ class Message(Model):
class Event(Model):  # to form timeline
    request = ForeignKeyField(PrintRequest)
    description = CharField()
    date = DateTimeField(default=datetime.datetime.now())
    date = DateTimeField(default=datetime.datetime.now)
    operartor = ForeignKeyField(User, null=True, default=None)


+7 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ from myfab.model import (
    Event,
    User
)
from typing import List
from multiprocessing import Lock
import time
import requests as r
@@ -106,6 +107,7 @@ def enqueue(req: PrintRequest, queue: Queue):
    elem: QueueElement = QueueElement.create(queue=queue)
    req.queue_element = elem
    req.save()
    add_request_event(req, "Enqueued request", None)
    return elem


@@ -160,6 +162,11 @@ def get_queue_by_id(qid):

# region PRINTER UTILS & class

def get_printer_for_request(req: PrintRequest):
    for p in get_printers():
        if p.current_print != None and p.current_print.id == req.id:
            return p
    return None

def get_printers_from_db():
    printers = []
+20 −4
Original line number Diff line number Diff line
@@ -85,6 +85,16 @@
      <span>Identifiant pour récupération</span>
    </v-tooltip>

    <v-tooltip left>
      <template v-slot:activator="{ on }">
        <v-card-text align="left" v-show="show_print_state()" v-on="on">
          <v-icon color="green">mdi-fingerprint</v-icon>
          &nbsp;{{ print_state() }}
        </v-card-text>
      </template>
      <span>État de l'impression</span>
    </v-tooltip>

    <v-card-subtitle>
      <!-- <div class="my-4 subtitle-1"> -->
      {{ description }}
@@ -122,6 +132,7 @@
<script>
import ImpressionRequestInfos from "./ImpressionRequestProcessComponent";
import { ModelStl } from "vue-3d-model";
import utils from '@/utils/utils.js'
import axios from "axios";
import { status_to_text, status_to_icon_info } from "@/utils/utils";

@@ -186,11 +197,16 @@ export default {
    },
    reject_message() {
      return this.base_infos.reject_message;
    },
    convert_time(d) {
      return utils.secondsToHms(d)
    },
    print_state() {
      if (Math.ceil(this.infos.printer_progress) <= 1) {
        return "??% - ?? h, ?? min, ?? sec"
      }
      return Math.floor(this.base_infos.progress['progress']) + "% " + this.convert_time(this.base_infos.progress["printTimeLeft"])
    }
    /*
    print_prorgess
    
    */
  },
  methods: {
    download_file(url, filename) {