From e3fe82c99d82f78354a982852b5f6d0dd1753d0d Mon Sep 17 00:00:00 2001 From: Jan Behrens Date: Thu, 25 Jul 2013 21:12:31 +0200 Subject: [PATCH] Add teamnames to teamscores, fix layout issues, fix sorting for LMS/KA --- xonstat/static/css/app.css | 29 +-- xonstat/static/css/app.min.css | 351 ++++++++++++++++++++++++++++++- xonstat/templates/game_info.mako | 12 +- xonstat/views/game.py | 3 +- 4 files changed, 364 insertions(+), 31 deletions(-) diff --git a/xonstat/static/css/app.css b/xonstat/static/css/app.css index fedf997..7b9769d 100644 --- a/xonstat/static/css/app.css +++ b/xonstat/static/css/app.css @@ -182,12 +182,15 @@ table td { .teamscore { text-align: right; text-shadow: -1px -1px 0 #222; - font-size: 200%; + font-size: 20px; font-weight: bold; padding: 10px 7px; margin-right: 10px; margin-top: 20px; } +.teamscore teamname { + font-size: 10px; +} .teamscore .red { color: #ad0000; } @@ -264,30 +267,6 @@ table td { } -/* Teamscores */ -.teamscores tr { - background-color: #000; -} -.teamscores td { - padding: 3px; - text-align: center; - font-size: 12px; - font-weight: bold; -} -.teamscores tr.red { - background-color: #4d0000; -} -.teamscores tr.blue { - background-color: #00004d; -} -.teamscores tr.yellow { - background-color: #4d4d00; -} -.teamscores tr.pink { - background-color: #4d004d; -} - - /* Gametype filters */ .btn-toolbar .nav > li a { width: 80px; diff --git a/xonstat/static/css/app.min.css b/xonstat/static/css/app.min.css index b41835b..2ec1b77 100644 --- a/xonstat/static/css/app.min.css +++ b/xonstat/static/css/app.min.css @@ -1 +1,350 @@ -@font-face{font-family:'XoloniumNormal';src:url('fonts/xolonium-webfont.eot');src:url('fonts/xolonium-webfont.eot?#iefix') format('embedded-opentype'),url('fonts/xolonium-webfont.woff') format('woff'),url('fonts/xolonium-webfont.ttf') format('truetype'),url('fonts/xolonium-webfont.svg#XoloniumNormal') format('svg');font-weight:normal;font-style:normal}body{background:url("img/web_background_4.jpg") no-repeat fixed center center / cover black;background-color:black;color:#d0d0d0;font-family:"XoloniumNormal","Helvetica Neue",Helvetica,Arial,sans-serif}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999}h1{font-size:30px;line-height:36px}h1 small{font-size:18px}h2{font-size:24px;line-height:36px}h2 small{font-size:18px}h3{line-height:27px;font-size:18px}h3 small{font-size:14px}h4,h5,h6{line-height:18px}h4{font-size:14px}h4 small{font-size:12px}h5{font-size:12px}h6{font-size:11px;color:#999;text-transform:uppercase}table{background:#000;background:none repeat scroll 0 0 rgba(0,0,0,0.7);border:1px solid #436688}table th{border:1px solid #436688;background-color:#001021}table td{border:1px solid #436688;font-size:10px}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#222}.table th,.table td{border:1px solid #436688}.table td{vertical-align:middle}.table .tdcenter{text-align:center}.accordion-group{border:1px solid #272525}.accordion-inner{border:0}#statline{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;position:relative;top:-25px}#xonborder{background:#000;background:none repeat scroll 0 0 rgba(0,0,0,0.5);border-radius:15px 15px 15px 15px;margin-bottom:30px;margin-left:0;padding:20px}#title{color:#08c;font-size:30px;margin-bottom:15px;position:relative;text-align:center;text-shadow:2px 2px 3px #333}.indexform{margin:20px 0 20px 0}.indexbox{width:250px}.navbar-brand{margin-left:0;padding-bottom:0;padding-top:10px;text-align:left}.navbar-inverse{background:none repeat scroll 0 0 rgba(0,0,0,0.6)}.navbar-inverse .nav>.active>a,.navbar-inverse .nav>.active>a:hover,.navbar-inverse .nav>.active>a:focus{background:none repeat scroll 0 0 rgba(49,49,49,0.6)}.navbar-inverse .nav>li>a,.navbar-brand{font-family:XoloniumNormal}.search,input[type="search"]{background-color:#606060;border:1px solid #202020;color:#aaa;width:100px}.game{float:left;min-width:700px;padding:10px 7px}.game a{color:#CCC}.game a:hover{color:#d95f00;text-decoration:none}.game tr{background-color:#000}.game tr.red{background-color:#4d0000}.game tr.blue{background-color:#00004d}.game tr.yellow{background-color:#4d4d00}.game tr.pink{background-color:#4d004d}.game tr:hover{background-color:#222}.teamscore{text-align:right;text-shadow:-1px -1px 0 #222;font-size:200%;font-weight:bold;padding:10px 7px;margin-right:10px;margin-top:20px}.teamscore .red{color:#ad0000}.teamscore .blue{color:#0000ad}.teamscore .yellow{color:#adad00}.teamscore .pink{color:#ad00ad}.player-score{color:#feff3a}.ping{width:50px}.weapon-nav{height:70px;margin-bottom:20px}.weapon-nav ul{display:block;list-style:none outside none}.weapon-nav li{cursor:pointer;float:left;margin-right:10px}.weapon-nav li:hover{border-bottom:2px solid #001021}.weapon-nav .weapon-active{border-bottom:2px solid #436688}.weapon-nav p{text-align:center}.flot table,.flot td{background-color:black;border:0}#gbtabcontainer{margin-top:10px}#gbtab{font-size:12px}.tabbable p{font-size:14px}.tabs-below .nav-tabs>li>a{border-radius:4px 4px 4px 4px}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{background-color:#111;color:#aaa;border-color:#222}.nav-tabs>.active>a,.nav-tabs>.active>a:focus{background-color:#111;color:#aaa;border-color:#222}.nav-tabs>li>a{border-radius:4px 4px 4px 4px;text-align:center}.nav-tabs>li>a:hover{background-color:#111;border-color:#333}.nav-tabs{border-bottom:0 solid #000}.table .tdcenter{text-align:center}.game-detail img{float:left;margin-right:10px;margin-bottom:5px}.game img{float:left;margin-right:5px;margin-bottom:5px}.game-detail p,.game h4{float:left}.teamscores tr{background-color:#000}.teamscores td{padding:3px;text-align:center;font-size:12px;font-weight:bold}.teamscores tr.red{background-color:#4d0000}.teamscores tr.blue{background-color:#00004d}.teamscores tr.yellow{background-color:#4d4d00}.teamscores tr.pink{background-color:#4d004d}.btn-toolbar .nav>li a{width:80px}.btn.dropdown-toggle,.btn.dropdown-toggle:active{background:0;border:1px solid transparent;border-radius:4px 4px 4px 4px;line-height:20px;color:#428bca;padding:10px 0 10px 0;font-size:14px;outline:0}.btn.dropdown-toggle:hover,.btn.dropdown-toggle:focus{background-color:#111;color:#2a6496;border-color:#333}.btn.dropdown-toggle>.caret{height:21px;border-top-color:#428bca;border-top-width:8px;border-left-width:8px;border-right-width:8px}.dropdown-menu{width:100px}.dropdown-menu.nav-tabs{padding:4px;background-color:#111;border:1px solid #333;width:256px}.dropdown-menu.nav-tabs>li>a{width:80px;color:inherit}.dropdown-menu.nav-tabs>li>a:hover{color:#222}.nostretch{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-nick{width:25%}.eloup{color:green}.elodown{color:#be0000}.eloneutral{color:gray}.pagination>li>a,.pagination>li>span{background-color:#111;border-color:#313131;color:#797979}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>.active>a,.pagination>.active>span{background-color:#2b2222}@media(min-width:768px){.navbar-form{float:right}} \ No newline at end of file +/* Fonts */ +@font-face { + font-family: 'XoloniumNormal'; + src: url('fonts/xolonium-webfont.eot'); + src: url('fonts/xolonium-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/xolonium-webfont.woff') format('woff'), + url('fonts/xolonium-webfont.ttf') format('truetype'), + url('fonts/xolonium-webfont.svg#XoloniumNormal') format('svg'); + font-weight: normal; + font-style: normal; +} + + +/* Primary elements */ +body { + background: url("img/web_background_4.jpg") no-repeat fixed center center / cover black; + background-color: black; + color: #D0D0D0; + font-family: "XoloniumNormal", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} +h1 { + font-size: 30px; + line-height: 36px; +} +h1 small { + font-size: 18px; +} +h2 { + font-size: 24px; + line-height: 36px; +} +h2 small { + font-size: 18px; +} +h3 { + line-height: 27px; + font-size: 18px; +} +h3 small { + font-size: 14px; +} +h4, h5, h6 { + line-height: 18px; +} +h4 { + font-size: 14px; +} +h4 small { + font-size: 12px; +} +h5 { + font-size: 12px; +} +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} +table { + background: rgb(0, 0, 0); /* IE Fallback */ + background: none repeat scroll 0 0 rgba(0, 0, 0, 0.7); + border: 1px solid #436688; +} +table th { border: 1px solid #436688; background-color: #001021; } +table td { + border: 1px solid #436688; + font-size: 10px; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #222; +} +.table th, .table td { + border: 1px solid #436688; +} +.table td { + vertical-align: middle; +} +.table .tdcenter { text-align: center; } +.accordion-group { + border: 1px solid rgb(39, 37, 37); +} +.accordion-inner { + border: none; +} + +/* One-off elements */ +#statline { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + position: relative; + top: -25px; +} +#xonborder { + background: rgb(0, 0, 0); /* IE Fallback */ + background: none repeat scroll 0 0 rgba(0, 0, 0, 0.5); + border-radius: 15px 15px 15px 15px; + margin-bottom: 30px; + margin-left: 0px; + padding: 20px; +} +#title { + color: #0088CC; + font-size: 30px; + margin-bottom: 15px; + position: relative; + text-align: center; + text-shadow: 2px 2px 3px #333; +} +.indexform { + margin: 20px 0px 20px 0px; +} +.indexbox { + width: 250px; +} + + +/* Navigation bar */ +.navbar-brand { + margin-left: 0; + padding-bottom: 0px; + padding-top: 10px; + text-align: left; +} +.navbar-inverse { + background: none repeat scroll 0 0 rgba(0, 0, 0, 0.6); +} +.navbar-inverse .nav>.active>a, .navbar-inverse .nav>.active>a:hover, .navbar-inverse .nav>.active>a:focus { + background: none repeat scroll 0 0 rgba(49, 49, 49, 0.6); +} +.navbar-inverse .nav>li>a, .navbar-brand { + font-family: XoloniumNormal; +} +.search, input[type="search"] { + background-color: #606060; + border: 1px solid #202020; + color: #AAAAAA; + width: 100px; +} + +/* Game scoreboard */ +.game { + float: left; + min-width: 700px; + padding: 10px 7px; +} +.game a { + color: #CCC; +} +.game a:hover { + color: #d95f00; + text-decoration: none; +} +.game tr { + background-color: #000; +} +.game tr.red { + background-color: #4d0000; +} +.game tr.blue { + background-color: #00004d; +} +.game tr.yellow { + background-color: #4d4d00; +} +.game tr.pink { + background-color: #4d004d; +} +.game tr:hover { + background-color: #222; +} + +.teamscore { + text-align: right; + text-shadow: -1px -1px 0 #222; + font-size: 26px; + font-weight: bold; + padding: 10px 7px; + margin-right: 10px; + margin-top: 10px; +} +.teamscore .teamname { + text-shadow: none; + font-size: 11px; + font-stretch: expanded; +} +.teamscore .red { + color: #ad0000; +} +.teamscore .blue { + color: #0000ad; +} +.teamscore .yellow { + color: #adad00; +} +.teamscore .pink { + color: #ad00ad; +} +.player-score { color: #FEFF3A; } +.ping { width: 50px; } + +/* accuracy and weapon graphs */ +.weapon-nav { + height: 70px; + margin-bottom: 20px; +} +.weapon-nav ul { + display: block; + list-style: none outside none; +} +.weapon-nav li { + cursor: pointer; + float: left; + margin-right: 10px; +} +.weapon-nav li:hover { + border-bottom: 2px solid #001021; +} +.weapon-nav .weapon-active { + border-bottom: 2px solid #436688; +} +.weapon-nav p { + text-align: center; +} + +.flot table, .flot td { + background-color: black; + border: 0; +} + +/* Player Info Tabs */ +#gbtabcontainer { margin-top: 10px; } +#gbtab { font-size: 12px; } +.tabbable p { font-size: 14px; } +.tabs-below .nav-tabs > li > a { border-radius: 4px 4px 4px 4px; } +.nav-tabs > .active > a, .nav-tabs > .active > a:hover { background-color: #111; color: #aaa; border-color: #222; } +.nav-tabs > .active > a, .nav-tabs > .active > a:focus { background-color: #111; color: #aaa; border-color: #222; } +.nav-tabs > li > a { border-radius: 4px 4px 4px 4px; text-align: center; } +.nav-tabs > li > a:hover { background-color: #111; border-color: #333; } +.nav-tabs { border-bottom: 0px solid #000; } + +.table .tdcenter { text-align: center; } + +/* Game Info and Game Index*/ +.game-detail img { + float: left; + margin-right: 10px; + margin-bottom: 5px; +} + +.game img { + float: left; + margin-right: 5px; + margin-bottom: 5px; +} + +.game-detail p, +.game h4 { + float: left; +} + + +/* Gametype filters */ +.btn-toolbar .nav > li a { + width: 80px; +} + +.btn.dropdown-toggle, .btn.dropdown-toggle:active { + background: none; + border: 1px solid transparent; + border-radius:4px 4px 4px 4px; + line-height:20px; + color: #428bca; + padding: 10px 0px 10px 0px; + font-size: 14px; + outline: 0; +} +.btn.dropdown-toggle:hover, .btn.dropdown-toggle:focus { + background-color:#111; + color:#2a6496; + border-color:#333; +} + +.btn.dropdown-toggle > .caret { + height: 21px; + border-top-color: #428bca; + border-top-width: 8px; + border-left-width: 8px; + border-right-width: 8px; +} + +.dropdown-menu { + width: 100px; +} + +.dropdown-menu.nav-tabs { + padding:4px; + background-color: #111; + border: 1px solid #333; + width: 256px; } +.dropdown-menu.nav-tabs > li > a { + width:80px; + color:inherit; +} +.dropdown-menu.nav-tabs > li > a:hover { + color:#222; +} + +/* Player nicknames */ +.nostretch { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.player-nick { + width: 25%; +} + +/* elo colors */ +.eloup { color: green; } +.elodown { color: rgb(190,0,0); } +.eloneutral { color: gray; } + +/* Navigation links */ +.pagination > li > a, .pagination > li > span { + background-color: #111111; + border-color: rgb(49, 49, 49); + color: rgb(121, 121, 121); +} +.pagination>li>a:hover, .pagination>li>a:focus, .pagination>.active>a, .pagination>.active>span{ + background-color: rgb(43, 34, 34); +} + + +/* Desktop-specific stuff */ +@media (min-width: 768px) { + .navbar-form { + float: right; + } +} diff --git a/xonstat/templates/game_info.mako b/xonstat/templates/game_info.mako index f8a685c..b9ab876 100644 --- a/xonstat/templates/game_info.mako +++ b/xonstat/templates/game_info.mako @@ -33,7 +33,7 @@ Game Information % else:

Game Detail

-
+
${game.game_type_cd}

Played: ${game.fuzzy_date()}
@@ -68,15 +68,19 @@ Game Information % for tgstat in tgstats:

- +
+ ${tgstat.team_html_color().capitalize()} +
+
% if game.game_type_cd == 'ctf': ${tgstat.caps} - % elif game.game_type_cd in 'ca' 'lms' 'ka': + % elif game.game_type_cd == 'ca': ${tgstat.rounds} +## dom -> ticks, rc -> laps, nb -> goals, as -> objectives % else: ${tgstat.score} % endif - +
${scoreboard(game.game_type_cd, stats_by_team[tgstat.team], show_elo, show_latency)} diff --git a/xonstat/views/game.py b/xonstat/views/game.py index 0d7a9df..a0f65e8 100644 --- a/xonstat/views/game.py +++ b/xonstat/views/game.py @@ -112,8 +112,9 @@ def _game_info_data(request): filter(TeamGameStat.game_id == game_id) if game.game_type_cd == 'ctf': q = q.order_by(TeamGameStat.caps.desc()) - elif game.game_type_cd in 'ca' 'lms' 'ka': + elif game.game_type_cd == 'ca': q = q.order_by(TeamGameStat.rounds.desc()) + # dom -> ticks, rc -> laps, nb -> goals, as -> objectives q = q.order_by(TeamGameStat.score.desc()) -- 2.39.2