]> git.rm.cloudns.org Git - xonotic/xonstat.git/commitdiff
Add teamnames to teamscores, fix layout issues, fix sorting for LMS/KA
authorJan Behrens <zykure@web.de>
Thu, 25 Jul 2013 19:12:31 +0000 (21:12 +0200)
committerJan Behrens <zykure@web.de>
Thu, 25 Jul 2013 19:12:31 +0000 (21:12 +0200)
xonstat/static/css/app.css
xonstat/static/css/app.min.css
xonstat/templates/game_info.mako
xonstat/views/game.py

index fedf997b889c115c6d96dc8248088d15995b70bb..7b9769d52f59f63febd33f98d2d139baa5921b12 100644 (file)
@@ -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;
index b41835bcc3e909f02093584cf585e23d287f4c14..2ec1b77263b56f24704f2be6f01ed984cb75a7e6 100644 (file)
@@ -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;
+    }
+}
index f8a685ca80d4de244a0bc1a8a8fe04f60d590b93..b9ab8765282b5385401386b7272deb5443e4a377 100644 (file)
@@ -33,7 +33,7 @@ Game Information
 % else:
 <div class="row">
   <h2>Game Detail</h2>
-  <div class="span6 game-detail">
+  <div class="span8 game-detail">
     <img width="64" height="64" src="/static/images/icons/48x48/${game.game_type_cd}.png" alt="${game.game_type_cd}"/>
     <p>
     Played: <span class="abstime" data-epoch="${game.epoch()}" title="${game.start_dt.strftime('%a, %d %b %Y %H:%M:%S UTC')}">${game.fuzzy_date()}</span><br />
@@ -68,15 +68,19 @@ Game Information
 % for tgstat in tgstats:
 <div class="row">
   <div class="span1 teamscore">
-  <span class="${tgstat.team_html_color()}">
+  <div class="teamname ${tgstat.team_html_color()}">
+  ${tgstat.team_html_color().capitalize()}
+  </div>
+  <div class="${tgstat.team_html_color()}">
   % 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
-  </span>
+  </div>
   </div>
   <div class="span10 game">
   ${scoreboard(game.game_type_cd, stats_by_team[tgstat.team], show_elo, show_latency)}
index 0d7a9df80a01bcfe8122dad6099c73b6570fd80f..a0f65e808ae1a4b09555ff0e4180b76efee69ca4 100644 (file)
@@ -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())