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">
|
<link rel="stylesheet" type="text/css" href="content/logs/style.css">
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
//getData("name", true);
|
//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 */
|
/* 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)
|
//alert(data)
|
||||||
var data = JSON.parse(data);
|
//var data = JSON.parse(data);
|
||||||
|
|
||||||
var div = document.getElementById('display_logs');
|
var div = document.getElementById('display_logs');
|
||||||
div.innerHTML += "["+data.type+"]"+" ("+data.event_code+") "+data.msg+" ("+data.date+")<br\>";
|
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] ----")
|
print("---- [BOOT] ----")
|
||||||
from core.registration.registrar import Registrar
|
from core.registration.registrar import Registrar
|
||||||
registrar = Registrar()
|
registrar = Registrar()
|
||||||
|
registrar.registry().register("message","logs")
|
||||||
registrar.registry().register("log","display")
|
registrar.registry().register("log","display")
|
||||||
registrar.registry().register("console","display")
|
registrar.registry().register("console","display")
|
||||||
print("---- [END OF BOOT] ----")
|
print("---- [END OF BOOT] ----")
|
||||||
|
|
@ -14,7 +15,7 @@ print("---- [END OF BOOT] ----")
|
||||||
log = Log(3)
|
log = Log(3)
|
||||||
log.debugOn()
|
log.debugOn()
|
||||||
log.debug_level = 3
|
log.debug_level = 3
|
||||||
log.eventOn()
|
log.eventOff()
|
||||||
|
|
||||||
from mouseevents import MouseEvents
|
from mouseevents import MouseEvents
|
||||||
from pynput import mouse
|
from pynput import mouse
|
||||||
|
|
@ -80,7 +81,7 @@ def loadConfigTemplate():
|
||||||
|
|
||||||
def start():
|
def start():
|
||||||
# Creating admin sight
|
# Creating admin sight
|
||||||
#sights.create("sight-admin", "main")
|
#sights.create("sight-admin", "sight-admin")
|
||||||
#sights.show("sight-admin")
|
#sights.show("sight-admin")
|
||||||
|
|
||||||
# Creating the main Sight
|
# Creating the main Sight
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,27 @@ import base
|
||||||
|
|
||||||
class Broadcast:
|
class Broadcast:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
print("MESSENGER")
|
print("")
|
||||||
|
|
||||||
def sendMessage(self, record):
|
def sendMessage(self, record):
|
||||||
if base.registrar.checkData(record) is not None:
|
if base.registrar.checkData(record) is not None:
|
||||||
for sight in base.sights.getSights().values():
|
for sight in base.sights.getSights().values():
|
||||||
if len(record.getHeader().getReceivers()) == 0:
|
if len(record.getHeader().getReceivers()) == 0:
|
||||||
sight.browser.page().runJavaScript("receiveData('" + record.getHeader().getType() + "', '" + record.getHeader().getReferralName() + "', '" + record.getData(
|
"""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:
|
else:
|
||||||
if sight.getPageId() in record.getHeader().getReceivers():
|
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(
|
"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):
|
def ready(self, returnValue):
|
||||||
if returnValue is not None:
|
if returnValue is not None:
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,13 @@ class RecordHeader():
|
||||||
print("wrong type value")
|
print("wrong type value")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
self.__h_receiver_list = json.loads(self.__h_receiver_list)
|
if type(self.__h_receiver_list) == str:
|
||||||
return True
|
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):
|
def getType(self):
|
||||||
return self.__h_type
|
return self.__h_type
|
||||||
|
|
@ -93,6 +98,7 @@ class Record():
|
||||||
|
|
||||||
def analyze(self):
|
def analyze(self):
|
||||||
if self.__state == "NEW":
|
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:
|
if self.__r_header.analyze() is True and self.__r_data.analyze() is True:
|
||||||
self.__state = "ANALYZED"
|
self.__state = "ANALYZED"
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,15 @@ class Registrar:
|
||||||
record.analyze()
|
record.analyze()
|
||||||
if record.getState() == "ANALYZED":
|
if record.getState() == "ANALYZED":
|
||||||
if self.__registry.exist(record.getHeader().getType(), record.getHeader().getReferralName()):
|
if self.__registry.exist(record.getHeader().getType(), record.getHeader().getReferralName()):
|
||||||
print(record.getData())
|
#print(record.getData())
|
||||||
print(record.getData(True))
|
#print(record.getData(True))
|
||||||
return record
|
return record
|
||||||
else:
|
else:
|
||||||
print("the record not analyzed")
|
print("the record not analyzed")
|
||||||
else:
|
else:
|
||||||
print("The type or referral name wasnt registered yet")
|
print("The type or referral name wasnt registered yet")
|
||||||
print("Data is not received!")
|
print("Data is not received!")
|
||||||
|
#print(record.getState())
|
||||||
return None
|
return None
|
||||||
|
|
||||||
"""def receiveData(self, type, referral_name, data):
|
"""def receiveData(self, type, referral_name, data):
|
||||||
|
|
|
||||||
|
|
@ -20,18 +20,6 @@
|
||||||
/*addData("name", "Balazs", true);
|
/*addData("name", "Balazs", true);
|
||||||
getData("name");*/
|
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>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
||||||
18
log.py
18
log.py
|
|
@ -3,6 +3,9 @@ import os.path
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
import html
|
import html
|
||||||
|
|
||||||
|
from core.messenger.broadcast import Broadcast
|
||||||
|
from core.registration.record import *
|
||||||
from log_event_codes import loge_codes
|
from log_event_codes import loge_codes
|
||||||
import base
|
import base
|
||||||
|
|
||||||
|
|
@ -82,16 +85,17 @@ class Log():
|
||||||
|
|
||||||
# IT IS FREEZE BY EVENT (runJavascript cant execute lot of request in one time!
|
# IT IS FREEZE BY EVENT (runJavascript cant execute lot of request in one time!
|
||||||
if type.upper() != "EVENT":
|
if type.upper() != "EVENT":
|
||||||
dict = {}
|
d = {"type": type.upper(), "event_code": str(event_code)}
|
||||||
dict["type"] = type.upper()
|
|
||||||
dict["event_code"] = str(event_code)
|
|
||||||
msg = msg.replace('\\', '\\\\')
|
msg = msg.replace('\\', '\\\\')
|
||||||
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)
|
#base.sights.sendMessage("logs", ["sight-admin"], dict)
|
||||||
dict["date"] = str(dnow)
|
|
||||||
base.sights.sendMessage("logs", ["sight-admin"], dict)
|
|
||||||
|
|
||||||
|
|
||||||
""" LOG FILE WRITING """
|
""" LOG FILE WRITING """
|
||||||
|
|
|
||||||
|
|
@ -35,10 +35,11 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
function recieveMessage(referral_name, data) {
|
function recieveMessage(referral_name, data) {
|
||||||
if(referral_name === "price_change")
|
if(referral_name === "price_change") {
|
||||||
alert("MAIN got from OTHER (price_change): "+referral_name + " " + data.account_name+ " " + data.amount + " -> 12500")
|
alert("MAIN got from OTHER (price_change): " + referral_name + " " + data.account_name + " " + data.amount + " -> 12500")
|
||||||
data.amount = 12500
|
data.amount = 12500
|
||||||
sendMessage("updated", data , ["other"])
|
sendMessage("updated", data, ["other"])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*function recieveMessage(referral_name, data) {
|
/*function recieveMessage(referral_name, data) {
|
||||||
|
|
|
||||||
64
sight.py
64
sight.py
|
|
@ -3,8 +3,12 @@ from callhandler import CallHandler
|
||||||
from browser import Browser
|
from browser import Browser
|
||||||
from PyQt6.QtCore import Qt
|
from PyQt6.QtCore import Qt
|
||||||
from PyQt6.QtWidgets import QMainWindow, QWidget, QVBoxLayout
|
from PyQt6.QtWidgets import QMainWindow, QWidget, QVBoxLayout
|
||||||
|
from PyQt6.QtCore import QThread, QObject, pyqtSignal as Signal, pyqtSlot as Slot
|
||||||
|
import time
|
||||||
|
|
||||||
class Sight(QWidget):
|
class Sight(QWidget):
|
||||||
|
js_work_requested = Signal(str)
|
||||||
|
|
||||||
def __init__(self, id, page):
|
def __init__(self, id, page):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
|
|
@ -13,6 +17,7 @@ class Sight(QWidget):
|
||||||
self.data = {} # private data(s) of the sight
|
self.data = {} # private data(s) of the sight
|
||||||
self.children = []
|
self.children = []
|
||||||
self.parent = None
|
self.parent = None
|
||||||
|
self.js_worker = self.JsRunWorker()
|
||||||
|
|
||||||
base.data["active_sight"] = self.id
|
base.data["active_sight"] = self.id
|
||||||
self.title = id
|
self.title = id
|
||||||
|
|
@ -37,8 +42,28 @@ class Sight(QWidget):
|
||||||
|
|
||||||
self.setLayout(self.layout)
|
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)
|
# use when the frameSupported is False (for instance wayland)
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
|
self.js_worker.dont_work()
|
||||||
|
self.js_worker_thread.quit()
|
||||||
|
|
||||||
base.sights.close(self.id)
|
base.sights.close(self.id)
|
||||||
|
|
||||||
def getParent(self):
|
def getParent(self):
|
||||||
|
|
@ -78,4 +103,39 @@ class Sight(QWidget):
|
||||||
if key in self.data:
|
if key in self.data:
|
||||||
return self.data[key]
|
return self.data[key]
|
||||||
return None
|
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):
|
if self.checkKey(id):
|
||||||
self.list[id].show()
|
self.list[id].show()
|
||||||
log.byCode("SF1000E","The '"+str(id)+"' sight is showed!")
|
log.byCode("SF1000E","The '"+str(id)+"' sight is showed!")
|
||||||
|
self.list[id].st()
|
||||||
return True
|
return True
|
||||||
log.byCode("SF1001W", "This '"+str(id)+"' id isn't exist to show!")
|
log.byCode("SF1001W", "This '"+str(id)+"' id isn't exist to show!")
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue