├── js ├── firebase-key.js ├── i18n.js ├── templating.js ├── source │ └── tablechamp-index.js ├── iris.min.js └── jquery-ui.min.js ├── firebase.json ├── .gitignore ├── database.rules.json ├── LICENSE.txt ├── index.html ├── css ├── sass │ └── css ├── login.css └── tablechamp.css ├── i18n ├── zh.js ├── ko.js ├── ja.js ├── en.js ├── sv.js ├── da.js ├── hi.js ├── id.js ├── ru.js ├── pt.js ├── fr.js ├── es.js ├── de.js └── it.js ├── firebase-debug.log ├── README.md └── app.html /js/firebase-key.js: -------------------------------------------------------------------------------- 1 | var cs = { 2 | "apiKey": '', 3 | "authDomain": '', 4 | "databaseURL": '' 5 | }; -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "database": { 3 | "rules": "database.rules.json" 4 | }, 5 | "public": "." 6 | } 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | package.json 4 | npm-debug.log 5 | main.js 6 | .sass-cache 7 | *.map 8 | *.scss -------------------------------------------------------------------------------- /database.rules.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | ".read": "auth != null", 4 | ".write": "auth != null" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /js/i18n.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | var lang = localStorage.getItem('lang') || 'en'; 3 | // Load language file 4 | var head = document.getElementsByTagName('head')[0]; 5 | var script = document.createElement('script'); 6 | script.type = 'text/javascript'; 7 | script.async = false; 8 | script.src = 'i18n/' + lang + '.js'; 9 | head.appendChild(script); 10 | // Add to body 11 | $('body').addClass(lang); 12 | })(jQuery); -------------------------------------------------------------------------------- /js/templating.js: -------------------------------------------------------------------------------- 1 | // Simple JavaScript Templating 2 | // John Resig - http://ejohn.org/blog/javascript-micro-templating/ - MIT Licensed 3 | (function(){var b={};this.tmpl=function e(a,c){var d=/\W/.test(a)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):b[a]=b[a]||e(document.getElementById(a).innerHTML);return c?d(c):d}})(); -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2018 David Martin 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TableChamp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 32 | 33 | -------------------------------------------------------------------------------- /css/sass/css: -------------------------------------------------------------------------------- 1 | /* 2 | Errno::ENOENT: No such file or directory - css/sass 3 | 4 | Backtrace: 5 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/plugin/compiler.rb:484:in `read' 6 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/plugin/compiler.rb:484:in `update_stylesheet' 7 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets' 8 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/plugin/compiler.rb:209:in `each' 9 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/plugin/compiler.rb:209:in `update_stylesheets' 10 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/plugin/compiler.rb:294:in `watch' 11 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/plugin.rb:109:in `method_missing' 12 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/exec/sass_scss.rb:360:in `watch_or_update' 13 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/exec/sass_scss.rb:51:in `process_result' 14 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/exec/base.rb:52:in `parse' 15 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/lib/sass/exec/base.rb:19:in `parse!' 16 | /Library/Ruby/Gems/2.0.0/gems/sass-3.4.22/bin/sass:13:in `' 17 | /usr/local/bin/sass:23:in `load' 18 | /usr/local/bin/sass:23:in `
' 19 | */ 20 | body:before { 21 | white-space: pre; 22 | font-family: monospace; 23 | content: "Errno::ENOENT: No such file or directory - css/sass"; } 24 | -------------------------------------------------------------------------------- /js/source/tablechamp-index.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $(window).load(function(){ 3 | initConnectionSettings(); 4 | }); 5 | function initConnectionSettings() { 6 | // Show login form 7 | $('.login').html(tmpl('loginForm', { 8 | "email" : i18n.index.loginForm.email, 9 | "password" : i18n.index.loginForm.password, 10 | "button" : i18n.index.loginForm.button 11 | })).show(); 12 | // Load settings 13 | loadFirebaseSettings(cs); 14 | } 15 | // Init login 16 | function init() { 17 | try { 18 | initLoginForm(); 19 | } 20 | catch(err) { 21 | console.log(err); 22 | } 23 | } 24 | function initLoginForm() { 25 | var auth = firebase.auth(), 26 | database = firebase.database(); 27 | // Login 28 | $('.login form').on('submit', function() { 29 | // Grab values 30 | var email = $('input[name="email"]').val(), 31 | password = $('input[name="password"]').val(); 32 | // Submit 33 | auth.signInWithEmailAndPassword(email, password).catch(function(error) { 34 | // Handle Errors here. 35 | var errorCode = error.code; 36 | var errorMessage = error.message; 37 | console.log(errorMessage); 38 | $('.errors').text(errorMessage).addClass('show'); 39 | }); 40 | return false; 41 | }); 42 | // Auth Observer 43 | auth.onAuthStateChanged(function(user) { 44 | if (user) { 45 | window.location = "./app.html"; 46 | } 47 | }); 48 | } 49 | function loadFirebaseSettings(cs) { 50 | if (typeof firebase !== 'undefined') { 51 | var config = { 52 | apiKey: cs.apiKey, 53 | authDomain: cs.authDomain, 54 | databaseURL: cs.databaseURL 55 | }; 56 | firebase.initializeApp(config); 57 | init(); 58 | } 59 | } 60 | })(jQuery); -------------------------------------------------------------------------------- /i18n/zh.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "添加分數", 5 | "doubles" : "雙打", 6 | "logOut" : "登出", 7 | "settings" : "設置", 8 | "singles" : "單打" 9 | }, 10 | "global" : { 11 | "nextButton" : "下一個" 12 | }, 13 | "loader" : { 14 | "loading" : "載入中" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "同一個球員不能在兩個隊", 18 | "bothTeamsNumber" : "選擇兩個球隊的球員數量相同", 19 | "colorUpdated" : "顏色更新", 20 | "gameAdded" : "遊戲添加", 21 | "gameTypeUpdated" : "遊戲類型更新", 22 | "gameUndone" : "遊戲成功撤消", 23 | "keepPlaying" : "繼續玩", 24 | "maxTwo" : "從每個小組中選擇最多兩個玩家", 25 | "nameUpdated" : "名稱已更新", 26 | "notConnected" : "未連接", 27 | "noTies" : "不允許領帶遊戲", 28 | "onePlayer" : "從每個團隊中至少選擇一個球員", 29 | "playerAdded" : "播放器已添加", 30 | "playerDeleted" : "播放器已刪除", 31 | "playerStatusUpdated" : "玩家狀態已更新", 32 | "playerUpdated" : "播放器更新", 33 | "scoreBoth" : "輸入兩個球隊的分數", 34 | "undo" : "撤消" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "刪除" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "添加新分數", 41 | "addScoreTitle" : "添加分數", 42 | "teamOnePlayers" : "選擇隊一個球員", 43 | "teamOneScore" : "團隊一分", 44 | "teamTwoPlayers" : "選擇隊兩個球員", 45 | "teamTwoScore" : "團隊兩分" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "公司或俱樂部名稱", 49 | "gameAirHockey" : "空氣曲棍球", 50 | "gameBilliards" : "台球", 51 | "gameFoosball" : "桌上足球", 52 | "gameShuffleboard" : "沙狐球", 53 | "gameTableTennis" : "乒乓球", 54 | "language" : "語言", 55 | "orgName" : "您的組織的名稱是什麼", 56 | "whatGame" : "你會玩什麼遊戲" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "突出顯示顏色", 60 | "primaryBackground" : "主要背景", 61 | "primaryButton" : "主按鈕", 62 | "primaryText" : "主文本", 63 | "resetColors" : "重置顏色", 64 | "secondaryBackground" : "次要背景", 65 | "secondaryText" : "次要文本" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "添加玩家", 69 | "onePerLine" : "每行輸入一個玩家名稱" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "管理登錄" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "設置" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "基本", 79 | "colors" : "顏色", 80 | "players" : "玩家", 81 | "users" : "用戶" 82 | }, 83 | "stats" : { 84 | "forText" : "對於", 85 | "playerStats" : "玩家統計" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "雙打", 89 | "gamesLost" : "遊戲輸了", 90 | "gamesPlayed" : "玩遊戲", 91 | "gamesWon" : "遊戲贏了", 92 | "ranking" : "排行", 93 | "singles" : "單打" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "提交" 99 | }, 100 | "loginForm" : { 101 | "email" : "電子郵件", 102 | "password" : "密碼", 103 | "button" : "簽到" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/ko.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "점수 추가", 5 | "doubles" : "더블스", 6 | "logOut" : "로그 아웃", 7 | "settings" : "설정", 8 | "singles" : "단식" 9 | }, 10 | "global" : { 11 | "nextButton" : "다음 것" 12 | }, 13 | "loader" : { 14 | "loading" : "로드 중" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "같은 선수가 두 팀에 출전 할 수 없습니다.", 18 | "bothTeamsNumber" : "두 팀에서 같은 수의 선수를 선택하십시오.", 19 | "colorUpdated" : "색상 업데이트 됨", 20 | "gameAdded" : "추가 된 게임", 21 | "gameTypeUpdated" : "게임 유형 업데이트 됨", 22 | "gameUndone" : "게임을 성공적으로 실행 취소했습니다.", 23 | "keepPlaying" : "계속 놀아 라.", 24 | "maxTwo" : "각 팀에서 최대 두 명을 선택하십시오.", 25 | "nameUpdated" : "이름 업데이트 됨", 26 | "notConnected" : "연결되지 않은", 27 | "noTies" : "동점 게임은 허용되지 않습니다.", 28 | "onePlayer" : "각 팀에서 적어도 한 명 이상의 선수를 선택하십시오.", 29 | "playerAdded" : "플레이어가 추가되었습니다.", 30 | "playerDeleted" : "플레이어가 삭제되었습니다.", 31 | "playerStatusUpdated" : "플레이어 상태 업데이트 됨", 32 | "playerUpdated" : "플레이어 업데이트", 33 | "scoreBoth" : "두 팀의 점수 입력", 34 | "undo" : "끄르다" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "지우다" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "새 점수 추가", 41 | "addScoreTitle" : "점수 추가", 42 | "teamOnePlayers" : "팀 1 명 선택", 43 | "teamOneScore" : "팀 1 점", 44 | "teamTwoPlayers" : "팀 2 명 선택", 45 | "teamTwoScore" : "팀 2 골" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "회사 또는 클럽 이름", 49 | "gameAirHockey" : "에어 하키", 50 | "gameBilliards" : "당구", 51 | "gameFoosball" : "주류", 52 | "gameShuffleboard" : "셔플 보드", 53 | "gameTableTennis" : "탁구", 54 | "language" : "언어", 55 | "orgName" : "조직의 이름은 무엇입니까", 56 | "whatGame" : "어떤 게임을 할거야" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "하이라이트 색상", 60 | "primaryBackground" : "기본 배경", 61 | "primaryButton" : "기본 버튼", 62 | "primaryText" : "기본 텍스트", 63 | "resetColors" : "색상 재설정", 64 | "secondaryBackground" : "2 차 배경", 65 | "secondaryText" : "보조 텍스트" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "플레이어 추가", 69 | "onePerLine" : "한 줄에 하나의 플레이어 이름 입력" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "로그인은에서 관리됩니다." 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "설정" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "기초", 79 | "colors" : "그림 물감", 80 | "players" : "플레이어", 81 | "users" : "사용자" 82 | }, 83 | "stats" : { 84 | "forText" : "", 85 | "playerStats" : "선수 통계" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "더블스", 89 | "gamesLost" : "잃어버린 게임들", 90 | "gamesPlayed" : "경기 수", 91 | "gamesWon" : "게임 원", 92 | "ranking" : "순위", 93 | "singles" : "단식" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "제출" 99 | }, 100 | "loginForm" : { 101 | "email" : "이메일", 102 | "password" : "암호", 103 | "button" : "로그인" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/ja.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "スコアを加算する", 5 | "doubles" : "ダブルス", 6 | "logOut" : "ログアウト", 7 | "settings" : "設定", 8 | "singles" : "シングルス" 9 | }, 10 | "global" : { 11 | "nextButton" : "次" 12 | }, 13 | "loader" : { 14 | "loading" : "読み込み中" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "同じプレーヤーが両方のチームに参加することはできません", 18 | "bothTeamsNumber" : "両方のチームで同じ数の選手を選ぶ", 19 | "colorUpdated" : "色が更新されました", 20 | "gameAdded" : "追加されたゲーム", 21 | "gameTypeUpdated" : "更新されたゲームタイプ", 22 | "gameUndone" : "ゲームを元に戻す", 23 | "keepPlaying" : "再生し続けます", 24 | "maxTwo" : "各チームから最大2人の選手を選ぶ", 25 | "nameUpdated" : "名前が更新されました", 26 | "notConnected" : "接続されていません", 27 | "noTies" : "タイゲームは許可されていません", 28 | "onePlayer" : "各チームから最低1人の選手を選ぶ", 29 | "playerAdded" : "プレーヤーが追加されました", 30 | "playerDeleted" : "プレーヤーが削除されました", 31 | "playerStatusUpdated" : "プレーヤーステータスの更新", 32 | "playerUpdated" : "プレーヤーの更新", 33 | "scoreBoth" : "両方のチームのスコアを入力してください", 34 | "undo" : "元に戻す" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "削除" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "新しいスコアを追加", 41 | "addScoreTitle" : "スコアを加算する", 42 | "teamOnePlayers" : "選手一人選手", 43 | "teamOneScore" : "チーム1得点", 44 | "teamTwoPlayers" : "チームを2人選ぶ", 45 | "teamTwoScore" : "チーム2得点" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "会社名またはクラブ名", 49 | "gameAirHockey" : "エアホッケー", 50 | "gameBilliards" : "ビリヤード", 51 | "gameFoosball" : "フーズボール", 52 | "gameShuffleboard" : "シャッフルボード", 53 | "gameTableTennis" : "卓球", 54 | "language" : "言語", 55 | "orgName" : "あなたの組織の名前は何ですか", 56 | "whatGame" : "どのゲームをプレイしますか" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "ハイライトの色", 60 | "primaryBackground" : "主な背景", 61 | "primaryButton" : "一次ボタン", 62 | "primaryText" : "主なテキスト", 63 | "resetColors" : "色をリセットする", 64 | "secondaryBackground" : "二次的背景", 65 | "secondaryText" : "セカンダリテキスト" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "プレーヤーを追加する", 69 | "onePerLine" : "1人のプレイヤー名を1行に入力する" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "ログインは" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "設定" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "基本", 79 | "colors" : "色", 80 | "players" : "プレーヤー", 81 | "users" : "ユーザー" 82 | }, 83 | "stats" : { 84 | "forText" : "ために", 85 | "playerStats" : "プレーヤー統計" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "ダブルス", 89 | "gamesLost" : "失われたゲーム", 90 | "gamesPlayed" : "試合中の試合", 91 | "gamesWon" : "ゲームは勝った", 92 | "ranking" : "ランキング", 93 | "singles" : "シングルス" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "提出する" 99 | }, 100 | "loginForm" : { 101 | "email" : "Eメール", 102 | "password" : "パスワード", 103 | "button" : "サインイン" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/en.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Add Score", 5 | "doubles" : "Doubles", 6 | "logOut" : "Log Out", 7 | "settings" : "Settings", 8 | "singles" : "Singles" 9 | }, 10 | "global" : { 11 | "nextButton" : "Next tab" 12 | }, 13 | "loader" : { 14 | "loading" : "Loading" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "The same player can't be on both teams", 18 | "bothTeamsNumber" : "Select the same number of players on both teams", 19 | "colorUpdated" : "Color Updated", 20 | "gameAdded" : "Game Added", 21 | "gameTypeUpdated" : "Game Type Updated", 22 | "gameUndone" : "Game successfully undone", 23 | "keepPlaying" : "Keep playing", 24 | "maxTwo" : "Select a max of two players from each team", 25 | "nameUpdated" : "Name Updated", 26 | "notConnected" : "Not connected", 27 | "noTies" : "Tie games are not allowed", 28 | "onePlayer" : "Select at least one player from each team", 29 | "playerAdded" : "Player Added", 30 | "playerDeleted" : "Player Deleted", 31 | "playerStatusUpdated" : "Player Status Updated", 32 | "playerUpdated" : "Player Updated", 33 | "scoreBoth" : "Enter a score for both teams", 34 | "undo" : "Undo" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Delete" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Add new score", 41 | "addScoreTitle" : "Add Score", 42 | "teamOnePlayers" : "Select team one players", 43 | "teamOneScore" : "Team one score", 44 | "teamTwoPlayers" : "Select team two players", 45 | "teamTwoScore" : "Team two score" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Company or club name", 49 | "gameAirHockey" : "Air Hockey", 50 | "gameBilliards" : "Billiards", 51 | "gameFoosball" : "Foosball", 52 | "gameShuffleboard" : "Shuffleboard", 53 | "gameTableTennis" : "Table Tennis", 54 | "language" : "Language", 55 | "orgName" : "What is the name of your organization", 56 | "whatGame" : "What game will you be playing" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "Highlight color", 60 | "primaryBackground" : "Primary background", 61 | "primaryButton" : "Primary button", 62 | "primaryText" : "Primary text", 63 | "resetColors" : "Reset to default colors", 64 | "secondaryBackground" : "Secondary background", 65 | "secondaryText" : "Secondary text" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Add Players", 69 | "onePerLine" : "Enter one players name per line" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Logins are managed on" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "Settings" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "Basics", 79 | "colors" : "Colors", 80 | "players" : "Players", 81 | "users" : "Users" 82 | }, 83 | "stats" : { 84 | "forText" : "for", 85 | "playerStats" : "Player Stats" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "Doubles", 89 | "gamesLost" : "Games lost", 90 | "gamesPlayed" : "Games played", 91 | "gamesWon" : "Games won", 92 | "ranking" : "Ranking", 93 | "singles" : "Singles" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Submit" 99 | }, 100 | "loginForm" : { 101 | "email" : "Email", 102 | "password" : "Password", 103 | "button" : "Sign In" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/sv.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Lägg Score", 5 | "doubles" : "Dubbel", 6 | "logOut" : "Logga ut", 7 | "settings" : "inställningar", 8 | "singles" : "Singel" 9 | }, 10 | "global" : { 11 | "nextButton" : "Nästa" 12 | }, 13 | "loader" : { 14 | "loading" : "Läser in" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "Samma spelare kan inte vara på båda lagen", 18 | "bothTeamsNumber" : "Välj samma antal spelare på båda lagen", 19 | "colorUpdated" : "färg Uppdaterad", 20 | "gameAdded" : "Game Tillagt", 21 | "gameTypeUpdated" : "Speltyp Uppdaterad", 22 | "gameUndone" : "Game framgångsrikt ångra", 23 | "keepPlaying" : "Fortsätta spela", 24 | "maxTwo" : "Välj max två spelare från varje lag", 25 | "nameUpdated" : "namn Uppdaterat", 26 | "notConnected" : "Ej ansluten", 27 | "noTies" : "Tie spel är inte tillåtet", 28 | "onePlayer" : "Välj åtminstone en spelare från varje lag", 29 | "playerAdded" : "spelare tillagd", 30 | "playerDeleted" : "spelare Deleted", 31 | "playerStatusUpdated" : "Spelare Status Uppdaterad", 32 | "playerUpdated" : "spelare Uppdaterad", 33 | "scoreBoth" : "Enter a score for both teams", 34 | "undo" : "Ångra" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Radera" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Lägg till nya poäng", 41 | "addScoreTitle" : "Lägg Score", 42 | "teamOnePlayers" : "Välj lag en spelare", 43 | "teamOneScore" : "Team en poäng", 44 | "teamTwoPlayers" : "Välj laget två spelare", 45 | "teamTwoScore" : "Team två poäng" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Företag eller klubbnamn", 49 | "gameAirHockey" : "Luft-hockey", 50 | "gameBilliards" : "Biljard", 51 | "gameFoosball" : "foosball", 52 | "gameShuffleboard" : "shuffleboard", 53 | "gameTableTennis" : "Bordtennis", 54 | "language" : "Språk", 55 | "orgName" : "Vad är namnet på din organisation", 56 | "whatGame" : "Vilket spel kommer du att spela" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "markeringsfärg", 60 | "primaryBackground" : "primära bakgrund", 61 | "primaryButton" : "primär knapp", 62 | "primaryText" : "primär text", 63 | "resetColors" : "Återställ färger", 64 | "secondaryBackground" : "sekundär bakgrund", 65 | "secondaryText" : "Sekundär text" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Lägg Spelare", 69 | "onePerLine" : "Ange en spelare namn per rad" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Inloggningar hanteras på" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "inställningar" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "Grunderna", 79 | "colors" : "Färger", 80 | "players" : "spelare", 81 | "users" : "användare" 82 | }, 83 | "stats" : { 84 | "forText" : "för", 85 | "playerStats" : "spelarstatistik" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "Dubbel", 89 | "gamesLost" : "förlorade", 90 | "gamesPlayed" : "Spelade spel", 91 | "gamesWon" : "Spel vunna", 92 | "ranking" : "Rankning", 93 | "singles" : "Singel" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Lämna" 99 | }, 100 | "loginForm" : { 101 | "email" : "E-post", 102 | "password" : "Lösenord", 103 | "button" : "Logga in" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/da.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Tilføj score", 5 | "doubles" : "double", 6 | "logOut" : "Log ud", 7 | "settings" : "Indstillinger", 8 | "singles" : "singler" 9 | }, 10 | "global" : { 11 | "nextButton" : "Næste" 12 | }, 13 | "loader" : { 14 | "loading" : "Indlæser" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "Den samme spiller kan ikke være på begge hold", 18 | "bothTeamsNumber" : "Vælg det samme antal spillere på begge hold", 19 | "colorUpdated" : "Color Opdateret", 20 | "gameAdded" : "Spil tilføjet", 21 | "gameTypeUpdated" : "Spiltype Opdateret", 22 | "gameUndone" : "Spil fortrydes med succes", 23 | "keepPlaying" : "Spil videre", 24 | "maxTwo" : "Vælg en max to spillere fra hvert hold", 25 | "nameUpdated" : "Navn Opdateret", 26 | "notConnected" : "Ikke forbundet", 27 | "noTies" : "Tie spil er ikke tilladt", 28 | "onePlayer" : "Vælg mindst en spiller fra hvert hold", 29 | "playerAdded" : "Spiller tilføjet", 30 | "playerDeleted" : "Spiller Slettet", 31 | "playerStatusUpdated" : "Spiller Senest opdateret", 32 | "playerUpdated" : "Spiller Opdateret", 33 | "scoreBoth" : "Indtast en score for begge hold", 34 | "undo" : "Fortryd" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Slet" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Tilføj ny score", 41 | "addScoreTitle" : "Tilføj score", 42 | "teamOnePlayers" : "Vælg hold én spillere", 43 | "teamOneScore" : "Team én score", 44 | "teamTwoPlayers" : "Vælg hold to spillere", 45 | "teamTwoScore" : "Team to score" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Firma eller klub navn", 49 | "gameAirHockey" : "Air Hockey", 50 | "gameBilliards" : "Billard", 51 | "gameFoosball" : "Bordfodbold", 52 | "gameShuffleboard" : "Shuffleboard", 53 | "gameTableTennis" : "Bordtennis", 54 | "language" : "Sprog", 55 | "orgName" : "Hvad er navnet på din organisation", 56 | "whatGame" : "Hvad spil vil du spille" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "Fremhæv farve", 60 | "primaryBackground" : "Primær baggrund", 61 | "primaryButton" : "Primær knap", 62 | "primaryText" : "Primær tekst", 63 | "resetColors" : "Nulstil farver", 64 | "secondaryBackground" : "Sekundær baggrund", 65 | "secondaryText" : "Sekundær tekst" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Tilføj Spillere", 69 | "onePerLine" : "Indtast en spillere navn per linje" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Logins styres på" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "Indstillinger" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "Basics", 79 | "colors" : "farver", 80 | "players" : "Spillere", 81 | "users" : "Brugere" 82 | }, 83 | "stats" : { 84 | "forText" : "til", 85 | "playerStats" : "Spiller statistik" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "double", 89 | "gamesLost" : "Spil tabt", 90 | "gamesPlayed" : "spillede turneringer", 91 | "gamesWon" : "Spil vundet", 92 | "ranking" : "Ranking", 93 | "singles" : "singler" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Indsend" 99 | }, 100 | "loginForm" : { 101 | "email" : "E-mail", 102 | "password" : "Adgangskode", 103 | "button" : "Log ind" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/hi.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "स्कोर जोड़े", 5 | "doubles" : "डबल्स", 6 | "logOut" : "लोग आउट", 7 | "settings" : "सेटिंग्स", 8 | "singles" : "एकल" 9 | }, 10 | "global" : { 11 | "nextButton" : "आगामी" 12 | }, 13 | "loader" : { 14 | "loading" : "लोड हो रहा है" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "एक ही खिलाड़ी दोनों टीमों पर नहीं किया जा सकता", 18 | "bothTeamsNumber" : "दोनों टीमों के खिलाड़ियों के एक ही नंबर का चयन करें", 19 | "colorUpdated" : "रंग अद्यतन किया गया है", 20 | "gameAdded" : "खेल जोड़ा गया", 21 | "gameTypeUpdated" : "खेल के प्रकार अद्यतन किया गया है", 22 | "gameUndone" : "खेल को सफलतापूर्वक नष्ट कर दिया", 23 | "keepPlaying" : "खेलते रहो", 24 | "maxTwo" : "प्रत्येक टीम से दो खिलाड़ियों की एक अधिकतम चयन करें", 25 | "nameUpdated" : "नाम अद्यतन किया गया है", 26 | "notConnected" : "जुड़े नहीं हैं", 27 | "noTies" : "टाई खेल की अनुमति नहीं है", 28 | "onePlayer" : "प्रत्येक टीम से कम से कम एक खिलाड़ी का चयन करें", 29 | "playerAdded" : "प्लेयर जोड़ा गया", 30 | "playerDeleted" : "प्लेयर हटाए गए", 31 | "playerStatusUpdated" : "प्लेयर स्थिति अद्यतन", 32 | "playerUpdated" : "प्लेयर अद्यतन किया गया है", 33 | "scoreBoth" : "दोनों टीमों के लिए एक अंक दर्ज", 34 | "undo" : "पूर्ववत करें" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "मिटाना" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "नई स्कोर जोड़े", 41 | "addScoreTitle" : "स्कोर जोड़े", 42 | "teamOnePlayers" : "टीम का चयन एक खिलाड़ियों", 43 | "teamOneScore" : "टीम में एक स्कोर", 44 | "teamTwoPlayers" : "टीम का चयन दो खिलाड़ियों", 45 | "teamTwoScore" : "टीम दो अंक" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "कंपनी या क्लब के नाम", 49 | "gameAirHockey" : "एयर हॉकी", 50 | "gameBilliards" : "बिलियर्ड्स", 51 | "gameFoosball" : "Foosball", 52 | "gameShuffleboard" : "shuffleboard", 53 | "gameTableTennis" : "टेबल टेनिस", 54 | "language" : "भाषा", 55 | "orgName" : "अपने संगठन का नाम क्या है", 56 | "whatGame" : "आप क्या खेल खेल रहा होगा" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "हाइलाइट रंग", 60 | "primaryBackground" : "प्राथमिक पृष्ठभूमि", 61 | "primaryButton" : "प्राथमिक बटन", 62 | "primaryText" : "प्राथमिक पाठ", 63 | "resetColors" : "रीसेट रंग", 64 | "secondaryBackground" : "माध्यमिक पृष्ठभूमि", 65 | "secondaryText" : "माध्यमिक पाठ" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "खिलाड़ियों को जोड़े", 69 | "onePerLine" : "प्रति पंक्ति एक खिलाड़ियों नाम दर्ज करें" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "लॉगिन पर प्रबंधित कर रहे हैं" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "सेटिंग्स" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "मूल बातें", 79 | "colors" : "रंग की", 80 | "players" : "खिलाड़ियों", 81 | "users" : "उपयोगकर्ता" 82 | }, 83 | "stats" : { 84 | "forText" : "के लिये", 85 | "playerStats" : "प्लेयर आँकड़े" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "डबल्स", 89 | "gamesLost" : "खेलों खो दिया", 90 | "gamesPlayed" : "खेले गए खेल", 91 | "gamesWon" : "खेल जीता", 92 | "ranking" : "श्रेणी", 93 | "singles" : "एकल" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "जमा करें" 99 | }, 100 | "loginForm" : { 101 | "email" : "ईमेल", 102 | "password" : "पासवर्ड", 103 | "button" : "साइन इन करें" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/id.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Tambahkan Skor", 5 | "doubles" : "dobel", 6 | "logOut" : "Keluar", 7 | "settings" : "pengaturan", 8 | "singles" : "Satu" 9 | }, 10 | "global" : { 11 | "nextButton" : "Berikutnya" 12 | }, 13 | "loader" : { 14 | "loading" : "Pemuatan" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "Pemain yang sama tidak dapat di kedua tim", 18 | "bothTeamsNumber" : "Pilih nomor yang sama dari pemain di kedua tim", 19 | "colorUpdated" : "warna Updated", 20 | "gameAdded" : "Game Ditambahkan", 21 | "gameTypeUpdated" : "Permainan Jenis Updated", 22 | "gameUndone" : "Permainan berhasil dibatalkan", 23 | "keepPlaying" : "terus bermain", 24 | "maxTwo" : "Pilih max dua pemain dari masing-masing tim", 25 | "nameUpdated" : "nama Diperbarui", 26 | "notConnected" : "Tidak terhubung", 27 | "noTies" : "permainan dasi tidak diperbolehkan", 28 | "onePlayer" : "Pilih setidaknya satu pemain dari masing-masing tim", 29 | "playerAdded" : "pemain Ditambahkan", 30 | "playerDeleted" : "pemain Dihapus", 31 | "playerStatusUpdated" : "Status pemain Updated", 32 | "playerUpdated" : "pemain Updated", 33 | "scoreBoth" : "Masukkan skor untuk kedua tim", 34 | "undo" : "Membuka" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Menghapus" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Tambahkan skor baru", 41 | "addScoreTitle" : "Tambahkan Skor", 42 | "teamOnePlayers" : "Pilih tim satu pemain", 43 | "teamOneScore" : "Tim satu skor", 44 | "teamTwoPlayers" : "Pilih tim dua pemain", 45 | "teamTwoScore" : "Tim dua skor" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Perusahaan atau nama klub", 49 | "gameAirHockey" : "Air Hockey", 50 | "gameBilliards" : "Bilyar", 51 | "gameFoosball" : "foosball", 52 | "gameShuffleboard" : "shuffleboard", 53 | "gameTableTennis" : "Tenis meja", 54 | "language" : "Bahasa", 55 | "orgName" : "Apa nama organisasi Anda", 56 | "whatGame" : "Apa permainan yang akan Anda bermain" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "warna sorot", 60 | "primaryBackground" : "latar belakang utama", 61 | "primaryButton" : "tombol utama", 62 | "primaryText" : "teks primer", 63 | "resetColors" : "ulang warna", 64 | "secondaryBackground" : "background sekunder", 65 | "secondaryText" : "teks sekunder" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Tambah Pemain", 69 | "onePerLine" : "Masukkan satu nama pemain per baris" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Login dikelola di" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "pengaturan" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "dasar", 79 | "colors" : "warna", 80 | "players" : "pemain", 81 | "users" : "pengguna" 82 | }, 83 | "stats" : { 84 | "forText" : "untuk", 85 | "playerStats" : "pemain Statistik" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "dobel", 89 | "gamesLost" : "permainan hilang", 90 | "gamesPlayed" : "pertandingan yang dimainkan", 91 | "gamesWon" : "Memenangkan permainan", 92 | "ranking" : "Peringkat", 93 | "singles" : "Satu" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Menyerahkan" 99 | }, 100 | "loginForm" : { 101 | "email" : "E-mail", 102 | "password" : "Kata sandi", 103 | "button" : "Masuk" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/ru.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Добавить показатель", 5 | "doubles" : "парный", 6 | "logOut" : "Выйти", 7 | "settings" : "настройки", 8 | "singles" : "одиночный разряд" 9 | }, 10 | "global" : { 11 | "nextButton" : "следующий" 12 | }, 13 | "loader" : { 14 | "loading" : "загрузка" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "Тот же игрок не может быть на обеих команд", 18 | "bothTeamsNumber" : "Выберите одинаковое количество игроков обеих команд", 19 | "colorUpdated" : "Цвет Обновлено", 20 | "gameAdded" : "Игра добавлена", 21 | "gameTypeUpdated" : "Тип игры Обновлено", 22 | "gameUndone" : "Игра успешно отменено", 23 | "keepPlaying" : "Продолжай играть", 24 | "maxTwo" : "Выберите максимум двух игроков от каждой команды", 25 | "nameUpdated" : "Имя Обновлено", 26 | "notConnected" : "Не подключен", 27 | "noTies" : "Рулевые игры не допускаются", 28 | "onePlayer" : "Выберите по крайней мере один игрок от каждой команды", 29 | "playerAdded" : "Игрок Добавлен", 30 | "playerDeleted" : "Игрок Исключен", 31 | "playerStatusUpdated" : "Состояние игрока Обновлено", 32 | "playerUpdated" : "Игрок Обновлено", 33 | "scoreBoth" : "Введите счет для обеих команд", 34 | "undo" : "расстегивать" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Удалить" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Добавить новый счет", 41 | "addScoreTitle" : "Добавить показатель", 42 | "teamOnePlayers" : "Выберите один команда игроков", 43 | "teamOneScore" : "Команда один балл", 44 | "teamTwoPlayers" : "Выбор команды двух игроков", 45 | "teamTwoScore" : "Команда два оценка" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Название компании или клуб", 49 | "gameAirHockey" : "Аэрохоккей", 50 | "gameBilliards" : "Бильярд", 51 | "gameFoosball" : "Настольный футбол", 52 | "gameShuffleboard" : "Шаффлборд", 53 | "gameTableTennis" : "Настольный теннис", 54 | "language" : "язык", 55 | "orgName" : "Что такое название вашей организации", 56 | "whatGame" : "Какая игра вы будете играть" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "цвет подсветки", 60 | "primaryBackground" : "Первичный фон", 61 | "primaryButton" : "Первая кнопка", 62 | "primaryText" : "Первичный текст", 63 | "resetColors" : "Сбросить цвета", 64 | "secondaryBackground" : "Вторичный фон", 65 | "secondaryText" : "Дополнительный текст" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Добавить игроков", 69 | "onePerLine" : "Введите одно имя игроков в каждой строке" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Логины управляются на" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "настройки" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "основы", 79 | "colors" : "Цвета", 80 | "players" : "игроки", 81 | "users" : "пользователей" 82 | }, 83 | "stats" : { 84 | "forText" : "для", 85 | "playerStats" : "Статистика игрока" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "парный", 89 | "gamesLost" : "Игры потеряли", 90 | "gamesPlayed" : "Игр сыграно", 91 | "gamesWon" : "Игры выиграны", 92 | "ranking" : "ранжирование", 93 | "singles" : "одиночный разряд" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Отправить" 99 | }, 100 | "loginForm" : { 101 | "email" : "Эл. адрес", 102 | "password" : "пароль", 103 | "button" : "Войти в систему" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /css/login.css: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------- */ 2 | /* Seed - packs 3 | /* ---------------------------------------- */ 4 | /** 5 | * seed-button v0.0.3 6 | * Button component pack for Seed 7 | * Licensed under MIT 8 | */ 9 | .c-button { 10 | -webkit-appearance: none; 11 | appearance: none; 12 | background-color: transparent; 13 | border-color: transparent; 14 | border-radius: 1px; 15 | border-style: solid; 16 | border-width: 2px; 17 | box-shadow: none; 18 | box-sizing: border-box; 19 | cursor: pointer; 20 | display: inline-block; 21 | font-size: 16px; 22 | font-weight: normal; 23 | height: 40px; 24 | line-height: 36px; 25 | padding: 0 1em; 26 | outline: none; 27 | transition: all 0.1s ease; 28 | text-align: center; 29 | text-decoration: none; 30 | vertical-align: middle; 31 | -webkit-user-select: none; 32 | user-select: none; } 33 | .c-button:focus { 34 | outline: 0; } 35 | 36 | .c-button--sm { 37 | font-size: 0.875rem; 38 | height: 32px; 39 | line-height: 28px; 40 | padding: 0 0.5em; } 41 | 42 | .c-button--md { 43 | font-size: 1rem; 44 | height: 40px; 45 | line-height: 36px; 46 | padding: 0 1em; } 47 | 48 | .c-button--lg { 49 | font-size: 24px; 50 | height: 56px; 51 | line-height: 52px; 52 | padding: 0 1.5em; } 53 | 54 | .c-button.is-disabled, 55 | .c-button[disabled] { 56 | cursor: not-allowed; 57 | opacity: 0.65; } 58 | 59 | .c-button.is-disabled:hover, 60 | .c-button.is-disabled:active, 61 | .c-button.is-disabled:focus, 62 | .c-button[disabled]:hover, 63 | .c-button[disabled]:active, 64 | .c-button[disabled]:focus { 65 | cursor: not-allowed; 66 | opacity: 0.65; } 67 | 68 | .c-button--primary { 69 | border-radius: 1px; 70 | margin-right: 0; } 71 | 72 | .c-button--primary:active, 73 | .c-button--primary:focus, 74 | .c-button--primary:hover { 75 | text-decoration: underline; } 76 | 77 | .c-button--link { 78 | padding-bottom: 2px; 79 | padding-top: 2px; 80 | text-decoration: none; } 81 | 82 | .c-button--link:active, 83 | .c-button--link:focus, 84 | .c-button--link:hover { 85 | text-decoration: underline; } 86 | 87 | .c-button.is-selected { 88 | cursor: default; } 89 | 90 | /* ---------------------------------------- */ 91 | /* Login CSS 92 | /* ---------------------------------------- */ 93 | body { 94 | background: #1C2242; 95 | font-family: "Libre Franklin", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; 96 | text-align: center; } 97 | 98 | .login { 99 | display: flex; 100 | flex-direction: column; 101 | height: 100%; 102 | justify-content: center; 103 | overflow: auto; 104 | resize: vertical; } 105 | .login button { 106 | background: transparent; 107 | border-color: #57D3C3; 108 | color: #57D3C3; 109 | height: 44px; 110 | line-height: 40px; 111 | width: 300px; } 112 | .login button:focus, .login button:hover { 113 | background: #57D3C3; 114 | border-color: #57D3C3; 115 | color: #FFF; 116 | text-decoration: none; } 117 | .login .errors { 118 | color: #FFE8B5; 119 | display: none; 120 | margin-bottom: 13px; } 121 | .login .errors.show { 122 | display: block; } 123 | .login form { 124 | overflow: auto; 125 | resize: vertical; } 126 | .login input { 127 | border: none; 128 | border-radius: 1px; 129 | display: block; 130 | font-size: 16px; 131 | margin: 0 auto 13px; 132 | padding: 13px 18px; 133 | width: 300px; } 134 | 135 | /*# sourceMappingURL=login.css.map */ 136 | -------------------------------------------------------------------------------- /i18n/pt.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Adicionar pontuação", 5 | "doubles" : "Duplas", 6 | "logOut" : "Sair", 7 | "settings" : "Configurações", 8 | "singles" : "Singles" 9 | }, 10 | "global" : { 11 | "nextButton" : "Próximo" 12 | }, 13 | "loader" : { 14 | "loading" : "Carregando" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "O mesmo jogador não pode estar em ambas as equipes", 18 | "bothTeamsNumber" : "Selecione o mesmo número de jogadores em ambas as equipes", 19 | "colorUpdated" : "Cor atualizada", 20 | "gameAdded" : "Jogo adicionado", 21 | "gameTypeUpdated" : "Tipo de Jogo Atualizado", 22 | "gameUndone" : "Jogo desfeito com êxito", 23 | "keepPlaying" : "Continue jogando", 24 | "maxTwo" : "Selecione um máximo de dois jogadores de cada equipe", 25 | "nameUpdated" : "Nome Atualizado", 26 | "notConnected" : "Não conectado", 27 | "noTies" : "Jogos de laço não são permitidos", 28 | "onePlayer" : "Selecione pelo menos um jogador de cada equipe", 29 | "playerAdded" : "Player Adicionado", 30 | "playerDeleted" : "Jogador excluído", 31 | "playerStatusUpdated" : "Estado do Jogador Actualizado", 32 | "playerUpdated" : "Player Atualizado", 33 | "scoreBoth" : "Insira uma pontuação para ambas as equipes", 34 | "undo" : "Desfazer" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Excluir" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Adicionar nova pontuação", 41 | "addScoreTitle" : "Adicionar pontuação", 42 | "teamOnePlayers" : "Selecionar jogadores da equipe 1", 43 | "teamOneScore" : "Pontuação de uma equipa", 44 | "teamTwoPlayers" : "Selecione a equipe dois jogadores", 45 | "teamTwoScore" : "Pontuação da equipa dois" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Nome da empresa ou do clube", 49 | "gameAirHockey" : "Air Hockey", 50 | "gameBilliards" : "Bilhar", 51 | "gameFoosball" : "Pebolim", 52 | "gameShuffleboard" : "Shuffleboard", 53 | "gameTableTennis" : "Tênis de mesa", 54 | "language" : "Língua", 55 | "orgName" : "Qual é o nome da sua organização", 56 | "whatGame" : "Qual jogo você vai estar jogando" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "Cor de destaque", 60 | "primaryBackground" : "Fundo principal", 61 | "primaryButton" : "Botão primário", 62 | "primaryText" : "Texto principal", 63 | "resetColors" : "Redefinir cores", 64 | "secondaryBackground" : "Fundo secundário", 65 | "secondaryText" : "Texto secundário" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Adicionar Jogadores", 69 | "onePerLine" : "Insira um nome de jogador por linha" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Os logins são gerenciados em" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "Configurações" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "Padrão", 79 | "colors" : "Cores", 80 | "players" : "Jogadoras", 81 | "users" : "Comercial" 82 | }, 83 | "stats" : { 84 | "forText" : "para", 85 | "playerStats" : "Estatísticas do Jogador" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "Duplas", 89 | "gamesLost" : "Jogos perdidos", 90 | "gamesPlayed" : "Jogos jogados", 91 | "gamesWon" : "Jogos ganhos", 92 | "ranking" : "Classificação", 93 | "singles" : "Singles" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Enviar" 99 | }, 100 | "loginForm" : { 101 | "email" : "O email", 102 | "password" : "Senha", 103 | "button" : "Assinar em" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/fr.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Ajouter une note", 5 | "doubles" : "Double", 6 | "logOut" : "Connectez - Out", 7 | "settings" : "Paramètres", 8 | "singles" : "Simple" 9 | }, 10 | "global" : { 11 | "nextButton" : "Prochain" 12 | }, 13 | "loader" : { 14 | "loading" : "Chargement" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "Le même joueur ne peut pas être sur les deux équipes", 18 | "bothTeamsNumber" : "Sélectionner le même nombre de joueurs sur les deux équipes", 19 | "colorUpdated" : "Couleur mise à jour", 20 | "gameAdded" : "Jeux ajoutés", 21 | "gameTypeUpdated" : "Type de jeu mis à jour", 22 | "gameUndone" : "Le jeu a été annulé", 23 | "keepPlaying" : "Continue à jouer", 24 | "maxTwo" : "Sélectionnez un maximum de deux joueurs de chaque équipe", 25 | "nameUpdated" : "Nom mis à jour", 26 | "notConnected" : "Pas connecté", 27 | "noTies" : "Les jeux de cravate ne sont pas autorisés", 28 | "onePlayer" : "Sélectionnez au moins un joueur de chaque équipe", 29 | "playerAdded" : "Joueur ajouté", 30 | "playerDeleted" : "Lecteur supprimé", 31 | "playerStatusUpdated" : "Statut du joueur mis à jour", 32 | "playerUpdated" : "Player Mis à jour", 33 | "scoreBoth" : "Inscrire une note pour les deux équipes", 34 | "undo" : "annuler" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Effacer" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Ajouter une nouvelle partition", 41 | "addScoreTitle" : "Ajouter une note", 42 | "teamOnePlayers" : "Sélectionner les joueurs de l'équipe 1", 43 | "teamOneScore" : "Score d'équipe 1", 44 | "teamTwoPlayers" : "Choisir deux joueurs", 45 | "teamTwoScore" : "Score de l'équipe 2" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Nom de la société ou du club", 49 | "gameAirHockey" : "Air Hockey", 50 | "gameBilliards" : "Billard", 51 | "gameFoosball" : "Foosball", 52 | "gameShuffleboard" : "Jeu de palet", 53 | "gameTableTennis" : "Tennis de table", 54 | "language" : "La langue", 55 | "orgName" : "Quel est le nom de votre organisation", 56 | "whatGame" : "Quel jeu allez-vous jouer" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "Couleur de surbrillance", 60 | "primaryBackground" : "Fond principal", 61 | "primaryButton" : "Bouton principal", 62 | "primaryText" : "Texte principal", 63 | "resetColors" : "Réinitialiser les couleurs", 64 | "secondaryBackground" : "Contexte secondaire", 65 | "secondaryText" : "Texte secondaire" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Ajouter des joueurs", 69 | "onePerLine" : "Entrez le nom d'un joueur par ligne" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Les connexions sont gérées" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "Paramètres" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "Défaut", 79 | "colors" : "Couleurs", 80 | "players" : "Joueurs", 81 | "users" : "Utilisateurs" 82 | }, 83 | "stats" : { 84 | "forText" : "pour", 85 | "playerStats" : "Statistiques du joueur" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "Double", 89 | "gamesLost" : "Jeux perdus", 90 | "gamesPlayed" : "Parties jouées", 91 | "gamesWon" : "Jeux gagnés", 92 | "ranking" : "Classement", 93 | "singles" : "Simple" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Soumettre" 99 | }, 100 | "loginForm" : { 101 | "email" : "Email", 102 | "password" : "Mot de passe", 103 | "button" : "Se connecter" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/es.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Añadir Puntuación", 5 | "doubles" : "Dobles", 6 | "logOut" : "Cerrar sesión", 7 | "settings" : "Ajustes", 8 | "singles" : "Individual" 9 | }, 10 | "global" : { 11 | "nextButton" : "Siguiente" 12 | }, 13 | "loader" : { 14 | "loading" : "Cargando" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "El mismo jugador no puede estar en ambos equipos", 18 | "bothTeamsNumber" : "Seleccione el mismo número de jugadores en ambos equipos", 19 | "colorUpdated" : "Color actualizado", 20 | "gameAdded" : "Juego añadido", 21 | "gameTypeUpdated" : "Tipo de Juego Actualizado", 22 | "gameUndone" : "Juego deshacer correctamente", 23 | "keepPlaying" : "Sigue jugando", 24 | "maxTwo" : "Seleccione un máximo de dos jugadores de cada equipo", 25 | "nameUpdated" : "Nombre Actualizado", 26 | "notConnected" : "No conectado", 27 | "noTies" : "No se permiten juegos de corbata", 28 | "onePlayer" : "Selecciona al menos un jugador de cada equipo", 29 | "playerAdded" : "Jugador añadido", 30 | "playerDeleted" : "Reproductor eliminado", 31 | "playerStatusUpdated" : "Estado del jugador actualizado", 32 | "playerUpdated" : "Reproductor actualizado", 33 | "scoreBoth" : "Ingrese una puntuación para ambos equipos", 34 | "undo" : "Deshacer" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Borrar" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Añadir nueva puntuación", 41 | "addScoreTitle" : "Añadir Puntuación", 42 | "teamOnePlayers" : "Selecciona jugadores de un equipo", 43 | "teamOneScore" : "Puntuación del equipo uno", 44 | "teamTwoPlayers" : "Seleccione el equipo dos jugadores", 45 | "teamTwoScore" : "Puntuación del equipo dos" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Nombre de la empresa o del club", 49 | "gameAirHockey" : "Air Hockey", 50 | "gameBilliards" : "Billar", 51 | "gameFoosball" : "Futbolín", 52 | "gameShuffleboard" : "Juego de tejo", 53 | "gameTableTennis" : "Mesa de tennis", 54 | "language" : "Idioma", 55 | "orgName" : "Cual es el nombre de tu organizacion", 56 | "whatGame" : "¿Qué juego jugarás" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "Resalte el color", 60 | "primaryBackground" : "Antecedentes primarios", 61 | "primaryButton" : "Botón principal", 62 | "primaryText" : "Texto principal", 63 | "resetColors" : "Restaurar colores", 64 | "secondaryBackground" : "Fondo secundario", 65 | "secondaryText" : "Texto secundario" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Añadir jugadores", 69 | "onePerLine" : "Introduzca un nombre de jugador por línea" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Los inicios de sesión se administran en" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "Ajustes" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "Lo esencial", 79 | "colors" : "Colores", 80 | "players" : "Jugadores", 81 | "users" : "Usuarios" 82 | }, 83 | "stats" : { 84 | "forText" : "para", 85 | "playerStats" : "Estadísticas del jugador" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "Dobles", 89 | "gamesLost" : "Juegos perdidos", 90 | "gamesPlayed" : "Juegos jugados", 91 | "gamesWon" : "Juegos ganados", 92 | "ranking" : "Clasificación", 93 | "singles" : "Individual" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Enviar" 99 | }, 100 | "loginForm" : { 101 | "email" : "Email", 102 | "password" : "Contraseña", 103 | "button" : "Registrarse" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/de.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Ergebnis hinzufügen", 5 | "doubles" : "Doppel", 6 | "logOut" : "Ausloggen", 7 | "settings" : "Einstellungen", 8 | "singles" : "Einzel" 9 | }, 10 | "global" : { 11 | "nextButton" : "Nächster" 12 | }, 13 | "loader" : { 14 | "loading" : "Laden" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "Der gleiche Spieler kann nicht auf beiden Mannschaften sein", 18 | "bothTeamsNumber" : "Wählen Sie die gleiche Anzahl von Spielern auf beiden Teams aus", 19 | "colorUpdated" : "Farbe aktualisiert", 20 | "gameAdded" : "Spiel hinzugefügt", 21 | "gameTypeUpdated" : "Spieltyp Aktualisiert", 22 | "gameUndone" : "Spiel erfolgreich rückgängig gemacht", 23 | "keepPlaying" : "Weiter spielen", 24 | "maxTwo" : "Wählen Sie aus jedem Team maximal zwei Spieler aus", 25 | "nameUpdated" : "Name Aktualisiert", 26 | "notConnected" : "Nicht verbunden", 27 | "noTies" : "Tie Spiele sind nicht erlaubt", 28 | "onePlayer" : "Wählen Sie mindestens einen Spieler aus jeder Mannschaft aus", 29 | "playerAdded" : "Player hinzugefügt", 30 | "playerDeleted" : "Spieler gelöscht", 31 | "playerStatusUpdated" : "Spieler Status aktualisiert", 32 | "playerUpdated" : "Spieler aktualisiert", 33 | "scoreBoth" : "Geben Sie eine Punktzahl für beide Mannschaften ein", 34 | "undo" : "Rückgängig machen" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Löschen" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Neue Bewertung hinzufügen", 41 | "addScoreTitle" : "Ergebnis hinzufügen", 42 | "teamOnePlayers" : "Wählen Sie ein Team aus", 43 | "teamOneScore" : "Team eine Punktzahl", 44 | "teamTwoPlayers" : "Wählen Sie Team zwei Spieler", 45 | "teamTwoScore" : "Team zwei Punkte" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Name des Unternehmens oder Clubs", 49 | "gameAirHockey" : "Airhockey", 50 | "gameBilliards" : "Billard", 51 | "gameFoosball" : "Fußball", 52 | "gameShuffleboard" : "Shuffleboard", 53 | "gameTableTennis" : "Tischtennis", 54 | "language" : "Sprache", 55 | "orgName" : "Wie lautet der Name Ihres Unternehmens", 56 | "whatGame" : "Welches Spiel werden Sie spielen" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "Hervorhebungsfarbe", 60 | "primaryBackground" : "Primärer Hintergrund", 61 | "primaryButton" : "Hauptschalter", 62 | "primaryText" : "Primärer Text", 63 | "resetColors" : "Farben zurücksetzen", 64 | "secondaryBackground" : "Sekundärer Hintergrund", 65 | "secondaryText" : "Sekundärer Text" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Spieler hinzufügen", 69 | "onePerLine" : "Geben Sie einen Spielernamen pro Zeile ein" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Anmeldungen werden verwaltet" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "Einstellungen" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "Standard", 79 | "colors" : "Farben", 80 | "players" : "Spieler", 81 | "users" : "Benutzer" 82 | }, 83 | "stats" : { 84 | "forText" : "zum", 85 | "playerStats" : "Spielerstatistik" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "Doppel", 89 | "gamesLost" : "Spiele verloren", 90 | "gamesPlayed" : "Spiele gespielt", 91 | "gamesWon" : "Gewonnene Spiele", 92 | "ranking" : "Rang", 93 | "singles" : "Einzel" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "einreichen" 99 | }, 100 | "loginForm" : { 101 | "email" : "Email", 102 | "password" : "Passwort", 103 | "button" : "Anmelden" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /i18n/it.js: -------------------------------------------------------------------------------- 1 | var i18n = { 2 | "app" : { 3 | "appHeader" : { 4 | "addScore" : "Aggiungere Score", 5 | "doubles" : "doppio", 6 | "logOut" : "Logout", 7 | "settings" : "impostazioni", 8 | "singles" : "single" 9 | }, 10 | "global" : { 11 | "nextButton" : "Il prossimo" 12 | }, 13 | "loader" : { 14 | "loading" : "Caricamento in corso" 15 | }, 16 | "messages" : { 17 | "bothTeams" : "Lo stesso giocatore non può essere di entrambe le squadre", 18 | "bothTeamsNumber" : "Selezionare lo stesso numero di giocatori di entrambe le squadre", 19 | "colorUpdated" : "Colore Aggiornato", 20 | "gameAdded" : "Gioco Aggiunto", 21 | "gameTypeUpdated" : "Tipo di gioco Aggiornato", 22 | "gameUndone" : "Gioco annullata con successo", 23 | "keepPlaying" : "Continuare a giocare", 24 | "maxTwo" : "Selezionare un massimo di due giocatori per ogni squadra", 25 | "nameUpdated" : "nome Aggiornato", 26 | "notConnected" : "Non collegata", 27 | "noTies" : "Giochi Tie non sono ammessi", 28 | "onePlayer" : "Selezionare almeno un giocatore per ogni squadra", 29 | "playerAdded" : "Player Aggiunto", 30 | "playerDeleted" : "giocatore cancellato", 31 | "playerStatusUpdated" : "Stato Player Aggiornato", 32 | "playerUpdated" : "Player aggiornato", 33 | "scoreBoth" : "Inserisci un punteggio per entrambe le squadre", 34 | "undo" : "Disfare" 35 | }, 36 | "playersRow" : { 37 | "deleteLink" : "Elimina" 38 | }, 39 | "scoreAdd" : { 40 | "addScoreButton" : "Aggiungere un nuovo punteggio", 41 | "addScoreTitle" : "Aggiungere Score", 42 | "teamOnePlayers" : "I giocatori scelgono squadra uno", 43 | "teamOneScore" : "Squadra un punteggio", 44 | "teamTwoPlayers" : "Selezionare squadra due giocatori", 45 | "teamTwoScore" : "Squadra di due punteggio" 46 | }, 47 | "settingsBasics" : { 48 | "companyOrClub" : "Società o nome del club", 49 | "gameAirHockey" : "Air Hockey", 50 | "gameBilliards" : "Biliardo", 51 | "gameFoosball" : "Foosball", 52 | "gameShuffleboard" : "shuffleboard", 53 | "gameTableTennis" : "Tennis da tavolo", 54 | "language" : "Lingua", 55 | "orgName" : "Qual è il nome della propria organizzazione", 56 | "whatGame" : "Quale gioco si sarà giocare" 57 | }, 58 | "settingsColors" : { 59 | "highlightColor" : "colore di evidenziazione", 60 | "primaryBackground" : "sfondo primaria", 61 | "primaryButton" : "pulsante primaria", 62 | "primaryText" : "il testo primario", 63 | "resetColors" : "colori reset", 64 | "secondaryBackground" : "sfondo secondaria", 65 | "secondaryText" : "testo secondaria" 66 | }, 67 | "settingsPlayers" : { 68 | "addPlayers" : "Aggiungi giocatori", 69 | "onePerLine" : "Inserire un nome giocatori per riga" 70 | }, 71 | "settingsUsers" : { 72 | "manageLogins" : "Account di accesso sono gestiti su" 73 | }, 74 | "sidebarHeader" : { 75 | "settings" : "impostazioni" 76 | }, 77 | "sidebarMenu" : { 78 | "basics" : "predefinito", 79 | "colors" : "Colori", 80 | "players" : "Giocatori", 81 | "users" : "utenti" 82 | }, 83 | "stats" : { 84 | "forText" : "per", 85 | "playerStats" : "Statistiche giocatore" 86 | }, 87 | "statsPlayer" : { 88 | "doubles" : "doppio", 89 | "gamesLost" : "partite perse", 90 | "gamesPlayed" : "Giochi giocati", 91 | "gamesWon" : "Giochi vinti", 92 | "ranking" : "classifica", 93 | "singles" : "single" 94 | } 95 | }, 96 | "index" : { 97 | "connectionForm" : { 98 | "button" : "Sottoscrivi" 99 | }, 100 | "loginForm" : { 101 | "email" : "E-mail", 102 | "password" : "Parola d'ordine", 103 | "button" : "Registrati" 104 | } 105 | } 106 | }; -------------------------------------------------------------------------------- /firebase-debug.log: -------------------------------------------------------------------------------- 1 | [debug] ---------------------------------------------------------------------- 2 | [debug] Command: node /usr/local/bin/firebase serve 3 | [debug] CLI Version: 3.0.7 4 | [debug] Platform: darwin 5 | [debug] Node Version: v0.10.32 6 | [debug] Time: Tue Jan 17 2017 06:04:41 GMT-0500 (EST) 7 | [debug] ---------------------------------------------------------------------- 8 | [debug] 9 | [warn] ⚠ Deprecation Warning: Firebase Hosting configuration should be moved under "hosting" key. 10 | [info] Starting Firebase development server... 11 | [info] 12 | [info] Project Directory: /Users/davem/Sites/electron/electron-quick-start 13 | [warn] ⚠ Port 5000 is not available. Trying another port... 14 | [info] 15 | [info] Server listening at: http://localhost:5001 16 | [debug] ---------------------------------------------------------------------- 17 | [debug] Command: node /usr/local/bin/firebase serve 18 | [debug] CLI Version: 3.2.1 19 | [debug] Platform: darwin 20 | [debug] Node Version: v0.10.32 21 | [debug] Time: Tue Jan 17 2017 06:05:39 GMT-0500 (EST) 22 | [debug] ---------------------------------------------------------------------- 23 | [debug] 24 | [warn] ⚠ Deprecation Warning: Firebase Hosting configuration should be moved under "hosting" key. 25 | [info] Starting Firebase development server... 26 | [info] 27 | [info] Project Directory: /Users/davem/Sites/electron/electron-quick-start 28 | [warn] ⚠ Port 5000 is not available. Trying another port... 29 | [warn] ⚠ Port 5001 is not available. Trying another port... 30 | [info] 31 | [info] Server listening at: http://localhost:5002 32 | [debug] ---------------------------------------------------------------------- 33 | [debug] Command: node /usr/local/bin/firebase serve 34 | [debug] CLI Version: 3.2.1 35 | [debug] Platform: darwin 36 | [debug] Node Version: v0.10.32 37 | [debug] Time: Mon Jan 30 2017 06:01:48 GMT-0500 (EST) 38 | [debug] ---------------------------------------------------------------------- 39 | [debug] 40 | [warn] ⚠ Deprecation Warning: Firebase Hosting configuration should be moved under "hosting" key. 41 | [info] Starting Firebase development server... 42 | [info] 43 | [info] Project Directory: /Users/davem/Sites/electron/electron-quick-start 44 | [warn] ⚠ Port 5000 is not available. Trying another port... 45 | [warn] ⚠ Port 5001 is not available. Trying another port... 46 | [warn] ⚠ Port 5002 is not available. Trying another port... 47 | [info] 48 | [info] Server listening at: http://localhost:5003 49 | [debug] ---------------------------------------------------------------------- 50 | [debug] Command: node /usr/local/bin/firebase serve 51 | [debug] CLI Version: 3.2.1 52 | [debug] Platform: darwin 53 | [debug] Node Version: v0.10.32 54 | [debug] Time: Wed Feb 01 2017 06:36:01 GMT-0500 (EST) 55 | [debug] ---------------------------------------------------------------------- 56 | [debug] 57 | [warn] ⚠ Deprecation Warning: Firebase Hosting configuration should be moved under "hosting" key. 58 | [info] Starting Firebase development server... 59 | [info] 60 | [info] Project Directory: /Users/davem/Sites/electron/electron-quick-start 61 | [warn] ⚠ Port 5000 is not available. Trying another port... 62 | [warn] ⚠ Port 5001 is not available. Trying another port... 63 | [warn] ⚠ Port 5002 is not available. Trying another port... 64 | [warn] ⚠ Port 5003 is not available. Trying another port... 65 | [info] 66 | [info] Server listening at: http://localhost:5004 67 | [debug] ---------------------------------------------------------------------- 68 | [debug] Command: node /usr/local/bin/firebase serve 69 | [debug] CLI Version: 3.2.1 70 | [debug] Platform: darwin 71 | [debug] Node Version: v0.10.32 72 | [debug] Time: Sat Feb 04 2017 12:18:16 GMT-0500 (EST) 73 | [debug] ---------------------------------------------------------------------- 74 | [debug] 75 | [warn] ⚠ Deprecation Warning: Firebase Hosting configuration should be moved under "hosting" key. 76 | [info] Starting Firebase development server... 77 | [info] 78 | [info] Project Directory: /Users/davem/Sites/electron/electron-quick-start 79 | [warn] ⚠ Port 5000 is not available. Trying another port... 80 | [warn] ⚠ Port 5001 is not available. Trying another port... 81 | [warn] ⚠ Port 5002 is not available. Trying another port... 82 | [warn] ⚠ Port 5003 is not available. Trying another port... 83 | [warn] ⚠ Port 5004 is not available. Trying another port... 84 | [info] 85 | [info] Server listening at: http://localhost:5005 86 | [debug] ---------------------------------------------------------------------- 87 | [debug] Command: node /usr/local/bin/firebase serve 88 | [debug] CLI Version: 3.2.1 89 | [debug] Platform: darwin 90 | [debug] Node Version: v0.10.32 91 | [debug] Time: Thu Feb 09 2017 05:53:08 GMT-0500 (EST) 92 | [debug] ---------------------------------------------------------------------- 93 | [debug] 94 | [warn] ⚠ Deprecation Warning: Firebase Hosting configuration should be moved under "hosting" key. 95 | [info] Starting Firebase development server... 96 | [info] 97 | [info] Project Directory: /Users/davem/Sites/TableChamp.com/app/tablechamp-app 98 | [warn] ⚠ Port 5000 is not available. Trying another port... 99 | [warn] ⚠ Port 5001 is not available. Trying another port... 100 | [warn] ⚠ Port 5002 is not available. Trying another port... 101 | [warn] ⚠ Port 5003 is not available. Trying another port... 102 | [warn] ⚠ Port 5004 is not available. Trying another port... 103 | [warn] ⚠ Port 5005 is not available. Trying another port... 104 | [info] 105 | [info] Server listening at: http://localhost:5006 106 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TableChamp 2 | 3 | **Tablesports leaderboard app** 4 | Track each ping pong, pool, foosball, air hockey, or shuffleboard game that's played. Find out who really is number one (in your office, or out of your group of friends). 5 | 6 | ## What is it? 7 | 8 | With TableChamp, you can add players, track every game that is played, and always know who's #1. 9 | 10 | ![1](https://user-images.githubusercontent.com/5634774/209989745-877b4a3b-50f1-47d4-a507-b1f7fa300660.gif) 11 | 12 | You can view stats on each player, including their 20 most recent games: 13 | 14 | ![2](https://user-images.githubusercontent.com/5634774/209989780-52acd163-eaa8-407f-a559-b7e3310961ca.gif) 15 | 16 | You can manage all of the settings of the app in one convenient sidebar: 17 | 18 | ![3](https://user-images.githubusercontent.com/5634774/209989811-8932abbd-2a15-44aa-90fb-1d6f2f05d78e.gif) 19 | 20 | You can even select from one of 14 languages: 21 | 22 | ![4](https://user-images.githubusercontent.com/5634774/209989854-4d68f5c2-617f-41cf-8af7-d1f8c9c971f0.gif) 23 | 24 | ## How does it work? 25 | 26 | TableChamp is written entirely in JS/HTML/CSS. There is no back-end code (like python, or PHP). It uses [FireBase](https://firebase.google.com/) as a back-end real-time DB to store all of the data, and manage the user authentication. 27 | 28 | ## Installation 29 | 30 | ### 1) You'll need a hosting account for the JS/HTML/CSS files 31 | 32 | *NOTE: you can run a FireBase app locally, but you'll need to follow [these instructions](https://firebase.google.com/docs/cli/) to get set up with FireBase CLI.* 33 | 34 | Just clone this entire project to your server. Once you've done that, move on to step 2. 35 | 36 | ### 2) You'll need to sign up for a free FireBase account 37 | 38 | ![image](https://user-images.githubusercontent.com/5634774/209989202-dd871ea4-9d37-4cec-acfc-04a234b3a054.png) 39 | 40 | Even if you have a large team, the [free FireBase account](https://firebase.google.com/pricing/) should offer plenty of resources. 41 | 42 | Once you've signed up for a free FireBase account, move on to the next step. 43 | 44 | ### 3) Create a new FireBase app 45 | 46 | ![image](https://user-images.githubusercontent.com/5634774/209989227-9b39abc3-0982-4644-8dad-229444578de3.png) 47 | 48 | Go through the process of creating a new FireBase Project. You can name it "Table Champ", or anything you'd like. 49 | 50 | ![image](https://user-images.githubusercontent.com/5634774/209989248-cde54bd5-1ae6-4167-9cef-4afe74b772f2.png) 51 | 52 | Find the "Add to your web app" option, and click it: 53 | 54 | ![image](https://user-images.githubusercontent.com/5634774/209989282-0bddb656-3d8a-4f8b-80f2-023c27b47a92.png) 55 | 56 | You now have all of the information you need to connect to connect the app to FireBase: 57 | 58 | ![image](https://user-images.githubusercontent.com/5634774/209989305-61353e80-c2ac-4a84-a498-e7045ad52497.png) 59 | 60 | Once you have your FireBase API info, move on to the next step 61 | 62 | ### 4) Copy your FireBase info to the /js/firebase-key.js file 63 | 64 | Open up /js/firebase-key.js: 65 | 66 | ![image](https://user-images.githubusercontent.com/5634774/209989350-46f75d12-1c10-4876-ac20-a952187c4776.png) 67 | 68 | Paste in the FireBase apiKey, authDomain, and databaseURL from step 3 above: 69 | 70 | ![image](https://user-images.githubusercontent.com/5634774/209989379-697262d7-b840-4cd8-b43b-2b6c7ada3de7.png) 71 | 72 | Once you've done this, save your changes, and move on to the next step. 73 | 74 | ### 5) Add your first FireBase user 75 | 76 | FireBase handles storing all of your data, as well as authentication. We'll need to set up a user in the FireBase admin, so that you can log into your app. I'll walk you through how to add a single user, but you can add as many login users as you'd like. 77 | 78 | *NOTE: Users are separate from players. Users are set up in the FireBase admin, and have an email & password attached to them so that you can log in. Players are managed from the settings section once you've logged into your app.* 79 | 80 | ![5](https://user-images.githubusercontent.com/5634774/209989925-35709c53-cbd2-4123-a5d6-86a5f97d4dd8.gif) 81 | 82 | All you need to enter to set up a user is an email, and a password. 83 | 84 | Once you've added your first user, continue to the next step. 85 | 86 | ### 6) Create a database instance 87 | 88 | From your FireBase console, click into the Database section: 89 | 90 | ![image](https://user-images.githubusercontent.com/5634774/209989434-a26f87aa-1edf-432e-bb1e-13f7b88f9452.png) 91 | 92 | Create a new "Real-time database" (not a Firestore DB - note: they try and get you to create a Firestore DB by default). 93 | 94 | Once you've created your real-time DB, you'll need to change the security rules. Click the "Rules" tab and and replace what's there with the following: 95 | 96 | ``` 97 | { 98 | "rules": { 99 | ".read": true, 100 | ".write": true 101 | } 102 | } 103 | ``` 104 | 105 | Here's what it should look like: 106 | 107 | ![image](https://user-images.githubusercontent.com/5634774/209989458-fcf26eff-f4e5-435f-a924-2c1f1801e6bb.png) 108 | 109 | ### 7) Login, and add your players 110 | 111 | Now you can log into your app for the first time. Go to the index.html file (wherever it's being hosted from step 1 above). You should see: 112 | 113 | ![image](https://user-images.githubusercontent.com/5634774/209989476-ae42d4aa-52bb-4bd8-a08b-18411ae20322.png) 114 | 115 | Once you've logged in, you should see: 116 | 117 | ![image](https://user-images.githubusercontent.com/5634774/209989493-24762c7f-3e4d-46a7-8004-ea667dccb191.png) 118 | 119 | Enter your organizations name, and the game you'll be tracking: 120 | 121 | ![image](https://user-images.githubusercontent.com/5634774/209989511-91ee0983-dba4-4b7b-ab01-1ff05ddac187.png) 122 | 123 | Then click on the Players tab: 124 | 125 | ![image](https://user-images.githubusercontent.com/5634774/209989531-0dc04a4f-a23b-4bf9-ad2c-50dccbb3ddf7.png) 126 | 127 | Click "Add Players" and enter the names of your players (one name per line): 128 | 129 | ![image](https://user-images.githubusercontent.com/5634774/209989548-2fb8f956-ec47-4dde-a9d8-3b291fcc6247.png) 130 | 131 | ### You're all set 132 | 133 | You should be ready to start tracking games: 134 | 135 | ![image](https://user-images.githubusercontent.com/5634774/209989569-46f0f20d-09ed-4c90-9f99-bc54e0fb5b72.png) 136 | -------------------------------------------------------------------------------- /app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TableChamp 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 | 20 |
21 |
22 | 26 |
27 |
28 |
29 |
30 |
31 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 56 | 59 | 68 | 78 | 131 | 134 | 174 | 214 | 236 | 245 | 249 | 257 | 269 | 296 | 299 | 383 | 384 | -------------------------------------------------------------------------------- /js/iris.min.js: -------------------------------------------------------------------------------- 1 | /*! Iris Color Picker - v1.0.7 - 2014-11-28 2 | * https://github.com/Automattic/Iris 3 | * Copyright (c) 2014 Matt Wiebe; Licensed GPLv2 */ 4 | !function(a,b){function c(){var b,c,d="backgroundImage";j?k="filter":(b=a('
'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,e){return b.css(d,e+c),b.css(d).match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css(d).match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='
',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h)),void 0)}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;jj;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='
',m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}.iris-square-handle,.ui-slider-handle{border:0;outline:0}',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],j&&7>=q?(a.fn.iris=a.noop,a.support.iris=!1,void 0):(a.support.iris=!0,a.fn.gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.picker=b.options.target?a(i).appendTo(b.options.target):a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('
'),c=a(''),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),k.height(e+d+l),void 0):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:c.square.find(".iris-square-inner"),zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),a(this).click(),void 0)})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():(this.option("color",a),void 0)}},a.widget("a8c.iris",n),a('").appendTo("head"),void 0)}(jQuery),function(a,b){var c=function(a,b){return this instanceof c?this._init(a,b):new c(a,b)};c.fn=c.prototype={_color:0,_alpha:1,error:!1,_hsl:{h:0,s:0,l:0},_hsv:{h:0,s:0,v:0},_hSpace:"hsl",_init:function(a){var c="noop";switch(typeof a){case"object":return a.a!==b&&this.a(a.a),c=a.r!==b?"fromRgb":a.l!==b?"fromHsl":a.v!==b?"fromHsv":c,this[c](a);case"string":return this.fromCSS(a);case"number":return this.fromInt(parseInt(a,10))}return this},_error:function(){return this.error=!0,this},clone:function(){for(var a=new c(this.toInt()),b=["_alpha","_hSpace","_hsl","_hsv","error"],d=b.length-1;d>=0;d--)a[b[d]]=this[b[d]];return a},setHSpace:function(a){return this._hSpace="hsv"===a?a:"hsl",this},noop:function(){return this},fromCSS:function(a){var b,c=/^(rgb|hs(l|v))a?\(/;if(this.error=!1,a=a.replace(/^\s+/,"").replace(/\s+$/,"").replace(/;$/,""),a.match(c)&&a.match(/\)$/)){if(b=a.replace(/(\s|%)/g,"").replace(c,"").replace(/,?\);?$/,"").split(","),b.length<3)return this._error();if(4===b.length&&(this.a(parseFloat(b.pop())),this.error))return this;for(var d=b.length-1;d>=0;d--)if(b[d]=parseInt(b[d],10),isNaN(b[d]))return this._error();return a.match(/^rgb/)?this.fromRgb({r:b[0],g:b[1],b:b[2]}):a.match(/^hsv/)?this.fromHsv({h:b[0],s:b[1],v:b[2]}):this.fromHsl({h:b[0],s:b[1],l:b[2]})}return this.fromHex(a)},fromRgb:function(a,c){return"object"!=typeof a||a.r===b||a.g===b||a.b===b?this._error():(this.error=!1,this.fromInt(parseInt((a.r<<16)+(a.g<<8)+a.b,10),c))},fromHex:function(a){return a=a.replace(/^#/,"").replace(/^0x/,""),3===a.length&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]),this.error=!/^[0-9A-F]{6}$/i.test(a),this.fromInt(parseInt(a,16))},fromHsl:function(a){var c,d,e,f,g,h,i,j;return"object"!=typeof a||a.h===b||a.s===b||a.l===b?this._error():(this._hsl=a,this._hSpace="hsl",h=a.h/360,i=a.s/100,j=a.l/100,0===i?c=d=e=j:(f=.5>j?j*(1+i):j+i-j*i,g=2*j-f,c=this.hue2rgb(g,f,h+1/3),d=this.hue2rgb(g,f,h),e=this.hue2rgb(g,f,h-1/3)),this.fromRgb({r:255*c,g:255*d,b:255*e},!0))},fromHsv:function(a){var c,d,e,f,g,h,i,j,k,l,m;if("object"!=typeof a||a.h===b||a.s===b||a.v===b)return this._error();switch(this._hsv=a,this._hSpace="hsv",c=a.h/360,d=a.s/100,e=a.v/100,i=Math.floor(6*c),j=6*c-i,k=e*(1-d),l=e*(1-j*d),m=e*(1-(1-j)*d),i%6){case 0:f=e,g=m,h=k;break;case 1:f=l,g=e,h=k;break;case 2:f=k,g=e,h=m;break;case 3:f=k,g=l,h=e;break;case 4:f=m,g=k,h=e;break;case 5:f=e,g=k,h=l}return this.fromRgb({r:255*f,g:255*g,b:255*h},!0)},fromInt:function(a,c){return this._color=parseInt(a,10),isNaN(this._color)&&(this._color=0),this._color>16777215?this._color=16777215:this._color<0&&(this._color=0),c===b&&(this._hsv.h=this._hsv.s=this._hsl.h=this._hsl.s=0),this},hue2rgb:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+6*(b-a)*(2/3-c):a},toString:function(){var a=parseInt(this._color,10).toString(16);if(this.error)return"";if(a.length<6)for(var b=6-a.length-1;b>=0;b--)a="0"+a;return"#"+a},toCSS:function(a,b){switch(a=a||"hex",b=parseFloat(b||this._alpha),a){case"rgb":case"rgba":var c=this.toRgb();return 1>b?"rgba( "+c.r+", "+c.g+", "+c.b+", "+b+" )":"rgb( "+c.r+", "+c.g+", "+c.b+" )";case"hsl":case"hsla":var d=this.toHsl();return 1>b?"hsla( "+d.h+", "+d.s+"%, "+d.l+"%, "+b+" )":"hsl( "+d.h+", "+d.s+"%, "+d.l+"% )";default:return this.toString()}},toRgb:function(){return{r:255&this._color>>16,g:255&this._color>>8,b:255&this._color}},toHsl:function(){var a,b,c=this.toRgb(),d=c.r/255,e=c.g/255,f=c.b/255,g=Math.max(d,e,f),h=Math.min(d,e,f),i=(g+h)/2;if(g===h)a=b=0;else{var j=g-h;switch(b=i>.5?j/(2-g-h):j/(g+h),g){case d:a=(e-f)/j+(f>e?6:0);break;case e:a=(f-d)/j+2;break;case f:a=(d-e)/j+4}a/=6}return a=Math.round(360*a),0===a&&this._hsl.h!==a&&(a=this._hsl.h),b=Math.round(100*b),0===b&&this._hsl.s&&(b=this._hsl.s),{h:a,s:b,l:Math.round(100*i)}},toHsv:function(){var a,b,c=this.toRgb(),d=c.r/255,e=c.g/255,f=c.b/255,g=Math.max(d,e,f),h=Math.min(d,e,f),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=b=0;else{switch(g){case d:a=(e-f)/j+(f>e?6:0);break;case e:a=(f-d)/j+2;break;case f:a=(d-e)/j+4}a/=6}return a=Math.round(360*a),0===a&&this._hsv.h!==a&&(a=this._hsv.h),b=Math.round(100*b),0===b&&this._hsv.s&&(b=this._hsv.s),{h:a,s:b,v:Math.round(100*i)}},toInt:function(){return this._color},toIEOctoHex:function(){var a=this.toString(),b=parseInt(255*this._alpha,10).toString(16);return 1===b.length&&(b="0"+b),"#"+b+a.replace(/^#/,"")},toLuminosity:function(){var a=this.toRgb();return.2126*Math.pow(a.r/255,2.2)+.7152*Math.pow(a.g/255,2.2)+.0722*Math.pow(a.b/255,2.2)},getDistanceLuminosityFrom:function(a){if(!(a instanceof c))throw"getDistanceLuminosityFrom requires a Color object";var b=this.toLuminosity(),d=a.toLuminosity();return b>d?(b+.05)/(d+.05):(d+.05)/(b+.05)},getMaxContrastColor:function(){var a=this.toLuminosity(),b=a>=.5?"000000":"ffffff";return new c(b)},getReadableContrastingColor:function(a,d){if(!a instanceof c)return this;var e=d===b?5:d,f=a.getDistanceLuminosityFrom(this),g=a.getMaxContrastColor(),h=g.getDistanceLuminosityFrom(a);if(e>=h)return g;if(f>=e)return this;for(var i=0===g.toInt()?-1:1;e>f&&(this.l(i,!0),f=this.getDistanceLuminosityFrom(a),0!==this._color&&16777215!==this._color););return this},a:function(a){if(a===b)return this._alpha;var c=parseFloat(a);return isNaN(c)?this._error():(this._alpha=c,this)},darken:function(a){return a=a||5,this.l(-a,!0)},lighten:function(a){return a=a||5,this.l(a,!0)},saturate:function(a){return a=a||15,this.s(a,!0)},desaturate:function(a){return a=a||15,this.s(-a,!0)},toGrayscale:function(){return this.setHSpace("hsl").s(0)},getComplement:function(){return this.h(180,!0)},getSplitComplement:function(a){a=a||1;var b=180+30*a;return this.h(b,!0)},getAnalog:function(a){a=a||1;var b=30*a;return this.h(b,!0)},getTetrad:function(a){a=a||1;var b=60*a;return this.h(b,!0)},getTriad:function(a){a=a||1;var b=120*a;return this.h(b,!0)},_partial:function(a){var c=d[a];return function(d,e){var f=this._spaceFunc("to",c.space);return d===b?f[a]:(e===!0&&(d=f[a]+d),c.mod&&(d%=c.mod),c.range&&(d=dc.range[1]?c.range[1]:d),f[a]=d,this._spaceFunc("from",c.space,f))}},_spaceFunc:function(a,b,c){var d=b||this._hSpace,e=a+d.charAt(0).toUpperCase()+d.substr(1);return this[e](c)}};var d={h:{mod:360},s:{range:[0,100]},l:{space:"hsl",range:[0,100]},v:{space:"hsv",range:[0,100]},r:{space:"rgb",range:[0,255]},g:{space:"rgb",range:[0,255]},b:{space:"rgb",range:[0,255]}};for(var e in d)d.hasOwnProperty(e)&&(c.fn[e]=c.fn._partial(e));"object"==typeof exports?module.exports=c:a.Color=c}(this); -------------------------------------------------------------------------------- /css/tablechamp.css: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------- */ 2 | /* Seed - reset 3 | /* ---------------------------------------- */ 4 | /** 5 | * seed-reset v0.0.1 (https://github.com/helpscout/seed-reset) 6 | * Reset pack for Seed 7 | * Licensed under MIT 8 | */ 9 | /*! normalize.css v4.0.0 | MIT License | github.com/necolas/normalize.css */ 10 | html { 11 | font-family: sans-serif; 12 | -ms-text-size-adjust: 100%; 13 | -webkit-text-size-adjust: 100%; } 14 | 15 | body { 16 | margin: 0; } 17 | 18 | article, 19 | aside, 20 | details, 21 | figcaption, 22 | figure, 23 | footer, 24 | header, 25 | main, 26 | menu, 27 | nav, 28 | section, 29 | summary { 30 | display: block; } 31 | 32 | audio, 33 | canvas, 34 | progress, 35 | video { 36 | display: inline-block; } 37 | 38 | audio:not([controls]) { 39 | display: none; 40 | height: 0; } 41 | 42 | progress { 43 | vertical-align: baseline; } 44 | 45 | template, 46 | [hidden] { 47 | display: none; } 48 | 49 | a { 50 | background-color: transparent; } 51 | 52 | a:active, 53 | a:hover { 54 | outline-width: 0; } 55 | 56 | abbr[title] { 57 | border-bottom: none; 58 | text-decoration: underline; 59 | text-decoration: underline dotted; } 60 | 61 | b, 62 | strong { 63 | font-weight: inherit; } 64 | 65 | b, 66 | strong { 67 | font-weight: bolder; } 68 | 69 | dfn { 70 | font-style: italic; } 71 | 72 | h1 { 73 | font-size: 2em; 74 | margin: 0.67em 0; } 75 | 76 | mark { 77 | background-color: #FF0; 78 | color: #000; } 79 | 80 | small { 81 | font-size: 80%; } 82 | 83 | sub, 84 | sup { 85 | font-size: 75%; 86 | line-height: 0; 87 | position: relative; 88 | vertical-align: baseline; } 89 | 90 | sub { 91 | bottom: -0.25em; } 92 | 93 | sup { 94 | top: -0.5em; } 95 | 96 | img { 97 | border-style: none; } 98 | 99 | svg:not(:root) { 100 | overflow: hidden; } 101 | 102 | code, 103 | kbd, 104 | pre, 105 | samp { 106 | font-family: monospace, monospace; 107 | font-size: 1em; } 108 | 109 | figure { 110 | margin: 1em 40px; } 111 | 112 | hr { 113 | box-sizing: content-box; 114 | height: 0; 115 | overflow: visible; } 116 | 117 | button, 118 | input, 119 | select, 120 | textarea { 121 | font: inherit; } 122 | 123 | optgroup { 124 | font-weight: bold; } 125 | 126 | button, 127 | input, 128 | select { 129 | overflow: visible; } 130 | 131 | button, 132 | input, 133 | select, 134 | textarea { 135 | margin: 0; } 136 | 137 | button, 138 | select { 139 | text-transform: none; } 140 | 141 | button, 142 | [type="button"], 143 | [type="reset"], 144 | [type="submit"] { 145 | cursor: pointer; } 146 | 147 | [disabled] { 148 | cursor: default; } 149 | 150 | button, 151 | html [type="button"], 152 | [type="reset"], 153 | [type="submit"] { 154 | -webkit-appearance: button; } 155 | 156 | button::-moz-focus-inner, 157 | input::-moz-focus-inner { 158 | border: 0; 159 | padding: 0; } 160 | 161 | button:-moz-focusring, 162 | input:-moz-focusring { 163 | outline: 1px dotted ButtonText; } 164 | 165 | fieldset { 166 | border: 1px solid #C0C0C0; 167 | margin: 0 2px; 168 | padding: 0.35em 0.625em 0.75em; } 169 | 170 | legend { 171 | box-sizing: border-box; 172 | color: inherit; 173 | display: table; 174 | max-width: 100%; 175 | padding: 0; 176 | white-space: normal; } 177 | 178 | textarea { 179 | overflow: auto; } 180 | 181 | [type="checkbox"], 182 | [type="radio"] { 183 | box-sizing: border-box; 184 | padding: 0; } 185 | 186 | [type="number"]::-webkit-inner-spin-button, 187 | [type="number"]::-webkit-outer-spin-button { 188 | height: auto; } 189 | 190 | [type="search"] { 191 | -webkit-appearance: textfield; } 192 | 193 | [type="search"]::-webkit-search-cancel-button, 194 | [type="search"]::-webkit-search-decoration { 195 | -webkit-appearance: none; } 196 | 197 | @media print { 198 | *, 199 | *::before, 200 | *::after, 201 | *::first-letter, 202 | *::first-line { 203 | text-shadow: none !important; 204 | box-shadow: none !important; } 205 | 206 | a, 207 | a:visited { 208 | text-decoration: underline; } 209 | 210 | abbr[title]::after { 211 | content: " (" attr(title) ")"; } 212 | 213 | pre, 214 | blockquote { 215 | border: 1px solid #999; 216 | page-break-inside: avoid; } 217 | 218 | thead { 219 | display: table-header-group; } 220 | 221 | tr, 222 | img { 223 | page-break-inside: avoid; } 224 | 225 | p, 226 | h2, 227 | h3 { 228 | orphans: 3; 229 | widows: 3; } 230 | 231 | h2, 232 | h3 { 233 | page-break-after: avoid; } 234 | 235 | .navbar { 236 | display: none; } 237 | 238 | .btn > .caret, 239 | .dropup > .btn > .caret { 240 | border-top-color: #000 !important; } 241 | 242 | .tag { 243 | border: 1px solid #000; } 244 | 245 | .table { 246 | border-collapse: collapse !important; } 247 | 248 | .table td, 249 | .table th { 250 | background-color: #FFF !important; } 251 | 252 | .table-bordered th, 253 | .table-bordered td { 254 | border: 1px solid #DDD !important; } } 255 | html { 256 | box-sizing: border-box; } 257 | 258 | *, 259 | *::before, 260 | *::after { 261 | box-sizing: inherit; } 262 | 263 | @-ms-viewport { 264 | width: device-width; } 265 | html { 266 | -ms-overflow-style: scrollbar; 267 | -webkit-tap-highlight-color: transparent; } 268 | 269 | [tabindex="-1"]:focus { 270 | outline: none !important; } 271 | 272 | h1, h2, h3, h4, h5, h6 { 273 | margin-top: 0; 274 | margin-bottom: .5rem; } 275 | 276 | p { 277 | margin-top: 0; 278 | margin-bottom: 1rem; } 279 | 280 | abbr[title], 281 | abbr[data-original-title] { 282 | cursor: help; } 283 | 284 | address { 285 | margin-bottom: 1rem; 286 | font-style: normal; 287 | line-height: inherit; } 288 | 289 | ol, 290 | ul, 291 | dl { 292 | margin-top: 0; 293 | margin-bottom: 1rem; } 294 | 295 | ol ol, 296 | ul ul, 297 | ol ul, 298 | ul ol { 299 | margin-bottom: 0; } 300 | 301 | dd { 302 | margin-bottom: .5rem; 303 | margin-left: 0; } 304 | 305 | blockquote { 306 | margin: 0 0 1rem; } 307 | 308 | a:not([href]):not([tabindex]) { 309 | color: inherit; 310 | text-decoration: none; } 311 | 312 | a:not([href]):not([tabindex]):focus { 313 | outline: none; } 314 | 315 | pre { 316 | margin-top: 0; 317 | margin-bottom: 1rem; 318 | overflow: auto; } 319 | 320 | figure { 321 | margin: 0 0 1rem; } 322 | 323 | img { 324 | vertical-align: middle; } 325 | 326 | [role="button"] { 327 | cursor: pointer; } 328 | 329 | a, 330 | area, 331 | button, 332 | [role="button"], 333 | input, 334 | label, 335 | select, 336 | summary, 337 | textarea { 338 | touch-action: manipulation; } 339 | 340 | table { 341 | border-collapse: collapse; } 342 | 343 | caption { 344 | text-align: left; 345 | caption-side: bottom; } 346 | 347 | th { 348 | text-align: left; } 349 | 350 | label { 351 | display: inline-block; 352 | margin-bottom: .5rem; } 353 | 354 | button:focus { 355 | outline: 1px dotted; 356 | outline: 5px auto -webkit-focus-ring-color; } 357 | 358 | input, 359 | button, 360 | select, 361 | textarea { 362 | margin: 0; 363 | line-height: inherit; 364 | border-radius: 0; } 365 | 366 | input[type="radio"]:disabled, 367 | input[type="checkbox"]:disabled { 368 | cursor: not-allowed; } 369 | 370 | input[type="date"], 371 | input[type="time"], 372 | input[type="datetime-local"], 373 | input[type="month"] { 374 | -webkit-appearance: listbox; } 375 | 376 | textarea { 377 | resize: vertical; } 378 | 379 | fieldset { 380 | min-width: 0; 381 | padding: 0; 382 | margin: 0; 383 | border: 0; } 384 | 385 | legend { 386 | display: block; 387 | width: 100%; 388 | padding: 0; 389 | margin-bottom: .5rem; 390 | font-size: 1.5rem; 391 | line-height: inherit; } 392 | 393 | input[type="search"] { 394 | -webkit-appearance: none; } 395 | 396 | [hidden] { 397 | display: none !important; } 398 | 399 | /* ---------------------------------------- */ 400 | /* Seed - packs 401 | /* ---------------------------------------- */ 402 | /** 403 | * seed-button v0.0.3 404 | * Button component pack for Seed 405 | * Licensed under MIT 406 | */ 407 | .c-button { 408 | -webkit-appearance: none; 409 | appearance: none; 410 | background-color: transparent; 411 | border-color: transparent; 412 | border-radius: 1px; 413 | border-style: solid; 414 | border-width: 2px; 415 | box-shadow: none; 416 | box-sizing: border-box; 417 | cursor: pointer; 418 | display: inline-block; 419 | font-size: 16px; 420 | font-weight: normal; 421 | height: 40px; 422 | line-height: 36px; 423 | padding: 0 1em; 424 | outline: none; 425 | transition: all 0.1s ease; 426 | text-align: center; 427 | text-decoration: none; 428 | vertical-align: middle; 429 | -webkit-user-select: none; 430 | user-select: none; } 431 | .c-button:focus { 432 | outline: 0; } 433 | 434 | .c-button--sm { 435 | font-size: 0.875rem; 436 | height: 32px; 437 | line-height: 28px; 438 | padding: 0 0.5em; } 439 | 440 | .c-button--md { 441 | font-size: 1rem; 442 | height: 40px; 443 | line-height: 36px; 444 | padding: 0 1em; } 445 | 446 | .c-button--lg { 447 | font-size: 24px; 448 | height: 56px; 449 | line-height: 52px; 450 | padding: 0 1.5em; } 451 | 452 | .c-button.is-disabled, 453 | .c-button[disabled] { 454 | cursor: not-allowed; 455 | opacity: 0.65; } 456 | 457 | .c-button.is-disabled:hover, 458 | .c-button.is-disabled:active, 459 | .c-button.is-disabled:focus, 460 | .c-button[disabled]:hover, 461 | .c-button[disabled]:active, 462 | .c-button[disabled]:focus { 463 | cursor: not-allowed; 464 | opacity: 0.65; } 465 | 466 | .c-button--primary { 467 | border-radius: 1px; 468 | margin-right: 0; } 469 | 470 | .c-button--primary:active, 471 | .c-button--primary:focus, 472 | .c-button--primary:hover { 473 | text-decoration: underline; } 474 | 475 | .c-button--link { 476 | padding-bottom: 2px; 477 | padding-top: 2px; 478 | text-decoration: none; } 479 | 480 | .c-button--link:active, 481 | .c-button--link:focus, 482 | .c-button--link:hover { 483 | text-decoration: underline; } 484 | 485 | .c-button.is-selected { 486 | cursor: default; } 487 | 488 | /* ---------------------------------------- */ 489 | /* Custom 490 | /* ---------------------------------------- */ 491 | body { 492 | font-family: "Libre Franklin", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; 493 | font-weight: 300; 494 | text-align: center; } 495 | 496 | .app header { 497 | display: none; 498 | margin: 13px 1% 0; 499 | overflow: hidden; 500 | text-align: left; } 501 | .app header .c-button { 502 | float: left; } 503 | .app header .c-button.add-score { 504 | float: right; } 505 | .app header .doubles-toggle { 506 | border-radius: 0 1px 1px 0; } 507 | .app header .header-block { 508 | display: inline-block; } 509 | .app header .name { 510 | cursor: pointer; 511 | display: inline-block; 512 | float: left; 513 | margin-left: 6px; 514 | padding-right: 31px; 515 | position: relative; 516 | top: 2px; } 517 | .app header .name .game-type { 518 | display: block; 519 | font-size: 80%; 520 | font-weight: bold; 521 | margin-top: 3px; 522 | text-transform: uppercase; } 523 | .app header .singles-toggle { 524 | border-radius: 1px 0 0 1px; } 525 | 526 | .loader { 527 | background: #1C2242; 528 | bottom: 0; 529 | color: #FFF; 530 | font-size: 23px; 531 | left: 0; 532 | padding-top: 20%; 533 | position: absolute; 534 | right: 0; 535 | text-align: center; 536 | top: 0; 537 | z-index: 5; } 538 | 539 | .message { 540 | background: #FAF9C6; 541 | border: 1px solid #EFDA91; 542 | border-radius: 1px; 543 | display: none; 544 | font-size: 13px; 545 | left: 50%; 546 | padding: 4px 15px; 547 | position: fixed; 548 | top: 20px; 549 | transform: translateX(-50%); 550 | z-index: 12; } 551 | .message.show { 552 | display: inline-block; } 553 | 554 | .right { 555 | float: right; } 556 | 557 | .modal { 558 | -webkit-background-clip: padding-box; 559 | -moz-background-clip: padding-box; 560 | background-clip: padding-box; 561 | border: 0; 562 | border-radius: 1px 1px 1px 1px; 563 | box-shadow: 0 2px 3px rgba(42, 59, 71, 0.2), 0 10px 40px rgba(42, 59, 71, 0.3); 564 | cursor: auto; 565 | left: auto !important; 566 | margin: 30px auto; 567 | max-width: 1024px; 568 | min-width: 320px; 569 | opacity: 0; 570 | outline: 0; 571 | position: relative !important; 572 | -webkit-transition: opacity 125ms ease-in-out; 573 | -moz-transition: opacity 125ms ease-in-out; 574 | text-align: left; 575 | transition: opacity 125ms ease-in-out; 576 | width: 80%; 577 | z-index: 11; } 578 | 579 | .modal-backdrop { 580 | background-color: rgba(28, 34, 66, 0.8); 581 | bottom: 0; 582 | cursor: pointer; 583 | display: none; 584 | left: 0; 585 | opacity: 0; 586 | overflow-x: hidden; 587 | overflow-y: auto; 588 | position: fixed; 589 | right: 0; 590 | -webkit-transition: opacity 125ms ease-in-out; 591 | -moz-transition: opacity 125ms ease-in-out; 592 | transition: opacity 125ms ease-in-out; 593 | top: 0; 594 | z-index: 10; } 595 | .modal-backdrop.show { 596 | opacity: 1; } 597 | .modal-backdrop.show .modal { 598 | opacity: 1; } 599 | 600 | .modal-body { 601 | background: #F9F9F9; 602 | overflow: hidden; 603 | padding: 20px; 604 | position: relative; 605 | box-sizing: border-box; } 606 | 607 | .modal-close.c-button { 608 | border-color: #FFF; 609 | color: #FFF; 610 | float: right; 611 | font-size: 16px; 612 | font-weight: 300; 613 | height: auto; 614 | line-height: 21px; 615 | margin-top: -1px; 616 | padding: 0 6px 1px; } 617 | .modal-close.c-button:active, .modal-close.c-button:focus, .modal-close.c-button:hover { 618 | background: #FFF; 619 | border-color: #FFF; 620 | color: #67727B; 621 | opacity: 1; } 622 | 623 | .modal-footer { 624 | background: #F9F9F9; 625 | border-radius: 0 0 1px 1px; 626 | font-size: 16px; 627 | line-height: 26px; 628 | margin: 0; 629 | overflow: hidden; 630 | padding: 0 20px 20px; 631 | text-align: center; } 632 | .modal-footer .c-button { 633 | border-color: #2D95C7; 634 | color: #2D95C7; } 635 | .modal-footer .c-button:hover { 636 | background: #2D95C7; 637 | border-color: #2D95C7; 638 | color: #FFF; 639 | text-decoration: none; } 640 | 641 | .modal-header { 642 | background: #47516B; 643 | border-bottom: 1px solid #DDD; 644 | border-radius: 1px 1px 0 0; 645 | color: #FFF; 646 | font-size: 20px; 647 | font-weight: 300; 648 | line-height: 26px; 649 | margin: 0; 650 | overflow: hidden; 651 | padding: 14px 20px; } 652 | .modal-header span { 653 | display: block; 654 | font-size: 16px; 655 | font-weight: 300; 656 | margin-top: -2px; 657 | opacity: 0.6; } 658 | 659 | .ranking { 660 | border: 2px solid; 661 | border-radius: 1px; 662 | cursor: pointer; 663 | float: left; 664 | margin: 1% 0 0 1%; 665 | padding: 16px; 666 | text-align: left; 667 | width: 32%; } 668 | .ranking:focus, .ranking:hover { 669 | outline: none; } 670 | .ranking .movement { 671 | border-radius: 1px; 672 | font-style: italic; } 673 | .ranking .name { 674 | font-weight: 500; } 675 | .ranking .points { 676 | font-weight: 500; 677 | min-width: 95px; 678 | padding: 0; } 679 | .ranking .rank { 680 | font-weight: 700; 681 | padding: 0; 682 | text-align: center; } 683 | .ranking span { 684 | padding: 0 8px; } 685 | .ranking span.movement-positive { 686 | padding: 0; } 687 | 688 | .top-rankings { 689 | width: 98%; 690 | margin: 0 1%; } 691 | .top-rankings .ranking { 692 | float: none; 693 | font-size: 24px; 694 | line-height: 24px; 695 | margin: 1% 0 0; 696 | white-space: nowrap; 697 | width: 100%; } 698 | .top-rankings .ranking .movement { 699 | font-size: 18px; 700 | padding-right: 0; 701 | position: relative; 702 | top: -2px; } 703 | .top-rankings .ranking .name { 704 | padding-left: 0; } 705 | .top-rankings .ranking .points { 706 | padding-right: 0; } 707 | .top-rankings .ranking .rank { 708 | padding-left: 0; } 709 | .top-rankings .ranking span { 710 | padding: 8px 16px; 711 | display: inline-block; } 712 | .top-rankings .ranking span.movement-positive { 713 | padding: 0; } 714 | 715 | .players-select { 716 | margin-bottom: 20px; 717 | margin-top: -4px; 718 | overflow: hidden; } 719 | .players-select a { 720 | -webkit-appearance: none; 721 | appearance: none; 722 | background-color: #FFF; 723 | border: 1px solid #CCC; 724 | border-radius: 1px; 725 | box-shadow: none; 726 | box-sizing: border-box; 727 | color: #29313B; 728 | cursor: pointer; 729 | display: inline-block; 730 | float: left; 731 | font-size: 16px; 732 | font-weight: normal; 733 | height: 40px; 734 | line-height: 39px; 735 | margin: 1% 0.5% 0 0.5%; 736 | padding: 0 1em; 737 | outline: none; 738 | transition: all 0.1s ease; 739 | text-align: center; 740 | text-decoration: none; 741 | vertical-align: middle; 742 | width: 32.3%; 743 | -webkit-user-select: none; 744 | user-select: none; } 745 | .players-select a:active, .players-select a:focus, .players-select a:hover { 746 | border-color: #67727B; 747 | text-decoration: none; } 748 | .players-select a.is-disabled { 749 | cursor: not-allowed; 750 | opacity: 0.65; } 751 | .players-select a.is-disabled:hover, .players-select a.is-disabled:active, .players-select a.is-disabled:focus { 752 | cursor: not-allowed; 753 | opacity: 0.65; } 754 | .players-select a.selected { 755 | background-color: #515983; 756 | border: 1px solid #515983; 757 | color: #fff; } 758 | 759 | .t1, .t2 { 760 | float: left; 761 | text-align: center; 762 | vertical-align: top; 763 | width: 50%; } 764 | .t1 .decrement, .t2 .decrement { 765 | float: right; 766 | margin: 0 70px 0 0; 767 | position: relative; 768 | z-index: 2; } 769 | .t1 .increment, .t2 .increment { 770 | float: left; 771 | margin: 0 0 0 70px; 772 | position: relative; 773 | z-index: 2; } 774 | .t1 .score, .t2 .score { 775 | text-align: center; } 776 | .t1 .score a, .t2 .score a { 777 | -webkit-appearance: none; 778 | appearance: none; 779 | background-color: #F9F9F9; 780 | border: 1px solid #CCC; 781 | border-radius: 1px; 782 | box-shadow: none; 783 | color: #29313B; 784 | cursor: pointer; 785 | display: block; 786 | font-size: 16px; 787 | font-weight: normal; 788 | height: 32px; 789 | line-height: 30px; 790 | margin: 1% 1% 8px 0; 791 | outline: none; 792 | overflow: hidden; 793 | transition: all 0.1s ease; 794 | text-align: center; 795 | text-decoration: none; 796 | vertical-align: middle; 797 | width: 60px; 798 | -webkit-user-select: none; 799 | user-select: none; } 800 | .t1 .score a:active, .t1 .score a:focus, .t1 .score a:hover, .t2 .score a:active, .t2 .score a:focus, .t2 .score a:hover { 801 | border-color: #67727B; 802 | text-decoration: none; } 803 | .t1 .score input, .t2 .score input { 804 | color: #1C2242; 805 | font-size: 90px; 806 | font-weight: 300; 807 | line-height: 90px; 808 | position: relative; 809 | text-align: center; 810 | -webkit-font-smoothing: antialiased; 811 | width: 140px; } 812 | .t1 section, .t2 section { 813 | background: #FFF; 814 | border: 1px solid #E5E5E5; 815 | border-radius: 1px; 816 | padding: 20px 20px 30px; } 817 | .t1 strong, .t2 strong { 818 | color: #6E7286; 819 | display: block; 820 | margin-bottom: 20px; 821 | text-align: center; } 822 | 823 | .t1 section { 824 | margin-right: 9px; } 825 | 826 | .t2 section { 827 | margin-left: 9px; } 828 | 829 | .app { 830 | margin-left: 0; 831 | -webkit-transition: margin-left 50ms ease-out; 832 | -moz-transition: margin-left 50ms ease-out; 833 | -o-transition: margin-left 50ms ease-out; 834 | transition: margin-left 50ms ease-out; } 835 | 836 | .sidebar { 837 | background: #F3F3F3; 838 | bottom: 0; 839 | height: 100%; 840 | left: -400px; 841 | min-width: 400px; 842 | position: absolute; 843 | top: 0; 844 | width: 400px; 845 | -webkit-transition: left 50ms ease-out; 846 | -moz-transition: left 50ms ease-out; 847 | -o-transition: left 50ms ease-out; 848 | transition: left 50ms ease-out; 849 | z-index: 10; } 850 | .sidebar a { 851 | color: #2D95C7; } 852 | .sidebar .colors .control { 853 | margin-bottom: 6px; } 854 | .sidebar .colors .control:last-child { 855 | margin: 40px 0 33px; } 856 | .sidebar .colors span { 857 | margin-left: 10px; } 858 | .sidebar form { 859 | color: #47516B; 860 | margin: 0 0 23px; } 861 | .sidebar form .color-picker { 862 | width: 100px; } 863 | .sidebar form .control { 864 | margin-bottom: 33px; 865 | position: relative; } 866 | .sidebar form input { 867 | margin-top: 6px; } 868 | .sidebar form input[type="radio"] { 869 | margin-right: 4px; 870 | width: auto; } 871 | .sidebar form input[type="text"] { 872 | border: 1px solid #ddd; 873 | border-radius: 2px; 874 | padding: 6px 8px; } 875 | .sidebar form .iris-picker { 876 | border-color: #eee; 877 | box-shadow: 0px 2px 11px 2px rgba(79, 75, 92, 0.34); 878 | position: absolute; 879 | right: 40px; 880 | top: -70px; 881 | z-index: 5; } 882 | .sidebar form label { 883 | display: block; 884 | white-space: nowrap; } 885 | .sidebar form label span { 886 | position: relative; 887 | top: 1px; } 888 | .sidebar form .c-button:not(.c-button--link) { 889 | border-color: #2D95C7; 890 | color: #2D95C7; } 891 | .sidebar form .c-button:not(.c-button--link):focus, .sidebar form .c-button:not(.c-button--link):hover { 892 | background: #2D95C7; 893 | border-color: #2D95C7; 894 | color: #FFF; 895 | text-decoration: none; } 896 | .sidebar form .reset-colors { 897 | padding-left: 0; } 898 | .sidebar form .reset-colors:focus, .sidebar form .reset-colors:hover { 899 | color: #2D95C7; } 900 | .sidebar form select option { 901 | padding: 6px 8px; } 902 | .sidebar form strong { 903 | display: block; 904 | font-weight: 600; 905 | margin-bottom: 8px; } 906 | .sidebar form .swatch { 907 | border: #ddd; 908 | border-radius: 50%; 909 | display: inline-block; 910 | height: 16px; 911 | position: relative; 912 | top: 2px; 913 | width: 16px; } 914 | .sidebar header { 915 | background: #F3F3F3; 916 | border-bottom: 1px solid #DDD; 917 | color: #47516B; 918 | margin: 0; 919 | padding: 16px 24px; 920 | width: 100%; 921 | align-items: center; 922 | box-sizing: border-box; 923 | display: flex; 924 | justify-content: space-between; } 925 | .sidebar header a { 926 | box-sizing: border-box; 927 | max-width: 100%; 928 | min-width: 0; } 929 | .sidebar header .c-button { 930 | border-color: #BBB; 931 | color: #BBB; 932 | height: auto; 933 | line-height: 21px; 934 | margin-top: -1px; 935 | padding: 0 6px 1px; } 936 | .sidebar header .c-button:active, .sidebar header .c-button:focus, .sidebar header .c-button:hover { 937 | background: #BBB; 938 | border-color: #BBB; 939 | color: #FFF; } 940 | .sidebar header h3 { 941 | color: #47516B; 942 | font-size: 18px; 943 | font-weight: 300; 944 | position: relative; 945 | text-align: left; 946 | top: 4px; } 947 | .sidebar .players-add { 948 | overflow: hidden; 949 | padding-bottom: 24px; } 950 | .sidebar section { 951 | border-bottom: 1px solid #DDD; 952 | padding: 24px 24px 12px; 953 | text-align: left; } 954 | .sidebar section:last-child { 955 | border-bottom: none; } 956 | .sidebar section a { 957 | text-decoration: none; } 958 | .sidebar section a:hover { 959 | text-decoration: underline; } 960 | .sidebar section form { 961 | margin-bottom: 0; } 962 | .sidebar section input { 963 | padding: 3px; 964 | width: 100%; } 965 | .sidebar section p { 966 | color: #67727B; 967 | margin-bottom: 13px; } 968 | .sidebar section .player-actions { 969 | width: 20%; } 970 | .sidebar section .players-add-form textarea { 971 | height: 100px; 972 | margin-bottom: 20px; 973 | padding: 6px 8px; 974 | width: 100%; } 975 | .sidebar section .players-add-link { 976 | display: inline-block; 977 | font-weight: 300; 978 | margin-bottom: 10px; 979 | text-transform: none; } 980 | .sidebar section .players-list { 981 | width: 100%; } 982 | .sidebar section .players-list th { 983 | color: #67727B; 984 | padding-bottom: 12px; } 985 | .sidebar section .players-list tr th:last-child { 986 | text-align: right; } 987 | .sidebar section .players-list tr td:last-child { 988 | text-align: right; } 989 | .sidebar section .player-status { 990 | display: none; 991 | margin-right: 8px; } 992 | .sidebar section textarea { 993 | padding: 3px; } 994 | .sidebar .sidebar-container { 995 | border-collapse: collapse; 996 | display: table; 997 | height: 100%; 998 | width: 100%; } 999 | .sidebar .sidebar-menu { 1000 | overflow: hidden; 1001 | text-align: center; 1002 | width: 100%; } 1003 | .sidebar .sidebar-menu a { 1004 | border: 1px solid #DDD; 1005 | color: #BBB; 1006 | float: left; 1007 | margin: 13px 0 13px -1px; 1008 | padding: 2px 1em 0; 1009 | position: relative; 1010 | width: 25%; } 1011 | .sidebar .sidebar-menu a:first-child { 1012 | border-radius: 3px 0 0 3px; } 1013 | .sidebar .sidebar-menu a:last-child { 1014 | border-radius: 0 3px 3px 0; } 1015 | .sidebar .sidebar-menu a:focus, .sidebar .sidebar-menu a:hover, .sidebar .sidebar-menu a.active { 1016 | background: #FFF; 1017 | border-color: #C8C8C8; 1018 | color: #283350; 1019 | z-index: 4; } 1020 | .sidebar .sidebar-menu .button-group { 1021 | padding: 16px 24px 0; } 1022 | .sidebar .sidebar-menu .button-group .c-button { 1023 | margin-bottom: 8px; } 1024 | 1025 | .show-sidebar .app { 1026 | margin-left: 400px; } 1027 | .show-sidebar .message { 1028 | left: 210px; 1029 | top: 18px; } 1030 | .show-sidebar .sidebar { 1031 | left: 0; } 1032 | 1033 | body.de .sidebar .sidebar-menu a, 1034 | body.es .sidebar .sidebar-menu a, 1035 | body.fr .sidebar .sidebar-menu a, 1036 | body.id .sidebar .sidebar-menu a, 1037 | body.it .sidebar .sidebar-menu a, 1038 | body.ja .sidebar .sidebar-menu a, 1039 | body.pt .sidebar .sidebar-menu a, 1040 | body.sv .sidebar .sidebar-menu a { 1041 | font-size: 11px; } 1042 | 1043 | body.da .sidebar .sidebar-menu a, 1044 | body.hi .sidebar .sidebar-menu a { 1045 | font-size: 14px; } 1046 | 1047 | body.ru .sidebar .sidebar-menu a { 1048 | font-size: 11px; 1049 | width: 20%; } 1050 | body.ru .sidebar .sidebar-menu a:last-child { 1051 | width: 40%; } 1052 | 1053 | .stats-player { 1054 | width: 100%; } 1055 | .stats-player td { 1056 | padding: 5px; 1057 | text-align: center; } 1058 | .stats-player th { 1059 | color: #666; 1060 | font-weight: bold; 1061 | padding: 5px; } 1062 | .stats-player .table-header th { 1063 | text-align: center; } 1064 | 1065 | .stats-player-container { 1066 | background: #FFF; 1067 | border: 1px solid #E5E5E5; 1068 | border-radius: 1px; 1069 | float: left; 1070 | padding: 16px; 1071 | width: 38%; } 1072 | 1073 | .stats-player-games { 1074 | background: #FFF; 1075 | border: 1px solid #E5E5E5; 1076 | float: right; 1077 | padding: 16px 20px; 1078 | width: 60%; } 1079 | .stats-player-games li { 1080 | line-height: 30px; 1081 | list-style: none; 1082 | margin-bottom: 8px; } 1083 | .stats-player-games li:last-child { 1084 | margin-bottom: 0; } 1085 | .stats-player-games strong { 1086 | border-radius: 1px; 1087 | margin-right: 6px; 1088 | padding: 2px 6px; } 1089 | .stats-player-games strong.Lost { 1090 | border: 1px solid #8F9EAB; 1091 | color: #67727B; } 1092 | .stats-player-games strong.Won { 1093 | background: #67727B; 1094 | color: #FFF; } 1095 | .stats-player-games ul { 1096 | margin: 0; 1097 | padding: 0; } 1098 | 1099 | /* ---------------------------------------- */ 1100 | /* Mobile 1101 | /* ---------------------------------------- */ 1102 | @media only screen and (max-width: 1224px) { 1103 | .show-sidebar .app header .add-score { 1104 | margin-bottom: 10px; } 1105 | .show-sidebar .app header .c-button { 1106 | font-size: 14px; 1107 | padding: 0 10px; } 1108 | .show-sidebar .app header .header-block { 1109 | display: block; 1110 | float: left; 1111 | margin-bottom: 7px; 1112 | width: 100%; } 1113 | .show-sidebar .app header .name { 1114 | margin-bottom: 13px; } 1115 | .show-sidebar .modal { 1116 | width: 95%; } 1117 | .show-sidebar .modal .stats-player-container { 1118 | float: none; 1119 | margin-bottom: 13px; 1120 | width: 100%; } 1121 | .show-sidebar .modal .stats-player-games { 1122 | float: none; 1123 | width: 100%; } 1124 | .show-sidebar .players-select a { 1125 | width: 48%; } 1126 | .show-sidebar .rankings .ranking { 1127 | margin: 1% 1% 0 1%; 1128 | width: 98%; } 1129 | 1130 | .t1 .decrement, 1131 | .t1 .increment, .t2 .decrement, 1132 | .t2 .increment { 1133 | display: none; } 1134 | .t1 section, .t2 section { 1135 | margin: 0; } 1136 | 1137 | .t1 section { 1138 | margin-bottom: 13px; } } 1139 | @media only screen and (max-width: 900px) { 1140 | .app header .add-score { 1141 | margin-bottom: 10px; } 1142 | .app header .c-button { 1143 | font-size: 14px; 1144 | padding: 0 10px; } 1145 | .app header .header-block { 1146 | display: block; 1147 | float: left; 1148 | margin-bottom: 7px; 1149 | width: 100%; } 1150 | .app header .name { 1151 | margin-bottom: 13px; } 1152 | 1153 | .modal { 1154 | width: 95%; } 1155 | .modal .stats-player-container { 1156 | float: none; 1157 | margin-bottom: 13px; 1158 | width: 100%; } 1159 | .modal .stats-player-games { 1160 | float: none; 1161 | width: 100%; } 1162 | 1163 | .rankings .ranking { 1164 | margin: 1% 1% 0 1%; 1165 | width: 98%; } 1166 | 1167 | .show-sidebar .sidebar { 1168 | right: 0; 1169 | width: auto; } } 1170 | @media only screen and (max-width: 768px) { 1171 | .players-select a { 1172 | width: 48.6%; } } 1173 | @media only screen and (max-width: 540px) { 1174 | .players-select a { 1175 | width: 48%; } 1176 | 1177 | .t1, .t2 { 1178 | float: none; 1179 | width: 100%; } 1180 | .t1 .decrement, 1181 | .t1 .increment, .t2 .decrement, 1182 | .t2 .increment { 1183 | margin: 0; } 1184 | .t1 section, .t2 section { 1185 | margin: 0; } 1186 | 1187 | .t1 section { 1188 | margin-bottom: 13px; } } 1189 | 1190 | /*# sourceMappingURL=tablechamp.css.map */ 1191 | -------------------------------------------------------------------------------- /js/jquery-ui.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.12.1 - 2016-12-26 2 | * http://jqueryui.com 3 | * Includes: widget.js, data.js, keycode.js, scroll-parent.js, widgets/draggable.js, widgets/mouse.js, widgets/slider.js 4 | * Copyright jQuery Foundation and other contributors; Licensed MIT */ 5 | 6 | (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){t.ui=t.ui||{},t.ui.version="1.12.1";var e=0,i=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var s,n,o=i.call(arguments,1),a=0,r=o.length;r>a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var s=!1;t(document).on("mouseup",function(){s=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!s){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,n=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),s=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,s=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-m>_||g>l+m||c-m>b||v>u+m||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(c-b),o=m>=Math.abs(u-v),a=m>=Math.abs(h-_),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=m>=Math.abs(c-v),o=m>=Math.abs(u-b),a=m>=Math.abs(h-g),r=m>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null) 7 | },_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}})}); --------------------------------------------------------------------------------