From a3a5b921cabc2a96f0ace89484767ca74bba73b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=BE=99?= Date: Wed, 21 Aug 2024 17:03:16 +0800 Subject: [PATCH] =?UTF-8?q?web=E5=AE=8C=E6=95=B4=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/FristProject.iml | 2 +- .idea/deployment.xml | 9 +- .idea/misc.xml | 2 +- config.yaml | 9 +- core/CapManager.py | 121 + core/ChannelManager.py | 122 +- core/DBManager.py | 101 +- core/ModelManager.py | 243 +- core/Upload_file.py | 122 +- model/ModelManager.py | 204 -- model/plugins/AQM_Model.py | 9 - model/plugins/ModelBase.py | 59 +- model/plugins/RYRQ/RYRQ_Model.py | 8 +- model/plugins/RYRQ_ACL/RYRQ_Model_ACL.py | 32 +- model/plugins/yolov5-1.py | 155 - model/weights/yolov5-1/yoloV5.py | 64 - myutils/IPManager.py | 300 ++ run.py | 13 +- uploads/8.zip | Bin 1595452 -> 0 bytes web/API/channel.py | 213 +- web/API/model.py | 198 +- web/API/system.py | 22 +- web/API/user.py | 41 +- web/API/viedo.py | 115 +- .../static/resources/chrome/allow-access.png | Bin 10061 -> 0 bytes .../chrome/axure-chrome-extension.crx | Bin 31290 -> 0 bytes .../static/resources/chrome/axure_logo.png | Bin 3500 -> 0 bytes web/main/static/resources/chrome/chrome.html | 187 -- web/main/static/resources/chrome/details.png | Bin 21867 -> 0 bytes .../static/resources/chrome/extensions.png | Bin 38642 -> 0 bytes web/main/static/resources/chrome/firefox.html | 130 - .../static/resources/chrome/preview-rp.png | Bin 21439 -> 0 bytes web/main/static/resources/chrome/safari.html | 155 - .../resources/chrome/safari_advanced.png | Bin 84670 -> 0 bytes .../resources/chrome/safari_restrictions.png | Bin 152746 -> 0 bytes web/main/static/resources/chrome/splitter.gif | Bin 1260 -> 0 bytes web/main/static/resources/chrome/splitter.png | Bin 251 -> 0 bytes .../resources/scripts/aiortc-client-new.js | 49 +- .../static/resources/scripts/axure/action.js | 2115 ------------- .../resources/scripts/axure/adaptive.js | 771 ----- .../resources/scripts/axure/annotation.js | 178 -- .../static/resources/scripts/axure/axQuery.js | 407 --- .../resources/scripts/axure/axQuery.std.js | 1864 ------------ .../static/resources/scripts/axure/doc.js | 900 ------ .../static/resources/scripts/axure/drag.js | 278 -- .../static/resources/scripts/axure/events.js | 1996 ------------- .../static/resources/scripts/axure/expr.js | 579 ---- .../static/resources/scripts/axure/flyout.js | 286 -- .../resources/scripts/axure/geometry.js | 294 -- .../static/resources/scripts/axure/globals.js | 7 - web/main/static/resources/scripts/axure/ie.js | 344 --- .../resources/scripts/axure/init.temp.js | 326 -- .../static/resources/scripts/axure/ios.js | 91 - .../scripts/axure/jquery.nicescroll.min.js | 1 - .../static/resources/scripts/axure/legacy.js | 166 -- .../static/resources/scripts/axure/math.js | 554 ---- .../static/resources/scripts/axure/model.js | 53 - .../static/resources/scripts/axure/move.js | 467 --- .../resources/scripts/axure/recording.js | 94 - .../resources/scripts/axure/repeater.js | 2413 --------------- .../static/resources/scripts/axure/sto.js | 241 -- .../static/resources/scripts/axure/style.js | 1389 --------- .../static/resources/scripts/axure/tree.js | 189 -- .../resources/scripts/axure/utils.temp.js | 99 - .../resources/scripts/axure/variables.js | 136 - .../static/resources/scripts/axure/viewer.js | 268 -- .../resources/scripts/axure/visibility.js | 1315 -------- web/main/static/resources/scripts/base.js | 48 +- .../resources/scripts/channel_manager.js | 375 ++- .../static/resources/scripts/model_manager.js | 303 ++ .../resources/scripts/player/axplayer.js | 2631 ----------------- .../static/resources/scripts/player/init.js | 18 - .../resources/scripts/player/splitter.js | 219 -- .../resources/scripts/system_manager.js | 440 +++ .../static/resources/scripts/user_manager.js | 48 + web/main/templates/base.html | 32 + web/main/templates/channel_manager.html | 36 +- web/main/templates/header.html | 10 +- web/main/templates/model_manager.html | 145 + web/main/templates/schedule.html | 156 - web/main/templates/system_manager.html | 286 ++ web/main/templates/user_manager.html | 48 + web/main/templates/实时预览.html | 367 --- web/main/templates/通道管理.html | 1412 --------- zfbox.db | Bin 53248 -> 73728 bytes 85 files changed, 2849 insertions(+), 24231 deletions(-) create mode 100644 core/CapManager.py delete mode 100644 model/ModelManager.py delete mode 100644 model/plugins/AQM_Model.py delete mode 100644 model/plugins/yolov5-1.py delete mode 100644 model/weights/yolov5-1/yoloV5.py create mode 100644 myutils/IPManager.py delete mode 100644 uploads/8.zip delete mode 100644 web/main/static/resources/chrome/allow-access.png delete mode 100644 web/main/static/resources/chrome/axure-chrome-extension.crx delete mode 100644 web/main/static/resources/chrome/axure_logo.png delete mode 100644 web/main/static/resources/chrome/chrome.html delete mode 100644 web/main/static/resources/chrome/details.png delete mode 100644 web/main/static/resources/chrome/extensions.png delete mode 100644 web/main/static/resources/chrome/firefox.html delete mode 100644 web/main/static/resources/chrome/preview-rp.png delete mode 100644 web/main/static/resources/chrome/safari.html delete mode 100644 web/main/static/resources/chrome/safari_advanced.png delete mode 100644 web/main/static/resources/chrome/safari_restrictions.png delete mode 100644 web/main/static/resources/chrome/splitter.gif delete mode 100644 web/main/static/resources/chrome/splitter.png delete mode 100644 web/main/static/resources/scripts/axure/action.js delete mode 100644 web/main/static/resources/scripts/axure/adaptive.js delete mode 100644 web/main/static/resources/scripts/axure/annotation.js delete mode 100644 web/main/static/resources/scripts/axure/axQuery.js delete mode 100644 web/main/static/resources/scripts/axure/axQuery.std.js delete mode 100644 web/main/static/resources/scripts/axure/doc.js delete mode 100644 web/main/static/resources/scripts/axure/drag.js delete mode 100644 web/main/static/resources/scripts/axure/events.js delete mode 100644 web/main/static/resources/scripts/axure/expr.js delete mode 100644 web/main/static/resources/scripts/axure/flyout.js delete mode 100644 web/main/static/resources/scripts/axure/geometry.js delete mode 100644 web/main/static/resources/scripts/axure/globals.js delete mode 100644 web/main/static/resources/scripts/axure/ie.js delete mode 100644 web/main/static/resources/scripts/axure/init.temp.js delete mode 100644 web/main/static/resources/scripts/axure/ios.js delete mode 100644 web/main/static/resources/scripts/axure/jquery.nicescroll.min.js delete mode 100644 web/main/static/resources/scripts/axure/legacy.js delete mode 100644 web/main/static/resources/scripts/axure/math.js delete mode 100644 web/main/static/resources/scripts/axure/model.js delete mode 100644 web/main/static/resources/scripts/axure/move.js delete mode 100644 web/main/static/resources/scripts/axure/recording.js delete mode 100644 web/main/static/resources/scripts/axure/repeater.js delete mode 100644 web/main/static/resources/scripts/axure/sto.js delete mode 100644 web/main/static/resources/scripts/axure/style.js delete mode 100644 web/main/static/resources/scripts/axure/tree.js delete mode 100644 web/main/static/resources/scripts/axure/utils.temp.js delete mode 100644 web/main/static/resources/scripts/axure/variables.js delete mode 100644 web/main/static/resources/scripts/axure/viewer.js delete mode 100644 web/main/static/resources/scripts/axure/visibility.js create mode 100644 web/main/static/resources/scripts/model_manager.js delete mode 100644 web/main/static/resources/scripts/player/axplayer.js delete mode 100644 web/main/static/resources/scripts/player/init.js delete mode 100644 web/main/static/resources/scripts/player/splitter.js create mode 100644 web/main/static/resources/scripts/system_manager.js create mode 100644 web/main/static/resources/scripts/user_manager.js create mode 100644 web/main/templates/model_manager.html delete mode 100644 web/main/templates/schedule.html create mode 100644 web/main/templates/system_manager.html create mode 100644 web/main/templates/user_manager.html delete mode 100644 web/main/templates/实时预览.html delete mode 100644 web/main/templates/通道管理.html diff --git a/.idea/FristProject.iml b/.idea/FristProject.iml index a35650a..835a31e 100644 --- a/.idea/FristProject.iml +++ b/.idea/FristProject.iml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/deployment.xml b/.idea/deployment.xml index a770801..e886ec8 100644 --- a/.idea/deployment.xml +++ b/.idea/deployment.xml @@ -1,7 +1,14 @@ - + + + + + + + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 7269ac0..3c03da2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,7 +3,7 @@ - + diff --git a/config.yaml b/config.yaml index 959b2ce..a62e697 100644 --- a/config.yaml +++ b/config.yaml @@ -23,15 +23,16 @@ pw: zfkj_123!@# MAX_CONTENT_LENGTH : 100 # 100MB UPLOAD_FOLDER : uploads ALLOWED_EXTENSIONS : {'zip'} +Model_Plugins: model/plugins #RTSP RTSP_Check_Time : 600 #10分钟 -- 2024-7-8 取消使用 #max_channel_num -max_channel_num : 4 #最大视频通道数量 +max_channel_num : 8 #最大视频通道数量 #model -model_platform : cpu #acl gpu cpu +model_platform : acl #acl gpu cpu device_id : 0 #单设备配置 weight_path: /model/weights yolov5_path: D:/Project/FristProject/model/base_model/yolov5 #使用绝对路径,不同的部署环境需要修改! @@ -43,3 +44,7 @@ verify_rate : 8 #验证帧率--- 也就是视频输出的帧率 warn_video_path: /mnt/zfbox/model/warn/ warn_interval: 120 #报警间隔--单位秒 video_error_count: 3 #单位秒 ---根据验证帧率,判断3秒内都是空帧的话,视频源链接有问题。 + +#system --- 指定网卡 +wired_interface : eth0 +wireless_interface : WLAN diff --git a/core/CapManager.py b/core/CapManager.py new file mode 100644 index 0000000..37168e6 --- /dev/null +++ b/core/CapManager.py @@ -0,0 +1,121 @@ +import math +import queue +import cv2 +import threading +import time +from myutils.ConfigManager import myCongif +import subprocess as sp + +class VideoCaptureWithFPS: + '''视频捕获的封装类,是一个通道一个''' + def __init__(self, source): + self.source = source + self.width = None + self.height = None + # GStreamer --- 内存占用太高,且工作环境的部署也不简单 + # self.pipeline = ( + # "rtspsrc location=rtsp://192.168.3.102/live1 protocols=udp latency=100 ! " + # "rtph264depay !" + # " h264parse !" + # " avdec_h264 !" + # " videoconvert !" + # " appsink" + # ) + #self.cap = cv2.VideoCapture(self.pipeline, cv2.CAP_GSTREAMER) + + #FFmpeg --更加定制化的使用--但要明确宽高。。。 + # self.ffmpeg_cmd = [ + # 'ffmpeg', + # '-rtsp_transport', 'udp', + # '-i', 'rtsp://192.168.3.102/live1', + # '-f', 'image2pipe', + # '-pix_fmt', 'bgr24', + # '-vcodec', 'rawvideo', '-' + # ] + # self.pipe = sp.Popen(self.ffmpeg_cmd, stdout=sp.PIPE, bufsize=10 ** 8) + + # opencv -- 后端默认使用的就是FFmpeg -- 不支持UDP + self.cap = cv2.VideoCapture(self.source) + if self.cap.isOpened(): #若没有打开成功,在读取画面的时候,已有判断和处理 -- 这里也要检查下内存的释放情况 + self.width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + self.height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + print(self.width,self.height) + #self.fps = fps # 线程保持最大帧率的刷新画面---过高的帧率会影响CPU性能,但过地的帧率会造成帧积压 + self.fps = math.ceil(self.cap.get(cv2.CAP_PROP_FPS)/float(myCongif.get_data("verify_rate")))-1 #向上取整。 + #print(self.fps) + self.running = True + self.frame_queue = queue.Queue(maxsize=1) + #self.frame = None + #self.read_lock = threading.Lock() + self.thread = threading.Thread(target=self.update) + self.thread.start() + + def update(self): + icount = 0 + while self.running: + ret, frame = self.cap.read() + if not ret: + icount += 1 + if icount > 5: #重连 + self.cap.release() + self.cap = cv2.VideoCapture(self.source) + #self.cap = cv2.VideoCapture(self.pipeline, cv2.CAP_GSTREAMER) + if self.cap.isOpened(): + self.width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + self.height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + print(self.width,self.height) + # self.fps = fps # 线程保持最大帧率的刷新画面---过高的帧率会影响CPU性能,但过地的帧率会造成帧积压 + self.fps = math.ceil( + self.cap.get(cv2.CAP_PROP_FPS) / float(myCongif.get_data("verify_rate"))) -1 # 向上取整。 + icount = 0 + else: + #self.frame = None + sleep_time = myCongif.get_data("cap_sleep_time") + print(f"{self.source}视频流,将于{sleep_time}秒后重连!") + time.sleep(sleep_time) + continue + #resized_frame = cv2.resize(frame, (int(self.width / 2), int(self.height / 2))) + # with self.read_lock: + # self.frame = frame + if self.frame_queue.full(): + try: + #print("采集线程丢帧") + self.frame_queue.get(timeout=0.01) #这里不get的好处是,模型线程不会有None + except queue.Empty: #为空不处理 + pass + self.frame_queue.put(frame) + + # 跳过指定数量的帧以避免积压 + for _ in range(self.fps): + self.cap.grab() + # time.sleep(self.fps) #按照视频源的帧率进行休眠 + #print("Frame updated at:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) + + def read(self): + ''' + 直接读视频原画面 + :param type: 0-大多数情况读取,1-绘制区域时读取一帧,但当前帧不丢,还是回队列 + :return: + ''' + # with self.read_lock: + # frame = self.frame.copy() if self.frame is not None else None + # if frame is not None: + # return True, frame + # else: + # return False, None + + if not self.frame_queue.empty(): + try: + frame = self.frame_queue.get(timeout=0.05) + except queue.Empty: + #print("cap-frame None") + return False, None + else: + #print("cap-frame None") + return False, None + return True, frame + + def release(self): + self.running = False + self.thread.join() + self.cap.release() \ No newline at end of file diff --git a/core/ChannelManager.py b/core/ChannelManager.py index e39710b..06a57e8 100644 --- a/core/ChannelManager.py +++ b/core/ChannelManager.py @@ -4,19 +4,25 @@ import numpy as np import time import copy import queue +import cv2 +import asyncio class ChannelData: def __init__(self, str_url, int_type, bool_run, deque_length,icount_max): - self.cap = None + self.cap = None #该通道视频采集对象 + self.work_th = None #该通道工作线程句柄 + self.b_model = False #是否有运行模型线程 + self.bool_run = bool_run # 线程运行标识 + self.str_url = str_url #视频源地址 self.int_type = int_type #视频源类型,0-usb,1-rtsp,2-hksdk - self.bool_run = bool_run #线程运行标识 - self.deque_frame = deque(maxlen=deque_length) + self.icount_max = icount_max # 帧序列号上限 + self.lock = threading.RLock() # 用于保证线程安全 + + self.deque_frame = deque(maxlen=deque_length) #视频缓冲区用于保存录像 self.last_frame = None # 保存图片数据 self.frame_queue = queue.Queue(maxsize=1) self.counter = 0 #帧序列号--保存报警录像使用 - self.icount_max = icount_max #帧序列号上限 - self.lock = threading.RLock() # 用于保证线程安全 #添加一帧图片 def add_deque(self, value): @@ -28,26 +34,53 @@ class ChannelData: #获取最后一帧图片 def get_last_frame(self): - with self.lock: - frame = self.last_frame - return frame - # if not self.frame_queue.empty(): - # return self.frame_queue.get() - # else: - # return None - + if self.b_model: + # with self.lock: + # frame = self.last_frame + # return frame + + #if not self.frame_queue.empty(): + try: + frame = self.frame_queue.get(timeout=0.3) #web传输没有做帧率控制了,可以超时时间长一点 + except queue.Empty: + print("channel--frame None") + return None + # else: + # return None + return frame + else: #如果没有运行,直接从cap获取画面 + if self.cap: + ret, frame = self.cap.read() # 除了第一帧,其它应该都是有画面的 + if not ret: + print("channel--frame None") + return None + ret, frame_bgr_webp = cv2.imencode('.jpg', frame) + if not ret: + buffer_bgr_webp = None + else: + buffer_bgr_webp = frame_bgr_webp.tobytes() + return buffer_bgr_webp + return None def update_last_frame(self,buffer): if buffer: - with self.lock: - self.last_frame = None - self.last_frame = buffer - # if not self.frame_queue.full(): - # self.frame_queue.put(buffer) - # else: - # self.frame_queue.get() # 丢弃最旧的帧 - # self.frame_queue.put(buffer) - + # with self.lock: + # self.last_frame = None + # self.last_frame = buffer + + # if self.frame_queue.full(): + # try: + # print("channel--丢帧") + # self.frame_queue.get(timeout=0.01) + # except queue.Empty: #为空不处理 + # pass + # self.frame_queue.put(buffer) + + try: + self.frame_queue.put(buffer,timeout=0.05) + except queue.Full: + #print("channel--未插入") + pass #帧序列号自增 一个线程中处理,不用加锁 def increment_counter(self): @@ -58,13 +91,22 @@ class ChannelData: def get_counter(self): return self.counter - #清空数据,主要是删除deque 和 last_frame + #清空数据,停止工作线程(若有 ,并删除deque 和 last_frame) def clear(self): + start_time = time.time() with self.lock: - self.bool_run = False - time.sleep(1) #休眠一秒,等待通道对应的子线程,停止工作。 - self.deque_frame.clear() - self.last_frame = None + if self.b_model: #b_model为true,说明开启了工作线程 + self.bool_run = False + self.work_th.join() #等待通道对应的子线程,停止工作。 + #time.sleep(1) + self.deque_frame.clear() + self.last_frame = None #二选一 + self.frame_queue = queue.Queue(maxsize=1) #二选一 + self.counter = 0 + + end_time = time.time() + execution_time = end_time - start_time + print(f"停止一个通道线程,花费了: {execution_time} seconds") def stop_run(self): self.bool_run = False @@ -73,11 +115,11 @@ class ChannelData: class ChannelManager: def __init__(self): self.channels = {} - self.lock = threading.RLock() # 用于保证字典操作的线程安全 + self.cm_lock = threading.RLock() # 用于保证字典操作的线程安全 #增加节点 def add_channel(self, channel_id, str_url, int_type, bool_run, deque_length=10,icount_max=100000): - with self.lock: + with self.cm_lock: if channel_id in self.channels: #若已经有数据,先删除后再增加 self.channels[channel_id].clear() # 手动清理资源 del self.channels[channel_id] @@ -86,29 +128,33 @@ class ChannelManager: return ch_data #删除节点 - def delete_channel(self, channel_id): - with self.lock: + def delete_channel(self, channel_id): #需要验证资源的释放清空 + with self.cm_lock: if channel_id in self.channels: self.channels[channel_id].clear() # 手动清理资源 + self.channels[channel_id].cap.release() del self.channels[channel_id] #获取节点 def get_channel(self, channel_id): - with self.lock: + with self.cm_lock: return self.channels.get(channel_id) #停止工作线程---要把视频采集线程停止掉 def stop_channel(self,channel_id): - with self.lock: + with self.cm_lock: if channel_id == 0: - for clannel_id,clannel_data in self.channels.items(): - clannel_data.cap.running = False - clannel_data.clear() #clear 里面已经停止了通道的工作线程 - del self.channels + # for clannel_id,clannel_data in self.channels.items(): + # clannel_data.clear() + for clannel_data in self.channels: + clannel_data.clear() #停止工作线程,并清空业务数据 + clannel_data.cap.release() #停止视频采集线程,并是否采集资源 + + self.channels.clear() #清空整个字典 else: if channel_id in self.channels: - self.channels[channel_id].cap.running = False self.channels[channel_id].clear() # 手动清理资源 + self.channels[channel_id].cap.release() del self.channels[channel_id] if __name__ == "__main__": diff --git a/core/DBManager.py b/core/DBManager.py index 0418c4c..eaf2f86 100644 --- a/core/DBManager.py +++ b/core/DBManager.py @@ -108,31 +108,31 @@ class DBManager(): ''' #根据通道ID或者模型ID删除通道和模型间的关联数据 1-通道ID,2-模型ID ,注意会有删除没有数据的情况 :param ID: - :param itype: - :return: + :param itype:1-通道ID,2-模型ID + :return: 删除数据库记录没做特别的判断 ''' #channel2model + col_name = "" if itype ==1: - strsql = f"select ID from channel2model where channel_id={ID};" - datas = self.do_select(strsql) - - strsql = f"delete from channel2model where channel_id={ID};" - ret = self.do_sql(strsql) + col_name = "channel_id" elif itype ==2: - strsql = f"select ID from channel2model where model_id={ID};" - datas = self.do_select(strsql) - - strsql = f"delete from channel2model where model_id={ID};" - ret = self.do_sql(strsql) + col_name = "model_id" else: - return False - #schedule - for data in datas: + return False + + strsql = f"select ID from channel2model where {col_name}={ID};" + data = self.do_select(strsql,1) + if data: c2m_id = data[0] + strsql = f"delete from channel2model where {col_name}={ID};" + ret = self.do_sql(strsql) + # schedule --- 调整后一个通道就一个mode strsql = f"delete from schedule where channel2model_id={c2m_id};" ret = self.do_sql(strsql) + return True + #删除通道,需要关联删除布防时间,通道和算法的关联表 def delchannel(self,ID): ret = self.delC2M(ID,1) @@ -148,51 +148,32 @@ class DBManager(): #修改视频通道和算法间的关联关系 #channel_id 通道ID #modell_list 最新配置的模型id list - def updateC2M(self,channel_id,model_list): - strsql = f"select model_id from channel2model where channel_id={channel_id};" - datas = set(self.do_select(strsql)) - data_new = set(model_list) - #计算要新增和修改的 - need_add = data_new - datas - need_del = datas-data_new - #新增 - for one in need_add: - strsql = f"insert into channel2model (channel_id,model_id) values ({channel_id},{one});" - if self.do_sql(strsql) == False: - return False - #初始化布防时间 -- 全1 - strsql = f"select ID from channel2model where channel_id={channel_id} and model_id={one};" - data = mDBM.do_select(strsql,1) - schedule_data_str = ("{'6': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " - "'0': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " - "'1': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " - "'2': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " - "'3': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]," - "'4': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]," - "'5': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}") - schedule_data = json.loads(schedule_data_str.replace("'", '"')) - for day, hours in schedule_data.items(): - for hour, status in enumerate(hours): - strsql = ( - f"insert into schedule (channel2model_id,day,hour,status) values ({ID},'{day}',{hour},{status})" - f" on conflict(channel2model_id,day,hour) do update set status=excluded.status;") - ret = mDBM.do_sql(strsql) - if not ret: - return ret - - #差删除 - for one in need_del: - strsql = f"select ID from channel2model where channel_id={channel_id} and model_id={one};" - c2m_id = mDBM.do_select(strsql,1)[0] - #删除布防计划数据 - strsql = f"delete from schedule where channel2model_id={c2m_id};" - if self.do_sql(strsql) == False: - return False - #删除关联记录 - strsql = f"delete from channel2model where ID = {c2m_id};" - if self.do_sql(strsql) == False: - return False - return True + def updateC2M(self,channel_id,model_id,check_area,polygon_str,conf_thres,iou_thres): + c2m_id = 0 + strsql = f"select ID from channel2model where channel_id={channel_id};" + data = self.do_select(strsql,1) + if data: #修改数据 + strsql = (f"update channel2model set model_id = {model_id},check_area={check_area}," + f"polygon='{polygon_str}',conf_thres={conf_thres},iou_thres={iou_thres} " + f"where channel_id={channel_id};") + else: #插入数据 + strsql = (f"insert into channel2model (channel_id,model_id,check_area,polygon,conf_thres,iou_thres) " + f"values ({channel_id},{model_id},{check_area},'{polygon_str}',{conf_thres},{iou_thres});") + ret = self.do_sql(strsql) + if not ret: + return c2m_id + else: + if data: + return data[0] + else: + strsql = f"select ID from channel2model where channel_id={channel_id};" + data = self.do_select(strsql,1) + if data: + return data[0] + else: + print("正常不会没有值!!") + return 0 + #检查设备ID是否在数据库? def checkDevID(self,cID): diff --git a/core/ModelManager.py b/core/ModelManager.py index fc814c1..3399e74 100644 --- a/core/ModelManager.py +++ b/core/ModelManager.py @@ -1,16 +1,11 @@ # 导入代码依赖 import time -import av import os import cv2 -import numpy as np import threading import importlib.util import datetime -import math -import copy -import queue -from collections import deque + from core.DBManager import mDBM,DBManager from myutils.MyLogger_logger import LogHandler from myutils.ConfigManager import myCongif @@ -18,95 +13,7 @@ from model.plugins.ModelBase import ModelBase from core.ChannelManager import ChannelManager from core.ACLModelManager import ACLModeManger from core.WarnManager import WarnManager,WarnData - -from PIL import Image - - -class VideoCaptureWithFPS: - '''视频捕获的封装类,是一个通道一个''' - def __init__(self, source): - self.source = source - self.width = None - self.height = None - # GStreamer - #rtsp_stream = f"rtspsrc location={self.source} ! decodebin ! videoconvert ! appsink" - pipeline = ( - f"rtspsrc location={self.source} latency=0 ! " - "rtph264depay ! " - "h264parse ! " - "avdec_h264 ! " # 使用 avdec_h264 代替其他解码器 - "videoscale ! " - "video/x-raw,width=640,height=480,framerate=10/1 ! " # 降低分辨率和帧率 - "videoconvert ! " - "appsink" - ) - self.cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER) - # opencv - # self.cap = cv2.VideoCapture(self.source) - if self.cap.isOpened(): #若没有打开成功,在读取画面的时候,已有判断和处理 -- 这里也要检查下内存的释放情况 - self.width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - self.height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - print(self.width,self.height) - #self.fps = fps # 线程保持最大帧率的刷新画面---过高的帧率会影响CPU性能,但过地的帧率会造成帧积压 - self.fps = math.ceil(self.cap.get(cv2.CAP_PROP_FPS)/float(myCongif.get_data("verify_rate"))) #向上取整。 - #print(self.fps) - self.running = True - #self.frame_queue = queue.Queue(maxsize=1) - self.frame = None - self.read_lock = threading.Lock() - self.thread = threading.Thread(target=self.update) - self.thread.start() - - def update(self): - icount = 0 - while self.running: - ret, frame = self.cap.read() - if not ret: - icount += 1 - if icount > 5: #重连 - self.cap.release() - self.cap = cv2.VideoCapture(self.source) - if self.cap.isOpened(): - self.width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - self.height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - print(self.width,self.height) - # self.fps = fps # 线程保持最大帧率的刷新画面---过高的帧率会影响CPU性能,但过地的帧率会造成帧积压 - self.fps = math.ceil( - self.cap.get(cv2.CAP_PROP_FPS) / float(myCongif.get_data("verify_rate"))) # 向上取整。 - icount = 0 - else: - sleep_time = myCongif.get_data("cap_sleep_time") - print(f"{self.source}视频流,将于{sleep_time}秒后重连!") - time.sleep(sleep_time) - continue - #resized_frame = cv2.resize(frame, (int(self.width / 2), int(self.height / 2))) - with self.read_lock: - self.frame = frame - # if not self.frame_queue.full(): - # self.frame_queue.put(resized_frame) - - # 跳过指定数量的帧以避免积压 - for _ in range(self.fps): - self.cap.grab() - # time.sleep(self.fps) #按照视频源的帧率进行休眠 - #print("Frame updated at:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) - - def read(self): - with self.read_lock: - frame = self.frame.copy() if self.frame is not None else None - if frame is not None: - return True, frame - else: - return False, None - # if not self.frame_queue.empty(): - # return True, self.frame_queue.get() - # else: - # return False, None - - def release(self): - self.running = False - self.thread.join() - self.cap.release() +from core.CapManager import VideoCaptureWithFPS class ModelManager: def __init__(self): @@ -147,12 +54,13 @@ class ModelManager: raise Exception("视频参数错误!") return cap - def _import_model(self,model_name,model_path,threshold): + def _import_model(self,model_name,model_path,threshold,iou_thres): ''' 根据路径,动态导入模块 :param model_name: 模块名称 :param model_path: 模块路径 :param threshold: 置信阈值 + :param iou_thres: iou阈值 :return: ''' if os.path.exists(model_path): @@ -162,28 +70,24 @@ class ModelManager: return None module = importlib.util.module_from_spec(module_spec) module_spec.loader.exec_module(module) - md = getattr(module, "Model")(model_path,threshold) #实例化类 + md = getattr(module, "Model")(model_path,threshold,iou_thres) #实例化类 if not isinstance(md, ModelBase): self.logger.error("{} not zf_model".format(md)) return None - if md.init_ok == False: - self.logger.error("离线模型加载初始化失败!") - return None - else: self.logger.error("{}文件不存在".format(model_path)) return None self.logger.debug(f"{model_path} 加载成功!!!!") return md - def getschedule(self,c2m_id,myDBM): + def getschedule(self,c2m_id): ''' 根据c2mID 查询该算法的布防时间 :param c2m_id: :return: 以day为行,hour作为列的,布防标识值二维list ''' strsql = f"select day,hour,status from schedule where channel2model_id ={c2m_id} order by hour asc,day asc;" - datas = myDBM.do_select(strsql) + datas = mDBM.do_select(strsql) onelist = [] twolist = [] threelist = [] @@ -231,8 +135,7 @@ class ModelManager: weekday = now.weekday() # 获取星期几,星期一是0,星期天是6 hour = now.hour result.pop(0) # 保障结果数组定长 --先把最早的结果推出数组 - detections = None - bwarn = False + warntext = "" if model and schedule[weekday][hour] == 1: #不在计划则不进行验证,直接返回图片 # 调用模型,进行检测,model是动态加载的,具体的判断标准由模型内执行 ---- ********* @@ -265,41 +168,29 @@ class ModelManager: buffer_bgr_webp = frame_bgr_webp.tobytes() return buffer_bgr_webp,img,warntext - def dowork_thread(self,channel_id): + def dowork_thread(self,channel_id,model_data,schedule,m,verify_rate,warn_interval): '''一个通道一个线程,关联的模型在一个线程检测,局部变量都是一个通道独有''' channel_data = self.verify_list.get_channel(channel_id) #是对ChannelData 对象的引用 context = None # 线程ACL初始化 if self.model_platform == "acl": # ACL线程中初始化内容 context = ACLModeManger.th_inti_acl(self.device_id) - #查询关联的模型 --- 在循环运行前把基础数据都准备好 - myDBM = DBManager() - myDBM.connect() - strsql = (f"select t1.model_id,t1.check_area,t1.polygon ,t2.duration_time,t2.proportion,t2.model_path,t1.ID," - f"t2.model_name,t1.conf_threshold " - f"from channel2model t1 left join model t2 on t1.model_id = t2.ID where t1.channel_id ={channel_id};") - #print(strsql) - model = myDBM.do_select(strsql,1) #2024-7-12调整规则,一个通道只关联一个模型,表结构暂时不动 - if len(model) ==0: - print(f"{channel_id}视频通道没有关联模型,结束线程!") - return - - #基于基类实例化模块类 - m = self._import_model("",model[5],model[8]) #动态加载模型处理文件py - schedule = self.getschedule(model[6], myDBM) - result = [0 for _ in range(model[3] * myCongif.get_data("verify_rate"))] # 初始化时间*验证帧率数量的结果list + #初始化模型资源 + ret = m.init_acl_resource() + if not ret: + print("初始化模型资源出错,退出线程!") + return + channel_data.b_model = True + result = [0 for _ in range(model_data[3] * verify_rate)] # 初始化时间*验证帧率数量的结果list + proportion = model_data[4] # 判断是否报警的占比 #model[6] -- c2m_id --布防计划 0-周一,6-周日 warn_last_time = time.time() - proportion = model[4] #判断是否报警的占比 warn_save_count = 0 #保存录像的最新帧初始化为0 #开始拉取画面循环检测 cap = channel_data.cap last_frame_time = time.time() #初始化个读帧时间 - #可以释放数据库资源 - del myDBM - warn_interval = myCongif.get_data("warn_interval") while channel_data.bool_run: #基于tag 作为运行标识。 线程里只是读,住线程更新,最多晚一轮,应该不用线程锁。需验证 # 帧率控制帧率 current_time = time.time() @@ -312,7 +203,7 @@ class ModelManager: if not ret: continue #没读到画面继续 #执行图片推理 - buffer_bgr_webp,img_bgr_ndarray,warn_text = self.verify(frame,m,model,channel_id,schedule,result) + buffer_bgr_webp,img_bgr_ndarray,warn_text = self.verify(frame,m,model_data,channel_id,schedule,result) #分析图片放入内存中 channel_data.add_deque(img_bgr_ndarray) # 缓冲区大小由maxlen控制 超上限后,删除最前的数据 #channel_data.increment_counter() #帧序列加一 @@ -333,7 +224,7 @@ class ModelManager: warn_last_time = current_time # 处理报警 warn_data = WarnData() - warn_data.model_name = model[7] + warn_data.model_name = model_data[7] warn_data.warn_text = warn_text warn_data.img_buffer = channel_data.copy_deque() # 深度复制缓冲区 warn_data.width = cap.width @@ -353,14 +244,23 @@ class ModelManager: # cv2.imshow(str(channel_id), img) # if cv2.waitKey(1) & 0xFF == ord('q'): # break + #结束线程 - cap.release() #视频采集线程结束 - if context:#ACL线程中反初始化内容 -- 若线程异常退出,这些资源就不能正常释放了 - #先释放每个模型资源 - del model - #再释放context - ACLModeManger.th_del_acl(context) + print("开始结束工作线程") + channel_data.b_model = False + if self.model_platform == "acl": # ACL线程中初始化内容 + try: + m.release() #释放模型资源资源 + #释放context + if context: # ACL线程中反初始化内容 -- 若线程异常退出,这些资源就不能正常释放了 + # 再释放context + ACLModeManger.th_del_acl(context) + except Exception as e: + print(e) + #删除模型对象 + del m #cv2.destroyAllWindows() + print("线程结束!!!!") def send_warn(self): '''发送报警信息''' @@ -379,60 +279,79 @@ class ModelManager: strsql = "select id,ulr,type from channel where is_work = 1;" #执行所有通道 else: strsql = f"select id,ulr,type from channel where is_work = 1 and id = {channel_id};" #单通道启动检测线程 + datas = mDBM.do_select(strsql) for data in datas: - # channel_id, str_url, int_type, bool_run, deque_length - c_data = self.verify_list.add_channel(data[0],data[1],data[2],True, + channel_id = data[0] + #1.创建channel对象 channel_id, str_url, int_type, bool_run, deque_length + c_data = self.verify_list.add_channel(channel_id,data[1],data[2],True, myCongif.get_data("buffer_len"),myCongif.get_data("RESET_INTERVAL")) - # 启动该通道的视频捕获线程 --把视频捕获线程,放主线程创建 + #2.启动该通道的视频捕获线程 --把视频捕获线程,放主线程创建 c_data.cap = self._open_view(c_data.str_url, c_data.int_type) # 创建子线程读画面-把cap给模型就行-- - th_chn = threading.Thread(target=self.dowork_thread, args=(data[0],)) #一个视频通道一个线程,线程句柄暂时部保留 - th_chn.start() + #3.启动工作线程 ************************** + self.start_work_th(channel_id,c_data) + + # 启动告警线程 if self.warnM is None: self.warnM = WarnManager() self.warnM.start_warnmanager_th() - def stop_work(self,channel_id=0): - '''停止工作线程,0-停止所有,非0停止对应通道ID的线程''' - self.verify_list.stop_channel(channel_id) + def stop_work(self,channel_id=0): #要对应start_work 1.停止工作线程,2.停止cap线程。3.删除c_data + '''停止工作线程(包括采集线程,并删除通道数据对象),0-停止所有,非0停止对应通道ID的线程''' + try: + self.verify_list.stop_channel(channel_id) + except Exception as e: + print(e) + if channel_id == 0: #停止告警线程 self.warnM.brun = False + + def start_work_th(self,channel_id,c_data): + verify_rate = myCongif.get_data("verify_rate") + warn_interval = myCongif.get_data("warn_interval") + + strsql = ( + f"select t1.model_id,t1.check_area,t1.polygon ,t2.duration_time,t2.proportion,t2.model_path,t1.ID," + f"t2.model_name,t1.conf_thres,t1.iou_thres " + f"from channel2model t1 left join model t2 on t1.model_id = t2.ID where t1.channel_id ={channel_id};") + model_data = mDBM.do_select(strsql, 1) # 2024-7-12调整规则,一个通道只关联一个模型,表结构暂时不动 + if model_data and model_data[0]: # 如果该通道关联了模型 + # 基于基类实例化模块类 + m = self._import_model("", model_data[5], model_data[8], model_data[9]) # 动态加载模型处理文件py + if m: + schedule = self.getschedule(model_data[6]) # 获取布防计划 + # 数据准备OK-开始工作线程 + c_data.bool_run = True + c_data.work_th = threading.Thread(target=self.dowork_thread, + args=(channel_id, model_data, schedule, m, verify_rate, + warn_interval)) # 一个视频通道一个线程 + c_data.work_th.start() + + def restartC2M(self,channel_id): ''' 修改通道管理的算法模型后需要对该通道算法执行部分重新加载执行 :param channel_id: :return: ''' - pass + channel_data = self.verify_list.get_channel(channel_id) + #停止该通道的工作线程 --dowork_thread -- 并清空channel_data中的业务数据 + channel_data.clear() + + #重启该通道的工作线程 + self.start_work_th(channel_id,channel_data) + #print(f"Current working directory (ModelManager.py): {os.getcwd()}") mMM = ModelManager() def test1(): - - print(cv2.getBuildInformation()) - source = 'rtsp://192.168.3.44/live1' - gstreamer_pipeline = ( - f"rtspsrc location={source} protocols=udp latency=0 ! " - "rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! appsink" - ) - cap = cv2.VideoCapture(gstreamer_pipeline, cv2.CAP_GSTREAMER) - if not cap.isOpened(): - print("Error: Unable to open the video source.") - return - else: - print("Successfully opened the video source.") - ret, frame = cap.read() - if ret: - cv2.imshow('Frame', frame) - cv2.waitKey(0) - cap.release() - cv2.destroyAllWindows() + pass if __name__ == "__main__": diff --git a/core/Upload_file.py b/core/Upload_file.py index e7593af..fec9919 100644 --- a/core/Upload_file.py +++ b/core/Upload_file.py @@ -1,15 +1,129 @@ -from quart import Blueprint, render_template, request, redirect, url_for, flash, current_app import os import subprocess -from werkzeug.utils import secure_filename +import platform +import zipfile +import importlib.util +import shutil from myutils.ConfigManager import myCongif +from model.plugins.ModelBase import ModelBase def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in myCongif.get_data('ALLOWED_EXTENSIONS') #对上传的系统升级包进行检查 type:1--系统升级包,2--算法升级包 -def check_file(filepath,type): - pass +def check_file(filepath,filename_pre,type): #默认路径一般都是uploads/文件名 + ''' + 检查上传文件的合法性,若符合要求则移动到正式路径下面 + :param filepath: .zip文件路径 + :param filename_pre: 去除掉.zip的纯文件名 + :param type: 1--系统升级包, 2--算法升级包 + :return: model_version model_name model_path(相对路径) + ''' + model_name = None + model_version = None + model_path = None + system = platform.system() + + #path = filepath.rsplit('.', 1)[0] #去掉后缀 + path = myCongif.get_data("UPLOAD_FOLDER") # uploads + zip_path = filepath.rsplit('.', 1)[0] # uploads/filenamedir + filepath_py = zip_path + '/' + filename_pre + '.py' #这里就需要约束py文件名,就是zip压缩包的文件名 + + buzip = False + #解压缩 + if system == "Windows": + try: + with zipfile.ZipFile(filepath, 'r') as zip_ref: + zip_ref.extractall(path) + buzip = True + except zipfile.BadZipfile: + print("文件格式错误,解压失败") + except Exception as e: + print(f"解压失败: {e}") + elif system == "Linux": + try: + subprocess.run(['unzip', '-o', filepath, '-d', path], check=True) + buzip = True + except subprocess.CalledProcessError as e: + print(f"解压失败: {e.stderr}") + except Exception as e: + print(f"解压失败: {e}") + else: + raise NotImplementedError(f"Unsupported operating system: {system}") + #加载模型文件,获取模型名称和版本号 + if buzip: + if type == 2: #模型升级包 + print(filepath_py) + model = import_model("",filepath_py,0) + if model: + #把解压文件移动至正式路径 + tag_path = myCongif.get_data("Model_Plugins") #model/plugins + ret = move_dir(zip_path,tag_path,filename_pre) + if ret: + model_name = model.name #算法名 + model_version = model.version #算法版本 + model_path = tag_path+'/'+ filename_pre +'/'+filename_pre +'.py' #py文件的路径,是相对路径 + del model + elif type == 1: #系统升级包 + pass + else: + pass #错误值 + return model_version,model_name,model_path + +def move_dir(source_path,tag_path,filename_pre,type=1): + ''' + 移动文件夹 + :param source_path: 源文件夹 ***/***/filedir + :param tag_path: 目标路径 ***/***/ 不需要带filedir + :param filename_pre: 不带后缀的文件名 + :param type: 0-不覆盖移动,目标路径存在filedir的话返回, 1-覆盖移动,删除后再移动 + :return: False True + ''' + bsuccess = False + #若根目录不在,则创建 + if not os.path.exists(tag_path): #model/plugins + os.makedirs(tag_path) + #判断移动后目录是否存在 + newpath = tag_path + '/' + filename_pre + if os.path.exists(newpath): + if type == 1: + shutil.rmtree(newpath) + else: + return bsuccess #这个返回失败 + + # 移动文件夹 + try: + shutil.move(source_path, tag_path) + print(f"成功将文件夹移动到 {tag_path}") + bsuccess = True + except Exception as e: + print(f"移动文件夹失败: {e}") + return bsuccess + +def import_model(model_name,model_path,threshold): + ''' + 根据路径,动态导入模块 + :param model_name: 模块名称 + :param model_path: 模块路径 + :param threshold: 置信阈值 + :return: + ''' + if os.path.exists(model_path): + module_spec = importlib.util.spec_from_file_location(model_name, model_path) + if module_spec is None: + print(f"{model_path} 加载错误") + return None + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + md = getattr(module, "Model")(model_path,threshold) #实例化类 + if not isinstance(md, ModelBase): + print("{} not zf_model".format(md)) + return None + else: + print("{}文件不存在".format(model_path)) + return None + print(f"{model_path} 加载成功!!!!") + return md def update_system(filepath): #系统升级 pass diff --git a/model/ModelManager.py b/model/ModelManager.py deleted file mode 100644 index 06b2535..0000000 --- a/model/ModelManager.py +++ /dev/null @@ -1,204 +0,0 @@ -import torch -import cv2 -import numpy as np -import torch -import os -import importlib -from model.plugins.ModelBase import ModelBase -from loguru import logger - -''' -class ModelManager_tmp(): - def __init__(self): - print("ModelInit") - - def __del__(self): - print("ModelManager DEL") - - def __preprocess_image(self,image, cfg, bgr2rgb=True): - """图片预处理""" - img, scale_ratio, pad_size = letterbox(image, new_shape=cfg['input_shape']) - if bgr2rgb: - img = img[:, :, ::-1] - img = img.transpose(2, 0, 1) # HWC2CHW - img = np.ascontiguousarray(img, dtype=np.float32) - return img, scale_ratio, pad_size - - def __draw_bbox(self,bbox, img0, color, wt, names): - """在图片上画预测框""" - det_result_str = '' - for idx, class_id in enumerate(bbox[:, 5]): - if float(bbox[idx][4] < float(0.05)): - continue - img0 = cv2.rectangle(img0, (int(bbox[idx][0]), int(bbox[idx][1])), (int(bbox[idx][2]), int(bbox[idx][3])), - color, wt) - img0 = cv2.putText(img0, str(idx) + ' ' + names[int(class_id)], (int(bbox[idx][0]), int(bbox[idx][1] + 16)), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1) - img0 = cv2.putText(img0, '{:.4f}'.format(bbox[idx][4]), (int(bbox[idx][0]), int(bbox[idx][1] + 32)), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1) - det_result_str += '{} {} {} {} {} {}\n'.format( - names[bbox[idx][5]], str(bbox[idx][4]), bbox[idx][0], bbox[idx][1], bbox[idx][2], bbox[idx][3]) - return img0 - - def __get_labels_from_txt(self,path): - """从txt文件获取图片标签""" - labels_dict = dict() - with open(path) as f: - for cat_id, label in enumerate(f.readlines()): - labels_dict[cat_id] = label.strip() - return labels_dict - - def __draw_prediction(self,pred, image, labels): - """在图片上画出预测框并进行可视化展示""" - imgbox = widgets.Image(format='jpg', height=720, width=1280) - img_dw = self.__draw_bbox(pred, image, (0, 255, 0), 2, labels) - imgbox.value = cv2.imencode('.jpg', img_dw)[1].tobytes() - display(imgbox) - - def __infer_image(self,img_path, model, class_names, cfg): - """图片推理""" - # 图片载入 - image = cv2.imread(img_path) - # 数据预处理 - img, scale_ratio, pad_size = self.__preprocess_image(image, cfg) - # 模型推理 - output = model.infer([img])[0] - - output = torch.tensor(output) - # 非极大值抑制后处理 - boxout = nms(output, conf_thres=cfg["conf_thres"], iou_thres=cfg["iou_thres"]) - pred_all = boxout[0].numpy() - # 预测坐标转换 - scale_coords(cfg['input_shape'], pred_all[:, :4], image.shape, ratio_pad=(scale_ratio, pad_size)) - # 图片预测结果可视化 - self.__draw_prediction(pred_all, image, class_names) - - def __infer_frame_with_vis(self,image, model, labels_dict, cfg, bgr2rgb=True): - # 数据预处理 - img, scale_ratio, pad_size = self.__preprocess_image(image, cfg, bgr2rgb) - # 模型推理 - output = model.infer([img])[0] - - output = torch.tensor(output) - # 非极大值抑制后处理 - boxout = nms(output, conf_thres=cfg["conf_thres"], iou_thres=cfg["iou_thres"]) - pred_all = boxout[0].numpy() - # 预测坐标转换 - scale_coords(cfg['input_shape'], pred_all[:, :4], image.shape, ratio_pad=(scale_ratio, pad_size)) - # 图片预测结果可视化 - img_vis = self.__draw_bbox(pred_all, image, (0, 255, 0), 2, labels_dict) - return img_vis - - def __img2bytes(self,image): - """将图片转换为字节码""" - return bytes(cv2.imencode('.jpg', image)[1]) - def __infer_camera(self,model, labels_dict, cfg): - """外设摄像头实时推理""" - - def find_camera_index(): - max_index_to_check = 10 # Maximum index to check for camera - - for index in range(max_index_to_check): - cap = cv2.VideoCapture(index) - if cap.read()[0]: - cap.release() - return index - - # If no camera is found - raise ValueError("No camera found.") - - # 获取摄像头 --这里可以换成RTSP流 - camera_index = find_camera_index() - cap = cv2.VideoCapture(camera_index) - # 初始化可视化对象 - image_widget = widgets.Image(format='jpeg', width=1280, height=720) - display(image_widget) - while True: - # 对摄像头每一帧进行推理和可视化 - _, img_frame = cap.read() - image_pred = self.__infer_frame_with_vis(img_frame, model, labels_dict, cfg) - image_widget.value = self.__img2bytes(image_pred) - - def __infer_video(self,video_path, model, labels_dict, cfg): - """视频推理""" - image_widget = widgets.Image(format='jpeg', width=800, height=600) - display(image_widget) - - # 读入视频 - cap = cv2.VideoCapture(video_path) - while True: - ret, img_frame = cap.read() - if not ret: - break - # 对视频帧进行推理 - image_pred = self.__infer_frame_with_vis(img_frame, model, labels_dict, cfg, bgr2rgb=True) - image_widget.value = self.__img2bytes(image_pred) - - def startWork(self,infer_mode,file_paht = ""): - cfg = { - 'conf_thres': 0.4, # 模型置信度阈值,阈值越低,得到的预测框越多 - 'iou_thres': 0.5, # IOU阈值,高于这个阈值的重叠预测框会被过滤掉 - 'input_shape': [640, 640], # 模型输入尺寸 - } - - model_path = 'yolo.om' - label_path = './coco_names.txt' - # 初始化推理模型 - model = InferSession(0, model_path) - labels_dict = self.__get_labels_from_txt(label_path) - - #执行验证 - if infer_mode == 'image': - img_path = 'world_cup.jpg' - self.__infer_image(img_path, model, labels_dict, cfg) - elif infer_mode == 'camera': - self.__infer_camera(model, labels_dict, cfg) - elif infer_mode == 'video': - video_path = 'racing.mp4' - self.__infer_video(video_path, model, labels_dict, cfg) -''' - -''' -算法实现类,实现算法执行线程,根据配内容,以线程方式执行算法模块 -''' -class ModelManager(): - def __init__(self): - print("ModelManager init") - - def __del__(self): - print("ModelManager del") - - def doWork(self): - pass - -#动态导入文件 -- 方法二 -- 相对推荐使用该方法 但spec感觉没什么用 -def import_source(spec, plgpath): - module = None - if os.path.exists(plgpath): - module_spec = importlib.util.spec_from_file_location(spec, plgpath) - module = importlib.util.module_from_spec(module_spec) - module_spec.loader.exec_module(module) - else: - logger.error("{}文件不存在".format(plgpath)) - return module - -#plgpath 为list [poc][file_name][name] -def run_plugin(plgpath, target,copy_flag=True): - module = import_source("", plgpath) - if module: - classname = "Model" - plg = getattr(module, classname)() - if not isinstance(plg, ModelBase): - raise Exception("{} not rx_Model".format(plg)) - new_plg = plg - result = new_plg.doWork("","","","") # 执行plugin基类的run, 返回结果 - return result - else: - print("模型加载失败") - return None - -def test(): - run_plugin("plugins/RYRQ_Model_ACL.py","") - -if __name__ == "__main__": - test() \ No newline at end of file diff --git a/model/plugins/AQM_Model.py b/model/plugins/AQM_Model.py deleted file mode 100644 index 79fd75b..0000000 --- a/model/plugins/AQM_Model.py +++ /dev/null @@ -1,9 +0,0 @@ -from model.plugins.ModelBase import ModelBase - -class Model(ModelBase): - def __init__(self): - super().__init__() - pass - - def doWork(self,image,mode,class_name,cfg,isdraw_box=False,bgr2rgb=True): - print("AQM_Model") \ No newline at end of file diff --git a/model/plugins/ModelBase.py b/model/plugins/ModelBase.py index e88da01..81ea57d 100644 --- a/model/plugins/ModelBase.py +++ b/model/plugins/ModelBase.py @@ -22,9 +22,19 @@ class ModelBase(ABC): :param threshold: 模型的置信阈值 ''' self.mylogger = LogHandler().get_logger("ModelManager") + self.platform = myCongif.get_data("model_platform") self.name = None #基于name来查询,用户对模型的配置参数,代表着模型名称需要唯一 2024-6-18 -逻辑还需要完善和验证 self.version = None self.model_type = None # 模型类型 1-图像分类,2-目标检测(yolov5),3-分割模型,4-关键点 + self.model_id = None # 模型 id + self.input_dataset = None # 输入数据结构 + self.output_dataset = None # 输出数据结构 + self.model_desc = None # 模型描述信息 + self._input_num = 0 # 输入数据个数 + self._output_num = 0 # 输出数据个数 + self._output_info = [] # 输出信息列表 + self._is_released = True # 资源是否被释放 + self.system = myCongif.get_data("model_platform") #platform.system() #获取系统平台 self.do_map = { # 定义插件的入口函数 -- # POCType.POC: self.do_verify, @@ -32,11 +42,21 @@ class ModelBase(ABC): # POCType.BRUTE: self.do_brute } self.model_path = path # 模型路径 - self.init_ok = False + #self.init_ok = False + #--------------------------- + #加载ACL模型文件---模型加载、模型执行、模型卸载的操作必须在同一个Context下 + # if self.platform == 'acl': + # if self.init_acl_resource(): # 加载离线模型,创建输出缓冲区 + # print("加载模型文件成功!") + # self.init_ok = True + # self._is_released = False # 资源是否被释放 + # else: #其他平台暂时不需要额外初始化内容 + # self.init_ok = True def __del__(self): - print("资源释放") + # 卸载ACL模型文件 + self.release() def draw_polygon(self, img, polygon_points,color=(0, 255, 0)): self.polygon = Polygon(ast.literal_eval(polygon_points)) @@ -59,16 +79,16 @@ class ModelBase(ABC): raise RuntimeError(ret) print('Init TH-Context Successfully') - def _del_acl(self): - device_id = 0 - # 线程释放context - ret = acl.rt.destroy_context(self.context) # 释放 Context - if ret: - raise RuntimeError(ret) - print('Deinit TH-Context Successfully') - print('ACL finalize Successfully') + # def _del_acl(self): + # device_id = 0 + # # 线程释放context + # ret = acl.rt.destroy_context(self.context) # 释放 Context + # if ret: + # raise RuntimeError(ret) + # print('Deinit TH-Context Successfully') + # print('ACL finalize Successfully') - def _init_resource(self): + def init_acl_resource(self): #self._init_acl() #测试使用 ''' 初始化模型、输出相关资源。相关数据类型: aclmdlDesc aclDataBuffer aclmdlDataset''' print("Init model resource") @@ -79,6 +99,8 @@ class ModelBase(ABC): print(f"{self.model_path}---模型加载失败!") return False self.model_desc = acl.mdl.create_desc() # 初始化模型信息对象 + if not self.model_desc: + return False ret = acl.mdl.get_desc(self.model_desc, self.model_id) # 根据模型ID获取该模型的aclmdlDesc类型数据(描述信息) print("[Model] Model init resource stage success") # 创建模型输出 dataset 结构 @@ -86,6 +108,7 @@ class ModelBase(ABC): if ret !=0: print("[Model] create model output dataset fail") return False + self._is_released = False # 资源是否被释放 return True def _gen_output_dataset(self): @@ -120,6 +143,7 @@ class ModelBase(ABC): if ret == FAILED: self._release_dataset(self.input_dataset) # 失败时释放dataset + self.input_dataset = None #print("[Model] create model input dataset success") def _unpack_bytes_array(self, byte_array, shape, datatype): @@ -176,9 +200,10 @@ class ModelBase(ABC): if ret: self.mylogger.error(f"acl.mdl.execute fail!--{ret}") self._release_dataset(self.input_dataset) # 失败时释放dataset --创建输入空间失败时会释放。 + self.input_dataset = None return None out_numpy = self._output_dataset_to_numpy() # 将推理输出的二进制数据流解码为numpy数组, 数组的shape和类型与模型输出规格一致 - self._release_dataset(self.input_dataset) # 释放dataset -- 要不要执行需要验证 + #self._release_dataset(self.input_dataset) # 释放dataset -- 要不要执行需要验证 return out_numpy def release(self): @@ -187,10 +212,12 @@ class ModelBase(ABC): return print("Model start release...") - self._release_dataset(self.input_dataset) # 释放输入数据结构 - self.input_dataset = None # 将输入数据置空 - self._release_dataset(self.output_dataset) # 释放输出数据结构 - self.output_dataset = None # 将输出数据置空 + if self.input_dataset: + self._release_dataset(self.input_dataset) # 释放输入数据结构 + self.input_dataset = None # 将输入数据置空 + if self.output_dataset: + self._release_dataset(self.output_dataset) # 释放输出数据结构 + self.output_dataset = None # 将输出数据置空 if self.model_id: ret = acl.mdl.unload(self.model_id) # 卸载模型 diff --git a/model/plugins/RYRQ/RYRQ_Model.py b/model/plugins/RYRQ/RYRQ_Model.py index edba0a6..5bf09ba 100644 --- a/model/plugins/RYRQ/RYRQ_Model.py +++ b/model/plugins/RYRQ/RYRQ_Model.py @@ -17,10 +17,10 @@ class Model(ModelBase): self.version = "V1.0" self.model_type = 2 - #实例化模型--实例化模型没有对失败的情况进行处理 - self.init_ok = True - self.model = torch.hub.load(yolov5_path, 'custom', path=model_file, source='local') - #if model 失败,inti_ok = Flase + # #实例化模型--实例化模型没有对失败的情况进行处理 + # self.init_ok = True + # self.model = torch.hub.load(yolov5_path, 'custom', path=model_file, source='local') + # #if model 失败,inti_ok = Flase def verify(self,image,data,isdraw=1): diff --git a/model/plugins/RYRQ_ACL/RYRQ_Model_ACL.py b/model/plugins/RYRQ_ACL/RYRQ_Model_ACL.py index 106d193..31f5fce 100644 --- a/model/plugins/RYRQ_ACL/RYRQ_Model_ACL.py +++ b/model/plugins/RYRQ_ACL/RYRQ_Model_ACL.py @@ -1,27 +1,18 @@ import os.path from model.plugins.ModelBase import ModelBase -from myutils.ConfigManager import myCongif from model.base_model.ascnedcl.det_utils import get_labels_from_txt, letterbox, scale_coords, nms, draw_bbox # 模型前后处理相关函数 import cv2 import numpy as np import torch # 深度学习运算框架,此处主要用来处理数据 -from core.ACLModelManager import ACLModeManger class Model(ModelBase): - def __init__(self,path,threshold=0.5): + def __init__(self,path,threshold=0.5,iou_thres=0.5): # 找pt模型路径 -- 一个约束py文件和模型文件的路径关系需要固定, -- 上传模型时,要解压好路径 dirpath, filename = os.path.split(path) self.model_file = os.path.join(dirpath, "yolov5s_bs1.om") # 目前约束模型文件和py文件在同一目录 self.coco_file = os.path.join(dirpath, "coco_names.txt") - super().__init__(self.model_file) #acl环境初始化基类负责类的实例化 - self.model_id = None # 模型 id - self.input_dataset = None # 输入数据结构 - self.output_dataset = None # 输出数据结构 - self.model_desc = None # 模型描述信息 - self._input_num = 0 # 输入数据个数 - self._output_num = 0 # 输出数据个数 - self._output_info = [] # 输出信息列表 - self._is_released = False # 资源是否被释放 + super().__init__(self.model_file) # acl环境初始化基类负责类的实例化 + self.name = "人员入侵-yolov5" self.version = "V1.0" self.model_type = 2 @@ -29,17 +20,7 @@ class Model(ModelBase): self.neth = 640 # 缩放的目标高度, 也即模型的输入高度 self.netw = 640 # 缩放的目标宽度, 也即模型的输入宽度 self.conf_threshold = threshold # 置信度阈值 - - #加载ACL模型文件---模型加载、模型执行、模型卸载的操作必须在同一个Context下 - if self._init_resource(): #加载离线模型,创建输出缓冲区 - print("加载模型文件成功!") - self.init_ok = True - - - def __del__(self): - #卸载ACL模型文件 - if self.init_ok: - self.release() + self.iou_thres = iou_thres # IOU阈值 def verify(self,image,data,isdraw=1): @@ -63,8 +44,9 @@ class Model(ModelBase): if outputs: output = outputs[0] #只放了一张图片 # 后处理 -- boxout 是 tensor-list: [tensor([[],[].[]])] --[x1,y1,x2,y2,置信度,coco_index] - boxout = nms(torch.tensor(output), conf_thres=0.3, - iou_thres=0.5) # 利用非极大值抑制处理模型输出,conf_thres 为置信度阈值,iou_thres 为iou阈值 + # 利用非极大值抑制处理模型输出,conf_thres 为置信度阈值,iou_thres 为iou阈值 + boxout = nms(torch.tensor(output), conf_thres=self.conf_threshold,iou_thres=self.iou_thres) + pred_all = boxout[0].numpy() # 转换为numpy数组 -- [[],[],[]] --[x1,y1,x2,y2,置信度,coco_index] # pred_all[:, :4] 取所有行的前4列,pred_all[:,1]--第一列 scale_coords([640, 640], pred_all[:, :4], image.shape, ratio_pad=(scale_ratio, pad_size)) # 将推理结果缩放到原始图片大小 diff --git a/model/plugins/yolov5-1.py b/model/plugins/yolov5-1.py deleted file mode 100644 index 76a9333..0000000 --- a/model/plugins/yolov5-1.py +++ /dev/null @@ -1,155 +0,0 @@ -# 导入代码依赖 -import cv2 -import numpy as np -from myutils.ConfigManager import myCongif -import os -import torch - -import ipywidgets as widgets -from IPython.display import display -from skvideo.io import vreader, FFmpegWriter -import IPython.display -from ais_bench.infer.interface import InferSession -from det_utils import letterbox, scale_coords, nms - -def preprocess_image(image, cfg, bgr2rgb=True): - """图片预处理""" - img, scale_ratio, pad_size = letterbox(image, new_shape=cfg['input_shape']) - if bgr2rgb: - img = img[:, :, ::-1] - img = img.transpose(2, 0, 1) # HWC2CHW - img = np.ascontiguousarray(img, dtype=np.float32) - return img, scale_ratio, pad_size - -def draw_bbox(bbox, img0, color, wt, names): - """在图片上画预测框""" - det_result_str = '' - for idx, class_id in enumerate(bbox[:, 5]): - if float(bbox[idx][4] < float(0.05)): - continue - img0 = cv2.rectangle(img0, (int(bbox[idx][0]), int(bbox[idx][1])), (int(bbox[idx][2]), int(bbox[idx][3])), - color, wt) - img0 = cv2.putText(img0, str(idx) + ' ' + names[int(class_id)], (int(bbox[idx][0]), int(bbox[idx][1] + 16)), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1) - img0 = cv2.putText(img0, '{:.4f}'.format(bbox[idx][4]), (int(bbox[idx][0]), int(bbox[idx][1] + 32)), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1) - det_result_str += '{} {} {} {} {} {}\n'.format( - names[bbox[idx][5]], str(bbox[idx][4]), bbox[idx][0], bbox[idx][1], bbox[idx][2], bbox[idx][3]) - return img0 - -def get_labels_from_txt(path): - """从txt文件获取图片标签""" - labels_dict = dict() - with open(path) as f: - for cat_id, label in enumerate(f.readlines()): - labels_dict[cat_id] = label.strip() - return labels_dict - -def draw_prediction(pred, image, labels): - """在图片上画出预测框并进行可视化展示""" - imgbox = widgets.Image(format='jpg', height=720, width=1280) - img_dw = draw_bbox(pred, image, (0, 255, 0), 2, labels) - imgbox.value = cv2.imencode('.jpg', img_dw)[1].tobytes() - display(imgbox) - -def infer_image(img_path, model, class_names, cfg): - """图片推理""" - # 图片载入 - image = cv2.imread(img_path) - # 数据预处理 - img, scale_ratio, pad_size = preprocess_image(image, cfg) - # 模型推理 - output = model.infer([img])[0] - - output = torch.tensor(output) - # 非极大值抑制后处理 - boxout = nms(output, conf_thres=cfg["conf_thres"], iou_thres=cfg["iou_thres"]) - pred_all = boxout[0].numpy() - # 预测坐标转换 - scale_coords(cfg['input_shape'], pred_all[:, :4], image.shape, ratio_pad=(scale_ratio, pad_size)) - # 图片预测结果可视化 - draw_prediction(pred_all, image, class_names) - -def infer_frame_with_vis(image, model, labels_dict, cfg, bgr2rgb=True): - # 数据预处理 - img, scale_ratio, pad_size = preprocess_image(image, cfg, bgr2rgb) - # 模型推理 - output = model.infer([img])[0] - - output = torch.tensor(output) - # 非极大值抑制后处理 - boxout = nms(output, conf_thres=cfg["conf_thres"], iou_thres=cfg["iou_thres"]) - pred_all = boxout[0].numpy() - # 预测坐标转换 - scale_coords(cfg['input_shape'], pred_all[:, :4], image.shape, ratio_pad=(scale_ratio, pad_size)) - # 图片预测结果可视化 - img_vis = draw_bbox(pred_all, image, (0, 255, 0), 2, labels_dict) - return img_vis - -def img2bytes(image): - """将图片转换为字节码""" - return bytes(cv2.imencode('.jpg', image)[1]) - -def infer_video(video_path, model, labels_dict, cfg): - """视频推理""" - image_widget = widgets.Image(format='jpeg', width=800, height=600) - display(image_widget) - - # 读入视频 - cap = cv2.VideoCapture(video_path) - while True: - ret, img_frame = cap.read() - if not ret: - break - # 对视频帧进行推理 - image_pred = infer_frame_with_vis(img_frame, model, labels_dict, cfg, bgr2rgb=True) - image_widget.value = img2bytes(image_pred) - -def infer_camera(model, labels_dict, cfg): - """外设摄像头实时推理""" - def find_camera_index(): - max_index_to_check = 10 # Maximum index to check for camera - - for index in range(max_index_to_check): - cap = cv2.VideoCapture(index) - if cap.read()[0]: - cap.release() - return index - - # If no camera is found - raise ValueError("No camera found.") - - # 获取摄像头 - camera_index = find_camera_index() - cap = cv2.VideoCapture(camera_index) - # 初始化可视化对象 - image_widget = widgets.Image(format='jpeg', width=1280, height=720) - display(image_widget) - while True: - # 对摄像头每一帧进行推理和可视化 - _, img_frame = cap.read() - image_pred = infer_frame_with_vis(img_frame, model, labels_dict, cfg) - image_widget.value = img2bytes(image_pred) - -if __name__ == "__main__": - cfg = { - 'conf_thres': 0.4, # 模型置信度阈值,阈值越低,得到的预测框越多 - 'iou_thres': 0.5, # IOU阈值,高于这个阈值的重叠预测框会被过滤掉 - 'input_shape': [640, 640], # 模型输入尺寸 - } - model_path = os.path.join(myCongif.get_data('weight_path'),'/yolov5-1/yolov5s.pt') - label_path = os.path.join(myCongif.get_data('weight_path'),'/yolov5-1/coco_names.txt') - # 初始化推理模型 - model = InferSession(0, model_path) - labels_dict = get_labels_from_txt(label_path) - - infer_mode = 'video' - - if infer_mode == 'image': - img_path = 'world_cup.jpg' - infer_image(img_path, model, labels_dict, cfg) - elif infer_mode == 'camera': - infer_camera(model, labels_dict, cfg) - elif infer_mode == 'video': - video_path = 'racing.mp4' - infer_video(video_path, model, labels_dict, cfg) \ No newline at end of file diff --git a/model/weights/yolov5-1/yoloV5.py b/model/weights/yolov5-1/yoloV5.py deleted file mode 100644 index c85e556..0000000 --- a/model/weights/yolov5-1/yoloV5.py +++ /dev/null @@ -1,64 +0,0 @@ -import torch -import cv2 -import numpy as np -from shapely.geometry import Point, Polygon -import os - -# # 自定义模型文件的路径 -# model_path = 'yolov5s.pt' # 假设模型文件名为 yolov5s.pt 并与执行文件在同一个目录 -# # 本地YOLOv5仓库路径 -# repo_path = '../base_model/yolov5' -# 自定义模型文件的路径 -print(f"Current working directory (yolov5.py): {os.getcwd()}") -model_path = 'D:/Project/FristProject/model/mode_test/yolov5s.pt' # 假设模型文件名为 yolov5s.pt 并与执行文件在同一个目录 -# 本地YOLOv5仓库路径 -repo_path = 'D:/Project/FristProject/model/base_model/yolov5' - -# 加载自定义模型 -model = torch.hub.load(repo_path, 'custom', path=model_path, source='local') - -# 定义监控区域(多边形顶点) -region_points = [(100, 100), (500, 100), (500, 400), (100, 400)] -polygon = Polygon(region_points) - -# 打开摄像头 -cap = cv2.VideoCapture(0) - -def is_point_in_polygon(point, polygon): - return polygon.contains(Point(point)) - -while True: - ret, frame = cap.read() - if not ret: - break - - # 进行推理 - results = model(frame) - detections = results.pandas().xyxy[0] - - # 绘制监控区域 - cv2.polylines(frame, [np.array(region_points, np.int32)], isClosed=True, color=(0, 255, 0), thickness=2) - - for _, row in detections.iterrows(): - if row['name'] == 'person': - # 获取人员检测框的中心点 - x_center = (row['xmin'] + row['xmax']) / 2 - y_center = (row['ymin'] + row['ymax']) / 2 - - if is_point_in_polygon((x_center, y_center), polygon): - # 触发报警 - cv2.putText(frame, 'Alert: Intrusion Detected', (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) - print('Alert: Intrusion Detected') - - # 绘制检测框 - cv2.rectangle(frame, (int(row['xmin']), int(row['ymin'])), (int(row['xmax']), int(row['ymax'])), (255, 0, 0), 2) - cv2.circle(frame, (int(x_center), int(y_center)), 5, (0, 0, 255), -1) - - # 显示结果 - cv2.imshow('Frame', frame) - - if cv2.waitKey(1) & 0xFF == ord('q'): - break - -cap.release() -cv2.destroyAllWindows() diff --git a/myutils/IPManager.py b/myutils/IPManager.py new file mode 100644 index 0000000..d2e9274 --- /dev/null +++ b/myutils/IPManager.py @@ -0,0 +1,300 @@ +import subprocess +import platform +import locale +import re + +''' +针对windows和linux的网络信息获取和设置功能类。 +由于网络接口名字并不一定,又有多网卡等情况,实际应用时需要指定网络接口(固化硬件环境) +''' + +class IPManager: + def __init__(self): + self.os_type = platform.system() + self.encoding = locale.getpreferredencoding() + + def set_ip(self, interface_name, ip_address, subnet_mask, gateway): + if self.os_type == "Windows": + self._set_ip_windows(interface_name, ip_address, subnet_mask, gateway) + elif self.os_type == "Linux": + self._set_ip_linux(interface_name, ip_address, subnet_mask, gateway) + else: + raise NotImplementedError("Unsupported OS") + + def connect_wifi(self, ssid, password): + if self.os_type == "Windows": + self._connect_wifi_windows(ssid, password) + elif self.os_type == "Linux": + self._connect_wifi_linux(ssid, password) + else: + raise NotImplementedError("Unsupported OS") + + def get_wifi_list(self): + wifis = [] + if self.os_type == "Windows": + wifis = self._get_wifi_list_windows() + elif self.os_type == "Linux": + wifis = self._get_wifi_list_linux() + else: + raise NotImplementedError("Unsupported OS") + return wifis + + def get_connected_wifi(self): + ssid = None + if self.os_type == "Windows": + ssid = self._get_connected_wifi_windows() + elif self.os_type == "Linux": + ssid = self._get_connected_wifi_linux() + else: + raise NotImplementedError("Unsupported OS") + return ssid + + def get_network_info(self): + info = None + if self.os_type == "Windows": + info = self._get_network_info_windows() + elif self.os_type == "Linux": + info = self._get_network_info_linux() + else: + raise NotImplementedError("Unsupported OS") + return info + + def _set_ip_windows(self, interface_name, ip_address, subnet_mask, gateway): + command = f'netsh interface ip set address name="{interface_name}" static {ip_address} {subnet_mask} {gateway} 1' + #result = subprocess.run(command, shell=True,capture_output=True, text=True, encoding='utf-8') + # 打印输出结果 + result = self._run_cmd(command) + print(result.stdout) + + # 检查返回码 + if result.returncode == 0: + print("IP address set successfully.") + else: + print("Failed to set IP address. Please check the output for errors.") + + def _set_ip_linux(self, interface_name, ip_address, subnet_mask, gateway): + self._run_cmd(f"sudo ip addr flush dev {interface_name}") + self._run_cmd(f"sudo ip addr add {ip_address}/{subnet_mask} dev {interface_name}") + self._run_cmd(f"sudo ip route add default via {gateway}") + + def _connect_wifi_windows(self, ssid, password): + command = f'netsh wlan connect name="{ssid}"' + self._run_cmd(command) + + def _connect_wifi_linux(self, ssid, password): + command = f"nmcli dev wifi connect '{ssid}' password '{password}'" + self._run_cmd(command) + + def _get_wifi_list_windows(self): + command = "netsh wlan show networks" + result = self._run_cmd(command) + wifi_list = [] + lines = result.stdout.split('\n') + for line in lines: + if "SSID" in line and "BSSID" not in line: + ssid = line.split(":")[1].strip() + wifi_list.append(ssid) + + return wifi_list + + def _get_wifi_list_linux(self): + command = "nmcli dev wifi list" + result = self._run_cmd(command) + + # 解析输出结果 + wifi_list = [] + lines = result.stdout.split('\n') + for line in lines[1:]: # 跳过表头 + if line.strip(): + ssid = line.split()[0] + wifi_list.append(ssid) + + return wifi_list + + def _get_connected_wifi_windows(self): + command = "netsh wlan show interfaces" + result = self._run_cmd(command) + + # 使用正则表达式提取SSID + ssid_match = re.search(r"SSID\s+: (.+)", result.stdout) + + if ssid_match: + ssid = ssid_match.group(1).strip() + return ssid + else: + return None + + def _get_connected_wifi_linux(self): + command = "iwgetid -r" + result = self._run_cmd(command) + + ssid = result.stdout.strip() + if ssid: + return ssid + else: + return None + + def _get_network_info_windows(self): + command = "ipconfig /all" + result = self._run_cmd(command) + + interfaces = {} + current_interface = None + for line in result.stdout.splitlines(): + # 识别接口名称 + interface_match = re.match(r"^\s*([^:\s]+.*):$", line) + if interface_match: + current_interface = interface_match.group(1).strip() + interfaces[current_interface] = {"IP": None, "Subnet": None, "Gateway": None, "DNS": []} + + if current_interface: + # 解析IP地址 + ip_match = re.search(r"^\s*IPv4 地址[^\:]*:\s*(\d+\.\d+\.\d+\.\d+)", line) + if ip_match: + interfaces[current_interface]["IP"] = ip_match.group(1).strip() + + # 解析子网掩码 + subnet_match = re.search(r"^\s*子网掩码[^\:]*:\s*(\d+\.\d+\.\d+\.\d+)", line) + if subnet_match: + interfaces[current_interface]["Subnet"] = subnet_match.group(1).strip() + + # 解析网关 + gateway_match = re.search(r"^\s*默认网关[^\:]*:\s*(\d+\.\d+\.\d+\.\d+)", line) + if gateway_match: + interfaces[current_interface]["Gateway"] = gateway_match.group(1).strip() + + # 解析DNS服务器 + dns_match = re.search(r"^\s*DNS 服务器[^\:]*:\s*(\d+\.\d+\.\d+\.\d+)", line) + if dns_match: + interfaces[current_interface]["DNS"].append(dns_match.group(1).strip()) + else: + # 匹配后续行的DNS服务器 + dns_continued_match = re.search(r"^\s*(\d+\.\d+\.\d+\.\d+)", line) + if dns_continued_match: + interfaces[current_interface]["DNS"].append(dns_continued_match.group(1).strip()) + return interfaces + + def _get_network_info_linux(self): + # 获取IP地址、子网掩码和网关 + ip_info = self._run_cmd("ip addr show").stdout + route_info = self._run_cmd("ip route show").stdout + + # 获取DNS服务器 + dns_info = self._run_cmd("nmcli dev show | grep DNS").stdout + + interfaces = {} + current_interface = None + for line in ip_info.splitlines(): + # 识别接口名称 + interface_match = re.match(r"^\d+: ([^:\s]+):", line) + if interface_match: + current_interface = interface_match.group(1).strip() + interfaces[current_interface] = {"IP": None, "Subnet": None, "Gateway": None, "DNS": []} + + if current_interface: + # 解析IP地址和子网掩码 + ip_match = re.search(r"^\s*inet (\d+\.\d+\.\d+\.\d+)/(\d+)", line) + if ip_match: + interfaces[current_interface]["IP"] = ip_match.group(1).strip() + interfaces[current_interface]["Subnet"] = ip_match.group(2).strip() + + # 解析网关 + for line in route_info.splitlines(): + if "default via" in line: + gateway_match = re.search(r"default via (\d+\.\d+\.\d+\.\d+)", line) + interface_match = re.search(r"dev (\S+)", line) + if gateway_match and interface_match: + interface = interface_match.group(1).strip() + if interface in interfaces: + interfaces[interface]["Gateway"] = gateway_match.group(1).strip() + + # 解析DNS服务器 + for line in dns_info.splitlines(): + dns_match = re.search(r"DNS\[\d+\]:\s*(\d+\.\d+\.\d+\.\d+)", line) + if dns_match: + # 假设第一个接口是主要接口 + primary_interface = list(interfaces.keys())[0] + interfaces[primary_interface]["DNS"].append(dns_match.group(1).strip()) + + return interfaces + + def _get_interface_info_windows(self,interface_name): + command = f'netsh interface ip show config name="{interface_name}"' + result = self._run_cmd(command) + + info = {"IP": None, "Subnet": None, "Gateway": None, "DNS": []} + + # 解析IP地址 + ip_match = re.search(r"IP Address:\s*(\d+\.\d+\.\d+\.\d+)", result.stdout) + if ip_match: + info["IP"] = ip_match.group(1).strip() + + # 解析子网掩码 + subnet_match = re.search(r"Subnet Prefix:\s*(\d+\.\d+\.\d+\.\d+)", result.stdout) + if subnet_match: + info["Subnet"] = subnet_match.group(1).strip() + + # 解析网关 + gateway_match = re.search(r"Default Gateway:\s*(\d+\.\d+\.\d+\.\d+)", result.stdout) + if gateway_match: + info["Gateway"] = gateway_match.group(1).strip() + + # 解析DNS服务器 + dns_matches = re.findall(r"Statically Configured DNS Servers:\s*(\d+\.\d+\.\d+\.\d+)", result.stdout) + for dns in dns_matches: + info["DNS"].append(dns.strip()) + + return info + + def _get_interface_info_linux(self,interface_name): + info = {"IP": None, "Subnet": None, "Gateway": None, "DNS": []} + + # 获取IP地址和子网掩码 + ip_command = f"ip addr show dev {interface_name}" + ip_result = self._run_cmd(ip_command) + + ip_match = re.search(r"inet (\d+\.\d+\.\d+\.\d+)/(\d+)", ip_result.stdout) + if ip_match: + info["IP"] = ip_match.group(1).strip() + info["Subnet"] = ip_match.group(2).strip() + + # 获取网关信息 + gateway_command = f"ip route show dev {interface_name}" + gateway_result = subprocess.run(gateway_command, shell=True, capture_output=True, text=True, encoding='utf-8') + + gateway_match = re.search(r"default via (\d+\.\d+\.\d+\.\d+)", gateway_result.stdout) + if gateway_match: + info["Gateway"] = gateway_match.group(1).strip() + + # 获取DNS服务器信息 + dns_command = f"nmcli dev show {interface_name} | grep DNS" + dns_result = subprocess.run(dns_command, shell=True, capture_output=True, text=True, encoding='utf-8') + + dns_matches = re.findall(r"DNS\[\d+\]:\s*(\d+\.\d+\.\d+\.\d+)", dns_result.stdout) + for dns in dns_matches: + info["DNS"].append(dns.strip()) + + return info + + def _run_cmd(self,command): + ''' + 为了统一命令执行的返回参数格式,统一定义了一个执行函数 + :param command: + :return: + ''' + result = subprocess.run(command, shell=True, capture_output=True, text=True, encoding=self.encoding) + return result + +IPM = IPManager() + +if __name__ == "__main__":#WLAN + # 示例用法 + nm = IPManager() + try: + #nm.set_ip("以太网 2", "192.168.1.100", "255.255.255.0", "192.168.1.1") + #nm.set_ip("WLAN", "192.168.3.100", "255.255.255.0", "192.168.3.1") #zhang wifi + network_info = nm.get_wifi_list() + print(network_info) + except Exception as e: + print(e) + #nm.connect_wifi("YourSSID", "YourPassword") diff --git a/run.py b/run.py index 97c7068..3af7222 100644 --- a/run.py +++ b/run.py @@ -7,6 +7,7 @@ import asyncio from hypercorn.asyncio import serve from hypercorn.config import Config from core.DBManager import mDBM +from core.Upload_file import allowed_file,check_file,updata_model print(f"Current working directory (run.py): {os.getcwd()}") web = create_app() @@ -16,16 +17,12 @@ async def run_quart_app(): await serve(web, config) def test(): - area_id = 1 - c_name = "55" - strsql = f"select ID from channel where area_id={area_id} and channel_name={c_name};" - data = mDBM.do_select(strsql, 1) - if data: - print("有值") - else: - print("无值") + filepath = "uploads/RYRQ_Model_ACL.zip" + check_file(filepath,2) if __name__ == '__main__': + #test() + system = platform.system() if system == "Windows": total, used, free = shutil.disk_usage("/") diff --git a/uploads/8.zip b/uploads/8.zip deleted file mode 100644 index 288d8eaa0279a8793cbd9f4aa6d5e9416e143a51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1595452 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μ}N{8S?YDwWJ)NfnPs;xd~3LtyWkaC=%XH+>SGP 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

    4xVx9} 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%0A)Z~VD_`}3+ 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

    3(eS7-3JB%b77$xFJcV5f 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

    =7=KR;7`qb zlRWAzar|~Ql9SM0$KZ(Mqt{+V)Tz*EDd?F*_I6yRxOW+dT)f=`uq!2J==6&d0~sUlocT z8q(VTgY}GFBjFCp$;o-QL@IUjqNo`0%HCSt$#-sU4#>bz(tp~|S$?9!c1YJl2r+@@ z6t=W59B&S5BY|O0jg+dw)_|Gu!{|+x#%^u}Fxfj%sid&!py1%Mg!sege?q>t9^N)J z=b!Xlt464vMU;b1RqB?gAH$)}xoTzO@-3WmLdQ7fdyk&<8&bN)+O4an{23##!Vq8; zhz-YrKN}E-m+QxAi0FAK&?hri_`H?XUpP5gT!EuH-LZIMTIg58)wiQ3zZ#|7UWpXU zp%Q}lqOgPhz4D=dTlmhConS|=0-5yKH588C<$-z)NBOYUvLFR#1CYLkk-e@8;;v%B zn}oesa;UUQE6xm>k{63dA;Qw`RZUgJf|RV~RlDu`l;)G<^05r$CjXSp0jBZl1PhB1 zxN%I{x^&{}d*S&<-OV!d)%9})9aQ_AVqvxHS`2po>&+zxmW&M++7*js+4fBncqLD} zGmIAFLkq?-uO3%$O-R{INhh1P6&my?=n|)9@1)y>QK=NH*RPE`>K(<2$hw5J6g+yD z5iSkGdR`nHNq3FrhZ5=r0otF166!?HbXG~!;8b2ybL?b&iLw{2aHcvd|Ib=LGSh0y zdh@E0h3`FXT!0okKNkJp`nS535l=!A2S@1(qs~)<4k1!oV@YBqiKQVn1pQ-App;iyRk#n1SWDx zzf8u)Q(kTn3|wH79W%~ww0J$p@!f}h?GMIRTCXox`s{hlG+S3W)5^I!c?qegA0k&| zsF?X|L7yBha5y*Grp*4!2(T)r%*Jm8`p)2+1QdSp2qo4H{oT0~N@y6IP#6V}Y@m?7 z_I6?wqu5If8aq^taQ=mB&Oxlr0aA2K@x8zAu}qZX6fwpVm8y<250>mH)iYmDQiM>~ z?v43U4S1Y?%3R7i=<|7&mtW$EnkKs5smYn0Z@kBu3HI!_q<`nh61{7}bD(YK&QMaT z)V5NigTO-pOj}s>h`Mohwby`)=tJQ?8a;~1AHwjQH8gX%JoqJ6$%wz=ZC|#Ri2c?h z)!cOBpP@N2{Dm?Zl`?n>pXlcRw4w9nukDk)#e^Gwi`B4ex~6M;aHyg**#F2miA$&~ zzGZ)!n2+Zn1CigCIbKo``EL4X);~$+t8h-Y+RkPCws866loSWkw?t5VxH(y&LRi{# zgl?5;1yjIS?5%#lZ$|>+hW`YU!{**h8US&M%AT=2f&-Zf+-{G^pM8$-R-&R=O zOTh`gW=UJpbf)pydQP9EyRXIE2|MDRm=HC7Sk`>3hw=R#mw|dPFTlso$e}IyGGn9W z-l)RJGcY^Ph&9lvNM)>-**AeQR>C}IN^_oh-9F(Hygu<=9pY!%aBnvu%1X)unEw1c zw|Fh<_lu?>yx(J&uODyP3J;sfSuEr2+sxeG@e6M{{4QbQNo3@6l#bR=J7sY_U8Mds>SHf8)TIM#JtM&JSPEm?p`omY zBqL+Jm?)ahW&9H(y#Gz-aKbd#;n7fMx=1qte8_|c1=;38w9fE1;EpV3G@rZ{asU8r zB$mxlGR|u}Mbtf~R=I}sH8PnR$kG1m?|>i_@Cia2!6VwQ60V#q$=aZ!8KCqs)rxB_ zY+YUvQwK!LDSfC*Gp)5G zIqIcD&J!z@73L3fZt|bvEYl>OG-l+kT{+2T`UvDm*!N_xPp`(#KNj|IF3_H#L*K%%;(*Evh?+?p&g$|Lo#RgqYnl17Prfsn zvKCNs+73frbB9);uiY8K;UWI$yk?<#6Lh_zmn%c0AUXJiJ=w_(!C#qF*$oGzngLP? zviCVq)BUhQoV`hnjUwSR;uBa&eS*n`oqXC$I@+O5lo{=u41iK>ToGF}-@y2*_p*Ai zceWRFMFC#(%*QmqLfT}Bz+1VM_T&ke1`Hn((m?~W5@iSa^uqzx=Z+KBwZnb_pNBfu zE2E6(wm-RDwj7q-*T1gysZ-}UndL%ma|$5Z->4(iZ2F$SOD>(MU?2V(1Q(-KP}!+d zJG&#)wDvx0-p1zYZ5##)Ppn~VlU~AP8%u?N?9L3*Y%XgaHI{>BK6)!okO%aj)&C!T zlEc&)$w4AMg=ewJ}r{aGLLV_ zvUz-c@j>TY*p#Ys8kHKf(K(OA8E!QGG1P+<(;6p1%XG-P&d+0Z%83VdHOk1>>v={7 zJH5G@kA3+xXQy5(>~1hfb}JVeid9s>KxHJ2SdpGy!^l=!!QA?jfBMK&+FXRI<*%#t z^+3*mn<;(C+t6WaVC0xATAJ>v{_?Yf2dHUj_jvN?-o-?z9Ai7w{G4~(;o5TCEJ&r( zM?!1M=48sdbturRVhk5iZ|_h753E6@{AIRXs(3;oQ1E`Tf1QJI={-~?#1s8WBk~5=;8!<+i$AE8)bIr$t0m!f_i z1aXX?x8M69x<)>RS=3`oNN;W>lkbn?ck@YDw}nA0Y%? z%ii`ql%}a$WHD~P#I1-C8lhS;Tw=#2A{n0B>=yp6D_sPM_^X_iJSm^X^7@2biYU5+ zx<4PE*8i=}ykSt4IHVVxc*T)ZSd>G@r_T5JG%=ZPzW3?jA?WiKuV2@KNQRKZgGlhZ zvMDG{XEGJv*NHz`fmE+-n_YX~XavE(Kw#!v$q(t0%`?kp0CBu&&BZi74dy?ZD6?C? zayGyTHDKAYXd84RqP=5}17f{!6 zK(Z79sC{BS#ZN)y;y$n#49&R9)TF#2S&$)@k$fsm$UfPQ(?2P-qdM6*&~2XihuC#_ z{0~WrmJbf}y|T@edNOuzPcy-PLV(CHP`}4~4gX8RGIe7ui+`xfLvCp?+bKBoK9y9V znB)gb4>AAB{fmU)3F>)&BUSZb>xGyDm0nW*49)3WX~3ujgPA|wVW4^2=x12;X6`Or zIOkDPr(X;yS?4r_`vW;7hDUm(GEu@D$c?0tVza6iBPn(ICH?b{8`Z8Z-&@^B-A@gJ z2SSMf^8)zzQzCyxWVIP)O*Ng6Sjm0tCspMBw~$twrVz`k@d~?|1I&DjvA_yHSZ4jHEr|VnUCpP{6rrizlD#Z)kRsTf<6=m%Gb|nTju@T}kEsd#;f{Q>W7yJ>Rn8 zQ}Xpb7=k=2DNquX!#OyHt)V{e1a| zxrjLdT8OwJ{6&A333&j8FU1qZ_n{r{V1L_b^qA>k`$v4$rsk>*C!ZwFMPk`;QGwsL zT9&3q0>f_)c^@D9NJRk0tSQWwTL7j#lv~Q}gX=AGca~4D1qZCx7!9zOkC18(6}-or zi^i%PpPzCE^~YGQzWWsCOfN^qc7>Hh08nfzd`(HKl_yx{cWM37`uQMjMZ3h*Do}j* z{<_}o2-ojqu))H%T30Ob0<{H_FCGgSQd`K|tJuwvR|l<3vlO_*Y3kC<7q->NqokmA z^4M4k2u-hCcOzL!7;{eRF2x*A0vpzc40iSEoPZ3mAx_B$J=d^9WVKVZJQ7NFi&XCt zEg- z{b?dh#K%t8E_7U*o6-dqj4he=A#_}XCX(NO)_lO4HHmK=&B{p8*SD0_d%fVzs4vHd zC0`rkPazzB3+GS|SnaWqNA`$XYr8?-^5!Zzh8bs`e`#MgXjSHi>uTELZmay((8O!v zB>PgO^Bb0CYthb+h|d45p-aYNBrmAO%BK2S8jNiesRlN6{`6)!x{x+ z>*U*im6;r}&*bUcE96}XGv5q?xEiBj=a)LJnWu8PE4ENOUq-OeGCXqr^nJ&j_|5~0 zC*h0u5aT+7-)0P+ak%X?Pp=J?G(gcP*hJbkI^_<&)6M|HtIN-J*2w9kr*!_k`Plo`nCkI+=vT9CwcLrlm-1@ten&<@b ztxd%cBM1!?)^biu*c>JFX_3N6V}%pX_%EwF_+Lz!n&n3>*XGc_W6cp9qL!nU@PAsp z-(|lUHnZwUn4^79hVVVe7V-c$sqEq?#yqej&Ay)Csj=XJZv}1EHqoIp3m&UA z+)BWk#gRH8Ve;`pDT7}wlfdCbP09d6R?p~WQn^aaF<}L!IR2#1QL$z+CHlRonHi+IfA4*n$y0to~|2JQ0Dozi$)EEW^;iFNX1q0AnL%Zxt@)VfKM zPg-^PQnQE2YdjUJ4MGHacVapC6O&&5lifH@xeSTvs65t#Y3(QicE)LzsXeM6!`G;~ z4U4TERL(WJdLk`$Q`n9L3IFsCBL!^kxykMkjSO?cx^ zoT}4yOYOYXvEnHObmVZAuV!5zMSdLEw7ENYc%zQy3dUDsGBSal_Su`XIOUV)0=$qN z=M+rtzBRtYr&*cg&YO}Av(_lejm@g|SM^N>H+I2oLusT^&T9sB>aO4Lq`4*3U4^ox zUBf!@&wslQOBADtdX_F%neGcs4@O$)R@Y1EIy6lmGf(_`~4Wm;H$hrEWC2A=X&W=yPsvZcQzC z4cW*q$n#FY)!rEGB+&t0X66Ud($b-kkvOZkPD&W&jm)oKi^@)qkKbB6Q;>P| zTu4aEe}Av0SuF0g>(gFKCpR}ua}WVrl0T9(Gh+CSa=NJIqD(yEn~P;^1ll{7m+!;^)NXe%lS{AzJG0rA9lyCKmluXQYmyW_T-s^~(wJ6t#9of+_v{kn17 z?GS>>;V}<5yb7;2CxJf-LCV@BLIN5j)l)z*={w0L>yK1RbouEcTDbq#DR+7gqwbnMKDleZJisHPA z&iZphkcYr4s)hIprzO+)_s59~D)^zEz`JKn8D<+F(&v>W4S(uRqC5uCdjq^)m3Nss zSeB$6kobv|%RB@UZ>ofPg0G5B+R1gpbn4M^W41}YDyep_^jjk)=>-b z=zgJe5vTZfRPvQum$x?l#g)!_+g$^+DU~%0%U^b6o-wh>m&U1_$RXlS*u900CY4qA z^yq6o(VW{;O!r~HZ^>R_8A(8bk%~qP8^V&ikGTgZ%Ci}6elq|wnFAvk^a4g$lw#>> zX}9?Ffq&{L_#QPyM&va&7`g!4ym$iYy*mAJ>2HJ@IAB)ORn{}jAE_WDT(31o6yZ;G z0QcPgt%Nu$aZ=Ng#uw57HjL9ZYYldJV>lge*FB766Luig>Ar-~sl~pu)j7la zRCW!xYv!)H#qknSmKl+BXP7_m_xbig{`qIp9jdknJ5E-U`ySo6c5)c$1#`c{L$bhR zmY1f)IggVd99Fa%X0O0PuG~2?Q!HRp{9m_15LQS0Au6bRf#i=F=gyEkFmlUJ!zajr zEa^T9`vwfD(SZL=V>M`4)|Z@iq}66gyDR9pX%qQZW`N`#fzX=rmEr1z;N66mw@^uM<4!WE4ga!v)# zo{6pbN^}9w?RsAlOh6QaWvkiDzfz3#3QFfGfSdB(9wI~MFv!@-4vWA&VFH#jzuTcn z$QM24+F}>~Pt~%1-6xy_ZIkxju+}-h)C40H;*1Jcn>C!mC){M0C*r{ZDfq`tE9nV| zg$?RB=YzjJzOTA9l^1)>?-w7G&OM>_wHyAqx}7S8pGNa>EbUrUiraX=V#@BvE9?

    s5b8@4-;J~@L@5bgdmixeugv-I9;a|VZAtcwsWhW~%8VN0%lNB+F zDf>!iP*nCSpTk3T>uvJKHN7pdpew@SSuI4#BQ_DM0p$!u(zHQe*FD&sv86aMUWhFkAjHJvzFF%-z#=tWyn4cKpPW@!7Ab~{}A5MBz&A*3wM8a~W zKX-Y(d7W^L1NTySSJncInxbPJjI46XFf!yzoOBt#s`n)lbSv)kM|;x zNgC!xr@D}mE$qX$f0cth`nW?gIj6mdV3A5vjd!Bv=+nz3nLL9)kVq+S4)-)m&!)cc zt~1jkD#@UuiDy_2LRoFM@8}cqN3`QOX$|$-VYVw5&&=4?$)w$#kshF^)xag~2+KH? zD1T?WVzm1kyjr!XdEajeVA!S%_7D?kH2+{!-?QJN)q(DLEiO+srjNVV6^7Cj67hbi zre%X&ZYj&%6>Q>Ed9bc)CAuFolOA8$x2n#dcS@1-sXd@Y&GMbOJ$!Q($gWhB7x8!~ zh#)%Wr6pzD^c|yrQZvY+k@iQ~YODn<(tG+29e>sr^Z~E3z3IQb+6qio^&r?AHz8P| z(NY0=e_IqaPW)O^Ky4g4&+&zaaQInHn2%Yvz}WZwIIl>=cS6HfVz~c8dk6mm#L(jj zE$KOn3>yQMVe= zUm9a_z-A(9Ad(47rFID(&)~?}mzP%Tl3%{$w|Dwtrhyxhpq~OEpXbRZlr?@N8kh8g$0yP4J7g{2$3<#35w6XY*Q}`jJ*aT9 z!7>h`25nwu=D(oo`n(V^q3IXr%NVwQWUzI8!~jLYrC#U*oa}QppgBslTA}vL$4{!g zcT1=|^qw84oDGgRhh6JAOf;=h?sZJ{v_DCqKAt$w9mpLj%eF9auy_&J8@bt9wQx4Q z<>N9(MH}%opCnXkTZPqG{-Buj^}1x!LJ_G8=kJuPoiF-^j1nKLu~&8XrI;U>((K+x zE>Eqno1<=4!Htn;nM47Q*r(k)8(XSy;((?5KZvDDK7l+o`IS&nEgU|J66F0k z>+Ds(PdeZ9uUH0~2|d-e1h+jHZ%N8(@Z_XN0~^d#CAkY z=&3xReoVs`i%{_@z(cXt3WxM~hk>{&Y7~_J?e2C*DVe` zm2aLrI8J6EbM=C(?7Vt#qF0z7=FgxYTU?_n>fkBUmst1+5KxVh?v=j$F8gsS*kdh-kS!q@%Q^G*%qNjL{O(kg)gNTFLING=h$7g) zU=5}oW5Y`Oz9#2z8M#D}v((|TVdFX99*i03cXZgidoJDX9`IOv6?Zhs!1G;fI18NG z8TyYMQOpqCF0+L=aZ%$G{{X{4Jin{z?*1`(6bY0Ln)!hwL$fE@y;Rd;%xx$P#vNX3 z>(NsBm38E#R{vSJc0Su--hlysrW#lb>%nXBG+I7PYt%_Tpx#JgkR0d3H$a z<86KNXAK0zNz9R&w(rBECf2 z><~*>OX6>f*bbMkV<$5Ldtaug6ijdagUN~WSIN4|a?47_y_>ZmZJC#sgKqD6?%VPH z0ULfL%H z-^B@gwlV%$?`q4*b&?|VD3jMsi_J|NdT`vpwsSM5`#Qfh0|!+T;kl&>70o9$B>oQx zV{a;1kUabkcuVy;6h}PTXcjkdAk|JBxTV(f>NU3#U7j}&!iLcj3J{HLyV^s{H zWa|(xW<bg>5o{q(Fkz48G#FbgcG3-=sXvUE)qgAMqQF|r>k0YxXP2V z%|Jt;K?q$DLx`3~CPFB4?m%SB9w^8AAlmUdImfsbH^{wjN657Ch@E{C;uqhDlqEMH zWAS)oEf|HIIYW@+EzjjO7#Z?>v5tcf<2C`o*1NIS92d*t?G#1=@+7;W1=tJ67%Ox4>RDfn%TcJ$p zZJhnzLkP)lk(ZtPdbm->rbem9<_I(&Ux|$Ee@3vwHxch}o5+=kNcX%E*>ff!d!Fpi zo`|&BHzP&lOOhaA&P0WH?+NmLZa|C|alOc&(TMXIiTK&0dXO+@G?L|b%A7GsojV3; zbH^fc&RAs48K;mroBM)!HzVHXHUzrffg`T>A!Nxjs7qY|oC_D-A{!UWi_j(g3{^#F zD>{UrC4ayH=erT&J^_I<2Z<~mr3fLqwIk>v&Tt9RUbTyi09jFK=5<(=1Ql%|tu{}#$Pji-Y&Ld?En1C3^ zTM+5;O(gjK4mfWjgz81NkhV)%$+#5!(!06B02dcEA*5vzK{BXK#x=9t;a2OW)JqAo z?yTOwv~Ba3^Qe3g8ezrMHD>+SV-a~XPMv<*5Brqj=1E7&Oy);G82u}PPOFpm%1*U-p=fD zzYl%R{9D(bstW<-ux@xe*I+x9X*V%fBkEU4C>dfpR%ZV z9985tRhq@u+V-L}!< z=U2b_m9p9)F~u|l38MJ;ctzCE#T(OwgoG%IC;sL&@4WMlB7bOQ#In;Gh{yTNB%Ypp z@<~NzvFx<^AxL(;_uhNTeIE1XmSh*}h;HlXI*#Rj^Nlz0oqO-ckG}t7?Ay5?ySMGe z@1A}R@4fRLf&z}=`my8j$d7)Ekf2~}SiKHUJ^ncE{q{ZR*S8Nw3?GC)KL4x{M~H+_ zQ!QGX>l7)}SXVA6Q~RwlziO;0Q?CD-YRhoGBp(NMY(zr%G4+14lVWh}&|VzRPQxX+ zzN22Q;YW8Z_2_PG5E(A{^CMR|)+zZlas5E#2xSQ^TUun>ApNuMY%%Iei$n)WQRD}4 zbk`;<@pM*1PtEB<(=SGZQ$BK?IQ z{Vw)!#KA4Av23<0YDxJx8&z%ujR3q2a$a~_)#}ooRb0=ePWaoSY?p=b+*gZ%H*^H2bE07$%4H+@p5gWKd%Hb=|v{;TW zK;XXFIJCu8?(M8dq0LJsW9{7cuyyfd1n-=U#G@+_wr3s=%6XDNtLOX!OWohVs@d;i z?Y#Hl>+z-{gcKZJg46rYC}L>q^682YqJ@wqggRs%-qqE3jS#xZ-!($$KmKPBLUb8N z3!#HsmWY7di0Htz2>0`aW!iJ_bb1~u7QBH)J})UU$m;MUTxR|X9!^hUp7mKQ@qPg- z=f93k%RWHx0dK?yFU9Wl(?y8<87pSLfj#S{W7nGL@ZVv@!OhMHJ2)3nev1(oxC|*_ zYb5c*aK2EKdQluinV`bK#Y67vfVZ>~ z(n`gDBeY_4HS~7PHT-V?mE+3_G8JJe7}ci=WWbD-!Q-HcEfjKKyK>#8$sv+OR4Dj6 zHz8aRLnMVbNUFtq$w#?~6D5qGWl&3%C>E9HP+L|iikB!)6=gD^s8GsQ8^6$#G`x=2 z(}i7pu-q@?pp+w8kr^zTB73BK$^yuq5YoqOus>%ef6RnXJIN*6;+sJToiSV=iDK7P zeR;8rlSuO#h$3(z9uGm`kn1sE=+T)uh$bcJsE1{1Wm(~ zC&9_1hW>57pN9QpiudOPN=X6XXbC- zOHc4Vs|-x5>qOUsJu$|-SvK?Y6Z#qdb6y%I|70ApRxk zE8WsAQBi{K^LgkhO~J*|cyyhK!KE{i=sqhr7YSU52Fhb4UA#aP?y3|)+LfqGHBd$H z{J#O!k~h)YIgM&53sFO)+qQDeXP{g1?3QaURVE8kWIqkvl`@GdOGej)1e;5|B(#<$ zp!sYP+RHQ1SzV-vAqM}X3$6}+DSV9(`btp!qn-<$A~PCD2vK&PRD@91`665@%~ym_ zNA_Nv+&2Yr-akd6>o<_;IsrMBk;rx#3dS!fa2MO^uL#(sxyNnRr zfS6fwkIAEPbjA>bxD7$#-MQi2;}<=R)kQxbs&OWu z<7zBFU5t)1h3LK@?X8TlPJ&RDzeCa<#ib^Zg^bzKl8f%T0vXfuL_TDSJWLk(7=h;8 z%}7}DXB>6>2BKVULx%f}$aNiZnGlk;knVgXA=JCeIC(}*2sPK@QcIJ(Q-1AQhpw7N zsS6T9jUwafMBYgql^38bcOP=Lyn_Uf2ax169%;^lmAkAwYhOj^9JdY<3{mdi3ao>X zE58{}CEcYz5*-+e#jvW&a_NJ7y3caH4%v>^DH4c8PmV%=>1Spb$8+UAIf8uoO+tvs zqbo00Ni+9G#ImhA+=j^IPod@b8lWyj>X0tu3gwwk%lLmmP-{T+0u_J27K6Z^Fs7_9 z^aee?8HA9&PU{r*^5wrBx<4q$^Qm#B@r=wB^Q4{<(N??}`Mci{x%MzpMJ^^dOT9ae zK&-T}Sf{~Au#6U&GY&Cs0_!-$x?eAH@OrgRM7oVdgxe^=NQAo%L%5rP2tlME+I0kC zTt*_6G0#Na#yd-X&SQI!;5;4)t~W{AI}ze>AA;xn4AHA!L3Q#PbW@KwpM}nI1v0Ll zl<_tX?L~VLwD?&Za``$!trJv?w-onLNU{ttEP@0o){(10?KNxr;?zMpb==qT;kiKG(y>KGXZZbE|NZHTqp zgQTT@0M12;jw7-`5khCA&0e+;Y85%wRB6B#q9#1g|mcuiQ81VV1Gx>&(!4wwVkf8bs&hZ-N#>bos4a z#_4cWuLc_kA1J^|=mx`u4$qLH(6Q&42*|lv}ll6DQ&a|Bt=D zfb*-k-pBD0;syyxfP~;s0or1v6l&0xLMbi9ixzi6AhzxjcXxN$>}K8F-8Y+cclYOi zo_W7#bFiY15{ub#yrKO2UTZ z54~gbZxS<{h$LY|Z=;nfSHjiRRS`raaBjWzR;*pSR$b3E%Lx)WOoQGz3;{>aAnonL z>*x){{nXS{<*hSj%ovpyl2^60Vr$5=cn$9(al|!^NN#amA)ep2Z=YKCi0k`s%_5Rf zd>-@X?(VLAJ| z2M4#VL8$j}<%z@)b__>1&>?L{p4}sQS4Cc$^3)-=uX2a?;oa~$xC3=XqNB7_p`HDi zcCW~d#Bg71TJEICpPg$KE3cu$+t#8qD^U?gob%xv53lFk4nO=YNRCqAdd>vH#F3!d zzi}lBlVebn7O&=w>Pzy`+ggvJ%p~lWJUcA-9E+{zDbFUmuRc**SBtr@|N1kjFMCD0 za7~|FP2T+} zoIbD|A)cF&7Ijo@Jr6F&nIkLVcYGCM1GXT-dmX~htVOinM!^QD`z7$$YmZZV?67<7 zmsoE5x*~c`Y_~@E$(8Uw({W#;crrwcd^3m z4cLD1Cpdilg0#B@gM^Sh38DS&=xQmvObC6$pNSAUU;ck0WL&ShQCH^WzrXi4fS!(K zBuDsSrQO@zsb6J1oCF5$Sgb$>E-;FV0YtA2eo6u_PHUQWPCc2#G+}O2+>y z_*WF&%lN;=rQg-?#~JsXgC5}D+&o+k^@d1P-Kx>Ur4SgOpQ@r#HfjN zD%57BnqOHl4s#dNlmVFpP+M&Unk)Gw4VCQ@rF2uV;I?DvWF8(!x2CF*iaa+84A-iOiz)y#s$XyC7|naIHN=v8)l=6 z290scy7=gd&=#{6u8*9~{AzK+jiSx5k>2^@lQ z?-FI>Jvx7v%7cdS`Gme#-_P?VrRzc?kVY`UBot8GBxiuQrJjOinxxB}i zj!ysI2lhE5^s(Uxp+-RixIR#CV+{tx2tj=*RLG(7bhKm!pdxA?D#Ev-Hfl2(qBo#1 zW}RRSn&Q@=F@81bIAik8&MO#5!JDqP!qQm z^$9!Bl(HL*g4)F0D2v&JviJjN$nil}MZB66?o*_Yv~dy|QvbwoWDs$g5E>r3fAlm- zpB*HG3eZ!Yi#~b@mF56NiRjNhjbaZ=L@jw7QT9JTlHCnRwYvss_EV7Va5ZuqC!oM- zJo23IwI|^Mzq~zM00HywT8wxwfK6P z<7lZtxAJE=8*C~0@ke*17n9-1c|5XRCnDGVYNSfJ z65Zr_ms@bu@-_r-d^U}Jcoo(mi>2-FKzFv-58vezM<9w zqF0b3$xmsU*7TAXha~5#kmxW0@s{RrT(aflc)G<%1x~D!++ul%G}%wJk#saMB+nu- zlw%--xVBKn((4iJb~BF7n+5+>zd>8pCK+!6f%Y^&+A3N~L#e}wF=>u*CWz$79uQWnlTHZRyV=d@^*Mw-GyT|KgCJ6Kcc{Q1qO;D&|jK? z{z~aD^~`Suy7CX>%!(&*%JxnKI^F=^dE-S6UyXR1iAb~_ufTqiBr-IKYaCgRRYRX@|v_v-UZFWFA67bHp>POu(>c&pLUXUs&>!jVW=Aoo~K zm1}QA#G;!JZhbcr*1iaohhm^Q(?kd{WE|IO6M02Do)dhnRg7Ff{m|qg)Ipg`86=>b zVaPZ_%O5SHhC<0EvrbE$Q|pn#wGEALbDn82ZKLjcDMHBjTn+x#X)vF>Udvj2-%#jl zhY~{COUOtF>F{xS9MI6uH}-FCb)LR0A!N++H^Ep3x*jz2F@2nQFxE5kMR}y_T;Ip^ zxV8%kq2{VmMF`cF6{0XZ6`=uV@WrPe;>3w#ICSI?W?VNNBS&4SJcUSj+<*W5id;E$ z>XZr>N6(mt9(o92VPT5=;95JrzP@VhA$xm!6|zkeIrQ$KR}ejnzWCw`SXx@D^?2;; z><}CrtUPeI-VX^R9Zrs(J|uO{ojZrW{q1jf<&{^El9Hl4j=0v(Bab|yJa|aNJn+B+ ziiBa_=<&m6^7%}IL=U}$==t-9Km0)*W0*M}qbCxHDH1{S`eDd8P4bW^dh4yXRH(Qc zZ@f`?K{2cy!`rcp+-JGz(L|3ZhO*;tf}|L?_uhLSet7qf)S5wUE$wJ+ZbMp1I&!jd zQCCxspnzaxri)za=|w|L4I)B=5fbc=__#=1?gY9(wmQm!FlfuttT3JGyftinEhch&TV^ z`>}81N|a_Lp}r(f(yo#ATO=l3mWsSW51T#fS16)_giu1TH^RJ*sdTvhP)LiD*W4~r7nsvq6bif_bK(eS^6N!o@P15zNrYI`bspG6sY@rj_kvU z-CL!$oY|vPeKa6YGE(FtJ%l=H%+V)m=_!<>NTH6}9F*rqAU1G6LcO*k zCSW(>gZClGVLo8>vEv`%X!SeTFM3Rb@~=cFKPCeCPuQ{MW1QM& zjUzi2V2$gWaI<_KTb8|#<2x-B5#)8iNs&S!9?KDQav8!rS1Avngph5B58Z*|`<>x& zbQzLkj-oIt1j$jS;eT?wbl$_L&QBHvrc@~oCWg4!q)3=2NwvcB{|W{tAufTxcm6Ui z4NgGna2b7ukQus8|I_u#Hcc011^G>7yG)dsgy1vki;=*S2NVfJFnnCF$3cX9ACs1>_ z+R)G>#ZbdWO}5E3iik4bqt_17^{EXuZPe+lHb{-oMv%UDD0F^|dEq{f@f^#dCT|Fl zbE<6Sd@+y8up{JpqhV)EPaCp2ZJk$R9){+T&*wF~N0T@DOC^HG2J6b4A6?IStJC9k zL-WJ?wNb6}q|2<+_|Jf2g%QT%CQ_)csTMs=^@0ZUG|N^Dn_iw51AL(V9QrHM(UKK_ z9ItfU+|w!a1mi^d>+!ARMTN4(Wl>g)9| zt7!v!C9^$RPKlFid3}I_^uY2P+N&EMF=IMDQ6$j557LUhmgYvdB%5;=rjUxvL9`C zC8BJ`sIT~=t!E;}<_;ve{}_I@GvR4H1zwhu;A=4vA(j&mX=Pdro}^X0(-b5wy9qw_ zH{z(>UC8#Hi|*1RKwC8W+tbn8B4cG!p+Jnx1{r&51(d&LLP(Em43}yOWh#287^j0F zN~MkJ_o8GT<)>K|Go7Kt3!#szYs{bwG|EWhZ!I5<;4}EFq2!bfrK&xIm}ld-t0((N zI9-rG?wg-OIXo169&zEZVtJp1@{9u6=8KLX?N0i(yjW?I+30M{6l9}E4B!6dV$su! zk`#(XYt}wQZFv!=Ev1dw++_9;8gB}>MpDRrtRiYI9WpKfU6TG#45n%ra0vFtLo)EGbfo!`GD3JDCDDAqyVLWmi#z{WL znaCi!F^J@(y8HFWSambfmr1{{9BrCx7bp^l=~xIPuPIg&kzscgGVP}z&F*R>OZ!f- zrq{-mNMZOmt1B)dgff?1kC??butZ zQb#aDlSAr!jqDR7fa>Hv?NwAKbyQ;l+pj>&l|jf@r!e&Re+g87Xp}L8dTwQf=(yB% zMGsbCHPcWLc@WVXKZB3OuMlK$AA+rZfDl`T$GjP#f?&H_5omWid~I%lr{#?}wde+% zTsR9S7a1`dCl=mt5l$|+0iFwQgqNHTu)R&C73O${q`(-V{FGE#%?@fq)iV(`WTNz%ejj& zM(&YzFLGCday3r+DBFGbyekm>)prykzZ!*@MOP!v?q&qepN$}^yAi+P6~h`rXE7l1 z6^+tIrJqtKRFnN8lL+l0M43dnNc%vA-z4!N?~HQEC=-o3tx-lQxn$O1)fo9N=#omF zi+t73)_Uuu2qCSza;xtrv_7r#eyRL&pP*-q4hyH(4>CfNLhZ6YxQ>uH4Gob2OoTZn{U2Z5kL&Z#^-TMl7?a3{QUe>y7b;5xkR#xL=s7!nwlCF>WxIt zn{U237?$q%@#DDXo_kcD8S0ImMI?GicyYa;+itr}<%jzu#E3iZyb~KXY*3-#7+#LV z6T{Upd>%c9NOEzX1knr6zkpkAx)tNcPQZ0DuE(FBc@||Q~EC7yfsIfMiS zPicc5*v;%KQC0B%R@tX5l-&gg=LPmhz}1!x1^aBAC1+nj+pzw zJJ_(y4XH8Vs4mKvZ5Wn1T4A}f4MMz6VEqyY6$)yD=Qx;caVC zk(+|V5O3_;xI)d}?BBE!MQO1r$_wXR4sKbkyns08LlUUAFcY=svQSf$g>awaYP}&w zaG~cB*Cz@;b6n+>o=uD>L*j%UPXs?Grk4`e4~i}TojIMwZumE z53tnguUO~&4tB4egS~6N!mgEHV6FY%6d7dq+0$_S`Z=tydJUUg-$Fbbu zMI6~N4+pk?K4(DERbB_?=pYw73I^ z4c`r~W2+Gpas=sd-U#v9D|tJP^6XeqR=A)V8E4Z3qgEueQt{smtq@%b7hP}0(Bm3^ z@BC$48vkDtLPJ62nTm1E*$h!Y!W1z?#erY5m_o-Llsvl`;gHXBDBGwjkH0dMr6wc z&yqBZ_nDNE3keSH>-#l$jnM$Q6m)t_hlZ9mws?%^RT%^qkU_kc=?VrX>g0ND(6Rn> zdPd?!r>*nH^mV-$>qoT}bN%oh5DE-h>dln-K1FGa}t?M!4He2z9?%aEn5in;9-QBf?p(5kxrM zq!3Ox|7Q>}T2)3U!xPK||njpKG2(Xz6KigUGwVe$gtJ&~W z6K6Nz_`(};bm8sTIp=olUhp7-w!DXm_?_sji~<^R!0<5xl&{}F1`(GDArpqmHNr#) ziM+aq5Xu8eWm}X4oDD!l&@x1=eGb8n_aV~$R>av~k2nW`{dI`7o`x7pQwXCN``L(f z{Voz$+=sj!kD>DTvnV_K6yleCA2BXBAkI;)vAYVfwiA%-G!bb|8HeD76A@`W3rQ|NLh+8@qvF(a$UpWZ5;p$?L2kFf-)07aSth4zk>oy8+V*t# zIn2Uw>s#To@-fsVuRwpTkBsec=x@(PZ|hk_2@WiiWu-lYNC?GSj6#CdSVYP8VnQepJq$(H zCgts{MO(c*$4m&(!?Ulh4ydn}`rx)kc?b2KlRlB_jigQQz-!*!2>N;^VirwBqV+g% z4IvUjdG;m`p*(4e+4kd+?l4aJ%V6Lv0bjSDBVh5* z;pg^<`amSW{oxDXCuxVS{2d}Ty?`?-UPR=cc_@iF0Mw*Qdo}C5BHIU=v(cD;0!LRr zi``at3BP$9d1>KbTlE{Ue4Le7|(HCWPPZ^OoTXIC%6_tj?)nA zG~EPek(GL1*|EXw)N(zl}1C z(0b@_?c>`(%Ve#;@_E#ysRwJFn#Tv_v009PQyRJ)`o2raTplOcGaM;IPa(B0^}=fi zUT?(T%a67j^f++QcwmOkuMxT&x(s?d9E|t#_c!H@&~>Hmm$Ax72yyM0wD>6e;-Lrd zz1wfY(S!T&;Dh($+H0@H)TvVyVNzIFs7M~J6~r}iND`66p+^phlsXv`NU-qS3opDd z7?O~JEITM|Uo)zykTx#NyI;O6G0h#V3>Z@lq_I<|N3UUewGuO7$biC1Cl=y57!+~dFg4N8m45E~PVn{T`YPyF`xIOFMssaH>t^P@3g z>^MC0)KfBy)S;`h8OM+8#f&NA@%9@ppsTG`AjjKD1~s9-uU&d#@?a9Fi^!m&OogB#cM| zEw^8!NF;g|#RvH)j~cF1#5o(z*BscqN_imB#$_Alx|E`xKISDE z#JL@=D@0ErdIypCX=50Au|H!1PviKmjcRVk=g4k#J=Z%rxMhtZskm<>gh-q)gxrqR zi&cm?$N8UQ{zrdz4Am>TEVLW5bnaQ9*K?B6d#gAz8Iv>LDG~`8lX7w0aU(JEdm!By@ZM~ZVl7jtEcQ!}H2`LZ521>bf*)%!S%?}Ie zM3-fl=ek0L?s`IW(S`z4=10N%$U68OU4x&dmR-aw0GTCSnu+#B865vyoDXhKgEuvpJKJ`8_F}t>B~Q3 zx#g?a8AMzk(%B&%o8@_i$MFTP(JH z7Ke9yg{>>!hsEc=5rOkZ?B6s8N4Cw!zV&n9bJzuE4m!j4hzlaUS0m`;5(J)bLtMam z#0G6ZWZ-)Ed#;4niRFk4-i4x^5ag!#!T;nI1f1HA;><`<4hoe5p%n@)vfkGs3cuh# zGjaHzhc?7a1{}Zk(*~RYa{Rxwe3$Xdpf`#lq!{yDlw)mn=9eT%p}xx9 zm&8rbsRN1_B9WuPb%x@DycB^{o}Gl|i#&$Te`#Sti6~WR>dO^+2GNa~N=rj=j+&5V z`|D-DQv?ntmrP`ik^IqyQQ=8DnoW5Th!z6=voYxFZ!w7ZGoL?H7 zgJF=ECi5lWKF=}lyjH(APO=)mzW?`uvUE6@38AJs8C&Y551uE37@oAhsSE=QdD4&% z)Fh)b_YBT?xgyB@DV&~vC;S%7La4>H2wOA-kyckB#(oOoou(qe^%^9&O+$kF48*%% ztHM_iN$%Gn#qD}zxL%KJGqU)b;1}o$vrKTi;a`L~9ru~$bgxIcJSR<_nd%~2L9)wr zf@_iDGDD7?N17ZtwxfZOLU%&1ZOFmv+O%vi+G1?5oL1?!YrpC*m4>I zY-Zu)!r3@s^FzcRd=D-82QW}eLMT(}xk%)Sybl@Qj08}R8J7tmGn%FEo7V*yiav&m zYmz?LC~}rx$W<4ht0E7*6}cEF&%r=x3Q!z|y6DYF*!~v$9UerG&20#?orMUySqQhk z0l`+Y;J5GwcrBQXGgfyZcI{(0d-PS*1$~O{_<3jwdIt$>??sgBO^C9;2C=r2kYF0307Ai&UO@HRLHnl@Lm1@@&o3fyY!5i5Xv1Sgh=%F)+V7Tdp|M` zy@deB@4}ChibfA1CrQ&~ghHarD8#!?K)Br`_%ED{K+9RupYBKP$=A`FZHu-H3l#Xh zh3K76AaKc#;cI_8f*fx_urtmhz0v&!hG1UTJ$_Xm3mq-8UEAts-li z&YHY~>c#L@gpe4QHRsgW#Br@heF$M1%Q#UvNC+7r#}ol0=hb}%8LVX<pfeLAN(K`^k;yIl7Sla*BB9E=6BH3m<(xv@! zJ)j)B5y-I_iEJCwLj1`NV-e#x7GaJP5omV}GPd21YM-Z(vGYO1E|)&za-+1@nTpWL za=H%LA_o~hEAp#}i04`{7E=*zJq>YkZ=&5~Q`jvjAHytWS&cNoZX{CdMj_38I^x`K zRvsu`E0Rt_`7I7O{~Y_RACUI(GaR$L2PZA>hKKb%@U;6eydCd{pUVUAbG;wFZui4S zs;=_ahD(9nDh5>)aiQ)+~+akl>0sKSo}krcK@Nep73%p!Q1tR@OAki z{M>#d+q>cAcqe@91va?J3wW=-pIhc#!xZwnOp!hv0!<3(uyF)Q zBRwt{>w))EPO}`ke-FxUrYqMChr#@rZ2+C7hB0lGNBOOxui-uV{TS^JqwS&V*eHMa zo9CF8X$_%bw8(v2JEmFMNk)7W9=-pEm@;l8e*TjO5EB!nNT8ykB7}y9s!(zC&>~%@a6r?4$|}SA4bvx!HL*cUIn$btk63j_UKYQ3P+qC8ZTMQ4!vYore}){2eL zfbOPRoXtp7YYUytNRn}`7MXG#*XpT0n}G(gOXEYlabU|D=__Kt%d`4gYNd}Bp{_6+ zL8lI3rK6=HbhwUCT~Q9&MJHkyIEI(&ls4BYZ8Os6qzc7Wb2d|jo-5BuQC>DARSs`k zhbZ4u(uPYFDMW&zp*R;@^SK~78Y>(u6p^&x5_?n>q^Wg;dZm7v zMRw>&8=P<1xpoQCVuG=Cl^asR{jf`Z^Ml-tOC8Zn86*9rq97f?o<|i~#k8Fke4&Ue zdi{`$3iddRMyZ4Twpyt(%DqZOl#wKg3-nTXOb+wI{!Ob?SUr}TB--wED^$q1PO0lQ z8E?3Dki};oC~u&zKl~d$fA>|`ef=41zWfA>?tNsRBBO|!v)QQ1%S35LGGcr^aeD6# zcUt4nmW49z&c}`w zpJTbr>xvZG(WnfaN`1;*l7dL{f;=g-3qH5-iEv7 zYtnYCks7gA+RvuTgwVJAGZ8}P%YT^=`j7v8Ga=+=^9t51{u_?(TZEGb7vb>kx!Ak) zV{BUe23EQ~hougGgsat4aJTt07Tf#<)?YpW+pnI)_SGN4@0b&gZC{98t3QX|QFnMB zaz?;$cSQNDLGURPArv3D0nq{L5$LrXVSeio8@>~v{#%g{c^H|Ao(S>UDcB{QIZVZg zG_l?$kA`0J#QA?SAw+0p=WdXB>UuyWm}W_4f{JxZ?;m$)y@IsUwP%CV>d9vp@_bgJ}41VoF0zn(^ypDNDcP!4%TQi%y5U9W@nE622PHk1%j>mwQS%ty%r9>G57o2n{uyl#ytzhoR8NxgD-tG+K2YnJ?!1g0v0bF{NZN4MX{K znYeE(C-2egx9R(NoN4H?spCwO>G3`@RK5h_$##VERyU-A;Eqm61f<;lgXaa@bW`YQO_Tn``DdyshW4K!tK!$55qxF*77Lg?FJpjrAv%Xw%b zh~NY;L!I?VyX+OCsI$5Not1g$uE>`*DzdvQ4JeOAd*%_OANdL=?H|EOi|@kA`c`<` z-3)L0+i=qI4xDj(5Sja4LsOV7dehgSKW{4r3U>g78_^oQ0I_QyMi@QWY^O;(=b9B` zkuGhV6ZWan#*^*oA#|m*^)ZNZosIyf8xXkqA)F1Ihn`Yz$xkxcOC>+G@=j~3Ma~vV zKT1PW_5q|HAW?NE{4A#+)OtK3rCr645OOvULT=LD+$SSK`hma2HSk?H3o)(_pwZ_e z44hqt{;EyruilQn(oJYfb49`F_vHD%z&^{{u+3}>P8B&tLTH2{gwjNACR&d~oV1B>i;)OiGzn*{Z$bRd=h0;# zgk(?>)S;_h+E-H}(Apxhx>o8$>XV)pHTlv;5ewc=cO|aDH6m@qI|JnytKd zQl;&Y5X!V2sY2FeS&vd=P`cfCBsolw>n9?}`5J^S{{gD}UqxTe0`%uDK&98qNLcj% zLhNoqwEfLUb-ooDP5^B|lD@YhX3_QV`)m>-7R^Mnz0*z)BJYefdP{tztQkN%387-3rBKS7Dce*jV+MNb zvSrN8S2BPyLBB69Hm?XGHI6k2TBO~X!p2em7`oOF?=iMP8?sFLP03mG7iFTaFdirh2TJ^a($het2L`H6O8Y#6fjVE=dSjqQ_64Z*kv1f# zkoQq0+wwru8aWjaa!;fnTCR(c`(ow3IN1uSW2NoMv5F{xTvHK_fl6KRvuqo<|v}^;YA@Oh!3ul;=kMRofg) zgV$>)xof_c*9?U&uPU=Z6GO^ts7C5ewi6P*{@3)-gPF{AClI@TY&^5a+iUUZry!!#k(ByFWp#^KbMQ2g>IKgQ%ySKx== zy#tvU>59DIL~3$!vhtRpCk@vOqBjuN_#yd1f`%juJ#9vg9H|H(k~KWPW5*74oZdB~ zMvYP)HcW$LkByCuB5IgEpHp01jJMx@TahsIe)^M#5gQ$czMg*cb@ijS zrx$Il?drOL{sHuKb)&np3qEJO6(RJCM}Lm?);9EZ_n@P_Me4Q#{e7M2?r0W$stIk) zHRxb?xYl~v*2-@glRFzR(A|n2l02f9bT)`SAa+$}eFZAcX2J8wUPK3ZE0QQHF$(*) ztw&CBjEr41XsML`(aeuZ>X4fftInOv5INb}h}@)DY+WJps~}y{t3-Z!oFZ3Rq|FR; zOIafT#2!Q^+`yTO@*54_woT)QI?yI`jP^Kc%8tGwaX>_Gw|5A18pL^EAkoAE*DLuXVscQMVZO)IWG$vrGjA49-O+o62WGJ2pzWJkN8jqibu0>$W)F|?;KU-A+pd0C0DGh0w| zE*yEurx4-01@R%f5$3%SK_06R?YBV@K~cWz5#zrR0VkH?(AGuRzi}Rp?XXg72<=|; zCHAbDiw&;t!DasQa9!{sR@uFU)wXY9$)cC#_X~3EwkF2zl&x$7Mq3oBu8oLjRFJRs`#1xC$9if;=JA8_R6J#PMA#5aF{6F#&?W z?O1I0D%LH18>bK3z~itbj_jF>ecL|8mbGtTrQ7pZV*f|E<{2!te-@T=9>c=VekJ=a z;J}tIabnLR?A!3A;48H_m)8MDMF_?CtwXriO64UKE&EB~+YlYR2|?bgWl-3P*w8&9 z98VxI@+bm5wj#>!fC#^Ebl08}0l+ncM2QjMt(B3B6+96Z>I>Tc9%DwA;Zhjxp3C^( z1Vd9Pj|72H=_a(|O~sntJ0x0%>B2>5)L9f&@|K`WZ5dd68$6Frh)GCcVr=kcRdWqW2H4Qo0C>jCN=RT&;}Ea8x1C2|7}4+M?H^_-+JOskx(qdP-08vo0CVTNk4VHO5?)( zDnrejXXa5&_(`7icBqla_coX>NkbWoOphdkA{yj9%XPd*8=6c@m0!|eI(!zt@@C#t zy>haT?}K$>o`~dcW4?4<4nmI6P%|22L!pg2En~G|$9;WVpW~MI@Qb8AQCOA1D#sc3 zSP_YGjO~VLsxnC3wwD!{i9<0O#kgxL%~!u!@0y5%w0~1b9AjNcf8f_u>I67WNCatINC@>eNx7)dvh6cn6{4p^+JwnNs4Mq0a*r-Ri0dy9W_KIn z?WZHrY8+BIk!UBdABj}^5lFJTLNG#2nx{I9M!MZ-WY~^Imd$8n+l)eIEfuWF$P{%L$ZF)wgP?e0{qCn*OF2zCTr?LFwJFw=9o3PjJZX9!e2w^*3 zmUA|!PuzmOv!{XTNRfRBKz+3A`=TXrDI(WA4nLcl5Mnt6(eh3c{F@8HPtCvkN7(+J)7F-j9Qp{>jp9W`PAH)W&0Lu6Q6nbaTa(FE-w)LqSw z9nPYw+(ZiXip=Vhac!Vh#s+$v)XUhQAn!&%*`>!u{gFgR`FVM+WjZI>jN_T|<}ti) z<2X+lOBt-j7Xv7h^*Ccpk2p^TiA-1F;!I~p ztIXb2{F1eUUvt)1sY#y>xu;WPZkM!KPT2Ifa=bGWLN!Tf$vlXdjemi+#Z8E?xfaQe zQ$=o$7FlL)@rlRUzG@y1*0u~3!+y&hY;)gq`iJ$S;VG0r*CaC^HB8VPI^i1N~Lhi#XrqC`#Rh_KE<}u@a@68Peu5q;KWR z`;_)tFKxL-+KTkGcJ;oi1+0^LX(tRJ$EXCR@m0TPBh=VCAbq=Eh1lf!HrW`ch!uGkWs-X>f_6e=VVi7Q36Y7d$)cYK z8q!1uNR{j5UJ{L!q7z73kh(^Fk?1bc?nGbcYmxpUIs-#e_KM!n(~ybYCV7v|a&NPw z(~=}IOLU3aNaUwd@ki3(;6bzjrNYV8C1Th!)m*MkbUat zricjVb#pC~^}WXX_1K`n{Ak%rl4K|;q|2_y1a7rlA1c!a(_;O}c|8VPYFuDF>Sr74 z$r!mrr)hj2DnEh?#w>wOkM|hU(S(pOO{T|*dWMW^lJS#-P-{&YYKjZcTwR8g_!vC$ zvqy0K^)oSL$`s|XL$c?A2kwW5hll$8i(mX=a9yCIM~^BZi0cY5Oxy0=yH%(;P3-Vq z5<)lJa0BMfovTP47Z(>rwlF;0rcIlar;vk#16Hh9p~AnBw4wLU$&)8l7`UdUCPnO! znBhLdz;UggTW`HptqsIAeHha2_SyNyg zJpAd8f5x~m<1t~}L|i?23Z`Ct4W>_>q4v3M5U)v0NW?vN-Hksy`4qgp&S3o5af-OA zk+H<QYX=mH|c2HKlM$LE@? zbz(C%qF;X3mKNgl!MzCg@l>JXdgPw|?pBoLXW{gry~v1-M14u23LkeiEeZR#Y{0pU z6f}zbt}e_)LWrLtcS^I8q^*=I@8sA3PaNL9PT8LfEtVM-j6Lg?NxvzVvC!lJv~8uk z^1iGu&QpX6y?T!A+=#>wA6U=%P^~rOcWfUR7LI9q9omJ%J2uIdA-_CSI5?6p497;I zqEqy~;_M`>ax6UTP>7_&%sR#v3K3qYP-?>L%1${3GSA!V6oLJSYrKG z*?(Ey#miXZ^bU5fnTwMQ8G=tOSH#jXyEoyq;3XW~VyQfY7&6Xw?q5tELM?@t z388QJGZ8}OAM$sZ5c;?Lu_7)_2yxN31uNdl4FAxQ4eq|$x6G%IniE!7lcis3JLl4q-YOIh1Q;cFHpP#eT-Hw5dRWiXO( zs-2kYN)bXsNFaWB-edT!$e_ zhy=SSNa2K{)d*x-3v91My4?t*+FpTV8?Fz*eG(^E%6Wc)ekF3`x;)wD3-YY4M6UeK zwi$se0q^HzVY=MMujSL_Tn5wq*0{m|)3GduK_b~C;Fs_OiKlE5QFfz|V?P?%X7ISa zCPS4)V9&4ir5p}dAk|JFWlJ^ZkNG9Jl_$?AbQ&jlAB|Y6F$lJw1|Qcu5xe(!G-qxy z6GB;1m(rF=w3*4E3kjhb^vFB;Um}G5Sx=_{PTHD@Al-(~6G9>vRLCxp4I+c-*;17+ z@=W?yMK*dXGB8jjhG-vFH%egWZwr>w>dU>(N~3 zDbJ@anTdgpV!2*quo#rR(zoeNL3Gt|g3Uw-^;C&mA{iv(M8Aw_gJh75g@c5U+L!lZ z9vg>F9JVpMrdbZ_vCTN9X+p>-Qz>hQn^@zRuc2hRfN2`XNj+}$NnSY)cS+v$_@?Bo zT(7~rXy`G)m=Cr;j+d?_$2CJ{TjutEpU(K^k4WUlT$N`5354Kx?Mx z`5XTXpGC8WA%wnz6o-*Wv>$0EgvKgD=(L#->MAf0Lee+T+9-JvIYJMZmS!0{L}u3) zN`2(X`$-p>9fi)ELnu9Cfgq4>To*D zO}Xes(x>Tl!gcIW$F`UTR3}RtiIcV>a-<J4tL2&1GM?3&bco&-hMcWYU&5=tK+?1>4;}KX_Ud@)&(VS?G*$$Q z%#!!jmLam}tUN>XAjum)i0EprMSHvCyHDElfVAs=ku@FiUfbo`mIS$0^4mq3C)-xZ zcQeWSQ0W(v@5Vp@J(*6TE9U?@vJV0k3_U3KwMu#0vgF=ENmKexkI0Okb0QD(<-ExK zrg*6rdNG9xOrA`r@szRq2)c_mp)}eO5qn<5v1PwSbB>JZ^?o96;?Q58C9+-Qe7%%I z#%}7($}T7uIVy69q&npz<cXVg8wnw$&ztjLEWfe5 zET@rZVIS9N>v2Kr`o?l;`OWddDE|pPE@<$Wu1nsd>P6~H>ExpG59igR^T%gvo5T2C z^z(IEIz0`2jOUFWLJXbNR3WxQmDE*RBf6UFP>_>}pFH>zj2$~(5k1qUO~a%~6Y!%S z{SYxRG0My4fd?K?UN!{7vvIwlS6_Wqg-$zt`m`d1=o!TONgz#}I8hNU^XJc3YXVtV zSg3SJz${s^M1`hfm^P9_+<*T0=W)|bHz_Y5l1}u_A+bZkiN8rk(F=&=4c8T7=rH7d{a3gTKqTsMf}doycZrPPa`TKO05etdej(9n>rn1$Be`1kz*8bG=40- zfPRVm+ydn}^!@LC50CupXL8>uOc*yFzyJO372)OU?Src(PQsu5@FdQ7oWKp&O~*TL zzJ}h;HigcX26Tx0>k>KG*H$lbkfFomSZyV$3-eHznF8OFM=<}B5AgAuuj12p-WbH9 zFFwW+J1e9_hJqpEN^>%Bbk{aT3U$?2qc|%KE1YaG_k*{v+SNvR4RG!O~`_|#B_us(BufL$ko~5=6ln2gQH#^LE|8-c-`2Y()dry%;#Db3* zHtu~mFZ==vKY1Igovl=8e$LgnTFk-j^-I7thPXx%`wQoD2+qwM+qpr_+i;yAe*8;9 zh~eJqi})e1$s38}6+M{fHAIi3LtEFXV=OB@h)Di0{~Z75A(Rszp*(jy5A4EPS9|51 zvx)05#e}1wNMu@dx#*VEIq79wjpT?R^?vw1K702~eDv0aJQtxkn)rZCY&dP($v~dAHDhNrn2Ihh`<-&EO=L@>$miM|DMvbrG6La! zWHo$`t-!goQ^-%^2hZye>bV-h9xD|g6yv`Mkv{9CuD2jIU^7ncvB%CebdIov_aRpt z-(iD8n-}50#s%2m_5qycJrBou&nY5E6G9}1NC=TQqKA;zekZxt1;^yxWp-~VLTKN{ zg~~%H#(#^vqd(*1URU(C610uXzks1{s4c9~n(L;!Y zP<+Tvw1?f1O60H;pO#snrh=dP`AA+7lnlR$TJ&*AkUdvWv5sBx*|#2~StU^2{Tu+ebim)dDB# zP(_j#8m{d$VC5LoS9L4-*9Msp!?imqU8a1RjKASPlAe>^9d(j+Qw2ICzjR5D3-Cfp zsGs`sr&sEeL}6czsqWiL3(!`Qj~*J+a-5R|>g#(FLb_~xZ)_)m;mDvtNd8Q2^~0Pa z=uu&wNdIRDA^nvxiKPLxDEe8T)=UT;TYzBqhY?~o3-NZ7k!n2>>6YIykubI+kZwZ~ zNMLiNY4TiA$hN!^xmH&o*ZMoivH1?N1sS&ALAu>{)P$&-6eVo0K$?vK za?L*k-XqUQHGp{|*+g(sQX|uT~IB=>}6{&<>P%M zgltD5Ps&>8JYEq(F*aim>@XGHZg(Pf--~F<-eQ_)YRZ*&Ds4g9k0yhLCxk@y4Zfd? z+vk4+{!v2cybPnP5c$J3L+G8xh2xv0k2DuwfPStw(NL%+zx(P6l!rifH3`=o^j2nK zfMK#K;?a_G2Dzc@ksrPab=lkG{2`GU$EDBtOP`AqxtNN+$_#XsWT2xcO}2>`sEkB? z{Cb3}`2)PIZbOLWRK#$ST;4O=Pnwmq2b-}-lJ^`xNC-_wkn;@)UGpG{0_UQq^rYk? z1|4N-;QA5tWb9GvNhG5+dq2_-zKH-w5<*jlC4>@Ou0*WUNW?l%M!3T?X-~7^ZG8(u z+#W!c|Ci{iIE?>9a4?V~vpzVm=2ydNAillS29)eLwS~##`QR7!NKU z6AXP&*+{! zxLV}RXrwE-@*O0Jyh#xG5+|~RgpkjINjPnJD`I!NgibRd1QJ4$A2iE*RNgNPhgPSK z^*6|K>gfTJ08|B_A%2}a??nXJ{7~BQ%}BPIA+m6?wB_-FF$Rnixi~>&?__C^7kFc!I8?@{c)4E6 z&iWDg&|fF-s-{-P*;;9@^rVvatKQ>{GQE)#xDmO5Yh-BOh2Em$(q8Bh<019uBW)=}+I5ul6)wJ=XXSyeSrhd&j<{CKt^&&q+Huu$KO4~`2cMvOjPqg&UaI}^Bie45beO}&I zTdvr-To+3EDhX;yqo=bD?PB}3%R5B7q~FX?fytteMoHex>9-hyzX!Al2(Lbjq^^S`(#yQl(GGxYHnYD>9WK z`;_O8=yygaLWue|>#U+gL4Qa_&qhVEi#}$w6DSk)JLQ(LMw1I#R%#-GTOQN*XfKqZ zZQY2Wa?JGZM5Z%+rYExWQiKpeyJ65?(7HKc*3T)Ajj~wFW2Sp4LP(Dd3X*r`OP7@d z3&#UZx)^N|-@>1jR#>>wkJuO9rgQEuxy?aQM{Oo5xQz6qB-i>Si)XTV# zlam8~fB(U2=+*Q3>#r-~hU5^hqeqalv$G<2NG{PU$kx_YrIVMJhXo53C}L;j%9V=1 z;aWW}z4VeIk+|m26zr{=%~s}!ipY6{LK(|Ec@ooo7MVBAAay5 zuAP1zet7qfuzl+el$VNq*4Byk)(%8R#^9Gf{}t}J>xc02JfoibqaXeV_x<>Oq$H)H zr>hrH5s{dB^%VT<;fGOHQi`+r1vqi+IBvc97CiUtU*vZ_jvhRK>!(k{q>1D4%1bYx zp{5$mb+zbfZNxxlD|+Q!wbjXU>#NXSLpdY%Zd<+bASTq>P$D;*1TE74J4Bai6B*D% zSt0U6lj`)C>~5$Qxmc^xVu-mliye@g9EF`?q7>hi@suhoRW$Swtd(?XX^K^ET1* zNEWq7du*jAxwO?r**}+=i1PdlbzQsknU<$d1N*6>2oW{P*E7f?#u-cvSe7663NhjpYF`PQE9raurn*Fb% zLFK)&ARWHP_aP?86KB)o;Co^}a*`rVdaa-+I|V29??Og=qzb*bXY*PlMg*gwyhy!= zw(2rP?vUu|X^?tvtWn45l}C@f+EOWRLzSQ!b+X@BA?2(sSMQD6PVSeVL#wCvg2B z5=8#TmkxRedF*q8;bbO++$>&FSZebs);Pb7 z-D|&8YY&~;V~_K$>63sNHe zvD|(xPV8BUC_ibm3>g<>3K_S`?M)onJs*d6e}x?z-oy6w?_k}Mm*H;vG?v&u4cqy@ zhSk@<#uB?fVY$O|SYq=mRynu)5 z<1+r&U{tnEip2RzA>%}m{vwOS5Z#mW5+jfp;;p=dNC^3hq7Wbo0{3}LuNR~}f=B`} z+#JavBFgt9vPFTaD-GrHPW)T$qC{ zQ5HK(3(+gef4?Z09ijlXm*lJWalXF!u1xPvy-RbxII*rgf&^TT;ymGVX+r4V;UQ!s zg!(xt-&hFLrlC966S>FcA;|rw2)3Jvc)Ll1giw~%6>4n=di12pHqA^1X+nr=Riw*) z20ex3e75ZfWZ7MT3_H2ro}|mg;PLYz+rB**dg+2={4LMpadpm23Tf!;(;Tius=egd zVKkB*Md&FC?yMq&x~jzZtjs}oMJ9U6)6rjMt2ydG^5n?$Fan|Eh z8_p!5XeNXbt;ZnVb_^06CtN@X6$gGP=^Yo@8jg;#WR=H$E)Xtx9H>oFgiyu-6Co5} zF%@Ap6A)!4giP&>YX}V?gdAt%jLj_wR)o-3=&Lw^{?>R5bY%lw`LdrYawt>!eu@}~ zNrHGemLUB%N#tIN$SE1mxDbDf$PkemY-`P*8Or}jBE7$@q6j&FJrjQT8Psd2(j zkMkG6EYk^&6O`>tQ;!E6EA%9$5&9lIamagBekjL>j0qRCOOb6H-p#r zimWBN88WL`@DC=uP)?9TFArvoiMiD}mW8gb~B0Mc` zN8I+8KHV-0j;jKuq zosBfBDI$j_mzeH8I z9lCPX0#$pYzD_84IZziZvXH0{weg-#!4H`5E&#ghka7s4P{i5$fNq=bm^;E zB0H0%El9hk*G`qUyxWuLKeu1>ksWAAScyVkOQanB2;o~_g5S!gamwj2oN)Rr0yn&g zqRx*@HDfw@NzDCX4$ZviBP^daLZ}mIvlILndh+aZ%vR{;+hTs44A&h+*9-|7dezXwhN0w0{?H?bo;6%kholg_fnIs#mBD+tju5?ocn_~3 zX~eaJNc4~Z;(9$?ABbt+efQniw{M>!ivIf7zYea^!)urp!@rTF;XXZv7}D*>KmM_L zK1m^lg1h^O$FnLL{tsKhtJ@2ogiuLx|TbT)0rJNkp$5mW5;y^T~CI zn6H(~S0O4Q8qfdb1w45FPY~c2i1gG9{Qh@O4u*@HIKi~G67zBYy$>KGEfZZG-3Sg0 z#x+x>;+H@Fg$fxr>-w20d|Y*9l_G|&nK}i}{_$z--L(VP&X|S|-g^fP@zQfP@f9qn@@#G3iBa zh|bnU8-Y4pd!6!7?vb{`vA}j{a*64)eGYUs$hB1>PtQuTFA}}95&d$kPwr>_ zs9$ofM)hOavj1}3=oZm28_V+0UMI(-EPd_rES5>GQz2hv+aXZ-X1@@$O5Yrivh#x` z9-|i>!)>#?te0*<7v~7t8SP!{^L-5W$2B1tI*xTul1RTl-plve%k_c;4ByK9(QDRNH6=I(|9X)oC*%Lzr`sf`FY zwFa3n`;nh?7%>6s;eFHzJ||p}7QGv}30!|^89Wa-Bjofd6+VvMK@1spe3uP8_dBY! zgm$j}0?TY(RqF+kG=LdxyufF*U!UZ>(}8h?*$y# zY@s}a7_yEb7Wq~q+%=hW-KLTZpiQ-^_$uRpS zLWp63`sCQfgpf|lv}HVSDsnWOXn1Kth}%mMLPN{PV+?6SLWu8|ziE6K)1s#j!^E*Z zX^4{S(S+6cyh*)Cezd_k^u4qbk{_disPe%&mS^fVrf~roByyHpMZU{*M(FljzWf$Y@J6V)p-<>Wt+^c97}R!*d(q+bfsFWC+S~6 zvOJGr>y+2h5U54m>Ct3!h2(1llI3{}*OVani+31{IL9%9(SnhJD-rK_1ri;sJAw^tJ(WR{;&4@z!` zF{+{ZF0W@Fk-p77-YtFIwEj&FI!iLpUy%u}chOrKhu)G1K{$F!LeO0jhMqDxCg%r4 zc0dd*QwtQa`4#fnx~e zue=Y9I(a|laYf5ul0nAt(MZZu22;N2u}Z&l<7Akg^fONUT>!I8=eVKeI>#2%7;T!s zG!jC39N|4fp~fnm*Hf*YHO5-dW;wXeV*425<=Qbs8RAJ^7uR<6olXnmaArn;SI5Q!XXg?JpHq&v!Y9@j*8_s8&Z_!**B{}$=H z{)DVU&!f=$Z>Wr3Ank3F^m8w1x1k~n;zdqoNnfLGRj4NOsP}Z#Fw`$e8+t<~1GTXt zSHtAmV1b|1|8Wcy?L}AKMl`1{LwSrn@`Ef9bM$kh_&SNKmTMZ)-4`%4H}^#o2kK7<4FzKi{HZ^xcF zx8lHpA0lMkUr-sjMDpY(I$f;Dy%e;IJZzUSrL&onw$eXaM7L=sA(SNf4aGpoY1Aif zMB>4Zu;2cEtpD;lte-mtI~PsE3CA1YC2jPC%biF${-%iDVU+HyQjxqp$}FgQM##s;1@rZM#1^LoA9qiqg>9@}+3Sw4;p zoK)u6z%A`PwiitX4b}Ix%|Yn;;c-Ryu$>KoCWF*@fhL3o>qhdTWxdAW7@+28OhCKX z5bbp)TSD6tlsD#jH$s<9gU>S(LY$oE#CU#kH2(D4M{(nft8v$zcOWY>Lxo7A=S*B& z9De%KpDOPh5+@{gNS=_yq1O*RXh@>Wnl(#ZGiS~mR9051b$$*VI;6-L-bW&c_cEj# z*AHS?HhSxP@x>R4Na9*R^aSFu_uhLC4?p~{@;)Ll!%%IU#N?Lg((@=NC`ger4Esi} z9uiN?14%0qLAn zg~UUhjQtJhZ*LZTOKhr^2GO;u(cK{JpuI`q0zydiF`m<4csLFIX81U6JL^PGlVkK^ z=@S{zZ?+LMsl$+Q1GFu8oHhmRIMMe=CJcxE1`qcI#gL^HYc0nVid;ncq6i1gWp(#$i6 z@?D2BhaHg_D>_v8Hk>}-0RQ7l#|R=(*7;; zT0vi8$Ewe<%=UG)rjXmBm$Aa`O>A&`UmZWZWf6{SwZNWr^Wbjv8tlJ*evlA~@ZK;; z2wh%7=$rpcgpm1%{9Rr{=s*5PLddj+&R)>_T+lw!x5bhj-1xo-LnX z_r`az%JnaBw|xqZ7QcbTmyf`4(eJRr`2`%<`Z{c!AZo1AA#+ zj{0IzlKCa9CWJ)M;J#5oxs1#Be*s!?)`kFGigoN+?$hX{0?%u>W&GKq^f=|7%$T$~ zOdLbU={1H({%8`2F>N*IAyiwCp<;Wh2`moCwWWiTOU4N=PJ$6UcOfBUGDc|FTto;7 zw4p+yMMGb&@6r4J2reLmxG(wtrwJk6%knD)#`I+m4JS2mD0OZmgJ_KDNk5|@HneO? zi5x-*@%}+VNa~jpdU}GfOTau13>uE+JjpvT5<<%0G{1`ubAFgtohP;nqfs}seJKM^ z@}#!reQoR+p|3H$ACp3^6l8wYMa5L=kZ38%M|M;&qP>nI;?xl&_mA+jqvPonQD${_9 zaMZ=GL+Dzwhmh5DNUrT4Ytd$gDbPd-YO}V)U}^xGn_O4T5YH zD0kJkV4my~<985-i9g<_Fajbn`->o_Lp@xut-Hxx!f$k+z;F(XuaH0M>xe~ty_{Hw9dd~c7`GoieLq_1~1 zmYpYr8ix=N8xc)200;Y>2KgU zcQ#@yXNr89CUSWKGNe6UiV#Y$zXsthx8StX4-m8eWmKiEmp+yx?M&KGi|9E`1%f=$ zyQD3b#)^KBg5J_lr2DQzir6;Yg?`dLLxJ*ODX%}$J?7!e(nsLsa5F+(rc0ZifK-vC zSyIjm2qAYfA!K(uPCDF=Lf?7lFP8FFd7wXa3(_~e0k8S@Ai&~wMB3ksFxzVpWOEHd z9cCiH{wDa^eGeYiKZJ+W21;@KYZ=1r z>~=IHIHS<-6C@mX7J=&@g~!tSaBA7lu+8!TgzkAC9cPcp`-vBw&J;4ZTiz48+Dv_{ zUi8g#v1rNg#X0{C$UI_=lsz9HYRyy9t{+99%L52>z84{`0_S@WX#YL<+1!RBU(LkP zMYkhl)$dRdW-D^cL+T_F?TtxjZOBEdy!#G*T+>o4eMb6adxq#^!KhE)jjG6H2we3% zPS`z&J@aN^|AHwvW^*+>9j3z5Zi>{+RCq|63)%c@l*BDYFV_cb%@9=i%s>dKHLhgb)A~H$sg^SuL*KQ2-}?B_>xYBBb|};{nV!fLrJtJZ z1WgEa(>us)H(ap3oYu_^gpjf+1iY5_Ty*aRHV5UmK;*cpL*~<*Ctb$j#szIZP@Zd@ ze>g&j_ftk12_bzw!D9sN1>VoJ)%61Xe8N~)>|d%rMc+0OLWGeFB8=tG_v_#K8M=H! z2_brG(5s+LY@PJDNWAgV^T^N3Rip_Cm;3I!PZ1&v0asB`p*(d$Lqio2^PAuNMum=} zCk@Y&M4^`t$(8rte;-`8haupcoSYOvLysM+_k{AMx_ct^&sBm%g%;EDG>Wv}fc#fV%M~)mBTo;KR zLnOA|eDh6JE~f3~=BDySki=rzYuBz-QIZ(WE;BO|PL594wq-l|ditcFw;?ShO?e94 z`{VnR=g@B+`z`MN!955L3_){aGwN#U5gHt(Jc+KGaXp@V;z?Dvr6naea_BIoTy-_Z zj~%DHhJN>(-=bXd>2>NPrcR!OX;)u`58injJss`n>*_#%XB+z3TF}`jbyY30x3*Fd z4&1hjj#^)KPI>&$yJR>*h~!USvx!6iJ3z$0B1lv)l$j!f>f|~>Z@r1cG1&(fLJ>29 z-e$4m#3m*AKthG*6k$PIo_dm!H9U49A*2b5K{ANoZ)vY2JM?w>S&9(iGgX_GbVaTX zD4X&8Z<7saYV$_uzMyRF4w5&tJx!r3orPDF-S_q%5pn1lLONy`QUnR<90nLV6hTtD zJETzCxc=x*tdZeG8?_5KI&4ILu%KQVj6mHG)HM;lwxt}>uEA$-yyV4Ao{q7u4lZZj(aCnfCD&N_Lu!L}9$@Vd_n zdn&jw^!#_@D(z>;LeXA$Gc)_dz$ea=?;m;+3t;bFbagy-Szu=_Au-C1P^6vgFNIG? z?^oK{>zEvmV)x)}DmS}ALSGcu`_*;TqfZ^H_DKUuVP>O;Z(J*^|H|uZozP$WxW_BJ z6j>Qf3jTKqsj%OtMxUFyU+OsA;t15Yp$u&Qe0;p|iU8(>#{Pq3tG3~SSm#?xURArO z)~P|{DD%SuA#!vx*7d59VWLF6}IE7 zGZhbhKMd}2Qh?qh7x)2$@{zsd!qw*8dNVDDGHG*7K*Q&y6|U#=Z#18@4*tH_}+$o8C|eH2$DN!Ik3@)WAL zCN;0zDt+F`XrPD)+t>_l~bs}sF>Wt_=IUd+c8o< z7geSI4g;?!fDLn371e8IAMn3)y^ovjshaHrT)fRwUs-Jl`z!KgEswG~Z7|U#T!V8{ zJpzmiX?>a$eWbFhIGN582sH{ak9F+?NmHyW?}PcJU{1C#;eo6mW|RsLMpY4pjg!n;F^DmBYfuCjrhZ1$_^aA?os9 zI?0gz0t-=q&=PV8T^X;;#X)#K9thcK)^K5idLX90J3(dMMfF(nzV zr)@LyW3fj7sr?DFBgK%rO!@wg%eYjRN1tuBu;O{x>@|0XH`wj5OtVjYQD-tWMQvwH zZyIE{vm?aL-fdi-Z4Ke;seXmu{iC|1!=x+WDyJOzvUdQ zv2YZF)G3;9vTYy!W0)5O+WAF8uDMu{L)f`N)`Vbhz_ap32H7V@S%n+eHyoy;T1i}$ zB{Q4>4Y58XbCpDlwvXQc&R1M8&NAt|#BiWuR%mMcui1^@7e_)QJip`f>D1yc+@6Y+ zI>?3HKDB`L8Eq8iO>^{AQ$9e4W(>W_u3cY5Yiaf*!3f+UqU?Et7q=5z7Z=qdFKl>B zY`aFw9D%b;my-xdiXa^oOt>)~Iz0#p?B(khWd*2^dO#@1>bX~RSY4F7aQk&&sM#2o zVztiaqzS{~aYUQ1%_Yof>Vl4DIfKrTUsK8WP=6PQ;-o7lNj;G)DeqE4oFi}qGOdvr z*zXQxE}r+kl#y^VjJh84!mI~LIAWtpYSgd^R&yA6ha`1A5eC)v~^IT+1#3I=1$R^f4 zG2!jNl1z9>4e}vRmN6*#0dgiUhAox?g|(QhiuNS`^5 zi9Rbtc1~dMn~CHa1lHGkD3DhD2y#*L3oA>Dmbx}3fR;+nHEyk3p3?!UzDDb8?U^l5 zhO#B&h8aLy=Ip8O_RG83OK6BG3)kM!xF(8W z>u+P}4WMTkuAs^bc5Fq_6PNf;Ca&T{+-XrQMk>F`$}K+LTk?T^u5uTJ8*$%5G%-V@ zDHI>1gEsQ~VoSdL?_ROgi2oh_+oJX)c%OQBz4 zIGqSXfA7K+ls05*whP^PJyI0F;}k29fB{*e@TJl|Ms#_ByZrD;qIVvZq6CS|QZd?B zU?3}d+IoAvv)%LYqsT&pST<+AxXkTmkB+)apa}8!S4%}1zn|Sc!+Ai|sTi(r{%NW` zp?$B_eEV1JSCMbPdA(0n_P1ZnH>1fkUoVfWdvmUwFHGzC5oepXekVOWJ*Uh<(PW=0 z5R?XFOnYrjc}iYtwGOG9W@f3JbUHaBiRiS`(vh)zy?;A0GdgAiea+0w*iZ~**Q9iG z(N&fs-`^nX^S6kmk5+XhQ-6ZN@Ep_Ii-QRG&B-7)IyE&SEDRtdB((Be^6Cp7k331( zlGsAPc6KNku1tB>*_j&@3S~nROMT} zF}_=P;nvMb0qQdxr!I`s0bS9Wf>h_fQ*$8sP(l8zxDa&EMkOJy52C2n`1z!reh~Pl zhFV{q4P!}{bMI*vjK|RX26^%0Q8ze(slRG!lTP+*v>3c{MMAsK{NJFRQP6sG8(Te> zH^|`yw@LBv%bCi3CijD>&CHI;wM0i9nQdP1nMwc)Y}@ym`~Szhv^CMCIJaZIN+!zf zaip6H#&r@ym~ABW?F~cjJ1l<=9K30Nsq^QGGfCtQH}c@&zfVntKf6|mb=o$_$vGUR z=TIx|qc}YNB`bb?Pi)hcf4PVX*Zpyo#R1X#*ppLj1Pl>Mgr<{&$rvheHNNaQ{i&yc z+zB$iIs{@!W0-~lD16oIWgK`--7`sz)l4x^c(h{3L+K^=I`0F;$9Ig?7(1i}`}9Dy zW)2~#{23!A>k=rVH)>iW#AFDPfd)~k#wvac|fi5SZcA7j_WmLl`hvh=#869B`zX0MEvb(AK<$Z#R5l(pJ z+(%7pVTIB#Fo&Z{%tt^$P99~KXC}NaJSa@q6^qLF3!9P>%+~qKMEQg;>jwoc1^;Sr z$(|Zo`j6>%iF__9k%SDXuC`1duiv@3W{+1U8Yp6KD6?&hoEe4%9+>5QK*4($!O)+y zU+hXiC%1~SIQe=gSk3_@lCzoQArO&l3*7alYd$FG9Jinrvp2UDl&PI=mvPc`>i8o< zTh~J0J0xUtdf=@8tG|$RYI;3ySUHWvb7qlo=whV~NYBad4QMk2BzL){?cK%n{LFEstUreXb#DoL?b>`4h_kUtU;->K zwjTGnf41UxCUTVhOq)5YNo<}|FJDt;kZwIe8P1u@gRt+bJdq7Yd7K_>7g>Aeo@`z&<@DaF=tp zSgjQ-tg^8r5WN16FxeubdG`Y^?UM#|UyyopGKiG9{-6^1(tGxmB1Q`u^v_B3K64O$ zQk30>WodY|?-)-(=r`nPXzDj*6jg_qb-yEdZ2tIv=kIp%ALhxUAp~T znwLH;@q+0j!iY>sbT5G?zf^h&clyXCL4e8LIqQQ|c|MDEa;ZtvgvG}!uJ}ek^ z31a4!o&;>|feyUM;|%1OWaqpq6ZkaDtO5^&pbh#j5BylL?DI?K7h<{&M#5&QyM8r9 zOEr^fYD*A3HV87Bj1fS?l!@XWNY;IsHIog3ub8!&U^gE>ue(E*kAAV=hJq?~#NWXW zr5$-%&LYeRNQEI;`r?mTrvdCZz32F-m*PrpoDQ>w#g8t8x@A>Uo?LP_3SuIa7mOaA znXBTD@2|M(-|wEtK}CN9^@GU@!y!IBOzrl(Ye@!?AGh|LHug%KO~zD&*3bTf!C89f zu7I+*wopHAuY&UJ#zGCUHiCAa<(?&U1%E*yTQ0!iM-?1{kgDgsqsoxOwyQH)wSu@J5Xc*iP70x zyy!+0ta=`bY%&UZdlF?TP_IVM#)DtVyt54wUVi%lQmN77h`xn}R?Ej4 z3WklE0VM$#xOftOovsuUu!#&g-+xMS8L4KnsE~go-`*IOl%CzfW)I{n}bB zk0qv_o_;J6%pLx?@aXeVLfC)jZ&a^mTS%)aiW!PTU^&~91xD^#G9%Y_dg*(Hr&ZfC zGwui@BJrFL7li*8@e;w9EePz7H+sC8j(~do?WO>cljj4d;{;Y$S7#dCOCTQ}?zSX5 zr>7~nxVUyNN!7%%r#4p4p|)69SS$PcKRPO}udmzZ=5&Men8swVLU$xj`k1Z;jUEEu z7OJv4LgNJVPeb8knfF6{BOkYZr*pJ)b-@#fNd(y0*@Zmzzv2nXFSw3~N4VYGosNtx zEtQFdZF|83BfYZffTw-Un8ENZ1v}?V#wQlW#@VnjG{S^F;C#@CU5zm$EE1(6@IHn&kEm z_X+SVSNwK;KdZ*j!_9CnyyU;`{==vR4|Tt`^|L|;Nz||8V;U3{USqQK9v}W7fDn0= z;~1_Yi(-_0S3Mc|Fo$%gsMzL#qYfTw<<27RWdo(-VGFFrV;U;+3HDuZmak#YE}qva z>>Q=OM)RcD-WUC}z0>)wWhYEke%+Mmoy|fP@&)ZAq^A2-N;G*zSVGNFT4{beRT=!c*2gbub@SaBlXO7I#$;N|?xm(cQnp@(Ez~z^w6`GxB~gxI|B5R} z=dCu)CmxKrV{-(fWfyn}4@nE0oHqmU+=&&kYUl8(C;KX>Nu*Ew^U6ICnG%u=9|L#9 z4G1#!;?IP*&c^xPjp{MG$h$elP!*hSnkh9{tHxiZ2T1-96rN(cdFkG2fo_}N{uZfX z#SVMxMZG3N#MI}?hcP8$;&EdQ6i;H>AHqZWl*5ar6}xckVEQXBkeMG|ZoTi=%ZfZ9 z5UCtiEPYz-dQQt(;ZMG&zpQ1ZUO#P9v)FQ>RO0}g212O1&i`*rpiNu2m3g`?bW-)G z=sbv$SCtf|FVpvD(9+o^^V zL;P#_f?Oxyo=o5V0dmDhOCb?X{(HnUW!;EOc*EhA-{XfL@pFLyb~>wUSXWA7pw>*| z9aDFbgWg{rBF9Z({Imso{LId>2q2zVg^tKHN7t3TRKl_x(#ugQY#L|hR}+Y$SzBb^ zqYL{`Ug16Th8k{6W~zoOhi3??R2)ssMj7>(-*KA?$p-c&LQLM%7a`uR3V0KO(%?BH zWn}jDa6o-I&$|zn-gAspF+fdZCy*DRCYAyKD+FC43@6RV$)SPw)6L~kbV;56(bF_v zkW3SFkJ{qEt*?@0dj5L%OJ;Xg5;7Y^b^T*C6~GR!Q%Saem9nCLO6!frkxJQ?AODcs zRRfVhxkc_@tjdTGmO+`X(Z2(bK*;u!F4>n&3j2Lk?mkxK=-Rh>(1>Q-1;=>P(#bp6 zk=PtIM_HW|H?TNCtg2&5%`_uKd>Mc6A0*n^T0i-IiqS}WfjSG5f_u`*U+tJ82u|d@ z-t*3Nsk3ZzsJ?zRMG>BF*!ukRR^5C{*sHDaKAsjsx-OohUUDB0AF6J|H;%qxAfWn` z0mQ3J53dK)!x{v%In3sxq(WXzKT@$zM@h#{QX+-a$4PUDLFQe)QGPinN;5ZZMd(^5X$i*M_ZFR| zGkKkne24}6y}L1&PoW&gsO7hM>vk6onRj~2Ip6`>B4Z@i3xD3>wQlR3vG z+eBgL!C2kJY8$1@AGO7QWiHrxKgtxzK;ovLw{M^HX`<`cK^XI5Z8XIl$S#^8 z|M}bwKA#H6cDvO;RNWG3(#l$hL~9~l(-w>HVLjc%Wni+G=b4d9HeQk^QBTSU$2Fnn zsm$|a#VEjp#i3lxCFH7J46ppU3S{ahj@d7a5PQ+Ud?GThX*QLE7J504H8|E+OOG;Z zvIQCo(pdgz!*@(JV!FS=awGFb+^}nM2miU@nM^!M(}MnJ=Bs#1*_n|?_T|N{`i~b>bhw zS9X)tztuC`YsCe~0u-7Yt<*>9-IIHQ?av+`osC-+@QNf zM8NzpRQ1CmK|oUqpzd2B<*oAxmmE{Kah^@kU%P5K=wZ_!_Cy2pz8M54)-%>lFLpqK{n5K^K`$f(M|wkK&$ngwIKbzpVP7~&IEG{GmY zo;3x8t{9=T2On_76aV*20I|k=hP>Y#J;4NG&OAKFax1qsS;7oJs8FG%S{Tr_11JuZ!OdS)CgU-{JUy9C{abNPyY}KCU_7+<`bra_h*Y~gTKfB5^zAHV=>&0prsR-=iJkUtz z{v(fiBZ3ln^-m1n`4dH(2ls`ceyvOT{3ls|FOUcA$||WcP|2ySu4cmo+aAXfuyb%| z?(L3_hu9v(?uSQ3y;~B}HgHeG>+V^H#v*c>Z+1%}K7XjSOKA+r5Iy@1mNvDvE^c-b zu%F9ocD1p!)tWoQflzh734AyXl`OiYT#7c7g+_X&8Ojqp@3rLhrJcSoZfs8KrNW8< zFClhge?s~@&r&G3xw&PrcmjsDM30(tn^D^aT~-JK1A~GO&0n5udUg4p%qk^wX=QJb zkdjQ!N%NI|3oh0+3hIw9)3kjiem}uL&i?MLR!K)!O`QiDadtt7MRiSec1bSHV!F7M zy+fjX^0wN6i@_V4{Kr~;!JL{Js$msEOn%Ag=FS%iBTrSg5}fM(iWm#;jfugpMuoNF z`Z7f|xGtL6Z8hzA%iqp@%d}*;8A(X>EsL~&p9*%Oc;JjJ{#UDcwaM)BiRtWmB%m|i zHEL-q(x&LGZ?dTPJuN7hTh(YxcI z^-yY=iSuf;4eB?wU*`nM`NZXWC>2n>^(??sS%_ktb*=k&TE1A5!LIyCcTI&`rsme{ zw8)+;s+4MB{}xUW^Q!L z+-+fn@{Ns3!&wtV!xlepEYhPcY~Sk)S%d`EK^oR1Reqjf_>;;_Y{uif2Ir{?!)iN5I7Uu_l-J zyU8?G6yWHMi`|=!7VXZ*D_(4$A95@GiO0f~*p@^M>s?$vwDS&;>!SNV z{jMo=Os-Q;E>>Mwp-9#J>h@N5Bh%A3RK?t1dvZmGn$vk5<42tLGc81Q!Q378V@f(U zr;R5#YpK$yKx%!N?O!HtMl8tIzawx!Nb2!x#( zmh{ob$$U#{Mop?ZuKg+~*Ba_x7cE_BSbpL!Z=khZ|9XTxOsI-ztaTpvrv~?-_q|f+ zVhA#;<-`YnEs!XykC!}*Q=4@>TB9rK^1-lYLhPD+^@0G-kL9FP$WN?muz6h_{M^=e7q;NHDt$E z?{!;H4|$!%+6Dszxj~=wK_=dKPRcB0zWe9+k~IH!D|IT?yD0Td67yqCWURozJ8x*P zm0M~XlopB{y2juX4&>7A@wHL>>9=yC#s&Y0JbEXChPgx?>C)KQS2BYpG%Z<>+w9PJ z{65CX0%*CWWdI7uTgu&aVVw#$r4;6v8qU8i8d8z*CKI3Z1=6grS3Z)ttaVO$ksH;w z!?AcC7kFFR%TL_t5UGt0lR8-~!9_^dk}z6p;zu%Y*QKeq_A(qmxCiD(;6zJ(r;~XS ztr4&ImD6A2Zzz#3oR-nyjxiJxxH;+A+I<@%uL_JUJd?*z6%?}al~awLtM=Y)%>$VRQh zp+Yg&I4~>DK)M1dKz1pnygD?tI`MxE_-vLGJ%rsmHb_yE%#CzmmVsH#{-=T3+!i+- zx7u*$dCfpBo+y#LmfGn^+Tu64sa-X=i(0|krG34h`%)j`u%y8^il?I=5(1Yht*#HE zQ@@e}3o56|Cr8MA2mSB8-r8_iX-n@;cCUiH!m@xdfqRd zPGXY3+wiCxV!ew4ibSNf96>q`9gy6qUnmE|!|Eu5JqKULTHVsg0(kh16UN!#LPo)_ zdv^e}nYbgt(~yCC`J&5v+WYQ8S%E@DhGEimqmyM8Q;I=u_o-R-5HD@QIZ=-8ST=dR z$S73fFi&msnd4;d4v#UTNB#TJ&wcvd0CrfB{*7hb$ z(M3=4n@u9OVtK}13l#nR_1d`qvaI)fwa2VQ%e2vWXe^Itd~%(xt(JkBS5-xE;GWv1 zqtmxsBYD(otnrI~?G$r}zg!eZ}tG0iiz_N{YC=yA?lxg8|NMQ z<9?YEB=QFM(ZJYL%fS=By6;b4GoCBLirQ2$4!@tJYHkRRS#h6BMby2yn~r?q;7-x; z!x2`wetwdsfN7P33|}a2=*D!+%4+A#z&4UL5gR&c@VJBXxI$5VUSseCR%z!g>5NGJvz$uqiyC=FvFw65YcbnK7bpK_9$^7~i;H%^dblkMt z4u!^Px%&NUrHgUeUZ&LZP2MNQk(O(Do9O_v z$fI8J-?rxzf44~kLbkZ|0FqHR-iVqb#02qCUwd@46zQ27XDs+(hJrt(yWQ`5ELFGCPc$ zZdZ*j4cNC-AdZD##T%u#P91AK$SIvXlgylD$e>VOqpI|eQ%>yp-yv=1c2^De*v0Z& zIk}&Cg+JU7NOJbU+O}Pb5+Bs{n7n`V)qs)z-r7X+nguK@>rkG~Nj*SdurIs*cri0z zi&_R39KCwjl*QnxB>rKJ(42Xb)qOV`8C(0jH5|Am%OLpkl5`v5 z`9%&T*kl@H)k%7PXjJ*?Hoqjj}e#j_R-vUU`oDI3qhvAzs)1Z*C zTK*V{gSx6;?%QdCy< z&J0i7K{Z3HIE=KcP^K~jdvvuk)cNuLa(y$|sHZ*X`QJgK2hICGsjx0nlz2hRaJneP z($W$K=Rz(@LWGjzu(WO|FgiN=M9Ksq;7!c)PG3PG9Fo0F-c=K}*jff8F4C)6`A#O{br(U2626fVw4LnjTd8X9ZH0 z^;U*ul)LQ|)2Jk(l!}ZTRN5S7l4CL{QKzrX#w(`iFFzoFg$B78msC`}7eW9c`;--2AescT8VSMQ62MZ?v#l(Z~zW(JCB8Nu; zAHe|RQ$5M zG4mhF7+cU@8y(29_Se=i9(JZKs{ZpLK)3}rJX?NLCypZ`+|6z0PVP$MssvP&=~rxelmh68tWNRUyhLVx||yCSkXU3tNzlpcWd@~ z8aq7oKN>7*(Hp8DIl!RRXNgPH=W8t-s`2>J)Sslx8=A;bSwkV0QkLLqWBFWrD>|$7 zGMNEMw?K#2+<$nBc_XpDOXald`x|!pMCGX$vV{hPY^iJZN$KqH{uLV8>3u16)qJ{#Mvg@K3c=J zn?qyqs0v#jBz!db>Q|?L0}v`Rajaqi?SY0do9L|ndZ~mCJV{+t#Zk4&J{rDth&fi- zvCH_aEBwH&uyB$tg?S){Uw4D5v?7r5Y0k4D`J%Jsc*>&L z$RvJN=;6&%Skh9^>*;U6RZl__S{BHdGbaWCm^BRdWp`~ICTDY_|I|+XzfC3on=+v> zCLpy8>}&Pd5u`Jjaev2_V=6SNR8;tOcZeVavEHITYUIOxHf0p{;LVd^gV)7o>RAoj zWQV&H74nlmO~eol_-Q2nBr)F0e2+gFIx{5og9W)?22ZU%CG+Y%146)LwvsQ#EQqtS z5-+nykMPgPd~%Fb2rx2;8`jR)1ae{$ScA{9H1eJpXbiU2Q-K9evbB>VD*04;csaqH zq%N>GU8@|}Gpa$;f!1LzP59@n47qJrWH;2BW7A2Yt*TT3b4sIA??c`f$JhS0sm4pq ze@M-vpPTEtDjZv~urY1_lZrL7c)&-np(O#h{{V7x4OD}bNDW-EfxFh4};9qk~YxFhty=>k^qb>ld2p?K>KbPB+SzKWs2%J-tIo6 z_3^Q*so>z~VwjIAG?xvFMwW=$?8{B2rY6Z<6PIC~)!uMXrvX5~5qzS5; z%2l^wKN+;)ul&KvH0B`CTzc5Wvlj}ix+SgNOpE>W(gQIrJiZZhoeoN_l~iu?^3(Qv z(ny10Mrk0-5&-lQfwbnbw)6Yv9$FRVHqYvS`Nur)R0s+&0bY=ZX8{O}n^jx0(AMD-QyC-$VfziFjy z@2TC@jl(|LO`OhwG$r6w;6Wi|z_7>bmIqP8P~3CFkM3pHj4_)oiEZ3q!PeD(ni-7s zZGN@w>=PTF)3fiL%6V@;@OlqcG9M+Rq+FhV&F_85B&14-3tsB24oOlf%-sh`S8bGN^o)y8sl7Fk`P)_Q zAJM;F{ts-fK$>sk$fadav}NF~H$MJ%>kKa)!6YL8muxWxQ={|79lH%#o!VaQJogR@ z48;2Jp-Rr+v7a@ws3tTmE$y|}iP=zwxL&Xw6G#RV)?42L?EK~2lF@d5;OKeW{(N<3 zr+5ks0e8Of=!u~#X%6&^F;s*)Uvb7EhKQ$WOfnEJ-n@CkZW5XYl$jYD3^N0Xhak>= z7&N_Ll8aKOm&^3KNNG%hQid}gj&~yBWt5ZKge!*5sCTJBBxDhm84sjAQPh!WCa7a> zZ;Dt5i(zmHt6FyM~Ia?I3+wnKkF0FUcvrp+5M|{oWgOJg7V!2N?LUVG=Q%1iD0mbnxMX-Gbj@a5+knf*g7Ujn>qL_zPDw1JHTDBbS|^6 zD^4LHzpxtMiz{|1x^^bBAKd zkpswl%JQF(UVzzsi5Kh)L%NgIK0a){9oJ$Udcf3P%xlK4f%!u)=h*ki%@@i;9u)a)_|YgKgTJDd7>*?_w!y3fg7}?!!H=;U`zPE@e3yBK`E}07HNTD<^xtUXW0iiOq>3`nj%$*PG?k zep_p9W5J5{f9N8U43%x#T}>abV>*5`>_2N z?V(7ahQjcyfDqs=x|w7Vi{t3sjF)8MZF3hwBh?qQ>IXy1d@#Aw+AJ)wd~Kf?Gx3cp zh{&{PSE_~eRCM|va{56D30#if@iR~cctI{_?vy+M(NamniHJI?aI^Wbu&Qri>fQrF zi(#ay%Q6FhwV81#s*?|1bpDdx6(AU%1jTK#RlkqS){N)sQDo6A;q3+@DEj=(U(9{4 zd^A38&AzPF-U?ge3Q@B!qr_|2wjPjkJoP%O*$9)4XWmpn*HQ%@Mwk{wIm7xwSXcI3 zC}8Q1(s|geS}!VBh!Ip=c4RbmqW25*eNy!5IVlvi9x09>A zmBx7(?eF$L-Wnjd(h^&>eD(L2-t*mv;BvX*FJ+^4XK#U<7vdA%ZK#JeQ;1_+_t)R#2DQLNx^64Sm(qIj!Xk~fWb6}|_g`Lw z#P0n7bv6@;9~9`E5-{cTXj&U3Fo`EDCR%Fs)fuAOdj5Vf-uU_{B$`GMz#c|`;r;58 zYNjr4{bWw@cR5quMn#|6fQdMlm9SWv*q^H(k`u23*Q@@wzBeT4K=C15e?!Ndw(zWe zxI#(>B`m@~QQZml0%!NVDUOQw<6y8zyQEL##cv$`S99b2&f!KGQ@9&~@DQSjo=5`m z&r#ysjD3GttVJnEVEsf`Bru2`rHv~acp^POeSqqvz4n}zeQRC{_qtMQ-!7Ct**mAk zO48+yVm0d^XhzbK1!8Xj={@((Yfy&8-6tYy$f@ilsl6~sr}lDSqdAwD>UFoh;;_nQ zP$9))^!T9~WLb^ia*YwKCyY_$f(Erx@!}}ZtRrRB?mt|ov)jLV5xnYfY}ozU>MfL~=!eLPQP-pM4kTTM+Z zE+s`eX^7Fn!lKr^wtML3gHQTpjPE^!b!W)!p>5~NZ~5lX?~*>m@8e?2Na}N-i5I2D zUMmW}e{gh+@}&z4jkq|wls3Vxk|5*oqgR@X4}g_oNGh<`pzpZ(X-a`Y#D4=7QExXG zYV1$Qr1|mtmp(B~oO9*b-9NG6eP48zU84EtnK|!cod0{)lfu;>ed&-hZDh_qlCML& zEgG=Z8@qGH70*%@D(yOH1L@T&I>7`}Z@H2sWLCImr8bCv0md`OA2 zDWC!i(1js}UA-Lp>gZ{zX$zF6@?y{{#*I6wTWZO~_j|rni?)*9zM9T;ip>YSayAHR z$|P!12dtjrUfe_h8X?tfV!&1AD&=YZxZI=7KB-e@3N`&OZ$a&ZVaH|_^VMEfVJbHs1;y@H=V)j@1f%OYzT zmtf2P#>D$6NO&e#ASqpZu8132Q4fOuO*deq)*7Utu~<)^{=JxYT(6lnl(Dn>0g3kH z8lz~tlHE+ko}h7T&K~M;&P_HW8*i`2!ovFLuqfht`fVAmqw|%QxYv>(8HrH~xOpo} z%hRG)=b&|1bPexdheENPot+05$|sPJaM`%X$KskUK2%Pwsk+}ETEz&(zYA3(rW;`z zlzcWnAbuI%CskJup8~Ru7ajeGm+yNnkMA8H|C7A`J91o8?rVUCT`u^c?jCVlucIAT z=9h19{Lcq7*Lx*zz&+7)xysA;Clr#QCF>;6F8F%k<6l3|Z~ErLI-$P{yxnT~0lQMX zMO9BczxMuw9GhToIi37a41sks&AZDhG7-;w9MW~T1Fw3i)jAaS2!9l6_g%(aL;li$%^ z_$2<*i(EHfGQo^FON@+fd;Ff2fpUA%3v}6(#R=qCa8rCwK>i&*}oq61izMpq0x)o{inZw_VrKusEZ2E#S~qcoH33y35(SIm-J@vBe>l!YIh5D zyI(l)be+&xnL&`RRdL7IqQgv^GuWflpLkxoneeex30SyLrqP>$edQhI!;MYLAE{?a zJ68cm%YZ|hSL@7q#3&x75aflUuG>>E*-D-Alyw~-8+Cgx2!z$~BOfX< z&k4YI^xUCs>nraWpuvao4r}0z!Yg({FbRw$G_zj|yY-aY>FyT{{>&4gEL6X)LOXXY zfkoWNG_(9RB`Q*+z3R&pM8YZBMAIuN_UI3>)5mciq3Q#fw3$6-TQ5hm7v z=iIJ`rfie}Nw+_|1bKVDig>FU89RcO&e9YS78E?o8y1n$DW7H~t#iVEwE5^G7&zkg zjTM~t(e}~TG3}Tpn{`GoXvvM&zrFj>rV4?xwub~hx2EcP=ACOTbWBI#wM+Z-W*u7* zQz*C_DzKlT_9uGBLYG;>5cfb{hC5c`RY)IWPyXY)z`+BbB>Tx_tgZ?8g{OUi-fIkH9FDac9ZV!U)LzyC^EkX9H(zS@f+j_4Dk ztrG2%UvAb`FofTAZ{_4B$IjU3K_tsYBQCmTQRNP6JMJbf+~^H^AAAIXZS6}93tMq* z%$*e~IWXVbKpT<$9e6z78q`QkE(pus7=4R~BzPC^Z$rT2Yv9kJY%ZZXkT~+;1#&KH zQ|p(vW8$TlJi1f-)Ss7P`@bIdz6*n!m*eB1wd)#2)l|;&0l^=S zMj)6yf9O|Brs!|_^rn-^oy`0cmanO_p(Ae>d%-=1GDQzbA)~C){odA&`rD&qSo4cg zC1>|jHUzclq{kew&z{ZYt5A=D-Q}wLTR200$=sQL;h(wE$ol)EFCH(efFvk+!@EII zJ>*NIFlAo&kHPE+pyI-rk}QCEVZv-78mXRltqL#qqPApOl0FiaB+w6+Tkhs3FnmRl zkn`x0p&vi0(M(M4&kgRrW79OSV4An*aMAB&(!SC7;>CaRDi>`^73?-LhB%>(^gM;b z8&#!Oa{3V`{(zeH^6bYujeez&jXKJw>EzpcMR2v-4{q*Z1c#v6xliPabQBYh531#zl2%4Zh#avb*fR1S0nNsrbZ_%H|}_*^ywX2wwf?LZR07EY5|uWr=% zw#P{sG@AvEJO-N>Zt(Y#<%YyA-Hp>YB;4BkSQD~(zKF9g*cU}(dqLyr9W{acSA;BI zgbWE6BlTdnA1$k? z8otdoA9Ux}CLJ{|9s%UI3hNho2~KdJ4ux+yhv|qtYri4L=CA?e<3)@b4f5qF<`Hg$ zHHXRnKLB4qpuc0aAI_(m5xn+$IO+T-!kz9yhR5wFv`j;eN!pa#2o$=DjCLQT+A+;* z5k>A3r47zSktMeyT-tkv&n%>SOhCG%slXy*hG`VaY=jU$CP)?}%KIeqB&1q+Zrdc~KErdI z^o%2^JJAH*1mwtlnpwu2m9r7I;vR%8{{m8dUq(a8L1|k#BG08Cv`IbE47b$l z&{%p?441e6_o3VEP`_xek@jCAb(xC3>JunB@eWRVK8@2ZcO%wwj+8GocSayzP-M0e zLOJSeCo3V8AeVF{&{2_{39Age)V?bpi{=ku8wRe+Y~fa?m>qCYdGcl zBu;;DCz9Oml{PmI`KBqz7a5snV*4J25*ag#NDz6=M!NSs2yhU&x$@s}HN{)z7tt~< zm!ZABRGIwjX_kH?vYH>F3|2?tQsh#^to#pzNZU^Hc|gLDwtWL3WH1{iZ6aUhADQm6 zk!XGp>6?Cxwyd=x^P@3XpNW=>Dbk-a(R(!t7gN_DY4`Iu>hcHzoaQ0HYaWt4XG>d~ ziad*q>6USd5aRhtESns8mf0tr<{;5!9^$;8M#ZTQ(SPO?AmhlutkiRTVmJ+<8wef3P7c$JF${wL`TQeflK34O8+g_Cw!9lI*Y_Lxoulhg71+Fg%zGFBHkNILe zM*l;8_uP%~NjOBw1WtT~(MQf_UZ-2_gpv z2W2Ae$tRywCh2&756K>C2vLJ4Dk@5aOG1a?FnogM=AL@$DP{g`^5n@%gNR`>O?TdT zr#k*<7lXBL`zevy7DZc=7wf;v~?gcJ`wlMzYkyi_pjo@ zx$~&wxkXs)k8TT?w+>aHnMaYS!h6Z+d5 zWr<-mKi1B*v&`?&-GafMcD1G(VB7N#5jWm_kCUc$C=s*M>-i3?hxk`hH{!=4P!+-laT&c`Qo6LRAm1Lpma-|}9 z&g7*c?C5^1_E>@dzg=)!_!hRW@y1TUmgOGUw#rkzJGy(5>MPW2iVHf5L-M~x!+&;A4K+A@6srTdqi>LwmMj^9nEc?c56A z9h^+Ld*gR<_f#-*|n9NfMc7Nb^w$tWkY0DKY?CC0!|!_gx!TNWIla zyRRs!42K~?$es)`5JJ5*A`94N#JzD(!MguTxgn7G)nJ>* z%no_qCT?Y%>}fcI?)tMb?~-uZFX8f;bi{`2#%X`C@7o6Vj zfg?Mdu+sGVDp2684}lR|yAdKpTa)T0Vd>X>!S zwxG&Y%EZ3?@C&KF<}2uF5s(z(S3ovWh+pfGv@sGv+HBm%5ki{0=QDmCqzEB#Z%+tm z^hg-|(x~=KF^W@SksNvwae+sX854rD`RQnu#W=%K<*3TC##Z0f#rM#nnu~F!LlHUL zShwN7g%HZOX$U!dJR#&Z9(isPk?uYXaUORf#PeYs_xwCEkNyeu#hcJq7c2|yZ1i_n z$)KKA={xOGejW9)kZQ7;Uf|bujdiv~7VUEX185ZgjZMQt-gnS$cf&QbOB-sH`fZi+ zAA+=(wz>*g%;iZLB%r=%8)A1ngFx@kBhu?3BwFSo-E%6k%;S*f!Hp-9L1R!MWpJGk z8jqM^&Je;aLg)q(JIec zN~N3);JGdKXySPq1;DjJ;1VI>Ud{(DQadO{?oXpBYYh@N{|w=#M-(BH#oaT%4yWqmXNYmT z8yOyRkT3GY{tO|bhLDvIdJq}ApSKZ0Jl7{r0E`&{Wq3DQqOaVcjd681fVlkSfq z+VlW2Ec21)Jrg;mG01e0uw6$ejYgXFEO5O|X$uv(k3+s`I+9)PLgvVI_pB<;s4Vh2C=qktuEd@RGR*cb$s#r8K=c0jZKEn&P5{ zP?=>sicHil9W63+EK)?q@(de-+CP~hZ)r*|*CMjlG7)(m6OrjS3fUriNeE?nO+x1C zxiU80jqsJ9N6yjL(RTKzq$d~XIx8|(>b+6sJ5ryYLLa0pSbE(MXLXoLi?lX{Rx*JKWzk&Khv&i=# zi6>QLfTUS~=1lZo3C6i_C&aG)E{-p_6N!@7RL|Ry;W-WY(x!NR5I_FNmGHCON64IK zED{%wLY{e+^xfG=cbh443BIc+Sz&Pd}~5A8HT%@P|Ldz4zX$uGC)A>1P_LVU(Dds5FJ%d+$A! z&J`jG?;k45y>dNqlOYq&i(n%f5zIiYt`98)C8i*xG|&0 z;;}~_$C_1Z(bUkaz_Wx7`5ng5!^hOwL52B6c>B$F@aikC!q4|0PMnQnup z|NW6187kui*M1~yuF5>@vZS#@X%3MXa$E2&HZJo*Ozx>eNSq1FcOc zOiRLnZ5t7CoMh5+ROF{2{FJ{Ug>s}`_HA8*^JTe;5K^Y&1d0@sK1yvq>sdnFQ@Xw< zFdS}12=x;3jGCnVbs`hQ9rq157ttToYC`C`hLBuoTDw)`kIZX$R%&N$mAW60XRX&t zP>>#kz(Z@5mQYOK2E?3RgXoiM5OHiRqE2i;x}Ib;(ekFCI|eI^9^SrF`R88RDpVy~MbiulfV(?YB@zlv4vFJq0ztBMS=Cxl$y z`_(N%=u`Y|5kmjtzd`hMwIU}mT!h^_IJ##glEXy^#vDLq++O&&{sG>u&tlU`Y2cRU zvE2O`>{$C6;zE276XYpZZ$z9hOQ%>Y9m@*|L91|bpA!On-H;NtPCA)4{I-68-D}@e zCgV=*a}XivfI~YMiV$9mAb&F=PplL{zd}0La>SgHj(Tb%a^wBbd@(~hI={-31--Hh z$;r(%^a;38)Tac(E!@JtK5n)M($EwAo4Gemv^4>wC+vjUz>x_EC+p1@E7VnM2`Lgm z{3&9mP6lV0oN%$BH>0S5qOV+B=;z%siRBS81_2!jcnCbtY22Ae_ z3p8%r$)t2Z(yuqkXkJY(%zD(q)Vgs-(nl}SG!(%gS4{{h|B`3=)r&m6&{La#5{_Ds z4dtC1L?0!DjQJ;+Z@>MKG?6Lg+*zPNzogo*Vd=w%tI`mp-f3q4&o z3}2^9x0#_$NV)d5$byfD*|%6VhS+x0;g}M?kq{yoWF&;TByQRi)^?w%y)$6jRHCfz zl{9KHNQa^Q8VMmz7C8arJtyzy3Nw|qP-4glg@R9wRCW?%EsLZeT z0sB6p)5b7VdTswTF=V~UdzKBqE^cG_*i6PX6rigj2xZg|TKW~ln&u(HGzEF?V^GM= zMpsP;jYGcs1Z28TMWX2rM4BJODbLR#_voL{Sh!v$zNaPanHcOULw`pl`a7#J*e&(j zBNN}AdJJ?4I%TrnT@R@Y4E8o-u!mpQ{iA4=FxnLQWxVh0Y(`gm13F}4-7fXrCX?#6 z7MaxB(B2{o@n-4c&6Uy)@+HsI5Za2^oxeli(k~&>`w_%j?nIjBG-R14AkRcXXw(fF zLbuKk`g9-}r23l;eVV{*mj2#!7X6I{B12OJi5O^zmuHDmen}!jG*WIv3(HrYi#s$3 z>JtQVtxLX+T6te5Zi&mW0txrLxFOET|8t?h#glUNMN_&Lk~aSc5vB(a?><|dA(Zbi z4h5z$$d@|K^_YZA(?n#rk4L)aWF%8V$ny@wtoWnE7oniU^=o_ zK7_h}-=V)`4F=C0k~{=r@M@^U5s7|@r>`~+{gVH|R-TE)Gr6cul7xYpILUuJa82@h zRd6u@1Cr-K8wRRl1aWeog#L4B=sTN(o-_IAsVYKmbr}XOR7(2KV2~#ELuD`a6#tjNs*;!)fQai1WAuIX<_eVChr|e=M?Tn$7h# z6uI1nGRiFpUuivfOhC427NQ*IA;|f&h~NAQuB7b2K&_;?v0VBT38CxdV-I6FS;6t1 z9}-A8aScP_wliDuehP&Ff59p9LkRPjg_Nb!ks^6cmUI;^9WUt^gdfd zMM$K2NI6J(@cfx9=?gqxi-cLOr}P==gBi~9&PCkI7?kZZ1sSXEM7YT4kfonPao}6% zlm3SGeDt@LD?+HR>AXstwLUoqu#R{3(Di*|-u?$cS@?1Ih##G9Zk$`wjdq#Kk^F7S z!NA2pRE9bs*z21(x%eK$ndczcWHsZKYr0L!UdC`KSCT_4>kKLX3>o8cmd!?r_dEo< z-XrqxXQ)lzEOI1M#^(!YZK+0Yhsf%d0u0u~;#$%gq^|!3LKi=RB&P?F=XMuLTqX-R zPFl(INy`HOtuhh;PsM>2?@+%S?V zYMw2!MXwR;2@wq~hd4*oYaD$~=(W*s{)U5=Y04k33`3x08|U{l_oks`u$I3%tw!)! zzby>9x1Wz|8Eo(0KF#`r5u&R}=4f_jd+N0u#|ORE)A`ph=3VEDY0zoX>EharV};7U zEex&^2;S?m*5i}D*X2JnMj6t?tN!Rvn~bAdoi3F}iAz6IaR^8V@j&~=YiH3|TaD_< zJpAG(-@)A3Q*rsZ%H8(MKOv=GaIId3bmzf`{kzP{W5r z&Ue52UEFooU5Yq)^UXK0Z=bYL`H{3CspIeOuLzdE|NZY+wrm*=9z2LWd-f=8q2K-P zcX;l(=hVBGUw&DULnMtDKF<`Qi8`KT#IR|~j%NpvjG`Gjz9&gTkfhnPX_F#*NL(#g zus{)3)M6r`MFOg#qC(~EgAYDXXBkl|$tOr0WWoiZ6uJn|6! z`ueNbxn(2T8|xG)#E;Fon(CBxP?yX@dik+kXOo)WH_F_pFe4f9VS(z*pxW~l2tRQI zQKye8lW6&=G0IfVkDb1maCE3c%8#Q?(JQ|7C(-s`NB{v_|Zo39`%K1}%=ka+}2(WrpK z*t*&aY2q(0B?ghFkKpv7eX9J5vyu^f>>$$P!qId^`dy=}A!V&cGA=JAR+;0A3Ook? z-CGbDa1`NEeyK5GD9KI7`SK#1FD(|?(ukboSnS=r7IDERv2nRYX%!vVz5(TVX-Eh^ z1;1SzuwkVK^3q~aRhXd&Agv|TOqoboz5XXU!g7ar_TSrg^ zQwCY*C~6OdAKGwTPPrlSP-zKqJt=cEO$fDLlR0Qzwd9E(w4TNJ;v~cb?!sxml?Xk$ z3Nfd-KfMYOM^_@^*eYosKFVBNkiWOozbpK=Ey00}3vqO(v(gMo4c&~e!#+w2DD3c3 z1p0a^%^+IAA~{48awLd$ta=lheg1-N%m0o|K5xLZ;I~7BPNccAtQMgq6Kp?sMF@o)^1!j(4vG*;4PUPaq5T`*QRfE*9(2R0 z{mwYJ?L)x=5vcBnI8NJ*J|aZT%9dkZ!a-aqkCDkhp>*;p&@{?`EMNu{AtVzS5e&l- zLPG-L7H;8R492$2iL(7hk#X{`+}pn9Qk&#AnZ)Y}x+a3uA&M6(6nL+-g!F=CfCPlV zxVX`a8V$Xu;5}7+Y5TRGi*lyR1}=6!4I!k%)c-X>q}}K%-PkX*_?*NQ7nnB?LNYnx zLT5NKM-w?lLP#%AH36eH{d5@gGh7&a*US7%zVt#*Ry9%|b&!>u6(oghWuWt~VJrs{ zJU66+c_E|>Z`=U1rj726Wuh0ax@`E4aWGv&?S=JWgVt8)mkBA`l(zZ%Um}F$KPQEB z$FIF~81`C1dZMVo=d=?|^8wTj%8m=W;d~)#5p{|`9+Ew1BidNbdQq*)SD@QJ^JC4g zjqI_dRi)RKRwE%qGKjXGH6hg3%1uElA=F(NjMC$a5v>RzZfF__p%Ex`8-*g8h@tj` z`(z}V<{--Begt?tiGriAq9JDmdM_N7`b)-Odp`Qwi_qI%f`QH|p!*yKyCh%jvdC_g zHr67LF|dng$b4!@eYHv%w#Z~%f%liuDdT8+qts*5MFFo;4-!5%o`{Z?vuJCqL~DIH z+Up9WUenQEAA|aWt%%?KJc5^f8BsouBHnTrQq9wmWhOx|<|c&Dtuur^3Dn5zm-f{| zO#*ec%@tYDoE6!5##&Ad8E8Ehi2AYvs4v=yMk&MQvR!DY5LE3(>)HKitM*0PSzolD zIe_-6eQ2xPgVyq0Xe--^c5&NTu@_wx`_NN$5WQ#p(I*(FJ_4LOioS}27_9V1Pq80* zi~R)$(3!Ul-T9l)leY@>u?vy1;X8=%xDWB}vykFG0oms9$oJ&gQR9(gnT&MvB&2x= zEYpzWJrfb0a}dAwNt_RT0ljB@fQy?kczzFX<%A#rxO57*d<6YPD^Y#mN67Y^hb(vL zKcupGM9)U!cF-S2@L*dH%aAE(q(VOOgfuglQ z`3|6RH~P!>pjYzRU9lfsRlevDw3O{tXeCPapsQ5MqTCm~rM~Da+>7=+c~-a|y(LmU zr3cYn;)kx1LxQ8|EIy5nqENIKN1&rL7Tx8^=sS~%{_0!|Tr9>wO(h2EWML=riqK?` z2FC;~ca=OB*{jC|Eraz&*wFZ_<+lOG%{BF3KzAG~ba<3^YD^G$#_`Tb2&r^Q`1GTp z)1%U4ON(xoyx0Hr0^A5bx6VbxKNszk;a95Ad9ehoQZ^lzvSlpH#9(8Z^!Y@nb5Uv| zrT%F~>LB`yy>Kb;_efpwIFj7vAj@Mq3M^Jai07;DJRO>*qRFmwkt<0qV-dAvGD2J* zK-#X~qO)?pkgP`G>oa(RxBO%o%}L`@7$ z3XMjFr~J2!l0G*Axn3iY=QUOlLRtLiK>7s$2H3#E-l zKpL`)lT{*L&#BE5ZloyEYDmU@6vlS&KMs5HXBd36PIS7h=T30^rU}h~rXm?@)6gaT zK5gGCIOXyMgiBjWl6FVZhwZIc%DjYHT2lTzKPcUOq{uZXSFg#)S$aF-JmwPVUV$2UBb^9-s?4pJcO}2KooR@palZ?&%^#zK=?>%z_nFn9R zY13zry!>HgdEYMWW->}WC!k!Ni#0}#!$hgHbCOUw(neC;XCu!0DU=<08U3Z(F>obP z%CH<=&DH3oret$I`m0XjVz48USAG{kAI_6Lal0afc!m(mgv42z^q))t&EJtoB^i|~ zvO8P)P_AhbGG)w9@_Y#C8@`9;bT16bIKvMQdM~7-`(h#bW$ve}4b)y18DX7^YeGoR zv-P~$I(NR_4hbzQwJhWshU*ngHt?BV7wL9Ee_GD!HISCAN}h`3pRg(b0RQw!L_t(M z)bdrWr^KC>jg*s=mz+bl$y(`VgpiiOM(`QKGKN8a#xX(5Z{}6|Gp1XmopW+&%Zdr&$GuvpEQ)y$`^3Wmo-3^j%hRN`3@>=&3T@E@;YMf!23G_O_I5ymDT+n5y!ZN^E zzPd~`n8uGIgml=13P(V#gJ$v9AY)72)hZO_CF46^{}LvQ9)-EL&%j;t?!=eA^d)89 zEjv3Kx8FV+58_)Rp{`bGH+>wkSAwuVIyG33jgWL3Kd}f)DLg+D1E8dn?VKBfB?(rqX+)Z;{a1 zvwoS<656%aM`;Qj+`2{)LNp&2A9NHYBtvqN)!d7kJjtOaBpoXx&7rbBJ)wxB+Os9< z{G$DvRw}}Xdn!DC*GlTr6y7;x#fB)YBbtIcx_>KDqXLvhQf^`dGU7uKba=0dk6J~g z*-7x-z77_r53qizI}YvMjMGv++tw~q=P%JD-0n@QkscQzYSTaZ1W|-BJ(bmj9Q!J7L%6wetJ`B2FGhMP4@I!vb*pz)p$#fRyJ76+YdPK-#}; zJ+`k~D)FqufgS6W))3eH_F6*5wLW27+Yb>!GH2|mkvZegM**BKbM7o_-WqYQ&JPkf zQ%_k%86p{_a)xk;xGcw~)~+cHF+ zTBl6Lkq`>@_ra+Ho(MQ-LC9g=dq|xxk~;kW$96j-E`Ws4CWIdHR+>N&N0%eW&w@kS z9TX9i7`z_QCs*R&mW9~p{W^B7ej9t%zK2ade}%`wXW{ z2%(Sv-6Dkk$A2V*T9FwSA_DUR=?H6)6t-8e3yI;|u+;4jSmXUi5eOgR$X*BdZT|o} z*S>)RTi!IU_b;DGqFY2S<0Y^LQfg zpb5TPKg6zeZ{hGx2L$?g;U_nCgW>gmj$|NUSCh@X>>No?mSIZ)X3m9q%Sp|dM zz`MSYXB76-h5zj^wq@glTTifg9a_Z5d+le45K;?%tKXpwCvi`|dLgCNl(lw{ zabcwwENWrKbVxXQA)yyF8hUZTd+Q>}x}Y;o^mSecwOBIb>4rrF!(tqAKeRXzcf%1u zT%@%~+Ii)FKG%MzJu^h2*cO{=^U6Tv*b_noH_;TyV#@>btrmT@G^ji?eJm%!wm?*x zQSzRqf%HO8)rZuBt`h}LYIGThJEqkLhM~fdcY2|y$REl#-ZM-6MP*01DmPVW45dc}sjskTQh;XUbX;m8Dq%7lrIpoQrxpilBF;Rq z>^mD2DaY{b)2j)getE}+Uq*d~1?`o4&|4cO`AtS|W11jC z>RwQnCHHygX)KUQZJ|uM3uRGNBLB+- zWhSycC)o%ggUL7xH}-932zkyz$nr;#>UaGNA(|@Vxqy8wQZF_V$R546^8Z&Rgp_tr zi!6FNYS1CqZn^e$T$TEgI-)tZ=6tlB4?}6(8l)e6A1V9)gw(w+Aa&pGk+%Oiq#cl} z?~6!3_zE)pUPYGQE66_h60&_?K#t$ibaa|1DgNehGDnZ=yEteKaIFp()vfhD3KkB@phB=mTw$3bH__TlNUh6|5wG;|ooF!@}&C#+)t#{|k>Zsbq{ z)2f9jD{TduHSDRsAmbj#JgaHhp34d(Mm%o+L0PU_abe_ zuNBFOmN=2+sTgdE7P%6Dy4;nBrZ$_;Q;0UrL!$c(WO`1O_BBCi8u2iEYTguxd@iGw zh9?OjX~Ujlk>olNQBJcY{0ES}?YF4U+<^g_IBcqrau7L50>aRD^|*U|+_?UZpzN}K zcp!DrcwWY^Dj9QVE-wo8`D>82_m>FudJwVRvt;}jjTBEAH&#tnS{T$&$&-BNQfr0g zxuh)Ac{a+7nUxUA6Zgzdp66tBu2(k48R;W58An1WZP{FeNErlsKaF$It}+iwka{bT z`aGiuA)Za9zO1E;Wjm3pf*Sio2HXB$9~*DX-#;A&(ubf4O$~j3v@#VVZgn}UdtMuP zZ#9Kyop)W3Yavh)+8fVqDwQ@uEt_KVctu2}N!h1J z+spKxB64mHVnhbUEd3(R1ue2_7&cd-onIs?`7QmHX5DIY&{=o{rF-8%tn(KT@9+Tf zT;`$Db+RIa3T1pOF^y4k1e%P?r#ab$5})@xBv>9q*0x`uBY(T3S<>4fbJ#Yir%vgI ztrsOeSra#8DlMm+6Yn5!*;kOT{9&Yf-7fuSB1%OjYYm}tnSYQFqS-hrAv9j{G83_u z$3?zBi?*ya=sU-Q)JtXj5g8)$0kjk=4X5^;tti_63KG1&h=@hfmZXe$UXUh)(w%QZ zmdkA@k}^{LRpfS-N%9~voWxX?=X7b$wNSLxjarUThH+lYbqm)o1lKZpo@6@+B zWbQ}Jne&PeQlyZCqr+u-_+>uB)8VLfpj>sBx*T;`7}KP~P~pgXW4h>HrN;(_!{-`& zrpt_eb@(@ngYIPZ=V*cHCDbj=l z2{mJ=T{C*jXng*QpTqVY+i>{sVMW%EnECL-53ymx21S(6wA;JyzN@r@cI?=pNTS`l zcPk=@8ayO|Xl{)fHQ)NyxA4|mZz+G&9%5J|W=J6E^MOe8P#b9P-o1(pqA56ccXy>} zMB;~3tpmx4$++k4`FQHdC$VwEI&9yz1+Femm^^6$?wU6bZ~WzT zy!ywN;kaZG_V3<-_~;1KT$c4$a|7Dyuc4KifU=(ICOO~IfPvOVS-aFKt)cphXOWW< zhoIvJks2MU&Ja4`y9>wmZ9~|Jg9tdd3z@RMMedL!TJE|CdpE3r@0K-+ z)S>yd)QAAN_d(lL5~R{*Wz9Iy-iShp!{YG1a_hf+y;{eTY&yJiqxztbgbU5P@tmwq z={NaFk?KFSdRDqGRvJDh_isa5WB`H>?NL{@UAAG$f!u^}9NMv75l2xc{S*Nd=(h{W zVW*U)5X0bkLL`bv_7tQ<<6>!!G6zRZB$|w)NxF)hWJ%*{Wg?F8(=YvzpgLEWq5ku1 zArenKKk3-sZAgy|$H84&ad7um?Af{=J2$Su_H`=}6?hVb8L5a34#fVgo3PB}jP=Vb z*tc~9c5YaWUE*%za&N3(>W!#?Q%H@9K>hi%$WKiWcV=u~yBsS$T#ytVh>HAl1RwKN zWKw=wJj!y@5FK{SKxD&)~r3#flK3h7h%e zf)1@fzl`sL1MRm6p_}}ygploz{B99K|MZ`g5Tb_AYL5>^@U1~&=w75m>`{aeO~$S9 zegy}%e}H5A9dUGz19q+ZJN9gN3n52Lh!0+lgplQm^f|coT@hgJBIwpCf++Zq8zN6w z5GwBWtos`d$s#)Ru$Ssc2e&T7=4F4uzD@5-obDn(Er>Y23b}~~P;)jGeXX)^Qug1^ z$%0Q7FZ?>H`5gM1^cN|dG+1F>uvjN6_RzxO7H;8xD~xTK0~{yOMp8#l-1(e+gKp^F zNI>wvo@nbqQ%};lz%eeS_+N*shy#Wze)Iy3!~;nOBl%+wO(H1*Mf~ZwHJAn?jCo?b zI&C@~j8CV7_Y9w48VF5%XhMi-xPeR&Iia83y0e-OUIgBN=pEuCvUz5!oQ%nLgK)o2CmDIFpw)q%oA6 z5TQ%~@VO3;=0%mi4gm?Eu0~lP)Ts$<2Pc{mhtew27@BO>DGbOxHII~rP)99#J8ICQ z38BV9bX9(o5XyHSr--0Z7pvL08weqf*+}%9k7%#QQGN0ybmdwwP)&`QV5!G=L4qI& zXigEN3ep9cf-HHSBgm8c{EtTqA?_6NB_9Hw0YoUXO}PRIiyvIje3M|XE>nNE=%bN3@+ z*WYl&@ypAHylP$8gg9F`V%DjNmDp^7t$QO-~`n{c*t~2=*WzLWucc z1baS=Ai*i~g9woSfgX<{NDyp#6d{E836bzZ+@6s8ClTsKJc=;4hY{|6A0nlF$C+=J zI-iBCrPGk)cMsXkMX>OB<+9+ME`J`wRgvyrjsVdQN80@5~o z5%DWOkCb&^LCV^1AYsMV5b5=0iQ^F@xz9niiDn1KA>U)X^r0~*;5i%SacZ-%#CxJ5 zhIpPzmeUAiF1Zca&NQnv3B}&GBhB&v;ys^4toaGVm>(BBfoRVs5G9DPJZXj3QwS4; z2ts+ad`2PIfFMDj*JltQIPLue0)3u9(6T2LPJ2I&V`h2o^L3o?{t*tk{siIc|As4x z2hn#?`ds5h>2Fe}B3mefjWS%1X?l#N+|}bW+khV5HB`G$a@V?vINW&1uylAjOf9c( zXkWHxdW@wX9S+9=eXqkZri*<}Exbtv(fo>$5bCNC`AAK+YBZiJRb%KNze>Mcj@sNP z6a;NXQP46}gjrA$C>&Q9u2W0O3xwMOKAaliMkY%|C>F!gIO*4U>Q&4P~ zDs??s5rVnyBW>rDj2hAqigBERQ0Mtb-t;4Mm2H=D4;NVyp~#@-qV>r3e-WqMpFpJP zUZi>5g$(m_jP^78P;}}q>U^INkC}*M{w$+Wx^5b14vwS{ z2_ceVB!q~egZxPd2}qVPKRMFhc&-;UgK|U;=Sd&RTRKDf;#>r}&O`W$Z{S+$3X$cB zG7gH|Z9gZn)tVpO=2+*HwFI>@l?=B1zdn}R=kK2kmUqiV+to?{SxKzx#E>S0jOnwl z7qrQ|sZGkhH4okAPoXkwF~XL80|84OLY&)tMPATkAU|j*6_7mP8D_a6k7%kdO=J)W z?~J8)AjWi;$g=OFJ#zzaEdxEZ<>-;{JEdQ=OPt;H=P-CJ4?V@FaOUuPNHWRXVDW=D z5JClRqgDG>^8}BHiV#X#JOSCBbCK-%pvcG{$Pl?w+O~|r{Ai<1`ZmuMRN7pU4;jDv zFNL8b(j8&zzmM4Ek0ZtV4rH3GaVc9dZoShUrRv$nIpIy;f#!pKSIdj+mYZlUB>z;svoNJt4KUL zk5F=&nxZ7nNC?q4^2d2hnT4iEAl77`zaO-V3qlzLX*TwMyFKWprG! zevD7)|Yp5Mc z-_iG4meU>mXwWa^xsK21UxVRT<*vxzPRe1KlQvt|fjUhD!_(u0P7nR-HK1Mx@|jML z4#POU=&+bSoi@7H<*3uB(k1g_UN!iR@#=6jboe^Y1fT1$bzTV-hCCx7)G1?1Yu!0C z)|^q=K@Bz1RwVz_7OKB?7TFm|xc8pBF=osdOrJhoou4yq+&GLKHx^^ZkHuZ{=P46t z)c&Cs4A1o;;qsf`{03*wo>fE;$rx$?@k;F)l0-D^X0ce5i8+!@BzDf7JEz`JQ;4Jv z2_S0T@SLDamn6>;2mMjAXY}aN%KV$w_94+TWy%yxn>J0w!!$9xw6rvJ4v{`PXw;}t z%A6g^rl_bWWg3o}MI^gObkXeF=FOW`n9L`&gGe0F%-!nMt5uqrCZ2=T+uJYC%N6m& zGmEJ8^v!R46F~vN=e1WY zg1)vU^tCsjoolUT8B?0;tz=Mx%ynxo%hL5C&X*M+@R%>cPWUTRZ-IyR!++OC`0ZGa z_@HCTR2;2Ka6MRewnPyjB!4z7HL3O9)rtZn1Ruw#13Q#yITAvhHS9~$jwDXr=OsqN zwBT(;9QkcqC++TnvM{m2ZLx}j1dAes4E=)b^J+!DB4ns7MDivlK1^u|(S%!r%z5aZ zeWWZi0qIeJ%6uFNA8HZN9f_TtYrG}yHzjT_MgH(v%;`g@E=X5lZ}4_iBoD*k`MqrS zjGz65vW(;t!#Z1#hK!g1q(q#A|Mqo?6kBa}LUh1!LNoc)x1)Wll)x~+r1l^v^Yq8$P zjJ=yyBP})rd$+7XQe==aHY+fevh5Aoa5Zf&Lx}zFXhNuC;IC zsO=!v+%b;yj_g|mf$XuFmsi_l_O zbXEY}G6C*9hyIqcB18nzvGt~5Pdx>J-aNcMNijk{)57BxZsC6$jP2JtxP4TcMsM)* zz3vOzubQ+A_@D1|7<$sq$%s7}bhGeO7=|?H_=%y3zFm5Bd>;qnU~V5C?~UOZ-D`Jx z0Ym785#8wY8}rRCPVD_EKO_=lVM?g@=wIAx|MvMd#;N1g>196XPQ`CagDyX#Y~p*8 zK57yp{uGg87Y5_h{j4 zLiF-~N1XXiWSFO_4eesrQA31Kq1z~BMlQ=V0cjr7k!YTa7|#b#y8kDr3I8ivQ(e%R zw+0;rThU&y-HQC3=*ZuNj=Vi`zYnc>d(oOJ$k~UM-2G_&2o4x<{dr3s!Dsu>l(Pqo z*}Kt@wF7mT+fb9f1y@ry;Y!NJA@Kjzluf9Wca2%wC9ds~hOKDJT#fFWWoS)aj8flU zAZhuNNVMF846i$pWtn*+A>=+9m6GRb%k?vaw1!Zc-}8nugvw-rDE*7|@ev}Z)`l8^ zZBz39j}6KH0VoZjwkzlow6;j!=&nUa`(?B?luN#gfTna*CT_xs)z9Lv+gA}}{sJP* zPaw+t5F(`=MF_&Z9<;*pAR;XHBg*qWM0?(YSo7V2JLP_^Jew>2Zbvv_nu7?_?Fe(5 zjWE|)2zL=U&ryhU5x1`M5bbs+VoY};)?+RbEOU|Ua|hCv&O(OwRH^p~NcS9r43Ck> z@*FMqJoH}RF-9HCp5{3L$B~QZB=5(?&3vR& zv(AHL5Y1$bRc43^r0wwQbDpJA<~0fB-jmf=`+3s0xDlBv$afxz9G7uOb(@Jex4DRR zy#vuM*Ae3;aJNC?k22pOxLq(u-A8)duFg7A4FQaAk&J;m#R zD@O!==qlT&$e`#|Uqyt+{nD=HN?V+POpgib>=TkHJa31ZX1Nkxw$p8DW4^>|GIFI& z$GS{Jn9CfTbiNO1yPrjC(RTD+jhFmZNKBnoK$DN#hJPUFP#UCj8znuuVbtgnkd_h# z(%njTOLrqB-JpOpjFRr|?)>&Y`wqwPc=x=|b6?lpo|W9eujn%u8XhA|?O*@suA)Kj zWAoTlp+3zsM^b|GpNn{SXKyo@ugC5MC0YOh%^CXCqcA_nJDMoU1BL&$b(%r*9YV>l zhe+r!Z-0w)0%S8m`%UvEz766x&P^oOuyRd(a+>!L&6|F~wFwg9m`wqmDfpIPL8D&D zB`-5-!RrQel>p=V3>P`WPD2+5clXraKIp|u%wW)DfgaRm0r_iPW2Q2b=%k1t^F=wR z%`&|irMJZ9t_9w@JI=ba@}_Q4E^Hn!K$CT*u?pPUm&dA?JGTw*Z!Lvgq<)`5&aKNk zw1f|xf!`goIulr(e&Xwh&E!Z9mbI5E+qmXdV!qNeZlc(YjC?O9z8L=|ju}$FXakYY zED$YRdhZ#nJ%eA`h#FH0b1Tvsp(xNfmV6AaT2l-Kd9q8FUeCzZR@+Q4AoD@QgmMD* zJY+lS+92B-JG}aJCh+~RbW2?TG;U-oK3N_PdT$H*8W`KN^WkXOrmcT)4~TOjF+Xp& zX0rNbw?dfZsRi)L;2#7#Q^LZ4>b_D=s5A;{H$at0^;{dt83SB&NbA2#mEYhq*c4V` zQ72;dP{jHGcO#`BKw^*=Nst1uVh?4B@_u!{zK1y9Q_Z^M@bWhNh~=Tu-73~z@yuZr z_Qc!+`S+gIKgYG14;}@x3_w@9eke~->Wxa%F}atEdP9==ijQEAB6G5;L_cp?H@n*{PQodhjdH`ob=7XD~hH4M-B?g zN=_U>5wdG!2sh8m^b=-Z3ZJRRZXKsEt5{QS9gbc|sd2W9DA%^mgEkx=86PdYg<${=8Co^{I27fKB<`d)k6}s}c#x^&qK%gR0JGB)0!XA(>4xy&P;?A|knt zT&8lr^m2K?dSVOi7I#F8N6*$ggu!0^{{E-E%&^a&)O*8t1=@dNBDYASU8L4Zf?lO$Ep3?h0ez1Fny4=bE9UGTwC2UJ7P zH38>(zTEsmDx0X8v40-}cvD}wENtIR5$%_BmUFv%rXQ&JHIvaYJmEP%{s)bw{2lgc z;oqJ3RDZK-hK)g|+`kYK=66O znH+;AEqp^a?x5@EBB9GR&Onw6k%jqw)KMH_12u-`yhlR%Fm^0A7-xV2pC9bpP*ua| z7;2++lko1Zj=a~dqT$bd_OC06cyxOX@!6XD8M)Ke7HaJ0(O`@0OX6$4ELtfgaMq81 zli;TurD@@cnK7#a5IC@eM@s3iWgiL-q|jUoQqW;_G6>yxWwkv!z)u&V>P zR`s}g3zkhNFV)@wWHPh&WU(Gp8wcS;9}>GgxP?Dt$|qPpsl#zn_ezBPi2l)eguW9A z`jrqucx`78vy`qyOUFy{&`>3<>_`}WxbPE@mr0(KuXm2PB9+T=WNIAS=m3cAh4|Nf zx+<4DU$K4Q*RTfciJ-POXj?nLalpPM@MTvyGfsz~nw=J-Bb5^-%iVVLj(qa=#+;qy znHP;{%`ip0x{s@asb~c<$4QR*v`2j?$iqL=EjjjA4;+STA=)tnR!9T8s%&P4=&FCy zw;!Q6`XW-O=yx8gw^R&LnV+H~OKd_#+T|D7yOys`R#%g7);ewQq7R(|k#zZ|wd;7~ z*L;863{7}m`-ui|;Z!d;sYwtv) z&{?#H_eSgev~{5jIQ$@9d(!xBt%y@+4HzaKpRY1-j5y+#9{Y(_m)$}u@bdZR@PIVM z1#}kg-L;J;j^cSTHyeMFdL7inEpJ&-{SwwY^aG|$ub1jq%pOZzV}zM;mX<3YPE0j0>~EG4aTCg%MNMK?0~JMKwJ zc{F3z#r$q>I>NFt`8+qtS>wY`{OOI`38U4f17bWIkGB|xIG}+CL-5_OY}dqH=+3_f zTkxl2Xx>aF>^v=kuu3S_D))MrqQDcw`wM8!i#~oUZC^xodB_i;1A{nixWC3%oZRv) z`b?z$)ptS;HSEFJ>fRk8{<;&FFJYD<0@GG_fp@M}q>pBa`)#Q$s30l^T6u%Ed8ZhE z&50*xYZ`Ybs`EH3UQ|$OdG)H_$VIG%ZUjz+oL?bW$S@}i6%Gm2_RUp+mh=c?(@k{1 z-kuG1k2l9n|fBnq;K7<8%Jq|oiPMq?sUXcKC+Ht zA-E5?olKc)3>>rykJqvyFIWsCD!{Qv z8mP!NNPSbL?amdP{ss6~XES%holv(ZFLr0ODH7VU0YDj13tQwq`|Xn!Lmophd#+-aT_z!5}7^Gx9rEI?8IBi4>Xqn% zU;t7WEea1;O<^`(I4=I?pa@U?I`Ylr_Z>=)%^gom*&~=Wb@fhSioY5kx;R!J=N&Jj z^r(7mmEd4C{G;s3_tyJ)@-ryt`64iOO5(zN;6`9CJ7|Kp+n#pDLMEeb2oO%RB1HaCAFgm4|*ZG(1r7+h-&Ol4cgxydO zySb6)EpIrNjii=yJ97)y3(5l&kg52nXXRABdO6Vr_Rl%FxUXjL$3M1E>-4Rt>V9zm z-b}Ji64FZ5x^2;?MbzR$&4B?C=FhnRTH-x1Wv95h%N5oAo3#F_C-s-RiEQSvN%ile z_o$cCX5oqoe^;9|N}_JWCuFjy-PrLL3o!K=Xps(%J3|dAnTQOxt;H{BkP*uj-|NocK-<_oX4T6rvvDY*h9!FgA`5h(rQt zJa}-Si7L9T@YKR8UAFllSyqHC{R_8q%6ygPvqAFs{0S2Ay2$^-TXK^6`hmmUj@>Kj z`TcBkp$}6T>T6W(5DOLpO8P!r(@(vk#(}X7;9U z&A|Zm|1u>NYZEk53zZ8N0Z4C&9zR z6AoCP6P@bK4aTkyEeVsv54{0fBKMHRFrut#NhP4qG%~@8G)uj2mRt`8zZ>Z}qg;w3 z+~3_*O_Kme{m&s)_(u{e2jP2N3&6(i{lTn_OHExhikUZ!%j0GF9Az9&12pb-h6tx+ zf&NHV&{}b3@;gA`;JDfKhwE$Ctt2oZ0(ITbP!16HD{nwJ%S&p~9W&cw(?cFd^fm{g z-FK1LBIHF#+hZ;10}>PhFHS4hao6WHSEE;tJKRnXcSZ_rpC0De{k#Zf%j(SG{!X@U zjfYPW>R>9n(I<9K>)9fNM@8h1Tzr0>p9*u|`@18JJ-FE3F1=l^v}>8@A*o$kp1S{@ zw5PgIVcN7}hAro6UwSID3M%0#T!Y_*=Q@E?{N&1%CquyZXo;{oPQSo8@Qg~6kae|D zx4>{{m&Kxum*u8b23oEey@XaU3%?%_XU40qd0pUf#=Lbmn1?n~HpK!g)riY12&Km7 z1KYpV$otXU_$@#P8SkujgQ1;a()@3)EMt?Cc&gE)rIRzy_OKlk|Fv*HBkM=Wyy(NL z8>J6U@oSAX6%f2Wrw;yOE2kLezT5J^F=_qM58|tF?V%Wg{0p2o+O=?0Z!3ONpl3r+-PG(lng2{{>Mo$c_&Qoes! zzg!DIH9A~rP=gcv_)@4aUm3dMjYfI(H&;Z@;qX76s3hZu7V}UXp)jN;DhGvHa4cKS7{~U_d{1r(`rPS z;53a8f-gK@_4OlDUPR(WE7eKsap-nJ9V>M)w?dS9dv+eJ~@gh$UXVAuHm0i9=ixHyG{DTzdyn`3Mr?S zVgr_oQ1LQ^$68dMlf!^ka_bi zI)QEti?i4E&;zj3bI5x~z8mfQ*)?i4tbx9@PO0Txr<;G4H#d_WmY8k&H#};JqKmXyVrP5NKz!E&t(C1t; zTu#6%qBfZx<~dOeAVGQI5^k9>i%(j+|7rY)@Hz?sXM#63~;y`nkTMbkT`BCohzU$ONiDw)Wk{7^?< zG&N(k(94mVurOM-N7sxcl&qz)`I@91)k@BReUL3lHw;A23qF zS0kiNDGlg<%6z|zPwwCzoqd}cqJ(jei2Ltg_IN4F`q#BeA@?j0CFz=nj|ELCTCg7t zN$d2h?Q&Tj{r^nKCcdI!#93{pim%Hq(_!HMrK|!ggc1&!IjBG_@F9x~CA=9!Se^t6 zwf_<|8{lAwfvx0x{6g%pGr9Y-!rp`&<9SxeDA#~JWdLSlb@=VT`kxJaB1CJ>w0^?_ z|E8SK_`C!f@*o8`d*|u@1*sgN9H2q>HAeVud6S>RsQ8gIPHo@`WHh+CANZZ-=IwcO zKhY+COq>^0hh2bt`YmyRg799ELqBfprF;VK$g8bM;a<5rrNr}0Hgi8>|3a0(CSUBJ z2SXXJX)Vm@FD9xsf)SBK&2r6F6tdix{GS7<-Y_Oyk>vH^ZM0(}Na&x)x9V**u1&jL z1fIvSr2JpPVuEdcglP$Qi?kbH?Yt+QT5^{ldeXG)_~?HZ?<8J`bi zHezQ#{B(f~9OD{SIwAE43TA!af>t%(SmEqoU=@5&kzyblvo8*&b?=5HURyXSN7^aYq=P(l8`%h|ESc3$ zHMk6{t)oSZ%fBlav(Bh%j)Ns!r_miXe7#=O>u@ z&*MAHsRS@-ok1}BI9wC2k!r=7I0=H-9f9}oV=k%Ql`sw9q{ekyWXA;q9cwemVO?4T z`2_CzV`V12x=orm_Yvqu#*$U(;qhtG7_=zLN?Y*oAJ5FEX|UzEC(5fR^Y|O2gGn&5 zEukjK#Sif3_#&?1(0G$2o!w^K^NUVlUG0ZBA9HS_5)4|>RtQUNoLOoF|By)k(v|5Y z;nzRE3mGr}y@%;fFbG!VDXm-E{M0n+%r7NtN{LKMdEdWu9~pTN6aKYX&uqr*yJi4$ zAMi-WEMkHX-$S?IYf*d^eAx{&{K#+8_)MgIaf3ox^V*iR`}2vWGxx-1&SrBZZi!s? z?;oE($_N6#ZYAUHapI&dbEzJ3$whVl1(FXHL|tI!$`2T&_MdvkwK7eF04cxF&R>FS z8iWImAD19h#ko}y>v8sP^adrIng-1dgE%g=4`s*4XYe|&%K&a|uc}8OzOYU@H7&EO z@501P4Dg7#B(?q;WL^eeKG`*8TL1$?-4!njXMHt31efjX-=?kf$(DU-(x*M$JrYaC zB*!`{fWZu5P1eeso}XbH6lvQlRk@S$Fc(YycfOw>?xs7oW?)j&S-?HbhG(~}8e_BZ_fAeg+~1~xW^re|hW0Q3jobKPeZ3=nsmq8Hjoc7@PX zcX3$yN2T$sJYP4y=iFRd%jI^(Cm?t~AZ3%GQLN0w3ck+`R+W(n76gU9D9D>p%`8N$ zubT)zT}}>8rPJrarp7RlXWJ|#sVG`@c6Jx!)+VQGaA-(F7dl0>?p3t6Igk(@3;a{> zupt8mgG-#jbab@B!uoO2Q?_|Bc-_VwpRkvS*bnFG$={p*;5YI?iCa_S*VBxex2~UU zwWij(FaQ1a&w3Cx^62fYNFjz1BXUkc#QF(PJAf8Z{6<*O*51jbw+o&6b67XfC2K6( z&aP}QPr*yg~DQd(mvYS*@<2$nmY_KtB-QKn}A1Q6Jd zSj~TMa9+_Wzi{oAp>`{;Z7Qkt?TV%n-^36Lq*xAV`kf#C-+Hq!_rvzlElTv!Tpo<3 z5?w%c%`=)BWkPtNsPK52m)WLVSV#_je@a0WuOti#HNzbsYFQ%{0UL#@n|^FH6|z_W zuMs#b5=%U{{_slkG$r9CMw0lzy@e`ncPj+pnzve!V_%u=RsKygr;9AfH^X025+4cr}|1xFHAa09sGkhUfe!8&Uzh7H<_IG=Jlx=<{_2R9R z)<1>oe_%&SNxcK9@&)P>U~h4PPa2{a2Na?4o3)Y?*@W*yZ4Q#xy``xj_+5!fxMA7x z!%{BW8aXSrnhYb!Kga0J6`=i1DrGYZo~+98F{@6MTXKN2a>jUQ8(-x`l(nnB@jeps z#rad#(TV+>d{!8(RrFzeMyqsMYv!j(9Dav+DDHgQqvqk4%~K>2|~ zRfzGigb#|NHzjb3b^?mNqv7!e#Y^(7Zi*5g8a^bQ6Kq;&SzwKSUHmY~JYksK`5o8M z=VgX}>mY#Ym~IgmXnT)*g=`QzZ*>VC6MMQDAcI=BJqHE|5rH0&iet3$z?EzC*_w41 zily35iBy8AXmH7^c%==2@Yj+oYO|G85H15gp1;Us9$(cP}~WdJ$Zh|#E46F_}81% ze#i6x#hGTu%n(JlED7gilt(-17IIE%xZ{%)jQ_1;_P(HsJ;Q|lHqaoJ-l4D=?>tgh zzR05+`SHMq`aDUL=6IWS9L`(A>IOo1brhJsuF)^f`|SgHyHr}ui5;|EjZCJADogHy zEC5JktwmS5;hHTl?t=uN`)5SZqRQ zM`NPeD9oaVEdliVK;14G(4rxCGeMQa12i)X$Pzsh6w+r(Rx>ggYr58(r7yCTx?^UR z#z4E|1e^d5e~hPjyHRMMq6$`KqdimAll~1Lcy^jRG0E*jiPKV~o&3{LLKeA>< zLhu8&&ls;WJ_iNem~MSIEs*244VQo5G~y$bg}?})TD4LWc9w&3^IBmAVMpbm#L#4G%X+Z&8v$Q1Le%<=SP&S^hy;sfvUR>0cqA~=(O}bX9ptDl zBWKtLTyTj`+;jey4W!%#b=`3>E?>NHHnZ*htP~uDi%)7p4vMOI$UmR@V0Ra7dwDy= z{_)N@xWmdriL|nh(9|6>Am@PKJa!+@e#83UFCHhML@7VWv0A^^9w~;OIIdxJie2+5 zu8R}GJ-9%Ve=_P>O_d~RON(4?0hS3gjt*H`HwR7^S?@=O{+m56V;{Tz}C zWY36ZOqPvpUemTzS^(%rOW*uctTT+Sck`(ZG(yYbnf0T6{iNAvFYqU_EdT);Jm-fJ zDap1SU~YOXeOE^YM;O+aYJ;+na)W|`I9&OLVd(jJh<(qQ;i1btCPbwpqVgTXm>xmE zahen+?^b?QrTV%U7n)BNGHA*yMURpAh$oQ0QQj!*v? zeqm^87G#ASP(2Ei96ANs(BouUWA5^T9SNBO8l^v2Pp%hnSckhB>)%{rB=Kd)>{@kYglQ zOy`VPy7@5aKvat^YPkG~-u!fi?>Q2V6i2x5Cs6k16cH zXzGtMtCC*-1f%I!VECy-ZRm)%u_9MEnVgFpOrLof!Zbi zx&_|z_`HqJS9NRn)NJZynobudc^>=}WJ+5VwKJ5sGBTtX-j-_=EWo&7o_^^UoIv4< zuRVA%C1myfZ18%>ey+;W|9C9=D*V3*pD5!5sdXo$PW0ovyCI$&eXz=$%tV+OQ5Xp*P>Yo`+du96;!^o-@gM58g_dn8k%zY; zrz_RC3tCU;3)(NFZyMSH@~x`oQGAgQc3dWQs9-gw14>z9bCbq{0iKUzGcXkPANp+z zNW_tA0?5l0MTJGwgMtt@ATYon<$h2xL5?M1*0budP)hf@IJ7$g{ zuD~iPZ?6Iow;4G`y$Y-ahD>jMR%f%1${3my-2aSx_tvKaR}Ng1OyFf6({4aS5WZ-Z zs>@K?;{t`zmm5INsDOc^pMO>Vcf?KVW)g-31Flj+oXsJ&KzaSXoJDg&c>~#;{v%$( z76Q=J%s%>gbh;9HWrFG|M4ID$bEQV?7B6}#uUXSdsN&7QAj@=dNZ^j>zqbTc4fb?d zm|^S&>qWusCEK?I#~K7RQQ?&KMW;My=>tEU zK{($uaz2OsjD(5gyZQwnY@tET4is>CCm{n3ozdS@K_070NTntN>HJagp~|Rz>z?9&saRP%C>S>Hgv+h>tT=~Vrp zq_Mi9sqZ@TnRR$pXn5Rs+Up|dg`yK$a^ivt3r?}u4Q3zCi52t=fi7#pZ?qe{Nwskv z(a^0sBRA>XV0vwm^Os-Y#OvDg@Y1?;$40!80!2tvqASCZR1Ww2aDMEU7A#Wa&gPTo z`#+T3K9{ZrP$vyh&sHbS zG0K?jcW+`n_D}db9#_QkfDU&{uv$fl=;TekiGj;)IX|^upa2;DxYAFWNw19gNOs)L zJD}YLr3KJ(z&nubiR>*ZvBHwn;3w_x%enia{VOX?jks6yda5BgCZQwsgVrb?GbbYXDO@9muU-|wMfn1X-ZL1@{KSz)+ z^$HmQ@iJ3ed5u%lKl)arLKhN3-8vP_en#deRqtoi6PA{7tHfEWBLpTyorHTCvHmV< zUf>=2Qb&9Ey#MPk^nH}&(v2A92?$D)AN!{s_8bh!5yc76&bJqE5x{SJ1fa0F0Y|~6 zoq-x`=dI9924n(Jr{^&d))78T5XW{Ay(>Lgs50o@wr$Zwv`!G zON942%0@=36(n@kZ;)k>XPRf>SEXCN{#4C`;qzW|HJB-CU$so?8_z_)}G$9^d?(hI- zh*@u74@V?HY0;(Uz~iR`hUN^?0-p0W45%z^;jG)7{ymF zS}&mH(~s}aV|Q6urg8B`uc(RMn2&P8svk{k7?XwRjoBzQy5ZB6t`*0UQWlJg6v6GB zr-$wON%-Zbo~%IHs-)=P@~ME_j5;Fmo2bWp&`)nJen^4 z>U@YsNyD>9H}`sf$t#~`t`9y_i~sR$e&1xvC|$VCwE=KfI=)*XQasPUp=px|PjJ)0 zFpl>QQfO<#}{S0>+@2&l} zK-S|25+tiEeOVf*m)9$k+|Ms7r4nI{3Wu$?1}i`srsN;h#VG5O$2_+vMz<|!g=pWJ z&oPAxk8lM&+7J5iO{_!J)Ka3SnsCD|%7KBe&7$YnAw@=mHIfsv$~wL0i4WMCZigp_ z2ZsxX8;N|0BGWjWR~`Q?*;7`{T+8h8bUMWR_Qma{(K@Yv^zG6-ER4?A3INk!Il7p9+QFT!HJTe3*DpgOUH4 zfF5*^3gf#@bI5V_Gr5$C#XCn#q#-8Y1{wPz{xx`^Nio}iixMJ?>)7KDYDK1A=^>@q zu(x`wQQjh`*n&V-$EXQh!45ZCWlDS1G^kuIGa+rAwqW{6lAD8jA8=1fnZK@EO|T#M z$Hd_zdeV0}RInXe^A4i+wf_f7uIlS>mOA~BAIdBQYxjq)l2Bops&o{f#GBhvr)3O8&guw`c9bKW){# zzb9RS;}7uPO%m{njFa2?7c+dDugIc+_)_v_JE?KZYOxcD`-W)(6Be8cIeTh@EENRB znB?bjZ4=LTlf2{qr+)aUH_gctcw0{NiV`w@R9+7X{22_$&C`eu)qUoX@>(p!=0xPD zf~)`z$bYo-*v8!7W^{pXmt^wBTnNJ#dk0-8!u5Oe`dwJg(HAjC9O-1roY)E7n_A$J zpSc~;_gOH7#)OGG1xIV+Ap2RqO<~8%pZIj)Eeb(Q4j;O{(Wkh(4%x@n>2Ol%C~GJ!Z(-6MMTy~9=UeYD*^6zjqkv|r~yu$u?Uw1`II zU!rn@RUha7dep0e_AdMqaN|Yu0lCcbk|o7uL`d0C#Ym0#@v3$QI!Rm7x1z4xIR_(X&LD$d>wH z3xvohf{|6Mw%?y{E3Kz~_wJkPcg+YPZ%)mnA7XPhXmkiOH?0he2yw5-~jG zXfR}&e>h#E-#U4&Lm=TH8CZAvUnl24Hm~i0QwEfBzzD{NqY7 zKt7_$X6KDg6wnPl6U$=U^$OF|s=#jgU;ay4kCWW|(VQZtR!}ahsYv|vGp@11u~hg5 zw>01fd+Im&H>K&)rmE{eZMaHdQW&tYm&rq#K(|m-on2I;P$XKmsGFpKl_cO2eWD`? zCen<+OXVUCO7es=K)UQ1@v!f^U(Z60fH~2j8@E`CvWck?c+ML*gY?N83PqQDzM}uE>3La;e zDa)12mNrb1+S;72y&TOW4_diOD-xmQ*<3BNIp>`xV zvVg15a`m0vCzS+=z$n~!nJ=Kga;aFnrxD`d#j*yr3r$V2!4qjrUd_)rw3JOm-%N)( z!uq$kTRq+&3lD)lrI$N}Q%Mv75coUI?XZ2!T;UMBe#g(vDw1pAccD(5ui}biW2>+D zN|ZhYbzE@nmJK9#sIhHK36#!6?8Z9o#|lU`M(Qo`Xo}m2zDA(0dpB{RF48Gaim1zS z#cpt+lxCUIJ)b#JR`e%u!?T&N8)>^G=bwv0aIIR1pKY^cT|*Pf12zgWH;sRFQjA3X zwX9%IX!wZ2oecAf_;Kd^27>*F&5&^-m9iier;x8&;|%%03Vh&Su_q*Df;3HmYm~O> z=PC*C8r?tSQSN{|_8O7FJKlR{Wz$v1w=Gp)^2;heZGTk%a;3T3loAwOt47jB;Xi-K zgO7;d-#?{MZs#L-Z=Kck*F}YP>3d-8rNKo%t$L^hh7JbpwhLrkX)><*SS^*ohe~$X z2>SSa#-7fvtUn4Do-ns-$Edaga51PL0R{7(u4X+= zt6Y7mj zvo8HWktdg4OVp9t50LvNj>FswlWf0e(wwvWvd;6TQI_XcpK7XHxT>GI5;ck>sXA}_7K{i%3 z?u0R9{eDC3&0(e$6&RD9ojt*lx5s0JLMi5}4__a9B&+v=p{6R*x7}^0BUyP$Ay>u` z3Veug>uz%ABi(V^g>u_jFS&ecs4)j6IH2RE{UjIZDo000KAdx_{GJZvokDl0j+Wc? z@N~fCC4YKuz;2IEPih7R7042LJf5IspBn>oD=ALDDT;LgX<=8Wosh>{! zkbs9~L2N+ccrVrgE`S+L#;Ab?K{)#enBPokT54UUmtau7*;QU>J;dW)Q9Esad$xy%V&T69?1ePLWGfqq z1};&M8Z<9>rybjMni&{$B->tFPuD_A+VktcK)dSyag^dz<*OqWe@J_qVXJ9W_Z@z08{eeaQsI+e3=si$dun=5 z^WQ2azv(W1@V!swVIMh*d!${H!D30`8cNsIX=lAU&p7xXT9&|>S@f9p9!BOebs@|U z=TNWSpw5@+Xw%{T`siE{ejA!W=e`0va$$;aWm@<$Xe384V*?JjHKr5$c^K#Hq%X~n-XgdnZo967J(5LhjZP{Fkg;um;Zv%Vh##h*1J&jWRA_S`mQ^)n*^X zxad}?{r+#0Kq?2#FB|1Z!JY}?zO&2iLMR+L&-K0UyKY+RXVa!w-t#ATK#qUT=s=YU zX{#w){mM}M+;|5653*<)xtRDC(w{KM%A^@}`B3Urn>tA0L0O+H|G-}!|92im@m$ZT z>Nak2YZ0@=ByJE99T3Up`r58Krb@uy&80lSA2-Rt_U(3bSGM?H%9q|kdh3P`o9x&3 zwKzuXT8G4rk_3v9-eiIux%^lJ0?Xv)5$#?_vUj!3rnh_w5y~OhvJd~7bY{CHTF37` zH?e5+N<&~}4cf#7%vT=B76op7PiK~VL;6VmS$FV%K^_FFym5__=66>v`NJq;vqOkJH&(ms+lPe^$arfwSQ zS_-%Q2F9xodToXpH7Y}DJ^J11UUJXEXUNPCS;oGfgyF&`N2>#_3(YR_cK-M}?{*4b zs_ItIM0gwY&-AsUrEM^M#iDH97&rbM)nXvUcl}Ag<^We(4D+TC$`WC7O#Dv%?^mNo zaeX89wq`$-F4P#$Nuo@k&lkEtg#1Xp>NeAjqh{>wl-GA2@30}FVn{l8?R^XW`EW2Q zaaeaS)WQL@>eHcrp$~rYr*KH7n^8>0Tg^Qb77M1)`2jj3xWo4?g<}r(oan@ymE?R0 zJKzVWSpXMzB+MROh${Z3e{bP8ceMLes7rGsdmjc-GLx)2I@PiHxoZ@S3;B&Cb&&57 z;@Yh9oG34 zu+$jzVtofIbxiV`rzxcFIHoeX2%(@ypD!9m{?kv(pDO!i_U=Fcp;W0J(mWA7rF~GY zNA9R(8n?qKftSVYBekg(&~4*iM-ZRBp|+0fXmn&vysgk?MmBQgOxd(yY2hb=3B#zM zjgrzF^T$y+aDEUstyC;7@b2R(|2Bxxm849y&V4xQ6L`-lwvIK9ISd>RQ%2UxK$DUS zW~lB)@h;z48aE;T?rc}Cf+0B86e7rS|_tomu=F2g8Q%|C1 zzWnb~PZZLPz>fWJv=7q0S{NUsshFXmHVaNH5LSX%tJH8bq}PRGMEWp|JxB16vhK%S zUKOuqufNr0t5*(4K+hQW5c;uQt#|~E^s6sw zwIR+%>?8q9=-kcOP#ER%i)l_VnoX2>Nfnc{_K*N(U3T1^DrCOQgKgq~f72Joe>efx zlqw8!hy=cqFP*hQ?`U9F5ZT8apiO(;`srT%9teL?ZUkA+S;VzoY40-Mpj+XOuf#GR z9LlG@t*$asbLvgH@E|Ech$H@rCrYQ{);+%Azk7bwf9@_nzp?>yNMYOfRwqXq;>ZHB zPz9K{3{iy2F1LMqayaZC0n9Ng>D_+-p;ByL#d%4JdDF@`%ThFX_JRED7jsA@wes3(P zj_# z=t7*tFPPKX`0l;t)~6*v2VrJY)JDGVYrhO@k%?z}?Oy=i zVaVFKRRK#o?*CP-TN^#3$s0MUL$bV%1q$JW1O!n+JIm43PklIGqhdPt1PW~XUOjz@0A(GHF;4T zWyl}oxfHqyrk3p~jRFWYyv~)?Vhjq*Z_RWt$tG8RNW-%qBR~!pNH`Rozs`pf7|klF z-tTG7%eFlwZ~it~9t#{|qN11m7rk7oC-$WQeYWkA=hns`RO3NueFd*f{O#9= z3LhH{#XgnTl;iS$%*1t?_dhi~=5MhHac?s4Oj>o_6Fc5s z&3~bEAr2PGLpD;3K2zdoYk5oV5wJbcA(oyc`6^77U34)?RaCq@hRodrE)cQ2svv96{s0 zo+Culanu$f3R7ZGm7gIK#j`TDSSP{O_91m53lZZ%QI?OSWR$Q!T)@&$)I83CgB)RC~;A1smN`d0b|s2YG~w&n`}vA zrufYuB<>-2Sif@4qE?B#D>aQ)gwPq&1XP(PDbr<%rfG=anM8-4MSH1@5Tf==(-~z> zX+Y{lnTU{fPiRe{e_0J70~8@7=xUL^+F6UPMt=NKC4Ht6y*0UNBUceZ%YJ}p7ZO4< zkm63WLnMR*UaSYU7n+N^j$A>$3o%~maRLh6CZa&@`QLcn4$sNaX4&%Gt(s=aOqJ9p z4?QPH2xZGVtLEA`WJ%Zr@2NG$v!se8{99Lw(w1Pxbk@GkdN<8{%L;(piRX$dK zyt14~Lhy_C0+L^H&6B(lx#A|x59dv{7zyh#aL1 zA$h{hcY9f^VJ~m>IAuRB*uy>?4deJ>1jjACDW~1uEKL2MaT^!pgmvSRZs?P>0^DW$KKTuF?a@-1h=PJf1+T$j21-nbN+ds=CUdsXvh)C6=)$ z^%|$HggReJphzK)@hBDog{;3!jjq&B~zZ{BzjJlG|g3K2W9N}2^zAOqwi7#&{QJzNUb2L zLuFd+=H;znEI%WR+BP&h+SMlgT%g7hxpvC){`PA0)x_a!f)Bzr{s;%1?neBodyu?r zDzcVIKl7F}OFz%G*tCPBObDLcMetdU7d10(QyLn4mf<=H35#bTeDOob-S&I5iwu&oE0pr3`N}f36Gv$$i$@`6$v9-V zO+~8b?Fd^k8wsnwhVx;r=&zPG(paI|eRthubP8JPub`v3R?4YK#<6;|UpXWFLHa;l z1}>#;LD-s~AbjbQi1C?)#HAAvC-VbE2rV6lWNDLGrtwJl@HUBWGRoFGf>@6SaCFHd zNZ$7{S}XQTzEUyRT_kZ-pt<2JI@)Bu+F6b6rc88RK84b#4{*f$VFdZiK!miDWa&@o zBEPd`Zb6d2*nK=IMJAtdpM(l&8+l76BFA|)@_Zgf?#Az85?`o-& zai~e=L?neOWt=X-Kz%B%=Iuq+p|=s{_BF)2d{*WHPat{m9BFg>NI>H9w33qiID}ew zITjK^lac8?6>%QZ5#ezsB9=Xg;FbT5qysPDa>fb_)P{+ylYG<_D|0@bwN(PEsm#tA z&i|yGYee4ES_ud}k2cE3;o5|TQ3h)H$LCu15)4bpYnvSARYN~FLi@AI$eYV|V_f!W zHKu`K8s)!^<7Q!MsC=mn*x}!6|GErx{`I??VK_hfoz9CcH=TB!Za%Y5JHs&k|2XJ4 z7zW1~j-i?qA|XUGak-hX`0AIR#65S-frpzDHf~&x4I4J7^K>?E-mJhgerP_8#L!p1 z@)e~aR8>`lciwpiQ>RYFm%sdFbv6*SZD?AJBn&l)UVr^{rOiV!i5fXHDM!s6YUup_ z_rJ$yKl@qrj^q!|AEJg)TwI(o`*!;DY3$uAeIzSOrGZ*UOcT!&qQ=h4FTadG{NWGE zKTXDwY@(^RfPes%J`zGCr|!P{ZWS(xsr2-8yz!UU;pFIm_3PGP<%(ta!|$KNoY^z+ zi=Y1#nehUKgJY!_sWaEL7T|zzAjmpb&EWvxoz7= z5yREDf|B!}u6_Jtu#RuTzx%%c>)J^ZLsk-qSG~rPx)FDr3s56T_ia7zyWY>QugQ6D zg#BFNzXH8apuuoe+6;40!uVgOjr#$b3^JyVZh5v8HOHti+;AxuNm2U{cz7iuPOL@9 zp%pl_-wP-Ad*ZaO1%ZCv2t4SGlY33d+}n{IPRjIKl7&zxG(%IR(igI1KSs1!?M?~*76cI z_`HG>`R#hMM~r@M4jG%NI^-?X_@2ap|`0V9d)JXXsDFQflQcct?JxH z;bavOADx)#|Hfyxa0~z2U~I?3wPpMFpVp0ry<2-2-5D1NMqHmfe3WeAGyPoO+k@|h z>%&IqxVZ?@_c|@~qtl?l#iL%V5PG9c$7OWO|He3Um^Z|2h*v-VG%%*kKHoaebf?2M z#=&PglOs~*L<5oo`)5@&*281+Qb`yZ1>T~b{mT<*BikN zczw1;4o$z=%*WlJxgmZP+(s#_BK@DF6ivr5E!Q{oN2*OCUaxB+NjTh~b+w*7GX%E@ zf^o=lr`fkLNE835rcp@s7>P7$rwG!`Bavyb5<;0I5?py!$5@n0+N&*-Q6Wfm9)o!E zbVMzC5Cun{M@RWKpdntF+#75oEnGmtFxkt%JAXNRPj#~?%M+1OTcU8U{? zBztn4rH%#LMd~5i21ib!s4lti*{` z?i=N{QO@!mWv!OC#!WTj*zjp!KYnN!2_Zte*I^so8sAagD%idly@3o8C`}A%n>5sk zn^UQKkcIPwz9@=x#&OT55V!n3WcbWPo{yBB&uA1$xs`ZI z`*6PvMIukAAw-SAT*rw>bD4^Gw>b!RzX#d7e~J36%|LCs)Ymx`FUg9I+AE3>YHzBM zvTc-f)S~06#7(nqjoGNp-Ho_y&mwZ!=MdvP2XS8G5G!&viRbJ{y^#>2EKOO&c0U~j zUUwtb?H(Lo{2(IN{Q_4rHvld1=x@(MXN# z#ax7YPe77oyo}G*F(F^(6(oepTqmNG+K@}6{n!Yh9MAiax#pW_&)+EhH4f-1lQI*T z(9tY;X_0bdUM@<0s|9)Jz7m1UX={^1TOmw4tsqW@xHI1rf8Q`TblHfa`ZG-i42i^HCjJJ z>XCA#hBvR)wf^;a^KkN!_eSuUQKlK)(J#SpG>qXJVRS=izxMIl%TOJcj?X?#`Z?pU zm;d%*|5q?vx(J=N;o`CP!}J*QuFJw$PK18;pG`mgsPF}f5Nf)FPLY!x0un+*es;Vf zgdTt7L4<_{;=>Q$$7`>>rpO$UA0&O8oSYC76Qi_&o__ji^!N9xGkgB_x4&WAwr$Fs z8wnl~FWa|oS7zf#1kpXUil_xdLWkNlG#N*8aho=6!cTwtQ`~#+y;!+&r6Pjpm&6dw zx22_}sq=<5Zrq41Tec{?_10VX@sEG3NFb6^)JS3+bLY;*OE0~o%)3!D=}&+9lRATl zCgb>?@jv+BgZSYOexNjg9(njd{OQ$Kv2M*86c-g>_pTlA_VN_}e}<#;60BOg3cvo{ zZ!l)USWKNh1z-Qh*Hl?Be?O2g#*Q6_3F9W>sV6^+lgCdfQ*q0eF2^e`zbxr^0WZJ& zB0l)wJ#5~*QS#%2#~*(b&pr37lqlQf99{?PSt9X5Z0UKv~UT6{S0-SxS|b#R?;|Ll`s??=y5hUTHRxb!{a*L%Q5 z!b+!0gZbgyyj$j_=Za$y7qSzck49M{ZST3?1C^AvXEEhPCEbuxs_( zf_Jdg`48}M`aS%&J0Ux6FH*v{!Mx~q2s*R^Ju=_CMF`#eXC;KL=l?%pGOkZ~)P;HL z_esAS38B-z8;~4!K%F5J8?+g23!Z_u>+i8;^ynCRP(5!7ja^>#I;3{ zQ1PML5ORDil4JIv?qa%3=qu1#TZRtl%v}xo>z(Ugm0uSC)(MDl5~BYbpWVVO{BMG> z4IA6Cp0Ix!*oUcM4DaKh-F;km?0;MckXX7mT9CxeXcjPcrs|4GpCYJ8j<9j_5af5XMC-wy|)yPLrn9?L;%36T_v3p|4Ks6dov z#4EChUnsJiG}cqT+z|0%aCgHy4RNF24L8{{hRJ&)A;jmr@;_mn z>@k0z4xHR78^_WPSoRI)%21V?ik$dxMGR%egrFij8I2b!mHlIG=rvubM0I%~Aj5qI(%q*c%`{c=H5tjK2}m-HL!!r6B%8-5Q#Wan z2NFWrma&pgs|m1j6Te0tk8|ErQRX!TDXwD>>NFlF-R?m8{$HWFkY}#MVz9mtgH7iI zQirPESw|!asoq~Ji;@2e8ba0unUxTd_T6~}U5#fX?^Z%+pf(SKSCY_?BlDtFKSQ|N zV~BE@gE-eoNMwC@PC=4c>PPA^-A&q%+c<>`X$J}}W05XMa~_RU$5BXi8YBPtZi3V? z+lI6i0f`;$hyK%~{?gp#UcZ;PGHhX6!MF@<&_({+fpKK$|IQNTO(E^yMcR_f$eY7? z1X71EQXqM;LHT7E5>|%OIAl6Y+(YTG=AU5Rm`@{y^5!9Vup!MX{ygPgkY<^n$b(d~ zl(oD|aG!!W_t{8W`Y2+(zkrPGzd=jpMhw8s7?ZK)Ig z=cGLHfh)l{6X}S^)n7-L$Ad`sxmViDG<7B!5AmltOsgi)ICXXqQ6ObK1d&<#ys9kM zsnQ;2O1<2LoYkK}Ys4$K7W_w~tp65b&7Vbz$CJog_7n=2Ka5TANmoj6dzyhBSrxI;y1%(?uTgoE9@u_x=DOK6fL=X9kjdM0T&3fE;QH zd5*Md?aA0u;66ravMHFyA;&EFGTo*K+&nKSCz0P_3uYn4^Gmo8;#X^3^3Cw1`|l%Mk63&?xb@1 zRho~;KMOymkoaV*FY=l#_je%PZ9YyrJcK~+@1ru>B7HLv108wjka2+~2T2I^w4X(P zdoFrwLvSg}3#V3p2@z`^MATAgH!?0zhEs!+gnYi_iCRy&AKr$Xh0=~BZw2mmAjk6| zBrW|4t|oY)?@EM}UkT77GNY>n18p7XZEVJ1V}s=5vhC~2~gT57o>H%X#XrY4D;jgs*u+UpKPuX+@LE1rVC1ostwHIQP@C(kLU1?ZJqTd#>fKzJ466ZR|Si!y+g< z^}RiYbF1C!_$m7}8KmRX?*Fs+xHSDEVA}2Tt@ESH#2)tUZU*}_YCjCaI@VZ8^)6|H zl$RvY^RnXbl`lPs#~ywN0Vj{)3!ne2B3ek~&^#N@&Y=cSe0;njSHAS6FQL7?U1{6= z@P|J{TU(pb%9%HB9$tCn6{Q8VXU`r?pFSP8-+ntrjT)t{Bzkzx4@sX@t5zwE9uhn> z`Nn4*9UaQ78qWxN^wCFg7#?t!z56V6{ck0q{-7&mDg zMvam1$B$KK5z*`&i6_QMLg>lIKZ9dOj-$A+1V8!FPcdWK3@N)wlE!g(`sptsGcz4A zF;RHnf&1jyc#M^Fj2$x?<0YNbrcA{INgoNJuFiIZh6G^djLG=JAATd{TZ8)AvuKfd zL5GZYG#A$+b*r>d~MJz<|7BXqjxhjOI1QRb_S)wo)fhTP=ihzZ(?=+m2!7`zqXM|t+o z3Z;|~dc=wl|D`y+&y2&{mSFdqw{T$72TD6AF?cP4{jFpW&BpOQ$j^)udtDV#6mx0? zj_+~8CZE@_!u18L^>`KQEw90I@w4z+^1LF1@)8dyvvDMZf)B4mA590}B7|=G`)?qG zZfOYpW54T!(0a>a1RUIm)QE#fi6kMk3C{2T3a$%(1#j2qu)^c_*tG1AN;@dzh)EGb zhj)K~BZA;V&N#mJL%|0KJLam0p{SE)gda0u$LiOybIt3@WE=^hkV9UGJh2jCM^`8t zj!`GqEAlB$I%r(zc0>lsefTa^6hxq7Ub4;%)wfJ^*f~fprD^=h`V-f_E-ma`>;PPKB@oky_&$wV#c_j(F-d5 z-yXVeYTPVr{m!_M($N34J7f4dZu@lE$F2X{hkLWQ{n((>d zoo=J;^%AaCLufb{!{L7tKh)ZxoLBM7Gvh?`lc2(EZvZ-*(aFP2B^*7GRAI>b#tRk5 zjtfJ4&@q{;1)?M~0Yw>cGI@+dc5(#L5`qyQeFD*u#}OTI6dCbHaj_r>4FyL~7U+za zRo_AsO(NMeglKlFz&sN9o}&~2L{o9n?DcjyTsDh<71oBHnqHU?yUn#jn#e#5f9;@G9;E3Gyz{WfqcLXCujN z4wBq&N0LddCi$>+kl$5Awp!e;ZAtcYGj;!tDdOQE$h~XBf`V1i+IN#S!oB36e=PGIc^b&ySX_gOZ%HB7=KeF(xj66IJqad!ASSlk?cP8hWKy9RHR5+ znNE!qDFY%|kR;_psC1g;-YjJ%eK0`~Fa0v!B7I5_Bk!W!XCYGhO2X35Aj130NZtM% znliUxpf(q1xunKf)~OzIc(s?+_Oe;E0XsK@Hc?90yZ=X_ik1qrw533i zqQ&}se1$@Br&K6as+0;;)5dkP?%Bv@H`yfX?(XjHmTWfbu6Nz#|Gn>-J9}sE-i?uz zq@DXbzdL^B%$ei=dC%#{vqa+l-yqiH8z`{-8uIB~L7Cl9rVwl!s`MheG3F zsH!NhsWfM?`bOmJx}NgB+fe54eKdIg8S|yPu-tGEy;(a^>-8i`4*nViRzF0J@tr86 zbWv~f1)Ma$QCLURvVdax5h0uuS$u-h%%>4e`Cf(3A23*CjG5L@EDn`oUUPW0jaZ$OOAH;`m` z8?voGgA%(>qr&!jR9byfSYNOu2G2vsLwcSxy%u%!d~69?Z2V#HaGs?s5*vL6v72v2 zw*9X$kY$7Ajx@~oRbqZfDG06ht9ajB$0UC(P0~9b?-at2QXEpAe&xWV zc}<%bdTeRD3CmLr812bHVX6&+93Moa?RSv9|4S&^cOxq8J|S5LnSBTiCLhM>Js(E% z-jAWxgvzbmpG3h{%6E2umhypbpzPT1(Vt_2#ojb3i%x2VP4R&CsAR2BkJsL zr~K+BWbC~iamL?3xcN^}5w(TVWe%37t1&*@h^dJlOw;?Bn{1}I#TG&d(9|44;^AK- znJRwKSlMR>rqPSx4`5EWEg!4=~RYf*nb`Iws#@H@jhhx{0%k9?_!|Alk%8S z@xGSEsXj2)scq}xs9Ul?zzyvhs=e#qr}kjG0J<%&nKfiPriOVH)NE@<@33%!etHTy(|b#Q=DKi zhz0e=lO_1+kG_lV-t{#E1^MFp-~X--U$9KQ~9X#;RUvSrV zzb(X|Yd-Q}eE6CV3vrCy=J}9#KA|m}wjw+<0*#GLsINbT2kw6mH(YyLi z6JC4mU-8tovk&s} z(okNOhu2h~$+>Uv!-|~kQ{Gq`rQD`lyfO8>Gn&Ets!q)I{Wms~$ zT#d4wEm-M8T8-S6m-1iEt8~b1Y^g4>_8ylCNbVR3&^&dOmJT(s?5t80)P= zbx{=3V_c9Oe+;GR-pEgMMMmUdq=p?N4y-IwLLCt2Z-r2|-D2ps6ArH-#?J%=Nlro( zN)5L~a;P;Ty^Y{^bQ8RtHVP}EvG&$QJA~dJd+W{syZZPh$6m2Vu7LaUlp* z=lKai$ZYEq!a_(AgvM1tXq}%V2x&Lyrw$o+*?-H_Fd0K-UJ9J7cOo|6h!BJdQ@xN8 z>x5nJK7<_`?#Hf;_rqrI<8V9lZy^XJg_$GDZx?)zy#+VNR}t#53Au@Oi1y!xK-agC z8Dk{`p}-UGz|Z9^cpm;Yt#1~Ih=+?yi#&+TXlJCe7!-2^If=)S8SjD&N~}34?#NE@ zKygk8x|@rsKxrkYa2b(1bmfMsGIKJ_#Z<0TRIVfz6@~w5G00Fst~^HPvLG}mU87%N zzZA%6Om55=5?_?)r%7eQU_Jk>oXZ_rgz}j3IzCTExvjkS+0b`W=^y3s3qk1yW9WY8 zLV1lo%JY=|mcR0m_lx&W+dO9wTM5au)s~o*t_n7Eu!AM6Vczj?U3z#dfE9cU>?9SQXNhNuX zp_xI7qhecfTfX-axii_xkV+?4t7+I+j4^B^rGjiF@xtl8o`Uk!(U3-$i_f)_FS+uK7$0CJ5d$(3?>^+0DW0l9+U(jG31nn;}pF|4ZY8iA$l)dkslCWuYC{%A?`4q zpQJj?M3)#EcX3=R2n|sVSB84&eB2vxn5EgBzCbTs9GSZ0*ldmAtgf^_q*AdSLEhQlhwf|gp6EhUl!6rPq}r*Qr@ zQf=-JUrZrfYA*MPhzpn)b)6rk%h}0twQGESA zvTeSBT*^BNjIR@OxUiL0rTO(JH@OxSX4eyv08~NwMWw~fC^P#k3XN|;`i@T{>YeKl zyWZhnf$&3B^2<_9RZyc2cix1)N`^X?J`gCV{vLwh(ltC$eBUR@(^c(b(Gf2=y?(`cgh9X$Nzvt>u(~<`im&AybVR< z=W?r0qso#+vX7ybEvt+_Caf{p3W}|Ssw}S+Lv$6IT!)O^Hz8*G7g2cR5on5>u-ub_ z*}f_&|0F?3h&vhQ9^Lgak|1TOt zU%)iI7Yyf9etiZDEP@VG7-}>WXQ*B=uEG4&7?vl;DIJZ{ev1DiETB|lu`3=eNxP7C z;HSv6yF&;3 zpy#Q^{y(JA^JN;}jDo$Cj;M^TxBLt};|-|g zxzcuh3{|@*&F!Xgdk^KOyY4{bp6}DO|3+7ZA11o;ur$#s2}0AeSkg>TyrlKf5qhQ$ zg7dk2%yxvJF=h+p{r4ef+t*RP_w%SSrZh`_uN3oq-AHNeGgR04EQ+X(Q(*lyO1F1Y z+4VgHnEn769*?6r-vm?bKA0a!qWq_Z!nK+5POjroyc6+}-z^J497na5!?aJX%ggn7 zL-9f0ugo)f-`TEHo~vBH82EY_WuB^!>{mk=I{$2(?H-2qpNsSLi}E@3%POTC`fkbR zDdGL{`(cEjF4vEU*$HB*AI*)G_{lxr6+^~_hxp+;cYRY>*02!77B_5N!*c=^6cmX4 zEC{hR56{uVg3$c@JZ5HQgfPVG-03(zHVzLrH{5pXE!gn(n;0DIhrOLGZomC=c=z3R z#L#OzoEy8%)=08N5{oS?;P7yCPd)XNuuO6zcYgcZ--`S4d_p`w5Dz^!HZ~^aBVubJ z9>$L6=;7^O{pwd@4kET(;&a$f3=37fZ**i>4AC|>HzTZrc)hK)88+6Ixc<6p@u^Q; zi;sQ$WBBB!J|Xz%$3B9OuqgE54-3mAw(hz6`**|F+Yg$d5iHCt3JalM{qons^5{qR z{18b=3CPLL6xLSPk()Q){23uO{q(2zqN=i7%pY{yZMRSuT!W92+n=EO{ppXt#mw{= z`Ed}zK|Z+o)7Rr4&pjqAh32ORF+S8rO}RFz(^B3+?@@lo>!Aul7XqavE|bq82ub0| z;l3KV{d_)xkd*Ion&dQX7(@5C6s+;57OC#Cx=%vs7u_@TVP>ca9Syn2P4Plp$bJ;2 zdY~f954o|&kr#g)nNf$eI0=C$Eqp)X{4EjYu?IfR8{uO2st|q(lbz{0S0n^ki1~wb zg3vqgbbK2jZaa`3$#W8!z;5@`*!AXLV7&3K*!KFLuy^Al@N?O*A_$pmehkt6wwN1l zRRy85{8T~cJ^!&FG_Dndb|5a$8AWOSgf}u`ow4iP2eIw#KVa)yzk~VCN8qyWpYU;c z6QN#P;dAs2csTtFZjP^rIfK|rC@0<)u>rdf?zIIm{yT+G6zsMUfhRU1!fUsfKPV|= zA0?ba$cb}7R?Jak#~nw03eQ zCw?8ej8U#oh)Tse6+ji0s|6`8OAYe1f)JxE{OFi|C7Tf)KH6jYZl5nJ?rHBYiw$xb z)8|}Yx+&d~;cfXo>t3UGY`yah?UVg-KKTJ(FN-R&Tl)8sx0T4p^pW1-Y7CvXo|}fQ zXU=x*il9U1@ivF?5&OxmjHXh2JK5lYfxDL)QIK~kg`MsA?B9@9e| z;u^W~C3n6k(a(zw9hWP1hANn=Dt?MeD2qUSXKK;iP$ece=DB^A_!;Q9A%ST=UnHp3Vq@#+cF3bR11m&kjQyCPBj6@ts(2}wjEy*TmPBx`=iDufC z*9CkmiJ|?8dhk90xtUDxQk-W-mI8!zebwX zcaUcKWu))D1vz_fK#`d5=o(ZQeHfK{K8%7bACiVBGyf#AEw4lP&W|Ht*R9C)dJsc3 zhp^b4grx!gD!zr@59bja5BOb49Y3;_5YH*J`d#Yc`uhcLC@*lQ>qHMV4mvP7+(_xO z8OsxmSQxIwbWZ`gYC=&ILyeH5&mzwGuSjtI6XKkHk7&pH5q;e_fh<(>+FAqM7o!fgnd6lyxo0>v;8SzZGM6n>w69G zW8(i1WAndjh_(G8;_QBec>5m<687Co&-4>PvctVd-uGi9@jiR>nmqvGJg;^-1Xi$qn~%nDD!Va7`jFu{W4;`>tr`qmBHF``8v)w zl^){gEYi1s7Af0qMbft05x?~ggl+x`G8}%7 z(@}3jQ*jWBJz>CD8ZerM<(_CvRUOBf$j!(;_y7`&zK=5N|3!uA*HLSF2WpJS{k=C+ z{!4C~-GSVL|A*H2S20v#h1s?+ERR%(4(a((elF>qaTzIF3F(KMA@svo?#N^}{`^DeF6<8pTJ2|X}CQWi+K1$wzx~(Md4@l0}78fvCtTV<^Dp<^wnUJJL8UM#BH- z+t|P37f3qt8x)?n2L<~-k20H2qtfyQoV2(et!CGwW$&lZxcgePnB0UqqnlAc@h{i- zPUP+X89FnzVoAie63LQAs`Dq=w2bx<3m-W0WuSr9xBc zfb>J0mwpbJR2~-C-hg78>rrTPEix=VhD3``An)+!k?Z(HM4NpYAttvV$l@FDx4jq9 zZqK5n!VSxl)nb^q>4^@^()029{8%OC2h%Zj#slS4HmAA#l=AW~A)6?%yaQ$Cw^6<0 zW|SFG8NK6^$lv-g8+{cC#@|M?)z6XZw*ehxei&`fre`64&yIi+GiHZI zG1W7O#i3!k52g3PI;x|UVQDZ4eMJtaa(@nq+wVfL@t3KNL-(Te%hse!3EjKM?DNPp z{R+Z&+=*z5A0x->?(R2DWY8g!s59oNlPY;6M-T?W}O)4cFqk z-}xr){=s+gk!wDLkA3XJ_}p!u#f$%V7JvTJ@5H_Rd_C#>UKADPiec26&YTkNrKcsM zzpodqEloJE-+|mciO!BTA-u5F&(nW@62JV#&+s$y>*B(ku>6^xnh^e)pPM27=i&Fi z`;Fki2kys{PdtVv9)A>%{PiKR{qvvRi_hNt88O#SWMsG?G&C47F;R$)jucBDFHb!5 z;6u3WmRs?o|GP&FIagFzgi|L^;g7%nJw8QYb?YrR;io^j2QNJTG`zjs5E~PLl;n63 z7M>oiVh*8yz523nGcGn7`|PdpaSDge-+n8ee)@5km~2N(bP#U3@soJr*+((S<;Khq z7O0K6#7i#g=sk+}u6?)XhT_XP1dsQc_0r#al`dEFpM{SyJ+2a32+_vobw%4+%6|ZjYmSLBhsRrQIYM3BAz2Z>L{|J8D~Lu z%n>0BNrI3CLfv=6$9WUn4!ntA*X>9SwL)gJJraU=?x0#_U)NrF~Tp zTJI+bLb~Ty1)zKxdR>1fV$G2bpos*!k`QLJ->V&L3gA{UPi# zc>*pDFXF_(mx-5fbl(ebcYH<68N@;}dRxk=VbwtuZpyr< zfhAQMxT2-&V3adACF@m2R8+1u5tYTUzCOIK%(t0k!*Y?a!o&nBC{J&W_~Ry%|C`Jo&elT9zNw} zl$d^jj(;6lrr*VB@5eA*VuIx}$FSTMf`yJa%ylFZ@mdnF(3OnEu2d{^reU6z^StcL zATo(8v0R|#Vpq0cp({(GgN}D(V6H74v#n`@nU+*cuaJzHR-z?E?4N1o;~AK3$;5PX zI;NY_X&+rn`)8XHu-F`h#YTS&=31lN^BH70{0g~t_n>6o_ffg;n>e}u4m2IO4Nd!Q zL8IMgQN>nLR-Z=A!Ox@W$k&i!^##OOeFNnoPh+C-7%-TI<>5+dL^aX7=DA3?gNNe+ zSMWbrf)FD*V1*#mskIPdL5Sy6I7M-{6oV~kXs!rEOSv0*YfoV4{RQ?ID4=77`!QT}5Sn5~j20cn zSg|w4iiqMP7%y_dSm9xe797Gz{(flk_R-Q|HFW)8A>D`F(nEI-_6PaL5bVbiI}DQF zlnf~tERwNV#XylYxowT!0vmMa({tt7q9>QJK`$+te%jZcN9WRUL-gm{lUw^Kd>mF_ zfAtqTPPEC|Ws$@va9 zrp&MPk@IgE<$mRPGV7HQ=PEB`bmvRRc{M+aMAr%|bnsAU(^R(1Ob%m~%9E*qM$GkB zW3e|EV<-Jl8t^(ojei9H&0j?LRvrfPR+LzL4p}>IMB0|?kg@&K#AlJV{Whd*{{oV? ze;J9}??mFRyO3!7L*yR(3o3nHLT9=;rcV1}xj%vO^&HHN=3sg-9ZS8GpR`6}u;4JN z{oX+Cf%}nd{v%Y{-h(oeucKrS<-2=6k3v%(Uh&&Vvbh(dC6<^z?Tv-rbYSEp7REb- z2%>vNdge*0S8=C;B1{aSAFeXW&P;jeI1Vo%1o3{l2cILXl7`x`Ggm&qQ>O&6xLrxzQzBb_}D`jt~h|@p%kibR8hW6c{7CzhoKOJMusWh9uo8J z$b!)FDCGr05MnDiDvujIk$Ln_h%vnb$!u9`cN>ZwZb!cTtw=P#0pV0XNIvvsBpmn> z0?lqifaTW^e()!VbAJq3;hRyJeT3de6);C-t~R@=Zna;{4Vkw?nB;@Kcm3=AE-(+ zM|)KO#=7z-Zngk3BUqlE#`J&&V;vO6no%tA5P1Wq#jtV1zL^{4Pu<)TA-g7Hg0&6%Cb>9K8bh%aG@QgM zFaHzORTY?>nZoeU0E&wWaQo+O6@LBo&wqyHg?TJ5ElQBzrpCvR5ECsdcs}`wj|<_4 zx#9Xx;l>-T!_7B+8aLl~1HSZy&%@Z*2-DM(7#kbG5V<`+KP!YKrmnUI|9JidT>q)- zaNQ?9iU0k<-G~SaM}2h-9{ls4@Ud$?j8A?1Be?OpPm(`=iu`P92e98~r?4hKC1*+bPKj_~=Kj5n|G3K64$OefCjAM@fRvi_brf2};Wg(?eLA8O991KQ8lB zLFf{5DZ_`;oEFM|rMZQ4`=oq#eO6t63E{H9kRT-QlgbL|T%|vx4~>aQ+Be<>O-D6K zGJ}yA=7{2SFO+BcA~)_hG9sLj6m$UD(MN?CWJnMSIJQk#3HiHhqHQW;Lo863au`{$ zb_ny_2H&F_;NkchTo1eok3+A)%jr$H9e5pfd;Ts2A?Dqee}nCB+)u~0pd#BF`ANrM z^zI{w@Ug zD9m;}2nUNNvCs4|;!!x+J&hyw&mhR{Z3Me-K!Dp@$c(c@S*9cWT;7BOUE_85HAMTe zb&wfid@V$xOAU8KR*VbEGJKH{?Sibh6DZ3LKvAX-3MkR$^ZrCn6l8=-f)F*>mPJLM zzYdp0AZ2DinKBhRTv=bff(j88mH!0&iZr9FJpZSbKNpJf-n^|};pZhcc;rTp{x#=| ze7{S@dT#6QQ$CA)TwcFgke^BEcV3r;L|$K1oX^P5&G1liCyTShd^))a5n|a=T`WW) z&THk$n4!v=d`!-pMFmZJE>BR&Vh)cFt}iGFx3q!~@8h|HdKzm`o|{7DPz3T*W6)5M zkI|lHEKLq$iHCq2?iQ9l>?U`r4RNqRG8T z;bvAs_=+Hu8NZqgMpz2baavD{4MBQb7}9B3kQ9RI%plaJA4jg=CdAwR7D*=GMz-0P zQDpUblv{rml~y;R!r}&$nSTbQVt$s-quAmbbo_siY4#&@MZSTh+9N<`1TdTnjFc0V z3aW@2q7E3XCr;9O196(x^%!Fs6)2C>H7ncNbs65L;pG{6Z>BS(XtaLa(fv`R=-0sJwv9&|DeF?E|gk*5fzpd3}5@dd2~IW~QH)yiI;%Sil^leS;Jp zgPD{bvS~kuc`V!6w+=I%1<=%n<8-_kvX4H6D6=0UWc$|;v+Ju!+Vy25 zZTk`uHhmGv+wVmBp6?>f=zo#6_a3B~-iI9fKcT|)Ih+iA7emEPSZE0s?+p~kF+y>F zycmn)<+QAz_fZOTXJMv3lnyzeJ$f@rogP50)sK<7>ucox=aI1OHso7<7umKyLaFKwjWTS`2RW>`6O#oYxr0*{hoo?%^|1j_ z7A_68Qe3PB1`08IIs^@I+mY$`XTQDc7xs%>e>g1g1_sNx~_tZqV) z?dOnX^*JO_ITLAmCknm(iqTppDc+7$i+OcsHJw5b66LY56f*2@siR4Op>wVfLFVYM_`|d}S-H#Au`enrJ{w$Jr-He=FH=)7&cGT^; z35}LtK_sQkJUl@9ly^w4k78M_$^9bt5z0Pa8$zkFbd%Hb(0Cnuyi7TJ1bPQzco z4+}Af=MUncX{9jZ@{`I=O+Mu_5h(V10a=HBjwG|MBZ=-GzxRuXGQI<0d%u7n^E(h~ z_YFktzZ-GR_aV*wArytbhLbtg=sD?+sooqa6HZc`X~yhC8y2Ri%p`v-jGdx;lw-ap z27}d(h;w=nZri?zkX>I#ywTT?$mwjy9Z1=A2h#U`4SCl8i*o1R;-v3mXpj9Ddb4+9 zsNxVbO~IJ#%c5tgpnJ3k%kia&G0Y8*VYXjGb%1d!4E15UrvbBU**jT`*`YYJl^>uo z{ohEp`Kb_aqc-1$M58Yv%ko=PH~0<`jP64C-XEeeY6Dt|4`SeS0F__az%12i<{Pm* zOZCaAPVsTl^4K7yLkdR&a9u#EQyR`&mGR+fM4A5@!q7EWE6V2*?U8fjt0K=-h(Vlp zwl0jCXCv3r|0ZFh3u>_3u~kkLR92 zRaq$}Ml?d)dG6V#@#|mx0uTJ<&$#!;_u%6nxdz|)#y60f5KHF_0gH23o}WQYc?ll) z)9>-}Kb}KUTnt?si9I{E;iGH?bTRw9GuKUEt#PfagYj@(We|-r19qi$B z_z<3b=1KT_d!VK96plC^z`=d?@b&b-pMLjSeChMIrP@JEQFMZ*2xbLU;B0fGAfB3_1anC(J#3w%Sas2-Gzd=Su z3d&0J5fI>p+i$%dufF^g#wZV-8t)PFKJl=qN(EP_8~FI22tK72yxqqaL?UB;5lsh0$lh13&~;TC{A-kTBHTSd6cXpZ{Voi z3pi}`EF3MF=WxX4B^)q)9#%V^fce%(vE|=?!0rtX2|=hl%WFjtit@8jEribTlLR5{ z2K`h)=(7KoF*h}a@|;8*GT(}5KPMpwm1hSaKh+hc+aHDTw!gyO?C;oT{*(}eY)u}8 z^`3`dZS)`x+dc(n`={aM{3?zgcmW|^@1i*K0CE#;;9~zA_8UJ2U*|Uw>b_M7LJ5I3 zV%$cy49bjlq2&o72<0TWQG#_tewrt$3PVwx6M(dM+D;Ef$7!m7jxC`gV*Wljoe^3#Q-4iDuf3qyvG8t+nNPFE@HQwTzQ4_*E(RqCYkx$?)yHSMQy zvNTs%@ubBBBQ-h*rP)bnJ6Vq5t|s)iokn9-kr?W&A}jcybzDr+9x|P zToQfa!jTahj`Wx?K}KAd*q@UWxdNZBPfk*V7Fwq;$VrYxUUCd_VggVQ>xuHj<0uH; zi$sTqk!W_0=mg2P{sv0zzKTk_FQLNb4wPEmfnuvKqtNOb$g{c|*_J;=qVdnr61EWw zbv{5>Dlk}vWlcSCYK0|D1JOvFq3vcYjj$L;Xxa!0e=SQ?E-sC92$n~gPA$?l#t62q z9dD=bC1{^~z6^^p%i~?*iz@C+6W5DL@;ikvv^-RU<(@nYmU<)m#J>?^c|YPze~CoX zdy#H_H*zh$j(oG*QDAZ#@=ZR6Jd-aV$K*@MGW{yj%)W`x9bZAX*$+__@g}BP0su`G z-J^`k@&>wh+bTgwCkn}NM~WM|^{bI}{I3v%#1KtlLT!4VJh}FG3l=7t1oIO-jNB=r zj?Sy026i=3OKGVVb0ala7^=qdKowC*R0x*(%Ypt%fcMe5yicqXOMPVqS?n!cLEeX6 zqL17&fb8CSEcLNFCFEZ5%5p75Sm-GvidOAk>ML4dxxbhwrF*W1_vw)DOX+FVe#tFf zLP>AQil64`-t*l$lzv$npnDCGyMt2LN>ow0t)XKShleQ+Yr0n6tDNVaFRS9je*w8% zSg&j_gia9Z6LYA{jE!M-bXW*N^BT%eM%pOM>M_@z15KqL+R|-sDrz%ogI+y^m>PikPH# zJxB3-vA2Tq(PAt#r(pI}2wis^eW|;VV*N|_y!i#h7=4TKs_!Ds=q_X*`aOCwjWORG zjM=ViD$A-cH%w`a@;?@XgdjxeQV2OhuvuL;UI_C0WjDkSbhK2mA_#FO+z{n=19X00 zGeK#&FBfB{0??LWjO@dIMC|T6k+|oJREB&Rc@~t%ntleEyRJpbwvQuW$F+#ra}%OX zK2Q1Vod`1j4$8t`A$KC^J>+A4xCYb1XXx4Jej;zBcl|yQgk)C2nmEEVuhpxgJG+&84(kiiPoddWIJ8kU@*%qm+)BajFAM zU}10olRb?Tu2dJ8uAuWX(AVOJ#yl&;SpOE0yMBP6tzSjR&aWcM_&fBBKSG}KgDCZX z1tX0fnCgq8c%BPP)Ah3rSe|L7bk>5I;SS6U^=s}xDTKG z^!2#sfBpvx(-X+cOv7~_`7l0n?I-ZapZ|y{%@Bh8yo9CAEB|;F(^QU4Q96ze4#54t z`6YgP-@W+7kAH~Y{QM{Q-|v41pSk{8eEaKP#gBh@H*UY>W+CX@bltVM>#JYF-|qh- zTn;)QKO+?_Cu`AITaA;|6&R&_eQIok+#W$geJx4~@=;n?0Do^Ua^tf?oXN{b!!LgH ze|Y7&XRt*6)bw|wtS}eVWyMHOipO96@LRn3?^ndNxmg+5vtui6y5V{}_xC4IoS%cd ztW1;@6{7V_BYHa8P({}@pFWAEhI(w>xB=h$_BZhG{eQwy#{($L$wXyoF=E2Q@Q^=QB^?cfY(38{c{jeVr}j|2|Zd6yRiS6^3cOs4x%Z<)z5U z$-=Q?NAaT{{||ohle_WV?|cQHyY*9e`JYb+F=&2jK+GY;bLa7UQw5=`8P0qE6AZa| zK1kO~{RsN)!u8yj+Ehzak6W7T!sNhdoUTZvcDuK*4r(ZlKut~%(!vfS*4G}Xp^ium zKa8Z11Hw=tFa8Kp!=!nDf=+A`RzW-z+#!qS;9~zGVgvS|AbCI1qb$Kwp`6(N5)PO> z3H!Z|5|3fu-Y4K_@d6H+{{!|$&%kQuli2a*{bCLwpCj8=1R)+WF3MjOgwFN51cK0l zxKIvE^>?n{GG?d7P?8ys{U)0b>2rt@jz21L0#TIV0n6P_z|Qn39HofwVEGj6&7Xkr zwm-pi`yXMm_aRvAc>ss3p1?ti$8miB3rLMJL4L9w{ExqZ{ict?+3Fbt9(#upoEhQ+ z%n;>mhUCx#NC=`t6?p_jDPBm8a1z7CHCDx>rS$!-1|`V2G`N*fNJZk!0E^EO-cbYBpHZp7qzcfMX zlT`8Lx%FtB;mN=SV;z{68Ewbh2v3;aifJlCr-qs_)qe(4eT}qi!eoCl#`~HuO%1qN zO$RM`t_iv?yFJ#5Wz9(}_m!ZxEC3nq8xdypD8fwth)C04Bi7_zB$$4ep6^a1@BJ$A zH6$B-gSZO`M&Cp1-v5RF_U|Lu{O2eQc?V;s{IEPk&pcL5ZZ}d~U<)BGzd0Vrg3#JH zBcUHpuX414&}usA{jxwuX^T4^r)YhS-v2x;`HSl5CM--gVsWyGjx}Rhe6ik6;mOur zv_8@zp`l~L%~%>dL*d<|-KJ~SK<5yPgXAuqyEvd@iQ)+#1H~B$a$h66&+A(F7`d;H zxF5N@*x!ixzSDxa{_}&+U7+ijCH4!svrPU`BHfq$K+jI`6+!^*(n0ZFz~Tg>^t0CA zvRmx_dMNL?8cG|(EUI$n@cX!o*2Yak!=kXDF*nB6K_i%-7^b|3((q_E<^S|9M$XWC zEXOS6akFiSm}`l^LQ?={PPt>Y_5>Dc-LX{XO-p|)o(#oub1atIlCj*u7HL^xP95+> z_CqJ>J)Fc`Up;1ePhzUOo~XlQue80;Q;((IDxkj%7|f&dQ?bg;k)yH5wPcf z5N`HkL|gt0bz!e#zSW=3%f$RpIpu#RF-h;3zhYK?i7vyPS^Cd>A?U{oW#^{kwq$9- zo#6|EgOujFG1*y*xL& zjqX5@+1C+l{Xa-?dl)?x`zYT|p|YWZ^89*CQ#z2IN0*U>EkqejdGhiY zO@?pg7e;7F@o<@1VtEi3JhUQ#L^i&HoIZDJA~3mG!aW_E1A+s2BoiDYD-s8xk71-KRn?3uoyZ*VL38J&oWJU=_JL^ zL8>pbVrJ+xmL_YkI8}lfO*+O}gOKh1GNLSh2ahdx!E5`s5o3EFioKpjN7`PDR2`>0 zG6k3}A}Wb`y5A{kyEkII=QK23XQ=+sgBgnZ^FwscVHSim1TQ74A&d{LgssX44<5}x z7Uy~WOhrC^^P}(M#%n%|TR!zs+pu(PkxMriBS}0rs0N<(=|7I0*~DPdrVQ=BR(P+U%cf;YpqT;f8;~>1i5_^ZC^+3eC$IX!gU|J2DjaKEq?H=uOceg zSGYMnLV3aT1m>troShuS;>;wL=BC6@YzwnfqO8o%O2-|ay9M|C=!Zy(jU+ceiQoM6 zUMfRJvAj4-*GyoR))S(`am%N#$BWNCO?mhzMhE)gal!@P{@PbyvU|Ju7-N2F91GKv zV(JHWn^~ZH_H?yj`^L9%1NrgpZ+#sB9MBa`oBQs;tv7rU_y79m=xL$4f*^>KpzK7ok|4JK)QhV~~U#Nw0JegxNFcMWd( z^hfZOFWrQ9H@t)qsuwNI4O5;wB!)*7?@gO$tEikmy1L5Q1R-h2K3!W%Y9Dt}eWwkB zos}rg3PEO^D=Kn=&`=hI@(f>8WccA!VFaqO0#KhHirU;DmKO(Gzj@rHg zXX{sS!1N#3^Ugys-SQ~>Ty}^d;|h|G!({Vghz_u&JVF(O&i0c8A>H%O&CRQV(B=It zV}=T?!n7FJ8@+=tPX`pF_@X=~03}&our+=f2d$rn$B{R1*q$Q#ffuoN>mOmZ<4<(# zVHj=xE%urH4OYAU0(ZxkP?Y9?q%b2`?Ytk>J0F0@p;zGJ^g1HEcOogoTA1WzMmr-T z>WG*_h^>U!LZ~R65=xpUa#P$cY%GCsmj){wqEe6_x)!s_6CKV{P8KTBKPVAHaBj8>;iuksTLC6`~O2B}NL1q29(C zAq=r_BrJUNL?J`MkiHsouJj5Hrf|876K@^3KhDwb0wPLil8KZs880kGjG-9~Bkt&i6=xwb-=b0)r z))Y}$m`u+ejm)Sh6voA%oSwfZ#v5rqHVC(Q8G*b10>AA)h3~fSi?4ITc77YN#&;vx z;>Sp~{3+tie~xIg-y+=fFNm;w5+@^VFk6>^rPd-Wbk||7kIJ^bGb_vx)8wb={$}yD zGc!$04YUY&g7C>fTIYTIH8iaYw8tjsI%d4TNi604d@c(=GsEpd{9(%!MxG>|nH+2u zq7hrHOb?vKOn*HV`>UWim4M2)1Bf~N8Um~yL$K9D2)F(-qOE_4IO}^6Z}k)6KEzx8 zg7^*MEPsy}%ReJv@9z+3`7pA5x1crO9kac8z!-N7aYyV2SP(LVXwXnz$Y1mGFme<0 zUU(w$F?w$!^gf3gFw%b#n%;Vh^wm?Hr~#84Pk4SUN{91G1q!_d3YvN+68I@TiXr-mG{%pH6q7lwQ- zvp7ugLyK@vdyeE^^7k0eIiW*zCh{?!k3zV$+C9ll-MaFA^1AY#3xkwb4e|5Q`Vgai zUXgF<%CD=bEITj1$_;H=*B6C2AD^SJW>H8Mgt(4AH%jqwm^*uGDSlRAVYmv*!^OaG zK9+jZvCx@M4V5iy{Y2%wQV`Pj*VV#G*m2wy@mDJd&1kSZIY?pGO=TR#4gNZPisIvV7buco zw7Uco-PyF7hNZ4}%$y2DU*Pi)@OI+VWWkwSC8$usBgk&zp_T z`d~DbxS^}U6+?CIm^$N6X)6rN{c)5wQUMJ;`w-n{uz)C{@}ijBF2l5@hSF~%#rIaQ zwJ@h?wpwFBXmNCs{5B?pnz=#R&z8yK4MG&cbOnWfHu_3WAj|W0xEucx{?@-kN!aTc zs&vF+TLc!nlj&I~ZBJEGo=}ZhO5bxsr>VR;Bj&9f@8a=WTH8%5bE zD9O)6ZABqYRTZJKI2XlvS*R?`qvN@>%!G#G@&wht=BVzpI5mP9sxt|ADAlP^Oj9{I zLveb3d<5fEm#8Z*L1jq+dfJ;&P0RL1D*I+9gm^XD-ynU#^6oSy) zr~8*=WuUc=(!XX169e58R{5wd%t2dyHRUbjSFT@8j?#TKn54Sg3@v${qyb8^1LVi5 z$`Tair=qev8^wjGI9XSO`I$kCaC?L2#hYSlL&_gjK}h9-QPx$sUC8CY+VDk4|hhq|31X|*&#c|8ClVX5g%xUXkSw? zTwJ909{3)42acA{y#gNyx3@OF9! zKF*tQeBYb2|8ar;v7IY|km;7kRYB-HewRQHQiqJYupbLTBSH|e-LnB9?heRH^g&sc zKT5N_VQ=<44%__`ey;Dr%jFHYAASXgte=Fv>BF!#`U_0A{~mic{|4sU|Ag4U9YPG^ zL}I%6_c&ns7+m-N6aFr5iLn=@IfN{c8Rd+$2q&b3IU+mum^5@;q8m<@MpA(kj|iG~M#@l}nSjiM2r+LD&)<_86O5GTAOQ zAv;kWVuDjK2ho}3hmpz@Or9>rWJ@i^+fHG$?eq#GOgqznkq%mRo`$Bg0mGfAR-x%? z5RCRTVyySfiukii_!()ZXKKg%7=Z2H~al&}*5lqw`!$kE7OjLOg-WaX$MSrmu zdWw88S|5*vo?<{#NAZBaMsC3Zg)s|4LQJ3rx+Dm3#otine{I}-KOq`6lr}_~8{@e} zBo??qJwf3yN$F>bzq%a2`~)@5>7C7JIF8dh8y*myYSV+g^g6r6SJxALyyP$DDO@!g zERBp%_>NF`({gll4a;L=^!~@`y-O_7K0bGDc$nhE5VE61zT+TuS&40$#-Kn+`l;sC|V>4`2(QGM5-1 zDQr(sKENW*8Oh>|@~A}(3!3fp&M5z43y=N|x`y1>3{X5Aro2L8j@D<`Vu9lIB*k?; zpRLLkhIqKmdWt)BL?yXjfT^}vqz7(8itk2@uyx{aIu`pgKp7LIG5)};Rpj$ZK}erV zFA6F1Gb$fPsl3!o5L5J=6ZE`;R1S4vezFluGc}av3#pt;MsK4R8cQ8eoVW=|{?8)9 zVhU$sa z)UIHrDBg@ynK97aCf28kSz>-{h|Z<5dxXjeR%v2Z#)AuM^=Drtg0R+$*3{EyNxE%};h{uqXi&yqVVgs~;l{1|`0 zF)Yf^31Vq_jNIg~>8G|vGu0(IFQ7USe^fI;^)0HKP7P7mv!Fz7k5RciNM-c&B$xT* z-VD`E=jeQHPw?D9KQngJc?ru&x<+pSr9sE|17L`KLFFMe}v8Mhv97VEPR~br0aJh%EuT1$F{-F z=vi3qcoKmpcB3-K2ZbpoBtgjEmeRK>2%YUG2}0Tp`l)jWUG^Uj88?cOj5uK-#DY+6 zf;UPt{e&R2&+G*_*}sGk?`;V8+YTR>*Wpc-<|F%_hOO~~urqlGJKy;QZ1y~e^k_3- zCA9sG`>@~SZ}4(_1;=ckhlk^gdmh2<&69k57ZQep|T(t zxv3sP5UMB$r~TxQ>~Qq7mQ&%^EIRDCvxJ8!;*Lb_q?9rTWkw>Q3PLI>Dk|$EI#pJ- zbrmhSvxqBP42v}^s>s64Q0pl%uMmquMX9kkRg#0grg~~bP=#z_7?>IXwM?Kd2=VYA zY;hpFDKBL)sK2QW)dlIof+v&QPK#whC=}^&p~&Q+;F2PdMKslyQbVT`i<5)Y;Go7B z`CmqKQYyFQXIK$^R-eOVgi;jZIV2=_J_+vBq5aetnjIX#L}xGh>dv60paiw4$taBt zK}S(4CL8lH-n4!k}tcE)XG+3G(6ODh&j*B5qmS;xkUD9%r_DxNQV}hAUEYD607AMB(dhSHm z2xc`Sm>U@tOXWH*nfcK%!NS-$#RGC{atdIkrdP471ykDN1fMG-@8fgX9d_?RSel?` z&|Z(}8DdV$th6oeO@83}@wp7O0hZ`qd_Qr$79lWc&&L#9KRLU~uY9f{B)91v6EoUp z)gc|DaG%g<^GieT`27#(pL64VLJXRs{9=monVH!EdQB8}X9uYPNBfBBQOajV+bHUG zio8|iwHg+n>3qunX1EhvEA-3^OB363{Kf1n#rr905-=`;YG{!^TI6z#>lGZ2xL%>5 z@^$z$mWEDYX}Df27c@xUR>-5Dx{%^+C4eVL^xr3oK1fk{?E>jWj0CWif~apy^@$ z$Y@wA@K8C-bxhhfGeqSy$tDS#Gkn0{)=lQ9E&;|T1fgq#~8F%g<2Mh~myj;fI)F?``5@5gg z-4#KoB-5Ahf}P2;aI*g=q5}6IF4PDSep?XY^$t9oUxJg}lQ?MgD6IDU1rDZvgWI8h zV!zp=Fxm2ZI9fdkKbP0x>G&$~FT@4zMSP$cCAR&@i>Cw_bp*+whme=xikkdjalhn< z!$^sCMscj1faLIoC?Ses`OJqMHv7$ZuqP98SOk4YcmrS6%`eg zvmrOK&C()cb>CDWmHW;PJ)1$K292;9Vt)<~V{wQoZvzvU?Hs^JLn8)is-S78 z#YAg8=DVx0JX8h@uJSxQl9xi8b zR6}7jvWmIUQEEVpVPNqL>_`h`i#-zcn?MEf~`9rq(X-X?olxIz_xGc@BB8ICQZ=-9P>6{ii_cSInJY-cRl{HnA&Um;h z%9m!kC_Qy!ngu29xL<+teSx(7pNc|!{rYZDx~KN*((nxBfwPns&QqG4p>P_*#1w@Y z`Ehc#4YLcan3-;%=c&fRbUEd_g_OtVP(DHB%Sa~W-TBm7E(8|Ku{cA|IbBa-dWOQR zMdY(AmaLbLD*Yx6326AdD-Eu@DB*p=QfPwf8UvJP()*>dhTrduhT

    qFm7eI<82xsD4|nmnr;Z`nA$>UZF%`m8UFs+aGBf+>~;K!06=^ zsm~MYg7?|S|BW)mzrlw1WmqQV7~?bu85Qh{tJ22Tr2XhFj(p%P={vWD$ZHr7h;;9F=JRA0 zWl zlo3raesBYf9q^M}Yb0SMJVnD1EJxq3Vc5PHa;1qj_Me-M0w^y*j!eY=!KpDraaxOX{>9$Fn!#y7x>NloB7 zu0H0vwML*H{(GUcB_Ql*OZ85{S85Vi;QZQ(-M?VFFqWnf+X~0-) zjGcwp;E7loJP9jhpezZQg7wS2uxX7Sf_x_+)ZYy!55x;|cI0mh2vGneD70;L4C0rD zVBe-yDmbQzaF}xPAQJZN6d@!69UC`POQGB^zl{9vzKg;if2?3o%R05C?mTeev`ikC z&r4kh^Oh@YN zT#w^>HzO_KfC|Y3F9-xt=x$P@0+xp^0%N&cOG?D){d=)GA{-Nk4U>gr0M;*wM(VL6 zxR`hxE5ZWMtX36#{mFYOtaIl-U3qv;6~VWAdj)Uk-ik_5x`_I9#Q$g{?76j`uKfxYT5vYwywi;=TZ3Jjn~ktU272_cjGn%9qIQ};!?1o zLRA&345pu!fK98HqE*A%8b4_GpzbJBq7aG{&WoV~yJ7vBB{*?pH+F7~N1Yl~@ZQ^R z$n~CxjR`{Bk|4xJ1z_^np=jTRn4UZX9a7oTDoJ+)IxqeOhB7M#qx{@M7==l`f zxR8oXt5%?LsS;`-L_moB)__4g^7rjDy4^U5OEUjmqGIIqQFT{n6i@HH`aJqcKViIs zv_vV#NygjRt$mWuoZP!z`r$ELmAqU{J&V*+C(xu$Exi8Xvsf@^n)DG%NlyhDiGUF2 zOQS@)nM%NoZbHt=+O=2#p^C+dVohWOk`5if_SJEk_xR{gVfI4QqHn3tz^?7lyIl(` zkp8~Z%ml{jX;=J#2SM%60e)u$dq zj;9|}#X+^wMHCRD5~6&uf(qDHEdDhrm-rUneenr$zVssAe=VDgjr!QParM2v;vfqY zx(5h-^d14BcG$mr1Kej$fZL>z*t0EO`|q9Wsk*DXodXbZcO9?u0Ra+%G#pdh+<+^o zI4Aw6am|XDHEFbh9t3i9UXs4YF-syKME5f1C5^!Ov*0|qkB(^qxSGz@G#LY_!b?oU z!0zqTaz-K9@9CMANB~Z*_FSQW=xNm*BQSaR0NupKyl~y&#wJ?*5Wufi zwm6=9?Eh&@Nm^hI@6}1>^4^+Wm6G4;^;+eMYg**nhWG8FKt6d114^;HoTH7^IM)Z0 zPo2kQeIjp57ox+ucTo3gIiLNv#@FfCpcVq%ry*hY76nW;ED6KFPObHsw_kV?`QFW` zZr66jFH>usyBAO6%z>@4z9iv7;(qweo+9gU4V3>bKR(X+vRY*^&QH&l4G`huu5QdU z&W+5w>0n7Fq#y)=7$Ix@O3`_lM_E+lcwRS&(8`!)O*yhx>-LkJ+3-W*uO#0Q@N}Jk z53@h7fY9D`D-`6S)zieG{dDal@N?nBLG=p3xRXqW)kNv1?i~1n{ zNM4c_Les_!!GvLbwLfG8gjlavWL+Q8t26SxokQK|-Icttudpw(j67<8kuob7B(jeM z5S_!BqX+TKKmMU$PlM{^QMv4Q__1_hlq*>P70P^rs^yBJn)K6eC0}o6e-71tD2j1I zd#8_UfXN_Y1}Oqq?9a3$zkKGn@|x9uD1mo#yd?a?6yfjoD}TrMk4JZH zLCta{bQ2uqCdS-Kr1hAr_2er!9@2!b<>r&i^1VyarkBsjnlI&w3h~2h*`7t&lHcH) zf}bJ#OHbn^;l-YN@^O4FGS`o#ilRd4V)#M$!8%pTVdj)^xFr4Lj`W9Q=_k`BjKUz1 zKbzIB0e6whuCTtOZ(f!<n(EmY^(^MCGz_mEDdl)q^}Di7LG;WyrHrt_r&b+9WlqH z1H7g(CQxs=K1e-WMfnbc@62vkFtZEhxwgk-r-pDD@)Ksew1xY`4j9$9HU@R6gke3Z zqi35R(7#h5jm;{Se|c7}5SC6%dMEG)fr#saP8`1My2{%K)9LF5?(OXj#Ne1o@6f ze5?=79@~UF7iHjFuw0>;!EOXA`vhRWZl{dT{8_|r6A-%S*e!KK1U2rUN;DrggricCnw69tZo!f>Bg z0f5Xah5svOj#xX(MYz=6{KCX$mai=OQ+Hq=pwZkxN`0kZe2_hAt3=LckhyZaS%6C8A~KZ1fpbYSQ?FHHLI$-Ia&u$_@VGj zE0~jew&*TT3KMi0MIlIc1E6FIOjPRz zaUqM;BJM{yuUnz4?nn*xo}(5*#v*902t8lEmlK_u)yMJuJK*L#3h!ip8NJ(EF@#J# zQPE6AFL!KGu%T7M?oF%EvVKi`^To#q5aB;n+UtNY4g>pk(zrr-rLO1CcE$FMt5By# zWxVpjQz-D|hp1k$Bx+SDgX)z^qFnJp8V{&mm9khL7omz_I}s4NDr5ed)RQWW<=bw~ zPIy0O4)p5K8i#jm!t6=oQ24Wt(E6uZ*tTk^mW#ky_cqOt?a9X!G$J5jlqB~P1y+Iw zbO(0`E5jG7OTp>moD?i5Rp@gp3-;Ce=JNyy4Io5-MdKIoeG%$!U9fzKlkQx-AbCEE z!@D*q$YKBs_HE85szhenvt8v#>zj+omK(Uv?OLE)$JPj5v;a#ZLl6@dfbalcL8c3KhC>UzRegv0y8I$LE_=PS|%zmuBVa$P7-($9> zN4I?J9|S3{Qwbzxv(^o%W9~G)Ec5KuOIRHhfs%y^;`;*mFvEE)W=j6qb~Va=udx&g zfBK%D*RNbwm11m%dX>uHC!zcwyp8Nn{u^I?m|KCH1v950?c`xxO_F{oc_YAo=aRGq z>sE+LC4!jS*DOW3@4nHPQn|A|kHzz5;k>lrr85K!5)`PVf`MQyl?*X~3sE%xmokpN zQA;AL?S4M)4Jb5G`pkQ8zm8sA+Th6E%}9~8%4502Th^KU$iW(S z%$iR)cQTl>6_|X?fL{1K_nT-`y@CQdYN5t_JNp0Z31jfx=XsFhnWvHMsi)ArRWk(6 zpRF;8xLcjyIk+WW;}X$AXp_vrRJJe<-?(A@u{6ZjvI3HO%Oiy%0;MeGAhSE1*E51OtP_qay5VF!n!02? z@<{h|1i?=3mw8vxFlllQVLD8Mzj@sb2pQ1He1}K=R#$qCdSg9XV_3!!iApm$a*nX~ zjr-}|+LlFsE#f@!Aky9Sq)gt+qTi3G)aH?O&UNFG@Zel~=t`RWYnb$b7H zo!<%k5Nt4R#IDG*R9qN^eznryA=gV!;=8=>%iOrqau;{{Fz#NJ@p{d&1|m45))yjA znCr5LL6{wp2{<2cE+Q~&@oHwyBvE-iL--IX=D9hEYZfhP-+t*Sy!pZtcsKiV%2&}% z+y}3{s2~xqf1K-8bqU7%@8@^{`QCpMuRQ)weUDZ`uRr?)az6jKu7iArZn|>4{Imi? zJkoNaTbsr>eR!A5TPe!3a_%v_BIj$9N6tIuoG#P$tzU^chjdSt%#SoyrJ-8-+m^%vefxDnPZP`U#G6x4sKqJLtEBp+?wR0yK#7H zyvFzOnmS(Hk$w7BHnkR_g;wN358*{lYCHZCAVeat!m-Bo*Ljr|Lo&B2PkuR7*LLz< zmlBTR$kq)C1by)8OX%LBF%oxe!-(#k@p-N{Q0$9OaD2yR_|2M%LhrwWQu*>?*P2+U z+t+L7rCyS>uIN6_#0ygJ#&I<9m(tzF31ybwM7u|n3#+j5_I^5?;OGA6sUZHk};a}gP^0NdBaNx6HJ%5+5gPeho{SfMcpnePO@nf)<$LKn=R+!av^M`DTp z7)1LzAvSO{!hHrKcz%Bb&h3i@GrD57OKVxz+Ni;Ur&|{|^{RnhZOWp5$BO9IvK0Es z@qR$4Cc+ku%W@g_3x5_M5;W?`#eB3)@fk#*P&Fg_+@BY%k2f=4%06am%z8Cnp_rUV7u~-^7Qkd<| z@R-yN{TWOu?GyX;>fYfz{Eo5EDEFE2HNiRtD;lu$kDi zB}y2Yy?<*!NEtjbxmQJKyH20I3>2M+)RPCXM+BYtm@tg&-v=cN6~KqD<-jL7bE0m! za+o=8EOxJ5Eljj9jA`eDfu!=DAdfJ5^83;mVd9d6p*v?O+sQN&d?EvFcS}LaEN@x# z#}M0r#B&OjC-!W_OqXH!p-4V_{{9=t_tD!LqLYRgP7!dW--@8gewOh){icvppYCW?zYY#=U8lmmsRyfX-V+e{jU@p-s8qZN z3Vr+`d_AV)mW+wjF(LTz`=TiO?bmXDA)@?!P^NGpR4-FpU1QO$$%sB(^qk5By1J`e z;u{5o4sG8Ex3MFTE8ENH*|rsu4(-Gu^p(0Bk^$zxf>YZ;eNbpQ_`#e4k)} z`!rmWyx+Zb2{&bY9zD1n!w2_9sqYKHbB-%EuU&>FKUG7m%4HD~<_EgZqKm0x`?tc! z!wqd3*T&F3oppDl0fG#r144A~!rit-0xts{=^p@m3_%$aAkKinryK!H3TNk4l@@>~QX`}D%LRk1jK z@(?^^JP+>HPF=ZONIa~TJp}5mNPj0_Lx3Ys&Q~#_Uw4foL)U0t=^B9{Dl)F5 zC@4kXVC$Nts8zlsihS`g-h1^Gyqn`?L(Sq*Uh0_?&qrK%8O~%Vj>67i6*4JIO#S4Ck zx-uRJZkPJzO9e!^^Oo^;s{K$5@4o&Da=!d5!u;l2fQDoJHGP*Zir7w!5k?CxTJoir zfxE0FZ-H}XsKSy#&guHkebN}6?=;_%u2}^iyzwfsJ^8r2lUKpFWkCzI z?&(^Sa}5EZRZ)T1E#tIok#F!;w&zj$+x)0ip(N^5EF)Alo$6Kj0Y4W18gI#%%$4m0 zv~N;ZUEtB(48fai@yjrO`UH#_+zWd)tx~0l0cz|(49^WHL@^oP6(2n&AVi906fKO(mJJY!|JNk_2 zHxH(tuW?!Q-y`;YJK3+9HJ3c6*YM|v1 z0i7>CcoWsjeXnr|Ima?~C7&m#)Te!Obty-8Sj}oxQc&piXa9vy-+mRf%a_oN5e;kn zh`~KOD4@=@migcu#5u{3$)n*HNd!M=4KucX4>Ye?2_6&2s1*%e$a%Vs$I$NW;MA)l z#trO&ft_1ve4q+N3!qGIq?Lph%7h9WgNcF z^B%r>KR1>I_#^qi9<-}h3m?Cc9YsI?7$^`KK{{P;V=KlJE%R!%aLP zUQ-Z=ppP64K=d<`{AHH!Um`RArzJcD5ITQO-2flnvkk92{S*p*_JQz()&>T)r}E$D z5;T7tCj^8Dz;$j~SL>93sOyM9$R%ly>f1%@5z^))=3DDu)-!IhBaqidc=2U{KGt*c zK7k-w1hMSt_3l{H6r_{)=~6b^(@&y%+r}b(OP(%B-Y&}6a1h7PvT#4V^Xjw0!<5wV z`{*DDzhUujWjQn;4^&kUQWE9GaE(>=!t}bJJP)-kZ6H?_j;OcGO+_fnU_0@ zvM7tP=&wwctjJB0TUJJ4NwAm9$zCD{`UnvWnu8S)vxL8zt?uFo2!(o&5gLt<`6J*z zqd(?P>I#nuo!~#KFP1GHhxqWxSmHYZLGJw!Jhwjr-TT7JwF|u5y25`>A2oRJp4J^B zde_8&P8BeuTQ&4(T_#gNDBL$IhR`ql{SJW8Eq&2cX4c;?{oTc_YZozlg>{MGppe3Or5EJ4Azxh2de?|v&4@Zk29v9E+ zjkwS;hz%ZvMeaRifOLZItR6~>+07y5`phL4sP8Fw=rYTrFnA%%yq}bgyV>h3`6tU)uoTTqpml& z`#ol{H(W;zMv&($oIbo;g$N@|Q{k7H0{BshLW=oKK(%D4P_(cxN^}`V#X&|3p`TO2-tFkqp%rpxe+jQV z`55|lZ7X#;NL};LRS)AeP!Ojgy;JiB$obN<@R~VI1mFv}lynBoYSqM>&p!vhIWuLh zOjHnuefz}jO*(I?LRH5!{nzi7`w?&%HUtGf`2;UM_L#=`S`i+G^D;hZZN=yO-Q9FP z-@9Q2?nql}8d6W3_u1#^8j*3gJZDV8=_9-EDf#7H)~C+b@~r-r_Ffeggo-7&h`#xPR2FkeLeM7^fjX%r%HY&^5-MVUt0s_omX2kE&LP!Cj z?(J}R{}x=iAZyn36bv8O1MlU`fpNnJ;Owz|=+L|&vOV(@W=?X}*gH*XSAnnlbX<^e zsBUAVZ&2Asr5}}t*fzsHF~Aeg!UMJkYfv-9a)~ zIb9Jko&`Z~<7&w2_tu<3B?@<5yH6S?bIA`n57D}aKsmuCg2x1M7>6u2bdkDeD_$@k zayFh=m^v-Qxf^!&4o^l8z@M0{cHjTbZCQuALd4>0$(6u_cmNOaTrcL zJE=uf*{{FEN?E(8*rElQ0fhKn=FzxFQ_#gmcT%l9WR~YgA=Ww9k6&^bcTK*rcgtEl z``AD6)hF*MAY^S;veIB$wB(^o$_)|(@!Hj|362F?2u&Q?A8!a>F=cpvDT}OawtD9? zSL7L5;a!k6X;R}yELl8XuAh|WWZu)Gl$CWM>mSFQ)(O{0A4$*%lMxd%OJpuj#00yF{53=5?AeG7nTlwC7liwaL74YwgnEvE z-;Dn7aOn(pmyYnC)ep;qT(CN9G9rAO5HxoX7SHL2h0}XrzH4VSbYKXSh=n8I>DCRS z`_)lUXiWdQ=+nMD`gN?34hXG|oQ5IYYan#NSlqrMYf=^<^uRw05V}|X8#iud0YZQ5 zp92tD6^$_iI>LAMSQ$7T*bwK5b<5}{zb-}$s42&q7~Zck#ty5g)M|}i z)D@A7Ctz9FRK&?3T^2D52X-zIrsRkSIs}6Lnt%|~HUhW0XA@?Wze!XGQb-^}n|ySS zfLO2Q2MpqI92|j%N6%hbm!Us9BivW`sZR`Ie6G~r<9nfDUlztf2gA)vQ zvJHaEkil{!4TAHa{%{*TT+;JXH*qEp%#+TpP@+pJShFmmnih{yQo;a2xd>5fFnD0AkyC-)ytN}*PnbMZ9Eib_V2~= z-~cqPRvG!XjH8{8dv{OcZGhF_d|UB*@p=5oUKAT)3NXR zG(@E^!7Tc%UmY1}<@s_l)-4T3jk3j2zDPkV4P2lC5_eZ#Jxg%ylmaJ=!^B;*R3tDh zDuizkcoG44>R2bd_gZ%JYS-#MKxp5Fm8yhhyb`BA-LPohOr#|q!tmZ*(7Aa-5tL@Y zd#)S2=1ztG0(ba&&(b(5UUJRPYbF-Tb?@0zltvHfg(h{Yz|F-8Ck}4MwZn^#|36HT z@lBU;b_I!@OnnjvpwgT1e745NNj;WC>96kxgwo>&B^<#;Ij8l^MX6uL*ExSi`mEID zc`C0&h(3Q-e#;zki2^z2GRZ$`w#*0s*{@M(o+fQgurl8V?;zV#Phep8 zjyNgvtM~K?8jRa@)F51tHl~t%hRY~?oa;?^&YX^$=hKjK;y9YrsE+JUJdOo3rperV zK>BrceDK;!7$sd#_oz_(d%W|?D+&m0j9Z4gS1yX+ zZtZej8NLWJq$qeOj*gWDdWO zg!q^cR4OU;Qv7QLh6sk#tNbH!zW6Mvl_{pASmmiy?%sE%lGKiKt?E9Rn z(svR&j&$?J*l68aHo&g6vD$YvueKxWi$^mCIM+~d$QVqto+L=hZ_w4;>gXT^co^3y z%-0jOek?8Z^P&g_3l)Gd`6iG<(1u{jcKL3xf?uFS;e6P#W|_KGxg~9uBJD|FX#R|e z7}lq=S`N`lh#(TvpaPBQ7|S37%J7`m=qiq`=L{G`H*w6{=2bBoOTYj^EEj?Q9g+{; zqcxGSAR?&5w3tr=G?DDzHJ}jBHLe^LZH|7xdggDlMwohiFx^|*vgpqztFK%0Ey?`; zB}!MS%6Vq#X3?)BDo5=K(u}_q3~~^zrRuc}GPc8f=3sMN1a5J@lQFkL#&Or?KjE{S zuORQ6*-%vYxZ<*A75MNieE8Z6>bC6d7oWhZPyIuK(tnye2lC{~j!)iy4e!1667szJ zD(Y4*i}|xB;^^K@xZ|)4A{azvE{RqS1cWp%j&X0sImbWeN8Lmw_ioGF%z3gwl^^i2 z}WJQb5R%EuWnKm`}4N&<)!8;|J7Ih|h4oU+g|j>h2@F^}^%o@{LwM zV+VA{M9J@jLA^wdsxGoqd$j`U+rF7v|InJKyR0kDvd*`xQyFhO`_@8bBrIPA;f3GN{yh4%Zy~a>zqSkAuU!|OSo0=4g8`p- z{eH5p5md>T|3@L#GwFT{p`QanbZd5W&sJ0wo|Bf^7T9645OUNb=b=Me<1wgn8+2-1 z*K(C8&jblSUQ&2p=K(!*eAw%o@3CHKWxQP0O3G2u{uUr~SNgdH3R&f2U6^^#fI?@5 zH-7z@r;s=IYu0$U%6NRTR?2&ZQcfR4u-`nqDEwf9niUlkxi_wVY5kMDrjc)x@pnEM zXOHbi%?f3a_x)U078Z!R*DvAD~0Dj>8fVk!oAtBzow(YSf(C~ju~LJ$1=9RQ&$mvO)D z?=Eg$y@1UtqcCn@XZXz-ht-ku)j}wK>1>SXUmIhG*2OfJ=5TXvq837~&W#WeFa(i- zLlLyFAHw_wDG(GezYmrMjZ}AWbRQS9m|(>y_`CNMhP$nTK>>673iVT8i-Ge7Vo88A z;zBt{$090Vg2oVvi=2V@I8U57utJ!ULn5%y{m)<1WgOEsLb@vSgfSx+LjWjo-&P#i zzD|`|WM+M4OcVjBG0J_HA76?P@_vrz@ox4P@Rl&zU*yh(Ja4>)&)&|7uReGWUw@oO zt%VAF_?{f!mFsWG_4iTmqYv?YzAy33r=KAAD=*3MBN5p8i12n$!62G@b9XwKXy(J@ zEwj95(W6tkfbs}LMKA?Jwn_A2PyAG=G|CtG3e%m3!^No|3V;4SS_*UTDgB{sqdLeh zZQQg*O<9cmFlpEbY17Y8p=eR~&7LLgmy9)05hASrhR7M z_M`%U$^$CTX|2QaEi0lm_6Y+bQz4o0yIiEHRG>geg*CrTD-8lpotyoH-Rqa%QxND* zk5ig9%gT66_OxjE!yTBjCX7*+T>Uz>R==@)hXN_B2AF2s1~nBpA&A6p&vSJ~kuUS0 zjEu)tjcTG*<60_oHL6zyjee?vCJm~gX~XJh@>5kbuU`$dDwe`$GH%~}<7ISj*Btxk zN=wFjMj$97ahD*4X1W8LHr@%YqlYMnLswaBFXnTR$20}JSf2zK26Sz&{`sej90ta> zQDwCp`79MGtSj~d)*tJVW#aiQsgI4zqfx13ag->OPn8IF9SVcnB7oAeX7BnnNIt>< z#|hG=@-CSsdFF=X@8+d*8f=!wZR_H&L)w9sAGADBuvyAu@9X?+0HI5%XVIZ`bF^#O z6kZ;);NvkHo-?N@&7JNBzj^LhG|vP6bKT+RF$Z2Vrm3sU!k^_q`R@uNJ}O+&q~eJE zmOEahFU#+{!q{2YEKun1whfr!JW}dxhPHK{oY^sEU{8(9cIoU`dI~*SwS?EyN$AzK37XfgB;%@`_Ai1$E<^jMYn*TM zeuy4YuAOUEBh1G~`plOK3~h{EB7Kyu>?}nD!G8i$v=UQ^p@kEE;t^JZ!vV5~025W1Rt z>ONXdE10kHp<3x;x|^GIU>`4rbQiH43HW^U?i=VQW9!(Vow#*P%5+PZEg3s~I=6xM zY*(Zv9zxgFP4LDGPs4lG6a^k8j~)uQu}(O?XNv+ER0cAZP?>M?p+d1jXkM=>dUtFg zV|j(IFDoJ! zBPPg4-MvKzEkN7Gbx`or_w={PH^&#_dvNZgl@Q&+6)X59N)*nI?Hg98i=#WTwyKL2 zc|JzUIci`J-ThAM9s)K;cW+XQBi^@zH3kqOki+NV!f728j8)O3AdMx&ce#W4a?&we zl(mEJ(B%t3CdLvX5JVt}7D-HlE(Zx}Gv5aM;XC$owh=9g7_W)-t#vGAWc}FdGvn`{ zlQq_}=)XstUoui=&zbo|fdB`Y`6Y|~I7+W?8GD@bxeoeW>(OT=e$Va}jCMy8m0CzK&1>Yz@ER>{_}z438%o~nd9~*~Gcx^| z_0M(Wp)rKWpIyD6mMq)WtU$p$@20Qo>Fc|!LwC|FV2J(xotK_PkCu%T5aO8OrWqH4 zc*1Y-S@r{~4_J92?|D(m!Odsyy!-;9{N|;XgEBYEul?L{uJt14B*yJ}{-6KAM{m8V zK*!yisko9RZFOGwCZTH=5{1P)h9KX$cH)Bicfj `E{ zT0udf9qU(1THNp>`8uDBGY9sfN{OO4uxY*IlX;bU=VYBu68S<1xHnSCLVgVo8WE zQcfIFqO3wdi2OV)gL-yojxMbmVe{%GQdP9x;^vqWGJkMmi_9TepimZNQ5O9z$w3GX>Z_5fSkMKswf=LMSaYp3gNr(!ZjAbEH5fd;;!5~@(h0{W4o)dhh_Q5=t zE(n-C5b7ucS@f(c*_W=l=KLnxP^msKK>tfsxvCv6@pb0}7VcO`{ za2wSUgS%D5z%G^V1B3>3t%e}4QMhrDfY8M(K)Iw-Y%q#_j#yd5@tjTRLcX|g*8P^aKNB@KXpFUU?J_=Dm!?4(^x5f~P zkC~`|kiSPyMEVcK+9i_^7cv?PXLZ9&=ayJFvm3$}4weBlNEpMuSnM%Cevd-fg3*eW z#sp2q(oi?7TH=oVJ0fxR#Clv#-Xo0B(Z2;CWGsXz7@R(^9c!WjRjEib_aBQEK*@ri zA>aEsQRw4$^!%$2-@+H~=0v$~3!;C=_88H-r&WoLM)gwMdNO?Z(3K~26;}Kh_20>VAgmS#P|oGOVbt#2z6`G0^3%u z6oDa01ltHStx-k#OD;?wH(YmVG6n~Q?))FTg?bfBs|z^_?}jL-*oEr{la+4@e|@5YR~nb>!JT9a`h1fBi!(0BQAL2ZUHQ z0%QIj)AW75!=qInXR$FZ1{Dbi70i$2p^L1#R|WbRjT_XxRa2c;=DSUV*YwHooG}^m zXHLdE2YE<)dd_x5iv~5(Oxl{33{;%6PiLG@X<>3*zI!R<6fTHR+opMAlrLQzUE8%r zyQYoMrcnd5Z`K$cS~Nwcmd(+*MKg45)dF4Qyi@b0Xjr`}^1PW7r3)31bthEXi&kHj z>kPU);qFWBpf!Ndp{?sNpmSTD^A2uVhw(%D;o~=7#ju{8ka%DlZeLEq`NTu2WMI7z zIP;P6c}#Y}T-QmMH`NsbyLG|m@4bs`PdtI@rAx~1_SmpILKX5?q`j{vQxQhc@Q8vJ z3#3jq#YM^QL@Zgn2;b+=hf3dnkB!TgKnkt(Zt7*en={%rsDU8qtF#h2x?{a=0;p8{ zYZ*r_YI$UyB^hNc=V>a;=)PxE{~qYrtO1q=E>vq5(^m-yeel{Vh+5>W-@JPz6}K-Y zOaC}~AFT`zMu|rTgwA5>_)+*M_nWBvV@a%77KUrm&R1pZZCJe&wJMf@$5a=bKYaup zn$^c^&poLYfb5S{GSsVFUKnd1ncIBf?m7;``*uN(HcfPgz?nzS$TC28<|x{V_!#4^P%4b{9SGp?8PAI`Bl&&vAGu}biX`C#5o?%k@& zU6xH1unq;WT8{nV`arVAdKUflD4pMMkWqvxDHvc;X76Uv??dTz?;y_cS7lB~l`+_% zQ7v^>*1lm)9NoT7pC>59*eSRzbw$njgL8)ggEVhK_PNo_0h|xW4{=`Q984FT z1mS7zL+flaM|1qU4DG8HLIi}!x6nN?uan0kP(%w=re^>o0{^_n_-}nXw9spOo;=vS zImIF~A1T>DA(DB9>y$8P={z{W76L+RA_7q&|EI|F#!K*$Ezu!Ebx2nf-g8;R>0Et-yP z--PL7oKT~534Hwe>!@C`BzCV^Bln~YP8^l><{U=#>5lA={}W{j<-_THI~7EtrO~p0 z1!z{IB0kUc8VY>yHU@TTjV-bU@VjhZdZFOCj&sQ$ubFn{8mT1fhdsZ)M5gbU`v0XE zLZnNlPpbQJZdxNBOMZs^M`dHJ??eTy*iK)`GhS{k`kQoK)-c9@Vw@)eTK9lKi?1Tj zK>4;|1FD1DE4WqW4KznTA723oG=eEtb^Y1L52%8g5>6$m0IL@-DJA$1uy z53fA^xbQOsge32e0D@RNoaB*!P}(`+kxpQ-_gqx{p(K3g&cZd}hwnJz{iXv##UB6& z$&ozo1*z*$pSdzt*e{ZiaBvSs36HyX$3{el_~DkwLHo9E#LOwq=+?eDzAyYGW=tFf zuUV6Yk8@IMppqhA5)k6==@Uj`-thkzxFtLT<0x@6 zN=85^3k=GlEXtz4A6fbW9=R4?6Q1kLk)7DNAsVZrJrNT$6(I}9BbXr2LT7|{jYhEN zNR1s7?l}sf9>d}5+8Ya|^hA{R2&@j7tQJDF4k9t0P~?IUh*;o+D8EsN4RXfvkn!-H z)eEj88N0AG+$VIxOy~9(*0Tl%b*(BqRxbsFR))J_V3(>{fY2lS{SJUomdm(b_jeaJ zu3W&T6_Icr+!g-rTc9}qf-G-1HgP8>%vk0*~K z>Ci!(+P4?W0vDlSm5L~s=Y4f)MB$FR^>1Ai2KCZeRc=x!{UghsML#FDKl{U}{o63l zb)32dES5hH`gd)O9qVGTX#R9mkTz#PU;0!(v~?Xe#V)~~_3JR-%?-u#=SQ)8`QR~S z3ND;JCGB_?%fo`vuxbSb4;g!diev7aCsL9A-I_z-C8zMw{LU{!k9q3 z-(8;V(4?*ggs1=b_!uiLj0&hf`}RGei#G<2XFAJ*eecUR-HcGF8st4&Eu%KYMW(-} zfDxY+A##Sx2pMPD&|idRJ0L`b1drSy%C@;dB}j@TXb$N~kb5YuYYd?zjh%A$W||&v zT}#HztLJe260LjAV(Z#C)T~q%MGJn8Fn=%5ZPqVY2+@_6r5HX954Z97;=Om!uVWik ztT10DZ|Ucfzw45>?rmD)g~$GZ>CPimY0I+kK96ksfnC~Q;T$)u7t3nLst*D*8bXP9P=m z7!nWfM~L47%$wncy<67fDqUeDCn4=r0`_j*h>0VHVA6=e*tcDH21b! z20_v%fK{(zS+x*i+^8v|hak_}uVFy9_J|4a#{8+{;5KG3W{V(9Ad^-mz1uZMueQz6 zyKPJK?a&Uf!9i$Jy()4(_cRvFng;rKKY#X!5V*Sdq(uWxQyK#;3(mt)RWU)88HE)2bCBMboDPxgzWVfZTqr!od zM)zO|aMSxMV}t+Fm>`6%$`00wW^duju)T9%*o?$ z;mlFAZCn@GpM3(}v)!bwWG%j)h6c4N%JteBH;8SpRoXpS@_I?0r()%f1Jt0)7uKV? zG_&<(=F3%0w zt;WY#A8W-ABIrV}CgH$#b=lUSdIkJY>}z<=oRki%Fn#UgESKb$Ryf~$$rwVP>ke8S z=aPQ~xTMbqc+JAlKAo{|%NlTZEx{LpLIix6CPAK4hjyyP5X($=aJ1?nsB>)376pgs zYK|5^v<@QR!*ux_9{DXE`7ZNh%^|0>4E!eZ$L|o3Vw#LUL=Y(P;0{fj>8^?l)L0+{ z(YUjpb#CgKb!X1a?+25$Mr6@nhdB3UM(JP>NyZI{*E35ai~cjRD@*MP>2op`X@#;g zewp%ruRir}<@X2x5jePZTI3l5E;6oZ)uBplwjbkw$(%~p!k@jJT{n##*|k9}8@N7E zd42t&%%SIHUKPINhMcRl0~Ot}h8WWPINF@+QpP!w3U|(v#^rwHX^}67BIW2FwE$v$Cdu5(_(C7N z`hvy~qO}m~f)+JuRU`SQh0w=2U)I<|v^pUm#OtR1OnVYgc^If-03o&|tzNhhkDF&` zDYSF-GPnwVQ~uk6_&nE}_(6Dw0FODic82^yn#O~@C49}Wo}KaXWBN3^J2NkKwdG_|f*Rb*&Sjdw)rCw`k?kaP^8G<8?VvS=MDxFTs~lJ8$4 zw$0BigffXClq@pusgt@vC+|D2t9JqR1=b76)Ez;bP~qWQ)Tu18?jbE7^G-0-Wk@eH zs9Xx0;%EQ-X z91&Di>mV5?1`xU=d|${S3lRFLS~(qGzXXQpxRP{u1zwm6`J2XSb7WL7pVNC^kMh@zs*GN4(wLq`VErrK# zimvUN=&^0Hy6DrTCAP1RwaO|o4lN9|o@mYGunx)sg|aA%vgq$e_W&WTW1Oe22oH7Y z;0Em76rnMM0=>t;-(xuZ=L~`W?7>O_?n4nWZv=wp4#z^*UhtXR9We_=Vs*$wtPF9% z@*rnKE*Op&zfp(_9FG|P(TG?$9IL`7VOgLvJSKI-Oy@T6bn6PA={@ClXN>4m8$-HR zgV(g)*s@}tS_lp3Tm=E1BVJ@@Kh>`@{e40Yc-4bi*PK7p#i3 z0HOFLb1-s1T}&L+7+$lwW3g9%%$wd3uH%}>?=Fao7>CtMCt^wPNGu5)p>E;`2+>Mt zRpfYt`wrF^LQ57qsfCc&w9Z%(FamMG<75!_f%~KmnCIFRL7u}9wRpVH1Z-O6g`^X! zar4q1p?$cLy7w;)2$4+sMhK&I1DR2}3ZjJwErj}ZXbz9bW28RjtDs01a?NU0RM&A` znm54VZ5xG=O;g74Y7&*iBKVySYnWl4NZ8qi%&V8W?q0 z&yH#>z@43RCuRJ;S1Mjut#kHoTCKb3RFNt|xC+$iJMOH-@qRM-w`lR)=_vH^dy@C6 z(tlSf0B}tNditMctQ(T^kiHn)tpgJGZC6D#l>xkdQTpIT>H7?rPnU93B$yqjO#A2G zwulM?1~4WV#K8MhVA}IaaEk&aUB7X+DuFNi`|S6$jGH0C(noK+B8zPsRe&0$2akN8 zfDqg1mYh?ma7hGRS_svx`UA#~9Dqqy^k^(|&LCp+DdHlp&I%9b8&Ti~UC{{vIU z4%51`@^2|txa+Y``{r0Uhp}8_o^V{Z>ceIsRLEu_#Cmc7LZ!aWkDsbkz?ztFTsk8H za*8lZ$%(iu-?$`cU6ejKVdP-E|K@Ax*`Y0t?AnT(R8UCYW?holXQ*hPd&--V{-tw? zIG>b&lvBqf$tJx;UX} z%?b(xeVF4F^lje)$9Hei`&8InPo^c92;He18|hfNlwytM-If4F+(&)RWJG8XSv=)#qYnt#$^$?_mSakOe!8`+Aa63EtS`jfW(dwum1%ya+#m6q$fCa&-Bavl(H}|a z^(^C)M=HLl!1i}{Q&1{`dK$QU zJyq6b8TaRo;lf!-F`jJQ!Wk>b!6@RiEdkioEZURbVVdwL)1JGGqsX2n5jri04Ze`zRnppk%>}i3%jJ ze%S`ccC1JFZ@*G^YvsPprCsfR0PB&+f+UB!{7vjIY( zi{~TTGmoQw_3{e35(rVZzLJ)m*tR75HQl%&bS~ilS~RSM_e35G@%OZ12MKR@LwGE@ zf+Npbxx}|RzA^$r#zKhwA^!)tv_8of6L7nGMR;VX^KEOFV@U5VaG&ae9UE36K;$9v z?DTG+Bz=$Zfymd49Mn^W$uVI~84L8N#yRD0(k0D7lJb%_RSV@T zFer<%D2x8~bdR^-?^`n0T|BiHi3j4bb6qf^7EeLo{88|oF$mtSec3U4l#Zs5w*}st%Tx&oMlZKp%y~1LF3^)tvhDB zFg!|M1kRImr}e~`0Y71Aj~eiv-bVqU)sfTGWn94g5wiYd0YVS^%L0V{^grV=E=mER z#d9YhKH3|bmM>61Xw-oEnCjdX!3&(Qc>X{voYPCmXGRZ%`Y?d@By3nV9np&k2+>Mt zETR_4v-A2QPR>_^I%DC??wB{FgD|ySg^3?2gJ>)k$iQ(M-CO~oNWU?N4sgM;P&XXk z7cGp)F5J4jS7<+OTsR<1?qOj*j|u}R%=%vp5PDGhyhaxSj3KmcNr<|+N)`q`<>Y=` z5oVUxXg&0K?$;D7O4zp*xRRp5SFZ~*YnX9PW(=x-{?suM(9SD!$spZSj@K?<0tNHD zqr1xQ0YaAI$}r7;bou}1iFIr0R|E(ueN#m^Bl!2-7at(+d#__iuMQ$W$K%YAU6?Xv zFbaN>TLtF$=wJm@E+ibr!dX*wM}L{Z`QbWhC{7)aF(85#V}eBbduc2a#tWilh_QY- zv3s)$<0T8`)!mqM9mm~yv>>5-4(&e<;o1oQ6cQgsR7w}j^B!9NR9l46je5=WLlOnJ ziNpKBNdyxrsj1wh%Qo(4yCeC<R zU~qUU@(JWHzKJS59Lf(ZgVgiA@|;2cu5IwDDw2lCTwqyKa86)3D0nm9J~O9S^=_*t z*2RVu54R91S@27>F5DCsBkglS+A9H9&z;ttp4Ub2JfC!ZB$>%y-LzOioT26gX(eVaGRoSrJzcVl^2AXY^L$(k|+lbwbj$kSc=_ErUj?w+R`mlW(+y#h1G zk4A{Mht%I%FqRd|J7E}I#$^|Vi}~D+P+t$Mj99G7lq*RLMl9u)`Xso*9kVRQwWO11 zQMV>?JomUN_AMp9^pR8o7X*Gz%5&D{1KnLqk~CQ6WkJ3u{?!+#RJ;f_#u5;6w4>u0 zKEF05SmO~fK3uVUpTc+c6kJF=B;9 z<2YURTuqaCkh_%AbUwHvW5CQKW=!&^b>~p}9ofEKwG9LT4tiz2|=9lp}2!tkD zV_ec)5lL&w^6HYvfI@6%Zhj!RLO_H-3|-i*j1Izb$v?pn0w}a(qavzO>5_Qq$;VK; zQfahnQU@akbeH}<7_MW7V!<3&_|KcJa zgto?~uensjaZWgUbdSa$;&%y35g;E_C@5l?8`QcHBicv#`H{tcn(tT7in~V%`p3CgH--|MSFSBReZiV{4RO44o#8w{o`PuJ90IIU-bLhchs>H7qXI9|x>Fr7ys)9!3XeuFLpH!KU2^|>>O=l>YFUV2hp z+x2YK7{hyXM5o4eF{pDJjSn=oe-8}l+74yE{t~%fdZ47)YBZgNSJYj& zwgHKu2c)~Zk?scR4(XwhZt3n8knWO3l#uR{p+ma6rR)6ObH48{U@>dW?7g4oy04o^ zGt#A0kheCT^W}GsZx$+%_6uyC*!A1R)G_;a56z`slM4Ix)m{@W6^*0lmr-uDbPF-l z0KHnJ>(hd`g|z+Ts~`DSt3Rk>{r>$O)5w5QUUrkMO81L8%UEc%4HTp5BAk|-68I+j z7%6prT(isto0@mLZ)Y-Ms2jwZ7Tgm&xTiaxaUhqd{n?msX>?0_EAfl8CNv9Kwb%9U zbrxa6_{vv4M;oUdA0Z*OJOQc~CGR)l%5)DfEF}_w^hM;^bT8hYp{ia?-tXF%_&rJg zU}D5Qx;W`>`mZ=oudOktyRGp);*XSH$~M=0Dr@MdRb00sr&m=*E&MppHE=uEz|~oD zqB~uEFX>Lc4-?hG`SmiSF3&7bHQj~U-^kk!yQi6X#oglyEQvSX$7d1{qfi`4<(FLU zzL3h*C2xf6bi5}_QjB<`wY2@qkeVTl<$SWL=O1#hi|M}Xm}Jb0_NeoIjNiH$WrTW1&azu|@L^+SVk~7SP6lZfgjP|v-fyu83P7(`M&UABp ztykAwnD(N1PrLF1Iq6}=x0YTVeOys zByTwXw33G4$A!JE1cNTgB4o(kad>^i7a#|8;Z~-r8gP=-SUWs0V|_UdA8bCri9AuW zS&-;N#N*4>vp-wiX^AuZP2BTTan7GKCRmI3c0RAXmgW^gZ+6YZzDc^UefHD8#mAPt zw&V=k$25aO=t@YL;06gsk`Tf8>1O=wZSAZ6qXhwD)0D;m5EDF-JZa=u)G9E--;4j) z2LK7SB!z3ISsV9f=uGmik>s!lopOrQWgg0T))ew*WHhGIx{^)eX4T=(RG+6&qM>fh zqUV}s(lYIBY)O6`t8ov2*e7FgUN*RgG$&4f>X!@ahe{(XQEqzMr}yBTv#l`6{GE9M z;gtauUE5DO(#&dV_cM1|2Xt!Eg$ZYUEyX#tf!-qPPfp)=(bM{vs_Appm?=@#;bRF_ zGB^WThz)y)uqpyXC_cOcGGgR4NAo=mq}jVf2)GG_zLvSd=0Qxz3>%t-&JW`*$qh0| z?Vb|hc&~Kw0wa}O?bd5NqXR&_1WcPMBnPi8j#|$gmP9AuhVX&(be|C}KvWx%dp=17 zo#~0tdKfOOvDhh6=P(F-EoV-q)!Mzkn@tmf0$+F#kr;z%@Yk7-8CI{2blo+zd2$BI7uiDlg8)7Gx#Naw@@P^D1Q)~@~iDwt!4Qb0x`s4N`EG!Mcvi3gN2kzw zu3}f08*K=%4Vy*Bx1;u zSL)S^@H~R0a(v#QfvxB0Z5yLHHrK8zu055!sAG55lys_)T_1$tqu2X)onudxgIle+ zSw-h@C(DZS(G({}U5M|5yu^36WH>y=opS_QbpMLV2e0oG=1Z?V^ z(0qK{7=PAdw~Df{e@*DzlyIE+ow@Jd{ce)$U8@mfpZdPDG9@Bd*YF2fyh&aB0Qr90 zQ&SO_iBf+Z-?DvyK^ITJ+L(DoSW0ntfA;6%n=oFU zCjG`if-+a+$4^E@(+TI!pY_}(SAiBO(Ev3F^As%>gsCP9q!vq9Th%mCScgdWgICNgA!u{IRVZb$#+~D65o5vZB#?j>V;)+mKL1AgE zMM&*GsQ2>iA?z-b%*&UVfd+cnw)F64|2{#KdI1@&;pB)efkLm}ob?SwpLj9dkXlKY zjvFcK*YF}f7rp%&wCD{(|GH14t^A-XAC1B^YV;$m5B(2!@-#FP2*VHS0M*AIU3Z^` zYlC=AVWLNEY7v_L+US=z8syKie8O24h)l9heaPIv#9f0Ia7-HF_m^I^np!1HTmKor zQ05XDz@h=Ok1=IFukp<-m(sMy%cG+;iv_!JykSAJrp@&q><_EeW8!%|K8tyx352GK zojuY)3?}sr?o}IEak*g65oT!X)W%G+$y~uJumYa)YK7g*)y?bi$`7o-lSMQ&f85z0 zPMvnm^<&*voG?Mgf%Id8)=A|zJ8`AsD;*L>U$nq~PgX6Ry;^V}Z+-|b%_Pj2cBt50L+$UCp6>tXZU|Q=qG1_yqUKw~5?hpy_4Y|4-fs-h zzs3t{K;fmyc+U@rpe_SnI%r&_r?FUW^MXe$yQG%Oel`Tie0!&q>{8a9QbNC55U!S% zBIE46jJWw@_vLy-UW9V{WE^?(hF^|8`s5b^0MR7OS~p^|p#-X4$nyoboT{YoiiXL! zS#RyqlgU*&p-}XDbq*5KT%o3{@e?Z)B{0*)?Db8*!;(!ZE5;bLsBHyOh(e-#f_ z%8)%B4NIRR+bS%{NQ1xt%nBDO9Wh>l@!zrom_j_#Tr=%+6#m95~`zMf!WI zuYt;&7tR_zbfKT@+x|4b&VUmOC8ajR(%81!fEWkcXB6H+C0+3-&aiZ(Rt5^3Gj0+f z)QCmSBhy2ksF1rMRF!x^Cj~wdK?`tocutZfn5$#M8$XGxVcw?}{elQ&K=KekBE2R+ z7`6NjFhfSwR27$Qd#0%f!d`ObEfVa9{~X&h{a5hlOgcjpY}^OX9%Kz>?>7ZHkjmm6 z!Vdm7ayrALlzTo6ZatW$yvI6zau)L8g}Dz)fxC2yd9#6+pd=ht3$FR5>L6k*=z zIEbC-h7r6$Lpy9&D}Z_73z1HfM@(+<-Oyn zWTQWJy$ST>m0Wo*8)uxMAX!0_J%r5bPTfVWl+r7S=erJuNni>wY4)soP!!!68k6ts zq{`~13N2M)^wY2J$1qF>am27)0<{&CAyyJ*?Q*C;s!`+~=)4>>?~622M`eqL$650A z{~eF8`EhhcnH8larw>Hd3V}emi_HjQlKyk%X3(-Uc}3xXtXy>c?X^C2E zT!Ab|t9t5$;=1a$cM7tL`vOM7mk(;>UfLKI&t#BS_&?dv!1E{qQG0ZxsBH&8z?O|4 zACxlG?FgsJMPLh8nVL97m_|GnN;7zwJvL%{o(A)dRP%mwKb%R20H?Vmg-&lU4m>V=Pj z@g&t>*V4n)=1_o@TQr=>LTbgh>8JX9u&|Pj_`%D9TS4GL0`LyapC|0GLm3q;uO}nD zw!72$!(ks1J9|xN_)$sx81d#(<@U24KhRFKw<4NP<-b9K;kXpWD>f%}m;R^0_tef% zG%d)3Q=MSGidjb{GG-%>=6KxjE5kopl>HabOs?GMO7pwslv2lVn>owJ2!UzID2j~> zW20$UO1QHeF99giBK44vZiviDiHm0A0fxJl=ZPf?iRHEJ6aJ# z$>`XvKhBlycv zZUZ+s6I1j}FDEFR*UL@BP+ahLJ+f9~A6USeQYxl6&ACCKT7uq?%<$p?>p>`oN;wGD z$Pm)19&yt#Np4hlShOyWck8uo1%ZBQhm$}3+ofrv_^9R_vhfbO{Gm4VGgKHBnyESa zf_eV%C%3G@c~3PzN;1DAk`H)K=2g|eAPgli&6hYT3Fvjvt&gL6V$vCk#j!EpK*^z<-WGF=csM+Bmju>ZV&`GM-NsmI}FxY zm{$k2*^F?`+aKEvu&@}+^^u2Zh9AegC7S9lvjmV&v*+g)<>6iRkiIXvfFYnM$*9@` zocd&YrAQQ&+Afke!*fEpD9#X@f%o)2kiSZa52djJdqXfn)$E;$TYR8rHCxDA?SxUa zCgn96u+G>IL)vJzNtPD3v6K#SWTT*v)-9^$gDcSyS~+$q6BGV+uY~u~JbaN#I07uH z(ZCkNK{$TAKiq#DG$-dGX^AGC_V6YNmSeB#Nj+cu$w1NhXS<-qN?cK~$K9?vaJ#E1 zXVD>C;y5VZG`#WhcehhFDJWeMo(o4f<)0;X%H{c@AH}u_Y~gX`DE{IT?Dg=^82|1z zt9UOdt5CFk6NAiVCoN)=_NR!pC#se{pO9m8zS>EHC>P@OKd(81XjJSn91+iZif@mB zje~wQK_B+19rdZ#YF{Pkd=P(WwIFM~yxe5}J@Z|VH1GZDHz65LB=a{AT73~*%vo5+GTW@@?gV_?^ zFTWfM{DbYOVDaH-;NyTT6%AE^O%P!X^VRcJ^~Hqu>VUK$TH$jokzT3V5IjeP2Ns^}P30_h}aPotGj{hg zNofJNOQgk~I4*^nub|--wCEDA6etH=#6?IILjAk-?`tuQeHB>47R%i0LVpm1SlX>WWjalcF1vqr}spGtuchYzcpxXo�DOkY+0Ob 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 AlK}0eJ;` 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

    !g8(U$%UV}%Ts)42RL_H9|C*Dx#` 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⁣%x5zvx8R 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�?7I&5u_dr6 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�vsi3I~{7(Sd81yGv1S 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 diff --git a/web/API/channel.py b/web/API/channel.py index ce14fed..00df48f 100644 --- a/web/API/channel.py +++ b/web/API/channel.py @@ -5,8 +5,10 @@ from web.common.utils import login_required from core.DBManager import mDBM from myutils.ReManager import mReM from core.ModelManager import mMM +from myutils.ConfigManager import myCongif import cv2 import base64 +import time @api.route('/channel/tree',methods=['GET']) @login_required @@ -48,19 +50,27 @@ async def channel_add(): #新增通道 -- 2024-8-1修改为与修改通道用一 reMsg = 'rtsp地址不合法' return jsonify({'status': reStatus, 'msg': reMsg}) strsql = f"select id from area where area_name = '{area}';" - ret = mDBM.do_select(strsql,1) - if ret: - strsql = f"select ID from channel where area_id={ret[0]} and channel_name={cName};" + area = mDBM.do_select(strsql,1) + if area: + area_id = area[0] + strsql = f"select ID from channel where area_id={area_id} and channel_name='{cName}';" data = mDBM.do_select(strsql, 1) - if data: #有值--代表重复了 + if data and data[0] != cid: #有值--代表重复 或者是它自己(只修改了RTSP地址) reStatus = 0 reMsg = "同一区域内的通道名称不能相同!" else: if cid == -1: + max_count = myCongif.get_data("max_channel_num") + strsql = "select count(*) from channel;" + data = mDBM.do_select(strsql,1) + if data[0] >= max_count: + reStatus = 0 + reMsg = f"已达到最多通道数量-{max_count}通道,不能再添加" + return jsonify({'status': reStatus, 'msg': reMsg}) strsql = (f"INSERT INTO channel (area_id,channel_name,ulr,'type',status) values " - f"({ret[0]},'{cName}','{Rtsp}',1,0);") + f"({area_id},'{cName}','{Rtsp}',1,0);") else: - strsql = (f"UPDATE channel SET area_id={ret[0]},channel_name='{cName}'" + strsql = (f"UPDATE channel SET area_id={area_id},channel_name='{cName}'" f",ulr='{Rtsp}' where ID={cid};") ret = mDBM.do_sql(strsql) if ret == True: @@ -68,18 +78,22 @@ async def channel_add(): #新增通道 -- 2024-8-1修改为与修改通道用一 if cid == -1: reMsg = '添加通道成功' # 对新增的视频通道进行视频采集和 - strsql = f"select ID from channel where area_id={ret[0]} and channel_name={cName};" + strsql = f"select ID from channel where area_id={area_id} and channel_name={cName};" data = mDBM.do_select(strsql, 1) if data: cid = data[0] mMM.start_work(cid) else: - print("这里不应该没有值!!!!") + print(f"这里不应该没有值!!!!area_id-{area_id},cName--{cName}") else: reMsg = '修改通道成功' #需要先停再启动---不区分有没有修改URL了,就当有修改使用 mMM.stop_work(cid) + start_time = time.time() mMM.start_work(cid) + end_time = time.time() + execution_time = end_time - start_time + print(f"开始一个通道线程,花费了: {execution_time} seconds") else: reStatus = 0 if cid == -1: @@ -93,12 +107,13 @@ async def channel_add(): #新增通道 -- 2024-8-1修改为与修改通道用一 @api.route('/channel/img',methods=['POST']) @login_required -async def channel_img(): +async def get_channel_img(): + '''获取一帧图片''' json_data = await request.get_json() cid = int(json_data.get('cid')) channel_data = mMM.verify_list.get_channel(cid) if channel_data: - # 执行视频传输 + # 读取一帧画面 ret,frame = channel_data.cap.read() if ret: # 将帧转换为JPEG格式 @@ -112,33 +127,6 @@ async def channel_img(): else: return jsonify({"error": "Channel not found"}), 500 -@api.route('/channel/change',methods=['POST']) -@login_required -async def channel_change(): #修改通道信息 -- 已弃用 - area_id = (await request.form)['area_id'] - channel_id = (await request.form)['channel_id'] - channel_name = (await request.form)['channel_name'] - url = (await request.form)['url'] - if mReM.is_valid_rtsp_url(url) is not True: - reStatus = 0 - reMsg = 'rtsp地址不合法' - return jsonify({'status': reStatus, 'msg': reMsg}) - strsql = f"select area_name from area where id = {area_id};" - ret = mDBM.do_select(strsql, 1) - if ret: - strsql = f"UPDATE channel SET area_id={area_id},channel_name='{channel_name}',ulr='{url}' where ID={channel_id};" - ret = mDBM.do_sql(strsql) - if ret == True: - reStatus = 1 - reMsg = '修改通道信息成' - else: - reStatus = 0 - reMsg = '修改通道信息失败,请联系技术支持!' - else: - reStatus = 0 - reMsg = '错误的通道ID,请修改' - return jsonify({'status': reStatus, 'msg': reMsg}) - @api.route('/channel/del',methods=['POST']) @login_required async def channel_del(): #删除通道 @@ -149,7 +137,7 @@ async def channel_del(): #删除通道 ret = mDBM.delchannel(cid) if ret == True: reStatus = 1 - reMsg = '删除通道信息成' + reMsg = '删除通道信息成功' else: reStatus = 0 reMsg = '删除通道信息失败,请联系技术支持!' @@ -180,7 +168,7 @@ async def channel_check(): #检查通道视频的在线情况--可以获取全 @api.route('/channel/C2M',methods=['POST']) @login_required -async def channel_to_model(): +async def get_ctm_data(): '''获取通道关联模型的相关数据''' json_data = await request.get_json() cid = int(json_data.get('cid')) @@ -212,9 +200,100 @@ async def channel_to_model(): redata = {"m_datas":m_datas,"c2m_data":c2m_data_json,"schedule":schedule} return jsonify(redata) +@api.route('/channel/chanegeC2M',methods=['POST']) +@login_required +async def change_c_t_m(): + ''' + 修改和新增与通道关联的算法模块 + :return: + ''' + json_data = await request.get_json() + model_name = json_data.get('model_name') + check_area = json_data.get('check_area') + polygon_str = json_data.get('polygon_str') + iou_thres = json_data.get('iou_thres') + conf_thres = json_data.get('conf_thres') + schedule = json_data.get('schedule') + cid = json_data.get('cid') + #返回数据 + reStatus = 0 + reMsg = "更新失败,请联系技术支持!" + + #开始更新--- 统一先停止原通道工作线程 + if model_name=="请选择": + strsql = f"select ID from channel2model where channel_id={cid};" + data = mDBM.do_select(strsql,1) + if data: + #需要删除数据 + ret = mDBM.delC2M(cid,1) #只是删除了数据库数据 + if ret: + #重启下通道的工作线程 + mMM.stop_work(cid) + mMM.start_work(cid) + reStatus = 1 + reMsg = "更新成功" + else: #原本就没数据 + reStatus = 1 + reMsg = "更新成功" + else: #新增关联或修改关联 + # 验证数据 + if conf_thres <= 0 or conf_thres >= 1 or iou_thres <= 0 or iou_thres >= 1: + reMsg = "阈值的有效范围是大于0,小于1;请输入正确的阈值" + return jsonify({'status': reStatus, 'msg': reMsg}) + c2m_id = updateModel(cid,model_name,check_area,polygon_str,conf_thres,iou_thres) #c2m表 + if c2m_id != 0: + ret = updataSchedule(c2m_id,schedule.replace("'", "\"")) #schedule表 + if ret: + # 重启下通道的工作线程 + mMM.stop_work(cid) + mMM.start_work(cid) + reStatus = 1 + reMsg = "更新成功" + return jsonify({'status': reStatus, 'msg': reMsg}) + + +def updataSchedule(c2m_id,schedule): + # schedule_data_str = ("{'6': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " + # "'0': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " + # "'1': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " + # "'2': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], " + # "'3': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]," + # "'4': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]," + # "'5': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}") + #先删 + strsql = f"delete from schedule where channel2model_id={c2m_id};" + mDBM.do_sql(strsql) + #再加 + json_object = json.loads(schedule) + for day, hours in json_object.items(): + for hour, status in enumerate(hours): + strsql = ( + f"insert into schedule (channel2model_id,day,hour,status) values ({c2m_id},'{day}',{hour},{status})" + f" on conflict(channel2model_id,day,hour) do update set status=excluded.status;") + ret = mDBM.do_sql(strsql) + if not ret: #插入失败后,需要删除所有数据 + strsql = f"delete from schedule where channel2model_id={c2m_id};" + mDBM.do_sql(strsql) + return ret + return 1 + +def updateModel(channel_id,model_name,check_area,polygon_str,conf_thres,iou_thres): + '''新增和修改通道关联的模型 ----约束:一个通道只能关联一个算法模型 + return 0 失败, 其他为c2m_id + ''' + reStatus = 0 + strsql = f"select ID from channel where ID={channel_id};" + if mDBM.do_select(strsql, 1): # 通道号在数据库中 + strsql = f"select ID from model where model_name = '{model_name}';" + data = mDBM.do_select(strsql, 1) + if data: #通道和模型都有对应数据 + reStatus = mDBM.updateC2M(channel_id, data[0],check_area,polygon_str,conf_thres,iou_thres) + return reStatus + @api.route('/channel/area/list',methods=['GET']) @login_required -async def channel_area_list(): #获取区域列表 +async def channel_area_list(): + '''获取所属区域list''' strsql = "select * from area;" datas = mDBM.do_select(strsql) reMsg = [{'id': data[0], 'area_name': data[1]} for data in datas] @@ -225,14 +304,20 @@ async def channel_area_list(): #获取区域列表 async def channel_area_change(): #修改区域名称 area_id = (await request.form)['id'] area_name = (await request.form)['name'] - strsql = f"update area set area_name='{area_name}' where id = {area_id};" - ret = mDBM.do_sql(strsql) - if ret == True: - reStatus = 1 - reMsg = '修改通道名称成功' - else: + strsql = f"select id from area where area_name='{area_name}';" + datas = mDBM.do_select(strsql) + if datas: reStatus = 0 - reMsg = '修改通道名称失败,请联系技术支持!' + reMsg = '区域名称重复,请修改!' + else: + strsql = f"update area set area_name='{area_name}' where id = {area_id};" + ret = mDBM.do_sql(strsql) + if ret == True: + reStatus = 1 + reMsg = '修改通道名称成功' + else: + reStatus = 0 + reMsg = '修改通道名称失败,请联系技术支持!' return jsonify({'status': reStatus, 'msg': reMsg}) @api.route('/channel/area/del',methods=['POST']) @@ -258,15 +343,22 @@ async def channel_area_del(): #删除区域 @api.route('/channel/area/add',methods=['POST']) @login_required async def channel_area_add(): #添加区域 - area_name = (await request.form)['name'] - strsql = f"insert into area (area_name) values ('{area_name}');" - ret = mDBM.do_sql(strsql) - if ret == True: - reStatus = 1 - reMsg = '新增区域成功' - else: + json_data = await request.get_json() + area_name = json_data.get('name') + strsql = f"select id from area where area_name='{area_name}';" + data = mDBM.do_select(strsql,1) + if data: reStatus = 0 - reMsg = '新增区域失败,请联系技术支持!' + reMsg = '区域名称重复,请修改!' + else: + strsql = f"insert into area (area_name) values ('{area_name}');" + ret = mDBM.do_sql(strsql) + if ret == True: + reStatus = 1 + reMsg = '新增区域成功' + else: + reStatus = 0 + reMsg = '新增区域失败,请联系技术支持!' return jsonify({'status': reStatus, 'msg': reMsg}) @api.route('/channel/model/list',methods=['GET']) @@ -279,17 +371,6 @@ async def channel_model_list(): #获取算法列表 reMsg = [{'ID': data[0], 'model_name': data[1],'version':data[2]} for data in datas] return jsonify(reMsg) -@api.route('/channel/model/linklist',methods=['GET']) -@login_required -async def channel_model_linklist(): #获取算法列表 --关联算法时展示 --没调用。。 - ID = request.args.get('ID') #通道ID - strsql = (f"select t1.ID,t2.model_name from channel2model t1 left join model t2 " - f"on t1.model_id=t2.ID where channel_id={ID};") - datas = mDBM.do_select(strsql) - reMsg = {} - if datas: - reMsg = [{'ID': data[0], 'model_name': data[1]} for data in datas] - return jsonify(reMsg) @api.route('/channel/model/linkmodel',methods=['POST']) #--没调用。。 @login_required diff --git a/web/API/model.py b/web/API/model.py index bc1c353..b03e1cf 100644 --- a/web/API/model.py +++ b/web/API/model.py @@ -1,9 +1,11 @@ import os +import shutil from quart import jsonify, request,session,flash,redirect from . import api from web.common.utils import login_required from core.DBManager import mDBM -from core.Upload_file import allowed_file,check_file,updata_model +from core.ModelManager import mMM +from core.Upload_file import allowed_file,check_file from myutils.ConfigManager import myCongif from werkzeug.utils import secure_filename @@ -16,99 +18,155 @@ async def model_list(): #获取算法列表 "proportion":data[4]} for data in datas] return jsonify(reMsg) -@api.route('/model/upload',methods=['POST']) +def restart_work(mid): + strsql = f"select channel_id from channel2model where model_id = {mid};" + datas = mDBM.do_select(strsql) + if datas: # 有关联 + print("有关联") + # 重启通道业务 + for data in datas: + mMM.restartC2M(data[0]) # 根该模型关联的所有通道都需要重启工作线程 + +@api.route('/model/add',methods=['POST']) @login_required -async def model_upload(): #上传算法文件--需要进行文件校验 +async def model_add(): #新增算法 + reStatus = 0 + reMsg = "有错误!" + form = await request.form + model_name = form['mName'] + files = await request.files + if 'file' not in files: + reMsg = '参数错误' + return jsonify({'status': reStatus, 'msg': reMsg}) + file = files['file'] + if file.filename == '': + reMsg = '没有选择文件' + return jsonify({'status': reStatus, 'msg': reMsg}) + #判断算法名称是否重复 + strsql = f"select ID from model where model_name='{model_name}';" + data = mDBM.do_select(strsql, 1) + if data: + reMsg = "算法名称重复,请修改!" + else: + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) #安全过滤 + file_path = os.path.join(myCongif.get_data('UPLOAD_FOLDER'), filename) + await file.save(file_path) + #检查上传文件的合法性,若符合要求移动到正式路径 + filename_pre = filename.rsplit('.',1)[0] #除去到.zip + model_version, model_name_file, model_path = check_file(file_path,filename_pre,2) #itype--2 是算法模型升级 1-系统升级 + #删除压缩包 + os.remove(file_path) + if model_version and model_path: + #model表插入数据 + strsql = (f"insert into model (model_name,version,model_path) values " + f"('{model_name}','{model_version}','{model_path}');") + ret = mDBM.do_sql(strsql) + if ret: + reStatus = 1 + reMsg = '算法添加成功' + else: + reMsg = '插入数据库出错,请联系技术支持!!' + else: + reMsg = '升级包不合法,请重新上传!' + else: + reMsg = '只允许上传zip文件' + #新增算法,不需要处理通道关联的相关业务 + return jsonify({'status': reStatus, 'msg': reMsg}) + +@api.route('/model/upgrade',methods=['POST']) +@login_required +async def model_upgrade(): #升级算法,需要先上传算法文件 + reStatus = 0 + reMsg = "有错误!" form = await request.form - model_name = form['model_name'] + mid = form['mid'] files = await request.files if 'file' not in files: - flash('参数错误') - return redirect(request.url) + reMsg = '参数错误' + return jsonify({'status': reStatus, 'msg': reMsg}) file = files['file'] if file.filename == '': - flash('没有选择文件') - return redirect(request.url) + reMsg = '没有选择文件' + return jsonify({'status': reStatus, 'msg': reMsg}) if file and allowed_file(file.filename): - filename = secure_filename(file.filename) + filename = secure_filename(file.filename) # 安全过滤 file_path = os.path.join(myCongif.get_data('UPLOAD_FOLDER'), filename) await file.save(file_path) - if check_file(file_path,2): #itype--2 是算法模型升级 - strsql = (f"insert into upgrade (itype,filepath,model_name) values (2,'{file_path}','{model_name}')" - f" on conflict(itype,model_name) do update set filepath=excluded.filepath;") + # 检查上传文件的合法性,若符合要求移动到正式路径 + filename_pre = filename.rsplit('.', 1)[0] # 除去到.zip + model_version, model_name_file, model_path = check_file(file_path, filename_pre, 2) # itype--2 是算法模型升级 1-系统升级 + # 删除压缩包 + os.remove(file_path) + if model_version and model_path: + strsql = (f"update model set version='{model_version}',model_path='{model_path}' " + f"where ID={mid};") ret = mDBM.do_sql(strsql) - # session['model'] = file_path if ret: - strsql = f"select id from upgrade where itype=2 and model_name='{model_name}';" - data=mDBM.do_select(strsql,1) - reStatus = data[0] - reMsg = "升级包上传成功" + reStatus = 1 + reMsg = '升級算法成功' + #重启业务数据 + restart_work(mid) else: - reStatus = 0 - reMsg = "升级包上传失败" - return jsonify({'status': reStatus, 'msg': reMsg}) + reMsg = '修改数据库出错,请联系技术支持!!' else: - flash('升级包不合法,请重新上传') - # return redirect(url_for('main.get_html', html='系统管理.html')) - return redirect(request.url) + reMsg = '升级包不合法,请重新上传!' else: - flash('只允许上传zip文件') - return redirect(request.url) + reMsg = '只允许上传zip文件' -@api.route('/model/add',methods=['POST']) -@login_required -async def model_add(): #新增算法,需要先上传算法文件 - model_name = (await request.form)['model_name'] - upgrade_id = (await request.form)['upgrade_id'] #升级文件ID - ###---需要根据升级包获取模型文件路径,算法版本号等信息,若根据upgrade_id获取不了对应的信息,则返回报错 - ### - strsql = f"select ID from model where model_name='{model_name}';" - data = mDBM.do_select(strsql,1) - if data: - reStatus = 0 - reMsg = "算法名称重复,请修改!" - else: - strsql = f"insert into model (model_name) values ('{model_name}');" #还有参数未写全 - ret = mDBM.do_sql(strsql) - if ret: - reStatus = 1 - reMsg = "新增算法成功!" - else: - reStatus = 0 - reMsg = "新增算法失败,请联系技术支持!" return jsonify({'status': reStatus, 'msg': reMsg}) -@api.route('/model/upgrade',methods=['POST']) +@api.route('/model/del',methods=['POST']) @login_required -async def model_upgrade(): #升级算法,需要先上传算法文件 - return jsonify(1) +async def model_del(): + json_data = await request.get_json() + mid = json_data.get('mid') + #删除与该算法关联的通道相关数据 + strsql = f"select channel_id from channel2model where model_id = {mid};" + datas = mDBM.do_select(strsql) + if datas: #有关联 + #删与通道的关联信息 --c2m,schedule + mDBM.delC2M(mid,2) + #重启通道业务 + for data in datas: + mMM.restartC2M(data[0]) #根该模型关联的所有通道都需要重启工作线程 -@api.route('/model/config',methods=['GET']) -@login_required -async def model_config(): #获取算法的配置信息 --- list已经获取 - ID = request.args.get('ID') - strsql = f"select model_name,version,duration_time,proportion from model where ID={ID};" + #删除算法文件 + strsql = f"select model_path from model where ID = {mid};" data = mDBM.do_select(strsql,1) - reMsg = {"model_name":data[0],"version":data[1],"duration_time":data[2],"proportion":data[3]} - return jsonify(reMsg) + if data: + py_path = data[0] + dir_path = py_path.rsplit('/',1)[0] #正常最后一层应该都是/--手动加的 + print(dir_path) + shutil.rmtree(dir_path) + # 删该算法记录 + strsql = f"delete from model where ID = {mid};" + mDBM.do_sql(strsql) + #正常来说删除一般不会失败 + return jsonify({'status': 1, 'msg': "删除成功"}) @api.route('/model/changecnf',methods=['POST']) @login_required async def model_config_change(): #修改算法的配置信息 - ID = (await request.form)['ID'] - duration_time = (await request.form)['duration_time'] - proportion = float((await request.form)['proportion']) - if proportion>0 and proportion < 1: - strsql = f"update model set duration_time='{duration_time}',proportion='{proportion}' where ID={ID};" - ret = mDBM.do_sql(strsql) - if ret: - reStatus = 1 - reMsg = "修复算法配置成功" + json_data = await request.get_json() + mid = json_data.get('mid') + reStatus = 0 + try: + duration_time = int(json_data.get('duration_time')) + proportion = float(json_data.get('proportion')) + if proportion > 0 and proportion < 1: + strsql = f"update model set duration_time='{duration_time}',proportion='{proportion}' where ID={mid};" + ret = mDBM.do_sql(strsql) + if ret: + reStatus = 1 + reMsg = "修改算法配置成功" + #重启-工作线程 + restart_work(mid) + else: + reMsg = "修改算法配置失败" else: - reStatus = 0 - reMsg = "修复算法配置失败" - else: - reStatus = 0 - reMsg = "占比需要为大于0,小于1的值" + reMsg = "占比阈值需要为大于0,小于1的值" + except ValueError: + reMsg = "数据类型不对!" return jsonify({'status': reStatus, 'msg': reMsg}) diff --git a/web/API/system.py b/web/API/system.py index 05cae78..573902d 100644 --- a/web/API/system.py +++ b/web/API/system.py @@ -6,6 +6,7 @@ from core.DBManager import mDBM from core.Upload_file import allowed_file,check_file,update_system from myutils.ConfigManager import myCongif from myutils.ReManager import mReM +from myutils.IPManager import IPM from werkzeug.utils import secure_filename @api.route('/system/info',methods=['GET']) @@ -15,11 +16,28 @@ async def system_info(): #获取系统信息 data = mDBM.do_select(strsql,1) strRet = "" if data: - strRet = {"ID":data[0],"version":data[1],"dev_ip":data[2],"dev_mask":data[3],"dev_gateway":data[4], - "server_ip":data[5],"server_port":data[6]} + #获取wifilist + wifilist = IPM.get_wifi_list() + connected_wifi = IPM.get_connected_wifi() + print(connected_wifi) + + strRet = {"ID":data[0],"version":data[1],"wired_type":data[2],"wired_ip":data[3],"wired_mask":data[4], + "wired_gateway":data[5],"wired_dns":data[6],"wireless_type":data[7],"wireless_ip":data[8],"wireless_mask":data[9], + "wireless_gateway":data[10],"wireless_dns":data[11],"service_ip":data[12],"service_port":data[13], + "ssid":connected_wifi,"wifi_passwd":data[15],"wifi_list":wifilist} return jsonify(strRet) #它将Python对象转换为JSON格式的字符串,并将其作为HTTP响应的主体返回给客户端, # 同时设置正确的Content-Type响应头,表明响应主体是JSON格式的数据。 +@api.route('/system/area',methods=['GET']) +@login_required +async def area_info(): #获取系统信息 + strsql = "select * from area;" + datas = mDBM.do_select(strsql) + strRet = "" + if datas: + strRet = [{'ID':data[0],'area_name':data[1]} for data in datas] + return jsonify(strRet) + @api.route('/system/upload',methods=['POST']) @login_required async def system_upload(): #上传系统升级文件 diff --git a/web/API/user.py b/web/API/user.py index 0d53778..77dc6ea 100644 --- a/web/API/user.py +++ b/web/API/user.py @@ -1,4 +1,5 @@ import os +import hashlib from quart import Quart, render_template, request, session, redirect, url_for,jsonify,send_file,flash from quart_sqlalchemy import SQLAlchemy from quart_session import Session @@ -39,8 +40,9 @@ async def user_login(): #用户登录 #比对用户名和密码 strsql = f"select password from user where username = '{username}'" db_password = mDBM.do_select(strsql,1) + passwd_md5 = get_md5(password) if db_password: - if db_password[0] == password: #后续需要对密码进行MD5加默 + if db_password[0] == passwd_md5: #后续需要对密码进行MD5加默 print("登录成功") session['user'] = username return redirect(url_for('main.get_html', html='view_main.html')) @@ -86,19 +88,29 @@ async def user_adduser(): #新增用户 @api.route('/user/passwd',methods=['POST']) @login_required -async def user_change_passwd(): #重置密码 - username = (await request.form)['username'] - password = myCongif.get_data('pw') - strsql = f"update user set password='{password}' where username='{username}';" - ret = mDBM.do_sql(strsql) - if ret == True: - reStatus = 1 - reMsg = '重置密码成功' +async def user_change_passwd(): #修改密码 + json_data = await request.get_json() + oldpasswd = json_data.get('oldpasswd') + newpasswd = json_data.get('newpasswd') + old_md5= get_md5(oldpasswd) + print(old_md5) + strsql = f"select id from user where password='{old_md5}';" + data = mDBM.do_select(strsql,1) + reStatus = 0 + if data: + new_md5 = get_md5(newpasswd) + strsql = f"update user set password = '{new_md5}' where password = '{old_md5}';" + ret = mDBM.do_sql(strsql) + if ret: + reStatus = 1 + reMsg = '修改密码成功' + else: + reMsg = '修改密码失败,请联系技术支持!' else: - reStatus = 0 - reMsg = '重置密码失败,请联系管理员处理!' + reMsg = '原密码错误,请确认!' return jsonify({'status':reStatus,'msg':reMsg}) + @api.route('/user/changeuser',methods=['POST']) @login_required async def user_change_user_info(): #修改用户信息 @@ -124,4 +136,9 @@ async def get_user(user_id): else: return jsonify({'error': 'User not found'}), 404 except Exception as e: - return handle_error(e) \ No newline at end of file + return handle_error(e) + +def get_md5(value): + md5 = hashlib.md5() # 创建一个md5对象 + md5.update(value.encode('utf-8')) # 使用utf-8编码更新待计算的字符串 + return md5.hexdigest() # 返回十六进制的MD5值 \ No newline at end of file diff --git a/web/API/viedo.py b/web/API/viedo.py index 821da64..565ad76 100644 --- a/web/API/viedo.py +++ b/web/API/viedo.py @@ -14,38 +14,6 @@ logger = logging.getLogger(__name__) #pcs = set() #创建一个空的集合,去重复且无序 pcs = {} -''' ---------------基础信息--后续封装在函数里--------------- -''' -# 打开摄像头 -# def get_camera(): -# cap = cv2.VideoCapture(0) -# if not cap.isOpened(): -# raise IOError("Cannot open webcam") -# return cap -# -# cap = get_camera() -# last_image = None -# read_lock = threading.Lock() -# def camera_thread(): -# global cap, last_image -# while True: -# try: -# ret, frame = cap.read() -# if not ret: -# logger.warning("Camera disconnected. Reconnecting...") -# cap.release() -# cap = get_camera() -# continue -# frame = cv2.resize(frame, (640, 480)) # 降低视频分辨率 -# with read_lock: -# last_image = frame -# time.sleep(1.0/20) -# except Exception as e: -# logger.error(f"Error in camera thread: {e}") -# continue - -#threading.Thread(target=camera_thread, daemon=True).start() ''' ---------------------传输-------------------------- ''' @@ -146,42 +114,50 @@ async def get_stats(peer_connection): async def ws_video_feed(channel_id): print(f"New connection for channel: {channel_id}") channel_data = mMM.verify_list.get_channel(channel_id) - if channel_data: - verify_rate = int(myCongif.get_data("verify_rate")) - frame_interval = 1.0 / verify_rate #用于帧率控制 - error_max_count = verify_rate * int(myCongif.get_data("video_error_count")) #视频帧捕获失败触发提示的上限 - sleep_time = int(myCongif.get_data("cap_sleep_time")) - last_frame_time = time.time() # 初始化个读帧时间 - icount = 0 - while channel_data.bool_run: #这里的多线程并发,还需要验证检查 - # 帧率控制帧率 - current_time = time.time() - elapsed_time = current_time - last_frame_time - if elapsed_time < frame_interval: - await asyncio.sleep(frame_interval - elapsed_time) # 若小于间隔时间则休眠 - last_frame_time = time.time() - #执行视频传输 - frame = channel_data.get_last_frame() - if frame is not None: - #img = frame.to_ndarray(format="bgr24") - # ret, buffer = cv2.imencode('.jpg', frame) - # if not ret: - # continue - # frame = buffer.tobytes() - icount = 0 - await websocket.send(frame) - else: - icount += 1 - if icount > error_max_count: + try: + if channel_data: + verify_rate = int(myCongif.get_data("verify_rate")) + error_max_count = verify_rate * int(myCongif.get_data("video_error_count")) #视频帧捕获失败触发提示的上限 + sleep_time = int(myCongif.get_data("cap_sleep_time")) + frame_interval = 1.0 / verify_rate #用于帧率控制 + last_frame_time = time.time() # 初始化个读帧时间 + icount = 0 + while True: #这里的多线程并发,还需要验证检查 + # 帧率控制帧率 ---输出暂时不控制帧率,有就传输 + current_time = time.time() + elapsed_time = current_time - last_frame_time + if elapsed_time < frame_interval: + await asyncio.sleep(frame_interval - elapsed_time) # 若小于间隔时间则休眠 + last_frame_time = time.time() + #执行视频传输 + frame = channel_data.get_last_frame() + if frame is not None: + #img = frame.to_ndarray(format="bgr24") + # ret, buffer = cv2.imencode('.jpg', frame) + # if not ret: + # continue + # frame = buffer.tobytes() icount = 0 - error_message = b"video_error" - await websocket.send(error_message) - await asyncio.sleep(sleep_time*1000) #等待视频重连时间 - else: - print("没有通道数据!") - error_message = b"client_error" - await websocket.send(error_message) - await asyncio.sleep(0.1) #等0.1秒前端处理时间 + await websocket.send(frame) + else: + #print("frame is None") + icount += 1 + if icount > error_max_count: + print("视频源无图像") + icount = 0 + error_message = b"video_error" + await websocket.send(error_message) + await asyncio.sleep(sleep_time) #等待视频重连时间 + #await asyncio.sleep(0.02) + else: + print("没有通道数据!") + error_message = b"client_error" + await websocket.send(error_message) + await asyncio.sleep(0.1) #等0.1秒前端处理时间 + except Exception as e: + print(f"WebSocket connection for channel {channel_id} closed: {e}") + finally: + print(f"Cleaning up resources for channel {channel_id}") @api.route('/shutdown', methods=['POST']) async def shutdown():#这是全关 --需要修改 @@ -216,7 +192,7 @@ async def start_stream(): #开启视频通道,把视频通道编号和元素 strsql = f"select element_id from channel where ID = {channel_id};" data = mDBM.do_select(strsql,1) if data: - if data[0] == '': + if not data[0] or data[0] == '': strsql = f"update channel set element_id = '{element_id}' where ID={channel_id};" ret = mDBM.do_sql(strsql) if ret == True: @@ -236,7 +212,6 @@ async def close_stream(): #关闭视频通道 element_id = json_data.get('element_id') reStatus = 0 reMsg ="" - #?关闭视频播放--业务逻辑-待确认后端是否需要执行 #数据库中该通道的关联关系要清除 strsql = f"update channel set element_id = '' where element_id={element_id};" ret = mDBM.do_sql(strsql) @@ -245,4 +220,6 @@ async def close_stream(): #关闭视频通道 reMsg = '关闭画面成功!' else: reMsg = '删除通道与组件关联关系失败,请联系技术支持!' + # ?关闭视频播放--业务逻辑-待确认后端是否需要执行 + return jsonify({'status': reStatus, 'msg': reMsg}) diff --git a/web/main/static/resources/chrome/allow-access.png b/web/main/static/resources/chrome/allow-access.png deleted file mode 100644 index eaa707f1659a8c75cc5d3a8fed92a3054ab72b06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10061 zcmbW7by!vJyXO5Wwds=X?h@&c?%u$rI|P)5O)K3kA*FOmcS(bUfFdOz-Q7K}=XYkV zxvn#3=A7{l#m!=|*1O*4dG61BuLyNjISf=1)F)4#U?|8-Yd(4MPdxbg6UtNYcg1)` z;FBke_zKbzQ25+_7P2q?)J>;nEpxtleh7gir2WzuAB8+W@(dHVg^DS6=E&s(hy3Xz z4uYgs{9=Y1#EAL*6KcqN-b9C6@mbfyhYQM5BpCAIrvHJEtH;Jj`mE@8|D~bOtqPqo zRcr(av@ID}AeAj5P6`#uM~Ps1lt622Gf3bkV(GshBmLXQ%Q)RUOPFfLja?rdezrCV z_`n0H+B{(FI_+T@KEu{XCQDE?QArq9M-D0fij=4@J;U~yw+)stcJMS>du!{I`)=mmX_z}aNCL`9TuG3g#p$}V+RMV2TNZ)WA_ z%7=cehQ^&_iw)VE2K?)UvBAW(E6A9a>AYR8GoQfk)q%zR*2hLzmN`X0jHp78xU!+{ z#zl~L5e~kFFT>af+7~bS0+SzEtGBK>mEisB>75Mp;D}|!Txdw@nKv3MBqD`QD-tGR zcy7FH=*Gcur8v8xSNCtnge1`5lo{J_lg2Pgj?PP!Z}zxrR5O3KRH$U#DJ#>}G+A8w zv$A7d-LiH5h+(Go3anrEQcqx%vWUor?$w!)_A#-=YU1VrpQG4*qU~fe$pdLV8$s5P zrNZWCd&9}eqA%1*abeny@Y32$s`C5W%doJp#3p)|LXdBG=o2`OeHTYOfH7x zE?HFp9_a-^FHV>|B`P{ zn|__`#Lf9`ky=iN)o@A?!Iwv0)l30ykG+|kfQM^6zK4r>M+KPc=9s&~-Bw;4oJ`#R zF6lDsrTwoK_g%g>bNM=Xxw$Ml<>85T(_do#nIJId$r$aOp^=GXgH=6As_ANSUY)CZ zy}B1g*M>?*T!H+^B{QJ$ThwDkA4Szv_2Ja|uI0y~H{ru&zSt;phCzp2I<%rGPWAAM zkME#&b$5&Rxm}K!pUdVLIX3pu@c?C6KeT(U#ho=~XlRI4r(D2e4_2XHUrf-9+Zzuq zvxMnA<`MY3vDuZcpyVDqKbajD+b;4b z1zm!Z=IZSUJs6lK-bhRLuJlDYE_K|4#nP=bUT`kXe0k&K>T2<%-RIJ{-tPIm1+ko2 zwXj?#*eGO^;T5yV!QU8Yd2}*mWe08-{NGNr{4(B76UL^NR#7 zqZT)WSGjm)!6edJ75XoQde!%oay6cPtvHL83&kXl3_AGT95msCy%~ip=%;~Zj0 zK^!UQJ^O@SPbh|9Dk$%{kmn>Mk;8ZQ_kzbgVOVNeLLX|Y4j&NAs?&w6&hZ~eUfSXF zc*9@{3JOghhO@;39u`_XYuDF?l1#p47{I5#LT)+J^UNzk8D$wVDwQt}7L0sY78az{ zf`)%QT8ZZAr5?uQL*B&9)>?aTHwj6=@M)Fh3sGGoKK<V(I~At-_;0Yoaix zuy->f!^2ThKjae(nw-q!;y!W3N)Bp@=CSOErEsfO8n?%j_kHwR{VsMJJ)kCjpFDts zL4r;uPz5R*J%ez&tg@rqdvS4*?TAhH_36f_QYuIN;VoFTcb}VVufl8pxR@E3n3(jZ zE5eA#5}bb-5^(IDtPfvHFQbY~Up5?}n)4VmhNLBqsxcosT(b!Bu(+(3C=U_nrrI>E zOKGPqE(ok=HMI%WHn%hjOTca~_HWmc)WZ4nYAnO_Q2O&}?AL}CDJRU6(geJQ`N?gZOPea zF-C+E$+Y*g(eszco{(sfzpS&L9y1T}8lzHhB1*B*AkEhHTw;;=IJhA*u$Xw3XsUiH!OQ*m#-soR#B)~$LBq2V)H`?oz<;_+3# z%JuSeobj|-f+R#)%y3w^UtT<(Pn&>=q_{Bfge=7Ba_@L`Ai^!~I*R6^9lpK!D3dEEA9jwcJ0uH>7) z`cu`6fH8#noTZoLl;D{Awf(Phg$^zH<$Q%CmyMAUJ7ph*@bglj3sQ)=&3oTJL;i^v z86K{F*}1Z^;(fODxfWvH7x`S-Ayg%22h)4{i;*CqoTDZ>4dTtjtUp(zleWUuykqAC z)`1fngp!d>8@EO{YyNa2OW3o<=KI?v!k8M-I56SOKhS#Y{)$l=V3{8E$BGh4Ru7G> zrhr84zE<-U$|$|!Qh&J}f=0+R6LqKiLVFy9ittJb;wmWN?rp|$-!aDM$( zZvkD6P$y8sgfrmhr<-5=HCHXooo9(oV1Q;g%oq#`LtVkMvSKKsY%Do6(I zGf8icf1&zGVcrwVY%MZw7LT~d$lUJkd_qoRI!*0zSi)Bsj@{qQuIlR8w>&HteVx)W zs^iBL1g-I(2YHB)XRFbk(*L3236_y{Z4+5L-FI3YQ%Aj5Z>wvftZdJB z>y>O&bGXsYdxr@KN`kNZZ93ZNsj1)Bos0<|8aBIta%G$1UvMUf6!h35!kc+mc$&rD zd^A}8W0rxsp2%C#oh`Y}VYX&`T)psqs!Vr+I9<|a7zfD7Zj!AY3e6*0O^e9M!D#Im zd_BvQKtwbik#i$tJLQ{R6GbVz7b}yXHWfG=E{-m_xOvRUxlEsA0j0`m)N+-1CAdbR`8Uka;fsfd2fK_ve@sIa z)w4jy)X|JViTYu7M>h*5caEr!j$b_B)>wrZU8|${VLU@ChvrlA{DDFQ zWWw_;S<{ZYpjcyT)H=k3OoeCL{wn0MBH>TQ@b}^2`PU})fCjXC&1<$QgAIBP4OU{} z9;V3bzg40#3=BwzEOoStvu%#%mmhHGq=vn<)+@iUtnH959PH5UIlbK+OJ=Uk$jBJe zGa-A9usjt)RlqO4k(#3*Z(X}CVQ%jBGi$u+=-j534C_**p{2PnxF(sryul>XW14jM zI<%3+nZGl~v2a9BR8%wvyV8w@O#<5(MJH+`7d~{{37LF^<7b6 z7B9T?P#Iar)8(*ndoAwQP(J&jBcX42SP7BU=HaB43Z;^X{MF? z(&B)TC@FDNWOw=P;MRHywFOenS$eylFX$OXHB;gTIjJ}Z%P+fb#DA(4bEk3(4mqe^ zkL7j!+1WUFUnC+T@-q%`o$?3|p=+o(fMzzk0bj^qp-4U3JK<6KBzh?O*^S_>5K7=D zg@;Q#7yC?A6kRT65GCOI<34bh3d3Qp>sTk>dE+F}zOly*F_F0^F4i&Hv)KarD3I$Qy*BgpDvt^&dW7bl@8{(FC`gqxNkn zFft~lPj8GOf(oTui;D<75pdu*5;H{U;4jub|KG6oKcU_K{>R-*2tLxXvi-fiGmk2w z`i6#vK(^uG;&%7+XbZ;?M6Jj0FAf4>P7=rT7d#yU6a63WJuQRtp=e^x?(P)^jR&CJ zs%8mUaS_2&WRr%VfLK5g79NKKRm=P+Y5MU|@JF3n4dB3UA6N-lb@uwQR$YTr#RUYK z3>x1W8yk;NL{W)ki9g<*#)&^L88kTDoNePI*;zJt`}kNC=jYSa&iXEQhiq-xT04V( zfd|8x7rC5oFi1UgxI1?7RP%_Ys1MU+5p0A zL|`!zWjBE|82kwdIUWOaVf^aVtM^Y4C*i%k5c`w0A?3bj$e1&mi^!C|PT;PAXs9sh z6f^1YEl^5T9scv{i_tK#m=a^>{RL?Xn?|nmSf=3jOu@X{9A#2oTP~n2Hbygwj(P62 z!3fg&V%Q88Fm0V&*yCrJE>;}B!%X~?^J+hMKC#Q9ZG_t-2|#pw9~jt7SU6Z{t?=T>P%(RlT=X+1JYktE+RbqPutZN{Bpq)-0*=w{$b~%|8NRBkR@iLjSytbN=-61Z@|ONwU%nq zukW8V8v=waPFLc!|HUSzk$u~$2VeJs!8{C(KMxOdevHr|Wy=>GF4Bfs;%&?TcSeEE ztQ53{EX1tQmm|d-MlH$g1}RMPX5Hh=%2zW>t)86P-}|Bn(@$6XW9%pMhaT>4nduYk`N5oX~i{i46{E#E&fRsd-r zR7CH^ynfE2a`P%?PtImWnGrubr}bZc7Tl8%4G$UAWBMuv$GqIgaOA-??u6hmVDH9D zYHCgbdfOb$Xat^AxdeMj?L8E6RwY{`T?vqbFw3uK;un)+9KO6ISWo1_Bk?nsa4WfS zljWpo5}fszkhbyGOXe@y(yyRjwG3%S>Rr|qNg`a@j4ipNFbriMyssOtgLU6QyUjU@ zZ*^iDCTDY>P$pf!$v+PNzHE3Ge_?s9|s z^vV`z5?VeI)aT_@&3pnqQpkYUey)z$peC9m{;363c{P0q9d(FSp$+CHup=p-SBDTr zJgXMg+}LB1f6dr>ez1@cnKp@TpEhdU(B%g$bd$;NZrfRxgQ3K(6$q`>zJIYkn!sTs zl(j!bzS+lBTtXfqgN34WFP+Gb7iRk0OhXG985tNF;RwVZhAhoLe2O*r;qNK|$8g3c zaAZ6m%KD}wlu>n+iHU;Z^dQP6;CVpSM^%sHnx~c{R*EwX>LnQ8JABB0cpFR{TSPAn zY>o92VK%8SOi`CLls?QC1J#=V!&|mhYrd+KhLnfdhdZi0Cor=CxLQgV9TQ{4sf|nX zlpwi^2#I)Ar1MyruMQ5%pUDx}|8C+A(x_z3`A2@-7+2HU#rPQ#y1KaRlk5T;JMC_&%BOj` zbe5dZVnsSH44Zr zT9PGesahFGzzN7gLKNVf)qh|%Ob^c8G>6=7kvKkR^lCu94X1Ke)-JFZ*H{h#_q8~B z=VwVCpXs7;8(ahNAF;J`Yhb8Q#9J`Z;pj|VLIxR%*|iCRGWZ?8z^ZAc_*uw1w^cii z&d+7AW81eK{=xW%`+fS_j?Epyt8c7)N0*ms?i{z5hgeuxHZNW}jIpw@MYA)%rhE_* zn_PRovJNfVBPAgzJuqOd62V=TifBt0_I&Ftt8is|zB2_UOA@=o(8LV$ZgKR&;U|u_rAx7(hw{>^{!d|T&X?hw zGGXgmQ}y$E7g*ZtivZOBzMTI*Bw+vXB<-^fs<+~rv?zf`xeC{4{?*mh0>iVkI3RRF zWqzzHq5BIg5{li4KL5{n?LVIU{}#sm7mm&js%n^b^7M3^D%A$tKGRPYBy2VL+AvzV z*x&W`x}zUo#>lRA_}v1zjE9fEwwDB`WQtCuTPWbcH;F+dTo>3UHtvUu?VuemwRyRM z5==}=(k+KM@6A+$xnBQvLBDcZ9DW3}6C&H~%}vcQ(CSh6%$h(y11A;{0f9^eUImP& zmv%p!0v;bgc2Ef{PY{$eE_y4GGqJHbOytTiB$a@|MnofUyO04eDwwYT1FEmWsP&>Z z0&l+FzDWP#aLJ^>K`*Fl99%YfNMbC7sD2y#IQ@kUNECFx7+x3U_)BU!M8q*s19=pc z54snNcInSblTOV7#d^mjF(69?T{q||-4A|yff55Ve|NUlCIXipKpGH#f*|Sux?yIho&(bfF!&!>TbU7=Zky06GD zT>*kEH?UI1?cQ(Z>WG0e65~LCi(BKit(g)>CU^qW;1}cek0iC0Ly5r0FTxQtAKLy= z^zXkhyGP}+)$DNNdU~Tzu5japR?phOtsVP?zW1Blz}uvUJ+vd=j(fbVEGA?iQ27IZVm5rfD!@^ zaeXv{&`ZNXQ$v$Q=-*e0t{jkGGyn~-?0U7J3xJHg0sHx0pNwXUW?%qfh#31DiI9`G z+fA`F^y)!+Pm~FDz*7!@=qSagTtA2%P^_ z=PcL2Olw2KOd%CDH8m0yhNM}CLaBD+N1pFcY-6=amh$oOaiDZTizZk3-Q*l}{TsCF za=qGzvma_A^Pn}Q`ih|uuz`S4EBEg7yEveCgA`EALpy-h0lvR*+fqN5!zFJ9Bn&pu zqR*kI<=Nm{;4=mWo~{k`AZ1!hN=n92h#vjlV8hXsgQBP~Y@Rf)P6ieT=vCmX9J*gJyG)xr_VuNu5hNobBTKc4FxeSZGn)W_ z6BI*BaMMGKm`2B!z}^PsZ%_&?0h^Ir&}9u=AREBB{s&~eS@dCiHdy={vM@K$e1J`1 zN-wkoSRFtyQP9aWmiXPP?;sMNo;3_@^Y!%w=jeX7Z3k3IrVI>5L>N5B^`RN`7wOQQ z$$}_-`q=evAIg9SBElcLw3fe5K(*!wFu<=eT}O}+c6D`)ti5~p z4uopupliJzsgqN~*8v(sHI-ulM6*)jGEoHWAmIh#FrM6Xes~zIe&U&EUJ$VUPqsEU z2S$p7(9qHAu(m;}Q*86~-9PzlpgnwUMkC}n+x{^yHRTTa6T5yLlSVFr=6tg&qeTxV z=oSd9xOm@7^%JQl78@OxKxxgk(sS|1-wef52aV}SGB7ZRfnfs>#6dYwN;d5h^u~PT z^4_mI)0J_9Rr_FXpUm3+Dkqj%2Q|DOw!yT*CIR=Dq+=_kwmt#b5qRJ^JIuJhz&vw~ zAJd64>hLAz1k}F?z6bcuTCvP844pWUS&Jd?xdMj5ONSY3XKbgROL>fy&8@9vs^Bev zV4SVsCo}dn0X4PN$hqNNJV-Q+Gak1DM6-6 z9(V@kX7x}KBObao8_lch+uK#b+ilbD&slX$rFh7N%@sbJgE2>mi#rK=;M8;Ez6iD) z5ighfn{#ktA)kvq&dxi@6^kdw$H%}Fa2Me{t^&^7m_HVHRR^xoZSMV|0L;n(p03DV zi5;`|MmLv-YJeX}OFFS5=l)tV(zReXnc;n7&6J^4i2U>u*j!VPBuX=CDi^X43R=ch zY_q_?z@w=9ad7Z(8aM3}CCm0i-oSV9N98u})fj#hZ-)q>2vedk-lE!cL_bqrx)4uj zsd?(rkrPtVPQJV^SltbL?6-fzB?L&6hO?csvop{Uxz^Cj+Xx4ucuo8t8hn@_1&vHJ z#|{&sXi@(xdDwOuTf6iOylIr}st}IJlr<<99-TeqV5#$B$T?=g5Fil>n+LN1YSg$! zi6(v4KBiE&rozDD5SZ88M!+9aVZc+hJgMaltpULf7NNS`GGe zsU+RN3ktyq9Cn)7x&FQRWU&;3()ghs>4|g2tlKId9LsTkIq{0s*h3*`Q5rYf4&CPU zpr4>bk*F_d`CN^!)dMS2;8qkgZt4pDh0fapVQUw#M%u$5%l=+&y(p#)>&*dK#y2U; zu9W0pWg~6e#Hws6w!NOGdJ5#n0M~X5&^(+lh$EpP&L|T3T#=P&X+%g`;N1xH?&@&K zZ*1X6>k|S%IDkXNYv{m?DNN4u&6|X>=Zkpc>(n!rLw&M@-0k+~>Os@q;GLC)>@G`L zaCCqC*V2I(K*R?IlFK%YalPAb0dP*4MFb>{dVAuhmte^%AJt6-)0W{z;U!0vq z$Hg&P%E-w9#OLSX!L2YA<>cg4mTQ(nm%!Vdu4EL_sMJs^QJqO82hQiKO)vr@BO}en z_+L-<9{)NAZ_Y__cmBuQn|JD#O`$FySEr{{H=YK=x9~!k!1cRzw6EHNax<0&_&+&LNQU74ozKr zT)mT8!NCUXF(DX(h#NU1hlv63;^Q7=a=Vmf9G;*C3@wZ;vSu*h2zw5c(&l0?pA)C} zdwKyc#KVtl7Rd)O{JRMR*#;^*GDO9v0s{d60jxm~j_l9q8&o&rIN}odJ_;_h3|*`G zFZ6@`B1-|v3!T6{A5eaRbNNLN%;d*MC`zAS=!XEM+#8}z!}HGn z08mQ<1PTBE00;njluSWmgV-jq0RR981ONaO0001Ccy)4Ra&TW|cywiMb7^mGE^2eF zQ%_6mFc3et(C;vK*>+j7@BAJs3MvZ1g7|m`@sMq1+i059BwdBaes`zYrtT_=2XF1n z@6XI+X2UJWN*jyU(s@|G-Tj{|&C>aFnx!y>ORj}N2ZDPJ4z-7kH$j+XQPhP;A@Qe15U4oHd2;WRs=TdPw^#JYQ@V( zxaf50sUEl`WP`po0=x-%c&_ol5lYjv3O%}@HP6y@WE&lO8L+dVq}gay!2c{w#8uc(@z<*8#uZwhPa1B$ zq!NPe+aBM&eKLi*^7TEfb`2unB6D7jaNq(Qta z*ZCg4fa3-H>Pf>SvUIyUzd8Jq7NKjy$|~ZcrZHyehtnIEmC>NC2Vg!%i=apE@3IG5A2mpGNOhJ#yM8RoH003l6000{R002RFb#i52 zL2z(vWl3XiZeKAnICwEKI4*E*X8~kPo3n{fPDc$28VUda01ZhOz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz-W=q650N5=6FiBTt zNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{85a%iY0C<_QJh>z} zMS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc-5#WRK{dmp}uFlRj zj{U%*%WZ25jX{P*?XzTzZ-GF^d3 z1o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcqjPo+3B8fthDa9qy z|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S1Au6Q;m>#f??3%V zpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyUp1~-*fe8db$Osc* zA=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3J#qp$hg?Rwkvqr$ zGJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Qq36)6Xb;+tK10Va zz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlFMZgI*1b0FpVIDz9 zSWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}*))J2sFA#f(L&P^E z5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_Ct)aG3uTh7n6Et<2 zIn9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c4Tcqi$B1Vr8Jidf z7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{|ep&sA23f;Q!%st` zQJ}G3cbou<7- zyIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzPziy}Qn4Z2~fSycm zr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_ByLtVo_L#1JrVVB{A zk-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2T3xe7t(~nU*1N5{ zrxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBdlf9FDx_yoPJqHbk z*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im_u$xr8UFki1L{ zOx>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+xi?=Txl?TadvyiL> zSuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote62cPUlD4IWOIIx& zSmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGAUct(O!LkCy1 z<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}TincS4LsjI}fWY1>O zX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~BJh;4Nr^(LEJ3myU zRP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o4K@u`jhx2fBXC4{ zU8Qn{*%*B$Ge=nny$HAYq{=vy|sI0_vss+H_qMky?OB# z|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ?-G|jbTmIbG@7#ZC zz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd&t%Ugo)`Y2{>!cx z7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`?ZJ24cOCDe-w#jZ zd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy001CkNK#Dz0D2_=0Dyx40Qvs_0D$QL z0Cg|`0P0`>06Lfe02gnPU&TfM06~vQL_t(|+U&h~yk%!q=lxyJvxhU?`QDnxq>`#6 zm5@M4m_k5k5NHqq#R*#!MYMUUal`>}Y+FR%MidYgq|rtY0s(;}CO{^V%0N;{ z&2!!POndKVc>maYpL_1DTSJlxRl)4fXVvs*F7S~x8z6WFc;HBHb_djF1{-HEYICw~YXnMx~mDcCq_kG#|oMqu#=O>(}c` zM@Q7_jalFdXY+g-0Ox_`gWquNv*XWPe)-U)N#e*dgA&0zPZVi3ZPIToiR;rY;5$tC zS>{KserEiCo^i#{_ACQq4Axmh1f?|Az@`n+^Xql_Zfl>m0Oy?mpU9bIzH-I(=pU|p z#?aN)YO*ZDIhTi<9z+SoSOy0}Hmp-`ac&_DJzM9~0Ch~wFZP0E7bFXkkwCl4xp4Qdx|JOK05ocfyT_AdoQb;Q%{(w zo=+UWT9_F3KX=L2%JYMuf>Nr-`WJEn4iQE9vx6YOIR_|)2GwZ2>aRVU(ZD$YK$b0k zrm5J0hBhn5_PllN>V5YO4YvMJYyV7ZC9p0p#&Dhi;!H2JbD)&J=(0=IJ8QKnO6A%g zh9PO1_JnOro&x|-S{DT_i&B~>g26$5)%oHE9)B%BmY1UQ4peP6)D^s+8y#6^e!;oQ z&o|rk9dmQ>XIrh{#w3+*8p|>7@v3;AvtiDjSR&_)Og|TF_P@S%b!9}Uu;=f~qXdJ; z6DSQLJqr=XF-j=}Xw?1HXNAF?QvmprU(GZP_N`hs!r}eLF{!6ocQVjuU%qBla=CNS zJJKwk>2|}1(lpr7>aeTb_6NINw>!%?Y^^_@89(P7UF-6)aqdzV%DLwXBvItA*>a)! zz95JQf?WGc0F<|RC6|nQ~1+%M;>f6hNus9$T}HW zX3;@}_KHeHF+9w0wW6|WG$BLAE*tF5TV{Eh*C><6&C?|Pon&Q1j>mm_kEm5UP z>I_Qd!tW789Z;+KHCnUAId+OXWdX4Kr4t3Mmc37@D#OD=OuHE{jxQ!V}hEl2r2NTH6CSbg!$PyLJ7cmthK~(+`D+W<^))q zCs2&>7-P{&kzvt=FGU=cicqZvdeFNSt5=09M5>or>tEIFI%Z}~^U$I6&O=AC&rVKe zpKrI_y-G<|L|BqzQOXg9enY3D@ajxmkUhTuAg6$?b^h@54EJqZU%k#+7#nTg+ckyO31J8;R|JitTNRk9=EsaK_2$vK=pqM_=WcLG;962~onpseV)&P}C$k>V+7hbx8;gxmL zB*j`OF0Lg_Gqlz;8j8y+ef z2<`sNHf?m9p;6f?Yf039fFpb->ll9DEt1BY8Y`p|=1aM2jspR*PT zeNQ09m>xMx5(_xit_fDGTB-iap~Jyj?%k2T_sCKACrZ&=zCFt?6V}4`SoVfEj(eJ3 z625*gKK8J zQ7X5H)+Xnd1vphWCL+wunY(A_I5sp`pO~9#^)zA7Ia;k22M-@&_4rD35aMxs^X3EW zJ21`K?PJucH9}nlCnQ;d2q^7{V$Jx9A-dfzyB|5i;ZMx*yq8}{eI&rST-(w#ErcVa zsm0oytWAtF^y2HI-+FYn`LTO;nE#w~`MlQ4@xR4ZAkcpG=%~F$sh}rt=iEZVrvRRa zLMe@N9<4N)HK@XR8Dn~YF~;DW1zbEf@k};da2=~wU&GMgCbW+6-eR4>IfJ!nPw-Dx z_)+%z!IKx^HLnJbkF0|NsDm5AMk_tR-MncCCl(9sz-TrtYvP=kqq z4XhYg&&tvDY+P{>!;Mi?>>$eMW^>dVRW80_BYH$}%jb47Kbc^i>5;E8D_5Fj=Nwt) zNmI)Oo76=wzApIes+IEFnIZ1KuuDCFb3z=u=hka7k_%Y%G&sw$qR2zR2eP6X=m@kX zvsuv~nhU>l16gKB(>AMCU4HFLUjDx4UUJ!+7#`k)_l7KMVoV3`vcA&OQ?D3Q2twGi zr}J@ZHE|sEh?CYDtu=uTs5j~yo|@!=`}VWu!UhwggKS>8oeNf9%EZVTRt~KviUW?c zc4Fxg#)66*T|YwiRgOJ!BS-M1XT8IQ5%1m7$oy)eyMOSfyO)x5g)+5Fc`C?&n;E`Y{honxrh*tBK1axVgNKrRLqh{SQ|O!{j$`WeI@M~Gsvg2u934FmX@#xh z&t!aXf{CHk)N2h6r8|fk9u+xsYzZnJCmC%wi4GL2Hw}{pDSIE72HYa^T!v`Y+MWf< znYhOo$EDlcOP;aa-Gs2UTrjd!>joO;THVJS%ip)4(OF-r*yLS6A{e(&AuKsS$rrqH zbgUxrsLg}HFHBU_o!0Xr|5O6N8G*zx^YG5*r{XxGQmGIG3w|`W5{h;+p*Er!Upv5x zi46!5}DstGcNhPW=ydmJ={%JbRgfvYS38eq; zQd7&ujc(VnalPAi#bx%hB3xRwYxR-YHTAmPg6Ks;T>5?`xSVrn(K)Lxsy!u0`oU?R<29nXC#+j)Lz=iDL=DHlV2#1?2&#tJ z$qw_)d0MR&*4jl}z*^hW#+3W_Di!*d(Y!Ez!IM$r^05}~9 zR7wc6(CxZgcicDkxkjT#wOZ|6h%C!;-yA4Z7ph7)(!7(K5B?zsx;HW7?x*bza_HDW z_U_vaoh~bC4JI0c)N3I+%805$eK4jn0P(OQOY#e!Bne59&}=qoHk*09zF_bD;bNJ# zO%lh-73tyfu3GO`l=Ts^!){GBPt$2=2A7Ia(M;T5xv$=XP>xaf!QCW%jE>Y-- zw8cAme!gVu-ENn5yG^UrqSNUt5_~CCfF!YOSeHC&^{VuJ#tKS2QD|0)xE^>)AeB}m zP18lGU}r6%3h1Uup#-YO8A`zCy#bCm96=S9QUie!jE5s#%UD%ku)Y!8U_Ed2Pjvu@ z2=h(*xqEiZ-848@r(Uo3%x9KnsK}9~0nL3~f@qGB$_T^Z07GGop=yqF37AY`S$`gwr0mR769{QP_`3t2X5dW^mK~S21?>$O{#H0w)`<-c;_FRFr25X>NS=j@CNNx$V z2uk2s*AWG(x_L18dp!T`$qW#lR1VPN0-O=62IB_9)lo)jqYPFC7_YD9+O3EB1aVP#py{CtykyS?b~EQ4Att*%|w{!{1N z>QakKOW~ZO)9LiAjB`03$g&jW6={}YOxAn6ESgzs$+C7dmR1GTk)>1n<6xdSbN zRxpz|44y4R;k!imos%iv6Ux{8+OPfE<9gwTzx=_+oEVy%Om?oEh~KnoRXsFjfknra zklJv>H@?tRR3zll;^;#e_MuhBlPxbrJ1CN#98 zCex(=?^qokz<>Tynu%5OIJR^6vC&bcXJ!gh2^U>GK^O)+a@Qn({ntBKwW7vF7mu=b-2elF zAs$1gm2vn`hljs4%l<K3{^7js2RPLcg)05# zJ+nWzaz*^btrs`y-K5Ig++44nZ0)5Df(jgYbe`GcDL3DG0B?Q1<{)o2!3#t+p}sx$vE0o4(OxC+#v-EPxvw;39)lVz5j`*yQy?*X2<{W7+1+{&)Q`mX`cr zetw=tqftaL7HiAL^5RUAB)#XBok7-Gq{tO?)7+Bu7lBIu-|4jQuFmSwXM@WLpf8+& zIvog%W`d#^FZ&~CSh;|hZB)e%ZO| zX8}q=I6rUy>`Pxh_N-UDe8rCs4mQZLj8?1F)5xGIth}hk$l92!>oJML*<4Fh;L$Ot z(9!O+X*H8x<*y7eE0s#mx6jYd6IB9MuG7pMpXReS-puxG7qe~6Hg+A^#r*snAieJ0 zJk{GqB*GZm*U-7p2$QBMVHoyu1W~0ytJ^7>H*BwIq;wV5T3Vepmu`F&^-4%9>7sl= z{iO8!f?Wm#s!UBPp=}*wm4HCWixAEo0G??05k#i>oX9|)gDA5cJ4pXn0MWI<4rn}$2?eUP;)S8&Ni z7jj@~A2Z$Kgi+WNaFTR!F6dPl`@4CkL8iEEmPb;6M&N16V{ z9NV{ULsw#s&Fv=$0|Ek^D@(|Eiq{vceraXTT8l3~zuO^*q8?ECQ^0f0Nmh-#k~I@s zF*Ze)jU)vKT%RTAwVo~G4#W$Yh2dCTI-6ueT9|#xae&2fsB= z$H!1g(QdcRPGg<^3W;9LGdaM7P`RC2jfvQu_EPifFgnh!#dyh0Gr7a_2oe zxcGuCjD+i$O84cneLRTrdGCNVD61F6^kEqGv|p1Kn360b2*Y08KS`1zOPJE_damC3 z7AhKAHt(0fEw%)Um)qr*U@0*S1UlB!h}2q9T%?rT{*<)>F?ERwOYMyou!>NK@c!7Fpygd3_~kI<|hsJKm08= zue*T3a2?aFJ;c=rZ}TZ%IR{v1>ngcL5Co)I#!#hBH%+kC^l}X4bG`S>H>X%J{2Z>l z_*EEda?@V6gWJWHAnzzya0g36L@$t7&uF9wwc4)a905RhY|C5yDYDKYptU^w(9X`w zJ6-#aS6?-7`PkSnQ4}&WGutcNl;PR}A8Xfm6o-s_Ao435` znzu7h32AmSv;uL3&(AKq+}-&))Pur0MJ@uGn6E!P+%7hDTs(a+)Mb7P0WMqeyE-RQTO~kSL{?ot^Dj zf_|4#3bG9Qob%L%^O0@`kL+c|=mvB!K~_BqQpFfU6fKl>`$I-&9SWhEs~rMR8~;2*l^3uVbw?cCA}= zP5_WmeN4}vW((6?Or67Q;5JsXgMbc}=mhr=1f=ux{wMFcH@SU!#{B-43o4D#@j-$> zGd(@i)9S?)N7aiCddt=X;yCUBr_}y_zyO3{n9ujIP#XbfJk#?BXk;r9*Tn{{o~0PoL>NeD?lJVm$vH%fna5! zNw7apkOM%*m9Pf5=PAGeECRGx$pi8__VZlUa~rGty##b{ODuxckY)VE!@KO)r)OJ# zb>XJ;85=g#S-ZB%%*-sU)`E}k7w%F4mlmRoDwd9>FZn>dUZ>S+fk1r(W{((}-AUqX zC4>nkP7yR|S`30hNE6Rs7|?8Y@=RSx5YvQiw?*K`dHoB2tN8uC=h{mbkl(Qc1nMLp zD2QR1HWr|wWJHUsdJ07Wf{-B?nzEAnc|H5pb6M|iW2L``fOcUKbfMMY;jZJ8Ja4|4 z{qoUcGyiqt`Y4!KF+dzgOi$0yZg&>>_I{#Q3bU|Dw{SV|56PI4CzXsTM6cuIzW3IkZ0tm1z42KMt@*7!Raw>zl%DI6LnVLnMk z(M}S6anC;fWqPLj2WwWP&)%@U%EZJ_U8bwIg*q?<=0VNh;tVVIdsxP0^X@sel#IGtp9 zODR6D^Dhg6lemMD6b6!S$`L3L(F{L@^8g-IScDdftC#TOuX=y6E6K@S zrT82)r?Lco84&oQIG{xcJke7+5wvjaGXg9bb@l}RfkWX781(xXxA!n=?jv&3cr>Cy zYpwk01m6(=C==m=Mf(m;G&6cDv*D#2WSTLvgJH9SMz)iHE>6M&Sr)uw zayEMZT+_be;NjMfjEzcT^{NU(Bcluqq_kQsTCGkmb}!FPyMxE~hC2ugJ^YAJ3v0Ao zn=CT~F$A&0bR8zt;4C%;tY9-wk{Y6F4v0<%-t?M3=dvx&r`63vKBeSj1JxFT;8eu0 zwEhJMw3A+PP{|YP>pU;FjPa0n%#tErNYx;RDlg_3FQjJnGHiA*lH5hr9s%4gW23jt zwJYy#cI;aY9cll>K+SEK7!Mdxw?$)e?9%Vh~m9uY<%X<|?c;s&&5 z3?_|Hw6O-X(-`A=1DiXu@T!--m*-#ggEZUOLY2<>GXnvq0701?DnQ^>-hOV2HuUc} z0GxPnEaEzdQnbQNG{XxyQh5nO*#it@4>FwYAarvFJ^V&DtNc-Sme)?rr9Zf9Py4#z zAsQ=IL<|iN(WpDD%koJi(=(W?STWQif%%fKQV2nyu*MNqKYfOfZ4w z9K7U(@8lKN|2Nu6hWLDkGgEG5<~^#gG^Yna{~b#};B!u(Wg(BGpFkS;d;vf?#!31N zfaN5M;ZOz+oOH=kcTXjL1v;Wn29c@ zVh=Nt-N!m}D`ZFZdaeJ|Q~%S<`whou?bS!8vg@?6FNgxYtrEwLY9*xB@Kh=mDk;vT zn4*RsM~XBMtn&mFV7`l`NKnfD#0fGk4C! z67&&6vjhbF%_2%j&IthYW7q@Dd;ebG$NDF1m1oJ&&*c6kN6W*0V25CD6>o0_?(eD< z^T!+O8Rfa`+I0&T)^DPwCNac&MeDsv>raA6>iwEd%Wj{XGgorhT%p8V90uX4D5?y_ zu^ot_j4*V>)p?Sng$^un-IAt`N?0Y6fLDLdpYYNby`3aUfxbeID?tE(V*vy{2f-P+ z1HafE*gkjQRgoDqI6=-$Lx?)_{mOn6_%RVdit%Z3it}WGUxu*Nz4u#zt-$LGn|VZG z{#Bg&TXb;a(QJFS+1kYB%2!ws-iz~61lG+kLgL1kOvj zU0g>A$IfR9up0P{QjjHRma_zBViis^l|+D5iFH4?X)yf3WNPLiCCST-ukCrT{Tk-N zF}BqH4Ihkw8Ua-Yy&5MKL=EDodZz}I7JaQkUoR@Y9=KS95s+eWOF)(!Mw;)Ux&J|K z+i^S3x#Zb|8jQ8ra*qTl)VDDE20@=C5afW$U+X-x8aZ-41K>ABWaCmno(=#f14VzB zwj2nIb4*ktHYmpz4$gi(&}t9fqHxrPUqCo~4UPuRYrIqWWOMHU_YA?mIl#R^MAqgp zcCy6v2ucibG(tC8%TV-n{^?(DVAphwXKftiqSa%BVIDPhM1VL~z)BidVd3LGYr?LX4wGgK<{{X3VY#z{5j zczC|R|3=9rxxy{x7)YNBC{?}BpQ;_2Ce0NP(+y+YWPT#^koG$zWkN`FYhOZo)|4a~tpBRli7Y;jI z&YOQ(;8&E0cI4VyR{l_Z48IQqJz@8QqK^oQf*=|obqxj^aHMq@(E*s!S}0H+?;s2m zS_${=Kg#~8IbMFn1zfsr9Fyhi97Qki17ElUeFm05fXw+vH2$FYa|D2saDeX;k>}pLDdsn)nJ1HN(?S8J`wviWXTbEb!tS^`TLg5b1Bt&!`GS7o@7PcEX+ZN!*Rbl#@7GAM= zn0H^Z;*8$UdT1HX?v~|qhcZ5Q*kZ_M=$#AzkqE1Nn}0c${AHsO-L)ZZ5{ldEz5YiL zE-9~HS?6CW{N8Op>tFK!ejZQ)Ae4}-T_>(++|i?WpZ5d0V&n_H?D?Zu+~bJ?g>}M> z_wV6wtIKPyynuQTV};z!k#*uUO-F_qPm_i6@XHrr&!~51T8Fox7VesRVztA)Ke7v+F(T@5KAnzHIW) z3Zx)?s?_*C%|2NMlEoH6dbgl-NJ@>Uq9K{e*ZQmcdN}70Rkm{F9zputURYH;IN4(M z_FcU0^7X75sFE4GtR+}3Par^&H!j_BHntl&n*jKJ5gAZQ;YG2k60ousFqb*B2vsdS z7Q%A*km8+NLw@N&S8O)v7KMHdfe|~;t#j`EYr^&;Bhr3}b?TF%7cwEoAD5dg-LCJv#LJiN6W|xoL@hGpq zVgnbB4v-m(?*joRi4H^{bN(R_9^gC!!0XG9Pbo!$=BI9*BGignpc#xc!;xYr(u~BK zu~;z_3d50NMJ!y@5TYft;>sc6>JiP?XCNxJV)cdgUl18~?d}}cVt;Sc&;JMOQ& z2N6mKpj2<%taA?K9hESkl^Xu;&fUEB^7U+AIZS3OP8Y1MNER&@9c0dbRUkQ^0C1Uz zT-gr*r4)%*q)yQ?ieomf?2C9%79}2~G)g(NQoLYH_@#?r>E2G4HsJ2Le3r2F;K+dz zrwNbFX768NCok~ceFCK`6pb887KB~0eXVsaP$hXXrKjC_XsER&2qS_ZMCl+O_1b3< zO7dmBCr}lXuArPkTpMfJsLBxD=M5!FYg7=UgQ&Nae3=^VPcp@!CN-8%d~+}6a>p}P zk7A6?GluvRK%jLFe&hI@I!oKloh<;oQbfXXTNGWmft1|*21-EziclA48TKhb1NY3q zz7AYaTl_f<4K)R^?y+B1N1o$HI)?|csas>y{FGC{pcJj&N=eV$=l)lE?jQ^_svuHQ z+$vQFK8y&1utyksR-t6x&fwVJ5g)OezJZuPazCdxB{gVS|BJiUrC%`1m{>ZJ~q%A?=Am)-+r_RSFRZ)Gq&8O0P;<% zv0i8!_Z9CsVEwrUz(NeNQM7(mZ*M#lYipWcy{y9JL(8X&69+RH982M70tdR#2u=h* z=HXxh13?k~co+^~>TuI{XAVEV;>?Jspj=wM*zEWIuX^TQkx%6gl@J6WVH6XF3!6HZ z11-x9Vtirt9r^U|Mc3SCg}ZUMtcg|%qYCX0!eXspnRHU%TtVY)WebHhA)4QLJEP zoS&Q`QhZ<@X0sdsjsgH=>^OW}f~+~>bz#yM6`1-gfLcf|>%tXifjA1OL{)+)TIA=| zLM9j~KCicux7V^Qc~71s1Q?PerK-c+qUZosSQF>nq9l?p+=`>L0woY~D^P~5fmYnS zdy+;RvTm@Jr?XYw4BAfpq1^xba}NN!0D!A*EGxVoKxjg$t0rwmy%i+n(aS z`IPN(%P1>F#Rtv&cJ>f6T^Do5mx%P!&NEB5Gqqye^7RcU0!N9~=iMoJ65xLYkhw;Le!H^3Zx)(D2 z#)BC*Pb;c{W;lek604wgVItc}n~%HE@sC~puI6`C!Jl05yw z@7Mk?42k0kVHovDpq4z<+;anf@gA@8aWT2Z=WFqL_aRu5Fg&oHTAY%YP98FbF)9d) zz7N4mq3fbh%HawU2{2NtP!D0Y*=BCO&B}o)mtVM=4Wolp0*&>S#JT)^$SK5Z;_kBE z-{?3`08m(fjasWU&bd51t1M*u9&S2rJ8o!%notSWD-L$yXbShvL0!XW1Xm8i>sK#+ zZ{u?dP}RARJh}Nlc&yFL%oJMGGOc4$q*Ad!5Wxo#DvXMO202;OO0X`k9$K4Qs1?-+?G3GVhsjpP zx{*5DE?UcQEy6jEah_IYibbDb#S;``X_}e)AYjh+UXqW0PM~uFY_TFr#9=&a9b9<3 zN1B$zSYn;`#~G2Fh>@>vNAk+w{_ctIeXt8hl3eJ;`b}c*IBL*yrP zJCp>47PCn3OMSmqnkb41qZqAKFV0uJvlzhWauAezbC~e8cw9jk*EAx$NjW|@ix%O66~k;89mt8Gb96J?`#x@A)mLG8^4x)Vm`>f_c{pnP zc?1CG+yt;$B+rc1BgMwX!rMJOmoJqnSK&J6up(rrTnh`Ct*e|^7T(#)a{yxV=QIS4 z%(R)Fojao@(y|jNj3S~aCeT68`smUUiR9D3i{)10OAYK>hu=p4OIHv^A)YGE0YQia zL0-FYxycp}qt%d_hJ%xHu4}BiaAJftLp3~*8e1fg79vYm^bg>r2Lf@PYN%*szMUHX ze)S}1{}TnkN?=VH|5p?Yh6@zGYb?gPBHk@_=PCu{^X1YtffezR%wGzJlcFeAnE$#s zb{(I?q#YuqbCbWcx~KZOc$6ZDVxp+nt+X%aUur)-2OGVtUrz8;AptKQ-M1F6bVXqp zAv(aig%#Vr@cTodW*|}=oN2n-4ov?2XubL;ue@~qd#&SzsVOUj#h@yYUIln52ugz% zDLBw^ANKGqcfM^JWvyN5oLk|&2j^&KmS(oVQNMp<6`W%}Ehl>BLzitq7`qk*Ll|E& z;N;OZ%o@mCo-s^4B#B}FB+&bnz?gFurG&{&#*V2jYwP(0 z(O0aku)3=G^M~8qF=GfEG-5%l#R7?FRzw9M?9cu+bHSGi9SgMD2{W^Ei`u%>qPqS9 z2y_q0m)S|CB{x z@BD|OK>1`r8K%7OD)D^G!}riP`qvh|zTXlQSC@)X>}#42&iX^klC6?4!QtMc|#Q&!bcDC~{u4GUpzEl{ki z1st01m>YK<{iEH}?W;nqKBU#Mfm#B*5%`-^S?!%wR9wxr?;8v5mf#w+AxMHt2oNAR z1P>4h?%L3}1&84776=k7KyVLEa0?AI&_TNi(r9zp=ZtgrJ>TB@{XTr%qaM~+UH`Sl z>RMGbtLFU8&|DMP-6tS)SA60A7#HH3b!y@ktRh_}N-bASVYVhRh0Tz;3(Sb)wLb^1 z%l|liDtDaMd<((&xN1X>tuwZwa&HnPc`LDWL>q^Ox#I3>&#oK{YLgAK%Qx#uU71o8C&8mr2}*b#STV>h*tR7sWZ*>xvU4KF3+8u z>c{0jBiQ`IJhAgCdvDxh)(s?wbLq-cNA|)KqUTY$d1;cu1aC6oTsb>G-YMm$?po-T zgPRs00^U34ja7In*`WgJKtdcJ13sF);-~$Mm`i1;;yf-mWRpnvw(gX7*Jb<14s@G9(+rX`NX~AuPR6!Kh*JO~$c6arUDg~C?6OlxZgCruE z_JGs_{YCZPSai4%i`CKs*tbd&B6mfp*?`ldRK0cuC%cO}ifp~#oRiPZur=AtMjLs5 zYYjX^;7mnmu&?Tk0_OxqhZnK_I=B>e9 zODYpW_Vel7*-1ix#`EdOs~2>ML8rD3tlL$DnDpYH6}=|D-MVRPi}vqlEKxk1^nCW)yidR*XKylQzMN3MFXZP9 zX60WyyOcc<4=xfl*BJYA6>u8l-{Djn+r0KvvZ!YbO$OJ$RR;ZWbU5qLVeR;7$T~Ww(?J$J3at&X z7ZCYX3S9N^+sbG1!)cQAs~QAv+_4oLnklT(+-ud_>ST|Reg{FA1F(?-RY{DHr*knm z#4W_f&eksTh&@?l7y1oD(RBi!gDVY;q76Ef!754w=*bJohq__(_ynnniTuJ(zYd4E zRPm@Vub*7q0lUDZWBB^>mzzMsS_Wc2g~!4D?}kqjdRYyy6)7m4>{^V&MdkYjm%E;E zhBE@UG4L#wTrLLrFE8AEyHfo(*h;5;r)-}WI!N7v&5ysF4&B?9&NILyZQ5vH9k3de z$8-sENNMqm0GugmdPo;Enj(xyBB_LfJn)`*@H^lnfuG*-biM>PBYvR6*)l$(Ci)3p z#2s+VKUoW3H$RLz@xxWqRI3tR>fIIh!wo3L8u!MG8uCvf%gjB3oXZ@?jW;mXuOiS? z6^4i9f!pRnI~OH2GKe2RiLaarcm}c+di>Q3K0X~JN;<=Nvf!l-ij7p$5^g~hFogqY>0T=%2+o|rNbumEh-{*g{>?QC6AB-~p z%13>+bcl0|#v9NSyNm&DSk4&d7J)pG(ax_yS&(z~)i2_D=s|ni#{7NK`6^%0>fu(L z7?$niT03W%=1bQ}V2|5IQdy1=Z^hkC>qQyUi4p78pHA-%bH{oB26KY2N6i2S=6w{x z=x6U!%HfA;xhUpd4y|sf6FyVw0Xq0S!^~=0O^Z_h6;X0*$zorgnqV zC80}koM`Sef1TL2C)P-~VQaZDzXS*1NAQh28+j7qLm&S=H)z&$QiT@?vu0p{XYI2A zH~7lV)wuCQ_KIQZ*RR{oj>x_N!s!&-Bz}w(@lbDk_fPsrQM9ha&eV5Wm&kCx=D!060MtcDC)Y)la|wB zc#zO5DAd#FXg#5%;=1Fr_A6|(lp9dvX@YUPZ;u9z=t5X_`OPtpSlU4=hym8 z3)(%T(j5=QmRlIa8X3rB5Izmw6<-!e^MXZYUaR`qZmShPkHu?U=f?yE$hsz&zIqx{ zJgvi20*D9x$iGOZ1<~ItSzkqSPG`xSMDCV0Y7ZNZ&GjSQFOP$uNwm^Kb1lb1t3voo zPl=DAE`g`?w_|1~T*#>qe4|X}k6s^V@h```PttlSr1Sd*mOdNlv{x%K0jW1GSLhzY z3Ar+Kh49Na@Vl1|N0A*!@`@ewF~^lAPrA65u8KbopGL;(&pE<&YoEpcP~s<+)e0v| zOMD9~?dqU3P{pf>e0z?QQ@+*#yS$0}F%`jWb3IcL@Ul#WWUwjm*yi4e(FU$BJy9g# zGURETcw?bPzcOWZ_vgM}AGO)vv0HJ^Gv$AU)O6DQJt?g9QntplLP%zKg7Kb7^(R|YjxIt5tQO{B0!%Se43nLaUq1(1I^?@CO|Nkx z0?J%H8ZxkNyXrE=e9aVn6r@sGIo>~52#JRsG?RLR225G_eSp7t{d~x{xZVp3|CJq{ zL^_ldHXJYQX%zP*XK@>dDid$pDbQZoYHrM4Gux z-eDoC%AoJY7y|^UNpLcGODxxPjl-=)EWgq;#h(`FjowT03cGW@HNt=#u$Ycw3qFJt z59>OP>N7|qx;s9D!qaG8(g`&l1Tvs1h}}1Kr#4iFx?7+p7=<(X<5OgsG`PhqC;1_b z*d56GpJK>|csdA{9`M&>z*Q2$ced-4%JMK5r>SOgajk6Rb*_htzRF(2v`Yv{XmJbl zOUl&kaNE9}}s{x@g>X}JS65Hs__gPoW6Q)+(dBJVZ zvk1v*&JhuZnVJsWm0g+n=TQ4sBj=z|CnV0kXNZabT|Z+Rcv#?Kh0J)8vCAb0c$rUj zJ-qDUIr_xQjk0+keXjfnGpA10sg>gScRa0qaQ$xLU^~x=^H16GKT`D1v|^X!hB6rP z{IU)&Z>hx#P^|mp4y{{2_=h78GgN2!>@8c@Qv4S>bml6TKehssz-bd<=^iJ)#GrFT zS7)8%Eq~CjmHWZ_u$Em3l_(VMS-g}OzyLfKiStbozjIgaY{9|eiRp>nlg9y(n43lo zd^0wr)sge@Q4=bcw-wS?7WY|@8$qeQ&r8?W1&)q>{l;+2Hk{j$;YsezElSq4#+wb+ zmb;@HGw@j~Ol#XA@CF{GO=o8vQb}n=|YhFc74lUI?cMAt8ZC;8>A=^Q>Ds7|(A!jK(Mrw9a(>=|3W8w9c` zXrr0?9d2@czaGz!}!~97VwAytu8OvEn;jUTOA`Ge!vg2q!;_OwR z{nq_eBH$3mc}@2>1f=YEdjqAs^#xG81Bm09oIbx z$md0RbDITzzq#dd&cKl6x~zsDhHRLm^tcl$bSvYhlcLRogL>$`? zgWWgvQwF6C-XDUkzZ{{a_)(XM-i+U&Z+bSC*^D%TH%9EbB4q|4cT8Wmzr=o*H45Iq z#gNTYi2pR3c`d{&ayL~&*#~2rN`ze;`@6y?3huh0B_+CFD5dYI;dlMVuRv=`(*DOL zxCJ@}?LwX2xkCZ@plGIdI6TL!{QGQr8=h3XGLLwY2x=h>I}?oGPw>q;Pd>K8!BbQI zGLzRXDUhJ*^ul}4m5!}sg)5p}!Nuz7Al6xXNZ>^`U8n{&j#%__(Mm=tTQkJR0u&>* z%l$sJL_55@#C!$fjCM1OXqAcYc~dmYahr^pUV=__R2$gE7P?Jf(9P>6WrL0`7O^~j zU($SfC4Rm^XV)r2cw&6)26}{v_&^#W0}%?TnEfCYpCyxa!H<+qtoOKAZUmqN45CxA z?q>}X8nbZ;^0)Cl8uH(J9&tmm(G9GGdtYf4ZUXs5PbIyTBq1ue!w^YloizFYvs&C z|2Ls5P>$oCiRgh&_E4TY{OVr_WiNaLUi=rIjFxEo(eIusGA7aNMB4T|BTaD!SgQ|arG;J-*8 zdQ(WnQ_uD>Q#i|d$a99x#yYtzckIAo1qX$}m=D<@)mBklA7v?H!a;iy3Sh%w)}%lL zC~LH!ijDCew$Oczv;gL}M+KUIQp|Tq7Y~+ow0_;N zXN^|brqc}K1==)#hA`Ta=Vz~9=SYvo!n>9(Yx&&0tmS>bv8#>Y5NW9VM#O*x*vv*h z{lgX&MG*>{6EBr}G=eEkor5l*ZdN;Xu|?$<_VMl}>;1WGevBJi^3CW@?nh17 zDsK96q%PJV4=se|`VW4~ah3n$H(A>mv8`X8&)WgX!`T~H8OcT1ObeyW?KUM5Umm$C zCp=%Q`nYSsht#T*@G5FK+Bzt26R3J^0v$DZOFt<+)iwUid7_^A>y0t2y1Lz`8L^yizLiP;Q@VMECoC%;no7(3t^CuoN+;ij212&kBay7^>rrS+ zifQ(YGu#Z49P)^zRBOy&0PcXl_?{q4qk zP9e>wU(UPx{^&@64x8Gw?My(iq3wfnA2mK)Fn$EJ1nHmdT)x=AoDb{Nk~r;ut2{$S zk)EzP=GH2fRV-9RswL5)y)g3oet(n8$Y?B2o2AIQVx4QA%kia!Nmc zu`RE^WWq|*#KdCZ-%)A4S%m@<=ic7X>l=7bz6UUsrY^zNIvp z*aBii%lmu0zn;Rjnas^L5WgY3yTc%$V}NGpm}wby4;^kBe$p;JY{TA3xS=?x&q!p4 zh>Fc44|AsIr8=4X5+r?b)Uc=P62G8vPkd)Cb9_o7#~F;vq}r}C`@GE39HDs(gLh+E zOgOWIkl+N9X=Z4D6al!s(*qDQ^D4~a1Zb@JAn%zONL09Xx-kGBWF6lJkFP%v0soU( znP?3RN2de;?jFGA|IVxw7WEPSZ|wCQ1^U6iF)JVFf`DiLWmf8=Uqu1{7>IumuK&Tc z*8Cr?HD^-%+g~oLx)d_eE+(Z^GKKXCM3k|0Z*`2@XlZJO9x11k?a9%!O)PPjj(9oK z=q$eYHtY1Z-~!!+;1VOa0h{5Ij~orbz(vCmT9dNQOUik+QYp_BS=*G0&??v3I-T}+ zL#;`5L1HkFH2mjt*@e08OdAW8Xxkb-jG7cuH7l0{W0g&__NX?C z@;ivHpYDEk3{>4U3ZyzHVLyKD3Yi@mi}E80`n|G`Ib~>2Zf&}Qir`5wBk~|w05w6<%?=A3rwK z1DS-?i&@VV?WQ(KkHhJ5Jjo*thha=y$*(?S#s#acv$-Vov&GJky1UMPql=xg__cg? zDlI(C1EmieZ_8ISdmzI5%}mz?ogt|lZjy5CcnW;5d-{o*GBHlB>-g@z^8Bfnm3tv-PK+lG2KwBB{riO#7|;{ij{;F?_w_ zTG%Zn#23l!3^;ycmqoIRt}-g8K~iPXD0lF8I^03V8LQsPm%5jFms*$Vm!_9bK5Qnt z8eS^5viP%_#O2LHVV0+dVPNBVLA7>Moo8inO~zp5Q5AlrI;FuM1#>_`Wy=|cxx;nI z7M~6u;G^80&iVO^deOR2BMfycN}rdJK+#4g)GLRXHy@SWug(!Q8afLM=8MrxmLdY|bloTSX6k%ER z#Mp2kF1%@0T8IQ~H5QhMIa_M*aFcI_BY6rpm$F?a-5&%5F@(wFEP!bQ0voz z9cvHho3rjmt|Pb9h5$F80nR?zhmPRiEh&*S{$nh+4H?YzZF*IW1z*|q-)I4R6G`ARb*&bGjE^qs$QYj3aeV%R-rJISAm6v zDLf1CNDyY-dMb6g4w;jgj38rTBdvrR`Q^z>iovg>V1C^oGGaS7P@)0UaXMwtJcJ`q>*%!G^lA`l!}uF{UkE7Z+}ln()7|2+CbpZGVFFVF zw^Ok9p~R06d$j73&ARGcZRRhzv!93Q#fUYQbQ{!zBcw@W_;J62n?F?qUM%HPexarg zlyOHkCBC~$4-wUqF={B~%mHFZljNG4>q)k>IA+jC)n#BB^hY-cn)BtY^0(xHu8InR zAUiHT6Y$sI#n6~KvCEC7L%PRM5|!XoPP@TFlq%@&K2X zNp3=lX9<}_MKQdSEE4701ksGq)h1TGo<>)u@3%YNqzS_9BTIaG`9{2=g)XxM$){G>-Ez>Ffe11;K=sqc_$FSk-t`XWO+au zDu&AfHpje_daG%nM z+q8}~LvwqXL-!LTpbdDsBf1YKMPH zUUrK}?}{Ae=zilW@mniKK?>jSS)F_tbveg@s)mNvmwDUf?4}heW+CphT`i3HJP6s+ zx}?x{8}pQVt{W!2e*G2BHvKDCyfSS%O_e!iX?w}5&d3UI5JzzHmxXT(0o5n-Y^VA-#J$3_^)h<6n$E-3=7drm$rNgk5-@O_ zK$EePcplM_H?0G(O~3&9+jB*!iXw$fPSl-I$>KcQf*ri|XSn=^=rQ1-BhnE;d3Sae zb+@ScI)`8f>DV0n3SEBBz%Hh43;!^CmtV6=Ly+ibX#t~1nvEi{{g$mdZ$Eb+W;7q3 z>Xl}d&U^5{CK-`<;>+r%!KNIVnk?CZ!&b%+k!Y+M*ZeGn%eQ~l*`{fg zUi>JISLj1q(ZlnzqFleYCMHpiqGZ!1Q4Y~VuaQ+&29OT(-Q}SHPzU4=wYST8I*RKXp7@lqMr2XKCDOmjrO0OOZ9K(+4eE;RDL+Sy|n`;hLSp{CG=Q|ipwumw^G}P zyUelFDop13w~yn*3ajF=DXAhn0C~HmL!DZ6VjL4u`r0RCiuS{!4vb1!g^-00Oez$; zy9QYZ6v#iUpQ=00Xtj9YG(7qk!UOO}67u(QUnu3=_E)sQB-9pGb%ENAxhuQR2SrIh2JvyvaJln9o z@SE44KOPCj*F9Jw(qMAA+$a7daw=@VQf(YGZKbVIbbASx&HM_HuWr?mtdS~o&*u^o z*sjLIsgzOtx$;Q1I0AC5PpmhXzwc%=u37RrI8M#OJwKljVP_hVKJi;|5YcGyQbcQ~M33FR>cu zDH(kT&MZUk^X}5&qjITPTvf?Y(&p_VhFsBP@7ATflvGq5Ju1vOG^yDks-;u=cNfWjrixp)%Ic zEGF$3CFSc;D{;BgQy}5KqU+i%-Xw^&O&$-EWm|gfMy`_|J(Kb}@sq%5&9wh+EqyAv z8rdM5+rUS zO$5GZZ!}QiXXz*GE%hj$UL1-t6kJHIL}k)TC>HqR@uLsgrwK7ko%0Bq$ZL-c`cIM)n1hA#oA?h$%g!OTM9f!MZi+YiWhjSZhIUed?i=Mxl+P zb8`|bc8ZS9{4>Q#uf)gYwX+Vl&*Ke-TyP_ULK@uT{7`R`LP4?7vu}jD)RP>__!KN+ ztfo50mD*9PF-A|p9qGdwLM>1{pR+qKpn5gKAMa$fhC7q&7 zHe0Uf)M8CO@?ilZ%q9{g%$JWks4=;Ewg>9vE3iuSL>X?hXeQ*SvW@A>|jCYPV@^MeMHk06wjXZXEUW`W9!7xV`lLZd5!4Zf^)8WD1psuZ}% zN+i^HLN%^TOago)JR#}m#K9E?e94!=+Sy47PawiS+it%a4n~}EN5~KtN&IMMiVBxy zeJV&@3+6gOgnF;sR6p)`E3+!x`#u1x_FY>P`R>!X6)_L8X)=cVXR03_l@Hl14n>by zZHclZ#mME3t7_r-_gn`PqCwF^kAul@Up|kHDv7e$UnWGtZSzhh$YDWz6xY(6p_kv> z7^r)$0O;96W}w~P!N`k8Ux#rq;U&cjCg(q%#e#LD1IHz6WlH+!`_;CxOpzh=FM17W z+P$G+Wtz2Qb|EBq{1$j_1ae7J)sktLFJ-|>o-HkqHP2NBI)}P%5l8xFe%G{wJ;NEv zHRXt(uSA3!0YT9A$YzI?t01h4@4iby;f`OmwtMjT+AJ|zoU*t2Ur#|3GcHJ#L+}xE zJ~=ea0>L_K54RvZT68qu% znhoC*Ng^S<;p0LtK2uq6#QzGt8pOqbEvBq zTD7nQ`n=*suSdi^7m5>VRewmJB|?3(>$N4PLPEpA+Hpu#Mbd*ARca2Jb!@e4JvqLk z3@ZGFE!%qhE1}~=!Df81=D84$OXLHMm7tfVLtsfgwmjxIZfjqhk%Bqq2L=wa8>TyT zRGE2op3F%O{khEDCKvuf2hEllCV-^NJy7VjzrcS+6ci$0og(na2Dq@D$=jcuMNbm= z7#PInnZ!hi6OA9b7P62Wt#`2sAy}Mjcit(EGy|US<09yO>^Ig5_SQ8mnC8LSMj9Ng z3G?5d(q**J%3bDoCeL-mkZ|{5C#Hvjc~&oaT#s⪻NTY-riMV0K(teNT=Q0pk~@! zzm5E9|06lPE7sd~G#TkX5t;Z-pL@hO6+kQbQYBX){`I%SfXnhmGr#*Uz`z2)yQsHa z9(#88DU|bjlUd#0=o_U)+Z9+|qldSW1j%Uk;-HhROEr4j3W*eWYyAMUJT_-5 zo*z{SbwkUfMvQL~+w5%s3gi&d@LQ`Y^MfD1TM!ziC;KA-^>_Ry)tIpty?b*HYa0K- z9|z8|iDUS1*88ClKNO4imJT-VE?&+b_-s9$92-YCM<(i_I}IaBYN}{I2S*gLu-Ng~ z)37SPsjyd4vR@lUTSb#-u}5qbe=sf^h?yy#D-QK3{9teDW*wMss#l+!7cVVO`hz4O z(@yz{D^2#vGc2merAL2BOyEs_^Jv`rgS^=HjJHNNF za{otm%D2WYv(G33`N-}!zechrRi%oQ>IDFtl=6a$;z8R(74gi?u}4ijpYQ1*Ddm*e zfXWqZ*rfzyaCkx=SSL&_$-l8UMqNUmgh;EzW)>cQuRs&g=vH()4>$Vt%=ON{buyFkvUqV9lRYV*L`%9XO2# zAWg3NQ$sW|FP^rDZ%ZX3n4S|9nThGZ&|Wo&1E!tVvv^u#zbYU^NPUoD*JFvy&X(el zaJmx?6wba}$fYX0_}PWFDG^SDpKVjg8EfoE<%P4jn6N@Xpx;Y+u?;YiRY)zfX2j)< zuEFq^p)TY*$Qn+6S z%NXg3BiT#hZ7_6NwVRjtxqIu@a-g{JrWM`tbx#I8&O(xvAcVm;$<#uk`DJ&uMr}9+ z8NS@a0(lmx;nzLV&#amXB?(6t2Q%&a>?{}k%N1z&zepecfHS~l(gFpS_esWaOjU)x z#3y~c8yNT16n&VCBz6{j@}wpZA9C0X^4+u+9S~+@%5HQxytH6Z7c58u^LvUA)*j6- zb(YAJpR%O-Txs1Q&m+LV{Ir^D>3AofuBOb=}No84j@r0@mw<6L;^vcM<{f&|$Z z|D%Vc@Wl4x7+$FJ$vBz62-ZnCZ;J{56xF~zRgeca_X`Pc^j-=JZQzg?(dm8#StvLwc298TI5y1qx# ze1nFL2l&s~aUcGy|L61Xa^?P2;jhV8|5+XS&;tI&(eaYS0BlL3Pq^@8=?R4 znEb2EU-!iRDYItsuQLC4hwQI1e;pzIDMRW0FXP2uEC01)|7Yc#hsytGtsY^Wdr diff --git a/web/main/static/resources/chrome/axure_logo.png b/web/main/static/resources/chrome/axure_logo.png deleted file mode 100644 index 0882a169dbcb083b69f6453349b909a8af311868..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3500 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 - - Install the Axure RP Chrome Extension - - - -

    -
    -
    - axure -
    -
    -

    - AXURE RP EXTENSION FOR CHROME

    -

    - Google Chrome requires an extension to view locally stored projects. Alternatively, - upload your RP file to Axure Cloud or use a different - browser. You can also Preview from Axure RP.

    - preview -

    - VIEW LOCAL PROJECTS IN CHROME

    -
    -

    - 1. Install Extension from Chrome Store

    - -
    -
    -

    - 2. Open "More Tools > Extensions"

    - extensions -
    -
    -  
    -
    -

    - 3. View Axure RP Extension Details

    - extension details -
    -
    -

    - 4. Check "Allow access to file URLs"

    - allow access -
    -
    -  
    -
    -

    - 5. Click the button below

    - -
    -
    -
    -

    - EXTENSION FAQ

    -

    - What is a Chrome Extension? Extensions are downloadable - plug-ins for Google Chrome that modify the browser - and allow you additional capabilities. -

    -

    - Why do I need to install the extension? Google requires - this extension to be installed to allow the viewing of local files in - Chrome -

    -

    - Why does this extension require a high access level? This - extension requires a high access level to allow the viewing of the file:// - protocol. Axure does not track or access any of your information. -

    -

    - WE'RE HERE TO HELP

    -

    - Need help or have any questions? Contact our support team at - support@axure.com. -

    -
    -
    -
    - - diff --git a/web/main/static/resources/chrome/details.png b/web/main/static/resources/chrome/details.png deleted file mode 100644 index 260397f757ddd6d12304ff0a28e808f97ed9a03d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21867 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 diff --git a/web/main/static/resources/chrome/extensions.png b/web/main/static/resources/chrome/extensions.png deleted file mode 100644 index 4b011c9492fc43d5279f720705faaef25d776e94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38642 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 z 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 diff --git a/web/main/static/resources/chrome/firefox.html b/web/main/static/resources/chrome/firefox.html deleted file mode 100644 index cbf33b5..0000000 --- a/web/main/static/resources/chrome/firefox.html +++ /dev/null @@ -1,130 +0,0 @@ - - - Axure RP - Firefox Local File Restrictions - - - -
    -
    -
    - axure -
    -

    - FIREFOX LOCAL FILE RESTRICTIONS

    -

    - Firefox does not permit locally stored files to be viewed. Use Preview to view your projects in progress. -preview -

    -

    - Alternatively, you can choose a different web browser, upload your RP file to Axure Cloud or publish the local files to a web server.

    -

    - We're Here to Help

    -

    - Need help or have any questions? Drop us a line at - support@axure.com. -

    -
    -
    -
    - - diff --git a/web/main/static/resources/chrome/preview-rp.png b/web/main/static/resources/chrome/preview-rp.png deleted file mode 100644 index 78f3704de6c1451581d47f4490af065b85aaff65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21439 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 diff --git a/web/main/static/resources/chrome/safari.html b/web/main/static/resources/chrome/safari.html deleted file mode 100644 index b828eeb..0000000 --- a/web/main/static/resources/chrome/safari.html +++ /dev/null @@ -1,155 +0,0 @@ - - - Axure RP - Safari Local File Restrictions - - - -
    -
    -
    - axure -
    -

    - SAFARI LOCAL FILE RESTRICTIONS

    -

    - To view locally stored projects in Safari, you will need to "disable local file restrictions". Alternatively, - you can upload your RP file to Axure Cloud or publish the local files to a web server. You can also Preview from Axure RP.

    - preview -

    - VIEW LOCAL PROJECTS IN SAFARI

    -
    -

    - 1. Open "Safari > Preferences > Advanced" from the top menu, and check the option to "Show Develop menu in menu bar"

    - advanced -
    -
    -   -
    -
    -

    - 2. In the Develop menu that appears in the menu bar, click "Develop > Disable Local File Restrictions" to un-select the menu option

    - extensions -
    -
    -  
    -
    -

    - 3. Click the button below -

    - -
    -
    -
    -

    - We're Here to Help

    -

    - Need help or have any questions? Drop us a line at - support@axure.com. -

    -
    -
    -
    - - diff --git a/web/main/static/resources/chrome/safari_advanced.png b/web/main/static/resources/chrome/safari_advanced.png deleted file mode 100644 index 9f81b2a1aad42641670e3ed550ba28bb4b7e7c5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84670 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 VD!>1rH2n(rc_XDLSuJi9^ncX*%0U1C diff --git a/web/main/static/resources/chrome/safari_restrictions.png b/web/main/static/resources/chrome/safari_restrictions.png deleted file mode 100644 index 26ddf3f684e7384b1ba34a9a62d840c2794770c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152746 zcmV*3Kz6^0P)lp00001b5ch_0Itp) z=>Pyg07*naRCodGT?b&))c^lnH!T#}QlRX;WDBxoIFLUIvc!QRLpFk<0x|?tKtUA! zfheE|2(o{uAVa1@_%o2FG7v<)sb9ao#VoJV)6=>3S&$DM&e~Tq9=e$P0r@lF z+YFdivJAQHG?LYDBVTB!23OlG9W)1Mi}<jZ%S` zxsiWWn;G|S;{5q*NX^c6$Yf`y;@bK1xSo{kpwUKh(si7_bPdVbnfUdKe&{lE4ic?a ziHzP(`px6`>ivn>crrn+iqGY4Uc2O!1L{O}W->0Fzl7vWA!lmN(Oj;Z^)VLzaY{|Z zPtVgCa2mt<$XjYx^s$k)+Q&nWabu=^Y@Fq=9|}#tia%*gRx})H7A}k zAqSVY|A`IzuRF8+lm{dOv`G4PvB2$_3d4?abIyjfOjHO80jxKZFl=`;hgz`^(5`M6 zhCLaECi@cc{^3{?tvN&4xEhy@OiQkwr<@!sR=o+Lu?>fgU%@k#3Ud5wCk}G!taJNt zKCJ^PM}#3OI}xW2S`kwBNmMEjgG#g3ptlp6enMDSKK;VEBpF&b5Hb0Jovd4e$<9QU zkU%GvBEgbB01;uieh4V~<|pdSKyDOhe(bE*LwDu!#GaXvmWh)$_z>uNE%~MSP6wb( zgGkgll7>UJe4wN3!A}A0%kpwbx9;QpH6b{c9g2xB0OgVr@XF>Qjy$~j1n_dqZM?Fy z0PY}2QTI%a^F>R!o#fOsOk10S|J^0?A7pvH70@C37S^Q2U~p~T+@;I+@Xq>hBw5T$ zXGr17Xb>BKZTn9m>$z$OL^h7@-p3it2{?^Ir*5Niy*OlCKZ)IB(BJg&Y8>ytvPqb8 zrZzqs@eEQ<{(_O?51{R9<*;58PxxmWrcU_+rxJ4z6jKMC zpC)HV(PGU^#IJK^;JXb+IBL;~k7LkV15l?_1pZn!2A}V&h%Z0uj_9BuTsyoJ!^UjE zn_o>uv$By$PdkUtULS=bgFeO^k5?3-`ld-wTx(|wzL$Bl1KxV8JIY5oZ}-1`9E+c= zPoZtpeoUIXjdQSCiyjy;v;!BLZ#?!}c~CMy$IsqAE#$4?qJ7KIpl56*BWi@ALzVm7 z4~gN=)54sC-;bo?J5r+pVhUh(w^W292geeDqU9n`+Q!cthma}9r^^A?uVmmhDVS=y z`T1e9V}GCtXRsOxt{AR=?au(q z0Ie5VA13GS+PtBjyB?_NkzpR21rCZLqi8a_@!OU}e0HuVr?HG&uUg+O3a^w%!gq(G z(Ys;<+LpM9Z>|+aYy}{W6zwmMhQXEY?_~0TElhUrooEVC!D^Kg{bu7I86|ruU8v^ z@kOzD-9aSxY=jGYw;?FFF{;D~qd^OT5kiV9af@4C9P=e!ek_i(+aWsr6@0lR9`{Kx zJHK@mZrh^q?yTu(Mn=Lw7d#R>79TG?j4V>zlg|E*nkwShTB^| zLuc|)TawOh#PZ|WX!G`07}T;1C)Ti10rZ`?3cnxggw8dbeX`i%Fn;a~)GZnYv~7#> zh2F%}mA~S|y(dwt5Zm@@7X5U82F%Sso-NMepA4n#vlVsg7RHPkd;$vCryR>fXCeD2 zaF`65o~)WpiZk$kw2q|R#g=;oQMxKGucqs$U_^|!la1fc^FR5irj_8HCZF0dB9F*u z@JvoY{laPH|F<>`U1iBzdGb z(X6F6GsE-7yH(6~u6Y?;0k`wtz(xntRAI)oH^FDyl> z)JL;M4JF98qAog$Gh-C1SdNT<*=}A9)vE(liaKp{PTW#J94A8{x9AB?f6Jc%pJjmU zwLUYbY)D!VgUK;6=5ZpKoq{zNBXPGluXX&$T{1FecW+owgjDa__xS^D8yP(ht(70I zG$JElWMRT7{%7m0d)m6CD+(Un)r+IA{P&%>;uel z^_wD#j4r?VlH|SpXhemSLE{DySTKD$Nl7%`uR+d~-dM7nN52`Od%~&jbg9&&19~*# zr>N*0`qfKGh%OOHIPw!y7_7HW<63$axeLZV0670Q=r50|WrSZI9H{@xp8+3aAWvKn zjED$F%Szxr{Tc(ydXs~S)V(!3)42k8{~GWY`Gwu}|02=3LJG=|8HJBK0*kw4qj>~> zAF!1iYy0j7;E7uF*1S88xnDiHEYD1~ZR<$9R5ck@iUCtz0t%B$lk@h|IayL~xEdXS zZ#$=>elaVaA=4~V=m0K>*i2C#k#UM{ewC^5D5n{aQyH}@kjZzl(4zfF^9Ecyr2J#3 zSb#rCa0G=fwUJ-d=51jMxPUQ3r{RyI$FY6IR~Y&AHU~maGLc9q4LKWKLleey8+~=z?b@W~$6pB~g?29d5ev6_7!^yNo z40?Yy2^sH?!m4j3V-=C0BlQ6vzeg@0($Oc;2rI{pl+Wy`i2C;Xu}f61Pkh^msOELN zavPf3PRmBiA;Ce!_gM7#W(rb>?@Pb<5KF1=VlH5EDJ4v)}q zQnUl|#1AfUN;TW5$;ss2odD#|AFe95XMSHy+gcwBzUz&kj5K8CXv?bt`5FEU*fS6o z7G}Ii*>!1MRvU!m*#win2|=o;SQ>HEh%PTn(WUvNe`gXD$kUAA8S&HCvVkGtq$q1! z4JSqUL0!W0yPj^!%1l9a;(hM^@aXXTaFLD&H5GopoiZRjzMa^)NO<6ib1vqJGky3p zxi}ca|D?}tU;OsX%Rr^a-^9?Gktpzh{VFgo1OG;(yjz&**6Zo;XW-wS0e^A+x92e~T*x<2D zFU})JjznT&BH~Jw5_xNHs`^W#QD*W~DNi{)%2a13j8QntGH6-X7@%C57_iA=SH@SS z%HjO|hcg4xBfuV`e3wuZ${YEhuG;_JN0&qL(8Nm4VLDR;c_kz*c|lXTrG%#-NpAP` zbTNHegFe2Ij-36AKLh>@_%q*!eBboqObauecjg_GyJ=oxl5bwc(ZA1-ry!B1AOuCAT;(c=D<=XZ>Ez+`3Y_<#}UQd!dm^~<@0Agdva~QShqxlb zvxu`Z@8QOcWaKYe6p^9_9C5M%1<13Q<1x1Ta8&5`Df+jwzd}Z4`s^P|vF2=14C>K> zJQ&JcpJk@}U5yN|y@nTIJ+{`~E=-ESD@hA7LW{{O?axd~35(ZL=QwapZ7`3dho8kh ztkY*oz>vyQIvz)99X%^Aa=Ow6lgmhvY_@Ftxq1dB&EL*3#0amB_yS#< zmRH($q#%ktZM#wxBFl*r>vjh+?w`SX{YG)mHFn4nnXr;=@x}DsC?3W?n$p3OG{jLz z7;bgwiDKP{gR%VVW0?2LJBSYCZ^}8b{&T!P_b;@2=RfH8IREOY%#6$UxX&QmX!SN` zzZi=1#A0v~eLWR<)l=$aEc$8<8o%BfRg03x^pWMpxn20*(n{$4YIB529#zV*{a;?r z0JqyYY)E?!veOYD-oKo6927@GKr-4ALx`;kB~qEn>`1wcYGf^VAhZO1o@Qf*Enx^2 z`}OOG{{8!*Zr!?qf~=*4DHAcRYx=Epj%f{DF49otA8p0cTfX87b4;yH_;SG#{CCYN zd_Q{<8Wst{!cT_bm%kIW0i3wZz7s({|d8Q#eW1Pc^HAd~uDi{O2|J_|>|EVuO{uaeUj(4cK?}F4w2DAaafgAdj#M z37}(;yztK{IS(a)-{Leh)}m{@i%dt{6}R=m>6By8Oq}nF_Zh|!)=Y=31&&&aNwT$& zAvFz3r_%hw^lZ3x?JCBN8;41gCLtjqfny6?u?}Sk2t1DXn`wz@#@nVBXZP;b(C0WE z}B6`|2j;Ij#@qHLiEQiy^OQ@jR-e=!MV2+ZQeJGer4WaVT`S-uBxTu#a2oJl&f0dI8s0Kabh30>{_1INt4KlV|j)MK(S z$o~xTiH?dzL}VmlVq)>wGq0mx<8Y+yJC77H-E;fGK79UOKfArI82g`Lu(smBESK+_48&$^Gb5Hvafg?jiJbE5(53m)W~{ay?${Hk|tOs+Yfef@}mQThxNm6Rl3CtE^LPouMI+YD$Yzh z<1mhREtL{;q-|E@d3iBUilE+OI!uD~ckSMd0Rso(r=?3_<=zIuB=oE)iaCqv#hD!( z=C~(C$;n6oc_|N*k-sWlc&-dm4<8~gfwdwl^A2_`oP>!p_oBzJVR-qO zS~$FE9tKa_$Q5t;=8NSM`s3@L_u}!+z3@iQXK``Q3cNjNE>~!***KJ^@-{TBy-FGF79eHhMNG&OtS*SO~pFFT#$0y5KQ8c&~}G@O&Nm zQrV|bDE&BQY`DseAPdS)4pf{@Yh7f3q44NDHD zDf;^d@%P!P)JI_n4lII(PZ!3%&4-afUd(uI&mRa5sgHVfA43Do!p;Mi(X3=4{6%t5 z@s*m0AkQ&Q7oDoZi&n)m?E~@Kk84rCWm~kZVSiCESZX`1wxVCvH_C!y^P)G zuaJ{g4Fvh}A|c!GLfHShmfjRFIbnu1ucwN7tmG|=#5exO$H!yBgb8Taupya`?vKKS z< zC1h&i;ypwK@E5&yFP@2u8~KZM*3@{;ojdo*)CPH642Y4Vyga_5x~7ol>QWK?U^>}jg=6)Ax@ z;^*PxSMYodI#LvNHCi;z9X^5J&?aPL8put5Sn^AYHw}@_R9R`mzLct35#^)UONpwZ zR&Da;@1mqK^Y8y;Vw|OHVuM;_A2~WLWYyaBMz;oWWUh+b^$-?=N;S%Hqtd&VcA)p* zX{6YNqFJk!sQqXxE~K8tp?kau=_HNAtW!hPUnfcO^3sa+5N%nGJ=_1l-jp14d8{la zRijl~q>kHx|LrUbdh)12PC%Y4(b2J*CoNB~RdqexnN)!v42CD+GhO-q`(Q-wTQBR? ztH+I)F%a4tXMc=-C$?Rhzy($tp7L$Z%up^pfG^lB&IE{pTG;rxp=ypT?~Sx#Zv%I z8szSYH7mE^^!bxmKJy*?MDCujgj=`^jFnoDi=2f2A(_|ue$^_>nmiC6F8R{|;nH80 zKhZiUpdjkCtik2B@Z(KUDwGsi!Vk`08ci$nCy0iRRVD8#BZmdkqZV1)erLe66KJ zd184cE2gQnnXI?g!NI|Jp<6e6J$p79lESRyhb!AuM|z;R(op7W51Ev8%%$>?2$;05 zaSAO=itC)|`7n9R=lJ2X@%X{6A6BvjCXzc5sz%cSL~p4g^SL=?(V+Ada@WHs4nL~W z)A(p&7lhG^R+eb=`erK9Mvuh&PsU4akT*;Wl+66yoUydK;P2R0#)e z|H>C8)(|++)!U$No4xpU)z|oQ75(Fs7UJC<*B^>ozH^qumJJGmi z2?re{+DOs%pd;@NEh^*tO^Y#Z-A#P|>i}}=BFRAnxyPBvaevKD)-+GSC5w>17$oO< zk-iAn>&;v;>-D(Uq2SHYC(#aox6buaq8BeP&Vd4C}$ch4DP(=Y9 zL=i?%NGK`FQXR?;&S$~uWpl7}=}L6#-5KfU_u#)50Pe3cerIp8;JNP}vbFnLAb(pB*?NP{tCGTr>@6I2>>R>4NQ*;_Skvge?wP+?EKD zjw8PcLJA~QY(4<*)+or`DdE793pzmU5^}yn(d35R4!5%VK&LfkeK7{VuGxk?WR92K zW7nz2J81u0Q?T39#J7*jT{qc7RXAUzNYw#9!=C|~0T(+WWjl@$CTl0KuFFK~7F0m; zMAr_N>&00iEGdZwNs`K~3h!cAAS0JRKs6CLBA40#|}5>cp0N3_XXDk6cG2 z!&nL=#`3TKg&Cl?h-xhsp;T#!GV_yj7%?juJ*wILaA|1*LN> zQKKCNXbF@=LBg?jD1b{LB}GFt({H7te}{hbD1G{w_ZFHKy{Tccde+|a*b`*2=bqr? zJza5R4|Ch>%=5XT<(9ULExeZfTb^_~l$@;9H)dTd?ZS8Nb|4}zHZE58q|GpuFkHB$ zq~a}_=_BV7B}#z)xudJaP!3dtRmiSPdx=lIadk>IVp=IWMl;in5uZGlWf6Fe^xz

    }C$H>QK{ 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%0AAVsV_utZG|Z>Sv0mIv?cjc9OY;JSLy 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 diff --git a/web/main/static/resources/chrome/splitter.png b/web/main/static/resources/chrome/splitter.png deleted file mode 100644 index 8e354e7644418791467ed34fc22271e0de87a9bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0y~yU_Jn3GjXs1$?0-icLFKS0*}aI1_r*vAk26?e?Dn=C?|oIg-h z({8YxH7Z-gX~*1V1`Y=XCV>V9mO9pNwae!iPYrTlW(12_u&&vf(z8=#)0L?HDVLV| z=IhGw-`SR%Uh{r#QqPmU^{+jiI6<^3FfelXXelgR^3n0x9RFJd@1h>Rn-X+H;`i@G s=PZSsY%V!x`@Y`g_wWFVdQ&MBb@06a5ad;kCd diff --git a/web/main/static/resources/scripts/aiortc-client-new.js b/web/main/static/resources/scripts/aiortc-client-new.js index 720c566..55cf4cc 100644 --- a/web/main/static/resources/scripts/aiortc-client-new.js +++ b/web/main/static/resources/scripts/aiortc-client-new.js @@ -4,6 +4,17 @@ var channel_list = null; const fourViewButton = document.getElementById('fourView'); const nineViewButton = document.getElementById('nineView'); +//页面即将卸载时执行 +window.addEventListener('beforeunload', function (event) { + // 关闭所有 WebSocket 连接或执行其他清理操作 + for(let key in video_list){ + delete run_list[key]; + video_list[key].close(); + delete video_list[key]; + } +}); + +//页面加载时执行 document.addEventListener('DOMContentLoaded', async function() { console.log('DOM fully loaded and parsed'); // 发送请求获取额外数据 --- 这个接口功能有点大了---暂时只是更新通道树2024-7-29 @@ -53,6 +64,8 @@ document.addEventListener('DOMContentLoaded', async function() { } }); + + //视频窗口 document.getElementById('fourView').addEventListener('click', function() { if (fourViewButton.classList.contains('btn-primary')) { @@ -255,39 +268,51 @@ function connectToStream(element_id,channel_id,channel_name) { const socket = new WebSocket(streamUrl); video_list[element_id] = socket; run_list[element_id] = true; + imgElement.style.display = 'block'; + berror_state = false; // 处理连接打开事件 socket.onopen = () => { console.log('WebSocket connection established'); }; socket.onmessage = function(event) { - // 释放旧的对象URL---需要吗? -// if (imgElement.src) { -// URL.revokeObjectURL(imgElement.src); -// } const reader = new FileReader(); + reader.readAsArrayBuffer(event.data); + reader.onload = () => { const arrayBuffer = reader.result; const decoder = new TextDecoder("utf-8"); const decodedData = decoder.decode(arrayBuffer); if (decodedData === "video_error") { //video_error - displayErrorMessage(imgElement, "该视频源未获取到画面,请检查,默认5分钟后重新链接视频源。"); + displayErrorMessage(imgElement, "该视频源未获取到画面,请检查,默认每隔2分钟将重新链接视频源。"); + berror_state = true; } else if(decodedData === "client_error"){ //client_error run_list[element_id] = false; displayErrorMessage(imgElement, "该通道节点数据存在问题,请重启或联系技术支持!"); socket.close(); // 停止连接 + berror_state = true; } else { - const blob = new Blob([arrayBuffer], { type: 'image/jpeg' }); - const imageUrl = URL.createObjectURL(blob); - imgElement.src = imageUrl; - imgElement.style.display = 'block'; -// imgElement.src = URL.createObjectURL(result); -// imgElement.style.display = 'block'; + if(berror_state){ + removeErrorMessage(imgElement); + berror_state = false; + } + // 释放旧的对象URL + if (imgElement.src) { + URL.revokeObjectURL(imgElement.src); + } + //blob = new Blob([arrayBuffer], { type: 'image/jpeg' }); + imgElement.src = URL.createObjectURL(event.data); } }; - reader.readAsArrayBuffer(event.data); + + //图片显示方案二 +// if (imgElement.src) { +// URL.revokeObjectURL(imgElement.src); +// } +// imgElement.src = URL.createObjectURL(event.data); + }; socket.onclose = function() { diff --git a/web/main/static/resources/scripts/axure/action.js b/web/main/static/resources/scripts/axure/action.js deleted file mode 100644 index 14b3264..0000000 --- a/web/main/static/resources/scripts/axure/action.js +++ /dev/null @@ -1,2115 +0,0 @@ -$axure.internal(function($ax) { - var _actionHandlers = {}; - var _action = $ax.action = {}; - - var queueTypes = _action.queueTypes = { - none: 0, - move: 1, - setState: 2, - fade: 3, - resize: 4, - rotate: 5 - }; - - var animationQueue = {}; - - // using array as the key doesn't play nice - var nextAnimationId = 1; - var animationsToCount = {}; - var actionToActionGroups = {}; - var getAnimation = function(id, type) { - return animationQueue[id] && animationQueue[id][type] && animationQueue[id][type][0]; - }; - - var _addAnimation = _action.addAnimation = function (id, type, func, suppressFire) { - - var wasEmpty = !getAnimation(id, type); - // Add the func to the queue. Create the queue if necessary. - var idQueue = animationQueue[id]; - if(!idQueue) animationQueue[id] = idQueue = {}; - - var queue = idQueue[type]; - if(!queue) idQueue[type] = queue = []; - - queue[queue.length] = func; - // If it was empty, there isn't a callback waiting to be called on this. You have to fire it manually. - // If this is waiting on something, suppress it, and it will fire when it's ready - if(wasEmpty && !suppressFire) func(); - }; - - var _addAnimations = function (animations) { - if(animations.length == 1) { - _addAnimation(animations[0].id, animations[0].type, animations[0].func); - return; - } - var allReady = true; - var readyCount = 0; - for(var i = 0; i < animations.length; i++) { - var animation = animations[i]; - var thisReady = !getAnimation(animation.id, animation.type); - allReady = allReady && thisReady; - if (thisReady) readyCount++; - else { - var typeToGroups = actionToActionGroups[animation.id]; - if (!typeToGroups) actionToActionGroups[animation.id] = typeToGroups = {}; - - var groups = typeToGroups[animation.type]; - if (!groups) typeToGroups[animation.type] = groups = []; - - groups[groups.length] = animations; - } - } - - for(i = 0; i < animations.length; i++) { - animation = animations[i]; - _addAnimation(animation.id, animation.type, animation.func, true); - } - - if (allReady) { - for (i = 0; i < animations.length; i++) animations[i].func(); - } else { - animations.id = nextAnimationId++; - animationsToCount[animations.id] = readyCount; - } - } - - var _fireAnimationFromQueue = _action.fireAnimationFromQueue = function (id, type) { - // Remove the function that was just fired - if (animationQueue[id] && animationQueue[id][type]) $ax.splice(animationQueue[id][type], 0, 1); - - // Fire the next func if there is one - var func = getAnimation(id, type); - if(func && !_checkFireActionGroup(id, type, func)) func(); - }; - - var _checkFireActionGroup = function(id, type, func) { - var group = actionToActionGroups[id]; - group = group && group[type]; - if (!group || group.length == 0) return false; - - var animations = group[0]; - var found = false; - for (var i = 0; i < animations.length; i++) { - var animation = animations[i]; - if (animation.id == id && animation.type == type) { - found = func == animation.func; - break; - } - } - - // if found then update this action group, otherwise, keep waiting for right action to fire - if(!found) return false; - $ax.splice(group, 0, 1); - var count = animationsToCount[animations.id] + 1; - if(count != animations.length) { - animationsToCount[animations.id] = count; - return true; - } - delete animationsToCount[animations.id]; - - // Funcs is needed because an earlier func can try to cascade right away (when no animation for example) and will kill this func and move on to the - // next one (which may not even exist). If we get all funcs before calling any, then we know they are all the func we want. - var funcs = []; - for(i = 0; i < animations.length; i++) { - animation = animations[i]; - funcs.push(getAnimation(animation.id, animation.type)); - } - for(i = 0; i < funcs.length; i++) { - funcs[i](); - } - - return true; - } - - var _refreshing = []; - _action.refreshStart = function(repeaterId) { _refreshing.push(repeaterId); }; - _action.refreshEnd = function() { _refreshing.pop(); }; - - // TODO: [ben] Consider moving this to repeater.js - var _repeatersToRefresh = _action.repeatersToRefresh = []; - var _ignoreAction = function(repeaterId) { - for(var i = 0; i < _refreshing.length; i++) if(_refreshing[i] == repeaterId) return true; - return false; - }; - - var _addRefresh = function(repeaterId) { - if(_repeatersToRefresh.indexOf(repeaterId) == -1) _repeatersToRefresh.push(repeaterId); - }; - - var _getIdToResizeMoveState = function(eventInfo) { - if(!eventInfo.idToResizeMoveState) eventInfo.idToResizeMoveState = {}; - return eventInfo.idToResizeMoveState; - } - - var _queueResizeMove = function (id, type, eventInfo, actionInfo) { - if (type == queueTypes.resize || type == queueTypes.rotate) $ax.public.fn.convertToSingleImage($jobj(id)); - - var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); - if(!idToResizeMoveState[id]) { - idToResizeMoveState[id] = {}; - idToResizeMoveState[id][queueTypes.move] = { queue: [], used: 0 }; - idToResizeMoveState[id][queueTypes.resize] = { queue: [], used: 0 }; - idToResizeMoveState[id][queueTypes.rotate] = { queue: [], used: 0 }; - } - var state = idToResizeMoveState[id]; - - // If this is not a type being queued (no action of it's type waiting already) then if it is an instant, fire right away. - var myOptions = type == queueTypes.resize ? actionInfo : actionInfo.options; - if(!state[type].queue.length && (!myOptions.easing || myOptions.easing == 'none' || !myOptions.duration)) { - var func = type == queueTypes.resize ? _addResize : type == queueTypes.rotate ? _addRotate : _addMove; - func(id, eventInfo, actionInfo, { easing: 'none', duration: 0, stop: { instant: true } }); - return; - } - - // Check other 2 types to see if either is empty, if so, we can't do anything, so just queue it up - var otherType1 = type == queueTypes.move ? queueTypes.resize : queueTypes.move; - var otherType2 = type == queueTypes.rotate ? queueTypes.resize : queueTypes.rotate; - if (!state[otherType1].queue.length || !state[otherType2].queue.length) { - state[type].queue.push({ eventInfo: eventInfo, actionInfo: actionInfo }); - } else { - var duration = myOptions.duration; - var used1 = state[otherType1].used; - var used2 = state[otherType2].used; - - while(state[otherType1].queue.length && state[otherType2].queue.length && duration != 0) { - var other1 = state[otherType1].queue[0]; - var otherOptions1 = otherType1 == queueTypes.resize ? other1.actionInfo : other1.actionInfo.options; - // If queue up action is a non animation, then don't combo it, just queue it and move on - if(!otherOptions1.easing || otherOptions1.easing == 'none' || !otherOptions1.duration) { - func = otherType1 == queueTypes.resize ? _addResize : otherType1 == queueTypes.rotate ? _addRotate : _addMove; - func(id, eventInfo, actionInfo, { easing: 'none', duration: 0, stop: { instant: true } }); - continue; - } - var other2 = state[otherType2].queue[0]; - var otherOptions2 = otherType2 == queueTypes.resize ? other2.actionInfo : other2.actionInfo.options; - // If queue up action is a non animation, then don't combo it, just queue it and move on - if(!otherOptions2.easing || otherOptions2.easing == 'none' || !otherOptions2.duration) { - func = otherType2 == queueTypes.resize ? _addResize : otherType2 == queueTypes.rotate ? _addRotate : _addMove; - func(id, eventInfo, actionInfo, { easing: 'none', duration: 0, stop: { instant: true } }); - continue; - } - - // Other duration is what is left over. When in queue it may be partly finished already - var otherDuration1 = otherOptions1.duration - used1; - var otherDuration2 = otherOptions2.duration - used2; - - var resizeInfo = type == queueTypes.resize ? actionInfo : otherType1 == queueTypes.resize ? other1.actionInfo : other2.actionInfo; - var rotateInfo = type == queueTypes.rotate ? actionInfo : otherType1 == queueTypes.rotate ? other1.actionInfo : other2.actionInfo; - var moveInfo = type == queueTypes.move ? actionInfo : otherType1 == queueTypes.move ? other1.actionInfo : other2.actionInfo; - var options = { easing: moveInfo.options.easing, duration: Math.min(duration, otherDuration1, otherDuration2) }; - // Start for self is whole duration - duration left, end is start plus duration of combo to be queued, length is duration - var stop = { start: myOptions.duration - duration, len: myOptions.duration }; - stop.end = stop.start + options.duration; - // Start for other is used (will be 0 after 1st round), end is start plus length is duration of combo to be queued, length is other duration - var otherStop1 = { start: used1, end: options.duration + used1, len: otherOptions1.duration }; - var otherStop2 = { start: used2, end: options.duration + used2, len: otherOptions2.duration }; - options.stop = type == queueTypes.resize ? stop : otherType1 == queueTypes.resize ? otherStop1 : otherStop2; - options.moveStop = type == queueTypes.move ? stop : otherType1 == queueTypes.move ? otherStop1 : otherStop2; - options.rotateStop = type == queueTypes.rotate ? stop : otherType1 == queueTypes.rotate ? otherStop1 : otherStop2; - - _addResize(id, eventInfo, resizeInfo, options, moveInfo, rotateInfo); - - // Update duration for this animation - duration -= options.duration; - // For others update used and remove from queue if necessary - if(otherDuration1 == options.duration) { - $ax.splice(state[otherType1].queue, 0, 1); - used1 = 0; - } else used1 += options.duration; - - if(otherDuration2 == options.duration) { - $ax.splice(state[otherType2].queue, 0, 1); - used2 = 0; - } else used2 += options.duration; - } - - // Start queue for new type if necessary - if(duration) { - state[type].queue.push({ eventInfo: eventInfo, actionInfo: actionInfo }); - state[type].used = myOptions.duration - duration; - } - - // Update used for others - state[otherType1].used = used1; - state[otherType2].used = used2; - } - }; - - _action.flushAllResizeMoveActions = function (eventInfo) { - var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); - for(var id in idToResizeMoveState) _flushResizeMoveActions(id, idToResizeMoveState); - }; - - var _flushResizeMoveActions = function(id, idToResizeMoveState) { - var state = idToResizeMoveState[id]; - var move = state[queueTypes.move]; - var moveInfo = move.queue[0]; - var resize = state[queueTypes.resize]; - var resizeInfo = resize.queue[0]; - var rotate = state[queueTypes.rotate]; - var rotateInfo = rotate.queue[0]; - while (moveInfo || resizeInfo || rotateInfo) { - var eventInfo = moveInfo ? moveInfo.eventInfo : resizeInfo ? resizeInfo.eventInfo : rotateInfo.eventInfo; - moveInfo = moveInfo && moveInfo.actionInfo; - resizeInfo = resizeInfo && resizeInfo.actionInfo; - rotateInfo = rotateInfo && rotateInfo.actionInfo; - - // Resize is used by default, then rotate - if(resizeInfo) { - // Check for instant resize - if(!resizeInfo.duration || resizeInfo.easing == 'none') { - _addResize(id, resize.queue[0].eventInfo, resizeInfo, { easing: 'none', duration: 0, stop: { instant: true } }); - _updateResizeMoveUsed(id, queueTypes.resize, 0, idToResizeMoveState); - resizeInfo = resize.queue[0]; - continue; - } - - var duration = resizeInfo.duration - resize.used; - if(moveInfo) duration = Math.min(duration, moveInfo.options.duration - move.used); - if(rotateInfo) duration = Math.min(duration, rotateInfo.options.duration - rotate.used); - - var baseOptions = moveInfo ? moveInfo.options : resizeInfo; - var options = { easing: baseOptions.easing, duration: duration }; - - options.stop = { start: resize.used, end: resize.used + duration, len: resizeInfo.duration }; - if(moveInfo) options.moveStop = { start: move.used, end: move.used + duration, len: moveInfo.options.duration }; - if(rotateInfo) options.rotateStop = { start: rotate.used, end: rotate.used + duration, len: rotateInfo.options.duration }; - - _addResize(id, eventInfo, resizeInfo, options, moveInfo, rotateInfo); - - _updateResizeMoveUsed(id, queueTypes.resize, duration, idToResizeMoveState); - resizeInfo = resize.queue[0]; - if(rotateInfo) { - _updateResizeMoveUsed(id, queueTypes.rotate, duration, idToResizeMoveState); - rotateInfo = rotate.queue[0]; - } - if(moveInfo) { - _updateResizeMoveUsed(id, queueTypes.move, duration, idToResizeMoveState); - moveInfo = move.queue[0]; - } - } else if (rotateInfo) { - // Check for instant rotate - if(!rotateInfo.options.duration || rotateInfo.options.easing == 'none') { - _addRotate(id, rotate.queue[0].eventInfo, rotateInfo, { easing: 'none', duration: 0, stop: { instant: true } }); - _updateResizeMoveUsed(id, queueTypes.rotate, 0, idToResizeMoveState); - rotateInfo = rotate.queue[0]; - continue; - } - - duration = rotateInfo.options.duration - rotate.used; - if(moveInfo) duration = Math.min(duration, moveInfo.options.duration - move.used); - - baseOptions = moveInfo ? moveInfo.options : rotateInfo.options; - options = { easing: baseOptions.easing, duration: duration }; - - options.stop = { start: rotate.used, end: rotate.used + duration, len: rotateInfo.options.duration }; - if(moveInfo) options.moveStop = { start: move.used, end: move.used + duration, len: moveInfo.options.duration }; - - _addRotate(id, eventInfo, rotateInfo, options, moveInfo); - - _updateResizeMoveUsed(id, queueTypes.rotate, duration, idToResizeMoveState); - rotateInfo = rotate.queue[0]; - if(moveInfo) { - _updateResizeMoveUsed(id, queueTypes.move, duration, idToResizeMoveState); - moveInfo = move.queue[0]; - } - } else { - if(!moveInfo.options.duration || moveInfo.options.easing == 'none') { - _addMove(id, eventInfo, moveInfo, { easing: 'none', duration: 0, stop: { instant: true } }); - _updateResizeMoveUsed(id, queueTypes.move, 0, idToResizeMoveState); - moveInfo = move.queue[0]; - continue; - } - - duration = moveInfo.options.duration - move.used; - options = { easing: moveInfo.options.easing, duration: duration }; - options.stop = { start: move.used, end: moveInfo.options.duration, len: moveInfo.options.duration }; - _addMove(id, eventInfo, moveInfo, options); - - _updateResizeMoveUsed(id, queueTypes.move, duration, idToResizeMoveState); - moveInfo = move.queue[0]; - } - } - }; - - var _updateResizeMoveUsed = function(id, type, duration, idToResizeMoveState) { - var state = idToResizeMoveState[id][type]; - state.used += duration; - var options = state.queue[0].actionInfo; - if(options.options) options = options.options; - var optionDur = (options.easing && options.easing != 'none' && options.duration) || 0; - if(optionDur <= state.used) { - $ax.splice(state.queue, 0, 1); - state.used = 0; - } - } - - var _dispatchAction = $ax.action.dispatchAction = function(eventInfo, actions, currentIndex) { - currentIndex = currentIndex || 0; - //If no actions, you can bubble - if(currentIndex >= actions.length) return; - //actions are responsible for doing their own dispatching - _actionHandlers[actions[currentIndex].action](eventInfo, actions, currentIndex); - }; - - _actionHandlers.wait = function(eventInfo, actions, index) { - var action = actions[index]; - var infoCopy = $ax.eventCopy(eventInfo); - window.setTimeout(function() { - infoCopy.now = new Date(); - infoCopy.idToResizeMoveState = undefined; - _dispatchAction(infoCopy, actions, index + 1); - _action.flushAllResizeMoveActions(infoCopy); - }, action.waitTime); - }; - - _actionHandlers.expr = function(eventInfo, actions, index) { - var action = actions[index]; - - $ax.expr.evaluateExpr(action.expr, eventInfo); //this should be a block - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.setFunction = _actionHandlers.expr; - - _actionHandlers.linkWindow = function(eventInfo, actions, index) { - linkActionHelper(eventInfo, actions, index); - }; - - _actionHandlers.closeCurrent = function(eventInfo, actions, index) { - $ax.closeWindow(); - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.linkFrame = function(eventInfo, actions, index) { - linkActionHelper(eventInfo, actions, index); - }; - - _actionHandlers.setAdaptiveView = function(eventInfo, actions, index) { - var action = actions[index]; - var view = action.setAdaptiveViewTo; - - if(view) $ax.adaptive.setAdaptiveView(view); - }; - - var linkActionHelper = function(eventInfo, actions, index) { - var action = actions[index]; - eventInfo.link = true; - - if(action.linkType != 'frame') { - var includeVars = _includeVars(action.target, eventInfo); - if(action.target.targetType == "reloadPage") { - $ax.reload(action.target.includeVariables); - } else if(action.target.targetType == "backUrl") { - $ax.back(); - } - - var url = action.target.url; - if(!url && action.target.urlLiteral) { - url = $ax.expr.evaluateExpr(action.target.urlLiteral, eventInfo, true); - } - - if(url) { - let useStartHtml = shouldUseStartHtml(action); - if(useStartHtml) { - //use start.html to load player - url = urlWithStartHtml(url); - //collapse player for popup - if(action.linkType == "popup") url = urlWithCollapseSitemap(url); - } - - //set useGlobalVarNameInUrl to true to use GLOBAL_VAR_NAME in the url, so player knows how to parse it - //without this, we are assuming everything after '#' are global vars - if(action.linkType == "popup") { - $ax.navigate({ - url: url, - target: action.linkType, - includeVariables: includeVars, - popupOptions: action.popup, - useGlobalVarNameInUrl : useStartHtml - }); - } else { - $ax.navigate({ - url: url, - target: action.linkType, - includeVariables: includeVars, - useGlobalVarNameInUrl : useStartHtml - }); - } - } - } else linkFrame(eventInfo, action); - eventInfo.link = false; - - _dispatchAction(eventInfo, actions, index + 1); - }; - - //use start.html will add a player to the prototype - var shouldUseStartHtml = function(linkAction) { - return linkAction.target.targetType == 'page' //only adding player for page, not external links - && (linkAction.linkType == "popup" || linkAction.linkType == "new") //only add for popup and new tabs - && $axure.utils.isInPlayer() //allow user to view without player (maybe useful for user testing) - && !$axure.utils.isShareApp() //share app use special handling on its link, add start.html breaks the handling - } - - var urlWithStartHtml = function(url) { - var pageName = url.substring(0, url.lastIndexOf('.html')); - var pageHash = $axure.utils.setHashStringVar(START_URL_NAME, PAGE_URL_NAME, pageName); - return START_URL_NAME + pageHash; - } - - var urlWithCollapseSitemap = function(url) { - return url + '&' + SITEMAP_COLLAPSE_VAR_NAME + '=' + SITEMAP_COLLAPSE_VALUE; - } - - var _includeVars = function(target, eventInfo) { - if(target.includeVariables) return true; - // If it is a url literal, that is a string literal, that has only 1 sto, that is an item that is a page, include vars. - if(target.urlLiteral) { - var literal = target.urlLiteral; - var sto = literal.stos[0]; - if(literal.exprType == 'stringLiteral' && literal.value.indexOf('[[') == 0 && literal.value.indexOf(']]' == literal.value.length - 2) && literal.stos.length == 1 && sto.sto == 'item' && eventInfo.item) { - var data = $ax.repeater.getData(eventInfo, eventInfo.item.repeater.elementId, eventInfo.item.index, sto.name, 'data'); - if (data && $ax.public.fn.IsPage(data.type)) return true; - } - } - return false; - }; - - var linkFrame = function(eventInfo, action) { - for(var i = 0; i < action.framesToTargets.length; i++) { - var framePath = action.framesToTargets[i].framePath; - var target = action.framesToTargets[i].target; - var includeVars = _includeVars(target, eventInfo); - - var url = target.url; - if(!url && target.urlLiteral) { - url = $ax.expr.evaluateExpr(target.urlLiteral, eventInfo, true); - } - - var id = $ax.getElementIdsFromPath(framePath, eventInfo)[0]; - if(id) $ax('#' + $ax.INPUT(id)).openLink(url, includeVars); - } - }; - - var _repeatPanelMap = {}; - - _actionHandlers.setPanelState = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.panelsToStates.length; i++) { - var panelToState = action.panelsToStates[i]; - var stateInfo = panelToState.stateInfo; - var elementIds = $ax.getElementIdsFromPath(panelToState.panelPath, eventInfo); - - for(var j = 0; j < elementIds.length; j++) { - var elementId = elementIds[j]; - // Need new scope for elementId and info - (function(elementId, stateInfo) { - _addAnimation(elementId, queueTypes.setState, function() { - var stateNumber = stateInfo.stateNumber; - if(stateInfo.setStateType == "value") { - var oldTarget = eventInfo.targetElement; - eventInfo.targetElement = elementId; - var stateName = $ax.expr.evaluateExpr(stateInfo.stateValue, eventInfo); - eventInfo.targetElement = oldTarget; - - // Try for state name first - var states = $ax.getObjectFromElementId(elementId).diagrams; - var stateNameFound = false; - for(var k = 0; k < states.length; k++) { - if(states[k].label == stateName) { - stateNumber = k + 1; - stateNameFound = true; - } - } - - // Now check for index - if(!stateNameFound) { - stateNumber = Number(stateName); - var panelCount = $('#' + elementId).children().length; - - // Make sure number is not NaN, is in range, and is a whole number. - // Wasn't a state name or number, so return - if(isNaN(stateNumber) || stateNumber <= 0 || stateNumber > panelCount || Math.round(stateNumber) != stateNumber) return _fireAnimationFromQueue(elementId, queueTypes.setState); - } - } else if(stateInfo.setStateType == 'next' || stateInfo.setStateType == 'previous') { - var info = $ax.deepCopy(stateInfo); - var repeat = info.repeat; - - // Only map it, if repeat exists. - if(typeof (repeat) == 'number') _repeatPanelMap[elementId] = info; - return _progessPanelState(elementId, info, info.repeatSkipFirst); - } - delete _repeatPanelMap[elementId]; - - // If setting to current (to stop repeat) break here - if(stateInfo.setStateType == 'current') return _fireAnimationFromQueue(elementId, queueTypes.setState); - - $ax('#' + elementId).SetPanelState(stateNumber, stateInfo.options, stateInfo.showWhenSet); - }); - })(elementId, stateInfo); - } - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - var _progessPanelState = function(id, info, skipFirst) { - var direction = info.setStateType; - var loop = info.loop; - var repeat = info.repeat; - var options = info.options; - - var hasRepeat = typeof (repeat) == 'number'; - var currentStateId = $ax.visibility.GetPanelState(id); - var stateNumber = ''; - if(currentStateId != '') { - currentStateId = $ax.repeater.getScriptIdFromElementId(currentStateId); - var currentStateNumber = Number(currentStateId.substr(currentStateId.indexOf('state') + 5)); - if(direction == "next") { - stateNumber = currentStateNumber + 2; - - if(stateNumber > $ax.visibility.GetPanelStateCount(id)) { - if(loop) stateNumber = 1; - else { - delete _repeatPanelMap[id]; - return _fireAnimationFromQueue(id, queueTypes.setState); - } - } - } else if(direction == "previous") { - stateNumber = currentStateNumber; - if(stateNumber <= 0) { - if(loop) stateNumber = $ax.visibility.GetPanelStateCount(id); - else { - delete _repeatPanelMap[id]; - return _fireAnimationFromQueue(id, queueTypes.setState); - } - } - } - - if(hasRepeat && _repeatPanelMap[id] != info) return _fireAnimationFromQueue(id, queueTypes.setState); - - if (!skipFirst) $ax('#' + id).SetPanelState(stateNumber, options, info.showWhenSet); - else _fireAnimationFromQueue(id, queueTypes.setState); - - if(hasRepeat) { - var animate = options && options.animateIn; - if(animate && animate.easing && animate.easing != 'none' && animate.duration > repeat) repeat = animate.duration; - animate = options && options.animateOut; - if(animate && animate.easing && animate.easing != 'none' && animate.duration > repeat) repeat = animate.duration; - - window.setTimeout(function() { - // Either new repeat, or no repeat anymore. - if(_repeatPanelMap[id] != info) return; - _addAnimation(id, queueTypes.setState, function() { - _progessPanelState(id, info, false); - }); - }, repeat); - } else delete _repeatPanelMap[id]; - } - }; - - _actionHandlers.fadeWidget = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.objectsToFades.length; i++) { - var fadeInfo = action.objectsToFades[i].fadeInfo; - var elementIds = $ax.getElementIdsFromPath(action.objectsToFades[i].objectPath, eventInfo); - - for(var j = 0; j < elementIds.length; j++) { - var elementId = elementIds[j]; - // Need new scope for elementId and info - (function(elementId, fadeInfo) { - _addAnimation(elementId, queueTypes.fade, function() { - if(fadeInfo.fadeType == "hide") { - $ax('#' + elementId).hide(fadeInfo.options); - } else if(fadeInfo.fadeType == "show") { - $ax('#' + elementId).show(fadeInfo.options, eventInfo); - } else if(fadeInfo.fadeType == "toggle") { - $ax('#' + elementId).toggleVisibility(fadeInfo.options); - } - }); - })(elementId, fadeInfo); - } - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.setOpacity = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.objectsToSetOpacity.length; i++) { - var opacityInfo = action.objectsToSetOpacity[i].opacityInfo; - var elementIds = $ax.getElementIdsFromPath(action.objectsToSetOpacity[i].objectPath, eventInfo); - - for(var j = 0; j < elementIds.length; j++) { - var elementId = elementIds[j]; - - (function(elementId, opacityInfo) { - _addAnimation(elementId, queueTypes.fade, function () { - var oldTarget = eventInfo.targetElement; - eventInfo.targetElement = elementId; - var opacity = $ax.expr.evaluateExpr(opacityInfo.opacity, eventInfo); - eventInfo.targetElement = oldTarget; - opacity = Math.min(100, Math.max(0, opacity)); - $ax('#' + elementId).setOpacity(opacity/100, opacityInfo.easing, opacityInfo.duration); - }) - })(elementId, opacityInfo); - } - } - - _dispatchAction(eventInfo, actions, index + 1); - } - - _actionHandlers.moveWidget = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.objectsToMoves.length; i++) { - var moveInfo = action.objectsToMoves[i].moveInfo; - var elementIds = $ax.getElementIdsFromPath(action.objectsToMoves[i].objectPath, eventInfo); - - for(var j = 0; j < elementIds.length; j++) { - var elementId = elementIds[j]; - _queueResizeMove(elementId, queueTypes.move, eventInfo, moveInfo); - //_addMove(eventInfo, elementId, moveInfo, eventInfo.dragInfo); - } - } - _dispatchAction(eventInfo, actions, index + 1); - }; - - //var _compoundChildrenShallow = function (id) { - // var deep = []; - // var children = $ax('#' + id).getChildren()[0].children; - // var piecePrefix = id + 'p'; - - // for (var i = 0; i < children.length; i++) { - // if(children[i].substring(0, id.length + 1) == piecePrefix) { - // deep.push(children[i]); - // } - // } - // return deep; - //}; - - var _addMove = function (elementId, eventInfo, moveInfo, optionsOverride) { - var eventInfoCopy = $ax.eventCopy(eventInfo); - var idToResizeMoveState = _getIdToResizeMoveState(eventInfoCopy); - eventInfoCopy.targetElement = elementId; - - var options = $ax.deepCopy(moveInfo.options); - options.easing = optionsOverride.easing; - options.duration = optionsOverride.duration; - options.dragInfo = eventInfo.dragInfo; - - if($ax.public.fn.IsLayer($obj(elementId).type)) { - var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true); - if(childrenIds.length == 0) return; - - var animations = []; - - // Get move delta once, then apply to all children - animations.push({ - id: elementId, - type: queueTypes.move, - func: function () { - var layerInfo = $ax('#' + elementId).offsetBoundingRect(); - //var layerInfo = $ax.public.fn.getWidgetBoundingRect(elementId); - var deltaLoc = _getMoveLoc(elementId, moveInfo, eventInfoCopy, optionsOverride.stop, idToResizeMoveState[elementId], options, layerInfo); -// $ax.event.raiseSyntheticEvent(elementId, "onMove"); - $ax.visibility.pushContainer(elementId, false); - - options.onComplete = function () { - _fireAnimationFromQueue(elementId, queueTypes.move); - $ax.visibility.popContainer(elementId, false); - }; - - $ax('#' + elementId).moveBy(deltaLoc.x, deltaLoc.y, options); - } - }); - - //for(var i = 0; i < childrenIds.length; i++) { - // (function(childId) { - // animations.push({ - // id: childId, - // type: queueTypes.move, - // func: function () { - // // Nop, while trying to move as container - // //$ax.event.raiseSyntheticEvent(childId, "onMove"); - // //if($ax.public.fn.IsLayer($obj(childId).type)) _fireAnimationFromQueue(childId, queueTypes.move); - // //else $ax('#' + childId).moveBy(deltaLoc.x, deltaLoc.y, moveInfo.options); - // } - // }); - // })(childrenIds[i]); - //} - _addAnimations(animations); - } else { - _addAnimation(elementId, queueTypes.move, function() { - var loc = _getMoveLoc(elementId, moveInfo, eventInfoCopy, optionsOverride.stop, idToResizeMoveState[elementId], options); - -// $ax.event.raiseSyntheticEvent(elementId, "onMove"); - if(loc.moveTo) $ax('#' + elementId).moveTo(loc.x, loc.y, options); - else $ax('#' + elementId).moveBy(loc.x, loc.y, options); - }); - } - }; - - var _moveSingleWidget = function (elementId, delta, options, onComplete) { - if(!delta.x && !delta.y) { - $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); - if (onComplete) onComplete(); - return; - } - var fixedInfo = $ax.dynamicPanelManager.getFixedInfo(elementId); - var xProp = 'left'; - var xDiff = '+='; - if(fixedInfo) { - if(fixedInfo.horizontal == 'right') { - xProp = 'right'; - xDiff = '-='; - } else if(fixedInfo.horizontal == 'center') { - xProp = 'margin-left'; - } - } - var yProp = 'top'; - var yDiff = '+='; - if(fixedInfo) { - if(fixedInfo.vertical == 'bottom') { - yProp = 'bottom'; - yDiff = '-='; - } else if(fixedInfo.vertical == 'middle') { - yProp = 'margin-top'; - } - } - - var css = {}; - css[xProp] = xDiff + delta.x; - css[yProp] = yDiff + delta.y; - - $ax.visibility.moveMovedLocation(elementId, delta.x, delta.y); - - var moveInfo = $ax.move.PrepareForMove(elementId, delta.x, delta.y,false, options); - $jobjAll(elementId).animate(css, { - duration: options.duration, - easing: options.easing, - queue: false, - complete: function () { - if(onComplete) onComplete(); - if(moveInfo.rootLayer) $ax.visibility.popContainer(moveInfo.rootLayer, false); - $ax.dynamicPanelManager.fitParentPanel(elementId); - $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); - } - }); - } - - var _getMoveLoc = function (elementId, moveInfo, eventInfoCopy, stopInfo, comboState, options, layerInfo) { - var moveTo = false; - var moveWithThis = false; - var xValue = 0; - var yValue = 0; - var moveResult = comboState.moveResult; - var widgetDragInfo = eventInfoCopy.dragInfo; - var jobj = $jobj(elementId); - - var startX; - var startY; - - switch(moveInfo.moveType) { - case "location": - // toRatio is ignoring anything before start since that has already taken effect we just know whe have from start to len to finish - // getting to the location we want to get to. - var toRatio = stopInfo.instant ? 1 : (stopInfo.end - stopInfo.start) / (stopInfo.len - stopInfo.start); - - // If result already caluculated, don't recalculate again, other calculate and save - if (moveResult) { - xValue = moveResult.x; - yValue = moveResult.y; - } else { - comboState.moveResult = moveResult = { x: $ax.expr.evaluateExpr(moveInfo.xValue, eventInfoCopy), y: $ax.expr.evaluateExpr(moveInfo.yValue, eventInfoCopy) }; - xValue = moveResult.x; - yValue = moveResult.y; - } - // If this is final stop for this move, then clear out the result so next move won't use it - if(stopInfo.instant || stopInfo.end == stopInfo.len) comboState.moveResult = undefined; - - if (layerInfo) { - startX = layerInfo.left; - startY = layerInfo.top; - //} else if ($ax.public.fn.isCompoundVectorHtml(jobj[0])) { - // var dimensions = $ax.public.fn.compoundWidgetDimensions(jobj); - // startX = dimensions.left; - // startY = dimensions.top; - } else { - var offsetLocation = $ax('#' + elementId).offsetLocation(); - startX = offsetLocation.left; - startY = offsetLocation.top; - //startX = $ax('#' + elementId).locRelativeIgnoreLayer(false); - //startY = $ax('#' + elementId).locRelativeIgnoreLayer(true); - if(jobj.css('position') == 'fixed') { - startX -= $(window).scrollLeft(); - startY -= $(window).scrollTop(); - } - } - - xValue = xValue == '' ? 0 : (xValue - startX) * toRatio; - yValue = yValue == '' ? 0 : (yValue - startY) * toRatio; - - break; - case "delta": - var ratio = stopInfo.instant ? 1 : (stopInfo.end - stopInfo.start) / stopInfo.len; - - // See case location above - if(moveResult) { - xValue = moveResult.x * ratio; - yValue = moveResult.y * ratio; - } else { - comboState.moveResult = moveResult = { x: $ax.expr.evaluateExpr(moveInfo.xValue, eventInfoCopy), y: $ax.expr.evaluateExpr(moveInfo.yValue, eventInfoCopy) }; - xValue = moveResult.x * ratio; - yValue = moveResult.y * ratio; - } - if (stopInfo.instant || stopInfo.end == stopInfo.len) comboState.moveResult = undefined; - - break; - case "drag": - xValue = widgetDragInfo.xDelta; - yValue = widgetDragInfo.yDelta; - break; - case "dragX": - xValue = widgetDragInfo.xDelta; - yValue = 0; - break; - case "dragY": - xValue = 0; - yValue = widgetDragInfo.yDelta; - break; - case "locationBeforeDrag": - var location = widgetDragInfo.movedWidgets[eventInfoCopy.targetElement]; - if (location) { - var axObj = $ax('#' + eventInfoCopy.targetElement); - //This may require using the css value - var viewportLocation = axObj.viewportLocation(); - xValue = location.x - viewportLocation.left; - yValue = location.y - viewportLocation.top; - //xValue = location.x - axObj.left(); - //yValue = location.y - axObj.top(); - } else { - _fireAnimationFromQueue(eventInfoCopy.srcElement, queueTypes.move); - return { x: 0, y: 0 }; - } - //moveTo = true; - break; - case "withThis": - moveWithThis = true; - var widgetMoveInfo = $ax.move.GetWidgetMoveInfo(); - var srcElementId = $ax.getElementIdsFromEventAndScriptId(eventInfoCopy, eventInfoCopy.srcElement)[0]; - var delta = widgetMoveInfo[srcElementId]; - options.easing = delta.options.easing; - options.duration = delta.options.duration; - xValue = delta.x; - yValue = delta.y; - break; - } - - if (options && options.boundaryExpr) { - //$ax.public.fn.removeCompound(jobj); - - //if(jobj.css('position') == 'fixed') { - // //swap page coordinates with fixed coordinates - // options.boundaryExpr.leftExpr.value = options.boundaryExpr.leftExpr.value.replace('.top', '.topfixed').replace('.left', '.leftfixed').replace('.bottom', '.bottomfixed').replace('.right', '.rightfixed'); - // options.boundaryExpr.leftExpr.stos[0].leftSTO.prop = options.boundaryExpr.leftExpr.stos[0].leftSTO.prop + 'fixed'; - // options.boundaryStos.boundaryScope.direcval0.value = options.boundaryStos.boundaryScope.direcval0.value.replace('.top', '.topfixed').replace('.left', '.leftfixed').replace('.bottom', '.bottomfixed').replace('.right', '.rightfixed'); - // options.boundaryStos.boundaryScope.direcval0.stos[0].leftSTO.prop = options.boundaryStos.boundaryScope.direcval0.stos[0].leftSTO.prop + 'fixed'; - //} - - if(moveWithThis && (xValue || yValue)) { - _updateLeftExprVariable(options.boundaryExpr, xValue.toString(), yValue.toString()); - } - - if(!$ax.expr.evaluateExpr(options.boundaryExpr, eventInfoCopy)) { - var boundaryStoInfo = options.boundaryStos; - if(boundaryStoInfo) { - if(moveWithThis) { - var stoScopes = boundaryStoInfo.boundaryScope; - if(stoScopes) { - for(var s in stoScopes) { - var boundaryScope = stoScopes[s]; - if(!boundaryScope.localVariables) continue; - - if(boundaryScope.localVariables.withx) boundaryScope.localVariables.withx.value = xValue.toString(); - if(boundaryScope.localVariables.withy) boundaryScope.localVariables.withy.value = yValue.toString(); - } - } - } - - if(layerInfo) { - startX = layerInfo.left; - startY = layerInfo.top; - } else { - offsetLocation = $ax('#' + elementId).offsetLocation(); - startX = offsetLocation.left; - startY = offsetLocation.top; - //startX = $ax('#' + elementId).locRelativeIgnoreLayer(false); - //startY = $ax('#' + elementId).locRelativeIgnoreLayer(true); - if(jobj.css('position') == 'fixed') { - startX -= $(window).scrollLeft(); - startY -= $(window).scrollTop(); - } - } - - if(boundaryStoInfo.ySto) { - var currentTop = layerInfo ? layerInfo.top : startY; - var newTop = $ax.evaluateSTO(boundaryStoInfo.ySto, boundaryStoInfo.boundaryScope, eventInfoCopy); - if(moveTo) yValue = newTop; - else yValue = newTop - currentTop; - } - - if(boundaryStoInfo.xSto) { - var currentLeft = layerInfo ? layerInfo.left : startX; - var newLeft = $ax.evaluateSTO(boundaryStoInfo.xSto, boundaryStoInfo.boundaryScope, eventInfoCopy); - if(moveTo) xValue = newLeft; - else xValue = newLeft - currentLeft; - } - } - } - - //$ax.public.fn.restoreCompound(jobj); - } - - return { x: Number(xValue), y: Number(yValue), moveTo: moveTo }; - }; - - //we will have something like [[Target.right + withX]] for leftExpr, and this function set the value of withX - var _updateLeftExprVariable = function (exprTree, xValue, yValue) { - if(exprTree.leftExpr && !exprTree.leftExpr.op) { - var localVars = exprTree.leftExpr.localVariables; - if(localVars) { - if(localVars.withx) localVars.withx.value = xValue; - if(localVars.withy) localVars.withy.value = yValue; - } - } - - //traversal - if(exprTree.op) { - if(exprTree.leftExpr) _updateLeftExprVariable(exprTree.leftExpr, xValue, yValue); - if(exprTree.rightExpr) _updateLeftExprVariable(exprTree.rightExpr, xValue, yValue); - } - } - - var widgetRotationFilter = [ - $ax.constants.IMAGE_BOX_TYPE, $ax.constants.IMAGE_MAP_REGION_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, - $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.VERTICAL_LINE_TYPE, $ax.constants.HORIZONTAL_LINE_TYPE - ]; - _actionHandlers.rotateWidget = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.objectsToRotate.length; i++) { - var rotateInfo = action.objectsToRotate[i].rotateInfo; - var elementIds = $ax.getElementIdsFromPath(action.objectsToRotate[i].objectPath, eventInfo); - - for(var j = 0; j < elementIds.length; j++) { - var elementId = elementIds[j]; - _queueResizeMove(elementId, queueTypes.rotate, eventInfo, rotateInfo); - } - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - var _addRotate = function (elementId, eventInfo, rotateInfo, options, moveInfo) { - var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); - rotateInfo = $ax.deepCopy(rotateInfo); - rotateInfo.options.easing = options.easing; - rotateInfo.options.duration = options.duration; - - var eventInfoCopy = $ax.eventCopy(eventInfo); - eventInfoCopy.targetElement = elementId; - - //calculate degree value at start of animation - var rotateDegree; - var offset = {}; - var eval = function(boundingRect) { - rotateDegree = parseFloat($ax.expr.evaluateExpr(rotateInfo.degree, eventInfoCopy)); - offset.x = Number($ax.expr.evaluateExpr(rotateInfo.offsetX, eventInfoCopy)); - offset.y = Number($ax.expr.evaluateExpr(rotateInfo.offsetY, eventInfoCopy)); - if(!rotateInfo.options.clockwise) rotateDegree = -rotateDegree; - - _updateOffset(offset, rotateInfo.anchor, boundingRect); - } - - if(moveInfo) { - var moveOptions = { dragInfo: eventInfoCopy.dragInfo, duration: options.duration, easing: options.easing, boundaryExpr: moveInfo.options.boundaryExpr, boundaryStos: moveInfo.options.boundaryStos }; - } - - var obj = $obj(elementId); - - if($ax.public.fn.IsLayer(obj.type)) { - var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true, true); - if(childrenIds.length == 0) return; - - var animations = []; - //get center point of the group, and degree delta - var centerPoint, degreeDelta, moveDelta; - animations.push({ - id: elementId, - type: queueTypes.rotate, - func: function () { - var boundingRect = $ax('#' + elementId).offsetBoundingRect(); - //var boundingRect = $axure.fn.getWidgetBoundingRect(elementId); - eval(boundingRect); - centerPoint = boundingRect.centerPoint; - centerPoint.x += offset.x; - centerPoint.y += offset.y; - degreeDelta = _initRotateLayer(elementId, rotateInfo, rotateDegree, options, options.stop); - _fireAnimationFromQueue(elementId, queueTypes.rotate); - - moveDelta = { x: 0, y: 0 }; - if (moveInfo) { - moveDelta = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions, boundingRect); - if (moveDelta.moveTo) { - moveDelta.x -= $ax.getNumFromPx($jobj(elementId).css('left')); - moveDelta.y -= $ax.getNumFromPx($jobj(elementId).css('top')); - } - $ax.event.raiseSyntheticEvent(elementId, 'onMove'); - } - } - }); - - for(var idIndex = 0; idIndex < childrenIds.length; idIndex++) { - var childId = childrenIds[idIndex]; - (function(id) { - var childObj = $obj(id); - var rotate = $.inArray(childObj.type, widgetRotationFilter) != -1; - - var isLayer = $ax.public.fn.IsLayer(childObj.type); - animations.push({ - id: id, - type: queueTypes.rotate, - func: function() { - $ax.event.raiseSyntheticEvent(id, "onRotate"); - if(isLayer) _fireAnimationFromQueue(id, queueTypes.rotate); - else $ax('#' + id).circularMoveAndRotate(degreeDelta, options, centerPoint.x, centerPoint.y, rotate, moveDelta); - } - }); - if(!isLayer) animations.push({ id: id, type: queueTypes.move, func: function() {} }); - })(childId); - } - - _addAnimations(animations); - } else { - animations = []; - animations.push({ - id: elementId, - type: queueTypes.rotate, - func: function () { - var jobj = $jobj(elementId); - var unrotatedDim = { width: $ax.getNumFromPx(jobj.css('width')), height: $ax.getNumFromPx(jobj.css('height')) }; - eval(unrotatedDim); - var delta = { x: 0, y: 0 }; - if(moveInfo) { - delta = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions); - if(delta.moveTo) { - delta.x -= $ax.getNumFromPx($jobj(elementId).css('left')); - delta.y -= $ax.getNumFromPx($jobj(elementId).css('top')); - } - } - - $ax.event.raiseSyntheticEvent(elementId, 'onRotate'); - if(offset.x == 0 && offset.y == 0) _rotateSingle(elementId, rotateDegree, rotateInfo.rotateType == 'location', delta, options, options.stop, true); - else _rotateSingleOffset(elementId, rotateDegree, rotateInfo.rotateType == 'location', delta, { x: offset.x, y: offset.y }, options, options.stop); - if(moveInfo) $ax.event.raiseSyntheticEvent(elementId, 'onMove'); - } - }); - animations.push({ id: elementId, type: queueTypes.move, func: function () { } }); - - _addAnimations(animations); - } - } - - var _updateOffset = function(offset, anchor, boundingRect) { - if (anchor.indexOf('left') != -1) offset.x -= boundingRect.width / 2; - if (anchor.indexOf('right') != -1) offset.x += boundingRect.width / 2; - if (anchor.indexOf('top') != -1) offset.y -= boundingRect.height / 2; - if (anchor.indexOf('bottom') != -1) offset.y += boundingRect.height / 2; - } - - var _rotateSingle = function(elementId, rotateDegree, rotateTo, delta, options, stop, handleMove) { - var degreeDelta = _applyRotateStop(rotateDegree, $ax.move.getRotationDegree(elementId), rotateTo, stop); - $ax('#' + elementId).rotate(degreeDelta, options.easing, options.duration, false, true); - if(handleMove) { - if (delta.x || delta.y) _moveSingleWidget(elementId, delta, options); - else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); - } - }; - - var _rotateSingleOffset = function (elementId, rotateDegree, rotateTo, delta, offset, options, stop, resizeOffset) { - var obj = $obj(elementId); - var currRotation = $ax.move.getRotationDegree(elementId); - - // Need to fix offset. Want to to stay same place on widget after rotation, so need to take the offset and rotate it to where it should be. - if(currRotation) { - offset = $axure.fn.getPointAfterRotate(currRotation, offset, { x: 0, y: 0 }); - } - - var degreeDelta = _applyRotateStop(rotateDegree, currRotation, rotateTo, stop); - var widgetCenter = $ax('#' + elementId).offsetBoundingRect().centerPoint; - //var widgetCenter = $axure.fn.getWidgetBoundingRect(elementId).centerPoint; - - var rotate = $.inArray(obj.type, widgetRotationFilter) != -1; - $ax('#' + elementId).circularMoveAndRotate(degreeDelta, options, widgetCenter.x + offset.x, widgetCenter.y + offset.y, rotate, delta, resizeOffset); - } - - var _applyRotateStop = function(rotateDegree, currRotation, to, stop) { - var degreeDelta; - var ratio; - if(to) { - degreeDelta = rotateDegree - currRotation; - ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); - } else { - degreeDelta = rotateDegree; - ratio = stop.instant ? 1 : (stop.end - stop.start) / stop.len; - } - - return degreeDelta * ratio; - } - - - var _initRotateLayer = function(elementId, rotateInfo, rotateDegree, options, stop) { - var layerDegree = $jobj(elementId).data('layerDegree'); - if (layerDegree === undefined) layerDegree = 0; - else layerDegree = parseFloat(layerDegree); - - var to = rotateInfo.rotateType == 'location'; - var newDegree = to ? rotateDegree : layerDegree + rotateDegree; - var degreeDelta = newDegree - layerDegree; - - var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); - degreeDelta *= ratio; - - $jobj(elementId).data('layerDegree', newDegree); - $ax.event.raiseSyntheticEvent(elementId, "onRotate"); - - return degreeDelta; - } - - _actionHandlers.setWidgetSize = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.objectsToResize.length; i++) { - var resizeInfo = action.objectsToResize[i].sizeInfo; - var objPath = action.objectsToResize[i].objectPath; - if(objPath == 'thisItem') { - var thisId = eventInfo.srcElement; - var repeaterId = $ax.getParentRepeaterFromElementId(thisId); - var itemId = $ax.repeater.getItemIdFromElementId(thisId); - var currSize = $ax.repeater.getItemSize(repeaterId, itemId); - var newSize = _getSizeFromInfo(resizeInfo, eventInfo, currSize.width, currSize.height); - $ax.repeater.setItemSize(repeaterId, itemId, newSize.width, newSize.height); - - continue; - } - - var elementIds = $ax.getElementIdsFromPath(objPath, eventInfo); - - for(var j = 0; j < elementIds.length; j++) { - var elementId = elementIds[j]; - _queueResizeMove(elementId, queueTypes.resize, eventInfo, resizeInfo); - //_addResize(elementId, resizeInfo); - } - } - _dispatchAction(eventInfo, actions, index + 1); - }; - - // Move info undefined unless this move/resize actions are being merged - var _addResize = function(elementId, eventInfo, resizeInfo, options, moveInfo, rotateInfo) { - var axObject = $obj(elementId); - resizeInfo = $ax.deepCopy(resizeInfo); - resizeInfo.easing = options.easing; - resizeInfo.duration = options.duration; - - var eventInfoCopy = $ax.eventCopy(eventInfo); - eventInfoCopy.targetElement = elementId; - - var moves = moveInfo || resizeInfo.anchor != "top left" || ($ax.public.fn.IsDynamicPanel(axObject.type) && - ((axObject.fixedHorizontal && axObject.fixedHorizontal == 'center') || (axObject.fixedVertical && axObject.fixedVertical == 'middle'))) || - (rotateInfo && (rotateInfo.offsetX || rotateInfo.offsetY)); - - if(moveInfo) { - var moveOptions = { dragInfo: eventInfoCopy.dragInfo, duration: options.duration, easing: options.easing, boundaryExpr: moveInfo.options.boundaryExpr, boundaryStos: moveInfo.options.boundaryStos }; - } - - var idToResizeMoveState = _getIdToResizeMoveState(eventInfoCopy); - - var animations = []; - if($ax.public.fn.IsLayer(axObject.type)) { - moves = true; // Assume widgets will move will layer, even though not all widgets may move - var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true, true); - if(childrenIds.length === 0) return; - // Need to wait to calculate new size, until time to animate, but animates are in separate queues - // best option seems to be to calculate in a "animate" for the layer itself and all children will use that. - // May just have to be redundant if this doesn't work well. - - var boundingRect, widthChangedPercent, heightChangedPercent, unchanged, deltaLoc, degreeDelta, resizeOffset; - animations.push({ - id: elementId, - type: queueTypes.resize, - func: function () { - $ax.visibility.pushContainer(elementId, false); - boundingRect = $ax('#' + elementId).offsetBoundingRect(); - //boundingRect = $ax.public.fn.getWidgetBoundingRect(elementId); - var size = _getSizeFromInfo(resizeInfo, eventInfoCopy, boundingRect.width, boundingRect.height, elementId); - deltaLoc = { x: 0, y: 0 }; - - var stop = options.stop; - var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); - widthChangedPercent = Math.round(size.width - boundingRect.width) / boundingRect.width * ratio; - heightChangedPercent = Math.round(size.height - boundingRect.height) / boundingRect.height * ratio; - resizeOffset = _applyAnchorToResizeOffset(widthChangedPercent * boundingRect.width, heightChangedPercent * boundingRect.height, resizeInfo.anchor); - if(stop.instant || stop.end == stop.len) idToResizeMoveState[elementId].resizeResult = undefined; - - unchanged = widthChangedPercent === 0 && heightChangedPercent === 0; - $ax.event.raiseSyntheticEvent(elementId, 'onResize'); - _fireAnimationFromQueue(elementId, queueTypes.resize); - } - }); - - if(moveInfo) animations.push({ - id: elementId, - type: queueTypes.move, - func: function() { - deltaLoc = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions, boundingRect); - $ax.visibility.pushContainer(elementId, false); - _fireAnimationFromQueue(elementId, queueTypes.move); - $ax.event.raiseSyntheticEvent(elementId, 'onMove'); - } - }); - if (rotateInfo) animations.push({ - id: elementId, - type: queueTypes.rotate, - func: function () { - resizeOffset = _applyAnchorToResizeOffset(widthChangedPercent * boundingRect.width, heightChangedPercent * boundingRect.height, resizeInfo.anchor); - var rotateDegree = parseFloat($ax.expr.evaluateExpr(rotateInfo.degree, eventInfoCopy)); - degreeDelta = _initRotateLayer(elementId, rotateInfo, rotateDegree, options, options.rotateStop); - _fireAnimationFromQueue(elementId, queueTypes.rotate); - $ax.event.raiseSyntheticEvent(elementId, 'onRotate'); - } - }); - - var completeCount = childrenIds.length*2; // Because there is a resize and move complete, it needs to be doubled - for(var idIndex = 0; idIndex < childrenIds.length; idIndex++) { - // Need to use scoping trick here to make sure childId doesn't change on next loop - (function(childId) { - //use ax obj to get width and height, jquery css give us the value without border - var isLayer = $ax.public.fn.IsLayer($obj(childId).type); - var rotate = $.inArray($obj(childId).type, widgetRotationFilter) != -1; - animations.push({ - id: childId, - type: queueTypes.resize, - func: function() { - //$ax.event.raiseSyntheticEvent(childId, 'onResize'); - if(isLayer) { - completeCount -= 2; - _fireAnimationFromQueue(childId, queueTypes.resize); - $ax.event.raiseSyntheticEvent(childId, 'onResize'); - } else { - var currDeltaLoc = { x: deltaLoc.x, y: deltaLoc.y }; - var resizeDeltaMove = { x: 0, y: 0 }; - var css = _getCssForResizingLayerChild(childId, resizeInfo.anchor, boundingRect, widthChangedPercent, heightChangedPercent, resizeDeltaMove); - var onComplete = function() { - if(--completeCount == 0) $ax.visibility.popContainer(elementId, false); - }; - $ax('#' + childId).resize(css, resizeInfo, true, moves, onComplete); - if(rotateInfo) { - var offset = { x: Number($ax.expr.evaluateExpr(rotateInfo.offsetX, eventInfoCopy)), y: Number($ax.expr.evaluateExpr(rotateInfo.offsetY, eventInfo)) }; - _updateOffset(offset, resizeInfo.anchor, boundingRect); - var centerPoint = { x: boundingRect.centerPoint.x + offset.x, y: boundingRect.centerPoint.y + offset.y }; - $ax('#' + childId).circularMoveAndRotate(degreeDelta, options, centerPoint.x, centerPoint.y, rotate, currDeltaLoc, resizeOffset, resizeDeltaMove, onComplete); - } else { - currDeltaLoc.x += resizeDeltaMove.x; - currDeltaLoc.y += resizeDeltaMove.y; - _moveSingleWidget(childId, currDeltaLoc, options, onComplete); - } - } - } - }); - if(!isLayer) animations.push({ id: childId, type: queueTypes.move, func: function () {} }); - if(!isLayer && rotateInfo) animations.push({ id: childId, type: queueTypes.rotate, func: function () {} }); - })(childrenIds[idIndex]); - } - } else { - // Not func, obj with func - animations.push({ - id: elementId, - type: queueTypes.resize, - func: function() { - //textarea can be resized manully by the user, but doesn't update div size yet, so doing this for now. - //alternatively axquery get for size can account for this - - var sizeId = $ax.public.fn.IsTextArea(axObject.type) ? $jobj(elementId).children('textarea').attr('id') : elementId; - var oldSize = $ax('#' + sizeId).size(); - var oldWidth = oldSize.width; - var oldHeight = oldSize.height; - - var stop = options.stop; - var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); - - var size = _getSizeFromInfo(resizeInfo, eventInfoCopy, oldWidth, oldHeight, elementId); - var newWidth = size.width; - var newHeight = size.height; - var deltaWidth = Math.round(newWidth - oldWidth) * ratio; - var deltaHeight = Math.round(newHeight - oldHeight) * ratio; - newWidth = oldWidth + deltaWidth; - newHeight = oldHeight + deltaHeight; - - var delta = { x: 0, y: 0 }; - if(moveInfo) { - delta = _getMoveLoc(elementId, moveInfo, eventInfoCopy, options.moveStop, idToResizeMoveState[elementId], moveOptions); - if (delta.moveTo) { - delta.x -= $ax.getNumFromPx($jobj(elementId).css('left')); - delta.y -= $ax.getNumFromPx($jobj(elementId).css('top')); - } - } - - var rotateHandlesMove = false; - var offset = { x: 0, y: 0 }; - if(rotateInfo) { - offset.x = Number($ax.expr.evaluateExpr(rotateInfo.offsetX, eventInfoCopy)); - offset.y = Number($ax.expr.evaluateExpr(rotateInfo.offsetY, eventInfoCopy)); - _updateOffset(offset, rotateInfo.anchor, $ax('#' + elementId).offsetBoundingRect()); - //_updateOffset(offset, rotateInfo.anchor, $axure.fn.getWidgetBoundingRect(elementId)); - rotateHandlesMove = Boolean(rotateInfo && (offset.x || offset.y || rotateInfo.anchor != 'center')); - $ax.event.raiseSyntheticEvent(elementId, 'onRotate'); - } - - var css = null; - var rootLayer = null; - if(deltaHeight != 0 || deltaWidth != 0) { - rootLayer = $ax.move.getRootLayer(elementId); - if(rootLayer) $ax.visibility.pushContainer(rootLayer, false); - css = _getCssForResizingWidget(elementId, eventInfoCopy, resizeInfo.anchor, newWidth, newHeight, oldWidth, oldHeight, delta, options.stop, !rotateHandlesMove); - idToResizeMoveState[elementId].resizeResult = undefined; - } - - if(rotateInfo) { - var rotateDegree = parseFloat($ax.expr.evaluateExpr(rotateInfo.degree, eventInfoCopy)); - - if(rotateHandlesMove) { - var resizeOffset = _applyAnchorToResizeOffset(deltaWidth, deltaHeight, rotateInfo.anchor); - _rotateSingleOffset(elementId, rotateDegree, rotateInfo.rotateType == 'location', delta, offset, options, options.rotateStop, resizeOffset); - } else { - // Not handling move so pass in nop delta - _rotateSingle(elementId, rotateDegree, rotateInfo.rotateType == 'location', { x: 0, y: 0 }, options, options.rotateStop); - if (moves) _fireAnimationFromQueue(elementId, queueTypes.move); - } - } else if(!css && moves) _moveSingleWidget(elementId, delta, options); - - // Have to do it down here to make sure move info is registered - if(moveInfo) $ax.event.raiseSyntheticEvent(elementId, 'onMove'); - - //$ax.event.raiseSyntheticEvent(elementId, 'onResize'); - if (css) { - $ax('#' + elementId).resize(css, resizeInfo, true, moves, function () { - if(rootLayer) $ax.visibility.popContainer(rootLayer, false); - }); - } else { - _fireAnimationFromQueue(elementId, queueTypes.resize); - - $ax.event.raiseSyntheticEvent(elementId, 'onResize'); - } - } - }); - // Nop move (move handled by resize) - if(rotateInfo) animations.push({ id: elementId, type: queueTypes.rotate, func: function () { } }); - if(moves) animations.push({ id: elementId, type: queueTypes.move, func: function () { } }); - } - - _addAnimations(animations); - }; - - var _applyAnchorToResizeOffset = function (deltaWidth, deltaHeight, anchor) { - var offset = {}; - if (anchor.indexOf('left') != -1) offset.x = -deltaWidth / 2; - else if (anchor.indexOf('right') != -1) offset.x = deltaWidth / 2; - if (anchor.indexOf('top') != -1) offset.y = -deltaHeight / 2; - else if (anchor.indexOf('bottom') != -1) offset.y = deltaHeight / 2; - - return offset; - } - - //var _getOldAndNewSize = function (resizeInfo, eventInfo, targetElement) { - // var axObject = $obj(targetElement); - // var oldWidth, oldHeight; - // //textarea can be resized manully by the user, use the textarea child to get the current size - // //because this new size may not be reflected on its parents yet - // if ($ax.public.fn.IsTextArea(axObject.type)) { - // var jObject = $jobj(elementId); - // var textObj = $ax('#' + jObject.children('textarea').attr('id')); - // //maybe we shouldn't use ax obj to get width and height here anymore... - // oldWidth = textObj.width(); - // oldHeight = textObj.height(); - // } else { - // oldWidth = $ax('#' + elementId).width(); - // oldHeight = $ax('#' + elementId).height(); - // } - - // var size = _getSizeFromInfo(resizeInfo, eventInfo, oldHeight, oldWidth, elementId); - // return { oldWidth: oldWidth, oldHeight: oldHeight, newWidth: size.width, newHeight: size.height, change: oldWidth != size.width || oldHeight != size.height }; - //} - - var _getSizeFromInfo = function(resizeInfo, eventInfo, oldWidth, oldHeight, targetElement) { - var oldTarget = eventInfo.targetElement; - eventInfo.targetElement = targetElement; - - var state = _getIdToResizeMoveState(eventInfo)[targetElement]; - if(state && state.resizeResult) return state.resizeResult; - - var width = $ax.expr.evaluateExpr(resizeInfo.width, eventInfo); - var height = $ax.expr.evaluateExpr(resizeInfo.height, eventInfo); - eventInfo.targetElement = oldTarget; - - - // If either one is not a number, use the old value - width = width != "" ? Number(width) : oldWidth; - height = height != "" ? Number(height) : oldHeight; - - width = isNaN(width) ? oldWidth : width; - height = isNaN(height) ? oldHeight : height; - - // can't be negative - var result = { width: Math.max(width, 0), height: Math.max(height, 0) }; - if(state) state.resizeResult = result; - return result; - } - - //var _queueResize = function (elementId, css, resizeInfo) { - // var resizeFunc = function() { - // $ax('#' + elementId).resize(css, resizeInfo, true); - // //$ax.public.fn.resize(elementId, css, resizeInfo, true); - // }; - // var obj = $obj(elementId); - // var moves = resizeInfo.anchor != "top left" || ($ax.public.fn.IsDynamicPanel(obj.type) && ((obj.fixedHorizontal && obj.fixedHorizontal == 'center') || (obj.fixedVertical && obj.fixedVertical == 'middle'))) - // if(!moves) { - // _addAnimation(elementId, queueTypes.resize, resizeFunc); - // } else { - // var animations = []; - // animations[0] = { id: elementId, type: queueTypes.resize, func: resizeFunc }; - // animations[1] = { id: elementId, type: queueTypes.move, func: function() {}}; // Nop func - resize handles move and firing from queue - // _addAnimations(animations); - // } - //}; - - //should clean this function and - var _getCssForResizingWidget = function (elementId, eventInfo, anchor, newWidth, newHeight, oldWidth, oldHeight, delta, stop, handleMove) { - var ratio = stop.instant ? 1 : (stop.end - stop.start) / (stop.len - stop.start); - var deltaWidth = (newWidth - oldWidth) * ratio; - var deltaHeight = (newHeight - oldHeight) * ratio; - if(stop.instant || stop.end == stop.len) { - var idToResizeMoveState = _getIdToResizeMoveState(eventInfo); - if(idToResizeMoveState[elementId]) idToResizeMoveState[elementId].resizeResult = undefined; - } - - var css = {}; - css.height = oldHeight + deltaHeight; - - var obj = $obj(elementId); - //if it's 100% width, don't change its width - if($ax.dynamicPanelManager.isPercentWidthPanel(obj)) var is100Dp = true; - else css.width = oldWidth + deltaWidth; - - var jobj = $jobj(elementId); - //if this is pinned dp, we will mantain the pin, no matter how you resize it; so no need changes left or top - //NOTE: currently only pinned DP has position == fixed - if(jobj.css('position') == 'fixed') { - if(obj.fixedHorizontal && obj.fixedHorizontal == 'center') css['margin-left'] = '+=' + delta.x; - if(obj.fixedVertical && obj.fixedVertical == 'middle') css['margin-top'] = '+=' + delta.y; - return css; - } - - // If it is pinned, but temporarily not fixed because it is wrappen in a container, then just make sure to anchor it correctly - if(obj.fixedVertical) { - if(obj.fixedVertical == 'middle') anchor = obj.fixedHorizontal; - else anchor = obj.fixedVertical + (obj.fixedHorizontal == 'center' ? '' : ' ' + obj.fixedHorizontal); - - } - - //use position relative to parents - //var position = obj.generateCompound ? $ax.public.fn.getWidgetBoundingRect(elementId) : $ax.public.fn.getPositionRelativeToParent(elementId); - - - var locationShift; - switch(anchor) { - case "top left": - locationShift = { x: 0, y: 0 }; break; - case "top": - locationShift = { x: -deltaWidth / 2.0, y: 0.0 }; break; - case "top right": - locationShift = { x: -deltaWidth, y: 0.0 }; break; - case "left": - locationShift = { x: 0.0, y: -deltaHeight / 2.0 }; break; - case "center": - locationShift = { x: -deltaWidth / 2.0, y: -deltaHeight / 2.0 }; break; - case "right": - locationShift = { x: -deltaWidth, y: -deltaHeight / 2.0 }; break; - case "bottom left": - locationShift = { x: 0.0, y: -deltaHeight }; break; - case "bottom": - locationShift = { x: -deltaWidth/2.0, y: -deltaHeight }; break; - case "bottom right": - locationShift = { x: -deltaWidth, y: -deltaHeight }; break; - } - - if(handleMove) { - if(jobj.css('position') === 'absolute') { - css.left = $ax.getNumFromPx(jobj.css('left')) + locationShift.x + delta.x; - css.top = $ax.getNumFromPx(jobj.css('top')) + locationShift.y + delta.y; - } else { - var axQuery = $ax('#' + elementId); - var offsetLocation = axQuery.offsetLocation(); - css.left = offsetLocation.left + locationShift.x + delta.x; - css.top = offsetLocation.top + locationShift.y + delta.y; - //css.left = axQuery.left(true) + locationShift.x + delta.x; - //css.top = axQuery.top(true) + locationShift.y + delta.y; - } - } else { - delta.x += locationShift.x; - delta.y += locationShift.y; - } - - css.deltaX = locationShift.x + delta.x; - css.deltaY = locationShift.y + delta.y; - - return css; - }; - - - var _getCssForResizingLayerChild = function (elementId, anchor, layerBoundingRect, widthChangedPercent, heightChangedPercent, deltaLoc) { - var boundingRect = $ax('#' + elementId).offsetBoundingRect(); - //var boundingRect = $ax.public.fn.getWidgetBoundingRect(elementId); - var childCenterPoint = boundingRect.centerPoint; - - var currentSize = $ax('#' + elementId).size(); - var newWidth = currentSize.width + currentSize.width * widthChangedPercent; - var newHeight = currentSize.height + currentSize.height * heightChangedPercent; - - var css = {}; - css.height = newHeight; - - var obj = $obj(elementId); - //if it's 100% width, don't change its width and left - var changeLeft = true; - if($ax.dynamicPanelManager.isPercentWidthPanel(obj)) changeLeft = false; - else css.width = newWidth; - - var jobj = $jobj(elementId); - //if this is pinned dp, we will mantain the pin, no matter how you resize it; so no need changes left or top - //NOTE: currently only pinned DP has position == fixed - if(jobj.css('position') == 'fixed') return css; - //use bounding rect position relative to parents to calculate delta - //var axObj = $ax('#' + elementId); - // This will be absolute world coordinates, but we want body coordinates. - var offsetLocation = $ax('#' + elementId).offsetLocation(); - var currentLeft = offsetLocation.left; - var currentTop = offsetLocation.top; - //var currentLeft = axObj.locRelativeIgnoreLayer(false); - //var currentTop = axObj.locRelativeIgnoreLayer(true); - - var resizable = $ax.public.fn.IsResizable(obj.type); - if(anchor.indexOf("top") > -1) { - var topDelta = (currentTop - layerBoundingRect.top) * heightChangedPercent; - if(!resizable && Math.round(topDelta)) topDelta += currentSize.height * heightChangedPercent; - } else if(anchor.indexOf("bottom") > -1) { - if(resizable) topDelta = (currentTop - layerBoundingRect.bottom) * heightChangedPercent; - else { - var bottomDelta = Math.round(currentTop + currentSize.height - layerBoundingRect.bottom) * heightChangedPercent; - if(bottomDelta) topDelta = bottomDelta - currentSize.height * heightChangedPercent; - else topDelta = 0; - } - } else { //center vertical - if(resizable) topDelta = (childCenterPoint.y - layerBoundingRect.centerPoint.y)*heightChangedPercent - currentSize.height*heightChangedPercent/2; - else { - var centerTopChange = Math.round(childCenterPoint.y - layerBoundingRect.centerPoint.y)*heightChangedPercent; - if(centerTopChange > 0) topDelta = centerTopChange + Math.abs(currentSize.height * heightChangedPercent / 2); - else if(centerTopChange < 0) topDelta = centerTopChange - Math.abs(currentSize.height * heightChangedPercent / 2); - else topDelta = 0; - } - } - - if(changeLeft) { - if(anchor.indexOf("left") > -1) { - var leftDelta = (currentLeft - layerBoundingRect.left) * widthChangedPercent; - if(!resizable && Math.round(leftDelta)) leftDelta += currentSize.width * widthChangedPercent; - } else if(anchor.indexOf("right") > -1) { - if(resizable) leftDelta = (currentLeft - layerBoundingRect.right) * widthChangedPercent; - else { - var rightDelta = Math.round(currentLeft + currentSize.width - layerBoundingRect.right) * widthChangedPercent; - if(rightDelta) leftDelta = rightDelta - currentSize.width * widthChangedPercent; - else leftDelta = 0; - } - } else { //center horizontal - if(resizable) leftDelta = (childCenterPoint.x - layerBoundingRect.centerPoint.x)*widthChangedPercent - currentSize.width*widthChangedPercent/2; - else { - var centerLeftChange = Math.round(childCenterPoint.x - layerBoundingRect.centerPoint.x) * widthChangedPercent; - if(centerLeftChange > 0) leftDelta = centerLeftChange + Math.abs(currentSize.width * widthChangedPercent / 2); - else if(centerLeftChange < 0) leftDelta = centerLeftChange - Math.abs(currentSize.width * widthChangedPercent / 2); - else leftDelta = 0; - } - } - } - - if(topDelta) deltaLoc.y += topDelta; - if(leftDelta && changeLeft) deltaLoc.x += leftDelta; - - return css; - }; - - _actionHandlers.setPanelOrder = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.panelPaths.length; i++) { - var func = action.panelPaths[i].setOrderInfo.bringToFront ? 'bringToFront' : 'sendToBack'; - var elementIds = $ax.getElementIdsFromPath(action.panelPaths[i].panelPath, eventInfo); - for(var j = 0; j < elementIds.length; j++) $ax('#' + elementIds[j])[func](); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.modifyDataSetEditItems = function(eventInfo, actions, index) { - var action = actions[index]; - var add = action.repeatersToAddTo; - var repeaters = add || action.repeatersToRemoveFrom; - var itemId; - for(var i = 0; i < repeaters.length; i++) { - var data = repeaters[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(data.path, eventInfo)[0]; - if(!id) continue; - - if(data.addType == 'this') { - var scriptId = $ax.repeater.getScriptIdFromElementId(eventInfo.srcElement); - itemId = $ax.repeater.getItemIdFromElementId(eventInfo.srcElement); - var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId); - if(add) $ax.repeater.addEditItems(repeaterId, [itemId]); - else $ax.repeater.removeEditItems(repeaterId, [itemId]); - } else if(data.addType == 'all') { - var allItems = $ax.repeater.getAllItemIds(id); - if(add) $ax.repeater.addEditItems(id, allItems); - else $ax.repeater.removeEditItems(id, allItems); - } else { - var oldTarget = eventInfo.targetElement; - var itemIds = $ax.repeater.getAllItemIds(id); - var itemIdsToAdd = []; - for(var j = 0; j < itemIds.length; j++) { - itemId = itemIds[j]; - eventInfo.targetElement = $ax.repeater.createElementId(id, itemId); - if($ax.expr.evaluateExpr(data.query, eventInfo) == "true") { - itemIdsToAdd[itemIdsToAdd.length] = String(itemId); - } - eventInfo.targetElement = oldTarget; - } - if(add) $ax.repeater.addEditItems(id, itemIdsToAdd); - else $ax.repeater.removeEditItems(id, itemIdsToAdd); - } - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _action.repeaterInfoNames = { addItemsToDataSet: 'dataSetsToAddTo', deleteItemsFromDataSet: 'dataSetItemsToRemove', updateItemsInDataSet: 'dataSetsToUpdate', - addFilterToRepeater: 'repeatersToAddFilter', removeFilterFromRepeater: 'repeatersToRemoveFilter', - addSortToRepeater: 'repeaterToAddSort', removeSortFromRepeater: 'repeaterToRemoveSort', - setRepeaterToPage: 'repeatersToSetPage', setItemsPerRepeaterPage: 'repeatersToSetItemCount' - }; - - _actionHandlers.addItemsToDataSet = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.dataSetsToAddTo.length; i++) { - var datasetInfo = action.dataSetsToAddTo[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(datasetInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - var dataset = datasetInfo.data; - - for(var j = 0; j < dataset.length; j++) $ax.repeater.addItem(id, $ax.deepCopy(dataset[j]), eventInfo); - if(dataset.length) _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.deleteItemsFromDataSet = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.dataSetItemsToRemove.length; i++) { - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var deleteInfo = action.dataSetItemsToRemove[i]; - var id = $ax.getElementIdsFromPath(deleteInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - $ax.repeater.deleteItems(id, eventInfo, deleteInfo.type, deleteInfo.rule); - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.updateItemsInDataSet = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.dataSetsToUpdate.length; i++) { - var dataSet = action.dataSetsToUpdate[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(dataSet.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - - $ax.repeater.updateEditItems(id, dataSet.props, eventInfo, dataSet.type, dataSet.rule); - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.setRepeaterToDataSet = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.repeatersToSet.length; i++) { - var setRepeaterInfo = action.repeatersToSet[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(setRepeaterInfo.path, eventInfo)[0]; - if(!id) continue; - $ax.repeater.setDataSet(id, setRepeaterInfo.localDataSetId); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.addFilterToRepeater = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.repeatersToAddFilter.length; i++) { - var addFilterInfo = action.repeatersToAddFilter[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(addFilterInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - - $ax.repeater.addFilter(id, addFilterInfo.removeOtherFilters, addFilterInfo.label, addFilterInfo.filter, eventInfo.srcElement); - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.removeFilterFromRepeater = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.repeatersToRemoveFilter.length; i++) { - var removeFilterInfo = action.repeatersToRemoveFilter[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(removeFilterInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - - if(removeFilterInfo.removeAll) $ax.repeater.removeFilter(id); - else if(removeFilterInfo.filterName != '') { - $ax.repeater.removeFilter(id, removeFilterInfo.filterName); - } - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.addSortToRepeater = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.repeatersToAddSort.length; i++) { - var addSortInfo = action.repeatersToAddSort[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(addSortInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - - $ax.repeater.addSort(id, addSortInfo.label, addSortInfo.columnName, addSortInfo.ascending, addSortInfo.toggle, addSortInfo.sortType); - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.removeSortFromRepeater = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.repeatersToRemoveSort.length; i++) { - var removeSortInfo = action.repeatersToRemoveSort[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(removeSortInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - - if(removeSortInfo.removeAll) $ax.repeater.removeSort(id); - else if(removeSortInfo.sortName != '') $ax.repeater.removeSort(id, removeSortInfo.sortName); - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.setRepeaterToPage = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.repeatersToSetPage.length; i++) { - var setPageInfo = action.repeatersToSetPage[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(setPageInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - - var oldTarget = eventInfo.targetElement; - eventInfo.targetElement = id; - $ax.repeater.setRepeaterToPage(id, setPageInfo.pageType, setPageInfo.pageValue, eventInfo); - eventInfo.targetElement = oldTarget; - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.setItemsPerRepeaterPage = function(eventInfo, actions, index) { - var action = actions[index]; - - for(var i = 0; i < action.repeatersToSetItemCount.length; i++) { - var setItemCountInfo = action.repeatersToSetItemCount[i]; - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(setItemCountInfo.path, eventInfo)[0]; - if(!id || _ignoreAction(id)) continue; - - if(setItemCountInfo.noLimit) $ax.repeater.setNoItemLimit(id); - else $ax.repeater.setItemLimit(id, setItemCountInfo.itemCountValue, eventInfo); - _addRefresh(id); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.refreshRepeater = function(eventInfo, actions, index) { - // We use this as a psudo action now. - var action = actions[index]; - for (var i = 0; i < action.repeatersToRefresh.length; i++) { - // Grab the first one because repeaters must have only element id, as they cannot be inside repeaters - // or none if unplaced - var id = $ax.getElementIdsFromPath(action.repeatersToRefresh[i], eventInfo)[0]; - if(id) _tryRefreshRepeater(id, eventInfo); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - var _tryRefreshRepeater = function(id, eventInfo) { - var idIndex = _repeatersToRefresh.indexOf(id); - if(idIndex == -1) return; - - $ax.splice(_repeatersToRefresh, idIndex, 1); - $ax.repeater.refreshRepeater(id, eventInfo); - }; - - _action.tryRefreshRepeaters = function(ids, eventInfo) { - for(var i = 0; i < ids.length; i++) _tryRefreshRepeater(ids[i], eventInfo); - }; - - _actionHandlers.scrollToWidget = function(eventInfo, actions, index) { - var action = actions[index]; - var elementIds = $ax.getElementIdsFromPath(action.objectPath, eventInfo); - if(elementIds.length > 0) $ax('#' + elementIds[0]).scroll(action.options); - - _dispatchAction(eventInfo, actions, index + 1); - }; - - - _actionHandlers.enableDisableWidgets = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.pathToInfo.length; i++) { - var elementIds = $ax.getElementIdsFromPath(action.pathToInfo[i].objectPath, eventInfo); - var enable = action.pathToInfo[i].enableDisableInfo.enable; - for(var j = 0; j < elementIds.length; j++) $ax('#' + elementIds[j]).enabled(enable); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.setImage = function(eventInfo, actions, index) { - var oldTarget = eventInfo.targetElement; - var action = actions[index]; - var view = $ax.adaptive.currentViewId; - - eventInfo.image = true; - for(var i = 0; i < action.imagesToSet.length; i++) { - var imgInfo = action.imagesToSet[i]; - if (view && imgInfo.adaptive[view]) imgInfo = imgInfo.adaptive[view]; - else imgInfo = imgInfo.base; - var elementIds = $ax.getElementIdsFromPath(action.imagesToSet[i].objectPath, eventInfo); - - for(var j = 0; j < elementIds.length; j++) { - var elementId = elementIds[j]; - - eventInfo.targetElement = elementId; - var evaluatedImgs = _evaluateImages(imgInfo, eventInfo); - - var img = evaluatedImgs.normal; - if($ax.style.IsWidgetDisabled(elementId)) { - if(imgInfo.disabled) img = evaluatedImgs.disabled; - } else if($ax.style.IsWidgetSelected(elementId)) { - if(imgInfo.selected) img = evaluatedImgs.selected; - } else if($ax.event.mouseDownObjectId == elementId && imgInfo.mouseDown) img = evaluatedImgs.mouseDown; - else if($ax.event.mouseOverIds.indexOf(elementId) != -1 && imgInfo.mouseOver) { - img = evaluatedImgs.mouseOver; - //Update mouseOverObjectId - var currIndex = $ax.event.mouseOverIds.indexOf($ax.event.mouseOverObjectId); - var imgIndex = $ax.event.mouseOverIds.indexOf(elementId); - if(currIndex < imgIndex) $ax.event.mouseOverObjectId = elementId; - } else if(imgInfo.mouseOver && elementId == eventInfo.srcElement) { - img = evaluatedImgs.mouseOver; - } - - // $('#' + $ax.repeater.applySuffixToElementId(elementId, '_img')).attr('src', img); - $jobj($ax.GetImageIdFromShape(elementId)).attr('src', img); - - //Set up overrides - $ax.style.mapElementIdToImageOverrides(elementId, evaluatedImgs); - $ax.style.updateElementIdImageStyle(elementId); - - if(evaluatedImgs.mouseOver || evaluatedImgs.mouseDown) $ax.event.updateIxStyleEvents(elementId); - } - } - eventInfo.targetElement = oldTarget; - eventInfo.image = false; - - _dispatchAction(eventInfo, actions, index + 1); - }; - - var _evaluateImages = function(imgInfo, eventInfo) { - var retVal = {}; - for(var state in imgInfo) { - if(!imgInfo.hasOwnProperty(state)) continue; - var img = imgInfo[state][$ax.adaptive.getSketchKey()] || $ax.expr.evaluateExpr(imgInfo[state].literal, eventInfo); - if(!img) img = $axure.utils.getTransparentGifPath(); - retVal[state] = img; - } - return retVal; - }; - - $ax.clearRepeaterImageOverrides = function(repeaterId) { - var childIds = $ax.getChildElementIdsForRepeater(repeaterId); - for(var i = childIds; i < childIds.length; i++) $ax.style.deleteElementIdToImageOverride(childIds[i]); - }; - - _actionHandlers.setFocusOnWidget = function(eventInfo, actions, index) { - var action = actions[index]; - if(action.objectPaths.length > 0) { - var elementIds = $ax.getElementIdsFromPath(action.objectPaths[0], eventInfo); - if(elementIds.length > 0) { - $ax('#' + elementIds[0]).focus(); - //if select text and not in placeholder mode, then select all text - if(action.selectText && !$ax.placeholderManager.isActive(elementIds[0])) { - var elementChildren = document.getElementById(elementIds[0]).children; - //find the input or textarea element - for(var i = 0; i < elementChildren.length; i++) { - if (elementChildren[i].id.indexOf('_input') == -1) continue; - var elementTagName = elementChildren[i].tagName; - if(elementTagName && (elementTagName.toLowerCase() == "input" || elementTagName.toLowerCase() == "textarea")) { - elementChildren[i].select(); - } - } - } - } - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.expandCollapseTree = function(eventInfo, actions, index) { - var action = actions[index]; - for(var i = 0; i < action.pathToInfo.length; i++) { - var pair = action.pathToInfo[i]; - var elementIds = $ax.getElementIdsFromPath(pair.treeNodePath, eventInfo); - for(var j = 0; j < elementIds.length; j++) $ax('#' + elementIds[j]).expanded(pair.expandCollapseInfo.expand); - } - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.other = function(eventInfo, actions, index) { - var action = actions[index]; - $ax.navigate({ - url: $axure.utils.getOtherPath() + "#other=" + encodeURI(action.otherDescription), - target: "popup", - includeVariables: false, - popupOptions: action.popup - }); - - _dispatchAction(eventInfo, actions, index + 1); - }; - - _actionHandlers.fireEvents = function(eventInfo, actions, index) { - var action = actions[index]; - //look for the nearest element id - - var objId = eventInfo.srcElement; - var thisWidget = eventInfo.thiswidget; - var obj = $ax.getObjectFromElementId(objId); - var rdoId = obj ? $ax.getRdoParentFromElementId(objId) : ""; - var rdo = $ax.getObjectFromElementId(rdoId); - var page = rdo ? $ax.pageData.masters[rdo.masterId] : $ax.pageData.page; - - // Check if rdo should be this - var oldIsMasterEvent = eventInfo.isMasterEvent; - if (obj && $ax.public.fn.IsReferenceDiagramObject(obj.type) && eventInfo.isMasterEvent) { - rdoId = objId; - rdo = obj; - page = $ax.pageData.masters[rdo.masterId]; - } - - for(var i = 0; i < action.firedEvents.length; i++) { - var firedEvent = action.firedEvents[i]; - var isPage = firedEvent.objectPath.length == 0; - var targetObjIds = isPage ? [rdoId] : $ax.getElementIdsFromPath(firedEvent.objectPath, eventInfo); - for (var j = 0; j < targetObjIds.length; j++) { - var targetObjId = targetObjIds[j]; - var targetObj = isPage ? rdo : $ax.getObjectFromElementId(targetObjId); - - eventInfo.srcElement = targetObjId || ''; - eventInfo.thiswidget = $ax.getWidgetInfo(eventInfo.srcElement); - - eventInfo.isMasterEvent = false; - var raisedEvents = firedEvent.raisedEventIds; - if(raisedEvents) { - for(var k = 0; k < raisedEvents.length; k++) { - var event = targetObj.interactionMap && targetObj.interactionMap.raised && targetObj.interactionMap.raised[raisedEvents[k]]; - if(event) $ax.event.handleEvent(targetObjId, eventInfo, event, false, true); - } - } - - if(isPage) { - eventInfo.isMasterEvent = true; - eventInfo.label = $ax.pageData.page.name; - eventInfo.friendlyType = 'Page'; - } - - var firedTarget = isPage ? page : targetObj; - var firedEventNames = firedEvent.firedEventNames; - if(firedEventNames) { - for(k = 0; k < firedEventNames.length; k++) { - event = firedTarget.interactionMap && firedTarget.interactionMap[firedEventNames[k]]; - if(event) $ax.event.handleEvent(isPage ? '' : targetObjId, eventInfo, event, false, true); - } - } - if(isPage) eventInfo.isMasterEvent = oldIsMasterEvent; - } - eventInfo.srcElement = objId; - eventInfo.thiswidget = thisWidget; - - eventInfo.isMasterEvent = oldIsMasterEvent; - } - - _dispatchAction(eventInfo, actions, index + 1); - }; -}); diff --git a/web/main/static/resources/scripts/axure/adaptive.js b/web/main/static/resources/scripts/axure/adaptive.js deleted file mode 100644 index 37a362e..0000000 --- a/web/main/static/resources/scripts/axure/adaptive.js +++ /dev/null @@ -1,771 +0,0 @@ -$axure.internal(function($ax) { - $ax.adaptive = {}; - - $axure.utils.makeBindable($ax.adaptive, ["viewChanged"]); - - var _auto = true; - var _autoIsHandledBySidebar = false; - - var _views; - var _idToView; - var _enabledViews = []; - - var _initialViewToLoad; - var _initialViewSizeToLoad; - - var _loadFinished = false; - $ax.adaptive.loadFinished = function() { - if(_loadFinished) return; - _loadFinished = true; - if($ax.adaptive.currentViewId) $ax.viewChangePageAndMasters(); - else $ax.postAdaptiveViewChanged(); - }; - - var _handleResize = function(forceSwitchTo) { - if(!_auto) return; - if(_auto && _autoIsHandledBySidebar && !forceSwitchTo) return; - - var $window = $(window); - var height = $window.height(); - var width = $window.width(); - - var toView = _getAdaptiveView(width, height); - var toViewId = toView && toView.id; - - _switchView(toViewId, forceSwitchTo); - }; - - var _setAuto = $ax.adaptive.setAuto = function(val) { - if(_auto != val) { - _auto = Boolean(val); - } - }; - - var _setLineImage = function(id, imageUrl) { - $jobj(id).attr('src', imageUrl); - }; - - var _switchView = function (viewId, forceSwitchTo) { - //if(!$ax.pageData.isAdaptiveEnabled) return; - - var previousViewId = $ax.adaptive.currentViewId; - if(typeof previousViewId == 'undefined') previousViewId = ''; - if(typeof viewId == 'undefined') viewId = ''; - if (viewId == previousViewId) { - if(forceSwitchTo) $ax.postAdaptiveViewChanged(forceSwitchTo); - return; - } - - $ax('*').each(function(obj, elementId) { - if (!$ax.public.fn.IsTreeNodeObject(obj.type)) return; - if(!obj.hasOwnProperty('isExpanded')) return; - - var query = $ax('#' + elementId); - var defaultExpanded = obj.isExpanded; - - query.expanded(defaultExpanded); - }); - - // reset all the inline positioning from move and rotate actions including size and transformation - $axure('*').each(function (diagramObject, elementId) { - if(diagramObject.isContained) return; - if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; - - var element = document.getElementById(elementId); - if(element) { - var resetCss = { - top: "", left: "", width: "", height: "", opacity: "", - transform: "", webkitTransform: "", MozTransform: "", msTransform: "", OTransform: "" - }; - var query = $(element); - query.css(resetCss); - var isPanel = $ax.public.fn.IsDynamicPanel(diagramObject.type); - if(!isPanel || diagramObject.fitToContent) { //keeps size on the panel states when switching adaptive views to optimize fit to panel - if(diagramObject.fitToContent) $ax.dynamicPanelManager.setFitToContentCss(elementId, true); - var children = query.children(); - if(children.length) children.css(resetCss); - } - - $ax.dynamicPanelManager.resetFixedPanel(diagramObject, element); - $ax.dynamicPanelManager.resetAdaptivePercentPanel(diagramObject, element); - } - }); - - $ax.adaptive.currentViewId = viewId; // we need to set this so the enabled and selected styles will apply properly - if(previousViewId) { - $ax.style.clearAdaptiveStyles(); - $('*').removeClass(previousViewId); - } else { - $ax.style.reselectElements(); - } - - $axure('*').each(function (obj, elementId) { - if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; - - $ax.style.updateElementIdImageStyle(elementId); // When image override exists, fix styling/borders - }); - - //$ax.style.startSuspendTextAlignment(); - - // reset all the images only if we're going back to the default view - if(!viewId) { - $axure('*').each(function (diagramObject, elementId) { - if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; - - $ax.placeholderManager.refreshPlaceholder(elementId); - - var images = diagramObject.images; - if(diagramObject.type == 'horizontalLine' || diagramObject.type == 'verticalLine') { - var startImg = images['start~']; - _setLineImage(elementId + "_start", startImg); - var endImg = images['end~']; - _setLineImage(elementId + "_end", endImg); - var lineImg = images['line~']; - _setLineImage(elementId + "_line", lineImg); - } else if(diagramObject.type == $ax.constants.CONNECTOR_TYPE) { - _setAdaptiveConnectorImages(elementId, images, ''); - } else if(images) { - if (diagramObject.generateCompound) { - - if($ax.style.IsWidgetDisabled(elementId)) { - disabledImage = _getImageWithTag(images, 'disabled~'); - if(disabledImage) $ax.style.applyImage(elementId, disabledImage, 'disabled'); - return; - } - if($ax.style.IsWidgetSelected(elementId)) { - selectedImage = _getImageWithTag(images, 'selected~'); - if(selectedImage) $ax.style.applyImage(elementId, selectedImage, 'selected'); - return; - } - $ax.style.applyImage(elementId, _getImageWithTag(images, 'normal~'), 'normal'); - } else { - if ($ax.style.IsWidgetDisabled(elementId)) { - var disabledImage = _matchImage(elementId, images, [], 'disabled', true); - if (disabledImage) $ax.style.applyImage(elementId, disabledImage, 'disabled'); - return; - } - if ($ax.style.IsWidgetSelected(elementId)) { - var selectedImage = _matchImage(elementId, images, [], 'selected', true); - if (selectedImage) $ax.style.applyImage(elementId, selectedImage, 'selected'); - return; - } - var normalImage = _matchImage(elementId, images, [], 'normal', true); - $ax.style.applyImage(elementId, normalImage, 'normal'); - } - } - - //align all text - var child = $jobj(elementId).children('.text'); - if(child.length) $ax.style.transformTextWithVerticalAlignment(child[0].id, function() { }); - }); - // we have to reset visibility if we aren't applying a new view - $ax.visibility.resetLimboAndHiddenToDefaults(); - $ax.visibility.clearMovedAndResized(); - $ax.repeater.refreshAllRepeaters(); - $ax.dynamicPanelManager.updateParentsOfNonDefaultFitPanels(); - $ax.dynamicPanelManager.updatePercentPanelCache($ax('*')); - } else { - $ax.visibility.clearLimboAndHidden(); - $ax.visibility.clearMovedAndResized(); - _applyView(viewId); - $ax.repeater.refreshAllRepeaters(); - $ax.dynamicPanelManager.updateAllLayerSizeCaches(); - $ax.dynamicPanelManager.updateParentsOfNonDefaultFitPanels(); - } - - $ax.annotation.updateAllFootnotes(); - //$ax.style.resumeSuspendTextAlignment(); - - $ax.adaptive.triggerEvent('viewChanged', {}); - if(_loadFinished) $ax.viewChangePageAndMasters(forceSwitchTo); - }; - - var _getImageWithTag = function(image, tag) { - var flattened = {}; - for (var component in image) { - var componentImage = image[component][tag]; - if(componentImage) flattened[component] = componentImage; - } - return flattened; - } - - // gets the inheritance chain of a particular view. - var _getAdaptiveIdChain = $ax.adaptive.getAdaptiveIdChain = function(viewId) { - if(!viewId) return []; - var view = _idToView[viewId]; - var chain = []; - var current = view; - while(current) { - chain[chain.length] = current.id; - current = _idToView[current.baseViewId]; - } - return chain.reverse(); - }; - - var _getMasterAdaptiveIdChain = $ax.adaptive.getMasterAdaptiveIdChain = function (masterId, viewId) { - if (!viewId) return []; - - var master = $ax.pageData.masters[masterId]; - var masterViews = master.adaptiveViews; - var idToMasterView = {}; - if (masterViews && masterViews.length > 0) { - for (var i = 0; i < masterViews.length; i++) { - var view = masterViews[i]; - idToMasterView[view.id] = view; - } - } - - if (!idToMasterView) return []; - - var view = idToMasterView[viewId]; - var chain = []; - var current = view; - while (current) { - chain[chain.length] = current.id; - current = idToMasterView[current.baseViewId]; - } - return chain.reverse(); - }; - - var _getPageStyle = $ax.adaptive.getPageStyle = function() { - var currentViewId = $ax.adaptive.currentViewId; - var adaptiveChain = _getAdaptiveIdChain(currentViewId); - - var currentStyle = $.extend({}, $ax.pageData.page.style); - for(var i = 0; i < adaptiveChain.length; i++) { - var viewId = adaptiveChain[i]; - $.extend(currentStyle, $ax.pageData.page.adaptiveStyles[viewId]); - } - - return currentStyle; - }; - - var _setAdaptiveLineImages = function(elementId, images, viewIdChain) { - for(var i = viewIdChain.length - 1; i >= 0; i--) { - var viewId = viewIdChain[i]; - var startImg = images['start~' + viewId]; - if(startImg) { - _setLineImage(elementId + "_start", startImg); - var endImg = images['end~' + viewId]; - _setLineImage(elementId + "_end", endImg); - var lineImg = images['line~' + viewId]; - _setLineImage(elementId + "_line", lineImg); - break; - } - } - }; - - var _setAdaptiveConnectorImages = function (elementId, images, view) { - var conn = $jobj(elementId); - var count = conn.children().length-1; // -1 for rich text panel - for(var i = 0; i < count; i++) { - var img = images['' + i + '~' + view]; - $jobj(elementId + '_seg' + i).attr('src', img); - } - }; - - var _applyView = $ax.adaptive.applyView = function(viewId, query) { - var limboIds = {}; - var hiddenIds = {}; - - var jquery; - if(query) { - jquery = query.jQuery(); - jquery = jquery.add(jquery.find('*')); - var jqueryAnn = $ax.annotation.jQueryAnn(query); - jquery = jquery.add(jqueryAnn); - } else { - jquery = $('*').not('#ios-safari-fixed'); - query = $ax('*'); - } - jquery.addClass(viewId); - var viewIdChain = _getAdaptiveIdChain(viewId); - // this could be made more efficient by computing it only once per object - query.each(function(diagramObject, elementId) { - _applyAdaptiveViewOnObject(diagramObject, elementId, viewIdChain, viewId, limboIds, hiddenIds); - }); - - $ax.visibility.addLimboAndHiddenIds(limboIds, hiddenIds, query); - //$ax.dynamicPanelManager.updateAllFitPanelsAndLayerSizeCaches(); - $ax.dynamicPanelManager.updatePercentPanelCache(query); - }; - - var _applyAdaptiveViewOnObject = function(diagramObject, elementId, viewIdChain, viewId, limboIds, hiddenIds) { - var adaptiveChain = []; - for(var i = 0; i < viewIdChain.length; i++) { - var viewId = viewIdChain[i]; - var viewStyle = diagramObject.adaptiveStyles[viewId]; - if(viewStyle) { - adaptiveChain[adaptiveChain.length] = viewStyle; - if (viewStyle.size) $ax.public.fn.convertToSingleImage($jobj(elementId)); - } - } - - var state = $ax.style.generateState(elementId); - - // set the image - var images = diagramObject.images; - if(images) { - if(diagramObject.type == 'horizontalLine' || diagramObject.type == 'verticalLine') { - _setAdaptiveLineImages(elementId, images, viewIdChain); - } else if (diagramObject.type == $ax.constants.CONNECTOR_TYPE) { - _setAdaptiveConnectorImages(elementId, images, viewId); - } else if (diagramObject.generateCompound) { - var compoundUrl = _matchImageCompound(diagramObject, elementId, viewIdChain, state); - if (compoundUrl) $ax.style.applyImage(elementId, compoundUrl, state); - }else { - var imgUrl = _matchImage(elementId, images, viewIdChain, state); - if(imgUrl) $ax.style.applyImage(elementId, imgUrl, state); - } - } - // addaptive override style (not including default style props) - var adaptiveStyle = $ax.style.computeAllOverrides(elementId, undefined, state, viewId); - - // this style INCLUDES the object's my style - var compoundStyle = $.extend({}, diagramObject.style, adaptiveStyle); - - // if (diagramObject.owner.type == 'Axure:Master' && diagramObject.adaptiveStyles) { - // adaptiveStyle = $ax.style.computeFullStyle(elementId, state, viewId); - // } - - if(!diagramObject.isContained) { - $ax.style.setAdaptiveStyle(elementId, adaptiveStyle); - } - - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - if(compoundStyle.limbo && !diagramObject.isContained) limboIds[scriptId] = true; - // sigh, javascript. we need the === here because undefined means not overriden - if(compoundStyle.visible === false) hiddenIds[scriptId] = true; - }; - - var _matchImage = function(id, images, viewIdChain, state, doNotProgress) { - var override = $ax.style.getElementImageOverride(id, state); - if(override) return override; - - if(!images) return undefined; - - let scriptId = $ax.repeater.getScriptIdFromElementId(id); - - if(state == 'disabled' && $ax.style.IsWidgetSelected(id) || state == 'selected' && $ax.style.IsWidgetDisabled(id)) { - let diagramObject = $ax.getObjectFromElementId(id); - if(diagramObject && $ax.public.fn.IsSelectionButton(diagramObject.type)) { - var selectedDisabled = $ax.constants.SELECTED_DISABLED; - } - } - - // first check all the images for this state - for(let i = viewIdChain.length - 1; i >= 0; i--) { - let viewId = viewIdChain[i]; - if(selectedDisabled) { - let img = findImage(images, scriptId, selectedDisabled, viewId) - if(img) return img; - } else { - let img = findImage(images, scriptId, state, viewId); - if (img) return img; - } - } - // check for the default state style - if(selectedDisabled) { - let defaultStateImage = findImage(images, scriptId, selectedDisabled) - if(defaultStateImage) return defaultStateImage; - } else { - let defaultStateImage = findImage(images, scriptId, state); - if (defaultStateImage) return defaultStateImage; - } - - if(doNotProgress) return undefined; - - state = $ax.style.progessState(state); - if (state) return _matchImage(scriptId, images, viewIdChain, state); - - // SHOULD NOT REACH HERE! NORMAL SHOULD ALWAYS CATCH AT THE DEFAULT! - return images['normal~']; // this is the default - }; - - let findImage = function(images, scriptId, state, viewId) { - if(!images) return undefined; - - if(!viewId) viewId = ""; - let withScript = scriptId + "~" + state + "~" + viewId; - let img = images[withScript]; - if(!img) img = images[state + "~" + viewId]; - return img; - } - - var _matchImageCompound = function(diagramObject, id, viewIdChain, state) { - var images = []; - for(var i = 0; i < diagramObject.compoundChildren.length; i++) { - var component = diagramObject.compoundChildren[i]; - images[component] = _matchImage(id, diagramObject.images[component], viewIdChain, state); - } - return images; - }; - - - - $ax.adaptive.getImageForStateAndView = function(id, state) { - var viewIdChain = _getAdaptiveIdChain($ax.adaptive.currentViewId); - var diagramObject = $ax.getObjectFromElementId(id); - if (diagramObject.generateCompound) return _matchImageCompound(diagramObject, id, viewIdChain, state); - else return _matchImage(id, diagramObject.images, viewIdChain, state); - }; - - var _getAdaptiveView = function(winWidth, winHeight) { - var _isViewOneGreaterThanTwo = function (view1, view2, winHeight) { - if (view1.size.width > view2.size.width) return true; - if (view1.size.width == view2.size.width) { - if (view2.size.height <= winHeight) return view1.size.height > view2.size.height && view1.size.height <= winHeight; - else return view1.size.height < view2.size.height; - } - return false; - }; - - var _isViewOneLessThanTwo = function(view1, view2) { - var width2 = view2.size.width || 1000000; // artificially large number - var height2 = view2.size.height || 1000000; - - var width1 = view1.size.width || 1000000; - var height1 = view1.size.height || 1000000; - - return width1 < width2 || (width1 == width2 && height1 < height2); - }; - - var _isWindowWidthGreaterThanViewWidth = function(view, width) { - return width >= view.size.width; - }; - - var _isWindowWidthLessThanViewWidth = function(view1, width) { - var viewWidth = view1.size.width || 1000000; - - return width <= viewWidth; - }; - - var greater = undefined; - var less = undefined; - - var defaultView = $ax.pageData.defaultAdaptiveView; - if (_isWindowWidthGreaterThanViewWidth(defaultView, winWidth, winHeight)) greater = defaultView; - less = defaultView; - for(var i = 0; i < _enabledViews.length; i++) { - var view = _enabledViews[i]; - if(_isWindowWidthGreaterThanViewWidth(view, winWidth, winHeight)) { - if(!greater || _isViewOneGreaterThanTwo(view, greater, winHeight)) greater = view; - } - if(_isWindowWidthLessThanViewWidth(view, winWidth, winHeight)) { - if(!less || _isViewOneLessThanTwo(view, less)) less = view; - } - } - return greater || less; - }; - - var _isAdaptiveInitialized = function() { - return typeof _idToView != 'undefined'; - }; - - - $ax.messageCenter.addMessageListener(function(message, data) { - //If the adaptive plugin hasn't been initialized yet then - //save the view to load so that it can get set when initialize occurs - if (message == 'switchAdaptiveView') { - if (!$axure.utils.isInPlayer()) return; - - var href = window.location.href.split('#')[0]; - var lastSlash = href.lastIndexOf('/'); - href = href.substring(lastSlash + 1); - if(href != data.src) return; - - var view = data.view == 'auto' ? undefined : (data.view == 'default' ? '' : data.view); - - if(!_isAdaptiveInitialized()) { - _initialViewToLoad = view; - } else _handleLoadViewId(view); - } else if (message == 'setAdaptiveViewForSize') { - if (!$axure.utils.isInPlayer()) return; - - _autoIsHandledBySidebar = true; - if(!_isAdaptiveInitialized()) { - _initialViewSizeToLoad = data; - } else _handleSetViewForSize(data.width, data.height); - } else if (message == 'getScale') { - if (!$axure.utils.isInPlayer()) return; - - var prevScaleN = data.prevScaleN; - var newScaleN = 1; - var contentOriginOffset = 0; - - var $body = $('body'); - $body.css('height', ''); - - if (data.scale != 0) { - var adjustScrollScale = false; - if ($('html').getNiceScroll().length == 0 && !MOBILE_DEVICE) { - //adding nicescroll so width is correct when getting scale - _addNiceScroll($('html'), { emulatetouch: false, horizrailenabled: false }); - adjustScrollScale = true; - } - - $('html').css('overflow-x', 'hidden'); - - var bodyWidth = $body.width(); - var isCentered = $body.css('position') == 'relative'; - - // screen width does not adjust on screen rotation for iOS (width is always shorter screen measurement) - var isLandscape = window.orientation != 0 && window.orientation != 180; - var mobileWidth = (IOS ? (isLandscape ? window.screen.height : window.screen.width) : window.screen.width) - data.panelWidthOffset; - var scaleN = newScaleN = (MOBILE_DEVICE ? mobileWidth : $(window).width()) / bodyWidth; - - if (data.scale == 2) { - var pageSize = $ax.public.fn.getPageSize(); - var hScaleN = (MOBILE_DEVICE ? data.viewportHeight : $(window).height()) / Math.max(1, pageSize.bottom); - if (hScaleN < scaleN) { - scaleN = newScaleN = hScaleN; - } - if (isCentered) contentOriginOffset = scaleN * (bodyWidth / 2); - } - - if ((SAFARI && IOS) || SHARE_APP) { - var pageSize = $ax.public.fn.getPageSize(); - $body.first().css('height', pageSize.bottom + 'px'); - } //else $body.css('height', $body.height() + 'px'); - - if (adjustScrollScale) { - _removeNiceScroll($('html')); - _addNiceScroll($('html'), { emulatetouch: false, horizrailenabled: false, cursorwidth: Math.ceil(6 / newScaleN) + 'px', cursorborder: 1 / newScaleN + 'px solid #fff', cursorborderradius: 5 / newScaleN + 'px' }); - } - } - var contentScale = { - scaleN: newScaleN, - prevScaleN: prevScaleN, - contentOriginOffset: contentOriginOffset, - clipToView: data.clipToView, - viewportHeight: data.viewportHeight, - viewportWidth: data.viewportWidth, - panelWidthOffset: data.panelWidthOffset, - scale: data.scale - }; - $axure.messageCenter.postMessage('setContentScale', contentScale); - - } else if (message == 'setDeviceMode') { - if (!$axure.utils.isInPlayer()) return; - - _isDeviceMode = data.device; - if (data.device) { - // FIXES firefox cursor not staying outside initial device frame border - // SAFARI needs entire content height so that trackpad can be disabled - //if (FIREFOX || (SAFARI && !IOS)) { - // var pageSize = $ax.public.fn.getPageSize(); - // $('html').css('height', pageSize.bottom + 'px'); - //} - - _removeNiceScroll($('html'), true); - if (!MOBILE_DEVICE) { - _addNiceScroll($('html'), { emulatetouch: true, horizrailenabled: false }, true); - $('html').addClass('mobileFrameCursor'); - $('html').css('cursor', 'url(resources/css/images/touch.cur), auto'); - $('html').css('cursor', 'url(resources/css/images/touch.svg) 32 32, auto'); - $('html').css('overflow-x', 'hidden'); - - if (IE) { - document.addEventListener("click", function () { - // IE still sometimes wants an argument here - this.activeElement.releasePointerCapture(); - }, false); - } - - if ($axure.browser.isEdge) { - document.addEventListener("pointerdown", function (e) { - this.activeElement.releasePointerCapture(e.pointerId); - }, false); - } - - $ax.dynamicPanelManager.initMobileScroll(); - } - - // Gives horizontal scroll to android in 100% (handled outside of iframe) - $('html').css('overflow-x', 'hidden'); - $('body').css('margin', '0px'); - $(function () { _setHorizontalScroll(false); }); - } else { - _removeNiceScroll($('html'), true); - $('html').css('overflow-x', ''); - $('html').css('cursor', ''); - //$('html').removeAttr('style'); - $('body').css('margin', ''); - $('html').removeClass('mobileFrameCursor'); - $(function () { _setHorizontalScroll(!data.scaleToWidth); }); - - $ax.dynamicPanelManager.initMobileScroll(); - } - } - }); - - var _isDeviceMode = false; - $ax.adaptive.isDeviceMode = function () { - return _isDeviceMode; - } - - var _isHtmlQuery = function ($container) { return $container.length > 0 && $container[0] == $('html')[0]; } - - var _removeNiceScroll = $ax.adaptive.removeNiceScroll = function ($container, blockResetScroll) { - if (!blockResetScroll) { - $container.scrollLeft(0); - $container.scrollTop(0); - } - var nS = $container.getNiceScroll(); - var emulateTouch = nS.length > 0 && nS[0].opt.emulateTouch; - nS.remove(); - //clean up nicescroll css - if (IE) $container.css({ '-ms-overflow-y': '', 'overflow-y': '', '-ms-overflow-style': '', '-ms-touch-action': '' }); - if (!emulateTouch) return; - if (_isHtmlQuery($container)) { - $('#scrollContainer').remove(); - $('#base').off('mouseleave.ax'); - } else { - $container.off('mouseleave.ax'); - } - } - - var _addNiceScrollExitDetector = function ($container) { - if (_isHtmlQuery($container)) { - - // add a fixed div the size of the frame that will not move as we scroll like html,body,#base,children - // so we are able to detect when the mouse leaves that frame area if there is no existing DOM element - var $scrollContainer = $("

    "); - var $body = $('body'); - $scrollContainer.css({ - 'position': 'fixed', - 'width': $body.width(), - 'height': $body.height() - }); - - // we want #base div to handle the event so that it bubbles up from the scrollContainer div which - // handles the bounds of the frame in case there was no previously exisiting child to bubble up the - // event or if the user has clicked on an existing child node to start the emulated touch scroll - var $base = $('#base'); - $base.on('mouseleave.ax', function (e) { - var nS = $container.getNiceScroll(); - for (var i = 0; i < nS.length; ++i) - nS[i].ontouchend(e); - }); - // need to prepend so it is first child in DOM and doesn't block mouse events to other children which - // would make them unable to scroll - $base.prepend($scrollContainer); - } else { - $container.on('mouseleave.ax', function (e) { - var nS = $container.getNiceScroll(); - for (var i = 0; i < nS.length; ++i) - nS[i].ontouchend(e); - }); - } - } - - var _addNiceScroll = $ax.adaptive.addNiceScroll = function ($container, options, blockResetScroll) { - if (!blockResetScroll) { - $container.scrollLeft(0); - $container.scrollTop(0); - } - $container.niceScroll(options); - // RP-581 add handling to stop scroll on mouse leave if enable cursor-drag scrolling like touch devices in desktop computer - if (options.emulatetouch) _addNiceScrollExitDetector($container); - //clean up nicescroll css so child scroll containers show scrollbars in IE - if (IE) $container.css({ '-ms-overflow-y': '', '-ms-overflow-style': '' }); - if(IOS) $container.css({ 'overflow-y': ''}); - } - - //given the element, find the container that's using nice scroll (including the element itself) - $ax.adaptive.getNiceScrollContainer = function(element) { - var parent = element; - while(parent) { - if($(parent).getNiceScroll().length > 0) return parent; - parent = parent.parentElement; - } - return undefined; - } - - - $ax.adaptive.updateMobileScrollOnBody = function () { - var niceScroll = $('html').getNiceScroll(); - if (niceScroll.length == 0) return; - niceScroll.resize(); - } - - var _setTrackpadHorizontalScroll = function (active) { - var preventScroll = function (e) { - if (Math.abs(e.wheelDeltaX) != 0) { - e.preventDefault(); - } - } - - if (!active) { - document.body.addEventListener("mousewheel", preventScroll, { passive: false }); - document.getElementById('html').addEventListener("mousewheel", preventScroll, { passive: false }); - } else { - document.body.removeEventListener("mousewheel", preventScroll, { passive: false }); - document.getElementById('html').removeEventListener("mousewheel", preventScroll, { passive: false }); - } - } - - var _setHorizontalScroll = function (active) { - var $body = $(document); - if (!active) { - $body.bind('scroll', function () { - if ($body.scrollLeft() !== 0) { - $body.scrollLeft(0); - } - }); - } else { - $body.unbind('scroll'); - } - } - - $ax.adaptive.setAdaptiveView = function(view) { - var viewIdForSitemapToUnderstand = view == 'auto' ? undefined : (view == 'default' ? '' : view); - - if(!_isAdaptiveInitialized()) { - _initialViewToLoad = viewIdForSitemapToUnderstand; - } else _handleLoadViewId(viewIdForSitemapToUnderstand); - }; - - $ax.adaptive.initialize = function() { - _views = $ax.pageData.adaptiveViews; - _idToView = {}; - - var useViews = $ax.document.configuration.useViews; - - if(_views && _views.length > 0) { - for(var i = 0; i < _views.length; i++) { - var view = _views[i]; - _idToView[view.id] = view; - if(useViews) _enabledViews[_enabledViews.length] = view; - } - - if(_autoIsHandledBySidebar && _initialViewSizeToLoad) _handleSetViewForSize(_initialViewSizeToLoad.width, _initialViewSizeToLoad.height); - else _handleLoadViewId(_initialViewToLoad); - } - - $axure.resize(function(e) { - _handleResize(); - $ax.postResize(e); //window resize fires after view changed - }); - }; - - var _handleLoadViewId = function (loadViewId, forceSwitchTo) { - if(typeof loadViewId != 'undefined') { - _setAuto(false); - _switchView(loadViewId != 'default' ? loadViewId : '', forceSwitchTo); - } else { - _setAuto(true); - _handleResize(forceSwitchTo); - } - }; - - var _handleSetViewForSize = function (width, height) { - var toView = _getAdaptiveView(width, height); - var toViewId = toView && toView.id; - _switchView(toViewId, "auto"); - }; - - $ax.adaptive.getSketchKey = function() { - return $ax.pageData.sketchKeys[$ax.adaptive.currentViewId || '']; - } -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/annotation.js b/web/main/static/resources/scripts/axure/annotation.js deleted file mode 100644 index f4ec9d1..0000000 --- a/web/main/static/resources/scripts/axure/annotation.js +++ /dev/null @@ -1,178 +0,0 @@ -// ******* Annotation MANAGER ******** // -$axure.internal(function($ax) { - var NOTE_SIZE = 10; - - var _annotationManager = $ax.annotation = {}; - - var _updateLinkLocations = $ax.annotation.updateLinkLocations = function(elementId) { - var textId = $ax.GetTextPanelId(elementId); - if(!textId) return; - - var rotation = $ax.getObjectFromElementId(elementId).style.rotation; - //we have to do this because webkit reports the post-transform position but when you set positions it's pre-transform - if(WEBKIT && rotation) { - //we can dynamiclly rotate a widget now, show need to remember the transform rather than just remove it - //here jquery.css will return 'none' if element is display none - var oldShapeTransform = document.getElementById(elementId).style['-webkit-transform']; - var oldTextTransform = document.getElementById(textId).style['-webkit-transform']; - $('#' + elementId).css('-webkit-transform', 'scale(1)'); - $('#' + textId).css('-webkit-transform', 'scale(1)'); - } - - $('#' + textId).find('div[id$="_ann"]').each(function(index, value) { - var elementId = value.id.replace('_ann', ''); - var $link = $('#' + elementId); - var annPos = $link.position(); - annPos.left += $link.width(); - //var annPos = $(value).position(); - var left = annPos.left;// - NOTE_SIZE; - var top = annPos.top - 5; - - $(value).css('left', left).css('top', top); - }); - - //undo the transform reset - if(WEBKIT && rotation) { - $('#' + elementId).css('-webkit-transform', oldShapeTransform || ''); - $('#' + textId).css('-webkit-transform', oldTextTransform || ''); - } - }; - - var _toggleAnnotationDialog = function (elementId, event) { - let win = $(window); - let scrollY = win.scrollTop(); - let scrollX = win.scrollLeft(); - - let x = event.pageX - scrollX; - let y = event.pageY - scrollY; - - let frameElement = window.frameElement; - let parent = window.parent; - //ann dialog is relative to mainFrame, exclude the mainFrame location so the notes shows up correctly in device mode - while(frameElement && frameElement.name !== 'mainFrame') { - let rect = frameElement.getBoundingClientRect(); - x += rect.x; - y += rect.y; - - if(!parent) break; - - frameElement = parent.frameElement; - parent = parent.parent; - } - - let messageData = { id: elementId, x: x, y: y } - if (!$axure.utils.isInPlayer()) messageData.page = $ax.pageData.notesData; - $ax.messageCenter.postMessage('toggleAnnDialog', messageData); - } - - $ax.annotation.initialize = function () { - _createFootnotes($ax('*'), true); - } - - var _createFootnotes = $ax.annotation.createFootnotes = function(query, create) { - if(!$ax.document.configuration.showAnnotations) return; - - var widgetNotes = $ax.pageData.notesData.widgetNotes; - if (widgetNotes) { - var ownerToFns = $ax.pageData.notesData.ownerToFns; - if(!$.isEmptyObject(ownerToFns)) { - query.each(function(dObj, elementId) { - var fns = ownerToFns[dObj.id]; - if (fns !== undefined) { - var elementIdQuery = $('#' + elementId); - if (dObj.type == 'hyperlink') { - var parentId = $ax.GetParentIdFromLink(elementId); - if (create) { - elementIdQuery.after("
    "); - appendFns($('#' + elementId + "_ann"), fns); - } - _updateLinkLocations(parentId); - } else { - if (create) { - elementIdQuery.after("
    "); - appendFns($('#' + elementId + "_ann"), fns); - } - _adjustIconLocation(elementId, dObj); - } - - if (create) { - $('#' + elementId + "_ann").click(function (e) { - _toggleAnnotationDialog(dObj.id, e); - return false; - }); - - var isVisible = true; - var isMaster = $ax.public.fn.IsReferenceDiagramObject(dObj.type); - if (isMaster) isVisible = dObj.visible; - else isVisible = $ax.visibility.IsIdVisible(elementId); - if (!isVisible) { - var ann = document.getElementById(elementId + "_ann"); - if (ann) $ax.visibility.SetVisible(ann, false); - } - } - } - }); - } - } - - function appendFns($parent, fns) { - for (var index = 0; index < fns.length; index++) { - $parent.append("
    " + fns[index] + "
    "); - } - } - }; - - $ax.annotation.updateAllFootnotes = function () { - _createFootnotes($ax('*'), false); - } - - $ax.annotation.jQueryAnn = function(query) { - var elementIds = []; - query.each(function(diagramObject, elementId) { - if(diagramObject.annotation) elementIds[elementIds.length] = elementId; - }); - var elementIdSelectors = jQuery.map(elementIds, function(elementId) { return '#' + elementId + '_ann'; }); - var jQuerySelectorText = (elementIdSelectors.length > 0) ? elementIdSelectors.join(', ') : ''; - return $(jQuerySelectorText); - }; - - $(window.document).ready(function() { - //$ax.annotation.InitializeAnnotations($ax(function(dObj) { return dObj.annotation; })); - - $ax.messageCenter.addMessageListener(function(message, data) { - //If the annotations are being hidden via the Sitemap toggle button, hide any open dialogs - if(message == 'annotationToggle') { - if (data == true) { - $('div.annnote').show(); - } else { - $('div.annnote').hide(); - } - } - }); - }); - - //adjust annotation location to a element's top right corner - var _adjustIconLocation = $ax.annotation.adjustIconLocation = function(id, dObj) { - var ann = document.getElementById(id + "_ann"); - if(ann) { - var corners = $ax.public.fn.getCornersFromComponent(id); - var width = $(ann).width(); - var newTopRight = $ax.public.fn.vectorPlus(corners.relativeTopRight, corners.centerPoint); - //note size is 14x8, this is how rp calculated it as well - ann.style.left = (newTopRight.x - width) + "px"; - - var elementType = dObj ? dObj.type : $ax.getTypeFromElementId(id); - var yOffset = $ax.public.fn.IsTableCell(elementType) ? 0 : -8; - ann.style.top = (newTopRight.y + yOffset) + "px"; - } - - var ref = document.getElementById(id + "_ref"); - if(ref) { - if(!corners) corners = $ax.public.fn.getCornersFromComponent(id); - var newBottomRight = $ax.public.fn.vectorPlus(corners.relativeBottomRight, corners.centerPoint); - - ref.style.left = (newBottomRight.x - 8) + 'px'; - ref.style.top = (newBottomRight.y - 10) + 'px'; - } - } -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/axQuery.js b/web/main/static/resources/scripts/axure/axQuery.js deleted file mode 100644 index 9108dfd..0000000 --- a/web/main/static/resources/scripts/axure/axQuery.js +++ /dev/null @@ -1,407 +0,0 @@ -$axure = function(query) { - return $axure.query(query); -}; - -// ******* AxQuery and Page metadata ******** // -(function() { - var $ax = function() { - var returnVal = $axure.apply(this, arguments); - var axFn = $ax.fn; - for (var key in axFn) { - returnVal[key] = axFn[key]; - } - - return returnVal; - }; - - $ax.public = $axure; - $ax.fn = {}; - - $axure.internal = function(initFunction) { - //Attach messagecenter to $ax object so that it can be used in viewer.js, etc in internal scope - if(!$ax.messageCenter) $ax.messageCenter = $axure.messageCenter; - - return initFunction($ax); - }; - - var _lastFiredResize = 0; - var _resizeFunctions = []; - var _lastTimeout; - var _fireResize = function() { - if (_lastTimeout) window.clearTimeout(_lastTimeout); - _lastTimeout = undefined; - _lastFiredResize = new Date().getTime(); - for(var i = 0; i < _resizeFunctions.length; i++) _resizeFunctions[i](); - }; - - $axure.resize = function(fn) { - if(fn) _resizeFunctions[_resizeFunctions.length] = fn; - else $(window).resize(); - }; - - $(window).resize(function() { - var THRESHOLD = 50; - _updateWindowInfo(); - var now = new Date().getTime(); - if(now - _lastFiredResize > THRESHOLD) { - _fireResize(); - } else if(!_lastTimeout) { - _lastTimeout = window.setTimeout(_fireResize, THRESHOLD); - } - }); - - $(window).scroll(function () { - _updateWindowInfo(); - }); - - var _windowInfo; - var _updateWindowInfo = $axure.updateWindowInfo = function () { - var win = {}; - var jWin = $(window); - var scrollWin = $('#ios-safari-html').length > 0 ? $('#ios-safari-html') : jWin; - win.width = jWin.width(); - win.height = jWin.height(); - win.scrollx = scrollWin.scrollLeft(); - win.scrolly = scrollWin.scrollTop(); - _windowInfo = win; - }; - $ax.getWindowInfo = function () { - if(!_windowInfo) _updateWindowInfo(); - return _windowInfo; - }; - - - window.$obj = function(id) { - return $ax.getObjectFromElementId(id); - }; - - window.$id = function(obj) { - return obj.scriptIds[0]; - }; - - window.$jobj = function(id) { - return $(document.getElementById(id)); - }; - - window.$jobjAll = function(id) { - return $addAll($jobj(id), id); - }; - - window.$addAll = function(jobj, id) { - return jobj.add($jobj(id + '_ann')).add($jobj(id + '_ref')); - }; - - $ax.INPUT = function(id) { return id + "_input"; }; - $ax.IsImageFocusable = function (type) { return $ax.public.fn.IsImageBox(type) || $ax.public.fn.IsVector(type) || $ax.public.fn.IsTreeNodeObject(type) || $ax.public.fn.IsTableCell(type); }; - $ax.IsTreeNodeObject = function (type) { return $ax.public.fn.IsTreeNodeObject(type); }; - $ax.IsSelectionButton = function (type) { return $ax.public.fn.IsCheckBox(type) || $ax.public.fn.IsRadioButton(type); }; - - var _fn = {}; - $axure.fn = _fn; - $axure.fn.jQuery = function() { - var elements = this.getElements(); - return $(elements); - }; - $axure.fn.$ = $axure.fn.jQuery; - - var _query = function(query, queryArg) { - var returnVal = {}; - var _axQueryObject = returnVal.query = { }; - _axQueryObject.filterFunctions = []; - - if (query == '*') { - _axQueryObject.filterFunctions[0] = function() { return true; }; - } else if (typeof(query) === 'function') { - _axQueryObject.filterFunctions[0] = query; - } else { - var firstString = $.trim(query.toString()); - if (firstString.charAt(0) == '@') { - _axQueryObject.filterFunctions[0] = function(diagramObject) { - return diagramObject.label == firstString.substring(1); - }; - } else if (firstString.charAt(0) == '#') { - _axQueryObject.elementId = firstString.substring(1); - } else { - if (firstString == 'label') { - _axQueryObject.filterFunctions[0] = function(diagramObject) { - return queryArg instanceof Array && queryArg.indexOf(diagramObject.label) > 0 || - queryArg instanceof RegExp && queryArg.test(diagramObject.label) || - diagramObject.label == queryArg; - }; - } else if(firstString == 'elementId') { - _axQueryObject.filterFunctions[0] = function(diagramObject, elementId) { - return queryArg instanceof Array && queryArg.indexOf(elementId) > 0 || - elementId == queryArg; - }; - } - } - } - - var axureFn = $axure.fn; - for (var key in axureFn) { - returnVal[key] = axureFn[key]; - } - return returnVal; - }; - $axure.query = _query; - - var _getFilterFnFromQuery = function(query) { - var filter = function(diagramObject, elementId) { - // Non diagram objects are allowed to be queryed, such as text inputs. - if (diagramObject && !$ax.public.fn.IsReferenceDiagramObject(diagramObject.type) && !document.getElementById(elementId)) return false; - var retVal = true; - for(var i = 0; i < query.filterFunctions.length && retVal; i++) { - retVal = query.filterFunctions[i](diagramObject, elementId); - } - return retVal; - }; - return filter; - }; - - $ax.public.fn.filter = function(query, queryArg) { - var returnVal = _query(query, queryArg); - - if(this.query.elementId) returnVal.query.elementId = this.query.elementId; - - //If there is already a function, offset by 1 when copying other functions over. - var offset = returnVal.query.filterFunctions[0] ? 1 : 0; - - //Copy all functions over to new array. - for(var i = 0; i < this.query.filterFunctions.length; i++) returnVal.query.filterFunctions[i+offset] = this.query.filterFunctions[i]; - - //Functions are in reverse order now - returnVal.query.filterFunctions.reverse(); - - return returnVal; - }; - - $ax.public.fn.each = function(fn) { - var filter = _getFilterFnFromQuery(this.query); - var elementIds = this.query.elementId ? [this.query.elementId] : $ax.getAllElementIds(); - for (var i = 0; i < elementIds.length; i++) { - var elementId = elementIds[i]; - var diagramObject = $ax.getObjectFromElementId(elementId); - if (filter(diagramObject, elementId)) { - fn.apply(diagramObject, [diagramObject, elementId]); - } - } - }; - - $ax.public.fn.getElements = function() { - var elements = []; - this.each(function(dObj, elementId) { - var elementById = document.getElementById(elementId); - if(elementById) elements[elements.length] = elementById; - }); - return elements; - }; - - $ax.public.fn.getElementIds = function() { - var elementIds = []; - this.each(function(dObj, elementId) { elementIds[elementIds.length] = elementId; }); - return elementIds; - }; - - // Deep means to keep getting parents parent until at the root parent. Parent is then an array instead of an id. - // Filter options: layer, rdo, repeater, item, dynamicPanel, state - $ax.public.fn.getParents = function (deep, filter) { - if(filter == '*') filter = ['layer', 'rdo', 'repeater', 'item', 'dynamicPanel', 'state']; - var elementIds = this.getElementIds(); - var parentIds = []; - - var getParent = function(elementId) { - var containerIndex = elementId.indexOf('_container'); - if(containerIndex !== -1) elementId = elementId.substring(0, containerIndex); - if(elementId.indexOf('_text') !== -1) elementId = $ax.GetShapeIdFromText(elementId); - - // Check repeater item before layer, because repeater item detects it's parent layer, but wants to go directly to it's repeater first. - // if repeater item, then just return repeater - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - var itemNum = $ax.repeater.getItemIdFromElementId(elementId); - var parentRepeater = $ax.getParentRepeaterFromScriptId(scriptId); - - // scriptId is item or repeater itself - if (parentRepeater == scriptId) { - // If you are repeater item, return your repeater - if (itemNum) return filter.indexOf('repeater') != -1 ? scriptId : getParent(scriptId); - // Otherwise you are actually at repeater, clean parentRepeater, or else you loop - parentRepeater = undefined; - } - - // Layer only references it if it is a direct layer to it - var parent = $ax.getLayerParentFromElementId(elementId); - // If layer is allowed we found parent, otherwise ignore and keep climbing - if (parent) return filter.indexOf('layer') != -1 ? parent : getParent(parent); - - // if state, then just return panel - if(scriptId.indexOf('_state') != -1) { - var panelId = $ax.repeater.createElementId(scriptId.split('_')[0], itemNum); - // If dynamic panel is allowed we found parent, otherwise ignore and keep climbing - return filter.indexOf('dynamicPanel') != -1 ? panelId : getParent(panelId); - } - - var parentType = ''; - if(parentRepeater) { - parentType = 'item'; - parent = $ax.repeater.createElementId(parentRepeater, itemNum); - } - - var masterPath = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); - masterPath.pop(); - if(masterPath.length > 0) { - var masterId = $ax.getElementIdFromPath(masterPath, { itemNum: itemNum }, true); - if(!masterId) return undefined; - var masterRepeater = $ax.getParentRepeaterFromElementId($ax.repeater.getScriptIdFromElementId(masterId)); - if(!parentRepeater || masterRepeater) { - parentType = 'rdo'; - parent = masterId; - } - } - - var obj = $obj(elementId); - var parentDynamicPanel = obj.parentDynamicPanel; - if(parentDynamicPanel) { - // Make sure the parent if not parentRepeater, or dynamic panel is also in that repeater - // If there is a parent master, the dynamic panel must be in it, otherwise parentDynamicPanel would be undefined. - var panelPath = masterPath; - panelPath[panelPath.length] = parentDynamicPanel; - panelId = $ax.getElementIdFromPath(panelPath, { itemNum: itemNum }, true); - if(!panelId) return undefined; - var panelRepeater = $ax.getParentRepeaterFromElementId(panelId); - if(!parentRepeater || panelRepeater) { - parentType = 'state'; - parent = panelId + '_state' + obj.panelIndex; - } - } - - // If at top or parent type is desired, then return parent, otherwise keep climbing - return !parent || filter.indexOf(parentType) != -1 ? parent : getParent(parent); - }; - - for (var i = 0; i < elementIds.length; i++) { - var elementId = elementIds[i]; - if ((elementId || elementId === 0) && elementId !== "undefined") { - var parent = getParent(elementId); - if (deep) { - var parents = []; - while (parent) { - parents[parents.length] = parent; - // If id is not a valid object, you are either repeater item or dynamic panel state - //if(!$obj(parent)) parent = $ax.visibility.getWidgetFromContainer($jobj(parent).parent().attr('id')); - - parent = getParent(parent); - } - parent = parents; - } - parentIds[parentIds.length] = parent; - } - } - return parentIds; - }; - - // Get the path to the child, where non leaf nodes can be masters, layers, dynamic panels, and repeaters. - $ax.public.fn.getChildren = function(deep, ignoreUnplaced) { // ignoreUnplaced should probably be the default, but when that is done a full audit of usages should be done - var elementIds = this.getElementIds(); - var children = []; - - var getChildren = function (elementId) { - var obj = $obj(elementId); - //if(!obj) return undefined; - - var isRepeater = obj && obj.type == $ax.constants.REPEATER_TYPE; - if (isRepeater && $ax.repeater.getScriptIdFromElementId(elementId) != elementId) { - //prevent repeater items from being marked as isRepeater - //TODO: evaluate changing the naming convention to be more like panel states which don't seem to have this problem - obj = undefined; - isRepeater = false; - } - var isDynamicPanel = obj && obj.type == $ax.constants.DYNAMIC_PANEL_TYPE; - //var isLayer = obj.type == $ax.constants.LAYER_TYPE; - //var isMaster = obj.type == $ax.constants.MASTER_TYPE || obj.type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE; - - var isMenu = obj && obj.type == $ax.constants.MENU_OBJECT_TYPE; - var isTreeNode = obj && obj.type == $ax.constants.TREE_NODE_OBJECT_TYPE; - //var isTable = obj.type == $ax.constants.TABLE_TYPE; - //var isCompoundVector = obj.type == $ax.constants.VECTOR_SHAPE_TYPE && obj.generateCompound; - - //if (isRepeater || isDynamicPanel || isLayer || isMaster || isMenu || isTreeNode || isTable) {// || isCompoundVector) { - // Find parent that children should be pulled from. Default is just the elementId query (used by table and master) - var parent = $jobj(elementId); - if(isRepeater) { - parent = $(); - var itemIds = $ax.getItemIdsForRepeater(elementId); - for(var itemIndex = 0; itemIndex < itemIds.length; itemIndex++) parent = parent.add($jobj($ax.repeater.createElementId(elementId, itemIds[itemIndex]))); - } else if(isDynamicPanel) { - // Really only need to do active state probably... - parent = $jobj(elementId).children(); - // Get through all containers - while ($(parent[0]).attr('id').indexOf('container') != -1) parent = parent.children(); - // Now at states, but want states content - parent = parent.children(); - } else if(isTreeNode) parent = $jobj($ax.repeater.applySuffixToElementId(elementId, '_children')); - - // Menu doesn't want all children, only tables and menus, so it must be handled specially - var children = isMenu ? parent.children('.ax_table').add(parent.children('.ax_menu')) : parent.children(); - children = $ax.visibility.getRealChildren(_fixForBasicLinks(children)); - - // For tree nodes you want the the button shape contained by the elementQuery too - if(isTreeNode) { - var treeNodeChildren = $jobj(elementId).children(); - for(var treeNodeIndex = 0; treeNodeIndex < treeNodeChildren.length; treeNodeIndex++) { - var treeNodeChild = $(treeNodeChildren[treeNodeIndex]); - var childObj = $obj(treeNodeChild.attr('id')); - if (childObj && $ax.public.fn.IsVector(childObj.type)) children = children.add(treeNodeChild); - } - } - - - var childrenIds = []; - for(var childIndex = 0; childIndex < children.length; childIndex++) { - var childObj = $(children[childIndex]); - var id = childObj.attr('id'); - if(typeof(id) == 'undefined' && childObj.is('a')) id = $(childObj.children()[0]).attr('id'); - // Ignore annotations and any other children that are not elements - if (id.split('_').length > 1) continue; - // Ignore Unplaced - if(ignoreUnplaced && $ax.visibility.isScriptIdLimbo($ax.repeater.getScriptIdFromElementId(id))) continue; - childrenIds.push(id); - } - - if(deep) { - var childObjs = []; - for(var i = 0; i < childrenIds.length; i++) { - var childId = childrenIds[i]; - childObjs[i] = { id: childId, children: getChildren(childId) }; - } - childrenIds = childObjs; - } - - return childrenIds; - //} - - //return undefined; - }; - - for(var i = 0; i < elementIds.length; i++) { - var elementId = elementIds[i]; - //if the state is passed in, look for children in the content element - if (elementId.indexOf('_state') > -1 && elementId.indexOf('_content') < 0) elementId = elementId + '_content'; - children[children.length] = { id: elementId, children: getChildren(elementId)}; - } - return children; - }; - - var _fixForBasicLinks = function(query) { - var hasBasicLinks = query.filter('.basiclink').length > 0; - if(!hasBasicLinks) return query; - - var retval = $(); - for(var i = 0; i < query.length; i++) { - var child = $(query[i]); - if(child.hasClass('basiclink')) retval = retval.add(child.children()); - else retval = retval.add(child); - } - return retval; - }; - -})(); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/axQuery.std.js b/web/main/static/resources/scripts/axure/axQuery.std.js deleted file mode 100644 index d92b477..0000000 --- a/web/main/static/resources/scripts/axure/axQuery.std.js +++ /dev/null @@ -1,1864 +0,0 @@ -// ******* AxQuery Plugins ******** // - -$axure.internal(function($ax) { - $ax.constants = {}; - - $ax.constants.TABLE_TYPE = 'table'; - $ax.constants.MENU_OBJECT_TYPE = 'menuObject'; - $ax.constants.MASTER_TYPE = 'master'; - $ax.constants.PAGE_TYPE = 'page'; - $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE = 'referenceDiagramObject'; - $ax.constants.REPEATER_TYPE = 'repeater'; - $ax.constants.DYNAMIC_PANEL_TYPE = 'dynamicPanel'; - $ax.constants.LAYER_TYPE = 'layer'; - $ax.constants.TEXT_BOX_TYPE = 'textBox'; - $ax.constants.TEXT_AREA_TYPE = 'textArea'; - $ax.constants.LIST_BOX_TYPE = 'listBox'; - $ax.constants.COMBO_BOX_TYPE = 'comboBox'; - $ax.constants.CHECK_BOX_TYPE = 'checkbox'; - $ax.constants.RADIO_BUTTON_TYPE = 'radioButton'; - $ax.constants.BUTTON_TYPE = 'button'; //html button - $ax.constants.IMAGE_MAP_REGION_TYPE = 'imageMapRegion'; - $ax.constants.IMAGE_BOX_TYPE = 'imageBox'; - $ax.constants.VECTOR_SHAPE_TYPE = 'vectorShape'; - $ax.constants.SNAPSHOT_TYPE = 'screenshot'; - $ax.constants.TREE_NODE_OBJECT_TYPE = 'treeNodeObject'; - $ax.constants.TABLE_CELL_TYPE = 'tableCell'; - $ax.constants.VERTICAL_LINE_TYPE = 'verticalLine'; - $ax.constants.HORIZONTAL_LINE_TYPE = 'horizontalLine'; - $ax.constants.INLINE_FRAME_TYPE = 'inlineFrame'; - $ax.constants.CONNECTOR_TYPE = 'connector'; - $ax.constants.ALL_TYPE = '*'; - - $ax.constants.TEXT_TYPE = 'richTextPanel'; - $ax.constants.LINK_TYPE = 'hyperlink'; - - // TODO: Need solid passo f this. Constants should be able to bemade local, may need some public lists or something. - // public.fn function should take not arg and use this. May need some $ax.IsType fuctions that will take a type arg and be static - $ax.public.fn.IsTable = function (type) { return type == $ax.constants.TABLE_TYPE; } - $ax.public.fn.IsMenuObject = function (type) { return type == $ax.constants.MENU_OBJECT_TYPE; } - $ax.public.fn.IsMaster = function (type) { return type == $ax.constants.MASTER_TYPE; } - $ax.public.fn.IsPage = function (type) { return type == $ax.constants.PAGE_TYPE; } - $ax.public.fn.IsReferenceDiagramObject = function (type) { return type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE; } - $ax.public.fn.IsRepeater = function (type) { return type == $ax.constants.REPEATER_TYPE; } - $ax.public.fn.IsDynamicPanel = $ax.IsDynamicPanel = function (type) { return type == $ax.constants.DYNAMIC_PANEL_TYPE; } - $ax.public.fn.IsLayer = $ax.IsLayer = function (type) { return type == $ax.constants.LAYER_TYPE; } - $ax.public.fn.IsTextBox = function (type) { return type == $ax.constants.TEXT_BOX_TYPE; } - $ax.public.fn.IsTextArea = function (type) { return type == $ax.constants.TEXT_AREA_TYPE; } - $ax.public.fn.IsListBox = function (type) { return type == $ax.constants.LIST_BOX_TYPE; } - $ax.public.fn.IsComboBox = function (type) { return type == $ax.constants.COMBO_BOX_TYPE; } - $ax.public.fn.IsCheckBox = function (type) { return type == $ax.constants.CHECK_BOX_TYPE; } - $ax.public.fn.IsRadioButton = function (type) { return type == $ax.constants.RADIO_BUTTON_TYPE; } - $ax.public.fn.IsButton = function (type) { return type == $ax.constants.BUTTON_TYPE; } - $ax.public.fn.IsIamgeMapRegion = function (type) { return type == $ax.constants.IMAGE_MAP_REGION_TYPE; } - $ax.public.fn.IsImageBox = function (type) { return type == $ax.constants.IMAGE_BOX_TYPE; } - $ax.public.fn.IsVector = function (type) { return type == $ax.constants.VECTOR_SHAPE_TYPE; } - $ax.public.fn.IsSnapshot = function (type) { return type == $ax.constants.SNAPSHOT_TYPE; } - $ax.public.fn.IsTreeNodeObject = function (type) { return type == $ax.constants.TREE_NODE_OBJECT_TYPE; } - $ax.public.fn.IsTableCell = function (type) { return type == $ax.constants.TABLE_CELL_TYPE; } - $ax.public.fn.IsInlineFrame = function (type) { return type == $ax.constants.INLINE_FRAME_TYPE; } - $ax.public.fn.IsConnector = function (type) { return type == $ax.constants.CONNECTOR_TYPE; } - $ax.public.fn.IsContainer = function (type) { return type== $ax.constants.VECTOR_SHAPE_TYPE || type == $ax.constants.TABLE_TYPE || type == $ax.constants.MENU_OBJECT_TYPE || type == $ax.constants.TREE_NODE_OBJECT_TYPE; } - - var PLAIN_TEXT_TYPES = [$ax.constants.TEXT_BOX_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.LIST_BOX_TYPE, - $ax.constants.COMBO_BOX_TYPE, $ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE, $ax.constants.BUTTON_TYPE]; - - $ax.public.fn.IsResizable = function (type) { return $.inArray(type, RESIZABLE_TYPES) !== -1; } - var RESIZABLE_TYPES = [ - $ax.constants.BUTTON_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.IMAGE_BOX_TYPE, $ax.constants.IMAGE_MAP_REGION_TYPE, - $ax.constants.INLINE_FRAME_TYPE, $ax.constants.LAYER_TYPE, $ax.constants.LIST_BOX_TYPE, $ax.constants.COMBO_BOX_TYPE, - $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.TEXT_BOX_TYPE, $ax.constants.SNAPSHOT_TYPE - ]; - - $ax.public.fn.IsSelectionButton = function(type) { - return type == $ax.constants.RADIO_BUTTON_TYPE || type == $ax.constants.CHECK_BOX_TYPE; - }; - - $ax.public.fn.SupportsRichText = function() { - var obj = $obj(this.getElementIds()[0]); - // Catch root tree nodes as they are not supported. - if(obj.type == $ax.constants.TREE_NODE_OBJECT_TYPE) return obj.friendlyType == 'Tree Node'; - // Do the same for tree node icons maybe? - - return $.inArray(obj.type, SUPPORTS_RICH_TEXT_TYPES) != -1; - } - var SUPPORTS_RICH_TEXT_TYPES = [$ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE, - $ax.constants.IMAGE_BOX_TYPE, $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TABLE_CELL_TYPE, $ax.constants.CONNECTOR_TYPE]; - - var _addJQueryFunction = function(name) { - $ax.public.fn[name] = function() { - var val = $.fn[name].apply(this.jQuery(), arguments); - return arguments[0] ? this : val; - }; - }; - var _jQueryFunctionsToAdd = ['text', 'val', 'css']; - for (var jqueryFunctionIndex = 0; jqueryFunctionIndex < _jQueryFunctionsToAdd.length; jqueryFunctionIndex++) _addJQueryFunction(_jQueryFunctionsToAdd[jqueryFunctionIndex]); - - - // var _addJQueryEventFunction = function(name) { - // $ax.public.fn[name] = function() { - // $.fn[name].apply(this.jQuery(), arguments); - // return this; - // }; - // }; - - // var _addJQueryEventFunction = function(name) { - // $ax.public.fn[name] = (function(nn) { - // return function() { - // $.fn[nn].apply(this.jQuery(), arguments); - // return this; - // }; - // })(name); - // }; - - var _addJQueryEventFunction = function(name) { - $ax.public.fn[name] = function() { - //With Martin - No idea why this is necessary. We tried encapsulating the function thinking it was related to closure (above), - //but that didn't fix the problem. If we don't add this Repeaters will give "Uncaught TypeError: Object # has no method 'apply'" - //here (but Indeterminately, often on larger/slower Repeaters) because it is Undefined. However it seems the catch is never hit - //if we surround the statement with the try/catch. Perhaps the try/catch block creates a scope or closure. - try { - $.fn[name].apply(this.jQuery(), arguments); - } catch(e) { - console.log("Couldn't find the event: " + name); - } - - return this; - }; - }; - var _jQueryEventFunctionsToAdd = ['click', 'mouseenter', 'mouseleave', 'bind']; - for(var jqueryEventIndex = 0; jqueryEventIndex < _jQueryEventFunctionsToAdd.length; jqueryEventIndex++) _addJQueryEventFunction(_jQueryEventFunctionsToAdd[jqueryEventIndex]); - - - $ax.public.fn.openLink = function(url, includeVariables) { - this.jQuery().each(function() { - if(!($(this).is('iframe'))) { - return; - } - - var objIframe = $(this).get(0); - - $ax.navigate({ - url: url, - target: "frame", - includeVariables: includeVariables, - frame: objIframe - }); - }); - - return this; - }; - - $ax.public.fn.SetPanelState = function(stateNumber, options, showWhenSet) { - - var animateInInfo = _getAnimateInfo(options && options.animateIn, 500); - var animateOutInfo = _getAnimateInfo(options && options.animateOut, 500); - - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - if ($ax.public.fn.IsDynamicPanel($ax.getTypeFromElementId(elementId))) { - var stateName = $ax.visibility.GetPanelStateId(elementId, Number(stateNumber) - 1); - var wasVisible = $ax.visibility.IsIdVisible(elementId); - // If compressing because you are fit to content and the change of state may change size, must be before the change. - if(options.compress && $ax.dynamicPanelManager.isIdFitToContent(elementId) && wasVisible) { - $ax.dynamicPanelManager.compressDelta(elementId, $ax.visibility.GetPanelState(elementId), stateName, options.vertical, options.compressEasing, options.compressDuration); - } - $ax.visibility.SetPanelState(elementId, stateName, animateOutInfo.easingType, animateOutInfo.direction, animateOutInfo.duration, - animateInInfo.easingType, animateInInfo.direction, animateInInfo.duration, showWhenSet); - // If compressing because of a show, must be after state is set. - if(options.compress && !wasVisible && showWhenSet) { - $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, true, options.compressEasing, options.compressDuration); - } - } - } - - return this; - }; - - $ax.public.fn.show = function(options, eventInfo) { - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - - var lightboxId = $ax.repeater.applySuffixToElementId(elementId, '_lightbox'); - var lightbox = $jobj(lightboxId); - if(options && options.showType == 'lightbox') { - $ax.flyoutManager.unregisterPanel(elementId, true); - // Add lightbox if there isn't one - if(lightbox.length == 0) { - lightbox = $('
    '); - lightbox.attr('id', lightboxId); - var color = 'rgb(' + options.lightbox.r + ',' + options.lightbox.g + ',' + options.lightbox.b + ')'; - lightbox.css({ - position: 'fixed', - left: '0px', - top: '0px', - width: '10000px', - height: '10000px', - 'background-color': color, - opacity: options.lightbox.a / 255 - }); - - var parents = $ax('#' + elementId).getParents(true, ['dynamicPanel'])[0]; - var fixedParentPanelId = undefined; - for(var j = 0; j < parents.length; j++) { - var parentId = parents[j]; - if($jobj(parentId).css('z-index') != 'auto' || $ax.features.supports.mobile) { - fixedParentPanelId = parents[j]; - break; - } - } - - if(!fixedParentPanelId) $('#base').append(lightbox); - else $jobj(fixedParentPanelId).append(lightbox); - - var wasVisible = $ax.visibility.IsIdVisible(elementId); - - (function(lightbox, query) { - $ax.event.attachClick(lightbox, function() { - $ax.action.addAnimation(elementId, $ax.action.queueTypes.fade, function() { - if(!wasVisible) query.hide(); - else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade); - lightbox.remove(); - }); - }); - })(lightbox, this); - } - $ax.legacy.BringToFront(lightboxId, true); - $ax.legacy.BringToFront(elementId, true); - } else if(options && options.showType == 'flyout') { - // Remove lightbox if there is one - lightbox.remove(); - - var src = eventInfo.thiswidget; - var target = $ax.getWidgetInfo(elementId); - var rects = {}; - if(src.valid) rects.src = $ax.geometry.genRect(src, true); - if(target.valid) rects.target = $ax.geometry.genRect(target, true); - $ax.flyoutManager.registerFlyout(rects, elementId, eventInfo.srcElement); - //$ax.style.AddRolloverOverride(elementId); - $ax.legacy.BringToFront(elementId); - } else { - // Remove lightbox, unregister flyout - lightbox.remove(); - $ax.flyoutManager.unregisterPanel(elementId, true); - } - _setVisibility(elementId, true, options); - } - - return this; - }; - - var _getAnimateInfo = function (options, defaultDuration, useHide) { - var durationOption, easingOption, animationOption; - - if(options) { - if (useHide) { - durationOption = options.durationHide; - easingOption = options.easingHide; - animationOption = options.animationHide; - } else { - durationOption = options.duration; - easingOption = options.easing; - animationOption = options.animation; - } - if (animationOption == 'none') animationOption = 'swing'; - } else { - durationOption = defaultDuration; - easingOption = 'none', - animationOption = 'swing'; - } - var animateInfo = { duration: durationOption }; - switch (easingOption) { - case 'fade': - animateInfo.easingType = 'fade'; - animateInfo.direction = ''; - break; - case 'slideLeft': - animateInfo.easingType = animationOption; - animateInfo.direction = 'left'; - break; - case 'slideRight': - animateInfo.easingType = animationOption; - animateInfo.direction = 'right'; - break; - case 'slideUp': - animateInfo.easingType = animationOption; - animateInfo.direction = 'up'; - break; - case 'slideDown': - animateInfo.easingType = animationOption; - animateInfo.direction = 'down'; - break; - case 'flipLeft': - animateInfo.easingType = 'flip'; - animateInfo.direction = 'left'; - break; - case 'flipRight': - animateInfo.easingType = 'flip'; - animateInfo.direction = 'right'; - break; - case 'flipUp': - animateInfo.easingType = 'flip'; - animateInfo.direction = 'up'; - break; - case 'flipDown': - animateInfo.easingType = 'flip'; - animateInfo.direction = 'down'; - break; - default: - animateInfo.easingType = 'none'; - animateInfo.direction = ''; - } - - return animateInfo; - }; - - $ax.public.fn.hide = function(options) { - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; -// var wasShown = $ax.visibility.IsIdVisible(elementId); - _setVisibility(elementId, false, options, true); - } - - return this; - }; - - $ax.public.fn.toggleVisibility = function(options) { - var elementIds = this.getElementIds(); - - for (var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - var show = !$ax.visibility.IsIdVisible(elementId); - _setVisibility(elementId, show, options, !show); - } - - return this; - }; - - var _setVisibility = function (elementId, value, options, useHide) { - var animateInfo = _getAnimateInfo(options, 0, useHide); - - var wasShown = $ax.visibility.IsIdVisible(elementId); - var compress = options && options.showType == 'compress' && wasShown != value; - if (compress) $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, value, options.compressEasing, options.compressDuration); - - var onComplete = function () { - $ax.dynamicPanelManager.fitParentPanel(elementId); - }; - $ax.visibility.SetWidgetVisibility(elementId, { - value: value, - easing: animateInfo.easingType, - direction: animateInfo.direction, - duration: animateInfo.duration, - animation: animateInfo.animation, - fire: true, - onComplete: onComplete - }); - - if(options && options.bringToFront) $ax.legacy.BringToFront(elementId); - }; - - $ax.public.fn.setOpacity = function(opacity, easing, duration) { - if(!easing || ! duration) { - easing = 'none'; - duration = 0; - } - - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - var onComplete = function() { - $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade); - }; - - var query = $jobj(elementId); - if(duration == 0 || easing == 'none') { - query.css('opacity', opacity); - onComplete(); - } else query.animate({ opacity: opacity }, { duration: duration, easing: easing, queue: false, complete: onComplete }); - } - } - //move one widget. I didn't combine moveto and moveby, since this is in .public, and separate them maybe more clear for the user - var _move = function (elementId, x, y, options, moveTo) { - if(!options.easing) options.easing = 'none'; - if(!options.duration) options.duration = 500; - var obj = $obj(elementId); - - // Layer move using container now. - if($ax.public.fn.IsLayer(obj.type)) { - $ax.move.MoveWidget(elementId, x, y, options, moveTo, - function () { - if(options.onComplete) options.onComplete(); - $ax.dynamicPanelManager.fitParentPanel(elementId); - }, false); - } else { - var xDelta = x; - var yDelta = y; - if (moveTo) { - var jobj = $jobj(elementId); - var left = $ax.getNumFromPx(jobj.css('left')); - var top = $ax.getNumFromPx(jobj.css('top')); - xDelta = x - left; - yDelta = y - top; - } - $ax.move.MoveWidget(elementId, xDelta, yDelta, options, false, - function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }, true); - } - }; - - $ax.public.fn.getCursorOffset = function (elementId) { - var cursorOffset = { x: 0, y: 0 }; - - var element = $ax('#' + elementId); - var dynamicPanelParents = element.getParents(true, 'dynamicPanel')[0] || []; - // repeater can be only one - var repeaterParents = element.getParents(false, 'repeater'); - var relativeLocationParents = dynamicPanelParents.concat(repeaterParents); - var getParentOffset = function (elementId, parentId) { - var parentType = $ax.getTypeFromElementId(parentId); - if ($ax.public.fn.IsDynamicPanel(parentType)) { - return $ax('#' + parentId).offsetLocation(); - } - if ($ax.public.fn.IsRepeater(parentType)) { - return $ax.repeater.getRepeaterElementOffset(parentId, elementId); - } - return { x: 0, y: 0 }; - }; - for (var i = 0; i < relativeLocationParents.length; i++) { - var parentId = relativeLocationParents[i]; - if (parentId) { - var parentOffset = getParentOffset(elementId, parentId); - cursorOffset.x += parentOffset.x; - cursorOffset.y += parentOffset.y; - } - } - return cursorOffset; - } - - - $ax.public.fn.moveTo = function (x, y, options) { - var elementIds = this.getElementIds(); - for(var index = 0; index < elementIds.length; index++) { - _move(elementIds[index], x, y, options, true); - } - - return this; - }; - - $ax.public.fn.moveBy = function (x, y, options) { - var elementIds = this.getElementIds(); - - if(x == 0 && y == 0) { - for(var i = 0; i < elementIds.length; i++) { - var elementId = elementIds[i]; - $ax.move.nopMove(elementId, options); - - //$ax.event.raiseSyntheticEvent(elementId, "onMove"); - $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move); - - //if($axure.fn.IsLayer($obj(elementId).type)) { - // var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true); - // for(var j = 0; j < childrenIds.length; j++) $ax.event.raiseSyntheticEvent(childrenIds[j], 'onMove'); - //} - } - return this; - } - - for(var index = 0; index < elementIds.length; index++) { - _move(elementIds[index], x, y, options, false); - } - return this; - }; - - $ax.public.fn.circularMoveAndRotate = function(degreeChange, options, centerPointLeft, centerPointTop, doRotation, moveDelta, resizeOffset, rotatableMove, moveComplete) { - if(!rotatableMove) rotatableMove = { x: 0, y: 0 }; - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - - var onComplete = function () { - $ax.dynamicPanelManager.fitParentPanel(elementId); - if (moveComplete) moveComplete(); - } - - $ax.move.circularMove(elementId, degreeChange, { x: centerPointLeft, y: centerPointTop }, moveDelta, rotatableMove, resizeOffset, options, true, onComplete, doRotation); - if(doRotation) $ax.move.rotate(elementId, degreeChange, options.easing, options.duration, false, true, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }); - else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.rotate); - } - }; - - $ax.public.fn.rotate = function (degree, easing, duration, to, axShouldFire) { - var elementIds = this.getElementIds(); - // this function will no longer handle compound vectors. - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - degree = parseFloat(degree); - $ax.move.rotate(elementId, degree, easing, duration, to, axShouldFire, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }); - } - }; - - $ax.public.fn.resize = function(newLocationAndSizeCss, resizeInfo, axShouldFire, moves, onCompletedFunc) { - var elementIds = this.getElementIds(); - if(!elementIds) return; - - var completeAndFire = function(moved, id) { - if(axShouldFire) { - $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.resize); - if(moves) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); - } - - if(onCompletedFunc) onCompletedFunc(); - }; - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - - var obj = $obj(elementId); - if(!$ax.public.fn.IsResizable(obj.type)) { - //$ax.dynamicPanelManager.fitParentPanel(elementId); - completeAndFire(moves, elementId); - continue; - } - - var oldSize = $ax('#' + elementId).size(); - var oldWidth = oldSize.width; - var oldHeight = oldSize.height; - var query = $jobj(elementId); - - var isDynamicPanel = $ax.public.fn.IsDynamicPanel(obj.type); - if(isDynamicPanel) { - // No longer fitToContent, calculate additional styling that needs to be done. - $ax.dynamicPanelManager.setFitToContentCss(elementId, false, oldWidth, oldHeight); - - if (query.css('position') == 'fixed' && ((obj.fixedHorizontal && obj.fixedHorizontal == 'center') || (obj.fixedVertical && obj.fixedVertical == 'middle'))) { - moves = true; - var loc = $ax.dynamicPanelManager.getFixedPosition(elementId, oldWidth, oldHeight, newLocationAndSizeCss.width, newLocationAndSizeCss.height); - if(loc) { - if (loc[0] != 0 && !$ax.dynamicPanelManager.isPercentWidthPanel(obj)) newLocationAndSizeCss['margin-left'] = '+=' + (Number(newLocationAndSizeCss['margin-left'].substr(2)) + loc[0]); - if (loc[1] != 0) newLocationAndSizeCss['margin-top'] = '+=' + (Number(newLocationAndSizeCss['margin-top'].substr(2)) + loc[1]); - } - } - - var onComplete = function() { - $ax.flyoutManager.updateFlyout(elementId); - $ax.dynamicPanelManager.fitParentPanel(elementId); - $ax.dynamicPanelManager.updatePanelPercentWidth(elementId); - $ax.dynamicPanelManager.updatePanelContentPercentWidth(elementId); - - completeAndFire(moves, elementId); - $ax.event.raiseSyntheticEvent(elementId, 'onResize'); - }; - - } else { - ////if contains text - //var textChildren = query.children('div.text'); - //if(textChildren && textChildren.length != 0) { - // var textDivId = textChildren.attr('id'); - // var padding = $ax.style.getPadding(textDivId); - // var leftPadding = padding.paddingLeft; - // var rightPadding = padding.paddingRight; - // //var textObj = $ax('#' + textDivId); - // //var leftPadding = textObj.left(true); - // //var rightPadding = oldWidth - leftPadding - textObj.width(); - - // //greater or equal to 1px - // var newTextWidth = Math.max(newLocationAndSizeCss.width - leftPadding - rightPadding, 1); - // var textChildCss = { width: newTextWidth }; - - // var textStepFunction = function() { - // //change the width of the text div may effect the height - // //var currentTextHeight = Number($(textChildren.children('p')[0]).css('height').replace('px', '')); - // //textChildren.css('height', currentTextHeight); - // //var display = $ax.public.fn.displayHackStart(document.getElementById(textDivId)); - - // var trap = _displayWidget(textDivId); - // $ax.style.setTextAlignment([textDivId]); - // trap(); - - // //$ax.public.fn.displayHackEnd(display); - // }; - //} - - //get all the other children that matters - onComplete = function() { - $ax.dynamicPanelManager.fitParentPanel(elementId); - completeAndFire(moves, elementId); - - $ax.annotation.adjustIconLocation(elementId); - $ax.event.raiseSyntheticEvent(elementId, 'onResize'); - }; - } - - var children = query.children().not('div.text'); - while(children && children.length && $(children[0]).attr('id').indexOf('container') != -1) { - children = children.children().not('div.text'); - } - - if(children && children.length !== 0) { - var childAnimationArray = []; - var isConnector = $ax.public.fn.IsConnector(obj.type); - children.each(function (i, child) { - var childCss = { - width: newLocationAndSizeCss.width, - height: newLocationAndSizeCss.height - }; - - //$ax.size() use outerWidth/Height(false), which include padding and borders(no margins) - var childSizingObj = $ax('#' + child.id).size(); - var differentSizedImage = childSizingObj.width - oldWidth != 0 || childSizingObj.height - oldHeight != 0; - if ((differentSizedImage || isConnector) && child.tagName == 'IMG') { - //oldwidth is zero for connectors - var widthOffset = oldWidth ? (childSizingObj.width - oldWidth) * newLocationAndSizeCss.width / oldWidth : childSizingObj.width; - var heightOffset = oldHeight ? (childSizingObj.height - oldHeight) * newLocationAndSizeCss.height / oldHeight : childSizingObj.height; - - childCss.width += widthOffset; - childCss.height += heightOffset; - } - //there are elements like inputs, come with a padding and border, so need to use outerwidth for starting point, due to jquery 1.7 css() on width/height bugs - if($(child).css('position') === 'absolute') { - if(child.offsetLeft) { - childSizingObj.left = child.offsetLeft; - childCss.left = oldWidth ? child.offsetLeft * newLocationAndSizeCss.width / oldWidth : child.offsetLeft; //- transformedShift.x; - } - if(child.offsetTop) { - childSizingObj.top = child.offsetTop; - childCss.top = oldHeight ? child.offsetTop * newLocationAndSizeCss.height / oldHeight : child.offsetTop; //- transformedShift.y; - } - } - childAnimationArray.push({ obj: child, sizingObj: childSizingObj, sizingCss: childCss }); - }); - } - - if (newLocationAndSizeCss.left || newLocationAndSizeCss.top) { - //var movedLeft = newLocationAndSizeCss.left; - //var movedTop = newLocationAndSizeCss.top; - //$ax.visibility.setMovedLocation(elementId, movedLeft, movedTop); - var movedLeft = newLocationAndSizeCss.deltaX; - var movedTop = newLocationAndSizeCss.deltaY; - $ax.visibility.moveMovedLocation(elementId, movedLeft, movedTop); - } - if (newLocationAndSizeCss.width || newLocationAndSizeCss.height) { - var resizedWidth = newLocationAndSizeCss.width; - var resizedHeight = newLocationAndSizeCss.height; - $ax.visibility.setResizedSize(elementId, resizedWidth, resizedHeight); - } - - if (!resizeInfo.easing || resizeInfo.easing == 'none') { - if (childAnimationArray) { - $(childAnimationArray).each(function (i, animationObj) { - if(animationObj.resizeMatrixFunction) { - $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(animationObj.width, animationObj.height))); - } else { - //var sizingCss = animationObj.sizingCss; - //if (sizingCss.left || sizingCss.top) { - // var movedLeft = sizingCss.left; - // var movedTop = sizingCss.top; - // $ax.visibility.setMovedLocation(animationObj.obj.id, movedLeft, movedTop); - //} - //if (sizingCss.width || sizingCss.height) { - // var resizedWidth = sizingCss.width; - // var resizedHeight = sizingCss.height; - // $ax.visibility.setResizedSize(animationObj.obj.id, resizedWidth, resizedHeight); - //} - - $(animationObj.obj).animate(animationObj.sizingCss, { queue: false, duration: 0 }); - } - }); - } - //if(childCss) children.animate(childCss, 0); - //if(sketchyImage && sketchyImageCss) $(sketchyImage).animate(sketchyImageCss, 0); - //if(textChildCss) { - // textChildren.animate(textChildCss, { - // duration: 0, - // step: textStepFunction - // }); - //} - query.animate(newLocationAndSizeCss, { queue: false, duration: 0, complete: onComplete }); - } else { - if(childAnimationArray) { - $(childAnimationArray).each(function (i, animationObj) { - if(animationObj.resizeMatrixFunction) { - $(animationObj.sizingObj).animate(animationObj.sizingCss, { - queue: false, - duration: resizeInfo.duration, - easing: resizeInfo.easing, - step: function (now) { - var widthRatio = (animationObj.width - 1.0) * now + 1.0; - var heightRatio = (animationObj.height - 1.0) * now + 1.0; - $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(widthRatio, heightRatio))); - } - }); - } else { - $(animationObj.sizingObj).animate(animationObj.sizingCss, { - queue: false, - duration: resizeInfo.duration, - easing: resizeInfo.easing, - step: function (now, tween) { - $(animationObj.obj).css(tween.prop, now); - } - }); - } - }); - } - - //if(textChildCss) { - // textChildren.animate(textChildCss, { - // queue: false, - // duration: resizeInfo.duration, - // easing: resizeInfo.easing, - // step: textStepFunction - // }); - //} - - if(isDynamicPanel) { - query.animate(newLocationAndSizeCss, { queue: false, duration: resizeInfo.duration, easing: resizeInfo.easing, complete: onComplete }); - } else { - var locObj = { - left: $ax.public.fn.GetFieldFromStyle(query, 'left'), top: $ax.public.fn.GetFieldFromStyle(query, 'top'), - width: $ax.public.fn.GetFieldFromStyle(query, 'width'), height: $ax.public.fn.GetFieldFromStyle(query, 'height'), - }; - $(locObj).animate(newLocationAndSizeCss, { - queue: false, - duration: resizeInfo.duration, - easing: resizeInfo.easing, - step: function (now, tween) { - query.css(tween.prop, now); - }, - complete: onComplete - }); - } - } - } - }; - - $ax.public.fn.bringToFront = function() { - var elementIds = this.getElementIds(); - for(var index = 0; index < elementIds.length; index++) { $ax.legacy.BringToFront(elementIds[index]); } - return this; - }; - - $ax.public.fn.sendToBack = function() { - var elementIds = this.getElementIds(); - for(var index = 0; index < elementIds.length; index++) { $ax.legacy.SendToBack(elementIds[index]); } - return this; - }; - - $ax.public.fn.text = function() { - if(arguments[0] == undefined) { - var firstId = this.getElementIds()[0]; - - if(!firstId) { return undefined; } - - return getWidgetText(firstId); - } else { - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var currentItem = elementIds[index]; - - var widgetType = $ax.getTypeFromElementId(currentItem); - - if($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //For non rtf - SetWidgetFormText(currentItem, arguments[0]); - } else { - var idRtf = '#' + currentItem; - if($(idRtf).length == 0) idRtf = '#u' + (Number(currentItem.substring(1)) + 1); - - if($(idRtf).length != 0) { - //If the richtext div already has some text in it, - //preserve only the first style and get rid of the rest - //If no pre-existing p-span tags, don't do anything - if($(idRtf).find('p').find('span').length > 0) { - $(idRtf).find('p:not(:first)').remove(); - $(idRtf).find('p').find('span:not(:first)').remove(); - - //Replace new-lines with NEWLINE token, then html encode the string, - //finally replace NEWLINE token with linebreak - var textWithLineBreaks = arguments[0].replace(/\n/g, '--NEWLINE--'); - var textHtml = $('
    ').text(textWithLineBreaks).html(); - $(idRtf).find('span').html(textHtml.replace(/--NEWLINE--/g, '
    ')); - } - } - } - } - - return this; - } - }; - - var getWidgetText = function(id) { - var idQuery = $jobj(id); - var inputQuery = $jobj($ax.INPUT(id)); - if(inputQuery.length) idQuery = inputQuery; - - if (idQuery.is('input') && ($ax.public.fn.IsCheckBox(idQuery.attr('type')) || idQuery.attr('type') == 'radio')) { - idQuery = idQuery.parent().find('label').find('div'); - } - - if(idQuery.is('div')) { - var $rtfObj = idQuery.hasClass('text') ? idQuery : idQuery.find('.text'); - if($rtfObj.length == 0) return ''; - - var textOut = ''; - $rtfObj.children('p,ul,ol').each(function(index) { - if(index != 0) textOut += '\n'; - - //var htmlContent = $(this).html(); - //if(isSoloBr(htmlContent)) return; // It has a solo br, then it was just put in for a newline, and paragraph already added the new line. - if (isSoloBr($(this).children())) return; - - var htmlContent = $(this).html(); - //Replace line breaks (set in SetWidgetRichText) with newlines and nbsp's with regular spaces. - htmlContent = htmlContent.replace(/]*>/ig, '\n').replace(/ /ig, ' '); - textOut += $(htmlContent).text(); - //textOut += htmlContent.replace(/<[^>]*>/g, ''); - }); - - return textOut; - } else { - var val = idQuery.val(); - return val == undefined ? '' : val; - } - }; - - var isSoloBr = function($html) { - //html = $(html); - // Html needs one and only one span - var spanChildren = $html.length == 1 && $html.is('span') ? $html.children() : false; - // Span children needs exactly one br and no text in the span - return spanChildren && spanChildren.length == 1 && spanChildren.is('br') && spanChildren.text().trim() == ''; - }; - - $ax.public.fn.setRichTextHtml = function() { - if(arguments[0] == undefined) { - //No getter function, so just return undefined - return undefined; - } else { - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var currentItem = elementIds[index]; - - var widgetType = $ax.getTypeFromElementId(currentItem); - if ($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //Do nothing for non rtf - continue; - } else { - //TODO -- [mas] fix this! - var idRtf = '#' + currentItem; - if($(idRtf).length == 0) idRtf = '#u' + (parseInt(currentItem.substring(1)) + 1); - if($(idRtf).length != 0) SetWidgetRichText(idRtf, arguments[0]); - } - } - - return this; - } - }; - - $ax.public.fn.value = function() { - if(arguments[0] == undefined) { - var firstId = this.getElementIds()[0]; - - if(!firstId) { - return undefined; - } - - var widgetType = $ax.getTypeFromElementId(firstId); - - if ($ax.public.fn.IsComboBox(widgetType) || $ax.public.fn.IsListBox(widgetType)) { //for select lists and drop lists - return $('#' + firstId + ' :selected').text(); - } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes - return $('#' + firstId + '_input').is(':selected'); - } else if ($ax.public.fn.IsTextBox(widgetType)) { //for text box - return $('#' + firstId + '_input').val(); - } else { //for text based form elements - return this.jQuery().first().val(); - } - } else { - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var widgetType = $ax.getTypeFromElementId(elementIds[index]); - - var elementIdQuery = $('#' + elementIds[index]); - - if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes - if(arguments[0] == true) { - elementIdQuery.prop('selected', true); - } else if(arguments[0] == false) { - elementIdQuery.prop('selected', false); - } - } else { //For select lists, drop lists, text based form elements - elementIdQuery.val(arguments[0]); - } - } - - return this; - } - }; - - $ax.public.fn.checked = function() { - if(arguments[0] == undefined) { - return this.selected(); - } else { - this.selected(arguments[0]); - return this; - } - }; - - //var _getRelativeLeft = function (id, parent) { - // var currentNode = window.document.getElementById(id).offsetParent; - // var left = $ax('#' + id).left(true); - // while (currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) { - // left += currentNode.offsetLeft; - // currentNode = currentNode.offsetParent; - // } - // return left; - //}; - - //var _getRelativeTop = function(id, parent) { - // var currentNode = window.document.getElementById(id).offsetParent; - // var top = $ax('#' + id).top(true); - // while(currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) { - // top += currentNode.offsetTop; - // currentNode = currentNode.offsetParent; - // } - // return top; - //}; - - var _scrollHelper = function(id, scrollX, scrollY, easing, duration) { - var target = window.document.getElementById(id); - var scrollable = $ax.legacy.GetScrollable(target); - var $scrollable = $(scrollable); - - var viewportLocation; - if ($scrollable.is('body')) viewportLocation = $ax('#' + id).viewportLocation(); - else viewportLocation = $ax('#' + id).pageBoundingRect(true, $scrollable.attr('id')).location; - - var targetLeft = viewportLocation.left; - var targetTop = viewportLocation.top; - //var targetLeft = _getRelativeLeft(id, scrollable); - //var targetTop = _getRelativeTop(id, scrollable); - if(!scrollX) targetLeft = scrollable.scrollLeft; - if(!scrollY) targetTop = scrollable.scrollTop; - - if($scrollable.is('body')) { - $scrollable = $('html,body'); - } - if(easing == 'none') { - if(scrollY) $scrollable.scrollTop(targetTop); - if(scrollX) $scrollable.scrollLeft(targetLeft); - } else { - if(!scrollX) { - $scrollable.animate({ scrollTop: targetTop }, duration, easing); - } else if(!scrollY) { - $scrollable.animate({ scrollLeft: targetLeft }, duration, easing); - } else { - $scrollable.animate({ scrollTop: targetTop, scrollLeft: targetLeft }, duration, easing); - } - } - }; - - $ax.public.fn.scroll = function(scrollOption) { - var easing = 'none'; - var duration = 500; - - if(scrollOption && scrollOption.easing) { - easing = scrollOption.easing; - - if(scrollOption.duration) { - duration = scrollOption.duration; - } - } - - var scrollX = true; - var scrollY = true; - - // TODO: check this without vertical option -- might scroll outside of device frame - if(scrollOption.direction == 'vertical') { - scrollX = false; - } else if(scrollOption.direction == 'horizontal') { - scrollY = false; - } - - var elementIds = this.getElementIds(); - for(var index = 0; index < elementIds.length; index++) { - // if($ax.getTypeFromElementId(elementIds[index]) == IMAGE_MAP_REGION_TYPE) { - _scrollHelper(elementIds[index], scrollX, scrollY, easing, duration); - // } - } - - return this; - }; - - $ax.public.fn.enabled = function() { - if(arguments[0] == undefined) { - var firstId = this.getElementIds()[0]; - if(!firstId) return undefined; - - var widgetType = $ax.getTypeFromElementId(firstId); - if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) - || $ax.public.fn.IsLayer(widgetType)) return !$ax.style.IsWidgetDisabled(firstId); - else return this.jQuery().children(':disabled').length <= 0; - } else { - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - var widgetType = $ax.getTypeFromElementId(elementId); - - var enabled = arguments[0]; - if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) - || $ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType) - || $ax.public.fn.IsComboBox(widgetType) || $ax.public.fn.IsListBox(widgetType) - || $ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType) - ) $ax.style.SetWidgetEnabled(elementId, enabled); - - if ($ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) { - $ax.style.SetWidgetEnabled(elementId, enabled); - var children = this.getChildren(false, true)[index].children; - for(var i = 0; i < children.length; i++) { - $axure('#' + children[i]).enabled(enabled); - } - } - var obj = $obj(elementId); - var images = obj.images; - if(PLAIN_TEXT_TYPES.indexOf(widgetType) != -1 && images) { - var img = $jobj($ax.repeater.applySuffixToElementId(elementId, '_image_sketch')); - var key = (enabled ? 'normal~' : 'disabled~') + ($ax.adaptive.currentViewId || ''); - img.attr('src', images[key]); - - } - var jobj = $jobj(elementId); - var input = $jobj($ax.INPUT(elementId)); - if(input.length) jobj = input; - - //if (OS_MAC && WEBKIT && $ax.public.fn.IsComboBox(widgetType)) jobj.css('color', enabled ? '' : 'grayText'); - if($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) return this; - if(enabled) jobj.prop('disabled', false); - else jobj.prop('disabled', true); - } - - return this; - } - }; - - $ax.public.fn.visible = function() { - var ids = this.getElementIds(); - for(var index = 0; index < ids.length; index++) $ax.visibility.SetIdVisible(ids[index], arguments[0]); - return this; - }; - - $ax.public.fn.selected = function() { - if(arguments[0] == undefined) { - var firstId = this.getElementIds()[0]; - if(!firstId) return undefined; - - var widgetType = $ax.getTypeFromElementId(firstId); - if ($ax.public.fn.IsTreeNodeObject(widgetType)) { - var treeNodeButtonShapeId = ''; - var allElementIds = $ax.getAllElementIds(); - for(var i = 0; i < allElementIds.length; i++) { - var elementId = allElementIds[i]; - var currObj = $ax.getObjectFromElementId(elementId); - - if ($ax.public.fn.IsVector(currObj.type) && currObj.parent && currObj.parent.scriptIds && currObj.parent.scriptIds[0] == firstId) { - treeNodeButtonShapeId = elementId; - break; - } - } - - if(treeNodeButtonShapeId == '') return undefined; - return $ax.style.IsWidgetSelected(treeNodeButtonShapeId); - } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType) - || $ax.public.fn.IsTextArea(widgetType) || $ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsListBox(widgetType) || $ax.public.fn.IsComboBox(widgetType)) { - return $ax.style.IsWidgetSelected(firstId); - } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { - return $jobj($ax.INPUT(firstId)).prop('checked'); - } - return this; - } - var elementIds = this.getElementIds(); - var func = typeof (arguments[0]) === 'function' ? arguments[0] : null; - var enabled = arguments[0]; // If this is a function it will be overridden with the return value; - - for(var index = 0; index < elementIds.length; index++) { - var elementId = elementIds[index]; - if(func) { - enabled = func($axure('#' + elementId)); - } - - var widgetType = $ax.getTypeFromElementId(elementId); - - if ($ax.public.fn.IsTreeNodeObject(widgetType)) { //for tree node - var treeRootId = $('#' + elementIds[index]).parents('.treeroot').attr('id'); - - var treeNodeButtonShapeId = ''; - var childElementIds = $jobj(elementId).children(); - for(var i = 0; i < childElementIds.length; i++) { - var elementId = childElementIds[i].id; - var currObj = $ax.getObjectFromElementId(elementId); - - if (currObj && currObj.type == $ax.constants.VECTOR_SHAPE_TYPE && currObj.parent && - currObj.parent.scriptIds && currObj.parent.scriptIds[0] == elementIds[index]) { - treeNodeButtonShapeId = elementId; - break; - } - } - - if(treeNodeButtonShapeId == '') continue; - - $ax.tree.SelectTreeNode(elementId, enabled); - } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType) - || $ax.public.fn.IsTextArea(widgetType) || $ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsListBox(widgetType) || $ax.public.fn.IsComboBox(widgetType)) { - $ax.style.SetWidgetSelected(elementIds[index], enabled); - } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { - var query = $jobj($ax.INPUT(elementId)); - var curr = query.prop('checked'); - //NOTE: won't fire onselect nore onunselect event if states didn't changes - if(curr != enabled) { - query.prop('checked', enabled); - $ax.style.SetWidgetSelected(elementIds[index], enabled, true); - } - } - } - return this; - }; - - $ax.public.fn.focus = function() { - var firstId = this.getElementIds()[0]; - var focusableId = $ax.event.getFocusableWidgetOrChildId(firstId); - // This will scroll but not focus - $('#' + focusableId).triggerHandler("focus"); - // This will focus but does not call our custom scroll so will not animate scroll - $('#' + focusableId).focus(); - - return this; - }; - - $ax.public.fn.expanded = function() { - if(arguments[0] == undefined) { - var firstId = this.getElementIds()[0]; - return firstId && !$ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(firstId)) && $ax.visibility.IsIdVisible(firstId + '_children'); - } else { - var elementIds = this.getElementIds(); - - for(var index = 0; index < elementIds.length; index++) { - if ($ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(elementIds[index]))) { - var treeNodeId = elementIds[index]; - var childContainerId = treeNodeId + '_children'; - - var scriptId = $ax.repeater.getScriptIdFromElementId(treeNodeId); - var itemId = $ax.repeater.getItemIdFromElementId(treeNodeId); - var plusMinusId = 'u' + (parseInt(scriptId.substring(1)) + 1); - if(itemId) plusMinusId = $ax.repeater.createElementId(plusMinusId, itemId); - if($('#' + childContainerId).length == 0 || !$jobj(plusMinusId).children().first().is('img')) - plusMinusId = ''; - - if(arguments[0] == true) { - $ax.tree.ExpandNode(treeNodeId, childContainerId, plusMinusId); - } else if(arguments[0] == false) { - $ax.tree.CollapseNode(treeNodeId, childContainerId, plusMinusId); - } - } - } - - return this; - } - }; - - var _populateBoundingRect = function (boundingRect) { - boundingRect.right = boundingRect.left + boundingRect.width; - boundingRect.bottom = boundingRect.top + boundingRect.height; - - boundingRect.x = boundingRect.left; - boundingRect.y = boundingRect.top; - - boundingRect.location = { - x: boundingRect.left, - y: boundingRect.top, - left: boundingRect.left, - top: boundingRect.top - }; - - boundingRect.size = { - width: boundingRect.width, - height: boundingRect.height - }; - - boundingRect.centerPoint = { - x: boundingRect.width / 2 + boundingRect.left, - y: boundingRect.height / 2 + boundingRect.top - }; - return boundingRect; - } - - //boundingrect relative to its offset parent - //var _getBoundingRectForSingleWidget = function (elementId) { - // var element = document.getElementById(elementId); - // var tempBoundingRect, position; - - // var state = $ax.style.generateState(elementId); - // var style = $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId); - // position = { left: style.location.x, top: style.location.y }; - // tempBoundingRect = { left: style.location.x, top: style.location.y, width: style.size.width, height: style.size.height }; - - // if ($ax.public.fn.isCompoundVectorHtml(element)) { - // tempBoundingRect.width = Number(element.getAttribute('data-width')); - // tempBoundingRect.height = Number(element.getAttribute('data-height')); - // } else { - // var boundingElement = element; - // if ($ax.dynamicPanelManager.isIdFitToContent(elementId)) { - // var stateId = $ax.visibility.GetPanelState(elementId); - // if (stateId != '') boundingElement = document.getElementById(stateId); - // tempBoundingRect = boundingElement.getBoundingClientRect(); - // } - - // //From getLoc - // //var fixed = _fixedOffset(id, vert); - // //if (fixed.valid) loc = !vert && fixed.fullWidth ? 0 : fixed.offset; - - // var jElement = $(element); - // if (jElement.css('position') == 'fixed') { - // position = jElement.position(); - // position.left += Number(jElement.css('margin-left').replace("px", "")); - // position.top += Number(jElement.css('margin-top').replace("px", "")); - // } - // } - - // var boundingRect = { - // left: position.left, - // top: position.top, - // width: tempBoundingRect.width, - // height: tempBoundingRect.height - // }; - - // return _populateBoundingRect(boundingRect); - //}; - - //var _getBoundingRectForMultipleWidgets = function (widgetsIdArray) { - // if (!widgetsIdArray || widgetsIdArray.constructor !== Array) return undefined; - // if (widgetsIdArray.length == 0) return { left: 0, top: 0, centerPoint: { x: 0, y: 0 }, width: 0, height: 0 }; - // var widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[0]); - // var boundingRect = { left: widgetRect.left, right: widgetRect.right, top: widgetRect.top, bottom: widgetRect.bottom }; - - // for (var index = 1; index < widgetsIdArray.length; index++) { - // widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[index]); - // boundingRect.left = Math.min(boundingRect.left, widgetRect.left); - // boundingRect.top = Math.min(boundingRect.top, widgetRect.top); - // boundingRect.right = Math.max(boundingRect.right, widgetRect.right); - // boundingRect.bottom = Math.max(boundingRect.bottom, widgetRect.bottom); - // } - - // boundingRect.centerPoint = { x: (boundingRect.right + boundingRect.left) / 2.0, y: (boundingRect.bottom + boundingRect.top) / 2.0 }; - // boundingRect.width = boundingRect.right - boundingRect.left; - // boundingRect.height = boundingRect.bottom - boundingRect.top; - // return _populateBoundingRect(boundingRect); - //}; - - //var _getLayerChildrenDeep = $ax.public.fn.getLayerChildrenDeep = function (layerId, includeLayers, includeHidden) { - // var deep = []; - // var children = $ax('#' + layerId).getChildren()[0].children; - // for (var index = 0; index < children.length; index++) { - // var childId = children[index]; - // if (!includeHidden && !$ax.visibility.IsIdVisible(childId)) continue; - // if ($ax.public.fn.IsLayer($obj(childId).type)) { - // if (includeLayers) deep.push(childId); - // var recursiveChildren = _getLayerChildrenDeep(childId, includeLayers, includeHidden); - // for (var j = 0; j < recursiveChildren.length; j++) deep.push(recursiveChildren[j]); - // } else deep.push(childId); - // } - // return deep; - //}; - - var _boundingRectForIds = function(childIds) { - // Default size - var childrenBoundingRect = { left: childIds.length > 0 ? 9999999 : 0, top: childIds.length > 0 ? 9999999 : 0, right: 0, bottom: 0 }; - for (var i = 0; i < childIds.length; i++) { - var childId = childIds[i]; - var childObj = $obj(childId); - - if (!childObj) continue; - - // Ignore fixed and hidden - if ($ax.visibility.limboIds[childId] || - !$ax.visibility.IsIdVisible(childId) || - $ax.public.fn.IsDynamicPanel(childObj.type) && childObj.fixedHorizontal) continue; - - var boundingRect = $ax('#' + childId).offsetBoundingRect(); - - // Ignore empty groups - if ($ax.public.fn.IsLayer(childObj.type) && boundingRect.width == 0 && boundingRect.height == 0) continue; - - childrenBoundingRect.left = Math.min(childrenBoundingRect.left, boundingRect.left); - childrenBoundingRect.top = Math.min(childrenBoundingRect.top, boundingRect.top); - childrenBoundingRect.right = Math.max(childrenBoundingRect.right, boundingRect.right); - childrenBoundingRect.bottom = Math.max(childrenBoundingRect.bottom, boundingRect.bottom); - } - childrenBoundingRect.width = childrenBoundingRect.right - childrenBoundingRect.left; - childrenBoundingRect.height = childrenBoundingRect.bottom - childrenBoundingRect.top; - - return _populateBoundingRect(childrenBoundingRect); - } - - $ax.public.fn.getPageSize = function() { - var containerQuery = $('#base'); - var children = containerQuery.children(); - var childIds = []; - for (var i = 0; i < children.length; i++) { - var child = $(children[i]); - var childId = child.attr('id'); - childIds.push(childId); - } - - return _boundingRectForIds(childIds); - } - - $ax.public.fn.childrenBoundingRect = function () { - var childIds = this.getChildren()[0].children; - return _boundingRectForIds(childIds); - }; - - var _fixedLocation = function (elementId, size) { - var axObj = $obj(elementId); - if (!axObj || !axObj.fixedVertical) return { valid: false }; - - var win = ((SAFARI && IOS) || SHARE_APP) ? $('#ios-safari-html') : $(window); - var windowWidth = win.width(); - var windowHeight = win.height(); - //getting the scroll forces layout. consider caching these values. - var windowScrollLeft = win.scrollLeft(); - var windowScrollTop = win.scrollTop(); - - var newLeft = 0; - var newTop = 0; - var width = size.width; - var height = size.height; - - var horz = axObj.fixedHorizontal; - if(horz == 'left') { - newLeft = windowScrollLeft + (axObj.percentWidth ? 0 : $ax.getNumFromPx($jobj(elementId).css('left'))); - } else if(horz == 'center') { - newLeft = windowScrollLeft + ((windowWidth - width) / 2) + axObj.fixedMarginHorizontal; - } else if(horz == 'right') { - newLeft = windowScrollLeft + windowWidth - width - axObj.fixedMarginHorizontal; - } - - var vert = axObj.fixedVertical; - if(vert == 'top') { - newTop = windowScrollTop + $ax.getNumFromPx($jobj(elementId).css('top')); - } else if(vert == 'middle') { - newTop = windowScrollTop + ((windowHeight - height) / 2) + axObj.fixedMarginVertical; - } else if(vert == 'bottom') { - newTop = windowScrollTop + windowHeight - height - axObj.fixedMarginVertical; - } - - //probably need to make this relative to the page for hit testing - return { valid: true, top: newTop, left: axObj.isPercentWidthPanel ? 0 : newLeft }; - }; - - //relative to the parent - $ax.public.fn.offsetBoundingRect = function (ignoreRotation) { - var elementId = this.getElementIds()[0]; - if (!elementId) return undefined; - - //element is null if RDO - //data- values are for layers (legacy compound) - var element = document.getElementById(elementId); - var position, size, rotation; - - var trap; - var state; - var style; - var movedLoc = $ax.visibility.getMovedLocation(elementId); - var resizedSize = $ax.visibility.getResizedSize(elementId); - - if (movedLoc) { - position = movedLoc; - } else if(element && element.getAttribute('data-left')) { - position = { - left: Number(element.getAttribute('data-left')), - top: Number(element.getAttribute('data-top')) - }; - } else if($obj(elementId)) { - state = $ax.style.generateState(elementId); - style = $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId); - position = { left: style.location.x, top: style.location.y }; - - var oShadow = style.outerShadow; - - if (oShadow.on) { - if (oShadow.offsetX < 0) { - position.left += oShadow.offsetX; - position.left -= oShadow.blurRadius; - } - if (oShadow.offsetY < 0) { - position.top += oShadow.offsetY; - position.top -= oShadow.blurRadius; - } - } - - var parents = this.getParents(true, '*')[0]; - //if(parents.length > 0) { - // var parentId = parents[0]; - // var type = $ax.getTypeFromElementId(parentId); - // if ($axure.fn.IsReferenceDiagramObject(type)) { - // var rdoLoc = $ax('#' + parentId).offsetLocation(); - // position.left += rdoLoc.x; - // position.top += rdoLoc.y; - // } - //} - for(var i = 0; i < parents.length; i++) { - var parentId = parents[i]; - var type = $ax.getTypeFromElementId(parentId); - if ($axure.fn.IsReferenceDiagramObject(type)) { - var rdoLoc = $ax('#' + parentId).offsetLocation(); - position.left += rdoLoc.x; - position.top += rdoLoc.y; - break; - } else if (!$axure.fn.IsLayer(type)) break; - } - } else { - if (!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId)); - var jObjPosition = $(element).position(); - position = { left: jObjPosition.left, top: jObjPosition.top }; - } - - if (resizedSize) { - size = resizedSize; - } else if (element && element.getAttribute('data-width')) { - size = { - width: Number(element.getAttribute('data-width')), - height: Number(element.getAttribute('data-height')) - }; - } else if($obj(elementId)) { - state = state || $ax.style.generateState(elementId); - style = style || $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId); - size = { width: style.size.width, height: style.size.height }; - - var oShadow = style.outerShadow; - - if (oShadow.on) { - if (oShadow.offsetX < 0) size.width -= oShadow.offsetX; - else size.width += oShadow.offsetX; - if (oShadow.offsetY < 0) size.height -= oShadow.offsetY; - else size.height += oShadow.offsetY; - - size.width += oShadow.blurRadius; - size.height += oShadow.blurRadius; - } - } else { - if(!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId)); - var jObj = $(element); - size = { width: jObj.outerWidth(), height: jObj.outerHeight() }; - } - - var fixed = _fixedLocation(elementId, size); - if(fixed.valid) { - position.left = fixed.left; - position.top = fixed.top; - } - - var boundingRect = { - left: position.left, - top: position.top, - width: size.width, - height: size.height, - isFixed: fixed.valid - }; - - if(!ignoreRotation) { - var rotatedAngle = $ax.visibility.getRotatedAngle(elementId); - if(rotatedAngle) { - rotation = rotatedAngle; - } else if(element && element.getAttribute('data-rotation')) { - rotation = Number(element.getAttribute('data-rotation')); - } else if($obj(elementId)) { - state = state || $ax.style.generateState(elementId); - style = style || $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId); - rotation = style.rotation; - } else { - if (!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId)); - rotation = $ax.move.getRotationDegreeFromElement(element); - } - if(rotation && rotation != 0) - boundingRect = $ax.public.fn.getBoundingRectForRotate(_populateBoundingRect(boundingRect), rotation); - } - - if (trap) trap(); - - return _populateBoundingRect(boundingRect); - }; - - //relative to the page - $ax.public.fn.pageBoundingRect = function (ignoreRotation, scrollableId) { - var boundingRect = this.offsetBoundingRect(ignoreRotation); - if(!boundingRect) return undefined; - - if(boundingRect.isFixed) return _populateBoundingRect(boundingRect); - - var loc = boundingRect.location; - - //var parents = []; - //var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent - //while ($ax.public.fn.IsContainer(parObj.type)) { - // parents.push($ax.getScriptIdFromPath([parObj.id], strippedId)); - // parObj = parObj.parent; - //} - //var otherParents = $ax('#' + id).getParents(true, ['item', 'repeater', 'dynamicPanel', 'layer'])[0]; - //for (var i = 0; i < otherParents.length; i++) { - // parents.push(otherParents[i]); - //} - - var elementId = this.getElementIds()[0]; - // var strippedId = $ax.repeater.removeSuffixFromElementId(id); - // var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent - var parentIds = []; - var parObj = $obj(elementId).parent; - while ($ax.public.fn.IsContainer(parObj.type)) { - parentIds.push($ax.getScriptIdFromPath([parObj.id], this.id)); - parObj = parObj.parent; - } - var otherParents = $ax('#' + elementId).getParents(true, ['item', 'repeater', 'dynamicPanel'])[0]; - for (var i = 0; i < otherParents.length; i++) { - parentIds.push(otherParents[i]); - } - - var parentScrollableId = scrollableId ? scrollableId.split('_')[0] : scrollableId; - for (var i = 0; i < parentIds.length; i++) { - //var parentId = $ax.visibility.getWidgetFromContainer(parents[0]); - //var parent = $ax.visibility.applyWidgetContainer(parentId, true); - //if(parent.length) { - //var parentId = parentIds[i]; - //var fixed = _fixedOffset(parentId, vert); - //if (fixed.valid) { - // loc += fixed.offset; - // break; - //} else loc += $ax.getNumFromPx(parent.css(prop)); - //} - - var parentId = parentIds[i]; - if (parentId == parentScrollableId) break; - var parentLoc = $ax('#' + parentId).offsetLocation(); - loc = { - x: loc.x + parentLoc.x, - y: loc.y + parentLoc.y, - left: loc.left + parentLoc.left, - top: loc.top + parentLoc.top, - } - var axObj = $obj(parentId); - if(axObj && axObj.fixedVertical) { - boundingRect.isFixed = true; - break; - } - } - - boundingRect.left = loc.x; - boundingRect.top = loc.y; - return _populateBoundingRect(boundingRect); - }; - - $ax.public.fn.viewportBoundingRect = function (scrollableId) { - var boundingRect = this.pageBoundingRect(true, scrollableId); - if (!boundingRect) return undefined; - - if(!boundingRect.isFixed) boundingRect.left = _bodyToWorld(boundingRect.left, false); - return _populateBoundingRect(boundingRect); - } - - $ax.public.fn.size = function () { - var boundingRect = this.offsetBoundingRect(true); - return boundingRect ? boundingRect.size : undefined; - - //var firstId = this.getElementIds()[0]; - //if(!firstId) return undefined; - - //var object = $ax.getObjectFromElementIdDisregardHex(firstId); - //if(object && (object.type == 'layer' || object.generateCompound)) { - // var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId); - // return { width: boundingRect.width, height: boundingRect.height }; - //} - - //var firstIdObject = $jobj(firstId); - //var trap = _displayWidget($ax.repeater.removeSuffixFromElementId(firstId)); - //var size = { width: firstIdObject.outerWidth(), height: firstIdObject.outerHeight() }; - //trap(); - //return size; - }; - - $ax.public.fn.width = function () { - var boundingRect = this.offsetBoundingRect(true); - return boundingRect ? boundingRect.width : undefined; - - //var firstId = this.getElementIds()[0]; - //if(!firstId) return undefined; - - //var object = $ax.getObjectFromElementIdDisregardHex(firstId); - //if (object && (object.type == 'layer' || object.generateCompound)) { - // var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId); - // return boundingRect.width; - //} - - //var firstIdObject = $jobj(firstId); - - //return firstIdObject.outerWidth(); - }; - - $ax.public.fn.height = function () { - var boundingRect = this.offsetBoundingRect(true); - return boundingRect ? boundingRect.height : undefined; - - //var firstId = this.getElementIds()[0]; - //if(!firstId) return undefined; - - //var object = $ax.getObjectFromElementIdDisregardHex(firstId); - //if (object && (object.type == 'layer' || object.generateCompound)) { - // var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId); - // return boundingRect.height; - //} - - //var firstIdObject = $jobj(firstId); - - //return firstIdObject.outerHeight(); - }; - - //this should replace locRelativeIgnoreLayer - $ax.public.fn.offsetLocation = function () { - var boundingRect = this.offsetBoundingRect(true); - return boundingRect ? boundingRect.location : undefined; - }; - - //$ax.public.fn.offsetLeft = function () { - // var boundingRect = this.offsetBoundingRect(); - // return boundingRect ? boundingRect.left : undefined; - //}; - - //$ax.public.fn.offsetTop = function () { - // var boundingRect = this.offsetBoundingRect(); - // return boundingRect ? boundingRect.top : undefined; - //}; - - $ax.public.fn.viewportLocation = function (scrollableId) { - var boundingRect = this.viewportBoundingRect(scrollableId); - return boundingRect ? boundingRect.location : undefined; - }; - - //$ax.public.fn.pageLeft = function () { - // var boundingRect = this.pageBoundingRect(); - // return boundingRect ? boundingRect.left : undefined; - //}; - - //$ax.public.fn.pageTop = function () { - // var boundingRect = this.pageBoundingRect(); - // return boundingRect ? boundingRect.top : undefined; - //}; - - //This is getting its position in the Editor - //It was needed because the widget would be contained so getting the position from jQuery would not be accurate - //This can use the editor values - //$ax.public.fn.locRelativeIgnoreLayer = function (vert) { - // var elementId = this.getElementIds()[0]; - // if(!elementId) return undefined; - - // var parents = this.getParents(true, '*')[0]; - - // for(var i = 0; i < parents.length; i++) { - // var type = $ax.getTypeFromElementId(parents[i]); - // if(!$axure.fn.IsLayer(type) && !$axure.fn.IsReferenceDiagramObject(type)) { - // var func = vert ? _getRelativeTop : _getRelativeLeft; - // return func(elementId, $jobj(parents[i])[0]); - // } - // } - // var axThis = $ax('#' + elementId); - // return vert ? axThis.top() : _bodyToWorld(axThis.left(), true); - //}; - - var _bodyToWorld = $axure.fn.bodyToWorld = function(x, from) { - var body = $('body'); - if (body.css('position') != 'relative') return x; - var offset = $ax.getNumFromPx(body.css('left')) + Math.max(0, ($(window).width() - body.width()) / 2); - if(from) offset *= -1; - return x + offset; - } - - $ax.public.fn.left = function (relative) { - return relative ? this.offsetLocation().left : this.viewportLocation().left; - - //var firstId = this.getElementIds()[0]; - //if(!firstId) return undefined; - - //var left = _getLoc(firstId, false, false, relative); - - //// If you are absolute, unless your are a pinned panel... - //if(relative || $obj(firstId) && $obj(firstId).fixedVertical) return left; - - //// ... or you are in one... - //var parentPanels = $ax('#' + firstId).getParents(true, 'dynamicPanel')[0]; - //for(var i = 0; i < parentPanels.length; i++) if ($obj(parentPanels[i]).fixedVertical) return left; - - //// ... you must convert from body to world coordinates - //return _bodyToWorld(left); - }; - - $ax.public.fn.top = function(relative) { - return relative ? this.offsetLocation().top : this.viewportLocation().top; - - //var firstId = this.getElementIds()[0]; - //return firstId && _getLoc(firstId, true, false, relative); - }; - - //var _getLoc = function(id, vert, high, relative) { - // var mathFunc = high ? 'max' : 'min'; - // var prop = vert ? 'top' : 'left'; - // var dim = vert ? 'height' : 'width'; - - // var obj = $jobj(id); - // var strippedId = $ax.repeater.removeSuffixFromElementId(id); - // var axObj = $obj(strippedId); - // var oldDisplay = obj.css('display'); - // var displaySet = false; - // if(oldDisplay == 'none') { - // obj.css('display', ''); - // displaySet = true; - // } - // var loc = Math.NaN; - // var rdo = axObj.type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE; - - // if (!rdo) loc = $ax.getNumFromPx(obj.css(prop)); - - // var fixed = _fixedOffset(id, vert); - // if(fixed.valid) loc = !vert && fixed.fullWidth ? 0 : fixed.offset; - // else if (!relative) { - // var parents = []; - // var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent - // while($ax.public.fn.IsContainer(parObj.type)) { - // parents.push($ax.getScriptIdFromPath([parObj.id], strippedId)); - // parObj = parObj.parent; - // } - // var otherParents = $ax('#' + id).getParents(true, ['item', 'repeater', 'dynamicPanel', 'layer'])[0]; - // for(var i = 0; i < otherParents.length; i++) { - // parents.push(otherParents[i]); - // } - - // for(var i = 0; i < parents.length; i++) { - // var parentId = $ax.visibility.getWidgetFromContainer(parents[i]); - // var parent = $ax.visibility.applyWidgetContainer(parentId, true); - - // // Layer may not have container, and will be at 0,0 otherwise. - // if (!parent.length) continue; - - // fixed = _fixedOffset(parentId, vert); - // if(fixed.valid) { - // loc += fixed.offset; - // break; // If fixed ignore any parents if there are any, they don't matter. - // } else loc += $ax.getNumFromPx(parent.css(prop)); - // } - // } - - // if (high) loc += obj[dim](); - - // // Special Layer code - // if (axObj.type == 'layer') { - // // If layer has a container, then use that. Otherwise must deal with children. Children can move in container after created, but ignoring for now. - // var container = $ax.visibility.applyWidgetContainer(id, true, true); - // if(container.length) loc += $ax.getNumFromPx(container.css(prop)); - // else loc += (_getChildLoc(axObj.objs, vert, high, dim, true, id) || 0); - // } - - // if(displaySet) obj.css('display', oldDisplay); - // return loc; - //}; - - //var _getChildLoc = function (children, vert, high, dim, root, path, itemId) { - // if (typeof (path) == 'string') { - // itemId = $ax.repeater.getItemIdFromElementId(path); - // path = $ax.getPathFromScriptId(path); - // path.pop(); // Remove object id, only want rdo path. - // } - // var mathFunc = high ? 'max' : 'min'; - // var childLoc = NaN; - // for (var i = 0; i < children.length; i++) { - // var childObj = children[i]; - // var childId = $ax.getElementIdFromPath([childObj.id], { relativeTo: path }); - // if (!childId) continue; - // childId = $ax.repeater.createElementId(childId, itemId); - // if($ax.public.fn.IsReferenceDiagramObject(childObj.type)) { - // path.push(childObj.id); - // var childProp = _getChildLoc($ax.pageData.masters[$obj(childId).masterId].diagram.objects, vert, high, dim, false, path, itemId); - // path.pop(); - // if(isNaN(childProp)) continue; - // } else if($ax.public.fn.IsLayer(childObj.type)) { - // childProp = _getChildLoc(childObj.objs, vert, high, dim, false, path, itemId); - // } else { - // if(!$ax.visibility.IsIdVisible(childId)) continue; - // childProp = $ax('#' + childId).locRelativeIgnoreLayer(vert); - // if(high) childProp += $jobj(childId)[dim](); - // } - - // if(isNaN(childLoc)) childLoc = childProp; - // else if(!isNaN(childProp)) childLoc = Math[mathFunc](childLoc, childProp); - // } - - // return root && isNaN(childLoc) ? 0 : childLoc; - //}; - - //var _fixedOffset = function (id, vert) { - // var axObj = $obj(id); - // //I think this is only for pinned panels? So why are we coming through here for rtps? - // if(!axObj) return { valid: false }; - - // var dim = vert ? 'height' : 'width'; - // var alignment = axObj['fixed' + (vert ? 'Vertical' : 'Horizontal')]; - // if(!alignment) return { valid: false }; - // var loc = 0; - - // // TODO: This returns 0 for width/height it or any parent is display none. Similar issue when using axquery width/height - // // TODO: Look into replacing this with axquery width/height and fixing that to use this hack. Potentially want to make js generic trapper. - // var trap = _displayWidget(id); - // var query = $jobj(id); - // var objSize = query[dim](); - // trap(); - - // if(alignment == 'center' || alignment == 'middle') { - // loc = $ax.getNumFromPx(query.css('margin-' + (vert ? 'top' : 'left'))); - // loc += ($(window)[dim]()) / 2; - // } else if(alignment == 'bottom' || alignment == 'right') { - // loc = $ax.getNumFromPx(query.css(vert ? 'bottom' : 'right')); - // loc = $(window)[dim]() - objSize - loc; // subract loc because margin here moves farther left/up as it gets bigger. - // } else { - // loc = $ax.getNumFromPx(query.css(vert ? 'top' : 'left')); - // } - - // var scrollKey = 'scroll' + (vert ? 'Top' : 'Left'); - // return { offset: $(window)[scrollKey]() + loc, valid: true, fullWidth: axObj.percentWidth == 1 }; - //}; - - var _displayWidget = function(id) { - var parents = $ax('#' + id).getParents(true, '*')[0]; - parents.push(id); // also need to show self - - var displayed = []; - for(var i = 0; i < parents.length; i++) { - var currId = parents[i]; - var currObj = $jobj(currId); - if(currObj.css('display') == 'none') { - currObj.css('display', 'block'); - displayed.push(currId); - } - } - - return function() { - for(var i = 0; i < displayed.length; i++) { - $jobj(displayed[i]).css('display', 'none'); - } - }; - } -}); diff --git a/web/main/static/resources/scripts/axure/doc.js b/web/main/static/resources/scripts/axure/doc.js deleted file mode 100644 index 9abe442..0000000 --- a/web/main/static/resources/scripts/axure/doc.js +++ /dev/null @@ -1,900 +0,0 @@ -$axure.internal(function($ax) { - var _pageData; - - - var _initializePageFragment = function(pageFragment, objIdToObject) { - var objectArrayHelper = function(objects, parent) { - for(var i = 0; i < objects.length; i++) { - diagramObjectHelper(objects[i], parent); - } - }; - - var diagramObjectHelper = function(diagramObject, parent) { - $ax.initializeObject('diagramObject', diagramObject); - objIdToObject[pageFragment.packageId + '~' + diagramObject.id] = diagramObject; - diagramObject.parent = parent; - diagramObject.owner = pageFragment; - diagramObject.scriptIds = []; - if(diagramObject.diagrams) { //dynamic panel - for(var i = 0; i < diagramObject.diagrams.length; i++) { - var diagram = diagramObject.diagrams[i]; - objectArrayHelper(diagram.objects, diagram); - } - } else if($ax.public.fn.IsLayer(diagramObject.type)) { - var layerObjs = diagramObject.objs; - objectArrayHelper(layerObjs, parent); - } - if(diagramObject.objects) objectArrayHelper(diagramObject.objects, diagramObject); - }; - objectArrayHelper(pageFragment.diagram.objects, pageFragment.diagram); - }; - - var _initalizeStylesheet = function(stylesheet) { - var stylesById = {}; - var customStyles = stylesheet.customStyles; - for(var key in customStyles) { - var style = customStyles[key]; - stylesById[style.id] = style; - } - var duplicateStyles = stylesheet.duplicateStyles; - for(var duplicateKey in duplicateStyles) { - stylesById[duplicateKey] = stylesById[duplicateStyles[duplicateKey]]; - } - - stylesheet.stylesById = stylesById; - }; - - - var _initializeDocumentData = function() { - _initalizeStylesheet($ax.document.stylesheet); - }; - - - var _initializePageData; - // ******* Dictionaries ******** // - (function() { - var scriptIdToParentLayer = {}; - var elementIdToObject = {}; - var scriptIdToObject = {}; - var scriptIdToRepeaterId = {}; - var repeaterIdToScriptIds = {}; - var repeaterIdToItemIds = {}; - var scriptIdToPath = {}; - var _scriptIds = []; - var elementIdToText = {}; - var radioGroupToSelectedElementId = {}; - _initializePageData = function() { - if(!_pageData || !_pageData.page || !_pageData.page.diagram) return; - - var objIdToObject = {}; - _initializePageFragment(_pageData.page, objIdToObject); - for(var masterId in _pageData.masters) { - var master = _pageData.masters[masterId]; - _initializePageFragment(master, objIdToObject); - } - - var _pathsToScriptIds = []; - _pathToScriptIdHelper(_pageData.objectPaths, [], _pathsToScriptIds, scriptIdToPath); - - for(var i = 0; i < _pathsToScriptIds.length; i++) { - var path = _pathsToScriptIds[i].idPath; - var scriptId = _pathsToScriptIds[i].scriptId; - - var packageId = _pageData.page.packageId; - if(path.length > 1) { - for(var j = 0; j < path.length - 1; j++) { - var rdoId = path[j]; - var rdo = objIdToObject[packageId + '~' + rdoId]; - packageId = rdo.masterId; - } - } - var diagramObject = objIdToObject[packageId + '~' + path[path.length - 1]]; - diagramObject.scriptIds[diagramObject.scriptIds.length] = scriptId; - - scriptIdToObject[scriptId] = diagramObject; - _scriptIds[_scriptIds.length] = scriptId; - } - - // Now map scriptIds to repeaters and layers - var mapScriptIdToRepeaterId = function(scriptId, repeaterId) { - scriptIdToRepeaterId[scriptId] = repeaterId; - var scriptIds = repeaterIdToScriptIds[repeaterId]; - if(scriptIds) scriptIds[scriptIds.length] = scriptId; - else repeaterIdToScriptIds[repeaterId] = [scriptId]; - }; - var mapScriptIdToLayerId = function(obj, layerId, path) { - var pathCopy = $ax.deepCopy(path); - pathCopy[path.length] = obj.id; - var scriptId = $ax.getScriptIdFromPath(pathCopy); - scriptIdToParentLayer[scriptId] = layerId; - } - var mapIdsToRepeaterAndLayer = function(path, objs, repeaterId) { - var pathCopy = $ax.deepCopy(path); - - for(var i = 0; i < objs.length; i++) { - var obj = objs[i]; - pathCopy[path.length] = obj.id; - var scriptId = $ax.getScriptIdFromPath(pathCopy); - // Rdo have no element on page and are not mapped to the repeater - if(repeaterId) mapScriptIdToRepeaterId(scriptId, repeaterId); - - if($ax.public.fn.IsDynamicPanel(obj.type)) { - for(var j = 0; j < obj.diagrams.length; j++) mapIdsToRepeaterAndLayer(path, obj.diagrams[j].objects, repeaterId); - } else if($ax.public.fn.IsReferenceDiagramObject(obj.type)) { - mapIdsToRepeaterAndLayer(pathCopy, $ax.pageData.masters[obj.masterId].diagram.objects, repeaterId); - } else if($ax.public.fn.IsRepeater(obj.type)) { - mapScriptIdToRepeaterId(scriptId, scriptId); - mapIdsToRepeaterAndLayer(path, obj.objects, scriptId); - } else if($ax.public.fn.IsLayer(obj.type)) { - var layerObjs = obj.objs; - for(var j = 0; j < layerObjs.length; j++) { - mapScriptIdToLayerId(layerObjs[j], scriptId, path); - } - mapIdsToRepeaterAndLayer(path, layerObjs, repeaterId); - } else if(obj.objects && obj.objects.length) { - if(repeaterId) { - for(var j = 0; j < obj.objects.length; j++) { - mapIdsToRepeaterAndLayer(path, obj.objects, repeaterId); - } - } - } - } - }; - mapIdsToRepeaterAndLayer([], $ax.pageData.page.diagram.objects); - }; - - - $ax.getPathFromScriptId = function(scriptId) { - var reversedPath = []; - var path = scriptIdToPath[scriptId]; - while(path && path.uniqueId) { - reversedPath[reversedPath.length] = path.uniqueId; - path = path.parent; - } - return reversedPath.reverse(); - }; - - var _getScriptIdFromFullPath = function(path) { - var current = $ax.pageData.objectPaths; - for(var i = 0; i < path.length; i++) { - current = current[path[i]]; - if(!current) return current; - } - return current && current.scriptId; - }; - - - var _getScriptIdFromPath = function(path, relativeTo, includeLimbo) { - var relativePath = []; - var includeMasterInPath = false; - if(relativeTo) { - var relativeToScriptId; - if(relativeTo.srcElement) { //this is eventInfo - relativeToScriptId = $ax.repeater.getScriptIdFromElementId(relativeTo.srcElement); - includeMasterInPath = relativeTo.isMasterEvent; - } else if(typeof relativeTo === 'string') { //this is an element id - relativeToScriptId = relativeTo; - } - - if(relativeToScriptId) { - relativePath = $ax.getPathFromScriptId(relativeToScriptId); - if(!includeMasterInPath) relativePath = relativePath.slice(0, relativePath.length - 1); - } else if(relativeTo instanceof Array) { //this is a path - relativePath = relativeTo; - } - } - var fullPath = relativePath.concat(path); - var scriptId = _getScriptIdFromFullPath(fullPath); - return (includeLimbo || !$ax.visibility.isScriptIdLimbo(scriptId)) && scriptId; - }; - $ax.getScriptIdFromPath = _getScriptIdFromPath; - - var _getElementIdsFromPath = function(path, eventInfo) { - var scriptId = _getScriptIdFromPath(path, eventInfo); - if(!scriptId) return []; - // Don't need placed check hear. If unplaced, scriptId will be undefined and exit out before here. - return $ax.getElementIdsFromEventAndScriptId(eventInfo, scriptId); - }; - $ax.getElementIdsFromPath = _getElementIdsFromPath; - - var _getElementIdFromPath = function(path, params, includeLimbo) { - var scriptId = _getScriptIdFromPath(path, params.relativeTo, includeLimbo); - if(!scriptId) return scriptId; - - var itemNum = params.itemNum; - if(params.relativeTo && typeof params.relativeTo === 'string') { - if($jobj(params.relativeTo)) itemNum = $ax.repeater.getItemIdFromElementId(params.relativeTo); - } - return $ax.repeater.createElementId(scriptId, itemNum); - }; - $ax.getElementIdFromPath = _getElementIdFromPath; - - var _getElementsIdFromEventAndScriptId = function(eventInfo, scriptId) { - var itemId = eventInfo && $ax.repeater.getItemIdFromElementId(eventInfo.srcElement); - var target = false; - // Try to get itemId from target if you can't get it from source. - if(!itemId) { - itemId = eventInfo && eventInfo.targetElement && $ax.repeater.getItemIdFromElementId(eventInfo.targetElement); - if(itemId) target = true; - } - - var parentRepeater = $ax.getParentRepeaterFromScriptId(scriptId); - if(parentRepeater && scriptId != parentRepeater) { - if(itemId && (!eventInfo || parentRepeater == $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(target ? eventInfo.targetElement : eventInfo.srcElement)))) { - return [$ax.repeater.createElementId(scriptId, itemId)]; - } - var elementIds = []; - var itemIds = $ax.getItemIdsForRepeater(parentRepeater); - if(!itemIds) return []; - - for(var i = 0; i < itemIds.length; i++) elementIds[i] = $ax.repeater.createElementId(scriptId, itemIds[i]); - return elementIds; - } - return [scriptId]; - }; - $ax.getElementIdsFromEventAndScriptId = _getElementsIdFromEventAndScriptId; - - var _getSrcElementIdFromEvent = function(event) { - var currentQuery = $(event.srcElement || event.target); - while(currentQuery && currentQuery.length && (!$obj(currentQuery.attr('id')) || $jobj(currentQuery.attr('id')).hasClass('text'))) { - currentQuery = currentQuery.parent(); - }; - return currentQuery.attr('id'); - }; - $ax.getSrcElementIdFromEvent = _getSrcElementIdFromEvent; - - var _getEventInfoFromEvent = function(event, skipShowDescriptions, elementId) { - var eventInfo = {}; - eventInfo.srcElement = elementId; - eventInfo.now = new Date(); - - if(event != null) { - //elementId can be empty string, so can't simple use "or" assignment here. - eventInfo.srcElement = elementId || elementId == '' ? elementId : _getSrcElementIdFromEvent(event); - eventInfo.which = event.which; - - // When getting locations in mobile, need to extract the touch object to get the mouse location attributes - var mouseEvent = (event.originalEvent && event.originalEvent.changedTouches && event.originalEvent.changedTouches[0]) || event.originalEvent; - if(mouseEvent && !mouseEvent.type) mouseEvent.type = event.type; - - if(skipShowDescriptions) eventInfo.skipShowDescriptions = true; - - // Always update mouse location if possible - $ax.event.updateMouseLocation(mouseEvent); - } - - // Always set event info about cursor - var _cursor = eventInfo.cursor = {}; - _cursor.x = $ax.mouseLocation.x; - _cursor.y = $ax.mouseLocation.y; - - var body = $('body'); - if(body.css('position') == 'relative') { - _cursor.x -= ($ax.getNumFromPx(body.css('left')) + Math.max(0, ($(window).width() - body.width()) / 2)); - } - - eventInfo.pageX = _cursor.x + 'px'; - eventInfo.pageY = _cursor.y + 'px'; - - // Do Keyboard Info - eventInfo.keyInfo = $ax.event.keyState(); - - eventInfo.window = $ax.getWindowInfo(); - - eventInfo.thiswidget = _getWidgetInfo(eventInfo.srcElement); - eventInfo.item = _getItemInfo(eventInfo.srcElement); - eventInfo.dragInfo = $ax.drag.GetWidgetDragInfo(); - - return eventInfo; - }; - $ax.getEventInfoFromEvent = _getEventInfoFromEvent; - - $ax.getBasicEventInfo = function() { - var eventInfo = {}; - eventInfo.now = new Date(); - eventInfo.window = $ax.getWindowInfo(); - eventInfo.cursor = { x: 0, y: 0}; - return eventInfo; - - }; - - //var _getWindowInfo = function() { - // var win = {}; - // win.width = $(window).width(); - // win.height = $(window).height(); - // win.scrollx = $(window).scrollLeft(); - // win.scrolly = $(window).scrollTop(); - // return win; - //}; - //$ax.getWindowInfo = _getWindowInfo; - - var repeaterInfoCache = []; - $ax.cacheRepeaterInfo = function(repeaterId, repeaterInfo) { - repeaterInfoCache[repeaterId] = repeaterInfo; - } - $ax.removeCachedRepeaterInfo = function(repeaterId) { - repeaterInfoCache[repeaterId] = undefined; - } - - var _getItemInfo = function(elementId) { - if(!elementId) return { valid: false }; - - elementId = _getParentElement(elementId); - - var index = $ax.repeater.getItemIdFromElementId(elementId); - if(!index) return { valid: false }; - - var item = { valid: true }; - - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId); - item.repeater = repeaterInfoCache[repeaterId] ? repeaterInfoCache[repeaterId] : _getWidgetInfo(repeaterId); - $ax.repeater.setDisplayProps(item, repeaterId, index); - item.ismarked = $ax.repeater.isEditItem(repeaterId, index); - item.isvisible = Boolean($jobj(elementId).length); - - return item; - }; - $ax.getItemInfo = _getItemInfo; - - var _getWidgetInfo = function(elementId) { - if(!elementId) return { valid: false }; - - elementId = _getParentElement(elementId); - - //var elementAxQuery = $ax('#' + elementId); - var elementQuery = $jobj(elementId); - var obj = $obj(elementId); - var widget = { valid: true, isWidget: true, obj: obj, elementQuery: elementQuery, isLayer: $ax.public.fn.IsLayer(obj.type) }; - widget.elementId = elementId; - widget.name = widget.label = (elementQuery.data('label') ? elementQuery.data('label') : ''); - //widget.text = $ax('#' + elementId).text(); - widget.opacity = Number(elementQuery.css('opacity')) * 100; - //widget.rotation = $ax.move.getRotationDegree(widget.elementId); - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId); - if(repeaterId) widget.repeater = $ax.public.fn.IsRepeater(obj.type) ? widget : _getWidgetInfo(repeaterId); - - // Right now only dynamic panel can scroll - if($ax.public.fn.IsDynamicPanel(obj.type)) { - var stateId = $ax.visibility.GetPanelState(elementId); - //can be empty when refreshing repeater and applying filter - if(stateId) { - var stateQuery = $('#' + stateId); - widget.scrollx = stateQuery.scrollLeft(); - widget.scrolly = stateQuery.scrollTop(); - //widget.stateQuery = stateQuery; - } - } else { - widget.scrollx = 0; - widget.scrolly = 0; - } - - // repeater only props - if($ax.public.fn.IsRepeater(obj.type)) { - widget.visibleitemcount = repeaterIdToItemIds[scriptId] ? repeaterIdToItemIds[scriptId].length : $ax.repeater.getVisibleDataCount(scriptId); - widget.itemcount = $ax.repeater.getFilteredDataCount(scriptId); - widget.datacount = $ax.repeater.getDataCount(scriptId); - widget.pagecount = $ax.repeater.getPageCount(scriptId); - widget.pageindex = $ax.repeater.getPageIndex(scriptId); - } - - // Get widget info funcs - //widget.elementAxQuery = function () { - // return this.elementAxQueryProp || (this.elementAxQueryProp = $ax('#' + this.elementId)); - //} - - //widget.isFitToContent = function () { - // if (this.isFitToContentProp === undefined) { - // if (!this.stateQuery) this.isFitToContentProp = false; - // else this.isFitToContentProp = $ax.dynamicPanelManager.isIdFitToContent(this.elementId); - // } - // return this.isFitToContentProp; - //} - - widget.x = function () { return this.getProp('x'); } - widget.y = function () { return this.getProp('y'); } - widget.pagex = function () { return this.getProp('pagex'); } - widget.pagey = function () { return this.getProp('pagey'); } - widget.width = function () { return this.getProp('width'); } - widget.height = function () { return this.getProp('height'); } - widget.left = function () { return this.x(); } - widget.top = function () { return this.y(); } - widget.right = function () { return this.x() + this.width(); } - widget.bottom = function () { return this.y() + this.height(); } - widget.rotation = function () { return this.getProp('rotation'); } - widget.text = function () { return this.getProp('text'); } - - widget.getProp = function (prop) { - var propName = prop + 'Prop'; - if (typeof (this[propName]) != 'undefined') return this[propName]; - return this[propName] = this.cacheProp(prop); - }; - - widget.cacheProp = function (prop) { - - if(prop == 'x' || prop == 'y' || prop == 'width' || prop == 'height') { - var boundingRect = $ax('#' + this.elementId).offsetBoundingRect(true); - this.xProp = boundingRect.left; - this.yProp = boundingRect.top; - this.widthProp = boundingRect.width; - this.heightProp = boundingRect.height; - } - - if(prop == 'pagex' || prop == 'pagey') { - var viewportLocation = $ax('#' + this.elementId).viewportLocation(); - this.pagexProp = viewportLocation.left; - this.pageyProp = viewportLocation.top; - } - - if(prop == 'rotation') { - this.rotationProp = $ax.move.getRotationDegree(this.elementId); - } - - if (prop == 'text') { - this.textProp = $ax('#' + this.elementId).text(); - } - - return this[prop + 'Prop']; - - //// I'm keeping the returned undefineds the same as before, but really I could probably return undefined right away if elementQuery is empty - //if (this.isLayer) { - // if (prop == 'pagex' || prop == 'pagey') { - // if (this.elementQuery.length > 0) { - // if (prop == 'pagex') return this.elementAxQuery().left(); - // else return this.elementAxQuery().top(); - // } - // return undefined; // Otherwise, it is undefined as there is no element - // } - // var boundingRect = $ax.public.fn.getWidgetBoundingRect(this.elementId); - // this.xProp = boundingRect.left; - // this.yProp = boundingRect.top; - // this.widthProp = boundingRect.width; - // this.heightProp = boundingRect.height; - // return this[prop + 'Prop']; - //} - - //if (this.elementQuery.length <= 0) return prop == 'x' || prop == 'y' ? 0 : undefined; - - //switch (prop) { - // case 'x': return this.elementAxQuery().locRelativeIgnoreLayer(false); - // case 'y': return this.elementAxQuery().locRelativeIgnoreLayer(true); - // case 'pagex': return this.elementAxQuery().left(); - // case 'pagey': return this.elementAxQuery().top(); - //} - - //var val = this.elementAxQuery()[prop](); - //if (this.isFitToContent()) val = this.stateQuery[prop](); - - //return val; - }; - - //widget.leftfixed = function() { this.getFixed('left'); } - //widget.topfixed = function() { this.getFixed('top'); } - //widget.rightfixed = function() { this.getFixed('right'); } - //widget.bottomfixed = function() { this.getFixed('bottom'); } - - //widget.isFixed = function() { - // if(this.isFixedProp === undefined) this.isFixedProp = this.elementQuery.css('position') == 'fixed)'; - // return this.isFixedProp; - //} - - //widget.getFixed = function (prop) { - // var fixed = prop + 'fixedProp'; - // if(!this.isFixed()) widget[fixed] = widget[prop](); - // if(widget[fixed] === undefined) { - - // if(prop == 'left' || prop == 'right') { - // if(this.windowScrollX === undefined) this.windowScrollX = $(window).scrollLeft(); - // var windowScroll = this.windowScrollX; - // } else { - // if(this.windowScrollY === undefined) this.windowScrollY = $(window).scrollTop(); - // windowScroll = this.windowScrollY; - // } - // widget[fixed] = widget[prop]() - windowScroll; - // } - // return widget[fixed]; - //} - - return widget; - }; - $ax.getWidgetInfo = _getWidgetInfo; - - $ax.GetTextPanelId = function (id, create) { - if(!$ax('#' + id).SupportsRichText()) return ''; - var buttonShape = $ax.GetButtonShape(id); - var panelDiv = buttonShape.find('.text')[0]; - if(!panelDiv) { - if(!create) return ""; - - var adaptiveId = $ax.adaptive.currentViewId; - var newId = id + "_text"; - //var newDiv = $('
    '); - var newDiv = $('

    '); - buttonShape.append(newDiv); - - $ax.style.setAdaptiveStyle(id, $ax.style.computeAllOverrides(id, undefined, $ax.style.generateState(id), adaptiveId)); - - panelDiv = newDiv[0]; - } - - return panelDiv.id; - } - - $ax.GetParentIdFromLink = function(id) { - return $ax.GetShapeIdFromText($jobj(id).parentsUntil('.text').parent().attr('id')); - }; - - $ax.GetButtonShapeId = function(id) { - var obj = $obj(id); - switch(obj.type) { - case $ax.constants.TREE_NODE_OBJECT_TYPE: - return obj.buttonShapeId ? $ax.getElementIdFromPath([obj.buttonShapeId], { relativeTo: id }) : ""; - case $ax.constants.LINK_TYPE: - return ""; - default: - return id; - } - }; - - $ax.GetButtonShape = function(id) { - return $jobj($ax.GetButtonShapeId(id)); - }; - - $ax.GetShapeIdFromText = function(id) { - if(!id) return undefined; // this is to prevent an infinite loop. - - var current = document.getElementById(id); - if(!current) return undefined; - current = current.parentElement; - while(current && current.tagName != 'BODY') { - var currentId = current.id; - if(currentId && currentId != 'base') return $ax.visibility.getWidgetFromContainer(currentId); - current = current.parentElement; - } - - return undefined; - }; - - $ax.GetImageIdFromShape = function(id) { - var image = $ax.GetButtonShape(id).find('img[id$=img]'); - if(!image.length) image = $jobj(id).find('img[id$=image_sketch]'); - return image.attr('id'); - }; - - var _getParentElement = $ax.getParentElement = function(elementId) { - var obj = $obj(elementId); - while(obj.isContained) { - var path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); - var itemId = $ax.repeater.getItemIdFromElementId(elementId); - path[path.length - 1] = obj.parent.id; - elementId = $ax.getElementIdFromPath(path, { itemNum: itemId }); - obj = $obj(elementId); - } - - return elementId; - }; - - $ax.addItemIdToRepeater = function(itemId, repeaterId) { - var itemIds = repeaterIdToItemIds[repeaterId]; - if(itemIds) itemIds[itemIds.length] = itemId; - else repeaterIdToItemIds[repeaterId] = [itemId]; - - var scriptIds = repeaterIdToScriptIds[repeaterId]; - for(var i = 0; i < scriptIds.length; i++) elementIdToObject[$ax.repeater.createElementId(scriptIds[i], itemId)] = $ax.getObjectFromScriptId(scriptIds[i]); - }; - - $ax.getAllElementIds = function() { - var elementIds = []; - for(var i = 0; i < _scriptIds.length; i++) { - var scriptId = _scriptIds[i]; - var repeaterId = scriptIdToRepeaterId[scriptId]; - if(repeaterId && repeaterId != scriptId) { - var itemIds = repeaterIdToItemIds[repeaterId] || []; - for(var j = 0; j < itemIds.length; j++) elementIds[elementIds.length] = $ax.repeater.createElementId(scriptId, itemIds[j]); - } else elementIds[elementIds.length] = scriptId; - } - return elementIds; - }; - - $ax.getAllScriptIds = function() { - return _scriptIds; - }; - - $ax.getObjectFromElementId = function(elementId) { - return $ax.getObjectFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); - }; - - $ax.getObjectFromScriptId = function(scriptId) { - return scriptIdToObject[scriptId]; - }; - - $ax.getParentRepeaterFromElementId = function(elementId) { - return $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); - }; - - $ax.getParentRepeaterFromElementIdExcludeSelf = function (elementId) { - var repeaterId = $ax.getParentRepeaterFromElementId(elementId); - return repeaterId != elementId ? repeaterId : undefined; - }; - - $ax.getParentRepeaterFromScriptId = function(scriptId) { - return scriptIdToRepeaterId[scriptId]; - }; - - var _getChildScriptIdsForRepeater = function(repeaterId) { - return repeaterIdToScriptIds[repeaterId]; - }; - - var _getItemIdsForRepeater = function(repeaterId) { - return repeaterIdToItemIds[repeaterId] || []; - }; - $ax.getItemIdsForRepeater = _getItemIdsForRepeater; - - var _clearItemIdsForRepeater = function(repeaterId) { - repeaterIdToItemIds[repeaterId] = []; - }; - $ax.clearItemsForRepeater = _clearItemIdsForRepeater; - - $ax.getChildElementIdsForRepeater = function(repeaterId) { - var scriptIds = _getChildScriptIdsForRepeater(repeaterId); - var itemIds = _getItemIdsForRepeater(repeaterId); - - var retVal = []; - if(!itemIds || !scriptIds) return retVal; - - for(var i = 0; i < scriptIds.length; i++) { - for(var j = 0; j < itemIds.length; j++) { - retVal[retVal.length] = $ax.repeater.createElementId(scriptIds[i], itemIds[j]); - } - } - return retVal; - }; - - $ax.getRdoParentFromElementId = function(elementId) { - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - var rdoId = scriptIdToPath[scriptId].parent.scriptId; - if($ax.getParentRepeaterFromScriptId(rdoId)) rdoId = $ax.repeater.createElementId(rdoId, $ax.repeater.getItemIdFromElementId(elementId)); - return rdoId; - }; - - $ax.getLayerParentFromElementId = function (elementId) { - var itemId = $ax.repeater.getItemIdFromElementId(elementId); - var scriptId = scriptIdToParentLayer[$ax.repeater.getScriptIdFromElementId(elementId)]; - return $ax.getParentRepeaterFromElementId(scriptId) ? $ax.repeater.createElementId(scriptId, itemId) : scriptId; - } - - $ax.updateElementText = function(elementId, text) { - elementIdToText[elementId] = text; - }; - - $ax.hasElementTextChanged = function(elementId, text) { - return elementIdToText[elementId] != text; - }; - - $ax.updateRadioButtonSelected = function(group, elementId) { - var old = radioGroupToSelectedElementId[group]; - radioGroupToSelectedElementId[group] = elementId; - return old; - }; - - $ax.hasRadioButtonSelectedChanged = function(group, elementId) { - return radioGroupToSelectedElementId[group] != elementId; - }; - })(); - - //Recursively populates fullPathArray with: - // [ { idPath, scriptId }, ... ] - //for every scriptId in the object - //also populates an object of scriptId -> path - var _pathToScriptIdHelper = function(currentPath, currentChain, fullPathArray, scriptIdToPath) { - for(var key in currentPath) { - if(key != "scriptId") { - var nextPath = currentPath[key]; - _pathToScriptIdHelper(nextPath, currentChain.concat(key), fullPathArray, scriptIdToPath); - nextPath.parent = currentPath; - nextPath.uniqueId = key; - } else { - fullPathArray[fullPathArray.length] = { idPath: currentChain, scriptId: currentPath.scriptId }; - scriptIdToPath[currentPath.scriptId] = currentPath; - } - } - }; - - $ax.public.loadCurrentPage = $ax.loadCurrentPage = function(pageData) { - $ax.pageData = _pageData = pageData; - _initializePageData(); - }; - - $ax.public.loadDocument = $ax.loadDocument = function(document) { - $ax.document = document; - _initializeDocumentData(); - }; - - - /** - Navigates to a page - - - */ - $ax.public.navigate = $ax.navigate = function(to) { //url, includeVariables, type) { - var targetUrl; - if(typeof (to) === 'object') { - targetUrl = !to.includeVariables ? to.url : $ax.globalVariableProvider.getLinkUrl(to.url, to.useGlobalVarNameInUrl); - - if(to.target == "new") { - window.open(targetUrl, ""); - } else if(to.target == "popup") { - var features = _getPopupFeatures(to.popupOptions); - window.open(targetUrl, "", features); - } else { - var targetLocation = window.location; - if(to.target == "current") { - } else if(to.target == "parent") { - if(!top.opener) return; - targetLocation = top.opener.window.location; - } else if(to.target == "parentFrame") { - targetLocation = parent.location; - } else if(to.target == "frame") { - // targetLocation = to.frame.contentWindow.location; - $(to.frame).attr('src', targetUrl || 'about:blank'); - return; - } - - if (!_needsReload(targetLocation, to.url)) { - targetLocation.href = targetUrl || 'about:blank'; - } else { - targetLocation.href = $axure.utils.getReloadPath() + "#" + encodeURI(targetUrl); - } - } - } else { - $ax.navigate({ - url: to, - target: "current", - includeVariables: arguments[1] - }); - } - }; - - var _needsReload = function(oldLocation, newBaseUrl) { - var reload = false; - try { - var oldUrl = oldLocation.href; - var oldBaseUrl = oldUrl.split("#")[0]; - var lastslash = oldBaseUrl.lastIndexOf("/"); - if(lastslash > 0) { - oldBaseUrl = oldBaseUrl.substring(lastslash + 1, oldBaseUrl.length); - if(oldBaseUrl == encodeURI(newBaseUrl)) { - reload = true; - } - } - } catch(e) { - } - return reload; - }; - - var _getPopupFeatures = function(options) { - var defaultOptions = { - toolbar: true, - scrollbars: true, - location: true, - status: true, - menubar: true, - directories: true, - resizable: true, - centerwindow: true, - left: -1, - top: -1, - height: -1, - width: -1 - }; - - var selectedOptions = $.extend({}, defaultOptions, options); - - var optionsList = []; - optionsList.push('toolbar=' + (selectedOptions.toolbar ? 'yes' : 'no')); - optionsList.push('scrollbars=' + (selectedOptions.scrollbars ? 'yes' : 'no')); - optionsList.push('location=' + (selectedOptions.location ? 'yes' : 'no')); - optionsList.push('status=' + (selectedOptions.status ? 'yes' : 'no')); - optionsList.push('menubar=' + (selectedOptions.menubar ? 'yes' : 'no')); - optionsList.push('directories=' + (selectedOptions.directories ? 'yes' : 'no')); - optionsList.push('resizable=' + (selectedOptions.resizable ? 'yes' : 'no')); - - if(selectedOptions.centerwindow == false) { - if(selectedOptions.left > -1) { - optionsList.push('left=' + selectedOptions.left); - } - - if(selectedOptions.top > -1) { - optionsList.push('top=' + selectedOptions.top); - } - } - - var height = 0; - var width = 0; - if(selectedOptions.height > 0) { - optionsList.push('height=' + selectedOptions.height); - height = selectedOptions.height; - } - - if(selectedOptions.width > 0) { - optionsList.push('width=' + selectedOptions.width); - width = selectedOptions.width; - } - - var features = optionsList.join(','); - if(selectedOptions.centerwindow) { - var winl = (window.screen.width - width) / 2; - var wint = (window.screen.height - height) / 2; - features = features + ',left=' + winl + ',top=' + wint; - } - - return features; - }; - - /** - Closes a window - - - */ - $ax.public.closeWindow = $ax.closeWindow = function() { - parent.window.close(); - }; - - /** - Goes back - - - */ - $ax.public.back = $ax.back = function() { - window.history.go(-1); - }; - - /** - Reloads the current page. - # includeVariables: true if it should re-include the variables when the page is reloaded - */ - $ax.public.reload = $ax.reload = function(includeVariables) { - var targetUrl = (includeVariables === false) - ? $axure.utils.getReloadPath() + "#" + encodeURI($ax.pageData.url) - : $axure.utils.getReloadPath() + "#" + encodeURI($ax.globalVariableProvider.getLinkUrl($ax.pageData.url)); - window.location.href = targetUrl; - }; - - /** - Sets a variable. - # name: The name of the global variable to set - # value: The value that should be set - */ - $ax.public.setGlobalVariable = $ax.setGlobalVariable = function(name, value) { - if(!name || !value) { - return; - } - - $ax.globalVariableProvider.setVariableValue(name, value); - }; - - /** - Gets the value of a global variable - # name: The name of the global variable value to get - */ - $ax.public.getGlobalVariable = $ax.getGlobalVariable = function(name) { - $ax.globalVariableProvider.getVariableValue(name); - }; - - $ax.getObjectFromElementIdDisregardHex = function (elementId) { - var elementIdInput = elementId.charAt(0) == '#' ? elementId.substring(1) : elementId; - return this.getObjectFromElementId(elementIdInput); - } - - - $ax.getTypeFromElementId = function(elementId) { - var obj = this.getObjectFromElementIdDisregardHex(elementId); - return obj && obj.type; - }; - - $ax.getNumFromPx = function(pxNum) { - return Number(pxNum.replace('px', '')); - } - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/drag.js b/web/main/static/resources/scripts/axure/drag.js deleted file mode 100644 index da15742..0000000 --- a/web/main/static/resources/scripts/axure/drag.js +++ /dev/null @@ -1,278 +0,0 @@ -$axure.internal(function($ax) { - var widgetDragInfo = new Object(); - var _drag = {}; - $ax.drag = _drag; - - $ax.drag.GetWidgetDragInfo = function() { - return $.extend({}, widgetDragInfo); - }; - - $ax.drag.StartDragWidget = function(event, id) { - $ax.setjBrowserEvent(jQuery.Event(event)); - //we should only start drag on one target, otherwise the _dragWidget and _stopDragWidget events from multiple targets will be conflicted - if(event.donotdrag || widgetDragInfo.started) return; - - var x, y; - var tg; - if(IE_10_AND_BELOW) { - x = window.event.clientX + window.document.documentElement.scrollLeft + window.document.body.scrollLeft; - y = window.event.clientY + window.document.documentElement.scrollTop + window.document.body.scrollTop; - tg = window.event.srcElement; - } else { - if(event.changedTouches) { - x = event.changedTouches[0].pageX; - y = event.changedTouches[0].pageY; - } else { - x = event.pageX; - y = event.pageY; - event.preventDefault(); - } - tg = event.target; - } - - widgetDragInfo.started = true; - widgetDragInfo.hasDragged= false; - widgetDragInfo.widgetId = id; - widgetDragInfo.cursorStartX = x; - widgetDragInfo.cursorStartY = y; - widgetDragInfo.lastX = x; - widgetDragInfo.lastY = y; - widgetDragInfo.currentX = x; - widgetDragInfo.currentY = y; - - widgetDragInfo.movedWidgets = new Object(); - widgetDragInfo.startTime = (new Date()).getTime(); - widgetDragInfo.targetWidget = tg; - - var movedownName = IE_10_AND_BELOW && $ax.features.supports.windowsMobile ? - $ax.features.eventNames.mouseDownName : $ax.features.eventNames.mouseMoveName; - $ax.event.addEvent(document, movedownName, _dragWidget, true); - $ax.event.addEvent(document, $ax.features.eventNames.mouseUpName, _stopDragWidget, true); - - //$ax.legacy.SuppressBubble(event); - }; - - var _dragWidget = function(event) { - $ax.setjBrowserEvent(jQuery.Event(event)); - - var x, y; - if(IE_10_AND_BELOW) { - x = window.event.clientX + window.document.documentElement.scrollLeft + window.document.body.scrollLeft; - y = window.event.clientY + window.document.documentElement.scrollTop + window.document.body.scrollTop; - } else { - if(event.changedTouches) { - x = event.changedTouches[0].pageX; - y = event.changedTouches[0].pageY; - //allow scroll (defaults) if only swipe events have cases and delta x is less than 5px and not blocking scrolling - var deltaX = x - widgetDragInfo.currentX; - var target = window.document.getElementById(widgetDragInfo.widgetId); - if($ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onDrag") || $ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onSwipeUp") || - $ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onSwipeDown") || (deltaX * deltaX) > 25 - || ($ax.document.configuration.preventScroll && $ax.legacy.GetScrollable(target) == window.document.body)) { - event.preventDefault(); - } - } else { - x = event.pageX; - y = event.pageY; - } - } - widgetDragInfo.xDelta = x - widgetDragInfo.currentX; - widgetDragInfo.yDelta = y - widgetDragInfo.currentY; - widgetDragInfo.lastX = widgetDragInfo.currentX; - widgetDragInfo.lastY = widgetDragInfo.currentY; - widgetDragInfo.currentX = x; - widgetDragInfo.currentY = y; - - widgetDragInfo.currentTime = (new Date()).getTime(); - - // $ax.legacy.SuppressBubble(event); - - if(!widgetDragInfo.hasDragged) { - widgetDragInfo.hasDragged = true; - $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDragStart"); - - //only update to move cursor is we are moving objects - if($ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onDrag")) { - widgetDragInfo.cursorChanged = true; - widgetDragInfo.oldBodyCursor = window.document.body.style.cursor; - window.document.body.style.cursor = 'move'; - var widget = window.document.getElementById(widgetDragInfo.widgetId); - widgetDragInfo.oldCursor = widget.style.cursor; - widget.style.cursor = 'move'; - //need to do this in order to change the cursor under nice scroll - var niceScrollContainer = $ax.adaptive.getNiceScrollContainer(widget); - if(niceScrollContainer) { - widgetDragInfo.oldNiceScrollContainerCursor = niceScrollContainer.style.cursor; - niceScrollContainer.style.cursor = 'move'; - } - } - } - - $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDrag"); - }; - - var _suppressClickAfterDrag = function(event) { - _removeSuppressEvents(); - - $ax.legacy.SuppressBubble(event); - }; - - var _removeSuppressEvents = function () { - if(IE_10_AND_BELOW) { - $ax.event.removeEvent(event.srcElement, 'click', _suppressClickAfterDrag, undefined, true); - $ax.event.removeEvent(widgetDragInfo.targetWidget, 'mousemove', _removeSuppressEvents, undefined, true); - } else { - $ax.event.removeEvent(document, "click", _suppressClickAfterDrag, true); - $ax.event.removeEvent(document, 'mousemove', _removeSuppressEvents, true); - } - }; - - var _stopDragWidget = function(event) { - $ax.setjBrowserEvent(jQuery.Event(event)); - - var tg; - - - var movedownName = IE_10_AND_BELOW && $ax.features.supports.windowsMobile ? - $ax.features.eventNames.mouseDownName : $ax.features.eventNames.mouseMoveName; - $ax.event.removeEvent(document, movedownName, _dragWidget, true); - $ax.event.removeEvent(document, $ax.features.eventNames.mouseUpName, _stopDragWidget, true); - - tg = IE_10_AND_BELOW ? window.event.srcElement : event.target; - - if(widgetDragInfo.hasDragged) { - widgetDragInfo.currentTime = (new Date()).getTime(); - $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDragDrop"); - - if($ax.globalVariableProvider.getVariableValue('totaldragx') < -30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { - $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeLeft"); - } - - if($ax.globalVariableProvider.getVariableValue('totaldragx') > 30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { - $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeRight"); - } - - var totalDragY = $ax.globalVariableProvider.getVariableValue('totaldragy'); - if(totalDragY < -30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { - $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeUp"); - } - - if(totalDragY > 30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { - $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeDown"); - } - - if(widgetDragInfo.cursorChanged) { - window.document.body.style.cursor = widgetDragInfo.oldBodyCursor; - var widget = window.document.getElementById(widgetDragInfo.widgetId); - // It may be null if OnDragDrop filtered out the widget - if(widget != null) widget.style.cursor = widgetDragInfo.oldCursor; - //we don't seems need to reset nicescroll cursor on container, nicescroll seems updates its cursor - // if(widgetDragInfo.oldNiceScrollContainerCursor != undefined) { - // var niceScrollContainer = $ax.adaptive.getNiceScrollContainer(widget); - // if(niceScrollContainer) niceScrollContainer.style.cursor = widgetDragInfo.oldNiceScrollContainerCursor; - // widgetDragInfo.oldNiceScrollContainerCursor = undefined; - // } - widgetDragInfo.cursorChanged = undefined; - } - - if(widgetDragInfo.targetWidget == tg && !event.changedTouches) { - // suppress the click after the drag on desktop browsers - if(IE_10_AND_BELOW && widgetDragInfo.targetWidget) { - $ax.event.addEvent(widgetDragInfo.targetWidget, 'click', _suppressClickAfterDrag, true, true); - $ax.event.addEvent(widgetDragInfo.targetWidget, "onmousemove", _removeSuppressEvents, true, true); - } else { - $ax.event.addEvent(document, "click", _suppressClickAfterDrag, true); - $ax.event.addEvent(document, "mousemove", _removeSuppressEvents, true); - - } - } - } - - widgetDragInfo.hasDragged = false; - widgetDragInfo.movedWidgets = new Object(); - widgetDragInfo.started = false; - - return false; - }; - - $ax.drag.GetDragX = function() { - if(widgetDragInfo.hasDragged) return widgetDragInfo.xDelta; - return 0; - }; - - $ax.drag.GetDragY = function() { - if(widgetDragInfo.hasDragged) return widgetDragInfo.yDelta; - return 0; - }; - - $ax.drag.GetTotalDragX = function() { - if(widgetDragInfo.hasDragged) return widgetDragInfo.currentX - widgetDragInfo.cursorStartX; - return 0; - }; - - $ax.drag.GetTotalDragY = function() { - if(widgetDragInfo.hasDragged) return widgetDragInfo.currentY - widgetDragInfo.cursorStartY; - return 0; - }; - - $ax.drag.GetDragTime = function() { - if(widgetDragInfo.hasDragged) return widgetDragInfo.currentTime - widgetDragInfo.startTime; - return 600000; - }; - - $ax.drag.LogMovedWidgetForDrag = function (id, dragInfo) { - dragInfo = dragInfo || widgetDragInfo; - if(dragInfo.hasDragged) { - var containerIndex = id.indexOf('_container'); - if(containerIndex != -1) id = id.substring(0, containerIndex); - - // If state or other non-widget id, this should not be dragged, and should exit out to avoid exceptions. - if(!$obj(id)) return; - - var query = $ax('#' + id); - //var x = query.left(); - //var y = query.top(); - var viewportLocation = query.viewportLocation(); - var x = viewportLocation.left; - var y = viewportLocation.top; - - var movedWidgets = dragInfo.movedWidgets; - if(!movedWidgets[id]) { - movedWidgets[id] = new Location(x, y); - } - } - }; - - var Location = function(x, y) { - this.x = x; - this.y = y; - }; - $ax.drag.location = Location; - - var Rectangle = $ax.drag.Rectangle = function(x, y, width, height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.right = x + width; - this.bottom = y + height; - }; - - Rectangle.prototype.IntersectsWith = function(rect) { - if(this.Invalid()) return false; - if(rect.length) { - for(var i = 0; i < rect.length; i++) if(!rect[i].Invalid && this.IntersectsWith(rect[i])) return true; - return false; - } - if(rect.Invalid()) return false; - return this.x < rect.right && this.right > rect.x && this.y < rect.bottom && this.bottom > rect.y; - }; - - Rectangle.prototype.Invalid = function() { - return this.x == -1 && this.y == -1 && this.width == -1 && this.height == -1; - }; - - Rectangle.prototype.Move = function(x, y) { - return new Rectangle(x, y, this.width, this.height); - }; -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/events.js b/web/main/static/resources/scripts/axure/events.js deleted file mode 100644 index eade1fa..0000000 --- a/web/main/static/resources/scripts/axure/events.js +++ /dev/null @@ -1,1996 +0,0 @@ -// ******* Features MANAGER ******** // - -$axure.internal(function($ax) { - var _features = $ax.features = {}; - var _supports = _features.supports = {}; - - // Got this from http://stackoverflow.com/questions/11381673/javascript-solution-to-detect-mobile-browser - let isMobile = navigator.userAgent.match(/Android/i) - || navigator.userAgent.match(/webOS/i) - || navigator.userAgent.match(/iPhone/i) - || navigator.userAgent.match(/iPad/i) - || navigator.userAgent.match(/iPod/i) - || navigator.userAgent.match(/BlackBerry/i) - || navigator.userAgent.match(/Tablet PC/i) - || navigator.userAgent.match(/Windows Phone/i); - - if(isMobile || navigator.maxTouchPoints || navigator.msMaxTouchPoints) { - _supports.touchstart = typeof window.ontouchstart !== 'undefined'; - _supports.touchmove = typeof window.ontouchmove !== 'undefined'; - _supports.touchend = typeof window.ontouchend !== 'undefined'; - - _supports.pointerdown = typeof window.onpointerdown !== 'undefined'; - _supports.pointerup = typeof window.onpointerup !== 'undefined'; - _supports.pointermove = typeof window.onpointermove !== 'undefined'; - } - - _supports.mobile = _supports.touchstart && _supports.touchend && _supports.touchmove; - // || _supports.pointerdown && _supports.pointerup && _supports.pointermove; - _supports.windowsMobile = navigator.userAgent.match(/Tablet PC/i) || navigator.userAgent.match(/Windows Phone/i); - - var _eventNames = _features.eventNames = {}; - _eventNames.mouseDownName = _supports.touchstart ? 'touchstart' : _supports.pointerdown ? 'pointerdown' : 'mousedown'; - _eventNames.mouseUpName = _supports.touchend ? 'touchend' : _supports.pointerup ? 'pointerup' : 'mouseup'; - _eventNames.mouseMoveName = _supports.touchmove ? 'touchmove' : _supports.pointermove ? 'pointermove' : 'mousemove'; -}); - -// ******* EVENT MANAGER ******** // -$axure.internal(function ($ax) { - var isConsoleTracing = false - var isPageLoading = true; - var savedMessages = []; - - // Every time Debug begins/ends tracing or a new Debug.js file finishes loading this value will be updated - $axure.messageCenter.addStateListener("isTracing", function (key, value) { - isConsoleTracing = value; - isPageLoading = false; - - if (isConsoleTracing) { - for (var i = 0; i < savedMessages.length; i++) { - $ax.messageCenter.postMessage(savedMessages[i]["message"], savedMessages[i]["data"]); - } - } - - savedMessages = []; - }); - - var postMessage = function (message, data) { - // While page is still loading, we do not know if Console is set to trace, so save messages until load is finished and trace status can be determined - if (isPageLoading) { - savedMessages.push({ 'message': message, 'data': data }); - } else if (isConsoleTracing) { - $ax.messageCenter.postMessage(message, data); - } - } - - var _objectIdToEventHandlers = {}; - - var _jBrowserEvent = undefined; - $ax.setjBrowserEvent = function(event) { - _jBrowserEvent = event; - }; - - $ax.getjBrowserEvent = function() { - return _jBrowserEvent; - }; - - var _event = {}; - $ax.event = _event; - - //initilize state - _event.mouseOverObjectId = ''; - _event.mouseDownObjectId = ''; - _event.mouseOverIds = []; - - var EVENT_NAMES = ['mouseenter', 'mouseleave', 'contextmenu', 'change', 'focus', 'blur']; - - - // Tap, double tap, and touch move, or synthetic. - if(!$ax.features.supports.mobile) { - EVENT_NAMES[EVENT_NAMES.length] = 'click'; - EVENT_NAMES[EVENT_NAMES.length] = 'dblclick'; - EVENT_NAMES[EVENT_NAMES.length] = 'mousemove'; - } - - // add the event names for the touch events - EVENT_NAMES[EVENT_NAMES.length] = $ax.features.eventNames.mouseDownName; - EVENT_NAMES[EVENT_NAMES.length] = $ax.features.eventNames.mouseUpName; - - for(var i = 0; i < EVENT_NAMES.length; i++) { - var eventName = EVENT_NAMES[i]; - //we need the function here to circumvent closure modifying eventName - _event[eventName] = (function(event_Name) { - return function(elementId, fn) { - var elementIdQuery = $jobj(elementId); - var type = $ax.getTypeFromElementId(elementId); - - //we need specially track link events so we can enable and disable them along with - //their parent widgets - if(elementIdQuery.is('a')) _attachCustomObjectEvent(elementId, event_Name, fn); - //see notes below - else if($ax.IsTreeNodeObject(type)) _attachTreeNodeEvent(elementId, event_Name, fn); - else if ($ax.IsImageFocusable(type) && (event_Name == 'focus' || event_Name == 'blur')) { - var suitableChild; - var imgChild = $ax.repeater.applySuffixToElementId(elementId, '_img'); - var divChild = $ax.repeater.applySuffixToElementId(elementId, '_div'); - - for (var j = 0; j < elementIdQuery[0].children.length; j++) { - if (elementIdQuery[0].children[j].id == imgChild) suitableChild = imgChild; - if (!suitableChild && elementIdQuery[0].children[j].id == divChild) suitableChild = divChild; - } - if(!suitableChild) suitableChild = imgChild; - _attachDefaultObjectEvent($jobj(suitableChild), elementId, event_Name, fn); - } else { - var inputId = $ax.INPUT(elementId); - var isInput = $jobj(inputId).length != 0; - var id = isInput && (event_Name == 'focus' || event_Name == 'blur') ? inputId : elementId; - _attachDefaultObjectEvent($jobj(id), elementId, event_Name, fn); - } - }; - })(eventName); - } - - var AXURE_TO_JQUERY_EVENT_NAMES = { - 'onMouseOver': 'mouseenter', - 'onMouseOut': 'mouseleave', - 'onContextMenu': 'contextmenu', - 'onChange': 'change', - 'onFocus': 'focus', - 'onLostFocus': 'blur' - }; - - // Tap, double tap, and touch move, or synthetic. - if(!$ax.features.supports.mobile) { - AXURE_TO_JQUERY_EVENT_NAMES.onClick = 'click'; - AXURE_TO_JQUERY_EVENT_NAMES.onDoubleClick = 'dblclick'; - AXURE_TO_JQUERY_EVENT_NAMES.onMouseMove = 'mousemove'; - } - - AXURE_TO_JQUERY_EVENT_NAMES.onMouseDown = $ax.features.eventNames.mouseDownName; - AXURE_TO_JQUERY_EVENT_NAMES.onMouseUp = $ax.features.eventNames.mouseUpName; - //for dp, if mouse entered without leaving, don't fire mouse enter again - var mouseEnterGuard = {}; - var _attachEvents = function (diagramObject, elementId, doMouseEnterGuard) { - - var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); - var id = $jobj(inputId).length ? inputId : elementId; - - for(var eventName in diagramObject.interactionMap) { - var jQueryEventName = AXURE_TO_JQUERY_EVENT_NAMES[eventName]; - if(!jQueryEventName) continue; - - _event[jQueryEventName](id, - //this is needed to escape closure - (function(axEventObject) { - return function (e) { - if(e.type == 'mouseenter' && doMouseEnterGuard) { - if(mouseEnterGuard[elementId]) return; - else mouseEnterGuard[elementId] = true; - } - - $ax.setjBrowserEvent(e); - // console.log(axEventObject.description); - var eventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); - _handleEvent(elementId, eventInfo, axEventObject); - }; - })(diagramObject.interactionMap[eventName]) - ); - - if(jQueryEventName.toLowerCase() == 'mouseenter' && doMouseEnterGuard) { - $jobj(elementId).on('mouseleave touchend', function() { - mouseEnterGuard[elementId] = false; - }); - } - } - - }; - - var _eventTypeToKey = { 'OnFocus': 'onFocus', 'OnLostFocus': 'onLostFocus' }; - var _createProxies = function(diagramObject, elementId) { - var createFocus = _needsProxy(diagramObject, elementId, 'onFocus'); - var createLostFocus = _needsProxy(diagramObject, elementId, 'onLostFocus'); - - if(!createFocus && !createLostFocus) return; - - if(!diagramObject.interactionMap) diagramObject.interactionMap = {}; - if(createFocus) diagramObject.interactionMap.onFocus = { proxy: true, eventType: 'OnFocus' }; - if (createLostFocus) diagramObject.interactionMap.onLostFocus = { proxy: true, eventType: 'OnLostFocus' }; - } - - var preventDefaultEvents = ['OnContextMenu', 'OnKeyUp', 'OnKeyDown', 'OnPageContextMenu', 'OnPageKeyUp', 'OnPageKeyDown']; - var allowBubble = ['OnFocus', 'OnResize', 'OnMouseOut', 'OnMouseOver']; - - var _canClick = true; - var _startScroll = []; - var _setCanClick = function(canClick) { - _canClick = canClick; - if(_canClick) _startScroll = [$(window).scrollLeft(), $(window).scrollTop()]; - }; - - var _getCanClick = function () { - if(_startScroll.length == 0) return _canClick; - var endScroll = [$(window).scrollLeft(), $(window).scrollTop()]; - return _canClick && _startScroll[0] == endScroll[0] && _startScroll[1] == endScroll[1]; - }; - - //var _notAllowedInvisible = function (type) { - // $ax.getTypeFromElementId(elementId); - - // return !$ax.public.fn.IsReferenceDiagramObject(type) && !$ax.public.fn.IsLayer(type); - //} - - - var _notAllowedInvisible = function (id) { - var type = $ax.getTypeFromElementId(id); - if ($ax.public.fn.IsReferenceDiagramObject(type) || $ax.public.fn.IsLayer(type)) return false; - return !($ax.public.fn.IsVector(type) && _hasCompoundImage(id)); - } - - var _hasCompoundImage = function (id) { - var query = $jobj(id); - return $ax.public.fn.isCompoundVectorHtml(query[0]); - } - - var _suppressedEvents = {}; // Suppressed for next occurance. - var _blockedEvents = {}; // Blocked until unblocked. - _event.addSuppressedEvent = function(id, event) { - if(!_suppressedEvents[id]) _suppressedEvents[id] = []; - var events = _suppressedEvents[id]; - if(events.indexOf(event) != -1) return; - events.push(event); - } - - _event.blockEvent = function(id, event) { - if(!_blockedEvents[id]) _blockedEvents[id] = {}; - var events = _blockedEvents[id]; - if(events[event]) ++events[event]; - else events[event] = 1; - return function() { _unblockEvent(id, event); }; - } - - var _isSuppressedEvent = function(id, event) { - var suppressedEvents = _suppressedEvents[id]; - var blockedEvents = _blockedEvents[id]; - return (suppressedEvents && suppressedEvents.indexOf(event) != -1) || (blockedEvents && blockedEvents[event]); - } - - var _removeSuppressedEvent = function(id, event) { - var events = _suppressedEvents[id]; - if(!events) return; - if(events.length == 1) { - delete _suppressedEvents[id]; - } else { - var eventIndex = events.indexOf(event); - for(var i = eventIndex + 1; i < events.length; i++) events[i - 1] = events[i]; - events.pop(); - } - } - var _unblockEvent = function(id, event) { - var events = _blockedEvents[id]; - if(events) { - if(--events[event] > 0) return; - } - _removeSuppressedEvent(id, event); - } - - var _unblockEvent = function(id, event) { - var events = _blockedEvents[id]; - if(events) { - if(--events[event] > 0) return; - } - _removeSuppressedEvent(id, event); - } - - var eventNesting = 0; - var eventNestingTime = new Date().getTime(); - - var _handleEvent = $ax.event.handleEvent = function (elementId, eventInfo, axEventObject, skipShowDescriptions, synthetic) { - var eventType = axEventObject.eventType; - if(_enteredWidgets[elementId] && eventType == 'OnMouseEnter') return; // Suppress entering a widget when already in widget (ie only) - if(_isSuppressedEvent(elementId, eventType)) { - _removeSuppressedEvent(elementId, eventType); - return; - } - - if(axEventObject.proxy) { - var firingId = _widgetToFocusParent[elementId]; - if(firingId) { - var firingObj = $obj(firingId); - var nextEventObj = firingObj.interactionMap && firingObj.interactionMap[_eventTypeToKey[eventType]]; - if(!nextEventObj) nextEventObj = axEventObject; - _handleEvent(firingId, eventInfo, nextEventObj, skipShowDescriptions, synthetic); - } - return; - } -// var x = JSON.stringify(eventInfo); -// var y = JSON.stringify(axEventObject); - - var fireTime = new Date().getTime(); - - if(fireTime - eventNestingTime > 100) { - eventNestingTime = fireTime; - eventNesting = 0; - } - - if(eventNesting === 0) { - $ax.recording.maybeRecordEvent(elementId, eventInfo, axEventObject, fireTime); - } - - eventNesting += 1; - - if (!synthetic && !_getCanClick() && (eventType == 'OnClick' || eventType == 'OnPageClick')) return; - // If you are supposed to suppress, do that right away. - if(suppressedEventStatus[eventType]) { - return; - } - - var currentEvent = $ax.getjBrowserEvent(); - if(!synthetic && currentEvent && currentEvent.originalEvent && currentEvent.originalEvent.handled && !eventInfo.isMasterEvent) return; - if(!synthetic && elementId && !$ax.style.getObjVisible(elementId) && _notAllowedInvisible(elementId)) return; - - //if debug - var axObj = $obj(elementId); - var axObjLabel = axObj ? axObj.label : eventInfo.label; - var axObjType = axObj ? axObj.friendlyType : eventInfo.friendlyType; - if (!skipShowDescriptions || eventType == 'OnPageLoad') postMessage('axEvent', { 'label': axObjLabel, 'type': axObjType, 'event': axEventObject }); - - var bubble = true; - var showCaseDescriptions = !skipShowDescriptions && _shouldShowCaseDescriptions(axEventObject); - if(!showCaseDescriptions) { - //handle case descriptions - var caseGroups = []; - var currentCaseGroup = []; - caseGroups[0] = currentCaseGroup; - - // Those refreshes not after a wait - var guaranteedRefreshes = {}; - - var caseGroupIndex = 0; - for(var i = 0; i < axEventObject.cases.length; i++) { - var currentCase = axEventObject.cases[i]; - if(currentCase.isNewIfGroup && i != 0) { - caseGroupIndex++; - currentCaseGroup = []; - caseGroups[caseGroups.length] = currentCaseGroup; - // Joon: Isn't caseGroups.length always equal to caseGroupIndex? - } - currentCaseGroup[currentCaseGroup.length] = currentCase; - - for(var j = 0; j < currentCase.actions.length; j++) { - var action = currentCase.actions[j]; - if(action.action == 'wait') break; - if(action.action != 'refreshRepeater') continue; - for(var k = 0; k < action.repeatersToRefresh.length; k++) { - var id = $ax.getElementIdsFromPath(action.repeatersToRefresh[k], eventInfo)[0]; - if(id) guaranteedRefreshes[id] = caseGroupIndex; - } - } - } - - for(var i = 0; i < caseGroups.length; i++) { - var groupRefreshes = []; - for(var key in guaranteedRefreshes) { - if(guaranteedRefreshes[key] == i) groupRefreshes[groupRefreshes.length] = key; - } - bubble = _handleCaseGroup(eventInfo, caseGroups[i], groupRefreshes) && bubble; - } - } else { - _showCaseDescriptions(elementId, eventInfo, axEventObject, synthetic); - bubble = false; - } - - // If not handled, synthetically bubble if you can - if(bubble && _widgetToFocusParent[elementId]) { - firingId = _widgetToFocusParent[elementId]; - if(firingId) { - firingObj = $obj(firingId); - nextEventObj = firingObj.interactionMap && firingObj.interactionMap[_eventTypeToKey[eventType]]; - if(!nextEventObj) nextEventObj = axEventObject; - _handleEvent(firingId, eventInfo, nextEventObj, skipShowDescriptions, synthetic); - } - return; - } - - // Only trigger a supression if it handled this event - if(!bubble && suppressingEvents[eventType]) { - suppressedEventStatus[suppressingEvents[eventType]] = true; - } - - $ax.action.flushAllResizeMoveActions(eventInfo); - - // This should not be needed anymore. All refreshes should be inserted, or handled earlier. - var repeaters = $ax.deepCopy($ax.action.repeatersToRefresh); - while($ax.action.repeatersToRefresh.length) $ax.action.repeatersToRefresh.pop(); - for(i = 0; i < repeaters.length; i++) $ax.repeater.refreshRepeater(repeaters[i], eventInfo); - - if(currentEvent && currentEvent.originalEvent) { - currentEvent.originalEvent.handled = !synthetic && !bubble && allowBubble.indexOf(eventType) == -1; - //currentEvent.originalEvent.donotdrag = currentEvent.donotdrag || (!bubble && eventDescription == 'OnMouseDown'); - - // Prevent default if necessary - if (currentEvent.originalEvent.handled && preventDefaultEvents.indexOf(eventType) != -1) { - currentEvent.preventDefault(); - } - } - - eventNesting -= 1; - - if(!showCaseDescriptions) postMessage('axEventComplete'); - - }; - - var _handleScrollEvent = function (elementId, eventInfo, originalEvent, scrolledUp, scrolledDown, interactionMap, skipShowDescription, synthetic) { - if (!interactionMap) return; - if (interactionMap.onScroll) _handleEvent(elementId, eventInfo, interactionMap.onScroll, skipShowDescription, synthetic); - - var wasHandled = originalEvent.handled; - if (interactionMap.onScrollUp && scrolledUp) { - originalEvent.handled = false; - _handleEvent(elementId, eventInfo, interactionMap.onScrollUp, skipShowDescription, synthetic); - } else if (interactionMap.onScrollDown && scrolledDown) { - originalEvent.handled = false; - _handleEvent(elementId, eventInfo, interactionMap.onScrollDown, skipShowDescription, synthetic); - } - originalEvent.handled |= wasHandled; - } - - var _showCaseDescriptions = function(elementId, eventInfo, axEventObject, synthetic) { - - if(axEventObject.cases.length == 0) return true; - - var linksId = elementId + "linkBox"; - $('#' + linksId).remove(); - - var $container = $("
    "); - - if(!_isEventSimulating(axEventObject)) { - var copy = $ax.eventCopy(eventInfo); - for(var i = 0; i < axEventObject.cases.length; i++) { - var $link = $(""); - $link.click(function(j) { - return function () { - var currentCase = axEventObject.cases[j]; - postMessage('axCase', { 'item': currentCase.description, 'description': currentCase.conditionString, 'color': currentCase.caseColorHex }) - for(var k = 0; k < currentCase.actions.length; k++) { - var currentAction = currentCase.actions[k]; - - // Only use action's direct description if no action info descriptions exist - postMessage('axAction', { 'name': currentAction.displayName }); - //postMessage('axAction', { 'item': currentAction.description, 'description': (Object.keys(currentAction.actionInfoDescriptions).length > 0 ? "" : currentAction.description) }); - - for (var target in currentAction.actionInfoDescriptions) { - var infoDescriptions = currentAction.actionInfoDescriptions[target]; - for (var shortDescription in infoDescriptions) { - postMessage('axInfo', { 'item': target, 'description': shortDescription, 'longDescription': infoDescriptions[shortDescription] }); - } - } - } - postMessage('axEventComplete'); - - var bubble = $ax.action.dispatchAction(copy, axEventObject.cases[j].actions); - $ax.action.flushAllResizeMoveActions(copy); - $('#' + linksId).remove(); - return bubble; - }; - } (i) - ); - - $container.append($link); - } - } else { - var fullDescription = axEventObject.description + ":
    "; - for(var i = 0; i < axEventObject.cases.length; i++) { - var currentCase = axEventObject.cases[i]; - fullDescription += "  " + currentCase.description.replace(/
    /g, '
      ') + ":
    "; - for(var j = 0; j < currentCase.actions.length; j++) { - fullDescription += "    " + currentCase.actions[j].description.replace(/
    /g, '
          ') + "
    "; - } - } - fullDescription = fullDescription.substring(0, fullDescription.length - 4); - - var $link = $(""); - $link.click(function() { - _handleEvent(elementId, eventInfo, axEventObject, true, synthetic); - postMessage('axEventComplete'); - $('#' + linksId).remove(); - return; - }); - $container.append($link); - } - $container.mouseleave(function(e) { $ax.legacy.SuppressBubble(e); }); - $('body').append($container); - _showCaseLinks(eventInfo, linksId); - }; - - var _showCaseLinks = function(eventInfo, linksId) { - var links = window.document.getElementById(linksId); - - links.style.top = eventInfo.pageY; - - var left = eventInfo.pageX; - links.style.left = left; - $ax.visibility.SetVisible(links, true); - $ax.legacy.BringToFront(linksId, true); - // Switch to using jquery if this is still needed. Really old legacy code, likely for a browser no longer supported. - //$ax.legacy.RefreshScreen(); - }; - - - var _shouldShowCaseDescriptions = function(axEventObject) { - if($ax.document.configuration.linkStyle == "alwaysDisplayTargets") return true; - if($ax.document.configuration.linkStyle == "neverDisplayTargets") return false; - if(axEventObject.cases.length == 0) return false; - if(_isEventSimulating(axEventObject)) return false; - if(axEventObject.cases.length >= 2) return true; - return false; - }; - - var _isEventSimulating = function(axEventObject) { - for(var i = 0; i < axEventObject.cases.length; i++) { - if(axEventObject.cases[i].condition) return true; - } - return false; - }; - - var _handleCaseGroup = function(eventInfo, caseGroup, groupRefreshes) { - for(var i = 0; i < caseGroup.length; i++) { - var currentCase = caseGroup[i]; - if(!currentCase.condition || _processCondition(currentCase.condition, eventInfo)) { - postMessage('axCase', { 'item': currentCase.description, 'description': currentCase.conditionString, 'color': currentCase.caseColorHex }) - - for(var j = 0; j < currentCase.actions.length; j++) { - var currentAction = currentCase.actions[j]; - if (currentAction.action != 'refreshRepeater') { - // Only use action's direct description if no action info descriptions exist - postMessage('axAction', { 'name': currentAction.displayName }); - //postMessage('axAction', { 'item': currentAction.description, 'description': (Object.keys(currentAction.actionInfoDescriptions).length > 0 ? "" : currentAction.description) }); - - for (var target in currentAction.actionInfoDescriptions) { - var infoDescriptions = currentAction.actionInfoDescriptions[target]; - for (var shortDescription in infoDescriptions) { - postMessage('axInfo', { 'item': target, 'description': shortDescription, 'longDescription': infoDescriptions[shortDescription] }); - } - } - } - } - - for(var j = 0; j < currentCase.actions.length; j++) { - var action = currentCase.actions[j]; - if(action.action == 'wait') break; - if(action.action != 'refreshRepeater') continue; - for(var k = 0; k < action.repeatersToRefresh.length; k++) { - var id = $ax.getElementIdsFromPath(action.repeatersToRefresh[i], eventInfo)[i]; - if(id) { - var index = groupRefreshes.indexOf(id); - if(index != -1) $ax.splice(groupRefreshes, index); - } - } - } - - // Any guaranteed refreshes that aren't accounted for must be run still. - $ax.action.tryRefreshRepeaters(groupRefreshes, eventInfo); - - $ax.action.dispatchAction(eventInfo, currentCase.actions); - return false; - } - } - - // Any guaranteed refreshes that aren't accounted for must be run still. - $ax.action.tryRefreshRepeaters(groupRefreshes, eventInfo); - return true; - }; - - var _processCondition = function(expr, eventInfo) { - return $ax.expr.evaluateExpr(expr, eventInfo); - }; - - var _attachTreeNodeEvent = function(elementId, eventName, fn) { - //we need to set the cursor here because we want to make sure that every tree node has the default - //cursor set and then it's overridden if it has a click - if(eventName == 'click') window.document.getElementById(elementId).style.cursor = 'pointer'; - - _attachCustomObjectEvent(elementId, eventName, fn); - }; - - var _attachDefaultObjectEvent = function(elementIdQuery, elementId, eventName, fn) { - var func = function(e) { - if($ax.style.IsWidgetDisabled(elementId) || _shouldIgnoreLabelClickFromCheckboxOrRadioButton(e)) return true; - return fn.apply(this, arguments); - }; - - var bind = !elementIdQuery[eventName]; - if(bind) elementIdQuery.bind(eventName, func); - else elementIdQuery[eventName](func); - }; - - var _shouldIgnoreLabelClickFromCheckboxOrRadioButton = function (e) { - return (((_hasParentWithMatchingSelector(e.target, '.checkbox') && $(e.target).closest('label').length != 0) || - _hasParentWithMatchingSelector(e.target, '.radio_button') && $(e.target).closest('label').length != 0)) && e.type == 'click'; - }; - - var _hasParentWithMatchingSelector = function (target, selector) { - return $(target).parents(selector).length != 0; - }; - - var _attachCustomObjectEvent = function(elementId, eventName, fn) { - var handlers = _objectIdToEventHandlers[elementId]; - if(!handlers) _objectIdToEventHandlers[elementId] = handlers = {}; - - var fnList = handlers[eventName]; - if(!fnList) handlers[eventName] = fnList = []; - - fnList[fnList.length] = fn; - }; - - var _fireObjectEvent = function(elementId, event, originalArgs) { - var element = window.document.getElementById(elementId); - - var handlerList = _objectIdToEventHandlers[elementId] && _objectIdToEventHandlers[elementId][event]; - if(handlerList) { - for(var i = 0; i < handlerList.length; i++) handlerList[i].apply(element, originalArgs); - } - - eventNesting -= 1; - - }; - - var _layerToFocusableWidget = {}; - var _widgetToFocusParent = {}; - _event.layerMapFocus = function(layer, elementId) { - var mainObj = layer.objs[0]; - // If first child non existant return - if (!mainObj) return; - - var mainId = $ax.getElementIdFromPath([mainObj.id], { relativeTo: elementId }); - _widgetToFocusParent[mainId] = elementId; - - // If first child is a layer, call recursively - if ($ax.public.fn.IsLayer(mainObj.type)) { - _event.layerMapFocus(mainObj, mainId); - var baseId = _layerToFocusableWidget[mainId]; - if(baseId) _layerToFocusableWidget[elementId] = baseId; - return; - } - - _layerToFocusableWidget[elementId] = mainId; - } - - var _needsProxy = function(obj, id, proxyName) { - // layers don't need on focus ever, proxies will handle them - if ($ax.public.fn.IsLayer(obj.type)) return false; - // If you already focus you don't need to force yourself to proxy. - if(obj.interactionMap && obj.interactionMap[proxyName]) return false; - - var parentId = _widgetToFocusParent[id]; - if(parentId) return _needsProxyHelper(parentId, proxyName); - return false; - } - - var _needsProxyHelper = function(id, proxyName) { - var obj = $obj(id); - if(obj.interactionMap && obj.interactionMap[proxyName]) return true; - - var parentId = _widgetToFocusParent[id]; - if(parentId) return _needsProxyHelper(parentId, proxyName); - return false; - } - - //for button shapes and images the img is focusable instead of the div to get better outlines - // For layers, we remember who their proxy is. - $ax.event.getFocusableWidgetOrChildId = function (elementId) { - var mappedId = _layerToFocusableWidget[elementId]; - if (mappedId) elementId = mappedId; - - var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); - var inputQuery = $jobj(inputId); - if(inputQuery.length > 0) return inputId; - - var imgId = $ax.repeater.applySuffixToElementId(elementId, '_img'); - var imgQuery = $jobj(imgId); - if (imgQuery.length > 0) return imgId; - - var divId = $ax.repeater.applySuffixToElementId(elementId, '_div'); - var divQuery = $jobj(divId); - if (divQuery.length > 0) return divId; - - return elementId; - }; - - var _enteredWidgets = {}; - - // key is the suppressing event, and the value is the event that is supressed - var suppressingEvents = {}; - // key is the event that will cancel the suppression, and value is the event that was being suppressed - var cancelSuppressions = {}; - // suppressed event maps to true if it is supressed - var suppressedEventStatus = {}; - - var initSuppressingEvents = function () { - suppressingEvents['OnLongClick'] = 'OnClick'; - cancelSuppressions['onMouseDown'] = 'OnClick'; - - // Have to cancel suppressed event here. Only works for non-synthetic events currently - for(var key in cancelSuppressions) { - var jEventName = AXURE_TO_JQUERY_EVENT_NAMES[key]; - if(!jEventName) continue; - $('body').bind(jEventName, function () { - suppressedEventStatus[cancelSuppressions[key]] = false; - }); - } - }; - - // TODO: It may be a good idea to split this into multiple functions, or at least pull out more similar functions into private methods - var _initializeObjectEvents = function(query, refreshType) { - var skipSelectedIds = new Set(); - query.each(function (dObj, elementId) { - if (dObj == null) return; // TODO: Update expo items that pass here to potentially remove this logic - var $element = $jobj(elementId); - var itemId = $ax.repeater.getItemIdFromElementId(elementId); - - // Focus has to be done before on focus fires - // Set up focus - if ($ax.public.fn.IsTextArea(dObj.type) || $ax.public.fn.IsTextBox(dObj.type) || $ax.public.fn.IsCheckBox(dObj.type) || $ax.public.fn.IsRadioButton(dObj.type) || - $ax.public.fn.IsListBox(dObj.type) || $ax.public.fn.IsComboBox(dObj.type) || $ax.public.fn.IsButton(dObj.type) || - (dObj.tabbable && ($ax.public.fn.IsImageBox(dObj.type) || $ax.public.fn.IsVector(dObj.type) || $ax.IsTreeNodeObject(dObj.type) || $ax.public.fn.IsTableCell(dObj.type)))) { - var focusObj = $jobj($ax.event.getFocusableWidgetOrChildId(elementId)); - focusObj.focus(function() { - window.lastFocusedControl = elementId; - $ax.style.SetWidgetFocused(elementId, true); - }); - focusObj.blur(function() { - $ax.style.SetWidgetFocused(elementId, false); - }); - } - // [MAS: Supressing events were here] - _createProxies(dObj, elementId); - var isDynamicPanel = $ax.public.fn.IsDynamicPanel(dObj.type); - if(dObj.interactionMap) { - _attachEvents(dObj, elementId, isDynamicPanel); - }; - - - - if (IE || $axure.browser.isEdge) { - $element.mouseenter(function() { - _enteredWidgets[elementId] = true; - }).mouseleave(function() { - _enteredWidgets[elementId] = false; - }); - } - - _attachIxStyleEvents(dObj, elementId, $element); - - var $axElement = $ax('#' + elementId); - // Base case is set up selected disabled based on the default in the axobj, for non, repeaters and resetting repeaters - var itemReset = refreshType == $ax.repeater.refreshType.reset; - if(!itemId || itemReset) { - //initialize disabled elements, do this first before selected, cause if a widget is disabled, we don't want to apply selected style anymore - if ($ax.public.fn.IsVector(dObj.type) || $ax.public.fn.IsImageBox(dObj.type) || isDynamicPanel || $ax.public.fn.IsLayer(dObj.type) - || $ax.public.fn.IsTextBox(dObj.type) || $ax.public.fn.IsTextArea(dObj.type) || $ax.public.fn.IsComboBox(dObj.type) || $ax.public.fn.IsListBox(dObj.type) - || $ax.public.fn.IsCheckBox(dObj.type) || $ax.public.fn.IsRadioButton(dObj.type)) { - - if (dObj.disabled) $axElement.enabled(false); - - // Initialize selected elements - // only set one member of selection group selected since subsequent calls - // will unselect the previous one anyway - if(dObj.selected && !skipSelectedIds.has(elementId)) { - var group = $('#' + elementId).attr('selectiongroup'); - if(group) for(var item of $("[selectiongroup='" + group + "']")) skipSelectedIds.add(item.id); - $axElement.selected(true); - } - } - } else if(refreshType == $ax.repeater.refreshType.preEval) { - // Otherwise everything should be set up correctly by pre-eval, want to set up selected disabled dictionaries (and disabled status) - // Disabled layer/dynamic panel don't have the disabled class, but they do have the disabled attr written out, so use that in that case - if ($element.hasClass('disabled') || - (($ax.IsLayer(dObj.type) || $ax.IsDynamicPanel(dObj.type)) && $element.attr('disabled'))) $axElement.enabled(false); - if($element.hasClass('selected')) $axElement.selected(true); - } else { - // Persist means we want to leave it as is, but we want to make sure we use selected based off of the backing data, and not some class that exists because of the reset - $element.removeClass('selected'); - } - - //if(OS_MAC && WEBKIT) { - // if ($ax.public.fn.IsComboBox(dObj.type) && dObj.disabled) { - // $jobj($ax.INPUT(elementId)).css('color', 'grayText'); - // } - //}; - const isInput = $ax.public.fn.IsTextArea(dObj.type) || $ax.public.fn.IsTextBox(dObj.type); - if(isInput) { - var inputJobj = $jobj($ax.INPUT(elementId)); - inputJobj.bind('keyup', function(e) { - //prevents triggering player shortcuts - e.preventDefault(); - }); - } - - const isDateTimeTypeInput = function($input) { - const type = $input.attr('type'); - return type == 'date' || type == 'month' || type == 'time'; - } - - // Initialize Placeholders. Right now this is text boxes and text areas. - // Also, the assuption is being made that these widgets with the placeholder, have no other styles (this may change...) - var hasPlaceholder = dObj.placeholderText == '' ? true : Boolean(dObj.placeholderText); - if(isInput && hasPlaceholder) { - // This is needed to initialize the placeholder state - inputJobj.bind('focus', function () { - if(dObj.HideHintOnFocused) { - var id = this.id; - var inputIndex = id.indexOf('_input'); - if (inputIndex == -1) return; - var inputId = id.substring(0, inputIndex); - - if (!$ax.placeholderManager.isActive(inputId)) return; - $ax.placeholderManager.updatePlaceholder(inputId, false, true); - } - $ax.placeholderManager.moveCaret(this.id); - }).bind('mouseup', function() { - $ax.placeholderManager.moveCaret(this.id); - }).bind('blur', function() { - var id = this.id; - var inputIndex = id.indexOf('_input'); - if(inputIndex == -1) return; - var inputId = id.substring(0, inputIndex); - - if($jobj(id).val()) return; - $ax.placeholderManager.updatePlaceholder(inputId, true); - }); - - inputJobj.bind('input', function() { - if(!dObj.HideHintOnFocused) { //hide on type - var id = this.id; - var inputIndex = id.indexOf('_input'); - if(inputIndex == -1) return; - var inputId = id.substring(0, inputIndex); - - var $input = $jobj(id); - var emptyInputValue = !$input.val(); - - var invalidDateTimeInput = isDateTimeTypeInput($input) && !$input[0].validity.valid; - if ($ax.placeholderManager.isActive(inputId)) { - // clear text if emptyInputValue is true; - $ax.placeholderManager.updatePlaceholder(inputId, false, emptyInputValue); - } - else if (emptyInputValue && !invalidDateTimeInput) { - $ax.placeholderManager.updatePlaceholder(inputId, true); - $ax.placeholderManager.moveCaret(id, 0); - } - } - }); - - if(!ANDROID) { - inputJobj.bind('keydown', function() { - if(!dObj.HideHintOnFocused) { - var id = this.id; - var inputIndex = id.indexOf('_input'); - if(inputIndex == -1) return; - var inputId = id.substring(0, inputIndex); - - if(!$ax.placeholderManager.isActive(inputId)) return; - $ax.placeholderManager.updatePlaceholder(inputId, false, true); - } - }); - } - - $ax.placeholderManager.registerPlaceholder(elementId, dObj.placeholderText, inputJobj.attr('type') == 'password'); - $ax.placeholderManager.updatePlaceholder(elementId, !($jobj($ax.repeater.applySuffixToElementId(elementId, '_input')).val())); - } - - // Initialize assigned submit buttons - if(dObj.submitButton) { - $element.keyup(function(e) { - if(e.keyCode == '13') { - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - var path = $ax.deepCopy(dObj.submitButton.path); - path[path.length] = dObj.submitButton.id; - var itemNum = $ax.repeater.getItemIdFromElementId(elementId); - var submitId = $ax.getScriptIdFromPath(path, scriptId); - - if(itemNum && $ax.getParentRepeaterFromScriptId(submitId) == $ax.getParentRepeaterFromScriptId(scriptId)) { - submitId = $ax.repeater.createElementId(submitId, itemNum); - } - var inputId = $ax.INPUT(submitId); - if($jobj(inputId).length) submitId = inputId; - - $ax.setjBrowserEvent(e); - $ax.event.fireClick(submitId); - } - }).keydown(function(e) { - if(e.keyCode == '13') { - e.preventDefault(); - } - }); - } - - // Don't drag after mousing down on a plain text object - if ($ax.public.fn.IsTextArea(dObj.type) || $ax.public.fn.IsTextBox(dObj.type) || $ax.public.fn.IsListBox(dObj.type) || - $ax.public.fn.IsComboBox(dObj.type) || $ax.public.fn.IsCheckBox(dObj.type) || $ax.public.fn.IsRadioButton(dObj.type)) { - $element.bind($ax.features.eventNames.mouseDownName, function(event) { - event.originalEvent.donotdrag = true; - }); - } - - $element.bind($ax.features.eventNames.mouseDownName, function() { _setCanClick(true); }); - if (isDynamicPanel) { - $element.children().scroll(function () { _setCanClick(false); }); - } - - //initialize tree node cursors to default so they will override their parent - if ($ax.public.fn.IsTreeNodeObject(dObj.type) && !(dObj.interactionMap && dObj.interactionMap.onClick)) { - $element.css('cursor', 'default'); - } - - //initialize widgets that are clickable to have the pointer over them when hovering - if($ax.event.HasClick(dObj)) { - if($element) $element.css('cursor', 'pointer'); - } - - // TODO: not sure if we need this. It appears to be working without - //initialize panels for DynamicPanels - if (isDynamicPanel) { - $element.children().each(function() { - var parts = this.id.split('_'); - var state = parts[parts.length - 1].substring(5); - if(state != 0) $ax.visibility.SetVisible(this, false); - }); - } - - //initialize TreeNodes - if ($ax.public.fn.IsTreeNodeObject(dObj.type)) { - if($element.hasClass('treeroot')) return; - - var childrenId = elementId + '_children'; - var children = $element.children('[id="' + childrenId + '"]:first'); - if(children.length > 0) { - var plusMinusId = 'u' + (parseInt($ax.repeater.getScriptIdFromElementId(elementId).substring(1)) + 1); - if(itemId) plusMinusId = $ax.repeater.createElementId(plusMinusId, itemId); - if(!$jobj(plusMinusId).children().first().is('img')) plusMinusId = ''; - $ax.tree.InitializeTreeNode(elementId, plusMinusId, childrenId); - } - $element.click(function() { $ax.tree.SelectTreeNode(elementId, true); }); - } - - //initialize submenus - if ($ax.public.fn.IsMenuObject(dObj.type)) { - if($element.hasClass('sub_menu')) { - var tableCellElementId = $ax.getElementIdFromPath([dObj.parentCellId], { relativeTo: elementId }); - $ax.menu.InitializeSubmenu(elementId, tableCellElementId); - } - } - - // Attach handles for dynamic panels that propagate styles to inner items. - if ((isDynamicPanel || $ax.public.fn.IsLayer(dObj.type)) && dObj.propagate) { - $element.mouseenter(function() { - dynamicPanelMouseOver(this.id); - }).mouseleave(function() { - dynamicPanelMouseLeave(this.id); - }).bind($ax.features.eventNames.mouseDownName, function() { - dynamicPanelMouseDown(this.id); - }).bind($ax.features.eventNames.mouseUpName, function() { - dynamicPanelMouseUp(this.id); - }); - } - - // These are the dynamic panel functions for propagating rollover styles and mouse down styles to inner objects - var dynamicPanelMouseOver = function(elementId, fromChild) { - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent) { - dynamicPanelMouseOver(parent.id, true); - if(parent.direct) return; - } - if($.inArray(elementId, _event.mouseOverIds) != -1) return; - // If this event is coming from a child, don't mark that it's actually entered. - // Only mark that this has been entered if this event has naturally been triggered. (For reason see mouseleave) - if(!fromChild) _event.mouseOverIds[_event.mouseOverIds.length] = elementId; - if(elementId == _event.mouseOverObjectId) return; - _event.mouseOverObjectId = elementId; - $ax.dynamicPanelManager.propagateMouseOver(elementId, true); - }; - var dynamicPanelMouseLeave = function(elementId, fromChild) { - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent) { - dynamicPanelMouseLeave(parent.id, true); - if(parent.direct) return; - } - var index = $.inArray(elementId, _event.mouseOverIds); - // If index != -1, this has been natuarally entered. If naturally entered, then leaving child should not trigger leaving, - // but instead wait for natural mouse leave. If natural mouse enter never triggered, natural mouse leave won't so do this now. - if((index != -1) && fromChild) return; - $ax.splice(_event.mouseOverIds, index, 1); - - if(elementId == _event.mouseOverObjectId) { - _event.mouseOverObjectId = ''; - } - $ax.dynamicPanelManager.propagateMouseOver(elementId, false); - }; - - //attach handlers for button shape and tree node mouse over styles - // TODO: Can this really be removed? Trees seem to work with out (the generic hover case works for it). - // query.filter(function(obj) { - // return $ax.public.fn.IsVector(obj.type) && $ax.public.fn.IsTreeNodeObject(obj.parent.type) && - // obj.parent.style && obj.parent.style.stateStyles && - // obj.parent.style.stateStyles.mouseOver; - // }).mouseenter(function() { - // $ax.style.SetWidgetHover(this.id, true); - // }).mouseleave(function() { - // $ax.style.SetWidgetHover(this.id, false); - // }); - - //handle treeNodeObject events and prevent them from bubbling up. this is necessary because otherwise - //both a sub menu and it's parent would get a click - if ($ax.public.fn.IsTreeNodeObject(dObj.type)) { - $element.click(function() { - //todo -- this was bubbling, but then selecting a child tree node would bubble and select the parent (don't know if there is a better way) - _fireObjectEvent(this.id, 'click', arguments); - return false; - }).each(function() { - if(!this.style.cursor) { - this.style.cursor = 'default'; - } - }); - } - - // Synthetic events - - var map = dObj.interactionMap; - // Attach synthetic drag and swipe events - if(map && (map.onDragStart || map.onDrag || map.onDragDrop || map.onSwipeLeft || map.onSwipeRight || map.onSwipeUp || map.onSwipeDown)) { - if(isDynamicPanel) { - var diagrams = dObj.diagrams; - for(var i = 0; i < diagrams.length; i++) { - var panelId = $ax.repeater.applySuffixToElementId(elementId, '_state' + i); - var panel = document.getElementById(panelId); - panel.addEventListener($ax.features.eventNames.mouseDownName, function (e) { - $ax.drag.StartDragWidget(e, elementId); - }); - } - } else { - $element.bind($ax.features.eventNames.mouseDownName, - function (e) { - $ax.drag.StartDragWidget(e.originalEvent, elementId); - // if (!e.originalEvent.donotdrag) $ax.registerTouchCount(e); - // $ax.drag.StartDragWidget(e.originalEvent, elementId); - }); - } - } - - // Attach dynamic panel synthetic scroll event - if (isDynamicPanel && map && (map.onScroll || map.onScrollUp || map.onScrollDown)) { - var diagrams = dObj.diagrams; - for(var i = 0; i < diagrams.length; i++) { - var panelId = $ax.repeater.applySuffixToElementId(elementId, '_state' + i); - (function(id) { - if ($('#' + id).data('lastScrollTop') == undefined) $('#' + id).data('lastScrollTop', '0'); - _attachDefaultObjectEvent($('#' + id), elementId, 'scroll', function(e) { - $ax.setjBrowserEvent(e); - var currentEvent = $ax.getjBrowserEvent(); - var eventInfoFromEvent = $ax.getEventInfoFromEvent(currentEvent, false, elementId); - - var currentTop = $('#' + id).scrollTop(); - var lastTop = $('#' + id).data('lastScrollTop'); - - _handleScrollEvent(elementId, eventInfoFromEvent, currentEvent.originalEvent, currentTop < lastTop, currentTop > lastTop, map); - $('#' + id).data('lastScrollTop', currentTop); - }); - })(panelId); - } - } - - // Attach synthetic hover event - if (map && map.onMouseHover) { - var MIN_HOVER_HOLD_TIME = 1000; - - // So when the timeout fires, you know whether it is the same mouseenter that is active or not. - var hoverMouseCount = 0; - // Update eventInfo regularly, so position is accurate. - var hoverEventInfo; - - $element.mouseenter(function(e) { - $ax.setjBrowserEvent(e); - hoverEventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); - (function(currCount) { - window.setTimeout(function() { - if(currCount == hoverMouseCount) _raiseSyntheticEvent(elementId, 'onMouseHover', false, hoverEventInfo, true); - }, MIN_HOVER_HOLD_TIME); - })(hoverMouseCount); - }).mouseleave(function(e) { - $ax.setjBrowserEvent(e); - hoverMouseCount++; - }).mousemove(function(e) { - $ax.setjBrowserEvent(e); - hoverEventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); - }); - } - - // Attach synthetic tap and hold event. - if (map && map.onLongClick) { - var MIN_LONG_CLICK_HOLD_TIME = 750; - - // So when the timeout fires, you know whether it is the same mousedown that is active or not. - var longClickMouseCount = 0; - - $element.bind($ax.features.eventNames.mouseDownName, function(e) { - (function(currCount) { - $ax.setjBrowserEvent(e); - var eventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, elementId); - window.setTimeout(function() { - if(currCount == longClickMouseCount) _raiseSyntheticEvent(elementId, 'onLongClick', false, eventInfo, true); - }, MIN_LONG_CLICK_HOLD_TIME); - if(e.preventDefault) e.preventDefault(); - })(longClickMouseCount); - }).bind($ax.features.eventNames.mouseUpName, function(e) { - $ax.setjBrowserEvent(e); - longClickMouseCount++; - }); - }; - - - // Attach synthetic onSelectionChange event to droplist and listbox elements - if ($ax.event.HasSelectionChanged(dObj)) { - $element.bind('change', function(e) { - $ax.setjBrowserEvent(e); - _raiseSyntheticEvent(elementId, 'onSelectionChange'); - }); - }; - - // Highjack key up and key down to keep track of state of keyboard. - if($ax.event.HasKeyUpOrDown(dObj)) _event.initKeyEvents($element); - - // Attach synthetic onTextChange event to textbox and textarea elements - if ($ax.event.HasTextChanged(dObj)) { - var element = $jobj($ax.INPUT(elementId)); - $ax.updateElementText(elementId, element.val()); - //Key down needed because when holding a key down, key up only fires once, but keydown fires repeatedly. - //Key up because last mouse down will only show the state before the last character. - element.bind('keydown', function(e) { - $ax.setjBrowserEvent(e); - $ax.event.TryFireTextChanged(elementId); - }).bind('keyup', function(e) { - $ax.setjBrowserEvent(e); - $ax.event.TryFireTextChanged(elementId); - }); - }; - - // Attach synthetic onCheckedChange event to radiobutton and checkbox elements - if ($ax.public.fn.IsCheckBox(dObj.type) || $ax.public.fn.IsRadioButton(dObj.type)) { - var input = $jobj($ax.INPUT(elementId)); - if($ax.public.fn.IsRadioButton(dObj.type)) { - var radioGroupName = input.attr('name'); - if(input.prop('selected')) { - $ax.updateRadioButtonSelected(radioGroupName, elementId); - } - var onClick = function(e) { - if(radioGroupName !== elementId) { - var radioGroup = $("input[name='" + radioGroupName + "']").parent(); - for(var i = 0; i < radioGroup.length; i++) { - $ax.style.SetWidgetSelected(radioGroup[i].id, false, true); - } - } - $ax.style.SetWidgetSelected(elementId, true, true); - if(!$ax.style.IsWidgetDisabled(elementId)) e.originalEvent.handled = true; - }; - } else { - onClick = function(e) { - $ax.style.SetWidgetSelected(elementId, !$ax.style.IsWidgetSelected(elementId), true); - if(!$ax.style.IsWidgetDisabled(elementId)) e.originalEvent.handled = true; - }; - } - input.click(onClick); - - //$element.bind('change', function(e) { - // $ax.setjBrowserEvent(e); - // var eTarget = e.target || e.srcElement; - // _tryFireCheckedChanged(elementId, eTarget.selected); - //}); - }; - - var hasTap = map && (map.onClick || map.onDoubleClick); - var hasMove = map && map.onMouseMove; - _event.initMobileEvents(hasTap ? $element : $(), - hasMove ? $element : $(), elementId); - - - //attach link alternate styles - if(dObj.type == 'hyperlink') { - $element.mouseenter(function() { - var linkId = this.id; - if(_event.mouseOverIds.indexOf(linkId) != -1) return true; - _event.mouseOverIds[_event.mouseOverIds.length] = linkId; - var mouseOverObjectId = _event.mouseOverObjectId; - if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return true; - - $ax.style.SetLinkHover(linkId); - - var bubble = _fireObjectEvent(linkId, 'mouseenter', arguments); - - $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); - return bubble; - }).mouseleave(function() { - var linkId = this.id; - $ax.splice(_event.mouseOverIds, _event.mouseOverIds.indexOf(linkId), 1); - var mouseOverObjectId = _event.mouseOverObjectId; - if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return true; - - $ax.style.SetLinkNotHover(linkId); - - var bubble = _fireObjectEvent(linkId, 'mouseleave', arguments); - - $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); - return bubble; - }).bind($ax.features.eventNames.mouseDownName, function() { - var linkId = this.id; - var mouseOverObjectId = _event.mouseOverObjectId; - if($ax.style.IsWidgetDisabled(mouseOverObjectId)) return undefined; - - if(mouseOverObjectId) $ax.style.SetWidgetMouseDown(mouseOverObjectId, true); - $ax.style.SetLinkMouseDown(linkId); - - $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); - - return false; - }).bind($ax.features.eventNames.mouseUpName, function() { - var linkId = this.id; - var mouseOverObjectId = _event.mouseOverObjectId; - if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return; - - if(mouseOverObjectId) $ax.style.SetWidgetMouseDown(mouseOverObjectId, false); - $ax.style.SetLinkNotMouseDown(linkId); - - $ax.annotation.updateLinkLocations($ax.GetParentIdFromLink(linkId)); - - }).click(function() { - var elementId = this.id; - var mouseOverObjectId = _event.mouseOverObjectId; - if(mouseOverObjectId && $ax.style.IsWidgetDisabled(mouseOverObjectId)) return undefined; - - return _fireObjectEvent(elementId, 'click', arguments); - }); - } - - // Init inline frames - if (dObj.type == 'inlineFrame') { - var target = dObj.target; - var url = ''; - if(target.includeVariables && target.url) { - var origSrc = target.url; - url = origSrc.toLowerCase().indexOf('http://') == -1 ? $ax.globalVariableProvider.getLinkUrl(origSrc) : origSrc; - - } else if(target.urlLiteral) { - url = $ax.expr.evaluateExpr(target.urlLiteral, $ax.getEventInfoFromEvent(undefined, true, elementId), true); - } - if(url) $jobj($ax.INPUT(elementId)).attr('src', url); - }; - }); - } - $ax.initializeObjectEvents = _initializeObjectEvents; - - $axure.initializeObjectEvents = function (query, refreshType, _) { - //_initializeObjectEvents($ax(query), refreshType); - _initializeObjectEvents($ax(query), $ax.repeater.refreshType.persist); - } - - $ax.event.updateIxStyleEvents = function(elementId) { - _dettachIxStyleEvents(elementId); - _attachIxStyleEvents($ax.getObjectFromElementId(elementId), elementId, $jobj(elementId), true); - } - - function clearMouseDownIxStyle(e) { - if(_event.mouseDownObjectId) { - $('#' + _event.mouseDownObjectId).trigger( - { type: "mouseup", - checkMouseOver: e.data && e.data.checkMouseOver - } - ); - } - } - - var _dettachIxStyleEvents = function(elementId) { - var $element = $jobj(elementId); - $element.off('mouseenter.ixStyle') - .off('mouseleave.ixStyle') - .off($ax.features.eventNames.mouseDownName + '.ixStyle') - .off($ax.features.eventNames.mouseUpName + '.ixStyle'); - } - - var _attachIxStyleEvents = function(dObj, elementId, $element, ignoreHasIxStyles) { - //attach button shape alternate styles - var isDynamicPanel = $ax.public.fn.IsDynamicPanel(dObj.type); - var needsMouseFilter = (ignoreHasIxStyles || $ax.event.HasIxStyles(dObj)) - && dObj.type != 'hyperlink' && !$ax.public.fn.IsLayer(dObj.type) && !isDynamicPanel && dObj.type != $ax.constants.TEXT_TYPE && - !$ax.public.fn.IsRepeater(dObj.type) //&& !$ax.public.fn.IsCheckBox(dObj.type) && !$ax.public.fn.IsRadioButton(dObj.type) - && !$ax.public.fn.IsTreeNodeObject(dObj.type); - if(needsMouseFilter) { - //$element.mouseenter(function () { - $element.on('mouseenter.ixStyle', function () { - var elementId = this.id; - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent && parent.direct) return; - if($.inArray(elementId, _event.mouseOverIds) != -1) return; - _event.mouseOverIds[_event.mouseOverIds.length] = elementId; - - if(elementId == _event.mouseOverObjectId) return; - _event.mouseOverObjectId = elementId; - $ax.style.SetWidgetHover(elementId, true); - $ax.annotation.updateLinkLocations(elementId); - //}).mouseleave(function () { - }).on('mouseleave.ixStyle', function () { - var elementId = this.id; - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent && parent.direct) return; - $ax.splice(_event.mouseOverIds, $.inArray(elementId, _event.mouseOverIds), 1); - - if(elementId == _event.mouseOverObjectId) { - _event.mouseOverObjectId = ''; - } - $ax.style.SetWidgetHover(elementId, false); - $ax.annotation.updateLinkLocations(elementId); - }); - - //$element.bind($ax.features.eventNames.mouseDownName, function () { - $element.on($ax.features.eventNames.mouseDownName + '.ixStyle', function () { - var elementId = this.id; - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent) { - dynamicPanelMouseDown(parent.id); - if(parent.direct) return; - } - _event.mouseDownObjectId = elementId; - //since we don't do mouse capture, it's possible that the mouseup not get triggered later - //in that case, detect the mouseup on document and dragend - $(document).one("mouseup", {checkMouseOver: true}, clearMouseDownIxStyle); - $("#" + elementId).one("dragend", clearMouseDownIxStyle); - - $ax.style.SetWidgetMouseDown(this.id, true); - $ax.annotation.updateLinkLocations(elementId); - //}).bind($ax.features.eventNames.mouseUpName, function () { - }).on($ax.features.eventNames.mouseUpName + '.ixStyle', function (e) { - var elementId = this.id; - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent) { - dynamicPanelMouseUp(parent.id); - if(parent.direct) return; - } - - $(document).off("mouseup", clearMouseDownIxStyle); - - if(_event.mouseDownObjectId) { - $("#" + _event.mouseDownObjectId).off("dragend", clearMouseDownIxStyle); - _event.mouseDownObjectId = ''; - } - if(!$ax.style.ObjHasMouseDown(elementId)) return; - - $ax.style.SetWidgetMouseDown(elementId, false, e.checkMouseOver); - $ax.annotation.updateLinkLocations(elementId); - - //there used to be something we needed to make images click, because swapping out the images prevents the click - // this is a note that we can eventually delete. - }); - - } - }; - - var dynamicPanelMouseDown = function (elementId) { - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent) { - dynamicPanelMouseDown(parent.id); - if(parent.direct) return; - } - _event.mouseDownObjectId = elementId; - $ax.dynamicPanelManager.propagateMouseDown(elementId, true); - }; - - var dynamicPanelMouseUp = function (elementId) { - var parent = $ax.dynamicPanelManager.parentHandlesStyles(elementId); - if(parent) { - dynamicPanelMouseUp(parent.id); - if(parent.direct) return; - } - _event.mouseDownObjectId = ''; - $ax.dynamicPanelManager.propagateMouseDown(elementId, false); - }; - - // Handle key up and key down events - (function() { - var _keyState = {}; - _keyState.ctrl = false; - _keyState.alt = false; - _keyState.shift = false; - _keyState.keyCode = 0; - $ax.event.keyState = function() { - return $ax.deepCopy(_keyState); - }; - - var modifierCodes = [16, 17, 18]; - var clearKeyCode = false; - $ax.event.initKeyEvents = function($query) { - $query.keydown(function (e) { - if(clearKeyCode) { - clearKeyCode = false; - _keyState.keyCode = 0; - } - var elementId = this.id; - - _keyState.ctrl = e.ctrlKey; - - _keyState.alt = e.altKey; - - _keyState.shift = e.shiftKey; - - // If a modifier was pressed, then don't set the keyCode; - if(modifierCodes.indexOf(e.keyCode) == -1) _keyState.keyCode = e.keyCode; - - $ax.setjBrowserEvent(e); - if (!elementId) fireEventThroughContainers('onKeyDown', undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], - [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.LAYER_TYPE]); - else _raiseSyntheticEvent(elementId, 'onKeyDown', false, undefined, true); - }); - $query.keyup(function(e) { - var elementId = this.id; - - if (modifierCodes.indexOf(e.keyCode) == -1) clearKeyCode = true; - else if (clearKeyCode) { - clearKeyCode = false; - _keyState.keyCode = 0; - } - - $ax.setjBrowserEvent(e); - // Fire event before updating modifiers. - if (!elementId) fireEventThroughContainers('onKeyUp', undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], - [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.LAYER_TYPE]); - else _raiseSyntheticEvent(elementId, 'onKeyUp', false, undefined, true); - - //check if the key is handled before triggering player shortcuts - if(!e.isDefaultPrevented() && !elementId) { - switch(e.which) { - case 188: - $ax.messageCenter.postMessage('previousPage'); - break; - case 190: - $ax.messageCenter.postMessage('nextPage'); - break; - default: - return; // exit this handler for other keys - } - } - - }); - }; - })(); - - // Handle adding mobile events - (function() { - // NOTE: Multi touch is NOT handled currently. - var CLICK_THRESHOLD_PX = 25; - var CLICK_THRESHOLD_PX_SQ = CLICK_THRESHOLD_PX * CLICK_THRESHOLD_PX; - var DBLCLICK_THRESHOLD_MS = 500; - - // Location in page coordinates - var tapDownLoc; - var lastClickEventTime; - - _event.initMobileEvents = function($tapQuery, $moveQuery, elementId) { - if(!$ax.features.supports.mobile) return; - - // Handle touch start - $tapQuery.bind('touchstart', function(e) { - // We do NOT support multiple touches. This isn't necessarily the touch we want. - var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; - if(!touch) return; - - tapDownLoc = [touch.pageX, touch.pageY]; - - var time = (new Date()).getTime(); - if(time - lastClickEventTime < DBLCLICK_THRESHOLD_MS) { - var dObj = elementId === '' ? $ax.pageData.page : $ax.getObjectFromElementId(elementId); - var axEventObject = dObj && dObj.interactionMap && dObj.interactionMap['onDoubleClick']; - if(axEventObject) e.preventDefault(); //for Chrome on Android - } - }).bind('touchend', function(e) { - var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; - if(!touch || !tapDownLoc || $ax.style.IsWidgetDisabled(elementId)) return; - - var tapUpLoc = [touch.pageX, touch.pageY]; - var xDiff = tapUpLoc[0] - tapDownLoc[0]; - var yDiff = tapUpLoc[1] - tapDownLoc[1]; - - if((xDiff * xDiff + yDiff * yDiff) < CLICK_THRESHOLD_PX_SQ) { - $ax.setjBrowserEvent(e); - _raiseSyntheticEvent(elementId, 'onClick', false, undefined, true); - - var time = (new Date()).getTime(); - if(time - lastClickEventTime < DBLCLICK_THRESHOLD_MS) { - _raiseSyntheticEvent(elementId, 'onDoubleClick', false, undefined, true); - if(e.originalEvent && e.originalEvent.handled) e.preventDefault(); //for iOS - } - lastClickEventTime = time; - } - }); - - // Handles touch move - $moveQuery.bind('touchmove', function(e) { - $ax.setjBrowserEvent(e); - _raiseSyntheticEvent(elementId, 'onMouseMove', false, undefined, true); - if(e.originalEvent && e.originalEvent.handled) e.preventDefault(); - }); - }; - })(); - - // Handle adding device independent click events to non-widgets - (function() { - var CLICK_THRESHOLD_PX = 25; - var CLICK_THRESHOLD_PX_SQ = CLICK_THRESHOLD_PX * CLICK_THRESHOLD_PX; - - // Location in page cooridinates - var tapDownLoc; - - _event.attachClick = function(query, clickHandler) { - if(!$ax.features.supports.mobile) { - query.click(clickHandler); - return; - } - - $(query).bind('touchstart', function(e) { - // We do NOT support multiple touches. This isn't necessarily the touch we want. - var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; - if(!touch) return; - - tapDownLoc = [touch.pageX, touch.pageY]; - }); - - $(query).bind('touchend', function(e) { - var touch = e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]; - if(!touch) return; - - var tapUpLoc = [touch.pageX, touch.pageY]; - var xDiff = tapUpLoc[0] - tapDownLoc[0]; - var yDiff = tapUpLoc[1] - tapDownLoc[1]; - - if((xDiff * xDiff + yDiff * yDiff) < CLICK_THRESHOLD_PX_SQ) { - clickHandler(); - } - }); - }; - })(); - - // Handle firing device independent click events on widgets - (function() { - _event.fireClick = function(elementId) { - if(!$ax.features.supports.mobile) { - $('#' + elementId).click(); - return; - } - _raiseSyntheticEvent(elementId, 'onClick', false, undefined, true); - }; - })(); - - var _mouseLocation = $ax.mouseLocation = { x: 0, y: 0 }; - var _lastmouseLocation = $ax.lastMouseLocation = { x: 0, y: 0 }; - - var _updateMouseLocation = function(e, end) { - if(!e) return; - - if(IE_10_AND_BELOW && typeof (e.type) == 'unknown') return; - if(e.type != 'mousemove' && e.type != 'touchstart' && e.type != 'touchmove' && e.type != 'touchend' - && e.type != 'pointermove' && e.type != 'pointerdown' && e.type != 'pointerup') return; - - var newX; - var newY; - if(IE_10_AND_BELOW) { - newX = e.clientX + $('html').scrollLeft(); - newY = e.clientY + $('html').scrollTop(); - } else { - newX = e.pageX; - newY = e.pageY; - } - //var body = $('body'); - //if(body.css('position') == 'relative') newX = Math.round(newX - Number(body.css('left').replace('px', '')) - Math.max(0, ($(window).width() - body.width()) / 2)); - - if(_mouseLocation.x == newX && _mouseLocation.y == newY) return; - - _lastmouseLocation.x = _mouseLocation.x; - _lastmouseLocation.y = _mouseLocation.y; - _mouseLocation.x = newX; - _mouseLocation.y = newY; - - $ax.geometry.tick(_mouseLocation.x, _mouseLocation.y, end); - }; - _event.updateMouseLocation = _updateMouseLocation; - - var _leavingState = function(stateId) { - var mouseOverIds = _event.mouseOverIds; - if(mouseOverIds.length == 0) return; - - var stateQuery = $jobj(stateId); - for(var i = mouseOverIds.length - 1; i >= 0; i--) { - var id = mouseOverIds[i]; - if(stateQuery.find('#' + id).length) { - $ax.splice(mouseOverIds, $.inArray(id, mouseOverIds), 1); - $ax.style.SetWidgetMouseDown(id, false); - $ax.style.SetWidgetHover(id, false); - } - } - - }; - _event.leavingState = _leavingState; - - var _raiseSelectedEvents = function(elementId, value) { - $ax.event.raiseSyntheticEvent(elementId, 'onSelectedChange'); - if(value) $ax.event.raiseSyntheticEvent(elementId, 'onSelect'); - else $ax.event.raiseSyntheticEvent(elementId, 'onUnselect'); - }; - $ax.event.raiseSelectedEvents = _raiseSelectedEvents; - - var _raiseSyntheticEvent = function (elementId, eventName, skipShowDescription, eventInfo, nonSynthetic) { - if ($ax.style.IsWidgetDisabled(elementId) && _shouldStopOnDisabledWidget(eventName)) return; - // Empty string used when this is an event directly on the page. - var dObj = elementId === '' ? $ax.pageData.page : $ax.getObjectFromElementId(elementId); - var axEventObject = dObj && dObj.interactionMap && dObj.interactionMap[eventName]; - if (!axEventObject) return; - - eventInfo = eventInfo || $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), skipShowDescription, elementId); - // $ax.recording.maybeRecordEvent(elementId, eventInfo, axEventObject, new Date().getTime()); - _handleEvent(elementId, eventInfo, axEventObject, false, !nonSynthetic); - }; - $ax.event.raiseSyntheticEvent = _raiseSyntheticEvent; - - var _shouldStopOnDisabledWidget = function (eventName) { - var blackList = ["onLongClick"]; - return blackList.some(x => x === eventName); - } - - var _hasSyntheticEvent = function(scriptId, eventName) { - var dObj = $ax.getObjectFromScriptId(scriptId); - var axEventObject = dObj && dObj.interactionMap && dObj.interactionMap[eventName]; - return Boolean(axEventObject); - }; - $ax.event.hasSyntheticEvent = _hasSyntheticEvent; - - var _addEvent = function (target, eventType, handler, useCapture) { - //this return value is only for debug purpose - var succeed = undefined; - if(target.attachEvent) { - if($ax.features.supports.windowsMobile) { - succeed = target.attachEvent(eventType, handler); - } else { - succeed = target.attachEvent('on' + eventType, handler); - } - } else if(target.addEventListener) { - target.addEventListener(eventType, handler, useCapture); - succeed = true; - } - - return succeed; - } - $ax.event.addEvent = _addEvent; - - var _removeEvent = function(target, eventType, handler, useCapture, skipCheckingWindowsMobile) { - //this return value is only for debug purpose - var succeed = undefined; - - if(target.detachEvent) { - if(!skipCheckingWindowsMobile && $ax.features.supports.windowsMobile) { - succeed = target.detachEvent(eventType, handler); - } else { - succeed = target.detachEvent('on' + eventType, handler); - } - } else if(target.removeEventListener) { - target.removeEventListener(eventType, handler, useCapture); - succeed = true; - } - - return succeed; - } - $ax.event.removeEvent = _removeEvent; - - var _initialize = function() { - $ax.repeater.loadRepeaters(); - - // Make sure key events for page are initialized first. That way they will update the value of key pressed before any other events occur. - _event.initKeyEvents($(window)); - - initSuppressingEvents(); - - // Anything with an item id is in a repeater and should be handled by that repeater. - _initializeObjectEvents($ax(function(obj, elementId) { return !$ax.repeater.getItemIdFromElementId(elementId); })); - - //finally, process the pageload - _pageLoad(); - // _loadDynamicPanelsAndMasters(); - // $ax.repeater.init(); - - // and wipe out the basic links. - $('.basiclink').click(function() { - return false; - }); - }; - _event.initialize = _initialize; - - $ax.event.HasIxStyles = function(diagramObject) { - if(diagramObject.style.stateStyles) return true; - if(diagramObject.adaptiveStyles) { - for(var viewId in diagramObject.adaptiveStyles) { - if(diagramObject.adaptiveStyles[viewId].stateStyles) return true; - } - } - return false; - }; - - $ax.event.HasTextChanged = function(diagramObject) { - if (!$ax.public.fn.IsTextBox(diagramObject.type) && !$ax.public.fn.IsTextArea(diagramObject.type)) return false; - var map = diagramObject.interactionMap; - return map && map.onTextChange; - }; - - $ax.event.TryFireTextChanged = function(elementId) { - var query = $jobj($ax.repeater.applySuffixToElementId(elementId, '_input')); - if(!$ax.hasElementTextChanged(elementId, query.val())) return; - $ax.updateElementText(elementId, query.val()); - - $ax.event.raiseSyntheticEvent(elementId, 'onTextChange'); - }; - - $ax.event.HasSelectionChanged = function(diagramObject) { - if (!$ax.public.fn.IsListBox(diagramObject.type) && !$ax.public.fn.IsComboBox(diagramObject.type)) return false; - var map = diagramObject.interactionMap; - return map && map.onSelectionChange; - }; - - $ax.event.HasKeyUpOrDown = function (diagramObject) { - if($ax.public.fn.IsTextBox(diagramObject.type) || $ax.public.fn.IsTextArea(diagramObject.type)) return true; - var map = diagramObject.interactionMap; - return map && (map.onKeyUp || map.onKeyDown); - }; - - $ax.event.HasCheckedChanged = function(diagramObject) { - if (!$ax.public.fn.IsCheckBox(diagramObject.type) && !$ax.public.fn.IsRadioButton(diagramObject.type)) return false; - var map = diagramObject.interactionMap; - return map && map.onSelectedChange; - }; - - $ax.event.HasClick = function (diagramObject) { - var map = diagramObject.interactionMap; - return map && map.onClick; - }; - - //onload everything now, not only dp and master - var _loadDynamicPanelsAndMasters = function(objects, path, itemId) { - fireEventThroughContainers('onLoad', objects, true, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE], - [$ax.constants.ALL_TYPE], path, itemId); - }; - $ax.loadDynamicPanelsAndMasters = _loadDynamicPanelsAndMasters; - - var _viewChangePageAndMasters = function(forceSwitchTo) { - fireEventThroughContainers('onAdaptiveViewChange', undefined, true, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE], - [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE]); - _postAdaptiveViewChanged(forceSwitchTo); - }; - $ax.viewChangePageAndMasters = _viewChangePageAndMasters; - - //if forceSwitchTo is true, we will also update the checkmark in sitemap.js - var _postAdaptiveViewChanged = function(forceSwitchTo) { - //only trigger adaptive view changed if the window is on the mainframe. Also triggered on init, even if default. - try { - if(window.name == 'mainFrame' || - (!CHROME_5_LOCAL && window.parent.$ && window.parent.$('#mainFrame').length > 0)) { - var data = { - viewId: $ax.adaptive.currentViewId, - forceSwitchTo: forceSwitchTo - }; - $axure.messageCenter.postMessage('adaptiveViewChange', data); - } - } catch(e) { } - }; - $ax.postAdaptiveViewChanged = _postAdaptiveViewChanged; - - var _postResize = $ax.postResize = function(e) { - $ax.setjBrowserEvent(e); - return fireEventThroughContainers('onResize', undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], - [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE]); - }; - - //fire events for table, menu and tree, including its sub items - var _fireEventsForTableMenuAndTree = function (object, event, skipShowDescription, eventInfo, path, synthetic) { - if (!path) path = []; - var pathCopy = path.slice(); - - pathCopy[path.length] = object.id; - var scriptId = $ax.getScriptIdFromPath(pathCopy); - $ax.event.raiseSyntheticEvent(scriptId, event, skipShowDescription, eventInfo, !synthetic); - - if(object.objects) { - for(var index = 0; index < object.objects.length; index++) { - var subObj = object.objects[index]; - if ($ax.public.fn.IsTableCell(subObj.type)) { - pathCopy[path.length] = subObj.id; - scriptId = $ax.getScriptIdFromPath(pathCopy); - $ax.event.raiseSyntheticEvent(scriptId, event, skipShowDescription, eventInfo, !synthetic); - } else if ($ax.public.fn.IsTable(object.type) || $ax.public.fn.IsMenuObject(object.type) || $ax.public.fn.IsTreeNodeObject(object.type)) { - _fireEventsForTableMenuAndTree(subObj, event, skipShowDescription, eventInfo, path, synthetic); - } - } - } - } - - //remember the scroll bar position, so we can detect scroll up/down - var lastScrollTop; - - var fireEventForPageOrMaster = function (elementId, eventName, interactionMap, isPage, skipShowDescription, synthetic) { - if(!interactionMap) return; - - var axEvent = interactionMap[eventName]; - var scrolling = eventName === "onScroll"; - if (scrolling && !axEvent) axEvent = interactionMap.onScrollUp || interactionMap.onScrollDown; - - if (axEvent) { - var currentEvent = $ax.getjBrowserEvent(); - var eventInfo = $ax.getEventInfoFromEvent(currentEvent, skipShowDescription, elementId); - - if(isPage) { - eventInfo.label = $ax.pageData.page.name; - eventInfo.friendlyType = 'Page'; - } else eventInfo.isMasterEvent = true; - - if(scrolling) _handleScrollEvent(elementId, eventInfo, currentEvent.originalEvent, _event.windowScrollingUp, _event.windowScrollingDown, interactionMap, skipShowDescription, synthetic); - else _handleEvent(elementId, eventInfo, axEvent, skipShowDescription, synthetic); - } - } - // Filters include page, referenceDiagramObject, dynamicPanel, and repeater. - var _callFilterCheck = function(callFilter, type) { - for(var index = 0; index < callFilter.length; index++) { - var currentType = callFilter[index]; - if(currentType === $ax.constants.ALL_TYPE || currentType === type) return true; - } - return false; - }; - - var fireEventThroughContainers = function(eventName, objects, synthetic, searchFilter, callFilter, path, itemId) { - // TODO: may want to pass in this as a parameter. At that point, may want to convert some of them to an option parameter. For now this is the only case - var skipShowDescription = eventName == 'onLoad'; - - // If objects undefined, load page - if(!objects) { - if(_callFilterCheck(callFilter, $ax.constants.PAGE_TYPE)) { - //if scrolling, set direction, later master will know - if(eventName === "onScroll") { - var currentScrollTop = ((SAFARI && IOS) || SHARE_APP) ? $('#ios-safari-html').scrollTop() : $(window).scrollTop(); - _event.windowScrollingUp = currentScrollTop < lastScrollTop; - _event.windowScrollingDown = currentScrollTop > lastScrollTop; - } - - fireEventForPageOrMaster('', eventName, $ax.pageData.page.interactionMap, true, skipShowDescription, synthetic); - } - if(searchFilter.indexOf($ax.constants.PAGE_TYPE) != -1) fireEventThroughContainers(eventName, $ax.pageData.page.diagram.objects, synthetic, searchFilter, callFilter); - //reset and save scrolling info at the end - if(currentScrollTop) { - lastScrollTop = currentScrollTop; - _event.windowScrollingUp = undefined; - _event.windowScrollingDown = undefined; - } - - return; - } - - if(!path) path = []; - - var pathCopy = []; - for(var j = 0; j < path.length; j++) pathCopy[j] = path[j]; - - for(var i = 0; i < objects.length; i++) { - var obj = objects[i]; - pathCopy[path.length] = obj.id; - if (!$ax.public.fn.IsReferenceDiagramObject(obj.type) && !$ax.public.fn.IsDynamicPanel(obj.type) && !$ax.public.fn.IsRepeater(obj.type) && !$ax.public.fn.IsLayer(obj.type)) { - if(_callFilterCheck(callFilter)) { //fire current event for all types - if ($ax.public.fn.IsTable(obj.type) || $ax.public.fn.IsMenuObject(obj.type) || $ax.public.fn.IsTreeNodeObject(obj.type)) { - _fireEventsForTableMenuAndTree(obj, eventName, skipShowDescription, undefined, path, !synthetic); - } else { - var scriptId = $ax.getScriptIdFromPath(pathCopy); - if(scriptId && itemId) scriptId = $ax.repeater.createElementId(scriptId, itemId); - $ax.event.raiseSyntheticEvent(scriptId, eventName, skipShowDescription, undefined, !synthetic); - } - } - continue; - } - - var objId = $ax.getScriptIdFromPath(pathCopy); - // If limboed, move on to next item - if(!objId) continue; - if(itemId) objId = $ax.repeater.createElementId(objId, itemId); - - if($ax.public.fn.IsReferenceDiagramObject(obj.type)) { - if(_callFilterCheck(callFilter, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE)) { - fireEventForPageOrMaster(objId, eventName, $ax.pageData.masters[obj.masterId].interactionMap, false, skipShowDescription, synthetic); - } - if(searchFilter.indexOf($ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE) != -1) fireEventThroughContainers(eventName, $ax.pageData.masters[obj.masterId].diagram.objects, synthetic, searchFilter, callFilter, pathCopy, itemId); - } else if($ax.public.fn.IsDynamicPanel(obj.type)) { - if(_callFilterCheck(callFilter, $ax.constants.DYNAMIC_PANEL_TYPE)) $ax.event.raiseSyntheticEvent(objId, eventName, skipShowDescription, undefined, !synthetic); - - if(searchFilter.indexOf($ax.constants.DYNAMIC_PANEL_TYPE) != -1) { - var diagrams = obj.diagrams; - for(var j = 0; j < diagrams.length; j++) { - fireEventThroughContainers(eventName, diagrams[j].objects, synthetic, searchFilter, callFilter, path, itemId); - } - } - } else if($ax.public.fn.IsRepeater(obj.type)) { - // TODO: possible an option for repeater item? Now fires overall for the repeater - if(_callFilterCheck(callFilter, $ax.constants.REPEATER)) $ax.event.raiseSyntheticEvent(objId, eventName, skipShowDescription, undefined, !synthetic); - if(searchFilter.indexOf($ax.constants.REPEATER) != -1) { - var itemIds = $ax.getItemIdsForRepeater(objId); - for(var j = 0; j < itemIds.length; j++) { - fireEventThroughContainers(eventName, obj.objects, synthetic, searchFilter, callFilter, path, itemIds[j]); - } - } - } else if($ax.public.fn.IsLayer(obj.type)) { - if(_callFilterCheck(callFilter, $ax.constants.LAYER_TYPE)) $ax.event.raiseSyntheticEvent(objId, eventName, skipShowDescription, undefined, !synthetic); - - if(obj.objs && obj.objs.length > 0) { - fireEventThroughContainers(eventName, obj.objs, synthetic, searchFilter, callFilter, path, itemId); - } - } - } - - eventNesting -= 1; - - }; // FOCUS stuff - (function() { - - })(); - - - var _pageLoad = function() { - - // Map of axure event names to pair of what it should attach to, and what the jquery event name is. - var PAGE_AXURE_TO_JQUERY_EVENT_NAMES = { - 'onScroll': [window, 'scroll'], - 'onScrollUp': [window, 'scrollup'], - 'onScrollDown': [window, 'scrolldown'], - //'onResize': [window, 'resize'], - 'onContextMenu': [window, 'contextmenu'] - }; - - var $win = $(window); - if(!$ax.features.supports.mobile) { - PAGE_AXURE_TO_JQUERY_EVENT_NAMES.onClick = ['html', 'click']; - PAGE_AXURE_TO_JQUERY_EVENT_NAMES.onDoubleClick = ['html', 'dblclick']; - PAGE_AXURE_TO_JQUERY_EVENT_NAMES.onMouseMove = ['html', 'mousemove']; - } else { - _event.initMobileEvents($win, $win, ''); - } - - $win.bind($ax.features.eventNames.mouseDownName, _updateMouseLocation); - $win.bind($ax.features.eventNames.mouseUpName, function(e) { _updateMouseLocation(e, true); }); - - $win.scroll(function () { _setCanClick(false); }); - $win.bind($ax.features.eventNames.mouseDownName, function () { _setCanClick(true); }); - - $win.bind($ax.features.eventNames.mouseMoveName, _updateMouseLocation); - $win.scroll($ax.flyoutManager.reregisterAllFlyouts); - - for(key in PAGE_AXURE_TO_JQUERY_EVENT_NAMES) { - if(!PAGE_AXURE_TO_JQUERY_EVENT_NAMES.hasOwnProperty(key)) continue; - (function(axureName) { - var jqueryEventNamePair = PAGE_AXURE_TO_JQUERY_EVENT_NAMES[axureName]; - var actionName = jqueryEventNamePair[1]; - - if(actionName == "scrollup" || actionName == "scrolldown") return; - - var jObj = jqueryEventNamePair[0]; - if ((SAFARI && IOS) || SHARE_APP) jObj = '#ios-safari-html'; - - $(jObj)[actionName](function (e) { - $ax.setjBrowserEvent(e); - if(_shouldIgnoreLabelClickFromCheckboxOrRadioButton(e)) return; - return fireEventThroughContainers(axureName, undefined, false, [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.REPEATER], - [$ax.constants.PAGE_TYPE, $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE]); - }); - })(key); - } - - eventNesting -= 1; - lastScrollTop = 0; - }; - _event.pageLoad = _pageLoad; - - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/expr.js b/web/main/static/resources/scripts/axure/expr.js deleted file mode 100644 index 9e9c245..0000000 --- a/web/main/static/resources/scripts/axure/expr.js +++ /dev/null @@ -1,579 +0,0 @@ -// ******* Expr MANAGER ******** // -$axure.internal(function($ax) { - var _expr = $ax.expr = {}; - var _binOpHandlers = { - '&&': function(left, right) { return _binOpOverride(left, right, function(left) { return $ax.getBool(left) && $ax.getBool(right()); }); }, - '||': function(left, right) { return _binOpOverride(left, right, function(left) { return $ax.getBool(left) || $ax.getBool(right()); }); }, - '==': function(left, right) { return isEqual(left, right, true); }, - '!=': function(left, right) { return !isEqual(left, right, true); }, - '>': function(left, right) { return _binOpNum(left, right, function(left, right) { return left > right; }); }, - '<': function(left, right) { return _binOpNum(left, right, function(left, right) { return left < right; }); }, - '>=': function(left, right) { return _binOpNum(left, right, function(left, right) { return left >= right; }); }, - '<=': function(left, right) { return _binOpNum(left, right, function(left, right) { return left <= right; }); } - }; - - var checkOps = function(left, right) { - return left == undefined || right == undefined; - }; - - var isEqual = function (left, right, isFunction) { - if (isFunction) { - //if left and right is function, then get the value - //otherwise left and right should be already the value we want - left = left(); - right = right(); - } - - if(checkOps(left, right)) return false; - - if(left instanceof Date && right instanceof Date) { - if(left.getMilliseconds() != right.getMilliseconds()) return false; - if(left.getSeconds() != right.getSeconds()) return false; - if(left.getMinutes() != right.getMinutes()) return false; - if(left.getHours() != right.getHours()) return false; - if(left.getDate() != right.getDate()) return false; - if(left.getMonth() != right.getMonth()) return false; - if(left.getYear() != right.getYear()) return false; - return true; - } - - if(left instanceof Object && right instanceof Object) { - var prop; - // Go through all of lefts properties and compare them to rights. - for(prop in left) { - if(!left.hasOwnProperty(prop)) continue; - // If left has a property that the right doesn't they are not equal. - if(!right.hasOwnProperty(prop)) return false; - // If any of their properties are not equal, they are not equal. - if(!isEqual(left[prop], right[prop], false)) return false; - } - - for(prop in right) { - // final check to make sure right doesn't have some extra properties that make them not equal. - if(left.hasOwnProperty(prop) != right.hasOwnProperty(prop)) return false; - } - - return true; - } - return $ax.getBool(left) == $ax.getBool(right); - }; - - var _binOpOverride = function(left, right, func) { - left = left(); - if(left == undefined) return false; - var res = func(left, right); - return res == undefined ? false : res; - }; - - var _binOpNum = function(left, right, func) { - var left = left(); - var right = right(); - if(checkOps(left, right)) return false; - - return func(left, Number(right)); - }; - - var _exprHandlers = {}; - _exprHandlers.array = function(expr, eventInfo) { - var returnVal = []; - for(var i = 0; i < expr.items.length; i++) { - returnVal[returnVal.length] = _evaluateExpr(expr.items[i], eventInfo); - } - return returnVal; - }; - - _exprHandlers.binaryOp = function(expr, eventInfo) { - var left = function() { return expr.leftExpr && _evaluateExpr(expr.leftExpr, eventInfo); }; - var right = function() { return expr.rightExpr && _evaluateExpr(expr.rightExpr, eventInfo); }; - - if(left == undefined || right == undefined) return false; - return _binOpHandlers[expr.op](left, right); - }; - - _exprHandlers.block = function(expr, eventInfo) { - var subExprs = expr.subExprs; - for(var i = 0; i < subExprs.length; i++) { - _evaluateExpr(subExprs[i], eventInfo); //ignore the result - } - }; - - _exprHandlers.booleanLiteral = function(expr) { - return expr.value; - }; - - _exprHandlers.nullLiteral = function() { return null; }; - - _exprHandlers.pathLiteral = function(expr, eventInfo) { - if(expr.isThis) return [eventInfo.srcElement]; - if(expr.isFocused && window.lastFocusedControl) { - $ax('#' + window.lastFocusedControl).focus(); - return [window.lastFocusedControl]; - } - if(expr.isTarget) return [eventInfo.targetElement]; - - return $ax.getElementIdsFromPath(expr.value, eventInfo); - }; - - _exprHandlers.panelDiagramLiteral = function(expr, eventInfo) { - var elementIds = $ax.getElementIdsFromPath(expr.panelPath, eventInfo); - var elementIdsWithSuffix = []; - var suffix = '_state' + expr.panelIndex; - for(var i = 0; i < elementIds.length; i++) { - elementIdsWithSuffix[i] = $ax.repeater.applySuffixToElementId(elementIds[i], suffix); - } - return String($jobj(elementIdsWithSuffix).data('label')); - }; - - _exprHandlers.fcall = function(expr, eventInfo) { - var oldTarget = eventInfo.targetElement; - var targets = []; - var fcallArgs = []; - var exprArgs = expr.arguments; - for(var i = 0; i < expr.arguments.length; i++) { - var exprArg = exprArgs[i]; - var fcallArg = ''; - if(targets.length) { - for(var j = 0; j < targets.length; j++) { - if(exprArg == null) { - fcallArgs[j][i] = null; - continue; - } - eventInfo.targetElement = targets[j]; - fcallArg = _evaluateExpr(exprArg, eventInfo); - if(typeof (fcallArg) == 'undefined') return ''; - fcallArgs[j][i] = fcallArg; - } - } else { - if(exprArg == null) { - fcallArgs[i] = null; - continue; - } - fcallArg = _evaluateExpr(exprArg, eventInfo); - if(typeof (fcallArg) == 'undefined') return ''; - fcallArgs[i] = fcallArg; - } - - // We do support null exprArgs... - // TODO: This makes 2 assumptions that may change in the future. 1. The pathLiteral is the always the first arg. 2. there is always only 1 pathLiteral - if(exprArg && exprArg.exprType == 'pathLiteral') { - targets = fcallArg; - - // fcallArgs is now an array of an array of args - for(j = 0; j < targets.length; j++) fcallArgs[j] = [[fcallArg[j]]]; - } - } - - // we want to preserve the target element from outside this function. - eventInfo.targetElement = oldTarget; - - var retval = ''; - if(targets.length) { - // Go backwards so retval is the first item. - for(i = targets.length - 1; i >= 0; i--) { - var args = fcallArgs[i]; - // Add event info to the end - args[args.length] = eventInfo; - retval = _exprFunctions[expr.functionName].apply(this, args); - } - } else fcallArgs[fcallArgs.length] = eventInfo; - return targets.length ? retval : _exprFunctions[expr.functionName].apply(this, fcallArgs); - }; - - _exprHandlers.globalVariableLiteral = function(expr) { - return expr.variableName; - }; - - _exprHandlers.keyPressLiteral = function(expr) { - var keyInfo = {}; - keyInfo.keyCode = expr.keyCode; - keyInfo.ctrl = expr.ctrl; - keyInfo.alt = expr.alt; - keyInfo.shift = expr.shift; - - return keyInfo; - }; - - _exprHandlers.adaptiveViewLiteral = function(expr) { - return expr.id; - }; - - _exprHandlers.optionLiteral = function(expr) { - return expr.value; - } - - var _substituteSTOs = function(expr, eventInfo) { - //first evaluate the local variables - var scope = {}; - for(var varName in expr.localVariables) { - scope[varName] = $ax.expr.evaluateExpr(expr.localVariables[varName], eventInfo); - } - - // TODO: [ben] Date and data object (obj with info for url or image) both need to return non-strings. - var i = 0; - var retval; - var retvalString = expr.value.replace(/\[\[(?!\[)(.*?)\]\](?=\]*)/g, function(match) { - var sto = expr.stos[i++]; - if(sto.sto == 'error') return match; - try { - var result = $ax.evaluateSTO(sto, scope, eventInfo); - } catch(e) { - return match; - } - - if((result instanceof Object) && i == 1 && expr.value.substring(0, 2) == '[[' && - expr.value.substring(expr.value.length - 2) == ']]') { - // If the result was an object, this was the first result, and the whole thing was this expresion. - retval = result; - } - return ((result instanceof Object) && (result.label || result.text)) || result; - }); - // If more than one group returned, the object is not valid - if(i != 1) retval = false; - return retval || retvalString; - }; - - _exprHandlers.htmlLiteral = function (expr, eventInfo) { - eventInfo.htmlLiteral = true; - var html = _substituteSTOs(expr, eventInfo); - eventInfo.htmlLiteral = false - return html; - }; - - _exprHandlers.stringLiteral = function(expr, eventInfo) { - return _substituteSTOs(expr, eventInfo); - }; - - var _exprFunctions = {}; - - _exprFunctions.SetCheckState = function(elementIds, value) { - var toggle = value == 'toggle'; - var boolValue = Boolean(value) && value != 'false'; - - for(var i = 0; i < elementIds.length; i++) { - var query = $ax('#' + elementIds[i]); - query.selected(toggle ? !query.selected() : boolValue); - } - }; - - _exprFunctions.SetSelectedOption = function(elementIds, value) { - for(var i = 0; i < elementIds.length; i++) { - var elementId = elementIds[i]; - var obj = $jobj($ax.INPUT(elementId)); - - if(obj.val() == value) return; - obj.val(value); - - if($ax.event.HasSelectionChanged($ax.getObjectFromElementId(elementId))) $ax.event.raiseSyntheticEvent(elementId, 'onSelectionChange'); - } - }; - - _exprFunctions.SetGlobalVariableValue = function(varName, value) { - $ax.globalVariableProvider.setVariableValue(varName, value); - }; - - _exprFunctions.SetWidgetFormText = function(elementIds, value) { - for(var i = 0; i < elementIds.length; i++) { - var elementId = elementIds[i]; - var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); - - var obj = $jobj(inputId); - if(obj.val() == value || (value == '' && $ax.placeholderManager.isActive(elementId))) return; - obj.val(value); - $ax.placeholderManager.updatePlaceholder(elementId, !value); - if($ax.event.HasTextChanged($ax.getObjectFromElementId(elementId))) $ax.event.TryFireTextChanged(elementId); - } - }; - - _exprFunctions.SetFocusedWidgetText = function(elementId, value) { - if(window.lastFocusedControl) { - var elementId = window.lastFocusedControl; - var type = $obj(elementId).type; - if ($ax.public.fn.IsTextBox(type) || $ax.public.fn.IsTextArea(type)) _exprFunctions.SetWidgetFormText([elementId], value); - else _exprFunctions.SetWidgetRichText([elementId], value, true); - } - }; - - _exprFunctions.GetRtfElementHeight = function(rtfElement) { - if(rtfElement.innerHTML == '') rtfElement.innerHTML = ' '; - return rtfElement.offsetHeight; - }; - - _exprFunctions.SetWidgetRichText = function(ids, value, plain) { - // Converts dates, widgetinfo, and the like to strings. - value = _exprFunctions.ToString(value); - - //Replace any newlines with line breaks - var finalValue = value.replace(/\r\n/g, '
    ').replace(/\n/g, '
    '); - - for(var i = 0; i < ids.length; i++) { - var id = ids[i]; - - // If calling this on button shape, get the id of the rich text panel inside instead - if($obj(id).type !== $ax.constants.LINK_TYPE) id = $ax.GetTextPanelId(id, true); - - var element = window.document.getElementById(id); - $ax.visibility.SetVisible(element, value != ''); - - $ax.style.transformTextWithVerticalAlignment(id, function() { - var spans = $jobj(id).find('span'); - if(plain) { - // Can't set value as text because '
    ' doesn't actually do a line break - // Can't set vaule as html because it doesn't like '<' and ignores all after it - // Create tags yourself - var lines = value.split(/\r\n|\n/); - //if we are dealing with only one line, just reuse the old one - if(spans.length === 1 && lines.length === 1) { - $(spans[0]).text(value); - return; - } - - // Wrap in span and p, style them accordingly. - var span = $(''); - if(spans.length > 0) { - span.attr('style', $(spans[0]).attr('style')); - span.attr('id', $(spans[0]).attr('id')); - } - - if(lines.length == 1) span.text(value); - else { - for(var i = 0; i < lines.length; i++) { - if(i != 0) span.append($('
    ')); - var line = lines[i]; - if(line.length == 0) continue; - - var subSpan = $(''); - subSpan.text(line); - span.append(subSpan); - } - } - - var ps = $jobj(id).find('p'); - if(ps && ps.length) { - ps[0].innerHTML = $('
    ').append(span).html();; - if(ps.length > 1) { - for(var i = 1; i < ps.length; i++) { - $(ps[i]).remove(); - } - } - } else { - var p = $('

    '); - p.append(span); - element.innerHTML = $('
    ').append(p).html(); - } - } else element.innerHTML = finalValue; - }); - - if(!plain) $ax.style.CacheOriginalText(id, true); - } - }; - - _exprFunctions.GetCheckState = function(ids) { - return $ax('#' + ids[0]).selected(); - }; - - _exprFunctions.GetDisabledState = function (ids) { - return !$ax('#' + ids[0]).enabled(); - }; - - _exprFunctions.GetSelectedOption = function (ids) { - var inputs = $jobj($ax.INPUT(ids[0])); - return inputs.length ? inputs[0].value : ''; - }; - - _exprFunctions.GetNum = function(str) { - //Setting a GlobalVariable to some blank text then setting a widget to the value of that variable would result in 0 not "" - //I have fixed this another way so commenting this should be fine now - //if (!str) return ""; - return isNaN(str) ? str : Number(str); - }; - - _exprFunctions.GetGlobalVariableValue = function(id) { - return $ax.globalVariableProvider.getVariableValue(id); - }; - - _exprFunctions.GetGlobalVariableLength = function(id) { - return _exprFunctions.GetGlobalVariableValue(id).length; - }; - - _exprFunctions.GetWidgetText = function(ids) { - if($ax.placeholderManager.isActive(ids[0])) return ''; - var input = $ax.INPUT(ids[0]); - return $ax('#' + ($jobj(input).length ? input : ids[0])).text(); - }; - - _exprFunctions.GetFocusedWidgetText = function() { - if(window.lastFocusedControl) { - return $ax('#' + window.lastFocusedControl).text(); - } else { - return ""; - } - }; - - _exprFunctions.GetWidgetValueLength = function(ids) { - var id = ids[0]; - if(!id) return undefined; - if($ax.placeholderManager.isActive(id)) return 0; - var obj = $jobj($ax.INPUT(id)); - if(!obj.length) obj = $jobj(id); - var val = obj[0].value || _exprFunctions.GetWidgetText([id]); - return val.length; - }; - - _exprFunctions.GetPanelState = function(ids) { - var id = ids[0]; - if(!id) return undefined; - var stateId = $ax.visibility.GetPanelState(id); - return stateId && String($jobj(stateId).data('label')); - }; - - _exprFunctions.GetWidgetVisibility = function(ids) { - var id = ids[0]; - if(!id) return undefined; - return $ax.visibility.IsIdVisible(id); - }; - - // ***************** Validation Functions ***************** // - - _exprFunctions.IsValueAlpha = function(val) { - var isAlphaRegex = new RegExp("^[a-z\\s]+$", "gi"); - return isAlphaRegex.test(val); - }; - - _exprFunctions.IsValueNumeric = function(val) { - var isNumericRegex = new RegExp("^[0-9,\\.\\s]+$", "gi"); - return isNumericRegex.test(val); - }; - - _exprFunctions.IsValueAlphaNumeric = function(val) { - var isAlphaNumericRegex = new RegExp("^[0-9a-z\\s]+$", "gi"); - return isAlphaNumericRegex.test(val); - }; - - _exprFunctions.IsValueOneOf = function(val, values) { - for(var i = 0; i < values.length; i++) { - var option = values[i]; - if(val == option) return true; - } - //by default, return false - return false; - }; - - _exprFunctions.IsValueNotAlpha = function(val) { - return !_exprFunctions.IsValueAlpha(val); - }; - - _exprFunctions.IsValueNotNumeric = function(val) { - return !_exprFunctions.IsValueNumeric(val); - }; - - _exprFunctions.IsValueNotAlphaNumeric = function(val) { - return !_exprFunctions.IsValueAlphaNumeric(val); - }; - - _exprFunctions.IsValueNotOneOf = function(val, values) { - return !_exprFunctions.IsValueOneOf(val, values); - }; - - _exprFunctions.GetKeyPressed = function(eventInfo) { - return eventInfo.keyInfo; - }; - - _exprFunctions.GetCursorRectangles = function() { - var rects = new Object(); - rects.lastRect = new $ax.drag.Rectangle($ax.lastMouseLocation.x, $ax.lastMouseLocation.y, 1, 1); - rects.currentRect = new $ax.drag.Rectangle($ax.mouseLocation.x, $ax.mouseLocation.y, 1, 1); - return rects; - }; - - _exprFunctions.GetWidgetRectangles = function (elementIds, eventInfo) { - var elementId = elementIds[0]; - var rects = new Object(); - var jObj = $jobj(elementId); - var invalid = jObj.length == 0; - var parent = jObj; - // Or are in valid if no obj can be found, or if it is not visible. - while(parent.length != 0 && !parent.is('body')) { - if(parent.css('display') == 'none') { - invalid = true; - break; - } - parent = parent.parent(); - } - if(invalid) { - rects.lastRect = rects.currentRect = new $ax.drag.Rectangle(-1, -1, -1, -1); - return rects; - } - - var axObj = $ax('#' + elementId); - var boundingRect = axObj.viewportBoundingRect(); - rects.lastRect = new $ax.drag.Rectangle( - boundingRect.left, - boundingRect.top, - boundingRect.width, - boundingRect.height); - //rects.lastRect = new $ax.drag.Rectangle( - // axObj.left(), - // axObj.top(), - // axObj.width(), - // axObj.height()); - - rects.currentRect = rects.lastRect; - return rects; - }; - - _exprFunctions.GetWidget = function(elementId) { - return $ax.getWidgetInfo(elementId[0]); - }; - - _exprFunctions.GetAdaptiveView = function (eventInfo) { - if (eventInfo && eventInfo.srcElement) { - var id = eventInfo.srcElement; - var diagramObject = $ax.getObjectFromElementId(id); - if (diagramObject.owner.type == 'Axure:Master') { - var viewIdChain = $ax.style.getViewIdChain($ax.adaptive.currentViewId || '', id, diagramObject); - if (viewIdChain.length > 0) return viewIdChain[viewIdChain.length - 1]; - else return '19e82109f102476f933582835c373474'; - } - } - return $ax.adaptive.currentViewId || ''; - }; - - _exprFunctions.IsEntering = function(movingRects, targetRects) { - return !movingRects.lastRect.IntersectsWith(targetRects.currentRect) && movingRects.currentRect.IntersectsWith(targetRects.currentRect); - }; - - _exprFunctions.IsLeaving = function(movingRects, targetRects) { - return movingRects.lastRect.IntersectsWith(targetRects.currentRect) && !movingRects.currentRect.IntersectsWith(targetRects.currentRect); - }; - - var _IsOver = _exprFunctions.IsOver = function(movingRects, targetRects) { - return movingRects.currentRect.IntersectsWith(targetRects.currentRect); - }; - - _exprFunctions.IsNotOver = function(movingRects, targetRects) { - return !_IsOver(movingRects, targetRects); - }; - - _exprFunctions.ValueContains = function(inputString, value) { - return inputString.indexOf(value) > -1; - }; - - _exprFunctions.ValueNotContains = function(inputString, value) { - return !_exprFunctions.ValueContains(inputString, value); - }; - - _exprFunctions.ToString = function(value) { - if(value.isWidget) { - return value.text; - } - return String(value); - }; - - var _evaluateExpr = $ax.expr.evaluateExpr = function(expr, eventInfo, toString) { - if(expr === undefined || expr === null) return undefined; - var result = _exprHandlers[expr.exprType](expr, eventInfo); - return toString ? _exprFunctions.ToString(result) : result; - }; - - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/flyout.js b/web/main/static/resources/scripts/axure/flyout.js deleted file mode 100644 index e98303f..0000000 --- a/web/main/static/resources/scripts/axure/flyout.js +++ /dev/null @@ -1,286 +0,0 @@ -// ******* Flyout MANAGER ******** // -$axure.internal(function($ax) { - var _flyoutManager = $ax.flyoutManager = {}; - - var getFlyoutLabel = function(panelId) { - return panelId + '_flyout'; - }; - - var _unregisterPanel = function(panelId, keepShown) { - $ax.geometry.unregister(getFlyoutLabel(panelId)); - if(panelToSrc[panelId]) { - $ax.style.RemoveRolloverOverride(panelToSrc[panelId]); - delete panelToSrc[panelId]; - } - if(!keepShown) { - $ax.action.addAnimation(panelId, $ax.action.queueTypes.fade, function() { - $ax('#' + panelId).hide(); - }); - } - }; - _flyoutManager.unregisterPanel = _unregisterPanel; - - var genPoint = $ax.geometry.genPoint; - - var _updateFlyout = function(panelId) { - var label = getFlyoutLabel(panelId); - if(!$ax.geometry.polygonRegistered(label)) return; - var info = $ax.geometry.getPolygonInfo(label); - var rects = info && info.rects; - - var targetWidget = $ax.getWidgetInfo(panelId); - rects.target = $ax.geometry.genRect(targetWidget); - - // Src will stay the same, just updating - $ax.flyoutManager.registerFlyout(rects, panelId, panelToSrc[panelId]); - - if(!$ax.geometry.checkInsideRegion(label)) _unregisterPanel(panelId); - }; - _flyoutManager.updateFlyout = _updateFlyout; - - var panelToSrc = {}; - var _registerFlyout = function(rects, panelId, srcId) { - var label = _getFlyoutLabel(panelId); - var callback = function(info) { - // If leaving object or already outside it, then unregister, otherwise just return - if(!info.exiting && !info.outside) return; - _unregisterPanel(panelId); - }; - var points = []; - - var lastSrcId = panelToSrc[panelId]; - if(lastSrcId != srcId) { - if(lastSrcId) $ax.style.RemoveRolloverOverride(lastSrcId); - if(srcId) { - $ax.style.AddRolloverOverride(srcId); - panelToSrc[panelId] = srcId; - } else delete panelToSrc[panelId]; - } - - // rects should be one or two rectangles - if(!rects.src) { - var rect = rects.target; - points.push(genPoint(rect.Left(), rect.Top())); - points.push(genPoint(rect.Right(), rect.Top())); - points.push(genPoint(rect.Right(), rect.Bottom())); - points.push(genPoint(rect.Left(), rect.Bottom())); - } else { - var r0 = rects.src; - var r1 = rects.target; - - // Right left of right, left right of left, top below top, bottom above bottom - var rlr = r0.Right() <= r1.Right(); - var lrl = r0.Left() >= r1.Left(); - var tbt = r0.Top() >= r1.Top(); - var bab = r0.Bottom() <= r1.Bottom(); - - var info = { rlr: rlr, lrl: lrl, tbt: tbt, bab: bab }; - - if((rlr && lrl) || (tbt && bab)) { - points = getSmallPolygon(r0, r1, info); - } else { - points = getLargePolygon(r0, r1, info); - } - } - - $ax.geometry.registerPolygon(label, points, callback, { rects: rects }); - }; - _flyoutManager.registerFlyout = _registerFlyout; - - var _getFlyoutLabel = function(panelId) { - return panelId + '_flyout'; - }; - - var _reregisterAllFlyouts = function() { - for(var panelId in panelToSrc) _reregisterFlyout(panelId); - }; - _flyoutManager.reregisterAllFlyouts = _reregisterAllFlyouts; - - var _reregisterFlyout = function(panelId) { - var rects = $ax.geometry.getPolygonInfo(getFlyoutLabel(panelId)).rects; - _registerFlyout(rects, panelId, panelToSrc[panelId]); - }; - - // This is the reduced size polygon connecting r0 to r1 by means of horizontal or vertical lines. - var getSmallPolygon = function(r0, r1, info) { - var points = []; - - // NOTE: currently I make the assumption that if horizontal/vertical connecting lines from the src hit the target - // Meaning if horizontal, rlr and lrl are true, and if vertical, tbt and bab are true. - - var r0Left = r0.Left(); - var r0Right = r0.Right(); - var r0Top = r0.Top(); - var r0Bottom = r0.Bottom(); - var r1Left = r1.Left(); - var r1Right = r1.Right(); - var r1Top = r1.Top(); - var r1Bottom = r1.Bottom(); - - points.push(genPoint(r1Left, r1Top)); - - if(!info.tbt) { - points.push(genPoint(r0Left, r1Top)); - points.push(genPoint(r0Left, r0Top)); - points.push(genPoint(r0Right, r0Top)); - points.push(genPoint(r0Right, r1Top)); - } - - points.push(genPoint(r1Right, r1Top)); - - if(!info.rlr) { - points.push(genPoint(r1Right, r0Top)); - points.push(genPoint(r0Right, r0Top)); - points.push(genPoint(r0Right, r0Bottom)); - points.push(genPoint(r1Right, r0Bottom)); - } - - points.push(genPoint(r1Right, r1Bottom)); - - if(!info.bab) { - points.push(genPoint(r0Right, r1Bottom)); - points.push(genPoint(r0Right, r0Bottom)); - points.push(genPoint(r0Left, r0Bottom)); - points.push(genPoint(r0Left, r1Bottom)); - } - - points.push(genPoint(r1Left, r1Bottom)); - - if(!info.lrl) { - points.push(genPoint(r1Left, r0Bottom)); - points.push(genPoint(r0Left, r0Bottom)); - points.push(genPoint(r0Left, r0Top)); - points.push(genPoint(r1Left, r0Top)); - } - - return points; - }; - - // This is the original algorithm that connects the most extream corners to make polygon - var getLargePolygon = function(r0, r1, info) { - var points = []; - - var r0Left = r0.Left(); - var r0Right = r0.Right(); - var r0Top = r0.Top(); - var r0Bottom = r0.Bottom(); - var r1Left = r1.Left(); - var r1Right = r1.Right(); - var r1Top = r1.Top(); - var r1Bottom = r1.Bottom(); - - // Top lefts - if(info.tbt) { - if(!info.lrl) points.push(genPoint(r0Left, r0Top)); - points.push(genPoint(r1Left, r1Top)); - } else { - if(info.lrl) points.push(genPoint(r1Left, r1Top)); - points.push(genPoint(r0Left, r0Top)); - } - - // Top rights - if(info.tbt) { - points.push(genPoint(r1Right, r1Top)); - if(!info.rlr) points.push(genPoint(r0Right, r0Top)); - } else { - points.push(genPoint(r0Right, r0Top)); - if(info.rlr) points.push(genPoint(r1Right, r1Top)); - } - - // Bottom rights - if(info.bab) { - if(!info.rlr) points.push(genPoint(r0Right, r0Bottom)); - points.push(genPoint(r1Right, r1Bottom)); - } else { - if(info.rlr) points.push(genPoint(r1Right, r1Bottom)); - points.push(genPoint(r0Right, r0Bottom)); - } - - // Bottom Lefts - if(info.bab) { - points.push(genPoint(r1Left, r1Bottom)); - if(!info.lrl) points.push(genPoint(r0Left, r0Bottom)); - } else { - points.push(genPoint(r0Left, r0Bottom)); - if(info.lrl) points.push(genPoint(r1Left, r1Bottom)); - } - return points; - }; -}); - -// ******* Placeholder Manager ********* // - -$axure.internal(function($ax) { - var _placeholderManager = $ax.placeholderManager = {}; - var idToPlaceholderInfo = {}; - - var _registerPlaceholder = function(elementId, text, password) { - idToPlaceholderInfo[elementId] = { text: text, password: password, active: false }; - }; - _placeholderManager.registerPlaceholder = _registerPlaceholder; - - _placeholderManager.refreshPlaceholder = function (elementId) { - var info = idToPlaceholderInfo[elementId]; - if (!info || !info.active) return; - $ax.style.SetWidgetPlaceholder(elementId, true, info.text, info.password); - } - - var _updatePlaceholder = function(elementId, active, clearText) { - var inputId = $ax.repeater.applySuffixToElementId(elementId, '_input'); - - var info = idToPlaceholderInfo[elementId]; - if(!info || info.active == active) return; - info.active = active; - - if(active) var text = info.text; - else if(!ANDROID) text = clearText ? '' : document.getElementById(inputId).value; - else { - var currentText = document.getElementById(inputId).value; - if(!clearText) text = currentText; - else if(currentText == info.text) text = ""; - else { - var lastIndex = currentText.lastIndexOf(info.text); - //here i am assuming the text is always inserted in front - text = currentText.substring(0, lastIndex); - } - } - - $ax.style.SetWidgetPlaceholder(elementId, active, text, info.password); - }; - _placeholderManager.updatePlaceholder = _updatePlaceholder; - - var _isActive = function(elementId) { - var info = idToPlaceholderInfo[elementId]; - return Boolean(info && info.active); - }; - _placeholderManager.isActive = _isActive; - - var _selectRange = function(elementId, start, end) { - $jobj(elementId).each(function() { - if(this.setSelectionRange) { - var validTypes = ["text", "search", "url", "tel", "password"]; - if(this.tagName.toLowerCase() != "input" || validTypes.indexOf(this.type) > -1) { - this.focus(); - this.setSelectionRange(start, end); - } - } else if(this.createTextRange) { - var range = this.createTextRange(); - range.collapse(true); - range.moveEnd('character', end); - range.moveStart('character', start); - range.select(); - } - }); - }; - _placeholderManager.selectRange = _selectRange; - - var _moveCaret = function(id, index) { - var inputIndex = id.indexOf('_input'); - if(inputIndex == -1) return; - var inputId = id.substring(0, inputIndex); - - if(!_isActive(inputId)) return; - _selectRange(id, index, index); - }; - _placeholderManager.moveCaret = _moveCaret; -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/geometry.js b/web/main/static/resources/scripts/axure/geometry.js deleted file mode 100644 index 4bdc0f0..0000000 --- a/web/main/static/resources/scripts/axure/geometry.js +++ /dev/null @@ -1,294 +0,0 @@ -// ******* Region MANAGER ******** // -$axure.internal(function($ax) { - var _geometry = $ax.geometry = {}; - var regionMap = {}; - var regionList = []; - - var _unregister = function(label) { - var regionIndex = regionList.indexOf(label); - if(regionIndex != -1) { - var end = $ax.splice(regionList, regionIndex + 1); - $ax.splice(regionList, regionIndex, regionList.length - regionIndex); - regionList = regionList.concat(end); - } - delete regionMap[label]; - }; - _geometry.unregister = _unregister; - - var clear = function() { - regionMap = {}; - regionList = []; - }; - - var _polygonRegistered = function(label) { - return Boolean(regionMap[label]); - }; - _geometry.polygonRegistered = _polygonRegistered; - - // Must be counterclockwise, or enter/exit will be wrong - var _registerPolygon = function(label, points, callback, info) { - var regionIndex = regionList.indexOf(label); - if(regionIndex == -1) regionList.push(label); - regionMap[label] = { points: points, callback: callback, info: info }; - }; - _geometry.registerPolygon = _registerPolygon; - - var _getPolygonInfo = function(label) { - if(!_polygonRegistered(label)) return undefined; - return regionMap[label].info; - }; - _geometry.getPolygonInfo = _getPolygonInfo; - - - - var _genRect = function(info, roundHalfPixel) { - var x = info.pagex(); - var y = info.pagey(); - var w = info.width(); - var h = info.height(); - - if(roundHalfPixel) { - if(x % 1 != 0) { - x = Math.floor(x); - w++; - } - if(y % 1 != 0) { - y = Math.floor(y); - h++; - } - } - - var r = x + w; - var b = y + h; - - var rect = { - X: function() { return x; }, - Y: function() { return y; }, - Wigth: function() { return w; }, - Height: function() { return h; }, - Left: function() { return x; }, - Right: function() { return r; }, - Top: function() { return y; }, - Bottom: function() { return b; } - }; - return rect; - }; - _geometry.genRect = _genRect; - - var _genPoint = function(x, y) { - return { x: x, y: y }; - }; - _geometry.genPoint = _genPoint; - - var oldPoint = _genPoint(0, 0); - _geometry.tick = function(x, y, end) { - var lastPoint = oldPoint; - var nextPoint = oldPoint = _genPoint(x, y); - var line = { p1: lastPoint, p2: nextPoint }; - if(!regionList.length) return; - - for(var i = 0; i < regionList.length; i++) { - var region = regionMap[regionList[i]]; - var points = region.points; - for(var j = 0; j < points.length; j++) { - var startSegment = points[j]; - var endSegment = points[(j + 1) % points.length]; - var intersectInfo = linesIntersect(line, { p1: startSegment, p2: endSegment }); - if(intersectInfo) { - region.callback(intersectInfo); - break; - } - } - } - - if(end) clear(); - }; - - // Info if the one line touches the other (even barely), false otherwise - // Info includes point, if l1 is entering or exiting l2, and any ties that happened, or parallel info - var linesIntersect = function(l1, l2) { - var retval = {}; - var ties = {}; - - var l1p1 = l1.p1.x < l1.p2.x || (l1.p1.x == l1.p2.x && l1.p1.y < l1.p2.y) ? l1.p1 : l1.p2; - var l1p2 = l1.p1.x < l1.p2.x || (l1.p1.x == l1.p2.x && l1.p1.y < l1.p2.y) ? l1.p2 : l1.p1; - var m1 = (l1p2.y - l1p1.y) / (l1p2.x - l1p1.x); - - var l2p1 = l2.p1.x < l2.p2.x || (l2.p1.x == l2.p2.x && l2.p1.y < l2.p2.y) ? l2.p1 : l2.p2; - var l2p2 = l2.p1.x < l2.p2.x || (l2.p1.x == l2.p2.x && l2.p1.y < l2.p2.y) ? l2.p2 : l2.p1; - var m2 = (l2p2.y - l2p1.y) / (l2p2.x - l2p1.x); - - var l1Vert = l1.p1.x == l1.p2.x; - var l2Vert = l2.p1.x == l2.p2.x; - if(l1Vert || l2Vert) { - if(l1Vert && l2Vert) { - // If the lines don't follow the same path, return - if(l1p1.x != l2p1.x) return false; - // if they never meet, return - if(l1p2.y < l2p1.y || l1p1.y > l2p2.y) return false; - var firstVert = l1p1.y >= l2p1.y ? l1p1 : l2p1; - var secondVert = l1p2.y <= l2p2.y ? l1p2 : l2p2; - // First is from the perspective of l1 - retval.parallel = { - first: l1p1 == l1.p1 ? firstVert : secondVert, - second: l1p2 == l1.p2 ? secondVert : firstVert, - sameDirection: (l1p1 == l1.p1) == (l2p1 == l2.p1) - }; - - return retval; - } - - var x1 = l2Vert ? l1p1.x : l2p1.x; - var x2 = l2Vert ? l1p2.x : l2p2.x; - var xVert = l2Vert ? l2p1.x : l1p1.x; - - var y = l2Vert ? l1p1.y + (xVert - x1) * m1 : l2p1.y + (xVert - x1) * m2; - var y1 = l2Vert ? l2p1.y : l1p1.y; - var y2 = l2Vert ? l2p2.y : l1p2.y; - if(xVert >= x1 && xVert <= x2 && y >= y1 && y <= y2) { - retval.point = { x: xVert, y: y }; - retval.exiting = l2Vert == (y1 == (l2Vert ? l2.p1.y : l1.p1.y)) == (x1 == (l2Vert ? l1.p1.x : l2.p1.x)); - retval.entering = !retval.exiting; - - // Calculate ties - if(x1 == xVert) { - ties[l2Vert ? 'l1' : 'l2'] = (x1 == (l2Vert ? l1.p1.x : l2.p1.x)) ? 'start' : 'end'; - retval.ties = ties; - } else if(x2 == xVert) { - ties[l2Vert ? 'l1' : 'l2'] = (x2 == (l2Vert ? l1.p2.x : l2.p2.x)) ? 'end' : 'start'; - retval.ties = ties; - } - if(y1 == y) { - ties[l2Vert ? 'l2' : 'l1'] = (y1 == (l2Vert ? l2.p1.y : l1.p1.y)) ? 'start' : 'end'; - retval.ties = ties; - } else if(y2 == y) { - ties[l2Vert ? 'l2' : 'l1'] = (y2 == (l2Vert ? l2.p2.y : l1.p2.y)) ? 'end' : 'start'; - retval.ties = ties; - } - - return retval; - } - return false; - } - // If here, no vertical lines - - if(m1 == m2) { - // If the lines don't follow the same path, return - if(l1p1.y != (l2p1.y + (l1p1.x - l2p1.x) * m1)) return false; - // if they never meet, return - if(l1p2.x < l2p1.x || l1p1.x > l2p2.x) return false; - var first = l1p1.x >= l2p1.x ? l1p1 : l2p1; - var second = l1p2.x <= l2p2.x ? l1p2 : l2p2; - // First is from the perspective of l1 - retval.parallel = { - first: l1p1 == l1.p1 ? first : second, - second: l1p2 == l1.p2 ? second : first, - sameDirection: (l1p1 == l1.p1) == (l2p1 == l2.p1) - }; - - return retval; - } - - var x = (l2p1.y - l2p1.x * m2 - l1p1.y + l1p1.x * m1) / (m1 - m2); - - // Check if x is out of bounds - if(x >= l1p1.x && x <= l1p2.x && x >= l2p1.x && x <= l2p2.x) { - var y = l1p1.y + (x - l1p1.x) * m1; - retval.point = { x: x, y: y }; - retval.entering = m1 > m2 == (l1p1 == l1.p1) == (l2p1 == l2.p1); - retval.exiting = !retval.entering; - - // Calculate ties - if(l1.p1.x == x) { - ties.l1 = 'start'; - retval.ties = ties; - } else if(l1.p2.x == x) { - ties.l1 = 'end'; - retval.ties = ties; - } - if(l2.p1.x == x) { - ties.l2 = 'start'; - retval.ties = ties; - } else if(l2.p2.x == x) { - ties.l2 = 'end'; - retval.ties = ties; - } - - return retval; - } - return false; - }; - - var _checkInsideRegion = function(label, point) { - if(!_polygonRegistered(label)) return false; - - return _checkInside(regionMap[label].points, point || $ax.mouseLocation); - }; - _geometry.checkInsideRegion = _checkInsideRegion; - - // Returns true if point is inside the polygon, including ties - var _checkInside = function(polygon, point) { - // Make horizontal line wider than the polygon, with the y of point to test location - var firstX = polygon[0].x; - var secondX = firstX; - var i; - for(i = 1; i < polygon.length; i++) { - var polyX = polygon[i].x; - firstX = Math.min(firstX, polyX); - secondX = Math.max(secondX, polyX); - } - var line = { - p1: _genPoint(--firstX, point.y), - p2: _genPoint(++secondX, point.y) - }; - - // If entered true, with closest intersection says you are inside the polygon. - var entered = false; - // Closest is the closest intersection to the left of the point - var closest = line.p1.x; - // This is for if intersections hit the same point, to find out which is correct - var cos = -2; - - var getCos = function(line) { - var x = line.p2.x - line.p1.x; - var y = line.p2.y - line.p1.y; - return x / Math.sqrt(x * x + y * y); - }; - - for(i = 0; i < polygon.length; i++) { - var polyLine = { p1: polygon[i], p2: polygon[(i + 1) % polygon.length] }; - var intersectInfo = linesIntersect(line, polyLine); - if(!intersectInfo) continue; - - if(intersectInfo.parallel) { - // Only really care about this if it actually touches the point - if(intersectInfo.parallel.first.x <= point.x && intersectInfo.parallel.second.x >= point.x) return true; - continue; - } - - var intersectionX = intersectInfo.point.x; - if(intersectionX > point.x || intersectionX < closest) continue; - if(intersectionX == point.x) return true; - - // If closer than last time, reset cosine. - if(intersectionX != closest) cos = -2; - - // For getting cosine, need to possibly reverse the direction of polyLine. - if(intersectInfo.ties) { - // Tie must be on l2, if the ties is end, reverse so cosine indicates how close the angle is to that of 'point' from here. - if(intersectInfo.ties.l2 == 'end') polyLine = { p1: polyLine.p2, p2: polyLine.p1 }; - } else { - // It is on both side, so you can take the larger one - if(polyLine.p1.x > polyLine.p2.x) polyLine = { p1: polyLine.p2, p2: polyLine.p1 }; - } - var currCos = getCos(polyLine); - if(currCos > cos) { - cos = currCos; - closest = intersectionX; - entered = intersectInfo.entering; - } - } - return entered; - }; - _geometry.checkInside = _checkInside; -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/globals.js b/web/main/static/resources/scripts/axure/globals.js deleted file mode 100644 index 0c5c4e8..0000000 --- a/web/main/static/resources/scripts/axure/globals.js +++ /dev/null @@ -1,7 +0,0 @@ -$axure.internal(function($ax) { - var _globals = $ax.globals = {}; - - $ax.globals.MaxZIndex = 1000; - $ax.globals.MinZIndex = -1000; - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/ie.js b/web/main/static/resources/scripts/axure/ie.js deleted file mode 100644 index cd99447..0000000 --- a/web/main/static/resources/scripts/axure/ie.js +++ /dev/null @@ -1,344 +0,0 @@ - -//// ******* Internet Explorer MANAGER ******** // -////this is to handle all the stupid IE Stuff -//$axure.internal(function($ax) { -// if(!IE_10_AND_BELOW) return; - -// var _ieColorManager = {}; -// if(Number(BROWSER_VERSION) < 9) $ax.ieColorManager = _ieColorManager; - -// var _applyIEFixedPosition = function() { -// if(Number(BROWSER_VERSION) >= 7) return; - -// $axure(function(diagramObject) { return diagramObject.fixedVertical; }).$() -// .appendTo($('body')) -// .css('position', 'absolute').css('margin-left', 0 + 'px').css('margin-top', 0 + 'px'); - -// var handleScroll = function() { -// $axure(function(diagramObject) { return diagramObject.fixedVertical; }) -// .each(function(diagramObject, elementId) { -// var win = $(window); -// var windowWidth = win.width(); -// var windowHeight = win.height(); -// var windowScrollLeft = win.scrollLeft(); -// var windowScrollTop = win.scrollTop(); - -// var newLeft = 0; -// var newTop = 0; -// var elementQuery = $('#' + elementId); -// var elementAxQuery = $ax('#' + elementId); -// var width = elementAxQuery.width(); -// var height = elementAxQuery.height(); - -// var horz = diagramObject.fixedHorizontal; -// if(horz == 'left') { -// newLeft = windowScrollLeft + diagramObject.fixedMarginHorizontal; -// } else if(horz == 'center') { -// newLeft = windowScrollLeft + ((windowWidth - width) / 2) + diagramObject.fixedMarginHorizontal; -// } else if(horz == 'right') { -// newLeft = windowScrollLeft + windowWidth - width - diagramObject.fixedMarginHorizontal; -// } - -// var vert = diagramObject.fixedVertical; -// if(vert == 'top') { -// newTop = windowScrollTop + diagramObject.fixedMarginVertical; -// } else if(vert == 'middle') { -// newTop = windowScrollTop + ((windowHeight - height) / 2) + diagramObject.fixedMarginVertical; -// } else if(vert == 'bottom') { -// newTop = windowScrollTop + windowHeight - height - diagramObject.fixedMarginVertical; -// } -// elementQuery.css('top', newTop + 'px').css('left', newLeft + 'px'); -// }); -// }; - -// $(window).scroll(handleScroll); -// $axure.resize(handleScroll); -// handleScroll(); -// }; - -// var _applyBackground = function() { -// if(Number(BROWSER_VERSION) >= 9) return; - -// var styleChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); -// var argb = _getArgb($ax.pageData.page, styleChain); -// var hexColor = _getHexColor(argb, false); -// if(hexColor) $('body').css('background-color', hexColor); - -// _applyBackgroundToQuery($ax('*')); -// }; - -// var _applyBackgroundToQuery = function(query) { -// if(Number(BROWSER_VERSION) >= 9) return; - -// var styleChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); -// query.each(function(obj, elementId) { -// if ($ax.public.fn.IsDynamicPanel(obj.type)) { -// var stateCount = obj.diagrams.length; -// for(var j = 0; j < stateCount; j++) { -// var stateId = $ax.repeater.applySuffixToElementId(elementId, '_state' + j); -// var argb = _getArgb(obj.diagrams[j], styleChain); -// var hexColor = _getHexColor(argb, true); -// if(hexColor) $jobj(stateId).css('background-color', hexColor); -// } -// } else if ($ax.public.fn.IsRepeater(obj.type)) { - -// } -// }); -// }; -// _ieColorManager.applyBackground = _applyBackgroundToQuery; - -// var _getArgb = function(diagram, styleChain) { -// var argb = undefined; -// for(var i = 0; i < styleChain.length && !argb; i++) { -// var style = diagram.adaptiveStyles[styleChain[i]]; -// argb = style.fill && style.fill.color; -// } -// if(!argb) argb = diagram.style.fill.color; -// return argb; -// }; - -// var gMult = 256; -// var rMult = gMult * 256; -// var aMult = rMult * 256; - -// var _getHexColor = function(argb, allowWhite) { -// var a = Math.floor(argb / aMult); -// argb -= a * aMult; - -// var r = Math.floor(argb / rMult); -// argb -= r * rMult; - -// var g = Math.floor(argb / gMult); -// var b = argb - g * gMult; - -// return _getColorFromArgb(a, r, g, b, allowWhite); -// }; - -// var _getColorFromArgb = function(a, r, g, b, allowWhite) { -// if(Number(BROWSER_VERSION) >= 9) return undefined; - -// //convert the color with alpha to a color with no alpha (assuming white background) -// r = Math.min((r * a) / 255 + 255 - a, 255); -// g = Math.min((g * a) / 255 + 255 - a, 255); -// b = Math.min((b * a) / 255 + 255 - a, 255); - -// if(a == 0) return undefined; -// if(!allowWhite && (r == 255 && g == 255 && b == 255)) return undefined; - -// var color = '#'; -// color += Math.floor(r / 16).toString(16); -// color += Math.floor(r % 16).toString(16); -// color += Math.floor(g / 16).toString(16); -// color += Math.floor(g % 16).toString(16); -// color += Math.floor(b / 16).toString(16); -// color += Math.floor(b % 16).toString(16); -// return color; -// }; -// _ieColorManager.getColorFromArgb = _getColorFromArgb; - -// var getIEOffset = function(transform, rect) { -// var translatedVertexes = [ -// $axure.utils.Vector2D(0, 0), //we dont translate, so the orgin is fixed -// transform.mul($axure.utils.Vector2D(0, rect.height)), -// transform.mul($axure.utils.Vector2D(rect.width, 0)), -// transform.mul($axure.utils.Vector2D(rect.width, rect.height))]; - -// var minX = 0, minY = 0, maxX = 0, maxY = 0; -// $.each(translatedVertexes, function(index, p) { -// minX = Math.min(minX, p.x); -// minY = Math.min(minY, p.y); -// maxX = Math.max(maxX, p.x); -// maxY = Math.max(maxY, p.y); -// }); - -// return $axure.utils.Vector2D( -// (maxX - minX - rect.width) / 2, -// (maxY - minY - rect.height) / 2); -// }; - -// var _filterFromTransform = function(transform) { -// return "progid:DXImageTransform.Microsoft.Matrix(M11=" + transform.m11 + -// ", M12=" + transform.m12 + ", M21=" + transform.m21 + -// ", M22=" + transform.m22 + ", SizingMethod='auto expand')"; -// }; - -// var _applyIERotation = function() { -// if(Number(BROWSER_VERSION) >= 9) return; - -// $axure(function(diagramObject) { -// return ((diagramObject.style.rotation && Math.abs(diagramObject.style.rotation) > 0.1) -// || (diagramObject.style.textRotation && Math.abs(diagramObject.style.textRotation) > 0.1)) -// && !diagramObject.isContained; -// }).each(function(diagramObject, elementId) { -// var rotation = diagramObject.style.rotation || 0; -// var $element = $('#' + elementId); -// var axElement = $ax('#' + elementId); -// var width = axElement.width(); -// var height = axElement.height(); -// var originX = width / 2; -// var originY = height / 2; - -// var shapeIeOffset; -// $element.children().each(function() { -// var $child = $(this); -// var axChild = $ax('#' + $child.attr('id')); -// var childWidth = axChild.width(); -// var childHeight = axChild.height() + $child.position().top; -// var centerX = $child.position().left + (childWidth / 2); -// var centerY = $child.position().top + (childHeight / 2); -// var deltaX = centerX - originX; -// var deltaY = centerY - originY; - -// var effectiveRotation = rotation; -// var textObject = $ax.getObjectFromElementId($child.attr('id')); -// if(textObject) { -// if(textObject.style.textRotation) effectiveRotation = textObject.style.textRotation; -// else return; -// } - -// var transform = $ax.utils.Matrix2D.identity().rotate(effectiveRotation); -// var filter = _filterFromTransform(transform); - -// $child.css('filter', filter) -// .width(childWidth + 1) -// .height(childHeight + 1); - -// var p = transform.mul($ax.utils.Vector2D(deltaX, deltaY)); -// var ieOffset = getIEOffset(transform, { width: childWidth, height: childHeight }); -// if(!textObject) { -// shapeIeOffset = ieOffset; -// } else { -// // This is a close approximation, but not exact -// if(diagramObject.style.verticalAlignment != 'top') ieOffset.y -= shapeIeOffset.y + Math.abs(shapeIeOffset.x); -// } - -// $child.css("margin-left", -ieOffset.x - deltaX + p.x).css("margin-top", -ieOffset.y - deltaY + p.y); -// }); -// }); -// }; - -// var _fixIEStretchBackground = function() { -// if(Number(BROWSER_VERSION) >= 9) return; -// var pageStyle = $ax.adaptive.getPageStyle(); -// if(!pageStyle.imageRepeat || pageStyle.imageRepeat == 'auto') return; - -// $('body').css('background-image', 'none'); -// var viewId = $ax.adaptive.currentViewId; -// var imageInfo = viewId ? $ax.pageData.viewIdToBackgroundImageInfo && $ax.pageData.viewIdToBackgroundImageInfo[viewId] : $ax.pageData.defaultBackgroundImageInfo; -// if(imageInfo && imageInfo.path) { -// if($('#bg_img').length == 0) $('body').append(''); -// $('#bg_img').attr('src', imageInfo.path).css('position', 'fixed').css('z-index', '-10000'); -// _resizeIEBackground(); -// } else $('#bg_img').remove(); -// }; - -// var _resizeIEBackground = function() { -// if(Number(BROWSER_VERSION) >= 9) return; -// //var page = $ax.pageData.page; -// var viewId = $ax.adaptive.currentViewId; -// var pageStyle = $ax.adaptive.getPageStyle(); -// if(!$ax.pageData.defaultBackgroundImageInfo && !$ax.pageData.viewIdToBackgroundImageInfo) return; -// var imageInfo = viewId ? $ax.pageData.viewIdToBackgroundImageInfo[viewId] : $ax.pageData.defaultBackgroundImageInfo; -// if(!imageInfo) return; -// var imageWidth = imageInfo.width; -// var imageHeight = imageInfo.height; -// var windowWidth = $(window).width(); -// var windowHeight = $(window).height(); -// var isCover = pageStyle.imageRepeat == 'cover'; - -// var wRatio = windowWidth / imageWidth; -// var hRatio = windowHeight / imageHeight; -// var ratio = wRatio; -// if(isCover) { -// if(hRatio > wRatio) ratio = hRatio; -// } else { -// if(hRatio < wRatio) ratio = hRatio; -// } -// var width = imageWidth * ratio; -// var height = imageHeight * ratio; - -// var left = '0px'; -// if((isCover && width > windowWidth) || (!isCover && width < windowWidth)) { -// if(pageStyle.imageHorizontalAlignment == 'center') { -// left = ((windowWidth - width) / 2) + 'px'; -// } else if(pageStyle.imageHorizontalAlignment == 'far') { -// left = (windowWidth - width) + 'px'; -// } -// } - -// var top = '0px'; -// if((isCover && height > windowHeight) || (!isCover && height < windowHeight)) { -// if(pageStyle.imageVerticalAlignment == 'center') { -// top = ((windowHeight - height) / 2) + 'px'; -// } else if(pageStyle.imageVerticalAlignment == 'far') { -// top = (windowHeight - height) + 'px'; -// } -// } - -// $('#bg_img').css('top', top).css('left', left).css('width', width).css('height', height); -// }; - -// var _fixAllPngs = function() { -// if(!(/MSIE ((5\.5)|6)/.test(window.navigator.userAgent) && window.navigator.platform == "Win32")) return; - -// $('img[src$=".png"]').each(function() { -// if(!this.complete) { -// this.onload = function() { $axure.utils.fixPng(this); }; -// } else { -// $axure.utils.fixPng(this); -// } -// }); -// }; - -// var _fixInputSize = function() { -// if(Number(BROWSER_VERSION) >= 8 || window.navigator.userAgent.indexOf("Trident/4.0") > -1) return; -// var inputs = $('input').not(':input[type=button], :input[type=submit], :input[type=radio], :input[type=checkbox]'); -// inputs.each(function() { -// var $input = $(this); -// var axInput = $ax('#' + $input.attr('id')); -// $input.css('height', (axInput.height() - 4 + 'px')).css('width', (axInput.width() - 2 + 'px')); -// }); - -// var textAreas = $($ax.constants.TEXT_AREA_TYPE); -// textAreas.each(function() { -// var $textArea = $(this); -// var axText = $ax('#' + $textArea.attr('id')); -// $textArea.css('height', (axText.height() - 6 + 'px')).css('width', (axText.width() - 6 + 'px')); -// }); -// }; - -// var _fixInputBackground = function() { -// var inputs = $('input').not(':input[type=button], :input[type=submit], :input[type=radio], :input[type=checkbox]'); -// inputs = inputs.add($($ax.constants.TEXT_AREA_TYPE)); -// inputs.each(function() { -// var $input = $(this); -// if($input.css('background-color') == 'transparent') { -// $input.css('background-image', 'url(../../transparent.gif)'); -// } else { -// $input.css('background-image', ''); -// } -// }); -// }; - -// $(document).ready(function() { -// _fixIEStretchBackground(); -// _applyIEFixedPosition(); -// $axure.resize(function() { -// _resizeIEBackground(); -// }); -// $ax.adaptive.bind('viewChanged', function() { -// _fixIEStretchBackground(); -// _applyBackground(); -// _fixInputBackground(); -// }); - - -// _fixAllPngs(); -// _applyIERotation(); -// _applyBackground(); -// _fixInputSize(); -// _fixInputBackground(); -// }); - - -//}); diff --git a/web/main/static/resources/scripts/axure/init.temp.js b/web/main/static/resources/scripts/axure/init.temp.js deleted file mode 100644 index a6869f1..0000000 --- a/web/main/static/resources/scripts/axure/init.temp.js +++ /dev/null @@ -1,326 +0,0 @@ -$axure.internal(function($ax) { - - $(window.document).ready(function () { - - //var readyStart = (new Date()).getTime(); - - //this is because the page id is not formatted as a guid - var pageId = $ax.pageData.page.packageId; - - var pageData = { - id: pageId, - pageName: $ax.pageData.page.name, - location: window.location.toString(), - notes: $ax.pageData.page.notes, - widgetNotes: $ax.pageData.page.annotations, - //clipToView: $ax.pageData.clipToView, - defaultAdaptiveView: $ax.pageData.defaultAdaptiveView, - adaptiveViews: $ax.pageData.adaptiveViews, - masterNotes: [] - }; - - var fnPrefix = ''; - function pushNextPrefix() { - if (fnPrefix.length == 0) fnPrefix = 'A'; - else fnPrefix = fnPrefix[0] == 'Z' ? 'A'.repeat(fnPrefix.length + 1) : String.fromCharCode(fnPrefix.charCodeAt(0) + 1).repeat(fnPrefix.length); - } - - function populateNotes(pageForNotes) { - for (var master in pageForNotes.masters) { - //var master = pageForNotes.masters[i]; - var masterData = pageForNotes.masters[master]; - var hasWidgetNotes = masterData.annotations && masterData.annotations.length > 0; - if ((master.notes && !$.isEmptyObject(masterData.notes)) || hasWidgetNotes) { - if(hasWidgetNotes) pushNextPrefix(); - var m = {}; - m.pageName = masterData.name; - m.notes = masterData.notes; - m.widgetNotes = masterData.annotations; - pageData.masterNotes.push(m); - if(hasWidgetNotes) populateOwnerToFn(m.widgetNotes); - } - populateNotes(master); - } - } - - var ownerToFns = {}; - function populateOwnerToFn(widgetNotes) { - if(typeof widgetNotes == 'undefined') return false; - for (var i = 0; i < widgetNotes.length; i++) { - var widgetNote = widgetNotes[i]; - widgetNote['fn'] = fnPrefix + widgetNote['fn']; - var fn = widgetNote['fn']; - var ownerId = widgetNote['ownerId']; - if (ownerId !== undefined && ownerId.length > 0) { - var ownerLabels = ownerToFns[ownerId]; - if (ownerLabels == undefined) ownerLabels = []; - ownerLabels.push(fn); - ownerToFns[ownerId] = ownerLabels; - } - } - } - - populateOwnerToFn(pageData.widgetNotes); - populateNotes($ax.pageData); - pageData.ownerToFns = ownerToFns; - - $ax.pageData.notesData = pageData; - - //var anns = []; - //$ax('*').each(function (dObj, elementId) { - // pushAnnotation(dObj, elementId); - //}); - - //function pushAnnotation(dObj, elementId) { - // var ann = dObj.annotation; - // if(ann) { - // ann = $ax.deepCopy(ann); - // ann["id"] = elementId; - // ann["label"] = dObj.label + " (" + dObj.friendlyType + ")"; - // anns.push(ann); - // } - - // if(dObj.type === 'repeater' && dObj.objects) { - // //if it's repeater, save the id as repeaterId@scriptId - // for(var i = 0, len = dObj.objects.length; i < len; i++) { - // var child = dObj.objects[i]; - // var scriptId = $ax.getScriptIdFromPath([child.id], elementId); - // pushAnnotation(child, elementId + '@' + scriptId); - // } - // } - //} - - //pageData.widgetNotes = anns; - - //only trigger the page.data setting if the window is on the mainframe - var isMainFrame = false; - try { - if(window.name == 'mainFrame' || - (!CHROME_5_LOCAL && window.parent.$ && window.parent.$('#mainFrame').length > 0)) { - isMainFrame = true; - - $ax.messageCenter.addMessageListener(function(message, data) { - if(message == 'finishInit') { - _processTempInit(); - } - }); - - $axure.messageCenter.setState('page.data', pageData); - window.focus(); - } - } catch(e) { } - - //attach here for chrome local - //$(window).on('load', function() { - // $ax.style.initializeObjectTextAlignment($ax('*')); - //}); - - if(!isMainFrame) _processTempInit(); - }); - - var touchCount = 0; - var lastTouch = Date.now(); - var _registerTouchCount = $ax.registerTouchCount = function (e) { - var now = Date.now(); - if (now - lastTouch < 375) { - if (++touchCount === 3) { - $(':input').blur(); - $ax.messageCenter.postMessage('tripleClick', true); - e.preventDefault(); - }; - } else { - touchCount = 1; - } - lastTouch = now; - }; - - // Block IOS stalling second tap. - // Stop third click from also clicking mobile card - var _clearTouchCount = $ax.clearTouchCount = function (e) { - if (touchCount === 3) { - touchCount = 0; - e.preventDefault(); - } - }; - - var _processTempInit = function() { - //var start = (new Date()).getTime(); - //var end = (new Date()).getTime(); - //window.alert('elapsed ' + (end - start)); - - $('iframe').each(function() { - var origSrc = $(this).attr('basesrc'); - - var $this = $(this); - if(origSrc) { - var newSrcUrl = origSrc.toLowerCase().indexOf('http://') == -1 ? $ax.globalVariableProvider.getLinkUrl(origSrc) : origSrc; - $this.attr('src', newSrcUrl); - } - - if(IOS) { - $this.parent().css('overflow', 'auto').css('-webkit-overflow-scrolling', 'touch').css('-ms-overflow-x', 'hidden').css('overflow-x', 'hidden'); - } - }); - - $axure.messageCenter.addMessageListener(function(message, data) { - if(message == 'setGlobalVar') { - $ax.globalVariableProvider.setVariableValue(data.globalVarName, data.globalVarValue, true); - } - }); - - window.lastFocusedClickable = null; - var _lastFocusedClickableSelector = 'input, a'; - var shouldOutline = true; - - $ax(function (dObj) { return dObj.tabbable; }).each(function (dObj, elementId) { - if ($ax.public.fn.IsLayer(dObj.type)) $ax.event.layerMapFocus(dObj, elementId); - var focusableId = $ax.event.getFocusableWidgetOrChildId(elementId); - var $focusable = $('#' + focusableId); - $focusable.attr("tabIndex", 0); - if($focusable.is('div') || $focusable.is('img')) { - $focusable.bind($ax.features.eventNames.mouseDownName, function() { - shouldOutline = false; - }); - attachFocusAndBlur($focusable); - } - }); - - $(window.document).bind($ax.features.eventNames.mouseUpName, function() { - shouldOutline = true; - }); - - attachFocusAndBlur($(_lastFocusedClickableSelector)); - - function attachFocusAndBlur($query) { - $query.focus(function () { - if(shouldOutline) { - $(this).css('outline', ''); - } else { - $(this).css('outline', 'none'); - } - window.lastFocusedClickable = this; - }).blur(function () { - if(window.lastFocusedClickable == this) window.lastFocusedClickable = null; - }); - } - - $(window.document).bind('keyup', function (e) { - switch(e.which) { - case 13: - case 32: - if(window.lastFocusedClickable) $(window.lastFocusedClickable).click(); - break; - default: return; // exit this handler for other keys - } - }); - - //if($ax.document.configuration.hideAddress) { - // $(window).on('load', function() { - // window.setTimeout(function() { - // window.scrollTo(0, 0.9); - // }, 0); - // }); - //} - - //if($ax.document.configuration.preventScroll) { - // $(window.document).bind('touchmove', function(e) { - // var inScrollable = $ax.legacy.GetScrollable(e.target) != window.document.body; - // if(!inScrollable) { - // e.preventDefault(); - // } - // }); - - // $ax(function(diagramObject) { - // return $ax.public.fn.IsDynamicPanel(diagramObject.type) && diagramObject.scrollbars != 'none'; - // }).$().children().bind('touchstart', function() { - // var target = this; - // var top = target.scrollTop; - // if(top <= 0) target.scrollTop = 1; - // if(top + target.offsetHeight >= target.scrollHeight) target.scrollTop = target.scrollHeight - target.offsetHeight - 1; - // }); - //} - - if(OS_MAC && WEBKIT) { - $ax(function(diagramObject) { - return $ax.public.fn.IsComboBox(diagramObject.type); - }).each(function(obj, id) { - $jobj($ax.INPUT(id)).css('-webkit-appearance', 'menulist-button'); - }); - } - - if($ax.features.supports.mobile) { - $('html').first().on('touchstart', _registerTouchCount); - $('html').first().on('touchend', _clearTouchCount); - - // Stop pinch zoom (stopping all gestures for now) - // Gesturestart is only supported in Safari - if (SAFARI) { - document.addEventListener("gesturestart", function (e) { - e.preventDefault(); - }); - } - } - - $ax.annotation.initialize(); - - $ax.legacy.BringFixedToFront(); - $ax.event.initialize(); - $ax.style.initialize(); - $ax.visibility.initialize(); - $ax.repeater.initialize(); - $ax.dynamicPanelManager.initialize(); //needs to be called after visibility is initialized - $ax.adaptive.initialize(); - $ax.loadDynamicPanelsAndMasters(); - $ax.adaptive.loadFinished(); - var start = (new Date()).getTime(); - $ax.repeater.initRefresh(); - var end = (new Date()).getTime(); - console.log('loadTime: ' + (end - start) / 1000); - $ax.style.prefetch(); - - $(window).resize(); - - //var readyEnd = (new Date()).getTime(); - //window.alert('elapsed ' + (readyEnd - readyStart)); - }; -}); - -/* extend canvas */ -var gv_hasCanvas = false; -(function() { - var _canvas = document.createElement('canvas'), proto, abbrev; - if(gv_hasCanvas = !!(_canvas.getContext && _canvas.getContext('2d')) && typeof (CanvasGradient) !== 'undefined') { - function chain(func) { - return function() { - return func.apply(this, arguments) || this; - }; - } - - with(proto = CanvasRenderingContext2D.prototype) for(var func in abbrev = { - a: arc, - b: beginPath, - n: clearRect, - c: clip, - p: closePath, - g: createLinearGradient, - f: fill, - j: fillRect, - z: function(s) { this.fillStyle = s; }, - l: lineTo, - w: function(w) { this.lineWidth = w; }, - m: moveTo, - q: quadraticCurveTo, - h: rect, - r: restore, - o: rotate, - s: save, - x: scale, - y: function(s) { this.strokeStyle = s; }, - u: setTransform, - k: stroke, - i: strokeRect, - t: translate - }) proto[func] = chain(abbrev[func]); - CanvasGradient.prototype.a = chain(CanvasGradient.prototype.addColorStop); - } -})(); diff --git a/web/main/static/resources/scripts/axure/ios.js b/web/main/static/resources/scripts/axure/ios.js deleted file mode 100644 index 15333b7..0000000 --- a/web/main/static/resources/scripts/axure/ios.js +++ /dev/null @@ -1,91 +0,0 @@ -$axure.internal(function ($ax) { - if ((IOS && SAFARI) || SHARE_APP) { - var outerHtml = document.documentElement; - outerHtml.id = 'ios-safari'; - var html = document.createElement('html'); - html.id = 'ios-safari-html'; - outerHtml.appendChild(html); - var body = document.body; - html.appendChild(body); - Object.defineProperty(document, 'body', { - get: function () { - return body; - } - }); - var fixedBody = document.createElement('body'); - fixedBody.id = 'ios-safari-fixed'; - outerHtml.appendChild(fixedBody); - var fixedBase = document.createElement('div'); - fixedBase.id = 'base-fixed'; - fixedBody.appendChild(fixedBase); - - var isDevice = false; - var deviceWidth = 0; - var updateHtmlWidth = function (panelWidthOffset, scale, height, scaleN) { - var iosSafHtml = $('#ios-safari-html'); - iosSafHtml.css('overflow', ''); - iosSafHtml.css('overflow-x', ''); - iosSafHtml.css('height', ''); - if (isDevice) { - iosSafHtml.width(deviceWidth / scaleN); - iosSafHtml.css('overflow-x', 'hidden'); - } else { - var isLandscape = window.orientation != 0 && window.orientation != 180; - var mobileWidth = isLandscape ? window.screen.height : window.screen.width - iosSafHtml.width((mobileWidth - panelWidthOffset) / scaleN); - } - if (scale == 1) { - iosSafHtml.css('overflow-x', 'hidden'); - iosSafHtml.css('height', (height / scaleN) + 'px'); - } else if (scale == 2) iosSafHtml.css('overflow', 'hidden'); - }; - - updateHtmlWidth(0); - - $axure('*').each(function (obj, element) { - if (obj && obj.fixedVertical && obj.fixedKeepInFront) { - var parent = $axure('#' + element).getParents(false, ['item', 'state'])[0]; - if (!parent) { - $('#base-fixed').append($('#' + element)); - } - } - }); - - $axure.messageCenter.addMessageListener(function (message, data) { - if (message == "setContentScale") { - updateHtmlWidth(data.panelWidthOffset, data.scale, data.viewportHeight, data.scaleN); - } else if (message == "setDeviceMode") { - isDevice = data.device && !data.scaleToWidth; - if (isDevice) deviceWidth = data.width; - updateHtmlWidth(0); - } - }); - - - $('#ios-safari-html').scroll(function () { - $axure.updateWindowInfo(); - }); - - var scrollStartY; - var maxScrollY - var touchStart; - $axure('*').each(function (obj, element) { - if (obj && obj.scrollbars && obj.scrollbars.toLowerCase() != 'none') { - if (obj.scrollbars == 'horizontalAsNeeded') return; - - $('#' + element).on('touchstart', function (e) { - touchStart = e.pageY; - var stateId = $ax.visibility.GetPanelState($('#' + element).attr('id')); - scrollStartY = $('#' + stateId).scrollTop(); - maxScrollY = $('#' + stateId)[0].scrollHeight - $('#' + stateId).height(); - }); - - $('#' + element).on('touchmove', function (e) { - if (maxScrollY <= 0) return false; - if (scrollStartY == 0 && e.pageY > touchStart) e.preventDefault(); - if (scrollStartY == maxScrollY && e.pageY < touchStart) e.preventDefault(); - }); - } - }); - } -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/jquery.nicescroll.min.js b/web/main/static/resources/scripts/axure/jquery.nicescroll.min.js deleted file mode 100644 index c863c67..0000000 --- a/web/main/static/resources/scripts/axure/jquery.nicescroll.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){"use strict";var o=!1,t=!1,r=0,i=2e3,s=0,n=e,l=document,a=window,c=n(a),d=[];var u=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||!1,h=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.mozCancelAnimationFrame||!1;if(u)a.cancelAnimationFrame||(h=function(e){});else{var p=0;u=function(e,o){var t=(new Date).getTime(),r=Math.max(0,16-(t-p)),i=a.setTimeout(function(){e(t+r)},r);return p=t+r,i},h=function(e){a.clearTimeout(e)}}var m,f,g,v=a.MutationObserver||a.WebKitMutationObserver||!1,w=Date.now||function(){return(new Date).getTime()},b={zindex:"auto",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:"#424242",cursorwidth:"6px",cursorborder:"1px solid #fff",cursorborderradius:"5px",scrollspeed:40,mousescrollstep:27,touchbehavior:!1,emulatetouch:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:"",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,railhoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},disableoutline:!0,horizrailenabled:!0,railalign:"right",railvalign:"bottom",enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:.3,rtlmode:"auto",cursordragontouch:!1,oneaxismousemode:"auto",scriptpath:(f=l.currentScript||!!(m=l.getElementsByTagName("script")).length&&m[m.length-1],g=f?f.src.split("?")[0]:"",g.split("/").length>0?g.split("/").slice(0,-1).join("/")+"/":""),preventmultitouchscrolling:!0,disablemutationobserver:!1,enableobserver:!0,scrollbarid:!1},y=!1,x=function(e,p){var m=this;this.version="3.7.6",this.name="nicescroll",this.me=p;var f=n("body"),g=this.opt={doc:f,win:!1};if(n.extend(g,b),g.snapbackspeed=80,e)for(var x in g)void 0!==e[x]&&(g[x]=e[x]);if(g.disablemutationobserver&&(v=!1),this.doc=g.doc,this.iddoc=this.doc&&this.doc[0]&&this.doc[0].id||"",this.ispage=/^BODY|HTML/.test(g.win?g.win[0].nodeName:this.doc[0].nodeName),this.haswrapper=!1!==g.win,this.win=g.win||(this.ispage?c:this.doc),this.docscroll=this.ispage&&!this.haswrapper?c:this.win,this.body=f,this.viewport=!1,this.isfixed=!1,this.iframe=!1,this.isiframe="IFRAME"==this.doc[0].nodeName&&"IFRAME"==this.win[0].nodeName,this.istextarea="TEXTAREA"==this.win[0].nodeName,this.forcescreen=!1,this.canshowonmouseevent="scroll"!=g.autohidemode,this.onmousedown=!1,this.onmouseup=!1,this.onmousemove=!1,this.onmousewheel=!1,this.onkeypress=!1,this.ongesturezoom=!1,this.onclick=!1,this.onscrollstart=!1,this.onscrollend=!1,this.onscrollcancel=!1,this.onzoomin=!1,this.onzoomout=!1,this.view=!1,this.page=!1,this.scroll={x:0,y:0},this.scrollratio={x:0,y:0},this.cursorheight=20,this.scrollvaluemax=0,"auto"==g.rtlmode){var z=this.win[0]==a?this.body:this.win,k=z.css("writing-mode")||z.css("-webkit-writing-mode")||z.css("-ms-writing-mode")||z.css("-moz-writing-mode");"horizontal-tb"==k||"lr-tb"==k||""===k?(this.isrtlmode="rtl"==z.css("direction"),this.isvertical=!1):(this.isrtlmode="vertical-rl"==k||"tb"==k||"tb-rl"==k||"rl-tb"==k,this.isvertical="vertical-rl"==k||"tb"==k||"tb-rl"==k)}else this.isrtlmode=!0===g.rtlmode,this.isvertical=!1;if(this.scrollrunning=!1,this.scrollmom=!1,this.observer=!1,this.observerremover=!1,this.observerbody=!1,!1!==g.scrollbarid)this.id=g.scrollbarid;else do{this.id="ascrail"+i++}while(l.getElementById(this.id));this.rail=!1,this.cursor=!1,this.cursorfreezed=!1,this.selectiondrag=!1,this.zoom=!1,this.zoomactive=!1,this.hasfocus=!1,this.hasmousefocus=!1,this.railslocked=!1,this.locked=!1,this.hidden=!1,this.cursoractive=!0,this.wheelprevented=!1,this.overflowx=g.overflowx,this.overflowy=g.overflowy,this.nativescrollingarea=!1,this.checkarea=0,this.events=[],this.saved={},this.delaylist={},this.synclist={},this.lastdeltax=0,this.lastdeltay=0,this.detected=function(){if(y)return y;var e=l.createElement("DIV"),o=e.style,t=navigator.userAgent,r=navigator.platform,i={};return i.haspointerlock="pointerLockElement"in l||"webkitPointerLockElement"in l||"mozPointerLockElement"in l,i.isopera="opera"in a,i.isopera12=i.isopera&&"getUserMedia"in navigator,i.isoperamini="[object OperaMini]"===Object.prototype.toString.call(a.operamini),i.isie="all"in l&&"attachEvent"in e&&!i.isopera,i.isieold=i.isie&&!("msInterpolationMode"in o),i.isie7=i.isie&&!i.isieold&&(!("documentMode"in l)||7===l.documentMode),i.isie8=i.isie&&"documentMode"in l&&8===l.documentMode,i.isie9=i.isie&&"performance"in a&&9===l.documentMode,i.isie10=i.isie&&"performance"in a&&10===l.documentMode,i.isie11="msRequestFullscreen"in e&&l.documentMode>=11,i.ismsedge="msCredentials"in a,i.ismozilla="MozAppearance"in o,i.iswebkit=!i.ismsedge&&"WebkitAppearance"in o,i.ischrome=i.iswebkit&&"chrome"in a,i.ischrome38=i.ischrome&&"touchAction"in o,i.ischrome22=!i.ischrome38&&i.ischrome&&i.haspointerlock,i.ischrome26=!i.ischrome38&&i.ischrome&&"transition"in o,i.cantouch="ontouchstart"in l.documentElement||"ontouchstart"in a,i.hasw3ctouch=!!a.PointerEvent&&(navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),i.hasmstouch=!i.hasw3ctouch&&(a.MSPointerEvent||!1),i.ismac=/^mac$/i.test(r),i.isios=i.cantouch&&/iphone|ipad|ipod/i.test(r),i.isios4=i.isios&&!("seal"in Object),i.isios7=i.isios&&"webkitHidden"in l,i.isios8=i.isios&&"hidden"in l,i.isios10=i.isios&&a.Proxy,i.isandroid=/android/i.test(t),i.haseventlistener="addEventListener"in e,i.trstyle=!1,i.hastransform=!1,i.hastranslate3d=!1,i.transitionstyle=!1,i.hastransition=!1,i.transitionend=!1,i.trstyle="transform",i.hastransform="transform"in o||function(){for(var e=["msTransform","webkitTransform","MozTransform","OTransform"],t=0,r=e.length;t=1?this.ed:this.st+this.df*o|0},update:function(e,o){return this.st=this.getNow(),this.ed=e,this.spd=o,this.ts=w(),this.df=this.ed-this.st,this}},this.ishwscroll){this.doc.translate={x:0,y:0,tx:"0px",ty:"0px"},T.hastranslate3d&&T.isios&&this.doc.css("-webkit-backface-visibility","hidden"),this.getScrollTop=function(e){if(!e){var o=M();if(o)return 16==o.length?-o[13]:-o[5];if(m.timerscroll&&m.timerscroll.bz)return m.timerscroll.bz.getNow()}return m.doc.translate.y},this.getScrollLeft=function(e){if(!e){var o=M();if(o)return 16==o.length?-o[12]:-o[4];if(m.timerscroll&&m.timerscroll.bh)return m.timerscroll.bh.getNow()}return m.doc.translate.x},this.notifyScrollEvent=function(e){var o=l.createEvent("UIEvents");o.initUIEvent("scroll",!1,!1,a,1),o.niceevent=!0,e.dispatchEvent(o)};var L=this.isrtlmode?1:-1;T.hastranslate3d&&g.enabletranslate3d?(this.setScrollTop=function(e,o){m.doc.translate.y=e,m.doc.translate.ty=-1*e+"px",m.doc.css(T.trstyle,"translate3d("+m.doc.translate.tx+","+m.doc.translate.ty+",0)"),o||m.notifyScrollEvent(m.win[0])},this.setScrollLeft=function(e,o){m.doc.translate.x=e,m.doc.translate.tx=e*L+"px",m.doc.css(T.trstyle,"translate3d("+m.doc.translate.tx+","+m.doc.translate.ty+",0)"),o||m.notifyScrollEvent(m.win[0])}):(this.setScrollTop=function(e,o){m.doc.translate.y=e,m.doc.translate.ty=-1*e+"px",m.doc.css(T.trstyle,"translate("+m.doc.translate.tx+","+m.doc.translate.ty+")"),o||m.notifyScrollEvent(m.win[0])},this.setScrollLeft=function(e,o){m.doc.translate.x=e,m.doc.translate.tx=e*L+"px",m.doc.css(T.trstyle,"translate("+m.doc.translate.tx+","+m.doc.translate.ty+")"),o||m.notifyScrollEvent(m.win[0])})}else this.getScrollTop=function(){return m.docscroll.scrollTop()},this.setScrollTop=function(e){m.docscroll.scrollTop(e)},this.getScrollLeft=function(){return m.hasreversehr?m.detected.ismozilla?m.page.maxw-Math.abs(m.docscroll.scrollLeft()):m.page.maxw-m.docscroll.scrollLeft():m.docscroll.scrollLeft()},this.setScrollLeft=function(e){return setTimeout(function(){if(m)return m.hasreversehr&&(e=m.detected.ismozilla?-(m.page.maxw-e):m.page.maxw-e),m.docscroll.scrollLeft(e)},1)};this.getTarget=function(e){return!!e&&(e.target?e.target:!!e.srcElement&&e.srcElement)},this.hasParent=function(e,o){if(!e)return!1;for(var t=e.target||e.srcElement||e||!1;t&&t.id!=o;)t=t.parentNode||!1;return!1!==t};var C={thin:1,medium:3,thick:5};function N(e,o,t){var r=e.css(o),i=parseFloat(r);if(isNaN(i)){var s=3==(i=C[r]||0)?t?m.win.outerHeight()-m.win.innerHeight():m.win.outerWidth()-m.win.innerWidth():1;return m.isie8&&i&&(i+=1),s?i:0}return i}this.getDocumentScrollOffset=function(){return{top:a.pageYOffset||l.documentElement.scrollTop,left:a.pageXOffset||l.documentElement.scrollLeft}},this.getOffset=function(){if(m.isfixed){var e=m.win.offset(),o=m.getDocumentScrollOffset();return e.top-=o.top,e.left-=o.left,e}var t=m.win.offset();if(!m.viewport)return t;var r=m.viewport.offset();return{top:t.top-r.top,left:t.left-r.left}},this.updateScrollBar=function(e){var o,t;if(m.ishwscroll)m.rail.css({height:m.win.innerHeight()-(g.railpadding.top+g.railpadding.bottom)}),m.railh&&m.railh.css({width:m.win.innerWidth()-(g.railpadding.left+g.railpadding.right)});else{var r=m.getOffset();if((o={top:r.top,left:r.left-(g.railpadding.left+g.railpadding.right)}).top+=N(m.win,"border-top-width",!0),o.left+=m.rail.align?m.win.outerWidth()-N(m.win,"border-right-width")-m.rail.width:N(m.win,"border-left-width"),(t=g.railoffset)&&(t.top&&(o.top+=t.top),t.left&&(o.left+=t.left)),m.railslocked||m.rail.css({top:o.top,left:o.left,height:(e?e.h:m.win.innerHeight())-(g.railpadding.top+g.railpadding.bottom)}),m.zoom&&m.zoom.css({top:o.top+1,left:1==m.rail.align?o.left-20:o.left+m.rail.width+4}),m.railh&&!m.railslocked){o={top:r.top,left:r.left},(t=g.railhoffset)&&(t.top&&(o.top+=t.top),t.left&&(o.left+=t.left));var i=m.railh.align?o.top+N(m.win,"border-top-width",!0)+m.win.innerHeight()-m.railh.height:o.top+N(m.win,"border-top-width",!0),s=o.left+N(m.win,"border-left-width");m.railh.css({top:i-(g.railpadding.top+g.railpadding.bottom),left:s,width:m.railh.width})}}},this.doRailClick=function(e,o,t){var r,i,s,n;m.railslocked||(m.cancelEvent(e),"pageY"in e||(e.pageX=e.clientX+l.documentElement.scrollLeft,e.pageY=e.clientY+l.documentElement.scrollTop),o?(r=t?m.doScrollLeft:m.doScrollTop,s=t?(e.pageX-m.railh.offset().left-m.cursorwidth/2)*m.scrollratio.x:(e.pageY-m.rail.offset().top-m.cursorheight/2)*m.scrollratio.y,m.unsynched("relativexy"),r(0|s)):(r=t?m.doScrollLeftBy:m.doScrollBy,s=t?m.scroll.x:m.scroll.y,n=t?e.pageX-m.railh.offset().left:e.pageY-m.rail.offset().top,i=t?m.view.w:m.view.h,r(s>=n?i:-i)))},m.newscrolly=m.newscrollx=0,m.hasanimationframe="requestAnimationFrame"in a,m.hascancelanimationframe="cancelAnimationFrame"in a,m.hasborderbox=!1,this.init=function(){if(m.saved.css=[],T.isoperamini)return!0;if(T.isandroid&&!("hidden"in l))return!0;g.emulatetouch=g.emulatetouch||g.touchbehavior,m.hasborderbox=a.getComputedStyle&&"border-box"===a.getComputedStyle(l.body)["box-sizing"];var e={"overflow-y":"hidden"};if((T.isie11||T.isie10)&&(e["-ms-overflow-style"]="none"),m.ishwscroll&&(this.doc.css(T.transitionstyle,T.prefixstyle+"transform 0ms ease-out"),T.transitionend&&m.bind(m.doc,T.transitionend,m.onScrollTransitionEnd,!1)),m.zindex="auto",m.ispage||"auto"!=g.zindex?m.zindex=g.zindex:m.zindex=function(){var e=m.win;if("zIndex"in e)return e.zIndex();for(;e.length>0;){if(9==e[0].nodeType)return!1;var o=e.css("zIndex");if(!isNaN(o)&&0!==o)return parseInt(o);e=e.parent()}return!1}()||"auto",!m.ispage&&"auto"!=m.zindex&&m.zindex>s&&(s=m.zindex),m.isie&&0===m.zindex&&"auto"==g.zindex&&(m.zindex="auto"),!m.ispage||!T.isieold){var i=m.docscroll;m.ispage&&(i=m.haswrapper?m.win:m.doc),m.css(i,e),m.ispage&&(T.isie11||T.isie)&&m.css(n("html"),e),!T.isios||m.ispage||m.haswrapper||m.css(f,{"-webkit-overflow-scrolling":"touch"});var d=n(l.createElement("div"));d.css({position:"relative",top:0,float:"right",width:g.cursorwidth,height:0,"background-color":g.cursorcolor,border:g.cursorborder,"background-clip":"padding-box","-webkit-border-radius":g.cursorborderradius,"-moz-border-radius":g.cursorborderradius,"border-radius":g.cursorborderradius}),d.addClass("nicescroll-cursors"),m.cursor=d;var u=n(l.createElement("div"));u.attr("id",m.id),u.addClass("nicescroll-rails nicescroll-rails-vr");var h,p,w=["left","right","top","bottom"];for(var b in w)p=w[b],(h=g.railpadding[p]||0)&&u.css("padding-"+p,h+"px");u.append(d),u.width=Math.max(parseFloat(g.cursorwidth),d.outerWidth()),u.css({width:u.width+"px",zIndex:m.zindex,background:g.background,cursor:"default"}),u.visibility=!0,u.scrollable=!0,u.align="left"==g.railalign?0:1,m.rail=u,m.rail.drag=!1;var y,x=!1;if(!g.boxzoom||m.ispage||T.isieold||(x=l.createElement("div"),m.bind(x,"click",m.doZoom),m.bind(x,"mouseenter",function(){m.zoom.css("opacity",g.cursoropacitymax)}),m.bind(x,"mouseleave",function(){m.zoom.css("opacity",g.cursoropacitymin)}),m.zoom=n(x),m.zoom.css({cursor:"pointer",zIndex:m.zindex,backgroundImage:"url("+g.scriptpath+"zoomico.png)",height:18,width:18,backgroundPosition:"0 0"}),g.dblclickzoom&&m.bind(m.win,"dblclick",m.doZoom),T.cantouch&&g.gesturezoom&&(m.ongesturezoom=function(e){return e.scale>1.5&&m.doZoomIn(e),e.scale<.8&&m.doZoomOut(e),m.cancelEvent(e)},m.bind(m.win,"gestureend",m.ongesturezoom))),m.railh=!1,g.horizrailenabled&&(m.css(i,{overflowX:"hidden"}),(d=n(l.createElement("div"))).css({position:"absolute",top:0,height:g.cursorwidth,width:0,backgroundColor:g.cursorcolor,border:g.cursorborder,backgroundClip:"padding-box","-webkit-border-radius":g.cursorborderradius,"-moz-border-radius":g.cursorborderradius,"border-radius":g.cursorborderradius}),T.isieold&&d.css("overflow","hidden"),d.addClass("nicescroll-cursors"),m.cursorh=d,(y=n(l.createElement("div"))).attr("id",m.id+"-hr"),y.addClass("nicescroll-rails nicescroll-rails-hr"),y.height=Math.max(parseFloat(g.cursorwidth),d.outerHeight()),y.css({height:y.height+"px",zIndex:m.zindex,background:g.background}),y.append(d),y.visibility=!0,y.scrollable=!0,y.align="top"==g.railvalign?0:1,m.railh=y,m.railh.drag=!1),m.ispage)u.css({position:"fixed",top:0,height:"100%"}),u.css(u.align?{right:0}:{left:0}),m.body.append(u),m.railh&&(y.css({position:"fixed",left:0,width:"100%"}),y.css(y.align?{bottom:0}:{top:0}),m.body.append(y));else{if(m.ishwscroll){"static"==m.win.css("position")&&m.css(m.win,{position:"relative"});var z="HTML"==m.win[0].nodeName?m.body:m.win;n(z).scrollTop(0).scrollLeft(0),m.zoom&&(m.zoom.css({position:"absolute",top:1,right:0,"margin-right":u.width+4}),z.append(m.zoom)),u.css({position:"absolute",top:0}),u.css(u.align?{right:0}:{left:0}),z.append(u),y&&(y.css({position:"absolute",left:0,bottom:0}),y.css(y.align?{bottom:0}:{top:0}),z.append(y))}else{m.isfixed="fixed"==m.win.css("position");var k=m.isfixed?"fixed":"absolute";m.isfixed||(m.viewport=m.getViewport(m.win[0])),m.viewport&&(m.body=m.viewport,/fixed|absolute/.test(m.viewport.css("position"))||m.css(m.viewport,{position:"relative"})),u.css({position:k}),m.zoom&&m.zoom.css({position:k}),m.updateScrollBar(),m.body.append(u),m.zoom&&m.body.append(m.zoom),m.railh&&(y.css({position:k}),m.body.append(y))}T.isios&&m.css(m.win,{"-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none"}),g.disableoutline&&(T.isie&&m.win.attr("hideFocus","true"),T.iswebkit&&m.win.css("outline","none"))}if(!1===g.autohidemode?(m.autohidedom=!1,m.rail.css({opacity:g.cursoropacitymax}),m.railh&&m.railh.css({opacity:g.cursoropacitymax})):!0===g.autohidemode||"leave"===g.autohidemode?(m.autohidedom=n().add(m.rail),T.isie8&&(m.autohidedom=m.autohidedom.add(m.cursor)),m.railh&&(m.autohidedom=m.autohidedom.add(m.railh)),m.railh&&T.isie8&&(m.autohidedom=m.autohidedom.add(m.cursorh))):"scroll"==g.autohidemode?(m.autohidedom=n().add(m.rail),m.railh&&(m.autohidedom=m.autohidedom.add(m.railh))):"cursor"==g.autohidemode?(m.autohidedom=n().add(m.cursor),m.railh&&(m.autohidedom=m.autohidedom.add(m.cursorh))):"hidden"==g.autohidemode&&(m.autohidedom=!1,m.hide(),m.railslocked=!1),T.cantouch||m.istouchcapable||g.emulatetouch||T.hasmstouch){m.scrollmom=new S(m);m.ontouchstart=function(e){if(m.locked)return!1;if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!1;if(m.hasmoving=!1,m.scrollmom.timer&&(m.triggerScrollEnd(),m.scrollmom.stop()),!m.railslocked){var o=m.getTarget(e);if(o)if(/INPUT/i.test(o.nodeName)&&/range/i.test(o.type))return m.stopPropagation(e);var t="mousedown"===e.type;if(!("clientX"in e)&&"changedTouches"in e&&(e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY),m.forcescreen){var r=e;(e={original:e.original?e.original:e}).clientX=r.screenX,e.clientY=r.screenY}if(g.horizrailenabled?m.rail.drag={x:e.clientX,y:e.clientY,sx:m.scroll.x,sy:m.scroll.y,st:m.getScrollTop(),sl:m.getScrollLeft(),pt:2,dl:!1,tg:o}:m.rail.drag={x:0,y:e.clientY,sx:0,sy:m.scroll.y,st:m.getScrollTop(),sl:0,pt:2,dl:!1,tg:o},m.ispage||!g.directionlockdeadzone)m.rail.drag.dl="f";else{var i=c.width(),s=c.height(),l=m.getContentSize(),a=l.h-s,d=l.w-i;m.rail.scrollable&&!m.railh.scrollable?m.rail.drag.ck=a>0&&"v":!m.rail.scrollable&&m.railh.scrollable?m.rail.drag.ck=d>0&&"h":m.rail.drag.ck=!1}if(g.emulatetouch&&m.isiframe&&T.isie){var u=m.win.position();m.rail.drag.x+=u.left,m.rail.drag.y+=u.top}if(m.hasmoving=!1,m.lastmouseup=!1,g.horizrailenabled?m.scrollmom.reset(e.clientX,e.clientY):m.scrollmom.reset(0,e.clientY),o&&t){if(!/INPUT|SELECT|BUTTON|TEXTAREA/i.test(o.nodeName))return T.hasmousecapture&&o.setCapture(),g.emulatetouch?(o.onclick&&!o._onclick&&(o._onclick=o.onclick,o.onclick=function(e){if(m.hasmoving)return!1;o._onclick.call(this,e)}),m.cancelEvent(e)):m.stopPropagation(e);/SUBMIT|CANCEL|BUTTON/i.test(n(o).attr("type"))&&(m.preventclick={tg:o,click:!1})}}},m.ontouchend=function(e){if(!m.rail.drag)return!0;if(2==m.rail.drag.pt){if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!1;m.rail.drag=!1;var o="mouseup"===e.type;if(m.hasmoving&&(m.scrollmom.doMomentum(),m.lastmouseup=!0,m.hideCursor(),T.hasmousecapture&&l.releaseCapture(),o))return m.cancelEvent(e)}else if(1==m.rail.drag.pt)return m.onmouseup(e)};var E=g.emulatetouch&&m.isiframe&&!T.hasmousecapture,M=.3*g.directionlockdeadzone|0;m.ontouchmove=function(e,o){if(!m.rail.drag)return!0;if(e.targetTouches&&g.preventmultitouchscrolling&&e.targetTouches.length>1)return!0;if(e.pointerType&&("mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))return!0;if(2==m.rail.drag.pt){var t,r;if("changedTouches"in e&&(e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY),r=t=0,E&&!o){var i=m.win.position();r=-i.left,t=-i.top}var s=e.clientY+t,n=s-m.rail.drag.y,a=e.clientX+r;g.horizrailenabled||(a=0+r);var c=a-m.rail.drag.x,d=m.rail.drag.st-n;if(m.ishwscroll&&g.bouncescroll)d<0?d=Math.round(d/2):d>m.page.maxh&&(d=m.page.maxh+Math.round((d-m.page.maxh)/2));else if(d<0?(d=0,s=0):d>m.page.maxh&&(d=m.page.maxh,s=0),0===s&&!m.hasmoving)return m.ispage||(m.rail.drag=!1),!0;var u=m.getScrollLeft();if(m.railh&&m.railh.scrollable&&(u=m.isrtlmode?c-m.rail.drag.sl:m.rail.drag.sl-c,m.ishwscroll&&g.bouncescroll?u<0?u=Math.round(u/2):u>m.page.maxw&&(u=m.page.maxw+Math.round((u-m.page.maxw)/2)):(u<0&&(u=0,a=0),u>m.page.maxw&&(u=m.page.maxw,a=0))),!m.hasmoving){if(m.rail.drag.y===e.clientY&&m.rail.drag.x===e.clientX)return m.cancelEvent(e);var h=Math.abs(n),p=Math.abs(c),f=g.directionlockdeadzone;if(m.rail.drag.ck?"v"==m.rail.drag.ck?p>f&&h<=M?m.rail.drag=!1:h>f&&(m.rail.drag.dl="v"):"h"==m.rail.drag.ck&&(h>f&&p<=M?m.rail.drag=!1:p>f&&(m.rail.drag.dl="h")):h>f&&p>f?m.rail.drag.dl="f":h>f?m.rail.drag.dl=p>M?"f":"v":p>f&&(m.rail.drag.dl=h>M?"f":"h"),!m.rail.drag.dl)return m.cancelEvent(e);g.horizrailenabled?m.triggerScrollStart(e.clientX,e.clientY,0,0,0):m.triggerScrollStart(0,e.clientY,0,0,0),m.hasmoving=!0}return m.preventclick&&!m.preventclick.click&&(m.preventclick.click=m.preventclick.tg.onclick||!1,m.preventclick.tg.onclick=m.onpreventclick),m.rail.drag.dl&&("v"==m.rail.drag.dl?u=m.rail.drag.sl:"h"==m.rail.drag.dl&&(d=m.rail.drag.st)),m.synched("touchmove",function(){m.rail.drag&&2==m.rail.drag.pt&&(m.prepareTransition&&m.resetTransition(),m.rail.scrollable&&m.setScrollTop(d),m.scrollmom.update(a,s),m.railh&&m.railh.scrollable?(m.setScrollLeft(u),m.showCursor(d,u)):m.showCursor(d),T.isie10&&l.selection.clear())}),m.cancelEvent(e)}return 1==m.rail.drag.pt?m.onmousemove(e):void 0},m.ontouchstartCursor=function(e,o){if(!m.rail.drag||3==m.rail.drag.pt){if(m.locked)return m.cancelEvent(e);m.cancelScroll(),g.horizrailenabled?m.rail.drag={x:e.touches[0].clientX,y:e.touches[0].clientY,sx:m.scroll.x,sy:m.scroll.y,pt:3,hr:!!o}:m.rail.drag={x:0,y:e.touches[0].clientY,sx:0,sy:m.scroll.y,pt:3,hr:!!o};var t=m.getTarget(e);return!m.ispage&&T.hasmousecapture&&t.setCapture(),m.isiframe&&!T.hasmousecapture&&(m.saved.csspointerevents=m.doc.css("pointer-events"),m.css(m.doc,{"pointer-events":"none"})),m.cancelEvent(e)}},m.ontouchendCursor=function(e){if(m.rail.drag){if(T.hasmousecapture&&l.releaseCapture(),m.isiframe&&!T.hasmousecapture&&m.doc.css("pointer-events",m.saved.csspointerevents),3!=m.rail.drag.pt)return;return m.rail.drag=!1,m.cancelEvent(e)}},m.ontouchmoveCursor=function(e){if(m.rail.drag){if(3!=m.rail.drag.pt)return;if(m.cursorfreezed=!0,m.rail.drag.hr){if(g.horizrailenabled){m.scroll.x=m.rail.drag.sx+(e.touches[0].clientX-m.rail.drag.x),m.scroll.x<0&&(m.scroll.x=0);var o=m.scrollvaluemaxw;m.scroll.x>o&&(m.scroll.x=o)}}else{m.scroll.y=m.rail.drag.sy+(e.touches[0].clientY-m.rail.drag.y),m.scroll.y<0&&(m.scroll.y=0);var t=m.scrollvaluemax;m.scroll.y>t&&(m.scroll.y=t)}return m.synched("touchmove",function(){m.rail.drag&&3==m.rail.drag.pt&&(m.showCursor(),m.rail.drag.hr?m.doScrollLeft(Math.round(m.scroll.x*m.scrollratio.x),g.cursordragspeed):m.doScrollTop(Math.round(m.scroll.y*m.scrollratio.y),g.cursordragspeed))}),m.cancelEvent(e)}}}if(m.onmousedown=function(e,o){if(!m.rail.drag||1==m.rail.drag.pt){if(m.railslocked)return m.cancelEvent(e);m.cancelScroll(),g.horizrailenabled?m.rail.drag={x:e.clientX,y:e.clientY,sx:m.scroll.x,sy:m.scroll.y,pt:1,hr:o||!1}:m.rail.drag={x:0,y:e.clientY,sx:0,sy:m.scroll.y,pt:1,hr:o||!1};var t=m.getTarget(e);return T.hasmousecapture&&t.setCapture(),m.isiframe&&!T.hasmousecapture&&(m.saved.csspointerevents=m.doc.css("pointer-events"),m.css(m.doc,{"pointer-events":"none"})),m.hasmoving=!1,m.cancelEvent(e)}},m.onmouseup=function(e){if(m.rail.drag)return 1!=m.rail.drag.pt||(T.hasmousecapture&&l.releaseCapture(),m.isiframe&&!T.hasmousecapture&&m.doc.css("pointer-events",m.saved.csspointerevents),m.rail.drag=!1,m.cursorfreezed=!1,m.hasmoving&&m.triggerScrollEnd(),m.cancelEvent(e))},m.onmousemove=function(e){if(m.rail.drag){if(1!==m.rail.drag.pt)return;if(T.ischrome&&0===e.which)return m.onmouseup(e);if(m.cursorfreezed=!0,g.horizrailenabled?m.hasmoving||m.triggerScrollStart(e.clientX,e.clientY,0,0,0):m.hasmoving||m.triggerScrollStart(0,e.clientY,0,0,0),m.hasmoving=!0,m.rail.drag.hr){if(g.horizrailenabled){m.scroll.x=m.rail.drag.sx+(e.clientX-m.rail.drag.x),m.scroll.x<0&&(m.scroll.x=0);var o=m.scrollvaluemaxw;m.scroll.x>o&&(m.scroll.x=o)}}else{m.scroll.y=m.rail.drag.sy+(e.clientY-m.rail.drag.y),m.scroll.y<0&&(m.scroll.y=0);var t=m.scrollvaluemax;m.scroll.y>t&&(m.scroll.y=t)}return m.synched("mousemove",function(){m.cursorfreezed&&(m.showCursor(),m.rail.drag.hr?m.scrollLeft(Math.round(m.scroll.x*m.scrollratio.x)):m.scrollTop(Math.round(m.scroll.y*m.scrollratio.y)))}),m.cancelEvent(e)}m.checkarea=0},T.cantouch||g.emulatetouch)m.onpreventclick=function(e){if(m.preventclick)return m.preventclick.tg.onclick=m.preventclick.click,m.preventclick=!1,m.cancelEvent(e)},m.onclick=!T.isios&&function(e){return!m.lastmouseup||(m.lastmouseup=!1,m.cancelEvent(e))},g.grabcursorenabled&&T.cursorgrabvalue&&(m.css(m.ispage?m.doc:m.win,{cursor:T.cursorgrabvalue}),m.css(m.rail,{cursor:T.cursorgrabvalue}));else{var L=function(e){if(m.selectiondrag){if(e){var o=m.win.outerHeight(),t=e.pageY-m.selectiondrag.top;t>0&&t=o&&(t-=o),m.selectiondrag.df=t}if(0!==m.selectiondrag.df){var r=-2*m.selectiondrag.df/6|0;m.doScrollBy(r),m.debounced("doselectionscroll",function(){L()},50)}}};m.hasTextSelected="getSelection"in l?function(){return l.getSelection().rangeCount>0}:"selection"in l?function(){return"None"!=l.selection.type}:function(){return!1},m.onselectionstart=function(e){m.ispage||(m.selectiondrag=m.win.offset())},m.onselectionend=function(e){m.selectiondrag=!1},m.onselectiondrag=function(e){m.selectiondrag&&m.hasTextSelected()&&m.debounced("selectionscroll",function(){L(e)},250)}}if(T.hasw3ctouch?(m.css(m.ispage?n("html"):m.win,{"touch-action":"none"}),m.css(m.rail,{"touch-action":"none"}),m.css(m.cursor,{"touch-action":"none"}),m.bind(m.win,"pointerdown",m.ontouchstart),m.bind(l,"pointerup",m.ontouchend),m.delegate(l,"pointermove",m.ontouchmove)):T.hasmstouch?(m.css(m.ispage?n("html"):m.win,{"-ms-touch-action":"none"}),m.css(m.rail,{"-ms-touch-action":"none"}),m.css(m.cursor,{"-ms-touch-action":"none"}),m.bind(m.win,"MSPointerDown",m.ontouchstart),m.bind(l,"MSPointerUp",m.ontouchend),m.delegate(l,"MSPointerMove",m.ontouchmove),m.bind(m.cursor,"MSGestureHold",function(e){e.preventDefault()}),m.bind(m.cursor,"contextmenu",function(e){e.preventDefault()})):T.cantouch&&(m.bind(m.win,"touchstart",m.ontouchstart,!1,!0),m.bind(l,"touchend",m.ontouchend,!1,!0),m.bind(l,"touchcancel",m.ontouchend,!1,!0),m.delegate(l,"touchmove",m.ontouchmove,!1,!0)),g.emulatetouch&&(m.bind(m.win,"mousedown",m.ontouchstart,!1,!0),m.bind(l,"mouseup",m.ontouchend,!1,!0),m.bind(l,"mousemove",m.ontouchmove,!1,!0)),(g.cursordragontouch||!T.cantouch&&!g.emulatetouch)&&(m.rail.css({cursor:"default"}),m.railh&&m.railh.css({cursor:"default"}),m.jqbind(m.rail,"mouseenter",function(){if(!m.ispage&&!m.win.is(":visible"))return!1;m.canshowonmouseevent&&m.showCursor(),m.rail.active=!0}),m.jqbind(m.rail,"mouseleave",function(){m.rail.active=!1,m.rail.drag||m.hideCursor()}),g.sensitiverail&&(m.bind(m.rail,"click",function(e){m.doRailClick(e,!1,!1)}),m.bind(m.rail,"dblclick",function(e){m.doRailClick(e,!0,!1)}),m.bind(m.cursor,"click",function(e){m.cancelEvent(e)}),m.bind(m.cursor,"dblclick",function(e){m.cancelEvent(e)})),m.railh&&(m.jqbind(m.railh,"mouseenter",function(){if(!m.ispage&&!m.win.is(":visible"))return!1;m.canshowonmouseevent&&m.showCursor(),m.rail.active=!0}),m.jqbind(m.railh,"mouseleave",function(){m.rail.active=!1,m.rail.drag||m.hideCursor()}),g.sensitiverail&&(m.bind(m.railh,"click",function(e){m.doRailClick(e,!1,!0)}),m.bind(m.railh,"dblclick",function(e){m.doRailClick(e,!0,!0)}),m.bind(m.cursorh,"click",function(e){m.cancelEvent(e)}),m.bind(m.cursorh,"dblclick",function(e){m.cancelEvent(e)})))),g.cursordragontouch&&(this.istouchcapable||T.cantouch)&&(m.bind(m.cursor,"touchstart",m.ontouchstartCursor),m.bind(m.cursor,"touchmove",m.ontouchmoveCursor),m.bind(m.cursor,"touchend",m.ontouchendCursor),m.cursorh&&m.bind(m.cursorh,"touchstart",function(e){m.ontouchstartCursor(e,!0)}),m.cursorh&&m.bind(m.cursorh,"touchmove",m.ontouchmoveCursor),m.cursorh&&m.bind(m.cursorh,"touchend",m.ontouchendCursor)),g.emulatetouch||T.isandroid||T.isios?(m.bind(T.hasmousecapture?m.win:l,"mouseup",m.ontouchend),m.onclick&&m.bind(l,"click",m.onclick),g.cursordragontouch?(m.bind(m.cursor,"mousedown",m.onmousedown),m.bind(m.cursor,"mouseup",m.onmouseup),m.cursorh&&m.bind(m.cursorh,"mousedown",function(e){m.onmousedown(e,!0)}),m.cursorh&&m.bind(m.cursorh,"mouseup",m.onmouseup)):(m.bind(m.rail,"mousedown",function(e){e.preventDefault()}),m.railh&&m.bind(m.railh,"mousedown",function(e){e.preventDefault()}))):(m.bind(T.hasmousecapture?m.win:l,"mouseup",m.onmouseup),m.bind(l,"mousemove",m.onmousemove),m.onclick&&m.bind(l,"click",m.onclick),m.bind(m.cursor,"mousedown",m.onmousedown),m.bind(m.cursor,"mouseup",m.onmouseup),m.railh&&(m.bind(m.cursorh,"mousedown",function(e){m.onmousedown(e,!0)}),m.bind(m.cursorh,"mouseup",m.onmouseup)),!m.ispage&&g.enablescrollonselection&&(m.bind(m.win[0],"mousedown",m.onselectionstart),m.bind(l,"mouseup",m.onselectionend),m.bind(m.cursor,"mouseup",m.onselectionend),m.cursorh&&m.bind(m.cursorh,"mouseup",m.onselectionend),m.bind(l,"mousemove",m.onselectiondrag)),m.zoom&&(m.jqbind(m.zoom,"mouseenter",function(){m.canshowonmouseevent&&m.showCursor(),m.rail.active=!0}),m.jqbind(m.zoom,"mouseleave",function(){m.rail.active=!1,m.rail.drag||m.hideCursor()}))),g.enablemousewheel&&(m.isiframe||m.mousewheel(T.isie&&m.ispage?l:m.win,m.onmousewheel),m.mousewheel(m.rail,m.onmousewheel),m.railh&&m.mousewheel(m.railh,m.onmousewheelhr)),m.ispage||T.cantouch||/HTML|^BODY/.test(m.win[0].nodeName)||(m.win.attr("tabindex")||m.win.attr({tabindex:++r}),m.bind(m.win,"focus",function(e){o=m.getTarget(e).id||m.getTarget(e)||!1,m.hasfocus=!0,m.canshowonmouseevent&&m.noticeCursor()}),m.bind(m.win,"blur",function(e){o=!1,m.hasfocus=!1}),m.bind(m.win,"mouseenter",function(e){t=m.getTarget(e).id||m.getTarget(e)||!1,m.hasmousefocus=!0,m.canshowonmouseevent&&m.noticeCursor()}),m.bind(m.win,"mouseleave",function(e){t=!1,m.hasmousefocus=!1,m.rail.drag||m.hideCursor()})),m.onkeypress=function(e){if(m.railslocked&&0===m.page.maxh)return!0;e=e||a.event;var r=m.getTarget(e);if(r&&/INPUT|TEXTAREA|SELECT|OPTION/.test(r.nodeName)&&(!(r.getAttribute("type")||r.type||!1)||!/submit|button|cancel/i.tp))return!0;if(n(r).attr("contenteditable"))return!0;if(m.hasfocus||m.hasmousefocus&&!o||m.ispage&&!o&&!t){var i=e.keyCode;if(m.railslocked&&27!=i)return m.cancelEvent(e);var s=e.ctrlKey||!1,l=e.shiftKey||!1,c=!1;switch(i){case 38:case 63233:m.doScrollBy(72),c=!0;break;case 40:case 63235:m.doScrollBy(-72),c=!0;break;case 37:case 63232:m.railh&&(s?m.doScrollLeft(0):m.doScrollLeftBy(72),c=!0);break;case 39:case 63234:m.railh&&(s?m.doScrollLeft(m.page.maxw):m.doScrollLeftBy(-72),c=!0);break;case 33:case 63276:m.doScrollBy(m.view.h),c=!0;break;case 34:case 63277:m.doScrollBy(-m.view.h),c=!0;break;case 36:case 63273:m.railh&&s?m.doScrollPos(0,0):m.doScrollTo(0),c=!0;break;case 35:case 63275:m.railh&&s?m.doScrollPos(m.page.maxw,m.page.maxh):m.doScrollTo(m.page.maxh),c=!0;break;case 32:g.spacebarenabled&&(l?m.doScrollBy(m.view.h):m.doScrollBy(-m.view.h),c=!0);break;case 27:m.zoomactive&&(m.doZoom(),c=!0)}if(c)return m.cancelEvent(e)}},g.enablekeyboard&&m.bind(l,T.isopera&&!T.isopera12?"keypress":"keydown",m.onkeypress),m.bind(l,"keydown",function(e){(e.ctrlKey||!1)&&(m.wheelprevented=!0)}),m.bind(l,"keyup",function(e){e.ctrlKey||!1||(m.wheelprevented=!1)}),m.bind(a,"blur",function(e){m.wheelprevented=!1}),m.bind(a,"resize",m.onscreenresize),m.bind(a,"orientationchange",m.onscreenresize),m.bind(a,"load",m.lazyResize),T.ischrome&&!m.ispage&&!m.haswrapper){var C=m.win.attr("style"),N=parseFloat(m.win.css("width"))+1;m.win.css("width",N),m.synched("chromefix",function(){m.win.attr("style",C)})}if(m.onAttributeChange=function(e){m.lazyResize(m.isieold?250:30)},g.enableobserver&&(m.isie11||!1===v||(m.observerbody=new v(function(e){if(e.forEach(function(e){if("attributes"==e.type)return f.hasClass("modal-open")&&f.hasClass("modal-dialog")&&!n.contains(n(".modal-dialog")[0],m.doc[0])?m.hide():m.show()}),m.me.clientWidth!=m.page.width||m.me.clientHeight!=m.page.height)return m.lazyResize(30)}),m.observerbody.observe(l.body,{childList:!0,subtree:!0,characterData:!1,attributes:!0,attributeFilter:["class"]})),!m.ispage&&!m.haswrapper)){var P=m.win[0];!1!==v?(m.observer=new v(function(e){e.forEach(m.onAttributeChange)}),m.observer.observe(P,{childList:!0,characterData:!1,attributes:!0,subtree:!1}),m.observerremover=new v(function(e){e.forEach(function(e){if(e.removedNodes.length>0)for(var o in e.removedNodes)if(m&&e.removedNodes[o]===P)return m.remove()})}),m.observerremover.observe(P.parentNode,{childList:!0,characterData:!1,attributes:!1,subtree:!1})):(m.bind(P,T.isie&&!T.isie9?"propertychange":"DOMAttrModified",m.onAttributeChange),T.isie9&&P.attachEvent("onpropertychange",m.onAttributeChange),m.bind(P,"DOMNodeRemoved",function(e){e.target===P&&m.remove()}))}!m.ispage&&g.boxzoom&&m.bind(a,"resize",m.resizeZoom),m.istextarea&&(m.bind(m.win,"keydown",m.lazyResize),m.bind(m.win,"mouseup",m.lazyResize)),m.lazyResize(30)}if("IFRAME"==this.doc[0].nodeName){var R=function(){var o;m.iframexd=!1;try{(o="contentDocument"in this?this.contentDocument:this.contentWindow._doc).domain}catch(e){m.iframexd=!0,o=!1}if(m.iframexd)return"console"in a&&console.log("NiceScroll error: policy restriced iframe"),!0;if(m.forcescreen=!0,m.isiframe&&(m.iframe={doc:n(o),html:m.doc.contents().find("html")[0],body:m.doc.contents().find("body")[0]},m.getContentSize=function(){return{w:Math.max(m.iframe.html.scrollWidth,m.iframe.body.scrollWidth),h:Math.max(m.iframe.html.scrollHeight,m.iframe.body.scrollHeight)}},m.docscroll=n(m.iframe.body)),!T.isios&&g.iframeautoresize&&!m.isiframe){m.win.scrollTop(0),m.doc.height("");var t=Math.max(o.getElementsByTagName("html")[0].scrollHeight,o.body.scrollHeight);m.doc.height(t)}m.lazyResize(30),m.css(n(m.iframe.body),e),T.isios&&m.haswrapper&&m.css(n(o.body),{"-webkit-transform":"translate3d(0,0,0)"}),"contentWindow"in this?m.bind(this.contentWindow,"scroll",m.onscroll):m.bind(o,"scroll",m.onscroll),g.enablemousewheel&&m.mousewheel(o,m.onmousewheel),g.enablekeyboard&&m.bind(o,T.isopera?"keypress":"keydown",m.onkeypress),T.cantouch?(m.bind(o,"touchstart",m.ontouchstart),m.bind(o,"touchmove",m.ontouchmove)):g.emulatetouch&&(m.bind(o,"mousedown",m.ontouchstart),m.bind(o,"mousemove",function(e){return m.ontouchmove(e,!0)}),g.grabcursorenabled&&T.cursorgrabvalue&&m.css(n(o.body),{cursor:T.cursorgrabvalue})),m.bind(o,"mouseup",m.ontouchend),m.zoom&&(g.dblclickzoom&&m.bind(o,"dblclick",m.doZoom),m.ongesturezoom&&m.bind(o,"gestureend",m.ongesturezoom))};this.doc[0].readyState&&"complete"===this.doc[0].readyState&&setTimeout(function(){R.call(m.doc[0],!1)},500),m.bind(this.doc,"load",R)}},this.showCursor=function(e,o){if(m.cursortimeout&&(clearTimeout(m.cursortimeout),m.cursortimeout=0),m.rail){if(m.autohidedom&&(m.autohidedom.stop().css({opacity:g.cursoropacitymax}),m.cursoractive=!0),m.rail.drag&&1==m.rail.drag.pt||(void 0!==e&&!1!==e&&(m.scroll.y=e/m.scrollratio.y|0),void 0!==o&&(m.scroll.x=o/m.scrollratio.x|0)),m.cursor.css({height:m.cursorheight,top:m.scroll.y}),m.cursorh){var t=m.hasreversehr?m.scrollvaluemaxw-m.scroll.x:m.scroll.x;m.cursorh.css({width:m.cursorwidth,left:!m.rail.align&&m.rail.visibility?t+m.rail.width:t}),m.cursoractive=!0}m.zoom&&m.zoom.stop().css({opacity:g.cursoropacitymax})}},this.hideCursor=function(e){m.cursortimeout||m.rail&&m.autohidedom&&(m.hasmousefocus&&"leave"===g.autohidemode||(m.cursortimeout=setTimeout(function(){m.rail.active&&m.showonmouseevent||(m.autohidedom.stop().animate({opacity:g.cursoropacitymin}),m.zoom&&m.zoom.stop().animate({opacity:g.cursoropacitymin}),m.cursoractive=!1),m.cursortimeout=0},e||g.hidecursordelay)))},this.noticeCursor=function(e,o,t){m.showCursor(o,t),m.rail.active||m.hideCursor(e)},this.getContentSize=m.ispage?function(){return{w:Math.max(l.body.scrollWidth,l.documentElement.scrollWidth),h:Math.max(l.body.scrollHeight,l.documentElement.scrollHeight)}}:m.haswrapper?function(){return{w:m.doc[0].offsetWidth,h:m.doc[0].offsetHeight}}:function(){return{w:m.docscroll[0].scrollWidth,h:m.docscroll[0].scrollHeight}},this.onResize=function(e,o){if(!m||!m.win)return!1;var t=m.page.maxh,r=m.page.maxw,i=m.view.h,s=m.view.w;if(m.view={w:m.ispage?m.win.width():m.win[0].clientWidth,h:m.ispage?m.win.height():m.win[0].clientHeight},m.page=o||m.getContentSize(),m.page.maxh=Math.max(0,m.page.h-m.view.h),m.page.maxw=Math.max(0,m.page.w-m.view.w),m.page.maxh==t&&m.page.maxw==r&&m.view.w==s&&m.view.h==i){if(m.ispage)return m;var n=m.win.offset();if(m.lastposition){var l=m.lastposition;if(l.top==n.top&&l.left==n.left)return m}m.lastposition=n}return 0===m.page.maxh?(m.hideRail(),m.scrollvaluemax=0,m.scroll.y=0,m.scrollratio.y=0,m.cursorheight=0,m.setScrollTop(0),m.rail&&(m.rail.scrollable=!1)):(m.page.maxh-=g.railpadding.top+g.railpadding.bottom,m.rail.scrollable=!0),0===m.page.maxw?(m.hideRailHr(),m.scrollvaluemaxw=0,m.scroll.x=0,m.scrollratio.x=0,m.cursorwidth=0,m.setScrollLeft(0),m.railh&&(m.railh.scrollable=!1)):(m.page.maxw-=g.railpadding.left+g.railpadding.right,m.railh&&(m.railh.scrollable=g.horizrailenabled)),m.railslocked=m.locked||0===m.page.maxh&&0===m.page.maxw,m.railslocked?(m.ispage||m.updateScrollBar(m.view),!1):(m.hidden||(m.rail.visibility||m.showRail(),m.railh&&!m.railh.visibility&&m.showRailHr()),m.istextarea&&m.win.css("resize")&&"none"!=m.win.css("resize")&&(m.view.h-=20),m.cursorheight=Math.min(m.view.h,Math.round(m.view.h*(m.view.h/m.page.h))),m.cursorheight=g.cursorfixedheight?g.cursorfixedheight:Math.max(g.cursorminheight,m.cursorheight),m.cursorwidth=Math.min(m.view.w,Math.round(m.view.w*(m.view.w/m.page.w))),m.cursorwidth=g.cursorfixedheight?g.cursorfixedheight:Math.max(g.cursorminheight,m.cursorwidth),m.scrollvaluemax=m.view.h-m.cursorheight-(g.railpadding.top+g.railpadding.bottom),m.hasborderbox||(m.scrollvaluemax-=m.cursor[0].offsetHeight-m.cursor[0].clientHeight),m.railh&&(m.railh.width=m.page.maxh>0?m.rail.width:m.view.w,m.scrollvaluemaxw=m.railh.width-m.cursorwidth-(g.railpadding.left+g.railpadding.right)),m.ispage||m.updateScrollBar(m.view),m.scrollratio={x:m.page.maxw/m.scrollvaluemaxw,y:m.page.maxh/m.scrollvaluemax},m.getScrollTop()>m.page.maxh?m.doScrollTop(m.page.maxh):(m.scroll.y=m.getScrollTop()/m.scrollratio.y|0,m.scroll.x=m.getScrollLeft()/m.scrollratio.x|0,m.cursoractive&&m.noticeCursor()),m.scroll.y&&0===m.getScrollTop()&&m.doScrollTo(m.scroll.y*m.scrollratio.y|0),m)},this.resize=m.onResize;var P=0;function R(e,o,t,r){m._bind(e,o,function(r){var i={original:r=r||a.event,target:r.target||r.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==r.type?0:1,deltaX:0,deltaZ:0,preventDefault:function(){return r.preventDefault?r.preventDefault():r.returnValue=!1,!1},stopImmediatePropagation:function(){r.stopImmediatePropagation?r.stopImmediatePropagation():r.cancelBubble=!0}};return"mousewheel"==o?(r.wheelDeltaX&&(i.deltaX=-.025*r.wheelDeltaX),r.wheelDeltaY&&(i.deltaY=-.025*r.wheelDeltaY),!i.deltaY&&!i.deltaX&&(i.deltaY=-.025*r.wheelDelta)):i.deltaY=r.detail,t.call(e,i)},r)}this.onscreenresize=function(e){clearTimeout(P);var o=!m.ispage&&!m.haswrapper;o&&m.hideRails(),P=setTimeout(function(){m&&(o&&m.showRails(),m.resize()),P=0},120)},this.lazyResize=function(e){return clearTimeout(P),e=isNaN(e)?240:e,P=setTimeout(function(){m&&m.resize(),P=0},e),m},this.jqbind=function(e,o,t){m.events.push({e:e,n:o,f:t,q:!0}),n(e).on(o,t)},this.mousewheel=function(e,o,t){var r="jquery"in e?e[0]:e;if("onwheel"in l.createElement("div"))m._bind(r,"wheel",o,t||!1);else{var i=void 0!==l.onmousewheel?"mousewheel":"DOMMouseScroll";R(r,i,o,t||!1),"DOMMouseScroll"==i&&R(r,"MozMousePixelScroll",o,t||!1)}};var Y=!1;if(T.haseventlistener){try{var _=Object.defineProperty({},"passive",{get:function(){Y=!0}});a.addEventListener("test",null,_)}catch(e){}this.stopPropagation=function(e){return!!e&&((e=e.original?e.original:e).stopPropagation(),!1)},this.cancelEvent=function(e){return e.cancelable&&e.preventDefault(),e.stopImmediatePropagation(),e.preventManipulation&&e.preventManipulation(),!1}}else Event.prototype.preventDefault=function(){this.returnValue=!1},Event.prototype.stopPropagation=function(){this.cancelBubble=!0},a.constructor.prototype.addEventListener=l.constructor.prototype.addEventListener=Element.prototype.addEventListener=function(e,o,t){this.attachEvent("on"+e,o)},a.constructor.prototype.removeEventListener=l.constructor.prototype.removeEventListener=Element.prototype.removeEventListener=function(e,o,t){this.detachEvent("on"+e,o)},this.cancelEvent=function(e){return(e=e||a.event)&&(e.cancelBubble=!0,e.cancel=!0,e.returnValue=!1),!1},this.stopPropagation=function(e){return(e=e||a.event)&&(e.cancelBubble=!0),!1};this.delegate=function(e,o,t,r,i){var s=d[o]||!1;s||(s={a:[],l:[],f:function(e){for(var o=s.l,t=!1,r=o.length-1;r>=0;r--)if(!1===(t=o[r].call(e.target,e)))return!1;return t}},m.bind(e,o,s.f,r,i),d[o]=s),m.ispage?(s.a=[m.id].concat(s.a),s.l=[t].concat(s.l)):(s.a.push(m.id),s.l.push(t))},this.undelegate=function(e,o,t,r,i){var s=d[o]||!1;if(s&&s.l)for(var n=0,l=s.l.length;n0)return t;o=!!o.parentNode&&o.parentNode}return!1},this.triggerScrollStart=function(e,o,t,r,i){if(m.onscrollstart){var s={type:"scrollstart",current:{x:e,y:o},request:{x:t,y:r},end:{x:m.newscrollx,y:m.newscrolly},speed:i};m.onscrollstart.call(m,s)}},this.triggerScrollEnd=function(){if(m.onscrollend){var e=m.getScrollLeft(),o=m.getScrollTop(),t={type:"scrollend",current:{x:e,y:o},end:{x:e,y:o}};m.onscrollend.call(m,t)}};var I=0,O=0,H=0,B=1;function X(e,o,t,r){m.scrollrunning||(m.newscrolly=m.getScrollTop(),m.newscrollx=m.getScrollLeft(),H=w());var i=w()-H;if(H=w(),i>350?B=1:B+=(2-B)/10,o=o*B|0,e=e*B|0){if(r)if(e<0){if(m.getScrollLeft()>=m.page.maxw)return!0}else if(m.getScrollLeft()<=0)return!0;var s=e>0?1:-1;O!==s&&(m.scrollmom&&m.scrollmom.stop(),m.newscrollx=m.getScrollLeft(),O=s),m.lastdeltax-=e}if(o){if(function(){var e=m.getScrollTop();if(o<0){if(e>=m.page.maxh)return!0}else if(e<=0)return!0}()){if(g.nativeparentscrolling&&t&&!m.ispage&&!m.zoomactive)return!0;var n=m.view.h>>1;m.newscrolly<-n?(m.newscrolly=-n,o=-1):m.newscrolly>m.page.maxh+n?(m.newscrolly=m.page.maxh+n,o=1):o=0}var l=o>0?1:-1;I!==l&&(m.scrollmom&&m.scrollmom.stop(),m.newscrolly=m.getScrollTop(),I=l),m.lastdeltay-=o}(o||e)&&m.synched("relativexy",function(){var e=m.lastdeltay+m.newscrolly;m.lastdeltay=0;var o=m.lastdeltax+m.newscrollx;m.lastdeltax=0,m.rail.drag||m.doScrollPos(o,e)})}var D=!1;function A(e,o,t){var r,i;if(!t&&D)return!0;(0===e.deltaMode?(r=-e.deltaX*(g.mousescrollstep/54)|0,i=-e.deltaY*(g.mousescrollstep/54)|0):1===e.deltaMode&&(r=-e.deltaX*g.mousescrollstep*50/80|0,i=-e.deltaY*g.mousescrollstep*50/80|0),o&&g.oneaxismousemode&&0===r&&i)&&(r=i,i=0,t&&(r<0?m.getScrollLeft()>=m.page.maxw:m.getScrollLeft()<=0)&&(i=r,r=0));if(m.isrtlmode&&(r=-r),!X(r,i,t,!0))return D=!1,e.stopImmediatePropagation(),e.preventDefault();t&&(D=!0)}if(this.onmousewheel=function(e){if(m.wheelprevented||m.locked)return!1;if(m.railslocked)return m.debounced("checkunlock",m.resize,250),!1;if(m.rail.drag)return m.cancelEvent(e);if("auto"===g.oneaxismousemode&&0!==e.deltaX&&(g.oneaxismousemode=!1),g.oneaxismousemode&&0===e.deltaX&&!m.rail.scrollable)return!m.railh||!m.railh.scrollable||m.onmousewheelhr(e);var o=w(),t=!1;if(g.preservenativescrolling&&m.checkarea+600m.page.maxh&&(o=m.page.maxh+(o-m.page.maxh)/2|0),e<0?e=e/2|0:e>m.page.maxw&&(e=m.page.maxw+(e-m.page.maxw)/2|0)):(o<0?o=0:o>m.page.maxh&&(o=m.page.maxh),e<0?e=0:e>m.page.maxw&&(e=m.page.maxw)),m.scrollrunning&&e==m.newscrollx&&o==m.newscrolly)return!1;m.newscrolly=o,m.newscrollx=e;var s=m.getScrollTop(),n=m.getScrollLeft(),l={};l.x=e-n,l.y=o-s;var a=0|Math.sqrt(l.x*l.x+l.y*l.y),c=m.prepareTransition(a);m.scrollrunning||(m.scrollrunning=!0,m.triggerScrollStart(n,s,e,o,c),m.cursorupdate.start()),m.scrollendtrapped=!0,T.transitionend||(m.scrollendtrapped&&clearTimeout(m.scrollendtrapped),m.scrollendtrapped=setTimeout(m.onScrollTransitionEnd,c)),m.setScrollTop(m.newscrolly),m.setScrollLeft(m.newscrollx)},this.cancelScroll=function(){if(!m.scrollendtrapped)return!0;var e=m.getScrollTop(),o=m.getScrollLeft();return m.scrollrunning=!1,T.transitionend||clearTimeout(T.transitionend),m.scrollendtrapped=!1,m.resetTransition(),m.setScrollTop(e),m.railh&&m.setScrollLeft(o),m.timerscroll&&m.timerscroll.tm&&clearInterval(m.timerscroll.tm),m.timerscroll=!1,m.cursorfreezed=!1,m.cursorupdate.stop(),m.showCursor(e,o),m},this.onScrollTransitionEnd=function(){if(m.scrollendtrapped){var e=m.getScrollTop(),o=m.getScrollLeft();if(e<0?e=0:e>m.page.maxh&&(e=m.page.maxh),o<0?o=0:o>m.page.maxw&&(o=m.page.maxw),e!=m.newscrolly||o!=m.newscrollx)return m.doScrollPos(o,e,g.snapbackspeed);m.scrollrunning&&m.triggerScrollEnd(),m.scrollrunning=!1,m.scrollendtrapped=!1,m.resetTransition(),m.timerscroll=!1,m.setScrollTop(e),m.railh&&m.setScrollLeft(o),m.cursorupdate.stop(),m.noticeCursor(!1,e,o),m.cursorfreezed=!1}}}else this.doScrollLeft=function(e,o){var t=m.scrollrunning?m.newscrolly:m.getScrollTop();m.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=m.scrollrunning?m.newscrollx:m.getScrollLeft();m.doScrollPos(t,e,o)},this.doScrollPos=function(e,o,t){var r=m.getScrollTop(),i=m.getScrollLeft();((m.newscrolly-r)*(o-r)<0||(m.newscrollx-i)*(e-i)<0)&&m.cancelScroll();var s=!1;if(m.bouncescroll&&m.rail.visibility||(o<0?(o=0,s=!0):o>m.page.maxh&&(o=m.page.maxh,s=!0)),m.bouncescroll&&m.railh.visibility||(e<0?(e=0,s=!0):e>m.page.maxw&&(e=m.page.maxw,s=!0)),m.scrollrunning&&m.newscrolly===o&&m.newscrollx===e)return!0;m.newscrolly=o,m.newscrollx=e,m.dst={},m.dst.x=e-i,m.dst.y=o-r,m.dst.px=i,m.dst.py=r;var n=0|Math.sqrt(m.dst.x*m.dst.x+m.dst.y*m.dst.y),l=m.getTransitionSpeed(n);m.bzscroll={};var a=s?1:.58;m.bzscroll.x=new E(i,m.newscrollx,l,0,0,a,1),m.bzscroll.y=new E(r,m.newscrolly,l,0,0,a,1);w();var c=function(){if(m.scrollrunning){var e=m.bzscroll.y.getPos();m.setScrollLeft(m.bzscroll.x.getNow()),m.setScrollTop(m.bzscroll.y.getNow()),e<=1?m.timer=u(c):(m.scrollrunning=!1,m.timer=0,m.triggerScrollEnd())}};m.scrollrunning||(m.triggerScrollStart(i,r,e,o,l),m.scrollrunning=!0,m.timer=u(c))},this.cancelScroll=function(){return m.timer&&h(m.timer),m.timer=0,m.bzscroll=!1,m.scrollrunning=!1,m};else this.doScrollLeft=function(e,o){var t=m.getScrollTop();m.doScrollPos(e,t,o)},this.doScrollTop=function(e,o){var t=m.getScrollLeft();m.doScrollPos(t,e,o)},this.doScrollPos=function(e,o,t){var r=e>m.page.maxw?m.page.maxw:e;r<0&&(r=0);var i=o>m.page.maxh?m.page.maxh:o;i<0&&(i=0),m.synched("scroll",function(){m.setScrollTop(i),m.setScrollLeft(r)})},this.cancelScroll=function(){};this.doScrollBy=function(e,o){X(0,e)},this.doScrollLeftBy=function(e,o){X(e,0)},this.doScrollTo=function(e,o){var t=o?Math.round(e*m.scrollratio.y):e;t<0?t=0:t>m.page.maxh&&(t=m.page.maxh),m.cursorfreezed=!1,m.doScrollTop(e)},this.checkContentSize=function(){var e=m.getContentSize();e.h==m.page.h&&e.w==m.page.w||m.resize(!1,e)},m.onscroll=function(e){m.rail.drag||m.cursorfreezed||m.synched("scroll",function(){m.scroll.y=Math.round(m.getScrollTop()/m.scrollratio.y),m.railh&&(m.scroll.x=Math.round(m.getScrollLeft()/m.scrollratio.x)),m.noticeCursor()})},m.bind(m.docscroll,"scroll",m.onscroll),this.doZoomIn=function(e){if(!m.zoomactive){m.zoomactive=!0,m.zoomrestore={style:{}};var o=["position","top","left","zIndex","backgroundColor","marginTop","marginBottom","marginLeft","marginRight"],t=m.win[0].style;for(var r in o){var i=o[r];m.zoomrestore.style[i]=void 0!==t[i]?t[i]:""}m.zoomrestore.style.width=m.win.css("width"),m.zoomrestore.style.height=m.win.css("height"),m.zoomrestore.padding={w:m.win.outerWidth()-m.win.width(),h:m.win.outerHeight()-m.win.height()},T.isios4&&(m.zoomrestore.scrollTop=c.scrollTop(),c.scrollTop(0)),m.win.css({position:T.isios4?"absolute":"fixed",top:0,left:0,zIndex:s+100,margin:0});var n=m.win.css("backgroundColor");return(""===n||/transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(n))&&m.win.css("backgroundColor","#fff"),m.rail.css({zIndex:s+101}),m.zoom.css({zIndex:s+102}),m.zoom.css("backgroundPosition","0 -18px"),m.resizeZoom(),m.onzoomin&&m.onzoomin.call(m),m.cancelEvent(e)}},this.doZoomOut=function(e){if(m.zoomactive)return m.zoomactive=!1,m.win.css("margin",""),m.win.css(m.zoomrestore.style),T.isios4&&c.scrollTop(m.zoomrestore.scrollTop),m.rail.css({"z-index":m.zindex}),m.zoom.css({"z-index":m.zindex}),m.zoomrestore=!1,m.zoom.css("backgroundPosition","0 0"),m.onResize(),m.onzoomout&&m.onzoomout.call(m),m.cancelEvent(e)},this.doZoom=function(e){return m.zoomactive?m.doZoomOut(e):m.doZoomIn(e)},this.resizeZoom=function(){if(m.zoomactive){var e=m.getScrollTop();m.win.css({width:c.width()-m.zoomrestore.padding.w+"px",height:c.height()-m.zoomrestore.padding.h+"px"}),m.onResize(),m.setScrollTop(Math.min(m.page.maxh,e))}},this.init(),n.nicescroll.push(this)},S=function(e){var o=this;this.nc=e,this.lastx=0,this.lasty=0,this.speedx=0,this.speedy=0,this.lasttime=0,this.steptime=0,this.snapx=!1,this.snapy=!1,this.demulx=0,this.demuly=0,this.lastscrollx=-1,this.lastscrolly=-1,this.chkx=0,this.chky=0,this.timer=0,this.reset=function(e,t){o.stop(),o.steptime=0,o.lasttime=w(),o.speedx=0,o.speedy=0,o.lastx=e,o.lasty=t,o.lastscrollx=-1,o.lastscrolly=-1},this.update=function(e,t){var r=w();o.steptime=r-o.lasttime,o.lasttime=r;var i=t-o.lasty,s=e-o.lastx,n=o.nc.getScrollTop()+i,l=o.nc.getScrollLeft()+s;o.snapx=l<0||l>o.nc.page.maxw,o.snapy=n<0||n>o.nc.page.maxh,o.speedx=s,o.speedy=i,o.lastx=e,o.lasty=t},this.stop=function(){o.nc.unsynched("domomentum2d"),o.timer&&clearTimeout(o.timer),o.timer=0,o.lastscrollx=-1,o.lastscrolly=-1},this.doSnapy=function(e,t){var r=!1;t<0?(t=0,r=!0):t>o.nc.page.maxh&&(t=o.nc.page.maxh,r=!0),e<0?(e=0,r=!0):e>o.nc.page.maxw&&(e=o.nc.page.maxw,r=!0),r?o.nc.doScrollPos(e,t,o.nc.opt.snapbackspeed):o.nc.triggerScrollEnd()},this.doMomentum=function(e){var t=w(),r=e?t+e:o.lasttime,i=o.nc.getScrollLeft(),s=o.nc.getScrollTop(),n=o.nc.page.maxh,l=o.nc.page.maxw;o.speedx=l>0?Math.min(60,o.speedx):0,o.speedy=n>0?Math.min(60,o.speedy):0;var a=r&&t-r<=60;(s<0||s>n||i<0||i>l)&&(a=!1);var c=!(!o.speedy||!a)&&o.speedy,d=!(!o.speedx||!a)&&o.speedx;if(c||d){var u=Math.max(16,o.steptime);if(u>50){var h=u/50;o.speedx*=h,o.speedy*=h,u=50}o.demulxy=0,o.lastscrollx=o.nc.getScrollLeft(),o.chkx=o.lastscrollx,o.lastscrolly=o.nc.getScrollTop(),o.chky=o.lastscrolly;var p=o.lastscrollx,m=o.lastscrolly,f=function(){var e=w()-t>600?.04:.02;o.speedx&&(p=Math.floor(o.lastscrollx-o.speedx*(1-o.demulxy)),o.lastscrollx=p,(p<0||p>l)&&(e=.1)),o.speedy&&(m=Math.floor(o.lastscrolly-o.speedy*(1-o.demulxy)),o.lastscrolly=m,(m<0||m>n)&&(e=.1)),o.demulxy=Math.min(1,o.demulxy+e),o.nc.synched("domomentum2d",function(){if(o.speedx){o.nc.getScrollLeft();o.chkx=p,o.nc.setScrollLeft(p)}if(o.speedy){o.nc.getScrollTop();o.chky=m,o.nc.setScrollTop(m)}o.timer||(o.nc.hideCursor(),o.doSnapy(p,m))}),o.demulxy<1?o.timer=setTimeout(f,u):(o.stop(),o.nc.hideCursor(),o.doSnapy(p,m))};f()}else o.doSnapy(o.nc.getScrollLeft(),o.nc.getScrollTop())}},z=e.fn.scrollTop;e.cssHooks.pageYOffset={get:function(e,o,t){var r=n.data(e,"__nicescroll")||!1;return r&&r.ishwscroll?r.getScrollTop():z.call(e)},set:function(e,o){var t=n.data(e,"__nicescroll")||!1;return t&&t.ishwscroll?t.setScrollTop(parseInt(o)):z.call(e,o),this}},e.fn.scrollTop=function(e){if(void 0===e){var o=this[0]&&n.data(this[0],"__nicescroll")||!1;return o&&o.ishwscroll?o.getScrollTop():z.call(this)}return this.each(function(){var o=n.data(this,"__nicescroll")||!1;o&&o.ishwscroll?o.setScrollTop(parseInt(e)):z.call(n(this),e)})};var k=e.fn.scrollLeft;n.cssHooks.pageXOffset={get:function(e,o,t){var r=n.data(e,"__nicescroll")||!1;return r&&r.ishwscroll?r.getScrollLeft():k.call(e)},set:function(e,o){var t=n.data(e,"__nicescroll")||!1;return t&&t.ishwscroll?t.setScrollLeft(parseInt(o)):k.call(e,o),this}},e.fn.scrollLeft=function(e){if(void 0===e){var o=this[0]&&n.data(this[0],"__nicescroll")||!1;return o&&o.ishwscroll?o.getScrollLeft():k.call(this)}return this.each(function(){var o=n.data(this,"__nicescroll")||!1;o&&o.ishwscroll?o.setScrollLeft(parseInt(e)):k.call(n(this),e)})};var T=function(e){var o=this;if(this.length=0,this.name="nicescrollarray",this.each=function(e){return n.each(o,e),o},this.push=function(e){o[o.length]=e,o.length++},this.eq=function(e){return o[e]},e)for(var t=0;t1?n(e,r):s,i.win=r}!("doc"in i)||"win"in i||(i.win=r);var l=r.data("__nicescroll")||!1;l||(i.doc=i.doc||r,l=new x(i,r),r.data("__nicescroll",l)),t.push(l)}),1===t.length?t[0]:t},a.NiceScroll={getjQuery:function(){return e}},n.nicescroll||(n.nicescroll=new T,n.nicescroll.options=b)}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/legacy.js b/web/main/static/resources/scripts/axure/legacy.js deleted file mode 100644 index a46148a..0000000 --- a/web/main/static/resources/scripts/axure/legacy.js +++ /dev/null @@ -1,166 +0,0 @@ -//stored on each browser event -var windowEvent; - -$axure.internal(function($ax) { - var _legacy = {}; - $ax.legacy = _legacy; - - var Forms = window.document.getElementsByTagName("FORM"); - for(var i = 0; i < Forms.length; i++) { - var Form = Forms[i]; - Form.onclick = $ax.legacy.SuppressBubble; - } - - $ax.legacy.SuppressBubble = function(event) { - if(IE_10_AND_BELOW) { - window.event.cancelBubble = true; - window.event.returnValue = false; - } else { - if(event) { - event.stopPropagation(); - } - } - }; - - $ax.legacy.BringToFront = function(id, skipFixed) { - _bringToFrontHelper(id); - if(!skipFixed) $ax.legacy.BringFixedToFront(); - }; - - var _bringToFrontHelper = function(id) { - var target = window.document.getElementById(id); - if(target == null) return; - $ax.globals.MaxZIndex = $ax.globals.MaxZIndex + 1; - target.style.zIndex = $ax.globals.MaxZIndex; - }; - - $ax.legacy.BringFixedToFront = function() { - $ax(function(diagramObject) { return diagramObject.fixedKeepInFront; }).each(function(diagramObject, scriptId) { - _bringToFrontHelper(scriptId); - }); - }; - - $ax.legacy.SendToBack = function(id) { - var target = window.document.getElementById(id); - if(target == null) return; - target.style.zIndex = $ax.globals.MinZIndex = $ax.globals.MinZIndex - 1; - }; - - $ax.legacy.RefreshScreen = function() { - var oldColor = window.document.body.style.backgroundColor; - var setColor = (oldColor == "rgb(0,0,0)") ? "#FFFFFF" : "#000000"; - window.document.body.style.backgroundColor = setColor; - window.document.body.style.backgroundColor = oldColor; - }; - - $ax.legacy.getAbsoluteLeft = function(currentNode, elementId) { - var oldDisplay = currentNode.css('display'); - var displaySet = false; - if(oldDisplay == 'none') { - currentNode.css('display', ''); - displaySet = true; - } - var left = currentNode.offset().left; - - // Special Layer code - if($ax.getTypeFromElementId(elementId) == 'layer') { - var first = true; - var children = currentNode.children(); - for(var i = 0; i < children.length; i++) { - var child = $(children[i]); - var subDisplaySet = false; - if(child.css('display') == 'none') { - child.css('display', ''); - subDisplaySet = true; - } - if(first) left = child.offset().left; - else left = Math.min(child.offset().left, left); - first = false; - - if(subDisplaySet) child.css('display', 'none'); - } - } - - if (displaySet) currentNode.css('display', oldDisplay); - - return $axure.fn.bodyToWorld(left, true); - }; - - $ax.legacy.getAbsoluteTop = function(currentNode, elementId) { - var oldDisplay = currentNode.css('display'); - var displaySet = false; - if(oldDisplay == 'none') { - currentNode.css('display', ''); - displaySet = true; - } - var top = currentNode.offset().top; - - // Special Layer code - if ($ax.getTypeFromElementId(elementId) == 'layer') { - var first = true; - var children = currentNode.children(); - for (var i = 0; i < children.length; i++) { - var child = $(children[i]); - var subDisplaySet = false; - if (child.css('display') == 'none') { - child.css('display', ''); - subDisplaySet = true; - } - if (first) top = child.offset().top; - else top = Math.min(child.offset().top, top); - first = false; - - if (subDisplaySet) child.css('display', 'none'); - } - } - - if(displaySet) currentNode.css('display', oldDisplay); - return top; - }; - - // ****************** Annotation and Link Functions ****************** // - - $ax.legacy.GetAnnotationHtml = function(annJson) { - var retVal = ""; - for(var noteName in annJson) { - if(noteName != "label" && noteName != "id") { - retVal += "
    " + noteName + "
    "; - retVal += "
    " + linkify(annJson[noteName]) + "
    "; - } - } - return retVal; - - function linkify(text) { - var urlRegex = /(\b(((https?|ftp|file):\/\/)|(www\.))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; - return text.replace(urlRegex, function (url, b, c) { - var url2 = (c == 'www.') ? 'http://' + url : url; - return '' + url + ''; - }); - } - }; - - - $ax.legacy.GetScrollable = function(target) { - var $target = $(target); - var last = $target; - // Start past inital target. Can't scroll to target in itself, must be some ancestor. - var current = last.parent(); - - while(!current.is('body') && !current.is('html')) { - var elementId = current.attr('id'); - var diagramObject = elementId && $ax.getObjectFromElementId(elementId); - if (diagramObject && $ax.public.fn.IsDynamicPanel(diagramObject.type) && diagramObject.scrollbars != 'none') { - //returns the panel diagram div which handles scrolling - return $ax.dynamicPanelManager.getShownState(current.attr('id'))[0]; - } - last = current; - current = current.parent(); - } - // Need to do this because of ie - if(IE_10_AND_BELOW) return window.document.documentElement; - else return window.document.body; - }; - - - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/math.js b/web/main/static/resources/scripts/axure/math.js deleted file mode 100644 index cf2f75d..0000000 --- a/web/main/static/resources/scripts/axure/math.js +++ /dev/null @@ -1,554 +0,0 @@ -$axure.internal(function($ax) { - $ax.public.fn.matrixMultiply = function(matrix, vector) { - if(!matrix.tx) matrix.tx = 0; - if(!matrix.ty) matrix.ty = 0; - var outX = matrix.m11 * vector.x + matrix.m12 * vector.y + matrix.tx; - var outY = matrix.m21 * vector.x + matrix.m22 * vector.y + matrix.ty; - return { x: outX, y: outY }; - } - - $ax.public.fn.matrixInverse = function(matrix) { - if(!matrix.tx) matrix.tx = 0; - if(!matrix.ty) matrix.ty = 0; - - var determinant = matrix.m11*matrix.m22 - matrix.m12*matrix.m21; - //var threshold = (M11 * M11 + M22 *M22 + M12 *M12+ M21 *M21) / 100000; - //if(determinant.DeltaEquals(0, threshold) && determinant < 0.01) { - // return Invalid; - //} - return { - m11 : matrix.m22/determinant, - m12 : -matrix.m12/determinant, - tx : (matrix.ty*matrix.m12 - matrix.tx*matrix.m22)/determinant, - m21: -matrix.m21 / determinant, - m22: matrix.m11 / determinant, - ty: (matrix.tx * matrix.m21 - matrix.ty * matrix.m11) / determinant - }; - } - - - $ax.public.fn.matrixMultiplyMatrix = function (matrix1, matrix2) { - if (!matrix1.tx) matrix1.tx = 0; - if (!matrix1.ty) matrix1.ty = 0; - if (!matrix2.tx) matrix2.tx = 0; - if (!matrix2.ty) matrix2.ty = 0; - - return { - m11: matrix1.m12*matrix2.m21 + matrix1.m11*matrix2.m11, - m12: matrix1.m12*matrix2.m22 + matrix1.m11*matrix2.m12, - tx: matrix1.m12 * matrix2.ty + matrix1.m11 * matrix2.tx + matrix1.tx, - m21: matrix1.m22 * matrix2.m21 + matrix1.m21 * matrix2.m11, - m22: matrix1.m22 * matrix2.m22 + matrix1.m21 * matrix2.m12, - ty: matrix1.m22 * matrix2.ty + matrix1.m21 * matrix2.tx + matrix1.ty, - }; - } - - - $ax.public.fn.transformFromElement = function (element) { - var st = window.getComputedStyle(element, null); - - var tr = st.getPropertyValue("-webkit-transform") || - st.getPropertyValue("-moz-transform") || - st.getPropertyValue("-ms-transform") || - st.getPropertyValue("-o-transform") || - st.getPropertyValue("transform"); - - if (tr.indexOf('none') < 0) { - var matrix = tr.split('(')[1]; - matrix = matrix.split(')')[0]; - matrix = matrix.split(','); - for (var l = 0; l < matrix.length; l++) { - matrix[l] = Number(matrix[l]); - } - - } else { matrix = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0]; } - - return matrix; - // matrix[0] = cosine, matrix[1] = sine. - // Assuming the element is still orthogonal. - } - - $ax.public.fn.vectorMinus = function(vector1, vector2) { return { x: vector1.x - vector2.x, y: vector1.y - vector2.y }; } - - $ax.public.fn.vectorPlus = function (vector1, vector2) { return { x: vector1.x + vector2.x, y: vector1.y + vector2.y }; } - - $ax.public.fn.vectorMidpoint = function (vector1, vector2) { return { x: (vector1.x + vector2.x) / 2.0, y: (vector1.y + vector2.y) / 2.0 }; } - - $ax.public.fn.fourCornersToBasis = function (fourCorners) { - return { - widthVector: $ax.public.fn.vectorMinus(fourCorners.widgetTopRight, fourCorners.widgetTopLeft), - heightVector: $ax.public.fn.vectorMinus(fourCorners.widgetBottomLeft, fourCorners.widgetTopLeft) - }; - } - - $ax.public.fn.matrixString = function(m11, m21, m12, m22, tx, ty) { - return "Matrix(" + m11 + "," + m21 + "," + m12 + "," + m22 + ", " + tx + ", " + ty + ")"; - } - - //$ax.public.fn.getWidgetBoundingRect = function (widgetId) { - // var emptyRect = { left: 0, top: 0, centerPoint: { x: 0, y: 0 }, width: 0, height: 0 }; - // var element = document.getElementById(widgetId); - // if (!element) return emptyRect; - - // var object = $obj(widgetId); - // if (object && object.type && $ax.public.fn.IsLayer(object.type)) { - // var layerChildren = _getLayerChildrenDeep(widgetId); - // if (!layerChildren) return emptyRect; - // else return _getBoundingRectForMultipleWidgets(layerChildren); - // } - // return _getBoundingRectForSingleWidget(widgetId); - //}; - - var _getLayerChildrenDeep = $ax.public.fn.getLayerChildrenDeep = function (layerId, includeLayers, includeHidden) { - var deep = []; - var children = $ax('#' + layerId).getChildren()[0].children; - for (var index = 0; index < children.length; index++) { - var childId = children[index]; - if(!includeHidden && !$ax.visibility.IsIdVisible(childId)) continue; - if ($ax.public.fn.IsLayer($obj(childId).type)) { - if (includeLayers) deep.push(childId); - var recursiveChildren = _getLayerChildrenDeep(childId, includeLayers, includeHidden); - for (var j = 0; j < recursiveChildren.length; j++) deep.push(recursiveChildren[j]); - } else deep.push(childId); - } - return deep; - }; - - //var _getBoundingRectForMultipleWidgets = function (widgetsIdArray, relativeToPage) { - // if (!widgetsIdArray || widgetsIdArray.constructor !== Array) return undefined; - // if (widgetsIdArray.length == 0) return { left: 0, top: 0, centerPoint: { x: 0, y: 0 }, width: 0, height: 0 }; - // var widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[0], relativeToPage, true); - // var boundingRect = { left: widgetRect.left, right: widgetRect.right, top: widgetRect.top, bottom: widgetRect.bottom }; - - // for (var index = 1; index < widgetsIdArray.length; index++) { - // widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[index], relativeToPage); - // boundingRect.left = Math.min(boundingRect.left, widgetRect.left); - // boundingRect.top = Math.min(boundingRect.top, widgetRect.top); - // boundingRect.right = Math.max(boundingRect.right, widgetRect.right); - // boundingRect.bottom = Math.max(boundingRect.bottom, widgetRect.bottom); - // } - - // boundingRect.centerPoint = { x: (boundingRect.right + boundingRect.left) / 2.0, y: (boundingRect.bottom + boundingRect.top) / 2.0 }; - // boundingRect.width = boundingRect.right - boundingRect.left; - // boundingRect.height = boundingRect.bottom - boundingRect.top; - // return boundingRect; - //}; - - //var _getBoundingRectForSingleWidget = function (widgetId, relativeToPage, justSides) { - // var element = document.getElementById(widgetId); - // var boundingRect, tempBoundingRect, position; - // var displayChanged = _displayHackStart(element); - - // if (_isCompoundVectorHtml(element)) { - // //tempBoundingRect = _getCompoundImageBoundingClientSize(widgetId); - // //position = { left: tempBoundingRect.left, top: tempBoundingRect.top }; - // position = $(element).position(); - // tempBoundingRect = {}; - // tempBoundingRect.left = position.left; //= _getCompoundImageBoundingClientSize(widgetId); - // tempBoundingRect.top = position.top; - // tempBoundingRect.width = Number(element.getAttribute('data-width')); - // tempBoundingRect.height = Number(element.getAttribute('data-height')); - // } else { - // var boundingElement = element; - // if($ax.dynamicPanelManager.isIdFitToContent(widgetId)) { - // var stateId = $ax.visibility.GetPanelState(widgetId); - // if(stateId != '') boundingElement = document.getElementById(stateId); - // } - // tempBoundingRect = boundingElement.getBoundingClientRect(); - - // var jElement = $(element); - // position = jElement.position(); - // if(jElement.css('position') == 'fixed') { - // position.left += Number(jElement.css('margin-left').replace("px", "")); - // position.top += Number(jElement.css('margin-top').replace("px", "")); - // } - // } - - // var layers = $ax('#' + widgetId).getParents(true, ['layer'])[0]; - // var flip = ''; - // var mirrorWidth = 0; - // var mirrorHeight = 0; - // for (var i = 0; i < layers.length; i++) { - - // //should always be 0,0 - // var layerPos = $jobj(layers[i]).position(); - // position.left += layerPos.left; - // position.top += layerPos.top; - - // var outer = $ax.visibility.applyWidgetContainer(layers[i], true, true); - // if (outer.length) { - // var outerPos = outer.position(); - // position.left += outerPos.left; - // position.top += outerPos.top; - // } - - // //when a group is flipped we find the unflipped position - // var inner = $jobj(layers[i] + '_container_inner'); - // var taggedFlip = inner.data('flip'); - // if (inner.length && taggedFlip) { - // //only account for flip if transform is applied - // var matrix = taggedFlip && (inner.css("-webkit-transform") || inner.css("-moz-transform") || - // inner.css("-ms-transform") || inner.css("-o-transform") || inner.css("transform")); - // if (matrix !== 'none') { - // flip = taggedFlip; - // mirrorWidth = $ax.getNumFromPx(inner.css('width')); - // mirrorHeight = $ax.getNumFromPx(inner.css('height')); - // } - // } - // } - // //Now account for flip - // if (flip == 'x') position.top = mirrorHeight - position.top - element.getBoundingClientRect().height; - // else if (flip == 'y') position.left = mirrorWidth - position.left - element.getBoundingClientRect().width; - - // boundingRect = { - // left: position.left, - // right: position.left + tempBoundingRect.width, - // top: position.top, - // bottom: position.top + tempBoundingRect.height - // }; - - // _displayHackEnd(displayChanged); - // if (justSides) return boundingRect; - - // boundingRect.width = boundingRect.right - boundingRect.left; - // boundingRect.height = boundingRect.bottom - boundingRect.top; - - // boundingRect.centerPoint = { - // x: boundingRect.width / 2 + boundingRect.left, - // y: boundingRect.height / 2 + boundingRect.top - // }; - - // return boundingRect; - //}; - - var _getPointAfterRotate = $ax.public.fn.getPointAfterRotate = function (angleInDegrees, pointToRotate, centerPoint) { - var displacement = $ax.public.fn.vectorMinus(pointToRotate, centerPoint); - var rotationMatrix = $ax.public.fn.rotationMatrix(angleInDegrees); - rotationMatrix.tx = centerPoint.x; - rotationMatrix.ty = centerPoint.y; - return $ax.public.fn.matrixMultiply(rotationMatrix, displacement); - }; - - $ax.public.fn.getBoundingSizeForRotate = function(width, height, rotation) { - // point to rotate around doesn't matter since we just care about size, if location matter we need more args and location matters. - - var origin = { x: 0, y: 0 }; - - var corner1 = { x: width, y: 0 }; - var corner2 = { x: 0, y: height }; - var corner3 = { x: width, y: height }; - - corner1 = _getPointAfterRotate(rotation, corner1, origin); - corner2 = _getPointAfterRotate(rotation, corner2, origin); - corner3 = _getPointAfterRotate(rotation, corner3, origin); - - var left = Math.min(0, corner1.x, corner2.x, corner3.x); - var right = Math.max(0, corner1.x, corner2.x, corner3.x); - var top = Math.min(0, corner1.y, corner2.y, corner3.y); - var bottom = Math.max(0, corner1.y, corner2.y, corner3.y); - - return { width: right - left, height: bottom - top }; - } - - $ax.public.fn.getBoundingRectForRotate = function (boundingRect, rotation) { - var centerPoint = boundingRect.centerPoint; - var corner1 = { x: boundingRect.left, y: boundingRect.top }; - var corner2 = { x: boundingRect.right, y: boundingRect.top }; - var corner3 = { x: boundingRect.right, y: boundingRect.bottom }; - var corner4 = { x: boundingRect.left, y: boundingRect.bottom }; - corner1 = _getPointAfterRotate(rotation, corner1, centerPoint); - corner2 = _getPointAfterRotate(rotation, corner2, centerPoint); - corner3 = _getPointAfterRotate(rotation, corner3, centerPoint); - corner4 = _getPointAfterRotate(rotation, corner4, centerPoint); - - var left = Math.min(corner1.x, corner2.x, corner3.x, corner4.x); - var right = Math.max(corner1.x, corner2.x, corner3.x, corner4.x); - var top = Math.min(corner1.y, corner2.y, corner3.y, corner4.y); - var bottom = Math.max(corner1.y, corner2.y, corner3.y, corner4.y); - - return { left: left, top: top, width: right - left, height: bottom - top }; - } - - - //$ax.public.fn.getPositionRelativeToParent = function (elementId) { - // var element = document.getElementById(elementId); - // var list = _displayHackStart(element); - // var position = $(element).position(); - // _displayHackEnd(list); - // return position; - //}; - - //var _displayHackStart = $ax.public.fn.displayHackStart = function (element) { - // // TODO: Options: 1) stop setting display none. Big change for this late in the game. 2) Implement our own bounding. - // // TODO: 3) Current method is look for any parents that are set to none, and and temporarily unblock. Don't like it, but it works. - // var parent = element; - // var displays = []; - // while (parent) { - // if (parent.style.display == 'none') { - // displays.push(parent); - // //use block to overwrites default hidden objects' display - // parent.style.display = 'block'; - // } - // parent = parent.parentElement; - // } - - // return displays; - //}; - - //var _displayHackEnd = $ax.public.fn.displayHackEnd = function (displayChangedList) { - // for (var i = 0; i < displayChangedList.length; i++) displayChangedList[i].style.display = 'none'; - //}; - - - var _isCompoundVectorHtml = $ax.public.fn.isCompoundVectorHtml = function(hElement) { - return hElement.hasAttribute('compoundmode') && hElement.getAttribute('compoundmode') == "true"; - } - - $ax.public.fn.removeCompound = function (jobj) { if(_isCompoundVectorHtml(jobj[0])) jobj.removeClass('compound'); } - $ax.public.fn.restoreCompound = function (jobj) { if (_isCompoundVectorHtml(jobj[0])) jobj.addClass('compound'); } - - $ax.public.fn.compoundIdFromComponent = function(id) { - - var pPos = id.indexOf('p'); - var dashPos = id.indexOf('-'); - if (pPos < 1) return id; - else if (dashPos < 0) return id.substring(0, pPos); - else return id.substring(0, pPos) + id.substring(dashPos); - } - - $ax.public.fn.l2 = function (x, y) { return Math.sqrt(x * x + y * y); } - - $ax.public.fn.convertToSingleImage = function (jobj) { - if(!jobj[0]) return; - - var widgetId = jobj[0].id; - var object = $obj(widgetId); - - if ($ax.public.fn.IsLayer(object.type)) { - var recursiveChildren = _getLayerChildrenDeep(widgetId, true); - for (var j = 0; j < recursiveChildren.length; j++) - $ax.public.fn.convertToSingleImage($jobj(recursiveChildren[j])); - return; - } - - //var layer = - - if(!_isCompoundVectorHtml(jobj[0])) return; - - - $('#' + widgetId).removeClass("compound"); - $('#' + widgetId + '_img').removeClass("singleImg"); - jobj[0].setAttribute('compoundmode', 'false'); - - var components = object.compoundChildren; - delete object.generateCompound; - for (var i = 0; i < components.length; i++) { - var componentJobj = $jobj($ax.public.fn.getComponentId(widgetId, components[i])); - componentJobj.css('display', 'none'); - componentJobj.css('visibility', 'hidden'); - } - } - - - $ax.public.fn.getContainerDimensions = function(query) { - // returns undefined if no containers found. - var containerDimensions; - for (var i = 0; i < query[0].children.length; i++) { - var node = query[0].children[i]; - if (node.id.indexOf(query[0].id) >= 0 && node.id.indexOf('container') >= 0) { - containerDimensions = node.style; - } - } - return containerDimensions; - } - - - $ax.public.fn.rotationMatrix = function (angleInDegrees) { - var angleInRadians = angleInDegrees * (Math.PI / 180); - var cosTheta = Math.cos(angleInRadians); - var sinTheta = Math.sin(angleInRadians); - - return { m11: cosTheta, m12: -sinTheta, m21: sinTheta, m22: cosTheta, tx: 0.0, ty: 0.0 }; - } - - $ax.public.fn.GetFieldFromStyle = function (query, field) { - var raw = query[0].style[field]; - if (!raw) raw = query.css(field); - return Number(raw.replace('px', '')); - } - - - $ax.public.fn.setTransformHowever = function (transformString) { - return { - '-webkit-transform': transformString, - '-moz-transform': transformString, - '-ms-transform': transformString, - '-o-transform': transformString, - 'transform': transformString - }; - } - - $ax.public.fn.getCornersFromComponent = function (id) { - var element = document.getElementById(id); - var matrix = element ? $ax.public.fn.transformFromElement(element) : [1.0, 0.0, 0.0, 1.0, 0.0, 0.0]; - var currentMatrix = { m11: matrix[0], m21: matrix[1], m12: matrix[2], m22: matrix[3], tx: matrix[4], ty: matrix[5] }; - var dimensions = {}; - var axObj = $ax('#' + id); - var viewportLocation = axObj.offsetLocation(); - dimensions.left = viewportLocation.left; - dimensions.top = viewportLocation.top; - //dimensions.left = axObj.left(true); - //dimensions.top = axObj.top(true); - var size = axObj.size(); - dimensions.width = size.width; - dimensions.height = size.height; - //var transformMatrix1 = { m11: 1, m12: 0, m21: 0, m22: 1, tx: -invariant.x, ty: -invariant.y }; - //var transformMatrix2 = { m11: 1, m12: 0, m21: 0, m22: 1, tx: 500, ty: 500 }; - - var halfWidth = dimensions.width * 0.5; - var halfHeight = dimensions.height * 0.5; - //var preTransformTopLeft = { x: -halfWidth, y: -halfHeight }; - //var preTransformBottomLeft = { x: -halfWidth, y: halfHeight }; - var preTransformTopRight = { x: halfWidth, y: -halfHeight }; - var preTransformBottomRight = { x: halfWidth, y: halfHeight }; - - return { - //relativeTopLeft: $ax.public.fn.matrixMultiply(currentMatrix, preTransformTopLeft), - //relativeBottomLeft: $ax.public.fn.matrixMultiply(currentMatrix, preTransformBottomLeft), - relativeTopRight: $ax.public.fn.matrixMultiply(currentMatrix, preTransformTopRight), - relativeBottomRight: $ax.public.fn.matrixMultiply(currentMatrix, preTransformBottomRight), - centerPoint: { x: dimensions.left + halfWidth, y: dimensions.top + halfHeight } - //originalDimensions: dimensions, - //transformShift: { x: matrix[4], y: matrix[5] } - } - } - - - - $ax.public.fn.inversePathLengthFunction = function (pathFunction) { - // these are for computing the inverse functions of path integrals. - - var makeDivisionNode = function(node1, node2) { - var param = 0.5 * (node1.Param + node2.Param); - var inBetweenNode = { - LowerStop: node1, - HigherStop: node2, - Param: param, - Position: pathFunction(param), - Cumulative: 0.0 - }; - var lowerDisplacement = $ax.public.fn.vectorMinus(node1.Position, inBetweenNode.Position); - inBetweenNode.LowerInterval = { - Length: $ax.public.fn.l2(lowerDisplacement.x, lowerDisplacement.y), - Node: inBetweenNode, - IsHigher: false - }; - var higherDisplacement = $ax.public.fn.vectorMinus(node2.Position, inBetweenNode.Position); - inBetweenNode.HigherInterval = { - Length: $ax.public.fn.l2(higherDisplacement.x, higherDisplacement.y), - Node: inBetweenNode, - IsHigher: true - }; - return inBetweenNode; - }; - - var expandLower = function(node) { - node.LowerChild = makeDivisionNode(node.LowerStop, node); - node.LowerChild.Parent = node; - }; - - var expandHigher = function(node) { - node.HigherChild = makeDivisionNode(node, node.HigherStop); - node.HigherChild.Parent = node; - }; - - // for this function, cumulative is a global variable - var cumulative = 0.0; - var labelCumulativeLength = function(node) { - if(!node.LowerChild) { - node.LowerStop.Cumulative = cumulative; - cumulative += node.LowerInterval.Length; - node.Cumulative = cumulative; - } else labelCumulativeLength(node.LowerChild); - - if(!node.HigherChild) { - node.Cumulative = cumulative; - cumulative += node.HigherInterval.Length; - node.HigherStop.Cumulative = cumulative; - } else labelCumulativeLength(node.HigherChild); - }; - - var getIntervalFromPathLength = function(node, length) { - if(length < node.Cumulative) { - return node.LowerChild ? getIntervalFromPathLength(node.LowerChild, length) : node.LowerInterval; - } else return node.HigherChild ? getIntervalFromPathLength(node.HigherChild, length) : node.HigherInterval; - }; - - var intervalLowerEnd = function(interval) { - return interval.IsHigher ? interval.Node : interval.Node.LowerStop; - }; - - var intervalHigherEnd = function(interval) { - return interval.IsHigher ? interval.Node.HigherStop : interval.Node; - }; - - var getParameterFromPathLength = function (node, length) { - var interval = getIntervalFromPathLength(node, length); - var lowerNode = intervalLowerEnd(interval); - var higherNode = intervalHigherEnd(interval); - return lowerNode.Param + (higherNode.Param - lowerNode.Param) * (length - lowerNode.Cumulative) / (higherNode.Cumulative - lowerNode.Cumulative); - }; - - var insertIntoSortedList = function (longer, shorter, toInsert) { - while (true) { - if (!longer) { - longer = shorter; - shorter = shorter.NextLongest; - continue; - } else if (!shorter) longer.NextLongest = toInsert; - else { - if (longer.Length >= toInsert.Length && shorter.Length <= toInsert.Length) { - longer.NextLongest = toInsert; - toInsert.NextLongest = shorter; - } else { - longer = shorter; - shorter = shorter.NextLongest; - continue; - } - } - break; - } - } - var head = {Param: 0.0, Position: pathFunction(0.0) }; - var tail = { Param: 1.0, Position: pathFunction(1.0) }; - var root = makeDivisionNode(head, tail); - var currentCurveLength = root.LowerInterval.Length + root.HigherInterval.Length; - var longestInterval; - if (root.LowerInterval.Length < root.HigherInterval.Length) { - longestInterval = root.HigherInterval; - longestInterval.NextLongest = root.LowerInterval; - } else { - longestInterval = root.LowerInterval; - longestInterval.NextLongest = root.HigherInterval; - } - while (longestInterval.Length * 100.0 > currentCurveLength) { - var newNode; - if (longestInterval.IsHigher) { - expandHigher(longestInterval.Node); - newNode = longestInterval.Node.HigherChild; - } else { - expandLower(longestInterval.Node); - newNode = longestInterval.Node.LowerChild; - } - currentCurveLength += (newNode.LowerInterval.Length + newNode.HigherInterval.Length - longestInterval.Length); - insertIntoSortedList(null, longestInterval, newNode.LowerInterval); - insertIntoSortedList(null, longestInterval, newNode.HigherInterval); - longestInterval = longestInterval.NextLongest; - } - labelCumulativeLength(root); - - return function(lengthParam) { - return getParameterFromPathLength(root, lengthParam * cumulative); - }; - } -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/model.js b/web/main/static/resources/scripts/axure/model.js deleted file mode 100644 index ffc0a10..0000000 --- a/web/main/static/resources/scripts/axure/model.js +++ /dev/null @@ -1,53 +0,0 @@ -// ******* Object Model ******** // -$axure.internal(function($ax) { - var _implementations = {}; - - var _initializeObject = function(type, obj) { - $.extend(obj, _implementations[type]); - }; - $ax.initializeObject = _initializeObject; - - var _model = $ax.model = {}; - - _model.idsInRdoToHideOrLimbo = function(rdoId, scriptIds) { - var rdoScriptId = $ax.repeater.getScriptIdFromElementId(rdoId); - var path = $ax.getPathFromScriptId(rdoScriptId); - - if(!scriptIds) scriptIds = []; - - var rdo = $ax.getObjectFromElementId(rdoId); - var master = $ax.pageData.masters[rdo.masterId]; - var masterChildren = master.diagram.objects; - for(var i = 0; i < masterChildren.length; i++) { - var obj = masterChildren[i]; - var objScriptIds = obj.scriptIds; - for(var j = 0; j < objScriptIds.length; j++) { - var scriptId = objScriptIds[j]; - // Anything in a layer is already handled by the layer - if($ax.getLayerParentFromElementId(scriptId)) continue; - - // Make sure in same rdo - var elementPath = $ax.getPathFromScriptId(scriptId); - - // This is because last part of path is for the obj itself. - elementPath.pop(); - if(elementPath.length != path.length) continue; - var samePath = true; - for(var k = 0; k < path.length; k++) { - if(elementPath[k] != path[k]) { - samePath = false; - break; - } - } - if(!samePath) continue; - - if($ax.public.fn.IsReferenceDiagramObject(obj.type)) _model.idsInRdoToHideOrLimbo(scriptId, scriptIds); - else if(scriptIds.indexOf(scriptId) == -1) scriptIds.push(scriptId); - - break; - } - } - return scriptIds; - }; - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/move.js b/web/main/static/resources/scripts/axure/move.js deleted file mode 100644 index 9c9224d..0000000 --- a/web/main/static/resources/scripts/axure/move.js +++ /dev/null @@ -1,467 +0,0 @@ -$axure.internal(function($ax) { - var _move = {}; - $ax.move = _move; - - var widgetMoveInfo = {}; - //register and return move info, also create container for rootlayer if needed - $ax.move.PrepareForMove = function (id, x, y, to, options, jobj, rootLayer, skipContainerForRootLayer) { - var fixedInfo = jobj ? {} : $ax.dynamicPanelManager.getFixedInfo(id); - - var widget = $jobj(id); - var query = $ax('#' + id); - var isLayer = $ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE; - if(!rootLayer) { - rootLayer = _move.getRootLayer(id); - if (rootLayer && !skipContainerForRootLayer) { - $ax.visibility.pushContainer(rootLayer, false); - if (isLayer) widget = $ax.visibility.applyWidgetContainer(id, true); - } - } - if (!jobj) jobj = widget; - - var horzProp = 'left'; - var vertProp = 'top'; - var offsetLocation = to ? query.offsetLocation() : undefined; - var horzX = to ? x - offsetLocation.x : x; - var vertY = to ? y - offsetLocation.y : y; - //var horzX = to ? x - query.locRelativeIgnoreLayer(false) : x; - //var vertY = to ? y - query.locRelativeIgnoreLayer(true) : y; - - if (fixedInfo.horizontal == 'right') { - horzProp = 'right'; - horzX = to ? $(window).width() - x - $ax.getNumFromPx(jobj.css('right')) - query.width() : -x; - var leftChanges = -horzX; - } else if(fixedInfo.horizontal == 'center') { - horzProp = 'margin-left'; - if (to) horzX = x - $(window).width() / 2; - } - - if (fixedInfo.vertical == 'bottom') { - vertProp = 'bottom'; - vertY = to ? $(window).height() - y - $ax.getNumFromPx(jobj.css('bottom')) - query.height() : -y; - var topChanges = -vertY; - } else if (fixedInfo.vertical == 'middle') { - vertProp = 'margin-top'; - if (to) vertY = y - $(window).height() / 2; - } - - //todo currently this always save the info, which is not needed for compound vector children and maybe some other cases - //let's optimize it later, only register if registerid is valid.. - widgetMoveInfo[id] = { - x: leftChanges === undefined ? horzX : leftChanges, - y: topChanges === undefined ? vertY : topChanges, - options: options - }; - - return { - horzX: horzX, - vertY: vertY, - horzProp: horzProp, - vertProp: vertProp, - rootLayer: rootLayer, - jobj: jobj - }; - }; - $ax.move.GetWidgetMoveInfo = function() { - return $.extend({}, widgetMoveInfo); - }; - - _move.getRootLayer = function (id) { - var isLayer = $ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE; - var rootLayer = isLayer ? id : ''; - - var parentIds = $ax('#' + id).getParents(true, '*')[0]; - for(var i = 0; i < parentIds.length; i++) { - var parentId = parentIds[i]; - // Keep climbing up layers until you hit a non-layer. At that point you have your root layer - if($ax.public.fn.IsLayer($ax.getTypeFromElementId(parentId))) rootLayer = parentId; - else break; - } - - return rootLayer; - }; - - $ax.move.MoveWidget = function (id, x, y, options, to, animationCompleteCallback, shouldFire, jobj, skipOnMoveEvent) { - var moveInfo = $ax.move.PrepareForMove(id, x, y, to, options, jobj); - $ax.drag.LogMovedWidgetForDrag(id, options.dragInfo); - - var object = $obj(id); - if(object && $ax.public.fn.IsLayer(object.type)) { - var childrenIds = $ax.public.fn.getLayerChildrenDeep(id, true); - //don't push container when register moveinfo for child - if(!skipOnMoveEvent) { - for(var i = 0; i < childrenIds.length; i++) $ax.move.PrepareForMove(childrenIds[i], x, y, to, options, null, moveInfo.rootLayer, true); - } - } - - //if(!moveInfo) moveInfo = _getMoveInfo(id, x, y, to, options, jobj); - - jobj = moveInfo.jobj; - - _moveElement(id, options, animationCompleteCallback, shouldFire, jobj, moveInfo); - - if(skipOnMoveEvent) return; - $ax.event.raiseSyntheticEvent(id, "onMove"); - if(childrenIds) { - for(var i = 0; i < childrenIds.length; i++) $ax.event.raiseSyntheticEvent(childrenIds[i], 'onMove'); - } - }; - - var _moveElement = function (id, options, animationCompleteCallback, shouldFire, jobj, moveInfo){ - var cssStyles = {}; - - if(!$ax.dynamicPanelManager.isPercentWidthPanel($obj(id))) cssStyles[moveInfo.horzProp] = '+=' + moveInfo.horzX; - cssStyles[moveInfo.vertProp] = '+=' + moveInfo.vertY; - - $ax.visibility.moveMovedLocation(id, moveInfo.horzX, moveInfo.vertY); - - // I don't think root layer is necessary anymore after changes to layer container structure. - // Wait to try removing it until more stable. - var rootLayer = moveInfo.rootLayer; - - var query = $addAll(jobj, id); - var completeCount = query.length; - var completeAnimation = function() { - completeCount--; - if(completeCount == 0 && rootLayer) $ax.visibility.popContainer(rootLayer, false); - if(animationCompleteCallback) animationCompleteCallback(); - if(shouldFire) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); - }; - if (options.easing === 'none') { - //if not having this requestAnimationFrame causes performance issues, - //add it back and move the above call to moveMovedLocation into it and the - //query.animate calls below - //window.requestAnimationFrame(function () { - query.css(cssStyles); - if (rootLayer) $ax.visibility.popContainer(rootLayer, false); - if (animationCompleteCallback) animationCompleteCallback(); - //}); - //if this widget is inside a layer, we should just remove the layer from the queue - if(shouldFire) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); - } else if (options.trajectory === 'straight' || moveInfo.horzX === 0 || moveInfo.vertY === 0) { - query.animate(cssStyles, { - duration: options.duration, easing: options.easing, queue: false, complete: completeAnimation}); - } else { - var initialHorzProp = $ax.getNumFromPx(query.css(moveInfo.horzProp)); - var initialVertProp = $ax.getNumFromPx(query.css(moveInfo.vertProp)); - var state = { parameter: 0 }; - var ellipseArcFunctionY = function(param) { - return { - x: initialHorzProp + (1.0 - Math.cos(param * Math.PI * 0.5)) * moveInfo.horzX, - y: initialVertProp + Math.sin(param * Math.PI * 0.5) * moveInfo.vertY - }; - }; - var ellipseArcFunctionX = function (param) { - return { - x: initialHorzProp + Math.sin(param * Math.PI * 0.5) * moveInfo.horzX, - y: initialVertProp + (1.0 - Math.cos(param * Math.PI * 0.5)) * moveInfo.vertY - }; - }; - var ellipseArcFunction = (moveInfo.horzX > 0) ^ (moveInfo.vertY > 0) ^ options.trajectory === 'arcClockwise' - ? ellipseArcFunctionX : ellipseArcFunctionY; - var inverseFunction = $ax.public.fn.inversePathLengthFunction(ellipseArcFunction); - $(state).animate({ parameter: 1.0 }, { - duration: options.duration, easing: options.easing, queue: false, - step: function (now) { - var newPos = ellipseArcFunction(inverseFunction(now)); - var changeFields = {}; - changeFields[moveInfo.horzProp] = newPos.x; - changeFields[moveInfo.vertProp] = newPos.y; - query.css(changeFields); - }, - complete: completeAnimation}); - } - - // //moveinfo is used for moving 'with this' - // var moveInfo = new Object(); - // moveInfo.x = horzX; - // moveInfo.y = vertY; - // moveInfo.options = options; - // widgetMoveInfo[id] = moveInfo; - - - }; - - _move.nopMove = function(id, options) { - var moveInfo = new Object(); - moveInfo.x = 0; - moveInfo.y = 0; - moveInfo.options = {}; - moveInfo.options.easing = 'none'; - moveInfo.options.duration = 0; - widgetMoveInfo[id] = moveInfo; - - // Layer move using container now. - var obj = $obj(id); - if($ax.public.fn.IsLayer(obj.type)) if(options.onComplete) options.onComplete(); - - $ax.event.raiseSyntheticEvent(id, "onMove"); - }; - - //rotationDegree: total degree to rotate - //centerPoint: the center of the circular path - - - var _noRotateOnlyMove = function (id, moveDelta, rotatableMove, fireAnimationQueue, easing, duration, completionCallback) { - moveDelta.x += rotatableMove.x; - moveDelta.y += rotatableMove.y; - if (moveDelta.x == 0 && moveDelta.y == 0) { - if(fireAnimationQueue) { - $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.rotate); - $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); - } - if (completionCallback) completionCallback(); - } else { - $jobj(id).animate({ top: '+=' + moveDelta.y, left: '+=' + moveDelta.x }, { - duration: duration, - easing: easing, - queue: false, - complete: function () { - if(fireAnimationQueue) { - $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); - $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.rotate); - } - if (completionCallback) completionCallback(); - } - }); - } - } - - - _move.circularMove = function (id, degreeDelta, centerPoint, moveDelta, rotatableMove, resizeOffset, options, fireAnimationQueue, completionCallback, willDoRotation) { - var elem = $jobj(id); - if(!willDoRotation) elem = $addAll(elem, id); - - var moveInfo = $ax.move.PrepareForMove(id, moveDelta.x, moveDelta.y, false, options); - // If not rotating, still need to check moveDelta and may need to handle that. - if (degreeDelta === 0) { - _noRotateOnlyMove(id, moveDelta, rotatableMove, fireAnimationQueue, options.easing, options.duration, completionCallback); - return; - } - - var stepFunc = function(newDegree) { - var deg = newDegree - rotation.degree; - var widgetCenter = $ax('#' + id).offsetBoundingRect().centerPoint; - //var widgetCenter = $ax.public.fn.getWidgetBoundingRect(id).centerPoint; - //console.log("widget center of " + id + " x " + widgetCenter.x + " y " + widgetCenter.y); - var widgetNewCenter = $axure.fn.getPointAfterRotate(deg, widgetCenter, centerPoint); - - // Start by getting the move not related to rotation, and make sure to update center point to move with it. - var ratio = deg / degreeDelta; - - var xdelta = (moveDelta.x + rotatableMove.x) * ratio; - var ydelta = (moveDelta.y + rotatableMove.y) * ratio; - if(resizeOffset) { - var resizeShift = {}; - resizeShift.x = resizeOffset.x * ratio; - resizeShift.y = resizeOffset.y * ratio; - $axure.fn.getPointAfterRotate(rotation.degree, resizeShift, { x: 0, y: 0 }); - xdelta += resizeShift.x; - ydelta += resizeShift.y; - } - centerPoint.x += xdelta; - centerPoint.y += ydelta; - - // Now for the move that is rotatable, it must be rotated - rotatableMove = $axure.fn.getPointAfterRotate(deg, rotatableMove, { x: 0, y: 0 }); - - // Now add in circular move to the mix. - xdelta += widgetNewCenter.x - widgetCenter.x; - ydelta += widgetNewCenter.y - widgetCenter.y; - - $ax.visibility.moveMovedLocation(id, xdelta, ydelta); - - if(xdelta < 0) elem.css('left', '-=' + -xdelta); - else if(xdelta > 0) elem.css('left', '+=' + xdelta); - - if(ydelta < 0) elem.css('top', '-=' + -ydelta); - else if(ydelta > 0) elem.css('top', '+=' + ydelta); - }; - - var onComplete = function() { - if(fireAnimationQueue) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move); - if(completionCallback) completionCallback(); - if(moveInfo.rootLayer) $ax.visibility.popContainer(moveInfo.rootLayer, false); - var isPercentWidthPanel = $ax.dynamicPanelManager.isPercentWidthPanel($obj(id)); - if(isPercentWidthPanel) { - $ax.dynamicPanelManager.updatePanelPercentWidth(id); - $ax.dynamicPanelManager.updatePanelContentPercentWidth(id); - } - if(elem.css('position') == 'fixed') { - if(!isPercentWidthPanel) elem.css('left', ''); - elem.css('top', ''); - } - }; - - var rotation = { degree: 0 }; - - if(!options.easing || options.easing === 'none' || options.duration <= 0) { - stepFunc(degreeDelta); - onComplete(); - } else { - $(rotation).animate({ degree: degreeDelta }, { - duration: options.duration, - easing: options.easing, - queue: false, - step: stepFunc, - complete: onComplete - }); - } - }; - - //rotate a widget by degree, center is 50% 50% - _move.rotate = function (id, degree, easing, duration, to, shouldFire, completionCallback) { - var currentDegree = _move.getRotationDegree(id); - if(to) degree = degree - currentDegree; - - if(degree === 0) { - if (shouldFire) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.rotate); - return; - } - - var query = $jobj(id); - var stepFunc = function(now) { - var degreeDelta = now - rotation.degree; - var newDegree = currentDegree + degreeDelta; - query.css($ax.public.fn.setTransformHowever("rotate(" + newDegree + "deg)")); - currentDegree = newDegree; - }; - - var onComplete = function() { - if(shouldFire) { - $ax.action.fireAnimationFromQueue($ax.public.fn.compoundIdFromComponent(id), $ax.action.queueTypes.rotate); - } - if(completionCallback) completionCallback(); - - $ax.annotation.adjustIconLocation(id); - }; - - var rotation = { degree: 0 }; - - $ax.visibility.setRotatedAngle(id, currentDegree + degree); - - //if no animation, setting duration to 1, to prevent RangeError in rotation loops without animation - if(!easing || easing === 'none' || duration <= 0) { - stepFunc(degree); - onComplete(); - } else { - $(rotation).animate({ degree: degree }, { - duration: duration, - easing: easing, - queue: false, - step: stepFunc, - complete: onComplete - }); - } - }; - - _move.compoundRotateAround = function (id, degreeDelta, centerPoint, moveDelta, rotatableMove, resizeOffset, easing, duration, fireAnimationQueue, completionCallback) { - if (degreeDelta === 0) { - _noRotateOnlyMove($ax.public.fn.compoundIdFromComponent(id), moveDelta, rotatableMove, fireAnimationQueue, easing, duration, completionCallback, $ax.action.queueTypes.rotate); - return; - } - var elem = $jobj(id); - var rotation = { degree: 0 }; - - if (!easing || easing === 'none' || duration <= 0) { - duration = 1; - easing = 'linear'; //it doesn't matter anymore here... - } - - var originalWidth = $ax.getNumFromPx(elem.css('width')); - var originalHeight = $ax.getNumFromPx(elem.css('height')); - var originalLeft = $ax.getNumFromPx(elem.css('left')); - var originalTop = $ax.getNumFromPx(elem.css('top')); - - $(rotation).animate({ degree: degreeDelta }, { - duration: duration, - easing: easing, - queue: false, - step: function (newDegree) { - var transform = $ax.public.fn.transformFromElement(elem[0]); - var originalCenter = { x: originalLeft + 0.5 * originalWidth, y: originalTop + 0.5 * originalHeight}; - var componentCenter = { x: originalCenter.x + transform[4], y: originalCenter.y + transform[5] }; - var deg = newDegree - rotation.degree; - var ratio = deg / degreeDelta; - var xdelta = (moveDelta.x + rotatableMove.x) * ratio; - var ydelta = (moveDelta.y + rotatableMove.y) * ratio; - if (resizeOffset) { - var resizeShift = {}; - resizeShift.x = resizeOffset.x * ratio; - resizeShift.y = resizeOffset.y * ratio; - $axure.fn.getPointAfterRotate(rotation.degree, resizeShift, { x: 0, y: 0 }); - xdelta += resizeShift.x; - ydelta += resizeShift.y; - } - - var rotationMatrix = $ax.public.fn.rotationMatrix(deg); - var compositionTransform = $ax.public.fn.matrixMultiplyMatrix(rotationMatrix, - { m11: transform[0], m21: transform[1], m12: transform[2], m22: transform[3] }); - - //console.log("widget center of " + id + " x " + widgetCenter.x + " y " + widgetCenter.y); - var widgetNewCenter = $axure.fn.getPointAfterRotate(deg, componentCenter, centerPoint); - var newMatrix = $ax.public.fn.matrixString(compositionTransform.m11, compositionTransform.m21, compositionTransform.m12, compositionTransform.m22, - widgetNewCenter.x - originalCenter.x + xdelta, widgetNewCenter.y - originalCenter.y + ydelta); - elem.css($ax.public.fn.setTransformHowever(newMatrix)); - }, - complete: function () { - if (fireAnimationQueue) { - $ax.action.fireAnimationFromQueue(elem.parent()[0].id, $ax.action.queueTypes.rotate); - } - - if(completionCallback) completionCallback(); - } - }); - }; - - _move.getRotationDegreeFromElement = function(element) { - if(element == null) return NaN; - - var transformString = element.style['transform'] || - element.style['-o-transform'] || - element.style['-ms-transform'] || - element.style['-moz-transform'] || - element.style['-webkit-transform']; - - if(transformString) { - var rotateRegex = /rotate\(([-?0-9]+)deg\)/; - var degreeMatch = rotateRegex.exec(transformString); - if(degreeMatch && degreeMatch[1]) return parseFloat(degreeMatch[1]); - } - - if(window.getComputedStyle) { - var st = window.getComputedStyle(element, null); - } else { - console.log('rotation is not supported for ie 8 and below in this version of axure rp'); - return 0; - } - - var tr = st.getPropertyValue("transform") || - st.getPropertyValue("-o-transform") || - st.getPropertyValue("-ms-transform") || - st.getPropertyValue("-moz-transform") || - st.getPropertyValue("-webkit-transform"); - - if(!tr || tr === 'none') return 0; - var values = tr.split('(')[1]; - values = values.split(')')[0], - values = values.split(','); - - var a = values[0]; - var b = values[1]; - - var radians = Math.atan2(b, a); - if(radians < 0) { - radians += (2 * Math.PI); - } - - return radians * (180 / Math.PI); - }; - - _move.getRotationDegree = function(elementId) { - if($ax.public.fn.IsLayer($obj(elementId).type)) { - return $jobj(elementId).data('layerDegree'); - } - return _move.getRotationDegreeFromElement(document.getElementById(elementId)); - } -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/recording.js b/web/main/static/resources/scripts/axure/recording.js deleted file mode 100644 index f5fb140..0000000 --- a/web/main/static/resources/scripts/axure/recording.js +++ /dev/null @@ -1,94 +0,0 @@ -// ******* Recording MANAGER ******** // - -$axure.internal(function($ax) { - var _recording = $ax.recording = {}; - - $ax.recording.recordEvent = function(element, eventInfo, axEventObject, timeStamp) { - - var elementHtml = $jobj(element); - var className = elementHtml.attr('class'); - var inputValue; - - if(className === 'ax_checkbox') { - inputValue = elementHtml.find('#' + element + '_input')[0].checked; - eventInfo.inputType = className; - eventInfo.inputValue = inputValue; - } - - if(className === 'ax_text_field') { - inputValue = elementHtml.find('#' + element + '_input').val(); - eventInfo.inputType = className; - eventInfo.inputValue = inputValue; - } - - - var scriptId = $ax.repeater.getScriptIdFromElementId(element); - var diagramObjectPath = $ax.getPathFromScriptId(scriptId); - var form = { - recordingId: $ax.recording.recordingId, - elementID: element, - eventType: axEventObject.description, - 'eventInfo': eventInfo, - // eventObject: axEventObject, - 'timeStamp': timeStamp, - 'path': diagramObjectPath -// , -// 'trigger': function() { -// $ax.event.handleEvent(element, eventInfo, axEventObject); -// return false; -// } - }; - - $ax.messageCenter.postMessage('logEvent', form); - }; - - - $ax.recording.maybeRecordEvent = function(element, eventInfo, axEventObject, timeStamp) { - }; - - - $ax.recording.recordingId = ""; - $ax.recording.recordingName = ""; - - $ax.messageCenter.addMessageListener(function(message, data) { - if(message === 'startRecording') { - $ax.recording.maybeRecordEvent = $ax.recording.recordEvent; - $ax.recording.recordingId = data.recordingId; - $ax.recording.recordingName = data.recordingName; - } else if(message === 'stopRecording') { - $ax.recording.maybeRecordEvent = function(element, eventInfo, axEventObject, timeStamp) { - }; - - } - else if(message === 'playEvent') { - - var eventType = makeFirstLetterLower(data.eventType); - var inputElement; - - var dObj = data.element === '' ? $ax.pageData.page : $ax.getObjectFromElementId(data.element); - if(!data.axEventObject) { - data.axEventObject = dObj && dObj.interactionMap && dObj.interactionMap[eventType]; - } - - data.eventInfo.thiswidget = $ax.getWidgetInfo(data.element); - data.eventInfo.item = $ax.getItemInfo(data.element); - - if(data.eventInfo.inputType && data.eventInfo.inputType === 'ax_checkbox') { - inputElement = $jobj(data.element + '_input'); - inputElement[0].checked = data.eventInfo.inputValue; - } - - if(data.eventInfo.inputType && data.eventInfo.inputType === 'ax_text_field') { - inputElement = $jobj(data.element + '_input'); - inputElement.val(data.eventInfo.inputValue); - } - - $ax.event.handleEvent(data.element, data.eventInfo, data.axEventObject, false, true); - } - }); - - var makeFirstLetterLower = function(eventName) { - return eventName.substr(0, 1).toLowerCase() + eventName.substr(1); - }; - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/repeater.js b/web/main/static/resources/scripts/axure/repeater.js deleted file mode 100644 index 99ca1ea..0000000 --- a/web/main/static/resources/scripts/axure/repeater.js +++ /dev/null @@ -1,2413 +0,0 @@ - -// ******* Repeater MANAGER ******** // -$axure.internal(function($ax) { - var _repeaterManager = {}; - $ax.repeater = _repeaterManager; - - var _refreshType = _repeaterManager.refreshType = { - reset: 1, - persist: 2, - preEval: 3 - }; - - //This is a mapping of current editItems - var repeaterToEditItems = {}; - //This is a mapping of current filters - var repeaterToFilters = {}; - // This is a mapping of current sorts - var repeaterToSorts = {}; - // This is a mapping of repeater page info - var repeaterToPageInfo = {}; - - //Hopefully this can be simplified, but for now I think 3 are needed. - //This is the data set that is owned by this repeater. The repeater may or may not reference this data set, and others can reference it. - var repeaterToLocalDataSet = {}; - //This is the data set referenced by the repeater. It is not a copy of the local data set, but a reference to a local data set (or eventually a global data set could be referenced). - var repeaterToCurrentDataSet = {}; - //This is a copy of the current data set, that is replaced whenever a set or refresh is done. - var repeaterToActiveDataSet = {}; - var _loadRepeaters = function() { - $ax(function(obj) { - return $ax.public.fn.IsRepeater(obj.type); - }).each(function(obj, repeaterId) { - repeaterToLocalDataSet[repeaterId] = $ax.deepCopy(obj.data); - repeaterToLocalDataSet[repeaterId].props = obj.dataProps; - repeaterToEditItems[repeaterId] = []; - - _initPageInfo(obj, repeaterId); - - _setRepeaterDataSet(repeaterId, repeaterId); - var initialItemIds = obj.repeaterPropMap.itemIds; - for (var i = 0; i < initialItemIds.length; i++) $ax.addItemIdToRepeater(initialItemIds[i], repeaterId); - $ax.visibility.initRepeater(repeaterId); - }); - }; - _repeaterManager.loadRepeaters = _loadRepeaters; - - var fullRefresh = {}; - var repeatersReady = false; - var _initRepeaters = function () { - repeatersReady = true; - $ax(function(obj, repeaterId) { - return $ax.public.fn.IsRepeater(obj.type); - }).each(function(obj, repeaterId) { - _refreshRepeater(repeaterId, undefined, _refreshType.reset, !fullRefresh[repeaterId]); - //// Fix selected and default if necessary - //var states = obj.evaluatedStates[repeaterId]; - //if(!states) return; // If there are no evaluated states the repeater id key could not be mapped to an array of states. - - //for(var i = 0; i < states.length; i++) { - // var state = states[i]; - - // $ax.style.SetWidgetEnabled(state.id, true); // So selected will take place. If disabled, selected wouldn't happen. - // $ax.style.SetWidgetSelected(state.id, state.selected); - // $ax.style.SetWidgetEnabled(state.id, !state.disabled); - //} - }); - }; - _repeaterManager.initRefresh = _initRepeaters; - - var repeatersHaveNewDataSet = []; - var _setRepeaterDataSet = function(repeaterId, dataSetId) { - //TODO: No idea about how global data sets will be handled... - repeaterToCurrentDataSet[repeaterId] = repeaterToLocalDataSet[dataSetId]; - repeaterToActiveDataSet[repeaterId] = getActiveDataSet(repeaterId); - repeaterToFilters[repeaterId] = []; - repeaterToSorts[repeaterId] = []; - - - // Not using this currently - // if(repeatersHaveNewDataSet.indexOf(repeaterId) == -1) repeatersHaveNewDataSet[repeatersHaveNewDataSet.length] = repeaterId; - }; - _repeaterManager.setDataSet = _setRepeaterDataSet; - - var _refreshRepeater = function(repeaterId, eventInfo, refreshType, itemsPregen) { - if(!refreshType) refreshType = _refreshType.reset; // Set default - if(!repeatersReady) { - fullRefresh[repeaterId] = true; - return; - } - - // Reset selected/disabled dictionaries upon reset, if necessary (reset must, persist can't, and preeval doesn't care because it hasn't been set up yet. - if(refreshType == _refreshType.reset) $ax.style.clearStateForRepeater(repeaterId); - - // Don't show if you have a parent rdos thats limboed. - var rdoPath = $ax.getPathFromScriptId(repeaterId); - // Check each parent rdo through appropriate views to see if you are limboed - while (rdoPath.length > 0) { - if(!$ax.getScriptIdFromPath(rdoPath)) { - removeItems(repeaterId); - return; - } - - $ax.splice(rdoPath, rdoPath.length - 1, 1); - } - - $ax.action.refreshStart(repeaterId); - $ax.style.ClearCacheForRepeater(repeaterId); - - if($ax.visibility.limboIds[repeaterId]) { - removeItems(repeaterId); - $ax.dynamicPanelManager.fitParentPanel(repeaterId); - return; - } - - // Remove delete map if there is one at this point - if(eventInfo && eventInfo.repeaterDeleteMap) delete eventInfo.repeaterDeleteMap[repeaterId]; - var path = $ax.getPathFromScriptId(repeaterId); - path.pop(); - - if(eventInfo) { - eventInfo = $ax.eventCopy(eventInfo); - } - - var obj = $ax.getObjectFromScriptId(repeaterId); - var propMap = obj.repeaterPropMap; - - //If there is no wrap, then set it to be above the number of rows - var viewId = $ax.adaptive.currentViewId || ''; - var wrap = _getAdaptiveProp(propMap, 'wrap', viewId, repeaterId, obj); - var vertical = _getAdaptiveProp(propMap, 'vertical', viewId, repeaterId, obj); - //var offset = propMap[viewId]; - var offset = propMap[_getViewIdFromPageViewId(viewId, repeaterId, obj)]; - - // Right now pregen only works for default adaptive view - if(viewId) itemsPregen = false; - var orderedIds = []; - if(itemsPregen) { - var repeaterChildren = $jobj(repeaterId).children(); - // Start at 1 to skip script div child - for(var i = 1; i < repeaterChildren.length; i++) { - orderedIds.push(_getItemIdFromElementId($(repeaterChildren[i]).attr('id'))); - } - } else orderedIds = getOrderedIds(repeaterId, eventInfo); - var ids = []; - var background = _getAdaptiveProp(propMap, 'backColor', viewId, repeaterId, obj); - var hasAltColor = _getAdaptiveProp(propMap, 'hasAltColor', viewId, repeaterId, obj); - var altColor = hasAltColor ? _getAdaptiveProp(propMap, 'altColor', viewId, repeaterId, obj) : undefined; - var useAlt = false; - - if(itemsPregen) { - var start = 0; - var end = orderedIds.length; - } else { - var bounds = _getVisibleDataBounds(repeaterToPageInfo[repeaterId], itemsPregen ? obj.data.length : orderedIds.length); - start = bounds[0]; - end = bounds[1]; - } - - var repeaterObj = $jobj(repeaterId); - var preevalMap = {}; - - var shownCount = end - start; - var primaryCount = wrap == -1 ? shownCount : Math.min(shownCount, wrap); - var secondaryCount = wrap == -1 ? 1 : Math.ceil(shownCount / wrap); - var widthCount = vertical ? secondaryCount : primaryCount; - var heightCount = vertical ? primaryCount : secondaryCount; - var paddingTop = _getAdaptiveProp(propMap, 'paddingTop', viewId, repeaterId, obj); - var paddingLeft = _getAdaptiveProp(propMap, 'paddingLeft', viewId, repeaterId, obj); - var paddingY = paddingTop + _getAdaptiveProp(propMap, 'paddingBottom', viewId, repeaterId, obj); - var paddingX = paddingLeft + _getAdaptiveProp(propMap, 'paddingRight', viewId, repeaterId, obj); - - var spacingX = _getAdaptiveProp(propMap, 'horizontalSpacing', viewId, repeaterId, obj); - var xOffset = offset.width + spacingX; - var spacingY = _getAdaptiveProp(propMap, 'verticalSpacing', viewId, repeaterId, obj); - var yOffset = offset.height + spacingY; - var repeaterSize = { width: paddingX, height: paddingY }; - repeaterSize.width += offset.width + (widthCount - 1) * xOffset; - repeaterSize.height += offset.height + (heightCount - 1) * yOffset; - $ax.visibility.setResizedSize(repeaterId, repeaterSize.width, repeaterSize.height); - - if(itemsPregen) { - var templateIds = [repeaterId]; - var processScriptIds = function (full, prop, id) { - if(id.indexOf('_') <= 0 && id.indexOf('p') == -1) templateIds.push('u' + id); - }; - $('#' + repeaterId + '_script').html().replace(/(id|for)="?u([0-9]+(p([0-9]){3})?(_[_a-z0-9]*)?)"?/g, processScriptIds); - for(var i = 0; i < templateIds.length; i++) { - for(var j = 0; j < orderedIds.length; j++) { - ids.push(_createElementId(templateIds[i], orderedIds[j])); - } - } - - for(var pos = start; pos < end; pos++) { - var itemId = orderedIds[pos]; - itemElementId = _createElementId(repeaterId, itemId); - var jobj = $jobj(itemElementId); - if(jobj.hasClass('preeval')) refreshType = _refreshType.preEval; - for(var i = 0; i < templateIds.length; i++) $ax.initializeObjectEvents($ax('#' + _createElementId(templateIds[i], itemId)), refreshType); - if(refreshType == _refreshType.preEval) { - preevalMap[itemId] = true; - jobj.removeClass('preeval'); - } - - $ax.visibility.setResizedSize(itemElementId, $ax.getNumFromPx(jobj.css('width')), $ax.getNumFromPx(jobj.css('height'))); - $ax.visibility.setMovedLocation(itemElementId, $ax.getNumFromPx(jobj.css('left')), $ax.getNumFromPx(jobj.css('top'))); - } - } else { - var html = $('#' + repeaterId + '_script').html(); - - var div = $('
    '); - div.html(html); - div.find('.' + $ax.visibility.HIDDEN_CLASS).removeClass($ax.visibility.HIDDEN_CLASS); - div.find('.' + $ax.visibility.UNPLACED_CLASS).removeClass($ax.visibility.UNPLACED_CLASS); - div.css({ - width: offset.width, - height: offset.height - }); - - _applyColorCss(background, div); - var altDiv = div; - if(hasAltColor) altDiv = _applyColorCss(altColor, div.clone()); - - // Hide repeater, if shown, while updating. - var shown = $ax.visibility.IsIdVisible(repeaterId); - if(shown) document.getElementById(repeaterId).style.visibility = 'hidden'; - - //clean up old items as late as possible - removeItems(repeaterId); - resetItemSizes(repeaterId, offset, bounds, orderedIds, vertical, wrap); - - var i = 0; - var startTop = paddingTop; - var startLeft = paddingLeft; - if(repeaterObj.css('box-sizing') == 'border-box') { - startTop -= $ax.getNumFromPx(repeaterObj.css('border-top-width')) || 0; - startLeft -= $ax.getNumFromPx(repeaterObj.css('border-left-width')) || 0; - } - var top = startTop; - var left = startLeft; - for(pos = start; pos < end; pos++) { - itemId = orderedIds[pos]; - - var itemElementId = _createElementId(repeaterId, itemId); - $ax.addItemIdToRepeater(itemId, repeaterId); - - ids.push(itemElementId); - var processId = function(full, prop, id) { - var elementId = _createElementId('u' + id, itemId); - //If there is a suffix (ex. _img), then don't push the id. - if (id.indexOf('_') <= 0 && id.indexOf('p') == -1) ids.push(elementId); - return prop + '="' + elementId + '"'; - }; - - var copy = (useAlt ? altDiv : div).clone(); - useAlt = !useAlt; - copy.attr('id', itemElementId); - copy.html(div.html().replace(/(id|for)="?u([0-9]+(p([0-9]){3})?(_[_a-z0-9]*)?)"?/g, processId)); - if(obj.repeaterPropMap.isolateRadio) { - var radioButtons = copy.find(':radio'); - for(var radioIndex = 0; radioIndex < radioButtons.length; radioIndex++) { - var radio = $(radioButtons[radioIndex]); - var oldName = radio.attr('name') || ''; - // Can't use create element id because there could be an underscore in name - if(oldName) radio.attr('name', oldName + '-' + itemId); - } - } - - - copy.css({ - 'position': 'absolute', - 'top': top + 'px', - 'left': left + 'px', - 'width': obj.width + 'px', - 'height': obj.height + 'px' - }); - $('#' + repeaterId).append(copy); - $ax.visibility.setResizedSize(itemElementId, offset.width, offset.height); - $ax.visibility.setMovedLocation(itemElementId, left, top); - - i++; - if(wrap != -1 && i % wrap == 0) { - if(vertical) { - top = startTop; - left += xOffset; - } else { - left = startLeft; - top += yOffset; - } - } else if (vertical) top += yOffset; - else left += xOffset; - } - - repeaterObj.css(repeaterSize); - - // Had to move this here because it sets up cursor: pointer on inline links, - // but must be done before style cached when adaptive view is set. - // TODO: Should be able to combine this with initialization done in pregen items. Just need to have ids and template ids be the same. - for (var i = 0; i < ids.length; i++) { - var id = ids[i]; - var childJobj = $jobj(id); - if (obj.repeaterPropMap.isolateSelection && childJobj.attr('selectiongroup')) { - childJobj.attr('selectiongroup', _createElementId(childJobj.attr('selectiongroup'), _getItemIdFromElementId(id))); - } - $ax.initializeObjectEvents($ax('#' + id), refreshType); - } - } - - var query = _getItemQuery(repeaterId); - if(viewId) $ax.adaptive.applyView(viewId, query); - else $ax.visibility.resetLimboAndHiddenToDefaults(_getItemQuery(repeaterId, preevalMap)); - - $ax.annotation.createFootnotes(query, true); - - for(var index = 0; index < ids.length; index++) { - id = ids[index]; - - if ($ax.ieColorManager) $ax.ieColorManager.applyBackground($ax('#' + id)); - //$ax.style.initializeObjectTextAlignment($ax('#' + id)); - $ax.applyHighlight($ax('#' + id), true); - } - - $ax.messageCenter.startCombineEventMessages(); - $ax.cacheRepeaterInfo(repeaterId, $ax.getWidgetInfo(repeaterId)); - - //$ax.style.startSuspendTextAlignment(); - // Now load - for(pos = start; pos < end; pos++) { - itemId = orderedIds[pos]; - itemElementId = _createElementId(repeaterId, itemId); - if(!preevalMap[orderedIds[pos]]) $ax.event.raiseSyntheticEvent(itemElementId, 'onItemLoad', true); - $ax.loadDynamicPanelsAndMasters(obj.objects, path, itemId); - } - //$ax.style.resumeSuspendTextAlignment(); - - $ax.removeCachedRepeaterInfo(repeaterId); - $ax.messageCenter.endCombineEventMessages(); - - // Reshow repeater if it was originally shown (load is complete by now) - if(shown && !itemsPregen) document.getElementById(repeaterId).style.visibility = 'inherit'; - - $ax.dynamicPanelManager.fitParentPanel(repeaterId); - - // Need to reapply the state style after refresh for text styles, and for applying a non-default style that wasn't reset for certain refreshes (adaptive changed for example). This could be way more selective but doing a safe change for the moment - if(refreshType != _refreshType.preEval) $ax.style.updateStateClass(repeaterId); - - // Right now we assume only one refresh at a time. If we can manually trigger refreshes, that may possibly change. - $ax.action.refreshEnd(); - }; - _repeaterManager.refreshRepeater = _refreshRepeater; - - _getRepeaterElementOffset = _repeaterManager.getRepeaterElementOffset = function (repeaterId, elementId) { - var viewId = $ax.adaptive.currentViewId || ''; - var robj = $ax.getObjectFromScriptId(repeaterId); - - var propMap = robj.repeaterPropMap; - var vertical = _getAdaptiveProp(propMap, 'vertical', viewId, repeaterId, robj); - var wrap = _getAdaptiveProp(propMap, 'wrap', viewId, repeaterId, robj); - var shownCount = propMap.itemIds.length; - var primaryCount = wrap == -1 ? shownCount : Math.min(shownCount, wrap); - var secondaryCount = wrap == -1 ? 1 : Math.ceil(shownCount / wrap); - var widthCount = vertical ? secondaryCount : primaryCount; - var heightCount = vertical ? primaryCount : secondaryCount; - var repeaterObj = $jobj(repeaterId); - var repeaterOffset = { x: $ax.getNumFromPx(repeaterObj.css('left')), y: $ax.getNumFromPx(repeaterObj.css('top')) }; - var paddingTop = _getAdaptiveProp(propMap, 'paddingTop', viewId, repeaterId, robj); - var paddingLeft = _getAdaptiveProp(propMap, 'paddingLeft', viewId, repeaterId, robj); - var offset = propMap[_getViewIdFromPageViewId(viewId, repeaterId, robj)]; - var spacingX = _getAdaptiveProp(propMap, 'horizontalSpacing', viewId, repeaterId, robj); - var xOffset = offset.width + spacingX; - var spacingY = _getAdaptiveProp(propMap, 'verticalSpacing', viewId, repeaterId, robj); - var yOffset = offset.height + spacingY; - - //first symbol after '-' - var repeaterNumber = elementId.split('-')[1][0]; - var elementIndex = 0; - while (propMap.itemIds[elementIndex] != repeaterNumber) { - elementIndex++; - } - - var multiplier = { y: 0, x: 0 }; - if (vertical) { - multiplier.y = elementIndex % heightCount; - multiplier.x = Math.floor(elementIndex / heightCount); - - } else { - multiplier.y = Math.floor(elementIndex / widthCount); - multiplier.x = elementIndex % widthCount; - } - - var firstTopLeftOffset = { x: paddingLeft + repeaterOffset.x, y: paddingTop + repeaterOffset.y }; - - var fitToContentOffset = { x: 0, y: 0 }; - - var elementContainerId = repeaterId + '-' + repeaterNumber; - var elementContainerDomElement = document.getElementById(elementContainerId); - if (elementContainerDomElement.style.top) { - fitToContentOffset.y = paddingTop + multiplier.y * yOffset - $ax.getNumFromPx(elementContainerDomElement.style.top); - } - if (elementContainerDomElement.style.left) { - fitToContentOffset.x = paddingLeft + multiplier.x * xOffset - $ax.getNumFromPx(elementContainerDomElement.style.left); - } - - return { - y: firstTopLeftOffset.y + multiplier.y * yOffset - fitToContentOffset.y, - x: firstTopLeftOffset.x + multiplier.x * xOffset - fitToContentOffset.x, - }; - } - - var _getItemQuery = function(repeaterId, preevalMap) { - var query = $ax(function (diagramObject, elementId) { - // Also need to check that this in not preeval - if(preevalMap) { - var itemId = _getItemIdFromElementId(elementId); - if(preevalMap[itemId]) return false; - } - - // All objects with the repeater as their parent, except the repeater itself. - var scriptId = _getScriptIdFromElementId(elementId); - return $ax.getParentRepeaterFromScriptId(scriptId) == repeaterId && scriptId != repeaterId; - }); - - return query; - } - - _repeaterManager.refreshAllRepeaters = function() { - $ax('*').each(function(diagramObject, elementId) { - if(!$ax.public.fn.IsRepeater(diagramObject.type)) return; - if($ax.visibility.isElementIdLimboOrInLimboContainer(elementId)) return; - _initPageInfo(diagramObject, elementId); - _refreshRepeater(elementId, $ax.getEventInfoFromEvent($ax.getjBrowserEvent()), _refreshType.persist); - }); - }; - - _repeaterManager.refreshRepeaters = function(ids, eventInfo) { - for(var i = 0; i < ids.length; i++) _refreshRepeater(ids[i], eventInfo); - }; - - var _initPageInfo = function(obj, elementId) { - var pageInfo = {}; - var map = obj.repeaterPropMap; - - var currentViewId = $ax.adaptive.currentViewId || ''; - var itemsPerPage = _getAdaptiveProp(map, 'itemsPerPage', currentViewId, elementId, obj); - if(itemsPerPage == -1) pageInfo.noLimit = true; - else { - pageInfo.itemsPerPage = itemsPerPage; - pageInfo.currPage = _getAdaptiveProp(map, 'currPage', currentViewId, elementId, obj); - } - repeaterToPageInfo[elementId] = pageInfo; - }; - - _repeaterManager.initialize = function() { - $ax(function (obj) { - return $ax.public.fn.IsRepeater(obj.type); - }).each(function (obj, repeaterId) { - _initPregen(repeaterId); - }); - } - - var _initPregen = function(repeaterId) { - var obj = $ax.getObjectFromScriptId(repeaterId); - var propMap = obj.repeaterPropMap; - - //If there is no wrap, then set it to be above the number of rows - var viewId = $ax.adaptive.currentViewId || ''; - var wrap = _getAdaptiveProp(propMap, 'wrap', viewId, repeaterId, obj); - var vertical = _getAdaptiveProp(propMap, 'vertical', viewId, repeaterId, obj); - - var orderedIds = []; - var ids = []; - var background = _getAdaptiveProp(propMap, 'backColor', viewId, repeaterId, obj); - var hasAltColor = _getAdaptiveProp(propMap, 'hasAltColor', viewId, repeaterId, obj); - var altColor = hasAltColor ? _getAdaptiveProp(propMap, 'altColor', viewId, repeaterId, obj) : undefined; - var useAlt = false; - - var bounds = _getVisibleDataBounds(repeaterToPageInfo[repeaterId], obj.data.length); - var start = bounds[0]; - var end = bounds[1]; - - // Starts empty - if(start == end) { - $ax.action.refreshEnd(repeaterId); - return; - } - var unprocessedBaseIds = $jobj($ax.repeater.createElementId(repeaterId, start + 1)).html().match(/(id|for)="?u([0-9]+)/g); - var baseIds = []; - if(unprocessedBaseIds) { - for(var i = 0; i < unprocessedBaseIds.length; i++) { - var val = unprocessedBaseIds[i].split('=')[1].substr(1); - if(baseIds.indexOf(val) == -1) baseIds.push(val); - } - } - - for(var itemNum = start; itemNum < end; itemNum++) { - ids.push($ax.repeater.createElementId(repeaterId, itemNum + 1)); - for(i = 0; i < baseIds.length; i++) ids.push($ax.repeater.createElementId(baseIds[i], itemNum + 1)); - var itemId = itemNum + 1; - orderedIds[itemNum] = itemId; - - var itemDiv = $jobj($ax.repeater.createElementId(repeaterId, itemNum + 1)); - _applyColorCss(useAlt ? altColor : background, itemDiv); - if(hasAltColor) useAlt = !useAlt; - } - - resetItemSizes(repeaterId, undefined, bounds, orderedIds, vertical, wrap); - }; - - var _applyColorCss = function(json, div) { - var args = json.r + ', ' + json.g + ', ' + json.b; - var background = json.a == 0 ? '' : json.a == 1 ? 'rgb(' + args + ')' : 'rgba(' + args + ', ' + json.a + ')'; - if($ax.ieColorManager && json.a != 0 && json.a != 1) { - var ieColor = $ax.ieColorManager.getColorFromArgb(json.a * 255, json.r, json.g, json.b, true); - if(ieColor) background = ieColor; - } - div.css('background-color', background); - return div; - }; - - var _getViewIdFromPageViewId = function (pageViewId, id, diagramObject) { - if (diagramObject.owner.type != 'Axure:Master') { - return pageViewId; - } else { - var parentRdoId = $ax('#' + id).getParents(true, ['rdo'])[0][0]; - var rdoState = $ax.style.generateState(parentRdoId); - var rdoStyle = $ax.style.computeFullStyle(parentRdoId, rdoState, pageViewId); - var viewOverride = rdoStyle.viewOverride; - return viewOverride; - } - } - - var _getAdaptiveProp = _repeaterManager.getAdaptiveProp = function (map, prop, viewId, repeaterId, repeaterObj) { - var viewChain = $ax.style.getViewIdChain(viewId, repeaterId, repeaterObj); - - for(var i = viewChain.length - 1; i >= 0; i--) { - viewId = viewChain[i]; - var viewProps = map[viewId]; - if(viewProps.hasOwnProperty(prop)) return viewProps[prop]; - } - - var base = repeaterObj.owner.type != 'Axure:Master' ? map[''] : map['19e82109f102476f933582835c373474']; - if(base.hasOwnProperty(prop)) return base[prop]; - return map['default'][prop]; - }; - - _repeaterManager.getItemCount = function(repeaterId) { - var data = repeaterToActiveDataSet[repeaterId].length; - var info = repeaterToPageInfo[repeaterId]; - if(!info.noLimit) { - var start = Math.min(data, info.itemsPerPage * info.currPage); - var end = Math.min(data, start + info.itemsPerPage); - data = end - start; - } - return data; - }; - - _repeaterManager.setDisplayProps = function(obj, repeaterId, itemIndex) { - var data = repeaterToActiveDataSet[repeaterId]; - var info = repeaterToPageInfo[repeaterId]; - var start = 0; - var end = data.length; - if(!info.noLimit) { - start = Math.min(end, info.itemsPerPage * (info.currPage - 1)); - end = Math.min(end, start + info.itemsPerPage); - } - var count = end - start; - var index = -1; - for(var i = 0; i < count; i++) { - if(data[start + i].index == itemIndex) index = i + 1; - } - if(index == -1) return; - obj.index = index; - obj.isfirst = index == 1; - obj.islast = index == end - start; - obj.iseven = index % 2 == 0; - obj.isodd = index % 2 == 1; - }; - - var _getVisibleDataBounds = function(pageInfo, count) { - var retval = [0, count]; - if(!pageInfo.noLimit) { - var end = pageInfo.itemsPerPage * pageInfo.currPage; - var start = end - pageInfo.itemsPerPage; - - // If past the end, move to last page - if(start >= count) { - pageInfo.currPage = Math.floor((count - 1) / pageInfo.itemsPerPage) + 1; - if(pageInfo.currPage <= 0) pageInfo.currPage = 1; - - end = pageInfo.itemsPerPage * pageInfo.currPage; - start = end - pageInfo.itemsPerPage; - } - end = Math.min(end, count); - retval[0] = start; - retval[1] = end; - } - return retval; - }; - - _repeaterManager.getVisibleDataCount = function(repeaterId) { - var bounds = _getVisibleDataBounds(repeaterToPageInfo[repeaterId], repeaterToActiveDataSet[repeaterId].length); - return bounds[1] - bounds[0]; - }; - - _repeaterManager.getDataCount = function(repeaterId) { - return repeaterToCurrentDataSet[repeaterId].length; - }; - - var _getFilteredDataCount = _repeaterManager.getFilteredDataCount = function(repeaterId) { - return repeaterToActiveDataSet[repeaterId].length; - }; - - _repeaterManager.getPageCount = function(repeaterId) { - var info = repeaterToPageInfo[repeaterId]; - return info.noLimit ? 1 : Math.ceil(_getFilteredDataCount(repeaterId) / info.itemsPerPage); - }; - - _repeaterManager.getPageIndex = function(repeaterId) { - var info = repeaterToPageInfo[repeaterId]; - return info.noLimit ? 1 : info.currPage; - }; - - var getActiveDataSet = function(repeaterId) { - var active = $ax.deepCopy(repeaterToCurrentDataSet[repeaterId]); - // Set up 1 indexing each item. - for(var i = 0; i < active.length; i++) active[i].index = i + 1; - return active; - }; - - var getOrderedIds = function(repeaterId, eventInfo) { - var data = repeaterToActiveDataSet[repeaterId] = getActiveDataSet(repeaterId); - - // Filter first so less to sort - applyFilter(repeaterId, data, eventInfo); - - // Sort next - var sorts = repeaterToSorts[repeaterId] || []; - if(sorts.length != 0 && data.length > 1) { - // TODO: Make this generic and factor out if we want to use it elsewhere... - // Compare is a function that takes 2 arguments, and returns a number. A high number means the second should go first - // Otherwise the first stays first. - var mergesort = function(list, start, end, compare) { - var middle = Math.floor((start + end) / 2); - if(middle - start > 1) mergesort(list, start, middle, compare); - if(end - middle > 1) mergesort(list, middle, end, compare); - var index1 = start; - var index2 = middle; - var tempList = []; - while(index1 < middle && index2 < end) { - tempList[tempList.length] = list[compare(list[index1], list[index2]) > 0 ? index2++ : index1++]; - } - while(index1 < middle) tempList[tempList.length] = list[index1++]; - while(index2 < end) tempList[tempList.length] = list[index2++]; - - // transfer from temp list to the real list. - for(var i = 0; i < tempList.length; i++) list[start + i] = tempList[i]; - }; - // Compare is the tie breaking function to us if necessary. - var getComparator = function(columnName, ascending, type, compare) { - // If this needs to be sped up, break up into several smaller functions conditioned off of type - return function(row1, row2) { - // If column undefined have it be empty string, NaN, or invalid date - //// If column undefined, no way to measure this, so call it a tie. - //if(row1[columnName] === undefined || row2[columnName] === undefined) return 0; - - var text1 = (row1[columnName] && row1[columnName].text) || ''; - var text2 = (row2[columnName] && row2[columnName].text) || ''; - - // This means we are case insensitive, so lowercase everything to kill casing - if(type == 'Text') { - text1 = text1.toLowerCase(); - text2 = text2.toLowerCase(); - } - - //If tied, go to tie breaker - if(text1 == text2) { - if(compare) return compare(row1, row2); - // Actually a tie. - return 0; - } - if(type == 'Text' || type == 'Text (Case Sensitive)') { - if(text1 < text2 ^ ascending) return 1; - else return -1; - } else if(type == 'Number') { - var num1 = text1 == '' ? NaN : Number(text1); - var num2 = text2 == '' ? NaN : Number(text2); - - if(isNaN(num1) && isNaN(num2)) return 0; - if(isNaN(num1) || isNaN(num2)) return isNaN(num1) ? 1 : -1; - if(num1 < num2 ^ ascending) return 1; - else return -1; - } else if(type == 'Date - YYYY-MM-DD' || type == 'Date - MM/DD/YYYY') { - var func = type == 'Date - YYYY-MM-DD' ? getDate1 : getDate2; - var date1 = func(text1); - var date2 = func(text2); - if(!date1.valid && !date2.valid) return 0; - if(!date1.valid || !date2.valid) return date1.valid ? -1 : 1; - var diff = date2.year - date1.year; - if(diff == 0) diff = date2.month - date1.month; - if(diff == 0) diff = date2.day - date1.day; - if(diff == 0) return 0; - return diff > 0 ^ ascending ? 1 : -1; - } - console.log('unhandled sort type'); - return 0; - }; - }; - var compareFunc = null; - for(var i = 0; i < sorts.length; i++) compareFunc = getComparator(sorts[i].columnName, sorts[i].ascending, sorts[i].sortType, compareFunc); - - mergesort(data, 0, data.length, compareFunc); - } - - var ids = []; - for(i = 0; i < data.length; i++) ids[i] = data[i].index; - - return ids; - }; - - var getDate1 = function(text) { - var date = { valid: false }; - var sections = text.split('-'); - if(sections.length == 1) sections = text.split('/'); - if(sections.length != 3) return date; - date.year = Number(sections[0]); - date.month = Number(sections[1]); - date.day = Number(sections[2]); - date.valid = !isNaN(date.year); - date.valid &= !isNaN(date.month) && date.month > 0 && date.month <= 12; - date.valid &= !isNaN(date.day) && date.day > 0 && date.day <= daysPerMonth(date.month, date.year); - return date; - }; - - var getDate2 = function(text) { - var date = { valid: false }; - var sections = text.split('-'); - if(sections.length == 1) sections = text.split('/'); - if(sections.length != 3) return date; - date.month = Number(sections[0]); - date.day = Number(sections[1]); - date.year = Number(sections[2]); - date.valid = !isNaN(date.year); - date.valid &= !isNaN(date.month) && date.month > 0 && date.month <= 12; - date.valid &= !isNaN(date.day) && date.day > 0 && date.day <= daysPerMonth(date.month, date.year); - return date; - }; - - var daysPerMonth = function(month, year) { - if(month == 9 || month == 4 || month == 6 || month == 11) return 30; - if(month != 2) return 31; - - if(year % 4 != 0) return 28; - if(year % 100 != 0) return 29; - return year % 400 == 0 ? 29 : 28; - }; - - var applyFilter = function(repeaterId, data, eventInfo) { - var dataFiltered = []; - var filters = repeaterToFilters[repeaterId] || []; - if (filters.length != 0) { - if(!eventInfo) eventInfo = $ax.getBasicEventInfo(); - var oldTarget = eventInfo.targetElement; - var oldSrc = eventInfo.srcElement; - var oldThis = eventInfo.thiswidget; - var oldItem = eventInfo.item; - - var idToWidgetInfo = {}; - - outer: - for(var i = 1; i <= data.length; i++) { - for(var j = 0; j < filters.length; j++) { - eventInfo.targetElement = _createElementId(repeaterId, i); - eventInfo.srcElement = filters[j].thisId; - if(!idToWidgetInfo[eventInfo.srcElement]) idToWidgetInfo[eventInfo.srcElement] = $ax.getWidgetInfo(eventInfo.srcElement); - eventInfo.thiswidget = idToWidgetInfo[eventInfo.srcElement]; - eventInfo.item = $ax.getItemInfo(eventInfo.srcElement); - - if($ax.expr.evaluateExpr(filters[j].filter, eventInfo) != 'true') continue outer; - } - dataFiltered[dataFiltered.length] = data[i - 1]; - } - - for(i = 0; i < dataFiltered.length; i++) data[i] = dataFiltered[i]; - while(data.length > dataFiltered.length) data.pop(); - - eventInfo.targetElement = oldTarget; - eventInfo.srcElement = oldSrc; - eventInfo.thiswidget = oldThis; - eventInfo.item = oldItem; - } - }; - - var _addFilter = function(repeaterId, removeOtherFilters, label, filter, thisId) { - if(removeOtherFilters) _removeFilter(repeaterId); - - var filterList = repeaterToFilters[repeaterId]; - if(!filterList) repeaterToFilters[repeaterId] = filterList = []; - - var filterObj = { filter: filter, thisId: thisId }; - if(label) filterObj.label = label; - filterList[filterList.length] = filterObj; - }; - _repeaterManager.addFilter = _addFilter; - - var _removeFilter = function(repeaterId, label) { - var filterList = repeaterToFilters[repeaterId]; - // If no list, nothing to remove - if(!filterList) return; - - // If no label, remove everything - if(!label) { - repeaterToFilters[repeaterId] = []; - return; - } - - for(var i = filterList.length - 1; i >= 0; i--) { - var filterObj = filterList[i]; - if(filterObj.label && filterObj.label == label) $ax.splice(filterList, i, 1); - } - }; - _repeaterManager.removeFilter = _removeFilter; - - var _addSort = function(repeaterId, label, columnName, ascending, toggle, sortType) { - var sortList = repeaterToSorts[repeaterId]; - if(!sortList) repeaterToSorts[repeaterId] = sortList = []; - - for(var i = 0; i < sortList.length; i++) { - if(columnName == sortList[i].columnName) { - var lastSortObj = $ax.splice(sortList, i, 1)[0]; - if(toggle) ascending = !lastSortObj.ascending; - break; - } - } - - var sortObj = { columnName: columnName, ascending: ascending, sortType: sortType }; - - if(label) sortObj.label = label; - sortList[sortList.length] = sortObj; - }; - _repeaterManager.addSort = _addSort; - - var _removeSort = function(repeaterId, label) { - var sortList = repeaterToSorts[repeaterId]; - // If no list, nothing to remove - if(!sortList) return; - - // If no label, remove everything - if(!label) { - repeaterToSorts[repeaterId] = []; - return; - } - - for(var i = sortList.length - 1; i >= 0; i--) { - var sortObj = sortList[i]; - if(sortObj.label && sortObj.label == label) $ax.splice(sortList, i, 1); - } - }; - _repeaterManager.removeSort = _removeSort; - - var _setRepeaterToPage = function(repeaterId, type, value, eventInfo) { - var pageInfo = repeaterToPageInfo[repeaterId]; - // page doesn't matter if there is no limit. - if(pageInfo.noLimit) return; - - var dataSet = repeaterToActiveDataSet[repeaterId]; - if(!dataSet) dataSet = repeaterToCurrentDataSet[repeaterId]; - var lastPage = Math.max(1, Math.ceil(dataSet.length / pageInfo.itemsPerPage)); - - if(type == 'Value') { - var val = Number($ax.expr.evaluateExpr(value, eventInfo)); - // if invalid, default to 1, otherwise, clamp the value - if(isNaN(val)) val = 1; - else if(val < 1) val = 1; - else if(val > lastPage) val = lastPage; - - pageInfo.currPage = val; - } else if(type == 'Previous') { - if(pageInfo.currPage > 1) pageInfo.currPage--; - } else if(type == 'Next') { - if(pageInfo.currPage < lastPage) pageInfo.currPage++; - } else if(type == 'Last') { - pageInfo.currPage = lastPage; - } else { - console.log('Unknown type'); - } - }; - _repeaterManager.setRepeaterToPage = _setRepeaterToPage; - - var _setNoItemLimit = function(repeaterId) { - var pageInfo = repeaterToPageInfo[repeaterId]; - delete pageInfo.currPage; - delete pageInfo.itemsPerPage; - pageInfo.noLimit = true; - }; - _repeaterManager.setNoItemLimit = _setNoItemLimit; - - var _setItemLimit = function(repeaterId, value, eventInfo) { - var pageInfo = repeaterToPageInfo[repeaterId]; - - if(pageInfo.noLimit) { - pageInfo.noLimit = false; - pageInfo.currPage = 1; - } - - var oldTarget = eventInfo.targetElement; - eventInfo.targetElement = repeaterId; - var itemLimit = Number($ax.expr.evaluateExpr(value, eventInfo)); - eventInfo.targetElement = oldTarget; - if(isNaN(itemLimit)) itemLimit = 20; - else if(itemLimit < 1) itemLimit = 1; - pageInfo.itemsPerPage = itemLimit; - }; - _repeaterManager.setItemLimit = _setItemLimit; - - var removeItems = function(repeaterId) { - var elementIds = $ax.getChildElementIdsForRepeater(repeaterId); - var itemId = $ax.getItemIdsForRepeater(repeaterId); - for(var i = 0; i < itemId.length; i++) $jobj(_createElementId(repeaterId, itemId[i])).remove(); - $ax.visibility.clearLimboAndHiddenIds(elementIds); - $ax.visibility.clearMovedAndResizedIds(elementIds); - $ax.clearItemsForRepeater(repeaterId); - }; - - var repeaterSizes = {}; - var resetItemSizes = function (repeaterId, itemSize, bounds, ids, vertical, wrap) { - var calcItem = !itemSize; - if(calcItem) itemSize = {}; - - var repeaterMap = {}; - repeaterMap.vert = vertical; - var sizesMap = {}; - var sizes = []; - var currSizes = wrap == -1 ? sizes : []; - for(var i = 0; i + bounds[0] < bounds[1]; i++) { - var itemId = ids[i + bounds[0]]; - if(calcItem) { - var itemJobj = $jobj(_createElementId(repeaterId, itemId)); - itemSize.width = $ax.getNumFromPx(itemJobj.css('width')); - itemSize.height = $ax.getNumFromPx(itemJobj.css('height')); - } - - var size = { itemId: itemId, width: itemSize.width, height: itemSize.height }; - currSizes.push(size); - sizesMap[size.itemId] = size; - if(currSizes.length == wrap) { - sizes.push(currSizes); - currSizes = []; - } - } - if (wrap != -1 && currSizes.length > 0) sizes.push(currSizes); - repeaterMap.sizes = sizes; - repeaterMap.sizesMap = sizesMap; - repeaterSizes[repeaterId] = repeaterMap; - }; - - _repeaterManager.getItemSize = function(repeaterId, itemId) { - var repeaterSize = repeaterSizes[repeaterId]; - if (!repeaterSize) return false; - return repeaterSize.sizesMap[itemId]; - } - - _repeaterManager.setItemSize = function (repeaterId, itemId, width, height) { - var repeaterSize = repeaterSizes[repeaterId]; - if(!repeaterSize) return false; - var size = repeaterSize.sizesMap[itemId]; - var deltaX = width - size.width; - var deltaY = height - size.height; - if(!deltaX && !deltaY) return false; - - repeaterSize.resized = true; - - if(deltaX) _pushItems(repeaterId, itemId, deltaX, false, true); - if(deltaY) _pushItems(repeaterId, itemId, deltaY, true, true); - - if(deltaX || deltaY) $ax.event.raiseSyntheticEvent(_createElementId(repeaterId, itemId), 'onItemResize'); - - return true; - } - - var _pushItems = _repeaterManager.pushItems = function (repeaterId, itemId, delta, vertical, suppressFire) { - if(delta == 0) return; - - // Update repeater item size - var prop = vertical ? 'height' : 'width'; - var itemElementId = _createElementId(repeaterId, itemId); - var itemObj = $jobj(itemElementId); - itemObj.css(prop, $ax.getNumFromPx(itemObj.css(prop)) + delta); - $ax.visibility.setResizedSize(itemElementId, $ax.getNumFromPx(itemObj.css('width')), $ax.getNumFromPx(itemObj.css('height'))); - - var repeaterObj = $jobj(repeaterId); - var repeaterMap = repeaterSizes[repeaterId]; - var sizes = repeaterMap.sizes; - var wrap = sizes[0].length != undefined; - var vert = repeaterMap.vert; - - // Not wrapping, has to push in primary direction - if (!wrap && vert != vertical) { - var before = 0; - var after = 0; - var limit = 0; - for(var i = 0; i < sizes.length; i++) { - var size = sizes[i]; - if(size.itemId == itemId) { - before = size[prop]; - size[prop] += delta; - after = size[prop]; - } else { - limit = limit ? Math.max(limit, size[prop]) : size[prop]; - } - } - - // Repeater delta is because an item can increase secondary direction, but if another item is already larger, then repeater size isn't effected. - var repeaterDelta = delta; - if(sizes.length != 1) { - if(after >= limit) repeaterDelta = after - Math.max(limit, before); - else if(before > limit) repeaterDelta = limit - before; - else repeaterDelta = 0; - } - - _updateRepeaterSize(prop, repeaterObj, repeaterDelta, vert); - - if(!suppressFire) $ax.event.raiseSyntheticEvent(_createElementId(repeaterId, itemId), 'onItemResize'); - return; - } - - var index = 0; - var index2 = 0; - // Get the indices first - if(wrap) { - outer: - for(; index < sizes.length; index++) { - var innerSizes = sizes[index]; - for(index2 = 0; index2 < innerSizes.length; index2++) if(innerSizes[index2].itemId == itemId) break outer; - } - } else { - for(; index < sizes.length; index++) if(sizes[index].itemId == itemId) break; - } - // Find out who is being pushed - var itemIdsEffected = []; - if (vert == vertical) { - // To check for repeater resize, non-wrap is easy, for wrap you have to see if your new size is enough to effect the size given other col/row sizes. - repeaterDelta = delta; - if(wrap && sizes.length > 1) { - var viewId = $ax.adaptive.currentViewId || ''; - var obj = $obj(repeaterId); - var spacing = _getAdaptiveProp(obj.repeaterPropMap, (vert ? 'vertical' : 'horizontal') + 'Spacing', viewId, repeaterId, obj); - for(i = 0; i < sizes.length; i++) { - var rowColSize = 0; - var rowCol = sizes[i]; - for(var j = 0; j < rowCol.length; j++) { - if(j != 0) rowColSize += spacing; - rowColSize += rowCol[j][prop]; - } - - if(i == index) { - before = rowColSize; - after = before + delta; - } else { - limit = limit ? Math.max(limit, rowColSize) : rowColSize; - } - } - - if(after >= limit) repeaterDelta = after - Math.max(limit, before); - else if (before > limit) repeaterDelta = limit - before; - else repeaterDelta = 0; - } - - if (repeaterDelta) { - _updateRepeaterSize(prop, repeaterObj, repeaterDelta, vert); - } - - // Done the hard part, calculating/updating new repeater size. Now just resize items and find what to push. - var array = wrap ? sizes[index] : sizes; - i = wrap ? index2 : index; - array[i][prop] += delta; - - for(i++; i < array.length; i++) itemIdsEffected.push(array[i].itemId); - } else { - // Secondary push is more interesting. See how much your primary row/column is already pushing, if that changes - // then effect all rows/columns after it - - // Get the biggest one in the current row/column, ignoring the one we're changing - var biggest = 0; - var currSizes = sizes[index]; - for(i = 0; i < currSizes.length; i++) { - if (i == index2) continue; - - biggest = Math.max(biggest, currSizes[i][prop]); - } - - var beforeSize = Math.max(biggest, currSizes[index2][prop]); - currSizes[index2][prop] += delta; - var afterSize = Math.max(biggest, currSizes[index2][prop]); - - // Nothing pushed/pulled - if (afterSize == beforeSize) return; - - for(i = index + 1; i < sizes.length; i++) { - currSizes = sizes[i]; - for(j = 0; j < currSizes.length; j++) itemIdsEffected.push(currSizes[j].itemId); - } - - // Delta is only how much the whole row/column changed - delta = afterSize - beforeSize; - - // Repeater resize secondary is determined by the effective delta. - _updateRepeaterSize(prop, repeaterObj, delta, vert); - } - - for(i = 0; i < itemIdsEffected.length; i++) { - var currItemId = itemIdsEffected[i]; - var elementId = _createElementId(repeaterId, currItemId); - var loc = vertical ? 'top' : 'left'; - var jobj = $jobj(elementId); - var currVal = $ax.getNumFromPx(jobj.css(loc)); - jobj.css(loc, currVal + delta); - $ax.visibility.setMovedLocation(elementId, $ax.getNumFromPx(jobj.css('left')), $ax.getNumFromPx(jobj.css('top'))); - } - - if(!suppressFire) $ax.event.raiseSyntheticEvent(_createElementId(repeaterId, itemId), 'onItemResize'); - } - - var _updateRepeaterSize = function(prop, jobj, delta, vert) { - if (delta == 0) return; - var val = $ax.getNumFromPx(jobj.css(prop)) + delta; - var border = 0; - if(vert) border += $ax.getNumFromPx(jobj.css('border-top-width')) + $ax.getNumFromPx(jobj.css('border-bottom-width')); - else border += $ax.getNumFromPx(jobj.css('border-left-width')) + $ax.getNumFromPx(jobj.css('border-right-width')); - val += border; - jobj.css(prop, val); - $ax.visibility.setResizedSize(jobj.attr('id'), $ax.getNumFromPx(jobj.css('width')), $ax.getNumFromPx(jobj.css('height'))); - $ax.dynamicPanelManager.fitParentPanel(jobj.attr('id')); - } - - var _getDataFromDataSet = function (eventInfo, repeaterId, itemId, propName, type) { - var row = undefined; - var deleteMap = eventInfo && eventInfo.repeaterDeleteMap && eventInfo.repeaterDeleteMap[repeaterId]; - if(deleteMap) row = deleteMap.idToRow[itemId]; - - if(!row) { - var itemNum = _getRealItemId(eventInfo, repeaterId, Number(itemId)); - row = repeaterToCurrentDataSet[repeaterId][itemNum]; - } - // Default to obj with text as empty string, as we don't generate the data for empty props - var data = row[propName] || { text: '' }; - //For now text is always the default. May change this to depend on context. - switch(type) { - case 'data': return data.type == 'text' ? data.text : data - case 'img': return (data.img && data.img[$ax.adaptive.getSketchKey()]) || data.text; - default: return (type && data[type]) || data.text; - } - //return type == 'data' && data.type != 'text' ? data : (type && data[type]) || data['text']; - }; - _repeaterManager.getData = _getDataFromDataSet; - - _repeaterManager.hasData = function(id, propName) { - if(!_getItemIdFromElementId(id)) return false; - var repeaterId = $ax.getParentRepeaterFromScriptId(_getScriptIdFromElementId(id)); - return Boolean(repeaterToCurrentDataSet[repeaterId] && repeaterToCurrentDataSet[repeaterId].props.indexOf(propName) != -1); - }; - - var _getEventDeleteData = function(eventInfo, repeaterId) { - var repeaterDeleteMap = eventInfo.repeaterDeleteMap; - if(!repeaterDeleteMap) repeaterDeleteMap = eventInfo.repeaterDeleteMap = {}; - - var myDeleteMap = repeaterDeleteMap[repeaterId]; - if(!myDeleteMap) { - myDeleteMap = repeaterDeleteMap[repeaterId] = {}; - myDeleteMap.deletedIds = []; - myDeleteMap.idToRow = {}; - } - - return myDeleteMap; - }; - - var _getRealItemId = function(eventInfo, repeaterId, itemId) { - var deletedBefore = 0; - var map = eventInfo.repeaterDeleteMap && eventInfo.repeaterDeleteMap[repeaterId]; - var deletedIds = map && map.deletedIds; - if(!deletedIds) return itemId - 1; - - for(var i = 0; i < deletedIds.length; i++) if (deletedIds[i] < itemId) deletedBefore++; - return itemId - deletedBefore - 1; - } - - var _addItemToDataSet = function(repeaterId, row, itemEventInfo) { - itemEventInfo.data = true; - var oldTarget = itemEventInfo.targetElement; - itemEventInfo.targetElement = repeaterId; - var dataSet = repeaterToLocalDataSet[repeaterId]; - - for(var propName in row) { - if(!row.hasOwnProperty(propName)) continue; - var prop = row[propName]; - if(prop.type == 'literal') { - var retval = $ax.expr.evaluateExpr(prop.literal, itemEventInfo); - if(typeof (retval) == 'string' || retval instanceof Date) retval = { type: 'text', text: retval }; - row[propName] = retval; - } - } - - itemEventInfo.targetElement = oldTarget; - dataSet[dataSet.length] = row; - itemEventInfo.data = false; - }; - _repeaterManager.addItem = _addItemToDataSet; - - var _deleteItemsFromDataSet = function(repeaterId, eventInfo, type, rule) { - var dataSet = repeaterToCurrentDataSet[repeaterId]; - var deleteDataMap = _getEventDeleteData(eventInfo, repeaterId); - var items; - - // Should always be this, marked, or rule. - if(type == 'this') items = [_getItemIdFromElementId(eventInfo.srcElement)]; - else if(type == 'marked') items = $ax.deepCopy(repeaterToEditItems[repeaterId]); - else { - // This should be rule - var visibleData = repeaterToCurrentDataSet[repeaterId]; - items = []; - var oldTarget = eventInfo.targetElement; - for(var i = 0; i < visibleData.length + deleteDataMap.deletedIds.length; i++) { - var index = i + 1; - if(deleteDataMap.deletedIds.indexOf(index) != -1) continue; - - eventInfo.targetElement = _createElementId(repeaterId, index); - if($ax.expr.evaluateExpr(rule, eventInfo).toLowerCase() != 'true') continue; - items.push(index); - } - eventInfo.targetElement = oldTarget; - } - // Want them decending - items.sort(function(a, b) { return b - a; }); - var editItems = repeaterToEditItems[repeaterId]; - - for(i = 0; i < items.length; i++) { - var itemId = items[i]; - - // Don't delete already deletedItem - if(deleteDataMap.deletedIds.indexOf(itemId) != -1) continue; - - var deletedRow = $ax.splice(dataSet, _getRealItemId(eventInfo, repeaterId, itemId), 1)[0]; - deleteDataMap.deletedIds.push(itemId); - deleteDataMap.idToRow[itemId] = deletedRow; - for(var j = editItems.length - 1; j >= 0; j--) { - var editItem = editItems[j]; - if(editItem == itemId) $ax.splice(editItems, j, 1); - else if(editItem > itemId) editItems[j] = editItem - 1; - } - } - }; - _repeaterManager.deleteItems = _deleteItemsFromDataSet; - - var _updateEditItemsInDataSet = function(repeaterId, propMap, eventInfo, type, rule) { - var oldTarget = eventInfo.targetElement; - var dataSet = repeaterToCurrentDataSet[repeaterId]; - var items; - - // Should always be this, marked, or rule. - if(type == 'this') items = [_getItemIdFromElementId(eventInfo.srcElement)]; - else if(type == 'marked') items = repeaterToEditItems[repeaterId]; - else { - // This should be rule - var currData = repeaterToCurrentDataSet[repeaterId]; - items = []; - oldTarget = eventInfo.targetElement; - for(var i = 0; i < currData.length; i++) { - var index = i + 1; - eventInfo.targetElement = _createElementId(repeaterId, index); - if($ax.expr.evaluateExpr(rule, eventInfo).toLowerCase() != 'true') continue; - items.push(index); - } - eventInfo.targetElement = oldTarget; - } - - eventInfo.data = true; - for(var prop in propMap) { - if(!propMap.hasOwnProperty(prop)) continue; - for(i = 0; i < items.length; i++) { - var data = propMap[prop]; - var item = items[i]; - if(data.type == 'literal') { - eventInfo.targetElement = _createElementId(repeaterId, item); - data = $ax.expr.evaluateExpr(data.literal, eventInfo); - if(typeof (data) == 'object' && data.isWidget) data = data.text; - if(typeof (data) == 'string') data = { type: 'text', text: data }; - } - dataSet[_getRealItemId(eventInfo, repeaterId, item)][prop] = data; - } - } - eventInfo.targetElement = oldTarget; - eventInfo.data = false; - }; - _repeaterManager.updateEditItems = _updateEditItemsInDataSet; - - var _getAllItemIds = function(repeaterId) { - var retval = []; - var currDataSet = repeaterToCurrentDataSet[repeaterId]; - for(var i = 0; i < currDataSet.length; i++) retval.push(i + 1); - return retval; - }; - _repeaterManager.getAllItemIds = _getAllItemIds; - - var _addEditItemToRepeater = function(repeaterId, itemIds) { - for(var i = 0; i < itemIds.length; i++) { - var itemId = Number(itemIds[i]); - var items = repeaterToEditItems[repeaterId]; - if(items.indexOf(itemId) == -1) items[items.length] = itemId; - } - }; - _repeaterManager.addEditItems = _addEditItemToRepeater; - - var _removeEditItemFromRepeater = function(repeaterId, itemIds) { - for(var i = 0; i < itemIds.length; i++) { - var itemId = itemIds[i]; - var items = repeaterToEditItems[repeaterId]; - var index = items.indexOf(Number(itemId)); - if(index != -1) $ax.splice(items, index, 1); - } - }; - _repeaterManager.removeEditItems = _removeEditItemFromRepeater; - - _repeaterManager.isEditItem = function(repeaterId, itemId) { - var items = repeaterToEditItems[repeaterId]; - return items.indexOf(Number(itemId)) != -1; - }; - - var _createElementId = function(scriptId, itemId) { - if(!itemId) return scriptId; - var i = scriptId.indexOf('_'); - var sections = i > -1 ? [scriptId.substring(0, i), scriptId.substring(i + 1)] : [scriptId]; - var retval = sections[0] + '-' + itemId; - return sections.length > 1 ? retval + '_' + sections[1] : retval; - }; - _repeaterManager.createElementId = _createElementId; - - var _getElementId = function(scriptId, childId) { - var elementId = scriptId; - if($ax.getParentRepeaterFromScriptId(scriptId)) { - // Must be in the same item as the child - var itemId = $ax.repeater.getItemIdFromElementId(childId); - elementId = $ax.repeater.createElementId(scriptId, itemId); - } - return elementId; - }; - _repeaterManager.getElementId = _getElementId; - - var _getScriptIdFromElementId = function(elementId) { - if(!elementId) return elementId; - var sections = elementId.split('-'); - var retval = sections[0]; - if(sections.length <= 1) return retval; - sections = sections[1].split('_'); - return sections.length > 1 ? retval + '_' + sections[1] : retval; - }; - _repeaterManager.getScriptIdFromElementId = _getScriptIdFromElementId; - - var _getItemIdFromElementId = function(elementId) { - var sections = elementId.split('-'); - if(sections.length < 2) return ''; - sections = sections[1].split('_'); - return sections[0]; - }; - _repeaterManager.getItemIdFromElementId = _getItemIdFromElementId; - - // TODO: Just inline this if we keep it this way. - var _applySuffixToElementId = function(id, suffix) { - return id + suffix; - // return _createElementId(_getScriptIdFromElementId(id) + suffix, _getItemIdFromElementId(id)); - }; - _repeaterManager.applySuffixToElementId = _applySuffixToElementId; - - var _removeSuffixFromElementId = function (id) { - var suffixId = id.indexOf('_'); - if(suffixId != -1) return id.substr(0, suffixId); - - var partId = id.indexOf('p'); - if(partId != -1) return _createElementId(id.substr(0, partId), _getItemIdFromElementId(id)); // item id is after part, but before suffix - - return id; - } - _repeaterManager.removeSuffixFromElementId = _removeSuffixFromElementId; - - // var _getRepeaterSize = function(repeaterId) { - // var itemCount = ($ax.getItemIdsForRepeater(repeaterId) || []).length; - // if(itemCount == 0) return { width: 0, height: 0 }; - - // var repeater = $obj(repeaterId); - // // Width and height per item; - // var width = repeater.width; - // var height = repeater.height; - - // var viewId = $ax.adaptive.currentViewId || ''; - // var widthIncrement = width + _getAdaptiveProp(repeater.repeaterPropMap, 'horizontalSpacing', viewId); - // var heightIncrement = height + _getAdaptiveProp(repeater.repeaterPropMap, 'verticalSpacing', viewId); - - // var wrap = _getAdaptiveProp(repeater.repeaterPropMap, 'wrap', viewId); - // var vertical = _getAdaptiveProp(repeater.repeaterPropMap, 'vertical', viewId); - - // if(wrap == -1 || itemCount <= wrap) { - // if(vertical) height += heightIncrement * (itemCount - 1); - // else width += widthIncrement * (itemCount - 1); - // } else { - // var primaryDim = wrap; - // var secondaryDim = Math.ceil(itemCount / primaryDim); - - // if(vertical) { - // height += heightIncrement * (primaryDim - 1); - // width += widthIncrement * (secondaryDim - 1); - // } else { - // width += widthIncrement * (primaryDim - 1); - // height += heightIncrement * (secondaryDim - 1); - // } - // } - // return { width: width, height: height }; - // }; - // _repeaterManager.getRepeaterSize = _getRepeaterSize; - -}); - -// ******* Dynamic Panel Manager ******** // -$axure.internal(function($ax) { - // TODO: Probably a lot of the dynamic panel functions from pagescript should be moved here at some point... - var _dynamicPanelManager = $ax.dynamicPanelManager = {}; - - var _isIdFitToContent = _dynamicPanelManager.isIdFitToContent = function(id) { - var obj = $obj(id); - if (!obj || !$ax.public.fn.IsDynamicPanel(obj.type) || !obj.fitToContent) return false; - - var jpanel = $jobj(id); - return !jpanel.attr('data-notfit'); - }; - - //this function fit parent panel, also check for parent layer or repeaters - var _fitParentPanel = function (widgetId) { - - var parentLayer = getParentLayer(widgetId); - if(parentLayer) { - if(_updateLayerRectCache(parentLayer)) _fitParentPanel(parentLayer); - return; - } - - // Find parent panel if there is one. - var parentPanelInfo = getParentPanel(widgetId); - if(parentPanelInfo) { - var parentId = parentPanelInfo.parent; - _updateMobileScroll(parentId, parentPanelInfo.stateId, true); - if(_updateFitPanel(parentId, parentPanelInfo.state)) _fitParentPanel(parentId); - return; - } - - // Otherwise, try to get parent repeater - var parentRepeaterId = $ax.getParentRepeaterFromElementId(widgetId); - var repeaterObj = $obj(parentRepeaterId); - if (repeaterObj && widgetId != parentRepeaterId && repeaterObj.repeaterPropMap.fitToContent) { - var itemId = $ax.repeater.getItemIdFromElementId(widgetId); - var containerId = $ax.repeater.createElementId(parentRepeaterId, itemId); - var childrenRect = $ax('#' + containerId).childrenBoundingRect(); - $ax.repeater.setItemSize(parentRepeaterId, itemId, childrenRect.right, childrenRect.bottom); - return; - } - - $ax.adaptive.updateMobileScrollOnBody(); - }; - _dynamicPanelManager.fitParentPanel = _fitParentPanel; - - var _updateMobileScroll = _dynamicPanelManager.updateMobileScroll = function (panelId, stateId, blockResetScroll) { - if (!panelId) return false; - - // Only update scroll if panel is scrollable - if ($ax.dynamicPanelManager.isIdFitToContent(panelId)) return false; - var obj = $obj(panelId); - if (!obj || obj.scrollbars.toLowerCase() == 'none') return false; - - var stateQuery = $jobj(stateId); - $ax.adaptive.removeNiceScroll(stateQuery, blockResetScroll); - - //check if the page is in mobile mode - if(!$ax.adaptive.isDeviceMode() || MOBILE_DEVICE) { - stateQuery.css('cursor', ''); - return false; - } - - var stateContentId = stateId + '_content'; - var childrenRect = $ax('#' + stateContentId).childrenBoundingRect(); - var size = { width: childrenRect.right, height: childrenRect.bottom }; - - var $stateContent = $('#' + stateContentId); - $stateContent.css({ 'height': size.height + 'px', 'width': size.width + 'px' }); - - // Apply niceScroll and update cursor - if (obj.isExpo) { - var headerHeight = obj.headerHeight ? obj.headerHeight : 0; - var footerHeight = obj.footerHeight ? obj.footerHeight : 0; - - $ax.adaptive.addNiceScroll(stateQuery, { emulatetouch: true, bouncescroll: false, grabcursorenabled: false, railmargin: { top: headerHeight, bottom: footerHeight }, scrollbarid: stateId + "-sb" }); - stateQuery.find('.nicescroll-rails').css('margin-top', headerHeight + 'px'); - } else { - $ax.adaptive.addNiceScroll(stateQuery, { emulatetouch: true, horizrailenabled: obj.scrollbars != 'verticalAsNeeded' }, blockResetScroll); - } - - stateQuery.css('cursor', 'url(resources/css/images/touch.cur), auto'); - stateQuery.css('cursor', 'url(resources/css/images/touch.svg) 32 32, auto'); - } - - _dynamicPanelManager.initMobileScroll = function () { - var scrollable = []; - $ax('*').each(function (obj, elementId) { - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - if ($ax.public.fn.IsDynamicPanel(obj.type) && obj.scrollbars != 'None' && obj.scrollbars != 'none' && !$ax.visibility.isElementIdLimboOrInLimboContainer(scriptId)) { - scrollable[scrollable.length] = elementId; - } - }); - for (var i = scrollable.length - 1; i >= 0; i--) { - var panelId = scrollable[i]; - var stateId = $ax.repeater.applySuffixToElementId(panelId, '_state0'); - _updateMobileScroll(panelId, stateId, true); - } - }; - - - _dynamicPanelManager.initialize = function() { - $axure.resize(_handleResize); - $(window).scroll(_handleScroll); - }; - - var percentPanelToLeftCache = []; - var percentPanelsInitialized = false; - var _handleResize = function() { - if(percentPanelsInitialized) { - for(var key in percentPanelToLeftCache) { - //could optimize to only update non-contained panels - _updatePanelPercentWidth(key); - } - } else { - $ax('*').each(function(obj, elementId) { - if(_isPercentWidthPanel(obj)) _updatePanelPercentWidth(elementId); - }); - percentPanelsInitialized = true; - } - _adjustFixedCenter(); - }; - - var _isPercentWidthPanel = _dynamicPanelManager.isPercentWidthPanel = function(obj) { - return obj && $ax.public.fn.IsDynamicPanel(obj.type) && obj.percentWidth; - }; - - _dynamicPanelManager.updatePanelContentPercentWidth = function(elementId) { - // if(_isPercentWidthPanel($obj(elementId))) return; - var stateChildrenQuery = $jobj(elementId).children('.panel_state'); - stateChildrenQuery.children('.panel_state_content').each( - function() { - $(this).children('.ax_dynamic_panel').each( - function() { _updatePanelPercentWidth(this.id); } - ); - } - ); - }; - - _dynamicPanelManager.updatePercentPanelCache = function(query) { - query.each(function(obj, elementId) { - if(_isPercentWidthPanel(obj)) { - if(_updatePercentPanelToLeftCache(obj, elementId, true)) { - _updatePanelPercentWidth(elementId); - } - } - }); - }; - - var _handleScroll = function () { - _adjustFixedCenter(); - }; - - var fixedCenterPanels = []; - var fixedCenterPanelsInitialized = false; - - var _adjustFixedCenter = function () { - - if (!fixedCenterPanelsInitialized) { - $axure(function(diagramObject) { - return diagramObject.fixedHorizontal && diagramObject.fixedHorizontal == 'center' && !diagramObject.percentWidth; - }) - .each(function (diagramObject, elementId) { - fixedCenterPanels.push(elementId); - }); - fixedCenterPanelsInitialized = true; - } - - for (var i = 0; i < fixedCenterPanels.length; i++) { - var elementId = fixedCenterPanels[i]; - var boundingRect = $ax('#' + elementId).offsetBoundingRect(); - var left = boundingRect.left; - - var win = $(window); - var winWidth = win.width(); - var elementQuery = $('#' + elementId); - - if (left >= 0 && winWidth >= boundingRect.width) { - elementQuery.css('left', '50%'); - continue; - } - - var leftMargin = $ax.getNumFromPx(elementQuery.css('margin-left')); - var newLeft = -leftMargin; - elementQuery.css('left', newLeft + 'px'); - } - }; - - _dynamicPanelManager.resetFixedPanel = function(obj, domElement) { - if(obj.fixedHorizontal == 'center') domElement.style.marginLeft = ""; - if(obj.fixedVertical == 'middle') domElement.style.marginTop = ""; - }; - - _dynamicPanelManager.resetAdaptivePercentPanel = function(obj, domElement) { - if(!_isPercentWidthPanel(obj)) return; - - if(obj.fixedHorizontal == 'center') domElement.style.marginLeft = ""; - else if(obj.fixedHorizontal == 'right') domElement.style.width = ""; - }; - - var _updatePercentPanelToLeftCache = function(obj, elementId, overwrite) { - var wasUpdated = false; - var jObj = $jobj(elementId); - var axObj = $ax('#' + elementId); - if(percentPanelToLeftCache[elementId] == undefined || overwrite) { - if (obj.fixedHorizontal == 'center') percentPanelToLeftCache[elementId] = $ax.getNumFromPx(jObj.css('margin-left')); - else if (obj.fixedHorizontal == 'right') percentPanelToLeftCache[elementId] = axObj.width() + $ax.getNumFromPx(jObj.css('right')); - else percentPanelToLeftCache[elementId] = $ax.getNumFromPx(jObj.css('left')); - wasUpdated = true; - } - - if(obj.fixedHorizontal == 'right' && _isIdFitToContent(elementId)) { - //var fitWidth = getContainerSize($ax.visibility.GetPanelState(elementId) + '_content').width; - var containerId = $ax.visibility.GetPanelState(elementId) + '_content'; - var childrenRect = $ax('#' + containerId).childrenBoundingRect(); - var fitWidth = childrenRect.right; - percentPanelToLeftCache[elementId] = fitWidth + $ax.getNumFromPx(jObj.css('right')); - wasUpdated = true; - } - return wasUpdated; - }; - - var _updatePanelPercentWidth = _dynamicPanelManager.updatePanelPercentWidth = function(elementId) { - var obj = $obj(elementId); - if(!_isPercentWidthPanel(obj)) return; - - _updatePercentPanelToLeftCache(obj, elementId, false); - - var width; - var x; - - if(obj.fixedHorizontal) { - x = 0; - width = $(window).width(); - } else { - var parentPanelInfo = getParentPanel(elementId); - if(parentPanelInfo) { - var parentId = parentPanelInfo.parent; - width = $ax('#' + parentId).width(); - var parentObj = $obj(parentId); - if(parentObj.percentWidth) { - var stateId = $ax.repeater.applySuffixToElementId(parentId, '_state' + parentPanelInfo.state); - var stateContentId = stateId + '_content'; - x = -$ax.getNumFromPx($jobj(stateContentId).css('margin-left')); - } else x = 0; - } else { - var parentRepeater = $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(elementId)); - if(parentRepeater) { - var itemId = $ax.repeater.getItemIdFromElementId(elementId); - var itemContainerId = $ax.repeater.createElementId(parentRepeater, itemId); - x = 0; - width = $ax('#' + itemContainerId).width(); - } else { - var $window = $(window); - width = $window.width(); - var bodyLeft = $ax.getNumFromPx($('body').css('left')); - var bodyWidth = $ax.getNumFromPx($('body').css('width')); - var isCenter = $ax.adaptive.getPageStyle().pageAlignment == 'center'; - width = Math.max(width, bodyWidth); - x = isCenter ? -(width - bodyWidth) / 2 - bodyLeft : 0; - } - } - } - - var jObj = $jobj(elementId); - if(obj.fixedHorizontal == 'left') jObj.css('left', x + 'px'); - else if(obj.fixedHorizontal == 'center') { - jObj.css('left', x + 'px'); - jObj.css('margin-left', 0 + 'px'); - } else jObj.css('left', x + 'px'); - - jObj.css('width', width + 'px'); - - $ax.visibility.setResizedSize(elementId, width, $ax('#' + elementId).height()); - - var panelLeft = percentPanelToLeftCache[elementId]; - var stateParent = jObj; - while(stateParent.children()[0].id.indexOf($ax.visibility.CONTAINER_SUFFIX) != -1) stateParent = stateParent.children(); - var stateChildrenQuery = stateParent.children('.panel_state'); - stateChildrenQuery.css('width', width + 'px'); - - if(obj.fixedHorizontal == 'center') - stateChildrenQuery.children('.panel_state_content').css('left', '50%').css('margin-left', panelLeft + 'px'); - else if(obj.fixedHorizontal == 'right') - stateChildrenQuery.children('.panel_state_content').css('left', width - panelLeft + 'px'); - else stateChildrenQuery.children('.panel_state_content').css('margin-left', panelLeft - x + 'px'); - }; - - - _dynamicPanelManager.updateParentsOfNonDefaultFitPanels = function () { - $ax('*').each(function (diagramObject, elementId) { - if(!$ax.public.fn.IsDynamicPanel(diagramObject.type) || !diagramObject.fitToContent) return; - if($ax.visibility.isElementIdLimboOrInLimboContainer(elementId)) return; - - var stateId = $ax.visibility.GetPanelState(elementId); - if(stateId != $ax.repeater.applySuffixToElementId(elementId, '_state0')) _fitParentPanel(elementId); - }); - }; - - _dynamicPanelManager.updateAllLayerSizeCaches = function() { - var fitToContent = []; - var layers = []; - $ax('*').each(function (obj, elementId) { - var isLayer = $ax.public.fn.IsLayer(obj.type); - if(!isLayer) return; - if($ax.visibility.isElementIdLimboOrInLimboContainer(elementId)) return; - layers[layers.length] = elementId; - }); - for(var i = layers.length - 1; i >= 0; i--) { - var layerId = layers[i]; - _updateLayerRectCache(layerId); - } - }; - - //_dynamicPanelManager.updateAllFitPanelsAndLayerSizeCaches = function() { - // var fitToContent = []; - // var layers = []; - // $ax('*').each(function (obj, elementId) { - // var isFitPanel = $ax.public.fn.IsDynamicPanel(obj.type) && obj.fitToContent; - // var isLayer = $ax.public.fn.IsLayer(obj.type); - // if(!isFitPanel && !isLayer) return; - // if($ax.visibility.isElementIdLimboOrInLimboContainer(elementId)) return; - - // if(isFitPanel) { - // fitToContent[fitToContent.length] = elementId; - // } else if(isLayer) { - // layers[layers.length] = elementId; - // } - // }); - // for(var i = fitToContent.length - 1; i >= 0; i--) { - // var panelId = fitToContent[i]; - // var stateCount = $obj(panelId).diagrams.length; - // for(var j = 0; j < stateCount; j++) { - // $ax.dynamicPanelManager.setFitToContentCss(panelId, true); - // _updateFitPanel(panelId, j, true); - // } - // } - // for(var i = layers.length - 1; i >= 0; i--) { - // var layerId = layers[i]; - // _updateLayerSizeCache(layerId); - // } - //}; - - //var _getCachedLayerRect = function (elementId) { - // var element = document.getElementById(elementId); - // var rect = {}; - // rect.width = Number(element.getAttribute('data-width')); - // rect.height = Number(element.getAttribute('data-height')); - // rect.x = Number(element.getAttribute('data-left')); - // rect.y = Number(element.getAttribute('data-top')); - // return rect; - //} - - var _updateLayerRectCache = function (elementId) { - //var oldRect = _getCachedLayerRect(elementId); - - var axObj = $ax('#' + elementId); - var oldRect = axObj.offsetBoundingRect(); - - var childrenRect = axObj.childrenBoundingRect(); - var size = childrenRect.size; - var loc = childrenRect.location; - //var size = axObj.size(); - //var loc = {}; - //loc.x = axObj.locRelativeIgnoreLayer(false); - //loc.y = axObj.locRelativeIgnoreLayer(true); - - var sizeChange = oldRect.width != size.width || oldRect.height != size.height; - var locChange = oldRect.x != loc.x || oldRect.y != loc.y; - if(sizeChange || locChange) { - //var element = document.getElementById(elementId); - if(sizeChange) { - //element.setAttribute('data-width', size.width); - //element.setAttribute('data-height', size.height); - $ax.visibility.setResizedSize(elementId, size.width, size.height); - $ax.event.raiseSyntheticEvent(elementId, 'onResize'); - } - if(locChange) { - //element.setAttribute('data-left', loc.x); - //element.setAttribute('data-top', loc.y); - $ax.visibility.setMovedLocation(elementId, loc.x, loc.y); - $ax.event.raiseSyntheticEvent(elementId, 'onMove'); - } - return true; - } - return false; - } - - _dynamicPanelManager.setFitToContentCss = function(elementId, fitToContent, oldWidth, oldHeight) { - - if($ax.dynamicPanelManager.isIdFitToContent(elementId) == fitToContent) return; - - var panel = $jobj(elementId); - var stateCss; - var scrollbars = $obj(elementId).scrollbars; - - if(fitToContent) { - panel.attr('style', ''); - panel.removeAttr('data-notfit'); - stateCss = {}; - stateCss.position = 'relative'; - if(scrollbars != 'none') { - stateCss.overflow = 'visible'; - stateCss['-webkit-overflow-scrolling'] = 'visible'; - } - if(scrollbars == 'verticalAsNeeded') { - stateCss['overflow-x'] = 'visible'; - stateCss['-ms-overflow-x'] = 'visible'; - } else if(scrollbars == 'horizontalAsNeeded') { - stateCss['overflow-y'] = 'visible'; - stateCss['-ms-overflow-y'] = 'visible'; - } - panel.children().css(stateCss); - } else { - panel.attr('data-notfit', 'true'); - var panelCss = { width: oldWidth, height: oldHeight }; - stateCss = { width: oldWidth, height: oldHeight }; - panelCss.overflow = 'hidden'; - stateCss.position = 'absolute'; - if(scrollbars != 'none') { - stateCss.overflow = 'auto'; - stateCss['-webkit-overflow-scrolling'] = 'touch'; - } - if(scrollbars == 'verticalAsNeeded') { - stateCss['overflow-x'] = 'hidden'; - stateCss['-ms-overflow-x'] = 'hidden'; - } else if(scrollbars == 'horizontalAsNeeded') { - stateCss['overflow-y'] = 'hidden'; - stateCss['-ms-overflow-y'] = 'hidden'; - } - panel.css(panelCss); - panel.children().css(stateCss); - } - }; - - var _getShownStateId = function (id) { - var obj = $obj(id); - if (!obj || !$ax.public.fn.IsDynamicPanel(obj.type)) return id; - - var children = $ax.visibility.applyWidgetContainer(id, true, false, true).children(); - for (var i = 0; i < children.length; i++) { - var child = children[i]; - while ($ax.visibility.isContainer(child.id)) child = $(child).children()[0]; - if (child && child.style && child.style.display != 'none') return child.id; - } - return id; - }; - - var _getShownStateObj = function(id) { return $ax('#' + _getShownStateId(id));} - - _dynamicPanelManager.getShownState = function (id) { return $jobj(_getShownStateId(id)); }; - - var _getClamp = function(id) { - var obj = $obj(id); - if(!obj) return $ax('#' + id); - if ($ax.public.fn.IsDynamicPanel(obj.type)) return _getShownStateObj(id); - return $ax('#' + id); - }; - - var _updateFitPanel = function(panelId, stateIndex) { - if(!panelId) return false; - - // Only fit if fitToContent is true - if(!$ax.dynamicPanelManager.isIdFitToContent(panelId)) return false; - - // Traverse through children to find what size it should be. - var stateId = $ax.repeater.applySuffixToElementId(panelId, '_state' + stateIndex); - - var stateContentId = stateId + '_content'; - var stateQuery = $jobj(stateId); - - //var size = getContainerSize(stateContentId); - var childrenRect = $ax('#' + stateContentId).childrenBoundingRect(); - var size = {width: childrenRect.right, height: childrenRect.bottom}; - - // Skip if size hasn't changed - var oldWidth = stateQuery.width(); - var oldHeight = stateQuery.height(); - if(oldWidth == size.width && oldHeight == size.height) return false; - - var isPercentWidth = $obj(panelId).percentWidth; - if(!isPercentWidth) stateQuery.width(size.width); - stateQuery.height(size.height); - - //updatePercentWidth on all child panels - $jobj(stateContentId).children('.ax_dynamic_panel').each( - function() { _updatePanelPercentWidth(this.id); } - ); - - //do the following only if it is the current state - if(stateId != $ax.visibility.GetPanelState(panelId)) return false; - - //var panelQuery = $jobj(panelId); - //if (!isPercentWidth) panelQuery.attr('data-width', size.width); - //panelQuery.attr('data-height', size.height); - $ax.visibility.setResizedSize(panelId, isPercentWidth ? $ax('#' + panelId).width() : size.width, size.height); - - _adjustFixed(panelId, oldWidth, oldHeight, size.width, size.height); - - $ax.event.raiseSyntheticEvent(panelId, 'onResize'); - $ax.flyoutManager.updateFlyout(panelId); - - return true; - }; - - // widgetId is the one that crawls up masters until it finds a parent panel, targetId is the original widgetId (not the crawling master) - // finds the immediate parent panel and crawls up through masters but not repeaters - var getParentPanel = function(widgetId, path, targetId) { - path = path || $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(widgetId)); - - var obj = $obj(widgetId); - if(obj.parentDynamicPanel) { - path[path.length - 1] = obj.parentDynamicPanel; - var parentId = $ax.getScriptIdFromPath(path); - if(!parentId) return undefined; - parentId = $ax.repeater.getElementId(parentId, widgetId); - var parentObj = $obj(parentId); - var retVal = { parent: parentId }; - for(var i = 0; i < parentObj.diagrams.length; i++) { - var stateId = $ax.repeater.applySuffixToElementId(parentId, '_state' + i); - var stateQuery = $jobj(stateId); - if(stateQuery.find('#' + (targetId || widgetId)).length != 0) { - retVal.state = i; - retVal.stateId = stateId; - break; - } - } - return retVal; - } - - if(path.length == 1) return undefined; - - path.pop(); - var parentMaster = $ax.getScriptIdFromPath(path); - if(!parentMaster) return undefined; - parentMaster = $ax.repeater.getElementId(parentMaster, widgetId); - - //check if the master is in the same repeater as the widgetId widget - var parentMasterItemId = $ax.repeater.getItemIdFromElementId(parentMaster); - var widgetItemId = $ax.repeater.getItemIdFromElementId(widgetId); - if(parentMasterItemId != widgetItemId) return undefined; - - return getParentPanel(parentMaster, path, targetId || widgetId); - }; - - // finds the immediate parent layer and crawls up through masters but not repeaters or panels - var getParentLayer = function (widgetId, path) { - path = path || $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(widgetId)); - - //gets immediate parent layer only - var layerId = $ax.getLayerParentFromElementId(widgetId); - if(layerId) return layerId; - - if(path.length == 1) return undefined; - - path.pop(); - var parentMaster = $ax.getScriptIdFromPath(path); - if(!parentMaster) return undefined; - parentMaster = $ax.repeater.getElementId(parentMaster, widgetId); - - //check if the master is in the same panel as the widgetId widget - var widgetParentPanel = getParentPanel(widgetId); - if(widgetParentPanel) { - var parentMasterParentPanel = getParentPanel(parentMaster); - if(!parentMasterParentPanel || widgetParentPanel.parent != parentMasterParentPanel.parent) return undefined; - } - - //check if the master is in the same repeater as the widgetId widget - var parentMasterItemId = $ax.repeater.getItemIdFromElementId(parentMaster); - var widgetItemId = $ax.repeater.getItemIdFromElementId(widgetId); - if(parentMasterItemId != widgetItemId) return undefined; - - return getParentLayer(parentMaster, path); - }; - - //// TODO: May be a better location for this. Used currently for rdo and panel state containers - //var getContainerSize = function(containerId) { - // var containerQuery = containerId ? $jobj(containerId) : $('#base'); - // var children = containerQuery.children(); - // // Default size - // var size = { width: 0, height: 0 }; - // for(var i = 0; i < children.length; i++) { - // var child = $(children[i]); - // var childId = child.attr('id'); - // //var axChild = $ax('#' + childId).width(); - - // var childObj = $obj(childId); - // if(!childObj) { - // // On the body there are some children that should be ignored, as they are not objects. - // if(!child.hasClass('basiclink') || child.get(0).tagName.toLowerCase() != 'a') continue; - - // // Otherwise it should be a basic link - // var linkChildren = child.children(); - // if(!linkChildren.length) continue; - // child = $(linkChildren[0]); - // childId = child.attr('id'); - // childObj = $obj(childId); - // } - - // // Ignore fixed - // if(!childId || $ax.visibility.limboIds[childId] || !$ax.visibility.IsIdVisible(childId) - // || $ax.public.fn.IsDynamicPanel(childObj.type) && childObj.fixedHorizontal) continue; - - // var boundingRect = $ax.public.fn.getWidgetBoundingRect(childId); - // var position = { left: boundingRect.left, top: boundingRect.top }; - // var width = boundingRect.width; - // var height = boundingRect.height; - - // if($ax.public.fn.IsMaster(childObj.type)) { - // var masterSize = getContainerSize(childId); - // width = masterSize.width; - // height = masterSize.height; - // // } else if($ax.public.fn.IsRepeater(childObj.type)) { - // // var repeaterSize = $ax.repeater.getRepeaterSize(childId); - // // width = repeaterSize.width; - // // height = repeaterSize.height; - - // // if(width == 0 && height == 0) continue; - - // // position.left += childObj.x; - // // position.top += childObj.y; - // } else if ($ax.public.fn.IsDynamicPanel(childObj.type)) { - // if($ax.dynamicPanelManager.isIdFitToContent(childId)) { - // var stateQuery = $jobj($ax.visibility.GetPanelState(childId)); - // width = stateQuery.width(); - // height = stateQuery.height(); - // } - // } - - // size.width = Math.max(size.width, position.left + width); - // size.height = Math.max(size.height, position.top + height); - // } - - // return size; - //}; - //_dynamicPanelManager.getContainerSize = getContainerSize; - - var _adjustFixed = _dynamicPanelManager.adjustFixed = function(panelId, oldWidth, oldHeight, width, height) { - var loc = _getFixedPosition(panelId, oldWidth, oldHeight, width, height); - if(loc) { - $ax.action.addAnimation(panelId, $ax.action.queueTypes.move, function() { - $ax.move.MoveWidget(panelId, loc[0], loc[1], { easing: 'none', duration: 0 }, false, null, true); - }); - } - }; - - var _getFixedPosition = _dynamicPanelManager.getFixedPosition = function(panelId, oldWidth, oldHeight, width, height) { - var panelObj = $obj(panelId); - var x = 0; - var y = 0; - if(panelObj.fixedHorizontal == 'center') { - x = (oldWidth - width) / 2; - } - if(panelObj.fixedVertical == 'middle') { - y = (oldHeight - height) / 2; - } - return x == 0 && y == 0 ? undefined : [x, y]; - }; - - _dynamicPanelManager.getFixedInfo = function(panelId) { - var panelObj = $obj(panelId); - if (!panelObj || !$ax.public.fn.IsDynamicPanel(panelObj.type)) return {}; - var jobj = $jobj(panelId); - if(jobj.css('position') == 'absolute') return {}; - - var info = {}; - var horizontal = panelObj.fixedHorizontal; - if(!horizontal) return info; - - info.fixed = true; - info.horizontal = horizontal; - info.vertical = panelObj.fixedVertical; - - if (info.horizontal == 'left') info.x = $ax.getNumFromPx(jobj.css('left')); - else if (info.horizontal == 'center') info.x = $ax.getNumFromPx(jobj.css('margin-left')); - else if (info.horizontal == 'right') info.x = $ax.getNumFromPx(jobj.css('right')); - - if (info.vertical == 'top') info.y = $ax.getNumFromPx(jobj.css('top')); - else if (info.vertical == 'middle') info.y = $ax.getNumFromPx(jobj.css('margin-top')); - else if (info.vertical == 'bottom') info.y = $ax.getNumFromPx(jobj.css('bottom')); - - return info; - }; - - // Show isn't necessary if this is always done before toggling (which is currently true), but I don't want that - // change (if it happened) to break this. - var _compressToggle = function (id, vert, show, easing, duration) { - var layer = $ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE; - var locProp = vert ? 'top' : 'left'; - var dimProp = vert ? 'height' : 'width'; - - var threshold; - var delta; - - threshold = $ax('#' + id)[locProp](true); - delta = layer ? $ax('#' + id)[dimProp]() : _getShownStateObj(id)[dimProp](); - - if(!show) { - // Need to make threshold bottom/right - threshold += delta; - // Delta is in the opposite direction - delta *= -1; - } - - _compress(id, vert, threshold, delta, easing, duration); - }; - _dynamicPanelManager.compressToggle = _compressToggle; - - // Used when setting state of dynamic panel - var _compressDelta = function(id, oldState, newState, vert, easing, duration) { - var oldQuery = $jobj(oldState); - var newQuery = $jobj(newState); - - var thresholdProp = vert ? 'top' : 'left'; - var thresholdOffset = vert ? 'height' : 'width'; - var threshold = $ax('#' + id)[thresholdProp](true); - threshold += oldQuery[thresholdOffset](); - - var delta = newQuery[thresholdOffset]() - oldQuery[thresholdOffset](); - - var clampOffset = vert ? 'width' : 'height'; - var clampWidth = Math.max(oldQuery[clampOffset](), newQuery[clampOffset]()); - - _compress(id, vert, threshold, delta, easing, duration, clampWidth); - }; - _dynamicPanelManager.compressDelta = _compressDelta; - - var _compress = function (id, vert, threshold, delta, easing, duration, clampWidth) { - // If below, a horizantal clamp, otherwise a vertical clamp - var clamp = { - prop: vert ? 'left' : 'top', - offset: vert ? 'width' : 'height' - }; - - // Get clamp in coords relative to parent. Account for layers farther down - if($ax.getTypeFromElementId(id) == $ax.constants.LAYER_TYPE) { - clamp.start = $ax('#' + id)[clamp.prop](true); - clamp.end = clamp.start + $ax('#' + id)[clamp.offset](); - } else { - var clampLoc = $jobj(id); - if(typeof clampWidth == 'undefined') clampWidth = _getClamp(id)[clamp.offset](); - - clamp.start = $ax.getNumFromPx(clampLoc.css(clamp.prop)); - clamp.end = clamp.start + clampWidth; - } - - // If clamps, threshold, or delta is not a number, can't compress. - if (isNaN(clamp.start) || isNaN(clamp.end) || isNaN(threshold) || isNaN(delta)) return; - - // Update clamp if fixed, to account for body position (only necessary when page centered) - if($jobj(id).css('position') == 'fixed') { - var clampDelta = $('#base').position().left; - clamp.start -= clampDelta; - clamp.end -= clampDelta; - } - - if(!easing) { - easing = 'none'; - duration = 0; - } - var parent = $ax('#' + id).getParents(false, ['item', 'state', 'layer'])[0]; - var obj = parent && $ax.getObjectFromElementId($ax.repeater.removeSuffixFromElementId(parent)); - // Go until you hit a parent item or state, or a layer that is hidden to use as parent. - // Account for layer container positions as you go. - while(obj && $ax.public.fn.IsLayer(obj.type) && $ax.visibility.IsIdVisible(parent)) { - var container = $ax.visibility.applyWidgetContainer(parent, true, true); - // If layer is using container, offset is going to be necessary - if(container.length) { - var offsetX = $ax.getNumFromPx(container.css('left')); - var offsetY = $ax.getNumFromPx(container.css('top')); - var clampProp = clamp.prop == 'left' ? offsetX : offsetY; - var threshProp = clamp.prop == 'left' ? offsetY : offsetX; - threshold += threshProp; - clamp.start += clampProp; - clamp.end += clampProp; - } - - parent = $ax('#' + parent).getParents(false, ['item', 'state', 'layer'])[0]; - obj = parent && $ax.getObjectFromElementId($ax.repeater.removeSuffixFromElementId(parent)); - } - - // Add container mid push causes strange behavior because we take container into account as we go down, but if after we accounted for it, - // a container is added, that container is not accounted for with threshold and clamp values. - var layer = obj && $ax.public.fn.IsLayer(obj.type) && parent; - if(layer) { - // If your parent layer is invisible, you want to be relative to it's container. That is true already if it has a container, - // but if you are just adding one now, then you need to offset your values - var needsOffset = !$jobj(layer + '_container').length && !$ax.visibility.IsIdVisible(layer); - $ax.visibility.pushContainer(layer, false); - if(needsOffset) { - container = $jobj(layer + '_container'); - offsetX = $ax.getNumFromPx(container.css('left')); - offsetY = $ax.getNumFromPx(container.css('top')); - clampProp = clamp.prop == 'left' ? offsetX : offsetY; - threshProp = clamp.prop == 'left' ? offsetY : offsetX; - threshold -= threshProp; - clamp.start -= clampProp; - clamp.end -= clampProp; - } - } - - var scrollParentObj = parent ? $('#' + parent) : undefined; - var parentScrollLeft = parent ? scrollParentObj.scrollLeft() : 0; - var parentScrollTop = parent ? scrollParentObj.scrollTop() : 0; - - // Note: If parent is body, some of these aren't widgets - if(parent && $jobj(parent + '_content').length > 0) parent = parent + '_content'; - if(parent && $jobj(parent + '_container').length > 0) parent = parent + '_container'; - - var windowObj = $(window); - var scrollLeft = windowObj.scrollLeft(); - var scrollTop = windowObj.scrollTop(); - var parentObj = $(parent ? '#' + parent : '#base'); - // hide parent to prevent layout thrashing - parentObj.hide(); - - _compressChildrenHelper(id, parentObj.children(), vert, threshold, delta, clamp, easing, duration); - - parentObj.show(); - // restore scroll if hide/show parent caused it to change - if(0 != parentScrollLeft) scrollParentObj.scrollLeft(parentScrollLeft); - if(0 != parentScrollTop) scrollParentObj.scrollTop(parentScrollTop); - if(windowObj.scrollLeft() != scrollLeft) windowObj.scrollLeft(scrollLeft); - if(windowObj.scrollTop() != scrollTop) windowObj.scrollTop(scrollTop); - - if(layer) $ax.visibility.popContainer(layer, false); - - // Do item push - var itemId = $ax.repeater.getItemIdFromElementId(id); - if(!itemId) return; - - var repeaterId = $ax.getParentRepeaterFromElementId(id); - // Only need to push when parent is an item directly. - if(parent != $ax.repeater.createElementId(repeaterId, itemId)) return; - - // If repeater is fit to content, then don't worry about it, it'll be handled elsewhere - if(!obj.repeaterPropMap.fitToContent) $ax.repeater.pushItems(repeaterId, itemId, delta, vert); - }; - - var _layerMayNeedCompress = function (layerId, vert, threshold, clamp, parentLayer) { - var boundingRect = $ax('#' + layerId).offsetBoundingRect(); - var marker, layerClamp; - - marker = (vert ? boundingRect.top : boundingRect.left) + (vert ? boundingRect.height : boundingRect.width); - layerClamp = clamp.prop == 'left' ? [boundingRect.left] : [boundingRect.top]; - layerClamp[1] = layerClamp[0] + (clamp.offset == 'width' ? boundingRect.width : boundingRect.height); - - if (parentLayer) { - var axParent = $ax('#' + parentLayer); - marker -= Number(axParent[vert ? 'top' : 'left'](true)); - layerClamp[0] -= Number(axParent[clamp.prop](true)); - } - - if (isNaN(marker) || isNaN(layerClamp[0]) || isNaN(layerClamp[1]) || - marker < threshold || layerClamp[1] <= clamp.start || layerClamp[0] >= clamp.end) { - return false; - } - return true; - } - - var _compressChildrenHelper = function (id, children, vert, threshold, delta, clamp, easing, duration, parentLayer) { - var toMove = []; - var allMove = true; - for (var i = 0; i < children.length; i++) { - var child = $(children[i]); - - // Check for basic links - if(child[0] && child[0].tagName == 'A' && child.hasClass('basiclink')) child = child.children(); - var childId = child.attr('id'); - - // TODO: Played with this a lot, went with a safer fix, but I don't like the catch all with !$obj(childId), should handle these cases explicitally. - // ann/ref suffixes should skip without turning off allMove, lightbox should be skipped, and is unclear if allMove should be turned off, I think others including container, inner_container, div, img, and text should not be hit ever. - // Don't move self, and check id to make sure it a widget and not a fixed panel - if(childId == id || !childId || childId[0] != 'u' || !$obj(childId) || $obj(childId).fixedVertical) { - // ann/ref widgets should not stop allMove, they move if their widget does, and that widget will be checked and turn this off if it doesn't move - var suffix = childId && childId.split('_')[1]; - allMove = allMove && (suffix == 'ann' || suffix == 'ref'); - continue; - } - - if ($ax.getTypeFromElementId(childId) == $ax.constants.LAYER_TYPE) { - // containerizing children can cause layout thrashing, if no children will possibly need to be moved based on layer position/size then don't do it - if (!_layerMayNeedCompress(childId, vert, threshold, clamp, parentLayer)) { - allMove = false; - continue; - } - - $ax.visibility.pushContainer(childId, false); - var addSelf; - var container = $ax.visibility.applyWidgetContainer(childId, true, true); - var layerChildren = (container.length ? container : child).children(); - //if(container.length) { - var offsetX = -$ax.getNumFromPx(container.css('left')); - var offsetY = -$ax.getNumFromPx(container.css('top')); - var clampProp = clamp.prop == 'left' ? offsetX : offsetY; - var threshProp = clamp.prop == 'left' ? offsetY : offsetX; - var layerClamp = { prop: clamp.prop, offset: clamp.offset, start: clamp.start + clampProp, end: clamp.end + clampProp }; - addSelf = _compressChildrenHelper(id, layerChildren, vert, threshold + threshProp, delta, layerClamp, easing, duration, childId); - //} else addSelf = _compressChildrenHelper(id, layerChildren, vert, threshold, delta, clamp, easing, duration, childId); - - if(addSelf) toMove.push(childId); - else allMove = false; - $ax.visibility.popContainer(childId, false); - continue; - } - - var numbers = childId.substring(1).split('-'); - if(numbers.length < 1 || isNaN(Number(numbers[0])) || (numbers.length == 2 && isNaN(Number(numbers[1]))) || numbers.length > 2) continue; - - var marker, childClamp; - - var axChild = $ax('#' + childId); - var markerProp = vert ? 'top' : 'left'; - marker = Number(axChild[markerProp](true)); - childClamp = [Number(axChild[clamp.prop](true))]; - - if(parentLayer) { - var axParent = $ax('#' + parentLayer); - marker -= Number(axParent[markerProp](true)); - childClamp[0] -= Number(axParent[clamp.prop](true)); - } - - // Dynamic panels are not reporting correct size sometimes, so pull it from the state. Get shown state just returns the widget if it is not a dynamic panel. - var sizeChild = _getShownStateObj(childId); - childClamp[1] = childClamp[0] + sizeChild[clamp.offset](); - - if(isNaN(marker) || isNaN(childClamp[0]) || isNaN(childClamp[1]) || - marker < threshold || childClamp[1] <= clamp.start || childClamp[0] >= clamp.end) { - allMove = false; - continue; - } - - toMove.push(childId); - } - - if (allMove && parentLayer) { - return true; - } else { - for(var i = 0; i < toMove.length; i++) { - $ax('#' + toMove[i]).moveBy(vert ? 0 : delta, vert ? delta : 0, easing == 'none' ? {} : { duration: duration, easing: easing }); - } - } - return false; - }; - - var _parentHandlesStyles = function(id) { - var parents = $ax('#' + id).getParents(true, ['dynamicPanel', 'layer'])[0]; - if(!parents) return false; - var directParent = true; - for(var i = 0; i < parents.length; i++) { - var parentId = parents[i]; - var parentObj = $obj(parentId); - if(!parentObj.propagate) { - directParent = false; - continue; - } - return { id: parentId, direct: directParent }; - } - return false; - }; - _dynamicPanelManager.parentHandlesStyles = _parentHandlesStyles; - - var _propagateMouseOver = function(id, value) { - propagate(id, true, value); - }; - _dynamicPanelManager.propagateMouseOver = _propagateMouseOver; - - var _propagateMouseDown = function(id, value) { - propagate(id, false, value); - }; - _dynamicPanelManager.propagateMouseDown = _propagateMouseDown; - - var propagate = function(id, hover, value) { - var hoverChildren = function(children) { - if(!children) return; - for(var i = 0; i < children.length; i++) { - var elementId = children[i].id; - var obj = $obj(elementId); - if(obj == null) { - elementId = elementId.split('_')[0]; - obj = $obj(elementId); - } - if(obj == null) continue; - if (($ax.public.fn.IsDynamicPanel(obj.type) || $ax.public.fn.IsLayer(obj.type)) && !obj.propagate) continue; - - if(hover) $ax.style.SetWidgetHover(elementId, value); - else $ax.style.SetWidgetMouseDown(elementId, value); - $ax.annotation.updateLinkLocations(elementId); - - hoverChildren(children[i].children); - } - }; - hoverChildren($ax('#' + id).getChildren(true)[0].children); - }; -}); diff --git a/web/main/static/resources/scripts/axure/sto.js b/web/main/static/resources/scripts/axure/sto.js deleted file mode 100644 index 8cf67aa..0000000 --- a/web/main/static/resources/scripts/axure/sto.js +++ /dev/null @@ -1,241 +0,0 @@ - -$axure.internal(function($ax) { - var funcs = {}; - - var weekday = new Array(7); - weekday[0] = "Sunday"; - weekday[1] = "Monday"; - weekday[2] = "Tuesday"; - weekday[3] = "Wednesday"; - weekday[4] = "Thursday"; - weekday[5] = "Friday"; - weekday[6] = "Saturday"; - - funcs.getDayOfWeek = function() { - return _getDayOfWeek(this.getDay()); - }; - - var _getDayOfWeek = $ax.getDayOfWeek = function(day) { - return weekday[day]; - }; - - var month = new Array(12); - month[0] = "January"; - month[1] = "February"; - month[2] = "March"; - month[3] = "April"; - month[4] = "May"; - month[5] = "June"; - month[6] = "July"; - month[7] = "August"; - month[8] = "September"; - month[9] = "October"; - month[10] = "November"; - month[11] = "December"; - - funcs.getMonthName = function() { - return _getMonthName(this.getMonth()); - }; - - var _getMonthName = $ax.getMonthName = function(monthNum) { - return month[monthNum]; - }; - - funcs.getMonth = function() { - return this.getMonth() + 1; - }; - - funcs.addYears = function(years) { - var retVal = new Date(this.valueOf()); - retVal.setFullYear(this.getFullYear() + Number(years)); - return retVal; - }; - - funcs.addMonths = function(months) { - var retVal = new Date(this.valueOf()); - retVal.setMonth(this.getMonth() + Number(months)); - return retVal; - }; - - funcs.addDays = function(days) { - var retVal = new Date(this.valueOf()); - retVal.setDate(this.getDate() + Number(days)); - return retVal; - }; - - funcs.addHours = function(hours) { - var retVal = new Date(this.valueOf()); - retVal.setHours(this.getHours() + Number(hours)); - return retVal; - }; - - funcs.addMinutes = function(minutes) { - var retVal = new Date(this.valueOf()); - retVal.setMinutes(this.getMinutes() + Number(minutes)); - return retVal; - }; - - funcs.addSeconds = function(seconds) { - var retVal = new Date(this.valueOf()); - retVal.setSeconds(this.getSeconds() + Number(seconds)); - return retVal; - }; - - funcs.addMilliseconds = function(milliseconds) { - var retVal = new Date(this.valueOf()); - retVal.setMilliseconds(this.getMilliseconds() + Number(milliseconds)); - return retVal; - }; - - var _stoHandlers = {}; - - _stoHandlers.literal = function(sto, scope, eventInfo) { - return sto.value; - }; - - //need angle bracket syntax because var is a reserved word - _stoHandlers['var'] = function(sto, scope, eventInfo) { - // Can't us 'A || B' here, because the first value can be false, true, or empty string and still be valid. - var retVal = scope.hasOwnProperty(sto.name) ? scope[sto.name] : $ax.globalVariableProvider.getVariableValue(sto.name, eventInfo); - // Handle desired type here? - - if(retVal && retVal.exprType) { - retVal = $ax.expr.evaluateExpr(retVal, eventInfo); - } - - if((sto.desiredType == 'int' || sto.desiredType == 'float')) { - var num = new Number(retVal); - retVal = isNaN(num.valueOf()) ? retVal : num; - } - - - return retVal; - }; - - //TODO: Perhaps repeaterId can be detirmined at generation, and stored in the sto info. - _stoHandlers.item = function(sto, scope, eventInfo, prop) { - prop = prop || (eventInfo.data ? 'data' : eventInfo.link ? 'url' : eventInfo.image ? 'img' : 'text'); - var id = sto.isTarget || !$ax.repeater.hasData(eventInfo.srcElement, sto.name) ? eventInfo.targetElement : eventInfo.srcElement; - return getData(eventInfo, id, sto.name, prop); - }; - - var getData = function(eventInfo, id, name, prop) { - var repeaterId = $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(id)); - var itemId = $ax.repeater.getItemIdFromElementId(id); - return $ax.repeater.getData(eventInfo, repeaterId, itemId, name, prop); - }; - - _stoHandlers.paren = function(sto, scope, eventInfo) { - return _evaluateSTO(sto.innerSTO, scope, eventInfo); - }; - - _stoHandlers.fCall = function(sto, scope, eventInfo) { - //TODO: [mas] handle required type - var thisObj = _evaluateSTO(sto.thisSTO, scope, eventInfo); - if(sto.thisSTO.desiredType == 'string' && sto.thisSTO.computedType != 'string') thisObj = thisObj.toString(); - - var args = []; - for(var i = 0; i < sto.arguments.length; i++) { - args[i] = _evaluateSTO(sto.arguments[i], scope, eventInfo); - } - var fn = (funcs.hasOwnProperty(sto.func) && funcs[sto.func]) || thisObj[sto.func]; - return fn.apply(thisObj, args); - }; - - _stoHandlers.propCall = function(sto, scope, eventInfo) { - //TODO: [mas] handle required type - if((sto.prop == 'url' || sto.prop == 'img') && sto.thisSTO.sto == 'item') return _stoHandlers.item(sto.thisSTO, scope, eventInfo, sto.prop); - var thisObj = _evaluateSTO(sto.thisSTO, scope, eventInfo); - - // calculate cursor offset for elements that are located relative to their parents - if (sto.thisSTO.name == 'cursor') { - var cursorOffset = $ax.public.fn.getCursorOffset(eventInfo.targetElement); - thisObj = { - x: thisObj.x - cursorOffset.x, - y: thisObj.y - cursorOffset.y, - }; - } - - var prop = thisObj[sto.prop] instanceof Function ? thisObj[sto.prop]() : thisObj[sto.prop]; - return prop; - }; - - var _binOps = {}; - _binOps['+'] = function(left, right) { - if(left instanceof Date) return addDayToDate(left, right); - if(right instanceof Date) return addDayToDate(right, left); - - var num = Number(left) + Number(right); - return isNaN(num) ? (String(left) + String(right)) : num; - }; - _binOps['-'] = function(left, right) { - if(left instanceof Date) return addDayToDate(left, -right); - return left - right; - }; - _binOps['*'] = function(left, right) { return Number(left) * Number(right); }; - _binOps['/'] = function(left, right) { return Number(left) / Number(right); }; - _binOps['%'] = function(left, right) { return Number(left) % Number(right); }; - _binOps['=='] = function(left, right) { return _getBool(left) == _getBool(right); }; - _binOps['!='] = function(left, right) { return _getBool(left) != _getBool(right); }; - _binOps['<'] = function(left, right) { return Number(left) < Number(right); }; - _binOps['<='] = function(left, right) { return Number(left) <= Number(right); }; - _binOps['>'] = function(left, right) { return Number(left) > Number(right); }; - _binOps['>='] = function(left, right) { return Number(left) >= Number(right); }; - _binOps['&&'] = function(left, right) { return _getBool(left) && _getBool(right); }; - _binOps['||'] = function(left, right) { return _getBool(left) || _getBool(right); }; - - // TODO: Move this to generic place to be used. - var addDayToDate = function(date, days) { - var retVal = new Date(date.valueOf()); - retVal.setDate(date.getDate() + days); - return retVal; - }; - - var _unOps = {}; - _unOps['+'] = function(arg) { return +arg; }; - _unOps['-'] = function(arg) { return -arg; }; - _unOps['!'] = function(arg) { return !_getBool(arg); }; - - _stoHandlers.binOp = function(sto, scope, eventInfo) { - var left = _evaluateSTO(sto.leftSTO, scope, eventInfo); - var right = _evaluateSTO(sto.rightSTO, scope, eventInfo); - return _binOps[sto.op](left, right); - }; - - _stoHandlers.unOp = function(sto, scope, eventInfo) { - var input = _evaluateSTO(sto.inputSTO, scope, eventInfo); - return _unOps[sto.op](input); - }; - - var _getBool = function(val) { - var lowerVal = val.toLowerCase ? val.toLowerCase() : val; - return lowerVal == "false" ? false : lowerVal == "true" ? true : val; - }; - $ax.getBool = _getBool; - - var _evaluateSTO = function(sto, scope, eventInfo) { - if(sto.sto == 'error') return undefined; - return _tryEscapeRichText(castSto(_stoHandlers[sto.sto](sto, scope, eventInfo), sto), eventInfo); - }; - $ax.evaluateSTO = _evaluateSTO; - - var castSto = function(val, sto) { - var type = sto.computedType || sto.desiredType; - if(type == 'string') val = String(val); - else if(type == 'date' && !(val instanceof Date)) val = new Date(val); - else if(type == 'int' || type == 'float') val = Number(val); - else if(type == 'bool') val = Boolean(val); - - return val; - }; - - var _tryEscapeRichText = function(text, eventInfo) { - return eventInfo.htmlLiteral ? _escapeRichText(text) : text; - }; - - var _escapeRichText = function(text) { - if(typeof (text) != 'string') return text; - - return text.replace('<', '<'); - }; -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/style.js b/web/main/static/resources/scripts/axure/style.js deleted file mode 100644 index 0d7399a..0000000 --- a/web/main/static/resources/scripts/axure/style.js +++ /dev/null @@ -1,1389 +0,0 @@ -$axure.internal(function($ax) { - var _style = {}; - $ax.style = _style; - - var _disabledWidgets = {}; - var _selectedWidgets = {}; - - // A table to cache the outerHTML of the _rtf elements before the rollover state is applied. - var _originalTextCache = {}; - // A table to exclude the normal style from adaptive overrides - var _shapesWithSetRichText = {}; - - // just a listing of shape ids - var _adaptiveStyledWidgets = {}; - - var _setLinkStyle = function(id, styleName) { - var parentId = $ax.GetParentIdFromLink(id); - var style = _computeAllOverrides(id, parentId, styleName, $ax.adaptive.currentViewId); - - var textId = $ax.GetTextPanelId(parentId); - if(!_originalTextCache[textId]) { - $ax.style.CacheOriginalText(textId); - } - if($.isEmptyObject(style)) return; - - var textCache = _originalTextCache[textId].styleCache; - - _transformTextWithVerticalAlignment(textId, function() { - var cssProps = _getCssStyleProperties(style); - $('#' + id).find('*').addBack().each(function(index, element) { - element.setAttribute('style', textCache[element.id]); - _applyCssProps(element, cssProps); - }); - }); - }; - - var _resetLinkStyle = function(id) { - var textId = $ax.GetTextPanelId($ax.GetParentIdFromLink(id)); - var textCache = _originalTextCache[textId].styleCache; - - _transformTextWithVerticalAlignment(textId, function() { - $('#' + id).find('*').addBack().each(function(index, element) { - element.style.cssText = textCache[element.id]; - }); - }); - if($ax.event.mouseDownObjectId) { - $ax.style.SetWidgetMouseDown($ax.event.mouseDownObjectId, true); - } else if($ax.event.mouseOverObjectId) { - $ax.style.SetWidgetHover($ax.event.mouseOverObjectId, true); - } - }; - - $ax.style.SetLinkHover = function(id) { - _setLinkStyle(id, MOUSE_OVER); - }; - - $ax.style.SetLinkNotHover = function(id) { - _resetLinkStyle(id); - }; - - $ax.style.SetLinkMouseDown = function(id) { - _setLinkStyle(id, MOUSE_DOWN); - }; - - $ax.style.SetLinkNotMouseDown = function(id) { - _resetLinkStyle(id); - var style = _computeAllOverrides(id, $ax.event.mouseOverObjectId, MOUSE_OVER, $ax.adaptive.currentViewId); - - if(!$.isEmptyObject(style)) $ax.style.SetLinkHover(id); - //we dont do anything here because the widget not mouse down has taken over here - }; - - var _widgetHasState = function(id, state) { - if($ax.style.getElementImageOverride(id, state)) return true; - var diagramObject = $ax.getObjectFromElementId(id); - - //var adaptiveIdChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); - var adaptiveIdChain = $ax.style.getViewIdChain($ax.adaptive.currentViewId, id, diagramObject); - - for(var i = 0; i < adaptiveIdChain.length; i++) { - var viewId = adaptiveIdChain[i]; - var adaptiveStyle = diagramObject.adaptiveStyles[viewId]; - if(adaptiveStyle && adaptiveStyle.stateStyles && adaptiveStyle.stateStyles[state]) return true; - } - - if(diagramObject.style.stateStyles) { - var stateStyle = diagramObject.style.stateStyles[state]; - if(!stateStyle) return false; - return !$.isEmptyObject(stateStyle); - } - - return false; - }; - - // Returns what overrides the hover, or false if nothing. - var _hoverOverride = function(id) { - if($ax.style.IsWidgetDisabled(id)) return DISABLED; - if($ax.style.IsWidgetSelected(id)) return SELECTED; - var obj = $ax.getObjectFromElementId(id); - if(!obj.isContained) return false; - var path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(id)); - path[path.length - 1] = obj.parent.id; - var itemId = $ax.repeater.getItemIdFromElementId(id); - return _hoverOverride($ax.getElementIdFromPath(path, { itemNum: itemId })); - }; - - $ax.style.SetWidgetHover = function(id, value) { - var override = _hoverOverride(id); - if(override == DISABLED) return; - if(!_widgetHasState(id, MOUSE_OVER)) return; - - var valToSet = value || _isRolloverOverride(id); - var state = _generateMouseState(id, valToSet ? MOUSE_OVER : NORMAL, override == SELECTED); - _applyImageAndTextJson(id, state); - _updateElementIdImageStyle(id, state); - }; - - var _rolloverOverrides = []; - var _isRolloverOverride = function(id) { - return _rolloverOverrides.indexOf(id) != -1; - }; - - $ax.style.AddRolloverOverride = function(id) { - if(_isRolloverOverride(id)) return; - _rolloverOverrides[_rolloverOverrides.length] = id; - if($ax.event.mouseOverIds.indexOf(id) == -1) $ax.style.SetWidgetHover(id, true); - }; - - $ax.style.RemoveRolloverOverride = function(id) { - var index = _rolloverOverrides.indexOf(id); - if(index == -1) return; - $ax.splice(_rolloverOverrides, index, 1); - if($ax.event.mouseOverIds.indexOf(id) == -1) $ax.style.SetWidgetHover(id, false); - }; - - // function GetWidgetCurrentState(id) { - // if($ax.style.IsWidgetDisabled(id)) return "disabled"; - // if($ax.style.IsWidgetSelected(id)) return "selected"; - // if($ax.event.mouseOverObjectId == id) return "mouseOver"; - // if($ax.event.mouseDownObjectId == id) return "mouseDown"; - - // return "normal"; - // } - - $ax.style.ObjHasMouseDown = function(id) { - var obj = $obj(id); - if($ax.style.getElementImageOverride(id, 'mouseDown') || obj.style && obj.style.stateStyles && obj.style.stateStyles.mouseDown) return true; - - //var chain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); - var chain = $ax.style.getViewIdChain($ax.adaptive.currentViewId, id, obj); - for(var i = 0; i < chain.length; i++) { - var style = obj.adaptiveStyles[chain[i]]; - if(style && style.stateStyles && style.stateStyles.mouseDown) return true; - } - return false; - }; - - $ax.style.SetWidgetMouseDown = function(id, value, checkMouseOver) { - if($ax.style.IsWidgetDisabled(id)) return; - if(!_widgetHasState(id, MOUSE_DOWN)) return; - - //if set to value is true, it's mousedown, if check mouseover is true, - //check if element is currently mouseover and has mouseover state before setting mouseover - if(value) var state = MOUSE_DOWN; - else if(!checkMouseOver || $ax.event.mouseOverIds.indexOf(id) !== -1 && _widgetHasState(id, MOUSE_OVER)) state = MOUSE_OVER; - else state = NORMAL; - - var mouseState = _generateMouseState(id, state, $ax.style.IsWidgetSelected(id)); - _applyImageAndTextJson(id, mouseState); - _updateElementIdImageStyle(id, mouseState); - }; - - var _generateMouseState = function(id, mouseState, selected) { - - var isSelectedFocused = function (state) { - if(!_widgetHasState(id, FOCUSED)) return state; - - var jObj = $('#' + id); - if(state == SELECTED) return (jObj.hasClass(FOCUSED)) ? SELECTED_FOCUSED : state; - else return (jObj.hasClass(FOCUSED) || jObj.hasClass(SELECTED_FOCUSED)) ? FOCUSED : state; - } - - if (selected) { - if (_style.getElementImageOverride(id, SELECTED)) return isSelectedFocused(SELECTED); - - var obj = $obj(id); - //var viewChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId); - var viewChain = $ax.style.getViewIdChain($ax.adaptive.currentViewId, id, obj); - viewChain[viewChain.length] = ''; - if($ax.IsDynamicPanel(obj.type) || $ax.IsLayer(obj.type)) return isSelectedFocused(SELECTED); - - var any = function(dict) { - for(var key in dict) return true; - return false; - }; - - for(var i = 0; i < viewChain.length; i++) { - var viewId = viewChain[i]; - // Need to check seperately for images. - var scriptId = $ax.repeater.getScriptIdFromElementId(id); - if(obj.adaptiveStyles && obj.adaptiveStyles[viewId] && any(obj.adaptiveStyles[viewId]) - || obj.images && (obj.images[scriptId + '~selected~' + viewId] || obj.images['selected~' + viewId])) return isSelectedFocused(SELECTED); - } - var selectedStyle = obj.style && obj.style.stateStyles && obj.style.stateStyles.selected; - if(selectedStyle && any(selectedStyle)) return isSelectedFocused(SELECTED); - } - - // Not using selected - return isSelectedFocused(mouseState); - }; - - $ax.style.SetWidgetFocused = function (id, value) { - if (_isWidgetDisabled(id)) return; - if (!_widgetHasState(id, FOCUSED)) return; - - if (value) var state = $ax.style.IsWidgetSelected(id) ? SELECTED_FOCUSED : FOCUSED; - else state = $ax.style.IsWidgetSelected(id) ? SELECTED : NORMAL; - - _applyImageAndTextJson(id, state); - _updateElementIdImageStyle(id, state); - } - - $ax.style.SetWidgetSelected = function(id, value, alwaysApply) { - if(_isWidgetDisabled(id)) return; - //NOTE: not firing select events if state didn't change - var raiseSelectedEvents = $ax.style.IsWidgetSelected(id) != value; - - if(value) { - var group = $('#' + id).attr('selectiongroup'); - if(group) { - $("[selectiongroup='" + group + "']").each(function() { - var otherId = this.id; - if(otherId == id) return; - if ($ax.visibility.isScriptIdLimbo($ax.repeater.getScriptIdFromElementId(otherId))) return; - $ax.style.SetWidgetSelected(otherId, false, alwaysApply); - }); - } - } - var obj = $obj(id); - if(obj) { - var actionId = id; - if ($ax.public.fn.IsDynamicPanel(obj.type) || $ax.public.fn.IsLayer(obj.type)) { - if(!value) $jobj(id).removeClass('selected'); - var children = $axure('#' + id).getChildren()[0].children; - var skipIds = new Set(); - for(var i = 0; i < children.length; i++) { - var childId = children[i]; - // only set one member of selection group in children selected since subsequent calls - // will unselect the previous one anyway - if(value) { - if(skipIds.has(childId)) continue; - var group = $('#' + childId).attr('selectiongroup'); - if(group) for (var item of $("[selectiongroup='" + group + "']")) skipIds.add(item.id); - } - // Special case for trees - var childObj = $jobj(childId); - if(childObj.hasClass('treeroot')) { - var treenodes = childObj.find('.treenode'); - for(var j = 0; j < treenodes.length; j++) { - $axure('#' + treenodes[j].id).selected(value); - } - } else $axure('#' + childId).selected(value); - } - } else { - var widgetHasSelectedState = _widgetHasState(id, SELECTED); - while(obj.isContained && !widgetHasSelectedState) obj = obj.parent; - var itemId = $ax.repeater.getItemIdFromElementId(id); - var path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(id)); - path[path.length - 1] = obj.id; - actionId = $ax.getElementIdFromPath(path, { itemNum: itemId }); - if(alwaysApply || widgetHasSelectedState) { - var state = _generateSelectedState(actionId, value); - _applyImageAndTextJson(actionId, state); - _updateElementIdImageStyle(actionId, state); - } - //added actionId and this hacky logic because we set style state on child, but interaction on parent - //then the id saved in _selectedWidgets would be depended on widgetHasSelectedState... more see case 1818143 - while(obj.isContained && !$ax.getObjectFromElementId(id).interactionMap) obj = obj.parent; - path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(id)); - path[path.length - 1] = obj.id; - actionId = $ax.getElementIdFromPath(path, { itemNum: itemId }); - } - } - - // ApplyImageAndTextJson(id, value ? 'selected' : 'normal'); - _selectedWidgets[id] = value; - if(raiseSelectedEvents) $ax.event.raiseSelectedEvents(actionId, value); - }; - - var _generateSelectedState = function(id, selected) { - var mouseState = $ax.event.mouseDownObjectId == id ? MOUSE_DOWN : $.inArray(id, $ax.event.mouseOverIds) != -1 ? MOUSE_OVER : NORMAL; - //var mouseState = $ax.event.mouseDownObjectId == id ? MOUSE_DOWN : $ax.event.mouseOverIds.indexOf(id) != -1 ? MOUSE_OVER : NORMAL; - return _generateMouseState(id, mouseState, selected); - }; - - $ax.style.IsWidgetSelected = function(id) { - return Boolean(_selectedWidgets[id]) || $('#'+id).hasClass('selected'); - }; - - $ax.style.SetWidgetEnabled = function(id, value) { - _disabledWidgets[id] = !value; - $('#' + id).find('a').css('cursor', value ? 'pointer' : 'default'); - - if(!_widgetHasState(id, DISABLED)) return; - if(!value) { - _applyImageAndTextJson(id, DISABLED); - _updateElementIdImageStyle(id, DISABLED); - } else $ax.style.SetWidgetSelected(id, $ax.style.IsWidgetSelected(id), true); - }; - - $ax.style.SetWidgetPlaceholder = function(id, active, text, password) { - var inputId = $ax.repeater.applySuffixToElementId(id, '_input'); - - // Right now this is the only style on the widget. If other styles (ex. Rollover), are allowed - // on TextBox/TextArea, or Placeholder is applied to more widgets, this may need to do more. - var obj = $jobj(inputId); - - var height = document.getElementById(inputId).style['height']; - var width = document.getElementById(inputId).style['width']; - obj.attr('style', ''); - //removing all styles, but now we can change the size, so we should add them back - //this is more like a quick hack - if (height) obj.css('height', height); - if (width) obj.css('width', width); - - if(!active) { - try { //ie8 and below error - if(password) document.getElementById(inputId).type = 'password'; - } catch(e) { } - } else { - var element = $('#' + inputId)[0]; - var style = _computeAllOverrides(id, undefined, HINT, $ax.adaptive.currentViewId); - var styleProperties = _getCssStyleProperties(style); - - //moved this out of GetCssStyleProperties for now because it was breaking un/rollovers with gradient fills - //if(style.fill) styleProperties.allProps.backgroundColor = _getColorFromFill(style.fill); - - _applyCssProps(element, styleProperties, true); - try { //ie8 and below error - if(password && text) document.getElementById(inputId).type = 'text'; - } catch(e) { } - } - obj.val(text); - }; - - var _isWidgetDisabled = $ax.style.IsWidgetDisabled = function(id) { - return Boolean(_disabledWidgets[id]); - }; - - var _elementIdsToImageOverrides = {}; - $ax.style.mapElementIdToImageOverrides = function (elementId, override) { - for(var key in override) _addImageOverride(elementId, key, override[key]); - }; - - var _addImageOverride = function (elementId, state, val) { - if (!_elementIdsToImageOverrides[elementId]) _elementIdsToImageOverrides[elementId] = {}; - _elementIdsToImageOverrides[elementId][state] = val; - } - - $ax.style.deleteElementIdToImageOverride = function(elementId) { - delete _elementIdsToImageOverrides[elementId]; - }; - - $ax.style.getElementImageOverride = function(elementId, state) { - var url = _elementIdsToImageOverrides[elementId] && _elementIdsToImageOverrides[elementId][state]; - return url; - }; - - $ax.style.elementHasAnyImageOverride = function(elementId) { - return Boolean(_elementIdsToImageOverrides[elementId]); - }; - - var NORMAL = 'normal'; - var MOUSE_OVER = 'mouseOver'; - var MOUSE_DOWN = 'mouseDown'; - var SELECTED = 'selected'; - var DISABLED = 'disabled'; - var HINT = 'hint'; - var FOCUSED = 'focused'; - var SELECTED_FOCUSED = 'selectedFocused'; - const SELECTED_DISABLED = 'selectedDisabled'; - $ax.constants.SELECTED_DISABLED = SELECTED_DISABLED; - var ALL_STATES = [MOUSE_OVER, MOUSE_DOWN, SELECTED, FOCUSED, SELECTED_FOCUSED, DISABLED]; - - var _generateState = _style.generateState = function(id) { - return $ax.placeholderManager.isActive(id) ? HINT : _style.IsWidgetDisabled(id) ? DISABLED : _generateSelectedState(id, _style.IsWidgetSelected(id)); - }; - - var _progressState = _style.progessState = function(state) { - if(state == NORMAL) return false; - if(state == MOUSE_DOWN) return MOUSE_OVER; - return NORMAL; - }; - - var _unprogressState = function(state, goal) { - state = state || NORMAL; - if(state == goal || state == SELECTED_FOCUSED) return undefined; - if(state == NORMAL && goal == MOUSE_DOWN) return MOUSE_OVER; - if(state == NORMAL && goal == SELECTED_FOCUSED) return SELECTED; - if(state == SELECTED && goal == SELECTED_FOCUSED) return FOCUSED; - return goal; - }; - - var _updateElementIdImageStyle = _style.updateElementIdImageStyle = function(elementId, state) { - if(!_style.elementHasAnyImageOverride(elementId)) return; - - if(!state) state = _generateState(elementId); - - var style = _computeFullStyle(elementId, state, $ax.adaptive.currentViewId); - - var query = $jobj($ax.repeater.applySuffixToElementId(elementId, '_img')); - style.size.width = query.width(); - style.size.height = query.height(); - var borderId = $ax.repeater.applySuffixToElementId(elementId, '_border'); - var borderQuery = $jobj(borderId); - if(!borderQuery.length) { - borderQuery = $('
    '); - borderQuery.attr('id', borderId); - query.after(borderQuery); - } - - borderQuery.attr('style', ''); - //borderQuery.css('position', 'absolute'); - query.attr('style', ''); - - var borderQueryCss = { 'position': 'absolute' }; - var queryCss = {} - - var borderWidth = Number(style.borderWidth); - var hasBorderWidth = borderWidth > 0; - if(hasBorderWidth) { - //borderQuery.css('border-style', 'solid'); - //borderQuery.css('border-width', borderWidth + 'px'); // If images start being able to turn off borders on specific sides, need to update this. - //borderQuery.css('width', style.size.width - borderWidth * 2); - //borderQuery.css('height', style.size.height - borderWidth * 2); - //borderQuery.css({ - // 'border-style': 'solid', - // 'border-width': borderWidth + 'px', - // 'width': style.size.width - borderWidth * 2, - // 'height': style.size.height - borderWidth * 2 - //}); - borderQueryCss['border-style'] = 'solid'; - borderQueryCss['border-width'] = borderWidth + 'px'; // If images start being able to turn off borders on specific sides, need to update this. - borderQueryCss['width'] = style.size.width - borderWidth * 2; - borderQueryCss['height'] = style.size.height - borderWidth * 2; - } - - var linePattern = style.linePattern; - if(hasBorderWidth && linePattern) borderQueryCss['border-style'] = linePattern; - - var borderFill = style.borderFill; - if(hasBorderWidth && borderFill) { - var color = borderFill.fillType == 'solid' ? borderFill.color : - borderFill.fillType == 'linearGradient' ? borderFill.colors[0].color : 0; - - var alpha = Math.floor(color / 256 / 256 / 256); - color -= alpha * 256 * 256 * 256; - alpha = alpha / 255; - - var red = Math.floor(color / 256 / 256); - color -= red * 256 * 256; - var green = Math.floor(color / 256); - var blue = color - green * 256; - - borderQueryCss['border-color'] = _rgbaToFunc(red, green, blue, alpha); - } - - var cornerRadiusTopLeft = style.cornerRadius; - if(cornerRadiusTopLeft) { - queryCss['border-radius'] = cornerRadiusTopLeft + 'px'; - borderQueryCss['border-radius'] = cornerRadiusTopLeft + 'px'; - } - - var outerShadow = style.outerShadow; - if(outerShadow && outerShadow.on) { - var arg = ''; - arg += outerShadow.offsetX + 'px' + ' ' + outerShadow.offsetY + 'px' + ' '; - var rgba = outerShadow.color; - arg += outerShadow.blurRadius + 'px' + ' 0px ' + _rgbaToFunc(rgba.r, rgba.g, rgba.b, rgba.a); - //query.css('-moz-box-shadow', arg); - //query.css('-wibkit-box-shadow', arg); - //query.css('box-shadow', arg); - //query.css('left', '0px'); - //query.css('top', '0px'); - //query.css({ - // '-moz-box-shadow': arg, - // '-webkit-box-shadow': arg, - // 'box-shadow': arg, - // 'left': '0px', - // 'top': '0px' - //}); - queryCss['-moz-box-shadow'] = arg; - queryCss['-wibkit-box-shadow'] = arg; - queryCss['box-shadow'] = arg; - queryCss['left'] = '0px'; - queryCss['top'] = '0px'; - } - - queryCss['width'] = style.size.width; - queryCss['height'] = style.size.height; - - borderQuery.css(borderQueryCss); - query.css(queryCss); - - //query.css({ width: style.size.width, height: style.size.height }); - }; - - var _rgbaToFunc = function(red, green, blue, alpha) { - return 'rgba(' + red + ',' + green + ',' + blue + ',' + alpha + ')'; - }; - - var _applyImageAndTextJson = function(id, event) { - var textId = $ax.GetTextPanelId(id); - if(textId) _resetTextJson(id, textId); - - // This should never be the case - //if(event != '') { - var imgQuery = $jobj($ax.GetImageIdFromShape(id)); - var e = imgQuery.data('events'); - if(e && e[event]) imgQuery.trigger(event); - - var imageUrl = $ax.adaptive.getImageForStateAndView(id, event); - if(imageUrl) _applyImage(id, imageUrl, event); - - var style = _computeAllOverrides(id, undefined, event, $ax.adaptive.currentViewId); - if(!$.isEmptyObject(style) && textId) _applyTextStyle(textId, style); - - _updateStateClasses( - [ - id, - $ax.repeater.applySuffixToElementId(id, '_div'), - $ax.repeater.applySuffixToElementId(id, '_input') - ], event, true - ); - }; - - let _updateStateClasses = function(ids, event, addMouseOverOnMouseDown) { - for(let i = 0; i < ids.length; i++) { - _updateStateClassesHelper(ids[i], event, addMouseOverOnMouseDown); - } - }; - - let _updateStateClassesHelper = function(id, event, addMouseOverOnMouseDown) { - let jobj = $jobj(id); - - //if(jobj[0] && jobj[0].hasAttribute('widgetwidth')) { - // for (var x = 0; x < jobj[0].children.length; x++) { - // var childId = jobj[0].children[x].id; - // if (childId.indexOf('p') < 0) continue; - - // _updateStateClasses(childId, event) ; - // } - //} else { - - if(event == DISABLED || event == SELECTED) { - let diagramObject = $ax.getObjectFromElementId(id); - if(diagramObject && $ax.public.fn.IsSelectionButton(diagramObject.type)) { - var addSelected = event == DISABLED && jobj.hasClass(SELECTED); - var addDisabled = event == SELECTED && jobj.hasClass(DISABLED); - } - } - for (let i = 0; i < ALL_STATES.length; i++) jobj.removeClass(ALL_STATES[i]); - - if(addMouseOverOnMouseDown && event == MOUSE_DOWN) jobj.addClass(MOUSE_OVER); - if(addSelected) jobj.addClass(SELECTED); - if(addDisabled) jobj.addClass(DISABLED); - if(event != NORMAL) jobj.addClass(event); - //} - }; - - /* ------------------- - - here's the algorithm in a nutshell: - [DOWN] -- refers to navigation down the view inheritance heirarchy (default to most specific) - [UP] -- navigate up the heirarchy - - ComputeAllOverrides (object): - All view styles [DOWN] - If hyperlink - - DO ComputeStateStyle for parent object - - if (MouseOver || MouseDown) - - linkMouseOver Style - - if (MouseDown) - - linkMouseDown style - - ComputeStateStyleForViewChain (parent, STATE) - - if (MouseDown) DO ComputeStateStyleForViewChain for object, mouseOver - DO ComputeStateStyleForViewChain for object, style - - - ComputeStateStyleForViewChain (object, STATE) - FIRST STATE state style [UP] the chain OR default object STATE style - - ------------------- */ - - var FONT_PROPS = { - 'typeface': true, - 'fontName': true, - 'fontWeight': true, - 'fontStyle': true, - 'fontStretch': true, - 'fontSize': true, - 'underline': true, - 'foreGroundFill': true, - 'horizontalAlignment': true, - 'letterCase': true, - 'strikethrough': true - }; - - var _getViewIdChain = $ax.style.getViewIdChain = function(currentViewId, id, diagramObject) { - var viewIdChain; - if (diagramObject.owner.type != 'Axure:Master') { - viewIdChain = $ax.adaptive.getAdaptiveIdChain(currentViewId); - } else { - //set viewIdChain to the chain from the parent RDO - var parentRdoId = $ax('#' + id).getParents(true, ['rdo'])[0][0]; - var rdoState = $ax.style.generateState(parentRdoId); - var rdoStyle = $ax.style.computeFullStyle(parentRdoId, rdoState, currentViewId); - var viewOverride = rdoStyle.viewOverride; - viewIdChain = $ax.adaptive.getMasterAdaptiveIdChain(diagramObject.owner.packageId, viewOverride); - } - return viewIdChain; - } - - var _computeAllOverrides = $ax.style.computeAllOverrides = function(id, parentId, state, currentViewId) { - var computedStyle = {}; - if(parentId) computedStyle = _computeAllOverrides(parentId, null, state, currentViewId); - - var diagramObject = $ax.getObjectFromElementId(id); - - var viewIdChain = _getViewIdChain(currentViewId, id, diagramObject); - var excludeFont = _shapesWithSetRichText[id]; - for(var i = 0; i < viewIdChain.length; i++) { - var viewId = viewIdChain[i]; - var style = diagramObject.adaptiveStyles[viewId]; - if(style) { - // we want to exclude the normal font style for shapes where the rich text has been set with an interaction - // so we copy the style so we don't modify the original, then delete all the font props. - if(excludeFont) { - style = $ax.deepCopy(style); - for(var prop in FONT_PROPS) delete style[prop]; - } - - if(style) { - var customStyle = style.baseStyle && $ax.document.stylesheet.stylesById[style.baseStyle]; - //make sure not to extend the customStyle this can mutate it for future use - $.extend(computedStyle, customStyle); - } - $.extend(computedStyle, style); - } - } - - var currState = NORMAL; - while(currState) { - $.extend(computedStyle, _computeStateStyleForViewChain(diagramObject, currState, viewIdChain, true)); - currState = _unprogressState(currState, state); - } - - return _removeUnsupportedProperties(computedStyle, diagramObject); - }; - - var _computeStateStyleForViewChain = function(diagramObject, state, viewIdChain, excludeNormal) { - var styleObject = diagramObject; - while(styleObject.isContained) styleObject = styleObject.parent; - - var adaptiveStyles = styleObject.adaptiveStyles; - - for(var i = viewIdChain.length - 1; i >= 0; i--) { - var viewId = viewIdChain[i]; - var viewStyle = adaptiveStyles[viewId]; - var stateStyle = viewStyle && _getFullStateStyle(viewStyle, state, excludeNormal); - if (stateStyle) return $.extend({}, stateStyle); - else if (viewStyle && viewStyle.stateStyles) return {}; //stateStyles are overriden but states could be null - } - - // we dont want to actually include the object style because those are not overrides, hence the true for "excludeNormal" and not passing the val through - var stateStyleFromDefault = _getFullStateStyle(styleObject.style, state, true); - return $.extend({}, stateStyleFromDefault); - }; - - // returns the full effective style for an object in a state state and view - var _computeFullStyle = $ax.style.computeFullStyle = function(id, state, currentViewId) { - var obj = $obj(id); - var overrides = _computeAllOverrides(id, undefined, state, currentViewId); - // todo: account for image box - var objStyle = obj.style; - var customStyle = objStyle.baseStyle && $ax.document.stylesheet.stylesById[objStyle.baseStyle]; - var returnVal = $.extend({}, $ax.document.stylesheet.defaultStyle, customStyle, objStyle, overrides); - return _removeUnsupportedProperties(returnVal, obj); - }; - - var _removeUnsupportedProperties = function(style, object) { - // for now all we need to do is remove padding from checkboxes and radio buttons - if ($ax.public.fn.IsRadioButton(object.type) || $ax.public.fn.IsCheckBox(object.type)) { - style.paddingTop = 0; - style.paddingLeft = 0; - style.paddingRight = 0; - style.paddingBottom = 0; - } - if ($ax.public.fn.IsTextBox(object.type) || $ax.public.fn.IsTextArea(object.type) || $ax.public.fn.IsButton(object.type) - || $ax.public.fn.IsListBox(object.type) || $ax.public.fn.IsComboBox(object.type)) { - if (object.images && style.fill) delete style['fill']; - } - - return style; - }; - - var _getFullStateStyle = function(style, state, excludeNormal) { - //'normal' is needed because now DiagramObjects get their image from the Style and unapplying a rollover needs the image - var stateStyle = state == 'normal' && !excludeNormal ? style : style && style.stateStyles && style.stateStyles[state]; - if(stateStyle) { - var customStyle = stateStyle.baseStyle && $ax.document.stylesheet.stylesById[stateStyle.baseStyle]; - //make sure not to extend the customStyle this can mutate it for future use - return $.extend({}, customStyle, stateStyle); - } - return undefined; - }; - - // commented this out for now... we actually will probably need it for ie - var _applyOpacityFromStyle = $ax.style.applyOpacityFromStyle = function(id, style) { - return; - var opacity = style.opacity || ''; - $jobj(id).children().css('opacity', opacity); - }; - - var _initialize = function() { - //$ax.style.initializeObjectTextAlignment($ax('*')); - }; - $ax.style.initialize = _initialize; - - //var _initTextAlignment = function(elementId) { - // var textId = $ax.GetTextPanelId(elementId); - // if(textId) { - // _storeIdToAlignProps(textId); - // // now handle vertical alignment - // if(_getObjVisible(textId)) { - // //_setTextAlignment(textId, _idToAlignProps[textId], false); - // _setTextAlignment(textId); - // } - // } - //}; - - //$ax.style.initializeObjectTextAlignment = function(query) { - // query.filter(function(diagramObject) { - // return $ax.public.fn.IsVector(diagramObject.type) || $ax.public.fn.IsImageBox(diagramObject.type); - // }).each(function(diagramObject, elementId) { - // if($jobj(elementId).length == 0) return; - // _initTextAlignment(elementId); - // }); - //}; - - //$ax.style.initializeObjectTextAlignment = function (query) { - // var textIds = []; - // query.filter(function(diagramObject) { - // return $ax.public.fn.IsVector(diagramObject.type) || $ax.public.fn.IsImageBox(diagramObject.type); - // }).each(function(diagramObject, elementId) { - // if($jobj(elementId).length == 0) return; - // var textId = $ax.GetTextPanelId(elementId); - // if(textId) { - // _storeIdToAlignProps(textId); - // textIds.push(textId); - // } - // }); - - // $ax.style.setTextAlignment(textIds); - //}; - - //var _getPadding = $ax.style.getPadding = function (textId) { - // var shapeId = $ax.GetShapeIdFromText(textId); - // var shapeObj = $obj(shapeId); - // var state = _generateState(shapeId); - - // var style = _computeFullStyle(shapeId, state, $ax.adaptive.currentViewId); - // var vAlign = style.verticalAlignment || 'middle'; - - // var paddingLeft = Number(style.paddingLeft) || 0; - // paddingLeft += (Number(shapeObj && shapeObj.extraLeft) || 0); - // var paddingTop = style.paddingTop || 0; - // var paddingRight = style.paddingRight || 0; - // var paddingBottom = style.paddingBottom || 0; - // return { vAlign: vAlign, paddingLeft: paddingLeft, paddingTop: paddingTop, paddingRight: paddingRight, paddingBottom: paddingBottom }; - //} - - //var _storeIdToAlignProps = function(textId) { - // _idToAlignProps[textId] = _getPadding(textId); - //}; - - var _applyImage = $ax.style.applyImage = function (id, imgUrl, state) { - var object = $obj(id); - if (object.generateCompound) { - for (var i = 0; i < object.compoundChildren.length; i++) { - var componentId = object.compoundChildren[i]; - var childId = $ax.public.fn.getComponentId(id, componentId); - var childImgQuery = $jobj(childId + '_img'); - childImgQuery.attr('src', imgUrl[componentId]); - - _updateStateClasses( - [ - childId + '_img', - childId - ], state, false - ); - } - } else { - var imgQuery = $jobj($ax.GetImageIdFromShape(id)); - //it is hard to tell if setting the image or the class first causing less flashing when adding shadows. - imgQuery.attr('src', imgUrl); - - _updateStateClasses( - [ - id, - $ax.GetImageIdFromShape(id) - ], state, false - ); - if (imgQuery.parents('a.basiclink').length > 0) imgQuery.css('border', 'none'); - } - - }; - - $ax.public.fn.getComponentId = function (id, componentId) { - var idParts = id.split('-'); - idParts[0] = idParts[0] + componentId; - return idParts.join('-'); - } - - var _resetTextJson = function(id, textid) { - // reset the opacity - $jobj(id).children().css('opacity', ''); - - var cacheObject = _originalTextCache[textid]; - if(cacheObject) { - _transformTextWithVerticalAlignment(textid, function() { - var styleCache = cacheObject.styleCache; - var textQuery = $('#' + textid); - textQuery.find('*').each(function(index, element) { - element.style.cssText = styleCache[element.id]; - }); - }); - } - }; - - // Preserves the alingment for the element textid after executing transformFn - - //var _getRtfElementHeight = function(rtfElement) { - // if(rtfElement.innerHTML == '') rtfElement.innerHTML = ' '; - - // // To handle render text as image - // //var images = $(rtfElement).children('img'); - // //if(images.length) return images.height(); - // return rtfElement.offsetHeight; - //}; - - // why microsoft decided to default to round to even is beyond me... - //var _roundToEven = function(number) { - // var numString = number.toString(); - // var parts = numString.split('.'); - // if(parts.length == 1) return number; - // if(parts[1].length == 1 && parts[1] == '5') { - // var wholePart = Number(parts[0]); - // return wholePart % 2 == 0 ? wholePart : wholePart + 1; - // } else return Math.round(number); - //}; - - //var _suspendTextAlignment = 0; - //var _suspendedTextIds = []; - //$ax.style.startSuspendTextAlignment = function() { - // _suspendTextAlignment++; - //} - //$ax.style.resumeSuspendTextAlignment = function () { - // _suspendTextAlignment--; - // if(_suspendTextAlignment == 0) $ax.style.setTextAlignment(_suspendedTextIds); - //} - - var _transformTextWithVerticalAlignment = $ax.style.transformTextWithVerticalAlignment = function(textId, transformFn) { - if(!_originalTextCache[textId]) { - $ax.style.CacheOriginalText(textId); - } - - var rtfElement = window.document.getElementById(textId); - if(!rtfElement) return; - - transformFn(); - - //_storeIdToAlignProps(textId); - - //if (_suspendTextAlignment) { - // _suspendedTextIds.push(textId); - // return; - //} - - //$ax.style.setTextAlignment([textId]); - }; - - // this is for vertical alignments set on hidden objects - //var _idToAlignProps = {}; - - //$ax.style.updateTextAlignmentForVisibility = function (textId) { - // var textObj = $jobj(textId); - // // must check if parent id exists. Doesn't exist for text objs in check boxes, and potentially elsewhere. - // var parentId = textObj.parent().attr('id'); - // if (parentId && $ax.visibility.isContainer(parentId)) return; - - // //var alignProps = _idToAlignProps[textId]; - // //if(!alignProps || !_getObjVisible(textId)) return; - // //if (!alignProps) return; - - // //_setTextAlignment(textId, alignProps); - // _setTextAlignment(textId); - //}; - - var _getObjVisible = _style.getObjVisible = function (id) { - var element = document.getElementById(id); - return element && (element.offsetWidth || element.offsetHeight); - }; - - //$ax.style.setTextAlignment = function (textIds) { - - // var getTextAlignDim = function(textId, alignProps) { - // var dim = {}; - // var vAlign = alignProps.vAlign; - // var paddingTop = Number(alignProps.paddingTop); - // var paddingBottom = Number(alignProps.paddingBottom); - // var paddingLeft = Number(alignProps.paddingLeft); - // var paddingRight = Number(alignProps.paddingRight); - - // var topParam = 0.0; - // var bottomParam = 1.0; - // var leftParam = 0.0; - // var rightParam = 1.0; - - // var textObj = $jobj(textId); - // var textObjParent = textObj.offsetParent(); - // var parentId = textObjParent.attr('id'); - // if(!parentId) { - // // Only case should be for radio/checkbox that get the label now because it must be absolute positioned for animate (offset parent ignored it before) - // textObjParent = textObjParent.parent(); - // parentId = textObjParent.attr('id'); - // } - - // parentId = $ax.visibility.getWidgetFromContainer(textObjParent.attr('id')); - // textObjParent = $jobj(parentId); - // var parentObj = $obj(parentId); - // if(parentObj['bottomTextPadding']) bottomParam = parentObj['bottomTextPadding']; - // if(parentObj['topTextPadding']) topParam = parentObj['topTextPadding']; - // if(parentObj['leftTextPadding']) leftParam = parentObj['leftTextPadding']; - // if(parentObj['rightTextPadding']) rightParam = parentObj['rightTextPadding']; - - // // smart shapes are mutually exclusive from compound vectors. - // var isConnector = parentObj.type == $ax.constants.CONNECTOR_TYPE; - // if(isConnector) return; - - // var axTextObjectParent = $ax('#' + textObjParent.attr('id')); - - - // var jDims = textObj.css(['width','left','top']); - // var oldWidth = $ax.getNumFromPx(jDims['width']); - // var oldLeft = $ax.getNumFromPx(jDims['left']); - // var oldTop = $ax.getNumFromPx(jDims['top']); - - // var newTop = 0; - // var newLeft = 0.0; - - // var size = axTextObjectParent.size(); - // var width = size.width; - // var height = size.height; - // //var width = axTextObjectParent.width(); - // //var height = axTextObjectParent.height(); - - // // If text rotated need to handle getting the correct width for text based on bounding rect of rotated parent. - // var boundingRotation = -$ax.move.getRotationDegreeFromElement(textObj[0]); - // var boundingParent = $axure.fn.getBoundingSizeForRotate(width, height, boundingRotation); - // var extraLeftPadding = (width - boundingParent.width) / 2; - // width = boundingParent.width; - // var relativeTop = 0.0; - // relativeTop = height * topParam; - // var containerHeight = height * bottomParam - relativeTop; - - // newLeft = paddingLeft + extraLeftPadding + width * leftParam; - - // var newWidth = width * (rightParam - leftParam) - paddingLeft - paddingRight; - - // var horizChange = newWidth != oldWidth || newLeft != oldLeft; - // if(horizChange) { - // dim.left = newLeft; - // dim.width = newWidth; - // //textObj.css('left', newLeft); - // //textObj.width(newWidth); - // } - - // var textHeight = _getRtfElementHeight(textObj[0]); - - // if(vAlign == "middle") - // newTop = _roundToEven(relativeTop + (containerHeight - textHeight + paddingTop - paddingBottom) / 2); - // else if(vAlign == "bottom") - // newTop = _roundToEven(relativeTop + containerHeight - textHeight - paddingBottom); - // else newTop = _roundToEven(paddingTop + relativeTop); - // var vertChange = oldTop != newTop; - // if (vertChange) dim.top = newTop; //textObj.css('top', newTop + 'px'); - - // return dim; - // }; - - // var applyTextAlignment = function(textId, dim) { - // var textObj = $jobj(textId); - // if(dim.left) { - // textObj.css('left', dim.left); - // textObj.width(dim.width); - // } - // if(dim.top) textObj.css('top', dim.top); - - // if((dim.top || dim.left)) _updateTransformOrigin(textId); - // }; - - // var idToDim = []; - // for (var i = 0; i < textIds.length; i++) { - // var textId = textIds[i]; - // var alignProps = _idToAlignProps[textId]; - // if (!alignProps || !_getObjVisible(textId)) continue; - - // idToDim.push({ id: textId, dim: getTextAlignDim(textId, alignProps) }); - // } - - // for (var i = 0; i < idToDim.length; i++) { - // var info = idToDim[i]; - // applyTextAlignment(info.id, info.dim); - // } - //}; - - //var _setTextAlignment = function(textId, alignProps, updateProps) { - // if(updateProps) _storeIdToAlignProps(textId); - // if(!alignProps) return; - - // var vAlign = alignProps.vAlign; - // var paddingTop = Number(alignProps.paddingTop); - // var paddingBottom = Number(alignProps.paddingBottom); - // var paddingLeft = Number(alignProps.paddingLeft); - // var paddingRight = Number(alignProps.paddingRight); - - // var topParam = 0.0; - // var bottomParam = 1.0; - // var leftParam = 0.0; - // var rightParam = 1.0; - - // var textObj = $jobj(textId); - // var textObjParent = textObj.offsetParent(); - // var parentId = textObjParent.attr('id'); - // var isConnector = false; - // if(parentId) { - // parentId = $ax.visibility.getWidgetFromContainer(textObjParent.attr('id')); - // textObjParent = $jobj(parentId); - // var parentObj = $obj(parentId); - // if(parentObj['bottomTextPadding']) bottomParam = parentObj['bottomTextPadding']; - // if(parentObj['topTextPadding']) topParam = parentObj['topTextPadding']; - // if(parentObj['leftTextPadding']) leftParam = parentObj['leftTextPadding']; - // if(parentObj['rightTextPadding']) rightParam = parentObj['rightTextPadding']; - - // // smart shapes are mutually exclusive from compound vectors. - // isConnector = parentObj.type == $ax.constants.CONNECTOR_TYPE; - // } - // if(isConnector) return; - - // var axTextObjectParent = $ax('#' + textObjParent.attr('id')); - - // var oldWidth = $ax.getNumFromPx(textObj.css('width')); - // var oldLeft = $ax.getNumFromPx(textObj.css('left')); - // var oldTop = $ax.getNumFromPx(textObj.css('top')); - - // var newTop = 0; - // var newLeft = 0.0; - - // var width = axTextObjectParent.width(); - // var height = axTextObjectParent.height(); - - // // If text rotated need to handle getting the correct width for text based on bounding rect of rotated parent. - // var boundingRotation = -$ax.move.getRotationDegreeFromElement(textObj[0]); - // var boundingParent = $axure.fn.getBoundingSizeForRotate(width, height, boundingRotation); - // var extraLeftPadding = (width - boundingParent.width) / 2; - // width = boundingParent.width; - // var relativeTop = 0.0; - // relativeTop = height * topParam; - // var containerHeight = height * bottomParam - relativeTop; - - - // newLeft = paddingLeft + extraLeftPadding + width * leftParam; - - // var newWidth = width * (rightParam - leftParam) - paddingLeft - paddingRight; - - // var horizChange = newWidth != oldWidth || newLeft != oldLeft; - // if(horizChange) { - // textObj.css('left', newLeft); - // textObj.width(newWidth); - // } - - // var textHeight = _getRtfElementHeight(textObj[0]); - - // if(vAlign == "middle") newTop = _roundToEven(relativeTop + (containerHeight - textHeight + paddingTop - paddingBottom) / 2); - // else if(vAlign == "bottom") newTop = _roundToEven(relativeTop + containerHeight - textHeight - paddingBottom); - // else newTop = _roundToEven(paddingTop + relativeTop); - // var vertChange = oldTop != newTop; - // if(vertChange) textObj.css('top', newTop + 'px'); - - // if((vertChange || horizChange)) _updateTransformOrigin(textId); - //}; - - //var _updateTransformOrigin = function (textId) { - // var textObj = $jobj(textId); - // var parentId = textObj.parent().attr('id'); - // if(!$obj(parentId).hasTransformOrigin) return; - - // //var transformOrigin = textObj.css('-webkit-transform-origin') || - // // textObj.css('-moz-transform-origin') || - // // textObj.css('-ms-transform-origin') || - // // textObj.css('transform-origin'); - // //if(transformOrigin) { - // var textObjParent = $ax('#' + textObj.parent().attr('id')); - // var newX = (textObjParent.width() / 2 - $ax.getNumFromPx(textObj.css('left'))); - // var newY = (textObjParent.height() / 2 - $ax.getNumFromPx(textObj.css('top'))); - // var newOrigin = newX + 'px ' + newY + 'px'; - // textObj.css('-webkit-transform-origin', newOrigin); - // textObj.css('-moz-transform-origin', newOrigin); - // textObj.css('-ms-transform-origin', newOrigin); - // textObj.css('transform-origin', newOrigin); - // //} - //}; - - $ax.style.reselectElements = function() { - for(var id in _selectedWidgets) { - // Only looking for the selected widgets that don't have their class set - if(!_selectedWidgets[id] || $jobj(id).hasClass('selected')) continue; - - $jobj(id).addClass('selected'); - _applyImageAndTextJson(id, $ax.style.generateState(id)); - } - - for(id in _disabledWidgets) { - // Only looking for the disabled widgets that don't have their class yet - if (!_disabledWidgets[id] || $jobj(id).hasClass('disabled')) continue; - - $jobj(id).addClass('disabled'); - _applyImageAndTextJson(id, $ax.style.generateState(id)); - } - } - - $ax.style.clearStateForRepeater = function(repeaterId) { - var children = $ax.getChildElementIdsForRepeater(repeaterId); - for(var i = 0; i < children.length; i++) { - var id = children[i]; - delete _selectedWidgets[id]; - delete _disabledWidgets[id]; - } - } - - _style.updateStateClass = function (repeaterId) { - var subElementIds = $ax.getChildElementIdsForRepeater(repeaterId); - for (var i = 0; i < subElementIds.length; i++) { - _applyImageAndTextJson(subElementIds[i], $ax.style.generateState(subElementIds[i])); - } - } - - $ax.style.clearAdaptiveStyles = function() { - for(var shapeId in _adaptiveStyledWidgets) { - var repeaterId = $ax.getParentRepeaterFromScriptId(shapeId); - if(repeaterId) continue; - var elementId = $ax.GetButtonShapeId(shapeId); - if(elementId) _applyImageAndTextJson(elementId, $ax.style.generateState(elementId)); - } - - _adaptiveStyledWidgets = {}; - }; - - $ax.style.setAdaptiveStyle = function(shapeId, style) { - _adaptiveStyledWidgets[$ax.repeater.getScriptIdFromElementId(shapeId)] = style; - - var textId = $ax.GetTextPanelId(shapeId); - if(textId) _applyTextStyle(textId, style); - - $ax.placeholderManager.refreshPlaceholder(shapeId); - - // removing this for now - // if(style.location) { - // $jobj(shapeId).css('top', style.location.x + "px") - // .css('left', style.location.y + "px"); - // } - }; - - //------------------------------------------------------------------------- - // _applyTextStyle - // - // Applies a rollover style to a text element. - // id : the id of the text object to set. - // styleProperties : an object mapping style properties to values. eg: - // { 'fontWeight' : 'bold', - // 'fontStyle' : 'italic' } - //------------------------------------------------------------------------- - var _applyTextStyle = function(id, style) { - _transformTextWithVerticalAlignment(id, function() { - var styleProperties = _getCssStyleProperties(style); - $('#' + id).find('*').each(function(index, element) { - _applyCssProps(element, styleProperties); - }); - }); - }; - - var _applyCssProps = function(element, styleProperties, applyAllStyle) { - if(applyAllStyle) { - var allProps = styleProperties.allProps; - for(var prop in allProps) element.style[prop] = allProps[prop]; - } else { - var nodeName = element.nodeName.toLowerCase(); - if(nodeName == 'p') { - var parProps = styleProperties.parProps; - for(prop in parProps) element.style[prop] = parProps[prop]; - } else if(nodeName != 'a') { - var runProps = styleProperties.runProps; - for(prop in runProps) element.style[prop] = runProps[prop]; - } - } - }; - - var _getCssShadow = function(shadow) { - return !shadow.on ? "none" - : shadow.offsetX + "px " + shadow.offsetY + "px " + shadow.blurRadius + "px " + _getCssColor(shadow.color); - }; - - var _getCssStyleProperties = function(style) { - var toApply = {}; - toApply.runProps = {}; - toApply.parProps = {}; - toApply.allProps = {}; - - if(style.fontName) toApply.allProps.fontFamily = toApply.runProps.fontFamily = style.fontName; - // we need to set font size on both runs and pars because otherwise it well mess up the measure and thereby vertical alignment - if(style.fontSize) toApply.allProps.fontSize = toApply.runProps.fontSize = toApply.parProps.fontSize = style.fontSize; - if(style.fontWeight !== undefined) toApply.allProps.fontWeight = toApply.runProps.fontWeight = style.fontWeight; - if(style.fontStyle !== undefined) toApply.allProps.fontStyle = toApply.runProps.fontStyle = style.fontStyle; - - var textDecoration = []; - if(style.underline !== undefined) textDecoration[0] = style.underline ? 'underline ' : 'none'; - if(style.strikethrough !== undefined) { - var index = textDecoration.length; - if(style.strikethrough) textDecoration[index] ='line-through'; - else if(index == 0) textDecoration[0] = 'none'; - } - if (textDecoration.length > 0) { - var decorationLineUp = ""; - for (var l = 0; l < textDecoration.length; l++) { - decorationLineUp = decorationLineUp + textDecoration[l]; - } - toApply.allProps.textDecoration = toApply.runProps.textDecoration = decorationLineUp; - } - if(style.foreGroundFill) { - toApply.allProps.color = toApply.runProps.color = _getColorFromFill(style.foreGroundFill); - //if(style.foreGroundFill.opacity) toApply.allProps.opacity = toApply.runProps.opacity = style.foreGroundFill.opacity; - } - if(style.horizontalAlignment) toApply.allProps.textAlign = toApply.parProps.textAlign = toApply.runProps.textAlign = style.horizontalAlignment; - if(style.lineSpacing) toApply.allProps.lineHeight = toApply.parProps.lineHeight = style.lineSpacing; - if(style.textShadow) toApply.allProps.textShadow = toApply.parProps.textShadow = _getCssShadow(style.textShadow); - if (style.letterCase) toApply.allProps.textTransform = toApply.parProps.textTransform = style.letterCase; - if (style.characterSpacing) toApply.allProps.letterSpacing = toApply.runProps.letterSpacing = style.characterSpacing; - - return toApply; - }; - - var _getColorFromFill = function(fill) { - //var fillString = '00000' + fill.color.toString(16); - //return '#' + fillString.substring(fillString.length - 6); - var val = fill.color; - var color = {}; - color.b = val % 256; - val = Math.floor(val / 256); - color.g = val % 256; - val = Math.floor(val / 256); - color.r = val % 256; - color.a = typeof (fill.opacity) == 'number' ? fill.opacity : 1; - return _getCssColor(color); - }; - - var _getCssColor = function(rgbaObj) { - return "rgba(" + rgbaObj.r + ", " + rgbaObj.g + ", " + rgbaObj.b + ", " + rgbaObj.a + ")"; - }; - - // //-------------------------------------------------------------------------- - // // ApplyStyleRecursive - // // - // // Applies a style recursively to all span and div tags including elementNode - // // and all of its children. - // // - // // element : the element to apply the style to - // // styleName : the name of the style property to set (eg. 'font-weight') - // // styleValue : the value of the style to set (eg. 'bold') - // //-------------------------------------------------------------------------- - // function ApplyStyleRecursive(element, styleName, styleValue) { - // var nodeName = element.nodeName.toLowerCase(); - - // if (nodeName == 'div' || nodeName == 'span' || nodeName == 'p') { - // element.style[styleName] = styleValue; - // } - - // for (var i = 0; i < element.childNodes.length; i++) { - // ApplyStyleRecursive(element.childNodes[i], styleName, styleValue); - // } - // } - - // //--------------------------------------------------------------------------- - // // ApplyTextProperty - // // - // // Applies a text property to rtfElement. - // // - // // rtfElement : the the root text element of the rtf object (this is the - // // element named _rtf - // // prop : the style property to set. - // // value : the style value to set. - // //--------------------------------------------------------------------------- - // function ApplyTextProperty(rtfElement, prop, value) { - // /* - // var oldHtml = rtfElement.innerHTML; - // if (prop == 'fontWeight') { - // rtfElement.innerHTML = oldHtml.replace(/< *b *\/?>/gi, ""); - // } else if (prop == 'fontStyle') { - // rtfElement.innerHTML = oldHtml.replace(/< *i *\/?>/gi, ""); - // } else if (prop == 'textDecoration') { - // rtfElement.innerHTML = oldHtml.replace(/< *u *\/?>/gi, ""); - // } - // */ - - // for (var i = 0; i < rtfElement.childNodes.length; i++) { - // ApplyStyleRecursive(rtfElement.childNodes[i], prop, value); - // } - // } - //} - - //--------------------------------------------------------------------------- - // GetAndCacheOriginalText - // - // Gets the html for the pre-rollover state and returns the Html representing - // the Rich text. - //--------------------------------------------------------------------------- - var CACHE_COUNTER = 0; - - $ax.style.CacheOriginalText = function(textId, hasRichTextBeenSet) { - var rtfQuery = $('#' + textId); - if(rtfQuery.length > 0) { - - var styleCache = {}; - rtfQuery.find('*').each(function(index, element) { - var elementId = element.id; - if(!elementId) element.id = elementId = 'cache' + CACHE_COUNTER++; - styleCache[elementId] = element.style.cssText; - }); - - _originalTextCache[textId] = { - styleCache: styleCache - }; - if(hasRichTextBeenSet) { - var shapeId = $ax.GetShapeIdFromText(textId); - _shapesWithSetRichText[shapeId] = true; - } - } - }; - - $ax.style.ClearCacheForRepeater = function(repeaterId) { - for(var elementId in _originalTextCache) { - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - if($ax.getParentRepeaterFromScriptId(scriptId) == repeaterId) delete _originalTextCache[elementId]; - } - }; - - - - $ax.style.prefetch = function() { - var scriptIds = $ax.getAllScriptIds(); - var image = new Image(); - for(var i = 0; i < scriptIds.length; i++) { - var obj = $obj(scriptIds[i]); - if (!$ax.public.fn.IsImageBox(obj.type)) continue; - var images = obj.images; - for (var key in images) image.src = images[key]; - - var imageOverrides = obj.imageOverrides; - for(var elementId in imageOverrides) { - var override = imageOverrides[elementId]; - for (var state in override) { - _addImageOverride(elementId, state, override[state]); - image.src = override[state]; - } - } - } - }; -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/tree.js b/web/main/static/resources/scripts/axure/tree.js deleted file mode 100644 index 7c5ca2d..0000000 --- a/web/main/static/resources/scripts/axure/tree.js +++ /dev/null @@ -1,189 +0,0 @@ -// This is actually for BOTH trees and menus -$axure.internal(function($ax) { - var _tree = $ax.tree = {}; - var _menu = $ax.menu = {}; - - $ax.menu.InitializeSubmenu = function(subMenuId, cellId) { - var $submenudiv = $('#' + subMenuId); - - //mouseenter and leave for parent table cell - $('#' + cellId).mouseenter(function(e) { - //show current submenu -// var submenuElement = document.getElementById(subMenuId); -// if($ax.visibility.IsVisible(submenuElement) && submenuElement.style.display !== 'none') return; - $ax.visibility.SetIdVisible(subMenuId, true); - $ax.legacy.BringToFront(subMenuId); - //$submenudiv.find('.menu_item').each(function() { - // $ax.style.updateTextAlignmentForVisibility($ax.GetTextPanelId($(this).attr('id'))); - //}); - _fireEventForSubmenu(subMenuId, "onShow"); - - }).mouseleave(function (e) { - var offset = $submenudiv.offset(); - var subcontwidth = $submenudiv.width(); - var subcontheight = $submenudiv.height(); - //If mouse is not within the submenu (added 3 pixel margin to top and left calculations), then close the submenu... - if(e.pageX + 3 < offset.left || e.pageX > offset.left + subcontwidth || e.pageY + 3 < offset.top || e.pageY > offset.top + subcontheight) { - $submenudiv.find('.sub_menu').addBack().each(function () { -// if(!$ax.visibility.IsVisible(this)) return; - $ax.visibility.SetVisible(this, false); - _fireEventForSubmenu(subMenuId, "onHide"); - }); - $ax.style.SetWidgetHover(cellId, false); - } - }); - - $submenudiv.css('display', 'none'); - - //mouseleave for submenu - $submenudiv.mouseleave(function(e) { - //close this menu and all menus below it - $(this).find('.sub_menu').addBack().css({ 'visibility': 'hidden', 'display': 'none' }).each(function () { -// if(!$ax.visibility.IsVisible(this)) return; - _fireEventForSubmenu(this.id, "onHide"); - }); - $ax.style.SetWidgetHover(cellId, false); - }); - }; - - var _fireEventForSubmenu = function(targetId, eventName) { - var diagramObject = $ax.getObjectFromElementId(targetId); - var event = diagramObject.interactionMap && diagramObject.interactionMap[eventName]; - if(event) { - var eventInfo = $ax.getEventInfoFromEvent($ax.getjBrowserEvent(), false, targetId); - $ax.event.handleEvent(targetId, eventInfo, event, false, true); - } - } - - function IsNodeVisible(nodeId) { - var current = window.document.getElementById(nodeId); - var parent = current.parentNode; - - //move all the parent's children that are below the node and their annotations - while(!$(current).hasClass("treeroot")) { - if(!$ax.visibility.IsVisible(parent)) return false; - current = parent; - parent = parent.parentNode; - } - return true; - } - - $ax.tree.ExpandNode = function(nodeId, childContainerId, plusMinusId) { - var container = window.document.getElementById(childContainerId); - if(!container || $ax.visibility.IsVisible(container)) return; - $ax.visibility.SetVisible(container, true); - - if(plusMinusId != '') $ax.style.SetWidgetSelected(plusMinusId, true); - - var delta = _getExpandCollapseDelta(nodeId, childContainerId); - - var isVisible = IsNodeVisible(nodeId); - var current = window.document.getElementById(nodeId); - var parent = current.parentNode; - - //move all the parent's children that are below the node and their annotations - while(!$(current).hasClass("treeroot")) { - var after = false; - var i = 0; - for(i = 0; i < parent.childNodes.length; i++) { - var child = parent.childNodes[i]; - if(after && child.id && $(child).hasClass("treenode")) { - var elementId = child.id; - child.style.top = $ax.getNumFromPx($(child).css('top')) + delta + 'px'; - var ann = window.document.getElementById(elementId + "_ann"); - if (ann) ann.style.top = $ax.getNumFromPx($(ann).css('top')) + delta + 'px'; - } - if(child == current) after = true; - } - current = parent; - parent = parent.parentNode; - if(!isVisible && $ax.visibility.IsVisible(parent)) break; - } - }; - - $ax.tree.CollapseNode = function(nodeId, childContainerId, plusMinusId) { - var container = window.document.getElementById(childContainerId); - if(!container || !$ax.visibility.IsVisible(container)) return; - - if(plusMinusId != '') $ax.style.SetWidgetSelected(plusMinusId, false); - - var delta = _getExpandCollapseDelta(nodeId, childContainerId); - - //hide it after getting the delta, otherwise the delta can't be calculated (offsetParent is null) - $ax.visibility.SetVisible(container, false); - - var isVisible = IsNodeVisible(nodeId); - var current = window.document.getElementById(nodeId); - var parent = current.parentNode; - - //move all the parent's children that are below the node and their annotations - while(!$(current).hasClass("treeroot")) { - var after = false; - var i = 0; - for(i = 0; i < parent.childNodes.length; i++) { - var child = parent.childNodes[i]; - if(after && child.id && $(child).hasClass("treenode")) { - var elementId = child.id; - child.style.top = $ax.getNumFromPx($(child).css('top')) - delta + 'px'; - var ann = window.document.getElementById(elementId + "_ann"); - if (ann) ann.style.top = $ax.getNumFromPx($(ann).css('top')) - delta + 'px'; - } - if(child == current) after = true; - } - current = parent; - parent = current.parentNode; - if(!isVisible && $ax.visibility.IsVisible(parent)) break; - } - }; - - var _getExpandCollapseDelta = function(nodeId, childContainerId) { - return _getChildContainerHeightHelper(childContainerId); - }; - - var _getChildContainerHeightHelper = function(childContainerId) { - var height = 0; - $('#' + childContainerId).children().each(function() { - if($(this).hasClass("treenode")) { - height += $(this).height(); - var subContainer = window.document.getElementById(this.id + '_children'); - if(subContainer && $ax.visibility.IsVisible(subContainer)) { - height += _getChildContainerHeightHelper(subContainer.id); - } - } - }); - return height; - }; - - $ax.tree.InitializeTreeNode = function(nodeId, plusminusid, childContainerId, selectText) { - var childContainer = window.document.getElementById(childContainerId); - if(childContainer) { - //relying on the html generator to put this inline so we know to collapse by default - var isCollapsed = childContainer.style.visibility == "hidden"; - if(isCollapsed) $ax.visibility.SetVisible(childContainer, false); - - if(!isCollapsed && plusminusid != '') $ax.style.SetWidgetSelected(plusminusid, true); - } - - if(plusminusid != '') { - $jobj(plusminusid).click(function() { - var visibleSet = $ax.visibility.IsIdVisible(childContainerId); - - if(visibleSet) $ax.tree.CollapseNode(nodeId, childContainerId, plusminusid); - else $ax.tree.ExpandNode(nodeId, childContainerId, plusminusid); - $ax.tree.SelectTreeNode(nodeId, true); - - return false; - }).css('cursor', 'default'); - } - }; - - var _getButtonShapeId = function(id) { - var obj = $obj(id); - return $ax.public.fn.IsTreeNodeObject(obj.type) ? $ax.getElementIdFromPath([obj.buttonShapeId], { relativeTo: id }) : id; - }; - - $ax.tree.SelectTreeNode = function(id, selected) { - $ax.style.SetWidgetSelected(_getButtonShapeId(id), selected); - }; - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/utils.temp.js b/web/main/static/resources/scripts/axure/utils.temp.js deleted file mode 100644 index 43ba542..0000000 --- a/web/main/static/resources/scripts/axure/utils.temp.js +++ /dev/null @@ -1,99 +0,0 @@ -// ******* Deep Copy ******** // -$axure.internal(function($ax) { - // TODO: [ben] Ah, infinite loops cause major issues here. Tried saving objects we've already hit, but that didn't seem to work (at least at my first shot). - // TODO: [ben] To continue from above, added a filter to filter out problem keys. Will need a better way of sorting this out eventually. - var _deepCopy = function (original, trackCopies, filter) { - if(trackCopies) { - var index = _getCopyIndex(original); - if(index != -1) return _originalToCopy[index][1]; - } - var isArray = original instanceof Array; - var isObject = !(original instanceof Function) && !(original instanceof Date) && (original instanceof Object); - if(!isArray && !isObject) return original; - var copy = isArray ? [] : { }; - if(trackCopies) _originalToCopy.push([original, copy]); - isArray ? deepCopyArray(original, trackCopies, copy, filter) : deepCopyObject(original, trackCopies, copy, filter); - return copy; - }; - $ax.deepCopy = _deepCopy; - - // Hacky way to copy event info. Copying dragInfo causes major issues due to infinite loops - // Hashmap doesn't map objects well. It just toStrings them, making them all the same key. This has to be slow... - var _originalToCopy = []; - var _getCopyIndex = function(original) { - for(var i = 0; i < _originalToCopy.length; i++) if(original === _originalToCopy[i][0]) return i; - return -1; - }; - - $ax.eventCopy = function(eventInfo) { - var copy = _deepCopy(eventInfo, true, ['dragInfo', 'elementQuery', 'obj']); - // reset the map. TODO: May need to reset elsewhere too, but this is the only way it's used currently - _originalToCopy = []; - - return copy; - }; - - var deepCopyArray = function(original, trackCopies, copy, filter) { - for(var i = 0; i < original.length; i++) { - copy[i] = _deepCopy(original[i], trackCopies, filter); - } - }; - - var deepCopyObject = function(original, trackCopies, copy, filter) { - for(var key in original) { - if(!original.hasOwnProperty(key)) continue; // Continue if the prop was not put there like a dictionary, but just a native part of the object - - if(filter && filter.indexOf[key] != -1) copy[key] = original[key]; // If that key is filtered out, skip recursion on it. - else copy[key] = _deepCopy(original[key], trackCopies, filter); - } - }; - - // Our implementation of splice because it is broken in IE8... - $ax.splice = function(array, startIndex, count) { - var retval = []; - if(startIndex >= array.length || startIndex < 0 || count == 0) return retval; - if(!count || startIndex + count > array.length) count = array.length - startIndex; - for(var i = 0; i < count; i++) retval[i] = array[startIndex + i]; - for(i = startIndex + count; i < array.length; i++) array[i - count] = array[i]; - for(i = 0; i < count; i++) array.pop(); - return retval; - }; -}); - - - -// ******* Flow Shape Links ******** // -$axure.internal(function($ax) { - - $(window.document).ready(function() { - if (!$ax.document.configuration.linkFlowsToPages && !$ax.document.configuration.linkFlowsToPagesNewWindow) return; - - $ax(function (dObj) { return ($ax.public.fn.IsVector(dObj.type) || $ax.public.fn.IsSnapshot(dObj.type)) && dObj.referencePageUrl; }).each(function (dObj, elementId) { - - var elementIdQuery = $('#' + elementId); - - if($ax.document.configuration.linkFlowsToPages && !$ax.event.HasClick(dObj)) { - elementIdQuery.css("cursor", "pointer"); - elementIdQuery.click(function() { - $ax.navigate({ - url: dObj.referencePageUrl, - target: "current", - includeVariables: true - }); - }); - } - - if($ax.document.configuration.linkFlowsToPagesNewWindow) { - $('#' + elementId + "_ref").append("
    "); - $('#' + elementId + "PagePopup").click(function() { - $ax.navigate({ - url: dObj.referencePageUrl, - target: "new", - includeVariables: true - }); - }); - } - }); - }); - -}); diff --git a/web/main/static/resources/scripts/axure/variables.js b/web/main/static/resources/scripts/axure/variables.js deleted file mode 100644 index 7839bdd..0000000 --- a/web/main/static/resources/scripts/axure/variables.js +++ /dev/null @@ -1,136 +0,0 @@ -// ******* GLOBAL VARIABLE PROVIDER ******** // -$axure.internal(function($ax) { - var _globalVariableValues = {}; - - var _globalVariableProvider = {}; - $ax.globalVariableProvider = _globalVariableProvider; - - var setVariableValue = function(variable, value, suppressBroadcast) { - if(!(value instanceof Object)) value = value.toString(); - - variable = variable.toLowerCase(); - _globalVariableValues[variable] = value; - - if(suppressBroadcast !== true) { - var varData = { - globalVarName: variable, - globalVarValue: value.toString() - }; - - $axure.messageCenter.postMessage('setGlobalVar', varData); - } - - //Post global var values only if pageData is loaded (suppresses exception which occurs when page loads) - if($ax.pageData) { - _postGlobalVarVals(); - } - }; - _globalVariableProvider.setVariableValue = setVariableValue; - - var getVariableValue = function(variable, eventInfo, ignoreDefaultsForLinkUrl) { - variable = variable.toLowerCase(); - if(_globalVariableValues[variable] !== undefined) { - //If this is for the GetLinkUrl function and - //the current value of the global variable is the same as the default defined in the document, don't return it - if(ignoreDefaultsForLinkUrl == true && $ax.document.globalVariables[variable] == _globalVariableValues[variable]) { - return null; - } - - return _globalVariableValues[variable]; - } - if($ax.document.globalVariables[variable] !== undefined) return ignoreDefaultsForLinkUrl == true ? null : $ax.document.globalVariables[variable]; - switch(variable) { - case "pagename": return $ax.pageData.page.name; - - case "now": return eventInfo.now; - case "gendate": return $ax.pageData.generationDate; - - case "dragx": return $ax.drag.GetDragX(); - case "dragy": return $ax.drag.GetDragY(); - case "totaldragx": return $ax.drag.GetTotalDragX(); - case "totaldragy": return $ax.drag.GetTotalDragY(); - case "dragtime": return $ax.drag.GetDragTime(); - - case "math": return Math; - case "date": return Date; - - case "window": return eventInfo && eventInfo.window; - case "this": return eventInfo && eventInfo.thiswidget && $ax.getWidgetInfo(eventInfo.thiswidget.elementId); - case "item": return (eventInfo && eventInfo.item && eventInfo.item.valid && eventInfo.item) || getVariableValue('targetitem', eventInfo, ignoreDefaultsForLinkUrl); - case "targetitem": return eventInfo && eventInfo.targetElement && $ax.getItemInfo(eventInfo.targetElement); - case "repeater": return eventInfo && eventInfo.repeater; - case "target": return eventInfo && eventInfo.targetElement && $ax.getWidgetInfo(eventInfo.targetElement); - case "cursor": return eventInfo && eventInfo.cursor; - default: - var gen = variable.substr(0, 3) == "gen"; - var date = gen ? $ax.pageData.generationDate : new Date(); - var prop = gen ? variable.substr(3) : variable; - switch(prop) { - case "day": return date.getDate(); - case "month": return date.getMonth() + 1; - case "monthname": return $ax.getMonthName(date.getMonth()); - case "dayofweek": return $ax.getDayOfWeek(date.getDay()); - case "year": return date.getFullYear(); - case "time": return date.toLocaleTimeString(); - case "hours": return date.getHours(); - case "minutes": return date.getMinutes(); - case "seconds": return date.getSeconds(); - default: return ''; - } - } - }; - _globalVariableProvider.getVariableValue = getVariableValue; - - var load = function() { - let query = (window.location.href.split("#")[1] || ''); //hash.substring(1); Firefox decodes this so & in variables breaks - if(query.length > 0) { - $ax.utils.parseGlobalVars(query, setVariableValue); - } - }; - - var getLinkUrl = function(baseUrl, useGlobalVarName) { - var toAdd = ''; - var definedVariables = _getDefinedVariables(); - for(var i = 0; i < definedVariables.length; i++) { - var key = definedVariables[i]; - var val = getVariableValue(key, undefined, true); - if(val != null) { - if(toAdd.length > 0) toAdd += '&'; - else if(useGlobalVarName) toAdd = GLOBAL_VAR_NAME; - toAdd += key + '=' + encodeURIComponent(val); - } - } - return toAdd.length > 0 ? baseUrl + (useGlobalVarName ? '' : $axure.shouldSendVarsToServer() ? '?' : '#') + toAdd + "&" + GLOBAL_VAR_CHECKSUM + "=1" : baseUrl; - }; - _globalVariableProvider.getLinkUrl = getLinkUrl; - - var _getDefinedVariables = function() { - return $ax.pageData.variables; - }; - _globalVariableProvider.getDefinedVariables = _getDefinedVariables; - - var _postGlobalVarVals = function() { - var retVal = {}; - var definedVariables = _getDefinedVariables(); - for(var i = 0; i < definedVariables.length; i++) { - var key = definedVariables[i]; - var val = getVariableValue(key); - if(val != null) { - retVal[key] = val; - } - } - - $ax.messageCenter.postMessage('globalVariableValues', retVal); - }; - - $ax.messageCenter.addMessageListener(function(message, data) { - if(message == 'getGlobalVariables') { - _postGlobalVarVals(); - } else if(message == 'resetGlobalVariables') { - _globalVariableValues = {}; - _postGlobalVarVals(); - } - }); - - load(); -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/viewer.js b/web/main/static/resources/scripts/axure/viewer.js deleted file mode 100644 index 10415e4..0000000 --- a/web/main/static/resources/scripts/axure/viewer.js +++ /dev/null @@ -1,268 +0,0 @@ -// ******* SITEMAP TOOLBAR VIEWER ACTIONS ******** // -$axure.internal(function ($ax) { - var userTriggeredEventNames = ['onClick', 'onDoubleClick', 'onMouseOver', 'onMouseMove', 'onMouseOut', 'onMouseDown', 'onMouseUp', - 'onKeyDown', 'onKeyUp', 'onFocus', 'onLostFocus', 'onTextChange', 'onSelectionChange', 'onSelectedChange', 'onSelect', 'onUnselect', - 'onSwipeLeft', 'onSwipeRight', 'onSwipeUp', 'onSwipeDown', 'onDragStart', 'onDrag', 'onDragDrop', 'onScroll', 'onContextMenu', 'onMouseHover', 'onLongClick']; - - //var _toggleSelectWidgetNoteForRepeater = function (repeaterId, scriptId, select) { - // var itemIds = $ax.getItemIdsForRepeater(repeaterId); - - // for(var i = 0; i < itemIds.length; i++) { - // var itemId = itemIds[i]; - // var elementId = $ax.repeater.createElementId(scriptId, itemId); - // if(select) $('#' + elementId).addClass('widgetNoteSelected'); - // else $('#' + elementId).removeClass('widgetNoteSelected'); - // } - //} - $ax.messageCenter.addMessageListener(function (message, data) { - //If annotation toggle message received from sitemap, toggle footnotes - if(message == 'toggleSelectWidgetNote') { - - if (!IOS) { - $('.widgetNoteSelected').removeClass('widgetNoteSelected'); - } - - if(!data.value) return; - - //if(lastSelectedWidgetNote == data.id) { - // lastSelectedWidgetNote = null; - // return; - //} - - $ax('*').each(function(obj, elementId) { - if (obj.id == data.id) { - if (!IOS) { - $('#' + elementId).addClass('widgetNoteSelected'); - } - - _scrollToSelectedNote($('#' + elementId), data.view); - } - }); - } - }); - - var _scrollToSelectedNote = function ($elmt, view) { - var isLandscape = IOS ? window.orientation != 0 && window.orientation != 180 : false; - var winWidth = !IOS ? $(window).width() : (isLandscape ? window.screen.height : window.screen.width) - view.panelWidthOffset; - var winHeight = !IOS ? $(window).height() : view.height; - var docLeft = $('html').last().scrollLeft(); - var docTop = $('html').last().scrollTop(); - var docRight = docLeft + winWidth; - var docBottom = docTop + winHeight; - - var scale = $('#base').css('transform');; - scale = (scale == "none") ? 1 : Number(scale.substring(scale.indexOf('(') + 1, scale.indexOf(','))); - - var bodyLeft = ($('body').css('left') !== undefined && $('body').css('left') !== "auto") ? Number($('body').css('left').replace('px','')) : 0; - var top = scale * Number($elmt.css('top').replace('px', '')); - var bottom = top + scale * $elmt.height(); - var left = scale * Number($elmt.css('left').replace('px', '')) + bodyLeft; - var right = left + scale * $elmt.width(); - - var doHorizontalMove = left < docLeft || right > docRight; - var doVerticalMove = top < docTop || bottom > docBottom; - var padding = scale * 50; - - var newScrollLeft = 0 - if (left < docLeft) { - newScrollLeft = left - padding; - } else if (right > docRight) { - newScrollLeft = right + padding - winWidth; - } - - var newScrollTop = 0 - if (top < docTop) { - newScrollTop = top - padding; - } else if (bottom > docBottom) { - newScrollTop = bottom + padding - winHeight; - } - - // Device Frame or Scale to width or Scale to fit (situations where there is no horizontal scroll) - if (view.h || view.scaleVal == 1 || view.scaleVal == 2) { - doHorizontalMove = false; - } - - // Has Device Frame or Scale to Width and widget with note is outside of viewable panel right bounds - if ((view.scaleVal == 1 || view.h) && (left > docRight)) { - doVerticalMove = false; - } - - // TODO: need to do something for dynamic panel with scroll - if (doHorizontalMove && doVerticalMove) { - $("html, body").animate({ scrollLeft: newScrollLeft, scrollTop: newScrollTop }, 300); - } else if (doHorizontalMove) { - $("html, body").animate({ scrollLeft: newScrollLeft }, 300); - } else if (doVerticalMove) { - $("html, body").animate({ scrollTop: newScrollTop }, 300); - } - } - - var highlightEnabled = false; - $ax.messageCenter.addMessageListener(function(message, data) { - if(message == 'highlightInteractive') { - highlightEnabled = data == true; - _applyHighlight($ax('*')); - } - }); - - var _applyHighlight = $ax.applyHighlight = function(query, ignoreUnset) { - if(ignoreUnset && !highlightEnabled) return; - - var pulsateClassName = 'legacyPulsateBorder'; - //Determine if the widget has a defined userTriggeredEventName specified in the array above - var _isInteractive = function(diagramObject) { - if(diagramObject && diagramObject.interactionMap) { - for(var index in userTriggeredEventNames) { - if(diagramObject.interactionMap[userTriggeredEventNames[index]]) return true; - } - } - return false; - }; - - //Traverse through parent layers (if any) of an element and see if any have a defined userTriggeredEventName - var _findMatchInParent = function(id) { - var parents = $ax('#' + id).getParents(true, ['layer'])[0]; - for(var i in parents) { - var parentId = parents[i]; - var parentObj = $ax.getObjectFromScriptId(parentId); - if(_isInteractive(parentObj)) return true; - } - return false; - }; - - //Find all widgets with a defined userTriggeredEventName specified in the array above - var $matchingElements = query.filter(function (obj, id) { - - //This prevents the top left corner of the page from highlighting with everything else - if($ax.public.fn.IsLayer(obj.type)) return false; - - if(_isInteractive(obj)) return true; - else if($ax.public.fn.IsVector(obj.type) && obj.referencePageUrl) return true; - - //Last check on the object's parent layer(s), if a layer has a defined userTriggeredEventName - //then we shall highlight each member of that layer TODO This is a design decision and is subject to change - return _findMatchInParent(id); - }).$(); - - var isHighlighted = $matchingElements.is('.' + pulsateClassName); - - //Toggle the pulsate class on the matched elements - if(highlightEnabled && !isHighlighted) { - $matchingElements.addClass(pulsateClassName); - } else if(!highlightEnabled && isHighlighted) { - $matchingElements.removeClass(pulsateClassName); - } - }; - - var getElementsFromPoint = function (x, y) { - var elementsFromPointFn = document.elementsFromPoint || document.msElementsFromPoint; - if (typeof elementsFromPointFn === "function") { - return elementsFromPointFn.bind(document)(x, y); - } - return []; - } - - $axure.getIdAndRectAtLoc = function (data) { - var element = document.elementFromPoint(data.x, data.y); - if (!element) return undefined; - - var jObj = _getElementIdFromTarget(element); - if (jObj.length > 0) { - var id = jObj.attr('id'); - var axObj = $ax('#' + id); - var rect = axObj.pageBoundingRect(); - return { 'id': id, 'rect': rect }; - } - return undefined; - } - - $axure.getListOfIdAndRectAtLoc = function (data) { - var domElements = getElementsFromPoint(data.x, data.y); - - if (!domElements || !domElements.length) return []; - - const elements = []; - - domElements.forEach(function (domElement) { - var jObj = _getElementIdFromTarget(domElement); - if (jObj.length > 0) { - var id = jObj.attr('id'); - var axObj = $ax('#' + id); - var rect = axObj.pageBoundingRect(); - if (elements.findIndex(function (x) { return x.id === id }) < 0) { - elements.push( { 'id': id, 'rect': rect } ); - } - } - }); - - return elements; - } - - $axure.getIdRectAndStyleAtLoc = function(data) { - var element = document.elementFromPoint(data.x, data.y); - if (!element) return undefined; - - var jObj = _getElementIdFromTarget(element); - if (jObj.length > 0) { - var id = jObj.attr('id'); - return $axure.getRectAndStyleById(id); - } - return undefined; - } - - $axure.getListOfIdRectAndStyleAtLoc = function(data) { - var domElements = getElementsFromPoint(data.x, data.y); - - if (!domElements || !domElements.length) return []; - - const elements = []; - - domElements.forEach(function (domElement) { - var jObj = _getElementIdFromTarget(domElement); - if (jObj.length > 0) { - var id = jObj.attr('id'); - if (elements.findIndex(function (x) { return x.id === id }) < 0) { - elements.push($axure.getRectAndStyleById(id)); - } - } - }); - - return elements; - } - - $axure.getRectAndStyleById = function (id) { - var axObj = $ax('#' + id); - var rect = axObj.pageBoundingRect(); - var style = $ax.style.computeFullStyle(id, $ax.style.generateState(id), $ax.adaptive.currentViewId); - style.text = axObj.text(); - return { 'id': id, 'rect': rect, 'style': style }; - } - - $axure.isIdVisible = function (id) { - return id ? $ax.visibility.IsIdVisible(id) : false; - } - - $axure.getParentElementById = function (elementId) { - if (!elementId) return undefined; - var parentId = $ax.getLayerParentFromElementId(elementId); - if (!parentId) { - return undefined; - } - return $axure.getRectAndStyleById(parentId); - } - - var _getElementIdFromTarget = function (target) { - var targetId = target.id; - var jTarget = $(target); - while((!targetId || targetId.indexOf('cache') > -1) && jTarget[0].tagName != 'HTML') { - jTarget = jTarget.parent(); - targetId = jTarget.attr('id'); - } - if(targetId && targetId != 'base') { - var sections = targetId.split('_'); - return $('#' + sections[0]); - } - return ''; - } - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/axure/visibility.js b/web/main/static/resources/scripts/axure/visibility.js deleted file mode 100644 index 9df0cd9..0000000 --- a/web/main/static/resources/scripts/axure/visibility.js +++ /dev/null @@ -1,1315 +0,0 @@ -$axure.internal(function($ax) { - var document = window.document; - var _visibility = {}; - $ax.visibility = _visibility; - - var _defaultHidden = {}; - var _defaultLimbo = {}; - - // ****************** Visibility and State Functions ****************** // - - var _isIdVisible = $ax.visibility.IsIdVisible = function(id) { - return $ax.visibility.IsVisible(window.document.getElementById(id)); - }; - - $ax.visibility.IsVisible = function(element) { - //cannot use css('visibility') because that gets the effective visiblity - //e.g. won't be able to set visibility on panels inside hidden panels - return element.style.visibility != 'hidden'; - }; - - $ax.visibility.SetIdVisible = function(id, visible) { - $ax.visibility.SetVisible(window.document.getElementById(id), visible); - // Hide lightbox if necessary - if(!visible) { - $jobj($ax.repeater.applySuffixToElementId(id, '_lightbox')).remove(); - $ax.flyoutManager.unregisterPanel(id, true); - } - }; - - var _setAllVisible = function(query, visible) { - for(var i = 0; i < query.length; i++) { - _visibility.SetVisible(query[i], visible); - } - } - - $ax.visibility.SetVisible = function (element, visible) { - //not setting display to none to optimize measuring - if(visible) { - if($(element).hasClass(HIDDEN_CLASS)) $(element).removeClass(HIDDEN_CLASS); - if($(element).hasClass(UNPLACED_CLASS)) $(element).removeClass(UNPLACED_CLASS); - element.style.display = ''; - element.style.visibility = 'inherit'; - } else { - element.style.display = 'none'; - element.style.visibility = 'hidden'; - } - }; - - var _setWidgetVisibility = $ax.visibility.SetWidgetVisibility = function (elementId, options) { - var visible = $ax.visibility.IsIdVisible(elementId); - // If limboed, just fire the next action then leave. - if(visible == options.value || _limboIds[elementId]) { - if(!_limboIds[elementId]) options.onComplete && options.onComplete(); - $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade); - return; - } - - options.containInner = true; - var query = $jobj(elementId); - var parentId = query.parent().attr('id'); - var axObj = $obj(elementId); - var preserveScroll = false; - var isPanel = $ax.public.fn.IsDynamicPanel(axObj.type); - var isLayer = $ax.public.fn.IsLayer(axObj.type); - if(!options.noContainer && (isPanel || isLayer)) { - //if dp has scrollbar, save its scroll position - if(isPanel && axObj.scrollbars != 'none') { - var shownState = $ax.dynamicPanelManager.getShownState(elementId); - preserveScroll = true; - //before hiding, try to save scroll location - if(!options.value && shownState) { - DPStateAndScroll[elementId] = { - shownId: shownState.attr('id'), - left: shownState.scrollLeft(), - top: shownState.scrollTop() - } - } - } - - _pushContainer(elementId, isPanel); - if(isPanel && !options.value) _tryResumeScrollForDP(elementId); - var complete = options.onComplete; - options.onComplete = function () { - if(complete) complete(); - _popContainer(elementId, isPanel); - //using containers stops mouseleave from firing on IE/Edge and FireFox - if(!options.value && $ax.event.mouseOverObjectId && (FIREFOX || $axure.browser.isEdge || IE)) { - var mouseOveredElement = $('#' + $ax.event.mouseOverObjectId); - if(mouseOveredElement && !mouseOveredElement.is(":visible")) { - var axObj = $obj($ax.event.mouseOverObjectId); - - if(($ax.public.fn.IsDynamicPanel(axObj.type) || $ax.public.fn.IsLayer(axObj.type)) && axObj.propagate) { - mouseOveredElement.trigger('mouseleave'); - } else mouseOveredElement.trigger('mouseleave.ixStyle'); - } - } - //after showing dp, restore the scoll position - if(isPanel && options.value) _tryResumeScrollForDP(elementId, true); - } - options.containerExists = true; - } - _setVisibility(parentId, elementId, options, preserveScroll); - - //set the visibility of the annotation box as well if it exists - var ann = document.getElementById(elementId + "_ann"); - if(ann) _visibility.SetVisible(ann, options.value); - - //set ref visibility for ref of flow shape, if that exists - var ref = document.getElementById(elementId + '_ref'); - if(ref) _visibility.SetVisible(ref, options.value); - - if(options.value && !MOBILE_DEVICE && $ax.adaptive.isDeviceMode()) _updateMobileScrollForWidgetShown(axObj); - }; - - var _updateMobileScrollForWidgetShown = function(widget) { - var isPanel = $ax.public.fn.IsDynamicPanel(widget.type); - var isLayer = $ax.public.fn.IsLayer(widget.type); - if (isPanel) { - var elementId = $id(widget); - var stateId = $ax.repeater.applySuffixToElementId(elementId, '_state0'); - $ax.dynamicPanelManager.updateMobileScroll(elementId, stateId, true); - if (!widget.diagrams) return; - for (var i = 0; i < widget.diagrams.length; ++i) { - var diagram = widget.diagrams[i]; - if (!diagram.objects) continue; - for (var j = 0; j < diagram.objects.length; ++j) { - _updateMobileScrollForWidgetShown(diagram.objects[j]); - } - } - } else if (isLayer) { - for (var i = 0; i < widget.objs.length; ++i) { - _updateMobileScrollForWidgetShown(widget.objs[i]); - } - } - } - - var _setVisibility = function(parentId, childId, options, preserveScroll) { - var wrapped = $jobj(childId); - var completeTotal = 1; - var visible = $ax.visibility.IsIdVisible(childId); - - if(visible == options.value) { - options.onComplete && options.onComplete(); - $ax.action.fireAnimationFromQueue(childId, $ax.action.queueTypes.fade); - return; - } - - var child = $jobj(childId); - var size = options.size || (options.containerExists ? $(child.children()[0]) : child); - - var isIdFitToContent = $ax.dynamicPanelManager.isIdFitToContent(parentId); - //fade and resize won't work together when there is a container... but we still needs the container for fit to content DPs - var needContainer = options.easing && options.easing != 'none' && (options.easing != 'fade' || isIdFitToContent); - var cullPosition = options.cull ? options.cull.css('position') : ''; - var containerExists = options.containerExists; - - var isFullWidth = $ax.dynamicPanelManager.isPercentWidthPanel($obj(childId)); - - // If fixed fit to content panel, then we must set size on it. It will be size of 0 otherwise, because container in it is absolute position. - var needSetSize = false; - var sizeObj = {}; - if(needContainer) { - var sizeId = ''; - if($ax.dynamicPanelManager.isIdFitToContent(childId)) sizeId = childId; - else { - var panelId = $ax.repeater.removeSuffixFromElementId(childId); - if($ax.dynamicPanelManager.isIdFitToContent(panelId)) sizeId = panelId; - } - - if(sizeId) { - needSetSize = true; - - sizeObj = $jobj(sizeId); - var newSize = options.cull || sizeObj; - var newAxSize = $ax('#' + newSize.attr('id')); - sizeObj.width(newAxSize.width()); - sizeObj.height(newAxSize.height()); - } - } - - var wrappedOffset = { left: 0, top: 0 }; - var visibleWrapped = wrapped; - if(needContainer) { - var childObj = $obj(childId); - if (options.cull) { - var axCull = $ax('#' + options.cull.attr('id')); - var containerWidth = axCull.width(); - var containerHeight = axCull.height(); - } else { - if (childObj && ($ax.public.fn.IsLayer(childObj.type))) {// || childObj.generateCompound)) { - var boundingRectangle = $ax('#' + childId).offsetBoundingRect(); - //var boundingRectangle = $ax.public.fn.getWidgetBoundingRect(childId); - wrappedOffset.left = boundingRectangle.left; - wrappedOffset.top = boundingRectangle.top; - containerWidth = boundingRectangle.width; - containerHeight = boundingRectangle.height; - } else if (childObj && childObj.generateCompound) { - var image = $jobj(childId + '_img'); - containerWidth = $ax.getNumFromPx(image.css('width')); - containerHeight = $ax.getNumFromPx(image.css('height')); - wrappedOffset.left = $ax.getNumFromPx(image.css('left')); - wrappedOffset.top = $ax.getNumFromPx(image.css('top')); - } else { - containerWidth = $ax('#' + childId).width(); - containerHeight = $ax('#' + childId).height(); - } - } - - var containerId = $ax.visibility.applyWidgetContainer(childId); -// var container = _makeContainer(containerId, options.cull || boundingRectangle, isFullWidth, options.easing == 'flip', wrappedOffset, options.containerExists); - var container = _makeContainer(containerId, containerWidth, containerHeight, isFullWidth, options.easing == 'flip', wrappedOffset, options.containerExists); - - if(options.containInner) { - wrapped = _wrappedChildren(containerExists ? $(child.children()[0]) : child); - - // Filter for visibile wrapped children - visibleWrapped = []; - for (var i = 0; i < wrapped.length; i++) if($ax.visibility.IsVisible(wrapped[i])) visibleWrapped.push(wrapped[i]); - visibleWrapped = $(visibleWrapped); - - completeTotal = visibleWrapped.length; - if(!containerExists) container.prependTo(child); - - // Offset items if necessary - if(!containerExists && (wrappedOffset.left != 0 || wrappedOffset.top != 0)) { - for(var i = 0; i < wrapped.length; i++) { - var inner = $(wrapped[i]); - inner.css('left', $ax.getNumFromPx(inner.css('left')) - wrappedOffset.left); - inner.css('top', $ax.getNumFromPx(inner.css('top')) - wrappedOffset.top); - // Parent layer is now size 0, so have to have to use conatiner since it's the real size. - // Should we use container all the time? This may make things easier for fit panels too. - size = container; - } - } - } else if(!containerExists) container.insertBefore(child); - if(!containerExists) wrapped.appendTo(container); - - if (options.value && options.containInner) { - //has to set children first because flip to show needs children invisible - _setAllVisible(visibleWrapped, false); - //_updateChildAlignment(childId); - _setAllVisible(child, true); - } - } - - var completeCount = 0; - var onComplete = function () { - completeCount++; - if (needContainer && completeCount == completeTotal) { - if ($ax.public.fn.isCompoundVectorHtml(container.parent()[0])) { - wrappedOffset.left = $ax.getNumFromPx(container.css('left')); - wrappedOffset.top = $ax.getNumFromPx(container.css('top')); - } - - if (options.containInner && !containerExists) { - if (wrappedOffset.left != 0 || wrappedOffset.top != 0) { - for (i = 0; i < wrapped.length; i++) { - inner = $(wrapped[i]); - if (!inner.hasClass('text')) { - inner.css('left', $ax.getNumFromPx(inner.css('left')) + wrappedOffset.left); - inner.css('top', $ax.getNumFromPx(inner.css('top')) + wrappedOffset.top); - } - } - } - - wrapped.filter('.text').css({ 'left': '', 'top': '' }); - } - - if(options.containInner && !options.value) { - _setAllVisible(child, false); - _setAllVisible(visibleWrapped, true); - } - - if(containerExists) { - if(!options.settingChild) container.css('position', 'relative;'); - } else { - wrapped.insertBefore(container); - container.remove(); - } - - if(childObj && $ax.public.fn.IsDynamicPanel(childObj.type) && window.modifiedDynamicPanleParentOverflowProp) { - child.css('overflow', 'hidden'); - window.modifiedDynamicPanleParentOverflowProp = false; - } - } - - //if(options.value) _updateChildAlignment(childId); - - if(!needContainer || completeTotal == completeCount) { - if(options.cull) options.cull.css('position', cullPosition); - - if(needSetSize) { - sizeObj.css('width', 'auto'); - sizeObj.css('height', 'auto'); - } - - options.onComplete && options.onComplete(); - - if(options.fire) { - $ax.event.raiseSyntheticEvent(childId, options.value ? 'onShow' : 'onHide'); - $ax.action.fireAnimationFromQueue(childId, $ax.action.queueTypes.fade); - } - } - }; - - // Nothing actually being animated, all wrapped elements invisible - if(!visibleWrapped.length) { - if(!options.easing || options.easing == 'none') { - $ax.visibility.SetIdVisible(childId, options.value); - completeTotal = 1; - onComplete(); - } else { - window.setTimeout(function() { - completeCount = completeTotal - 1; - onComplete(); - },options.duration); - } - - return; - } - - if(!options.easing || options.easing == 'none') { - $ax.visibility.SetIdVisible(childId, options.value); - completeTotal = 1; - onComplete(); - } else if(options.easing == 'fade') { - if(options.value) { - if(preserveScroll) { - visibleWrapped.css('opacity', 0); - visibleWrapped.css('visibility', 'inherit'); - visibleWrapped.css('display', 'block'); - //was hoping we could just use fadein here, but need to set display before set scroll position - _tryResumeScrollForDP(childId); - visibleWrapped.animate({ opacity: 1 }, { - duration: options.duration, - easing: 'swing', - queue: false, - complete: function() { - $ax.visibility.SetIdVisible(childId, true); - visibleWrapped.css('opacity', ''); - onComplete(); - } - }); - } else { - // Can't use $ax.visibility.SetIdVisible, because we only want to set visible, we don't want to set display, fadeIn will handle that. - visibleWrapped.css('visibility', 'inherit'); - visibleWrapped.fadeIn({ - queue: false, - duration: options.duration, - complete: onComplete - }); - } - } else { - // Fading here is being strange... - visibleWrapped.animate({ opacity: 0 }, { duration: options.duration, easing: 'swing', queue: false, complete: function() { - $ax.visibility.SetIdVisible(childId, false); - visibleWrapped.css('opacity', ''); - - onComplete(); - }}); - } - } else if (options.easing == 'flip') { - //this container will hold - var trapScroll = _trapScrollLoc(childId); - var innerContainer = $('
    '); - innerContainer.attr('id', containerId + "_inner"); - innerContainer.data('flip', options.direction == 'left' || options.direction == 'right' ? 'y' : 'x'); - innerContainer.css({ - position: 'relative', - 'width': containerWidth, - 'height': containerHeight, - 'display': 'flex' - }); - - innerContainer.appendTo(container); - wrapped.appendTo(innerContainer); - - if(childObj && $ax.public.fn.IsDynamicPanel(childObj.type)) var containerDiv = child; - else containerDiv = parentId ? $jobj(parentId) : child.parent(); - - completeTotal = 1; - var flipdegree; - - var originForFlip = containerWidth / 2 + 'px ' + containerHeight / 2 + 'px'; - if (options.value) { - innerContainer.css({ - '-webkit-transform-origin': originForFlip, - '-ms-transform-origin': originForFlip, - 'transform-origin': originForFlip, - }); - - //options.value == true means in or show, note to get here, the element must be currently hidden to show, - // we need to first flip it +/- 90deg without animation (180 if we want to show the back of the flip) - switch(options.direction) { - case 'right': - case 'left': - _setRotateTransformation(innerContainer, _getRotateString(true, options.direction === 'right', options.showFlipBack)); - flipdegree = 'rotateY(0deg)'; - break; - case 'up': - case 'down': - _setRotateTransformation(innerContainer, _getRotateString(false, options.direction === 'up', options.showFlipBack)); - flipdegree = 'rotateX(0deg)'; - break; - } - - var onFlipShowComplete = function() { - var trapScroll = _trapScrollLoc(childId); - $ax.visibility.SetIdVisible(childId, true); - - wrapped.insertBefore(innerContainer); - innerContainer.remove(); - trapScroll(); - - onComplete(); - }; - - innerContainer.css({ - '-webkit-backface-visibility': 'hidden', - 'backface-visibility': 'hidden' - }); - - child.css({ - 'display': '', - 'visibility': 'inherit' - }); - - visibleWrapped.css({ - 'display': '', - 'visibility': 'inherit' - }); - - innerContainer.css({ - '-webkit-transition-duration': options.duration + 'ms', - 'transition-duration': options.duration + 'ms' - }); - - if(preserveScroll) _tryResumeScrollForDP(childId); - _setRotateTransformation(innerContainer, flipdegree, containerDiv, onFlipShowComplete, options.duration, true); - } else { //hide or out - innerContainer.css({ - '-webkit-transform-origin': originForFlip, - '-ms-transform-origin': originForFlip, - 'transform-origin': originForFlip, - }); - switch(options.direction) { - case 'right': - case 'left': - flipdegree = _getRotateString(true, options.direction !== 'right', options.showFlipBack); - break; - case 'up': - case 'down': - flipdegree = _getRotateString(false, options.direction !== 'up', options.showFlipBack); - break; - } - - var onFlipHideComplete = function() { - var trapScroll = _trapScrollLoc(childId); - wrapped.insertBefore(innerContainer); - $ax.visibility.SetIdVisible(childId, false); - - innerContainer.remove(); - trapScroll(); - - onComplete(); - }; - - innerContainer.css({ - '-webkit-backface-visibility': 'hidden', - 'backface-visibility': 'hidden', - '-webkit-transition-duration': options.duration + 'ms', - 'transition-duration': options.duration + 'ms' - }); - - if(preserveScroll) _tryResumeScrollForDP(childId); - _setRotateTransformation(innerContainer, flipdegree, containerDiv, onFlipHideComplete, options.duration, true); - } - - trapScroll(); - } else { - // Because the move is gonna fire on annotation and ref too, need to update complete total - completeTotal = $addAll(visibleWrapped, childId).length; - if(options.value) { - _slideStateIn(childId, childId, options, size, false, onComplete, visibleWrapped, preserveScroll); - } else { - var tops = []; - var lefts = []; - for(var i = 0; i < visibleWrapped.length; i++) { - var currWrapped = $(visibleWrapped[i]); - - tops.push(fixAuto(currWrapped, 'top')); - lefts.push(fixAuto(currWrapped, 'left')); - } - - var onOutComplete = function () { - //bring back SetIdVisible on childId for hiding lightbox - $ax.visibility.SetIdVisible(childId, false); - for(i = 0; i < visibleWrapped.length; i++) { - currWrapped = $(visibleWrapped[i]); - $ax.visibility.SetVisible(currWrapped[0], false); - currWrapped.css('top', tops[i]); - currWrapped.css('left', lefts[i]); - } - onComplete(); - }; - _slideStateOut(size, childId, options, onOutComplete, visibleWrapped); - } - } - - // If showing, go through all rich text objects inside you, and try to redo alignment of them - //if(options.value && !options.containInner) { - // _updateChildAlignment(childId); - //} - }; - - // IE/Safari are giving auto here instead of calculating to for us. May need to calculate this eventually, but for now we can assume auto === 0px for the edge case found - var fixAuto = function (jobj, prop) { - var val = jobj.css(prop); - return val == 'auto' ? '0px' : val; - }; - - var _getRotateString = function (y, neg, showFlipBack) { - // y means flip on y axis, or left/right, neg means flipping it left/down, and show back is for set panel state - // and will show the back of the widget (transparent) for the first half of a show, or second half of a hide. - return 'rotate' + (y ? 'Y' : 'X') + '(' + (neg ? '-' : '') + (showFlipBack ? 180 : IE ? 91 : 90) + 'deg)'; - } - - //var _updateChildAlignment = function(childId) { - // var descendants = $jobj(childId).find('.text'); - // for(var i = 0; i < descendants.length; i++) $ax.style.updateTextAlignmentForVisibility(descendants[i].id); - //}; - var _wrappedChildren = function (child) { - return child.children(); - //var children = child.children(); - //var valid = []; - //for(var i = 0; i < children.length; i++) if($ax.visibility.IsVisible(children[i])) valid.push(children[i]); - //return $(valid); - }; - - var requestAnimationFrame = window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || window.msRequestAnimationFrame || - function (callback) { - window.setTimeout(callback, 1000 / 60); - }; - - var _setRotateTransformation = function(elementsToSet, transformValue, elementParent, flipCompleteCallback, flipDurationMs, useAnimationFrame) { - if(flipCompleteCallback) { - //here we didn't use 'transitionend' event to fire callback - //when show/hide on one element, changing transition property will stop the event from firing - window.setTimeout(flipCompleteCallback, flipDurationMs); - } - - var trasformCss = { - '-webkit-transform': transformValue, - '-moz-transform': transformValue, - '-ms-transform': transformValue, - '-o-transform': transformValue, - 'transform': transformValue - }; - - if(useAnimationFrame) { - if(FIREFOX || CHROME) $('body').hide().show(0); //forces FF to render the animation - requestAnimationFrame(function() { - elementsToSet.css(trasformCss); - }); - } else elementsToSet.css(trasformCss); - - //when deal with dynamic panel, we need to set it's parent's overflow to visible to have the 3d effect - //NOTE: we need to set this back when both flips finishes in DP, to prevents one animation finished first and set this back - if(elementParent && elementParent.css('overflow') === 'hidden') { - elementParent.css('overflow', 'visible'); - window.modifiedDynamicPanleParentOverflowProp = true; - } - }; - - $ax.visibility.GetPanelState = function(id) { - var children = $ax.visibility.getRealChildren($jobj(id).children()); - for(var i = 0; i < children.length; i++) { - if(children[i].style && $ax.visibility.IsVisible(children[i])) return children[i].id; - } - return ''; - }; - - var containerCount = {}; - $ax.visibility.SetPanelState = function(id, stateId, easingOut, directionOut, durationOut, easingIn, directionIn, durationIn, showWhenSet) { - var show = !$ax.visibility.IsIdVisible(id) && showWhenSet; - if(show) $ax.visibility.SetIdVisible(id, true); - - // Exit here if already at desired state. - if($ax.visibility.IsIdVisible(stateId)) { - if(show) { - $ax.event.raiseSyntheticEvent(id, 'onShow'); - // If showing size changes and need to update parent panels - $ax.dynamicPanelManager.fitParentPanel(id); - } - - $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.setState); - return; - } - - var hasEasing = easingIn != 'none' || easingOut != 'none'; - if(hasEasing) _pushContainer(id, true); - - var state = $jobj(stateId); - var oldStateId = $ax.visibility.GetPanelState(id); - var oldState = $jobj(oldStateId); - - var isFixed = $jobj(id).css('position') == 'fixed'; - //pin to browser - if(isFixed) $ax.dynamicPanelManager.adjustFixed(id, oldState.width(), oldState.height(), state.width(), state.height()); - - _bringPanelStateToFront(id, stateId, oldStateId, easingIn == 'none' || durationIn == '0'); - - var fitToContent = $ax.dynamicPanelManager.isIdFitToContent(id); - var resized = false; - if(fitToContent) { - // Set resized - //var width = state.width(); - //var height = state.height(); - var newBoundingRect = $ax('#' + stateId).childrenBoundingRect(); - var width = newBoundingRect.right; - var height = newBoundingRect.bottom; - var oldBoundingRect = $ax('#' + id).size(); - var oldWidth = oldBoundingRect.right; - var oldHeight = oldBoundingRect.bottom; - resized = width != oldWidth || height != oldHeight; - //resized = width != oldState.width() || height != oldState.height(); - - $ax.visibility.setResizedSize(id, $obj(id).percentWidth ? oldWidth : width, height); - } - - //edge case for sliding - var movement = (directionOut == 'left' || directionOut == 'up' || state.children().length == 0) && oldState.children().length != 0 ? oldState : state; - var onCompleteCount = 0; - var onComplete = function () { - //move this call from _setVisibility() for animate out. - //Because this will make the order of dp divs consistence: the showing panel is always in front after both animation finished - //tested in the cases where one panel is out/show slower/faster/same time/instantly. - _bringPanelStateToFront(id, stateId, oldStateId, false); - - if (window.modifiedDynamicPanleParentOverflowProp) { - var parent = id ? $jobj(id) : child.parent(); - parent.css('overflow', 'hidden'); - window.modifiedDynamicPanleParentOverflowProp = false; - } - - $ax.dynamicPanelManager.fitParentPanel(id); - $ax.dynamicPanelManager.updatePanelPercentWidth(id); - $ax.dynamicPanelManager.updatePanelContentPercentWidth(id); - $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.setState); - $ax.event.raiseSyntheticEvent(id, "onPanelStateChange"); - $ax.event.leavingState(oldStateId); - if (hasEasing) _popContainer(id, true); - - $ax.dynamicPanelManager.updateMobileScroll(id, stateId, true); - }; - // Must do state out first, so if we cull by new state, location is correct - _setVisibility(id, oldStateId, { - value: false, - easing: easingOut, - direction: directionOut, - duration: durationOut, - containerExists: true, - onComplete: function() { -// if(easingIn !== 'flip') _bringPanelStateToFront(id, stateId); - if (++onCompleteCount == 2) onComplete(); - }, - settingChild: true, - size: movement, - //cull for - cull: easingOut == 'none' || state.children().length == 0 ? oldState : state, - showFlipBack: true - }); - - _setVisibility(id, stateId, { - value: true, - easing: easingIn, - direction: directionIn, - duration: durationIn, - containerExists: true, - onComplete: function () { -// if (easingIn === 'flip') _bringPanelStateToFront(id, stateId); - if (++onCompleteCount == 2) onComplete(); - }, - settingChild: true, - //size for offset - size: movement, - showFlipBack: true - }); - - if(show) $ax.event.raiseSyntheticEvent(id, 'onShow'); - if(resized) $ax.event.raiseSyntheticEvent(id, 'onResize'); - }; - - var containedFixed = {}; - var _pushContainer = _visibility.pushContainer = function(id, panel) { - var count = containerCount[id]; - if(count) containerCount[id] = count + 1; - else { - var trapScroll = _trapScrollLoc(id); - var jobj = $jobj(id); - var children = jobj.children(); - var css = { - position: 'relative', - top: 0, - left: 0 - }; - - if(!panel) { - var boundingRect = $ax('#' + id).offsetBoundingRect(); - //var boundingRect = $axure.fn.getWidgetBoundingRect(id); - css.top = boundingRect.top; - css.left = boundingRect.left; - } - - var container = $('
    '); - container.attr('id', ''); // Placeholder id, so we won't try to recurse the container until it is ready - container.css(css); - //container.append(jobj.children()); - jobj.append(container); - containerCount[id] = 1; - - // Panel needs to wrap children - if(panel) { - for(var i = 0; i < children.length; i++) { - var child = $(children[i]); - var childContainer = $('
    '); - childContainer.attr('id', $ax.visibility.applyWidgetContainer(child.attr('id'))); - childContainer.css(css); - child.after(childContainer); - childContainer.append(child); - container.append(childContainer); - } - } else { - var focus = _getCurrFocus(); - if(focus) $ax.event.addSuppressedEvent($ax.repeater.removeSuffixFromElementId(focus), 'OnLostFocus'); - - // Layer needs to fix top left - var childIds = $ax('#' + id).getChildren()[0].children; - for(var i = 0; i < childIds.length; i++) { - var childId = childIds[i]; - var childObj = $jobj(childId); - var fixedInfo = $ax.dynamicPanelManager.getFixedInfo(childId); - if(fixedInfo.fixed) { - var axObj = $ax('#' + childId); - var viewportLocation = axObj.viewportLocation(); - var left = viewportLocation.left; - var top = viewportLocation.top; - //var left = axObj.left(); - //var top = axObj.top(); - containedFixed[childId] = { left: left, top: top, fixed: fixedInfo }; - childObj.css('left', left); - childObj.css('top', top); - childObj.css('margin-left', 0); - childObj.css('margin-top', 0); - childObj.css('right', 'auto'); - childObj.css('bottom', 'auto'); - childObj.css('position', 'absolute'); - } - var cssChange = { - left: '-=' + css.left, - top: '-=' + css.top - }; - if($ax.getTypeFromElementId(childId) == $ax.constants.LAYER_TYPE) { - _pushContainer(childId, false); - $ax.visibility.applyWidgetContainer(childId, true).css(cssChange); - } else { - //if ($ax.public.fn.isCompoundVectorHtml(jobj[0])) { - // var grandChildren = jobj[0].children; - // //while (grandChildren.length > 0 && grandChildren[0].id.indexOf('container') >= 0) grandChildren = grandChildren[0].children; - - // for (var j = 0; j < grandChildren.length; j++) { - // var grandChildId = grandChildren[j].id; - // if (grandChildId.indexOf(childId + 'p') >= 0 || grandChildId.indexOf('_container') >= 0) $jobj(grandChildId).css(cssChange); - // } - //} else - // Need to include ann and ref in move. - childObj = $addAll(childObj, childId); - childObj.css(cssChange); - } - - container.append(childObj); - } - _setCurrFocus(focus); - } - container.attr('id', $ax.visibility.applyWidgetContainer(id)); // Setting the correct final id for the container - trapScroll(); - } - }; - - var _popContainer = _visibility.popContainer = function (id, panel) { - var count = containerCount[id]; - if(!count) return; - count--; - containerCount[id] = count; - if(count != 0) return; - - var trapScroll = _trapScrollLoc(id); - - var jobj = $jobj(id); - var container = $ax.visibility.applyWidgetContainer(id, true); - - // If layer is at bottom or right of page, unwrapping could change scroll by temporarily reducting page size. - // To avoid this, we let container persist on page, with the size it is at this point, and don't remove container completely - // until the children are back to their proper locations. - var size = $ax('#' + id).size(); - container.css('width', size.width); - container.css('height', size.height); - var focus = _getCurrFocus(); - if(focus) $ax.event.addSuppressedEvent($ax.repeater.removeSuffixFromElementId(focus), 'OnLostFocus'); - jobj.append(container.children()); - _setCurrFocus(focus); - $('body').first().append(container); - - // Layer doesn't have children containers to clean up - if(panel) { - var children = jobj.children(); - for(var i = 0; i < children.length; i++) { - var childContainer = $(children[i]); - var child = $(childContainer.children()[0]); - childContainer.after(child); - childContainer.remove(); - } - } else { - var left = container.css('left'); - var top = container.css('top'); - var childIds = $ax('#' + id).getChildren()[0].children; - for (var i = 0; i < childIds.length; i++) { - var childId = childIds[i]; - var cssChange = { - left: '+=' + left, - top: '+=' + top - }; - if($ax.getTypeFromElementId(childId) == $ax.constants.LAYER_TYPE) { - $ax.visibility.applyWidgetContainer(childId, true).css(cssChange); - _popContainer(childId, false); - } else { - var childObj = $jobj(childId); - // if ($ax.public.fn.isCompoundVectorHtml(jobj[0])) { - // var grandChildren = jobj[0].children; - // //while (grandChildren.length > 0 && grandChildren[0].id.indexOf('container') >= 0) grandChildren = grandChildren[0].children; - // for (var j = 0; j < grandChildren.length; j++) { - // var grandChildId = grandChildren[j].id; - // if (grandChildId.indexOf(childId + 'p') >= 0 || grandChildId.indexOf('_container') >= 0) $jobj(grandChildId).css(cssChange); - // } - //} else - - var allObjs = $addAll(childObj, childId); // Just include other objects for initial css. Fixed panels need to be dealt with separately. - allObjs.css(cssChange); - - var fixedInfo = containedFixed[childId]; - if(fixedInfo) { - delete containedFixed[childId]; - - childObj.css('position', 'fixed'); - var deltaX = $ax.getNumFromPx(childObj.css('left')) - fixedInfo.left; - var deltaY = $ax.getNumFromPx(childObj.css('top')) - fixedInfo.top; - - fixedInfo = fixedInfo.fixed; - if(fixedInfo.horizontal == 'left') childObj.css('left', fixedInfo.x + deltaX); - else if(fixedInfo.horizontal == 'center') { - childObj.css('left', '50%'); - childObj.css('margin-left', fixedInfo.x + deltaX); - } else { - childObj.css('left', 'auto'); - childObj.css('right', fixedInfo.x - deltaX); - } - - if(fixedInfo.vertical == 'top') childObj.css('top', fixedInfo.y + deltaY); - else if(fixedInfo.vertical == 'middle') { - childObj.css('top', '50%'); - childObj.css('margin-top', fixedInfo.y + deltaY); - } else { - childObj.css('top', 'auto'); - childObj.css('bottom', fixedInfo.y - deltaY); - } - - $ax.dynamicPanelManager.updatePanelPercentWidth(childId); - $ax.dynamicPanelManager.updatePanelContentPercentWidth(childId); - - } - } - } - } - container.remove(); - trapScroll(); - }; - - var _trapScrollLoc = function(id) { - var locs = {}; - var states = $jobj(id).find('.panel_state'); - for(var i = 0; i < states.length; i++) { - var state = $(states[i]); - locs[state.attr('id')] = { x: state.scrollLeft(), y: state.scrollTop() }; - } - return function() { - for(var key in locs) { - var state = $jobj(key); - state.scrollLeft(locs[key].x); - state.scrollTop(locs[key].y); - } - }; - } - - var _getCurrFocus = function () { - // Only care about focused a tags and inputs - var id = window.lastFocusedClickable && window.lastFocusedClickable.id; - - if(!id) return id; - var jobj = $(window.lastFocusedClickable); - return jobj.is('a') || jobj.is('input') ? id : ''; - } - - var _setCurrFocus = function(id) { - if(id) { - // This is really just needed for IE, so if this causes issues on other browsers, try adding that check here - var trap = $ax.event.blockEvent($ax.repeater.removeSuffixFromElementId(id), 'OnFocus'); - window.setTimeout(function () { - $jobj(id).focus(); - trap(); - }, 0); - } - } - - //use this to save & restore DP's scroll position when show/hide - //key => dp's id (not state's id, because it seems we can change state while hiding) - //value => first state's id & scroll position - //we only need to store one scroll position for one DP, and remove the key after shown. - var DPStateAndScroll = {} - var _tryResumeScrollForDP = function (dpId, deleteId) { - var scrollObj = DPStateAndScroll[dpId]; - if(scrollObj) { - var shownState = document.getElementById(scrollObj.shownId); - if(scrollObj.left) shownState.scrollLeft = scrollObj.left; - if(scrollObj.top) shownState.scrollTop = scrollObj.top; - if(deleteId) delete DPStateAndScroll[dpId]; - } - }; -// var _makeContainer = function (containerId, rect, isFullWidth, isFlip, offset, containerExists) { - var _makeContainer = function (containerId, width, height, isFullWidth, isFlip, offset, containerExists) { - if(containerExists) var container = $jobj(containerId); - else { - container = $('
    '); - container.attr('id', containerId); - } - var css = { - position: 'absolute', - width: width, - height: height, - display: 'flex' - }; - - if(!containerExists) { - // If container exists, may be busy updating location. Will init and update it correctly. - css.top = offset.top; - css.left = offset.left; - } - - - if(isFlip) { - css.perspective = '800px'; - css.webkitPerspective = "800px"; - css.mozPerspective = "800px"; - //adding this to make Edge happy - css['transform-style'] = 'preserve-3d'; - } else css.overflow = 'hidden'; - - //perspective on container will give us 3d effect when flip - //if(!isFlip) css.overflow = 'hidden'; - - // Rect should be a jquery not axquery obj - //_getFixedCss(css, rect.$ ? rect.$() : rect, fixedInfo, isFullWidth); - - container.css(css); - return container; - }; - - var CONTAINER_SUFFIX = _visibility.CONTAINER_SUFFIX = '_container'; - var CONTAINER_INNER = CONTAINER_SUFFIX + '_inner'; - _visibility.getWidgetFromContainer = function(id) { - var containerIndex = id.indexOf(CONTAINER_SUFFIX); - if(containerIndex == -1) return id; - return id.substr(0, containerIndex) + id.substr(containerIndex + CONTAINER_SUFFIX.length); - }; - - // Apply container to widget id if necessary. - // returnJobj: True if you want the jquery object rather than id returned - // skipCheck: True if you want the query returned reguardless of container existing - // checkInner: True if inner container should be checked - _visibility.applyWidgetContainer = function (id, returnJobj, skipCheck, checkInner) { - // If container exists, just return (return query if requested) - if(id.indexOf(CONTAINER_SUFFIX) != -1) return returnJobj ? $jobj(id) : id; - - // Get desired id, and return it if query is not desired - var containerId = $ax.repeater.applySuffixToElementId(id, checkInner ? CONTAINER_INNER : CONTAINER_SUFFIX); - if(!returnJobj) return containerId; - - // If skipping check or container exists, just return innermost container requested - var container = $jobj(containerId); - if(skipCheck || container.length) return container; - // If inner container was not checked, then no more to check, return query for widget - if(!checkInner) return $jobj(id); - - // If inner container was checked, check for regular container still - container = $jobj($ax.repeater.applySuffixToElementId(id, CONTAINER_SUFFIX)); - return container.length ? container : $jobj(id); - }; - - _visibility.isContainer = function(id) { - return id.indexOf(CONTAINER_SUFFIX) != -1; - }; - - _visibility.getRealChildren = function(query) { - while(query.length && $(query[0]).attr('id').indexOf(CONTAINER_SUFFIX) != -1) query = query.children(); - return query; - }; - - //var _getFixedCss = function(css, rect, fixedInfo, isFullWidth) { - // // todo: **mas** make sure this is ok - // if(fixedInfo.fixed) { - // css.position = 'fixed'; - - // if(fixedInfo.horizontal == 'left') css.left = fixedInfo.x; - // else if(fixedInfo.horizontal == 'center') { - // css.left = isFullWidth ? '0px' : '50%'; - // css['margin-left'] = fixedInfo.x; - // } else if(fixedInfo.horizontal == 'right') { - // css.left = 'auto'; - // css.right = fixedInfo.x; - // } - - // if(fixedInfo.vertical == 'top') css.top = fixedInfo.y; - // else if(fixedInfo.vertical == 'middle') { - // css.top = '50%'; - // css['margin-top'] = fixedInfo.y; - // } else if(fixedInfo.vertical == 'bottom') { - // css.top = 'auto'; - // css.bottom = fixedInfo.y; - // } - // } else { - // css.left = Number(rect.css('left').replace('px', '')) || 0; - // css.top = Number(rect.css('top').replace('px', '')) || 0; - // } - //}; - - var _slideStateOut = function (container, stateId, options, onComplete, jobj) { - var directionOut = options.direction; - var axObject = $ax('#' + container.attr('id')); - var width = axObject.width(); - var height = axObject.height(); - - _blockSetMoveIds = true; - - if(directionOut == "right") { - $ax.move.MoveWidget(stateId, width, 0, options, false, onComplete, false, jobj, true); - } else if(directionOut == "left") { - $ax.move.MoveWidget(stateId, -width, 0, options, false, onComplete, false, jobj, true); - } else if(directionOut == "up") { - $ax.move.MoveWidget(stateId, 0, -height, options, false, onComplete, false, jobj, true); - } else if(directionOut == "down") { - $ax.move.MoveWidget(stateId, 0, height, options, false, onComplete, false, jobj, true); - } - - _blockSetMoveIds = false; - }; - - var _slideStateIn = function (id, stateId, options, container, makePanelVisible, onComplete, jobj, preserveScroll) { - var directionIn = options.direction; - var axObject = $ax('#' +container.attr('id')); - var width = axObject.width(); - var height = axObject.height(); - - if (makePanelVisible) $ax.visibility.SetIdVisible(id, true); - for (i = 0; i < jobj.length; i++) $ax.visibility.SetVisible(jobj[i], true); - - for(var i = 0; i < jobj.length; i++) { - var child = $(jobj[i]); - var oldTop = $ax.getNumFromPx(fixAuto(child, 'top')); - var oldLeft = $ax.getNumFromPx(fixAuto(child, 'left')); - if (directionIn == "right") { - child.css('left', oldLeft - width + 'px'); - } else if(directionIn == "left") { - child.css('left', oldLeft + width + 'px'); - } else if(directionIn == "up") { - child.css('top', oldTop + height + 'px'); - } else if(directionIn == "down") { - child.css('top', oldTop - height + 'px'); - } - } - - if(preserveScroll) _tryResumeScrollForDP(id); - - _blockSetMoveIds = true; - - if(directionIn == "right") { - $ax.move.MoveWidget(stateId, width, 0, options, false, onComplete, false, jobj, true); - } else if(directionIn == "left") { - $ax.move.MoveWidget(stateId, -width, 0, options, false, onComplete, false, jobj, true); - } else if(directionIn == "up") { - $ax.move.MoveWidget(stateId, 0, -height, options, false, onComplete, false, jobj, true); - } else if(directionIn == "down") { - $ax.move.MoveWidget(stateId, 0, height, options, false, onComplete, false, jobj, true); - } - - _blockSetMoveIds = false; - }; - - $ax.visibility.GetPanelStateId = function(dpId, index) { - var itemNum = $ax.repeater.getItemIdFromElementId(dpId); - var panelStateId = $ax.repeater.getScriptIdFromElementId(dpId) + '_state' + index; - return $ax.repeater.createElementId(panelStateId, itemNum); - }; - - $ax.visibility.GetPanelStateCount = function(id) { - return $ax.visibility.getRealChildren($jobj(id).children()).filter("[id*='_state']").length; - }; - - var _bringPanelStateToFront = function (dpId, stateId, oldStateId, oldInFront) { - var panel = $jobj(dpId); - var frontId = oldInFront ? oldStateId : stateId; - if(containerCount[dpId]) { - frontId = $ax.visibility.applyWidgetContainer(frontId); - panel = $ax.visibility.applyWidgetContainer(dpId, true, false, true); - } - $jobj(frontId).appendTo(panel); - //when bring a panel to front, it will be focused, and the previous front panel should fire blur event if it's lastFocusedClickableSelector - //ie(currently 11) and firefox(currently 34) doesn't fire blur event, this is the hack to fire it manually - if((IE || FIREFOX) && window.lastFocusedClickable && $ax.event.getFocusableWidgetOrChildId(window.lastFocusedControl) == window.lastFocusedClickable.id) { - // Only need to do this if the currently focused widget is in the panel state that is being hidden. - if($jobj(oldStateId).find('#' + window.lastFocusedClickable.id.split('_')[0]).length) $(window.lastFocusedClickable).triggerHandler('blur'); - } - }; - - var _limboIds = _visibility.limboIds = {}; - // limboId's is a dictionary of id->true, essentially a set. - var _addLimboAndHiddenIds = $ax.visibility.addLimboAndHiddenIds = function(newLimboIds, newHiddenIds, query, skipRepeater) { - var limboedByMaster = {}; - for(var key in newLimboIds) { - if (!$ax.public.fn.IsReferenceDiagramObject($ax.getObjectFromElementId(key).type)) continue; - var ids = $ax.model.idsInRdoToHideOrLimbo(key); - for(var i = 0; i < ids.length; i++) limboedByMaster[ids[i]] = true; - } - - var hiddenByMaster = {}; - for(key in newHiddenIds) { - if (!$ax.public.fn.IsReferenceDiagramObject($ax.getObjectFromElementId(key).type)) continue; - ids = $ax.model.idsInRdoToHideOrLimbo(key); - for(i = 0; i < ids.length; i++) hiddenByMaster[ids[i]] = true; - } - - // Extend with children of rdos - newLimboIds = $.extend(newLimboIds, limboedByMaster); - newHiddenIds = $.extend(newHiddenIds, hiddenByMaster); - - // something is only visible if it's not hidden and limboed - query.each(function(diagramObject, elementId) { - // Rdos already handled, contained widgets are limboed by the parent, and sub menus should be ignored - if(diagramObject.isContained || $ax.public.fn.IsReferenceDiagramObject(diagramObject.type) || $ax.public.fn.IsTableCell(diagramObject.type) || $jobj(elementId).hasClass('sub_menu')) return; - if(diagramObject.type == 'table' && $jobj(elementId).parent().hasClass('ax_menu')) return; - if(skipRepeater) { - // Any item in a repeater should return - if($ax.getParentRepeaterFromElementIdExcludeSelf(elementId)) return; - } - - var scriptId = $ax.repeater.getScriptIdFromElementId(elementId); - var shouldBeVisible = Boolean(!newLimboIds[scriptId] && !newHiddenIds[scriptId]); - var isVisible = Boolean(_isIdVisible(elementId)); - if(shouldBeVisible != isVisible) { - _setWidgetVisibility(elementId, { value: shouldBeVisible, noContainer: true }); - } - }); - - _limboIds = _visibility.limboIds = $.extend(_limboIds, newLimboIds); - - }; - - var _clearLimboAndHidden = $ax.visibility.clearLimboAndHidden = function(ids) { - _limboIds = _visibility.limboIds = {}; - }; - - $ax.visibility.clearLimboAndHiddenIds = function(ids) { - for(var i = 0; i < ids.length; i++) { - var scriptId = $ax.repeater.getScriptIdFromElementId(ids[i]); - delete _limboIds[scriptId]; - } - }; - - $ax.visibility.resetLimboAndHiddenToDefaults = function (query) { - if(!query) query = $ax('*'); - _clearLimboAndHidden(); - _addLimboAndHiddenIds(_defaultLimbo, _defaultHidden, query); - }; - - $ax.visibility.isScriptIdLimbo = function(scriptId) { - if(_limboIds[scriptId]) return true; - - var repeater = $ax.getParentRepeaterFromScriptId(scriptId); - if(!repeater) return false; - - var itemId = $ax.getItemIdsForRepeater(repeater)[0]; - return _limboIds[$ax.repeater.createElementId(scriptId, itemId)]; - } - - $ax.visibility.isElementIdLimboOrInLimboContainer = function (elementId) { - var parent = document.getElementById(elementId); - while(parent) { - var scriptId = $ax.repeater.getScriptIdFromElementId($(parent).attr('id')); - if(_limboIds[scriptId]) return true; - parent = parent.parentElement; - } - return false; - } - - var _blockSetMoveIds = false; - var _movedIds = _visibility.movedIds = {}; - var _resizedIds = _visibility.resizedIds = {}; - var _rotatedIds = _visibility.rotatedIds = {}; - - $ax.visibility.getMovedLocation = function(scriptId) { - return _movedIds[scriptId]; - - //var repeater = $ax.getParentRepeaterFromScriptId(scriptId); - //if (!repeater) return false; - - //var itemId = $ax.getItemIdsForRepeater(repeater)[0]; - //return _movedIds[$ax.repeater.createElementId(scriptId, itemId)]; - }; - - $ax.visibility.setMovedLocation = function (scriptId, left, top) { - if ($jobj(scriptId).css('position') == 'fixed') return; - _movedIds[scriptId] = { left: left, top: top }; - }; - - $ax.visibility.moveMovedLocation = function (scriptId, deltaLeft, deltaTop) { - if(_blockSetMoveIds) return false; - - var offsetLocation = $ax('#' + scriptId).offsetLocation(); - $ax.visibility.setMovedLocation(scriptId, offsetLocation.x + deltaLeft, offsetLocation.y + deltaTop); - - if($ax.getTypeFromElementId(scriptId) == $ax.constants.LAYER_TYPE) { - var childIds = $ax('#' + scriptId).getChildren()[0].children; - for (var i = 0; i < childIds.length; i++) { - $ax.visibility.moveMovedLocation(childIds[i], deltaLeft, deltaTop); - } - } - }; - - $ax.visibility.getResizedSize = function(scriptId) { - return _resizedIds[scriptId]; - - //var repeater = $ax.getParentRepeaterFromScriptId(scriptId); - //if (!repeater) return false; - - //var itemId = $ax.getItemIdsForRepeater(repeater)[0]; - //return _resizedIds[$ax.repeater.createElementId(scriptId, itemId)]; - }; - - $ax.visibility.setResizedSize = function(scriptId, width, height) { - _resizedIds[scriptId] = { width: width, height: height }; - }; - - $ax.visibility.getRotatedAngle = function (scriptId) { - return _rotatedIds[scriptId]; - }; - - $ax.visibility.setRotatedAngle = function (scriptId, rotation) { - _rotatedIds[scriptId] = rotation; - }; - - $ax.visibility.clearMovedAndResized = function () { - _movedIds = _visibility.movedIds = {}; - _resizedIds = _visibility.resizedIds = {}; - _rotatedIds = _visibility.rotatedIds = {}; - }; - - $ax.visibility.clearMovedAndResizedIds = function (elementIds) { - for (var i = 0; i < elementIds.length; i++) { - var id = elementIds[i]; - delete _movedIds[id]; - delete _resizedIds[id]; - delete _rotatedIds[id]; - } - }; - - $ax.visibility.initialize = function() { - // initialize initial visible states - $('.' + HIDDEN_CLASS).each(function (index, diagramObject) { - _defaultHidden[$ax.repeater.getScriptIdFromElementId(diagramObject.id)] = true; - }); - - $('.' + UNPLACED_CLASS).each(function (index, diagramObject) { - _defaultLimbo[$ax.repeater.getScriptIdFromElementId(diagramObject.id)] = true; - }); - - _addLimboAndHiddenIds(_defaultLimbo, _defaultHidden, $ax('*'), true); - }; - - _visibility.initRepeater = function(repeaterId) { - var html = $('
    '); - html.append($jobj(repeaterId + '_script').html()); - - html.find('.' + HIDDEN_CLASS).each(function (index, element) { - _defaultHidden[$ax.repeater.getScriptIdFromElementId(element.id)] = true; - }); - - html.find('.' + UNPLACED_CLASS).each(function (index, element) { - _defaultLimbo[$ax.repeater.getScriptIdFromElementId(element.id)] = true; - }); - } - - var HIDDEN_CLASS = _visibility.HIDDEN_CLASS = 'ax_default_hidden'; - var UNPLACED_CLASS = _visibility.UNPLACED_CLASS = 'ax_default_unplaced'; - -}); \ No newline at end of file diff --git a/web/main/static/resources/scripts/base.js b/web/main/static/resources/scripts/base.js index c906600..c625c0f 100644 --- a/web/main/static/resources/scripts/base.js +++ b/web/main/static/resources/scripts/base.js @@ -37,11 +37,57 @@ function set_select_data(select_ele_id,datas){ //设定选项选中状态 function set_select_selct(select_ele_id,option_str){ + let bfind = false; const select_Ele = document.getElementById(select_ele_id); for(let i=0;i< select_Ele.options.length;i++){ if(select_Ele.options[i].value === option_str){ select_Ele.options[i].selected = true; + bfind = true; break; } } -} \ No newline at end of file + return bfind; +} + +//将输入框内容转换为单精度型,若转换失败则返回0 -- 若需要整型,parseInt +function getInputValueAsFloat(id) { + var value = document.getElementById(id).value; + return value ? parseFloat(value) : 0; +} + +//正则匹配IP是否合法 return true,false +function isValidIP(ip) { + const ipRegex = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$/; + return ipRegex.test(ip); +} + +//post提交JSON数据 +function postJson(url,data){ + +} + +//post提交From数据 -- 返回数据是JSON +function postFrom(url,data){ + fetch(url, { + method: 'POST', + body: data, + }) + .then(response => response.json()) + .then(data => { + const istatus = data.status; + alert(data.msg); + if(istatus == 1 ){ + fetchModelData(); + $('#updateMM').modal('hide'); + } + }) + .catch(error => { + console.error('Error:', error); + alert('升级失败,请重试。'); + btn.disabled = false; + }); +} + +//get请求数据 +function getDATA(url){ +} diff --git a/web/main/static/resources/scripts/channel_manager.js b/web/main/static/resources/scripts/channel_manager.js index ee5f572..0459a03 100644 --- a/web/main/static/resources/scripts/channel_manager.js +++ b/web/main/static/resources/scripts/channel_manager.js @@ -20,28 +20,28 @@ let check_area = 0; let draw_status = false; //是否是绘制状态,处于绘制状态才能开始绘制 let b_img = false; //有没有加载图片成功,如果没有初始化的时候就不绘制线条了。 let points = []; - +//布防计划 document.addEventListener('DOMContentLoaded', function () { - fetchChannelData(); //初始化页面元素数据 + fetchChannelData(); //初始化通道管理页面元素数据 document.getElementById('searchButton').addEventListener('click', function () { performSearch(); }); - //新增通道 + //新增通道模块--保存按钮 document.getElementById('saveButton').addEventListener('click', function () { addChannel(1); }); - //修改通道 + //修改通道模块--保存按钮 document.getElementById('saveButton_cc').addEventListener('click', function () { addChannel(2); }); - //算法配置 + //算法配置模块--取消按钮 document.getElementById('cancelButton_mx').addEventListener('click', function () { close_mx_model(); }); - //保存算法配置 + //保存算法配置--保存按钮 document.getElementById('saveButton_mx').addEventListener('click', function () { save_mx_model(); }); @@ -57,25 +57,28 @@ function addChannel(itype) { let cName; let Rtsp; let cid; + const spinnerOverlay = document.getElementById("spinnerOverlay"); + let saveButton = null; + let CNameInput = null; + let RTSPInput = null; + if(itype ==1){ - const saveButton = document.getElementById('saveButton'); - const CNameInput = document.getElementById('CNameInput'); - const RTSPInput = document.getElementById('RTSPInput'); + saveButton = document.getElementById('saveButton'); + CNameInput = document.getElementById('CNameInput'); + RTSPInput = document.getElementById('RTSPInput'); area = document.getElementById('areaSelect_M').value; - cName = CNameInput.value.trim(); - Rtsp = RTSPInput.value.trim(); cid = -1 } else if(itype ==2){ - const saveButton = document.getElementById('saveButton_cc'); - const CNameInput = document.getElementById('CNameInput_cc'); - const RTSPInput = document.getElementById('RTSPInput_cc'); + saveButton = document.getElementById('saveButton_cc'); + CNameInput = document.getElementById('CNameInput_cc'); + RTSPInput = document.getElementById('RTSPInput_cc'); area = document.getElementById('areaSelect_CC').value; - cName = CNameInput.value.trim(); - Rtsp = RTSPInput.value.trim(); cid = currentEditingRow.cells[0].innerText; } - + console.log("点击了保存按钮"); + cName = CNameInput.value.trim(); + Rtsp = RTSPInput.value.trim(); if(area === "请选择"){ alert('请选择所属区域'); } @@ -85,6 +88,8 @@ function addChannel(itype) { //发送视频链接接口 const url = '/api/channel/add'; const data = {"area":area,"cName":cName,"Rtsp":Rtsp,"cid":cid}; + // 显示 Spinners + spinnerOverlay.style.display = "flex"; // 发送 POST 请求 fetch(url, { method: 'POST', // 指定请求方法为 POST @@ -96,27 +101,19 @@ function addChannel(itype) { .then(response => response.json()) // 将响应解析为 JSON .then(data => { const istatus = data.status; - if(istatus === 0){ - alert(data.msg); // 使用 Modal 显示消息 - // 启用保存按钮 - saveButton.disabled = false; - return; - } - else{ - // 启用保存按钮 - saveButton.disabled = false; + saveButton.disabled = false; + alert(data.msg); // 使用 Modal 显示消息 + if(istatus == 1){ //刷新列表 fetchChannelData(); if(itype ==1){ //添加通道成功 $('#channelModal').modal('hide'); - alert("添加通道成功!"); // 使用 Modal 显示消息 } else if(itype==2){ //修改通道成功 currentEditingRow = null; $('#ChangeC').modal('hide'); - alert("修改通道成功!"); // 使用 Modal 显示消息 } } }) @@ -125,6 +122,10 @@ function addChannel(itype) { // 启用保存按钮 saveButton.disabled = false; return; + }) + .finally(()=>{ + // 隐藏 Spinners + spinnerOverlay.style.display = "none"; }); } else { alert('通道名称和RTSP地址不能为空'); @@ -132,12 +133,22 @@ function addChannel(itype) { } } -async function fetchChannelData() { //刷新通道数据 +//初始化通道管理页面元素数据 +async function fetchChannelData() { //获取通道相关信息(/api/channel/list),刷新通道表格控件数据 try { const response = await fetch(apiEndpoint); channelData = await response.json(); channelData_bak = channelData; - renderTable(); //读取通道list接口,刷新表格 + + url = "/api/channel/area/list" + area_response = await fetch(url); + areaDatas = await area_response.json(); + areaData = ["请选择"]; //清空下 + areaDatas.forEach((area) => { + areaData.push(area.area_name) + }); + + renderTable(); //刷新表格 renderPagination(); //刷新分页元素 renderAreaOptions(); //所属区域下来框 } catch (error) { @@ -145,6 +156,41 @@ async function fetchChannelData() { //刷新通道数据 } } +//刷新表单页面数据 +function renderTable() { + const tableBody = document.getElementById('table-body'); + tableBody.innerHTML = ''; + + const start = (currentPage - 1) * rowsPerPage; + const end = start + rowsPerPage; + const pageData = channelData.slice(start, end); + const surplus_count = rowsPerPage - pageData.length; + + pageData.forEach((channel) => { +// if(area_name!==channel.area_name){ //这里要求区域名称一样的要在一起 +// area_name = channel.area_name; +// areaData.push(area_name); +// } + const row = document.createElement('tr'); + row.innerHTML = ` + ${channel.ID} + ${channel.area_name} + ${channel.channel_name} + ${channel.ulr} + ${channel.model_name} + + + + + + `; + tableBody.appendChild(row); + row.querySelector('.modify-btn').addEventListener('click', () => modifyChannel(row)); + row.querySelector('.algorithm-btn').addEventListener('click', () => configureAlgorithm(row)); + row.querySelector('.delete-btn').addEventListener('click', () => deleteChannel(row)); + }); +} + //关键字查询数据 async function performSearch() { try { @@ -186,42 +232,7 @@ async function performSearch() { } } -//刷新表单页面数据 -function renderTable() { - const tableBody = document.getElementById('table-body'); - tableBody.innerHTML = ''; - - const start = (currentPage - 1) * rowsPerPage; - const end = start + rowsPerPage; - const pageData = channelData.slice(start, end); - const surplus_count = rowsPerPage - pageData.length; - let area_name = ""; - pageData.forEach((channel) => { - if(area_name!==channel.area_name){ //这里要求区域名称一样的要在一起 - area_name = channel.area_name; - areaData.push(area_name); - } - const row = document.createElement('tr'); - row.innerHTML = ` - ${channel.ID} - ${channel.area_name} - ${channel.channel_name} - ${channel.ulr} - ${channel.model_name} - - - - - - `; - tableBody.appendChild(row); - row.querySelector('.modify-btn').addEventListener('click', () => modifyChannel(row)); - row.querySelector('.algorithm-btn').addEventListener('click', () => configureAlgorithm(row)); - row.querySelector('.delete-btn').addEventListener('click', () => deleteChannel(row)); - }); -} - -//修改通道信息 +//点击修改按钮,显示修改通道信息模块 --只是显示 function modifyChannel(row) { // const cid = row.cells[0].innerText; const areaName = row.cells[1].innerText; @@ -245,7 +256,7 @@ function modifyChannel(row) { $('#ChangeC').modal('show'); } -//算法配置 -- 点击算法按钮 +//点击算法按钮,显示算法配置模块 --只是显示 function configureAlgorithm(row) { //获取当前行信息 currentEditingRow = row; @@ -258,8 +269,8 @@ function configureAlgorithm(row) { b_img = false; document.getElementById('but_hzqy').textContent = "绘制区域"; //开始初始化算法管理模块 - show_channel_img(cid); //显示一帧图片 -- 获取不到图片就是黑画面 - show_channel_model_schedule(cid); //显示结构化数据 + show_channel_img(cid); //获取并显示一帧图片 -- 获取不到图片就是黑画面 + show_channel_model_schedule(cid); //获取并显示结构化数据 //显示窗口 $('#MX_M').modal('show'); } @@ -334,14 +345,21 @@ function handleRadioClick(event) { console.log('Selected Radio:', selectedRadio.id); // 根据选中的单选按钮执行相应操作 if (selectedRadio.id === 'qjjc') { - console.log("points.length",points.length); - // 处理全画面生效的逻辑 - if(points.length>0){ - if (!confirm('已经绘制了检测区域,确认要切换到全画面生效吗?')) { - document.getElementById('zdjc').checked = true; + if(draw_status){ + alert("请先结束绘制后,再切换检测方案!"); + document.getElementById('zdjc').checked = true; + } + else{ + // 处理全画面生效的逻辑 + if(points.length>0){ + if (!confirm('切换到全画面生效,将清除已绘制的区域信息,是否切换?')) { + document.getElementById('zdjc').checked = true; + }else{ + points = []; + } } } - console.log('全画面生效'); + //console.log('全画面生效'); } else if (selectedRadio.id === 'zdjc') { // 处理指定区域的逻辑 console.log('指定区域'); @@ -359,13 +377,47 @@ canvas.addEventListener('click', (event) => { const x = (event.clientX - rect.left) * scaleX; const y = (event.clientY - rect.top) * scaleY; - points.push({ x, y }); + console.log(points); //绘制线条 drawLines(); } }); -//初始化读取该视频通道与算法配置的相关信息 --- 这里用GET会更加贴切一些 +// 绘制区域,各点连接 +function drawLines() { + if(b_img){ + // 清除前台画布 + ctx.clearRect(0, 0, canvas.width, canvas.height); + // 将背景画布的内容复制到前台画布上 + ctx.drawImage(backgroundCanvas, 0, 0, canvas.width, canvas.height); + + // 绘制点和线 + ctx.strokeStyle = 'red'; + ctx.lineWidth = 2; + + if (points.length > 0) { + ctx.beginPath(); + ctx.moveTo(points[0].x, points[0].y); + + for (let i = 1; i < points.length; i++) { + ctx.lineTo(points[i].x, points[i].y); + } + + // 连接最后一个点到起点 + ctx.lineTo(points[0].x, points[0].y); + ctx.stroke(); + } + + points.forEach(point => { + ctx.beginPath(); + ctx.arc(point.x, point.y, 5, 0, Math.PI * 2); + ctx.fillStyle = 'red'; + ctx.fill(); + }); + } +} + +//获取并显示该通道相关算法的结构化数据 --- 这里用GET会更加贴切一些 function show_channel_model_schedule(cid){ //发送视频链接接口 const url = '/api/channel/C2M'; @@ -380,9 +432,9 @@ function show_channel_model_schedule(cid){ }) .then(response => response.json()) // 将响应解析为 JSON .then(data => { - const m_datas = data.m_datas; - const c2m_data = data.c2m_data; - const schedule = data.schedule; + const m_datas = data.m_datas; //算法清单 + const c2m_data = data.c2m_data; //该通道管理算法的相关数据,会有空的情况 + const schedule = data.schedule; //布防计划 //console.log("m_datas--",m_datas); //console.log("c2m_data--",c2m_data); //console.log("schedule--",schedule); @@ -412,13 +464,12 @@ function show_channel_model_schedule(cid){ drawLines(); } } - console.log("m_polygon",m_polygon); //阈值 document.getElementById('zxyz').value = c2m_data[0].conf_thres document.getElementById('iouyz').value = c2m_data[0].iou_thres } - + //布防计划 const days = ['一', '二', '三', '四', '五', '六','日']; const num_days=['0','1','2','3','4','5','6'] days.forEach((day, dayIndex) => { @@ -473,40 +524,6 @@ function parseCoordStr(str) { }); } -// 绘制区域,各点连接 -function drawLines() { - if(b_img){ - // 清除前台画布 - ctx.clearRect(0, 0, canvas.width, canvas.height); - // 将背景画布的内容复制到前台画布上 - ctx.drawImage(backgroundCanvas, 0, 0, canvas.width, canvas.height); - - // 绘制点和线 - ctx.strokeStyle = 'red'; - ctx.lineWidth = 2; - - if (points.length > 0) { - ctx.beginPath(); - ctx.moveTo(points[0].x, points[0].y); - - for (let i = 1; i < points.length; i++) { - ctx.lineTo(points[i].x, points[i].y); - } - - // 连接最后一个点到起点 - ctx.lineTo(points[0].x, points[0].y); - ctx.stroke(); - } - - points.forEach(point => { - ctx.beginPath(); - ctx.arc(point.x, point.y, 5, 0, Math.PI * 2); - ctx.fillStyle = 'red'; - ctx.fill(); - }); - } -} - //关闭算法配置窗口 function close_mx_model(){ if (confirm('确定退出窗口吗?未保存的修改将丢失!')) { @@ -516,13 +533,122 @@ function close_mx_model(){ //保存算法配置窗口数据 function save_mx_model(){ - //? - currentEditingRow =null; + let model_name; //算法名称 + let check_area; //检测区域标识 0-全局,1-指定范围 + let polygon_str; //具体的检测区域 + let conf_thres; //置信阈值 + let iou_thres; //iou阈值 + let schedule; //布防计划 + const saveButton = document.getElementById('saveButton_mx'); + saveButton.disabled = true; //不可点击状态 + //配置算法 + model_name = document.getElementById("model_select").value; + //检测区域 + if(document.getElementById('zdjc').checked){ + check_area = 1; + console.log("points--",points); + if (points.length > 0){ + const formattedArray = points.map(point => `(${point.x},${point.y})`); + polygon_str = `[${formattedArray.join(',')}]`; + }else{ + polygon_str = ""; + } + + }else{ + check_area = 0; + polygon_str = ""; + } + //置信阈值和IOU阈值 + conf_thres = getInputValueAsFloat('zxyz'); + iou_thres = getInputValueAsFloat('iouyz'); + //验证数据 + if(model_name !== "请选择"){ + console.log(model_name); + if(conf_thres <= 0 || conf_thres>=1 || iou_thres <= 0 || iou_thres>=1){ + alert("阈值的有效范围是大于0,小于1;请输入正确的阈值(默认可0.5)。"); + saveButton.disabled = false; //不可点击状态 + return; + } + } + //布防计划 + // 定义一个对象来存储数据 + const scheduleData = { + '0': Array(24).fill(0), + '1': Array(24).fill(0), + '2': Array(24).fill(0), + '3': Array(24).fill(0), + '4': Array(24).fill(0), + '5': Array(24).fill(0), + '6': Array(24).fill(0) + }; + // 遍历 tbody 的每一行 + [...tbody.children].forEach((row, dayIndex) => { + // 获取当前行的所有单元格 + const cells = row.getElementsByTagName('td'); + + // 遍历每一个单元格 + for (let hour = 0; hour < cells.length; hour++) { + // 检查单元格的 class 是否包含 'blocked' + if (cells[hour].classList.contains('blocked')) { + // 将对应的 scheduleData 位置设置为 1 + scheduleData[dayIndex][hour] = 1; + } else { + // 将对应的 scheduleData 位置设置为 0 + scheduleData[dayIndex][hour] = 0; + } + } + }); + // 将 scheduleData 对象转换为 JSON 字符串 + const scheduleData_json = JSON.stringify(scheduleData); + //提交到服务器 +// console.log("model_name--",model_name); +// console.log("check_area--",check_area); +// console.log("polygon_str--",polygon_str); +// console.log("iou_thres--",iou_thres); +// console.log("conf_thres--",conf_thres); +// console.log("schedule-- ",scheduleData_json); + cid = currentEditingRow.cells[0].innerText; + const url = '/api/channel/chanegeC2M'; + const data = {"model_name":model_name,"check_area":check_area,"polygon_str":polygon_str,"iou_thres":iou_thres, + "conf_thres":conf_thres,"schedule":scheduleData_json,"cid":cid}; + // 发送 POST 请求 + fetch(url, { + method: 'POST', // 指定请求方法为 POST + headers: { + 'Content-Type': 'application/json' // 设置请求头,告诉服务器请求体的数据类型为 JSON + }, + body: JSON.stringify(data) // 将 JavaScript 对象转换为 JSON 字符串 + }) + .then(response => response.json()) // 将响应解析为 JSON + .then(data => { + const istatus = data.status; + if(istatus === 0){ + alert(data.msg); // 使用 Modal 显示消息 + // 启用保存按钮 + saveButton.disabled = false; + return; + } + else{ + // 启用保存按钮 + saveButton.disabled = false; + //刷新列表 + fetchChannelData(); + //$('#MX_M').modal('hide'); + alert("修改成功!"); + } + }) + .catch((error) => { + alert(`Error: ${error.message}`); + // 启用保存按钮 + saveButton.disabled = false; + return; + }); + } //删除通道 function deleteChannel(row) { - if (confirm('确定删除此区域吗?')) { + if (confirm('确定删除此通道吗?')) { cid = row.cells[0].innerText; //发送视频链接接口 const url = '/api/channel/del'; @@ -540,13 +666,9 @@ function deleteChannel(row) { const istatus = data.status; if(istatus === 0){ alert(data.msg); // 使用 Modal 显示消息 - // 启用保存按钮 - saveButton.disabled = false; return; } else{ - // 启用保存按钮 - saveButton.disabled = false; //刷新列表 row.remove(); alert("删除通道成功!"); @@ -554,8 +676,6 @@ function deleteChannel(row) { }) .catch((error) => { alert(`Error: ${error.message}`); // 使用 Modal 显示错误信息 - // 启用保存按钮 - saveButton.disabled = false; return; }); @@ -587,6 +707,11 @@ function renderAreaOptions() { const areaSelect = document.getElementById('areaSelect'); const areaSelect_M = document.getElementById('areaSelect_M') const areaSelect_CC = document.getElementById('areaSelect_CC') + //先清空 + areaSelect.innerHTML = ''; + areaSelect_M.innerHTML = ''; + areaSelect_CC.innerHTML = ''; + //再添加 areaData.forEach(option => { const optionElement = document.createElement('option'); optionElement.textContent = option; diff --git a/web/main/static/resources/scripts/model_manager.js b/web/main/static/resources/scripts/model_manager.js new file mode 100644 index 0000000..ec0b9fa --- /dev/null +++ b/web/main/static/resources/scripts/model_manager.js @@ -0,0 +1,303 @@ +let currentPage = 1; +const rowsPerPage = 10; +let modelData = []; +let modelData_bak = []; //用于关键字检索 +let currentEditingRow = null; + + + +//页面加载初始化 +document.addEventListener('DOMContentLoaded', function () { + fetchModelData(); //初始化通道管理页面元素数据 + //新增算法模态框---保存按钮 + document.getElementById('saveButton_model').addEventListener('click',function () { + addModel(); + }); + + //配置算法模态框--保存按钮 + document.getElementById('saveButton_config_model').addEventListener('click',function () { + post_configureModel(); + }); + + //升级算法模态框--保存按钮 + document.getElementById('saveButton_upmodel').addEventListener('click',function () { + post_modifyModel(); + }); + + //查询按钮 + document.getElementById('searchMButton').addEventListener('click',function () { + searchModel(); + }); +}); + +//获取算法列表数据,并更新页面 +async function fetchModelData() { + try{ + let response = await fetch('/api/model/list'); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + modelData = await response.json(); + modelData_bak = modelData; + currentPage = 1; // 重置当前页为第一页 + renderTable(); //刷新表格 + renderPagination(); + }catch (error) { + console.error('Error fetching model data:', error); + } +} + +//刷新表单页面数据 +function renderTable() { + const tableBody = document.getElementById('table-body-model'); + tableBody.innerHTML = ''; //清空 + + const start = (currentPage - 1) * rowsPerPage; + const end = start + rowsPerPage; + const pageData = modelData.slice(start, end); + const surplus_count = rowsPerPage - pageData.length; + + + pageData.forEach((model) => { + const row = document.createElement('tr'); + row.innerHTML = ` + ${model.ID} + ${model.name} + ${model.version} + ${model.duration_time} + ${model.proportion} + + + + + + `; + tableBody.appendChild(row); + row.querySelector('.modify-btn').addEventListener('click', () => modifyModel(row)); + row.querySelector('.algorithm-btn').addEventListener('click', () => configureModel(row)); + row.querySelector('.delete-btn').addEventListener('click', () => deleteModel(row)); + }); +} + +//刷新分页标签 +function renderPagination() { + const pagination = document.getElementById('pagination-model'); + pagination.innerHTML = ''; + + const totalPages = Math.ceil(modelData.length / rowsPerPage); + for (let i = 1; i <= totalPages; i++) { + const pageItem = document.createElement('li'); + pageItem.className = 'page-item' + (i === currentPage ? ' active' : ''); + pageItem.innerHTML = `${i}`; + pageItem.addEventListener('click', (event) => { + event.preventDefault(); + currentPage = i; + renderTable(); + renderPagination(); + }); + pagination.appendChild(pageItem); + } +} + +//显示升级算法模态框 +function modifyModel(row){ + currentEditingRow = row; + model_name = row.cells[1].innerText; + version_name = row.cells[2].innerText; + + document.getElementById('update_mname_label').innerText = `算法名称: ${model_name}`; + document.getElementById('update_mversion_label').innerText = `当前版本: ${version_name}`; + $('#updateMM').modal('show'); +} + +//升级算法模态框--点击保存按钮 +function post_modifyModel(){ + mid = currentEditingRow.cells[0].innerText; + const btn = document.getElementById('saveButton_upmodel'); + const fileInput = document.getElementById('updateModelFile'); + const file = fileInput.files[0]; + if(file){ + btn.disabled = true; //不可点击 + const formData = new FormData(); + formData.append('file', file); + formData.append('mid', mid); + + fetch('/api/model/upgrade', { + method: 'POST', + body: formData, + }) + .then(response => response.json()) + .then(data => { + const istatus = data.status; + alert(data.msg); + btn.disabled = false; + if(istatus == 1 ){ + fetchModelData(); + $('#updateMM').modal('hide'); + } + }) + .catch(error => { + console.error('Error:', error); + alert('升级失败,请重试。'); + btn.disabled = false; + }); + } + else{ + alert('请选择升级包进行上传。'); + btn.disabled = false; + } +} + +//显示配置算法模态框 +function configureModel(row){ + currentEditingRow = row; + model_name = row.cells[1].innerText; + duration_time = row.cells[3].innerText; + proportion = row.cells[4].innerText; + //设置模态框控件遍历 + document.getElementById('config_mname_label').innerText = `算法名称: ${model_name}`; + document.getElementById('duration_timeInput').value = duration_time; + document.getElementById('proportionInput').value = proportion; + $('#configMM').modal('show'); +} + +//配置算法模态框--点击保存按钮 +function post_configureModel(){ + mid = currentEditingRow.cells[0].innerText; + duration_time = parseInt(document.getElementById('duration_timeInput').value); + proportion = parseFloat(document.getElementById('proportionInput').value); + if(isNaN(duration_time) || isNaN(proportion) ){ + alert("请输入数字!"); + return; + } + if(proportion<=0 || proportion>=1){ + alert("占比阈值需要大于0,且小于1"); + return; + } + //提交数据 + const url = '/api/model/changecnf'; + const data = {"mid":mid,"duration_time":duration_time,"proportion":proportion}; + // 发送 POST 请求 + fetch(url, { + method: 'POST', // 指定请求方法为 POST + headers: { + 'Content-Type': 'application/json' // 设置请求头,告诉服务器请求体的数据类型为 JSON + }, + body: JSON.stringify(data) // 将 JavaScript 对象转换为 JSON 字符串 + }) + .then(response => response.json()) // 将响应解析为 JSON + .then(data => { + const istatus = data.status; + if(istatus === 0){ + alert(data.msg); + return; + } + else{ + //刷新列表 + fetchModelData(); + alert(data.msg); + $('#configMM').modal('hide'); + } + }) + .catch((error) => { + alert(`Error: ${error.message}`); + return; + }); +} + +//删除算法记录 +function deleteModel(row){ + if (confirm('确定删除此算法吗?')) { + mid = row.cells[0].innerText; + const url = '/api/model/del'; + const data = {"mid":mid}; + // 发送 POST 请求 + fetch(url, { + method: 'POST', // 指定请求方法为 POST + headers: { + 'Content-Type': 'application/json' // 设置请求头,告诉服务器请求体的数据类型为 JSON + }, + body: JSON.stringify(data) // 将 JavaScript 对象转换为 JSON 字符串 + }) + .then(response => response.json()) // 将响应解析为 JSON + .then(data => { + const istatus = data.status; + if(istatus === 0){ + alert(data.msg); + return; + } + else{ + //刷新列表 + row.remove(); + alert("删除算法成功!"); + } + }) + .catch((error) => { + alert(`Error: ${error.message}`); + return; + }); + + } +} + +//新增算法--保存按钮 +function addModel(){ + const btn = document.getElementById('saveButton_model'); + const fileInput = document.getElementById('uploadModelFile'); + const file = fileInput.files[0]; + const mName = document.getElementById('MNameInput').value; + + if (file && mName) { + btn.disabled = true; //不可点击 + const formData = new FormData(); + formData.append('file', file); + formData.append('mName', mName); + + fetch('/api/model/add', { + method: 'POST', + body: formData, + }) + .then(response => response.json()) + .then(data => { + const istatus = data.status; + alert(data.msg); + btn.disabled = false; + if(istatus == 1 ){ + fetchModelData(); + $('#addMM').modal('hide'); + } + }) + .catch(error => { + console.error('Error:', error); + alert('上传失败,请重试。'); + btn.disabled = false; + }); + } else { + alert('请填写算法名称并选择一个升级包进行上传。'); + btn.disabled = false; + } +} + +//关键字检索 +function searchModel(){ + try { + const modelName = document.getElementById('modelNameInput').value; + if(modelName===""){ + modelData = modelData_bak; + } + else{ + modelData = []; + modelData_bak.forEach((model) => { + if(model.name.includes(modelName)){ + modelData.push(model); + } + }); + } + // 渲染表格和分页控件 + currentPage = 1; // 重置当前页为第一页 + renderTable(); + renderPagination(); + } catch (error) { + console.error('Error performing search:', error); + } +} \ No newline at end of file diff --git a/web/main/static/resources/scripts/player/axplayer.js b/web/main/static/resources/scripts/player/axplayer.js deleted file mode 100644 index 9b7ad43..0000000 --- a/web/main/static/resources/scripts/player/axplayer.js +++ /dev/null @@ -1,2631 +0,0 @@ -var PLUGIN_VAR_NAME = 'g'; -var FOOTNOTES_VAR_NAME = 'fn'; -var ADAPTIVE_VIEW_VAR_NAME = 'view'; -var SCALE_VAR_NAME = 'sc'; -var DIM_VAR_NAME = 'dm'; -var ROT_VAR_NAME = 'r'; -var CLOUD_VAR_NAME = 'cl'; -var TRACE_VAR_NAME = 'tr'; -var RP_VERSION = 9; -var lastLeftPanelWidth = 220; -var lastRightPanelWidth = 290; -var lastLeftPanelWidthDefault = 220; -var lastRightPanelWidthDefault = 290; -var toolBarOnly = true; - -// isolate scope -(function () { - - if (!window.$axure) window.$axure = function () { }; - if (typeof console == 'undefined') console = { - log: function () { } - }; - if (window._axUtils) $axure.utils = _axUtils; - - setUpController(); - - var getHashStringVar = $axure.player.getHashStringVar = function (query) { - var qstring = self.location.href.split("#"); - if (qstring.length < 2) return ""; - return GetParameter(qstring, query); - } - - var isCloud = $axure.player.isCloud = getHashStringVar(CLOUD_VAR_NAME); - if (isCloud) { - $("#topPanel").css('display', 'none'); - }else { - $("#topPanel").css('display', ''); - } - - $axure.loadDocument = function (document) { - $axure.document = document; - - var configuration = $axure.document.configuration; - var _settings = {}; - _settings.projectId = configuration.prototypeId; - _settings.projectName = configuration.projectName; - _settings.isAxshare = configuration.isAxshare; - _settings.isExpo = configuration.isExpo == null ? false : configuration.isExpo; - _settings.loadSitemap = configuration.loadSitemap; - _settings.loadFeedbackPlugin = configuration.loadFeedbackPlugin; - var cHash = getHashStringVar(SITEMAP_COLLAPSE_VAR_NAME); - _settings.startCollapsed = cHash == SITEMAP_COLLAPSE_VALUE; - if (cHash == SITEMAP_CLOSE_VALUE) closePlayer(); - var gHash = getHashStringVar(PLUGIN_VAR_NAME); - _settings.startPluginGid = gHash; - - $axure.player.settings = _settings; - - var additionalJs = $axure.document.additionalJs; - if (additionalJs != null) { - var total = additionalJs.length; - if (total > 0) $.holdReady(true); - $.each(additionalJs, function (index, value) { - var script = window.document.createElement("script"); - script.type = "text/javascript"; - script.src = value; - script.async = false; - script.onload = script.onreadystatechange = function (e) { - if (!script.readyState || /loaded|complete/.test(script.readyState)) { - script.onload = script.onreadystatechange = null; - script = undefined; - } - if (--total == 0) $.holdReady(false); - } - window.document.head.appendChild(script); - }); - } - - var additionalCss = $axure.document.additionalCss; - if(additionalCss != null) { - $.each(additionalCss, function(index, value) { - var style = window.document.createElement('link'); - style.type = "text/css"; - style.rel = "stylesheet"; - style.href = value; - window.document.head.appendChild(style); - }); - } - - if(_settings.isExpo && configuration.isMobile) { - initializeDeviceFrame(); - } - - // Pseudo-indicator that the document has been loaded - $axure.document.isLoaded = true; - }; - - $(window).bind('load', function () { - if ((CHROME && BROWSER_VERSION < 64) || // First 2018 release - (SAFARI && BROWSER_VERSION < 602) || // Minor version 10 - (FIREFOX && BROWSER_VERSION < 57) || // Support Quantum - ($axure.browser.isEdge && BROWSER_VERSION < 15) || // 15 for mobile devices (else could go 16, possibly 17) - (!$axure.browser.isEdge && IE)) { - if (!QQ && !UC) appendOutOfDateNotification(); - } - - if (CHROME_5_LOCAL && !$('body').attr('pluginDetected')) { - window.location = 'resources/chrome/chrome.html'; - } - - if (FIREFOX && BROWSER_VERSION >= 68 && document.location.href.indexOf('file://') >= 0) { //detecting firefox and local - window.location = 'resources/chrome/firefox.html'; - } - }); - - $(window).on('hashchange', function() { - window.location.reload(); - }); - - function appendOutOfDateNotification() { - var toAppend = ''; - toAppend += '
    '; - toAppend += '
    LOOKS LIKE YOUR BROWSER IS OUT OF DATE
    '; - toAppend += '
    This prototype may not look or function correctly until you update your browser
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    Google Chrome
    v64 and later
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    Mozilla Firefox
    v57 and later
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    Microsoft Edge
    v15 and later
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    Apple Safari
    v10 and later
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    ' - if (!MOBILE_DEVICE) { - toAppend += ' '; - toAppend += ' '; - } else { - toAppend += ' '; - } - toAppend += '
    '; - toAppend += '
    '; - - $('body').prepend(toAppend); - - $('#continueToPrototypeButton').on('click', function () { - var $message = $('#browserOutOfDateNotification'); - $message.children().hide(); - $message.css('padding-top', '0px'); - $message.animate({ 'height': '0px' }, { duration: 400, complete: function () { $message.hide(); } }); - }); - } - - $axure.page.bind('load.start', mainFrame_onload); - $axure.messageCenter.addMessageListener(messageCenter_message); - - var suppressPluginVarUpdate = false; - $(document).on('pluginShown', function (event, data) { - if (!suppressPluginVarUpdate) $axure.player.setVarInCurrentUrlHash(PLUGIN_VAR_NAME, data ? data : ''); - }); - - $(document).on('pluginCreated', function (event, data) { - if (!$axure.player.isMobileMode() && $axure.player.settings.startPluginGid.indexOf(data) > -1) { - suppressPluginVarUpdate = true; - $axure.player.showPlugin(data); - suppressPluginVarUpdate = false; - } - - if (data == '1') { - $('#interfaceControlFrame').animate({ opacity: 1 }, 200); - } - - if ($axure.player.settings.isExpo) { - // TODO: Do this only if expo is a mobile device - // TODO: Figure out better way to deal with this issue - $axure.messageCenter.postMessage('setDeviceMode', { device: false }); - $axure.messageCenter.postMessage('setDeviceMode', { device: true }); - //$axure.player.refreshViewPort(); - } - }); - - function initializeEvents() { - $('#interfaceControlFrameMinimizeContainer').on('click', collapse); - $('#interfaceControlFrameCloseButton').on('click', closePlayer); - $('#interfacePageNameContainer').on($axure.eventNames.mouseDownName, toggleSitemap); - $('#interfaceAdaptiveViewsContainer').on($axure.eventNames.mouseDownName, toggleAdaptiveViewsPopup); - $('#overflowMenuButton').on($axure.eventNames.mouseDownName, toggleOverflowMenuPopup); - - if (!MOBILE_DEVICE) { - $('#maximizePanel').mouseenter(function () { - $(this).addClass('maximizePanelOver'); - }); - $('#maximizePanel').mouseleave(function () { - if ($(this).hasClass('maximizePanelOver')) { - $(this).animate(isMobileMode() ? { - top: '-' + $('#maximizePanel').height() + 'px' - } : { - left: '-' + $('#maximizePanel').width() + 'px' - }, 300); - } - $(this).removeClass('maximizePanelOver'); - }); - $('#maximizePanelOver').mouseenter(function () { - $('#maximizePanel').animate(isMobileMode() ? { - top: '0px' - } : { - left: '0px' - }, 100); - }); - } - - $minimizeContainer = $('#interfaceControlFrameMinimizeContainer'); - $minimizeContainer.mouseenter(function () { $minimizeContainer.addClass('collapseHovered') }); - $minimizeContainer.mouseleave(function () { $minimizeContainer.removeClass('collapseHovered') }); - $maximizeContainer = $('#maximizePanelContainer'); - $maximizeContainer.mouseenter(function () { if(!MOBILE_DEVICE) $minimizeContainer.addClass('expandHovered') }); - $maximizeContainer.mouseleave(function () { if(!MOBILE_DEVICE) $minimizeContainer.removeClass('expandHovered') }); - - $('#maximizePanel').click(function () { - $(this).removeClass('maximizePanelOver'); - $('#maximizePanelContainer').hide(); - $axure.messageCenter.postMessage('expandFrame'); - }); - - $('#mHideSidebar').on($axure.eventNames.mouseDownName, function (e) { startM(e); }); - $('#lsplitbar').on($axure.eventNames.mouseDownName, startLeftSplit); - $('#rsplitbar').on($axure.eventNames.mouseDownName, startRightSplit); - - if ($axure.mobileSupport.mobile) { - var touchCount = 0; - var lastTouch = Date.now(); - $('#mainPanel').on('touchstart', - (function (e) { - var now = Date.now(); - if (now - lastTouch < 375) { - if (++touchCount === 3) { - if ($axure.player.isMobileMode() || MOBILE_DEVICE) expand(); - touchCount = 0; - e.preventDefault(); - }; - } else { - touchCount = 1; - } - lastTouch = now; - })); - } - - $(window).resize(function () { - $axure.player.resizeContent(); - }); - - $(window).on("orientationchange", function () { - // IOS often does not complete updating innerHeight and innerWidth - // until after calling orientation changed and resized window - // Also, cannot use $(window).height() call since iOS11 needs padding amount - if (IOS && isMobileMode()) setTimeout(function () { $axure.player.resizeContent(true); }, 250); - }); - - $('#mainPanel').scroll(function () { - repositionClippingBoundsScroll(); - }); - } - - function initializeMainFrame() { - var legacyQString = getQueryString("Page"); - if (legacyQString.length > 0) { - location.href = location.href.substring(0, location.href.indexOf("?")) + "#" + PAGE_URL_NAME + "=" + legacyQString; - return; - } - - var mainFrame = document.getElementById("mainFrame"); - //if it's local file on safari, test if we can access mainframe after its loaded - if (SAFARI && document.location.href.indexOf('file://') >= 0) { - $(mainFrame).on('load', function () { - var canAccess; - try { - var mainFrameWindow = mainFrame.contentWindow || mainFrame.contentDocument; - mainFrameWindow['safari_file_CORS'] = 'Y'; - canAccess = mainFrameWindow['safari_file_CORS'] === 'Y'; - } catch (err) { - canAccess = false; - } - - if (!canAccess) window.location = 'resources/chrome/safari.html'; - }); - } - - if($axure.player.settings != null && !$axure.player.settings.isExpo) { - const linkUrlWithVars = $axure.getLinkUrlWithVars(getInitialUrl()); - mainFrame.contentWindow.location.href = linkUrlWithVars; - } - } - - function initializeDeviceFrame() { - // TODO: Load device bezel and necessary overlays if applicable - // - Need to determine if device has a frame/overlay - // - Determine where to store said assets - // - Determine sizing, positioning, orientation, and styling for HTML containers - // - Verify that it stays consistent for every state (expo) - - var expo = $axure.expo; - var project = expo.project; - var device = project.Platform.Device; - - // in expo.ts, Web is 12 - if (device === 12) { - // Hide containers - $('#deviceFrameContainer').hide(); - $('#bezelOverlay').hide(); - - return; - } - - // map devices to their corresponding frame/bezel/overlays - } - var wasMobile = false; - var isMobileMode = $axure.player.isMobileMode = function () { return $axure.utils.isShareApp() || (MOBILE_DEVICE && $(window).width() < 420); } - var isMobileTextEntry = false; - - var isViewOverridden = $axure.player.isViewOverridden = function() { - return getHashStringVar(ADAPTIVE_VIEW_VAR_NAME).length > 0; - } - - function toggleSitemapMobileMode() { - var $container = $('#sitemapHost'); - if (!$container.length) return; - var $header = $container.find('.pluginNameHeader'); - var projectName = $axure.player.getProjectName(); - - if (isMobileMode()) { - $header.text('PROJECT PAGES'); - $container.addClass('mobileMode'); - $container.find('.sitemapPageName').addClass('mobileText'); - // Give sitemapHost left-margin so it does not collide with projectOptionsHost - if (MOBILE_DEVICE) $container.css('margin-left', '13px'); - } else { - $container.removeClass('mobileMode'); - $header.text(projectName ? projectName : 'Pages'); - $container.find('.sitemapPageName').removeClass('mobileText'); - if (MOBILE_DEVICE) $container.css('margin-left', ''); - } - } - - function togglePageNotesMobileMode() { - var $container = $('#pageNotesHost'); - if (!$container.length) return; - - if (isMobileMode()) { - $container.addClass('mobileMode'); - $('#pageNotesSectionHeader').text('PAGE NOTES'); - $('#widgetNotesSectionHeader').text('WIDGET NOTES'); - $container.find('.notesPageNameHeader').addClass('mobileSubHeader'); - $container.find('.pageNote').addClass('mobileText'); - $container.find('.emptyStateTitle').addClass('mobileSubHeader'); - $container.find('.emptyStateContent').addClass('mobileText'); - } else { - $container.removeClass('mobileMode'); - $('#pageNotesSectionHeader').text('Page Notes'); - $('#widgetNotesSectionHeader').text('Widget Notes'); - $container.find('.notesPageNameHeader').removeClass('mobileSubHeader'); - $container.find('.pageNote').removeClass('mobileText'); - $container.find('.emptyStateTitle').removeClass('mobileSubHeader'); - $container.find('.emptyStateContent').removeClass('mobileText'); - } - - } - - function toggleFeedbackMobileMode() { - var $container = $('#feedbackHost'); - if (!$container.length) return; - - if (isMobileMode()) { - $container.addClass('mobileMode'); - } else { - $container.removeClass('mobileMode'); - } - } - - $axure.player.updatePlugins = function updatePlugins() { - if (MOBILE_DEVICE && !$axure.utils.isShareApp()) { - var hostPanelPadding = isMobileMode() ? '8px 15px 0px 15px' : ''; - $('.rightPanel .leftPanel .mobileOnlyPanel').css('padding', hostPanelPadding); - } - - if (isMobileMode()) { - $('body').addClass('mobileMode'); - if ($('#debugHost').length) $('#debugHost').hide(); - if ($('#handoffHost').length) $('#handoffHost').hide(); - } else $('body').removeClass('mobileMode'); - - toggleSitemapMobileMode(); - togglePageNotesMobileMode(); - toggleFeedbackMobileMode(); - } - - // TODO: this is done for IOS and Android (check what can be done for Pixel, etc) - $axure.player.setIsMobileModeTextEntry = function (isTextEntry) { - isMobileTextEntry = isTextEntry; - if (IOS && isTextEntry) { - activateMobileTextEntry() - } else if (IOS) { - setTimeout(deactivateMobileTextEntry, 150); - } - } - - function deactivateMobileTextEntry() { - newHeight = window.innerHeight; - var newControlHeight = newHeight - (!$axure.utils.isShareApp() ? 140 : IOS ? 157 : 138); - - if (!$('.leftPanel').hasClass('popup')) { - $('.leftPanel').height(newControlHeight); - } - $('.rightPanel').height(newControlHeight); - $('.mobileOnlyPanel').height(newControlHeight); - $('#mobileControlFrameContainer').show(); - } - - function activateMobileTextEntry() { - $('#mobileControlFrameContainer').hide(); - - newHeight = window.innerHeight; - var newControlHeight = newHeight - (!$axure.utils.isShareApp() ? 140 : IOS ? 157 : 138); - newControlHeight = newControlHeight + (!$axure.utils.isShareApp() ? 61 : IOS ? 72 : 60); - - if (!$('.leftPanel').hasClass('popup')) { - $('.leftPanel').height(newControlHeight); - } - $('.rightPanel').height(newControlHeight); - $('.mobileOnlyPanel').height(newControlHeight); - } - - function setAdaptiveView() { - if (typeof noViewport == 'undefined') { - // Block during animation -- end of animation will call resizeContent once completed with isAnimating equal to false - if (!isViewOverridden() && !isAnimating) $axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() }); - //if (!isViewOverridden()) $axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() }); - $axure.player.refreshViewPort(); - if ($axure.player.updateAdaptiveViewHeader != null) $axure.player.updateAdaptiveViewHeader(); - } - } - - $axure.player.resizeContent = function (noViewport) { - var isMobile = isMobileMode(); - - if (wasMobile && !isMobile) { - $('#clippingBoundsScrollContainer').show(); - $('#outerContainer').prepend($('.leftPanel')); - $('#outerContainer').append($('.rightPanel')); - - $axure.player.updatePlugins(); - - $('#mHideSidebar').hide(); - $('#mobileBrowserControlFrame').hide(); - $('#nativeAppControlFrame').hide(); - - if ($('#topPanel').is(':visible')) { - $('#maximizePanelContainer').hide(); - $axure.player.restorePlugins(); - } else { - $('.leftPanel').hide(); - $('.rightPanel').hide(); - if (!MOBILE_DEVICE) $('#maximizePanelContainer').show(); - } - - $('.leftPanel').css({ 'top': '', 'left': '' }); - $('.rightPanel').css({ 'top': '', 'left': '' }); - - } else if (!wasMobile && isMobile) { - $('#clippingBoundsScrollContainer').hide(); - $axure.player.closePopup(); - - $('#lsplitbar').hide(); - $('#rsplitbar').hide(); - - $('.leftPanel').show(); - $('.rightPanel').show(); - - $axure.player.updatePlugins(); - $('#mHideSidebar').append($('.leftPanel')); - $('#mHideSidebar').append($('.rightPanel')); - if (MOBILE_DEVICE) $('#maximizePanelContainer').hide(); - - $axure.messageCenter.postMessage('collapseFrameOnLoad'); - } - - - var newHeight = 0; - var newWidth = 0; - if (IOS && $axure.utils.isShareApp()) { - // Hack for Iphone X - newHeight = iosInnerHeight(); - newWidth = $(window).width(); - } else { - // innerHeight includes padding for window -- needed in iOS 11 to have prototype stretch to bottom of screen (could put in -- if (iOS) -- block if needed) - //var newHeight = $(window).height() - ((!isMobile && $('#topPanel').is(':visible'))? $('#topPanel').height() : 0); - newHeight = window.innerHeight - ((!isMobile && $('#topPanel').is(':visible')) ? $('#topPanel').height() : 0); - newWidth = $(window).width(); - } - - $('#outerContainer').height(newHeight).width(newWidth); - $('#mainPanel').height(newHeight); - $('#clippingBounds').height(newHeight); - - if (isMobile) { - $('#mobileControlFrameContainer').height(newHeight); - $('#mobileControlFrameContainer').width(newWidth); - var newControlHeight = newHeight - (!MOBILE_DEVICE ? 112 : !$axure.utils.isShareApp() ? 140 : IOS ? 157 : 138); - // Screen resize is only way through browser to catch mobile device keyboard expand and collapse - if ($('#mHideSidebar').is(':visible') && !$('#mobileControlFrameContainer').is(':visible')) { - $('#mobileControlFrameContainer').delay(150).show(); - } else if (isMobileTextEntry) { - newControlHeight = newControlHeight + (!$axure.utils.isShareApp() ? 61 : IOS ? 72 : 60); - $('#mobileControlFrameContainer').hide(); - } - - if(!$('.leftPanel').hasClass('popup')) { - $('.leftPanel').height(newControlHeight); - } - $('.rightPanel').height(newControlHeight); - $('.mobileOnlyPanel').height(newControlHeight); - } else { - if (!$('.leftPanel').hasClass('popup')) { - $('.leftPanel').css('height',''); - } - $('.rightPanel').css('height', ''); - if ($('.rightPanel').is(':visible')) { - var lastRightPanelWidthDefaultSub = ($(window).width() - lastRightPanelWidthDefault || 0); - var rightPanelWidth = ($('.rightPanel').width() || 0); - var leftPanelPanelWidthSub = ($(window).width() - $('.leftPanel').width()) || 0; - - var newWidth = Math.min(lastRightPanelWidthDefaultSub, rightPanelWidth, leftPanelPanelWidthSub); - lastRightPanelWidth = Math.max(lastRightPanelWidthDefault, newWidth); - $('.rightPanel').width(lastRightPanelWidth ? lastRightPanelWidth : lastRightPanelWidthDefault); - $('#rsplitbar').css('left', $(window).width() - $('.rightPanel').width()); - } - if ($('.leftPanel').is(':visible')) { - var lastLeftPanelWidthSub = ($(window).width() - lastLeftPanelWidthDefault || 0); - var leftPanelWidth = ($('.leftPanel').width() || 0); - var rightPanelWidthSub = ($(window).width() - $('.rightPanel').width()) || 0; - - var newWidth = Math.min(lastLeftPanelWidthSub, leftPanelWidth, rightPanelWidthSub); - - lastLeftPanelWidth = Math.max(lastLeftPanelWidthDefault, newWidth); - $('.leftPanel').width(lastLeftPanelWidth ? lastLeftPanelWidth : lastLeftPanelWidthDefault); - $('#lsplitbar').css('left', $('.leftPanel').width() - 4); - } - } - - if (isMobile) { - var newControlWidth = newWidth - 80; - $('.leftPanel').css({ 'width': newControlWidth + 'px' }); - $('.rightPanel').css({ 'width': newControlWidth + 'px' }); - $('.mobileOnlyPanel').css({ 'width': newControlWidth + 'px' }); - adjustM('left'); - } - - updateClippingBoundsWidth(); - repositionClippingBoundsScroll(); - setAdaptiveView(); - - wasMobile = isMobile; - } - - function contentDocument_onload() { - (function setRepositionWhenReady() { - var $iframe = $('#mainPanel').find('iframe')[0]; - if ($($iframe.contentWindow.document.body).length === 0 || $iframe.contentWindow.document.URL === "about:blank") { - setTimeout(setRepositionWhenReady, 50); - } else { - var $iframe = $($('#mainPanel').find('iframe')[0].contentWindow.document); - $iframe.scroll(function () { - repositionClippingBoundsScroll(); - }); - } - })(); - } - - // This is the full width and height of the prototype (beyond the window width and height) - var determineIframeDimensions = function () { - var $iframe = $($('#mainPanel').find('iframe')[0].contentWindow); - - return { - width: $iframe.width(), - height: $iframe.height() - }; - }; - - // Position of this (upper left hand corner) should match the existingPinPanel position - var determineIframePosition = function () { - var dimensions = determineIframeDimensions(); - var $iframe = $($('#mainPanel').find('iframe')[0].contentWindow); - - var $body = $($iframe[0].document.body); - var bodyWidth = $body.offset().left !== 0 ? $body.width() : dimensions.width; - - if (FIREFOX) { - var left = $body[0].getBoundingClientRect().left; - bodyWidth = left !== 0 ? $body.width() : dimensions.width; - } - - return { - top: 0,// Math.max(0, (dimensions.height - $($iframe[0].document.body).height()) / 2), - left: Math.max(0, (dimensions.width - bodyWidth) / 2) - }; - }; - - // Return iframe scroll top and scroll left - var determineIframeScroll = function () { - var $iframe = $($('#mainPanel').find('iframe')[0].contentWindow); - - return { - scrollTop: $iframe.scrollTop(), - scrollLeft: $iframe.scrollLeft() - }; - }; - - function calculateClippingBoundsWidth(panelSize, isLeftPanel) { - var $leftPanel = $('.leftPanel:visible'); - var leftPanelOffset = (!isMobileMode() && $leftPanel.length > 0 && !$leftPanel.hasClass('popup')) ? $leftPanel.width() : 0; - - var $rightPanel = $('.rightPanel:visible'); - var rightPanelOffset = (!isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0; - - // Replace current panel size with panel size after animation for expand or collapse completes - if (typeof panelSize !== 'undefined') { - if (isLeftPanel) leftPanelOffset = panelSize; - else rightPanelOffset = panelSize; - } - - return $(window).width() - rightPanelOffset - leftPanelOffset; - } - - var updateClippingBoundsWidth = $axure.player.updateClippingBoundsWidth = function () { - if ($('.leftPanel').is(':visible')) $('#clippingBounds').css('left', $('.leftPanel').width()); - else $('#clippingBounds').css('left', '0px'); - $('#clippingBounds').width(calculateClippingBoundsWidth()); - } - - var contentLeftOfOriginOffset = 0; - function calculateClippingBoundsScrollPosition() { - // Adjust for mainPanelContainer scaling (scale should be "none" for scaleVal == 0 or scaleVal == 1) - var $iframe = $($('#mainPanel').find('iframe')[0].contentWindow); - var selectedScale = $('.vpScaleOption').find('.selectedRadioButton'); - var scaleVal = $(selectedScale).parent().attr('val'); - - var dimStr = $('.currentAdaptiveView').attr('data-dim'); - var dim = dimStr ? dimStr.split('x') : { w: '0', h: '0' }; - var isDevice = dim[1] != '0' ? true : false; - // This line is necessary for right handling DEFAULT SCALE - // Because default scale relates to scale-to-fit item for device projects - if (scaleVal == '0' && isDevice) scaleVal = 2; - - var scale = $('#mainPanelContainer').css('transform');; - scale = (scale == "none") ? 1 : Number(scale.substring(scale.indexOf('(') + 1, scale.indexOf(','))); - - // Iframe and Main Panel Positioning - var iframeScroll = determineIframeScroll(); - var iframePos = determineIframePosition(); - var viewablePanelLeftMargin = parseInt($('#mainPanelContainer').css('margin-left')); - var viewablePanelTop = parseInt($('#mainPanelContainer').css('top')); - if (isNaN(viewablePanelTop)) viewablePanelTop = 0; - if (scaleVal == 2) { - // Scale to Fit (account for main panel container scale) -- needed for device mode in Scale to Fit - viewablePanelLeftMargin = ($('#mainPanel').width() - ($('#mainPanelContainer').width() * scale)) / 2 - viewablePanelTop = ($('#mainPanel').height() - ($('#mainPanelContainer').height() * scale)) / 2 - } - - // left and top positioning - var leftPos = viewablePanelLeftMargin + (iframePos.left - iframeScroll.scrollLeft) * scale; - var topPos = viewablePanelTop - iframeScroll.scrollTop * scale; - - // Special cases for Centered Page - var isCentered = $($iframe[0].document.body).css('position') == 'relative'; - if (isCentered && scaleVal == 1) leftPos = 0; - else if (isCentered && scaleVal == 2) leftPos = $('#mainPanelContainer').width() * scale / 2.0 - contentLeftOfOriginOffset; - - // Include clipFrameScroll offset in mainPanelContainer - topPos += (parseFloat($('#clipFrameScroll').css("top")) || 0) * scale; - - return { - left: leftPos, - top: topPos - } - } - - function repositionClippingBoundsScroll() { - if (!$axure.player.settings.isAxshare) return; - - (function repositionWhenReady() { - if ($($('#mainPanel').find('iframe')[0].contentWindow.document.body).length === 0) { - setTimeout(repositionWhenReady, 50); - } else { - var position = calculateClippingBoundsScrollPosition(); - - // Adding mainPanel scroll here, since it does not work well with calculating animation left position - position.left = position.left - $('#mainPanel').scrollLeft() - $('#clipFrameScroll').scrollLeft(); - position.top = position.top - $('#mainPanel').scrollTop() - $('#clipFrameScroll').scrollTop(); - - $('#clippingBoundsScrollContainer').css('left', position.left + 'px'); - $('#clippingBoundsScrollContainer').css('top', position.top + 'px'); - } - })(); - } - - function calculateScrollLeftWithOffset(offset, isLeftPanel) { - if (!$axure.player.settings.isAxshare) return; - if ($($('#mainPanel').find('iframe')[0].contentWindow.document.body).length === 0) return; - var scaleVal = $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'); - if (scaleVal == 2) return; - - var $iframe = $($('#mainPanel').find('iframe')[0].contentWindow); - var $body = $($iframe[0].document.body); - - var dimStr = $('.currentAdaptiveView').attr('data-dim'); - var hasFrame = (!dimStr ? false : dimStr.split('x')[1] != '0') && !$axure.player.noFrame; - var isCentered = $body.css('position') == 'relative'; //body position is always static while page is still loading (thus false, if called on intial load) - var isCollapsing = offset > 0; //offset is positive when collapsing since we are gaining offset more space for content viewing - - // Base case left positioning - var leftPos = calculateClippingBoundsScrollPosition().left; - - // If maintaining view options requires a left adjustment not equivalent to panel size (which has already being added in leftPos above) - var viewAdjustment = 0; - - // Mobile Frame adjustment - if (hasFrame) { - var viewablePanelLeftMargin = parseInt($('#mainPanelContainer').css('margin-left')); - var viewablePanelRightMargin = parseInt($('#mainPanelContainer').css('margin-right')); - - // Cases - // 0) Adaptive view frame doesn't fit in viewable bounds (viewablePanelLeftMargin is zero) -- use entire offset of panel (no adjustment needed) - // 1) Adaptive view frame fits in bounds -- then half of incoming panel will be split left and half right (offset / 2) - // 2) and 3) View Frame either fits in bounds before animation and no longer will after, or vice versa. Mix of previous two cases - if (isCollapsing) { - if (viewablePanelLeftMargin != 0) { - viewAdjustment = offset / 2; - } else if (-viewablePanelRightMargin < offset) { - viewAdjustment = ((offset + viewablePanelRightMargin) / 2); - } - } else if (viewablePanelLeftMargin != 0) { - viewAdjustment = Math.max(offset / 2, -viewablePanelLeftMargin) - } - } - - // Centered Page adjustment - if (isCentered) { - // Width of content not able to fit inside current viewable frame - var clippedContentWidth = $body.width() - calculateClippingBoundsWidth(Math.abs(offset), isLeftPanel); - - // Cases - // 0) Content never fits in bounds -- then entire offset of panel will move content left value (no adjustment needed as already handled) - // 1) Content fits in bounds -- then half of incoming panel offset will be split left and half right (offset / 2) - // 2) and 3) Content either fits in bounds before animation and no longer will after, or vice versa. Mix of previous two cases - if (clippedContentWidth <= 0) { - viewAdjustment = offset / 2; - } else if (isCollapsing && clippedContentWidth < offset) { - viewAdjustment = (offset - clippedContentWidth) / 2; - } else if (!isCollapsing && clippedContentWidth < -offset) { - viewAdjustment = (clippedContentWidth + offset) / 2; - } - } - - return leftPos + viewAdjustment; - } - - // Set to true when left panel or right panel are being expanded/collapsed - // returns to false when lsplitbar (switched to clippingBounds) finishes animation (thus panels will be fully expanded or retracted at this point) - var isAnimating = $axure.player.isAnimating = false; - - $axure.player.collapseToBar = function (context, hostId) { - lastLeftPanelWidth = $('.leftPanel').width(); - lastRightPanelWidth = $('.rightPanel').width(); - if (context === 'project' || context === 'all') { - - if(!isMobileMode()) { - isAnimating = true; - var newWidth = lastLeftPanelWidth != 0 ? lastLeftPanelWidth : lastLeftPanelWidthDefault; - var clippingWidth = calculateClippingBoundsWidth(0, true); - var newLeft = calculateScrollLeftWithOffset(newWidth, true); - - $('.leftPanel').animate({ 'margin-left': -newWidth + 'px' }, - { duration: 200, complete: function() { $('.leftPanel').width(0).hide().css({ 'margin-left': '' }); } }); - $('#lsplitbar').animate({ left: '-4px' }, - { duration: 200, complete: function() { $('#lsplitbar').hide(); } }); - - $('#clippingBounds').animate({ left: '', width: clippingWidth + 'px' }, { duration: 200 }); - $('#clippingBoundsScrollContainer').animate({ left: newLeft + 'px' }, - { duration: 200, complete: function () { - isAnimating = false; - $axure.player.resizeContent(); - $axure.player.pluginVisibleChanged(hostId, false); - }}); - } else { - $('.leftPanel').width(0); - $('#lsplitbar').hide(); - } - } - if (context === 'inspect' || context === 'all') { - if (!isMobileMode()) { - isAnimating = true; - var newWidth = lastRightPanelWidth != 0 ? lastRightPanelWidth : lastRightPanelWidthDefault; - var clippingWidth = calculateClippingBoundsWidth(0, false); - var newLeft = calculateScrollLeftWithOffset(newWidth, false); - - $('.rightPanel').animate({ 'margin-right': -newWidth + 'px' }, - { duration: 200, complete: function () { $('.rightPanel').width(0).hide().css({ 'margin-right': '' }); } }); - $('#rsplitbar').animate({ left: $(window).width() + 'px' }, - { duration: 200, complete: function () { $('#rsplitbar').hide(); } }); - - $('#clippingBounds').animate({ width: clippingWidth + 'px' }, { duration: 200 }); - $('#clippingBoundsScrollContainer').animate({ left: newLeft + 'px' }, - { duration: 200, complete: function () { - isAnimating = false; - $axure.player.resizeContent(); - $axure.player.pluginVisibleChanged(hostId, false); - }}); - } else { - $('.rightPanel').width(0); - $('#rsplitbar').hide(); - } - } - - $(window).resize(); - toolBarOnly = true; - } - - $axure.player.expandFromBar = function (hostId, context, isFinalPluginToRestore) { - - if (context === 'project') { - if ($('#lsplitbar').is(':visible')) return; - $('.leftPanel').removeClass('popup'); - if(!isMobileMode()) { - isAnimating = true; - var newWidth = (lastLeftPanelWidth ? lastLeftPanelWidth : lastLeftPanelWidthDefault); - var clippingWidth = calculateClippingBoundsWidth(newWidth, true); - var newLeft = calculateScrollLeftWithOffset(-newWidth, true); - - $('.leftPanel').width(newWidth); - $('.leftPanel').css('margin-left', -newWidth + 'px').show(); - $('.leftPanel').animate({ 'margin-left': '0px' }, { duration: 200, complete: function () { $('.leftPanel').css({ 'margin-left': '' }); } }); - - $('#lsplitbar').css('left', '-4px'); - $('#lsplitbar').show(); - $('#lsplitbar').animate({ left: newWidth - 4 + 'px' }, { duration: 200 }); - - $('#clippingBounds').animate({ left: newWidth + 'px', width: clippingWidth + 'px' }, { duration: 200 }); - $('#clippingBoundsScrollContainer').animate({ left: newLeft + 'px' }, - { duration: 200, complete: function () { - isAnimating = false; - $axure.player.resizeContent(); - if (isFinalPluginToRestore) $('#clippingBoundsScrollContainer').show(); - $axure.player.pluginVisibleChanged(hostId, true); - }}); - } - } else { - if ($('#rsplitbar').is(':visible')) { - // update width of rightPanel plugin - var newWidth = lastRightPanelWidth ? lastRightPanelWidth : lastRightPanelWidthDefault; - $('#' + hostId).width(newWidth); - $('#' + hostId).show(); - $axure.player.pluginVisibleChanged(hostId, true); - return; - } - if (!isMobileMode()) { - isAnimating = true; - var newWidth = lastRightPanelWidth ? lastRightPanelWidth : lastRightPanelWidthDefault; - var clippingWidth = calculateClippingBoundsWidth(newWidth, false); - var newLeft = calculateScrollLeftWithOffset(-newWidth, false); - - $('.rightPanel').width(newWidth); - $('.rightPanel').css('margin-right', -newWidth + 'px'); - $('#' + hostId).show(); - $('.rightPanel').animate({ 'margin-right': '0px' }, { duration: 200, complete: function () { $('.rightPanel').css({ 'margin-right': '' }); } }); - - $('#rsplitbar').css('left', $(window).width()); - $('#rsplitbar').show(); - $('#rsplitbar').animate({ left: $(window).width() - $('.rightPanel').width() + 'px' }, { duration: 200 }); - - $('#clippingBounds').animate({ width: clippingWidth + 'px' }, { duration: 200 }); - $('#clippingBoundsScrollContainer').animate({ left: newLeft + 'px' }, - { duration: 200, complete: function () { - isAnimating = false; - $axure.player.resizeContent(); - if (isFinalPluginToRestore) $('#clippingBoundsScrollContainer').show(); - $axure.player.pluginVisibleChanged(hostId, true); - }}); - } - } - $(window).resize(); - toolBarOnly = false; - - if (isMobileMode()) { - $('#mHideSidebar').show(); - $('#nativeAppControlFrame').show(); - } - } - - var suspendRefreshViewPort = $axure.player.suspendRefreshViewPort = false; - $axure.player.refreshViewPort = function () { - if (suspendRefreshViewPort) return; - - var dimStr = $('.currentAdaptiveView').attr('data-dim'); - var dim = dimStr ? dimStr.split('x') : { w: '0', h: '0' }; - var w = dim[0] != '0' ? dim[0] : ''; - var h = dim[1] != '0' ? dim[1] : ''; - - var scaleVal = $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'); - var selectedScaleValue = scaleVal; - $axure.player.noFrame = false; - if (h && scaleVal == 1) $axure.player.noFrame = true; - - $('#mainPanelContainer').attr({ - "data-scale-n": scaleVal, - "data-page-dimensions-type": h ? "device" : w ? "web" : "auto", - "data-scale-shift-x": null, - "data-scale-shift-y": null, - }); - - var clipToView = h && !$axure.player.noFrame; - var isDevice = h; - - var mainPanelWidth = $('#mainPanel').width(); - var mainPanelHeight = $('#mainPanel').height(); - - if (!w || !clipToView) w = mainPanelWidth; - if (!h || !clipToView) h = mainPanelHeight; - if (MOBILE_DEVICE && h > mainPanelHeight) h = mainPanelHeight; - if (MOBILE_DEVICE && w > mainPanelWidth) w = mainPanelWidth; - - if (clipToView) { - if (!MOBILE_DEVICE && scaleVal == '0') scaleVal = 2; - - w = Number(w); - h = Number(h); - - $('#mainFrame').width(w); - $('#clipFrameScroll').width(w); - $('#mainFrame').height(h); - $('#clipFrameScroll').height(h); - - var topPadding = MOBILE_DEVICE ? 0 : 10; - var leftPadding = 0; - var rightPadding = 0; - var bottomPadding = MOBILE_DEVICE ? 0 : 10; - - w = w + leftPadding + rightPadding; - h = h + topPadding + bottomPadding; - - var x = (mainPanelWidth - w) / 2; - var y = (mainPanelHeight - h) / 2 - 1; - - if (scaleVal != 2) { - x = Math.max(0, x); - y = Math.max(0, y); - } - - $('#mainPanelContainer').attr({ - "data-scale-shift-x": x, - "data-scale-shift-y": y, - }); - - $('#mainPanelContainer').css({ - 'margin': 'auto', - 'top': y + 'px', - 'left': (x < 0 ? x + 'px' : 'auto') - }); - - $('#clipFrameScroll').css({ - 'left': leftPadding + 'px', - 'top': topPadding + 'px' - }); - - $('#mainPanelContainer').width(w); - $('#mainPanelContainer').height(h); - } else { - $('#mainFrame').width('100%'); - $('#mainFrame').height(h); - - $('#clipFrameScroll').width('100%'); - $('#clipFrameScroll').height(h); - $('#clipFrameScroll').css({ 'left': '', 'top': '' }); - - $('#mainPanelContainer').width('100%'); - $('#mainPanelContainer').height(h); - $('#mainPanelContainer').css({ - 'left': '', - 'margin': '', - 'top': '' - }); - } - $axure.messageCenter.postMessage('setDeviceMode', { device: isDevice, width: w, scaleToWidth: (scaleVal == "1") }); - - $(".vpScaleOption").show(); - var prevScaleN = $('#mainPanelContainer').css('transform'); - prevScaleN = (prevScaleN == "none") ? 1 : Number(prevScaleN.substring(prevScaleN.indexOf('(') + 1, prevScaleN.indexOf(','))); - var newScaleN = 1; - - $('#mainPanelContainer').css({ - 'transform': '', - 'transform-origin': '' - }); - - var $leftPanel = $('.leftPanel:visible'); - var leftPanelOffset = (!isMobileMode() && $leftPanel.length > 0) ? $leftPanel.width() : 0; - var $rightPanel = $('.rightPanel:visible'); - var rightPanelOffset = (!isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0; - - var vpScaleData = { - scale: scaleVal, - prevScaleN: prevScaleN, - viewportHeight: h, - viewportWidth: w, - panelWidthOffset: leftPanelOffset + rightPanelOffset, - clipToView: clipToView - }; - $axure.messageCenter.postMessage('getScale', vpScaleData); - $axure.messageCenter.postMessage('cloud_ScaleValueChanged', { - scale: selectedScaleValue, - }); - if (scaleVal == '0' && clipToView) $('#mainPanel').css('overflow', 'auto'); - else $('#mainPanel').css('overflow', ''); - } - - $axure.player.getProjectName = function getProjectName() { - if (typeof PREVIEW_INFO !== 'undefined') { - return PREVIEW_INFO.fileName; - } else if(typeof $axure.player.settings.projectName !== 'undefined') { - return $axure.player.settings.projectName; - } else return false; - } - - function initializeLogo() { - - if(typeof PREVIEW_INFO !== 'undefined') { - $('#previewNotice').show(); - } - - //if (typeof PREVIEW_INFO !== 'undefined') { - // $('#interfaceControlFrameLogoCaptionContainer').html(PREVIEW_INFO.fileName); - //} else if (typeof $axure.player.settings.projectName !== 'undefined') { - // $('#interfaceControlFrameLogoCaptionContainer').html($axure.player.settings.projectName); - //} else { - // $('#interfaceControlFrameLogoCaptionContainer').hide(); - //} - - //if ($axure.document.configuration.logoImagePath) { - // var image = new Image(); - // //image.onload = function () { - // // //$('#logoImage').css('max-width', this.width + 'px'); - // // $('#interfaceControlFrameContainer').css('margin-left', '-' + $('#logoImage').width() / 2 + 'px'); - // // //$axure.player.resizeContent(); - // //}; - // image.src = $axure.document.configuration.logoImagePath; - - // $('#interfaceControlFrameLogoImageContainer').html(''); - // $('#logoImage').attr('src', $axure.document.configuration.logoImagePath);//.on('load', function () { $axure.player.resizeContent(); }); - //} else $('#interfaceControlFrameLogoImageContainer').hide(); - - //if ($axure.document.configuration.logoImageCaption) { - // $('#interfaceControlFrameLogoCaptionContainer').html($axure.document.configuration.logoImageCaption); - //} else $('#interfaceControlFrameLogoCaptionContainer').hide(); - - //if(!$('#interfaceControlFrameLogoImageContainer').is(':visible') && !$('#interfaceControlFrameLogoCaptionContainer').is(':visible')) { - // $('#interfaceControlFrameLogoContainer').hide(); - //} - } - - function initializePreview() { - if (typeof PREVIEW_INFO !== 'undefined') { - $('#separatorContainer').addClass('hasLeft'); - $('#overflowMadeWith').addClass('preview'); - - var callback = undefined; - $('#publishButton').click(function () { - $.ajax({ - type: 'GET', - url: 'publish', - data: {}, - success: function (response) { - if (callback) callback(response); - }, - error: function (response) { - if (callback) callback(response); - }, - dataType: 'jsonp' - }); - }); - } - } - - var userAcct = { - userId: '', - userName: '', - userEmail: '', - userProfileImg: '', - isUsingAxureAcct: false, - } - - var authCookieValue = null; - var userCookieValue = null; - var isSubInstance = false; - //var readOnlyMode = false; - //var readOnlyMessage = ''; - - // Watermark hints - // NOTE: The trailing characters serve to be a distinguishing element in case the user actually does use text similar to the hint. - var emailHint = "Email "; - var passHint = "Password "; - - var feedbackServiceUrl = (window.AXSHARE_HOST_SECURE_URL || 'https://share.axure.com') + '/issue'; - // Look at creating a new location to have GetShareStatus(FbEnabled replacement) and SafariAuth since they are more general calls that are not solely for feedback now - //var prototypeControlUrl = (window.AXSHARE_HOST_SECURE_URL || 'https://share.axure.com') + '/prototype'; - - // Checks if the browser is Safari 3.0+ - // https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser - function isSafari() { - // Safari 3.0+ "[object HTMLElementConstructor]" - var liveSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification)); - return liveSafari || SAFARI || (IOS && $axure.utils.isShareApp()); - }; - - var iosInnerHeight = (function () { - if (!navigator.userAgent.match(/iphone|ipod|ipad/i)) { - /** - * Avoids conditional logic in the implementation - * @return {number} - window's innerHeight measurement in pixels - */ - return function () { - return window.innerHeight; - }; - } - - // Store initial orientation - var axis = Math.abs(window.orientation); - // And hoist cached dimensions - var dims = { w: 0, h: 0 }; - - /** - * Creates an element with a height of 100vh since iOS accurately - * reports vp height (but not window.innerHeight). Then destroy it. - */ - var createRuler = function () { - var ruler = document.createElement('div'); - - ruler.style.position = 'fixed'; - ruler.style.height = '100vh'; - ruler.style.width = 0; - ruler.style.top = 0; - - document.documentElement.appendChild(ruler); - - // Set cache conscientious of device orientation - dims.w = axis === 90 ? ruler.offsetHeight : window.innerWidth; - dims.h = axis === 90 ? window.innerWidth : ruler.offsetHeight; - - // Clean up after ourselves - document.documentElement.removeChild(ruler); - ruler = null; - }; - - // Measure once - createRuler(); - - /** - * Returns window's cached innerHeight measurement - * based on viewport height and device orientation - * @return {number} - window's innerHeight measurement in pixels - */ - return function () { - if (Math.abs(window.orientation) !== 90) { - return dims.h; - } - - return dims.w; - }; - }()); - - function includeTokens(ajaxData, excludeUser) { - //If the authCookieValue is set (a password-protected local prototype), then send the - //token as well (because cookies don't always get sent to external domains) - if (authCookieValue) { - $.extend(ajaxData, { token: authCookieValue }); - } - if (!excludeUser && userCookieValue) { - $.extend(ajaxData, { utoken: userCookieValue }); - } - } - - function setUserLoggedInStatus(response, safariAuthResponseProfile) { - if (!response.success) { - userAcct.isUsingAxureAcct = false; - } else { - if (safariAuthResponseProfile) response = safariAuthResponseProfile; - userAcct.userId = response.userId; - if (safariAuthResponseProfile) - userAcct.userName = response.username == null || response.username.trim() === '' ? response.userEmail : response.username.trim(); - else - userAcct.userName = response.nickname == null || response.nickname.trim() === '' ? response.userEmail : response.nickname.trim(); - userAcct.userEmail = response.userEmail; - userAcct.userProfileImg = response.profileImageUrl; - userAcct.isUsingAxureAcct = true; - - if (response.authToken != null) { - $axshare.setAuthCookie(response.authToken); - userCookieValue = response.authToken; - } - } - - // If feedback is loaded, update feedback with new account information - if (typeof feedback !== 'undefined') feedback.updateUserAccountInfo(userAcct, authCookieValue, userCookieValue); - } - - // TODO: for on prem, we need to use an ajax call directly to share instead of accounts - // Verify authentication against axure accounts - $axure.player.axureAuth = function axureAuth(callback) { - if (window.$axshare != null) { - $axshare.auth(function (response) { - if (response.success) { - setUserLoggedInStatus(response); - } else { - if (isSafari()) { - var ajaxData = { - userId: userAcct.isUsingAxureAcct ? userAcct.userId : "" - }; - includeTokens(ajaxData); - - $.ajax({ - type: 'GET', - url: feedbackServiceUrl + '/safariAuth', - data: ajaxData, - success: function (response) { - if (!response.success) { - setUserLoggedInStatus(response); - } else { - setUserLoggedInStatus(response, response.data.profile[userAcct.userId]); - - if (callback != null) { - callback(response); - } - } - }, - dataType: 'jsonp' - }); - } else { - setUserLoggedInStatus(response); - } - } - - if (callback != null) { - callback(response); - } - - }); - } - } - - // TODO: for on prem, we need to use an ajax call directly to share instead of accounts - // Log into axure accounts - $axure.player.axureLogin = function axureLogin(email, password, success, failure, saml) { - if (window.$axshare != null) { - password = password === passHint ? "" : password; - $axshare.login(email, password, false, function (response) { - if (response.redirecturl !== "" && response.redirecturl != null) { - saml(response); - return; - } - - if (response.success && (response.verified || isSubInstance)) { - if (isSafari()) setUserLoggedInStatus(response); - $axure.player.axureAuth(success); - } else { - failure(response); - } - }, window.ON_PREM_LDAP_ENABLED); - } else { - failure(); - } - } - - function playerLogout() { - userAcct.isUsingAxureAcct = false; - userAcct.userId = ''; - userAcct.userProfileImg = ''; - - // If feedback is loaded, update feedback with new account information - if (typeof feedback !== 'undefined') feedback.updateUserAccountInfo(userAcct); - } - - $axure.player.logout = function (feedbackLogout) { - var completeLogout = playerLogout; - if (feedbackLogout) { - completeLogout = function () { - feedbackLogout(); - playerLogout(); - } - } - if (window.$axshare != null) { - $axshare.logout(completeLogout); - } else { - completeLogout(); - } - } - - /* - * TODO: Start of Login/Account Mgmt UI, which will need to be updated (currenly uses feedback9.css often) - */ - function buildAccountLoginPopup() { - return [ - '
    ', - '
    ', - ' Login into your Axure Cloud account', - ' ', - ' ', - '
    LOG IN
    ', - '
    ', - ' ', - '
    ', - '
    ' - ].join(""); - } - - // Bind events to axure login speech bubble (watermark, login, errors, click outside) - function bindAxureLoginContainerEvent() { - var $container = $("#accountLoginContainer"); - $container.find('input[name="email"]').addClass("watermark").val(emailHint).focus(function () { - if ($(this).val() === emailHint) { - $(this).removeClass("watermark").val(""); - } - }).blur(function () { - if ($(this).val() === "") { - $(this).addClass("watermark").val(emailHint); - } - - $container.find('.errorMessage').text(''); - $container.find('.errorMessage').hide(); - }).keyup(function (event) { - if (event.keyCode == 13) { - $container.find('.feedbackGreenBtn').click(); - } - }); - $container.find('input[name="password"]').addClass("watermark").val(passHint).focus(function () { - if ($(this).val() === passHint) { - $(this).removeClass("watermark").val(""); - //$(this).removeClass("watermark").val("").attr("type", "password"); - - // Note: this might be an issue since jquery doesn't like it. Test in IE - $(this)[0].setAttribute('type', 'password'); - } - }).blur(function () { - if ($(this).val() === "") { - $(this).val(passHint).addClass("watermark"); - //$(this).val(passHint).addClass("watermark").removeAttr("type"); - - // Note: this might be an issue since jquery doesn't like it. Test in IE - $(this)[0].setAttribute('type', 'text'); - } - - $container.find('.errorMessage').text(''); - $container.find('.errorMessage').hide(); - }).keyup(function (event) { - if (event.keyCode == 13) { - $container.find('.feedbackGreenBtn_Player').click(); - } - }); - - // Login Submit Event - $container.find('.feedbackGreenBtn_Player').click(function (e) { - var email = $container.find('.axureEmail').val(); - var password = $container.find('.axurePassword').val(); - - $axure.player.axureLogin(email, password, function (response) { - // Success - // Clear out fields - $container.find('.axureEmail').val(emailHint).addClass("watermark"); - $container.find('.axurePassword').val(passHint).addClass("watermark"); - $container.find('.axurePassword')[0].setAttribute('type', 'text'); - - closePopup(); - }, function (response) { - // Failure - $container.find('.errorMessage').text(response != null && response.message ? response.message : "There was an error connecting to the server, please try again later."); - $container.find('.errorMessage').show(); - }, function (response) { - // SAML User - $container.find('.errorMessage').empty(); - $container.find('.errorMessage').append("Please refresh this page after logging in via your identity provider."); - $container.find('.errorMessage').show(); - - window.open(response.redirecturl, '_blank'); - - $container.find('.errorMessage').find('.refreshLink').click(function () { - location.reload(true); - }); - }); - }); - }; - - function initializeSignIn() { - if (typeof PREVIEW_INFO === 'undefined' && $axure.player.settings.isAxshare) { - (function finishInit() { - if (window.$axshare == null || $axshare.auth == null || $axshare.login == null) { - setTimeout(finishInit, 50); - } else { - // Call to set readOnlyMode, readOnlyMessage, and isSubinstance (readOnlyMode/Message currently only used for feedback9) - $.ajax({ - type: 'GET', - url: feedbackServiceUrl + '/GetShareStatus', - data: {}, - success: function (response) { - //readOnlyMode = response.readOnlyMode; - //readOnlyMessage = response.readOnlyMessage; - isSubInstance = response.isSubInstance; - if (isSubInstance) $('#accountLoginContainer').find("#playerSignUpLink").hide(); - - // For now, calling methods to set these values in feedback on start (could later make a general method to retrieve these values from player) - if (typeof feedback !== 'undefined') { - feedback.setReadOnlyModeAndMessage(response.readOnlyMode, response.readOnlyMessage); - feedback.setIsSubInstance(isSubInstance); - } - }, - dataType: 'jsonp' - }); - - // Login container - $("#accountLoginContainer").append(buildAccountLoginPopup()); - bindAxureLoginContainerEvent(); - - // Attempt to auth and acquire account information, then update top panel - $axure.player.axureAuth(); - } - })(); - } - } - - function overflowIsHidden(node) { - var style = getComputedStyle(node); - return style.overflow === 'hidden' || style.overflowX === 'hidden' || style.overflowY === 'hidden'; - } - - function findNearestScrollableParent(firstNode) { - var node = firstNode; - var scrollable = null; - while (!scrollable && node) { - if (node.scrollWidth > node.clientWidth || node.scrollHeight > node.clientHeight) { - if (!overflowIsHidden(node) || $(node).css('-webkit-overflow-scrolling') === 'touch') { - scrollable = node; - } - } - node = node.parentNode; - } - return scrollable; - } - - function getScrollOwner(target) { - var owner = findNearestScrollableParent(target); - if (!owner || owner === document.documentElement || owner === document.body || $(owner).parents('#topPanel').length || owner == document.getElementById('forwardSlash')) { - return null; - } - - return owner; - } - - function removeElasticScrollFromIframe() { - var $iframe = $($('#mainPanel').find('iframe')[0].contentWindow); - $iframe[0].document.body.addEventListener('touchmove', function (event) { - if (!getScrollOwner(event.target)) { - event.preventDefault(); - } - }, { passive: false }); - } - - $(document).ready(function () { - (function finishPlayerInit() { - if ($axure.player.settings.isAxshare) { - $axure.page.bind('load.start', contentDocument_onload); - if ($axure.player.settings.loadFeedbackPlugin) { - $axure.utils.loadJS('/Scripts/plugins/feedback/feedback9.js'); - - /******* DEBUG: Allows for debugging/viewing feedback9.js in browser inspect mode ******/ - //var hdr = document.createElement('script'); - //hdr.type = "text/javascript" - //hdr.src = '/Scripts/plugins/feedback/feedback9.js'; - //document.head.appendChild(hdr); - } - } - - initializeEvents(); - initializeMainFrame(); - - $('.leftPanel').width(0); - - $('#maximizePanelContainer').hide(); - - if ($axure.player.settings.startCollapsed) { - collapse(); - $('.leftPanel').width(0); - - var maxPanelWidth = $('#maximizePanel').width(); - setTimeout(function() { - $('#maximizePanel').animate({ - left:'-' + maxPanelWidth + 'px' - }, 300); - }, 2000); - } - - if (MOBILE_DEVICE) { - $('body').removeClass('hashover'); - - if (SAFARI) { - // Stop pinch zoom (stopping all gestures for now) - // Gesturestart is only supported in Safari - document.addEventListener("gesturestart", function (e) { - e.preventDefault(); - }); - } - - if (IOS) { - // Attempt at removing elastic scroll while in mobile menu - var touching = false; - var pageYStart = 0; - var pageYOffset = 0; - document.body.addEventListener('touchend', function (event) { - if (getScrollOwner(event.target)) { - touching = false; - } - }, { passive: false }); - - document.body.addEventListener('touchmove', function (event) { - var owner = getScrollOwner(event.target) - if (!owner) { - event.preventDefault(); - } else { - if ($(owner).scrollTop() == 0) { - if (touching) { - if (event.pageY >= pageYStart) { - event.preventDefault(); - } - } - } - if ($(owner).scrollTop() + $(owner).height() == owner.scrollHeight) { - if (touching) { - if (event.pageY <= pageYStart) { - event.preventDefault(); - } - } - } - } - }, { passive: false }); - - document.body.addEventListener('touchstart', function (event) { - var owner = getScrollOwner(event.target); - if (owner) { - if ($(owner).scrollTop() == 0) { - touching = true; - pageYStart = event.pageY; - pageYOffset = event.pageY; - } - if ($(owner).scrollTop() + $(owner).height() == owner.scrollHeight) { - touching = true; - pageYStart = event.pageY; - pageYOffset = event.pageY; - } - } - }, { passive: false }); - - removeElasticScrollFromIframe(); - - $('html').css('-webkit-tap-highlight-color', 'transparent'); - - // Stop iOS from automatically scaling parts of the mobile player - // Could stop automatic scaling on Ipads as well that we actually want, but for now, seems fine - $('body').css('-webkit-text-size-adjust', '100%'); - - window.addEventListener("orientationchange", function () { - var viewport = document.querySelector("meta[name=viewport]"); - //so iOS doesn't zoom when switching back to portrait - if (IOS) { - viewport.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, viewport-fit=cover'); - viewport.setAttribute('content', 'width=device-width, initial-scale=1.0, viewport-fit=cover'); - } else { - viewport.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0'); - viewport.setAttribute('content', 'width=device-width, initial-scale=1.0'); - } - $axure.player.resizeContent(); - }, false); - - $axure.page.bind('load.start', function () { - $axure.player.resizeContent(); - }); - - } - - // Always append both mobile browser menu and native menu, as app might not have returned value signifying native at this point - appendNativePrototypeControlFrame(); - appendMobileBrowserControlFrame(); - appendProjectOptions(); - } - - initializeLogo(); - initializePreview(); - - $axure.player.resizeContent(true); - - // Has timeout to keep waiting to build sign in controls while axAccount is still loading - initializeSignIn(); - })(); - }); - - function appendProjectOptions() { - var toAppend = ''; - toAppend += '
    '; - toAppend += '
    PROJECT OPTIONS
    '; - toAppend += '
    '; - toAppend += '
    Hotspots
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += ' Show Hotspots
    '; - toAppend += '
    Scale
    '; - toAppend += '
    '; - toAppend += '
    Adaptive Views
    '; - toAppend += '
    ' - toAppend += '
    ' - toAppend += '
    '; - - $('#mHideSidebar').prepend(toAppend); - $(('#projectOptionsHost')).click(function (e) { e.stopPropagation(); }); - - if (isMobileMode()) $axure.player.resizeContent(); - } - - function appendMobileBrowserControlFrame() { - var toAppend = ""; - - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    '; - toAppend += '
    '; - - $('#mobileControlFrameContainer').append(toAppend); - - $('#closeBackground').click(collapse); - - // iOS will do incorrect click position / content bounds calculation which results in scroll getting reset to (0, 0) - if (IOS) $('#mobileControlFrameContainer').on($axure.eventNames.mouseDownName, function (e) { e.stopPropagation(); }); - } - - function appendNativePrototypeControlFrame() { - var toAppend = ""; - toAppend += '
    '; - toAppend += '
      '; - toAppend += '
    • '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
      Exit
      '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
    • '; - toAppend += '
    • '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
      Return to Prototype
      '; - toAppend += '
    • '; - toAppend += '
    • '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
      Refresh
      '; - toAppend += '
      '; - toAppend += '
      '; - toAppend += '
    • '; - toAppend += '
    '; - toAppend += '
    '; - - $('#mobileControlFrameContainer').append(toAppend); - - var barHeight = IOS ? '72px' : '60px'; - var returnIconDisplacement = IOS ? '-15px': '-20px'; - var iconTopMargin = IOS ? '14px': '7px'; - var returnTextTopMargin = IOS ? '9px': '7px'; - - document.getElementById('nativeAppControlFrame').style.height = barHeight; - document.getElementById('nativeMenuBlueBackground').style.height = barHeight; - document.getElementById('return').style.top = returnIconDisplacement; - document.getElementById('returnText').style.marginTop = returnTextTopMargin; - document.getElementById('refreshIcon').style.marginTop = iconTopMargin; - document.getElementById('exitIcon').style.marginTop = iconTopMargin; - - addAppButtonClickListener("exit"); - addAppButtonClickListener("refresh"); - - $('#returnBackground').click(collapse); - $('#nativeAppControlFrame').on('touchmove', function (e) { - e.stopPropagation(); - }, false); - } - - function addAppButtonClickListener(id) { - var func = function () { IOS ? window.webkit.messageHandlers.prototypeMenuButtonClick.postMessage(id) : ShareApp.PrototypeMenuButtonClick(id); }; - document.getElementById(id).addEventListener("click", func, false); - } - - function toggleSitemap() { - $axure.player.showPlugin(1); - } - - function closePopup() { - var $container = $('.popup'); - var isLeftPanel = $container.hasClass('leftPanel'); - $container.removeClass('popup'); - $('#overflowMenuButton').removeClass('selected'); - $('#interfaceAdaptiveViewsContainer').removeClass('selected'); - $container.hide(); - - $('div.splitterMask').unbind($axure.eventNames.mouseDownName, closePopup); - $('div.splitterMask').remove(); - } - - $axure.player.closePopup = closePopup; - - function showPopup($container) { - if ($('#browserOutOfDateNotification').is(":visible")) return; - $container.addClass('popup'); - $container.show(); - - $('
    ').insertAfter($container); - $('div.splitterMask').bind($axure.eventNames.mouseDownName, closePopup); - } - - $axure.player.showPopup = showPopup; - - function toggleAdaptiveViewsPopup() { - if (($('#interfaceAdaptiveViewsListContainer').hasClass('popup'))) { - closePopup(); - } else { - $('#interfaceAdaptiveViewsContainer').addClass('selected'); - showPopup($('#interfaceAdaptiveViewsListContainer')); - } - } - - function toggleOverflowMenuPopup() { - if (($('#overflowMenuContainer').hasClass('popup'))) { - closePopup(); - } else { - $('#overflowMenuButton').addClass('selected'); - showPopup($('#overflowMenuContainer')); - } - } - - - var startSplitX; - var startSplitWidth; - function startLeftSplit() { - startSplitX = window.event.pageX; - startSplitWidth = lastLeftPanelWidth; - var $left = $('#lsplitbar'); - $left.addClass('active'); - $('
    ').insertAfter($left); - $(document).bind($axure.eventNames.mouseMoveName, doLeftSplitMove).bind($axure.eventNames.mouseUpName, endLeftSplitMove); - } - - function startRightSplit() { - startSplitX = window.event.pageX; - startSplitWidth = lastRightPanelWidth; - var $left = $('#rsplitbar'); - $left.addClass('active'); - $('
    ').insertAfter($left); - $(document).bind($axure.eventNames.mouseMoveName, doRightSplitMove).bind($axure.eventNames.mouseUpName, endRightSplitMove); - } - - function doLeftSplitMove() { - var currentX = window.event.pageX; - var newWidth = Math.min(startSplitWidth + currentX - startSplitX, $(window).width() - $('.rightPanel').width(), $(window).width() - lastRightPanelWidthDefault); - lastLeftPanelWidth = Math.max(lastLeftPanelWidthDefault, newWidth); - $('.leftPanel').width(lastLeftPanelWidth ? lastLeftPanelWidth : lastLeftPanelWidthDefault); - $('#lsplitbar').css('left', $('.leftPanel').width() - 4); - $axure.player.updateClippingBoundsWidth(); - $axure.player.refreshViewPort(); - } - - function doRightSplitMove() { - var currentX = window.event.pageX; - var newWidth = Math.min(startSplitWidth - currentX + startSplitX, $(window).width() - $('.leftPanel').width(), $(window).width() - lastLeftPanelWidthDefault); - lastRightPanelWidth = Math.max(lastRightPanelWidthDefault, newWidth); - $('.rightPanel').width(lastRightPanelWidth ? lastRightPanelWidth : lastRightPanelWidthDefault); - $('#rsplitbar').css('left', $(window).width() - $('.rightPanel').width()); - $axure.player.updateClippingBoundsWidth(); - $axure.player.refreshViewPort(); - } - - function endLeftSplitMove() { - $('div.splitterMask').remove(); - var $left = $('#lsplitbar'); - $left.removeClass('active'); - $(document).unbind($axure.eventNames.mouseMoveName, doLeftSplitMove).unbind($axure.eventNames.mouseUpName, endLeftSplitMove); - setAdaptiveView() - } - - function endRightSplitMove() { - $('div.splitterMask').remove(); - var $left = $('#rsplitbar'); - $left.removeClass('active'); - $(document).unbind($axure.eventNames.mouseMoveName, doRightSplitMove).unbind($axure.eventNames.mouseUpName, endRightSplitMove); - setAdaptiveView() - } - - - var startMX; - var startMLeft; - var startMElement; - var maxMLeft; - var getMaxMLeft = function () { - if ($('.rightPanel.mobileMode').length == 0) return $('.leftPanel.mobileMode').last().position().left + 100; - return $('.rightPanel.mobileMode').last().position().left + 100; - } - - function startM(e) { - // Android touch event does not define pageX directly - if(window.event.pageX) { - startMX = window.event.pageX; - } else { - startMX = window.event.touches[0].pageX; - } - - startMElement = window.event.target.id; - var $m = $('#mHideSidebar'); - startMLeft = Number($m.css('left').replace('px', '')); - $(document).bind($axure.eventNames.mouseMoveName, doMMove).bind($axure.eventNames.mouseUpName, endMMove); - - // Must stop propagation on iOS; otherwise scroll position of content will be reset to (0, 0) - // (likely due to position of click being calculated as out of bounds for outerContainer -- iOS is not adding scroll offset to bounds) - if (IOS) { e.stopPropagation() }; - } - - function doMMove() { - var $m = $('#mHideSidebar'); - if(window.event.pageX) { - currentX = window.event.pageX; - } else { - currentX = window.event.touches[0].pageX; - } - - var deltaX = currentX - startMX; - if (Math.abs(deltaX) > 0 && $('.splitterMask').length == 0) { - $('
    ').insertAfter($m); - } - var newLeft = startMLeft + deltaX; - newLeft = Math.min(0, newLeft); - newLeft = Math.max(-getMaxMLeft(), newLeft); - $m.css('left', newLeft + 'px'); - } - - function endMMove(e) { - $('div.splitterMask').remove(); - $(document).unbind($axure.eventNames.mouseMoveName, doMMove).unbind($axure.eventNames.mouseUpName, endMMove); - e.stopPropagation(); - - var $m = $('#mHideSidebar'); - if(window.event.pageX) { - currentX = window.event.pageX; - } else { - currentX = window.event.changedTouches[0].pageX; - } - var deltaX = currentX - startMX; - if (deltaX != 0 || startMElement != 'mHideSidebar') { - adjustM(currentX < startMX ? 'left' : 'right', true); - } - } - - function adjustM(direction, animate) { - var $m = $('#mHideSidebar'); - var duration = animate ? 100 : 0; - var newLeft = Number($m.css('left').replace('px', '')); - if (!$m.is(':visible') || newLeft > -100) { - $m.animate({ 'left': '-60px' }, duration); - } else if (newLeft < -getMaxMLeft() + 100) { - $m.animate({ 'left': (-getMaxMLeft() + 125) + 'px' }, duration); - } else if (direction == 'left') { - var handled = false; - var $panels = $('.rightPanel.mobileMode, .leftPanel.mobileMode'); - $panels.each(function () { - var panelX = $(this).position().left; - if (panelX > -newLeft) { - $m.animate({ 'left': (-panelX + 25) + 'px' }, duration); - handled = true; - return false; - } - }); - if (!handled) { - $m.animate({ 'left': (-$panels.last().position().left + 25) + 'px' }, duration); - } - } else if (direction == 'right') { - var handled = false; - var $panels = $('.rightPanel.mobileMode, .leftPanel.mobileMode'); - $($panels.get().reverse()).each(function () { - var panelRight = $(this).position().left + $(this).width(); - if (panelRight < -newLeft + $(window).width()) { - $m.animate({ 'left': (-$(this).position().left + 25) + 'px' }, duration); - handled = true; - return false; - } - }); - if (!handled) { - $m.animate({ 'left': '-60px' }, duration); - } - } - } - - function repositionPinsOnScaleChange(data) { - var $pins = $('#existingPinsOverlay').children(); - for (var i = 0; i < $pins.length; i++) { - // calculate new position of pin - const left = parseFloat($($pins[i]).attr('data-x')); - const top = parseFloat($($pins[i]).attr('data-y')); - const width = $($pins[i]).width(); - const height = $($pins[i]).height(); - - // Get current scale of mainPanelContainer - // MainPanelContainer scaled without setContentScale message - var scale = $('#mainPanelContainer').css('transform'); - scale = (scale == "none") ? 1 : Number(scale.substring(scale.indexOf('(') + 1, scale.indexOf(','))); - const scaledLeft = (left * scale) - (width / 2); - const scaledTop = (top * scale) - (height / 2); - - - $($pins[i]).css('left', scaledLeft + 'px'); - $($pins[i]).css('top', scaledTop + 'px'); - } - - // Distance from left of project content to origin (used for pins positioning when on a centered page in Scale to Fit mode) - if (typeof data.contentOriginOffset !== "undefined") contentLeftOfOriginOffset = data.contentOriginOffset; - } - - function messageCenter_message(message, data) { - if (message == 'expandFrame') expand(); - else if (message == 'getCollapseFrameOnLoad' && $axure.player.settings.startCollapsed && !MOBILE_DEVICE) $axure.messageCenter.postMessage('collapseFrameOnLoad'); - else if (message == 'tripleClick') { - if ($axure.player.isMobileMode() || MOBILE_DEVICE) expand(); - } else if (message == 'setContentScale') { - if (data.clipToView) { - var scaleVal = $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'); - if (scaleVal == '2' || (!MOBILE_DEVICE && scaleVal == '0')) { - var scaleN = newScaleN = $('#mainPanel').width() / data.viewportWidth; - var hScaleN = ($('#mainPanel').height()) / data.viewportHeight; - if (hScaleN < scaleN) scaleN = newScaleN = hScaleN; - if(scaleVal == '0') scaleN = Math.min(1, scaleN); - var scale = 'scale(' + scaleN + ')'; - $('#mainPanelContainer').css({ - 'transform': scale, - 'transform-origin': '' - }); - } - } else { - if (data.scaleN != 1) { - var scale = 'scale(' + data.scaleN + ')'; - var width = 100 / data.scaleN + '%'; - var height = Number($('#mainPanelContainer').css('height').replace('px', '')) / data.scaleN + 'px'; - $('#mainPanelContainer').css({ - 'transform': scale, - 'transform-origin': '0px 0px', - 'width': width, - 'height': height - }); - //$('#clipFrameScroll').css('height' , height + 'px'); - //$('#mainFrame').css('height' , height + 'px'); - $('#clipFrameScroll').height(height); - $('#mainFrame').height(height); - } - } - - repositionPinsOnScaleChange(data); - repositionClippingBoundsScroll(); - // Fix for edge not redrawing content after scale change - if ($axure.browser.isEdge) { - newHeight = window.innerHeight - ((!isMobileMode() && $('#topPanel').is(':visible')) ? $('#topPanel').height() : 0); - newWidth = $(window).width(); - $('#outerContainer').height(newHeight).width(newWidth); - $('#mainPanel').height(newHeight); - $('#clippingBounds').height(newHeight); - } - } - } - - function loadVariablesFromUrl(removeVarFromUrl) { - let originalHashValues = window.location.href.substr(window.location.href.indexOf('#')) || ''; - let variables = {}; - const query = (originalHashValues.split(GLOBAL_VAR_NAME)[1] || ''); - - if(query.length > 0) { - $axure.utils.parseGlobalVars(query, function(varName, varValue) { - variables[varName] = varValue; - }); - - if(removeVarFromUrl) { - originalHashValues = originalHashValues.replace(GLOBAL_VAR_NAME, "").replace(query, ""); - replaceHash(originalHashValues); - } - } - - return variables; - } - - function getInitialUrl() { - var shortId = getHashStringVar(PAGE_ID_NAME); - var foundById = []; - if (shortId.length > 0) { - getPageUrlsById(shortId, foundById, undefined); - if (foundById.length == 1) return foundById[0]; - } - - var pageName = getHashStringVar(PAGE_URL_NAME); - if (pageName.length > 0) return pageName + ".html"; - else { - if (foundById.length > 0) return foundById[0]; - var url = getFirstPageUrl($axure.document.sitemap.rootNodes); - return (url ? url : "about:blank"); - } - } - - var getPageUrlsById = $axure.player.getPageUrlsById = function (packageId, foundById, nodes) { - if (!nodes) nodes = $axure.document.sitemap.rootNodes; - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - if (node.id == packageId) foundById.push(node.url); - var hasChildren = (node.children && node.children.length > 0); - if (hasChildren) { - getPageUrlsById(packageId, foundById, node.children); - } - } - } - - var getPageIdByUrl = $axure.player.getPageIdByUrl = function(url, nodes) { - if (!nodes) nodes = $axure.document.sitemap.rootNodes; - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - if (node.url == url) return node.id; - else { - var hasChildren = (node.children && node.children.length > 0); - if (hasChildren) { - var id = getPageIdByUrl(url, node.children); - if (id) return id; - } - } - } - return null; - } - - function getFirstPageUrl(nodes) { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - if (node.url) return node.url; - else { - var hasChildren = (node.children && node.children.length > 0); - if (hasChildren) { - var url = getFirstPageUrl(node.children); - if (url) return url; - } - } - } - return null; - } - - function closePlayer() { - if ($axure.page.location) window.location.href = $axure.page.location; - else { - var pageFile = getInitialUrl(); - var currentLocation = window.location.toString(); - window.location.href = currentLocation.substr(0, currentLocation.lastIndexOf("/") + 1) + pageFile; - } - } - - function replaceHash(newHash) { - var currentLocWithoutHash = window.location.toString().split('#')[0]; - - //We use replace so that every hash change doesn't get appended to the history stack. - //We use replaceState in browsers that support it, else replace the location - if (typeof window.history.replaceState != 'undefined') { - try { - //Chrome 45 (Version 45.0.2454.85 m) started throwing an error here when generated locally (this only happens with sitemap open) which broke all interactions. - //try catch breaks the url adjusting nicely when the sitemap is open, but all interactions and forward and back buttons work. - //Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with URL 'file:///C:/Users/Ian/Documents/Axure/HTML/Untitled/start.html#p=home' cannot be created in a document with origin 'null'. - window.history.replaceState(null, null, currentLocWithoutHash + newHash); - } catch (ex) { } - } else { - window.location.replace(currentLocWithoutHash + newHash); - } - } - - function collapse() { - if (IOS) { - $('body').off('touchstart'); - $('body').off('touchend'); - } - - if ($axure.player.isMobileMode()) { - $('#mHideSidebar').hide(); - $('#nativeAppControlFrame').hide(); - $('#mobileBrowserControlFrame').hide(); - } else { - $axure.player.deleteVarFromCurrentUrlHash('g'); - $axure.player.setVarInCurrentUrlHash('c', 1); - if (!MOBILE_DEVICE) $('#maximizePanelContainer').show(); - lastLeftPanelWidth = $('.leftPanel').width(); - lastRightPanelWidth = $('.rightPanel').width(); - - $('.leftPanel').hide(); - $('.rightPanel').hide(); - $('#topPanel').hide(); - - $('.splitbar').hide(); - $('#mainPanel').width($(window).width()); - $('#clippingBounds').width($(window).width()); - $('#clippingBounds').css('left', '0px'); - $(window).resize(); - - $(document).trigger('sidebarCollapse'); - $('#maximizeButton').addClass('rotated'); - } - } - - function expand() { - if ($axure.player.isMobileMode()) { - $('#mHideSidebar').show(); - $('#mobileControlFrameContainer').show(); - $axure.utils.isShareApp() ? $('#nativeAppControlFrame').show() : $('#mobileBrowserControlFrame').show(); - } else { - $minimizeContainer = $('#interfaceControlFrameMinimizeContainer'); - $minimizeContainer.removeClass('collapseHovered'); - $axure.player.deleteVarFromCurrentUrlHash('c'); - $('#maximizeButton').removeClass('rotated'); - $('#maximizePanelContainer').hide(); - $axure.player.restorePlugins(); - $('#topPanel').show(); - $(window).resize(); - - $(document).trigger('sidebarExpanded'); - } - } - - - function mainFrame_onload() { - if ($axure.page.pageName) document.title = $axure.page.pageName; - } - - function getQueryString(query) { - var qstring = self.location.href.split("?"); - if (qstring.length < 2) return ""; - return GetParameter(qstring, query); - } - - function GetParameter(qstring, query) { - var prms = qstring[1].split("&"); - var frmelements = new Array(); - var currprmeter, querystr = ""; - - for (var i = 0; i < prms.length; i++) { - currprmeter = prms[i].split("="); - frmelements[i] = new Array(); - frmelements[i][0] = currprmeter[0]; - frmelements[i][1] = currprmeter[1]; - } - - for (j = 0; j < frmelements.length; j++) { - if (frmelements[j][0].toLowerCase() == query.toLowerCase()) { - querystr = frmelements[j][1]; - break; - } - } - return querystr; - } - - $axure.player.setVarInCurrentUrlHash = function(varName, varVal) { - var newHash = $axure.utils.setHashStringVar(window.location.hash, varName, varVal); - - if (newHash != null) { - replaceHash(newHash); - } - } - - function deleteHashStringVar(currentHash, varName) { - var varWithEqual = varName + '='; - - var pageIndex = currentHash.indexOf('#' + varWithEqual); - if (pageIndex == -1) pageIndex = currentHash.indexOf('&' + varWithEqual); - if (pageIndex != -1) { - var newHash = currentHash.substring(0, pageIndex); - - var ampIndex = currentHash.indexOf('&', pageIndex + 1); - - //IF begin of string....if none blank, ELSE # instead of & and rest - //IF in string....prefix + if none blank, ELSE &-rest - if (newHash == '') { //beginning of string - newHash = ampIndex != -1 ? '#' + currentHash.substring(ampIndex + 1) : ''; - } else { //somewhere in the middle - newHash = newHash + (ampIndex != -1 ? currentHash.substring(ampIndex) : ''); - } - - return newHash; - } - - return null; - } - - $axure.player.deleteVarFromCurrentUrlHash = function(varName) { - var newHash = deleteHashStringVar(window.location.hash, varName); - - if (newHash != null) { - replaceHash(newHash); - } - }; - - function setUpController() { - - //$axure.utils = _axUtils; - - var _page = {}; - $axure.page = _page; - - $axure.utils.makeBindable(_page, ['load']); - - var _player = function () { - }; - $axure.player = _player; - - //----------------------------------------- - //Global Var array, getLinkUrl function and setGlobalVar listener are - //for use in setting global vars in page url string when clicking a - //page in the sitemap - //NEW: this is now also used when navigating to a new window/popup, - //if there are global variables on the urls - //----------------------------------------- - var _globalVars = loadVariablesFromUrl(true); - - //----------------------------------------- - //Used by getLinkUrl below to check if local server is running - //in order to send back the global variables as a query string - //in the page url - //----------------------------------------- - var _shouldSendVarsToServer = function () { - //If exception occurs (due to page in content frame being from a different domain, etc) - //then run the check without the url (which will end up checking against sitemap url) - try { - var mainFrame = document.getElementById("mainFrame"); - return $axure.shouldSendVarsToServer(mainFrame.contentWindow.location.href); - } catch (e) { - return $axure.shouldSendVarsToServer(); - } - }; - - var _getLinkUrl = function (baseUrl) { - var toAdd = ''; - for (var globalVarName in _globalVars) { - var val = _globalVars[globalVarName]; - if (val != null) { - if (toAdd.length > 0) toAdd += '&'; - toAdd += globalVarName + '=' + encodeURIComponent(val); - } - } - return toAdd.length > 0 ? baseUrl + (_shouldSendVarsToServer() ? '?' : '#') + toAdd + "&CSUM=1" : baseUrl; - }; - $axure.getLinkUrlWithVars = _getLinkUrl; - - $axure.messageCenter.addMessageListener(function (message, data) { - if (message == 'setGlobalVar') { - _globalVars[data.globalVarName] = data.globalVarValue; - } - }); - - $axure.messageCenter.addStateListener('page.data', function (key, value) { - for (var subKey in value) { - _page[subKey] = value[subKey]; - } - $axure.page.triggerEvent('load'); - }); - - // --------------------------------------------- - // Navigates the main frame (setting the currently visible page). If the link is relative, - // this method should test if it is actually a axure rp page being loaded and properly set - // up all the controller for the page if it is - // --------------------------------------------- - _page.navigate = function (url, includeVariables) { - var mainFrame = document.getElementById("mainFrame"); - //var mainFrame = window.parent.mainFrame; - // if this is a relative url... - var urlToLoad; - if (url.indexOf(':') < 0 || url[0] == '/') { - var winHref = window.location.href; - var page = winHref.substring(0, winHref.lastIndexOf('/') + 1) + url; - urlToLoad = page; - } else { - urlToLoad = url; - } - if (!includeVariables) { - mainFrame.contentWindow.location.href = urlToLoad; - return; - } - var urlWithVars = $axure.getLinkUrlWithVars(urlToLoad); - var currentData = $axure.messageCenter.getState('page.data'); - var currentUrl = currentData && currentData.location; - if (currentUrl && currentUrl.indexOf('#') != -1) currentUrl = currentUrl.substring(0, currentUrl.indexOf('#')) - - // this is so we can make sure the current frame reloads if the variables have changed - // by default, if the location is the same but the hash code is different, the browser will not - // trigger a reload - mainFrame.contentWindow.location.href = - currentUrl && urlToLoad.toLowerCase() != currentUrl.toLowerCase() - ? urlWithVars - : 'resources/reload.html#' + encodeURI(urlWithVars); - - }; - - var pluginIds = []; - var plugins = {}; - var currentVisibleHostId = {}; - // --------------------------------------------- - // Adds a tool box frame from a url to the interface. This is useful for loading plugins - // settings is an object that supports the following properties: - // - id : the id of the element for the plugin - // - context : the context to create the plugin host for - // - title : the user-visible caption for the plugin - // --------------------------------------------- - _player.createPluginHost = function (settings) { - if (!settings.context || !(settings.context === 'project' || settings.context === 'inspect')) { - //throw ('unknown context type'); - return false; - } - - if (settings.id == 'feedbackHost') - $('#overflowMenuContainer').prepend('
    Show Comments
    '); - - if (!settings.id) throw ('each plugin host needs an id'); - - if (typeof PREVIEW_INFO === 'undefined') { - // Share-Hosted Prototype - if (settings.id == 'debugHost') { return false; } - if (settings.id == 'handoffHost') { $('#handoffControlFrameHeaderContainer').show(); } - } else { - // Preview Mode - if (settings.id == 'handoffHost') { return false; } - } - - pluginIds[pluginIds.length] = settings.id; - plugins[settings.id] = settings; - - var hostContainerId = settings.context + 'ControlFrameHostContainer'; - hostContainerId = _player.isMobileMode() ? 'mHideSidebar' : 'outerContainer'; - var panelClass = 'rightPanel'; - var host; - if (settings.context == 'project') { - panelClass = 'leftPanel'; - if (_player.isMobileMode() && $('#' + hostContainerId).find('#projectOptionsHost').length > 0) { - host = $('
    ') - .insertAfter('#projectOptionsHost'); - } else { - host = $('
    ') - .prependTo('#' + hostContainerId); - } - } else { - if (!$('#separatorContainer').hasClass('hasLeft')) $('#separatorContainer').addClass('hasLeft'); - host = $('
    ') - .appendTo('#' + hostContainerId); - } - - $(('#' + settings.id)).click(function (e) { e.stopPropagation(); }); - - var controlContainerId = getControlContainerId(settings.id); - - - if (!_player.isMobileMode()) host.hide(); - else _player.updatePlugins(); - - // TODO: border radius in ie and edge causes image to be blurry (for now, just remove border-radius) - var style = (IE || $axure.browser.isEdge) ? '" style="border-radius: 0': ''; - var headerLink = $('' + (settings.context === 'inspect' ? ('' + ''): ' ') + ''); - headerLink.mousedown($axure.utils.curry(interfaceControlHeaderButton_click, settings.id)).wrap('
    + +
    {% block content %}{% endblock %}
    diff --git a/web/main/templates/channel_manager.html b/web/main/templates/channel_manager.html index 3a53261..38c4066 100644 --- a/web/main/templates/channel_manager.html +++ b/web/main/templates/channel_manager.html @@ -76,23 +76,21 @@ {% block content %}
    -
    -
    所属区域:
    -
    -
    -
    通道名称:
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    -
    + @@ -229,7 +227,7 @@
    - +
    diff --git a/web/main/templates/header.html b/web/main/templates/header.html index cf849ef..ae593d4 100644 --- a/web/main/templates/header.html +++ b/web/main/templates/header.html @@ -8,12 +8,12 @@ ZF_BOX -
    + + + + + + + + + + + + + +
    ID算法名称版本号持续判断时间占比阈值操作
    + +
    + +
    +{% endblock %} + +{% block script %} + + +{% endblock %} \ No newline at end of file diff --git a/web/main/templates/schedule.html b/web/main/templates/schedule.html deleted file mode 100644 index 4981582..0000000 --- a/web/main/templates/schedule.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - 布防时间计划 - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    小时000102030405060708091011121314151617181920212223
    星期一
    星期二
    星期三
    星期四
    星期五
    星期六
    星期日
    -
    -
    -
    - 允许 -
    -
    -
    - 阻止 -
    -
    -
    - - - diff --git a/web/main/templates/system_manager.html b/web/main/templates/system_manager.html new file mode 100644 index 0000000..f6f36e2 --- /dev/null +++ b/web/main/templates/system_manager.html @@ -0,0 +1,286 @@ +{% extends 'base.html' %} + +{% block title %}ZFBOX{% endblock %} + +{% block style %} + .btn-blue { + background-color: #007bff; + color: white; + } + .btn-blue:hover { + background-color: #0056b3; + } + + .table-container { + min-height: 300px; /* 设置最小高度,可以根据需要调整 */ + } + /* 缩小表格行高 */ + .table-sm th, + .table-sm td { + padding: 0.2rem; /* 调整这里的值来改变行高 */ + } + .pagination { + justify-content: flex-end; /* 右对齐 */ + } + + .section-title { + position: relative; + margin: 20px 0; + } + .section-title hr { + margin: 0; + border-color: #000; /* You can change the color of the line if needed */ + } +{% endblock %} + +{% block content %} +
    + + + + + + + + + + +
    +
    +
    +

    1.0.0.1

    +
    +
    +
    +
    +
    +
    +
    +
    +

    1.0.0.1

    +
    +
    +
    +

    + 有线--192.168.3.45 WIFI--192.168.3.45 5G--192.168.3.45

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + +
    ID区域名称操作
    + +
    + +
    +{% endblock %} + +{% block script %} + + +{% endblock %} \ No newline at end of file diff --git a/web/main/templates/user_manager.html b/web/main/templates/user_manager.html new file mode 100644 index 0000000..f70c0f4 --- /dev/null +++ b/web/main/templates/user_manager.html @@ -0,0 +1,48 @@ +{% extends 'base.html' %} + +{% block title %}ZFBOX{% endblock %} + +{% block style %} + .note { + color: red; + font-size: 0.9rem; + } + .btn-blue { + background-color: #007bff; + color: white; + } + .btn-blue:hover { + background-color: #0056b3; + } +{% endblock %} + +{% block content %} +
    +
    +
    +

    zfadmin

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +{% endblock %} + +{% block script %} + +{% endblock %} \ No newline at end of file diff --git a/web/main/templates/实时预览.html b/web/main/templates/实时预览.html deleted file mode 100644 index a722556..0000000 --- a/web/main/templates/实时预览.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - 实时预览 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    -
    - -
    - - -
    -
    - -
    - - -
    -
    -
    -

    智凡BOX

    -
    -
    - - -
    -
    -
    -

    @2024 ZFKJ All Rights Reserved

    -
    -
    - - -
    - u20_menu - - -
    - - - - - - - - - - - - - - - -
    -
    - - -
    - - -
    - - -
    -
    -
    -

    张三

    -
    -
    - - -
    -
    -
    -

    退出

    -
    -
    - - - -
    -
    -
    -

    实时预览

    -
    -
    - - -
    -
    - -
    - - - - -
    - Video Stream -
    - -
    - Video Stream -
    - - - -
    - - Video Stream -
    - - -
    - - Video Stream -
    - - -
    - - Video Stream -
    - - -
    - - Video Stream -
    - - -
    - - Video Stream -
    - - -
    - - Video Stream -
    - - -
    - - -
    - - -
    -
    -
    -

    <<  1/2  >>

    -
    -
    - - -
    -
    -
    -

    一画面

    -
    -
    - - -
    -
    -
    -

    四画面

    -
    -
    - - -
    -
    -
    -

    九画面

    -
    -
    - - -
    -
    -
    -

    十六
    画面

    -
    -
    - - -
    -
    - - -
    - - -
    - - -
    - -
    -
    -
    -

    一厂区

    -
    -
    -
    - - -
    - -
    -
    -
    -

    北门通道一

    -
    -
    -
    - - -
    - -
    -
    -
    -

    南门通道二

    -
    -
    -
    - - -
    - -
    -
    -
    -

    通道三

    -
    -
    -
    -
    -
    - - -
    - - -
    - - -
    - -
    -
    -
    -

    二区域

    -
    -
    -
    - - -
    - -
    -
    -
    -

    通道一

    -
    -
    -
    -
    -
    -
    -
    -
    - - - diff --git a/web/main/templates/通道管理.html b/web/main/templates/通道管理.html deleted file mode 100644 index 659c131..0000000 --- a/web/main/templates/通道管理.html +++ /dev/null @@ -1,1412 +0,0 @@ - - - - 通道管理 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    -
    - -
    - - -
    -
    - -
    - - -
    -
    -
    -

    智凡BOX

    -
    -
    - - -
    -
    -
    -

    @2024 ZFKJ All Rights Reserved

    -
    -
    - - -
    - u66_menu - - -
    - - - - - - - - - - - - - - - -
    -
    - - -
    - - -
    - - -
    -
    -
    -

    张三

    -
    -
    - - -
    -
    -
    -

    退出

    -
    -
    - - - -
    -
    -
    -

    通道管理

    -
    -
    - - -
    -
    -
    -

    所属区域:

    -
    -
    - - -
    -
    - -
    - - -
    -
    -
    -

    新增

    -
    -
    - - -
    - - -
    - -
    -

    序号

    -
    -
    - - -
    - -
    -

    所属区域

    -
    -
    - - -
    - -
    -

    通道名称

    -
    -
    - - -
    - -
    -

    RTSP地址

    -
    -
    - - -
    - -
    -

    拉流状态

    -
    -
    - - -
    - -
    -

    配置算法

    -
    -
    - - -
    - -
    -

    操作

    -
    -
    - - -
    - -
    -

    1

    -
    -
    - - -
    - -
    -

    厂区一

    -
    -
    - - -
    - -
    -

    北门一

    -
    -
    - - -
    - -
    -
    -
    - - -
    - -
    -

    在线

    -
    -
    - - -
    - -
    -

    -
    -
    - - -
    - - -
    - - -
    - -
    -

    2

    -
    -
    - - -
    - -
    -

    厂区一

    -
    -
    - - -
    - -
    -

    北门二

    -
    -
    - - -
    - -
    -

    rtsp://www.easydarwin.org:554/your_stream_id

    -
    -
    - - -
    - -
    -

    0

    -
    -
    - - -
    - -
    -

    人员入侵,安全帽

    -
    -
    - - -
    - - -
    - - -
    - -
    -

    3

    -
    -
    - - -
    - -
    -

    厂区二

    -
    -
    - - -
    - -
    -

    南门一

    -
    -
    - - -
    - -
    -

    rtsp://www.easydarwin.org:554/your_stream_id

    -
    -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - -
    -

    4

    -
    -
    - - -
    - -
    -

    厂区二

    -
    -
    - - -
    - -
    -

    南门二

    -
    -
    - - -
    - -
    -

    rtsp://www.easydarwin.org:554/your_stream_id

    -
    -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    -
    - - -
    - -
    -

    算法

    -
    -
    - - -
    -
    -
    -

    修改

    -
    -
    - - -
    -
    -
    -

    删除

    -
    -
    - - -
    -
    -
    -

    <<  1/2  >>

    -
    -
    - - -
    -
    -
    -

    算法

    -
    -
    - - -
    -
    -
    -

    修改

    -
    -
    - - -
    -
    -
    -

    删除

    -
    -
    - - -
    -
    -
    -

    查询

    -
    -
    - - -
    -
    -
    -

    通道名称:

    -
    -
    - - -
    -
    - -
    - - - - - - - - - -
    - - - diff --git a/zfbox.db b/zfbox.db index bc33ca8c082475518353edda6b1234aa80579b36..91ed369356b795a78e5950be0e3a17c1ed27cfc7 100644 GIT binary patch literal 73728 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 Uf>bJ%Td|<7d4BD(#(9nZ1LU)&h5!Hn delta 4229 zcmZYC3rrPP8UWybX3or=*O|GOrznb5upli3b=7vwMYmm}jWx7s4QjSX1&e~nDn45s z#K#K0z_EajRoaSD+p;KaiquzJ)0kc3nyuZqo7lPyplyuHb~nakAKm|4F5GjnH-Vh_ z_|KU$|9|c|L(OGU)2cL#j3d(lfa1^4XF}sslO~|%Y^tL6G_bYPio4CtGcVCBJ753Y z){LuWgLc}P5qQw`M6gyhYr}RR`N=1x?LYND(OTr%SzV{Ky{hbl{AcZf)UBl?keret zZOf=Gexstaq;%c#rP1H2KSNFPH`A%ljD7Xzg|BAj<>qERMNI=^idGh{DgS?cv$(o+ zeep*BWh>dYoV;wDb9VBmQPOs|y0|ttIE`&ZksB>7E3T|8t(dfORY_?DUUbcHu1Q37 zKZ7nk*x_b_ttyb#x39KuPfy>GBR1i$TuFh9zJ|T`PIdNP>gf7w+83@Q`|Z!9E+BYI z(})a8C{aesYnGOkmaMHPm0K-E86`z;Yw5C*C>5_REmn02TWi;pt`1N)4RmL*>@0RW zFr|~7$Ic&}kDQ(EZ!nRg9qVbs03(!d=xK)E7#<-_^cRP-Njj=uA09{2b!>Eo$I+=irunnNDKuRhmZ?)wMvih9LPBIL*T~A0@vkZQ8R=>y%Kth)+20)2L++npBD$ed z<9^$v@0#1$SaDgz0BKO=zCF!R4rD12_V?wdvd#g_!vws+&|qCZ<_ChL2Hb~TX2Bdc zr+h_G-lWM-%p9MGAB>%qHr@z@))!a4S+RU=Uf!l|;N_y1SRr$&Ho7-pVz!P$f)q%keI0duJKFoYFZ91()BoviGyl6o z>~nZQUQTYIWJAVK#59&Sj zj{2o~O}(I=Rn93L>M8Z8+NkbS-%_j8QgsnoMM}s*GM_w8rjw`1IFfv(ak4yKAFYAm zN=7cxQ==_K9~EuM${#=lKUhD4Y7x?>P|^&mGkeLFsOkUj^)kK6yDf39w!pIP7Rjg5{FXwlQ6P0g93Jmh-z z_8fEolzx$H8SRc}7PDKTnaqAKn!)S}GcP(jyob*4oER8j)){*U4AU5$5=doq49OUL zRE)yiNNEy8LD?q=>*eh<(u`O)lr2V@F2K52C)^H`F{DzEB$Q=>B%-`7NCL_NLE=&7 z8)@FqoN?$lq}f7H2qi2?5M`<$E=mr{P??V$aoB@p2t*mB3KXedyeC+sex^W?@<{@* z>dB7i#lv%?8+%6!)8E{N36xF>f@@#mvV}32KdDxT!Td>8f?)n6?)!ngFn`iKAtr>S zk)9I>6DVa0f(ew8P@?(6fmr?|MIe?x7!Zi%54eSh9a;Y1cYKuB#u5mh@z%x?2y79> zZprcojRLW?54e$VQEcr)xj<~`L!m(IC5mkUZ1lOfY2(Cj?ZXryh;Yd8ghcQU!M2ABtz)1jFaOZr?i3ZIm1DvSPgmRw~0`H*QNAh5Y(gW;v@)lC^ek8unT1aCl34yrHT^@J5kC|yvUmfK8FoEkd|;k7Hmf; zV8$6CJjq%;Y2hH7L_1Y4}k!+{l#N2zdCF!n>jc|>F;4cv_bKq7XbPs}uuYve}unMJ<3!#+=?Ht%E5n4I0DiB&YFv}4d zI51Wq?BYOQj!?rvpbQLTIhVbe;v`G=bCP{=yk>|AGIS?R5O6i$#**Kf3t5=AMFdY+krD ohRl&I@QW|a)#piuu~m^I|J{q>pjlF45fdaM@*f$f?_Cc54?XMSNdN!<

    %{M%T#lcZ3 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%0Ar<@d^XBPrlI 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 z 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%0DHu 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