diff --git a/admin/base/content/logs/content.html b/admin/base/content/logs/content.html index 5569c5d..418746d 100644 --- a/admin/base/content/logs/content.html +++ b/admin/base/content/logs/content.html @@ -1,14 +1,15 @@ diff --git a/log.py b/log.py index 9ee223d..e8e698b 100644 --- a/log.py +++ b/log.py @@ -3,6 +3,9 @@ import os.path import datetime import html + +from core.messenger.broadcast import Broadcast +from core.registration.record import * from log_event_codes import loge_codes import base @@ -82,16 +85,17 @@ class Log(): # IT IS FREEZE BY EVENT (runJavascript cant execute lot of request in one time! if type.upper() != "EVENT": - dict = {} - dict["type"] = type.upper() - dict["event_code"] = str(event_code) + d = {"type": type.upper(), "event_code": str(event_code)} msg = msg.replace('\\', '\\\\') msg = msg.replace('\'', "") - dict["msg"] = msg + d["msg"] = msg + d["event_state"] = str(event_state) + d["date"] = str(dnow) + r = Record(RecordHeader("message", "logs", ["sight-admin"]), RecordData(d)) + msg_bc = Broadcast() + msg_bc.sendMessage(r) - dict["event_state"] = str(event_state) - dict["date"] = str(dnow) - base.sights.sendMessage("logs", ["sight-admin"], dict) + #base.sights.sendMessage("logs", ["sight-admin"], dict) """ LOG FILE WRITING """ diff --git a/place/templates/base/main.html b/place/templates/base/main.html index cb15c3e..d036ec2 100644 --- a/place/templates/base/main.html +++ b/place/templates/base/main.html @@ -35,10 +35,11 @@ }); function recieveMessage(referral_name, data) { - if(referral_name === "price_change") - alert("MAIN got from OTHER (price_change): "+referral_name + " " + data.account_name+ " " + data.amount + " -> 12500") + if(referral_name === "price_change") { + alert("MAIN got from OTHER (price_change): " + referral_name + " " + data.account_name + " " + data.amount + " -> 12500") data.amount = 12500 - sendMessage("updated", data , ["other"]) + sendMessage("updated", data, ["other"]) + } } /*function recieveMessage(referral_name, data) { diff --git a/sight.py b/sight.py index b60af0e..be83acd 100644 --- a/sight.py +++ b/sight.py @@ -3,8 +3,12 @@ from callhandler import CallHandler from browser import Browser from PyQt6.QtCore import Qt from PyQt6.QtWidgets import QMainWindow, QWidget, QVBoxLayout - +from PyQt6.QtCore import QThread, QObject, pyqtSignal as Signal, pyqtSlot as Slot +import time + class Sight(QWidget): + js_work_requested = Signal(str) + def __init__(self, id, page): super().__init__() @@ -13,6 +17,7 @@ class Sight(QWidget): self.data = {} # private data(s) of the sight self.children = [] self.parent = None + self.js_worker = self.JsRunWorker() base.data["active_sight"] = self.id self.title = id @@ -37,8 +42,28 @@ class Sight(QWidget): self.setLayout(self.layout) + + + def runJs(self,request_js): + self.browser.page().runJavaScript(request_js) + + + def st(self): + self.js_worker_thread = QThread() + self.js_worker.js_run.connect(self.runJs) + + self.js_work_requested.connect(self.js_worker.do_work) + # move worker to the worker thread + self.js_worker.moveToThread(self.js_worker_thread) + # start the thread + self.js_worker_thread.start() + self.js_work_requested.emit(self.page) + # use when the frameSupported is False (for instance wayland) def closeEvent(self, event): + self.js_worker.dont_work() + self.js_worker_thread.quit() + base.sights.close(self.id) def getParent(self): @@ -78,4 +103,39 @@ class Sight(QWidget): if key in self.data: return self.data[key] return None - + + class JsRunWorker(QObject): + __js_requests = [] + __infinitive = True + js_run = Signal(str) + + def addRequest(self, js): + self.__js_requests.append(js) + #print("REQUESTS: ") + #print(self.__js_requests) + + @Slot(str) + def do_work(self, name): + sec_sleep = 0.5 + while self.__infinitive: + rs = self.__js_requests + self.__js_requests.clear() + + time.sleep(sec_sleep) + for request in rs: + time.sleep(sec_sleep) + print(name + " " +request) + try: + self.js_run.emit(request) + except Exception as error: + print("Error " + str(error)) + + #break + # self.__js_requests.remove(request) + # base.sights.get(page).browser.page().runJavaScript("receiveData('message', 'logs', {'event_code':'do_work', 'msg':'test', 'date':'ye'})", self.ready) + + def dont_work(self): + self.__infinitive = False + def ready(self, returnValue): + if returnValue is not None: + print(returnValue) \ No newline at end of file diff --git a/sightfactory.py b/sightfactory.py index d202cae..8f86798 100644 --- a/sightfactory.py +++ b/sightfactory.py @@ -40,6 +40,7 @@ class SightFactory(): if self.checkKey(id): self.list[id].show() log.byCode("SF1000E","The '"+str(id)+"' sight is showed!") + self.list[id].st() return True log.byCode("SF1001W", "This '"+str(id)+"' id isn't exist to show!") return False