@ -1,6 +0,0 @@ |
|||||
''' |
|
||||
数据库管理功能类 |
|
||||
''' |
|
||||
class DBManager: |
|
||||
def __init__(self): |
|
||||
pass |
|
@ -1 +0,0 @@ |
|||||
[{"role": "system", "content": "你是一位资深的渗透测试专家,需要动态控制整个渗透测试过程,包括信息收集、漏洞扫描、漏洞利用等阶段,最终生成渗透测试报告。由你规划执行的指令,我会根据你的指令执行并提交结果,你再对结果进行分析,规划并生成下一步指令,直到完成渗透测试,生成测试报告。生成的指令需满足如下约束:1.只返回具体的shell指令或Python代码,不要包含注释和说明;2.shell指令以```bash(.*?)```包裹,python代码以```python(.*?)```包裹;3.针对提供的Python代码,需要包含错误处理,并将执行结果保存到文件中(为每个任务指定唯一文件名),执行结束返回success或failure和该文件名;4.如果认为渗透测试已完成,请生成生成报告的python代码,并返回success和complete"}, {"role": "user", "content": "现在开始对目标192.168.204.137进行渗透测试,已知信息无,请提供下一步执行的指令。"}, {"role": "assistant", "content": "```bash\nnmap -Pn -sS -sV -O -T4 -p- 192.168.204.137 -oN nmap_initial_scan.txt\n```"}] |
|
@ -0,0 +1,11 @@ |
|||||
|
from tools.ToolBase import ToolBase |
||||
|
|
||||
|
class MkdirTool(ToolBase): |
||||
|
def validate_instruction(self, instruction): |
||||
|
#指令过滤 |
||||
|
timeout = 0 |
||||
|
return instruction,timeout |
||||
|
|
||||
|
def analyze_result(self, result,instruction,stderr,stdout): |
||||
|
#指令结果分析 |
||||
|
return result |
@ -0,0 +1,11 @@ |
|||||
|
from tools.ToolBase import ToolBase |
||||
|
|
||||
|
class PrintfTool(ToolBase): |
||||
|
def validate_instruction(self, instruction): |
||||
|
#指令过滤 |
||||
|
timeout = 0 |
||||
|
return instruction,timeout |
||||
|
|
||||
|
def analyze_result(self, result,instruction,stderr,stdout): |
||||
|
#指令结果分析 |
||||
|
return result |
@ -0,0 +1,11 @@ |
|||||
|
from tools.ToolBase import ToolBase |
||||
|
|
||||
|
class TouchTool(ToolBase): |
||||
|
def validate_instruction(self, instruction): |
||||
|
#指令过滤 |
||||
|
timeout = 0 |
||||
|
return instruction,timeout |
||||
|
|
||||
|
def analyze_result(self, result,instruction,stderr,stdout): |
||||
|
#指令结果分析 |
||||
|
return result |
@ -0,0 +1,4 @@ |
|||||
|
from quart import Blueprint |
||||
|
#定义模块 |
||||
|
api = Blueprint('api',__name__) |
||||
|
from . import user |
@ -0,0 +1,143 @@ |
|||||
|
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 |
||||
|
from web.common.utils import generate_captcha,login_required |
||||
|
from myutils.ConfigManager import myCongif |
||||
|
from . import api |
||||
|
from web.common.errors import handle_error |
||||
|
|
||||
|
|
||||
|
@api.route('/user/code',methods=['GET']) |
||||
|
async def user_get_code(): #获取验证码 |
||||
|
captcha_text, buffer = generate_captcha() |
||||
|
print(captcha_text) |
||||
|
session['captcha'] = captcha_text # 记录验证码? |
||||
|
return await send_file(buffer, mimetype='image/png') |
||||
|
|
||||
|
|
||||
|
@api.route('/user/login',methods=['POST']) |
||||
|
async def user_login(): #用户登录 |
||||
|
try: |
||||
|
form = await request.form |
||||
|
username = form['username'] |
||||
|
password = form['password'] |
||||
|
captcha = form['captcha'] |
||||
|
except Exception as e: |
||||
|
await flash('请求数据格式错误', 'error') |
||||
|
return redirect(url_for('main.login')) |
||||
|
#return jsonify({'error': '请求数据格式错误'}), 400 |
||||
|
|
||||
|
if captcha != session.get('captcha'): |
||||
|
# 验证码验证过后,需要失效 |
||||
|
session.pop('captcha', None) |
||||
|
await flash('验证码错误', 'error') |
||||
|
return redirect(url_for('main.login')) |
||||
|
#return jsonify({'error': '验证码错误'}), 400 |
||||
|
#return 'captcha error!', 400 |
||||
|
#比对用户名和密码 |
||||
|
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] == passwd_md5: #后续需要对密码进行MD5加默 |
||||
|
print("登录成功") |
||||
|
session['user'] = username |
||||
|
return redirect(url_for('main.get_html', html='view_main.html')) |
||||
|
await flash('用户名或密码错误', 'error') |
||||
|
return redirect(url_for('main.login')) |
||||
|
|
||||
|
@api.route('/user/userinfo',methods=['GET']) |
||||
|
@login_required |
||||
|
async def user_info(): #获取用户列表 |
||||
|
strsql = "select username,status,people,tellnum from user;"; |
||||
|
data = mDBM.do_select(strsql) |
||||
|
if data: |
||||
|
user_list = [{"username": user[0], "status": user[1], |
||||
|
"people":user[2],"tellnum":user[3]} for user in data] |
||||
|
return jsonify(user_list) |
||||
|
else: |
||||
|
return jsonify(0) |
||||
|
|
||||
|
|
||||
|
@api.route('/user/adduser',methods=['POST']) |
||||
|
@login_required |
||||
|
async def user_adduser(): #新增用户 |
||||
|
username = (await request.form)['username'] |
||||
|
people = (await request.form)['people'] |
||||
|
tellnum = (await request.form)['tellnum'] |
||||
|
strsql = f"select username from user where username = '{username}';" |
||||
|
password = myCongif.get_data('pw') |
||||
|
data = mDBM.do_select(strsql) |
||||
|
if data: |
||||
|
reStatus = 0 |
||||
|
reMsg = '用户名重复,请重新输入!' |
||||
|
else: |
||||
|
strsql = (f"INSERT INTO user (username ,password ,status,people,tellnum ) VALUES " |
||||
|
f"('{username}','{password}',1,'{people}','{tellnum}');") |
||||
|
ret = mDBM.do_sql(strsql) |
||||
|
if ret == True: |
||||
|
reStatus = 1 |
||||
|
reMsg = '添加用户成功' |
||||
|
else: |
||||
|
reStatus = 0 |
||||
|
reMsg = '添加用户异常,请联系管理员处理!' |
||||
|
return jsonify({'status':reStatus,'msg':reMsg}) |
||||
|
|
||||
|
@api.route('/user/passwd',methods=['POST']) |
||||
|
@login_required |
||||
|
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: |
||||
|
reMsg = '原密码错误,请确认!' |
||||
|
return jsonify({'status':reStatus,'msg':reMsg}) |
||||
|
|
||||
|
|
||||
|
@api.route('/user/changeuser',methods=['POST']) |
||||
|
@login_required |
||||
|
async def user_change_user_info(): #修改用户信息 |
||||
|
username = (await request.form)['username'] |
||||
|
people = (await request.form)['people'] |
||||
|
tellnum = (await request.form)['tellnum'] |
||||
|
strsql = f"update user set people='{people}',tellnum='{tellnum}' where username='{username}';" |
||||
|
ret = mDBM.do_sql(strsql) |
||||
|
if ret == True: |
||||
|
reStatus = 1 |
||||
|
reMsg = '修改用户信息成功' |
||||
|
else: |
||||
|
reStatus = 0 |
||||
|
reMsg = '修改失败,请联系管理员处理!' |
||||
|
return jsonify({'status': reStatus, 'msg': reMsg}) |
||||
|
|
||||
|
@api.route('/user/<int:user_id>', methods=['GET']) |
||||
|
async def get_user(user_id): |
||||
|
try: |
||||
|
user = user_id |
||||
|
if user: |
||||
|
return jsonify(user) |
||||
|
else: |
||||
|
return jsonify({'error': 'User not found'}), 404 |
||||
|
except Exception as e: |
||||
|
return handle_error(e) |
||||
|
|
||||
|
def get_md5(value): |
||||
|
md5 = hashlib.md5() # 创建一个md5对象 |
||||
|
md5.update(value.encode('utf-8')) # 使用utf-8编码更新待计算的字符串 |
||||
|
return md5.hexdigest() # 返回十六进制的MD5值 |
@ -0,0 +1,65 @@ |
|||||
|
from quart import Quart,session,redirect, url_for |
||||
|
from quart_session import Session |
||||
|
from quart_cors import cors |
||||
|
from pymemcache.client import base |
||||
|
from .main import main |
||||
|
from .API import api |
||||
|
from functools import wraps |
||||
|
from myutils.ConfigManager import myCongif |
||||
|
# from quart_sqlalchemy import SQLAlchemy |
||||
|
# from flask_migrate import Migrate |
||||
|
|
||||
|
#app.config['SECRET_KEY'] = 'mysecret' #密钥 --需要放配置文件 |
||||
|
#socketio = SocketIO(app) |
||||
|
|
||||
|
# Create the custom backend for quart-session |
||||
|
class MemcachedSessionInterface: #只是能用,不明所以 |
||||
|
def __init__(self, client): |
||||
|
self.client = client |
||||
|
|
||||
|
async def open_session(self, app, request): |
||||
|
sid = request.cookies.get(app.session_cookie_name) |
||||
|
if not sid: |
||||
|
sid = self._generate_sid() |
||||
|
val = await self.client.get(self.key_prefix + sid) |
||||
|
if val is not None: |
||||
|
return self._deserialize(val) |
||||
|
return self._get_default_session() |
||||
|
|
||||
|
async def save_session(self, app, session, response): |
||||
|
val = self._serialize(session) |
||||
|
await self.client.set(self.key_prefix + session.sid, val, self.expire) |
||||
|
|
||||
|
def create_app(): |
||||
|
app = Quart(__name__) |
||||
|
app.config['SECRET_KEY'] = 'zfxxkj_2024_!@#' |
||||
|
|
||||
|
if myCongif.get_data("model_platform") == "acl": |
||||
|
app.config['SESSION_TYPE'] = 'memcached' # session类型 |
||||
|
elif myCongif.get_data("model_platform") =="cpu": |
||||
|
app.config['SESSION_TYPE'] = 'redis' # session类型 |
||||
|
|
||||
|
#app.config['SESSION_FILE_DIR'] = './sessions' # session保存路径 |
||||
|
#app.config['SESSION_MEMCACHED'] = base.Client(('localhost', 11211)) |
||||
|
app.config['SESSION_PERMANENT'] = True # 如果设置为True,则关闭浏览器session就失效。 |
||||
|
app.config['SESSION_USE_SIGNER'] = False # 是否对发送到浏览器上session的cookie值进行加密 |
||||
|
|
||||
|
memcached_client = base.Client(('localhost', 11211)) |
||||
|
app.session_interface = MemcachedSessionInterface(memcached_client) |
||||
|
Session(app) |
||||
|
|
||||
|
# 注册main |
||||
|
app.register_blueprint(main) |
||||
|
#注册API模块 |
||||
|
app.register_blueprint(api,url_prefix = '/api') |
||||
|
return app |
||||
|
|
||||
|
|
||||
|
def login_required(f): |
||||
|
@wraps(f) |
||||
|
async def decorated_function(*args, **kwargs): |
||||
|
if 'user' not in session: |
||||
|
return redirect(url_for('main.login')) |
||||
|
return await f(*args, **kwargs) |
||||
|
return decorated_function |
||||
|
|
@ -0,0 +1,4 @@ |
|||||
|
from quart import jsonify |
||||
|
|
||||
|
def handle_error(e): |
||||
|
return jsonify({'error':str(e)}),500 |
@ -0,0 +1,10 @@ |
|||||
|
from app import db |
||||
|
import datetime |
||||
|
|
||||
|
class Captcha(db.Model): |
||||
|
id = db.Column(db.Integer, primary_key=True) |
||||
|
captcha_text = db.Column(db.String(10), nullable=False) |
||||
|
timestamp = db.Column(db.DateTime, default=datetime.datetime.utcnow) |
||||
|
|
||||
|
def __init__(self, captcha_text): |
||||
|
self.captcha_text = captcha_text |
@ -0,0 +1,43 @@ |
|||||
|
from PIL import Image, ImageDraw, ImageFont,ImageFilter |
||||
|
import random |
||||
|
import string |
||||
|
import io |
||||
|
from functools import wraps |
||||
|
from quart import session, redirect, url_for |
||||
|
|
||||
|
def generate_captcha(): |
||||
|
characters = string.ascii_uppercase + string.digits |
||||
|
captcha_text = ''.join(random.choices(characters, k=6)) |
||||
|
|
||||
|
font = ImageFont.truetype("arial.ttf", 36) |
||||
|
image = Image.new('RGB', (200, 60), color=(255, 255, 255)) |
||||
|
draw = ImageDraw.Draw(image) |
||||
|
|
||||
|
for i in range(6): |
||||
|
draw.text((10 + i * 30, 10), captcha_text[i], font=font, |
||||
|
fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))) |
||||
|
# 模糊化处理 |
||||
|
image = image.filter(ImageFilter.BLUR) |
||||
|
|
||||
|
# 将图片保存到BytesIO流中 |
||||
|
buffer = io.BytesIO() |
||||
|
image.save(buffer, 'jpeg') |
||||
|
buffer.seek(0) |
||||
|
|
||||
|
# captcha_path = os.path.join('static', 'captcha', f'{captcha_text}.png') |
||||
|
# image.save(captcha_path) |
||||
|
# return captcha_text, f'static/captcha/{captcha_text}.png' |
||||
|
return captcha_text, buffer |
||||
|
|
||||
|
|
||||
|
def verify_captcha(user_input, actual_captcha): |
||||
|
return user_input == actual_captcha |
||||
|
|
||||
|
|
||||
|
def login_required(f): |
||||
|
@wraps(f) |
||||
|
async def decorated_function(*args, **kwargs): |
||||
|
if 'user' not in session: |
||||
|
return redirect(url_for('main.index',error='未登录,请重新登录')) |
||||
|
return await f(*args, **kwargs) |
||||
|
return decorated_function |
@ -0,0 +1,5 @@ |
|||||
|
from quart import Blueprint |
||||
|
|
||||
|
main = Blueprint('main', __name__,static_folder='static/resources',template_folder='templates') |
||||
|
|
||||
|
from . import routes |
@ -0,0 +1,83 @@ |
|||||
|
import os |
||||
|
from web.main import main |
||||
|
from quart import render_template, send_from_directory,request |
||||
|
from quart import session, redirect, url_for,flash |
||||
|
from functools import wraps |
||||
|
from myutils.ConfigManager import myCongif |
||||
|
from werkzeug.utils import secure_filename |
||||
|
|
||||
|
''' |
||||
|
页面路由 |
||||
|
''' |
||||
|
|
||||
|
def login_required(f): |
||||
|
@wraps(f) |
||||
|
async def decorated_function(*args, **kwargs): |
||||
|
if 'user' not in session: |
||||
|
return redirect(url_for('main.index',error='未登录,请重新登录')) |
||||
|
return await f(*args, **kwargs) |
||||
|
return decorated_function |
||||
|
|
||||
|
@main.route('/') |
||||
|
async def index(): |
||||
|
#return await render_template('实时预览.html') |
||||
|
return await render_template('login.html') |
||||
|
#return await render_template('index_webrtc.html') |
||||
|
|
||||
|
@main.route('/login', methods=['GET', 'POST']) |
||||
|
async def login(): |
||||
|
if request.method == 'POST': |
||||
|
form = await request.form |
||||
|
username = form.get('username') |
||||
|
password = form.get('password') |
||||
|
# Add your login logic here |
||||
|
if username == 'admin' and password == 'password': |
||||
|
return redirect(url_for('main.dashboard')) # Assuming you have a dashboard route |
||||
|
else: |
||||
|
return "Invalid credentials", 401 |
||||
|
return await render_template('login.html') |
||||
|
|
||||
|
@main.route('/dashboard') |
||||
|
async def dashboard(): |
||||
|
return "Welcome to the dashboard!" |
||||
|
|
||||
|
@main.route('/favicon.ico') |
||||
|
async def favicon(): |
||||
|
return await send_from_directory('web/main/static', 'favicon.ico') |
||||
|
|
||||
|
@main.route('/<html>') |
||||
|
@login_required |
||||
|
async def get_html(html): |
||||
|
return await render_template(html) |
||||
|
|
||||
|
|
||||
|
''' |
||||
|
各种配置文件路由 |
||||
|
''' |
||||
|
@main.route('/data/<file>') |
||||
|
async def data(file): |
||||
|
return await send_from_directory('web/main/static/data', file) |
||||
|
|
||||
|
@main.route('/files/<path:subdir>/<file>') |
||||
|
async def files(subdir,file): |
||||
|
return await send_from_directory(os.path.join('web/main/static/files', subdir), file) |
||||
|
|
||||
|
@main.route('/images/<path:subdir>/<file>') |
||||
|
async def images(subdir,file): |
||||
|
return await send_from_directory(os.path.join('web/main/static/images', subdir), file) |
||||
|
|
||||
|
@main.route('/resources/<file>') |
||||
|
async def resources(file): |
||||
|
return await send_from_directory('web/main/static/resources', file) |
||||
|
|
||||
|
@main.route('/resources/<path:subdir>/<file>') |
||||
|
async def resources_dir(subdir,file): |
||||
|
return await send_from_directory(os.path.join('web/main/static/resources', subdir), file) |
||||
|
|
||||
|
@main.route('/resources/css/<path:subdir>/<file>') |
||||
|
async def resources_css_dir(subdir,file): |
||||
|
return await send_from_directory(os.path.join('web/main/static/resources/css', subdir), file) |
||||
|
|
||||
|
@main.route('/resources/scripts/<path:subdir>/<file>') |
||||
|
async def resources_scripts_dir(subdir,file): |
||||
|
return await send_from_directory(os.path.join('web/main/static/resources/scripts', subdir), file) |
@ -0,0 +1,7 @@ |
|||||
|
$axure.loadDocument( |
||||
|
(function() { |
||||
|
var _ = function() { var r={},a=arguments; for(var i=0; i<a.length; i+=2) r[a[i]]=a[i+1]; return r; } |
||||
|
var _creator = function() { return _(b,_(c,d,e,f,g,d,h,d,i,d,j,k,l,d,m,f,n,f,o,d,p,f),q,_(r,[_(s,t,u,v,w,x,y,z),_(s,A,u,B,w,x,y,C),_(s,D,u,E,w,x,y,F),_(s,G,u,H,w,x,y,I),_(s,J,u,K,w,x,y,L),_(s,M,u,N,w,x,y,O)]),P,[Q,R,S],T,[U,V,W],X,_(Y,Z),ba,_(bb,_(s,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,_(bm,bn,bo,bp,bq,br),bs,bt,bu,f,bv,bw,bx,bi,by,bi,bz,bA,bB,f,bC,_(bD,bE,bF,bE),bG,_(bH,bE,bI,bE),bJ,d,bK,f,bL,bc,bM,_(bm,bn,bo,bN),bO,_(bm,bn,bo,bP),bQ,bR,bS,bn,bq,bR,bT,bU,bV,bW,bX,bY,bZ,ca,cb,ca,cc,ca,cd,ca,ce,_(),cf,null,cg,null,ch,bU,ci,_(cj,f,ck,cl,cm,cl,cn,cl,co,bE,bo,_(cp,cq,cr,cq,cs,cq,ct,cu)),cv,_(cj,f,ck,bE,cm,cl,cn,cl,co,bE,bo,_(cp,cq,cr,cq,cs,cq,ct,cu)),cw,_(cj,f,ck,br,cm,br,cn,cl,co,bE,bo,_(cp,cq,cr,cq,cs,cq,ct,cx)),cy,cz),cA,_(cB,_(s,cC),cD,_(s,cE),cf,_(s,cF,bQ,bU),cG,_(s,cH,bT,bk),cI,_(s,cJ,bl,_(bm,bn,bo,bN,bq,br),bQ,bU,bT,bk,bM,_(bm,bn,bo,cK)),cL,_(s,cM,bs,cN,bf,cO,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),cS,_(s,cT,bs,cU,bf,cO,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),cV,_(s,cW,bs,cX,bf,cO,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),cY,_(s,cZ,bs,da,bf,cO,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),db,_(s,dc,bf,cO,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),dd,_(s,de,bs,df,bf,cO,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),dg,_(s,dh,bs,da,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),di,_(s,dj,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,cR,bZ,bU,cb,bU,cc,bU,cd,bU),dk,_(s,dl,bl,_(bm,bn,bo,dm,bq,br),bv,cQ,bX,bY),dn,_(s,dp,bl,_(bm,bn,bo,dm,bq,br),bv,cQ,bX,cR),dq,_(s,dr,bl,_(bm,bn,bo,dm,bq,br),bv,cQ,bX,cR),ds,_(s,dt,bv,cQ,bX,cR),du,_(s,dv,bQ,bU,bM,_(bm,bn,bo,cP),bv,cQ,bX,bY),dw,_(s,dx),dy,_(s,dz,bM,_(bm,bn,bo,cP)),dA,_(s,dB,bl,_(bm,bn,bo,dC,bq,br)),dD,_(s,dE,bM,_(bm,bn,bo,dF)),dG,_(s,dH,bM,_(bm,bn,bo,bN)),dI,_(s,dJ,bQ,bU,bM,_(bm,bn,bo,bp)),dK,_(s,dL)),dM,_(dN,cE,dO,cW,dP,dh)));}; |
||||
|
var b="configuration",c="showPageNotes",d=true,e="showPageNoteNames",f=false,g="showAnnotations",h="showAnnotationsSidebar",i="showConsole",j="linkStyle",k="displayMultipleTargetsOnly",l="linkFlowsToPages",m="linkFlowsToPagesNewWindow",n="useLabels",o="useViews",p="loadFeedbackPlugin",q="sitemap",r="rootNodes",s="id",t="f8hzm0",u="pageName",v="登录",w="type",x="Wireframe",y="url",z="登录.html",A="tm5q63",B="实时预览",C="实时预览.html",D="20xynf",E="通道管理",F="通道管理.html",G="ey1jts",H="算法管理",I="算法管理.html",J="idexti",K="系统管理",L="系统管理.html",M="su6kdn",N="用户管理",O="用户管理.html",P="additionalJs",Q="plugins/sitemap/sitemap.js",R="plugins/page_notes/page_notes.js",S="plugins/debug/debug.js",T="additionalCss",U="plugins/sitemap/styles/sitemap.css",V="plugins/page_notes/styles/page_notes.css",W="plugins/debug/styles/debug.css",X="globalVariables",Y="onloadvariable",Z="",ba="stylesheet",bb="defaultStyle",bc="627587b6038d43cca051c114ac41ad32",bd="fontName",be="'Arial Normal', 'Arial', sans-serif",bf="fontWeight",bg="400",bh="fontStyle",bi="normal",bj="fontStretch",bk="5",bl="foreGroundFill",bm="fillType",bn="solid",bo="color",bp=0xFF333333,bq="opacity",br=1,bs="fontSize",bt="13px",bu="underline",bv="horizontalAlignment",bw="center",bx="lineSpacing",by="characterSpacing",bz="letterCase",bA="none",bB="strikethrough",bC="location",bD="x",bE=0,bF="y",bG="size",bH="width",bI="height",bJ="visible",bK="limbo",bL="baseStyle",bM="fill",bN=0xFFFFFFFF,bO="borderFill",bP=0xFF797979,bQ="borderWidth",bR="1",bS="linePattern",bT="cornerRadius",bU="0",bV="borderVisibility",bW="all",bX="verticalAlignment",bY="middle",bZ="paddingLeft",ca="2",cb="paddingTop",cc="paddingRight",cd="paddingBottom",ce="stateStyles",cf="image",cg="imageFilter",ch="rotation",ci="outerShadow",cj="on",ck="offsetX",cl=5,cm="offsetY",cn="blurRadius",co="spread",cp="r",cq=0,cr="g",cs="b",ct="a",cu=0.349019607843137,cv="innerShadow",cw="textShadow",cx=0.647058823529412,cy="viewOverride",cz="19e82109f102476f933582835c373474",cA="customStyles",cB="box_1",cC="4b7bfc596114427989e10bb0b557d0ce",cD="shape",cE="40519e9ec4264601bfb12c514e4f4867",cF="75a91ee5b9d042cfa01b8d565fe289c0",cG="button",cH="c9f35713a1cf4e91a0f2dbac65e6fb5c",cI="primary_button",cJ="cd64754845384de3872fb4a066432c1f",cK=0xFF169BD5,cL="heading_1",cM="1111111151944dfba49f67fd55eb1f88",cN="32px",cO="bold",cP=0xFFFFFF,cQ="left",cR="top",cS="heading_2",cT="b3a15c9ddde04520be40f94c8168891e",cU="24px",cV="heading_3",cW="8c7a4c5ad69a4369a5f7788171ac0b32",cX="18px",cY="heading_4",cZ="e995c891077945c89c0b5fe110d15a0b",da="14px",db="heading_5",dc="386b19ef4be143bd9b6c392ded969f89",dd="heading_6",de="fc3b9a13b5574fa098ef0a1db9aac861",df="10px",dg="label",dh="2285372321d148ec80932747449c36c9",di="paragraph",dj="4988d43d80b44008a4a415096f1632af",dk="text_field",dl="44157808f2934100b68f2394a66b2bba",dm=0xFF000000,dn="droplist",dp="85f724022aae41c594175ddac9c289eb",dq="list_box",dr="d5a74867db1f49ceb7c59e94129aa67a",ds="radio_button",dt="4eb5516f311c4bdfa0cb11d7ea75084e",du="tree_node",dv="93a4c3353b6f4562af635b7116d6bf94",dw="table_cell",dx="33ea2511485c479dbf973af3302f2352",dy="menu_item",dz="2036b2baccbc41f0b9263a6981a11a42",dA="form_hint",dB="4889d666e8ad4c5e81e59863039a5cc0",dC=0xFF999999,dD="form_disabled",dE="9bd0236217a94d89b0314c8c7fc75f16",dF=0xFFF0F0F0,dG="flow_shape",dH="caddf88798f04a469d3bb16589ed2a5d",dI="icon",dJ="26c731cb771b44a88eb8b6e97e78c80e",dK="ellipse",dL="78a26aa073ac4ed2b3c192ce4be8b862",dM="duplicateStyles",dN="55037c00beca4ab981fb8ff744aa5f75",dO="aa017f6a23d447e8a77c4c2eea3d335c",dP="4eea517f5eec41269a0db429802a7adf"; |
||||
|
return _creator(); |
||||
|
})()); |
@ -0,0 +1,105 @@ |
|||||
|
.ax_default { |
||||
|
font-family:'Arial Normal', 'Arial', sans-serif; |
||||
|
font-weight:400; |
||||
|
font-style:normal; |
||||
|
font-size:13px; |
||||
|
letter-spacing:normal; |
||||
|
color:#333333; |
||||
|
vertical-align:none; |
||||
|
text-align:center; |
||||
|
line-height:normal; |
||||
|
text-transform:none; |
||||
|
} |
||||
|
.box_1 { |
||||
|
} |
||||
|
.shape { |
||||
|
} |
||||
|
.image { |
||||
|
} |
||||
|
.button { |
||||
|
} |
||||
|
.primary_button { |
||||
|
color:#FFFFFF; |
||||
|
} |
||||
|
.heading_1 { |
||||
|
font-family:'Arial Normal', 'Arial', sans-serif; |
||||
|
font-weight:bold; |
||||
|
font-style:normal; |
||||
|
font-size:32px; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.heading_2 { |
||||
|
font-family:'Arial Normal', 'Arial', sans-serif; |
||||
|
font-weight:bold; |
||||
|
font-style:normal; |
||||
|
font-size:24px; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.heading_3 { |
||||
|
font-family:'Arial Normal', 'Arial', sans-serif; |
||||
|
font-weight:bold; |
||||
|
font-style:normal; |
||||
|
font-size:18px; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.heading_4 { |
||||
|
font-family:'Arial Normal', 'Arial', sans-serif; |
||||
|
font-weight:bold; |
||||
|
font-style:normal; |
||||
|
font-size:14px; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.heading_5 { |
||||
|
font-family:'Arial Normal', 'Arial', sans-serif; |
||||
|
font-weight:bold; |
||||
|
font-style:normal; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.heading_6 { |
||||
|
font-family:'Arial Normal', 'Arial', sans-serif; |
||||
|
font-weight:bold; |
||||
|
font-style:normal; |
||||
|
font-size:10px; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.label { |
||||
|
font-size:14px; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.paragraph { |
||||
|
text-align:left; |
||||
|
} |
||||
|
.text_field { |
||||
|
color:#000000; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.droplist { |
||||
|
color:#000000; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.list_box { |
||||
|
color:#000000; |
||||
|
text-align:left; |
||||
|
} |
||||
|
.radio_button { |
||||
|
text-align:left; |
||||
|
} |
||||
|
.tree_node { |
||||
|
text-align:left; |
||||
|
} |
||||
|
.table_cell { |
||||
|
} |
||||
|
.menu_item { |
||||
|
} |
||||
|
.form_hint { |
||||
|
color:#999999; |
||||
|
} |
||||
|
.form_disabled { |
||||
|
} |
||||
|
.flow_shape { |
||||
|
} |
||||
|
.icon { |
||||
|
} |
||||
|
.ellipse { |
||||
|
} |
||||
|
textarea, select, input, button { outline: none; } |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 1.5 KiB |
@ -0,0 +1,171 @@ |
|||||
|
// use this to isolate the scope
|
||||
|
(function () { |
||||
|
|
||||
|
if(!$axure.document.configuration.showConsole) { return; } |
||||
|
|
||||
|
$(document).ready(function () { |
||||
|
$axure.player.createPluginHost({ |
||||
|
id: 'debugHost', |
||||
|
context: 'inspect', |
||||
|
title: 'Console', |
||||
|
gid: 3 |
||||
|
}); |
||||
|
|
||||
|
generateDebug(); |
||||
|
|
||||
|
$('#variablesClearLink').click(clearvars_click); |
||||
|
$('#traceClear').click(cleartrace_click); |
||||
|
$('#traceToggle').click(stoptrace_click); |
||||
|
$('#traceStart').click(starttrace_click); |
||||
|
$('#traceClear').hide(); |
||||
|
$('#traceToggle').hide(); |
||||
|
|
||||
|
$('#closeConsole').click(close); |
||||
|
|
||||
|
var currentStack= []; |
||||
|
var finishedStack = []; |
||||
|
|
||||
|
$axure.messageCenter.addMessageListener(function (message, data) { |
||||
|
if(message == 'axCompositeEventMessage') { |
||||
|
for(var i = 0; i < data.length; i++) { |
||||
|
processMessages(data[i].message, data[i].data); |
||||
|
} |
||||
|
} else processMessages(message, data); |
||||
|
}); |
||||
|
|
||||
|
var processMessages = function(message, data) { |
||||
|
if(message == 'globalVariableValues') { |
||||
|
$('#variablesDiv').empty(); |
||||
|
for(var key in data) { |
||||
|
var value = data[key] == '' ? '(blank)' : data[key]; |
||||
|
$('#variablesDiv').append('<div class="variableList"><div class="variableName">' + key + '</div><div class="variableValue">' + value + '</div></div>'); |
||||
|
} |
||||
|
} else if(message == 'axEvent') { |
||||
|
var addToStack = "<div class='axEventBlock'>"; |
||||
|
addToStack += "<div class='axEventContainer'>"; |
||||
|
addToStack += " <div class='axTime'>" + new Date().toLocaleTimeString() + "</div>"; |
||||
|
addToStack += " <div class='axEvent'>" + data.event.description + ": </div>"; |
||||
|
addToStack += " <div class='axLabel'>" + data.label + " (" + data.type + ")</div>"; |
||||
|
addToStack += "</div>"; |
||||
|
|
||||
|
currentStack.push(addToStack); |
||||
|
} else if (message == 'axEventComplete') { |
||||
|
currentStack[currentStack.length - 1] += "</div>"; |
||||
|
finishedStack.push(currentStack.pop()); |
||||
|
if(currentStack.length == 0) { |
||||
|
$('#traceEmptyState').hide(); |
||||
|
$('#traceClear').show(); |
||||
|
$('#traceToggle').show(); |
||||
|
|
||||
|
for(var i = finishedStack.length - 1; i >= 0; i--) { |
||||
|
if($('#traceDiv').children().length > 99) $('#traceDiv').children().last().remove(); |
||||
|
$('#traceDiv').prepend(finishedStack[i]); |
||||
|
} |
||||
|
finishedStack = []; |
||||
|
} |
||||
|
} else if (message == 'axCase') { |
||||
|
//var addToStack = "<div class='axCaseContainer' style='background-color: #" + data.color + "'>";
|
||||
|
var addToStack = "<div class='axCaseContainer'>"; |
||||
|
addToStack += " <div class='axCaseItem'>" + data.item + "</div>"; |
||||
|
if (data.description) { addToStack += " <div class='axCaseDescription' title='" + data.description + "'>" + data.description + "</div>" }; |
||||
|
addToStack += "</div>"; |
||||
|
|
||||
|
currentStack[currentStack.length - 1] += addToStack; |
||||
|
} else if (message == 'axAction') { |
||||
|
var addToStack = "<div class='axActionContainer'>"; |
||||
|
addToStack += " <div class='axActionItem'>" + data.name + "</div>"; |
||||
|
//addToStack += " <div class='axActionItem'>" + data.item + "</div>";
|
||||
|
//if (data.description) { addToStack += " <div class='axActionDescription' title='" + data.description + "'>" + data.description + "</div>" };
|
||||
|
addToStack += "</div>"; |
||||
|
|
||||
|
currentStack[currentStack.length - 1] += addToStack; |
||||
|
} else if (message == 'axInfo') { |
||||
|
var addToStack = "<div class='axInfoContainer'>"; |
||||
|
addToStack += " <div class='axInfoItem'>" + data.item + "</div>"; |
||||
|
if (data.description) { addToStack += " <div class='axInfoDescription' title='" + data.longDescription + "'>" + data.description + "</div>" }; |
||||
|
addToStack += "</div>"; |
||||
|
|
||||
|
currentStack[currentStack.length - 1] += addToStack; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// bind to the page load
|
||||
|
$axure.page.bind('load.debug', function () { |
||||
|
var traceStr = $axure.player.getHashStringVar(TRACE_VAR_NAME); |
||||
|
if (traceStr.length > 0) $axure.messageCenter.setState("isTracing", true); |
||||
|
else $axure.messageCenter.setState("isTracing", false); |
||||
|
$axure.messageCenter.postMessage('getGlobalVariables', ''); |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
|
||||
|
function clearvars_click(event) { |
||||
|
$axure.messageCenter.postMessage('resetGlobalVariables', ''); |
||||
|
} |
||||
|
|
||||
|
function close() { |
||||
|
$axure.player.pluginClose("debugHost"); |
||||
|
} |
||||
|
|
||||
|
function cleartrace_click(event) { |
||||
|
$('#traceDiv').html(''); |
||||
|
} |
||||
|
|
||||
|
function starttrace_click(event) { |
||||
|
$axure.messageCenter.setState("isTracing", true); |
||||
|
//$('#traceDiv').html('');
|
||||
|
$('#traceEmptyState').hide(); |
||||
|
$('#traceClear').show(); |
||||
|
$('#traceToggle').text('Stop Trace'); |
||||
|
$('#traceToggle').off("click"); |
||||
|
$('#traceToggle').click(stoptrace_click); |
||||
|
$('#traceToggle').show(); |
||||
|
console.log("starting trace"); |
||||
|
$axure.player.setVarInCurrentUrlHash(TRACE_VAR_NAME, 1); |
||||
|
} |
||||
|
|
||||
|
function stoptrace_click(event) { |
||||
|
$axure.messageCenter.setState("isTracing", false); |
||||
|
$('#traceDiv').prepend('<div class="tracePausedNotification">Trace Paused<div>'); |
||||
|
$('#traceToggle').text('Restart Trace'); |
||||
|
$('#traceToggle').off("click"); |
||||
|
$('#traceToggle').click(starttrace_click); |
||||
|
console.log("stopping trace"); |
||||
|
$axure.player.deleteVarFromCurrentUrlHash(TRACE_VAR_NAME); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
function generateDebug() { |
||||
|
var pageNotesUi = "<div id='debugHeader'>"; |
||||
|
pageNotesUi += "<div id='debugToolbar'>"; |
||||
|
pageNotesUi += "<div id='consoleTitle' class='pluginNameHeader'>Console</div>"; |
||||
|
|
||||
|
pageNotesUi += "</div>"; |
||||
|
pageNotesUi += "</div>"; |
||||
|
|
||||
|
pageNotesUi += "<div id='variablesContainer' style='max-height:300px; overflow-y:auto'>"; |
||||
|
pageNotesUi += "<div id='variablesTitle' class='sectionTitle'>Variables</div>"; |
||||
|
pageNotesUi += "<a id='variablesClearLink' class='traceOption'>Reset Variables</a>"; |
||||
|
pageNotesUi += "<div id='variablesDiv'></div></div>"; |
||||
|
pageNotesUi += "<div id='traceContainer'>"; |
||||
|
|
||||
|
pageNotesUi += "<div id='traceHeader'>"; |
||||
|
pageNotesUi += "<span class='sectionTitle'>Trace</span><a id='traceClear' class='traceOption'>Clear Trace</a><a id='traceToggle' class='traceOption'>Stop Trace</a>"; |
||||
|
pageNotesUi += "</div>"; |
||||
|
pageNotesUi += "</div>"; |
||||
|
pageNotesUi += "<div id='debugScrollContainer'>"; |
||||
|
pageNotesUi += "<div id='debugContainer'>"; |
||||
|
|
||||
|
|
||||
|
pageNotesUi += "<div id='traceEmptyState'>"; |
||||
|
pageNotesUi += "<div class='startInstructions'>Click the button below to start recording interactions as you click through the prototype.</div>"; |
||||
|
pageNotesUi += "<div id='traceStart' class='startButton'>Start Trace</div>"; |
||||
|
pageNotesUi += "</div>"; |
||||
|
pageNotesUi += "<div id='traceDiv'></div></div>"; |
||||
|
pageNotesUi += "</div></div>"; |
||||
|
|
||||
|
$('#debugHost').html(pageNotesUi); |
||||
|
$('#traceEmptyState').show(); |
||||
|
} |
||||
|
|
||||
|
})(); |
@ -0,0 +1,265 @@ |
|||||
|
#debugHost { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
font-size: 13px; |
||||
|
color: #4a4a4a; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
#debugHostBtn { |
||||
|
order: 4; |
||||
|
} |
||||
|
|
||||
|
#debugHostBtn a { |
||||
|
background: url('images/console_panel_on.svg') no-repeat center center, linear-gradient(transparent, transparent); |
||||
|
} |
||||
|
|
||||
|
#debugHostBtn a.selected, #debugHostBtn a.selected:hover { |
||||
|
background: url('images/console_panel_off.svg') no-repeat center center, linear-gradient(transparent, transparent); |
||||
|
} |
||||
|
|
||||
|
#debugToolbar { |
||||
|
margin-left: 8px; |
||||
|
} |
||||
|
|
||||
|
#variablesClearLink { |
||||
|
display: inline-block; |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
|
||||
|
#variablesClearLink:hover { |
||||
|
color: #0a6cd6; |
||||
|
} |
||||
|
|
||||
|
#traceClearLink { |
||||
|
display: inline-block; |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
|
||||
|
#traceClearLink:hover { |
||||
|
color: #0a6cd6; |
||||
|
} |
||||
|
|
||||
|
#debugScrollContainer |
||||
|
{ |
||||
|
overflow: auto; |
||||
|
width: 100%; |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
#debugContainer { |
||||
|
padding: 10px 0px 10px 0px; |
||||
|
} |
||||
|
|
||||
|
#consoleTitle { |
||||
|
clear: right; |
||||
|
margin: 12px 0px; |
||||
|
} |
||||
|
|
||||
|
.variableName |
||||
|
{ |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.variableDiv |
||||
|
{ |
||||
|
margin-bottom: 20px; |
||||
|
line-height: 16px; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#variablesDiv |
||||
|
{ |
||||
|
clear: right; |
||||
|
} |
||||
|
|
||||
|
#variablesContainer { |
||||
|
border-bottom: solid 1px #e7e7e7; |
||||
|
padding: 0px 10px 12px 10px; |
||||
|
} |
||||
|
|
||||
|
#traceContainer { |
||||
|
margin-bottom: 5px; |
||||
|
padding: 15px 10px 0px 10px; |
||||
|
} |
||||
|
|
||||
|
#variablesTitle { |
||||
|
margin-bottom: 9px; |
||||
|
} |
||||
|
|
||||
|
.sectionTitle { |
||||
|
font-size: 11px; |
||||
|
color: #2c2c2c; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
.debugToolbarButton |
||||
|
{ |
||||
|
font-size: 1em; |
||||
|
color: #069; |
||||
|
} |
||||
|
|
||||
|
.axEventBlock { |
||||
|
display: inline-block; |
||||
|
width: 100%; |
||||
|
margin: 5px 0px 5px 0px; |
||||
|
line-height: 21px; |
||||
|
border-bottom: solid 5px #e7e7e7; |
||||
|
} |
||||
|
|
||||
|
.axEventContainer { |
||||
|
background-color: #e7e7e7; |
||||
|
padding: 0px 10px 0px 10px; |
||||
|
} |
||||
|
|
||||
|
.axTime { |
||||
|
margin: 0px 0px 0px 5px; |
||||
|
font-size: 10px; |
||||
|
color: #575757; |
||||
|
display: inline-block; |
||||
|
float: right; |
||||
|
} |
||||
|
|
||||
|
.axLabel { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
.axEvent { |
||||
|
margin: 0px 0px 2px 0px; |
||||
|
font-size: 15px; |
||||
|
font-weight: bold; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
|
||||
|
.axCaseContainer, .axActionContainer, .axInfoContainer { |
||||
|
justify-content: space-between; |
||||
|
padding: 0px 10px 0px 10px; |
||||
|
} |
||||
|
.axCaseContainer { |
||||
|
border-top: solid 2px #e7e7e7; |
||||
|
/*background-color: #47b6b5;*/ |
||||
|
background-color: #e7e7e7; |
||||
|
/*color: #ffffff;*/ |
||||
|
} |
||||
|
.axActionContainer { |
||||
|
border-top: solid 3px #e7e7e7; |
||||
|
} |
||||
|
.axInfoContainer { |
||||
|
border-top: solid 1px #e7e7e7; |
||||
|
} |
||||
|
|
||||
|
.axCaseItem, .axActionItem, .axInfoItem { |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
.axCaseItem { |
||||
|
font-size: 15px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.axActionItem { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.axInfoItem { |
||||
|
color: #8c8c8c; |
||||
|
} |
||||
|
|
||||
|
.axCaseDescription { |
||||
|
flex: 5 0 33%; |
||||
|
margin-left: 10px; |
||||
|
text-align: right; |
||||
|
} |
||||
|
/*.axActionDescription, .axInfoDescription { |
||||
|
flex: 5 0 33%; |
||||
|
margin-left: 10px; |
||||
|
text-align: right; |
||||
|
}*/ |
||||
|
.axCaseDescription, .axActionDescription { |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
.axInfoDescription, .axActionDescription { |
||||
|
color: #8c8c8c; |
||||
|
font-size: 11px; |
||||
|
} |
||||
|
|
||||
|
.variableName { |
||||
|
width: 55%; |
||||
|
line-height: 0.92; |
||||
|
text-align: left; |
||||
|
color: #0891b3; |
||||
|
display: inline-block; |
||||
|
word-wrap: break-word; |
||||
|
vertical-align: top; |
||||
|
} |
||||
|
|
||||
|
.variableValue { |
||||
|
width: 45%; |
||||
|
line-height: 0.92; |
||||
|
text-align: right; |
||||
|
color: #373d48; |
||||
|
display: inline-block; |
||||
|
word-wrap: break-word; |
||||
|
} |
||||
|
|
||||
|
.traceEvent { |
||||
|
border-bottom: solid 1px #e7e7e7; |
||||
|
} |
||||
|
|
||||
|
.tracePausedNotification { |
||||
|
height: 25px; |
||||
|
/*background-color: #e7e7e7;*/ |
||||
|
border-radius: 5px; |
||||
|
line-height: 25px; |
||||
|
margin: 5px 10px; |
||||
|
text-align: center |
||||
|
} |
||||
|
|
||||
|
#traceEmptyState.emptyStateContainer { |
||||
|
margin-top: 0px; |
||||
|
} |
||||
|
|
||||
|
.variableList{ |
||||
|
width: 100%; |
||||
|
margin-bottom: 4px; |
||||
|
} |
||||
|
|
||||
|
.traceOption { |
||||
|
margin-left: 11px; |
||||
|
height: 16px; |
||||
|
float: right; |
||||
|
font-size: 12px; |
||||
|
font-style: italic; |
||||
|
line-height: 1.45; |
||||
|
text-align: right; |
||||
|
color: #8c8c8c; |
||||
|
text-decoration: underline; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
.startInstructions { |
||||
|
margin: auto; |
||||
|
width: 179px; |
||||
|
font-size: 11px; |
||||
|
text-align: center; |
||||
|
color: #666666; |
||||
|
} |
||||
|
|
||||
|
.startButton { |
||||
|
margin: auto; |
||||
|
margin-top: 10px; |
||||
|
width: 181px; |
||||
|
height: 24px; |
||||
|
border-radius: 2px; |
||||
|
border: solid 1px #008fe0; |
||||
|
text-align: center; |
||||
|
line-height: 24px; |
||||
|
color: #008fe0; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.debugLinksContainer { |
||||
|
text-align: right; |
||||
|
} |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
@ -0,0 +1,474 @@ |
|||||
|
// use this to isolate the scope
|
||||
|
(function () { |
||||
|
// No notes shown specified by generation config
|
||||
|
if (!$axure.document.configuration.showPageNotes && !$axure.document.configuration.showAnnotationsSidebar && !$axure.document.configuration.showAnnotations) { return; } |
||||
|
|
||||
|
$(window.document).ready(function () { |
||||
|
// Load right panel for Page Notes
|
||||
|
if ($axure.document.configuration.showPageNotes || $axure.document.configuration.showAnnotationsSidebar) { |
||||
|
$axure.player.createPluginHost({ |
||||
|
id: 'pageNotesHost', |
||||
|
context: 'inspect', |
||||
|
title: 'Documentation', |
||||
|
gid: 2, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
// Load footnotes on widgets
|
||||
|
if ($axure.document.configuration.showAnnotations) { |
||||
|
$('#overflowMenuContainer').prepend('<div id="showNotesOption" class="showOption" style="order: 3"><div class="overflowOptionCheckbox"></div>Show Note Markers</div>'); |
||||
|
} |
||||
|
|
||||
|
createNotesOverlay(); |
||||
|
generatePageNotes(); |
||||
|
|
||||
|
if ($axure.player.isMobileMode()) { |
||||
|
$('#showNotesOption').hide(); |
||||
|
} else { |
||||
|
$('#showNotesOption').click(footnotes_click); |
||||
|
$('#showNotesOption').find('.overflowOptionCheckbox').addClass('selected'); |
||||
|
} |
||||
|
|
||||
|
function populateNotes(pageForNotes) { |
||||
|
var hasNotes = false; |
||||
|
if ($axure.document.configuration.showPageNotes) { |
||||
|
var pageNoteUi = ''; |
||||
|
|
||||
|
function populatePageNotes(pageOrMaster) { |
||||
|
//populate the page notes
|
||||
|
var notes = pageOrMaster.notes; |
||||
|
if (notes && !$.isEmptyObject(notes)) { |
||||
|
pageNoteUi += "<div class='notesPageNameHeader'>" + pageOrMaster.pageName + "</div>"; |
||||
|
|
||||
|
var showNames = $axure.document.configuration.showPageNoteNames; |
||||
|
for(var noteName in notes) { |
||||
|
pageNoteUi += "<div class='pageNoteContainer'>"; |
||||
|
if(showNames) { |
||||
|
pageNoteUi += "<div class='pageNoteName'>" + noteName + "</div>"; |
||||
|
} |
||||
|
pageNoteUi += "<div class='pageNote'>" + linkify(notes[noteName]) + "</div>"; |
||||
|
pageNoteUi += "</div>"; |
||||
|
//$('#pageNotesContent').append(pageNoteUi);
|
||||
|
|
||||
|
hasNotes = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
populatePageNotes(pageForNotes); |
||||
|
if (pageForNotes.masterNotes) { |
||||
|
for (var i = 0; i < pageForNotes.masterNotes.length; i++) { |
||||
|
populatePageNotes(pageForNotes.masterNotes[i]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (pageNoteUi.length > 0) { |
||||
|
pageNoteUi += "<div class='lineDivider'></div>"; |
||||
|
var pageNotesHeader = "<div id='pageNotesSectionHeader' class='notesSectionHeader pluginNameHeader'>Page Notes</div>"; |
||||
|
$('#pageNotesContent').append(pageNotesHeader + pageNoteUi); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if ($axure.document.configuration.showAnnotationsSidebar) { |
||||
|
var widgetNoteUi = ''; |
||||
|
//var widgetNotes = pageForNotes.widgetNotes;
|
||||
|
function populateWidgetNotes(widgetNotes){ |
||||
|
if (widgetNotes) { |
||||
|
for (var i = 0; i < widgetNotes.length; i++) { |
||||
|
var widgetNote = widgetNotes[i]; |
||||
|
widgetNoteUi += "<div class='widgetNoteContainer' data-id='" + widgetNote["ownerId"] + "'>"; |
||||
|
widgetNoteUi += "<div class='widgetNoteFootnote'>" + widgetNote["fn"] + "</div>"; |
||||
|
widgetNoteUi += "<div class='widgetNoteLabel'>" + widgetNote["label"] + "</div>"; |
||||
|
|
||||
|
for (var widgetNoteName in widgetNote) { |
||||
|
if (widgetNoteName != "label" && widgetNoteName != "fn" && widgetNoteName != "ownerId") { |
||||
|
widgetNoteUi += "<div class='pageNoteName'>" + widgetNoteName + "</div>"; |
||||
|
widgetNoteUi += "<div class='pageNote'>" + linkify(widgetNote[widgetNoteName]) + "</div>"; |
||||
|
//widgetNoteUi += "<div class='nondottedDivider'></div>";
|
||||
|
} |
||||
|
} |
||||
|
widgetNoteUi += "</div>"; |
||||
|
//widgetNoteUi += "<div class='nondottedDivider'></div>";
|
||||
|
//$('#pageNotesContent').append(widgetNoteUi);
|
||||
|
hasNotes = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
populateWidgetNotes(pageForNotes.widgetNotes); |
||||
|
if (pageForNotes.masterNotes) { |
||||
|
for (var i = 0; i < pageForNotes.masterNotes.length; i++) { |
||||
|
populateWidgetNotes(pageForNotes.masterNotes[i].widgetNotes); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (widgetNoteUi.length > 0) { |
||||
|
var widgetNotesHeader = "<div id='widgetNotesSectionHeader' class='notesSectionHeader pluginNameHeader'>Widget Notes</div>"; |
||||
|
$('#pageNotesContent').append(widgetNotesHeader + widgetNoteUi); |
||||
|
|
||||
|
//$('.widgetNoteContainer').children(':last-child').remove();
|
||||
|
//$('.widgetNoteFootnote').append("<div class='annnoteline'></div><div class='annnoteline'></div><div class='annnoteline'></div>");
|
||||
|
$('.widgetNoteContainer').click(function () { |
||||
|
var wasSelected = $(this).hasClass('widgetNoteContainerSelected'); |
||||
|
$('.widgetNoteContainerSelected').removeClass('widgetNoteContainerSelected'); |
||||
|
if (!wasSelected) $(this).addClass('widgetNoteContainerSelected'); |
||||
|
|
||||
|
var dimStr = $('.currentAdaptiveView').attr('data-dim'); |
||||
|
var h = dimStr ? dimStr.split('x')[1] : '0'; |
||||
|
var $leftPanel = $('.leftPanel:visible'); |
||||
|
var leftPanelOffset = (!$axure.player.isMobileMode() && $leftPanel.length > 0) ? $leftPanel.width() : 0; |
||||
|
var $rightPanel = $('.rightPanel:visible'); |
||||
|
var rightPanelOffset = (!$axure.player.isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0; |
||||
|
var viewDimensions = { |
||||
|
h: h != '0' ? h : '', |
||||
|
scaleVal: $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'), |
||||
|
height: $('.rightPanel').height(), |
||||
|
panelWidthOffset: leftPanelOffset + rightPanelOffset |
||||
|
}; |
||||
|
$axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: this.getAttribute('data-id'), value: !wasSelected, view: viewDimensions}); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//if (pageForNotes.masterNotes) {
|
||||
|
// for (var i = 0; i < pageForNotes.masterNotes.length; i++) {
|
||||
|
// var master = pageForNotes.masterNotes[i];
|
||||
|
// hasNotes = populateNotes(master) || hasNotes;
|
||||
|
// }
|
||||
|
//}
|
||||
|
} |
||||
|
|
||||
|
return hasNotes; |
||||
|
} |
||||
|
|
||||
|
// bind to the page load
|
||||
|
$axure.page.bind('load.page_notes', function () { |
||||
|
closeAllDialogs(); |
||||
|
|
||||
|
var hasNotes = false; |
||||
|
|
||||
|
$('#pageNotesContent').html(""); |
||||
|
hasNotes = populateNotes($axure.page); |
||||
|
|
||||
|
if(hasNotes) $('#pageNotesEmptyState').hide(); |
||||
|
else $('#pageNotesEmptyState').show(); |
||||
|
|
||||
|
//If footnotes enabled for this prototype...
|
||||
|
if ($axure.player.isMobileMode()) { |
||||
|
$axure.messageCenter.postMessage('annotationToggle', false); |
||||
|
} else if($axure.document.configuration.showAnnotations == true) { |
||||
|
//If the fn var is defined and set to 0, hide footnotes
|
||||
|
//else if hide-footnotes button selected, hide them
|
||||
|
var fnVal = $axure.player.getHashStringVar(FOOTNOTES_VAR_NAME); |
||||
|
if(fnVal.length > 0 && fnVal == 0) { |
||||
|
$('#showNotesOption').find('.overflowOptionCheckbox').removeClass('selected'); |
||||
|
$axure.messageCenter.postMessage('annotationToggle', false); |
||||
|
} else if(!$('#showNotesOption').find('.overflowOptionCheckbox').hasClass('selected')) { |
||||
|
//If the footnotes button isn't selected, hide them on this loaded page
|
||||
|
$axure.messageCenter.postMessage('annotationToggle', false); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Get multiple click call if not removing beforehand
|
||||
|
$('#notesOverlay').off('click'); |
||||
|
$('#notesOverlay').on('click', '.closeNotesDialog', function () { |
||||
|
var ownerId = $(this).attr("data-ownerid"); |
||||
|
_toggleAnnDialog(ownerId); |
||||
|
}); |
||||
|
|
||||
|
$axure.player.updatePlugins(); |
||||
|
return false; |
||||
|
}); |
||||
|
|
||||
|
$axure.messageCenter.addMessageListener(function (message, data) { |
||||
|
//var messageData = { id: elementId, x: event.pageX, y: event.pageY }
|
||||
|
if (message == 'toggleAnnDialog') { |
||||
|
_toggleAnnDialog(data.id, data.x, data.y, data.page); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
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 '<a href="' + url2 + '" target="_blank" class="noteLink">' + url + '</a>'; |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
function getWidgetNotesHtml(ownerId, page) { |
||||
|
var pageForNotes = page || $axure.page; |
||||
|
var widgetNoteUi = ''; |
||||
|
|
||||
|
widgetNoteUi += "<div data-ownerid='" + ownerId + "' class='closeNotesDialog'></div>"; |
||||
|
widgetNoteUi += "<div class='notesDialogScroll'>"; |
||||
|
|
||||
|
function getNotesForPage(widgetNotes) { |
||||
|
for (var i = 0; i < widgetNotes.length; i++) { |
||||
|
var widgetNote = widgetNotes[i]; |
||||
|
if (widgetNote["ownerId"] == ownerId) { |
||||
|
widgetNoteUi += "<div class='widgetNoteContainer' data-id='" + widgetNote["ownerId"] + "'>"; |
||||
|
widgetNoteUi += "<div class='widgetNoteFootnote'>" + widgetNote["fn"] + "</div>"; |
||||
|
widgetNoteUi += "<div class='widgetNoteLabel'>" + widgetNote["label"] + "</div>"; |
||||
|
|
||||
|
for (var widgetNoteName in widgetNote) { |
||||
|
if (widgetNoteName != "label" && widgetNoteName != "fn" && widgetNoteName != "ownerId") { |
||||
|
widgetNoteUi += "<div class='pageNoteName'>" + widgetNoteName + "</div>"; |
||||
|
widgetNoteUi += "<div class='pageNote'>" + linkify(widgetNote[widgetNoteName]) + "</div>"; |
||||
|
} |
||||
|
} |
||||
|
widgetNoteUi += "</div>"; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
getNotesForPage(pageForNotes.widgetNotes); |
||||
|
if (pageForNotes.masterNotes) { |
||||
|
for (var i = 0; i < pageForNotes.masterNotes.length; i++) { |
||||
|
getNotesForPage(pageForNotes.masterNotes[i].widgetNotes); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
widgetNoteUi += "</div>"; |
||||
|
widgetNoteUi += "<div class='resizeNotesDialog'></div>"; |
||||
|
|
||||
|
return widgetNoteUi; |
||||
|
} |
||||
|
|
||||
|
var maxZIndex = 1; |
||||
|
var dialogs = {}; |
||||
|
var _toggleAnnDialog = function (id, srcLeft, srcTop, page) { |
||||
|
|
||||
|
if(dialogs[id]) { |
||||
|
var $dialog = dialogs[id]; |
||||
|
// reset the dialog
|
||||
|
dialogs[id] = undefined; |
||||
|
$dialog.find('.notesDialogScroll').getNiceScroll().remove(); |
||||
|
$dialog.remove(); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
var bufferH = 10; |
||||
|
var bufferV = 10; |
||||
|
var blnLeft = false; |
||||
|
var blnAbove = false; |
||||
|
var mfPos = $('#mainPanelContainer').position(); |
||||
|
var viewablePanelLeftMargin = parseInt($('#mainPanelContainer').css('margin-left')); |
||||
|
|
||||
|
var sourceTop = srcTop + mfPos.top; |
||||
|
var sourceLeft = srcLeft + viewablePanelLeftMargin; |
||||
|
|
||||
|
var width = 300; |
||||
|
var height = 300; |
||||
|
|
||||
|
if(sourceLeft > width + bufferH) { |
||||
|
blnLeft = true; |
||||
|
} |
||||
|
if(sourceTop > height + bufferV) { |
||||
|
blnAbove = true; |
||||
|
} |
||||
|
|
||||
|
var top = 0; |
||||
|
var left = 0; |
||||
|
if(blnAbove) top = sourceTop - height - 20; |
||||
|
else top = sourceTop + 10; |
||||
|
if(blnLeft) left = sourceLeft - width - 4; |
||||
|
else left = sourceLeft - 6; |
||||
|
|
||||
|
//need to set the zindex
|
||||
|
maxZIndex = maxZIndex + 1; |
||||
|
|
||||
|
var $dialog = $('<div class="notesDialog"></div>') |
||||
|
.appendTo('#notesOverlay') |
||||
|
.html(getWidgetNotesHtml(id, page)); |
||||
|
|
||||
|
$dialog.css({ 'left': left, 'top': top, 'z-index': maxZIndex }); |
||||
|
|
||||
|
$dialog.find('.notesDialogScroll').niceScroll({ cursorcolor: "#8c8c8c", cursorborder: "0px solid #fff" }); |
||||
|
|
||||
|
$dialog.find('.notesDialogScroll').on($axure.eventNames.mouseDownName, function(event) { |
||||
|
event.stopPropagation(); |
||||
|
}); |
||||
|
|
||||
|
$dialog.find('.closeNotesDialog').on($axure.eventNames.mouseDownName, function (event) { |
||||
|
event.stopPropagation(); |
||||
|
}); |
||||
|
|
||||
|
$dialog.on($axure.eventNames.mouseDownName, startDialogMove); |
||||
|
var startMouseX; |
||||
|
var startMouseY; |
||||
|
var startDialogX; |
||||
|
var startDialogY; |
||||
|
function startDialogMove() { |
||||
|
startMouseX = window.event.pageX; |
||||
|
startMouseY = window.event.pageY; |
||||
|
var position = $dialog.position(); |
||||
|
startDialogX = position.left; |
||||
|
startDialogY = position.top; |
||||
|
|
||||
|
$dialog.addClass('active'); |
||||
|
$('<div class="splitterMask"></div>').insertAfter($('#notesOverlay')); |
||||
|
$(document).bind($axure.eventNames.mouseMoveName, doDialogMove).bind($axure.eventNames.mouseUpName, endDialogMove); |
||||
|
|
||||
|
$dialog.find('.notesDialogScroll').getNiceScroll().hide(); |
||||
|
} |
||||
|
|
||||
|
function doDialogMove() { |
||||
|
var currentX = window.event.pageX; |
||||
|
var currentY = window.event.pageY; |
||||
|
$dialog.css({ 'left': startDialogX + currentX - startMouseX, 'top': startDialogY + currentY - startMouseY }); |
||||
|
} |
||||
|
|
||||
|
function endDialogMove() { |
||||
|
$('div.splitterMask').remove(); |
||||
|
$dialog.removeClass('active'); |
||||
|
$(document).unbind($axure.eventNames.mouseMoveName, doDialogMove).unbind($axure.eventNames.mouseUpName, endDialogMove); |
||||
|
|
||||
|
$dialog.find('.notesDialogScroll').getNiceScroll().resize(); |
||||
|
$dialog.find('.notesDialogScroll').getNiceScroll().show(); |
||||
|
} |
||||
|
|
||||
|
$dialog.find('.resizeNotesDialog').on($axure.eventNames.mouseDownName, startDialogResize); |
||||
|
|
||||
|
var startDialogW; |
||||
|
var startDialogH; |
||||
|
function startDialogResize() { |
||||
|
event.stopPropagation(); |
||||
|
|
||||
|
startMouseX = window.event.pageX; |
||||
|
startMouseY = window.event.pageY; |
||||
|
startDialogW = Number($dialog.css('width').replace('px','')); |
||||
|
startDialogH = Number($dialog.css('height').replace('px', '')); |
||||
|
|
||||
|
$dialog.addClass('active'); |
||||
|
$('<div class="splitterMask"></div>').insertAfter($('#notesOverlay')); |
||||
|
$(document).bind($axure.eventNames.mouseMoveName, doDialogResize).bind($axure.eventNames.mouseUpName, endDialogResize); |
||||
|
|
||||
|
$dialog.find('.notesDialogScroll').getNiceScroll().hide(); |
||||
|
} |
||||
|
|
||||
|
function doDialogResize() { |
||||
|
var currentX = window.event.pageX; |
||||
|
var currentY = window.event.pageY; |
||||
|
var newWidth = Math.max(200, startDialogW + currentX - startMouseX); |
||||
|
var newHeight = Math.max(200, startDialogH + currentY - startMouseY); |
||||
|
$dialog.css({ 'width': newWidth, 'height': newHeight }); |
||||
|
} |
||||
|
|
||||
|
function endDialogResize() { |
||||
|
$('div.splitterMask').remove(); |
||||
|
$dialog.removeClass('active'); |
||||
|
$(document).unbind($axure.eventNames.mouseMoveName, doDialogResize).unbind($axure.eventNames.mouseUpName, endDialogResize); |
||||
|
|
||||
|
$dialog.find('.notesDialogScroll').getNiceScroll().resize(); |
||||
|
$dialog.find('.notesDialogScroll').getNiceScroll().show(); |
||||
|
} |
||||
|
|
||||
|
dialogs[id] = $dialog; |
||||
|
|
||||
|
// scroll ... just for IE
|
||||
|
//window.scrollTo(scrollX, scrollY);
|
||||
|
}; |
||||
|
|
||||
|
$(document).on('sidebarCollapse', function (event, data) { |
||||
|
clearSelection(); |
||||
|
}); |
||||
|
|
||||
|
$(document).on('pluginShown', function (event, data) { |
||||
|
if(data != 2) { |
||||
|
clearSelection(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
function clearSelection() { |
||||
|
var selectedNote = $('#pageNotesContainer').find('.widgetNoteContainerSelected'); |
||||
|
if(selectedNote.length > 0) { |
||||
|
selectedNote.removeClass('widgetNoteContainerSelected'); |
||||
|
//var dimStr = $('.currentAdaptiveView').attr('data-dim');
|
||||
|
//var h = dimStr ? dimStr.split('x')[1] : '0';
|
||||
|
//var $leftPanel = $('.leftPanel:visible');
|
||||
|
//var leftPanelOffset = (!$axure.player.isMobileMode() && $leftPanel.length > 0) ? $leftPanel.width() : 0;
|
||||
|
//var $rightPanel = $('.rightPanel:visible');
|
||||
|
//var rightPanelOffset = (!$axure.player.isMobileMode() && $rightPanel.length > 0) ? $rightPanel.width() : 0;
|
||||
|
//var viewDimensions = {
|
||||
|
// h: h != '0' ? h : '',
|
||||
|
// scaleVal: $('.vpScaleOption').find('.selectedRadioButton').parent().attr('val'),
|
||||
|
// scrollLeft: $('#clipFrameScroll').scrollLeft(),
|
||||
|
// scrollTop: $('#clipFrameScroll').scrollTop(),
|
||||
|
// height: $('.rightPanel').height(),
|
||||
|
// panelWidthOffset: leftPanelOffset + rightPanelOffset
|
||||
|
//};
|
||||
|
//$axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: '', value: false, view: viewDimensions });
|
||||
|
$axure.messageCenter.postMessage('toggleSelectWidgetNote', { id: '', value: false }); |
||||
|
//$axure.messageCenter.postMessage('toggleSelectWidgetNote', '');
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function closeAllDialogs() { |
||||
|
for (var id in dialogs) { |
||||
|
var $dialog = dialogs[id]; |
||||
|
if ($dialog !== undefined) _toggleAnnDialog(id); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$axure.player.toggleFootnotes = function(val) { |
||||
|
var scaleCheckDiv = $('#showNotesOption').find('.overflowOptionCheckbox'); |
||||
|
if (scaleCheckDiv.hasClass('selected')) { |
||||
|
if (!val) $('#showNotesOption').click(); |
||||
|
} else { |
||||
|
if (val) $('#showNotesOption').click(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function footnotes_click(event) { |
||||
|
var scaleCheckDiv = $('#showNotesOption').find('.overflowOptionCheckbox'); |
||||
|
if (scaleCheckDiv.hasClass('selected')) { |
||||
|
closeAllDialogs(); |
||||
|
|
||||
|
scaleCheckDiv.removeClass('selected'); |
||||
|
$axure.messageCenter.postMessage('annotationToggle', false); |
||||
|
//Add 'fn' hash string var so that footnotes stay hidden across reloads
|
||||
|
$axure.player.setVarInCurrentUrlHash(FOOTNOTES_VAR_NAME, 0); |
||||
|
} else { |
||||
|
scaleCheckDiv.addClass('selected'); |
||||
|
$axure.messageCenter.postMessage('annotationToggle', true); |
||||
|
//Delete 'fn' hash string var if it exists since default is visible
|
||||
|
$axure.player.deleteVarFromCurrentUrlHash(FOOTNOTES_VAR_NAME); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function createNotesOverlay() { |
||||
|
var $targetPanel = $('#clippingBounds'); |
||||
|
|
||||
|
if (!$('#notesOverlay').length) { |
||||
|
var notesOverlay = document.createElement('div'); |
||||
|
notesOverlay.setAttribute('id', 'notesOverlay'); |
||||
|
|
||||
|
$targetPanel.prepend(notesOverlay); |
||||
|
$(notesOverlay).append(' '); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function generatePageNotes() { |
||||
|
var pageNotesUi = "<div id='pageNotesHeader'>"; |
||||
|
|
||||
|
pageNotesUi += "<div id='pageNotesToolbar' style='height: 12px;'>"; |
||||
|
pageNotesUi += "</div>"; |
||||
|
pageNotesUi += "</div>"; |
||||
|
|
||||
|
|
||||
|
pageNotesUi += "<div id='pageNotesScrollContainer'>"; |
||||
|
pageNotesUi += "<div id='pageNotesContainer'>"; |
||||
|
pageNotesUi += "<div id='pageNotesEmptyState' class='emptyStateContainer'><div class='emptyStateTitle'>No notes for this page.</div><div class='emptyStateContent'>Notes added in Axure RP will appear here.</div><div class='dottedDivider'></div></div>"; |
||||
|
pageNotesUi += "<span id='pageNotesContent'></span>"; |
||||
|
pageNotesUi += "</div></div>"; |
||||
|
|
||||
|
$('#pageNotesHost').html(pageNotesUi); |
||||
|
|
||||
|
if(!$axure.document.configuration.showAnnotations) { |
||||
|
$('#pageNotesHost .pageNameHeader').css('padding-right', '55px'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
})(); |
After Width: | Height: | Size: 340 B |
After Width: | Height: | Size: 340 B |
@ -0,0 +1,209 @@ |
|||||
|
#pageNotesHost { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
#pageNotesHostBtn { |
||||
|
order: 2; |
||||
|
} |
||||
|
|
||||
|
#pageNotesHostBtn a { |
||||
|
background: url('images/notes_panel_on.svg') no-repeat center center,linear-gradient(transparent, transparent); |
||||
|
} |
||||
|
|
||||
|
#pageNotesHostBtn a.selected, #pageNotesHostBtn a.selected:hover { |
||||
|
background: url('images/notes_panel_off.svg') no-repeat center center,linear-gradient(transparent, transparent); |
||||
|
} |
||||
|
|
||||
|
#pageNotesScrollContainer { |
||||
|
overflow: auto; |
||||
|
width: 100%; |
||||
|
flex: 1; |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
} |
||||
|
|
||||
|
#pageNotesContent { |
||||
|
overflow: visible; |
||||
|
} |
||||
|
|
||||
|
.pageNoteContainer { |
||||
|
padding: 0px 12px 8px 12px; |
||||
|
} |
||||
|
|
||||
|
.mobileMode .pageNoteContainer { |
||||
|
padding: 0px 16px 8px 17px; |
||||
|
} |
||||
|
|
||||
|
.pageNoteName { |
||||
|
font-size: 13px; |
||||
|
font-weight: bold; |
||||
|
color: #2c2c2c; |
||||
|
margin: 15px 0px 5px 0px; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
.pageNote { |
||||
|
font-size: 13px; |
||||
|
color: #2a2e38; |
||||
|
line-height: 1.67; |
||||
|
word-wrap: break-word; |
||||
|
} |
||||
|
|
||||
|
.pageNote ul { |
||||
|
list-style: disc; |
||||
|
padding: 0px 0px 0px 40px; |
||||
|
} |
||||
|
|
||||
|
.pageNote ul ul{ |
||||
|
list-style: circle; |
||||
|
} |
||||
|
|
||||
|
.pageNote ul ul ul{ |
||||
|
list-style: square; |
||||
|
} |
||||
|
|
||||
|
.pageNote ul ul ul ul { |
||||
|
list-style: disc; |
||||
|
} |
||||
|
|
||||
|
.pageNote ul ul ul ul ul { |
||||
|
list-style: circle; |
||||
|
} |
||||
|
|
||||
|
.pageNote ul ul ul ul ul ul { |
||||
|
list-style: square; |
||||
|
} |
||||
|
|
||||
|
.widgetNoteContainer { |
||||
|
padding: 12px; |
||||
|
border-bottom: 1px solid transparent; |
||||
|
border-top: 1px solid transparent; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.mobileMode .widgetNoteContainer { |
||||
|
padding: 12px 16px 12px 17px; |
||||
|
} |
||||
|
|
||||
|
.widgetNoteContainerSelected { |
||||
|
background-color: white; |
||||
|
border-bottom: 1px solid #c2c2c2; |
||||
|
border-top: 1px solid #c2c2c2; |
||||
|
} |
||||
|
|
||||
|
.widgetNoteFootnote { |
||||
|
display: inline-block; |
||||
|
padding-top: 1px; |
||||
|
background-color: #fff849; |
||||
|
font-size: 11px; |
||||
|
font-weight: bold; |
||||
|
line-height: 16px; |
||||
|
margin-right: 8px; |
||||
|
padding: 0px 5px; |
||||
|
color: #000; |
||||
|
} |
||||
|
|
||||
|
div.annnoteline { |
||||
|
display: inline-block; |
||||
|
width: 9px; |
||||
|
height: 1px; |
||||
|
border-bottom: 1px solid white; |
||||
|
margin-top: 1px; |
||||
|
} |
||||
|
|
||||
|
.widgetNoteLabel { |
||||
|
font-size: 13px; |
||||
|
font-weight: 600; |
||||
|
color: #58167d; |
||||
|
margin-top: 4px; |
||||
|
float: right; |
||||
|
} |
||||
|
|
||||
|
.noteLink { |
||||
|
text-decoration: inherit; |
||||
|
color: inherit; |
||||
|
} |
||||
|
|
||||
|
.noteLink:hover { |
||||
|
background-color: white; |
||||
|
} |
||||
|
|
||||
|
.notesSectionHeader { |
||||
|
margin: 0px 8px 0px 12px; |
||||
|
} |
||||
|
|
||||
|
.notesPageNameHeader { |
||||
|
margin: 8px 8px 15px 12px; |
||||
|
} |
||||
|
|
||||
|
.mobileMode .notesPageNameHeader { |
||||
|
margin: 18px 14px 5px 16px; |
||||
|
} |
||||
|
|
||||
|
#notesOverlay { |
||||
|
width: 0; |
||||
|
height: 0; |
||||
|
position: absolute; |
||||
|
overflow: visible; |
||||
|
z-index: 1; |
||||
|
} |
||||
|
|
||||
|
div.closeNotesDialog { |
||||
|
position: absolute; |
||||
|
top: 6px; |
||||
|
right: 6px; |
||||
|
width: 11px; |
||||
|
height: 10px; |
||||
|
object-fit: contain; |
||||
|
background: url(../../../resources/images/close_x.svg) no-repeat center center, linear-gradient(transparent, transparent); |
||||
|
margin-left: auto; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
div.resizeNotesDialog { |
||||
|
position: absolute; |
||||
|
bottom: 2px; |
||||
|
right: 2px; |
||||
|
width: 11px; |
||||
|
height: 10px; |
||||
|
object-fit: contain; |
||||
|
background: url(../../../resources/images/resize.svg) no-repeat center center, linear-gradient(transparent, transparent); |
||||
|
margin-left: auto; |
||||
|
cursor: nwse-resize; |
||||
|
} |
||||
|
|
||||
|
div.notesDialog { |
||||
|
position: absolute; |
||||
|
padding: 16px 3px 10px 3px; |
||||
|
background-color: #efefef; |
||||
|
width: 300px; |
||||
|
height: 300px; |
||||
|
line-height: normal; |
||||
|
border: #8F949A solid 1px; |
||||
|
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.4); |
||||
|
cursor: move; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
div.notesDialog.active { |
||||
|
user-select: none; |
||||
|
} |
||||
|
|
||||
|
div.notesDialog .widgetNoteContainer { |
||||
|
cursor: auto; |
||||
|
padding: 2px 26px 16px 14px; |
||||
|
} |
||||
|
|
||||
|
div.notesDialogScroll { |
||||
|
overflow-x: hidden; |
||||
|
overflow-y: auto; |
||||
|
height: 100%; |
||||
|
cursor: auto; |
||||
|
} |
||||
|
|
||||
|
.mobileMode .pageNoteName, .mobileMode #pageNotesToolbar, .mobileMode .dottedDivider { |
||||
|
display: none; |
||||
|
} |
@ -0,0 +1,479 @@ |
|||||
|
// use this to isolate the scope
|
||||
|
(function() { |
||||
|
|
||||
|
if(!$axure.document.configuration.showRecordPlay) { return; } |
||||
|
|
||||
|
$(window.document).ready(function() { |
||||
|
$axure.player.createPluginHost({ |
||||
|
id: 'recordPlayHost', |
||||
|
context: 'interface', |
||||
|
title: 'Recording' |
||||
|
}); |
||||
|
_generateRecordPlay(); |
||||
|
|
||||
|
$('#recordButton').click(_recordClick); |
||||
|
$('#playButton').click(_playClick); |
||||
|
$('#stopButton').click(_stopClick); |
||||
|
$('#deleteButton').click(_deleteClick); |
||||
|
|
||||
|
// bind to the page load
|
||||
|
|
||||
|
$axure.page.bind('load.page_notes', function() { |
||||
|
|
||||
|
$.ajax({ |
||||
|
type: "POST", |
||||
|
url: '/RecordController/ListRecordings', |
||||
|
success: function(response) { |
||||
|
|
||||
|
$('#recordNameHeader').html(""); |
||||
|
$('#recordPlayContent').html(""); |
||||
|
//populate the notes
|
||||
|
|
||||
|
axRecordingList = []; |
||||
|
|
||||
|
if(!eventList) { |
||||
|
recordingIndex = 0; |
||||
|
eventList = []; |
||||
|
recordingStartTime = 0; |
||||
|
bulkEventElement = ""; |
||||
|
lastBulkEvent = {}; |
||||
|
} |
||||
|
|
||||
|
for(var idx in response.recordingList) { |
||||
|
getOneRecording(response.recordingList[idx]); |
||||
|
} |
||||
|
|
||||
|
return false; |
||||
|
}, |
||||
|
// dataType: 'json'
|
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
var nameMatcher = new RegExp("^axRecording[0-9]{4}$", "i"); |
||||
|
var indexMatcher = new RegExp("[0-9]{4}$", "i"); |
||||
|
|
||||
|
var convertFromJson = function(oneRecording) { |
||||
|
|
||||
|
if(nameMatcher.exec(oneRecording.recordingName)) { |
||||
|
var myArray = indexMatcher.exec(oneRecording.recordingName); |
||||
|
var currIdx = parseInt(myArray); |
||||
|
if(recordingIndex < currIdx) { |
||||
|
recordingIndex = currIdx; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
for(var idx in oneRecording.eventList) { |
||||
|
var thisEvent = oneRecording.eventList[idx]; |
||||
|
thisEvent.eventInfo = {}; |
||||
|
thisEvent.eventInfo.srcElement = thisEvent.elementID; |
||||
|
// TODO: check that this is correct.
|
||||
|
|
||||
|
if(isBulkMouse(thisEvent.eventType)) { |
||||
|
thisEvent.eventInfo.mousePositions = []; |
||||
|
thisEvent.eventInfo.mousePositions = thisEvent.mousePositions; |
||||
|
thisEvent.timeStamp = thisEvent.mousePositions[0].timeStamp; |
||||
|
} |
||||
|
if(isSingleMouse(thisEvent.eventType)) { |
||||
|
thisEvent.eventInfo.cursor = {}; |
||||
|
thisEvent.eventInfo.cursor = thisEvent.cursor; |
||||
|
|
||||
|
} |
||||
|
if(thisEvent.eventType === 'OnDrag') { |
||||
|
thisEvent.eventInfo.dragInfo = {}; |
||||
|
thisEvent.eventInfo.dragInfo = thisEvent.dragInfo; |
||||
|
thisEvent.timeStamp = thisEvent.dragInfo.startTime; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
return oneRecording; |
||||
|
}; |
||||
|
|
||||
|
var getOneRecording = function(recordingItem) { |
||||
|
$.ajax({ |
||||
|
type: "POST", |
||||
|
url: '/RecordController/GetRecording', |
||||
|
data: { 'recordingId': recordingItem.recordingId }, |
||||
|
success: function(response) { |
||||
|
axRecordingList[axRecordingList.length] = convertFromJson(response); |
||||
|
var axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode'); |
||||
|
axRecordingContainer.append(_formAxRecordingBranch(response)); |
||||
|
_attachEventTriggers(response); |
||||
|
}, // dataType: 'json'
|
||||
|
}); |
||||
|
|
||||
|
}; |
||||
|
|
||||
|
var axRecordingList; |
||||
|
var eventList; |
||||
|
var recordingIndex; |
||||
|
var recordingStartTime; |
||||
|
var recordingId; |
||||
|
var recordingName; |
||||
|
|
||||
|
|
||||
|
var leadingZeros = function(number, digits) { // because this thing doesn't have string.format (or does it?)
|
||||
|
var recurseLeadingZeros = function(number, digitsLeft) { |
||||
|
if(digitsLeft > 0) { |
||||
|
return recurseLeadingZeros("0" + number, digitsLeft - 1); |
||||
|
} else { |
||||
|
return number; |
||||
|
} |
||||
|
}; |
||||
|
return recurseLeadingZeros(number, digits - String(number).length); |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
var generateRecordingName = function() { |
||||
|
return "axRecording" + leadingZeros(recordingIndex, 4); |
||||
|
}; |
||||
|
|
||||
|
var isSingleMouse = function(eventType) { |
||||
|
return (eventType === 'OnClick' || |
||||
|
eventType === 'OnMouseUp' || |
||||
|
eventType === 'OnMouseDown' || |
||||
|
eventType === 'OnMouseOver' || |
||||
|
eventType === 'OnKeyUp' || |
||||
|
eventType === 'OnSelectedChange' || |
||||
|
eventType === 'OnSelect' || |
||||
|
eventType === 'OnUnselect' || |
||||
|
eventType === 'OnTextChange' || |
||||
|
eventType === 'OnMouseOut'); |
||||
|
}; |
||||
|
|
||||
|
var isBulkMouse = function(eventType) { |
||||
|
return (eventType === 'OnMouseHover' || |
||||
|
eventType === 'OnMouseMove'); |
||||
|
}; |
||||
|
|
||||
|
var bulkEventElement; |
||||
|
var lastBulkEvent; |
||||
|
|
||||
|
|
||||
|
$axure.messageCenter.addMessageListener(function(message, eventData) { |
||||
|
var lastEvent, lastBulkData; |
||||
|
|
||||
|
if(message === 'logEvent') { |
||||
|
|
||||
|
if(bulkEventElement !== eventData.elementID) { |
||||
|
lastBulkEvent = {}; |
||||
|
bulkEventElement = eventData.elementID; |
||||
|
} |
||||
|
|
||||
|
if(isBulkMouse(eventData.eventType)) { |
||||
|
lastEvent = lastBulkEvent[eventData.eventType]; |
||||
|
|
||||
|
if(lastEvent) { |
||||
|
// this is the second or third or whatever onmousemove in a row
|
||||
|
lastBulkData = lastEvent.eventInfo.mousePositions; |
||||
|
lastBulkData[lastBulkData.length] = { |
||||
|
cursor: eventData.eventInfo.cursor, |
||||
|
timeStamp: eventData.timeStamp |
||||
|
}; |
||||
|
} else { |
||||
|
|
||||
|
eventData.eventInfo.mousePositions = []; |
||||
|
eventData.eventInfo.mousePositions[0] = { |
||||
|
cursor: eventData.eventInfo.cursor, |
||||
|
timeStamp: eventData.timeStamp |
||||
|
}; |
||||
|
eventList[eventList.length] = eventData; |
||||
|
lastBulkEvent[eventData.eventType] = eventData; |
||||
|
} |
||||
|
} else { |
||||
|
var z = true; |
||||
|
} |
||||
|
|
||||
|
if(isSingleMouse(eventData.eventType) ) { |
||||
|
eventList[eventList.length] = eventData; |
||||
|
lastBulkEvent = {}; |
||||
|
bulkEventElement = eventData.elementID; |
||||
|
} |
||||
|
|
||||
|
if(eventData.eventType === 'OnDrag') { |
||||
|
|
||||
|
lastEvent = lastBulkEvent[eventData.eventType]; |
||||
|
|
||||
|
if (lastEvent) { |
||||
|
// this is the second or third or whatever onmousemove in a row
|
||||
|
lastBulkData = lastEvent.eventInfo.mousePositions; |
||||
|
lastBulkData[lastBulkData.length] = { |
||||
|
dragInfo: eventData.eventInfo.dragInfo, |
||||
|
timeStamp: eventData.timeStamp |
||||
|
}; |
||||
|
} else { |
||||
|
eventData.eventInfo.mousePositions = []; |
||||
|
eventData.eventInfo.mousePositions[0] = { |
||||
|
dragInfo: eventData.eventInfo.dragInfo, |
||||
|
timeStamp: eventData.timeStamp |
||||
|
}; |
||||
|
eventList[eventList.length] = eventData; |
||||
|
lastBulkEvent[eventData.eventType] = eventData; |
||||
|
} |
||||
|
} |
||||
|
// if(eventData.eventType === 'OnKeyUp') {
|
||||
|
// transmissionFields.eventInfo = eventData.eventInfo;
|
||||
|
// $.ajax({
|
||||
|
// type: "POST",
|
||||
|
// url: '/RecordController/LogMouseClick',
|
||||
|
// data: transmissionFields,
|
||||
|
// });
|
||||
|
// }
|
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
var _recordClick = function(event) { |
||||
|
$('#recordButton').addClass('recordPlayButtonSelected'); |
||||
|
recordingIndex++; |
||||
|
// $axure.recording.startRecord();
|
||||
|
|
||||
|
recordingStartTime = new Date().getTime(); |
||||
|
|
||||
|
$.ajax({ |
||||
|
type: "POST", |
||||
|
url: '/RecordController/CreateRecording', |
||||
|
data: { |
||||
|
'recordingName': generateRecordingName(), |
||||
|
timeStamp: recordingStartTime |
||||
|
}, |
||||
|
success: function(response) { |
||||
|
recordingId = response.recordingId; |
||||
|
recordingName = response.recordingName; |
||||
|
$axure.messageCenter.postMessage('startRecording', {'recordingId' : recordingId, 'recordingName': recordingName}); |
||||
|
}, |
||||
|
// dataType: 'json'
|
||||
|
}); |
||||
|
|
||||
|
}; |
||||
|
|
||||
|
var _playClick = function(event) { |
||||
|
$('#playButton').addClass('recordPlayButtonSelected'); |
||||
|
}; |
||||
|
|
||||
|
var _stopClick = function(event) { |
||||
|
var axRecording, axObjectDictionary, axRecordingContainer, transmissionFields; |
||||
|
$('#sitemapLinksContainer').toggle(); |
||||
|
if($('#recordButton').is('.recordPlayButtonSelected')) { |
||||
|
$('#recordButton').removeClass('recordPlayButtonSelected'); |
||||
|
// $axure.recording.stopRecord();
|
||||
|
|
||||
|
axRecording = { |
||||
|
'recordingId' : recordingId, |
||||
|
'recordingName': recordingName, |
||||
|
'eventList': eventList |
||||
|
}; |
||||
|
|
||||
|
axRecordingList[axRecordingList.length] = axRecording; |
||||
|
axRecordingContainer = $('#recordingContainer').find('li').filter('.recordingRootNode'); |
||||
|
axRecordingContainer.append(_formAxRecordingBranch(axRecording)); |
||||
|
_attachEventTriggers(axRecording); |
||||
|
|
||||
|
lastBulkEvent = {}; |
||||
|
|
||||
|
var recordingStepList = []; |
||||
|
|
||||
|
for(var eventListIdx in eventList) { |
||||
|
var eventListItem = eventList[eventListIdx]; |
||||
|
|
||||
|
if(eventListItem.eventType === 'OnDrag') { |
||||
|
var lastDrag = eventListItem.eventInfo.mousePositions[eventListItem.eventInfo.mousePositions.length - 1].dragInfo; |
||||
|
eventListItem.eventInfo.dragInfo.currentX = lastDrag.currentX; |
||||
|
eventListItem.eventInfo.dragInfo.currentY = lastDrag.currentY; |
||||
|
eventListItem.eventInfo.dragInfo.currentTime = lastDrag.currentTime; |
||||
|
eventListItem.eventInfo.dragInfo.xDelta = eventListItem.eventInfo.dragInfo.currentX - eventListItem.eventInfo.dragInfo.lastX; |
||||
|
eventListItem.eventInfo.dragInfo.yDelta = eventListItem.eventInfo.dragInfo.currentY - eventListItem.eventInfo.dragInfo.lastY; |
||||
|
transmissionFields = {}; |
||||
|
transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']); |
||||
|
transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['dragInfo']); |
||||
|
transmissionFields.recordingId = recordingId; |
||||
|
} |
||||
|
|
||||
|
if(isSingleMouse(eventListItem.eventType)) { |
||||
|
transmissionFields = {}; |
||||
|
transmissionFields = tackItOn(transmissionFields, eventListItem, ['timeStamp', 'eventType', 'elementID', 'path']); |
||||
|
transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['cursor']); |
||||
|
transmissionFields.recordingId = recordingId; |
||||
|
} |
||||
|
|
||||
|
if(isBulkMouse(eventListItem.eventType)) { |
||||
|
transmissionFields = {}; |
||||
|
transmissionFields = tackItOn(transmissionFields, eventListItem, ['eventType', 'elementID', 'path']); |
||||
|
transmissionFields = tackItOn(transmissionFields, eventListItem.eventInfo, ['mousePositions']); |
||||
|
transmissionFields.recordingId = recordingId; |
||||
|
} |
||||
|
recordingStepList[recordingStepList.length] = transmissionFields; |
||||
|
} |
||||
|
|
||||
|
eventList = []; |
||||
|
$axure.messageCenter.postMessage('stopRecording', axObjectDictionary); |
||||
|
|
||||
|
var jsonText = { |
||||
|
'recordingName': recordingName, |
||||
|
'recordingId': recordingId, |
||||
|
recordingStart: new Date().getTime(), |
||||
|
recordingEnd: recordingStartTime, |
||||
|
'eventList': recordingStepList |
||||
|
}; |
||||
|
|
||||
|
$.ajax({ |
||||
|
type: "POST", |
||||
|
url: '/RecordController/StopRecording', |
||||
|
data: { 'jsonText': JSON.stringify(jsonText) } |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
if($('#playButton').is('.recordPlayButtonSelected')) { |
||||
|
$('#playButton').removeClass('recordPlayButtonSelected'); |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var _deleteClick = function(event) { |
||||
|
$.ajax({ |
||||
|
type: "POST", |
||||
|
url: '/RecordController/DeleteRecordings', |
||||
|
success: function(response) { |
||||
|
var x = true; |
||||
|
}, // dataType: 'json'
|
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
var tackItOn = function(destination, source, fields) { |
||||
|
|
||||
|
for(var idx in fields) { |
||||
|
destination[fields[idx]] = source[fields[idx]]; |
||||
|
} |
||||
|
return destination; |
||||
|
}; |
||||
|
|
||||
|
var makeFirstLetterLower = function(eventName) { |
||||
|
return eventName.substr(0, 1).toLowerCase() + eventName.substr(1); |
||||
|
}; |
||||
|
|
||||
|
var _attachEventTriggers = function(axRecording) { |
||||
|
for(var eventIdx in axRecording.eventList) { |
||||
|
var eventObject = axRecording.eventList[eventIdx]; |
||||
|
var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp; |
||||
|
currentEvent = eventID; |
||||
|
$('#' + eventID).click(_triggerEvent(axRecording['recordingId'], eventObject.timeStamp)); |
||||
|
// $('#' + eventID).click(event.trigger);
|
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var _formAxRecordingBranch = function(axRecording) { |
||||
|
var eventObject, eventID, RDOID; |
||||
|
var recordPlayUi = '<ul class="recordingTree">'; |
||||
|
recordPlayUi += "<li class='recordingNode recordingExpandableNode'>"; |
||||
|
recordPlayUi += '<div class="recordingContainer" style="margin-left:15px">'; |
||||
|
recordPlayUi += '<a class="recordingPlusMinusLink"><span class="recordingMinus"></span></a>'; |
||||
|
recordPlayUi += '<a class="recordingPageLink" nodeurl="home.html">'; |
||||
|
recordPlayUi += '<span class="recordingPageIcon"></span>'; |
||||
|
recordPlayUi += '<span class="recordingPageName">' + axRecording['recordingName'] + '</span>'; |
||||
|
recordPlayUi += '</a>'; |
||||
|
|
||||
|
recordPlayUi += '<ul>'; |
||||
|
|
||||
|
for(eventID in axRecording.eventList) { |
||||
|
|
||||
|
eventObject = axRecording.eventList[eventID]; |
||||
|
|
||||
|
recordPlayUi += '<li class="recordingNode recordingLeafNode">'; |
||||
|
recordPlayUi += '<div class="recordingEventContainer" style="margin-left:44px">'; |
||||
|
var eventID = axRecording['recordingId'] + '_' + eventObject.timeStamp; |
||||
|
recordPlayUi += '<a id="' + eventID + '" class="sitemapPageLink">'; |
||||
|
recordPlayUi += 'Event ID: ' + eventID + '<br/>'; |
||||
|
|
||||
|
recordPlayUi += '<span class="sitemapPageIcon"></span>'; |
||||
|
recordPlayUi += '<span class="sitemapPageName">'; |
||||
|
|
||||
|
recordPlayUi += 'elementID: ' + eventObject.elementID + '<br/>'; |
||||
|
recordPlayUi += 'eventType: ' + eventObject.eventType + '<br/>'; |
||||
|
// recordPlayUi += 'cursor: ' + eventObject.eventInfo.cursor.x + ',' + eventObject.eventInfo.cursor.y + '<br/>';
|
||||
|
|
||||
|
for(RDOID in eventObject.path) { |
||||
|
recordPlayUi += '/' + eventObject.path[RDOID]; |
||||
|
} |
||||
|
recordPlayUi += '<br/>'; |
||||
|
recordPlayUi += '</span>'; |
||||
|
recordPlayUi += '</a>'; |
||||
|
recordPlayUi += '</div>'; |
||||
|
recordPlayUi += '</li>'; |
||||
|
} |
||||
|
|
||||
|
recordPlayUi += '</ul>'; |
||||
|
|
||||
|
recordPlayUi += '</div>'; |
||||
|
|
||||
|
recordPlayUi += "</li>"; |
||||
|
recordPlayUi += "</ul>"; |
||||
|
|
||||
|
return recordPlayUi; |
||||
|
}; |
||||
|
|
||||
|
var currentEvent = ''; |
||||
|
|
||||
|
var _triggerEvent = function(axRecording, timeStamp) { |
||||
|
// $axure.messageCenter.postMessage('triggerEvent', false);
|
||||
|
|
||||
|
|
||||
|
for(var axRecordingIdx in axRecordingList) { |
||||
|
if(axRecordingList[axRecordingIdx].recordingId === axRecording) { |
||||
|
for(var eventIdx in axRecordingList[axRecordingIdx].eventList) { |
||||
|
if(axRecordingList[axRecordingIdx].eventList[eventIdx].timeStamp === timeStamp) { |
||||
|
|
||||
|
var thisEvent = axRecordingList[axRecordingIdx].eventList[eventIdx]; |
||||
|
// thisEvent.trigger();
|
||||
|
|
||||
|
var thisEventInfo, lowerEventType; |
||||
|
lowerEventType = thisEvent.eventType.toLowerCase(); |
||||
|
if(lowerEventType === 'onclick' || lowerEventType === 'onmousein') { |
||||
|
thisEventInfo = {}; |
||||
|
thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['cursor', 'timeStamp', 'srcElement']); |
||||
|
if(thisEvent.eventInfo.inputType) { |
||||
|
thisEventInfo = tackItOn(thisEventInfo, thisEvent.eventInfo, ['inputType', 'inputValue']); |
||||
|
} |
||||
|
} else { |
||||
|
thisEventInfo = thisEvent.eventInfo; |
||||
|
} |
||||
|
|
||||
|
var thisParameters = { |
||||
|
'element': thisEvent.elementID, |
||||
|
'eventInfo': thisEventInfo, |
||||
|
// 'axEventObject': thisEvent.eventObject,
|
||||
|
'eventType': thisEvent.eventType |
||||
|
}; |
||||
|
|
||||
|
return function() { |
||||
|
$axure.messageCenter.postMessage('playEvent', thisParameters); |
||||
|
}; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var _generateRecordPlay = function() { |
||||
|
var recordPlayUi = "<div id='recordPlayContainer'>"; |
||||
|
|
||||
|
recordPlayUi += "<div id='recordPlayToolbar'>"; |
||||
|
|
||||
|
recordPlayUi += "<div style='height:30px;'>"; |
||||
|
|
||||
|
recordPlayUi += "<a id='recordButton' title='Start a Recording' class='recordPlayButton'></a>"; |
||||
|
recordPlayUi += "<a id='playButton' title='Play Back a Recording' class='recordPlayButton'></a>"; |
||||
|
recordPlayUi += "<a id='stopButton' title='Stop' class='recordPlayButton'></a>"; |
||||
|
recordPlayUi += "<a id='deleteButton' title='Delete All Recordings' class='recordPlayButton'></a>"; |
||||
|
recordPlayUi += "</div>"; |
||||
|
|
||||
|
recordPlayUi += "<div id='recordingContainer'><li class='recordingNode recordingRootNode'></li></div>"; |
||||
|
recordPlayUi += "</div>"; |
||||
|
|
||||
|
$('#recordPlayHost').html(recordPlayUi); |
||||
|
}; |
||||
|
|
||||
|
})(); |
@ -0,0 +1,90 @@ |
|||||
|
#recordPlayHost { |
||||
|
font-size: 12px; |
||||
|
color:#333; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
#recordPlayContainer |
||||
|
{ |
||||
|
overflow: auto; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
padding: 10px 10px 10px 10px; |
||||
|
} |
||||
|
|
||||
|
#recordPlayToolbar |
||||
|
{ |
||||
|
margin: 5px 5px 5px 5px; |
||||
|
height: 22px; |
||||
|
} |
||||
|
|
||||
|
#recordPlayToolbar .recordPlayButton |
||||
|
{ |
||||
|
float: left; |
||||
|
width: 22px; |
||||
|
height: 22px; |
||||
|
border: 1px solid transparent; |
||||
|
} |
||||
|
|
||||
|
#recordPlayToolbar .recordPlayButton:hover |
||||
|
{ |
||||
|
border: 1px solid rgb(0,157,217); |
||||
|
background-color : rgb(166,221,242); |
||||
|
} |
||||
|
|
||||
|
#recordPlayToolbar .recordPlayButton:active |
||||
|
{ |
||||
|
border: 1px solid rgb(0,157,217); |
||||
|
background-color : rgb(204,235,248); |
||||
|
} |
||||
|
|
||||
|
#recordPlayToolbar .recordPlayButtonSelected { |
||||
|
border: 1px solid rgb(0,157,217); |
||||
|
background-color : rgb(204,235,248); |
||||
|
} |
||||
|
|
||||
|
/* removed images */ |
||||
|
/*#recordButton { |
||||
|
background: url('../../sitemap/styles/images/233_hyperlink_16.png') no-repeat center center; |
||||
|
} |
||||
|
|
||||
|
#playButton { |
||||
|
background: url('../../sitemap/styles/images/225_responsive_16.png') no-repeat center center; |
||||
|
} |
||||
|
|
||||
|
#stopButton { |
||||
|
background: url('../../sitemap/styles/images/228_togglenotes_16.png') no-repeat center center; |
||||
|
} |
||||
|
|
||||
|
#deleteButton { |
||||
|
background: url('../../sitemap/styles/images/231_event_16.png') no-repeat center center; |
||||
|
}*/ |
||||
|
|
||||
|
#recordNameHeader |
||||
|
{ |
||||
|
/* yeah??*/ |
||||
|
font-size: 13px; |
||||
|
font-weight: bold; |
||||
|
height: 23px; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
#recordPlayContent |
||||
|
{ |
||||
|
/* yeah??*/ |
||||
|
overflow: visible; |
||||
|
} |
||||
|
|
||||
|
.recordPlayName |
||||
|
{ |
||||
|
font-size: 12px; |
||||
|
margin-bottom: 5px; |
||||
|
text-decoration: underline; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
.recordPlay |
||||
|
{ |
||||
|
margin-bottom: 10px; |
||||
|
} |
@ -0,0 +1,562 @@ |
|||||
|
var currentNodeUrl = ''; |
||||
|
var allNodeUrls = []; |
||||
|
|
||||
|
var openNextPage = $axure.player.openNextPage = function () { |
||||
|
var index = allNodeUrls.indexOf(currentNodeUrl) + 1; |
||||
|
if(index >= allNodeUrls.length) return; |
||||
|
var nextNodeUrl = allNodeUrls[index]; |
||||
|
currentNodeUrl = nextNodeUrl; |
||||
|
$('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').parent().mousedown(); |
||||
|
}; |
||||
|
|
||||
|
var openPreviousPage = $axure.player.openPreviousPage = function () { |
||||
|
var index = allNodeUrls.indexOf(currentNodeUrl) - 1; |
||||
|
if(index < 0) return; |
||||
|
var nextNodeUrl = allNodeUrls[index]; |
||||
|
currentNodeUrl = nextNodeUrl; |
||||
|
$('.sitemapPageLink[nodeUrl="' + nextNodeUrl + '"]').parent().mousedown(); |
||||
|
}; |
||||
|
|
||||
|
// use this to isolate the scope
|
||||
|
(function() { |
||||
|
|
||||
|
var SHOW_HIDE_ANIMATION_DURATION = 0; |
||||
|
|
||||
|
var HIGHLIGHT_INTERACTIVE_VAR_NAME = 'hi'; |
||||
|
|
||||
|
var currentPageLoc = ''; |
||||
|
var currentPlayerLoc = ''; |
||||
|
var currentPageHashString = ''; |
||||
|
|
||||
|
$(window.document).ready(function() { |
||||
|
$axure.player.createPluginHost({ |
||||
|
id: 'sitemapHost', |
||||
|
context: 'project', |
||||
|
title: 'Project Pages', |
||||
|
gid: 1, |
||||
|
}); |
||||
|
|
||||
|
$(window.document).bind('keyup', function (e) { |
||||
|
if (e.target.localName == "textarea" || e.target.localName == "input" || event.target.isContentEditable) return; |
||||
|
switch(e.which) { |
||||
|
case 188: |
||||
|
openPreviousPage(); |
||||
|
break; |
||||
|
case 190: |
||||
|
openNextPage(); |
||||
|
break; |
||||
|
default: return; // exit this handler for other keys
|
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
generateSitemap(); |
||||
|
var pageCount = $('.sitemapPageLink').length; |
||||
|
|
||||
|
$('.leftArrow').click(openPreviousPage); |
||||
|
$('.rightArrow').click(openNextPage); |
||||
|
|
||||
|
$('.sitemapPlusMinusLink').click(collapse_click); |
||||
|
$('.sitemapPageLink').parent().mousedown(node_click); |
||||
|
|
||||
|
$('#interfaceAdaptiveViewsListContainer').hide(); |
||||
|
|
||||
|
$('#projectOptionsShowHotspots').click(showHotspots_click); |
||||
|
$('#searchIcon').click(searchBoxClose_click); |
||||
|
$('#searchDiv').click(searchBoxExpand_click); |
||||
|
$('#searchBox').keyup(search_input_keyup); |
||||
|
|
||||
|
// bind to the page load
|
||||
|
$axure.page.bind('load.sitemap', function() { |
||||
|
currentPageLoc = $axure.page.location.split("#")[0]; |
||||
|
var decodedPageLoc = decodeURI(currentPageLoc); |
||||
|
currentNodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/') ? decodedPageLoc.lastIndexOf('/') + 1 : 0); |
||||
|
currentPlayerLoc = $(location).attr('href').split("#")[0].split("?")[0]; |
||||
|
currentPageHashString = '#p=' + currentNodeUrl.substr(0, currentNodeUrl.lastIndexOf('.')); |
||||
|
|
||||
|
$axure.player.setVarInCurrentUrlHash(PAGE_ID_NAME, $axure.player.getPageIdByUrl(currentNodeUrl)); |
||||
|
$axure.player.setVarInCurrentUrlHash(PAGE_URL_NAME, currentNodeUrl.substring(0, currentNodeUrl.lastIndexOf('.html'))); |
||||
|
|
||||
|
$('#sitemapTreeContainer').find('.sitemapHighlight').removeClass('sitemapHighlight'); |
||||
|
var $currentNode = $('.sitemapPageLink[nodeUrl="' + currentNodeUrl + '"]'); |
||||
|
$currentNode.parent().parent().addClass('sitemapHighlight'); |
||||
|
|
||||
|
var pageName = $axure.page.pageName; |
||||
|
$('.pageNameHeader').html(pageName); |
||||
|
|
||||
|
if ($currentNode.length > 0 && pageCount > 1) { |
||||
|
var currentNode = $currentNode[0]; |
||||
|
var currentNum = $('.sitemapPageLink').index(currentNode) + 1; |
||||
|
$('.pageCountHeader').html('(' + currentNum + ' of ' + pageCount + ')'); |
||||
|
} else $('.pageCountHeader').html(''); |
||||
|
|
||||
|
//If highlight var is present and set to 1 or else if
|
||||
|
//sitemap highlight button is selected then highlight interactive elements
|
||||
|
var hiVal = $axure.player.getHashStringVar(HIGHLIGHT_INTERACTIVE_VAR_NAME); |
||||
|
if(hiVal.length > 0 && hiVal == 1) { |
||||
|
$('#showHotspotsOption').find('.overflowOptionCheckbox').addClass('selected'); |
||||
|
if ($('#projectOptionsHotspotsCheckbox').length > 0) $('#projectOptionsHotspotsCheckbox').addClass('selected'); |
||||
|
$axure.messageCenter.postMessage('highlightInteractive', true); |
||||
|
} else if ($('#showHotspotsOption').find('.overflowOptionCheckbox').hasClass('selected')) { |
||||
|
$axure.messageCenter.postMessage('highlightInteractive', true); |
||||
|
} |
||||
|
|
||||
|
generateAdaptiveViews(false); |
||||
|
if (MOBILE_DEVICE) generateAdaptiveViews(true); |
||||
|
|
||||
|
$axure.player.suspendRefreshViewPort = true; |
||||
|
|
||||
|
//Set the current view if it is defined in the hash string
|
||||
|
//If the view is invalid, set it to 'auto' in the string
|
||||
|
//ELSE set the view based on the currently selected view in the toolbar menu
|
||||
|
var viewStr = $axure.player.getHashStringVar(ADAPTIVE_VIEW_VAR_NAME); |
||||
|
if(viewStr.length > 0) { |
||||
|
var $view = $('.adaptiveViewOption[val="' + viewStr + '"]'); |
||||
|
if($view.length > 0) $view.click(); |
||||
|
else $('.adaptiveViewOption[val="auto"]').click(); |
||||
|
} else if($('.selectedRadioButton').length > 0) { |
||||
|
var $viewOption = $('.selectedRadioButton').parents('.adaptiveViewOption'); |
||||
|
$viewOption.click(); |
||||
|
} |
||||
|
updateAdaptiveViewHeader(); |
||||
|
|
||||
|
function setDefaultScaleForDevice() { |
||||
|
if(MOBILE_DEVICE && $axure.player.isMobileMode()) { |
||||
|
$('.projectOptionsScaleRow[val="0"]').click(); |
||||
|
} else { |
||||
|
$('.vpScaleOption[val="0"]').click(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var scaleStr = $axure.player.getHashStringVar(SCALE_VAR_NAME); |
||||
|
if(scaleStr.length > 0) { |
||||
|
var $scale = $('.vpScaleOption[val="' + scaleStr + '"]'); |
||||
|
if($scale.length > 0) $scale.click(); |
||||
|
else setDefaultScaleForDevice(); |
||||
|
} else { |
||||
|
setDefaultScaleForDevice(); |
||||
|
} |
||||
|
|
||||
|
var rotateStr = $axure.player.getHashStringVar(ROT_VAR_NAME); |
||||
|
if(rotateStr.length > 0) { |
||||
|
$('#vpRotate').prop('checked', true); |
||||
|
} |
||||
|
|
||||
|
$axure.player.suspendRefreshViewPort = false; |
||||
|
|
||||
|
if (!$axure.player.isViewOverridden()) $axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() }); |
||||
|
|
||||
|
$axure.player.refreshViewPort(); |
||||
|
|
||||
|
$axure.messageCenter.postMessage('finishInit'); |
||||
|
|
||||
|
showMainPanel(); |
||||
|
return false; |
||||
|
}); |
||||
|
|
||||
|
var $vpContainer = $('#interfaceScaleListContainer'); |
||||
|
|
||||
|
var scaleOptions = '<div class="vpScaleOption" val="0"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Default Scale</div>'; |
||||
|
scaleOptions += '<div class="vpScaleOption" val="1"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Scale to Width</div>'; |
||||
|
scaleOptions += '<div class="vpScaleOption" val="2"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Scale to Fit</div>'; |
||||
|
$(scaleOptions).appendTo($vpContainer); |
||||
|
|
||||
|
$('#overflowMenuContainer').append('<div id="showHotspotsOption" class="showOption" style="order: 1"><div class="overflowOptionCheckbox"></div>Show Hotspots</div>'); |
||||
|
$('#overflowMenuContainer').append($vpContainer); |
||||
|
$vpContainer.show(); |
||||
|
|
||||
|
$('#showHotspotsOption').click(showHotspots_click); |
||||
|
$('.vpScaleOption').click(vpScaleOption_click); |
||||
|
$('.vpScaleOption').mouseup(function (event) { |
||||
|
event.stopPropagation(); |
||||
|
}); |
||||
|
|
||||
|
if (MOBILE_DEVICE) { |
||||
|
var scaleOptions = '<div class="projectOptionsScaleRow" val="1"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Scale to fit width</div>'; |
||||
|
scaleOptions += '<div class="projectOptionsScaleRow" val="0"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Original size (100%)</div>'; |
||||
|
scaleOptions += '<div class="projectOptionsScaleRow" val="2" style="border-bottom: solid 1px #c7c7c7"><div class="scaleRadioButton"><div class="selectedRadioButtonFill"></div></div>Fit all to screen</div>'; |
||||
|
$(scaleOptions).appendTo($('#projectOptionsScaleContainer')); |
||||
|
|
||||
|
$('.projectOptionsScaleRow').click(vpScaleOption_click); |
||||
|
} |
||||
|
|
||||
|
$('#searchBox').focusin(function() { |
||||
|
if($(this).is('.searchBoxHint')) { |
||||
|
$(this).val(''); |
||||
|
$(this).removeClass('searchBoxHint'); |
||||
|
} |
||||
|
}).focusout(function() { |
||||
|
if($(this).val() == '') { |
||||
|
$(this).addClass('searchBoxHint'); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
$('#searchBox').focusout(); |
||||
|
}); |
||||
|
|
||||
|
var _formatViewDimension = function(dim) { |
||||
|
if(dim == 0) return 'any'; |
||||
|
if(dim.toString().includes('.')) return dim.toFixed(2); |
||||
|
return dim; |
||||
|
}; |
||||
|
|
||||
|
function generateAdaptiveViews(forProjectOptions) { |
||||
|
var $container = forProjectOptions ? $('#projectOptionsAdaptiveViewsContainer') : $('#interfaceAdaptiveViewsListContainer'); |
||||
|
var $viewSelect = forProjectOptions ? $('#projectOptionsViewSelect') : $('#viewSelect'); |
||||
|
var adaptiveViewOptionClass = forProjectOptions ? 'projectOptionsAdaptiveViewRow' : 'adaptiveViewOption'; |
||||
|
var currentViewClass = forProjectOptions ? '' : 'currentAdaptiveView'; |
||||
|
|
||||
|
$container.empty(); |
||||
|
$viewSelect.empty(); |
||||
|
|
||||
|
//Fill out adaptive view container with prototype's defined adaptive views, as well as the default, and Auto
|
||||
|
var viewsList = '<div class="' + adaptiveViewOptionClass + '" val="auto"><div class="adapViewRadioButton selectedRadioButton"><div class="selectedRadioButtonFill"></div></div>Adaptive</div>'; |
||||
|
var viewSelect = '<option value="auto">Adaptive</option>'; |
||||
|
if (typeof $axure.page.defaultAdaptiveView.name != 'undefined') { |
||||
|
//If the name is a blank string, make the view name the width if non-zero, else 'any'
|
||||
|
var defaultView = $axure.page.defaultAdaptiveView; |
||||
|
var defaultViewName = defaultView.name; |
||||
|
|
||||
|
var widthString = _formatViewDimension(defaultView.size.width); |
||||
|
var heightString = _formatViewDimension(defaultView.size.height); |
||||
|
|
||||
|
var viewString = defaultViewName + ' (' + widthString + ' x ' + heightString + ')'; |
||||
|
|
||||
|
viewsList += '<div class="' + adaptiveViewOptionClass + ' ' + currentViewClass + '" val="default"data-dim="' + defaultView.size.width + 'x' + defaultView.size.height + '">' + |
||||
|
'<div class="adapViewRadioButton"><div class="selectedRadioButtonFill"></div></div>' + viewString + '</div>'; |
||||
|
viewSelect += '<option value="default">' + viewString + '</option>'; |
||||
|
} |
||||
|
|
||||
|
var useViews = $axure.document.configuration.useViews; |
||||
|
var hasViews = false; |
||||
|
if(useViews) { |
||||
|
for(var viewIndex = 0; viewIndex < $axure.page.adaptiveViews.length; viewIndex++) { |
||||
|
var currView = $axure.page.adaptiveViews[viewIndex]; |
||||
|
|
||||
|
var widthString = _formatViewDimension(currView.size.width); |
||||
|
var heightString = _formatViewDimension(currView.size.height); |
||||
|
|
||||
|
var viewString = currView.name + ' (' + widthString + ' x ' + heightString + ')'; |
||||
|
viewsList += '<div class="' + adaptiveViewOptionClass + |
||||
|
((forProjectOptions && (viewIndex == $axure.page.adaptiveViews.length - 1)) ? '" style="border-bottom: solid 1px #c7c7c7; margin-bottom: 15px;' : '') + |
||||
|
'" val="' + |
||||
|
currView.id + |
||||
|
'" data-dim="' + |
||||
|
currView.size.width + |
||||
|
'x' + |
||||
|
currView.size.height + |
||||
|
'"><div class="adapViewRadioButton"><div class="selectedRadioButtonFill"></div></div>' + |
||||
|
viewString + |
||||
|
'</div>'; |
||||
|
viewSelect += '<option value="' + currView.id + '">' + viewString + '</option>'; |
||||
|
|
||||
|
hasViews = true; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$container.append(viewsList); |
||||
|
$viewSelect.append(viewSelect); |
||||
|
|
||||
|
if (!hasViews) { |
||||
|
if (forProjectOptions) { |
||||
|
$('#projectOptionsAdaptiveViewsHeader').hide(); |
||||
|
$('#projectOptionsAdaptiveViewsContainer').hide(); |
||||
|
} else $('#interfaceAdaptiveViewsContainer').hide(); |
||||
|
} else { |
||||
|
if (forProjectOptions) { |
||||
|
$('#projectOptionsAdaptiveViewsHeader').show(); |
||||
|
$('#projectOptionsAdaptiveViewsContainer').show(); |
||||
|
} else $('#interfaceAdaptiveViewsContainer').show(); |
||||
|
} |
||||
|
|
||||
|
$(('.' + adaptiveViewOptionClass)).click(adaptiveViewOption_click); |
||||
|
|
||||
|
if (!forProjectOptions) { |
||||
|
$(('.' + adaptiveViewOptionClass)).mouseup(function (event) { |
||||
|
event.stopPropagation(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function collapse_click(event) { |
||||
|
if($(this).children('.sitemapPlus').length > 0) { |
||||
|
expand_click($(this)); |
||||
|
} else { |
||||
|
$(this) |
||||
|
.children('.sitemapMinus').removeClass('sitemapMinus').addClass('sitemapPlus').end() |
||||
|
.closest('li').children('ul').hide(SHOW_HIDE_ANIMATION_DURATION); |
||||
|
} |
||||
|
event.stopPropagation(); |
||||
|
} |
||||
|
|
||||
|
function expand_click($this) { |
||||
|
$this |
||||
|
.children('.sitemapPlus').removeClass('sitemapPlus').addClass('sitemapMinus').end() |
||||
|
.closest('li').children('ul').show(SHOW_HIDE_ANIMATION_DURATION); |
||||
|
} |
||||
|
|
||||
|
function searchBoxExpand_click(event) { |
||||
|
if (!$('#searchIcon').hasClass('sitemapToolbarButtonSelected')) { |
||||
|
$('#searchIcon').addClass('sitemapToolbarButtonSelected') |
||||
|
$('#searchBox').width(0); |
||||
|
$('#searchBox').show(); |
||||
|
$('#searchBox').animate({ width: '95%' }, { duration: 200, complete: function () { $('#searchBox').focus(); } }); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function searchBoxClose_click(event) { |
||||
|
if ($('#searchIcon').hasClass('sitemapToolbarButtonSelected')) { |
||||
|
$('#searchBox').animate({ width: '0%' }, { duration: 200, |
||||
|
complete: function () { |
||||
|
$('#searchBox').hide(); |
||||
|
$('#searchIcon').removeClass('sitemapToolbarButtonSelected') |
||||
|
}}); |
||||
|
$('#searchBox').val(''); |
||||
|
$('#searchBox').keyup(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function node_click(event) { |
||||
|
hideMainPanel(); |
||||
|
$('#sitemapTreeContainer').find('.sitemapHighlight').removeClass('sitemapHighlight'); |
||||
|
$(this).parent().addClass('sitemapHighlight'); |
||||
|
$axure.page.navigate($(this).children('.sitemapPageLink')[0].getAttribute('nodeUrl'), true); |
||||
|
} |
||||
|
|
||||
|
function hideMainPanel() { |
||||
|
$('#mainPanel').css('opacity', '0'); |
||||
|
$('#clippingBounds').css('opacity', '0'); |
||||
|
} |
||||
|
function showMainPanel() { |
||||
|
$('#mainPanel').animate({ opacity: 1 }, 10); |
||||
|
$('#clippingBounds').animate({ opacity: 1 }, 10); |
||||
|
} |
||||
|
|
||||
|
$axure.messageCenter.addMessageListener(function(message, data) { |
||||
|
if(message == 'adaptiveViewChange') { |
||||
|
$('.adaptiveViewOption').removeClass('currentAdaptiveView'); |
||||
|
if(data.viewId) {$('.adaptiveViewOption[val="' + data.viewId + '"]').addClass('currentAdaptiveView');} |
||||
|
else $('.adaptiveViewOption[val="default"]').addClass('currentAdaptiveView'); |
||||
|
|
||||
|
//when we set adaptive view through user event, we want to update the checkmark on sitemap
|
||||
|
if(data.forceSwitchTo) { |
||||
|
$('.adapViewRadioButton').find('.selectedRadioButtonFill').hide(); |
||||
|
$('.adapViewRadioButton').removeClass('selectedRadioButton'); |
||||
|
$('div[val="' + data.forceSwitchTo + '"]').find('.adapViewRadioButton').addClass('selectedRadioButton'); |
||||
|
$('div[val="' + data.forceSwitchTo + '"]').find('.selectedRadioButtonFill').show(); |
||||
|
} |
||||
|
|
||||
|
updateAdaptiveViewHeader(); |
||||
|
$axure.player.refreshViewPort(); |
||||
|
|
||||
|
} else if(message == 'previousPage') { |
||||
|
openPreviousPage(); |
||||
|
} else if(message == 'nextPage') { |
||||
|
openNextPage(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
$axure.player.toggleHotspots = function (val) { |
||||
|
var overflowMenuCheckbox = $('#showHotspotsOption').find('.overflowOptionCheckbox'); |
||||
|
if ($(overflowMenuCheckbox).hasClass('selected')) { |
||||
|
if (!val) $('#showHotspotsOption').click(); |
||||
|
} else { |
||||
|
if (val) $('#showHotspotsOption').click(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function showHotspots_click(event) { |
||||
|
var overflowMenuCheckbox = $('#showHotspotsOption').find('.overflowOptionCheckbox'); |
||||
|
var projOptionsCheckbox = $('#projectOptionsHotspotsCheckbox'); |
||||
|
|
||||
|
if ($(overflowMenuCheckbox).hasClass('selected')) { |
||||
|
overflowMenuCheckbox.removeClass('selected'); |
||||
|
if (projOptionsCheckbox.length > 0 ) projOptionsCheckbox.removeClass('selected'); |
||||
|
$axure.messageCenter.postMessage('highlightInteractive', false); |
||||
|
//Delete 'hi' hash string var if it exists since default is unselected
|
||||
|
$axure.player.deleteVarFromCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME); |
||||
|
} else { |
||||
|
overflowMenuCheckbox.addClass('selected'); |
||||
|
if (projOptionsCheckbox.length > 0) projOptionsCheckbox.addClass('selected'); |
||||
|
$axure.messageCenter.postMessage('highlightInteractive', true); |
||||
|
//Add 'hi' hash string var so that stay highlighted across reloads
|
||||
|
$axure.player.setVarInCurrentUrlHash(HIGHLIGHT_INTERACTIVE_VAR_NAME, 1); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function adaptiveViewOption_click(event) { |
||||
|
var currVal = $(this).attr('val'); |
||||
|
|
||||
|
$('.adaptiveViewOption').removeClass('currentAdaptiveView'); |
||||
|
if(currVal) {$('.adaptiveViewOption[val="' + currVal + '"]').addClass('currentAdaptiveView');} |
||||
|
else $('.adaptiveViewOption[val="default"]').addClass('currentAdaptiveView'); |
||||
|
|
||||
|
$('.adapViewRadioButton').find('.selectedRadioButtonFill').hide(); |
||||
|
$('.adapViewRadioButton').removeClass('selectedRadioButton'); |
||||
|
$('div[val="' + currVal + '"]').find('.adapViewRadioButton').addClass('selectedRadioButton'); |
||||
|
$('div[val="' + currVal + '"]').find('.selectedRadioButtonFill').show(); |
||||
|
|
||||
|
selectAdaptiveView(currVal); |
||||
|
$axure.player.closePopup(); |
||||
|
updateAdaptiveViewHeader(); |
||||
|
} |
||||
|
|
||||
|
var selectAdaptiveView = $axure.player.selectAdaptiveView = function(currVal) { |
||||
|
if (currVal == 'auto') { |
||||
|
$axure.messageCenter.postMessage('setAdaptiveViewForSize', { 'width': $('#mainPanel').width(), 'height': $('#mainPanel').height() }); |
||||
|
$axure.player.deleteVarFromCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME); |
||||
|
} else { |
||||
|
currentPageLoc = $axure.page.location.split("#")[0]; |
||||
|
var decodedPageLoc = decodeURI(currentPageLoc); |
||||
|
var nodeUrl = decodedPageLoc.substr(decodedPageLoc.lastIndexOf('/') |
||||
|
? decodedPageLoc.lastIndexOf('/') + 1 |
||||
|
: 0); |
||||
|
var adaptiveData = { |
||||
|
src: nodeUrl |
||||
|
}; |
||||
|
|
||||
|
adaptiveData.view = currVal; |
||||
|
$axure.messageCenter.postMessage('switchAdaptiveView', adaptiveData); |
||||
|
$axure.player.setVarInCurrentUrlHash(ADAPTIVE_VIEW_VAR_NAME, currVal); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$axure.player.updateAdaptiveViewHeader = updateAdaptiveViewHeader = function () { |
||||
|
var hasDefinedDim = true; |
||||
|
var dimensionlessViewStr = '(any x any)'; |
||||
|
|
||||
|
var viewString = $('.adaptiveViewOption.currentAdaptiveView').text(); |
||||
|
if (viewString != null && viewString.indexOf(dimensionlessViewStr) >= 0) hasDefinedDim = false; |
||||
|
|
||||
|
if (!hasDefinedDim) { |
||||
|
var viewName = viewString.substring(0, viewString.lastIndexOf(' (')); |
||||
|
var widthString = $('#mainPanelContainer').width(); |
||||
|
viewString = viewName + ' (' + widthString + ' x any)'; |
||||
|
} |
||||
|
|
||||
|
$('.adaptiveViewHeader').html(viewString); |
||||
|
} |
||||
|
|
||||
|
$axure.player.selectScaleOption = function (scaleVal) { |
||||
|
var $scale = $('.vpScaleOption[val="' + scaleVal + '"]'); |
||||
|
if ($scale.length > 0) $scale.click(); |
||||
|
} |
||||
|
|
||||
|
function vpScaleOption_click(event) { |
||||
|
var scaleCheckDiv = $(this).find('.scaleRadioButton'); |
||||
|
var scaleVal = $(this).attr('val'); |
||||
|
if (scaleCheckDiv.hasClass('selectedRadioButton')) return false; |
||||
|
|
||||
|
var $selectedScaleOption = $('.vpScaleOption[val="' + scaleVal + '"], .projectOptionsScaleRow[val="' + scaleVal + '"]'); |
||||
|
var $allScaleOptions = $('.vpScaleOption, .projectOptionsScaleRow'); |
||||
|
$allScaleOptions.find('.scaleRadioButton').removeClass('selectedRadioButton'); |
||||
|
$allScaleOptions.find('.selectedRadioButtonFill').hide(); |
||||
|
$selectedScaleOption.find('.scaleRadioButton').addClass('selectedRadioButton'); |
||||
|
$selectedScaleOption.find('.selectedRadioButtonFill').show(); |
||||
|
|
||||
|
if (scaleVal == '0') { |
||||
|
$axure.player.deleteVarFromCurrentUrlHash(SCALE_VAR_NAME); |
||||
|
} else if (typeof scaleVal !== 'undefined') { |
||||
|
$axure.player.setVarInCurrentUrlHash(SCALE_VAR_NAME, scaleVal); |
||||
|
} |
||||
|
|
||||
|
$axure.player.refreshViewPort(); |
||||
|
} |
||||
|
|
||||
|
function search_input_keyup(event) { |
||||
|
var searchVal = $(this).val().toLowerCase(); |
||||
|
//If empty search field, show all nodes, else grey+hide all nodes and
|
||||
|
//ungrey+unhide all matching nodes, as well as unhide their parent nodes
|
||||
|
if(searchVal == '') { |
||||
|
$('.sitemapPageName').removeClass('sitemapGreyedName'); |
||||
|
$('.sitemapNode').show(); |
||||
|
} else { |
||||
|
$('.sitemapNode').hide(); |
||||
|
|
||||
|
$('.sitemapPageName').addClass('sitemapGreyedName').each(function() { |
||||
|
var nodeName = $(this).text().toLowerCase(); |
||||
|
if(nodeName.indexOf(searchVal) != -1) { |
||||
|
$(this).removeClass('sitemapGreyedName').parents('.sitemapNode:first').show().parents('.sitemapExpandableNode').show(); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function generateSitemap() { |
||||
|
var treeUl = "<div id='sitemapHeader'' class='sitemapHeader'>"; |
||||
|
treeUl += "<div id='sitemapToolbar' class='sitemapToolbar'>"; |
||||
|
|
||||
|
treeUl += '<div id="searchDiv"><span id="searchIcon" class="sitemapToolbarButton"></span><input id="searchBox" type="text"/></div>'; |
||||
|
treeUl += "<div class='leftArrow sitemapToolbarButton'></div>"; |
||||
|
treeUl += "<div class='rightArrow sitemapToolbarButton'></div>"; |
||||
|
|
||||
|
treeUl += "</div>"; |
||||
|
treeUl += "</div>"; |
||||
|
|
||||
|
///////////////////
|
||||
|
|
||||
|
var sitemapTitle = $axure.player.getProjectName(); |
||||
|
if (!sitemapTitle) sitemapTitle = "Pages"; |
||||
|
treeUl += "<div class='sitemapPluginNameHeader pluginNameHeader'>" + sitemapTitle + "</div>"; |
||||
|
|
||||
|
treeUl += "<div id='sitemapTreeContainer'>"; |
||||
|
treeUl += "<ul class='sitemapTree' style='clear:both;'>"; |
||||
|
var rootNodes = $axure.document.sitemap.rootNodes; |
||||
|
for(var i = 0; i < rootNodes.length; i++) { |
||||
|
treeUl += generateNode(rootNodes[i], 0); |
||||
|
} |
||||
|
treeUl += "</ul></div>"; |
||||
|
|
||||
|
if (!MOBILE_DEVICE) { |
||||
|
treeUl += "<div id='changePageInstructions' class='pageSwapInstructions'>Use "; |
||||
|
treeUl += '<span class="backKeys"></span>'; |
||||
|
treeUl += " and "; |
||||
|
treeUl += '<span class="forwardKeys"></span>'; |
||||
|
treeUl += " keys<br>to move between pages"; |
||||
|
treeUl += "</div>"; |
||||
|
} |
||||
|
|
||||
|
$('#sitemapHost').html(treeUl); |
||||
|
} |
||||
|
|
||||
|
function generateNode(node, level) { |
||||
|
var hasChildren = (node.children && node.children.length > 0); |
||||
|
var margin, returnVal; |
||||
|
if(hasChildren) { |
||||
|
margin = (9 + level * 17); |
||||
|
returnVal = "<li class='sitemapNode sitemapExpandableNode'><div><div class='sitemapPageLinkContainer' style='margin-left:" + margin + "px'><a class='sitemapPlusMinusLink'><span class='sitemapMinus'></span></a>"; |
||||
|
} else { |
||||
|
margin = (19 + level * 17); |
||||
|
returnVal = "<li class='sitemapNode sitemapLeafNode'><div><div class='sitemapPageLinkContainer' style='margin-left:" + margin + "px'>"; |
||||
|
} |
||||
|
|
||||
|
var isFolder = node.type == "Folder"; |
||||
|
if(!isFolder) { |
||||
|
returnVal += "<a class='sitemapPageLink' nodeUrl='" + node.url + "'>"; |
||||
|
allNodeUrls.push(node.url); |
||||
|
} |
||||
|
returnVal += "<span class='sitemapPageIcon"; |
||||
|
if(node.type == "Flow"){ returnVal += " sitemapFlowIcon";} |
||||
|
if(isFolder) { returnVal += " sitemapFolderIcon"; } |
||||
|
|
||||
|
returnVal += "'></span><span class='sitemapPageName'>"; |
||||
|
returnVal += $('<div/>').text(node.pageName).html(); |
||||
|
returnVal += "</span>"; |
||||
|
if(!isFolder) returnVal += "</a>"; |
||||
|
returnVal += "</div></div>"; |
||||
|
|
||||
|
if(hasChildren) { |
||||
|
returnVal += "<ul>"; |
||||
|
for(var i = 0; i < node.children.length; i++) { |
||||
|
var child = node.children[i]; |
||||
|
returnVal += generateNode(child, level + 1); |
||||
|
} |
||||
|
returnVal += "</ul>"; |
||||
|
} |
||||
|
returnVal += "</li>"; |
||||
|
return returnVal; |
||||
|
} |
||||
|
})(); |
After Width: | Height: | Size: 940 B |
After Width: | Height: | Size: 820 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 224 B |
After Width: | Height: | Size: 563 B |
After Width: | Height: | Size: 175 B |
After Width: | Height: | Size: 577 B |
After Width: | Height: | Size: 265 B |
After Width: | Height: | Size: 170 B |
After Width: | Height: | Size: 293 B |
After Width: | Height: | Size: 293 B |
After Width: | Height: | Size: 451 B |
After Width: | Height: | Size: 451 B |
@ -0,0 +1,384 @@ |
|||||
|
|
||||
|
#sitemapHost { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
#sitemapHostBtn a { |
||||
|
background: url('images/sitemap_panel_on.svg') no-repeat center center, linear-gradient(transparent, transparent); |
||||
|
} |
||||
|
|
||||
|
#sitemapHostBtn a.selected, #sitemapHostBtn a.selected:hover { |
||||
|
background: url('images/sitemap_panel_off.svg') no-repeat center center, linear-gradient(transparent, transparent); |
||||
|
} |
||||
|
|
||||
|
#sitemapHost .pageButtonHeader { |
||||
|
top: -27px; |
||||
|
} |
||||
|
|
||||
|
#sitemapTreeContainer { |
||||
|
overflow: auto; |
||||
|
width: 100%; |
||||
|
flex: 1; |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
} |
||||
|
|
||||
|
.mobileMode #sitemapTreeContainer { |
||||
|
margin-left: 5px; |
||||
|
overflow-x: hidden; |
||||
|
} |
||||
|
|
||||
|
.sitemapTree { |
||||
|
margin: 0px 0px 10px 0px; |
||||
|
overflow:visible; |
||||
|
} |
||||
|
|
||||
|
.sitemapTree ul { |
||||
|
list-style-type: none; |
||||
|
margin: 0px 0px 0px 0px; |
||||
|
padding-left: 0px; |
||||
|
} |
||||
|
|
||||
|
ul.sitemapTree { |
||||
|
display: inline-block; |
||||
|
min-width: 100%; |
||||
|
} |
||||
|
|
||||
|
.pageSwapInstructions { |
||||
|
width: 129px; |
||||
|
font-size: 12px; |
||||
|
text-align: center; |
||||
|
color: #8c8c8c; |
||||
|
margin: 0 auto; |
||||
|
padding: 12px 0px; |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
|
||||
|
.sitemapMinus, .sitemapPlus { |
||||
|
vertical-align:middle; |
||||
|
background-repeat: no-repeat; |
||||
|
margin-right: 3px; |
||||
|
width: 7px; |
||||
|
height: 8px; |
||||
|
object-fit: contain; |
||||
|
display:inline-block; |
||||
|
} |
||||
|
.sitemapMinus { |
||||
|
margin-bottom: 0px; |
||||
|
background: url('images/open_item.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
.sitemapPlus { |
||||
|
margin-bottom: 2px; |
||||
|
background: url('images/closed_item.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
|
||||
|
.mobileMode .sitemapMinus, .mobileMode .sitemapPlus { |
||||
|
width: 10.5px; |
||||
|
height: 12px; |
||||
|
margin-right: 5px; |
||||
|
background-size: contain; |
||||
|
} |
||||
|
|
||||
|
.sitemapPageLink { |
||||
|
margin-left: 0px; |
||||
|
} |
||||
|
|
||||
|
.sitemapPageIcon { |
||||
|
margin: 0px 6px -3px 3px; |
||||
|
width: 16px; |
||||
|
height: 16px; |
||||
|
display: inline-block; |
||||
|
background: url('images/page_lt_grey.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
|
||||
|
.mobileMode .sitemapPageIcon { |
||||
|
margin-right: 7px; |
||||
|
background-size: contain; |
||||
|
} |
||||
|
|
||||
|
.sitemapFolderIcon { |
||||
|
background: url('images/folder_closed_blue.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
|
||||
|
.mobileMode .sitemapFolderIcon { |
||||
|
width: 18px; |
||||
|
height: 18px; |
||||
|
margin-left: 1px; |
||||
|
background-position-y: 1px; |
||||
|
background-size: contain; |
||||
|
} |
||||
|
|
||||
|
.sitemapFlowIcon { |
||||
|
background: url('images/flow.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
|
||||
|
.sitemapFolderOpenIcon { |
||||
|
background: url('images/folder_open.png') no-repeat center center; |
||||
|
background: url('images/folder_open.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
|
||||
|
.sitemapPageName { |
||||
|
font-size: 14px; |
||||
|
line-height: 1.93; |
||||
|
color: #4a4a4a; |
||||
|
} |
||||
|
|
||||
|
.sitemapPageName.mobileText { |
||||
|
line-height: 1.69; |
||||
|
} |
||||
|
|
||||
|
.sitemapNode { |
||||
|
white-space:nowrap; |
||||
|
} |
||||
|
|
||||
|
.sitemapPageLinkContainer { |
||||
|
cursor: pointer; |
||||
|
padding-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.mobileMode .sitemapPageLinkContainer { |
||||
|
margin-bottom: 13px; |
||||
|
} |
||||
|
|
||||
|
.sitemapHighlight { |
||||
|
background-color: #e6e6e6; |
||||
|
} |
||||
|
|
||||
|
.sitemapGreyedName |
||||
|
{ |
||||
|
color: #AAA; |
||||
|
} |
||||
|
|
||||
|
.sitemapPluginNameHeader { |
||||
|
margin: 13px 9px 5px 9px; |
||||
|
font-size: 14px; |
||||
|
color: #444444; |
||||
|
} |
||||
|
|
||||
|
.sitemapHeader { |
||||
|
padding-top: 7px; |
||||
|
} |
||||
|
|
||||
|
.mobileMode .sitemapHeader { |
||||
|
padding-top: 0px; |
||||
|
} |
||||
|
|
||||
|
.sitemapToolbar { |
||||
|
margin: 0px 3px 0px 5px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
|
||||
|
.sitemapToolbarButton { |
||||
|
width: 19px; |
||||
|
height: 18px; |
||||
|
border: 1px solid transparent; |
||||
|
cursor: pointer; |
||||
|
flex: 0 0 auto; |
||||
|
} |
||||
|
|
||||
|
.hashover .sitemapToolbarButton:hover { |
||||
|
border-radius: 3px; |
||||
|
background-color: #e6e6e6 !important; |
||||
|
} |
||||
|
|
||||
|
.sitemapToolbarButton.sitemapToolbarButtonSelected, .sitemapToolbarButton.sitemapToolbarButtonSelected:hover{ |
||||
|
background-color: inherit !important; |
||||
|
} |
||||
|
|
||||
|
.leftArrow { |
||||
|
background: url('images/left_arrow.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
margin-left: 11px; |
||||
|
} |
||||
|
|
||||
|
.rightArrow { |
||||
|
background: url('images/right_arrow.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
margin-left: 3px; |
||||
|
margin-right: 2px; |
||||
|
} |
||||
|
|
||||
|
#searchIcon { |
||||
|
width: 10px; |
||||
|
height: 10px; |
||||
|
object-fit: contain; |
||||
|
background: url('images/search_on.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
vertical-align: bottom; |
||||
|
padding: 5px 4px 5px 4px; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
#searchIcon.sitemapToolbarButtonSelected { |
||||
|
padding: 5px 3px 5px 5px; |
||||
|
border-top-left-radius: 5px; |
||||
|
border-bottom-left-radius: 5px; |
||||
|
border-left: solid 1px #cccccc; |
||||
|
border-top: solid 1px #cccccc; |
||||
|
border-bottom: solid 1px #cccccc; |
||||
|
background: url('images/search_off.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
background-color: #FFFFFF !important; |
||||
|
} |
||||
|
|
||||
|
.backKeys { |
||||
|
width: 20px; |
||||
|
height: 21px; |
||||
|
object-fit: contain; |
||||
|
vertical-align: bottom; |
||||
|
margin: 2px; |
||||
|
display: inline-block; |
||||
|
background: url('images/back_keys.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
|
||||
|
.forwardKeys { |
||||
|
width: 20px; |
||||
|
height: 21px; |
||||
|
object-fit: contain; |
||||
|
vertical-align: bottom; |
||||
|
margin: 2px; |
||||
|
display: inline-block; |
||||
|
background: url('images/forward_keys.svg') no-repeat center center, linear-gradient(transparent,transparent); |
||||
|
} |
||||
|
|
||||
|
#interfaceAdaptiveViewsListContainer { |
||||
|
position: absolute; |
||||
|
display: none; |
||||
|
width: 220px; |
||||
|
left: 155px; |
||||
|
padding: 6px 9px; |
||||
|
top: 36px; |
||||
|
} |
||||
|
|
||||
|
#interfaceScaleListContainer { |
||||
|
padding: 7.5px 9px 12px 16px; |
||||
|
margin-top: 9px; |
||||
|
border-top: solid 1px #bdbcbc; |
||||
|
order: 10; |
||||
|
} |
||||
|
|
||||
|
.adaptiveViewOption, .vpPresetOption, .vpScaleOption { |
||||
|
padding: 3px 0px 3px 0px; |
||||
|
color: #3B3B3B; |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
.projectOptionsScaleRow, .projectOptionsAdaptiveViewRow, .projectOptionsHotspotsRow { |
||||
|
border-top: solid 1px #c7c7c7; |
||||
|
display: flex; |
||||
|
padding: 13px 7px 13px 0px; |
||||
|
} |
||||
|
|
||||
|
.adaptiveViewOption:hover, .vpScaleOption:hover, .vpPresetOption:hover, .projectOptionsAdaptiveViewRow:hover, .projectOptionsScaleRow:hover |
||||
|
{ |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.scaleRadioButton, .adapViewRadioButton { |
||||
|
border: solid 1px #8c8c8c; |
||||
|
display: inline-block; |
||||
|
position: relative; |
||||
|
width: 12px; |
||||
|
height: 12px; |
||||
|
border-radius: 48px; |
||||
|
margin-right: 12px; |
||||
|
top: 2px; |
||||
|
flex-shrink: 0; |
||||
|
} |
||||
|
|
||||
|
.mobileMode .scaleRadioButton, .mobileMode .adapViewRadioButton { |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
border-radius: 60px; |
||||
|
margin-right: 22px; |
||||
|
margin-left: 22px; |
||||
|
top: 0px; |
||||
|
flex-shrink: 0; |
||||
|
} |
||||
|
|
||||
|
.selectedRadioButton { |
||||
|
border: solid 1px #20aca9; |
||||
|
} |
||||
|
|
||||
|
.selectedRadioButtonFill { |
||||
|
position: relative; |
||||
|
display: none; |
||||
|
background-color: #20aca9; |
||||
|
margin: auto; |
||||
|
width: 8px; |
||||
|
height: 8px; |
||||
|
border-radius: 30px; |
||||
|
top: 2px; |
||||
|
} |
||||
|
.mobileMode .selectedRadioButtonFill { |
||||
|
width: 12px; |
||||
|
height: 12px; |
||||
|
border-radius: 48px; |
||||
|
top: 4px; |
||||
|
} |
||||
|
|
||||
|
#searchDiv { |
||||
|
display: flex; |
||||
|
margin-right: auto; |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
#searchBox { |
||||
|
display: none; |
||||
|
width: 0%; |
||||
|
height: 22px; |
||||
|
padding-left: 5px; |
||||
|
border-radius: 0px 5px 5px 0px; |
||||
|
border-right: solid 1px #cccccc; |
||||
|
border-top: solid 1px #cccccc; |
||||
|
border-bottom: solid 1px #cccccc; |
||||
|
border-left: none; |
||||
|
-webkit-appearance: none; |
||||
|
} |
||||
|
|
||||
|
#searchBox:focus { |
||||
|
outline-width: 0; |
||||
|
} |
||||
|
|
||||
|
.searchBoxHint { |
||||
|
color: #8f949a; |
||||
|
} |
||||
|
|
||||
|
#sitemapHost.popup #searchDiv{ |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
#sitemapHost.popup #sitemapHeader{ |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
#sitemapHost.popup #changePageInstructions{ |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.mobileMode #sitemapHeader { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
/* Expo Sitemap |
||||
|
******************************************************************************/ |
||||
|
|
||||
|
.expoSitemapNode { |
||||
|
padding: 15px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.sitemapPageImg { |
||||
|
max-width: 90%; |
||||
|
max-height: 150px; |
||||
|
} |
||||
|
|
||||
|
.popup .sitemapPageImg { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.popup .expoSitemapNode { |
||||
|
padding: 0 0 0 10px; |
||||
|
text-align: left; |
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
<html> |
||||
|
<head> |
||||
|
<title></title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<br /> |
||||
|
<div style="width:100%; text-align:center; font-family:Arial; font-size:12px;" id=other></div> |
||||
|
<br /> |
||||
|
<div style="width:100%; text-align:center; font-family:Arial; font-size:12px;"> |
||||
|
<button onclick="parent.window.close();"> |
||||
|
Close |
||||
|
</button> |
||||
|
</div> |
||||
|
|
||||
|
<SCRIPT src="axurerp_pagescript.js"></SCRIPT> |
||||
|
|
||||
|
<script language=javascript> |
||||
|
function getQueryVariable(variable) { |
||||
|
var query = window.location.hash.substring(1); |
||||
|
var vars = query.split("&&&"); |
||||
|
for (var i=0;i<vars.length;i++) { |
||||
|
var pair = vars[i].split("="); |
||||
|
if (pair[0] == variable) { |
||||
|
return decodeURI(pair[1]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var other = document.getElementById('other'); |
||||
|
other.innerHTML = getQueryVariable('other'); |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,292 @@ |
|||||
|
/* so the window resize fires within a frame in IE7 */ |
||||
|
html, body { |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
.mobileFrameCursor div * { |
||||
|
cursor: inherit !important; |
||||
|
} |
||||
|
|
||||
|
a { |
||||
|
color: inherit; |
||||
|
} |
||||
|
|
||||
|
p { |
||||
|
margin: 0px; |
||||
|
text-rendering: optimizeLegibility; |
||||
|
font-feature-settings: "kern" 1; |
||||
|
-webkit-font-feature-settings: "kern"; |
||||
|
-moz-font-feature-settings: "kern"; |
||||
|
-moz-font-feature-settings: "kern=1"; |
||||
|
font-kerning: normal; |
||||
|
} |
||||
|
|
||||
|
ul { |
||||
|
margin:0px; |
||||
|
} |
||||
|
|
||||
|
iframe { |
||||
|
background: #FFFFFF; |
||||
|
} |
||||
|
|
||||
|
/* to match IE with C, FF */ |
||||
|
input { |
||||
|
padding: 1px 0px 1px 0px; |
||||
|
box-sizing: border-box; |
||||
|
-moz-box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
input[type=text]::-ms-clear { |
||||
|
width: 0; |
||||
|
height: 0; |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
textarea { |
||||
|
margin: 0px; |
||||
|
box-sizing: border-box; |
||||
|
-moz-box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
.focused:focus, .selectedFocused:focus { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
div.intcases { |
||||
|
font-family: arial; |
||||
|
font-size: 12px; |
||||
|
text-align:left; |
||||
|
border:1px solid #AAA; |
||||
|
background:#FFF none repeat scroll 0% 0%; |
||||
|
z-index:9999; |
||||
|
visibility:hidden; |
||||
|
position:absolute; |
||||
|
padding: 0px; |
||||
|
border-radius: 3px; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
div.intcaselink { |
||||
|
cursor: pointer; |
||||
|
padding: 3px 8px 3px 8px; |
||||
|
margin: 5px; |
||||
|
background:#EEE none repeat scroll 0% 0%; |
||||
|
border:1px solid #AAA; |
||||
|
border-radius: 3px; |
||||
|
} |
||||
|
|
||||
|
div.refpageimage { |
||||
|
position: absolute; |
||||
|
left: 0px; |
||||
|
top: 0px; |
||||
|
font-size: 0px; |
||||
|
width: 16px; |
||||
|
height: 16px; |
||||
|
cursor: pointer; |
||||
|
background-image: url(images/newwindow.gif); |
||||
|
background-repeat: no-repeat; |
||||
|
} |
||||
|
|
||||
|
div.annnoteimage { |
||||
|
position: absolute; |
||||
|
left: 0px; |
||||
|
top: 0px; |
||||
|
font-size: 0px; |
||||
|
/*width: 16px; |
||||
|
height: 12px;*/ |
||||
|
cursor: help; |
||||
|
/*background-image: url(images/note.gif);*/ |
||||
|
/*background-repeat: no-repeat;*/ |
||||
|
width: 13px; |
||||
|
height: 12px; |
||||
|
padding-top: 1px; |
||||
|
text-align: center; |
||||
|
background-color: #138CDD; |
||||
|
-moz-box-shadow: 1px 1px 3px #aaa; |
||||
|
-webkit-box-shadow: 1px 1px 3px #aaa; |
||||
|
box-shadow: 1px 1px 3px #aaa; |
||||
|
} |
||||
|
|
||||
|
div.annnoteline { |
||||
|
display: inline-block; |
||||
|
width: 9px; |
||||
|
height: 1px; |
||||
|
border-bottom: 1px solid white; |
||||
|
margin-top: 1px; |
||||
|
} |
||||
|
|
||||
|
div.annnotelabel { |
||||
|
/*position: absolute; |
||||
|
left: 0px; |
||||
|
top: 0px;*/ |
||||
|
font-family: Helvetica,Arial; |
||||
|
white-space: nowrap; |
||||
|
|
||||
|
padding-top: 1px; |
||||
|
background-color: #fff849; |
||||
|
font-size: 10px; |
||||
|
font-weight: bold; |
||||
|
line-height: 14px; |
||||
|
margin-right: 3px; |
||||
|
padding: 0px 4px; |
||||
|
color: #000; |
||||
|
|
||||
|
-moz-box-shadow: 1px 1px 3px #aaa; |
||||
|
-webkit-box-shadow: 1px 1px 3px #aaa; |
||||
|
box-shadow: 1px 1px 3px #aaa; |
||||
|
} |
||||
|
|
||||
|
div.annnote { |
||||
|
display: flex; |
||||
|
position: absolute; |
||||
|
cursor: help; |
||||
|
line-height: 14px; |
||||
|
} |
||||
|
|
||||
|
.annotation { |
||||
|
font-size: 12px; |
||||
|
padding-left: 2px; |
||||
|
margin-bottom: 5px; |
||||
|
} |
||||
|
|
||||
|
.annotationName { |
||||
|
/*font-size: 13px; |
||||
|
font-weight: bold; |
||||
|
margin-bottom: 3px; |
||||
|
white-space: nowrap;*/ |
||||
|
|
||||
|
font-family: 'Trebuchet MS'; |
||||
|
font-size: 14px; |
||||
|
font-weight: bold; |
||||
|
margin-bottom: 5px; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
.annotationValue { |
||||
|
font-family: Arial, Helvetica, Sans-Serif; |
||||
|
font-size: 12px; |
||||
|
color: #4a4a4a; |
||||
|
line-height: 21px; |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.noteLink { |
||||
|
text-decoration: inherit; |
||||
|
color: inherit; |
||||
|
} |
||||
|
|
||||
|
.noteLink:hover { |
||||
|
background-color: white; |
||||
|
} |
||||
|
|
||||
|
/* this is a fix for the issue where dialogs jump around and takes the text-align from the body */ |
||||
|
.dialogFix { |
||||
|
position:absolute; |
||||
|
text-align:left; |
||||
|
border: 1px solid #8f949a; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@keyframes pulsate { |
||||
|
from { |
||||
|
box-shadow: 0 0 10px #15d6ba; |
||||
|
} |
||||
|
to { |
||||
|
box-shadow: 0 0 20px #15d6ba; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@-webkit-keyframes pulsate { |
||||
|
from { |
||||
|
-webkit-box-shadow: 0 0 10px #15d6ba; |
||||
|
box-shadow: 0 0 10px #15d6ba; |
||||
|
} |
||||
|
to { |
||||
|
-webkit-box-shadow: 0 0 20px #15d6ba; |
||||
|
box-shadow: 0 0 20px #15d6ba; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@-moz-keyframes pulsate { |
||||
|
from { |
||||
|
-moz-box-shadow: 0 0 10px #15d6ba; |
||||
|
box-shadow: 0 0 10px #15d6ba; |
||||
|
} |
||||
|
to { |
||||
|
-moz-box-shadow: 0 0 20px #15d6ba; |
||||
|
box-shadow: 0 0 20px #15d6ba; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.legacyPulsateBorder { |
||||
|
/*border: 5px solid #15d6ba; |
||||
|
margin: -5px;*/ |
||||
|
-moz-box-shadow: 0 0 10px 3px #15d6ba; |
||||
|
box-shadow: 0 0 10px 3px #15d6ba; |
||||
|
} |
||||
|
|
||||
|
.pulsateBorder { |
||||
|
animation-name: pulsate; |
||||
|
animation-timing-function: ease-in-out; |
||||
|
animation-duration: 0.9s; |
||||
|
animation-iteration-count: infinite; |
||||
|
animation-direction: alternate; |
||||
|
|
||||
|
-webkit-animation-name: pulsate; |
||||
|
-webkit-animation-timing-function: ease-in-out; |
||||
|
-webkit-animation-duration: 0.9s; |
||||
|
-webkit-animation-iteration-count: infinite; |
||||
|
-webkit-animation-direction: alternate; |
||||
|
|
||||
|
-moz-animation-name: pulsate; |
||||
|
-moz-animation-timing-function: ease-in-out; |
||||
|
-moz-animation-duration: 0.9s; |
||||
|
-moz-animation-iteration-count: infinite; |
||||
|
-moz-animation-direction: alternate; |
||||
|
} |
||||
|
|
||||
|
.ax_default_hidden, .ax_default_unplaced{ |
||||
|
display: none; |
||||
|
visibility: hidden; |
||||
|
} |
||||
|
|
||||
|
.widgetNoteSelected { |
||||
|
-moz-box-shadow: 0 0 10px 3px #138CDD; |
||||
|
box-shadow: 0 0 10px 3px #138CDD; |
||||
|
/*-moz-box-shadow: 0 0 20px #3915d6; |
||||
|
box-shadow: 0 0 20px #3915d6;*/ |
||||
|
/*border: 3px solid #3915d6;*/ |
||||
|
/*margin: -3px;*/ |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.singleImg { |
||||
|
display: none; |
||||
|
visibility: hidden; |
||||
|
} |
||||
|
|
||||
|
#ios-safari { |
||||
|
overflow: auto; |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
} |
||||
|
|
||||
|
#ios-safari-html { |
||||
|
display: block; |
||||
|
overflow: auto; |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
bottom: 0; |
||||
|
} |
||||
|
|
||||
|
#ios-safari-fixed { |
||||
|
position: absolute; |
||||
|
pointer-events: none; |
||||
|
width: initial; |
||||
|
} |
||||
|
|
||||
|
#ios-safari-fixed div { |
||||
|
pointer-events: auto; |
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
.form-control-dark { |
||||
|
border-color: var(--bs-gray); |
||||
|
} |
||||
|
.form-control-dark:focus { |
||||
|
border-color: #fff; |
||||
|
box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .25); |
||||
|
} |
||||
|
|
||||
|
.text-small { |
||||
|
font-size: 85%; |
||||
|
} |
||||
|
|
||||
|
.dropdown-toggle { |
||||
|
outline: 0; |
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
||||
|
<html> |
||||
|
<head> |
||||
|
<title></title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<p> |
||||
|
<img border="0" src="note.gif" width="1" height="1"> |
||||
|
<img border="0" src="newwindow.gif" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_flat_0_aaaaaa_40x100.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_glass_55_fbf9ee_1x400.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_glass_65_ffffff_1x400.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_glass_75_dadada_1x400.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_glass_75_e6e6e6_1x400.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_glass_75_ffffff_1x400.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_highlight-soft_75_cccccc_1x100.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-bg_inset-soft_95_fef1ec_1x100.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-icons_222222_256x240.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-icons_2e83ff_256x240.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-icons_454545_256x240.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-icons_888888_256x240.png" width="1" height="1"> |
||||
|
<img border="0" src="ui-icons_cd0a0a_256x240.png" width="1" height="1"> |
||||
|
</p> |
||||
|
</body> |
||||
|
</html> |
After Width: | Height: | Size: 112 B |
After Width: | Height: | Size: 98 B |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 180 B |
After Width: | Height: | Size: 120 B |
After Width: | Height: | Size: 105 B |
After Width: | Height: | Size: 111 B |
After Width: | Height: | Size: 110 B |
After Width: | Height: | Size: 107 B |
After Width: | Height: | Size: 101 B |
After Width: | Height: | Size: 123 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
@ -0,0 +1,412 @@ |
|||||
|
/* |
||||
|
* jQuery UI CSS Framework |
||||
|
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) |
||||
|
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. |
||||
|
*/ |
||||
|
|
||||
|
/* Layout helpers |
||||
|
----------------------------------*/ |
||||
|
.ui-helper-hidden { display: none; } |
||||
|
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } |
||||
|
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } |
||||
|
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } |
||||
|
.ui-helper-clearfix { display: inline-block; } |
||||
|
/* required comment for clearfix to work in Opera \*/ |
||||
|
* html .ui-helper-clearfix { height:1%; } |
||||
|
.ui-helper-clearfix { display:block; } |
||||
|
/* end clearfix */ |
||||
|
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } |
||||
|
|
||||
|
|
||||
|
/* Interaction Cues |
||||
|
----------------------------------*/ |
||||
|
.ui-state-disabled { cursor: default !important; } |
||||
|
|
||||
|
|
||||
|
/* Icons |
||||
|
----------------------------------*/ |
||||
|
|
||||
|
/* states and images */ |
||||
|
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } |
||||
|
|
||||
|
|
||||
|
/* Misc visuals |
||||
|
----------------------------------*/ |
||||
|
|
||||
|
/* Overlays */ |
||||
|
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }/* Accordion |
||||
|
----------------------------------*/ |
||||
|
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } |
||||
|
.ui-accordion .ui-accordion-li-fix { display: inline; } |
||||
|
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } |
||||
|
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } |
||||
|
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } |
||||
|
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } |
||||
|
.ui-accordion .ui-accordion-content-active { display: block; } |
||||
|
|
||||
|
/* Datepicker |
||||
|
----------------------------------*/ |
||||
|
.ui-datepicker { width: 17em; padding: .2em .2em 0; } |
||||
|
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } |
||||
|
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } |
||||
|
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } |
||||
|
.ui-datepicker .ui-datepicker-prev { left:2px; } |
||||
|
.ui-datepicker .ui-datepicker-next { right:2px; } |
||||
|
.ui-datepicker .ui-datepicker-prev-hover { left:1px; } |
||||
|
.ui-datepicker .ui-datepicker-next-hover { right:1px; } |
||||
|
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } |
||||
|
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } |
||||
|
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } |
||||
|
.ui-datepicker select.ui-datepicker-month-year {width: 100%;} |
||||
|
.ui-datepicker select.ui-datepicker-month, |
||||
|
.ui-datepicker select.ui-datepicker-year { width: 49%;} |
||||
|
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } |
||||
|
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } |
||||
|
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } |
||||
|
.ui-datepicker td { border: 0; padding: 1px; } |
||||
|
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } |
||||
|
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } |
||||
|
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } |
||||
|
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } |
||||
|
|
||||
|
/* with multiple calendars */ |
||||
|
.ui-datepicker.ui-datepicker-multi { width:auto; } |
||||
|
.ui-datepicker-multi .ui-datepicker-group { float:left; } |
||||
|
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } |
||||
|
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } |
||||
|
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } |
||||
|
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } |
||||
|
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } |
||||
|
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } |
||||
|
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } |
||||
|
.ui-datepicker-row-break { clear:both; width:100%; } |
||||
|
|
||||
|
/* RTL support */ |
||||
|
.ui-datepicker-rtl { direction: rtl; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-group { float:right; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } |
||||
|
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } |
||||
|
|
||||
|
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ |
||||
|
.ui-datepicker-cover { |
||||
|
display: none; /*sorry for IE5*/ |
||||
|
display/**/: block; /*sorry for IE5*/ |
||||
|
position: absolute; /*must have*/ |
||||
|
z-index: -1; /*must have*/ |
||||
|
filter: mask(); /*must have*/ |
||||
|
top: -4px; /*must have*/ |
||||
|
left: -4px; /*must have*/ |
||||
|
width: 200px; /*must have*/ |
||||
|
height: 200px; /*must have*/ |
||||
|
} |
||||
|
|
||||
|
/* Dialog |
||||
|
----------------------------------*/ |
||||
|
.ui-dialog { position: relative; padding: 0px; width: 300px;} |
||||
|
.ui-dialog .ui-dialog-titlebar { padding: .3em .3em .1em .8em; font-size:.7em; position: relative; background-image: none; } |
||||
|
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; |
||||
|
font-family: 'Trebuchet MS'; |
||||
|
font-size: 15px; |
||||
|
font-weight: normal; |
||||
|
color: #ffffff;} |
||||
|
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .1em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } |
||||
|
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } |
||||
|
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { /*padding: 0;*/ } |
||||
|
.ui-dialog .ui-dialog-content { border: 0; padding: .5em .2em; background: none; overflow: auto; zoom: 1; background-color: #ffffff;} |
||||
|
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } |
||||
|
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } |
||||
|
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } |
||||
|
.ui-draggable .ui-dialog-titlebar { cursor: move; background-color: #8f949a; border-bottom: 1px solid #d9d9d9;} |
||||
|
|
||||
|
/* Progressbar |
||||
|
----------------------------------*/ |
||||
|
.ui-progressbar { height:2em; text-align: left; } |
||||
|
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable |
||||
|
----------------------------------*/ |
||||
|
.ui-resizable { position: relative;} |
||||
|
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} |
||||
|
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } |
||||
|
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } |
||||
|
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } |
||||
|
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } |
||||
|
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } |
||||
|
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } |
||||
|
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } |
||||
|
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } |
||||
|
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider |
||||
|
----------------------------------*/ |
||||
|
.ui-slider { position: relative; text-align: left; } |
||||
|
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } |
||||
|
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } |
||||
|
|
||||
|
.ui-slider-horizontal { height: .8em; } |
||||
|
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } |
||||
|
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } |
||||
|
.ui-slider-horizontal .ui-slider-range-min { left: 0; } |
||||
|
.ui-slider-horizontal .ui-slider-range-max { right: 0; } |
||||
|
|
||||
|
.ui-slider-vertical { width: .8em; height: 100px; } |
||||
|
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } |
||||
|
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } |
||||
|
.ui-slider-vertical .ui-slider-range-min { bottom: 0; } |
||||
|
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs |
||||
|
----------------------------------*/ |
||||
|
.ui-tabs { padding: .2em; zoom: 1; } |
||||
|
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } |
||||
|
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } |
||||
|
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } |
||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } |
||||
|
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } |
||||
|
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ |
||||
|
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } |
||||
|
.ui-tabs .ui-tabs-hide { display: none !important; } |
||||
|
/* |
||||
|
* jQuery UI CSS Framework |
||||
|
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) |
||||
|
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. |
||||
|
* To view and modify this theme, visit http://jqueryui.com/themeroller/ |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
/* Component containers |
||||
|
----------------------------------*/ |
||||
|
.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } |
||||
|
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } |
||||
|
.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_glass_75_ffffff_1x400.png)/*{bgImgUrlContent}*/ 0/*{bgContentXPos}*/ 0/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } |
||||
|
.ui-widget-content a { /*color: #222222*//*{fcContent}*/; } |
||||
|
.ui-widget-header { border: none /*1px solid #aaaaaa*//*{borderColorHeader}*/; background: #D3D3D3/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 0/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #000000/*{fcHeader}*/; font-weight: bold; } |
||||
|
.ui-widget-header a { color: #222222/*{fcHeader}*/; } |
||||
|
|
||||
|
/* Interaction states |
||||
|
----------------------------------*/ |
||||
|
.ui-state-default, .ui-widget-content .ui-state-default { border: none /*1px solid #d3d3d3*//*{borderColorDefault}*/; /*background: #e6e6e6*//*{bgColorDefault}*/ /*url(images/ui-bg_glass_75_e6e6e6_1x400.png)*//*{bgImgUrlDefault}*/ /*0*//*{bgDefaultXPos}*/ /*50%*//*{bgDefaultYPos}*/ /*repeat-x*//*{bgDefaultRepeat}*/ font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; outline: none; } |
||||
|
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; outline: none; } |
||||
|
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: none /*1px solid #999999*//*{borderColorHover}*/; /*background: #dadada*//*{bgColorHover}*/ /*url(images/ui-bg_glass_75_dadada_1x400.png)*//*{bgImgUrlHover}*/ /*0*//*{bgHoverXPos}*/ /*50%*//*{bgHoverYPos}*/ /*repeat-x*//*{bgHoverRepeat}*/ font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; outline: none; } |
||||
|
.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; outline: none; } |
||||
|
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 0/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; outline: none; } |
||||
|
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; outline: none; text-decoration: none; } |
||||
|
|
||||
|
/* Interaction Cues |
||||
|
----------------------------------*/ |
||||
|
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 0/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } |
||||
|
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } |
||||
|
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_inset-soft_95_fef1ec_1x100.png)/*{bgImgUrlError}*/ 0/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } |
||||
|
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #363636/*{fcError}*/; } |
||||
|
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } |
||||
|
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } |
||||
|
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } |
||||
|
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } |
||||
|
|
||||
|
/* Icons |
||||
|
----------------------------------*/ |
||||
|
|
||||
|
/* states and images */ |
||||
|
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } |
||||
|
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } |
||||
|
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHeader}*/; } |
||||
|
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } |
||||
|
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHover}*/; } |
||||
|
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } |
||||
|
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } |
||||
|
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } |
||||
|
|
||||
|
/* positioning */ |
||||
|
.ui-icon-carat-1-n { background-position: 0 0; } |
||||
|
.ui-icon-carat-1-ne { background-position: -16px 0; } |
||||
|
.ui-icon-carat-1-e { background-position: -32px 0; } |
||||
|
.ui-icon-carat-1-se { background-position: -48px 0; } |
||||
|
.ui-icon-carat-1-s { background-position: -64px 0; } |
||||
|
.ui-icon-carat-1-sw { background-position: -80px 0; } |
||||
|
.ui-icon-carat-1-w { background-position: -96px 0; } |
||||
|
.ui-icon-carat-1-nw { background-position: -112px 0; } |
||||
|
.ui-icon-carat-2-n-s { background-position: -128px 0; } |
||||
|
.ui-icon-carat-2-e-w { background-position: -144px 0; } |
||||
|
.ui-icon-triangle-1-n { background-position: 0 -16px; } |
||||
|
.ui-icon-triangle-1-ne { background-position: -16px -16px; } |
||||
|
.ui-icon-triangle-1-e { background-position: -32px -16px; } |
||||
|
.ui-icon-triangle-1-se { background-position: -48px -16px; } |
||||
|
.ui-icon-triangle-1-s { background-position: -64px -16px; } |
||||
|
.ui-icon-triangle-1-sw { background-position: -80px -16px; } |
||||
|
.ui-icon-triangle-1-w { background-position: -96px -16px; } |
||||
|
.ui-icon-triangle-1-nw { background-position: -112px -16px; } |
||||
|
.ui-icon-triangle-2-n-s { background-position: -128px -16px; } |
||||
|
.ui-icon-triangle-2-e-w { background-position: -144px -16px; } |
||||
|
.ui-icon-arrow-1-n { background-position: 0 -32px; } |
||||
|
.ui-icon-arrow-1-ne { background-position: -16px -32px; } |
||||
|
.ui-icon-arrow-1-e { background-position: -32px -32px; } |
||||
|
.ui-icon-arrow-1-se { background-position: -48px -32px; } |
||||
|
.ui-icon-arrow-1-s { background-position: -64px -32px; } |
||||
|
.ui-icon-arrow-1-sw { background-position: -80px -32px; } |
||||
|
.ui-icon-arrow-1-w { background-position: -96px -32px; } |
||||
|
.ui-icon-arrow-1-nw { background-position: -112px -32px; } |
||||
|
.ui-icon-arrow-2-n-s { background-position: -128px -32px; } |
||||
|
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } |
||||
|
.ui-icon-arrow-2-e-w { background-position: -160px -32px; } |
||||
|
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } |
||||
|
.ui-icon-arrowstop-1-n { background-position: -192px -32px; } |
||||
|
.ui-icon-arrowstop-1-e { background-position: -208px -32px; } |
||||
|
.ui-icon-arrowstop-1-s { background-position: -224px -32px; } |
||||
|
.ui-icon-arrowstop-1-w { background-position: -240px -32px; } |
||||
|
.ui-icon-arrowthick-1-n { background-position: 0 -48px; } |
||||
|
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } |
||||
|
.ui-icon-arrowthick-1-e { background-position: -32px -48px; } |
||||
|
.ui-icon-arrowthick-1-se { background-position: -48px -48px; } |
||||
|
.ui-icon-arrowthick-1-s { background-position: -64px -48px; } |
||||
|
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } |
||||
|
.ui-icon-arrowthick-1-w { background-position: -96px -48px; } |
||||
|
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } |
||||
|
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } |
||||
|
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } |
||||
|
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } |
||||
|
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } |
||||
|
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } |
||||
|
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } |
||||
|
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } |
||||
|
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } |
||||
|
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } |
||||
|
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } |
||||
|
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } |
||||
|
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } |
||||
|
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } |
||||
|
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } |
||||
|
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } |
||||
|
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } |
||||
|
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } |
||||
|
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } |
||||
|
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } |
||||
|
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } |
||||
|
.ui-icon-arrow-4 { background-position: 0 -80px; } |
||||
|
.ui-icon-arrow-4-diag { background-position: -16px -80px; } |
||||
|
.ui-icon-extlink { background-position: -32px -80px; } |
||||
|
.ui-icon-newwin { background-position: -48px -80px; } |
||||
|
.ui-icon-refresh { background-position: -64px -80px; } |
||||
|
.ui-icon-shuffle { background-position: -80px -80px; } |
||||
|
.ui-icon-transfer-e-w { background-position: -96px -80px; } |
||||
|
.ui-icon-transferthick-e-w { background-position: -112px -80px; } |
||||
|
.ui-icon-folder-collapsed { background-position: 0 -96px; } |
||||
|
.ui-icon-folder-open { background-position: -16px -96px; } |
||||
|
.ui-icon-document { background-position: -32px -96px; } |
||||
|
.ui-icon-document-b { background-position: -48px -96px; } |
||||
|
.ui-icon-note { background-position: -64px -96px; } |
||||
|
.ui-icon-mail-closed { background-position: -80px -96px; } |
||||
|
.ui-icon-mail-open { background-position: -96px -96px; } |
||||
|
.ui-icon-suitcase { background-position: -112px -96px; } |
||||
|
.ui-icon-comment { background-position: -128px -96px; } |
||||
|
.ui-icon-person { background-position: -144px -96px; } |
||||
|
.ui-icon-print { background-position: -160px -96px; } |
||||
|
.ui-icon-trash { background-position: -176px -96px; } |
||||
|
.ui-icon-locked { background-position: -192px -96px; } |
||||
|
.ui-icon-unlocked { background-position: -208px -96px; } |
||||
|
.ui-icon-bookmark { background-position: -224px -96px; } |
||||
|
.ui-icon-tag { background-position: -240px -96px; } |
||||
|
.ui-icon-home { background-position: 0 -112px; } |
||||
|
.ui-icon-flag { background-position: -16px -112px; } |
||||
|
.ui-icon-calendar { background-position: -32px -112px; } |
||||
|
.ui-icon-cart { background-position: -48px -112px; } |
||||
|
.ui-icon-pencil { background-position: -64px -112px; } |
||||
|
.ui-icon-clock { background-position: -80px -112px; } |
||||
|
.ui-icon-disk { background-position: -96px -112px; } |
||||
|
.ui-icon-calculator { background-position: -112px -112px; } |
||||
|
.ui-icon-zoomin { background-position: -128px -112px; } |
||||
|
.ui-icon-zoomout { background-position: -144px -112px; } |
||||
|
.ui-icon-search { background-position: -160px -112px; } |
||||
|
.ui-icon-wrench { background-position: -176px -112px; } |
||||
|
.ui-icon-gear { background-position: -192px -112px; } |
||||
|
.ui-icon-heart { background-position: -208px -112px; } |
||||
|
.ui-icon-star { background-position: -224px -112px; } |
||||
|
.ui-icon-link { background-position: -240px -112px; } |
||||
|
.ui-icon-cancel { background-position: 0 -128px; } |
||||
|
.ui-icon-plus { background-position: -16px -128px; } |
||||
|
.ui-icon-plusthick { background-position: -32px -128px; } |
||||
|
.ui-icon-minus { background-position: -48px -128px; } |
||||
|
.ui-icon-minusthick { background-position: -64px -128px; } |
||||
|
.ui-icon-close { background-position: -80px -128px; } |
||||
|
.ui-icon-closethick { background-position: -96px -128px; } |
||||
|
.ui-icon-key { background-position: -112px -128px; } |
||||
|
.ui-icon-lightbulb { background-position: -128px -128px; } |
||||
|
.ui-icon-scissors { background-position: -144px -128px; } |
||||
|
.ui-icon-clipboard { background-position: -160px -128px; } |
||||
|
.ui-icon-copy { background-position: -176px -128px; } |
||||
|
.ui-icon-contact { background-position: -192px -128px; } |
||||
|
.ui-icon-image { background-position: -208px -128px; } |
||||
|
.ui-icon-video { background-position: -224px -128px; } |
||||
|
.ui-icon-script { background-position: -240px -128px; } |
||||
|
.ui-icon-alert { background-position: 0 -144px; } |
||||
|
.ui-icon-info { background-position: -16px -144px; } |
||||
|
.ui-icon-notice { background-position: -32px -144px; } |
||||
|
.ui-icon-help { background-position: -48px -144px; } |
||||
|
.ui-icon-check { background-position: -64px -144px; } |
||||
|
.ui-icon-bullet { background-position: -80px -144px; } |
||||
|
.ui-icon-radio-off { background-position: -96px -144px; } |
||||
|
.ui-icon-radio-on { background-position: -112px -144px; } |
||||
|
.ui-icon-pin-w { background-position: -128px -144px; } |
||||
|
.ui-icon-pin-s { background-position: -144px -144px; } |
||||
|
.ui-icon-play { background-position: 0 -160px; } |
||||
|
.ui-icon-pause { background-position: -16px -160px; } |
||||
|
.ui-icon-seek-next { background-position: -32px -160px; } |
||||
|
.ui-icon-seek-prev { background-position: -48px -160px; } |
||||
|
.ui-icon-seek-end { background-position: -64px -160px; } |
||||
|
.ui-icon-seek-first { background-position: -80px -160px; } |
||||
|
.ui-icon-stop { background-position: -96px -160px; } |
||||
|
.ui-icon-eject { background-position: -112px -160px; } |
||||
|
.ui-icon-volume-off { background-position: -128px -160px; } |
||||
|
.ui-icon-volume-on { background-position: -144px -160px; } |
||||
|
.ui-icon-power { background-position: 0 -176px; } |
||||
|
.ui-icon-signal-diag { background-position: -16px -176px; } |
||||
|
.ui-icon-signal { background-position: -32px -176px; } |
||||
|
.ui-icon-battery-0 { background-position: -48px -176px; } |
||||
|
.ui-icon-battery-1 { background-position: -64px -176px; } |
||||
|
.ui-icon-battery-2 { background-position: -80px -176px; } |
||||
|
.ui-icon-battery-3 { background-position: -96px -176px; } |
||||
|
.ui-icon-circle-plus { background-position: 0 -192px; } |
||||
|
.ui-icon-circle-minus { background-position: -16px -192px; } |
||||
|
.ui-icon-circle-close { background-position: -32px -192px; } |
||||
|
.ui-icon-circle-triangle-e { background-position: -48px -192px; } |
||||
|
.ui-icon-circle-triangle-s { background-position: -64px -192px; } |
||||
|
.ui-icon-circle-triangle-w { background-position: -80px -192px; } |
||||
|
.ui-icon-circle-triangle-n { background-position: -96px -192px; } |
||||
|
.ui-icon-circle-arrow-e { background-position: -112px -192px; } |
||||
|
.ui-icon-circle-arrow-s { background-position: -128px -192px; } |
||||
|
.ui-icon-circle-arrow-w { background-position: -144px -192px; } |
||||
|
.ui-icon-circle-arrow-n { background-position: -160px -192px; } |
||||
|
.ui-icon-circle-zoomin { background-position: -176px -192px; } |
||||
|
.ui-icon-circle-zoomout { background-position: -192px -192px; } |
||||
|
.ui-icon-circle-check { background-position: -208px -192px; } |
||||
|
.ui-icon-circlesmall-plus { background-position: 0 -208px; } |
||||
|
.ui-icon-circlesmall-minus { background-position: -16px -208px; } |
||||
|
.ui-icon-circlesmall-close { background-position: -32px -208px; } |
||||
|
.ui-icon-squaresmall-plus { background-position: -48px -208px; } |
||||
|
.ui-icon-squaresmall-minus { background-position: -64px -208px; } |
||||
|
.ui-icon-squaresmall-close { background-position: -80px -208px; } |
||||
|
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } |
||||
|
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } |
||||
|
.ui-icon-grip-solid-vertical { background-position: -32px -224px; } |
||||
|
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } |
||||
|
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } |
||||
|
.ui-icon-grip-diagonal-se { background-position: -80px -224px; } |
||||
|
|
||||
|
|
||||
|
/* Misc visuals |
||||
|
----------------------------------*/ |
||||
|
|
||||
|
/* Corner radius */ |
||||
|
.ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-top { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-right { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-left { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; } |
||||
|
.ui-corner-all { -moz-border-radius: 0px/*{cornerRadius}*/; -webkit-border-radius: 0px/*{cornerRadius}*/; } |
||||
|
|
||||
|
/* Overlays */ |
||||
|
.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ none/*{bgImgUrlOverlay}*/ 0/*{bgOverlayXPos}*/ 0/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } |
||||
|
.ui-widget-shadow { margin: -4px/*{offsetTopShadow}*/ 0 0 -4px/*{offsetLeftShadow}*/; padding: 4px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ none/*{bgImgUrlShadow}*/ 0/*{bgShadowXPos}*/ 0/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .35;filter:Alpha(Opacity=35)/*{opacityShadow}*/; -moz-border-radius: 4px/*{cornerRadiusShadow}*/; -webkit-border-radius: 4px/*{cornerRadiusShadow}*/; } |
@ -0,0 +1,12 @@ |
|||||
|
@font-face { |
||||
|
font-family: 'Source Sans Pro'; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('previewfonts/SourceSansPro-Regular.woff2') format('woff2'), url('previewfonts/SourceSansPro-Regular.woff') format('woff'); |
||||
|
} |
||||
|
@font-face { |
||||
|
font-family: 'Source Sans Pro Semibold'; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
src: local('Source Sans Pro Semibold'), local('SourceSansPro-Semibold'), url('previewfonts/SourceSansPro-Semibold.woff2') format('woff2'), url('previewfonts/SourceSansPro-Semibold.woff') format('woff'); |
||||
|
} |
@ -0,0 +1,93 @@ |
|||||
|
Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. |
||||
|
|
||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1. |
||||
|
This license is copied below, and is also available with a FAQ at: |
||||
|
http://scripts.sil.org/OFL |
||||
|
|
||||
|
|
||||
|
----------------------------------------------------------- |
||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 |
||||
|
----------------------------------------------------------- |
||||
|
|
||||
|
PREAMBLE |
||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide |
||||
|
development of collaborative font projects, to support the font creation |
||||
|
efforts of academic and linguistic communities, and to provide a free and |
||||
|
open framework in which fonts may be shared and improved in partnership |
||||
|
with others. |
||||
|
|
||||
|
The OFL allows the licensed fonts to be used, studied, modified and |
||||
|
redistributed freely as long as they are not sold by themselves. The |
||||
|
fonts, including any derivative works, can be bundled, embedded, |
||||
|
redistributed and/or sold with any software provided that any reserved |
||||
|
names are not used by derivative works. The fonts and derivatives, |
||||
|
however, cannot be released under any other type of license. The |
||||
|
requirement for fonts to remain under this license does not apply |
||||
|
to any document created using the fonts or their derivatives. |
||||
|
|
||||
|
DEFINITIONS |
||||
|
"Font Software" refers to the set of files released by the Copyright |
||||
|
Holder(s) under this license and clearly marked as such. This may |
||||
|
include source files, build scripts and documentation. |
||||
|
|
||||
|
"Reserved Font Name" refers to any names specified as such after the |
||||
|
copyright statement(s). |
||||
|
|
||||
|
"Original Version" refers to the collection of Font Software components as |
||||
|
distributed by the Copyright Holder(s). |
||||
|
|
||||
|
"Modified Version" refers to any derivative made by adding to, deleting, |
||||
|
or substituting -- in part or in whole -- any of the components of the |
||||
|
Original Version, by changing formats or by porting the Font Software to a |
||||
|
new environment. |
||||
|
|
||||
|
"Author" refers to any designer, engineer, programmer, technical |
||||
|
writer or other person who contributed to the Font Software. |
||||
|
|
||||
|
PERMISSION & CONDITIONS |
||||
|
Permission is hereby granted, free of charge, to any person obtaining |
||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify, |
||||
|
redistribute, and sell modified and unmodified copies of the Font |
||||
|
Software, subject to the following conditions: |
||||
|
|
||||
|
1) Neither the Font Software nor any of its individual components, |
||||
|
in Original or Modified Versions, may be sold by itself. |
||||
|
|
||||
|
2) Original or Modified Versions of the Font Software may be bundled, |
||||
|
redistributed and/or sold with any software, provided that each copy |
||||
|
contains the above copyright notice and this license. These can be |
||||
|
included either as stand-alone text files, human-readable headers or |
||||
|
in the appropriate machine-readable metadata fields within text or |
||||
|
binary files as long as those fields can be easily viewed by the user. |
||||
|
|
||||
|
3) No Modified Version of the Font Software may use the Reserved Font |
||||
|
Name(s) unless explicit written permission is granted by the corresponding |
||||
|
Copyright Holder. This restriction only applies to the primary font name as |
||||
|
presented to the users. |
||||
|
|
||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font |
||||
|
Software shall not be used to promote, endorse or advertise any |
||||
|
Modified Version, except to acknowledge the contribution(s) of the |
||||
|
Copyright Holder(s) and the Author(s) or with their explicit written |
||||
|
permission. |
||||
|
|
||||
|
5) The Font Software, modified or unmodified, in part or in whole, |
||||
|
must be distributed entirely under this license, and must not be |
||||
|
distributed under any other license. The requirement for fonts to |
||||
|
remain under this license does not apply to any document created |
||||
|
using the Font Software. |
||||
|
|
||||
|
TERMINATION |
||||
|
This license becomes null and void if any of the above conditions are |
||||
|
not met. |
||||
|
|
||||
|
DISCLAIMER |
||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF |
||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT |
||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE |
||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL |
||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM |
||||
|
OTHER DEALINGS IN THE FONT SOFTWARE. |
@ -0,0 +1,24 @@ |
|||||
|
html,body,div,span, |
||||
|
applet,object,iframe, |
||||
|
h1,h2,h3,h4,h5,h6,p,blockquote,pre, |
||||
|
a,abbr,acronym,address,big,cite,code, |
||||
|
del,dfn,em,font,img,ins,kbd,q,s,samp, |
||||
|
small,strike,strong,sub,sup,tt,var, |
||||
|
dd,dl,dt,li,ol,ul, |
||||
|
fieldset,form,label,legend, |
||||
|
table,caption,tbody,tfoot,thead,tr,th,td { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
border: 0; |
||||
|
} |
||||
|
table { |
||||
|
border-collapse: collapse; |
||||
|
border-spacing: 0; |
||||
|
} |
||||
|
ol,ul { |
||||
|
list-style: none; |
||||
|
} |
||||
|
q:before,q:after, |
||||
|
blockquote:before,blockquote:after { |
||||
|
content: ""; |
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
html, |
||||
|
body { |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
padding-top: 40px; |
||||
|
padding-bottom: 40px; |
||||
|
background-color: #f5f5f5; |
||||
|
} |
||||
|
|
||||
|
.form-signin { |
||||
|
max-width: 400px; |
||||
|
padding: 15px; |
||||
|
} |
||||
|
|
||||
|
.form-signin .form-floating:focus-within { |
||||
|
z-index: 2; |
||||
|
} |
||||
|
|
||||
|
.form-signin input[type="text"] { |
||||
|
margin-bottom: 5px; |
||||
|
border-bottom-right-radius: 0; |
||||
|
border-bottom-left-radius: 0; |
||||
|
} |
||||
|
|
||||
|
.form-signin input[type="password"] { |
||||
|
margin-bottom: 10px; |
||||
|
border-top-left-radius: 0; |
||||
|
border-top-right-radius: 0; |
||||
|
} |
@ -0,0 +1,60 @@ |
|||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
||||
|
<html> |
||||
|
<head> |
||||
|
<title></title> |
||||
|
<link type="text/css" href="css/default.css" rel="Stylesheet" /> |
||||
|
<script type="text/javascript" src="scripts/jquery-3.2.1.min.js"></script> |
||||
|
<script type="text/javascript" src="scripts/messagecenter.js"></script> |
||||
|
<script type="text/javascript"> |
||||
|
<!-- |
||||
|
$(document).ready(function () { |
||||
|
$axure.messageCenter.addMessageListener(messageCenter_message); |
||||
|
function messageCenter_message(message, data) { |
||||
|
if(message == 'collapseFrameOnLoad') { |
||||
|
setTimeout(function() { |
||||
|
$('#maximizePanel').animate({ |
||||
|
left:'-' + maxPanelWidth + 'px' |
||||
|
}, 300); |
||||
|
}, 2000); |
||||
|
} |
||||
|
} |
||||
|
$axure.messageCenter.postMessage('getCollapseFrameOnLoad'); |
||||
|
|
||||
|
if(MOBILE_DEVICE) { |
||||
|
$('#maximizePanel').height('45px'); |
||||
|
} |
||||
|
var maxPanelWidth = $('#maximizePanel').width(); |
||||
|
|
||||
|
$('#maximizePanel').click(function () { |
||||
|
$(this).removeClass('maximizePanelOver'); |
||||
|
$axure.messageCenter.postMessage('expandFrame'); |
||||
|
}); |
||||
|
|
||||
|
if(!MOBILE_DEVICE) { |
||||
|
$('#maximizePanel').mouseenter(function() { |
||||
|
$(this).addClass('maximizePanelOver'); |
||||
|
}); |
||||
|
$('#maximizePanel').mouseleave(function() { |
||||
|
if($(this).hasClass('maximizePanelOver')) { |
||||
|
$(this).animate({ |
||||
|
left:'-' + maxPanelWidth + 'px' |
||||
|
}, 300); |
||||
|
} |
||||
|
$(this).removeClass('maximizePanelOver'); |
||||
|
}); |
||||
|
$('#maximizePanelOver').mouseenter(function() { |
||||
|
$('#maximizePanel').animate({ |
||||
|
left:'0px' |
||||
|
}, 100); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
--></script> |
||||
|
</head> |
||||
|
<body style="background-color: transparent;"> |
||||
|
<div id="maximizePanelOver"> |
||||
|
<div id="maximizePanel" class="maximizePanel" title="Expand"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</body> |
||||
|
</html> |
After Width: | Height: | Size: 162 B |
After Width: | Height: | Size: 164 B |
After Width: | Height: | Size: 260 B |
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 110 B |
After Width: | Height: | Size: 691 B |
After Width: | Height: | Size: 680 B |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 272 B |