The event "freezing" problem is solved now by using Thread. There is a bug in the addRequest it looks like double times add the element to the js_request.
parent
b8e1a5cb81
commit
3169d1cf14
|
|
@ -1,14 +1,15 @@
|
|||
<link rel="stylesheet" type="text/css" href="content/logs/style.css">
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
//getData("name", true);
|
||||
});
|
||||
|
||||
function message(label,data) {
|
||||
function recieveMessage(referral_name, data) {
|
||||
/* DON'T PUT ANY WINDOW.SIGHT.CONSOLE function or other one which call the logs because causing infinity loop */
|
||||
if(label === "logs") {
|
||||
if(referral_name === "logs") {
|
||||
//alert(data)
|
||||
var data = JSON.parse(data);
|
||||
//var data = JSON.parse(data);
|
||||
|
||||
var div = document.getElementById('display_logs');
|
||||
div.innerHTML += "["+data.type+"]"+" ("+data.event_code+") "+data.msg+" ("+data.date+")<br\>";
|
||||
|
|
|
|||
5
base.py
5
base.py
|
|
@ -7,6 +7,7 @@ from log import Log
|
|||
print("---- [BOOT] ----")
|
||||
from core.registration.registrar import Registrar
|
||||
registrar = Registrar()
|
||||
registrar.registry().register("message","logs")
|
||||
registrar.registry().register("log","display")
|
||||
registrar.registry().register("console","display")
|
||||
print("---- [END OF BOOT] ----")
|
||||
|
|
@ -14,7 +15,7 @@ print("---- [END OF BOOT] ----")
|
|||
log = Log(3)
|
||||
log.debugOn()
|
||||
log.debug_level = 3
|
||||
log.eventOn()
|
||||
log.eventOff()
|
||||
|
||||
from mouseevents import MouseEvents
|
||||
from pynput import mouse
|
||||
|
|
@ -80,7 +81,7 @@ def loadConfigTemplate():
|
|||
|
||||
def start():
|
||||
# Creating admin sight
|
||||
#sights.create("sight-admin", "main")
|
||||
#sights.create("sight-admin", "sight-admin")
|
||||
#sights.show("sight-admin")
|
||||
|
||||
# Creating the main Sight
|
||||
|
|
|
|||
|
|
@ -3,19 +3,27 @@ import base
|
|||
|
||||
class Broadcast:
|
||||
def __init__(self):
|
||||
print("MESSENGER")
|
||||
print("")
|
||||
|
||||
def sendMessage(self, record):
|
||||
if base.registrar.checkData(record) is not None:
|
||||
for sight in base.sights.getSights().values():
|
||||
if len(record.getHeader().getReceivers()) == 0:
|
||||
sight.browser.page().runJavaScript("receiveData('" + record.getHeader().getType() + "', '" + record.getHeader().getReferralName() + "', '" + record.getData(
|
||||
True) + "')", self.ready)
|
||||
"""sight.browser.page().runJavaScript("receiveData('" + record.getHeader().getType() + "', '" + record.getHeader().getReferralName() + "', '" + record.getData(
|
||||
True) + "')", self.ready)"""
|
||||
sight.js_worker.addRequest("receiveData('" + record.getHeader().getType() + "', '" + record.getHeader().getReferralName() + "', '" + record.getData(
|
||||
True) + "')")
|
||||
else:
|
||||
if sight.getPageId() in record.getHeader().getReceivers():
|
||||
sight.browser.page().runJavaScript(
|
||||
print("ID " +str(sight.getId()))
|
||||
"""sight.browser.page().runJavaScript(
|
||||
"receiveData('" + record.getHeader().getType() + "', '" + record.getHeader().getReferralName() + "', '" + record.getData(
|
||||
True) + "')", self.ready)
|
||||
True) + "')", self.ready)"""
|
||||
sight.js_worker.addRequest(
|
||||
"receiveData('" + record.getHeader().getType() + "', '" + record.getHeader().getReferralName() + "', '" + record.getData(
|
||||
True) + "')")
|
||||
else:
|
||||
print("Couldnt send message")
|
||||
|
||||
def ready(self, returnValue):
|
||||
if returnValue is not None:
|
||||
|
|
|
|||
|
|
@ -19,8 +19,13 @@ class RecordHeader():
|
|||
print("wrong type value")
|
||||
return False
|
||||
|
||||
self.__h_receiver_list = json.loads(self.__h_receiver_list)
|
||||
return True
|
||||
if type(self.__h_receiver_list) == str:
|
||||
self.__h_receiver_list = json.loads(self.__h_receiver_list)
|
||||
if type(self.__h_receiver_list) == list:
|
||||
return True
|
||||
elif type(self.__h_receiver_list) == list:
|
||||
return True
|
||||
return False
|
||||
|
||||
def getType(self):
|
||||
return self.__h_type
|
||||
|
|
@ -93,6 +98,7 @@ class Record():
|
|||
|
||||
def analyze(self):
|
||||
if self.__state == "NEW":
|
||||
#print(str(self.__r_header.analyze()) + " - data: " + str(self.__r_data.analyze()))
|
||||
if self.__r_header.analyze() is True and self.__r_data.analyze() is True:
|
||||
self.__state = "ANALYZED"
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -15,14 +15,15 @@ class Registrar:
|
|||
record.analyze()
|
||||
if record.getState() == "ANALYZED":
|
||||
if self.__registry.exist(record.getHeader().getType(), record.getHeader().getReferralName()):
|
||||
print(record.getData())
|
||||
print(record.getData(True))
|
||||
#print(record.getData())
|
||||
#print(record.getData(True))
|
||||
return record
|
||||
else:
|
||||
print("the record not analyzed")
|
||||
else:
|
||||
print("The type or referral name wasnt registered yet")
|
||||
print("Data is not received!")
|
||||
#print(record.getState())
|
||||
return None
|
||||
|
||||
"""def receiveData(self, type, referral_name, data):
|
||||
|
|
|
|||
|
|
@ -20,18 +20,6 @@
|
|||
/*addData("name", "Balazs", true);
|
||||
getData("name");*/
|
||||
});
|
||||
|
||||
function message(label, data) {
|
||||
if(label === "price_change") {
|
||||
sendMessage("changed_now")
|
||||
return "I update my price - "+label+"; DATA - "+data
|
||||
}
|
||||
|
||||
if(label === "test") {
|
||||
return "MAIN GOT TEST MESSAGE"+"; DATA - "+data
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
|||
18
log.py
18
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 """
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
64
sight.py
64
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)
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue