unisi 0.1.10__py3-none-any.whl → 0.1.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- unisi/__init__.py +1 -1
- unisi/autotest.py +3 -26
- unisi/common.py +7 -8
- unisi/containers.py +2 -3
- unisi/guielements.py +3 -4
- unisi/multimon.py +116 -0
- unisi/server.py +9 -28
- unisi/users.py +128 -88
- unisi/utils.py +47 -2
- unisi/web/index.html +1 -1
- unisi/web/js/{353.ddd028b2.js → 662.5957b792.js} +1 -1
- unisi/web/js/{app.bf75d7b6.js → app.636fcf8d.js} +1 -1
- {unisi-0.1.10.dist-info → unisi-0.1.12.dist-info}/METADATA +15 -12
- {unisi-0.1.10.dist-info → unisi-0.1.12.dist-info}/RECORD +17 -16
- {unisi-0.1.10.dist-info → unisi-0.1.12.dist-info}/WHEEL +1 -1
- /unisi/web/css/{353.64dbc68c.css → 662.64dbc68c.css} +0 -0
- {unisi-0.1.10.dist-info → unisi-0.1.12.dist-info}/licenses/LICENSE +0 -0
unisi/__init__.py
CHANGED
unisi/autotest.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import config, os, logging, json
|
1
|
+
import config, os, logging, json, asyncio
|
2
2
|
from .utils import *
|
3
3
|
from .guielements import *
|
4
4
|
from .containers import Block, Dialog
|
@@ -9,32 +9,9 @@ from .jsoncomparison import Compare, NO_DIFF
|
|
9
9
|
def obj2json(obj):
|
10
10
|
return json.loads(toJson(obj))
|
11
11
|
|
12
|
-
#setting config variables
|
13
|
-
testdir = 'autotest'
|
14
|
-
if not hasattr(config, testdir):
|
15
|
-
config.autotest = False
|
16
|
-
if not hasattr(config, 'port'):
|
17
|
-
config.port = 8000
|
18
|
-
if not hasattr(config, 'upload_dir'):
|
19
|
-
config.upload_dir = 'web'
|
20
|
-
if not hasattr(config, 'logfile'):
|
21
|
-
config.logfile = None
|
22
|
-
if not hasattr(config, 'hot_reload'):
|
23
|
-
config.hot_reload = False
|
24
|
-
if not hasattr(config, 'appname'):
|
25
|
-
config.appname = 'Unisi app'
|
26
|
-
if not hasattr(config, 'mirror'):
|
27
|
-
config.mirror = False
|
28
|
-
|
29
12
|
if not os.path.exists(config.upload_dir):
|
30
13
|
os.makedirs(config.upload_dir)
|
31
14
|
|
32
|
-
#start logging
|
33
|
-
format = "%(asctime)s - %(levelname)s - %(message)s"
|
34
|
-
logfile = config.logfile
|
35
|
-
handlers = [logging.FileHandler(logfile), logging.StreamHandler()] if logfile else []
|
36
|
-
logging.basicConfig(level = logging.WARNING, format = format, handlers = handlers)
|
37
|
-
|
38
15
|
comparator = Compare(rules = {'toolbar': '*'}).check
|
39
16
|
|
40
17
|
class Recorder:
|
@@ -84,7 +61,7 @@ def test(filename, user):
|
|
84
61
|
message = data[i]
|
85
62
|
expected = data[i + 1]
|
86
63
|
|
87
|
-
result = user.result4message(ReceivedMessage(message))
|
64
|
+
result = asyncio.run(user.result4message(ReceivedMessage(message)))
|
88
65
|
responce = user.prepare_result(result)
|
89
66
|
jresponce = obj2json(responce)
|
90
67
|
|
@@ -202,7 +179,7 @@ def check_module(module):
|
|
202
179
|
def run_tests():
|
203
180
|
if not os.path.exists(testdir):
|
204
181
|
os.makedirs(testdir)
|
205
|
-
user = User.
|
182
|
+
user = User.type(testdir)
|
206
183
|
user.load()
|
207
184
|
errors = []
|
208
185
|
for module in user.screens:
|
unisi/common.py
CHANGED
@@ -2,23 +2,22 @@ import jsonpickle
|
|
2
2
|
|
3
3
|
def flatten(*arr):
|
4
4
|
for a in arr:
|
5
|
-
if isinstance(a, list):
|
5
|
+
if isinstance(a, list | tuple):
|
6
6
|
yield from flatten(*a)
|
7
7
|
else:
|
8
8
|
yield a
|
9
9
|
|
10
10
|
class ArgObject:
|
11
11
|
def __init__(self, **kwargs):
|
12
|
-
|
13
|
-
setattr(self, key, value)
|
12
|
+
self.__dict__.update(kwargs)
|
14
13
|
|
15
14
|
class ReceivedMessage:
|
16
15
|
def __init__(self, data):
|
17
|
-
self.
|
18
|
-
self.
|
19
|
-
self.
|
20
|
-
|
21
|
-
self.
|
16
|
+
self.__dict__.update(data)
|
17
|
+
self.screen = data.get('screen')
|
18
|
+
self.value = data.get('value')
|
19
|
+
def __str__(self):
|
20
|
+
return f'{self.block}/{self.element}->{self.event}({self.value})'
|
22
21
|
|
23
22
|
def toJson(obj):
|
24
23
|
return jsonpickle.encode(obj,unpicklable = False)
|
unisi/containers.py
CHANGED
unisi/guielements.py
CHANGED
@@ -9,8 +9,7 @@ class Gui:
|
|
9
9
|
self.add(kwargs)
|
10
10
|
|
11
11
|
def add(self, kwargs):
|
12
|
-
|
13
|
-
setattr(self, key, value)
|
12
|
+
self.__dict__.update(kwargs)
|
14
13
|
|
15
14
|
def mutate(self, obj):
|
16
15
|
self.__dict__ = obj.__dict__
|
@@ -25,12 +24,12 @@ Line = Gui("Line", type = 'line')
|
|
25
24
|
|
26
25
|
def smart_complete(lst, min_input_length = 0, max_output_length = 20):
|
27
26
|
di = {it: it.lower() for it in lst}
|
28
|
-
def complete(
|
27
|
+
def complete(_, ustr):
|
29
28
|
if len(ustr) < min_input_length:
|
30
29
|
return []
|
31
30
|
ustr = ustr.lower()
|
32
31
|
arr = [(itlow.find(ustr), it, itlow) for it, itlow in di.items() if itlow.find(ustr) != -1]
|
33
|
-
arr.sort(key=lambda e: (e[0], e[2]))
|
32
|
+
arr.sort(key = lambda e: (e[0], e[2]))
|
34
33
|
if len(arr) > max_output_length:
|
35
34
|
arr = arr[: max_output_length]
|
36
35
|
return [e[1] for e in arr]
|
unisi/multimon.py
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
import multiprocessing, time, asyncio, logging
|
2
|
+
from .utils import start_logging
|
3
|
+
from config import froze_time, monitor_tick, profile, pool
|
4
|
+
|
5
|
+
def write_string_to(shared_array, input_string):
|
6
|
+
input_bytes = input_string.encode()
|
7
|
+
shared_array[:len(input_bytes)] = input_bytes
|
8
|
+
|
9
|
+
def read_string_from(shared_array):
|
10
|
+
return shared_array[:].decode().rstrip('\x00')
|
11
|
+
|
12
|
+
_multiprocessing_pool = None
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
def multiprocessing_pool():
|
17
|
+
global _multiprocessing_pool
|
18
|
+
if not _multiprocessing_pool:
|
19
|
+
_multiprocessing_pool = multiprocessing.Pool(pool)
|
20
|
+
return _multiprocessing_pool
|
21
|
+
|
22
|
+
# Define an asynchronous function that will run the synchronous function in a separate process
|
23
|
+
""" argument example
|
24
|
+
def long_running_task(queue):
|
25
|
+
for i in range(5):
|
26
|
+
time.sleep(2) # emulate long calculation
|
27
|
+
queue.put(f"Task is {i*20}% complete")
|
28
|
+
queue.put(None)
|
29
|
+
|
30
|
+
async def callback(string):
|
31
|
+
await context_user().progress(str)
|
32
|
+
"""
|
33
|
+
async def run_external_process(long_running_task, *args, callback = False):
|
34
|
+
if callback:
|
35
|
+
queue = multiprocessing.Manager().Queue()
|
36
|
+
args = *args, queue
|
37
|
+
result = multiprocessing_pool().apply_async(long_running_task, args)
|
38
|
+
if callback:
|
39
|
+
while not result.ready():
|
40
|
+
if not queue.empty():
|
41
|
+
message = queue.get()
|
42
|
+
if message is None:
|
43
|
+
break
|
44
|
+
await callback(message)
|
45
|
+
await asyncio.sleep(0.1)
|
46
|
+
return result.get()
|
47
|
+
|
48
|
+
logging_lock = multiprocessing.Lock()
|
49
|
+
|
50
|
+
splitter = '~'
|
51
|
+
|
52
|
+
def monitor_process(monitor_shared_arr):
|
53
|
+
timer = None
|
54
|
+
session_status = {}
|
55
|
+
sname = None
|
56
|
+
start_logging()
|
57
|
+
while True:
|
58
|
+
#Wait for data in the shared array
|
59
|
+
while monitor_shared_arr[0] == b'\x00':
|
60
|
+
time.sleep(0.005)
|
61
|
+
if timer is not None:
|
62
|
+
timer -= monitor_tick
|
63
|
+
if timer < 0:
|
64
|
+
timer = None
|
65
|
+
|
66
|
+
arr = list(session_status.items())
|
67
|
+
arr.sort(key = lambda s: s[1][1], reverse=True)
|
68
|
+
ct = time.time()
|
69
|
+
message = "Hangout is detected! Sessions in a queue and time waiting:" +\
|
70
|
+
''.join(f'\n {s[0]}, {s[1][0]}, {ct - s[1][1]} s' for s in arr)
|
71
|
+
with logging_lock:
|
72
|
+
logging.warning(message)
|
73
|
+
timer = None
|
74
|
+
|
75
|
+
# Read and process the data
|
76
|
+
status = read_string_from(monitor_shared_arr).split(splitter)
|
77
|
+
#free
|
78
|
+
monitor_shared_arr[0] = b'\x00'
|
79
|
+
sname = status[1]
|
80
|
+
match status[0]:
|
81
|
+
case '+' | 'e': #exit external process
|
82
|
+
session_status[sname] = [status[2], time.time()]
|
83
|
+
timer = froze_time
|
84
|
+
case '-':
|
85
|
+
event, tstart = session_status.get(sname, (None, 0))
|
86
|
+
if event:
|
87
|
+
duration = time.time() - tstart
|
88
|
+
if profile and duration > profile:
|
89
|
+
with logging_lock:
|
90
|
+
logging.warning(f'Event handler {event} was executed for {duration} seconds!')
|
91
|
+
del session_status[sname]
|
92
|
+
timer = None
|
93
|
+
case 'p': #call external process
|
94
|
+
session_status[sname] = [status[2], time.time()]
|
95
|
+
timer = None
|
96
|
+
|
97
|
+
if froze_time or profile:
|
98
|
+
# Create a shared memory array
|
99
|
+
monitor_shared_arr = multiprocessing.Array('c', 200)
|
100
|
+
monitor_shared_arr[0] != b'\x00'
|
101
|
+
|
102
|
+
async def notify_monitor(status, session, event):
|
103
|
+
s = f'{status}{splitter}{session}{splitter}{event}'
|
104
|
+
# Wait for the shared array to be empty
|
105
|
+
while monitor_shared_arr[0] != b'\x00':
|
106
|
+
await asyncio.sleep(monitor_tick)
|
107
|
+
write_string_to(monitor_shared_arr, s)
|
108
|
+
|
109
|
+
monitor_process = multiprocessing.Process(target=monitor_process, args=(monitor_shared_arr,))
|
110
|
+
monitor_process.start()
|
111
|
+
else:
|
112
|
+
notify_monitor = None
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
unisi/server.py
CHANGED
@@ -42,12 +42,6 @@ async def static_serve(request):
|
|
42
42
|
|
43
43
|
return web.FileResponse(file_path) if file_path else web.HTTPNotFound()
|
44
44
|
|
45
|
-
def broadcast(message, message_user):
|
46
|
-
screen = message_user.screen_module
|
47
|
-
for user in message_user.reflections:
|
48
|
-
if user is not message_user and screen is user.screen_module:
|
49
|
-
user.sync_send(message)
|
50
|
-
import gc
|
51
45
|
async def websocket_handler(request):
|
52
46
|
ws = web.WebSocketResponse()
|
53
47
|
await ws.prepare(request)
|
@@ -76,44 +70,31 @@ async def websocket_handler(request):
|
|
76
70
|
if raw_message:
|
77
71
|
for raw_submessage in raw_message:
|
78
72
|
message = ReceivedMessage(raw_submessage)
|
79
|
-
result = user.result4message(message)
|
73
|
+
result = await user.result4message(message)
|
80
74
|
else:
|
81
75
|
result = Warning('Empty command batch!')
|
82
76
|
else:
|
83
77
|
message = ReceivedMessage(raw_message)
|
84
|
-
result = user.result4message(message)
|
78
|
+
result = await user.result4message(message)
|
85
79
|
await send(result)
|
86
80
|
if message:
|
87
81
|
if recorder.record_file:
|
88
82
|
recorder.accept(message, user.prepare_result (result))
|
89
|
-
|
90
|
-
if result:
|
91
|
-
broadcast(result, user)
|
92
|
-
msg_object = user.find_element(message)
|
93
|
-
if not isinstance(result, Message) or not result.contains(msg_object):
|
94
|
-
broadcast(toJson(user.prepare_result(msg_object)), user)
|
83
|
+
await user.reflect(message, result)
|
95
84
|
elif msg.type == WSMsgType.ERROR:
|
96
85
|
user.log('ws connection closed with exception %s' % ws.exception())
|
97
|
-
except:
|
98
|
-
|
86
|
+
except BaseException as e:
|
87
|
+
if not isinstance(e, ConnectionResetError):
|
88
|
+
user.log(traceback.format_exc())
|
99
89
|
|
100
|
-
|
101
|
-
if uss and uss.get(user.session):
|
102
|
-
del uss[user.session]
|
103
|
-
|
104
|
-
if user.reflections: #reflections is common array
|
105
|
-
if len(user.reflections) == 2:
|
106
|
-
user.reflections.clear() #1 element in user.reflections has no sense
|
107
|
-
else:
|
108
|
-
user.reflections.remove(user)
|
109
|
-
gc.collect()
|
90
|
+
await user.delete()
|
110
91
|
return ws #?<->
|
111
92
|
|
112
93
|
def start(appname = None, user_type = User, http_handlers = []):
|
113
|
-
if appname
|
94
|
+
if appname:
|
114
95
|
config.appname = appname
|
115
96
|
|
116
|
-
User.
|
97
|
+
User.type = user_type
|
117
98
|
|
118
99
|
if config.autotest:
|
119
100
|
run_tests()
|
unisi/users.py
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
-
import importlib
|
2
1
|
from .utils import *
|
3
2
|
from .guielements import *
|
4
3
|
from .common import *
|
5
4
|
from .containers import Dialog, Screen
|
6
|
-
import
|
7
|
-
import asyncio
|
8
|
-
from threading import Thread
|
9
|
-
import logging
|
5
|
+
from .multimon import notify_monitor, logging_lock, run_external_process
|
6
|
+
import sys, asyncio, logging, importlib
|
10
7
|
|
11
8
|
class User:
|
12
9
|
def __init__(self, session: str, share = None):
|
@@ -29,22 +26,42 @@ class User:
|
|
29
26
|
self.screens = []
|
30
27
|
self.reflections = []
|
31
28
|
self.screen_module = None
|
32
|
-
self.__handlers__ = {}
|
29
|
+
self.__handlers__ = {}
|
33
30
|
|
34
|
-
|
35
|
-
await self.send(obj)
|
36
|
-
self.transport._write_fut = None
|
37
|
-
self.transport._loop._ready.pop()
|
31
|
+
self.monitor(session, share)
|
38
32
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
33
|
+
async def run_process(self, long_running_task, *args, callback = False):
|
34
|
+
if callback and notify_monitor and callback != self.progress: #progress notifies the monitor
|
35
|
+
async def new_callback(value):
|
36
|
+
asyncio.gather(notify_monitor('e', self.session, self.last_message), callback(value))
|
37
|
+
callback = new_callback
|
38
|
+
return await run_external_process(long_running_task, *args, callback = callback)
|
39
|
+
|
40
|
+
async def broadcast(self, message):
|
41
|
+
screen = self.screen_module
|
42
|
+
if type(message) != str:
|
43
|
+
message = toJson(self.prepare_result(message))
|
44
|
+
await asyncio.gather(*[user.send(message)
|
45
|
+
for user in self.reflections
|
46
|
+
if user is not self and screen is user.screen_module])
|
47
|
+
|
48
|
+
async def reflect(self, message, result):
|
49
|
+
if self.reflections and not is_screen_switch(message):
|
50
|
+
if result:
|
51
|
+
await self.broadcast(result)
|
52
|
+
if message:
|
53
|
+
msg_object = self.find_element(message)
|
54
|
+
if not isinstance(result, Message) or not result.contains(msg_object):
|
55
|
+
await self.broadcast(msg_object)
|
42
56
|
|
43
|
-
def progress(self, str, *updates):
|
44
|
-
"""open or update progress window if str != null else close it
|
57
|
+
async def progress(self, str, *updates):
|
58
|
+
"""open or update progress window if str != null else close it """
|
45
59
|
if not self.testing:
|
46
|
-
|
47
|
-
|
60
|
+
msg = TypeMessage('progress', str, *updates, user = self)
|
61
|
+
await asyncio.gather(self.send(msg), self.reflect(None, msg))
|
62
|
+
if notify_monitor:
|
63
|
+
await notify_monitor('e', self.session, self.last_message)
|
64
|
+
|
48
65
|
def load_screen(self, file):
|
49
66
|
screen_vars = {
|
50
67
|
'icon' : None,
|
@@ -59,9 +76,8 @@ class User:
|
|
59
76
|
path = f'{screens_dir}{divpath}{file}'
|
60
77
|
spec = importlib.util.spec_from_file_location(name,path)
|
61
78
|
module = importlib.util.module_from_spec(spec)
|
79
|
+
module.user = self
|
62
80
|
|
63
|
-
module.user = self
|
64
|
-
|
65
81
|
spec.loader.exec_module(module)
|
66
82
|
screen = Screen(getattr(module, 'name', ''))
|
67
83
|
#set system vars
|
@@ -72,9 +88,22 @@ class User:
|
|
72
88
|
screen.toolbar += User.toolbar
|
73
89
|
else:
|
74
90
|
screen.toolbar = User.toolbar
|
75
|
-
|
76
|
-
module.screen = screen
|
91
|
+
module.screen = screen
|
77
92
|
return module
|
93
|
+
|
94
|
+
async def delete(self):
|
95
|
+
uss = User.sessions
|
96
|
+
if uss and uss.get(self.session):
|
97
|
+
del uss[self.session]
|
98
|
+
|
99
|
+
if self.reflections: #reflections is common array
|
100
|
+
if len(self.reflections) == 2:
|
101
|
+
self.reflections.clear() #1 element in user.reflections has no sense
|
102
|
+
else:
|
103
|
+
self.reflections.remove(self)
|
104
|
+
|
105
|
+
if notify_monitor:
|
106
|
+
await notify_monitor('-', self.session, self.last_message)
|
78
107
|
|
79
108
|
def set_clean(self):
|
80
109
|
#remove user modules from sys
|
@@ -93,7 +122,7 @@ class User:
|
|
93
122
|
self.screens.append(module)
|
94
123
|
|
95
124
|
if self.screens:
|
96
|
-
self.screens.sort(key=lambda s: s.
|
125
|
+
self.screens.sort(key=lambda s: s.order)
|
97
126
|
main = self.screens[0]
|
98
127
|
if 'prepare' in dir(main):
|
99
128
|
main.prepare()
|
@@ -109,32 +138,43 @@ class User:
|
|
109
138
|
|
110
139
|
@property
|
111
140
|
def testing(self):
|
112
|
-
return self.session ==
|
141
|
+
return self.session == testdir
|
113
142
|
|
114
143
|
@property
|
115
144
|
def screen(self):
|
116
145
|
return self.screen_module.screen
|
117
146
|
|
118
147
|
def set_screen(self,name):
|
119
|
-
return self.process(ArgObject(block = 'root', element = None, value = name))
|
148
|
+
return asyncio.run(self.process(ArgObject(block = 'root', element = None, value = name)))
|
120
149
|
|
121
|
-
def result4message(self, message):
|
122
|
-
result = None
|
123
|
-
|
124
|
-
if dialog:
|
125
|
-
if message.element is None: #button pressed
|
126
|
-
self.active_dialog = None
|
127
|
-
|
150
|
+
async def result4message(self, message):
|
151
|
+
result = None
|
152
|
+
self.last_message = message
|
153
|
+
if dialog := self.active_dialog:
|
154
|
+
if message.element is None: #dialog command button is pressed
|
155
|
+
self.active_dialog = None
|
156
|
+
if self.reflections:
|
157
|
+
await self.broadcast(TypeMessage('action', 'close'))
|
158
|
+
result = await self.eval_handler(dialog.changed, dialog, message.value)
|
128
159
|
else:
|
129
160
|
el = self.find_element(message)
|
130
161
|
if el:
|
131
|
-
result = self.process_element(el, message)
|
162
|
+
result = await self.process_element(el, message)
|
132
163
|
else:
|
133
|
-
result = self.process(message)
|
164
|
+
result = await self.process(message)
|
134
165
|
if result and isinstance(result, Dialog):
|
135
166
|
self.active_dialog = result
|
136
167
|
return result
|
137
168
|
|
169
|
+
async def eval_handler(self, handler, gui, value):
|
170
|
+
if notify_monitor:
|
171
|
+
await notify_monitor('+', self.session, self.last_message)
|
172
|
+
result = (await handler(gui, value)) if asyncio.iscoroutinefunction(handler)\
|
173
|
+
else handler(gui, value)
|
174
|
+
if notify_monitor:
|
175
|
+
await notify_monitor('-', self.session, None)
|
176
|
+
return result
|
177
|
+
|
138
178
|
@property
|
139
179
|
def blocks(self):
|
140
180
|
return [self.active_dialog] if self.active_dialog and \
|
@@ -150,24 +190,16 @@ class User:
|
|
150
190
|
else:
|
151
191
|
for bl in flatten(self.blocks):
|
152
192
|
if bl.name == blname:
|
153
|
-
for c in bl.value:
|
154
|
-
if
|
155
|
-
for sub in c:
|
156
|
-
if sub.name == elname:
|
157
|
-
return sub
|
158
|
-
elif c.name == elname:
|
193
|
+
for c in flatten(bl.value):
|
194
|
+
if c.name == elname:
|
159
195
|
return c
|
160
196
|
|
161
197
|
def find_path(self, elem):
|
162
198
|
for bl in flatten(self.blocks):
|
163
199
|
if bl == elem:
|
164
200
|
return [bl.name]
|
165
|
-
for c in bl.value:
|
166
|
-
if
|
167
|
-
for sub in c:
|
168
|
-
if sub == elem:
|
169
|
-
return [bl.name, sub.name]
|
170
|
-
elif c == elem:
|
201
|
+
for c in flatten(bl.value):
|
202
|
+
if c == elem:
|
171
203
|
return [bl.name, c.name]
|
172
204
|
for e in self.screen.toolbar:
|
173
205
|
if e == elem:
|
@@ -186,15 +218,14 @@ class User:
|
|
186
218
|
raw = Message(*raw, user = self)
|
187
219
|
return raw
|
188
220
|
|
189
|
-
def process(self, message):
|
190
|
-
self.last_message = message
|
221
|
+
async def process(self, message):
|
191
222
|
screen_change_message = getattr(message, 'screen',None) and self.screen.name != message.screen
|
192
223
|
if is_screen_switch(message) or screen_change_message:
|
193
224
|
for s in self.screens:
|
194
225
|
if s.name == message.value:
|
195
226
|
self.screen_module = s
|
196
227
|
if screen_change_message:
|
197
|
-
break
|
228
|
+
break
|
198
229
|
if getattr(s.screen,'prepare', False):
|
199
230
|
s.screen.prepare()
|
200
231
|
return True
|
@@ -205,80 +236,89 @@ class User:
|
|
205
236
|
|
206
237
|
elem = self.find_element(message)
|
207
238
|
if elem:
|
208
|
-
return self.process_element(elem, message)
|
239
|
+
return await self.process_element(elem, message)
|
209
240
|
|
210
|
-
error = f'Element {message.block}
|
241
|
+
error = f'Element {message.block}/{message.element} does not exist!'
|
211
242
|
self.log(error)
|
212
243
|
return Error(error)
|
213
244
|
|
214
|
-
def process_element(self, elem, message):
|
215
|
-
event = message.event
|
216
|
-
query = event
|
245
|
+
async def process_element(self, elem, message):
|
246
|
+
event = message.event
|
247
|
+
query = event == 'complete' or event == 'append'
|
217
248
|
|
218
249
|
handler = self.__handlers__.get((elem, event), None)
|
219
250
|
if handler:
|
220
|
-
|
221
|
-
|
222
|
-
|
251
|
+
return await self.eval_handler(handler, elem, message.value)
|
252
|
+
|
223
253
|
handler = getattr(elem, event, False)
|
224
254
|
if handler:
|
225
|
-
result = handler
|
255
|
+
result = await self.eval_handler(handler, elem, message.value)
|
226
256
|
if query:
|
227
257
|
result = Answer(event, message, result)
|
228
258
|
return result
|
229
259
|
elif event == 'changed':
|
230
260
|
elem.value = message.value
|
231
261
|
else:
|
232
|
-
|
233
|
-
|
262
|
+
error = f"{message.block}/{message.element} doesn't contain '{event}' method type!"
|
263
|
+
self.log(error)
|
264
|
+
return Error(error)
|
265
|
+
|
266
|
+
def monitor(self, session, share):
|
267
|
+
if config.share and session != testdir:
|
268
|
+
self.log(f'User is connected, session: {session}, share: {share.session if share else None}', type = 'info')
|
269
|
+
|
270
|
+
def sync_send(self, obj):
|
271
|
+
asyncio.run(self.send(obj))
|
234
272
|
|
235
273
|
def log(self, str, type = 'error'):
|
236
274
|
scr = self.screen.name if self.screens else 'void'
|
237
|
-
str = f"session: {self.session}, screen: {scr}, message: {self.last_message}
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
275
|
+
str = f"session: {self.session}, screen: {scr}, message: {self.last_message}\n {str}"
|
276
|
+
with logging_lock:
|
277
|
+
if type == 'error':
|
278
|
+
logging.error(str)
|
279
|
+
elif type == 'warning':
|
280
|
+
logging.warning(str)
|
281
|
+
else:
|
282
|
+
func = logging.getLogger().setLevel
|
283
|
+
func(level = logging.INFO)
|
284
|
+
logging.info(str)
|
285
|
+
func(level = logging.WARNING)
|
286
|
+
|
287
|
+
User.type = User
|
288
|
+
User.last_user = None
|
289
|
+
User.toolbar = []
|
290
|
+
User.sessions = {}
|
291
|
+
User.count = 0
|
292
|
+
|
293
|
+
def context_user():
|
294
|
+
return context_object(User)
|
295
|
+
|
296
|
+
def context_screen():
|
297
|
+
user = context_user()
|
298
|
+
return user.screen if user else None
|
242
299
|
|
243
300
|
def make_user(request):
|
244
301
|
session = f'{request.remote}-{User.count}'
|
245
302
|
User.count += 1
|
246
|
-
requested_connect
|
247
|
-
if requested_connect:
|
303
|
+
if requested_connect := request.headers.get('session') if config.share else None:
|
248
304
|
user = User.sessions.get(requested_connect, None)
|
249
305
|
if not user:
|
250
306
|
error = f'Session id "{requested_connect}" is unknown. Connection refused!'
|
251
|
-
|
307
|
+
with logging_lock:
|
308
|
+
logging.error(error)
|
252
309
|
return None, Error(error)
|
253
|
-
user = User.
|
310
|
+
user = User.type(session, user)
|
254
311
|
ok = user.screens
|
255
312
|
elif config.mirror and User.last_user:
|
256
|
-
user = User.
|
313
|
+
user = User.type(session, User.last_user)
|
257
314
|
ok = user.screens
|
258
315
|
else:
|
259
|
-
user = User.
|
316
|
+
user = User.type(session)
|
260
317
|
ok = user.load()
|
261
318
|
User.sessions[session] = user
|
262
319
|
return user, ok
|
263
320
|
|
264
|
-
#loop and thread is for progress window and sync interactions
|
265
|
-
loop = asyncio.new_event_loop()
|
266
|
-
|
267
|
-
def f(loop):
|
268
|
-
asyncio.set_event_loop(loop)
|
269
|
-
loop.run_forever()
|
270
|
-
|
271
|
-
async_thread = Thread(target=f, args=(loop,))
|
272
|
-
async_thread.start()
|
273
|
-
|
274
321
|
def handle(elem, event):
|
275
322
|
def h(fn):
|
276
323
|
User.last_user.__handlers__[elem, event] = fn
|
277
|
-
return h
|
278
|
-
|
279
|
-
User.extra_loop = loop
|
280
|
-
User.UserType = User
|
281
|
-
User.last_user = None
|
282
|
-
User.toolbar = []
|
283
|
-
User.sessions = {}
|
284
|
-
User.count = 0
|
324
|
+
return h
|
unisi/utils.py
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
import os, platform, requests
|
1
|
+
import os, platform, requests, inspect, logging
|
2
2
|
|
3
3
|
blocks_dir = 'blocks'
|
4
4
|
screens_dir = 'screens'
|
5
5
|
UpdateScreen = True
|
6
6
|
Redesign = 2
|
7
7
|
public_dirs = 'public_dirs'
|
8
|
+
testdir = 'autotest'
|
8
9
|
|
9
10
|
divpath = '\\' if platform.system() == 'Windows' else '/'
|
10
11
|
libpath = os.path.dirname(os.path.realpath(__file__))
|
@@ -26,8 +27,43 @@ appname = 'Unisi app'
|
|
26
27
|
import config
|
27
28
|
print("Config with default parameters is created!")
|
28
29
|
|
30
|
+
#setting config variables
|
31
|
+
defaults = {
|
32
|
+
testdir: False,
|
33
|
+
'appname' : 'Unisi app',
|
34
|
+
'upload_dir' : 'web',
|
35
|
+
'logfile': None,
|
36
|
+
'hot_reload' : False,
|
37
|
+
'mirror' : False,
|
38
|
+
'share' : False,
|
39
|
+
'profile' : 0,
|
40
|
+
'rag' : None,
|
41
|
+
'froze_time': None,
|
42
|
+
'monitor_tick' : 0.005,
|
43
|
+
'pool' : None
|
44
|
+
}
|
45
|
+
for param, value in defaults.items():
|
46
|
+
if not hasattr(config, param):
|
47
|
+
setattr(config, param, value)
|
48
|
+
#froze_time can not be 0
|
49
|
+
if config.froze_time == 0:
|
50
|
+
config.froze_time = None
|
51
|
+
|
52
|
+
def context_object(target_type):
|
53
|
+
"""
|
54
|
+
Finds the first argument of a specific type in the current function call stack.
|
55
|
+
"""
|
56
|
+
frame = inspect.currentframe()
|
57
|
+
while frame:
|
58
|
+
args, _, _, values = inspect.getargvalues(frame)
|
59
|
+
if args and isinstance(values[args[0]], target_type):
|
60
|
+
return values[args[0]]
|
61
|
+
# Move to the previous frame in the call stack
|
62
|
+
frame = frame.f_back
|
63
|
+
return None
|
64
|
+
|
29
65
|
def is_screen_switch(message):
|
30
|
-
return message.block == 'root' and message.element is None
|
66
|
+
return message and message.block == 'root' and message.element is None
|
31
67
|
|
32
68
|
def filename2url(fn):
|
33
69
|
if fn[0] == '/' or fn[1] == ':': #if full path
|
@@ -105,4 +141,13 @@ def Answer(type, message, result):
|
|
105
141
|
ms.message = message
|
106
142
|
return ms
|
107
143
|
|
144
|
+
def start_logging():
|
145
|
+
format = "%(asctime)s - %(levelname)s - %(message)s"
|
146
|
+
logfile = config.logfile
|
147
|
+
handlers = [logging.FileHandler(logfile), logging.StreamHandler()] if logfile else []
|
148
|
+
logging.basicConfig(level = logging.WARNING, format = format, handlers = handlers)
|
149
|
+
|
150
|
+
start_logging()
|
151
|
+
|
152
|
+
|
108
153
|
|
unisi/web/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><title>UNISI</title><meta charset=utf-8><meta name=description content="UNISI on Quasar"><meta name=format-detection content="telephone=no"><meta name=msapplication-tap-highlight content=no><meta name=viewport content="user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,width=device-width"><link rel=icon type=image/png sizes=128x128 href=icons/favicon-128x128.png><link rel=icon type=image/png sizes=96x96 href=icons/favicon-96x96.png><link rel=icon type=image/png sizes=32x32 href=icons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=icons/favicon-16x16.png><link rel=icon type=image/ico href=favicon.ico><script defer src=js/vendor.d6797c01.js></script><script defer src=js/app.
|
1
|
+
<!DOCTYPE html><html><head><title>UNISI</title><meta charset=utf-8><meta name=description content="UNISI on Quasar"><meta name=format-detection content="telephone=no"><meta name=msapplication-tap-highlight content=no><meta name=viewport content="user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,width=device-width"><link rel=icon type=image/png sizes=128x128 href=icons/favicon-128x128.png><link rel=icon type=image/png sizes=96x96 href=icons/favicon-96x96.png><link rel=icon type=image/png sizes=32x32 href=icons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=icons/favicon-16x16.png><link rel=icon type=image/ico href=favicon.ico><script defer src=js/vendor.d6797c01.js></script><script defer src=js/app.636fcf8d.js></script><link href=css/vendor.9ed7638d.css rel=stylesheet><link href=css/app.31d6cfe0.css rel=stylesheet></head><body><div id=q-app></div></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";(globalThis["webpackChunkuniqua"]=globalThis["webpackChunkuniqua"]||[]).push([[353],{4353:(e,t,a)=>{a.r(t),a.d(t,{default:()=>ua});var l=a(3673),s=a(2323);const i=(0,l._)("div",{class:"q-pa-md"},null,-1),o=(0,l._)("div",{class:"q-pa-md"},null,-1);function n(e,t,a,n,d,r){const c=(0,l.up)("q-item-label"),h=(0,l.up)("element"),u=(0,l.up)("q-tab"),p=(0,l.up)("q-tabs"),g=(0,l.up)("q-space"),m=(0,l.up)("q-tooltip"),f=(0,l.up)("q-btn"),y=(0,l.up)("q-toolbar"),w=(0,l.up)("q-header"),b=(0,l.up)("zone"),v=(0,l.up)("q-page"),k=(0,l.up)("q-page-container"),x=(0,l.up)("q-layout");return(0,l.wg)(),(0,l.j4)(x,{view:"lHh Lpr lFf"},{default:(0,l.w5)((()=>[(0,l.Wm)(w,{elevated:"",class:(0,s.C_)({"bg-deep-purple-9":e.Dark.isActive})},{default:(0,l.w5)((()=>[(0,l.Wm)(y,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c,{class:"text-h5"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.screen.header?e.screen.header:""),1)])),_:1}),i,((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.left_toolbar,(t=>((0,l.wg)(),(0,l.j4)(h,{class:(0,s.C_)(["q-ma-xs",{"bg-blue-grey-7":e.Dark.isActive,"bg-blue-5":!e.Dark.isActive}]),data:t,pdata:e.tooldata},null,8,["class","data","pdata"])))),256)),o,(0,l.Wm)(p,{class:"bold-tabs",align:"center","inline-label":"",dense:"",modelValue:e.tab,"onUpdate:modelValue":t[0]||(t[0]=t=>e.tab=t),style:{float:"center"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.menu,(t=>((0,l.wg)(),(0,l.iD)("div",null,[t.icon?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"justify-center text-white shadow-2","no-caps":"",name:t.name,icon:t.icon,label:t.name,onClick:a=>e.tabclick(t.name)},null,8,["name","icon","label","onClick"])):(0,l.kq)("",!0),t.icon?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(u,{key:1,class:"justify-center text-white shadow-2","no-caps":"",name:t.name,label:t.name,onClick:a=>e.tabclick(t.name)},null,8,["name","label","onClick"]))])))),256))])),_:1},8,["modelValue"]),(0,l.Wm)(g),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.right_toolbar,(t=>((0,l.wg)(),(0,l.j4)(h,{class:(0,s.C_)(["q-ma-xs",{"bg-blue-grey-7":e.Dark.isActive,"bg-blue-5":!e.Dark.isActive}]),data:t,pdata:e.tooldata},null,8,["class","data","pdata"])))),256)),(0,l.Wm)(f,{class:(0,s.C_)(["q-ma-xs",{"bg-blue-grey-9":e.Dark.isActive}]),dense:"",round:"",icon:e.Dark.isActive?"light_mode":"dark_mode",onClick:e.switchTheme},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Dark/Light mode")])),_:1})])),_:1},8,["class","icon","onClick"])])),_:1})])),_:1},8,["class"]),(0,l.Wm)(k,{class:"content"},{default:(0,l.w5)((()=>[(0,l.Wm)(v,{class:"flex justify-center centers"},{default:(0,l.w5)((()=>[(0,l.Wm)(b,{data:e.screen.blocks,ref:"page"},null,8,["data"])])),_:1})])),_:1})])),_:1})}function d(e,t,a,i,o,n){const d=(0,l.up)("q-icon"),r=(0,l.up)("q-item-section"),c=(0,l.up)("q-item-label"),h=(0,l.up)("q-item");return(0,l.wg)(),(0,l.j4)(h,{clickable:"",tag:"a",target:"_blank",onClick:e.send},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(d,{name:e.icon},null,8,["name"])])),_:1}),(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.name),1)])),_:1})])),_:1})])),_:1},8,["onClick"])}a(71);var r=a(698),c=a(8603);let h=null,u={};var p;const g=!1;let m=g;const f=["graph","chart","block","text"],y=["tree","table","list","text","graph","chart"];const w=window.location.host,b=`${window.location.protocol}//${w}`;let v={},k={},x={};function C(e){p=new WebSocket(g?"ws://localhost:8000/ws":`ws://${w}/ws`),p.onopen=()=>e.statusConnect=!0,p.onmessage=t=>{m&&console.log("incoming message",t.data),h.designCycle=0;let a=JSON.parse(t.data);a?e.processMessage(a):e.closeProgress(a)},p.onerror=t=>e.error(t),p.onclose=t=>{t.wasClean?e.info("Connection was finished by the server."):e.error("Connection suddenly closed!"),e.statusConnect=!1,m&&console.info("close code : "+t.code+" reason: "+t.reason)},h=e}function _(e){let t={block:e[0],element:e[1],event:e[2],value:e[3]};m&&console.log("sended",t),p.send(JSON.stringify(t))}let A=!0;function S(e){A=e,e||(x={})}function q(e){if(A){let t=x[e.fullname];if(t)return t.styleSize;A=!1}return null}function D(e,t,a,l="complete"){let s=[e.pdata.name,e.data.name,l,t];_(s),u[s.slice(0,3).toString()]=a}function z(){v={},x=k,A=!0,k={}}function j(e,t){Object.assign(e.data,t),e.updated=t.value,e.value=t.value}function E(e){for(let t of e){let e=t.path;if(e.length>1){e.reverse();let a=e.join("@"),l=k[a];j(l,t.data)}else{let a=v[e[0]];Object.assign(a.data,t.data)}}}function $(e){let t=[e.message.block,e.message.element,e.type].toString();"string"==typeof e.value?h.error(e.value):u[t](e.value),delete u[t]}function Z(e){let t=[];for(let l of e)l instanceof Array?t.push(l):t.push([l]);let a=t.shift();return t.reduce(((e,t)=>e.flatMap((e=>t.map((t=>e instanceof Array?[...e,t]:[e,t]))))),a)}function M(e=!1){W(document.documentElement.scrollWidth>window.innerWidth)}let O=(0,c.debounce)(M,50);function W(e){if(h.designCycle>=1)return;m&&console.log(`------------------recalc design ${h.designCycle}`),h.designCycle++;const t=N(e),a=V(e);for(let[l,s]of Object.entries(t)){let e=k[l],t=a[l];const[i,o]=t||[0,1];let n,d=e.geom(),r=d.el,c=e.pdata?e.pdata.name:e.name,h=v[c];for(let a of h.data.value.slice(1))if(Array.isArray(a)){if(a.find((t=>t.name==e.data.name))){let e=a[a.length-1],t=`${e.name}@${c}`;n=k[t];break}}else if(a.name==e.data.name){n=e;break}let u=i;u/=o;let p=e.only_fixed_elems?"":`width:${Math.ceil(r.clientWidth+u)}px`,g=`height:${Math.floor(s+e.he)}px;${p}`;g!=e.styleSize&&(e.styleSize=g),e.has_recalc=!1}}function N(e){const t=h.screen.blocks;let a=window.innerHeight-60,l={},s=new Map,i=[];for(let n of t){const e=[];let t=n instanceof Array,o=t?Z(n):[[n]],d={};for(let[a,l]of Object.entries(v)){let e=l.$el.getBoundingClientRect(),t=e.bottom;d[a]=t-e.top}for(let a of o){let e=0,t=!0;for(let l of a)e+=d[l.name],v[l.name].only_fixed_elems||(t=!1);if(t){let e=v[a.slice(-1)[0].name];k[e.fullname]=e}i.push([e+8*a.length,a])}i.sort(((e,t)=>e[0]>t[0]?-1:e[0]==t[0]?0:1));for(let a of i){let t=a[1];(0,r.hu)(Array.isArray(t));const l=[];for(let[e,a]of Object.entries(k))if(a.expanding_height){let[i,o]=e.split("@");if(t.find((e=>e.name==o))){let e=!0;const t=a.geom();for(let[i,o]of l.entries()){let n=o.geom();e&&o!==a&&n.top==t.top&&(n.scrollHeight<t.scrollHeight&&(l[i]=a),e=!1,s.set(a.fullname,o.fullname))}e&&l.push(a)}}l.length&&e.push([a[0],l])}for(let[s,i]of e){let e=0,t=[];for(let a of i)if(a.fullname in l)s+=l[a.fullname];else{let l=a.geom(),i=l.bottom-l.top;i<100&&(s+=100-i,i=100),a.he=i,e+=a.he,t.push(a)}let o=(e+a-s)/t.length,n=0;for(let a of t){let e,s=o-a.he;if(1==t.length)e=s;else if(e=Math.floor(s),s-e){n+=s-e;let t=Math.round(n)-n;t<.001&&t>-.001&&(e+=Math.round(n),n=0)}l[a.fullname]=e}}}let o=Array.from(s.entries());o.sort(((e,t)=>e[0]in l||e[1]in l?-1:1));for(let[n,d]of o)d in l?(l[n]=l[d],k[n].he=k[d].he):(l[d]=l[n],k[d].he=k[n].he);return l}function V(e){let t=null;const a=t?[t]:h.screen.blocks;let l=window.innerWidth-20,s=[],i={};for(let n of a)if(0==s.length)if(Array.isArray(n))for(let e of n)s.push(Array.isArray(e)?e:[e]);else s=[[n]];else{let e=[];if(Array.isArray(n))for(let t of n)for(let a of s)e.push(Array.isArray(t)?a.concat(t):[...a,t]);else for(let t of s)e.push([...t,n]);s=e}const o=[];for(let n of s){let e=0;for(let l of n){let t=v[l.name].$el.getBoundingClientRect();e+=t.right-t.left+5}let t=l-e,a=[[]];for(let l of n){let e=[];for(let t of v[l.name].hlevelements)for(let l of a)e.push([...l,...t]);a=e}for(let l of a)o.push([t,l])}o.sort(((e,t)=>t[1].length-e[1].length));for(let[n,d]of o){let t=new Map;for(let e=0;e<d.length;e++){let a=d[e],l=a.parent_name,s=l||a.name,o=a.geom(),r=(a.data.width?a.data.width:o.scrollWidth)-(o.right-o.left);if(r>1&&!f.includes(a.type)&&n>0&&!i[a.fullname]){let e=n>r?r:n;n-=e,i[a.fullname]=[e,1]}if(s=a.parent_name,s){let e=v[s],l=e.$el.getBoundingClientRect().right-6,i=e.free_right_delta4(a,o.right),n=l-i;i&&n>0&&(!t.has(s)||t.get(s)>n)&&t.set(s,n)}}for(let e of t.values())n+=e;let a=[];for(let o of d)if(o.expanding_width&&(e||f.includes(o.type)))if(i[o.fullname]){let[e,t]=i[o.fullname];n-=e/t}else a.push(o);let l=a.length;const s=n/l;for(let e of a)i[e.fullname]||(i[e.fullname]=[Math.floor(s),1]);for(let e of d)i[e.fullname]||(i[e.fullname]=[0,1])}return i}const H=(0,l.aZ)({name:"menubar",methods:{send(){_(["root",null,"changed",this.name])}},props:{name:{type:String,required:!0},icon:{type:String,default:""}}});var K=a(4260),Q=a(3414),U=a(2035),F=a(4554),T=a(2350),P=a(7518),R=a.n(P);const L=(0,K.Z)(H,[["render",d]]),B=L;R()(H,"components",{QItem:Q.Z,QItemSection:U.Z,QIcon:F.Z,QItemLabel:T.Z});const I={key:0,class:"row q-col-gutter-xs q-py-xs"},Y={class:"q-col-gutter-xs"},G={key:0,class:"column q-col-gutter-xs"};function J(e,t,a,s,i,o){const n=(0,l.up)("zone",!0),d=(0,l.up)("block");return e.data instanceof Array?((0,l.wg)(),(0,l.iD)("div",I,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.data,(e=>((0,l.wg)(),(0,l.iD)("div",Y,[e instanceof Array?((0,l.wg)(),(0,l.iD)("div",G,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e,(e=>((0,l.wg)(),(0,l.j4)(n,{class:"q-col-gutter-xs q-py-xs",data:e},null,8,["data"])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,data:e},null,8,["data"]))])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,data:e.data},null,8,["data"]))}const X={class:"row no-wrap"},ee=["data","pdata"],te={key:0,class:"row"},ae=["data","pdata"],le={key:0,class:"row no-wrap"};function se(e,t,a,i,o,n){const d=(0,l.up)("element"),r=(0,l.up)("q-icon"),c=(0,l.up)("q-scroll-area"),h=(0,l.up)("q-card");return(0,l.wg)(),(0,l.j4)(h,{class:"my-card q-ma-xs",style:(0,s.j5)(e.only_fixed_elems?e.styleSize:null),key:e.name},{default:(0,l.w5)((()=>[(0,l._)("div",X,[e.data.logo?((0,l.wg)(),(0,l.j4)(d,{key:0,class:"q-ma-sm",data:e.data.logo,pdata:e.data},null,8,["data","pdata"])):e.data.icon?((0,l.wg)(),(0,l.j4)(r,{key:1,class:"q-mt-sm",size:"sm",name:e.data.icon},null,8,["name"])):(0,l.kq)("",!0),"_"!=e.name[0]?((0,l.wg)(),(0,l.iD)("p",{key:2,class:(0,s.C_)(["q-ma-sm",{"text-info":e.Dark.isActive,"text-cyan-10":!e.Dark.isActive}]),style:{"font-size":"18px"}},(0,s.zw)(e.name),3)):(0,l.kq)("",!0),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.tops,(t=>((0,l.wg)(),(0,l.j4)(d,{class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"])))),256))]),e.data.scroll?((0,l.wg)(),(0,l.j4)(c,{key:0,style:(0,s.j5)(e.styleSize),"thumb-style":e.thumbStyle,"bar-style":e.barStyle},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.data.value.slice(1),(t=>((0,l.wg)(),(0,l.iD)("div",{class:"column",data:t,pdata:e.data},[t instanceof Array?((0,l.wg)(),(0,l.iD)("div",te,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(t,(t=>((0,l.wg)(),(0,l.j4)(d,{class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"]))],8,ee)))),256))])),_:1},8,["style","thumb-style","bar-style"])):((0,l.wg)(!0),(0,l.iD)(l.HY,{key:1},(0,l.Ko)(e.data.value.slice(1),(t=>((0,l.wg)(),(0,l.iD)("div",{class:"column",data:t,pdata:e.data},[t instanceof Array?((0,l.wg)(),(0,l.iD)("div",le,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(t,(t=>((0,l.wg)(),(0,l.j4)(d,{class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"]))],8,ae)))),256))])),_:1},8,["style"])}var ie=a(8880);const oe=e=>((0,l.dD)("data-v-f48596a0"),e=e(),(0,l.Cn)(),e),ne={key:4},de={key:5,class:"{'bg-blue-grey-9': Dark.isActive}"},re={key:9},ce={key:12},he=["width","height"],ue=["src"],pe={key:19,class:"web-camera-container"},ge={class:"camera-button"},me={key:0},fe={key:1},ye={class:"camera-loading"},we=oe((()=>(0,l._)("ul",{class:"loader-circle"},[(0,l._)("li"),(0,l._)("li"),(0,l._)("li")],-1))),be=[we],ve=["height"],ke=["height"],xe={key:1,class:"camera-shoot"},Ce=oe((()=>(0,l._)("img",{src:"https://img.icons8.com/material-outlined/50/000000/camera--v2.png"},null,-1))),_e=[Ce],Ae={key:2,class:"camera-download"},Se={key:20};function qe(e,t,a,i,o,n){const d=(0,l.up)("q-icon"),r=(0,l.up)("q-img"),c=(0,l.up)("q-select"),h=(0,l.up)("q-checkbox"),u=(0,l.up)("q-toggle"),p=(0,l.up)("q-badge"),g=(0,l.up)("q-slider"),m=(0,l.up)("q-btn"),f=(0,l.up)("q-btn-toggle"),y=(0,l.up)("utable"),w=(0,l.up)("linechart"),b=(0,l.up)("q-input"),v=(0,l.up)("q-tree"),k=(0,l.up)("q-scroll-area"),x=(0,l.up)("q-separator"),C=(0,l.up)("q-uploader"),_=(0,l.up)("sgraph"),A=(0,l.up)("q-tooltip"),S=(0,l.up)("q-spinner-ios");return"image"==e.type?((0,l.wg)(),(0,l.j4)(r,{key:0,src:e.data.url,"spinner-color":"blue",onClick:(0,ie.iM)(e.switchValue,["stop"]),fit:"cover",style:(0,s.j5)(e.elemSize)},{default:(0,l.w5)((()=>[e.data.label?((0,l.wg)(),(0,l.iD)("div",{key:0,class:"absolute-bottom-right text-subtitle2 custom-caption",onClick:t[0]||(t[0]=(0,ie.iM)(((...t)=>e.lens&&e.lens(...t)),["stop"]))},(0,s.zw)(e.data.label),1)):(0,l.kq)("",!0),e.value?((0,l.wg)(),(0,l.j4)(d,{key:1,class:"absolute all-pointer-events",size:"32px",name:"check_circle",color:"light-blue-2",style:{"font-size":"2em",top:"8px",left:"8px"}})):(0,l.kq)("",!0)])),_:1},8,["src","onClick","style"])):"select"==e.type?((0,l.wg)(),(0,l.j4)(c,{key:1,"transition-show":"flip-up",readonly:0==e.data.edit,"transition-hide":"flip-down",dense:"",modelValue:e.value,"onUpdate:modelValue":t[1]||(t[1]=t=>e.value=t),options:e.data.options},(0,l.Nv)({_:2},[e.showname?{name:"prepend",fn:(0,l.w5)((()=>[(0,l._)("p",{class:(0,s.C_)(["text-subtitle1 q-ma-sm",{white:e.Dark.isActive,black:!e.Dark.isActive}])},(0,s.zw)(e.name),3)])),key:"0"}:void 0]),1032,["readonly","modelValue","options"])):"check"==e.type?((0,l.wg)(),(0,l.j4)(h,{key:2,"left-label":"",disable:0==e.data.edit,modelValue:e.value,"onUpdate:modelValue":t[2]||(t[2]=t=>e.value=t),label:e.nameLabel,"checked-icon":"task_alt","unchecked-icon":"highlight_off"},null,8,["disable","modelValue","label"])):"switch"==e.type?((0,l.wg)(),(0,l.j4)(u,{key:3,modelValue:e.value,"onUpdate:modelValue":t[3]||(t[3]=t=>e.value=t),disable:0==e.data.edit,color:"primary",label:e.nameLabel,"left-label":""},null,8,["modelValue","disable","label"])):"range"==e.type?((0,l.wg)(),(0,l.iD)("div",ne,[(0,l.Wm)(p,{outline:"",dense:"",color:e.Dark.isActive?"blue-3":"blue-9"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.name)+": "+(0,s.zw)(e.value)+" ("+(0,s.zw)(e.data.options[0])+" to "+(0,s.zw)(e.data.options[1])+", Δ "+(0,s.zw)(e.data.options[2])+")",1)])),_:1},8,["color"]),(0,l.Wm)(g,{class:"q-pl-sm",dense:"",modelValue:e.value,"onUpdate:modelValue":t[4]||(t[4]=t=>e.value=t),min:e.data.options[0],max:e.data.options[1],step:e.data.options[2],color:"primary"},null,8,["modelValue","min","max","step"])])):"radio"==e.type?((0,l.wg)(),(0,l.iD)("div",de,[e.showname?((0,l.wg)(),(0,l.j4)(m,{key:0,ripple:!1,color:"indigo-10",disable:"",label:e.name,"no-caps":""},null,8,["label"])):(0,l.kq)("",!0),(0,l.Wm)(f,{modelValue:e.value,"onUpdate:modelValue":t[5]||(t[5]=t=>e.value=t),readonly:0==e.data.edit,class:(0,s.C_)({"bg-blue-grey-9":e.Dark.isActive}),"no-caps":"",options:e.data.options.map((e=>({label:e,value:e})))},null,8,["modelValue","readonly","class","options"])])):"table"==e.type?((0,l.wg)(),(0,l.j4)(y,{key:6,data:e.data,pdata:e.pdata,styleSize:e.styleSize},null,8,["data","pdata","styleSize"])):"chart"==e.type?((0,l.wg)(),(0,l.j4)(w,{key:7,data:e.data,pdata:e.pdata,styleSize:e.styleSize},null,8,["data","pdata","styleSize"])):"string"==e.type&&e.data.hasOwnProperty("complete")?((0,l.wg)(),(0,l.j4)(c,{key:8,dense:"",readonly:0==e.data.edit,modelValue:e.value,"onUpdate:modelValue":t[6]||(t[6]=t=>e.value=t),"use-input":"","hide-selected":"",borderless:"",outlined:"","hide-bottom-space":"","fill-input":"","input-debounce":"0",options:e.options,onFilter:e.complete,label:e.name,onKeydown:(0,ie.D2)(e.pressedEnter,["enter"])},null,8,["readonly","modelValue","options","onFilter","label","onKeydown"])):"string"==e.type&&0==e.data.edit?((0,l.wg)(),(0,l.iD)("div",re,[(0,l._)("p",{class:(0,s.C_)(["q-ma-sm",{white:e.Dark.isActive,black:!e.Dark.isActive}])},(0,s.zw)(e.value),3)])):"string"==e.type?((0,l.wg)(),(0,l.j4)(b,{key:10,modelValue:e.value,"onUpdate:modelValue":t[7]||(t[7]=t=>e.value=t),label:e.name2show,ref:"inputRef",autogrow:e.data.autogrow,dense:"",onKeydown:(0,ie.D2)(e.pressedEnter,["enter"]),readonly:0==e.data.edit},null,8,["modelValue","label","autogrow","onKeydown","readonly"])):"number"==e.type?((0,l.wg)(),(0,l.j4)(b,{key:11,modelValue:e.value,"onUpdate:modelValue":t[8]||(t[8]=t=>e.value=t),modelModifiers:{number:!0},label:e.name2show,ref:"inputRef",dense:"",onKeydown:(0,ie.D2)(e.pressedEnter,["enter"]),type:"number",readonly:0==e.data.edit},null,8,["modelValue","label","onKeydown","readonly"])):"tree"==e.type||"list"==e.type?((0,l.wg)(),(0,l.iD)("div",ce,[e.showname?((0,l.wg)(),(0,l.iD)("p",{key:0,class:(0,s.C_)(["text-subtitle1 q-ma-sm text-grey-7",{"text-white":e.Dark.isActive,"text-indigo-10":!e.Dark.isActive}])},(0,s.zw)(e.name),3)):(0,l.kq)("",!0),(0,l.Wm)(k,{style:(0,s.j5)(e.styleSize),"thumb-style":e.thumbStyle,"bar-style":e.barStyle,ref:"scroller"},{default:(0,l.w5)((()=>[(0,l.Wm)(v,{nodes:e.treeNodes,"selected-color":e.Dark.isActive?"blue-3":"blue-9",dense:e.data.dense,ref:"tree",selected:e.value,"onUpdate:selected":t[9]||(t[9]=t=>e.value=t),expanded:e.expandedKeys,"onUpdate:expanded":t[10]||(t[10]=t=>e.expandedKeys=t),"node-key":"label","default-expand-all":""},null,8,["nodes","selected-color","dense","selected","expanded"])])),_:1},8,["style","thumb-style","bar-style"])])):"text"==e.type?(0,l.wy)(((0,l.wg)(),(0,l.iD)("textarea",{key:13,class:(0,s.C_)(["textarea",{"bg-grey-10":e.Dark.isActive,"text-white":e.Dark.isActive}]),"onUpdate:modelValue":t[11]||(t[11]=t=>e.value=t),filled:"",type:"textarea",style:(0,s.j5)(e.elemSize),onKeydown:t[12]||(t[12]=(0,ie.D2)(((...t)=>e.pressedEnter&&e.pressedEnter(...t)),["enter"]))},null,38)),[[ie.nr,e.value]]):"line"==e.type?((0,l.wg)(),(0,l.j4)(x,{key:14,color:"green"})):"video"==e.type?((0,l.wg)(),(0,l.iD)("video",{key:e.fullname,controls:"",width:e.data.width,height:e.data.height},[(0,l._)("source",{src:e.data.url,type:"video/mp4"},null,8,ue)],8,he)):"uploader"==e.type?((0,l.wg)(),(0,l.j4)(C,{key:16,label:e.name,"auto-upload":"",thumbnails:"",url:e.host_path,onUploaded:e.updateDom,onAdded:e.onAdded,style:(0,s.j5)(e.elemSize),ref:"uploaderRef",flat:"",class:(0,s.C_)({"bg-grey-10":e.Dark.isActive}),color:e.Dark.isActive?"purple-10":"blue"},null,8,["label","url","onUploaded","onAdded","style","class","color"])):"image_uploader"==e.type?((0,l.wg)(),(0,l.j4)(C,{key:17,label:e.name,"auto-upload":"",thumbnails:"",url:e.host_path,onUploaded:e.updateDom,onAdded:e.onAdded,ref:"uploaderRef",flat:"",class:(0,s.C_)({"bg-grey-10":e.Dark.isActive}),color:e.Dark.isActive?"purple-10":"blue"},null,8,["label","url","onUploaded","onAdded","class","color"])):"graph"==e.type?((0,l.wg)(),(0,l.j4)(_,{key:18,data:e.data,pdata:e.pdata,styleSize:e.elemSize},null,8,["data","pdata","styleSize"])):"camera"==e.type?((0,l.wg)(),(0,l.iD)("div",pe,[(0,l._)("div",ge,[(0,l._)("button",{class:(0,s.C_)(["button is-rounded",{"is-primary":!e.isCameraOpen,"is-danger":e.isCameraOpen}]),type:"button",onClick:t[13]||(t[13]=(...t)=>e.toggleCamera&&e.toggleCamera(...t))},[e.isCameraOpen?((0,l.wg)(),(0,l.iD)("span",fe,"Close Camera")):((0,l.wg)(),(0,l.iD)("span",me,"Open Camera"))],2)]),(0,l.wy)((0,l._)("div",ye,be,512),[[ie.F8,e.isCameraOpen&&e.isLoading]]),e.isCameraOpen?(0,l.wy)(((0,l.wg)(),(0,l.iD)("div",{key:0,class:(0,s.C_)(["camera-box",{flash:e.isShotPhoto}])},[(0,l._)("div",{class:(0,s.C_)(["camera-shutter",{flash:e.isShotPhoto}])},null,2),(0,l.wy)((0,l._)("video",{ref:"camera",width:450,height:337.5,autoplay:""},null,8,ve),[[ie.F8,!e.isPhotoTaken]]),(0,l.wy)((0,l._)("canvas",{id:"photoTaken",ref:"canvas",width:450,height:337.5},null,8,ke),[[ie.F8,e.isPhotoTaken]])],2)),[[ie.F8,!e.isLoading]]):(0,l.kq)("",!0),e.isCameraOpen&&!e.isLoading?((0,l.wg)(),(0,l.iD)("div",xe,[(0,l._)("button",{class:"button",type:"button",onClick:t[14]||(t[14]=(...t)=>e.takePhoto&&e.takePhoto(...t))},_e)])):(0,l.kq)("",!0),e.isPhotoTaken&&e.isCameraOpen?((0,l.wg)(),(0,l.iD)("div",Ae,[(0,l.Wm)(m,{onClick:e.downloadImage,label:"Send"},null,8,["onClick"])])):(0,l.kq)("",!0)])):""!=e.showname?((0,l.wg)(),(0,l.iD)("div",Se,[(0,l.Wm)(m,{"no-caps":"",disable:0==e.data.edit,class:(0,s.C_)({"bg-blue-grey-8":e.Dark.isActive}),label:e.name,icon:e.data.icon,onClick:e.sendValue},{default:(0,l.w5)((()=>[e.data.tooltip?((0,l.wg)(),(0,l.j4)(A,{key:0,class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.data.tooltip),1)])),_:1})):(0,l.kq)("",!0)])),_:1},8,["disable","class","label","icon","onClick"])])):e.data.spinner?((0,l.wg)(),(0,l.j4)(m,{key:22,"no-caps":"",dense:"",disable:0==e.data.edit,round:"",class:(0,s.C_)({"bg-blue-grey-8":e.Dark.isActive}),onClick:e.sendValue},{default:(0,l.w5)((()=>[(0,l.Wm)(S,{color:e.Dark.isActive?"white":"black"},null,8,["color"]),e.data.tooltip?((0,l.wg)(),(0,l.j4)(A,{key:0,class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.data.tooltip),1)])),_:1})):(0,l.kq)("",!0)])),_:1},8,["disable","class","onClick"])):((0,l.wg)(),(0,l.j4)(m,{key:21,"no-caps":"",disable:0==e.data.edit,dense:"",round:"",class:(0,s.C_)({"bg-blue-grey-8":e.Dark.isActive}),icon:e.data.icon,onClick:e.sendValue},{default:(0,l.w5)((()=>[e.data.tooltip?((0,l.wg)(),(0,l.j4)(A,{key:0,class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.data.tooltip),1)])),_:1})):(0,l.kq)("",!0)])),_:1},8,["disable","class","icon","onClick"]))}const De={key:0},ze={class:"row"},je=["onClick"];function Ee(e,t,a,i,o,n){const d=(0,l.up)("q-icon"),r=(0,l.up)("q-tooltip"),c=(0,l.up)("q-input"),h=(0,l.up)("q-btn"),u=(0,l.up)("q-th"),p=(0,l.up)("q-tr"),g=(0,l.up)("q-checkbox"),m=(0,l.up)("q-select"),f=(0,l.up)("q-td"),y=(0,l.up)("q-table");return(0,l.wg)(),(0,l.j4)(y,{"virtual-scroll":"",dense:e.data.dense,style:(0,s.j5)(e.styleSize?e.styleSize:e.currentStyle()),flat:"",filter:e.search,ref:"table",virtualScrollSliceSize:"100","rows-per-page-options":[0],"virtual-scroll-sticky-size-start":48,"row-key":"iiid",title:e.name,rows:e.rows,columns:e.columns,selection:e.singleMode?"single":"multiple",selected:e.selected,"onUpdate:selected":t[2]||(t[2]=t=>e.selected=t)},{"top-right":(0,l.w5)((()=>[!1!==e.data.tools?((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",ze,[(0,l.Wm)(c,{modelValue:e.search,"onUpdate:modelValue":t[1]||(t[1]=t=>e.search=t),label:"Search",dense:"",ref:"searchField"},(0,l.Nv)({append:(0,l.w5)((()=>[""!=e.search?((0,l.wg)(),(0,l.j4)(d,{key:0,class:"cursor-pointer",name:"close",size:"xs",onClick:t[0]||(t[0]=t=>{e.search="",e.$refs.searchField.focus()})},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Reset search ")])),_:1})])),_:1})):(0,l.kq)("",!0)])),_:2},[""==e.search?{name:"prepend",fn:(0,l.w5)((()=>[(0,l.Wm)(d,{name:"search",size:"xs"})])),key:"0"}:void 0]),1032,["modelValue"]),(0,l._)("div",null,[(0,l.Wm)(h,{class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"select_all","no-caps":"",onClick:e.showSelected},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Show selected ")])),_:1})])),_:1},8,["class","onClick"]),(0,l.Wm)(h,{class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"deselect","no-caps":"",onClick:e.deselectAll},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Deselect all")])),_:1})])),_:1},8,["class","onClick"]),!1!==e.data.multimode?((0,l.wg)(),(0,l.j4)(h,{key:0,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:e.singleMode?"looks_one":"grain","no-caps":"",onClick:e.switchMode},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Multi-single select mode ")])),_:1})])),_:1},8,["class","icon","onClick"])):(0,l.kq)("",!0),e.editable?((0,l.wg)(),(0,l.j4)(h,{key:1,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:e.editMode?"cancel":"edit","no-caps":"",onClick:e.switchEdit},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Edit mode")])),_:1})])),_:1},8,["class","icon","onClick"])):(0,l.kq)("",!0),e.editable&&"append"in e.data?((0,l.wg)(),(0,l.j4)(h,{key:2,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"add","no-caps":"",onClick:e.append},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Add a new row")])),_:1})])),_:1},8,["class","onClick"])):(0,l.kq)("",!0),"delete"in e.data?((0,l.wg)(),(0,l.j4)(h,{key:3,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"delete_forever","no-caps":"",onClick:e.delSelected},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Delete selected ")])),_:1})])),_:1},8,["class","onClick"])):(0,l.kq)("",!0),"view"in e.data?((0,l.wg)(),(0,l.j4)(h,{key:4,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"insights","no-caps":"",onClick:e.chart},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Draw the chart")])),_:1})])),_:1},8,["class","onClick"])):(0,l.kq)("",!0)])])])):(0,l.kq)("",!0)])),header:(0,l.w5)((t=>[(0,l.Wm)(p,{props:t},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(t.cols,(a=>((0,l.wg)(),(0,l.j4)(u,{class:(0,s.C_)(["text-italic",{"text-grey-9":!e.Dark.isActive,"text-teal-3":e.Dark.isActive}]),key:a.name,props:t},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(a.label),1)])),_:2},1032,["class","props"])))),128))])),_:2},1032,["props"])])),body:(0,l.w5)((t=>[(0,l.Wm)(p,{props:t,onClick:e=>t.selected=!t.selected},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.columns,((a,i)=>((0,l.wg)(),(0,l.j4)(f,{key:a.name,props:t},{default:(0,l.w5)((()=>["boolean"==typeof t.row[a.name]?((0,l.wg)(),(0,l.j4)(g,{key:0,modelValue:t.row[a.name],"onUpdate:modelValue":[e=>t.row[a.name]=e,l=>e.change_switcher(t.row,a.name,i)],dense:"",disable:!e.editMode},null,8,["modelValue","onUpdate:modelValue","disable"])):e.editMode&&"complete"in e.data&&i==e.cedit&&e.redit==t.row.iiid?((0,l.wg)(),(0,l.j4)(m,{key:1,dense:"","model-value":t.row[a.name],"use-input":"","hide-selected":"","fill-input":"",autofocus:"",outlined:"",borderless:"",onInputValue:e.change,"hide-dropdown-icon":"","input-debounce":"0",options:e.options,onKeydown:e.keyInput,onFilter:e.complete},null,8,["model-value","onInputValue","options","onKeydown","onFilter"])):e.editMode&&i==e.cedit&&e.redit==t.row.iiid?((0,l.wg)(),(0,l.j4)(c,{key:2,modelValue:t.row[a.name],"onUpdate:modelValue":[e=>t.row[a.name]=e,e.change],dense:"",onKeydown:e.keyInput,autofocus:""},null,8,["modelValue","onUpdate:modelValue","onKeydown"])):((0,l.wg)(),(0,l.iD)("div",{key:3,onClick:a=>e.select(t.row.iiid,i)},(0,s.zw)(t.row[a.name]),9,je))])),_:2},1032,["props"])))),128))])),_:2},1032,["props","onClick"])])),_:1},8,["dense","style","filter","title","rows","columns","selection","selected"])}var $e=a(1959),Ze=a(9058);function Me(e,t){return e.length===t.length&&e.every(((e,a)=>t[a]&&e.iiid==t[a].iiid))}const Oe=(0,l.aZ)({name:"utable",setup(e){const{data:t,pdata:a}=(0,$e.BK)(e);let s=(0,l.Fl)((()=>{let e=[],a=t.value;const l=a.headers,s=l.length,i=a.rows,o=i.length;for(var n=0;n<o;n++){const t={},a=i[n];for(var d=0;d<s;d++)t[l[d]]=a[d];t.iiid=n,e.push(t)}return e})),i=()=>{let e=t.value,a=null===e.value||0==s.value.length?[]:Array.isArray(e.value)?e.value.map((e=>s.value[e])):[s.value[e.value]];return a},o=i(),n=(0,$e.iH)(o),d=(0,$e.iH)(o),r=(0,$e.iH)(!Array.isArray(t.value.value)),c=(e,l)=>{_([a.value.name,t.value.name,e,l])},h=(0,l.Fl)((()=>r.value?d.value.length>0?d.value[0].iiid:null:d.value.map((e=>e.iiid)))),u=(0,l.Fl)((()=>t.value.value));return(0,l.YP)(s,((e,t)=>{d.value=i(),n.value=d.value})),(0,l.YP)(t,((e,a)=>{m&&console.log("data update",a.name),d.value=i(),n.value=d.value,r.value=!Array.isArray(t.value.value)})),{rows:s,value:h,selected:d,singleMode:r,sendMessage:c,datavalue:u,updated:n}},data(){return{Dark:Ze.Z,search:"",editMode:!1,options:[],cedit:null}},methods:{currentStyle(){let e=this.data.tablerect;if(e){let t=e.width,a=e.height;return`width: ${t}px; height: ${a}px`}return null},select(e,t){this.editMode&&(this.cedit=t,m&&console.log("selected",e,this.cedit))},change_switcher(e,t,a){if(console.log(e,t,a,e[t]),this.editMode){this.cedit=a;const l=e.iiid;let s=this.data.rows;s[l][a]=e[t],this.sendMessage("modify",[e[t],[l,a]])}},change(e){if(m&&console.log("changed",this.data.headers[this.cedit],e),this.editMode&&this.selected.length){const t=this.selected[0].iiid;let a=this.data.rows;a[t][this.cedit]=e,this.sendMessage("modify",[e,[t,this.cedit]])}},keyInput(e){if("Control"==e.key)return;let t=!1;switch(e.key){case"Enter":"update"in this.data&&this.sendMessage("update",[this.rows[this.redit][this.data.headers[this.cedit]],[this.redit,this.cedit]]),t=!0;case"ArrowRight":if(e.ctrlKey||t)for(let e=this.cedit+1;e<this.data.rows[this.redit].length;e++){let t=typeof this.data.rows[this.redit][e];if("string"==t||"number"==t){this.cedit=e;break}}break;case"Escape":this.switchEdit();break;case"ArrowLeft":if(e.ctrlKey)for(let e=this.cedit-1;e>=0;e--){let t=typeof this.data.rows[this.redit][e];if("string"==t||"number"==t){this.cedit=e;break}}break;case"ArrowUp":if(e.ctrlKey&&this.redit>0){let e=this.redit-1,t=this.data,a=typeof t.rows[e][this.cedit];"string"!=a&&"number"!=a||(t.value=e),this.selected=[this.rows[e]]}break;case"ArrowDown":if(e.ctrlKey&&this.redit+1<this.rows.length){let e=this.redit+1,t=this.data,a=typeof t.rows[e][this.cedit];"string"!=a&&"number"!=a||(t.value=e),this.selected=[this.rows[e]]}break}},complete(e,t,a){D(this,[e,[this.redit,this.cedit]],(e=>t((()=>{this.options=e}))))},append(){let e=this.data.rows,t=e.length,a=this;D(this,[t,this.search],(function(l){if(!Array.isArray(l))return h.error(l);m&&console.log("added row",l),a.search="",e.push(l),setTimeout((()=>{let e=a.rows;a.selected=[e[t]],a.showSelected(),a.editMode||a.switchEdit(),a.select(e[t],0)}),100)}),"append")},showSelected(){let e=this.$refs.table;if(this.selected.length){let t=e.computedRows.findIndex((e=>e.iiid===this.selected[0].iiid));e.scrollTo(t)}},deselectAll(){this.selected=[],this.sendMessage("changed",this.value)},chart(){let e=this.data;e.type="chart",e.tablerect=this.$refs.table.$el.getBoundingClientRect(),k[this.fullname].styleSize=this.currentStyle()},switchMode(){this.singleMode=!this.singleMode,this.singleMode&&this.selected.length>1&&this.selected.splice(1)},switchEdit(){this.editMode=!this.editMode,this.editMode&&!this.singleMode&&this.switchMode()},delSelected(){if(!this.selected.length)return void h.error("Rows are not selected!");this.sendMessage("delete",this.value);let e=this.data.rows;if(this.singleMode){let t=this.selected[0].iiid;this.selected=[],e.splice(t,1)}else{this.selected.length>1&&this.selected.sort(((e,t)=>t.iiid-e.iiid));let t=this.selected.map((e=>e.iiid));this.selected=[];for(let a of t)e.splice(a,1)}}},watch:{selected(e){const t=this.data;if(!Me(this.updated,this.selected)){let e=this.selected.length;t.value=this.singleMode?1==e?this.selected[0].iiid:null:this.selected.map((e=>e.iiid)),this.sendMessage("changed",t.value),this.updated=this.selected}t.show&&(this.showSelected(),t.show=!1)}},computed:{fullname(){return`${this.data.name}@${this.pdata.name}`},redit(){return this.editMode&&this.selected.length?this.selected[0].iiid:null},editable(){return 0!=this.data["edit"]},name(){return"_"==this.data.name?"":this.data.name},columns(){return this.data.headers.map((e=>({name:e,label:e,align:"left",sortable:!0,field:e})))}},props:{data:Object,pdata:Object,styleSize:String}});var We=a(9267),Ne=a(4842),Ve=a(8870),He=a(2165),Ke=a(8186),Qe=a(2414),Ue=a(3884),Fe=a(5735),Te=a(7208);const Pe=(0,K.Z)(Oe,[["render",Ee]]),Re=Pe;function Le(e,t,a,i,o,n){return(0,l.wg)(),(0,l.iD)("div",{ref:"graph",style:(0,s.j5)(a.styleSize),id:"graph"},null,4)}R()(Oe,"components",{QTable:We.Z,QInput:Ne.Z,QIcon:F.Z,QTooltip:Ve.Z,QBtn:He.Z,QTr:Ke.Z,QTh:Qe.Z,QTd:Ue.Z,QCheckbox:Fe.Z,QSelect:Te.Z});var Be=a(130),Ie=a.n(Be),Ye=a(309);var Ge=a(5154),Je=a.n(Ge),Xe=a(4150),et=a.n(Xe);let tt="#091159",at={hideEdgesOnMove:!1,hideLabelsOnMove:!1,renderLabels:!0,renderEdgeLabels:!0,enableEdgeClickEvents:!0,enableEdgeWheelEvents:!1,enableEdgeHoverEvents:!0,enableEdgeHovering:!0,allowInvalidContainer:!0,enableEdgeClickEvents:!0,enableEdgeHoverEvents:!0,defaultNodeColor:"#FCA072",defaultNodeType:"circle",defaultEdgeColor:"#888",defaultEdgeType:"arrow",labelFont:"Arial",labelSize:14,labelWeight:"normal",labelColor:{color:"#00838F",attribute:"#000"},edgeLabelFont:"Arial",edgeLabelSize:14,edgeLabelWeight:"normal",edgeLabelColor:{attribute:"color"},stagePadding:30,labelDensity:1,labelGridCellSize:100,labelRenderedSizeThreshold:6,animationsTime:1e3,borderSize:2,outerBorderSize:3,defaultNodeOuterBorderColor:"rgb(236, 81, 72)",edgeHoverHighlightNodes:"circle",sideMargin:1,edgeHoverColor:"edge",defaultEdgeHoverColor:"#062646",edgeHoverSizeRatio:1,edgeHoverExtremities:!0,scalingMode:"outside"};const lt={name:"sgraph",props:{data:{type:Object,required:!0},pdata:{type:Object,required:!0},styleSize:String},data(){return{Dark:Ze.Z,s:null,state:{searchQuery:""},selectedNodes:[],selectedEdges:[],graph:null,fa2start:null,fa2stop:null,fa2run:null}},methods:{sendMessage(e,t){_([this.pdata["name"],this.data["name"],e,t])},refresh(){let e=this.graph();const t=et().inferSettings(e);let a=new(Je())(e,{settings:t});m&&console.log("refresh graph",this.data.name,this.pdata.name),a.isRunning()||(a.start(),setTimeout((function(){a.stop()}),1e3))},setSelectedEdges(e){this.s.selectEdges(e)},setSearchQuery(e){if(e){const t=e.toLowerCase(),a=this.graph().nodes().map((e=>({id:e,label:graph.getNodeAttribute(e,"label")}))).filter((({label:e})=>e.toLowerCase().includes(t)));if(1===a.length&&a[0].label===e){this.state.selectedNode=a[0].id,this.state.suggestions=void 0;const e=this.s.getNodeDisplayData(this.state.selectedNode);this.s.getCamera().animate(e,{duration:500})}else this.state.selectedNode=void 0,this.state.suggestions=new Set(a.map((({id:e})=>e)))}else this.state.selectedNode=void 0,this.state.suggestions=void 0;this.s.refresh()},load(e){let t=e.value;this.selectedNodes=t.nodes?t.nodes.map((e=>String(e))):[],this.selectedEdges=t.edges?t.edges.map((e=>String(e))):[];let a=e.sizing,l=e.nodes,s=this.graph(),i=[],o=[],n=new Map;for(let h=0;h<l.length;h++){if(!l[h])continue;let e=Object.assign({},l[h]);void 0==e.id&&(e.id=h),void 0!=e.name&&(e.label=e.name);let t={key:String(e.id),attributes:e};e.size=e.size?e.size:10,i.push(t),n.set(e.id,h);let a=s._nodes.get(t.key);a?(e.x=a.attributes.x,e.y=a.attributes.y):(e.x=Math.random(),e.y=Math.random()),this.selectedNodes.includes(t.key)&&(e.highlighted=!0)}let d=[],r=new Map,c=Array(i.length).fill(0);for(let h=0;h<e.edges.length;h++){let t=Object.assign({},e.edges[h]),l=n.get(t.source),s=n.get(t.target);if(void 0==l||void 0==s)continue;if(void 0==t.id&&(t.id=h),t.name&&(t.label=t.name),t.key=String(t.id),o.push(t),a){"in"!=a&&(s=n.get(t.source),l=n.get(t.target)),c[s]++,r.has(s)?r.get(s).push(l):r.set(s,[l]);let e=d.indexOf(l),i=d.indexOf(s);if(-1==e&&(e=d.length,d.push(l)),-1==i&&(i=d.length,d.push(s)),i<e){let t=d[e];d[e]=d[i],d[i]=t}}let i=t.attributes;i||(i={},t.attributes=i),i.id=t.id,i.size=t.size?t.size:5,this.selectedEdges.includes(t.key)?(i.ocolor=i.color?i.color:at.defaultEdgeColor,i.color=tt):t.color&&(i.color=t.color),t.label&&(i.label=t.label)}if(a)for(let h=0;h<d.length;h++){let e=d[h];if(r.has(e))for(let t of r.get(e))c[e]+=c[t];i[e].attributes.size=10+c[e]}s.clear(),s.import({nodes:i,edges:o}),this.refresh()}},computed:{value(){let e=this.graph(),t=this.selectedNodes.map((t=>e._nodes.get(t).attributes.id)),a=this.selectedEdges.map((t=>e._edges.get(t).attributes.id));return{nodes:t,edges:a}}},watch:{data:{handler(e,t){m&&console.log("data update",this.data.name,this.pdata.name),this.load(e)},deep:!0},"Dark.isActive":function(e){this.s.settings.labelColor.color=e?"#00838F":"#000",this.s.refresh()}},updated(){this.s.refresh(),m&&console.log("updated",this.data.name,this.pdata.name)},mounted(){let e=new Ye.MultiDirectedGraph;this.graph=()=>e;let t=this.$refs.graph;this.s=new(Ie())(e,t,at);let a=this.s;var l=this;function s(t){t?l.state.hoveredNeighbors=new Set(e.neighbors(t)):(l.state.hoveredNode=void 0,l.state.hoveredNeighbors=void 0),a.refresh()}function i(t,a=tt){let l=e.getEdgeAttributes(t);l.color!=a&&(l.ocolor||(l.ocolor=l.color?l.color:at.defaultEdgeColor),e.setEdgeAttribute(t,"color",a))}function o(t,a=tt){let l=e.getEdgeAttributes(t);if(l.color==a){let a=e.getEdgeAttribute(t,"ocolor");e.setEdgeAttribute(t,"color",a)}}this.s.settings.labelColor.color=Ze.Z.isActive?"#00838F":"#000",a.on("clickNode",(function(t){let s=t.node;if(!h.shiftKey){for(let e of l.selectedEdges)o(e);l.selectedEdges=[]}if(l.selectedNodes.includes(s))if(e.setNodeAttribute(s,"highlighted",!1),h.shiftKey){let e=l.selectedNodes.indexOf(s);-1!=e&&l.selectedNodes.array.splice(e,1)}else l.selectedNodes=[];else{if(!h.shiftKey&&l.selectedNodes.length>0){for(let t of l.selectedNodes)e.setNodeAttribute(t,"highlighted",!1);l.selectedNodes=[]}e.setNodeAttribute(s,"highlighted",!0),l.selectedNodes.push(s)}a.refresh(),l.sendMessage("changed",l.value)})),a.on("clickEdge",(function({edge:t}){if(!h.shiftKey){for(let t of l.selectedNodes)e.setNodeAttribute(t,"highlighted",!1);l.selectedNodes=[]}if(l.selectedEdges.includes(t))if(o(t),h.shiftKey){let e=l.selectedEdges.indexOf(t);-1!=e&&l.selectedEdges.array.splice(e,1)}else l.selectedEdges=[];else{if(!h.shiftKey&&l.selectedEdges.length>0){for(let e of l.selectedEdges)o(e);l.selectedEdges=[]}i(t),l.selectedEdges.push(t)}a.refresh(),l.sendMessage("changed",l.value)})),a.on("enterNode",(function({node:t}){for(let a of e.edgeEntries())a.target==t?i(a.edge,"#808000"):a.source==t&&i(a.edge,"#2F4F4F");s(t)})),a.on("leaveNode",(function({node:t}){for(let a of e.edgeEntries())a.target==t?l.selectedEdges.includes(a.edge)?e.setEdgeAttribute(a.edge,"color",tt):o(a.edge,"#808000"):a.source==t&&(l.selectedEdges.includes(a.edge)?e.setEdgeAttribute(a.edge,"color",tt):o(a.edge,"#2F4F4F"));s(void 0)})),a.on("enterEdge",(function({edge:e}){l.selectedEdges.includes(e)||i(e)})),a.on("leaveEdge",(function({edge:e}){l.selectedEdges.includes(e)||o(e)}));const n=new ResizeObserver((e=>a.refresh()));n.observe(t);let d=null,r=!1;a.on("downNode",(t=>{r=!0,d=t.node,e.setNodeAttribute(d,"highlighted",!0)})),a.getMouseCaptor().on("mousemovebody",(t=>{if(!r||!d)return;const l=a.viewportToGraph(t);e.setNodeAttribute(d,"x",l.x),e.setNodeAttribute(d,"y",l.y),t.preventSigmaDefault(),t.original.preventDefault(),t.original.stopPropagation()})),a.getMouseCaptor().on("mouseup",(()=>{d&&e.removeNodeAttribute(d,"highlighted"),r=!1,d=null})),a.getMouseCaptor().on("mousedown",(()=>{a.getCustomBBox()||a.setCustomBBox(a.getBBox())})),this.load(this.data)}},st=(0,K.Z)(lt,[["render",Le]]),it=st;function ot(e,t,a,i,o,n){const d=(0,l.up)("v-chart");return(0,l.wg)(),(0,l.iD)("div",{style:(0,s.j5)(a.styleSize?a.styleSize:n.currentStyle())},[(0,l.Wm)(d,{ref:"chart","manual-update":!0,onClick:n.clicked,autoresize:!0},null,8,["onClick"])],4)}var nt=a(9642),dt=a(6938),rt=a(1006),ct=a(6080),ht=a(3526),ut=a(763),pt=a(546),gt=a(6902),mt=a(2826),ft=a(5256),yt=a(3825),wt=a(8825);(0,ut.D)([dt.N,rt.N,ht.N,ct.N]),(0,ut.D)([pt.N,gt.N,mt.N,ft.N,yt.N]);let bt=["","#80FFA5","#00DDFF","#37A2FF","#FF0087","#FFBF00","rgba(128, 255, 165)","rgba(77, 119, 255)"];const vt={name:"linechart",components:{VChart:nt.ZP},props:{data:Object,pdata:Object,styleSize:String},data(){const e=(0,wt.Z)();return{$q:e,model:!1,animation:null,markPoint:null,options:{responsive:!0,maintainAspectRatio:!1,legend:{data:[],bottom:10,textStyle:{color:"#4DD0E1"}},tooltip:{trigger:"axis",position:function(e){return[e[0],"10%"]}},title:{left:"center",text:""},toolbox:{feature:{}},xAxis:{type:"category",boundaryGap:!1,data:null},yAxis:{type:"value",boundaryGap:[0,"100%"]},dataZoom:[{type:"inside",start:0,end:10},{start:0,end:10}],series:[]}}},computed:{fullname(){return`${this.data.name}@${this.pdata.name}`}},methods:{setOptions(){this.$refs.chart.setOption(this.options)},currentStyle(){let e=this.data.tablerect,t=e?e.width:300,a=e?e.height:200;return`width: ${t}px; height: ${a}px`},processCoord(e,t,a){let l=null;for(let s of t)if(e[0]==s.coord[0]){l=s;break}a?l?t.splice(t.indexOf(l),1):t.push({coord:e}):(t.splice(0,t.length),l||t.push({coord:e}))},clicked(e){let t=[e.dataIndex,this.options.series[e.seriesIndex].data[e.dataIndex]];this.processCoord(t,this.markPoint.data,h.shiftKey);let a=this.markPoint.data.map((e=>e.coord[0])),l=this.data;if(l.value=Array.isArray(l.value)||a.length>1?a:a.length?a[0]:null,this.animation){let e=this.options.dataZoom;e[0].start=this.animation.start,e[1].start=this.animation.start,e[0].end=this.animation.end,e[1].end=this.animation.end}this.setOptions(),_([this.pdata.name,this.data.name,"changed",this.data.value])},calcSeries(){this.options.toolbox.feature.mySwitcher={show:!0,title:"Switch view to the table",icon:"image:M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 2h-4v3h4V4zm0 4h-4v3h4V8zm0 4h-4v3h3a1 1 0 0 0 1-1v-2zm-5 3v-3H6v3h4zm-5 0v-3H1v2a1 1 0 0 0 1 1h3zm-4-4h4V8H1v3zm0-4h4V4H1v3zm5-3v3h4V4H6zm4 4H6v3h4V8z",onclick:()=>{let e=this.data;e.type="table",e.tablerect=this.$refs.chart.$el.getBoundingClientRect(),k[this.fullname].styleSize=this.currentStyle()}};let e=this.data.view,t=this.data.headers;"_"!=this.data.name[0]&&(this.options.title.text=this.data.name);let a=e.split("-"),l=a[1].split(",");l.unshift(a[0]);let s=[];for(let o=0;o<l.length;o++)l[o]="i"==l[o]?-1:parseInt(l[o]),s.push([]),o&&(this.options.series.push({name:t[l[o]],type:"line",symbol:"circle",symbolSize:10,sampling:"lttb",itemStyle:{color:bt[o]},data:s[o]}),this.options.legend.data.push(t[l[o]]));this.options.xAxis.data=s[0];let i=this.data.rows;for(let o=0;o<i.length;o++)for(let e=0;e<l.length;e++)s[e].push(-1==l[e]?o:i[o][l[e]]);if(this.options.series[1]){let e=[],t=this.options.series[1].data,a=Array.isArray(this.data.value)?this.data.value:null===this.data.value?[]:[this.data.value];for(let l=0;l<a.length;l++)this.processCoord([a[l],t[a[l]]],e,!0);this.markPoint={symbol:"rect",symbolSize:10,animationDuration:300,silent:!0,label:{color:"#fff"},itemStyle:{color:"blue"},data:e},this.options.series[1].markPoint=this.markPoint}this.setOptions()}},mounted(){this.calcSeries();let e=this;this.$refs.chart.chart.on("datazoom",(function(t){(t.start||t.end)&&(e.animation=t)}))}},kt=(0,K.Z)(vt,[["render",ot]]),xt=kt;let Ct={right:"4px",borderRadius:"7px",backgroundColor:"#027be3",width:"4px",opacity:.75},_t={right:"2px",borderRadius:"9px",backgroundColor:"#027be3",width:"8px",opacity:.2};function At(e){let t=new FormData;t.append("image",e);let a=new XMLHttpRequest;a.open("POST",b,!0),a.onload=function(){200===this.status?console.log(this.response):console.error(a)},a.send(t)}const St=(0,l.aZ)({name:"element",components:{utable:Re,sgraph:it,linechart:xt},methods:{log(e){console.log(e)},showSelected(){if("tree"==this.type||"list"==this.type){let e=this.value;e&&requestAnimationFrame((()=>{requestAnimationFrame((()=>{let t=this.$refs.tree.$el,a=this.$refs.scroller.$el;for(let l of t.getElementsByTagName("div"))if(l.innerHTML==e){const{bottom:e,height:t,top:s}=l.getBoundingClientRect();if(s){const l=a.getBoundingClientRect();(s<=l.top?l.top-s<=t:e-l.bottom<=t)||this.$refs.scroller.setScrollPosition("vertical",s-l.top);break}}}))}))}},onAdded(e){0!==e.length&&(0!==this.fileArr.length?(this.$refs.uploaderRef.removeFile(this.fileArr[0]),this.fileArr.splice(0,1,e[0])):this.fileArr.push(e[0]))},sendMessage(e,t){_([this.pdata["name"],this.data["name"],e,t])},pressedEnter(){"update"in this.data&&this.sendMessage("update",this.value)},updateDom(e){let t=e.files.length;t&&this.sendMessage("changed",e.xhr.responseText)},sendValue(){this.sendMessage("changed",this.value)},switchValue(){this.value=!this.value},setValue(e){this.value=e},complete(e,t,a){D(this,e,(e=>t((()=>{this.options=e}))))},lens(){h.lens(this.data)},toggleCamera(){this.isCameraOpen?(this.isCameraOpen=!1,this.isPhotoTaken=!1,this.isShotPhoto=!1,this.stopCameraStream()):(this.isCameraOpen=!0,this.createCameraElement())},createCameraElement(){this.isLoading=!0;const e=window.constraints={audio:!1,video:!0};navigator.mediaDevices.getUserMedia(e).then((e=>{this.isLoading=!1,this.$refs.camera.srcObject=e})).catch((e=>{this.isLoading=!1,alert("May the browser didn't support or there are some errors.")}))},stopCameraStream(){let e=this.$refs.camera.srcObject.getTracks();e.forEach((e=>{e.stop()}))},takePhoto(){if(!this.isPhotoTaken){this.isShotPhoto=!0;const e=50;setTimeout((()=>{this.isShotPhoto=!1}),e)}this.isPhotoTaken=!this.isPhotoTaken;const e=this.$refs.canvas.getContext("2d");e.drawImage(this.$refs.camera,0,0,450,337.5)},downloadImage(){document.getElementById("downloadPhoto"),document.getElementById("photoTaken").toBlob(At,"image/jpeg")},rect(){let e="clientHeight"in this.$el?this.$el:this.$el.nextElementSibling;return e.getBoundingClientRect()},geom(){let e=this.type,t=this.$el;t="tree"==e||"list"==e?t.querySelector(".scroll"):"clientHeight"in t?t:t.nextElementSibling,t||(t=this.$el.previousElementSibling,t="clientHeight"in t?t:t.nextElementSibling);const a="text"==e||"graph"==e||"chart"==e?t:t.querySelector("table"==e?".scroll":".q-tree"),l=t.getBoundingClientRect();return{el:t,inner:a,left:l.left,right:l.right,top:l.top,bottom:l.bottom,scrollHeight:a.scrollHeight,scrollWidth:a.scrollWidth}}},updated(){k[this.fullname]=this,this.showSelected(),m&&console.log("updated",this.fullname)},mounted(){k[this.fullname]=this,this.data.focus&&this.$refs.inputRef.$el.focus(),this.showSelected(),m&&console.log("mounted",this.fullname)},data(){return{Dark:Ze.Z,value:this.data.value,styleSize:A?q(this):null,has_recalc:!0,host_path:b,options:[],expandedKeys:[],thumbStyle:Ct,barStyle:_t,updated:"#027be3sds",isCameraOpen:!1,isPhotoTaken:!1,isShotPhoto:!1,isLoading:!1,link:"#",fileArr:[]}},computed:{elemSize(){let e="";return this.data.width&&(e=`width:${this.data.width}px`),this.data.height&&(""!=e&&(e+="; "),e+=`height:${this.data.height}px`),""==e?this.styleSize:e},parent_name(){return this.pdata?this.pdata.name:null},name(){return this.data.name},fullname(){return`${this.data.name}@${this.pdata.name}`},showname(){let e=this.data.name;return e&&"_"!=e[0]},name2show(){let e=this.data.name;return e&&"_"!=e[0]?e:""},nameLabel(){return this.data.label?this.data.label:"_"!=this.data.name[0]?this.data.name:""},text(){return this.data.text},expanding(){return y.includes(this.type)},expanding_width(){return!this.data.width&&this.expanding},expanding_height(){return!this.data.height&&this.expanding},selection(){return this.data.selection},icon(){return this.data.icon},type(){return this.data.type},treeNodes(){var e=[];if("list"==this.type)return this.data.options.map((e=>({label:e,children:[]})));var t={};for(const[s,i]of Object.entries(this.data.options)){var a=t[s];if(a||(a={label:s,children:[]},t[s]=a),i){var l=t[i];l||(l={label:i,children:[]},t[i]=l),l.children.push(a)}else e.push(a)}return e}},props:{data:{type:Object,required:!0},pdata:{type:Object,required:!0}},watch:{value(e,t){"tree"!=this.type&&"list"!=this.type||(this.data.options[e]==t&&this.expandedKeys.indexOf(t)<0&&this.expandedKeys.push(t),this.showSelected()),e!==this.updated&&(m&&console.log("value changed",e,t),this.sendValue(),this.updated=e)},selection(e){m&&console.log("selection changed",e,this.$refs.inputRef),Array.isArray(e)||(e=[0,0]);let t=this.$refs.inputRef.$el;t.focus();let a=t.getElementsByTagName("textarea");0==a.length&&(a=t.getElementsByTagName("input")),a[0].setSelectionRange(e[0],e[1])},data(e,t){m&&console.log("data update",this.fullname,t.name),this.styleSize||(this.styleSize=null),h.screen.reload&&"tree"==this.type&&this.$refs.tree&&this.$refs.tree.expandAll(),this.value=this.data.value,this.updated=this.value,k[this.fullname]=this}}});var qt=a(4027),Dt=a(8886),zt=a(9721),jt=a(2064),Et=a(8761),$t=a(7704),Zt=a(5551),Mt=a(5869),Ot=a(1745),Wt=a(8506);const Nt=(0,K.Z)(St,[["render",qe],["__scopeId","data-v-f48596a0"]]),Vt=Nt;R()(St,"components",{QImg:qt.Z,QIcon:F.Z,QSelect:Te.Z,QCheckbox:Fe.Z,QToggle:Dt.Z,QBadge:zt.Z,QSlider:jt.Z,QBtn:He.Z,QBtnToggle:Et.Z,QInput:Ne.Z,QScrollArea:$t.Z,QTree:Zt.Z,QSeparator:Mt.Z,QUploader:Ot.Z,QTooltip:Ve.Z,QSpinnerIos:Wt.Z});const Ht=(0,l.aZ)({name:"block",components:{element:Vt},data(){return{Dark:Ze.Z,styleSize:null,thumbStyle:{right:"4px",borderRadius:"7px",backgroundColor:"#027be3",width:"4px",opacity:.75},barStyle:{right:"2px",borderRadius:"9px",backgroundColor:"#027be3",width:"8px",opacity:.2}}},methods:{log(){console.log(Object.keys(v).length,this.name,this.$el.getBoundingClientRect())},geom(){let e="clientHeight"in this.$el?this.$el:this.$el.nextElementSibling,t=e.querySelector(".q-scrollarea");t||(t=e);const a=t.getBoundingClientRect();return{el:e,inner:t,left:a.left,right:a.right,top:a.top,bottom:a.bottom,scrollHeight:window.innerHeight,scrollWidth:window.innerWidth}},free_right_delta4(e,t){for(let a of this.data.value)if(Array.isArray(a)){for(let l of a)if(l==e.data){let l=a[a.length-1];return l==e.data?t:f.includes(l.type)?0:k[`${l.name}@${this.name}`].$el.getBoundingClientRect().right}}else if(a===e)return t;return 0}},mounted(){v[this.data.name]=this,(this.expanding||this.data.width)&&(k[this.fullname]=this)},computed:{name(){return this.data.name},fullname(){return`${this.data.scroll?"_scroll":"_space"}@${this.name}`},icon(){return this.data.icon},type(){return this.data.type},expanding(){return this.data.scroll},expanding_width(){return this.expanding},name_elements(){if(this.expanding)return[this.fullname];let e=[];for(let t of this.data.value)if(Array.isArray(t))for(let a of t)e.push(`${a.name}@${this.name}`);else e.push(`${t.name}@${this.name}`);return e},hlevelements(){if(this.expanding)return[[k[this.fullname]]];let e=[];for(let t of this.data.value)if(Array.isArray(t)){let a=t.map((e=>k[`${e.name}@${this.name}`])).filter((e=>e.expanding));a.length&&e.push(a)}else{let a=k[`${t.name}@${this.name}`];a.expanding&&e.push([a])}return e},only_fixed_elems(){if(this.data.scroll)return!1;for(let e of this.data.value)if(Array.isArray(e)){for(let t of e)if(y.includes(t.type))return!1}else if(y.includes(e.type))return!1;return!0},expanding_height(){return!this.data.height&&(this.expanding||this.only_fixed_elems)},tops(){let e=this.data.value;return e.length?Array.isArray(e[0])?e[0]:[e[0]]:[]}},props:{data:{type:Object,required:!0}},watch:{data(e){m&&console.log("data update",this.name),v[this.name]=this,this.expanding&&(k[this.fullname]=this)}}});var Kt=a(151);const Qt=(0,K.Z)(Ht,[["render",se]]),Ut=Qt;function Ft(){let e=A&&k.size==x.size;if(e)for(let[t,a]of Object.entries(k))if(!x[t]){e=!1;break}e||(W(document.documentElement.scrollWidth>window.innerWidth),(0,l.Y3)((()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{h.visible(!0)}))}))})))}R()(Ht,"components",{QCard:Kt.Z,QIcon:F.Z,QScrollArea:$t.Z});const Tt=(0,l.aZ)({name:"zone",components:{block:Ut},props:{data:Object},updated(e){(0,l.Y3)((()=>{requestAnimationFrame((()=>{requestAnimationFrame(Ft)}))}))}}),Pt=(0,K.Z)(Tt,[["render",J]]),Rt=Pt,Lt={class:"row q-gutter-sm row-md"};function Bt(e,t,a,i,o,n){const d=(0,l.up)("block"),r=(0,l.up)("q-item-label"),c=(0,l.up)("q-space"),h=(0,l.up)("q-btn"),u=(0,l.up)("q-card"),p=(0,l.up)("q-dialog");return(0,l.wg)(),(0,l.j4)(p,{ref:"dialog",onHide:n.onDialogHide,onKeyup:(0,ie.D2)(n.pressedEnter,["enter"])},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{class:"q-dialog-plugin q-pa-md items-start q-gutter-md",bordered:"",style:(0,s.j5)(a.data.internal?"width: 800px; max-width: 80vw;":"")},{default:(0,l.w5)((()=>[a.data?((0,l.wg)(),(0,l.j4)(d,{key:0,data:a.data},null,8,["data"])):(0,l.kq)("",!0),(0,l.Wm)(r,{class:"text-h6"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(a.data.text?a.data.text:""),1)])),_:1}),(0,l._)("div",Lt,[(0,l.Wm)(c),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(a.commands,(e=>((0,l.wg)(),(0,l.j4)(h,{class:"col-md-3",label:e,"no-caps":"",color:a.commands[0]==e?"primary":"secondary",onClick:t=>n.sendMessage(e)},null,8,["label","color","onClick"])))),256))])])),_:1},8,["style"])])),_:1},8,["onHide","onKeyup"])}const It={props:{data:Object,commands:Array},components:{block:Ut},emits:["ok","hide"],data(){return{closed:!1}},methods:{show(){this.$refs.dialog.show()},message4(e){return[this.data["name"],null,"changed",e]},sendMessage(e){this.data.internal||_(this.message4(e)),this.closed=!0,this.hide()},hide(){this.$refs.dialog.hide()},onDialogHide(){this.$emit("hide"),this.closed||this.data.internal||_(this.message4(null))},pressedEnter(){this.sendMessage(this.commands[0])},onOKClick(){this.$emit("ok"),this.hide()},onCancelClick(){this.hide()}}};var Yt=a(5926),Gt=a(2025);const Jt=(0,K.Z)(It,[["render",Bt]]),Xt=Jt;R()(It,"components",{QDialog:Yt.Z,QCard:Kt.Z,QItemLabel:T.Z,QSpace:Gt.Z,QBtn:He.Z});var ea=a(589);let ta="theme";try{Ze.Z.set(ea.Z.getItem(ta))}catch(pa){}let aa=null;const la=(0,l.aZ)({name:"MainLayout",data(){return{leftDrawerOpen:!1,Dark:Ze.Z,menu:[],tab:"",tooldata:{name:"toolbar"},localServer:!0,statusConnect:!1,screen:{blocks:[],toolbar:[]},visibility:!0,designCycle:0,shiftKey:!1}},components:{menubar:B,zone:Rt,element:Vt},created(){C(this)},unmounted(){window.removeEventListener("resize",this.onResize)},computed:{left_toolbar(){return this.screen.toolbar.filter((e=>!e.right))},right_toolbar(){return this.screen.toolbar.filter((e=>e.right))}},methods:{switchTheme(){Ze.Z.set(!Ze.Z.isActive),ea.Z.set(ta,Ze.Z.isActive)},toggleLeftDrawer(){this.leftDrawerOpen=!this.leftDrawerOpen},tabclick(e){_(["root",null,"changed",e])},visible(e){this.visibility!=e&&(this.$refs.page.$el.style.visibility=e?"":"hidden",this.visibility=e)},handleKeyDown(e){"Shift"==e.key&&(this.shiftKey=!0)},handleKeyUp(e){"Shift"==e.key&&(this.shiftKey=!1)},onResize(e){m&&console.log(`window has been resized w = ${window.innerWidth}, h=${window.innerHeight}`),this.designCycle=0,O()},lens(e){let t={title:"Photo lens",message:e.text,cancel:!0,persistent:!0,component:Xt},{height:a,...l}=e;l.width=750;let s={name:`Picture lens of ${e.name}`,value:[[],l],internal:!0};t.componentProps={data:s,commands:["Close"]},this.$q.dialog(t)},notify(e,t){let a=t,l={message:e,type:t,position:"top",icon:a};"progress"==t?null==aa?(l={group:!1,timeout:0,spinner:!0,type:"info",message:e||"Progress..",position:"top",color:"secondary"},aa=this.$q.notify(l)):null==e?(aa(),aa=null):(l={caption:e},aa(l)):("error"==t&&l.type,this.$q.notify(l))},error(e){this.notify(e,"error")},info(e){this.notify(e,"info")},processMessage(e){if("screen"==e.type)z(),this.screen.name!=e.name?(S(!1),m||this.visible(!1)):e.reload&&S(!1),this.screen=e,this.menu=e.menu.map((e=>({name:e[0],icon:e[1],order:e[2]}))),this.tab=this.screen.name;else if("dialog"==e.type){let t={title:e.name,message:e.text,cancel:!0,persistent:!0};t.component=Xt,t.componentProps={data:e,commands:e.commands},this.$q.dialog(t)}else if("complete"==e.type||"append"==e.type)$(e);else{let t=e.updates&&e.updates.length;t&&E(e.updates);let a=!1;["error","progress","warning","info"].includes(e.type)&&(this.notify(e.value,e.type),a=!0),a||t||(this.error("Invalid data came from the server! Look the console."),console.log(`Invalid data came from the server! ${e}`))}this.closeProgress(e)},closeProgress(e){!aa||e&&"progress"==e.type||this.notify(null,"progress")}},mounted(){window.addEventListener("resize",this.onResize);const e=new ResizeObserver((e=>{let t=document.documentElement.scrollWidth>window.innerWidth||document.documentElement.scrollHeight>window.innerHeight;t&&M(!1)}));let t=this.$refs.page.$el;e.observe(t),window.addEventListener("keydown",this.handleKeyDown),window.addEventListener("keyup",this.handleKeyUp)},beforeUnmount(){window.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("keyup",this.handleKeyUp)}});var sa=a(9214),ia=a(3812),oa=a(9570),na=a(7547),da=a(3269),ra=a(2652),ca=a(4379);const ha=(0,K.Z)(la,[["render",n]]),ua=ha;R()(la,"components",{QLayout:sa.Z,QHeader:ia.Z,QToolbar:oa.Z,QBtn:He.Z,QItemLabel:T.Z,QTabs:na.Z,QTab:da.Z,QSpace:Gt.Z,QTooltip:Ve.Z,QPageContainer:ra.Z,QPage:ca.Z})}}]);
|
1
|
+
"use strict";(globalThis["webpackChunkuniqua"]=globalThis["webpackChunkuniqua"]||[]).push([[662],{2662:(e,t,a)=>{a.r(t),a.d(t,{default:()=>ua});var l=a(3673),s=a(2323);const i=(0,l._)("div",{class:"q-pa-md"},null,-1),o=(0,l._)("div",{class:"q-pa-md"},null,-1);function n(e,t,a,n,d,r){const c=(0,l.up)("q-item-label"),h=(0,l.up)("element"),u=(0,l.up)("q-tab"),p=(0,l.up)("q-tabs"),g=(0,l.up)("q-space"),m=(0,l.up)("q-tooltip"),f=(0,l.up)("q-btn"),y=(0,l.up)("q-toolbar"),w=(0,l.up)("q-header"),b=(0,l.up)("zone"),v=(0,l.up)("q-page"),k=(0,l.up)("q-page-container"),x=(0,l.up)("q-layout");return(0,l.wg)(),(0,l.j4)(x,{view:"lHh Lpr lFf"},{default:(0,l.w5)((()=>[(0,l.Wm)(w,{elevated:"",class:(0,s.C_)({"bg-deep-purple-9":e.Dark.isActive})},{default:(0,l.w5)((()=>[(0,l.Wm)(y,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c,{class:"text-h5"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.screen.header?e.screen.header:""),1)])),_:1}),i,((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.left_toolbar,(t=>((0,l.wg)(),(0,l.j4)(h,{class:(0,s.C_)(["q-ma-xs",{"bg-blue-grey-7":e.Dark.isActive,"bg-blue-5":!e.Dark.isActive}]),data:t,pdata:e.tooldata},null,8,["class","data","pdata"])))),256)),o,(0,l.Wm)(p,{class:"bold-tabs",align:"center","inline-label":"",dense:"",modelValue:e.tab,"onUpdate:modelValue":t[0]||(t[0]=t=>e.tab=t),style:{float:"center"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.menu,(t=>((0,l.wg)(),(0,l.iD)("div",null,[t.icon?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"justify-center text-white shadow-2","no-caps":"",name:t.name,icon:t.icon,label:t.name,onClick:a=>e.tabclick(t.name)},null,8,["name","icon","label","onClick"])):(0,l.kq)("",!0),t.icon?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(u,{key:1,class:"justify-center text-white shadow-2","no-caps":"",name:t.name,label:t.name,onClick:a=>e.tabclick(t.name)},null,8,["name","label","onClick"]))])))),256))])),_:1},8,["modelValue"]),(0,l.Wm)(g),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.right_toolbar,(t=>((0,l.wg)(),(0,l.j4)(h,{class:(0,s.C_)(["q-ma-xs",{"bg-blue-grey-7":e.Dark.isActive,"bg-blue-5":!e.Dark.isActive}]),data:t,pdata:e.tooldata},null,8,["class","data","pdata"])))),256)),(0,l.Wm)(f,{class:(0,s.C_)(["q-ma-xs",{"bg-blue-grey-9":e.Dark.isActive}]),dense:"",round:"",icon:e.Dark.isActive?"light_mode":"dark_mode",onClick:e.switchTheme},{default:(0,l.w5)((()=>[(0,l.Wm)(m,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Dark/Light mode")])),_:1})])),_:1},8,["class","icon","onClick"])])),_:1})])),_:1},8,["class"]),(0,l.Wm)(k,{class:"content"},{default:(0,l.w5)((()=>[(0,l.Wm)(v,{class:"flex justify-center centers"},{default:(0,l.w5)((()=>[(0,l.Wm)(b,{data:e.screen.blocks,ref:"page"},null,8,["data"])])),_:1})])),_:1})])),_:1})}function d(e,t,a,i,o,n){const d=(0,l.up)("q-icon"),r=(0,l.up)("q-item-section"),c=(0,l.up)("q-item-label"),h=(0,l.up)("q-item");return(0,l.wg)(),(0,l.j4)(h,{clickable:"",tag:"a",target:"_blank",onClick:e.send},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(d,{name:e.icon},null,8,["name"])])),_:1}),(0,l.Wm)(r,null,{default:(0,l.w5)((()=>[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.name),1)])),_:1})])),_:1})])),_:1},8,["onClick"])}a(71);var r=a(698),c=a(8603);let h=null,u={};var p;const g=!1;let m=g;const f=["graph","chart","block","text"],y=["tree","table","list","text","graph","chart"];const w=window.location.host,b=`${window.location.protocol}//${w}`;let v={},k={},x={};function C(e){p=new WebSocket(g?"ws://localhost:8000/ws":`ws://${w}/ws`),p.onopen=()=>e.statusConnect=!0,p.onmessage=t=>{m&&console.log("incoming message",t.data),h.designCycle=0;let a=JSON.parse(t.data);a?e.processMessage(a):e.closeProgress(a)},p.onerror=t=>e.error(t),p.onclose=t=>{t.wasClean?e.info("Connection was finished by the server."):e.error("Connection suddenly closed!"),e.statusConnect=!1,m&&console.info("close code : "+t.code+" reason: "+t.reason)},h=e}function _(e){let t={block:e[0],element:e[1],event:e[2],value:e[3]};m&&console.log("sended",t),p.send(JSON.stringify(t))}let A=!0;function S(e){A=e,e||(x={})}function q(e){if(A){let t=x[e.fullname];if(t)return t.styleSize;A=!1}return null}function D(e,t,a,l="complete"){let s=[e.pdata.name,e.data.name,l,t];_(s),u[s.slice(0,3).toString()]=a}function z(){v={},x=k,A=!0,k={}}function j(e,t){Object.assign(e.data,t),e.updated=t.value,e.value=t.value}function E(e){for(let t of e){let e=t.path;if(e.length>1){e.reverse();let a=e.join("@"),l=k[a];j(l,t.data)}else{let a=v[e[0]];Object.assign(a.data,t.data)}}}function $(e){let t=[e.message.block,e.message.element,e.type].toString();"string"==typeof e.value?h.error(e.value):u[t](e.value),delete u[t]}function Z(e){let t=[];for(let l of e)l instanceof Array?t.push(l):t.push([l]);let a=t.shift();return t.reduce(((e,t)=>e.flatMap((e=>t.map((t=>e instanceof Array?[...e,t]:[e,t]))))),a)}function M(e=!1){W(document.documentElement.scrollWidth>window.innerWidth)}let O=(0,c.debounce)(M,50);function W(e){if(h.designCycle>=1)return;m&&console.log(`------------------recalc design ${h.designCycle}`),h.designCycle++;const t=N(e),a=V(e);for(let[l,s]of Object.entries(t)){let e=k[l],t=a[l];const[i,o]=t||[0,1];let n,d=e.geom(),r=d.el,c=e.pdata?e.pdata.name:e.name,h=v[c];for(let a of h.data.value.slice(1))if(Array.isArray(a)){if(a.find((t=>t.name==e.data.name))){let e=a[a.length-1],t=`${e.name}@${c}`;n=k[t];break}}else if(a.name==e.data.name){n=e;break}let u=i;u/=o;let p=e.only_fixed_elems?"":`width:${Math.ceil(r.clientWidth+u)}px`,g=`height:${Math.floor(s+e.he)}px;${p}`;g!=e.styleSize&&(e.styleSize=g),e.has_recalc=!1}}function N(e){const t=h.screen.blocks;let a=window.innerHeight-60,l={},s=new Map,i=[];for(let n of t){const e=[];let t=n instanceof Array,o=t?Z(n):[[n]],d={};for(let[a,l]of Object.entries(v)){let e=l.$el.getBoundingClientRect(),t=e.bottom;d[a]=t-e.top}for(let a of o){let e=0,t=!0;for(let l of a)e+=d[l.name],v[l.name].only_fixed_elems||(t=!1);if(t){let e=v[a.slice(-1)[0].name];k[e.fullname]=e}i.push([e+8*a.length,a])}i.sort(((e,t)=>e[0]>t[0]?-1:e[0]==t[0]?0:1));for(let a of i){let t=a[1];(0,r.hu)(Array.isArray(t));const l=[];for(let[e,a]of Object.entries(k))if(a.expanding_height){let[i,o]=e.split("@");if(t.find((e=>e.name==o))){let e=!0;const t=a.geom();for(let[i,o]of l.entries()){let n=o.geom();e&&o!==a&&n.top==t.top&&(n.scrollHeight<t.scrollHeight&&(l[i]=a),e=!1,s.set(a.fullname,o.fullname))}e&&l.push(a)}}l.length&&e.push([a[0],l])}for(let[s,i]of e){let e=0,t=[];for(let a of i)if(a.fullname in l)s+=l[a.fullname];else{let l=a.geom(),i=l.bottom-l.top;i<100&&(s+=100-i,i=100),a.he=i,e+=a.he,t.push(a)}let o=(e+a-s)/t.length,n=0;for(let a of t){let e,s=o-a.he;if(1==t.length)e=s;else if(e=Math.floor(s),s-e){n+=s-e;let t=Math.round(n)-n;t<.001&&t>-.001&&(e+=Math.round(n),n=0)}l[a.fullname]=e}}}let o=Array.from(s.entries());o.sort(((e,t)=>e[0]in l||e[1]in l?-1:1));for(let[n,d]of o)d in l?(l[n]=l[d],k[n].he=k[d].he):(l[d]=l[n],k[d].he=k[n].he);return l}function V(e){let t=null;const a=t?[t]:h.screen.blocks;let l=window.innerWidth-20,s=[],i={};for(let n of a)if(0==s.length)if(Array.isArray(n))for(let e of n)s.push(Array.isArray(e)?e:[e]);else s=[[n]];else{let e=[];if(Array.isArray(n))for(let t of n)for(let a of s)e.push(Array.isArray(t)?a.concat(t):[...a,t]);else for(let t of s)e.push([...t,n]);s=e}const o=[];for(let n of s){let e=0;for(let l of n){let t=v[l.name].$el.getBoundingClientRect();e+=t.right-t.left+5}let t=l-e,a=[[]];for(let l of n){let e=[];for(let t of v[l.name].hlevelements)for(let l of a)e.push([...l,...t]);a=e}for(let l of a)o.push([t,l])}o.sort(((e,t)=>t[1].length-e[1].length));for(let[n,d]of o){let t=new Map;for(let e=0;e<d.length;e++){let a=d[e],l=a.parent_name,s=l||a.name,o=a.geom(),r=(a.data.width?a.data.width:o.scrollWidth)-(o.right-o.left);if(r>1&&!f.includes(a.type)&&n>0&&!i[a.fullname]){let e=n>r?r:n;n-=e,i[a.fullname]=[e,1]}if(s=a.parent_name,s){let e=v[s],l=e.$el.getBoundingClientRect().right-6,i=e.free_right_delta4(a,o.right),n=l-i;i&&n>0&&(!t.has(s)||t.get(s)>n)&&t.set(s,n)}}for(let e of t.values())n+=e;let a=[];for(let o of d)if(o.expanding_width&&(e||f.includes(o.type)))if(i[o.fullname]){let[e,t]=i[o.fullname];n-=e/t}else a.push(o);let l=a.length;const s=n/l;for(let e of a)i[e.fullname]||(i[e.fullname]=[Math.floor(s),1]);for(let e of d)i[e.fullname]||(i[e.fullname]=[0,1])}return i}const H=(0,l.aZ)({name:"menubar",methods:{send(){_(["root",null,"changed",this.name])}},props:{name:{type:String,required:!0},icon:{type:String,default:""}}});var K=a(4260),Q=a(3414),U=a(2035),F=a(4554),T=a(2350),P=a(7518),R=a.n(P);const L=(0,K.Z)(H,[["render",d]]),B=L;R()(H,"components",{QItem:Q.Z,QItemSection:U.Z,QIcon:F.Z,QItemLabel:T.Z});const I={key:0,class:"row q-col-gutter-xs q-py-xs"},Y={class:"q-col-gutter-xs"},G={key:0,class:"column q-col-gutter-xs"};function J(e,t,a,s,i,o){const n=(0,l.up)("zone",!0),d=(0,l.up)("block");return e.data instanceof Array?((0,l.wg)(),(0,l.iD)("div",I,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.data,(e=>((0,l.wg)(),(0,l.iD)("div",Y,[e instanceof Array?((0,l.wg)(),(0,l.iD)("div",G,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e,(e=>((0,l.wg)(),(0,l.j4)(n,{class:"q-col-gutter-xs q-py-xs",data:e},null,8,["data"])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,data:e},null,8,["data"]))])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,data:e.data},null,8,["data"]))}const X={class:"row no-wrap"},ee=["data","pdata"],te={key:0,class:"row"},ae=["data","pdata"],le={key:0,class:"row no-wrap"};function se(e,t,a,i,o,n){const d=(0,l.up)("element"),r=(0,l.up)("q-icon"),c=(0,l.up)("q-scroll-area"),h=(0,l.up)("q-card");return(0,l.wg)(),(0,l.j4)(h,{class:"my-card q-ma-xs",style:(0,s.j5)(e.only_fixed_elems?e.styleSize:null),key:e.name},{default:(0,l.w5)((()=>[(0,l._)("div",X,[e.data.logo?((0,l.wg)(),(0,l.j4)(d,{key:0,class:"q-ma-sm",data:e.data.logo,pdata:e.data},null,8,["data","pdata"])):e.data.icon?((0,l.wg)(),(0,l.j4)(r,{key:1,class:"q-mt-sm",size:"sm",name:e.data.icon},null,8,["name"])):(0,l.kq)("",!0),"_"!=e.name[0]?((0,l.wg)(),(0,l.iD)("p",{key:2,class:(0,s.C_)(["q-ma-sm",{"text-info":e.Dark.isActive,"text-cyan-10":!e.Dark.isActive}]),style:{"font-size":"18px"}},(0,s.zw)(e.name),3)):(0,l.kq)("",!0),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.tops,(t=>((0,l.wg)(),(0,l.j4)(d,{class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"])))),256))]),e.data.scroll?((0,l.wg)(),(0,l.j4)(c,{key:0,style:(0,s.j5)(e.styleSize),"thumb-style":e.thumbStyle,"bar-style":e.barStyle},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.data.value.slice(1),(t=>((0,l.wg)(),(0,l.iD)("div",{class:"column",data:t,pdata:e.data},[t instanceof Array?((0,l.wg)(),(0,l.iD)("div",te,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(t,(t=>((0,l.wg)(),(0,l.j4)(d,{class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"]))],8,ee)))),256))])),_:1},8,["style","thumb-style","bar-style"])):((0,l.wg)(!0),(0,l.iD)(l.HY,{key:1},(0,l.Ko)(e.data.value.slice(1),(t=>((0,l.wg)(),(0,l.iD)("div",{class:"column",data:t,pdata:e.data},[t instanceof Array?((0,l.wg)(),(0,l.iD)("div",le,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(t,(t=>((0,l.wg)(),(0,l.j4)(d,{class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"])))),256))])):((0,l.wg)(),(0,l.j4)(d,{key:1,class:"q-ma-xs",data:t,pdata:e.data},null,8,["data","pdata"]))],8,ae)))),256))])),_:1},8,["style"])}var ie=a(8880);const oe=e=>((0,l.dD)("data-v-f48596a0"),e=e(),(0,l.Cn)(),e),ne={key:4},de={key:5,class:"{'bg-blue-grey-9': Dark.isActive}"},re={key:9},ce={key:12},he=["width","height"],ue=["src"],pe={key:19,class:"web-camera-container"},ge={class:"camera-button"},me={key:0},fe={key:1},ye={class:"camera-loading"},we=oe((()=>(0,l._)("ul",{class:"loader-circle"},[(0,l._)("li"),(0,l._)("li"),(0,l._)("li")],-1))),be=[we],ve=["height"],ke=["height"],xe={key:1,class:"camera-shoot"},Ce=oe((()=>(0,l._)("img",{src:"https://img.icons8.com/material-outlined/50/000000/camera--v2.png"},null,-1))),_e=[Ce],Ae={key:2,class:"camera-download"},Se={key:20};function qe(e,t,a,i,o,n){const d=(0,l.up)("q-icon"),r=(0,l.up)("q-img"),c=(0,l.up)("q-select"),h=(0,l.up)("q-checkbox"),u=(0,l.up)("q-toggle"),p=(0,l.up)("q-badge"),g=(0,l.up)("q-slider"),m=(0,l.up)("q-btn"),f=(0,l.up)("q-btn-toggle"),y=(0,l.up)("utable"),w=(0,l.up)("linechart"),b=(0,l.up)("q-input"),v=(0,l.up)("q-tree"),k=(0,l.up)("q-scroll-area"),x=(0,l.up)("q-separator"),C=(0,l.up)("q-uploader"),_=(0,l.up)("sgraph"),A=(0,l.up)("q-tooltip"),S=(0,l.up)("q-spinner-ios");return"image"==e.type?((0,l.wg)(),(0,l.j4)(r,{key:0,src:e.data.url,"spinner-color":"blue",onClick:(0,ie.iM)(e.switchValue,["stop"]),fit:"cover",style:(0,s.j5)(e.elemSize)},{default:(0,l.w5)((()=>[e.data.label?((0,l.wg)(),(0,l.iD)("div",{key:0,class:"absolute-bottom-right text-subtitle2 custom-caption",onClick:t[0]||(t[0]=(0,ie.iM)(((...t)=>e.lens&&e.lens(...t)),["stop"]))},(0,s.zw)(e.data.label),1)):(0,l.kq)("",!0),e.value?((0,l.wg)(),(0,l.j4)(d,{key:1,class:"absolute all-pointer-events",size:"32px",name:"check_circle",color:"light-blue-2",style:{"font-size":"2em",top:"8px",left:"8px"}})):(0,l.kq)("",!0)])),_:1},8,["src","onClick","style"])):"select"==e.type?((0,l.wg)(),(0,l.j4)(c,{key:1,"transition-show":"flip-up",readonly:0==e.data.edit,"transition-hide":"flip-down",dense:"",modelValue:e.value,"onUpdate:modelValue":t[1]||(t[1]=t=>e.value=t),options:e.data.options},(0,l.Nv)({_:2},[e.showname?{name:"prepend",fn:(0,l.w5)((()=>[(0,l._)("p",{class:(0,s.C_)(["text-subtitle1 q-ma-sm",{white:e.Dark.isActive,black:!e.Dark.isActive}])},(0,s.zw)(e.name),3)])),key:"0"}:void 0]),1032,["readonly","modelValue","options"])):"check"==e.type?((0,l.wg)(),(0,l.j4)(h,{key:2,"left-label":"",disable:0==e.data.edit,modelValue:e.value,"onUpdate:modelValue":t[2]||(t[2]=t=>e.value=t),label:e.nameLabel,"checked-icon":"task_alt","unchecked-icon":"highlight_off"},null,8,["disable","modelValue","label"])):"switch"==e.type?((0,l.wg)(),(0,l.j4)(u,{key:3,modelValue:e.value,"onUpdate:modelValue":t[3]||(t[3]=t=>e.value=t),disable:0==e.data.edit,color:"primary",label:e.nameLabel,"left-label":""},null,8,["modelValue","disable","label"])):"range"==e.type?((0,l.wg)(),(0,l.iD)("div",ne,[(0,l.Wm)(p,{outline:"",dense:"",color:e.Dark.isActive?"blue-3":"blue-9"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.name)+": "+(0,s.zw)(e.value)+" ("+(0,s.zw)(e.data.options[0])+" to "+(0,s.zw)(e.data.options[1])+", Δ "+(0,s.zw)(e.data.options[2])+")",1)])),_:1},8,["color"]),(0,l.Wm)(g,{class:"q-pl-sm",dense:"",modelValue:e.value,"onUpdate:modelValue":t[4]||(t[4]=t=>e.value=t),min:e.data.options[0],max:e.data.options[1],step:e.data.options[2],color:"primary"},null,8,["modelValue","min","max","step"])])):"radio"==e.type?((0,l.wg)(),(0,l.iD)("div",de,[e.showname?((0,l.wg)(),(0,l.j4)(m,{key:0,ripple:!1,color:"indigo-10",disable:"",label:e.name,"no-caps":""},null,8,["label"])):(0,l.kq)("",!0),(0,l.Wm)(f,{modelValue:e.value,"onUpdate:modelValue":t[5]||(t[5]=t=>e.value=t),readonly:0==e.data.edit,class:(0,s.C_)({"bg-blue-grey-9":e.Dark.isActive}),"no-caps":"",options:e.data.options.map((e=>({label:e,value:e})))},null,8,["modelValue","readonly","class","options"])])):"table"==e.type?((0,l.wg)(),(0,l.j4)(y,{key:6,data:e.data,pdata:e.pdata,styleSize:e.styleSize},null,8,["data","pdata","styleSize"])):"chart"==e.type?((0,l.wg)(),(0,l.j4)(w,{key:7,data:e.data,pdata:e.pdata,styleSize:e.styleSize},null,8,["data","pdata","styleSize"])):"string"==e.type&&e.data.hasOwnProperty("complete")?((0,l.wg)(),(0,l.j4)(c,{key:8,dense:"",readonly:0==e.data.edit,modelValue:e.value,"onUpdate:modelValue":t[6]||(t[6]=t=>e.value=t),"use-input":"","hide-selected":"",borderless:"",outlined:"","hide-bottom-space":"","fill-input":"","input-debounce":"0",options:e.options,onFilter:e.complete,label:e.name,onKeydown:(0,ie.D2)(e.pressedEnter,["enter"])},null,8,["readonly","modelValue","options","onFilter","label","onKeydown"])):"string"==e.type&&0==e.data.edit?((0,l.wg)(),(0,l.iD)("div",re,[(0,l._)("p",{class:(0,s.C_)(["q-ma-sm",{white:e.Dark.isActive,black:!e.Dark.isActive}])},(0,s.zw)(e.value),3)])):"string"==e.type?((0,l.wg)(),(0,l.j4)(b,{key:10,modelValue:e.value,"onUpdate:modelValue":t[7]||(t[7]=t=>e.value=t),label:e.name2show,ref:"inputRef",autogrow:e.data.autogrow,dense:"",onKeydown:(0,ie.D2)(e.pressedEnter,["enter"]),readonly:0==e.data.edit},null,8,["modelValue","label","autogrow","onKeydown","readonly"])):"number"==e.type?((0,l.wg)(),(0,l.j4)(b,{key:11,modelValue:e.value,"onUpdate:modelValue":t[8]||(t[8]=t=>e.value=t),modelModifiers:{number:!0},label:e.name2show,ref:"inputRef",dense:"",onKeydown:(0,ie.D2)(e.pressedEnter,["enter"]),type:"number",readonly:0==e.data.edit},null,8,["modelValue","label","onKeydown","readonly"])):"tree"==e.type||"list"==e.type?((0,l.wg)(),(0,l.iD)("div",ce,[e.showname?((0,l.wg)(),(0,l.iD)("p",{key:0,class:(0,s.C_)(["text-subtitle1 q-ma-sm text-grey-7",{"text-white":e.Dark.isActive,"text-indigo-10":!e.Dark.isActive}])},(0,s.zw)(e.name),3)):(0,l.kq)("",!0),(0,l.Wm)(k,{style:(0,s.j5)(e.styleSize),"thumb-style":e.thumbStyle,"bar-style":e.barStyle,ref:"scroller"},{default:(0,l.w5)((()=>[(0,l.Wm)(v,{nodes:e.treeNodes,"selected-color":e.Dark.isActive?"blue-3":"blue-9",dense:e.data.dense,ref:"tree",selected:e.value,"onUpdate:selected":t[9]||(t[9]=t=>e.value=t),expanded:e.expandedKeys,"onUpdate:expanded":t[10]||(t[10]=t=>e.expandedKeys=t),"node-key":"label","default-expand-all":""},null,8,["nodes","selected-color","dense","selected","expanded"])])),_:1},8,["style","thumb-style","bar-style"])])):"text"==e.type?(0,l.wy)(((0,l.wg)(),(0,l.iD)("textarea",{key:13,class:(0,s.C_)(["textarea",{"bg-grey-10":e.Dark.isActive,"text-white":e.Dark.isActive}]),"onUpdate:modelValue":t[11]||(t[11]=t=>e.value=t),filled:"",type:"textarea",style:(0,s.j5)(e.elemSize),onKeydown:t[12]||(t[12]=(0,ie.D2)(((...t)=>e.pressedEnter&&e.pressedEnter(...t)),["enter"]))},null,38)),[[ie.nr,e.value]]):"line"==e.type?((0,l.wg)(),(0,l.j4)(x,{key:14,color:"green"})):"video"==e.type?((0,l.wg)(),(0,l.iD)("video",{key:e.fullname,controls:"",width:e.data.width,height:e.data.height},[(0,l._)("source",{src:e.data.url,type:"video/mp4"},null,8,ue)],8,he)):"uploader"==e.type?((0,l.wg)(),(0,l.j4)(C,{key:16,label:e.name,"auto-upload":"",thumbnails:"",url:e.host_path,onUploaded:e.updateDom,onAdded:e.onAdded,style:(0,s.j5)(e.elemSize),ref:"uploaderRef",flat:"",class:(0,s.C_)({"bg-grey-10":e.Dark.isActive}),color:e.Dark.isActive?"purple-10":"blue"},null,8,["label","url","onUploaded","onAdded","style","class","color"])):"image_uploader"==e.type?((0,l.wg)(),(0,l.j4)(C,{key:17,label:e.name,"auto-upload":"",thumbnails:"",url:e.host_path,onUploaded:e.updateDom,onAdded:e.onAdded,ref:"uploaderRef",flat:"",class:(0,s.C_)({"bg-grey-10":e.Dark.isActive}),color:e.Dark.isActive?"purple-10":"blue"},null,8,["label","url","onUploaded","onAdded","class","color"])):"graph"==e.type?((0,l.wg)(),(0,l.j4)(_,{key:18,data:e.data,pdata:e.pdata,styleSize:e.elemSize},null,8,["data","pdata","styleSize"])):"camera"==e.type?((0,l.wg)(),(0,l.iD)("div",pe,[(0,l._)("div",ge,[(0,l._)("button",{class:(0,s.C_)(["button is-rounded",{"is-primary":!e.isCameraOpen,"is-danger":e.isCameraOpen}]),type:"button",onClick:t[13]||(t[13]=(...t)=>e.toggleCamera&&e.toggleCamera(...t))},[e.isCameraOpen?((0,l.wg)(),(0,l.iD)("span",fe,"Close Camera")):((0,l.wg)(),(0,l.iD)("span",me,"Open Camera"))],2)]),(0,l.wy)((0,l._)("div",ye,be,512),[[ie.F8,e.isCameraOpen&&e.isLoading]]),e.isCameraOpen?(0,l.wy)(((0,l.wg)(),(0,l.iD)("div",{key:0,class:(0,s.C_)(["camera-box",{flash:e.isShotPhoto}])},[(0,l._)("div",{class:(0,s.C_)(["camera-shutter",{flash:e.isShotPhoto}])},null,2),(0,l.wy)((0,l._)("video",{ref:"camera",width:450,height:337.5,autoplay:""},null,8,ve),[[ie.F8,!e.isPhotoTaken]]),(0,l.wy)((0,l._)("canvas",{id:"photoTaken",ref:"canvas",width:450,height:337.5},null,8,ke),[[ie.F8,e.isPhotoTaken]])],2)),[[ie.F8,!e.isLoading]]):(0,l.kq)("",!0),e.isCameraOpen&&!e.isLoading?((0,l.wg)(),(0,l.iD)("div",xe,[(0,l._)("button",{class:"button",type:"button",onClick:t[14]||(t[14]=(...t)=>e.takePhoto&&e.takePhoto(...t))},_e)])):(0,l.kq)("",!0),e.isPhotoTaken&&e.isCameraOpen?((0,l.wg)(),(0,l.iD)("div",Ae,[(0,l.Wm)(m,{onClick:e.downloadImage,label:"Send"},null,8,["onClick"])])):(0,l.kq)("",!0)])):""!=e.showname?((0,l.wg)(),(0,l.iD)("div",Se,[(0,l.Wm)(m,{"no-caps":"",disable:0==e.data.edit,class:(0,s.C_)({"bg-blue-grey-8":e.Dark.isActive}),label:e.name,icon:e.data.icon,onClick:e.sendValue},{default:(0,l.w5)((()=>[e.data.tooltip?((0,l.wg)(),(0,l.j4)(A,{key:0,class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.data.tooltip),1)])),_:1})):(0,l.kq)("",!0)])),_:1},8,["disable","class","label","icon","onClick"])])):e.data.spinner?((0,l.wg)(),(0,l.j4)(m,{key:22,"no-caps":"",dense:"",disable:0==e.data.edit,round:"",class:(0,s.C_)({"bg-blue-grey-8":e.Dark.isActive}),onClick:e.sendValue},{default:(0,l.w5)((()=>[(0,l.Wm)(S,{color:e.Dark.isActive?"white":"black"},null,8,["color"]),e.data.tooltip?((0,l.wg)(),(0,l.j4)(A,{key:0,class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.data.tooltip),1)])),_:1})):(0,l.kq)("",!0)])),_:1},8,["disable","class","onClick"])):((0,l.wg)(),(0,l.j4)(m,{key:21,"no-caps":"",disable:0==e.data.edit,dense:"",round:"",class:(0,s.C_)({"bg-blue-grey-8":e.Dark.isActive}),icon:e.data.icon,onClick:e.sendValue},{default:(0,l.w5)((()=>[e.data.tooltip?((0,l.wg)(),(0,l.j4)(A,{key:0,class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(e.data.tooltip),1)])),_:1})):(0,l.kq)("",!0)])),_:1},8,["disable","class","icon","onClick"]))}const De={key:0},ze={class:"row"},je=["onClick"];function Ee(e,t,a,i,o,n){const d=(0,l.up)("q-icon"),r=(0,l.up)("q-tooltip"),c=(0,l.up)("q-input"),h=(0,l.up)("q-btn"),u=(0,l.up)("q-th"),p=(0,l.up)("q-tr"),g=(0,l.up)("q-checkbox"),m=(0,l.up)("q-select"),f=(0,l.up)("q-td"),y=(0,l.up)("q-table");return(0,l.wg)(),(0,l.j4)(y,{"virtual-scroll":"",dense:e.data.dense,style:(0,s.j5)(e.styleSize?e.styleSize:e.currentStyle()),flat:"",filter:e.search,ref:"table",virtualScrollSliceSize:"100","rows-per-page-options":[0],"virtual-scroll-sticky-size-start":48,"row-key":"iiid",title:e.name,rows:e.rows,columns:e.columns,selection:e.singleMode?"single":"multiple",selected:e.selected,"onUpdate:selected":t[2]||(t[2]=t=>e.selected=t)},{"top-right":(0,l.w5)((()=>[!1!==e.data.tools?((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",ze,[(0,l.Wm)(c,{modelValue:e.search,"onUpdate:modelValue":t[1]||(t[1]=t=>e.search=t),label:"Search",dense:"",ref:"searchField"},(0,l.Nv)({append:(0,l.w5)((()=>[""!=e.search?((0,l.wg)(),(0,l.j4)(d,{key:0,class:"cursor-pointer",name:"close",size:"xs",onClick:t[0]||(t[0]=t=>{e.search="",e.$refs.searchField.focus()})},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Reset search ")])),_:1})])),_:1})):(0,l.kq)("",!0)])),_:2},[""==e.search?{name:"prepend",fn:(0,l.w5)((()=>[(0,l.Wm)(d,{name:"search",size:"xs"})])),key:"0"}:void 0]),1032,["modelValue"]),(0,l._)("div",null,[(0,l.Wm)(h,{class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"select_all","no-caps":"",onClick:e.showSelected},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Show selected ")])),_:1})])),_:1},8,["class","onClick"]),(0,l.Wm)(h,{class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"deselect","no-caps":"",onClick:e.deselectAll},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Deselect all")])),_:1})])),_:1},8,["class","onClick"]),!1!==e.data.multimode?((0,l.wg)(),(0,l.j4)(h,{key:0,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:e.singleMode?"looks_one":"grain","no-caps":"",onClick:e.switchMode},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Multi-single select mode ")])),_:1})])),_:1},8,["class","icon","onClick"])):(0,l.kq)("",!0),e.editable?((0,l.wg)(),(0,l.j4)(h,{key:1,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:e.editMode?"cancel":"edit","no-caps":"",onClick:e.switchEdit},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Edit mode")])),_:1})])),_:1},8,["class","icon","onClick"])):(0,l.kq)("",!0),e.editable&&"append"in e.data?((0,l.wg)(),(0,l.j4)(h,{key:2,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"add","no-caps":"",onClick:e.append},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Add a new row")])),_:1})])),_:1},8,["class","onClick"])):(0,l.kq)("",!0),"delete"in e.data?((0,l.wg)(),(0,l.j4)(h,{key:3,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"delete_forever","no-caps":"",onClick:e.delSelected},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Delete selected ")])),_:1})])),_:1},8,["class","onClick"])):(0,l.kq)("",!0),"view"in e.data?((0,l.wg)(),(0,l.j4)(h,{key:4,class:(0,s.C_)(["q-ml-xs",{"bg-blue-grey-8":e.Dark.isActive}]),dense:"",rounded:"",icon:"insights","no-caps":"",onClick:e.chart},{default:(0,l.w5)((()=>[(0,l.Wm)(r,{class:"text-body2"},{default:(0,l.w5)((()=>[(0,l.Uk)("Draw the chart")])),_:1})])),_:1},8,["class","onClick"])):(0,l.kq)("",!0)])])])):(0,l.kq)("",!0)])),header:(0,l.w5)((t=>[(0,l.Wm)(p,{props:t},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(t.cols,(a=>((0,l.wg)(),(0,l.j4)(u,{class:(0,s.C_)(["text-italic",{"text-grey-9":!e.Dark.isActive,"text-teal-3":e.Dark.isActive}]),key:a.name,props:t},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(a.label),1)])),_:2},1032,["class","props"])))),128))])),_:2},1032,["props"])])),body:(0,l.w5)((t=>[(0,l.Wm)(p,{props:t,onClick:e=>t.selected=!t.selected},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.columns,((a,i)=>((0,l.wg)(),(0,l.j4)(f,{key:a.name,props:t},{default:(0,l.w5)((()=>["boolean"==typeof t.row[a.name]?((0,l.wg)(),(0,l.j4)(g,{key:0,modelValue:t.row[a.name],"onUpdate:modelValue":[e=>t.row[a.name]=e,l=>e.change_switcher(t.row,a.name,i)],dense:"",disable:!e.editMode},null,8,["modelValue","onUpdate:modelValue","disable"])):e.editMode&&"complete"in e.data&&i==e.cedit&&e.redit==t.row.iiid?((0,l.wg)(),(0,l.j4)(m,{key:1,dense:"","model-value":t.row[a.name],"use-input":"","hide-selected":"","fill-input":"",autofocus:"",outlined:"",borderless:"",onInputValue:e.change,"hide-dropdown-icon":"","input-debounce":"0",options:e.options,onKeydown:e.keyInput,onFilter:e.complete},null,8,["model-value","onInputValue","options","onKeydown","onFilter"])):e.editMode&&i==e.cedit&&e.redit==t.row.iiid?((0,l.wg)(),(0,l.j4)(c,{key:2,modelValue:t.row[a.name],"onUpdate:modelValue":[e=>t.row[a.name]=e,e.change],dense:"",onKeydown:e.keyInput,autofocus:""},null,8,["modelValue","onUpdate:modelValue","onKeydown"])):((0,l.wg)(),(0,l.iD)("div",{key:3,onClick:a=>e.select(t.row.iiid,i)},(0,s.zw)(t.row[a.name]),9,je))])),_:2},1032,["props"])))),128))])),_:2},1032,["props","onClick"])])),_:1},8,["dense","style","filter","title","rows","columns","selection","selected"])}var $e=a(1959),Ze=a(9058);function Me(e,t){return e.length===t.length&&e.every(((e,a)=>t[a]&&e.iiid==t[a].iiid))}const Oe=(0,l.aZ)({name:"utable",setup(e){const{data:t,pdata:a}=(0,$e.BK)(e);let s=(0,l.Fl)((()=>{let e=[],a=t.value;const l=a.headers,s=l.length,i=a.rows,o=i.length;for(var n=0;n<o;n++){const t={},a=i[n];for(var d=0;d<s;d++)t[l[d]]=a[d];t.iiid=n,e.push(t)}return e})),i=()=>{let e=t.value,a=null===e.value||0==s.value.length?[]:Array.isArray(e.value)?e.value.map((e=>s.value[e])):[s.value[e.value]];return a},o=i(),n=(0,$e.iH)(o),d=(0,$e.iH)(o),r=(0,$e.iH)(!Array.isArray(t.value.value)),c=(e,l)=>{_([a.value.name,t.value.name,e,l])},h=(0,l.Fl)((()=>r.value?d.value.length>0?d.value[0].iiid:null:d.value.map((e=>e.iiid)))),u=(0,l.Fl)((()=>t.value.value));return(0,l.YP)(s,((e,t)=>{d.value=i(),n.value=d.value})),(0,l.YP)(t,((e,a)=>{m&&console.log("data update",a.name),d.value=i(),n.value=d.value,r.value=!Array.isArray(t.value.value)})),{rows:s,value:h,selected:d,singleMode:r,sendMessage:c,datavalue:u,updated:n}},data(){return{Dark:Ze.Z,search:"",editMode:!1,options:[],cedit:null}},methods:{currentStyle(){let e=this.data.tablerect;if(e){let t=e.width,a=e.height;return`width: ${t}px; height: ${a}px`}return null},select(e,t){this.editMode&&(this.cedit=t,m&&console.log("selected",e,this.cedit))},change_switcher(e,t,a){if(console.log(e,t,a,e[t]),this.editMode){this.cedit=a;const l=e.iiid;let s=this.data.rows;s[l][a]=e[t],this.sendMessage("modify",[e[t],[l,a]])}},change(e){if(m&&console.log("changed",this.data.headers[this.cedit],e),this.editMode&&this.selected.length){const t=this.selected[0].iiid;let a=this.data.rows;a[t][this.cedit]=e,this.sendMessage("modify",[e,[t,this.cedit]])}},keyInput(e){if("Control"==e.key)return;let t=!1;switch(e.key){case"Enter":"update"in this.data&&this.sendMessage("update",[this.rows[this.redit][this.data.headers[this.cedit]],[this.redit,this.cedit]]),t=!0;case"ArrowRight":if(e.ctrlKey||t)for(let e=this.cedit+1;e<this.data.rows[this.redit].length;e++){let t=typeof this.data.rows[this.redit][e];if("string"==t||"number"==t){this.cedit=e;break}}break;case"Escape":this.switchEdit();break;case"ArrowLeft":if(e.ctrlKey)for(let e=this.cedit-1;e>=0;e--){let t=typeof this.data.rows[this.redit][e];if("string"==t||"number"==t){this.cedit=e;break}}break;case"ArrowUp":if(e.ctrlKey&&this.redit>0){let e=this.redit-1,t=this.data,a=typeof t.rows[e][this.cedit];"string"!=a&&"number"!=a||(t.value=e),this.selected=[this.rows[e]]}break;case"ArrowDown":if(e.ctrlKey&&this.redit+1<this.rows.length){let e=this.redit+1,t=this.data,a=typeof t.rows[e][this.cedit];"string"!=a&&"number"!=a||(t.value=e),this.selected=[this.rows[e]]}break}},complete(e,t,a){D(this,[e,[this.redit,this.cedit]],(e=>t((()=>{this.options=e}))))},append(){let e=this.data.rows,t=e.length,a=this;D(this,[t,this.search],(function(l){if(!Array.isArray(l))return h.error(l);m&&console.log("added row",l),a.search="",e.push(l),setTimeout((()=>{let e=a.rows;a.selected=[e[t]],a.showSelected(),a.editMode||a.switchEdit(),a.select(e[t],0)}),100)}),"append")},showSelected(){let e=this.$refs.table;if(this.selected.length){let t=e.computedRows.findIndex((e=>e.iiid===this.selected[0].iiid));e.scrollTo(t)}},deselectAll(){this.selected=[],this.sendMessage("changed",this.value)},chart(){let e=this.data;e.type="chart",e.tablerect=this.$refs.table.$el.getBoundingClientRect(),k[this.fullname].styleSize=this.currentStyle()},switchMode(){this.singleMode=!this.singleMode,this.singleMode&&this.selected.length>1&&this.selected.splice(1)},switchEdit(){this.editMode=!this.editMode,this.editMode&&!this.singleMode&&this.switchMode()},delSelected(){if(!this.selected.length)return void h.error("Rows are not selected!");this.sendMessage("delete",this.value);let e=this.data.rows;if(this.singleMode){let t=this.selected[0].iiid;this.selected=[],e.splice(t,1)}else{this.selected.length>1&&this.selected.sort(((e,t)=>t.iiid-e.iiid));let t=this.selected.map((e=>e.iiid));this.selected=[];for(let a of t)e.splice(a,1)}}},watch:{selected(e){const t=this.data;if(!Me(this.updated,this.selected)){let e=this.selected.length;t.value=this.singleMode?1==e?this.selected[0].iiid:null:this.selected.map((e=>e.iiid)),this.sendMessage("changed",t.value),this.updated=this.selected}t.show&&(this.showSelected(),t.show=!1)}},computed:{fullname(){return`${this.data.name}@${this.pdata.name}`},redit(){return this.editMode&&this.selected.length?this.selected[0].iiid:null},editable(){return 0!=this.data["edit"]},name(){return"_"==this.data.name?"":this.data.name},columns(){return this.data.headers.map((e=>({name:e,label:e,align:"left",sortable:!0,field:e})))}},props:{data:Object,pdata:Object,styleSize:String}});var We=a(9267),Ne=a(4842),Ve=a(8870),He=a(2165),Ke=a(8186),Qe=a(2414),Ue=a(3884),Fe=a(5735),Te=a(7208);const Pe=(0,K.Z)(Oe,[["render",Ee]]),Re=Pe;function Le(e,t,a,i,o,n){return(0,l.wg)(),(0,l.iD)("div",{ref:"graph",style:(0,s.j5)(a.styleSize),id:"graph"},null,4)}R()(Oe,"components",{QTable:We.Z,QInput:Ne.Z,QIcon:F.Z,QTooltip:Ve.Z,QBtn:He.Z,QTr:Ke.Z,QTh:Qe.Z,QTd:Ue.Z,QCheckbox:Fe.Z,QSelect:Te.Z});var Be=a(130),Ie=a.n(Be),Ye=a(309);var Ge=a(5154),Je=a.n(Ge),Xe=a(4150),et=a.n(Xe);let tt="#091159",at={hideEdgesOnMove:!1,hideLabelsOnMove:!1,renderLabels:!0,renderEdgeLabels:!0,enableEdgeClickEvents:!0,enableEdgeWheelEvents:!1,enableEdgeHoverEvents:!0,enableEdgeHovering:!0,allowInvalidContainer:!0,enableEdgeClickEvents:!0,enableEdgeHoverEvents:!0,defaultNodeColor:"#FCA072",defaultNodeType:"circle",defaultEdgeColor:"#888",defaultEdgeType:"arrow",labelFont:"Arial",labelSize:14,labelWeight:"normal",labelColor:{color:"#00838F",attribute:"#000"},edgeLabelFont:"Arial",edgeLabelSize:14,edgeLabelWeight:"normal",edgeLabelColor:{attribute:"color"},stagePadding:30,labelDensity:1,labelGridCellSize:100,labelRenderedSizeThreshold:6,animationsTime:1e3,borderSize:2,outerBorderSize:3,defaultNodeOuterBorderColor:"rgb(236, 81, 72)",edgeHoverHighlightNodes:"circle",sideMargin:1,edgeHoverColor:"edge",defaultEdgeHoverColor:"#062646",edgeHoverSizeRatio:1,edgeHoverExtremities:!0,scalingMode:"outside"};const lt={name:"sgraph",props:{data:{type:Object,required:!0},pdata:{type:Object,required:!0},styleSize:String},data(){return{Dark:Ze.Z,s:null,state:{searchQuery:""},selectedNodes:[],selectedEdges:[],graph:null,fa2start:null,fa2stop:null,fa2run:null}},methods:{sendMessage(e,t){_([this.pdata["name"],this.data["name"],e,t])},refresh(){let e=this.graph();const t=et().inferSettings(e);let a=new(Je())(e,{settings:t});m&&console.log("refresh graph",this.data.name,this.pdata.name),a.isRunning()||(a.start(),setTimeout((function(){a.stop()}),1e3))},setSelectedEdges(e){this.s.selectEdges(e)},setSearchQuery(e){if(e){const t=e.toLowerCase(),a=this.graph().nodes().map((e=>({id:e,label:graph.getNodeAttribute(e,"label")}))).filter((({label:e})=>e.toLowerCase().includes(t)));if(1===a.length&&a[0].label===e){this.state.selectedNode=a[0].id,this.state.suggestions=void 0;const e=this.s.getNodeDisplayData(this.state.selectedNode);this.s.getCamera().animate(e,{duration:500})}else this.state.selectedNode=void 0,this.state.suggestions=new Set(a.map((({id:e})=>e)))}else this.state.selectedNode=void 0,this.state.suggestions=void 0;this.s.refresh()},load(e){let t=e.value;this.selectedNodes=t.nodes?t.nodes.map((e=>String(e))):[],this.selectedEdges=t.edges?t.edges.map((e=>String(e))):[];let a=e.sizing,l=e.nodes,s=this.graph(),i=[],o=[],n=new Map;for(let h=0;h<l.length;h++){if(!l[h])continue;let e=Object.assign({},l[h]);void 0==e.id&&(e.id=h),void 0!=e.name&&(e.label=e.name);let t={key:String(e.id),attributes:e};e.size=e.size?e.size:10,i.push(t),n.set(e.id,h);let a=s._nodes.get(t.key);a?(e.x=a.attributes.x,e.y=a.attributes.y):(e.x=Math.random(),e.y=Math.random()),this.selectedNodes.includes(t.key)&&(e.highlighted=!0)}let d=[],r=new Map,c=Array(i.length).fill(0);for(let h=0;h<e.edges.length;h++){let t=Object.assign({},e.edges[h]),l=n.get(t.source),s=n.get(t.target);if(void 0==l||void 0==s)continue;if(void 0==t.id&&(t.id=h),t.name&&(t.label=t.name),t.key=String(t.id),o.push(t),a){"in"!=a&&(s=n.get(t.source),l=n.get(t.target)),c[s]++,r.has(s)?r.get(s).push(l):r.set(s,[l]);let e=d.indexOf(l),i=d.indexOf(s);if(-1==e&&(e=d.length,d.push(l)),-1==i&&(i=d.length,d.push(s)),i<e){let t=d[e];d[e]=d[i],d[i]=t}}let i=t.attributes;i||(i={},t.attributes=i),i.id=t.id,i.size=t.size?t.size:5,this.selectedEdges.includes(t.key)?(i.ocolor=i.color?i.color:at.defaultEdgeColor,i.color=tt):t.color&&(i.color=t.color),t.label&&(i.label=t.label)}if(a)for(let h=0;h<d.length;h++){let e=d[h];if(r.has(e))for(let t of r.get(e))c[e]+=c[t];i[e].attributes.size=10+c[e]}s.clear(),s.import({nodes:i,edges:o}),this.refresh()}},computed:{value(){let e=this.graph(),t=this.selectedNodes.map((t=>e._nodes.get(t).attributes.id)),a=this.selectedEdges.map((t=>e._edges.get(t).attributes.id));return{nodes:t,edges:a}}},watch:{data:{handler(e,t){m&&console.log("data update",this.data.name,this.pdata.name),this.load(e)},deep:!0},"Dark.isActive":function(e){this.s.settings.labelColor.color=e?"#00838F":"#000",this.s.refresh()}},updated(){this.s.refresh(),m&&console.log("updated",this.data.name,this.pdata.name)},mounted(){let e=new Ye.MultiDirectedGraph;this.graph=()=>e;let t=this.$refs.graph;this.s=new(Ie())(e,t,at);let a=this.s;var l=this;function s(t){t?l.state.hoveredNeighbors=new Set(e.neighbors(t)):(l.state.hoveredNode=void 0,l.state.hoveredNeighbors=void 0),a.refresh()}function i(t,a=tt){let l=e.getEdgeAttributes(t);l.color!=a&&(l.ocolor||(l.ocolor=l.color?l.color:at.defaultEdgeColor),e.setEdgeAttribute(t,"color",a))}function o(t,a=tt){let l=e.getEdgeAttributes(t);if(l.color==a){let a=e.getEdgeAttribute(t,"ocolor");e.setEdgeAttribute(t,"color",a)}}this.s.settings.labelColor.color=Ze.Z.isActive?"#00838F":"#000",a.on("clickNode",(function(t){let s=t.node;if(!h.shiftKey){for(let e of l.selectedEdges)o(e);l.selectedEdges=[]}if(l.selectedNodes.includes(s))if(e.setNodeAttribute(s,"highlighted",!1),h.shiftKey){let e=l.selectedNodes.indexOf(s);-1!=e&&l.selectedNodes.array.splice(e,1)}else l.selectedNodes=[];else{if(!h.shiftKey&&l.selectedNodes.length>0){for(let t of l.selectedNodes)e.setNodeAttribute(t,"highlighted",!1);l.selectedNodes=[]}e.setNodeAttribute(s,"highlighted",!0),l.selectedNodes.push(s)}a.refresh(),l.sendMessage("changed",l.value)})),a.on("clickEdge",(function({edge:t}){if(!h.shiftKey){for(let t of l.selectedNodes)e.setNodeAttribute(t,"highlighted",!1);l.selectedNodes=[]}if(l.selectedEdges.includes(t))if(o(t),h.shiftKey){let e=l.selectedEdges.indexOf(t);-1!=e&&l.selectedEdges.array.splice(e,1)}else l.selectedEdges=[];else{if(!h.shiftKey&&l.selectedEdges.length>0){for(let e of l.selectedEdges)o(e);l.selectedEdges=[]}i(t),l.selectedEdges.push(t)}a.refresh(),l.sendMessage("changed",l.value)})),a.on("enterNode",(function({node:t}){for(let a of e.edgeEntries())a.target==t?i(a.edge,"#808000"):a.source==t&&i(a.edge,"#2F4F4F");s(t)})),a.on("leaveNode",(function({node:t}){for(let a of e.edgeEntries())a.target==t?l.selectedEdges.includes(a.edge)?e.setEdgeAttribute(a.edge,"color",tt):o(a.edge,"#808000"):a.source==t&&(l.selectedEdges.includes(a.edge)?e.setEdgeAttribute(a.edge,"color",tt):o(a.edge,"#2F4F4F"));s(void 0)})),a.on("enterEdge",(function({edge:e}){l.selectedEdges.includes(e)||i(e)})),a.on("leaveEdge",(function({edge:e}){l.selectedEdges.includes(e)||o(e)}));const n=new ResizeObserver((e=>a.refresh()));n.observe(t);let d=null,r=!1;a.on("downNode",(t=>{r=!0,d=t.node,e.setNodeAttribute(d,"highlighted",!0)})),a.getMouseCaptor().on("mousemovebody",(t=>{if(!r||!d)return;const l=a.viewportToGraph(t);e.setNodeAttribute(d,"x",l.x),e.setNodeAttribute(d,"y",l.y),t.preventSigmaDefault(),t.original.preventDefault(),t.original.stopPropagation()})),a.getMouseCaptor().on("mouseup",(()=>{d&&e.removeNodeAttribute(d,"highlighted"),r=!1,d=null})),a.getMouseCaptor().on("mousedown",(()=>{a.getCustomBBox()||a.setCustomBBox(a.getBBox())})),this.load(this.data)}},st=(0,K.Z)(lt,[["render",Le]]),it=st;function ot(e,t,a,i,o,n){const d=(0,l.up)("v-chart");return(0,l.wg)(),(0,l.iD)("div",{style:(0,s.j5)(a.styleSize?a.styleSize:n.currentStyle())},[(0,l.Wm)(d,{ref:"chart","manual-update":!0,onClick:n.clicked,autoresize:!0},null,8,["onClick"])],4)}var nt=a(9642),dt=a(6938),rt=a(1006),ct=a(6080),ht=a(3526),ut=a(763),pt=a(546),gt=a(6902),mt=a(2826),ft=a(5256),yt=a(3825),wt=a(8825);(0,ut.D)([dt.N,rt.N,ht.N,ct.N]),(0,ut.D)([pt.N,gt.N,mt.N,ft.N,yt.N]);let bt=["","#80FFA5","#00DDFF","#37A2FF","#FF0087","#FFBF00","rgba(128, 255, 165)","rgba(77, 119, 255)"];const vt={name:"linechart",components:{VChart:nt.ZP},props:{data:Object,pdata:Object,styleSize:String},data(){const e=(0,wt.Z)();return{$q:e,model:!1,animation:null,markPoint:null,options:{responsive:!0,maintainAspectRatio:!1,legend:{data:[],bottom:10,textStyle:{color:"#4DD0E1"}},tooltip:{trigger:"axis",position:function(e){return[e[0],"10%"]}},title:{left:"center",text:""},toolbox:{feature:{}},xAxis:{type:"category",boundaryGap:!1,data:null},yAxis:{type:"value",boundaryGap:[0,"100%"]},dataZoom:[{type:"inside",start:0,end:10},{start:0,end:10}],series:[]}}},computed:{fullname(){return`${this.data.name}@${this.pdata.name}`}},methods:{setOptions(){this.$refs.chart.setOption(this.options)},currentStyle(){let e=this.data.tablerect,t=e?e.width:300,a=e?e.height:200;return`width: ${t}px; height: ${a}px`},processCoord(e,t,a){let l=null;for(let s of t)if(e[0]==s.coord[0]){l=s;break}a?l?t.splice(t.indexOf(l),1):t.push({coord:e}):(t.splice(0,t.length),l||t.push({coord:e}))},clicked(e){let t=[e.dataIndex,this.options.series[e.seriesIndex].data[e.dataIndex]];this.processCoord(t,this.markPoint.data,h.shiftKey);let a=this.markPoint.data.map((e=>e.coord[0])),l=this.data;if(l.value=Array.isArray(l.value)||a.length>1?a:a.length?a[0]:null,this.animation){let e=this.options.dataZoom;e[0].start=this.animation.start,e[1].start=this.animation.start,e[0].end=this.animation.end,e[1].end=this.animation.end}this.setOptions(),_([this.pdata.name,this.data.name,"changed",this.data.value])},calcSeries(){this.options.toolbox.feature.mySwitcher={show:!0,title:"Switch view to the table",icon:"image:M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm15 2h-4v3h4V4zm0 4h-4v3h4V8zm0 4h-4v3h3a1 1 0 0 0 1-1v-2zm-5 3v-3H6v3h4zm-5 0v-3H1v2a1 1 0 0 0 1 1h3zm-4-4h4V8H1v3zm0-4h4V4H1v3zm5-3v3h4V4H6zm4 4H6v3h4V8z",onclick:()=>{let e=this.data;e.type="table",e.tablerect=this.$refs.chart.$el.getBoundingClientRect(),k[this.fullname].styleSize=this.currentStyle()}};let e=this.data.view,t=this.data.headers;"_"!=this.data.name[0]&&(this.options.title.text=this.data.name);let a=e.split("-"),l=a[1].split(",");l.unshift(a[0]);let s=[];for(let o=0;o<l.length;o++)l[o]="i"==l[o]?-1:parseInt(l[o]),s.push([]),o&&(this.options.series.push({name:t[l[o]],type:"line",symbol:"circle",symbolSize:10,sampling:"lttb",itemStyle:{color:bt[o]},data:s[o]}),this.options.legend.data.push(t[l[o]]));this.options.xAxis.data=s[0];let i=this.data.rows;for(let o=0;o<i.length;o++)for(let e=0;e<l.length;e++)s[e].push(-1==l[e]?o:i[o][l[e]]);if(this.options.series[1]){let e=[],t=this.options.series[1].data,a=Array.isArray(this.data.value)?this.data.value:null===this.data.value?[]:[this.data.value];for(let l=0;l<a.length;l++)this.processCoord([a[l],t[a[l]]],e,!0);this.markPoint={symbol:"rect",symbolSize:10,animationDuration:300,silent:!0,label:{color:"#fff"},itemStyle:{color:"blue"},data:e},this.options.series[1].markPoint=this.markPoint}this.setOptions()}},mounted(){this.calcSeries();let e=this;this.$refs.chart.chart.on("datazoom",(function(t){(t.start||t.end)&&(e.animation=t)}))}},kt=(0,K.Z)(vt,[["render",ot]]),xt=kt;let Ct={right:"4px",borderRadius:"7px",backgroundColor:"#027be3",width:"4px",opacity:.75},_t={right:"2px",borderRadius:"9px",backgroundColor:"#027be3",width:"8px",opacity:.2};function At(e){let t=new FormData;t.append("image",e);let a=new XMLHttpRequest;a.open("POST",b,!0),a.onload=function(){200===this.status?console.log(this.response):console.error(a)},a.send(t)}const St=(0,l.aZ)({name:"element",components:{utable:Re,sgraph:it,linechart:xt},methods:{log(e){console.log(e)},showSelected(){if("tree"==this.type||"list"==this.type){let e=this.value;e&&requestAnimationFrame((()=>{requestAnimationFrame((()=>{let t=this.$refs.tree.$el,a=this.$refs.scroller.$el;for(let l of t.getElementsByTagName("div"))if(l.innerHTML==e){const{bottom:e,height:t,top:s}=l.getBoundingClientRect();if(s){const l=a.getBoundingClientRect();(s<=l.top?l.top-s<=t:e-l.bottom<=t)||this.$refs.scroller.setScrollPosition("vertical",s-l.top);break}}}))}))}},onAdded(e){0!==e.length&&(0!==this.fileArr.length?(this.$refs.uploaderRef.removeFile(this.fileArr[0]),this.fileArr.splice(0,1,e[0])):this.fileArr.push(e[0]))},sendMessage(e,t){_([this.pdata["name"],this.data["name"],e,t])},pressedEnter(){"update"in this.data&&this.sendMessage("update",this.value)},updateDom(e){let t=e.files.length;t&&this.sendMessage("changed",e.xhr.responseText)},sendValue(){this.sendMessage("changed",this.value)},switchValue(){this.value=!this.value},setValue(e){this.value=e},complete(e,t,a){D(this,e,(e=>t((()=>{this.options=e}))))},lens(){h.lens(this.data)},toggleCamera(){this.isCameraOpen?(this.isCameraOpen=!1,this.isPhotoTaken=!1,this.isShotPhoto=!1,this.stopCameraStream()):(this.isCameraOpen=!0,this.createCameraElement())},createCameraElement(){this.isLoading=!0;const e=window.constraints={audio:!1,video:!0};navigator.mediaDevices.getUserMedia(e).then((e=>{this.isLoading=!1,this.$refs.camera.srcObject=e})).catch((e=>{this.isLoading=!1,alert("May the browser didn't support or there are some errors.")}))},stopCameraStream(){let e=this.$refs.camera.srcObject.getTracks();e.forEach((e=>{e.stop()}))},takePhoto(){if(!this.isPhotoTaken){this.isShotPhoto=!0;const e=50;setTimeout((()=>{this.isShotPhoto=!1}),e)}this.isPhotoTaken=!this.isPhotoTaken;const e=this.$refs.canvas.getContext("2d");e.drawImage(this.$refs.camera,0,0,450,337.5)},downloadImage(){document.getElementById("downloadPhoto"),document.getElementById("photoTaken").toBlob(At,"image/jpeg")},rect(){let e="clientHeight"in this.$el?this.$el:this.$el.nextElementSibling;return e.getBoundingClientRect()},geom(){let e=this.type,t=this.$el;t="tree"==e||"list"==e?t.querySelector(".scroll"):"clientHeight"in t?t:t.nextElementSibling,t||(t=this.$el.previousElementSibling,t="clientHeight"in t?t:t.nextElementSibling);const a="text"==e||"graph"==e||"chart"==e?t:t.querySelector("table"==e?".scroll":".q-tree"),l=t.getBoundingClientRect();return{el:t,inner:a,left:l.left,right:l.right,top:l.top,bottom:l.bottom,scrollHeight:a.scrollHeight,scrollWidth:a.scrollWidth}}},updated(){k[this.fullname]=this,this.showSelected(),m&&console.log("updated",this.fullname)},mounted(){k[this.fullname]=this,this.data.focus&&this.$refs.inputRef.$el.focus(),this.showSelected(),m&&console.log("mounted",this.fullname)},data(){return{Dark:Ze.Z,value:this.data.value,styleSize:A?q(this):null,has_recalc:!0,host_path:b,options:[],expandedKeys:[],thumbStyle:Ct,barStyle:_t,updated:"#027be3sds",isCameraOpen:!1,isPhotoTaken:!1,isShotPhoto:!1,isLoading:!1,link:"#",fileArr:[]}},computed:{elemSize(){let e="";return this.data.width&&(e=`width:${this.data.width}px`),this.data.height&&(""!=e&&(e+="; "),e+=`height:${this.data.height}px`),""==e?this.styleSize:e},parent_name(){return this.pdata?this.pdata.name:null},name(){return this.data.name},fullname(){return`${this.data.name}@${this.pdata.name}`},showname(){let e=this.data.name;return e&&"_"!=e[0]},name2show(){let e=this.data.name;return e&&"_"!=e[0]?e:""},nameLabel(){return this.data.label?this.data.label:"_"!=this.data.name[0]?this.data.name:""},text(){return this.data.text},expanding(){return y.includes(this.type)},expanding_width(){return!this.data.width&&this.expanding},expanding_height(){return!this.data.height&&this.expanding},selection(){return this.data.selection},icon(){return this.data.icon},type(){return this.data.type},treeNodes(){var e=[];if("list"==this.type)return this.data.options.map((e=>({label:e,children:[]})));var t={};for(const[s,i]of Object.entries(this.data.options)){var a=t[s];if(a||(a={label:s,children:[]},t[s]=a),i){var l=t[i];l||(l={label:i,children:[]},t[i]=l),l.children.push(a)}else e.push(a)}return e}},props:{data:{type:Object,required:!0},pdata:{type:Object,required:!0}},watch:{value(e,t){"tree"!=this.type&&"list"!=this.type||(this.data.options[e]==t&&this.expandedKeys.indexOf(t)<0&&this.expandedKeys.push(t),this.showSelected()),e!==this.updated&&(m&&console.log("value changed",e,t),this.sendValue(),this.updated=e)},selection(e){m&&console.log("selection changed",e,this.$refs.inputRef),Array.isArray(e)||(e=[0,0]);let t=this.$refs.inputRef.$el;t.focus();let a=t.getElementsByTagName("textarea");0==a.length&&(a=t.getElementsByTagName("input")),a[0].setSelectionRange(e[0],e[1])},data(e,t){m&&console.log("data update",this.fullname,t.name),this.styleSize||(this.styleSize=null),h.screen.reload&&"tree"==this.type&&this.$refs.tree&&this.$refs.tree.expandAll(),this.value=this.data.value,this.updated=this.value,k[this.fullname]=this}}});var qt=a(4027),Dt=a(8886),zt=a(9721),jt=a(2064),Et=a(8761),$t=a(7704),Zt=a(5551),Mt=a(5869),Ot=a(1745),Wt=a(8506);const Nt=(0,K.Z)(St,[["render",qe],["__scopeId","data-v-f48596a0"]]),Vt=Nt;R()(St,"components",{QImg:qt.Z,QIcon:F.Z,QSelect:Te.Z,QCheckbox:Fe.Z,QToggle:Dt.Z,QBadge:zt.Z,QSlider:jt.Z,QBtn:He.Z,QBtnToggle:Et.Z,QInput:Ne.Z,QScrollArea:$t.Z,QTree:Zt.Z,QSeparator:Mt.Z,QUploader:Ot.Z,QTooltip:Ve.Z,QSpinnerIos:Wt.Z});const Ht=(0,l.aZ)({name:"block",components:{element:Vt},data(){return{Dark:Ze.Z,styleSize:null,thumbStyle:{right:"4px",borderRadius:"7px",backgroundColor:"#027be3",width:"4px",opacity:.75},barStyle:{right:"2px",borderRadius:"9px",backgroundColor:"#027be3",width:"8px",opacity:.2}}},methods:{log(){console.log(Object.keys(v).length,this.name,this.$el.getBoundingClientRect())},geom(){let e="clientHeight"in this.$el?this.$el:this.$el.nextElementSibling,t=e.querySelector(".q-scrollarea");t||(t=e);const a=t.getBoundingClientRect();return{el:e,inner:t,left:a.left,right:a.right,top:a.top,bottom:a.bottom,scrollHeight:window.innerHeight,scrollWidth:window.innerWidth}},free_right_delta4(e,t){for(let a of this.data.value)if(Array.isArray(a)){for(let l of a)if(l==e.data){let l=a[a.length-1];return l==e.data?t:f.includes(l.type)?0:k[`${l.name}@${this.name}`].$el.getBoundingClientRect().right}}else if(a===e)return t;return 0}},mounted(){v[this.data.name]=this,(this.expanding||this.data.width)&&(k[this.fullname]=this)},computed:{name(){return this.data.name},fullname(){return`${this.data.scroll?"_scroll":"_space"}@${this.name}`},icon(){return this.data.icon},type(){return this.data.type},expanding(){return this.data.scroll},expanding_width(){return this.expanding},name_elements(){if(this.expanding)return[this.fullname];let e=[];for(let t of this.data.value)if(Array.isArray(t))for(let a of t)e.push(`${a.name}@${this.name}`);else e.push(`${t.name}@${this.name}`);return e},hlevelements(){if(this.expanding)return[[k[this.fullname]]];let e=[];for(let t of this.data.value)if(Array.isArray(t)){let a=t.map((e=>k[`${e.name}@${this.name}`])).filter((e=>e.expanding));a.length&&e.push(a)}else{let a=k[`${t.name}@${this.name}`];a.expanding&&e.push([a])}return e},only_fixed_elems(){if(this.data.scroll)return!1;for(let e of this.data.value)if(Array.isArray(e)){for(let t of e)if(y.includes(t.type))return!1}else if(y.includes(e.type))return!1;return!0},expanding_height(){return!this.data.height&&(this.expanding||this.only_fixed_elems)},tops(){let e=this.data.value;return e.length?Array.isArray(e[0])?e[0]:[e[0]]:[]}},props:{data:{type:Object,required:!0}},watch:{data(e){m&&console.log("data update",this.name),v[this.name]=this,this.expanding&&(k[this.fullname]=this)}}});var Kt=a(151);const Qt=(0,K.Z)(Ht,[["render",se]]),Ut=Qt;function Ft(){let e=A&&k.size==x.size;if(e)for(let[t,a]of Object.entries(k))if(!x[t]){e=!1;break}e||(W(document.documentElement.scrollWidth>window.innerWidth),(0,l.Y3)((()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{h.visible(!0)}))}))})))}R()(Ht,"components",{QCard:Kt.Z,QIcon:F.Z,QScrollArea:$t.Z});const Tt=(0,l.aZ)({name:"zone",components:{block:Ut},props:{data:Object},updated(e){(0,l.Y3)((()=>{requestAnimationFrame((()=>{requestAnimationFrame(Ft)}))}))}}),Pt=(0,K.Z)(Tt,[["render",J]]),Rt=Pt,Lt={class:"row q-gutter-sm row-md"};function Bt(e,t,a,i,o,n){const d=(0,l.up)("block"),r=(0,l.up)("q-item-label"),c=(0,l.up)("q-space"),h=(0,l.up)("q-btn"),u=(0,l.up)("q-card"),p=(0,l.up)("q-dialog");return(0,l.wg)(),(0,l.j4)(p,{ref:"dialog",onHide:n.onDialogHide,onKeyup:(0,ie.D2)(n.pressedEnter,["enter"])},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{class:"q-dialog-plugin q-pa-md items-start q-gutter-md",bordered:"",style:(0,s.j5)(a.data.internal?"width: 800px; max-width: 80vw;":"")},{default:(0,l.w5)((()=>[a.data?((0,l.wg)(),(0,l.j4)(d,{key:0,data:a.data},null,8,["data"])):(0,l.kq)("",!0),(0,l.Wm)(r,{class:"text-h6"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,s.zw)(a.data.text?a.data.text:""),1)])),_:1}),(0,l._)("div",Lt,[(0,l.Wm)(c),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(a.commands,(e=>((0,l.wg)(),(0,l.j4)(h,{class:"col-md-3",label:e,"no-caps":"",color:a.commands[0]==e?"primary":"secondary",onClick:t=>n.sendMessage(e)},null,8,["label","color","onClick"])))),256))])])),_:1},8,["style"])])),_:1},8,["onHide","onKeyup"])}const It={props:{data:Object,commands:Array},components:{block:Ut},emits:["ok","hide"],data(){return{closed:!1}},methods:{show(){this.$refs.dialog.show(),h.dialog=this},message4(e){return[this.data["name"],null,"changed",e]},sendMessage(e){this.data.internal||_(this.message4(e)),this.closed=!0,this.hide()},hide(){this.$refs.dialog.hide(),h.dialog=null},onDialogHide(){this.$emit("hide"),this.closed||this.data.internal||_(this.message4(null))},pressedEnter(){this.sendMessage(this.commands[0])},onOKClick(){this.$emit("ok"),this.hide()},onCancelClick(){this.hide()}}};var Yt=a(5926),Gt=a(2025);const Jt=(0,K.Z)(It,[["render",Bt]]),Xt=Jt;R()(It,"components",{QDialog:Yt.Z,QCard:Kt.Z,QItemLabel:T.Z,QSpace:Gt.Z,QBtn:He.Z});var ea=a(589);let ta="theme";try{Ze.Z.set(ea.Z.getItem(ta))}catch(pa){}let aa=null;const la=(0,l.aZ)({name:"MainLayout",data(){return{leftDrawerOpen:!1,Dark:Ze.Z,menu:[],tab:"",tooldata:{name:"toolbar"},localServer:!0,statusConnect:!1,screen:{blocks:[],toolbar:[]},visibility:!0,designCycle:0,shiftKey:!1}},components:{menubar:B,zone:Rt,element:Vt},created(){C(this)},unmounted(){window.removeEventListener("resize",this.onResize)},computed:{left_toolbar(){return this.screen.toolbar.filter((e=>!e.right))},right_toolbar(){return this.screen.toolbar.filter((e=>e.right))}},methods:{switchTheme(){Ze.Z.set(!Ze.Z.isActive),ea.Z.set(ta,Ze.Z.isActive)},toggleLeftDrawer(){this.leftDrawerOpen=!this.leftDrawerOpen},tabclick(e){_(["root",null,"changed",e])},visible(e){this.visibility!=e&&(this.$refs.page.$el.style.visibility=e?"":"hidden",this.visibility=e)},handleKeyDown(e){"Shift"==e.key&&(this.shiftKey=!0)},handleKeyUp(e){"Shift"==e.key&&(this.shiftKey=!1)},onResize(e){m&&console.log(`window has been resized w = ${window.innerWidth}, h=${window.innerHeight}`),this.designCycle=0,O()},lens(e){let t={title:"Photo lens",message:e.text,cancel:!0,persistent:!0,component:Xt},{height:a,...l}=e;l.width=750;let s={name:`Picture lens of ${e.name}`,value:[[],l],internal:!0};t.componentProps={data:s,commands:["Close"]},this.$q.dialog(t)},notify(e,t){let a=t,l={message:e,type:t,position:"top",icon:a};"progress"==t?null==aa?(l={group:!1,timeout:0,spinner:!0,type:"info",message:e||"Progress..",position:"top",color:"secondary"},aa=this.$q.notify(l)):null==e?(aa(),aa=null):(l={caption:e},aa(l)):("error"==t&&l.type,this.$q.notify(l))},error(e){this.notify(e,"error")},info(e){this.notify(e,"info")},processMessage(e){if("screen"==e.type)z(),this.screen.name!=e.name?(S(!1),m||this.visible(!1)):e.reload&&S(!1),this.screen=e,this.menu=e.menu.map((e=>({name:e[0],icon:e[1],order:e[2]}))),this.tab=this.screen.name;else if("dialog"==e.type){let t={title:e.name,message:e.text,cancel:!0,persistent:!0};t.component=Xt,t.componentProps={data:e,commands:e.commands},this.$q.dialog(t)}else if("complete"==e.type||"append"==e.type)$(e);else if("action"==e.type&&"close"==e.value)this.dialog&&(this.dialog.data.internal=!0),this.dialog.hide();else{let t=e.updates&&e.updates.length;t&&E(e.updates);let a=!1;["error","progress","warning","info"].includes(e.type)&&(this.notify(e.value,e.type),a=!0),a||t||(this.error("Invalid data came from the server! Look the console."),console.log(`Invalid data came from the server! ${e}`))}this.closeProgress(e)},closeProgress(e){!aa||e&&"progress"==e.type||this.notify(null,"progress")}},mounted(){window.addEventListener("resize",this.onResize);const e=new ResizeObserver((e=>{let t=document.documentElement.scrollWidth>window.innerWidth||document.documentElement.scrollHeight>window.innerHeight;t&&M(!1)}));let t=this.$refs.page.$el;e.observe(t),window.addEventListener("keydown",this.handleKeyDown),window.addEventListener("keyup",this.handleKeyUp)},beforeUnmount(){window.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("keyup",this.handleKeyUp)}});var sa=a(9214),ia=a(3812),oa=a(9570),na=a(7547),da=a(3269),ra=a(2652),ca=a(4379);const ha=(0,K.Z)(la,[["render",n]]),ua=ha;R()(la,"components",{QLayout:sa.Z,QHeader:ia.Z,QToolbar:oa.Z,QBtn:He.Z,QItemLabel:T.Z,QTabs:na.Z,QTab:da.Z,QSpace:Gt.Z,QTooltip:Ve.Z,QPageContainer:ra.Z,QPage:ca.Z})}}]);
|
@@ -1 +1 @@
|
|
1
|
-
(()=>{"use strict";var e={653:(e,t,r)=>{r(5363),r(71);var o=r(8880),n=r(9592),a=r(3673);const i={id:"q-app"};function l(e,t,r,o,n,l){const s=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",i,[(0,a.Wm)(s)])}const s=(0,a.aZ)({name:"App"});var u=r(4260);const c=(0,u.Z)(s,[["render",l]]),d=c;var p=r(3340),f=r(8339);const h=[{path:"/",component:()=>Promise.all([r.e(736),r.e(
|
1
|
+
(()=>{"use strict";var e={653:(e,t,r)=>{r(5363),r(71);var o=r(8880),n=r(9592),a=r(3673);const i={id:"q-app"};function l(e,t,r,o,n,l){const s=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",i,[(0,a.Wm)(s)])}const s=(0,a.aZ)({name:"App"});var u=r(4260);const c=(0,u.Z)(s,[["render",l]]),d=c;var p=r(3340),f=r(8339);const h=[{path:"/",component:()=>Promise.all([r.e(736),r.e(662)]).then(r.bind(r,2662)),children:[{path:"",component:()=>Promise.all([r.e(736),r.e(430)]).then(r.bind(r,6430))}]},{path:"/:catchAll(.*)*",component:()=>Promise.all([r.e(736),r.e(193)]).then(r.bind(r,2193))}],v=h,m=(0,p.BC)((function(){const e=f.r5,t=(0,f.p7)({scrollBehavior:()=>({left:0,top:0}),routes:v,history:e("")});return t}));async function g(e,t){const r="function"===typeof m?await m({}):m,o=e(d);return o.use(n.Z,t),{app:o,router:r}}var b=r(6417),y=r(5597),w=r(589),O=r(7153);const k={config:{notify:{}},plugins:{Notify:b.Z,Dialog:y.Z,LocalStorage:w.Z,SessionStorage:O.Z}},C="";async function P({app:e,router:t},r){let o=!1;const n=e=>{try{return t.resolve(e).href}catch(r){}return Object(e)===e?null:e},a=e=>{if(o=!0,"string"===typeof e&&/^https?:\/\//.test(e))return void(window.location.href=e);const t=n(e);null!==t&&(window.location.href=t,window.location.reload())},i=window.location.href.replace(window.location.origin,"");for(let s=0;!1===o&&s<r.length;s++)try{await r[s]({app:e,router:t,ssrContext:null,redirect:a,urlPath:i,publicPath:C})}catch(l){return l&&l.url?void a(l.url):void console.error("[Quasar] boot error:",l)}!0!==o&&(e.use(t),e.mount("#q-app"))}g(o.ri,k).then((e=>Promise.all([Promise.resolve().then(r.bind(r,2390))]).then((t=>{const r=t.map((e=>e.default)).filter((e=>"function"===typeof e));P(e,r)}))))},2390:(e,t,r)=>{r.r(t),r.d(t,{default:()=>n});var o=r(3340);const n=(0,o.xr)((async({app:e})=>{}))}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={id:o,loaded:!1,exports:{}};return e[o].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(!o){var i=1/0;for(c=0;c<e.length;c++){for(var[o,n,a]=e[c],l=!0,s=0;s<o.length;s++)(!1&a||i>=a)&&Object.keys(r.O).every((e=>r.O[e](o[s])))?o.splice(s--,1):(l=!1,a<i&&(i=a));if(l){e.splice(c--,1);var u=n();void 0!==u&&(t=u)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[o,n,a]}})(),(()=>{r.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;return r.d(t,{a:t}),t}})(),(()=>{r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}})(),(()=>{r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,o)=>(r.f[o](e,t),t)),[]))})(),(()=>{r.u=e=>"js/"+e+"."+{193:"283445be",430:"591e9a73",662:"5957b792"}[e]+".js"})(),(()=>{r.miniCssF=e=>"css/"+({143:"app",736:"vendor"}[e]||e)+"."+{143:"31d6cfe0",662:"64dbc68c",736:"9ed7638d"}[e]+".css"})(),(()=>{r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="uniqua:";r.l=(o,n,a,i)=>{if(e[o])e[o].push(n);else{var l,s;if(void 0!==a)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var d=u[c];if(d.getAttribute("src")==o||d.getAttribute("data-webpack")==t+a){l=d;break}}l||(s=!0,l=document.createElement("script"),l.charset="utf-8",l.timeout=120,r.nc&&l.setAttribute("nonce",r.nc),l.setAttribute("data-webpack",t+a),l.src=o),e[o]=[n];var p=(t,r)=>{l.onerror=l.onload=null,clearTimeout(f);var n=e[o];if(delete e[o],l.parentNode&&l.parentNode.removeChild(l),n&&n.forEach((e=>e(r))),t)return t(r)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=p.bind(null,l.onerror),l.onload=p.bind(null,l.onload),s&&document.head.appendChild(l)}}})(),(()=>{r.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e)})(),(()=>{r.p=""})(),(()=>{var e=(e,t,r,o)=>{var n=document.createElement("link");n.rel="stylesheet",n.type="text/css";var a=a=>{if(n.onerror=n.onload=null,"load"===a.type)r();else{var i=a&&("load"===a.type?"missing":a.type),l=a&&a.target&&a.target.href||t,s=new Error("Loading CSS chunk "+e+" failed.\n("+l+")");s.code="CSS_CHUNK_LOAD_FAILED",s.type=i,s.request=l,n.parentNode.removeChild(n),o(s)}};return n.onerror=n.onload=a,n.href=t,document.head.appendChild(n),n},t=(e,t)=>{for(var r=document.getElementsByTagName("link"),o=0;o<r.length;o++){var n=r[o],a=n.getAttribute("data-href")||n.getAttribute("href");if("stylesheet"===n.rel&&(a===e||a===t))return n}var i=document.getElementsByTagName("style");for(o=0;o<i.length;o++){n=i[o],a=n.getAttribute("data-href");if(a===e||a===t)return n}},o=o=>new Promise(((n,a)=>{var i=r.miniCssF(o),l=r.p+i;if(t(i,l))return n();e(o,l,n,a)})),n={143:0};r.f.miniCss=(e,t)=>{var r={662:1};n[e]?t.push(n[e]):0!==n[e]&&r[e]&&t.push(n[e]=o(e).then((()=>{n[e]=0}),(t=>{throw delete n[e],t})))}})(),(()=>{var e={143:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else{var a=new Promise(((r,o)=>n=e[t]=[r,o]));o.push(n[2]=a);var i=r.p+r.u(t),l=new Error,s=o=>{if(r.o(e,t)&&(n=e[t],0!==n&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",l.name="ChunkLoadError",l.type=a,l.request=i,n[1](l)}};r.l(i,s,"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,l,s]=o,u=0;if(i.some((t=>0!==e[t]))){for(n in l)r.o(l,n)&&(r.m[n]=l[n]);if(s)var c=s(r)}for(t&&t(o);u<i.length;u++)a=i[u],r.o(e,a)&&e[a]&&e[a][0](),e[i[u]]=0;return r.O(c)},o=globalThis["webpackChunkuniqua"]=globalThis["webpackChunkuniqua"]||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})();var o=r.O(void 0,[736],(()=>r(653)));o=r.O(o)})();
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: unisi
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.12
|
4
4
|
Summary: Unified System Interface, GUI and Remote API
|
5
5
|
Author-Email: UNISI Tech <g.dernovoy@gmail.com>
|
6
6
|
License: Apache-2.0
|
@@ -16,7 +16,7 @@ Requires-Dist: websocket-client
|
|
16
16
|
Description-Content-Type: text/markdown
|
17
17
|
|
18
18
|
# UNISI #
|
19
|
-
UNified System Interface and
|
19
|
+
UNified System Interface, GUI and Remote API
|
20
20
|
|
21
21
|
### Purpose ###
|
22
22
|
UNISI technology provides a unified system interface and advanced program functionality, eliminating the need for front-end and most back-end programming. It automates common tasks, as well as unique ones, significantly reducing the necessity for manual programming and effort.
|
@@ -31,6 +31,7 @@ UNISI technology provides a unified system interface and advanced program functi
|
|
31
31
|
- Integral autotesting
|
32
32
|
- Protocol schema auto validation
|
33
33
|
- Shared sessions
|
34
|
+
- Monitoring and profiling
|
34
35
|
|
35
36
|
### Installing ###
|
36
37
|
```
|
@@ -92,10 +93,13 @@ Connect a browser to localhast:8000 which are by default and will see:
|
|
92
93
|
### Handling events ###
|
93
94
|
All handlers are functions which have a signature
|
94
95
|
```
|
95
|
-
def handler_x(gui_object, value_x)
|
96
|
+
def handler_x(gui_object, value_x) #or
|
97
|
+
async def handler_x(gui_object, value_x)
|
96
98
|
```
|
97
99
|
where gui_object is a Python object the user interacted with and value for the event.
|
98
100
|
|
101
|
+
#### UNISI supports synchronous and asynchronous handlers automatically adopting them for using. ####
|
102
|
+
|
99
103
|
All Gui objects except Button have a field ‘value’.
|
100
104
|
For an edit field the value is a string or number, for a switch or check button the value is boolean, for table is row id or index, e.t.c.
|
101
105
|
When a user changes the value of the Gui object or presses Button, the server calls the ‘changed’ function handler.
|
@@ -113,10 +117,9 @@ clean_button = Button('Clean the table’, clean_table)
|
|
113
117
|
| Gui object array or tuple | Objects to update |
|
114
118
|
| None | Nothing to update, Ok |
|
115
119
|
| Error(...), Warning(...), Info(...) | Show to user info about a state. |
|
116
|
-
| True |
|
117
|
-
|
120
|
+
| True | Update whole screen |
|
121
|
+
| Redesign | Update and redesign whole screen |
|
118
122
|
| Dialog(..) | Open a dialog with parameters |
|
119
|
-
| user.set_screen(screen_name) | switch to another screen |
|
120
123
|
|
121
124
|
Unisi synchronizes GUI state on frontend-end automatically after calling a handler.
|
122
125
|
|
@@ -408,23 +411,23 @@ Error(error_message, *someGUIforUpdades)
|
|
408
411
|
```
|
409
412
|
They are returned by handlers and cause appearing on the top screen colored rectangles window for 3 second. someGUIforUpdades is optional GUI enumeration for updating.
|
410
413
|
|
411
|
-
For long time processes it is possible to create Progress window. It is just call user.progress in any
|
414
|
+
For long time processes it is possible to create Progress window. It is just call user.progress in any async handler.
|
412
415
|
Open window
|
413
416
|
```
|
414
|
-
user.progress("Analyze .. Wait..")
|
417
|
+
await user.progress("Analyze .. Wait..")
|
415
418
|
```
|
416
419
|
Update window message
|
417
420
|
```
|
418
|
-
user.progress(" 1% is done..")
|
421
|
+
await user.progress(" 1% is done..")
|
419
422
|
```
|
420
|
-
|
423
|
+
Progress window is automatically closed when the handler is finished.
|
421
424
|
|
422
425
|
### Milti-user support. ###
|
423
426
|
Unisi automatically creates and serves an environment for every user.
|
424
427
|
The management class is User contains all required methods for processing and handling the user activity. A programmer can redefine methods in the inherited class, point it as system user class and that is all. Such methods suit for history navigation, undo/redo and initial operations. The screen folder contains screens which are recreated for every user. The same about blocks. The code and modules outside that folders are common for all users as usual. By default Unisi uses the system User class and you do not need to point it.
|
425
428
|
```
|
426
|
-
class Hello_user(unisi.User
|
427
|
-
def __init__(self):
|
429
|
+
class Hello_user(unisi.User):
|
430
|
+
def __init__(self, session, share = None):
|
428
431
|
super().__init__(session, share)
|
429
432
|
print('New Hello user connected and created!')
|
430
433
|
|
@@ -1,23 +1,24 @@
|
|
1
|
-
unisi-0.1.
|
2
|
-
unisi-0.1.
|
3
|
-
unisi-0.1.
|
4
|
-
unisi/__init__.py,sha256=
|
5
|
-
unisi/autotest.py,sha256=
|
6
|
-
unisi/common.py,sha256=
|
7
|
-
unisi/containers.py,sha256=
|
8
|
-
unisi/guielements.py,sha256=
|
1
|
+
unisi-0.1.12.dist-info/METADATA,sha256=qUwdMcBAUP61NnJq4uu87ynQgTfsnMJdBHPnnttD_vM,21624
|
2
|
+
unisi-0.1.12.dist-info/WHEEL,sha256=7sv5iXvIiTVJSnAxCz2tGBm9DHsb2vPSzeYeT7pvGUY,90
|
3
|
+
unisi-0.1.12.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
4
|
+
unisi/__init__.py,sha256=ZG79jkpNc3wvOYbO058Jh850ozD4rswMuPXwVPvcKy8,205
|
5
|
+
unisi/autotest.py,sha256=oYDYRc5gF01lYF2q1a8EFjz0pz9IsedLmG_9Y1op2_A,8731
|
6
|
+
unisi/common.py,sha256=D1khg0Dkvyn3Zi9bK2ZZQpjXmvOotNGDjJdzRiwZ6XY,624
|
7
|
+
unisi/containers.py,sha256=gY6oV3Wz35CZ7vrlEvfJVsTuJ3bgGAqLFItkX2Oiiuo,4165
|
8
|
+
unisi/guielements.py,sha256=d8g5UKPmqGIDwVRhikTrSW3NvysMqI3R4ti0BeHf5Oo,5955
|
9
9
|
unisi/jsoncomparison/__init__.py,sha256=lsWkYEuL6v3Qol-lwSUvB6y63tm6AKcCMUd4DZDx3Cg,350
|
10
10
|
unisi/jsoncomparison/compare.py,sha256=qPDaxd9n0GgiNd2SgrcRWvRDoXGg7NStViP9PHk2tlQ,6152
|
11
11
|
unisi/jsoncomparison/config.py,sha256=LbdLJE1KIebFq_tX7zcERhPvopKhnzcTqMCnS3jN124,381
|
12
12
|
unisi/jsoncomparison/errors.py,sha256=wqphE1Xn7K6n16uvUhDC45m2BxbsMUhIF2olPbhqf4o,1192
|
13
13
|
unisi/jsoncomparison/ignore.py,sha256=xfF0a_BBEyGdZBoq-ovpCpawgcX8SRwwp7IrGnu1c2w,2634
|
14
|
+
unisi/multimon.py,sha256=NJhSXmLp1fnDuaAa6-PCUSPCEjl_vf6TFfQRLQHklFI,4200
|
14
15
|
unisi/proxy.py,sha256=meZ4-26KXefuaZ04Gfrexij7rreBPKLPJSwPCIqftx0,7660
|
15
16
|
unisi/reloader.py,sha256=B0f9GU452epFvdih8sH7_NiIJrXnC5i27uw2imGQxMg,6585
|
16
|
-
unisi/server.py,sha256=
|
17
|
+
unisi/server.py,sha256=tAbDjVqOHRbRVR2JcSt--ctuywKduWiOOCHJwIFSa7M,4118
|
17
18
|
unisi/tables.py,sha256=v7Fio5iIN7u1t7cE4Yvl4ewn7jTmmNPyWigoKW1Mj8U,4239
|
18
|
-
unisi/users.py,sha256=
|
19
|
-
unisi/utils.py,sha256=
|
20
|
-
unisi/web/css/
|
19
|
+
unisi/users.py,sha256=tznpwkmTb89EtZe86t_nPgACAnwjcrFKg7nPt9qHd2U,13117
|
20
|
+
unisi/utils.py,sha256=Sxu3kpIpddsVLUjz2c0GjxwyehV6qGkX1u8kyueLtLo,4260
|
21
|
+
unisi/web/css/662.64dbc68c.css,sha256=ckeNz4l2QkIp60LdV_-cEXf9orp0ZVklEbrQfjkAG5M,2691
|
21
22
|
unisi/web/css/app.31d6cfe0.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
23
|
unisi/web/css/vendor.9ed7638d.css,sha256=p_6HvcTaHu2zmOmfGxEGiGu5TIFZ75_XKHJZWA0eGCE,220597
|
23
24
|
unisi/web/favicon.ico,sha256=2ZcJaY_4le4w5NSBzWjaj3yk1faLAX0XqioI-Tjscbs,64483
|
@@ -33,10 +34,10 @@ unisi/web/icons/favicon-128x128.png,sha256=zmGg0n6RZ5OM4gg-E5HeHuUUtA2KD1w2AqegT
|
|
33
34
|
unisi/web/icons/favicon-16x16.png,sha256=3ynBFHJjwaUFKcZVC2rBs27b82r64dmcvfFzEo52-sU,859
|
34
35
|
unisi/web/icons/favicon-32x32.png,sha256=lhGXZOqIhjcKDymmbKyo4mrVmKY055LMD5GO9eW2Qjk,2039
|
35
36
|
unisi/web/icons/favicon-96x96.png,sha256=0PbP5YF01VHbwwP8z7z8jjltQ0q343C1wpjxWjj47rY,9643
|
36
|
-
unisi/web/index.html,sha256=
|
37
|
+
unisi/web/index.html,sha256=ZD1kM0f05QWnccWMNKQZxb1cL8yv2zwHPFBN48qvZGc,905
|
37
38
|
unisi/web/js/193.283445be.js,sha256=FID-PRjvjbe_OHxm7L2NC92Cj_5V7AtDQ2WvKxLZ0lw,763
|
38
|
-
unisi/web/js/353.ddd028b2.js,sha256=DQGZ3nBM5feVYkLf3293CmnNfIcKs8WKq8MySyO9HQA,56593
|
39
39
|
unisi/web/js/430.591e9a73.js,sha256=7S1CJTwGdE2EKXzeFRcaYuTrn0QteoVI03Hykz8qh3s,6560
|
40
|
-
unisi/web/js/
|
40
|
+
unisi/web/js/662.5957b792.js,sha256=9zsZsZXeiTYgvB6RbF7guuqOXcb5DAQp31Djl52Y-ow,56727
|
41
|
+
unisi/web/js/app.636fcf8d.js,sha256=THmpgdBjzB_6O3LqK0biyFfeqKg3UNwP32R7Tu7oifE,5923
|
41
42
|
unisi/web/js/vendor.d6797c01.js,sha256=2aKM3Lfxc0pHSirrcUReL1LcvDYWnfeBj2c67XsSELk,1279477
|
42
|
-
unisi-0.1.
|
43
|
+
unisi-0.1.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|