View
@@ -0,0 +1,191 @@
+// SPRITES
+// Glyphs and icons for buttons, nav, and more
+// -------------------------------------------
+
+
+// ICONS
+// -----
+
+// All icons receive the styles of the <i> tag with a base class
+// of .i and are then given a unique class to add width, height,
+// and background-position. Your resulting HTML will look like
+// <i class="icon-inbox"></i>.
+
+// For the white version of the icons, just add the .icon-white class:
+// <i class="icon-inbox icon-white"></i>
+
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ .ie7-restore-right-whitespace();
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("@{iconSpritePath}");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+
+}
+.icon-white {
+ background-image: url("@{iconWhiteSpritePath}");
+}
+
+.icon-glass { background-position: 0 0; }
+.icon-music { background-position: -24px 0; }
+.icon-search { background-position: -48px 0; }
+.icon-envelope { background-position: -72px 0; }
+.icon-heart { background-position: -96px 0; }
+.icon-star { background-position: -120px 0; }
+.icon-star-empty { background-position: -144px 0; }
+.icon-user { background-position: -168px 0; }
+.icon-film { background-position: -192px 0; }
+.icon-th-large { background-position: -216px 0; }
+.icon-th { background-position: -240px 0; }
+.icon-th-list { background-position: -264px 0; }
+.icon-ok { background-position: -288px 0; }
+.icon-remove { background-position: -312px 0; }
+.icon-zoom-in { background-position: -336px 0; }
+.icon-zoom-out { background-position: -360px 0; }
+.icon-off { background-position: -384px 0; }
+.icon-signal { background-position: -408px 0; }
+.icon-cog { background-position: -432px 0; }
+.icon-trash { background-position: -456px 0; }
+
+.icon-home { background-position: 0 -24px; }
+.icon-file { background-position: -24px -24px; }
+.icon-time { background-position: -48px -24px; }
+.icon-road { background-position: -72px -24px; }
+.icon-download-alt { background-position: -96px -24px; }
+.icon-download { background-position: -120px -24px; }
+.icon-upload { background-position: -144px -24px; }
+.icon-inbox { background-position: -168px -24px; }
+.icon-play-circle { background-position: -192px -24px; }
+.icon-repeat { background-position: -216px -24px; }
+.icon-refresh { background-position: -240px -24px; }
+.icon-list-alt { background-position: -264px -24px; }
+.icon-lock { background-position: -287px -24px; } // 1px off
+.icon-flag { background-position: -312px -24px; }
+.icon-headphones { background-position: -336px -24px; }
+.icon-volume-off { background-position: -360px -24px; }
+.icon-volume-down { background-position: -384px -24px; }
+.icon-volume-up { background-position: -408px -24px; }
+.icon-qrcode { background-position: -432px -24px; }
+.icon-barcode { background-position: -456px -24px; }
+
+.icon-tag { background-position: 0 -48px; }
+.icon-tags { background-position: -25px -48px; } // 1px off
+.icon-book { background-position: -48px -48px; }
+.icon-bookmark { background-position: -72px -48px; }
+.icon-print { background-position: -96px -48px; }
+.icon-camera { background-position: -120px -48px; }
+.icon-font { background-position: -144px -48px; }
+.icon-bold { background-position: -167px -48px; } // 1px off
+.icon-italic { background-position: -192px -48px; }
+.icon-text-height { background-position: -216px -48px; }
+.icon-text-width { background-position: -240px -48px; }
+.icon-align-left { background-position: -264px -48px; }
+.icon-align-center { background-position: -288px -48px; }
+.icon-align-right { background-position: -312px -48px; }
+.icon-align-justify { background-position: -336px -48px; }
+.icon-list { background-position: -360px -48px; }
+.icon-indent-left { background-position: -384px -48px; }
+.icon-indent-right { background-position: -408px -48px; }
+.icon-facetime-video { background-position: -432px -48px; }
+.icon-picture { background-position: -456px -48px; }
+
+.icon-pencil { background-position: 0 -72px; }
+.icon-map-marker { background-position: -24px -72px; }
+.icon-adjust { background-position: -48px -72px; }
+.icon-tint { background-position: -72px -72px; }
+.icon-edit { background-position: -96px -72px; }
+.icon-share { background-position: -120px -72px; }
+.icon-check { background-position: -144px -72px; }
+.icon-move { background-position: -168px -72px; }
+.icon-step-backward { background-position: -192px -72px; }
+.icon-fast-backward { background-position: -216px -72px; }
+.icon-backward { background-position: -240px -72px; }
+.icon-play { background-position: -264px -72px; }
+.icon-pause { background-position: -288px -72px; }
+.icon-stop { background-position: -312px -72px; }
+.icon-forward { background-position: -336px -72px; }
+.icon-fast-forward { background-position: -360px -72px; }
+.icon-step-forward { background-position: -384px -72px; }
+.icon-eject { background-position: -408px -72px; }
+.icon-chevron-left { background-position: -432px -72px; }
+.icon-chevron-right { background-position: -456px -72px; }
+
+.icon-plus-sign { background-position: 0 -96px; }
+.icon-minus-sign { background-position: -24px -96px; }
+.icon-remove-sign { background-position: -48px -96px; }
+.icon-ok-sign { background-position: -72px -96px; }
+.icon-question-sign { background-position: -96px -96px; }
+.icon-info-sign { background-position: -120px -96px; }
+.icon-screenshot { background-position: -144px -96px; }
+.icon-remove-circle { background-position: -168px -96px; }
+.icon-ok-circle { background-position: -192px -96px; }
+.icon-ban-circle { background-position: -216px -96px; }
+.icon-arrow-left { background-position: -240px -96px; }
+.icon-arrow-right { background-position: -264px -96px; }
+.icon-arrow-up { background-position: -289px -96px; } // 1px off
+.icon-arrow-down { background-position: -312px -96px; }
+.icon-share-alt { background-position: -336px -96px; }
+.icon-resize-full { background-position: -360px -96px; }
+.icon-resize-small { background-position: -384px -96px; }
+.icon-plus { background-position: -408px -96px; }
+.icon-minus { background-position: -433px -96px; }
+.icon-asterisk { background-position: -456px -96px; }
+
+.icon-exclamation-sign { background-position: 0 -120px; }
+.icon-gift { background-position: -24px -120px; }
+.icon-leaf { background-position: -48px -120px; }
+.icon-fire { background-position: -72px -120px; }
+.icon-eye-open { background-position: -96px -120px; }
+.icon-eye-close { background-position: -120px -120px; }
+.icon-warning-sign { background-position: -144px -120px; }
+.icon-plane { background-position: -168px -120px; }
+.icon-calendar { background-position: -192px -120px; }
+.icon-random { background-position: -216px -120px; }
+.icon-comment { background-position: -240px -120px; }
+.icon-magnet { background-position: -264px -120px; }
+.icon-chevron-up { background-position: -288px -120px; }
+.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
+.icon-retweet { background-position: -336px -120px; }
+.icon-shopping-cart { background-position: -360px -120px; }
+.icon-folder-close { background-position: -384px -120px; }
+.icon-folder-open { background-position: -408px -120px; }
+.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
+.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off
+
+.icon-hdd { background-position: 0 -144px; }
+.icon-bullhorn { background-position: -24px -144px; }
+.icon-bell { background-position: -48px -144px; }
+.icon-certificate { background-position: -72px -144px; }
+.icon-thumbs-up { background-position: -96px -144px; }
+.icon-thumbs-down { background-position: -120px -144px; }
+.icon-hand-right { background-position: -144px -144px; }
+.icon-hand-left { background-position: -168px -144px; }
+.icon-hand-up { background-position: -192px -144px; }
+.icon-hand-down { background-position: -216px -144px; }
+.icon-circle-arrow-right { background-position: -240px -144px; }
+.icon-circle-arrow-left { background-position: -264px -144px; }
+.icon-circle-arrow-up { background-position: -288px -144px; }
+.icon-circle-arrow-down { background-position: -312px -144px; }
+.icon-globe { background-position: -336px -144px; }
+.icon-wrench { background-position: -360px -144px; }
+.icon-tasks { background-position: -384px -144px; }
+.icon-filter { background-position: -408px -144px; }
+.icon-briefcase { background-position: -432px -144px; }
+.icon-fullscreen { background-position: -456px -144px; }
+
+
+
+
+
+
+
+
+
+
+
+
View
Oops, something went wrong.
View
@@ -0,0 +1,118 @@
+/*!
+ * Bootstrap v2.0.4
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+// CSS Reset
+@import "reset.less";
+
+// Core variables and mixins
+@import "variables.less"; // Modify this for custom colors, font-sizes, etc
+@import "mixins.less";
+
+// Grid system and page structure
+@import "scaffolding.less";
+@import "grid.less";
+@import "layouts.less";
+
+// Base CSS
+@import "type.less";
+@import "code.less";
+@import "forms.less";
+@import "tables.less";
+
+// Components: common
+@import "sprites.less";
+@import "dropdowns.less";
+@import "wells.less";
+@import "component-animations.less";
+@import "close.less";
+
+// Components: Buttons & Alerts
+@import "buttons.less";
+@import "button-groups.less";
+@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
+
+// Components: Nav
+@import "navs.less";
+@import "navbar.less";
+@import "breadcrumbs.less";
+@import "pagination.less";
+@import "pager.less";
+
+// Components: Popovers
+@import "modals.less";
+@import "tooltip.less";
+@import "popovers.less";
+
+// Components: Misc
+@import "thumbnails.less";
+@import "labels-badges.less";
+@import "progress-bars.less";
+@import "accordion.less";
+@import "carousel.less";
+@import "hero-unit.less";
+
+// Utility classes
+@import "utilities.less"; // Has to be last to override when necessary
+
+/*!
+ * Bootstrap Responsive v2.0.4
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+
+// Responsive.less
+// For phone and tablet devices
+// -------------------------------------------------------------
+
+
+// RESPONSIVE CLASSES
+// ------------------
+
+@import "responsive-utilities.less";
+
+
+// MEDIA QUERIES
+// ------------------
+
+// Phones to portrait tablets and narrow desktops
+@import "responsive-767px-max.less";
+
+// Tablets to regular desktops
+@import "responsive-768px-979px.less";
+
+// Large desktops
+@import "responsive-1200px-min.less";
+
+
+// RESPONSIVE NAVBAR
+// ------------------
+
+// From 979px and below, show a button to toggle navbar contents
+@import "responsive-navbar.less";
+
+
+/*!
+ * The Blue Alliance
+ * Built on top of the Twitter Bootstrap Framework
+ */
+
+@import "tba_base.less";
+@import "tba_bracket_table.less";
+@import "tba_event_list.less";
+@import "tba_event_page.less";
+@import "tba_landing.less";
+@import "tba_match_table.less";
+@import "tba_team_page.less";
+@import "tba_team_table.less";
View
@@ -0,0 +1,176 @@
+//
+// Tables.less
+// Tables for, you guessed it, tabular data
+// ----------------------------------------
+
+
+// BASE TABLES
+// -----------------
+
+table {
+ max-width: 100%;
+ background-color: @tableBackground;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+// BASELINE STYLES
+// ---------------
+
+.table {
+ width: 100%;
+ margin-bottom: @baseLineHeight;
+ // Cells
+ th,
+ td {
+ padding: 8px;
+ line-height: @baseLineHeight;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid @tableBorder;
+ }
+ th {
+ font-weight: bold;
+ }
+ // Bottom align for column headings
+ thead th {
+ vertical-align: bottom;
+ }
+ // Remove top border from thead by default
+ caption + thead tr:first-child th,
+ caption + thead tr:first-child td,
+ colgroup + thead tr:first-child th,
+ colgroup + thead tr:first-child td,
+ thead:first-child tr:first-child th,
+ thead:first-child tr:first-child td {
+ border-top: 0;
+ }
+ // Account for multiple tbody instances
+ tbody + tbody {
+ border-top: 2px solid @tableBorder;
+ }
+}
+
+
+
+// CONDENSED TABLE W/ HALF PADDING
+// -------------------------------
+
+.table-condensed {
+ th,
+ td {
+ padding: 4px 5px;
+ }
+}
+
+
+// BORDERED VERSION
+// ----------------
+
+.table-bordered {
+ border: 1px solid @tableBorder;
+ border-collapse: separate; // Done so we can round those corners!
+ *border-collapse: collapsed; // IE7 can't round corners anyway
+ border-left: 0;
+ .border-radius(4px);
+ th,
+ td {
+ border-left: 1px solid @tableBorder;
+ }
+ // Prevent a double border
+ caption + thead tr:first-child th,
+ caption + tbody tr:first-child th,
+ caption + tbody tr:first-child td,
+ colgroup + thead tr:first-child th,
+ colgroup + tbody tr:first-child th,
+ colgroup + tbody tr:first-child td,
+ thead:first-child tr:first-child th,
+ tbody:first-child tr:first-child th,
+ tbody:first-child tr:first-child td {
+ border-top: 0;
+ }
+ // For first th or td in the first row in the first thead or tbody
+ thead:first-child tr:first-child th:first-child,
+ tbody:first-child tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ }
+ thead:first-child tr:first-child th:last-child,
+ tbody:first-child tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ }
+ // For first th or td in the first row in the first thead or tbody
+ thead:last-child tr:last-child th:first-child,
+ tbody:last-child tr:last-child td:first-child {
+ .border-radius(0 0 0 4px);
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ }
+ thead:last-child tr:last-child th:last-child,
+ tbody:last-child tr:last-child td:last-child {
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ }
+}
+
+
+// ZEBRA-STRIPING
+// --------------
+
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+.table-striped {
+ tbody {
+ tr:nth-child(odd) td,
+ tr:nth-child(odd) th {
+ background-color: @tableBackgroundAccent;
+ }
+ }
+}
+
+
+// HOVER EFFECT
+// ------------
+// Placed here since it has to come after the potential zebra striping
+.table {
+ tbody tr:hover td,
+ tbody tr:hover th {
+ background-color: @tableBackgroundHover;
+ }
+}
+
+
+// TABLE CELL SIZING
+// -----------------
+
+// Change the columns
+table {
+ .span1 { .tableColumns(1); }
+ .span2 { .tableColumns(2); }
+ .span3 { .tableColumns(3); }
+ .span4 { .tableColumns(4); }
+ .span5 { .tableColumns(5); }
+ .span6 { .tableColumns(6); }
+ .span7 { .tableColumns(7); }
+ .span8 { .tableColumns(8); }
+ .span9 { .tableColumns(9); }
+ .span10 { .tableColumns(10); }
+ .span11 { .tableColumns(11); }
+ .span12 { .tableColumns(12); }
+ .span13 { .tableColumns(13); }
+ .span14 { .tableColumns(14); }
+ .span15 { .tableColumns(15); }
+ .span16 { .tableColumns(16); }
+ .span17 { .tableColumns(17); }
+ .span18 { .tableColumns(18); }
+ .span19 { .tableColumns(19); }
+ .span20 { .tableColumns(20); }
+ .span21 { .tableColumns(21); }
+ .span22 { .tableColumns(22); }
+ .span23 { .tableColumns(23); }
+ .span24 { .tableColumns(24); }
+}
View
@@ -0,0 +1,126 @@
+#navTitle {
+ background-image: url('/images/tba_blue_lamp_navbar.png');
+ background-repeat: no-repeat;
+ background-position: left center;
+ padding-left: 30px;
+ margin-left: 10px;
+ padding-right: 0;
+}
+
+#subnav {
+ margin-left: 15px;
+}
+
+
+.social-icons {
+ padding: 0;
+ margin: 9px 0 0 0;
+ float: right;
+
+ @media (max-width: 980px) and (min-width: 768px) {
+ float: left;
+ margin: 0 0 0 11px;
+ }
+
+ @media (max-width: 767px) {
+ margin: 0;
+ text-align: center;
+ float: none;
+
+ .socialIcon {
+ margin: 0 4px;
+ }
+ }
+}
+
+.socialIcon {
+ width: 24px;
+ height: 24px;
+ display: inline-block;
+ margin: 0 4px 0px 4px;
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
+#facebook {
+ background-image: url('/images/icons/facebook-24x24.png');
+}
+
+#twitter {
+ background-image: url('/images/icons/twitter-24x24.png');
+}
+
+#tumblr {
+ background-image: url('/images/icons/tumblr-24x24.png');
+}
+
+#footer {
+ margin-top: 50px;
+ text-align: center;
+}
+
+.sponsorImage {
+ width: 130px;
+ height: 30px;
+ text-align: center;
+ display: inline-block;
+ background-position: center center;
+ background-repeat: no-repeat;
+}
+
+.sponsor{
+ vertical-align: middle;
+ margin: 0px 3px;
+ display: inline-block;
+}
+
+#dotblock {
+ background-image: url('/images/dotblock.png');
+}
+
+#appengine {
+ background-image: url('/images/appengine.png');
+}
+
+.container > .end_header {
+ margin-bottom: 15px;
+}
+
+// Inheritance doesn't seme to be working. Copied from navs.less
+@media (max-width: 767px) {
+ // Stacked tabs and pills
+ .nav-stacked-phone > li {
+ float: none;
+ }
+ .nav-stacked-phone > li > a {
+ margin-right: 0; // no need for the gap between nav items
+ margin-top: 0;
+ }
+
+ // Tabs
+ .nav-tabs.nav-stacked-phone {
+ border-bottom: 0;
+ }
+ .nav-tabs.nav-stacked-phone > li > a {
+ border: 1px solid #ddd;
+ .border-radius(0);
+ }
+ .nav-tabs.nav-stacked-phone > li:first-child > a {
+ .border-radius(4px 4px 0 0);
+ }
+ .nav-tabs.nav-stacked-phone > li:last-child > a {
+ .border-radius(0 0 4px 4px);
+ }
+ .nav-tabs.nav-stacked-phone > li > a:hover {
+ border-color: #ddd;
+ z-index: 2;
+ }
+
+ // Pills
+ .nav-pills.nav-stacked-phone > li > a {
+ margin-bottom: 3px;
+ }
+ .nav-pills.nav-stacked-phone > li:last-child > a {
+ margin-bottom: 1px; // decrease margin to match sizing of stacked tabs
+ }
+}
View
@@ -0,0 +1,52 @@
+.brackettable {
+ border: 1px solid black;
+ margin: 0 auto 0 auto;
+ width: 75%;
+}
+
+.brackettable .header {
+ background: #999;
+ color: black;
+ font-size: 18px;
+ font-weight: bold;
+ padding: 4px;
+}
+
+.brackettable tr td {
+ padding: 3px 10px;
+ border: 1px solid black;
+ text-align: center;
+ background-color: #eee;
+}
+
+.brackettable .winnerL {
+ background-image: url(http://dev.thebluealliance.net/tbatv/images/advancedR.png);
+ background-position: center right;
+ background-repeat: no-repeat;
+ background-color: #fff;
+ padding-right: 15px;
+}
+
+.brackettable .winnerR {
+ background-image: url(http://dev.thebluealliance.net/tbatv/images/advancedL.png);
+ background-position: center left;
+ background-repeat: no-repeat;
+ background-color: #fff;
+ padding-left: 15px;
+}
+
+.brackettable .winnerC {
+ background-image: url(http://dev.thebluealliance.net/tbatv/images/firstplace.png);
+ background-position: center 15px;
+ background-repeat: no-repeat;
+ background-color: #fff;
+ padding-top: 25px;
+}
+
+.brackettable .secondC {
+ background-image: url(http://dev.thebluealliance.net/tbatv/images/secondplace.png);
+ background-position: center 15px;
+ background-repeat: no-repeat;
+ background-color: #eee;
+ padding-top: 25px;
+}
View
@@ -0,0 +1,50 @@
+.year_list {
+ padding-bottom: 20px;
+}
+
+.event_block {
+ display: table;
+ float: left;
+ padding: 8px;
+ .box-sizing(border-box);
+}
+
+.event_info {
+ height: 100px;
+ background-color: @grayLighter;
+ padding: 8px;
+ color: @textColor;
+ border: 1px solid #ddd;
+ .border-radius(4px);
+ .box-shadow(0 1px 1px rgba(0,0,0,.075));
+ display: table-cell;
+ vertical-align: middle;
+ text-align: center;
+}
+
+div.event_info:hover {
+ border-color: @linkColor;
+ .box-shadow(0 1px 4px rgba(0,105,214,.25));
+}
+
+.no_events > p {
+ margin-left: 20px;
+}
+@media (min-width: 1200px) {
+ .event_block {
+ width: 33%;
+ }
+}
+
+@media (max-width: 1199px) and (min-width: 768px) {
+ .event_block {
+ width: 50%;
+ }
+}
+
+@media (max-width: 767px) {
+ .event_block {
+ width: 100%;
+ }
+}
+
View
@@ -0,0 +1,37 @@
+table.table-center td,
+table.table-center th, text-center {
+ text-align:center;
+}
+
+.clear-both {
+ clear: both;
+}
+
+td {
+ text-align:center;
+}
+th {
+ text-align:center;
+}
+
+td.redcell{
+ border: 1px solid #ff4444;
+ padding: 2px;
+ color: #000;
+}
+
+td.bluecell {
+ border: 1px solid #4444ff;
+ padding: 2px;
+ color: #000;
+}
+
+tr td.redscorecell {
+ color: #fff;
+ background: #cc2222;
+}
+
+tr td.bluescorecell {
+ color: #fff;
+ background: #2222cc;
+}
View
@@ -0,0 +1,31 @@
+.landing {
+ text-align: center;
+ p {
+ margin: 20px 0;
+ }
+ div {
+ padding: none;
+ display: inline-block;
+ marign-left: auto;
+ margin-right: auto;
+ .btn {
+ margin: 0 10px;
+ }
+ }
+}
+
+.landing-logo {
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.landing-logo-phone {
+ margin-bottom: 40px;
+}
+
+@media (max-width: 480px) {
+ .landing-hero-unit {
+ padding: 30px;
+ }
+}
View
@@ -0,0 +1,84 @@
+th.videoIcon{
+ background-image: url('/images/icons/video.png');
+ background-repeat: no-repeat;
+ background-position: center center;
+ min-width: 12px;
+}
+
+table.matchTable, table.oprTable {
+ border-bottom: 1px solid #cccccc;
+ padding: 3px 0;
+ margin: 0 0 1em 0;
+ width: 100%;
+ margin-left:auto;
+
+ @media (min-width: 768px) {
+ tbody tr:hover td,
+ tbody tr:hover th {
+ background-color: @tableBackgroundHover;
+ }
+ }
+}
+
+table.matchTable tr, table.oprTable tr {
+ border-top: 1px solid #cccccc;
+ border-left: 1px solid #cccccc;
+ padding: 3px 0;
+}
+
+table.matchTable tr.key, table.oprTable tr.key {
+ background-color: #f0f0f0;
+}
+
+table.matchTable th, table.oprTable th {
+ border-right: 1px solid #cccccc;
+ font-weight: bold;
+ text-align: center;
+ vertical-align: middle;
+ padding: 3px;
+}
+
+table.matchTable td, table.oprTable td {
+ border-right: 1px solid #cccccc;
+ text-align: center;
+ vertical-align: middle;
+ padding: 3px;
+}
+
+table.matchTable td.red {
+ background-color: #ffeeee;
+}
+
+table.matchTable td.blue {
+ background-color: #eeeeff;
+}
+
+table.matchTable td.redScore {
+ background-color: #ffdddd;
+}
+
+table.matchTable td.blueScore {
+ background-color: #ddddff;
+}
+
+table.matchTable td.winner {
+ font-weight: bold;
+}
+
+table.matchTable td.icon, table.matchTable th.icon {
+ margin: 0;
+ padding: 3px 0 0 0;
+ font-size: .5em;
+}
+
+table.matchTable td.win{
+ background-color: #90ee90;
+}
+
+table.matchTable td.lose{
+ background-color: #f08080;
+}
+
+table.matchTable td.tie{
+ background-color: #d3d3d3;
+}
View
@@ -0,0 +1,2 @@
+.event-link{margin-left:10px}.no-robot-image{max-width:300px;margin:15px auto}.team-nick{text-overflow:ellipsis;overflow:hidden}
+/* This beautiful CSS-File has been crafted with LESS (lesscss.org) and compiled by simpLESS (wearekiss.com/simpless) */
View
@@ -0,0 +1,13 @@
+.event-link {
+ margin-left: 10px;
+}
+
+.no-robot-image {
+ max-width: 300px;
+ margin: 15px auto;
+}
+
+.team-nick {
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
View
@@ -0,0 +1,2 @@
+.team-table{table-layout:fixed}.team-table td{text-overflow:ellipsis;overflow:hidden}
+/* This beautiful CSS-File has been crafted with LESS (lesscss.org) and compiled by simpLESS (wearekiss.com/simpless) */
View
@@ -0,0 +1,8 @@
+.team-table {
+ table-layout: fixed;
+
+ td {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+}
View
@@ -0,0 +1,47 @@
+// THUMBNAILS
+// ----------
+// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files
+
+// Make wrapper ul behave like the grid
+.thumbnails {
+ margin-left: -@gridGutterWidth;
+ list-style: none;
+ .clearfix();
+}
+// Fluid rows have no left margin
+.row-fluid .thumbnails {
+ margin-left: 0;
+}
+
+// Float li to make thumbnails appear in a row
+.thumbnails > li {
+ float: left; // Explicity set the float since we don't require .span* classes
+ margin-bottom: @baseLineHeight;
+ margin-left: @gridGutterWidth;
+}
+
+// The actual thumbnail (can be `a` or `div`)
+.thumbnail {
+ display: block;
+ padding: 4px;
+ line-height: 1;
+ border: 1px solid #ddd;
+ .border-radius(4px);
+ .box-shadow(0 1px 1px rgba(0,0,0,.075));
+}
+// Add a hover state for linked versions only
+a.thumbnail:hover {
+ border-color: @linkColor;
+ .box-shadow(0 1px 4px rgba(0,105,214,.25));
+}
+
+// Images and captions
+.thumbnail > img {
+ display: block;
+ max-width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+}
+.thumbnail .caption {
+ padding: 9px;
+}
View
@@ -0,0 +1,35 @@
+// TOOLTIP
+// ------=
+
+.tooltip {
+ position: absolute;
+ z-index: @zindexTooltip;
+ display: block;
+ visibility: visible;
+ padding: 5px;
+ font-size: 11px;
+ .opacity(0);
+ &.in { .opacity(80); }
+ &.top { margin-top: -2px; }
+ &.right { margin-left: 2px; }
+ &.bottom { margin-top: 2px; }
+ &.left { margin-left: -2px; }
+ &.top .tooltip-arrow { #popoverArrow > .top(); }
+ &.left .tooltip-arrow { #popoverArrow > .left(); }
+ &.bottom .tooltip-arrow { #popoverArrow > .bottom(); }
+ &.right .tooltip-arrow { #popoverArrow > .right(); }
+}
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: @white;
+ text-align: center;
+ text-decoration: none;
+ background-color: @black;
+ .border-radius(4px);
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+}
View
@@ -0,0 +1,232 @@
+// Typography.less
+// Headings, body text, lists, code, and more for a versatile and durable typography system
+// ----------------------------------------------------------------------------------------
+
+
+// BODY TEXT
+// ---------
+
+p {
+ margin: 0 0 @baseLineHeight / 2;
+ small {
+ font-size: @baseFontSize - 2;
+ color: @grayLight;
+ }
+}
+.lead {
+ margin-bottom: @baseLineHeight;
+ font-size: 20px;
+ font-weight: 200;
+ line-height: @baseLineHeight * 1.5;
+}
+
+// HEADINGS
+// --------
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 0;
+ font-family: @headingsFontFamily;
+ font-weight: @headingsFontWeight;
+ color: @headingsColor;
+ text-rendering: optimizelegibility; // Fix the character spacing for headings
+ small {
+ font-weight: normal;
+ color: @grayLight;
+ }
+}
+h1 {
+ font-size: 30px;
+ line-height: @baseLineHeight * 2;
+ small {
+ font-size: 18px;
+ }
+}
+h2 {
+ font-size: 24px;
+ line-height: @baseLineHeight * 2;
+ small {
+ font-size: 18px;
+ }
+}
+h3 {
+ font-size: 18px;
+ line-height: @baseLineHeight * 1.5;
+ small {
+ font-size: 14px;
+ }
+}
+h4, h5, h6 {
+ line-height: @baseLineHeight;
+}
+h4 {
+ font-size: 14px;
+ small {
+ font-size: 12px;
+ }
+}
+h5 {
+ font-size: 12px;
+}
+h6 {
+ font-size: 11px;
+ color: @grayLight;
+ text-transform: uppercase;
+}
+
+// Page header
+.page-header {
+ padding-bottom: @baseLineHeight - 1;
+ margin: @baseLineHeight 0;
+ border-bottom: 1px solid @grayLighter;
+}
+.page-header h1 {
+ line-height: 1;
+}
+
+
+
+// LISTS
+// -----
+
+// Unordered and Ordered lists
+ul, ol {
+ padding: 0;
+ margin: 0 0 @baseLineHeight / 2 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+ margin-bottom: 0;
+}
+ul {
+ list-style: disc;
+}
+ol {
+ list-style: decimal;
+}
+li {
+ line-height: @baseLineHeight;
+}
+ul.unstyled,
+ol.unstyled {
+ margin-left: 0;
+ list-style: none;
+}
+
+// Description Lists
+dl {
+ margin-bottom: @baseLineHeight;
+}
+dt,
+dd {
+ line-height: @baseLineHeight;
+}
+dt {
+ font-weight: bold;
+ line-height: @baseLineHeight - 1; // fix jank Helvetica Neue font bug
+}
+dd {
+ margin-left: @baseLineHeight / 2;
+}
+// Horizontal layout (like forms)
+.dl-horizontal {
+ dt {
+ float: left;
+ width: 120px;
+ clear: left;
+ text-align: right;
+ .text-overflow();
+ }
+ dd {
+ margin-left: 130px;
+ }
+}
+
+// MISC
+// ----
+
+// Horizontal rules
+hr {
+ margin: @baseLineHeight 0;
+ border: 0;
+ border-top: 1px solid @hrBorder;
+ border-bottom: 1px solid @white;
+}
+
+// Emphasis
+strong {
+ font-weight: bold;
+}
+em {
+ font-style: italic;
+}
+.muted {
+ color: @grayLight;
+}
+
+// Abbreviations and acronyms
+abbr[title] {
+ cursor: help;
+ border-bottom: 1px dotted @grayLight;
+}
+abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+// Blockquotes
+blockquote {
+ padding: 0 0 0 15px;
+ margin: 0 0 @baseLineHeight;
+ border-left: 5px solid @grayLighter;
+ p {
+ margin-bottom: 0;
+ #font > .shorthand(16px,300,@baseLineHeight * 1.25);
+ }
+ small {
+ display: block;
+ line-height: @baseLineHeight;
+ color: @grayLight;
+ &:before {
+ content: '\2014 \00A0';
+ }
+ }
+
+ // Float right with text-align: right
+ &.pull-right {
+ float: right;
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid @grayLighter;
+ border-left: 0;
+ p,
+ small {
+ text-align: right;
+ }
+ }
+}
+
+// Quotes
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+
+// Addresses
+address {
+ display: block;
+ margin-bottom: @baseLineHeight;
+ font-style: normal;
+ line-height: @baseLineHeight;
+}
+
+// Misc
+small {
+ font-size: 100%;
+}
+cite {
+ font-style: normal;
+}
View
@@ -0,0 +1,23 @@
+// UTILITY CLASSES
+// ---------------
+
+// Quick floats
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+
+// Toggling content
+.hide {
+ display: none;
+}
+.show {
+ display: block;
+}
+
+// Visibility
+.invisible {
+ visibility: hidden;
+}
View
@@ -0,0 +1,212 @@
+// Variables.less
+// Variables to customize the look and feel of Bootstrap
+// -----------------------------------------------------
+
+
+
+// GLOBAL VALUES
+// --------------------------------------------------
+
+
+// Grays
+// -------------------------
+@black: #000;
+@grayDarker: #222;
+@grayDark: #333;
+@gray: #555;
+@grayLight: #999;
+@grayLighter: #eee;
+@white: #fff;
+
+// TBA Blues
+// -------------------------
+@TBAblueDarker: #000044;
+@TBAblueDark: #000088;
+@TBAblueLight: #223366;
+
+
+// Accent colors
+// -------------------------
+@blue: #049cdb;
+@blueDark: #0064cd;
+@green: #46a546;
+@red: #9d261d;
+@yellow: #ffc40d;
+@orange: #f89406;
+@pink: #c3325f;
+@purple: #7a43b6;
+
+
+// Scaffolding
+// -------------------------
+@bodyBackground: @white;
+@textColor: @grayDark;
+@bodyPadding: 60px;
+
+// Links
+// -------------------------
+@linkColor: #08c;
+@linkColorHover: darken(@linkColor, 15%);
+
+
+// Typography
+// -------------------------
+@sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
+@serifFontFamily: Georgia, "Times New Roman", Times, serif;
+@monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace;
+
+@baseFontSize: 13px;
+@baseFontFamily: @sansFontFamily;
+@baseLineHeight: 18px;
+@altFontFamily: @serifFontFamily;
+
+@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
+@headingsFontWeight: bold; // instead of browser default, bold
+@headingsColor: inherit; // empty to use BS default, @textColor
+
+
+// Tables
+// -------------------------
+@tableBackground: transparent; // overall background-color
+@tableBackgroundAccent: #f9f9f9; // for striping
+@tableBackgroundHover: #f5f5f5; // for hover
+@tableBorder: #ddd; // table and cell border
+
+
+// Buttons
+// -------------------------
+@btnBackground: @white;
+@btnBackgroundHighlight: darken(@white, 10%);
+@btnBorder: #ccc;
+
+@btnPrimaryBackground: @linkColor;
+@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 15%);
+
+@btnInfoBackground: #5bc0de;
+@btnInfoBackgroundHighlight: #2f96b4;
+
+@btnSuccessBackground: #62c462;
+@btnSuccessBackgroundHighlight: #51a351;
+
+@btnWarningBackground: lighten(@orange, 15%);
+@btnWarningBackgroundHighlight: @orange;
+
+@btnDangerBackground: #ee5f5b;
+@btnDangerBackgroundHighlight: #bd362f;
+
+@btnInverseBackground: @gray;
+@btnInverseBackgroundHighlight: @grayDarker;
+
+
+// Forms
+// -------------------------
+@inputBackground: @white;
+@inputBorder: #ccc;
+@inputBorderRadius: 3px;
+@inputDisabledBackground: @grayLighter;
+@formActionsBackground: #f5f5f5;
+
+// Dropdowns
+// -------------------------
+@dropdownBackground: @white;
+@dropdownBorder: rgba(0,0,0,.2);
+@dropdownLinkColor: @grayDark;
+@dropdownLinkColorHover: @white;
+@dropdownLinkBackgroundHover: @linkColor;
+@dropdownDividerTop: #e5e5e5;
+@dropdownDividerBottom: @white;
+
+
+
+// COMPONENT VARIABLES
+// --------------------------------------------------
+
+// Z-index master list
+// -------------------------
+// Used for a bird's eye view of components dependent on the z-axis
+// Try to avoid customizing these :)
+@zindexDropdown: 1000;
+@zindexPopover: 1010;
+@zindexTooltip: 1020;
+@zindexFixedNavbar: 1030;
+@zindexModalBackdrop: 1040;
+@zindexModal: 1050;
+
+
+// Sprite icons path
+// -------------------------
+@iconSpritePath: "/images/icons/glyphicons-halflings.png";
+@iconWhiteSpritePath: "/images/icons/glyphicons-halflings-white.png";
+
+
+// Input placeholder text color
+// -------------------------
+@placeholderText: @grayLight;
+
+
+// Hr border color
+// -------------------------
+@hrBorder: @grayLighter;
+
+
+// Navbar
+// -------------------------
+@navbarHeight: 40px;
+@navbarBackground: @TBAblueLight;
+@navbarBackgroundHighlight: @TBAblueDark;
+
+@navbarText: @grayLight;
+@navbarLinkColor: @white;
+@navbarLinkColorHover: @grayLight;
+@navbarLinkColorActive: @white;
+@navbarLinkBackgroundHover: transparent;
+@navbarLinkBackgroundActive: @TBAblueDarker;
+
+@navbarSearchBackground: @grayLighter;
+@navbarSearchBackgroundFocus: @white;
+@navbarSearchBorder: @grayDarker;
+@navbarSearchPlaceholderColor: @grayDark;
+@navbarBrandColor: @navbarLinkColor;
+
+
+// Hero unit
+// -------------------------
+@heroUnitBackground: @grayLighter;
+@heroUnitHeadingColor: inherit;
+@heroUnitLeadColor: inherit;
+
+
+// Form states and alerts
+// -------------------------
+@warningText: #c09853;
+@warningBackground: #fcf8e3;
+@warningBorder: darken(spin(@warningBackground, -10), 3%);
+
+@errorText: #b94a48;
+@errorBackground: #f2dede;
+@errorBorder: darken(spin(@errorBackground, -10), 3%);
+
+@successText: #468847;
+@successBackground: #dff0d8;
+@successBorder: darken(spin(@successBackground, -10), 5%);
+
+@infoText: #3a87ad;
+@infoBackground: #d9edf7;
+@infoBorder: darken(spin(@infoBackground, -10), 7%);
+
+
+
+// GRID
+// --------------------------------------------------
+
+// Default 940px grid
+// -------------------------
+@gridColumns: 12;
+@gridColumnWidth: 60px;
+@gridGutterWidth: 20px;
+@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
+
+// Fluid grid
+// -------------------------
+@fluidGridColumnWidth: 6.382978723%;
+@fluidGridGutterWidth: 2.127659574%;
View
@@ -0,0 +1,27 @@
+// WELLS
+// -----
+
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #eee;
+ border: 1px solid rgba(0,0,0,.05);
+ .border-radius(4px);
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
+ blockquote {
+ border-color: #ddd;
+ border-color: rgba(0,0,0,.15);
+ }
+}
+
+// Sizes
+.well-large {
+ padding: 24px;
+ .border-radius(6px);
+}
+.well-small {
+ padding: 9px;
+ .border-radius(3px);
+}
View
Deleted file not rendered
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Deleted file not rendered
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Oops, something went wrong.
View
Oops, something went wrong.
View
Oops, something went wrong.
View
@@ -4,4 +4,8 @@ function scrollheader() {
var scrollx = document.body.scrollLeft
var header = document.getElementById('topHeader')
header.style.left = 0-scrollx+'px'
-}
+}
+
+$(document).ready(function() {
+ $(".fancybox").fancybox();
+});
View
@@ -1,2 +0,0 @@
-# I exist to fix Django 1.2 templating as described here:
-# http://code.google.com/appengine/forum/python-forum.html?place=msg/google-appengine-python/YaqfeygoiaI/WjRY2xTJEIEJ
View
@@ -2,25 +2,20 @@
{% block title %}404 - Page Not Found{% endblock %}
-{% block leftCol %}
-{% include "base_partials/left_col.html" %}
-{% endblock %}
-
{% block content %}
-
-<div id="contentTop">
- <div id="centeredContent">
- <h1>What? A 404!</h1>
- <p>Sorry, we couldn't find the page you were looking for. Try search for it.</p>
- <form action="http://www.thebluealliance.com/search" id="cse-search-box" class="textInput">
- <input type="hidden" name="cx" value="017956276086362105630:99ctqytcokm" />
- <input type="hidden" name="cof" value="FORID:11" />
- <input type="hidden" name="ie" value="UTF-8" />
- <input type="text" id="q" name="q" />
- <button id="sa" name="sa" type="submit" value="Search" ></button>
- </form>
- <script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&lang=en"></script>
+<div class="container">
+ <div class="hero-unit">
+ <img class="pull-right" src="images/logo_square_200.png" alt="tbalogo"></img>
+ <h1>What? A 404!</h1>
+ <p>Sorry, we couldn't find the page you were looking for. Try search for it.</p>
+ <br />
+ <form id="cse-search-box" class="search-query" action="http://www.thebluealliance.com/search" >
+ <input type="hidden" name="cx" value="017956276086362105630:99ctqytcokm" />
+ <input type="hidden" name="cof" value="FORID:11" />
+ <input type="hidden" name="ie" value="UTF-8" />
+ <input type="text" id="q" class="search-query" placeholder="Search" name="q" />
+ </form>
+ <div class="clear-both"></div>
+ </div>
</div>
-</div>
-
{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}{{event.year}}{{event.event_short}} - Event - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}{{event.year}}{{event.event_short}} - Edit Event - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}frc{{team.team_number}} - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}Match Dashboard - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}{{match.key.name}} - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}{{match.key.name}} - Edit Match - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}Add Videos - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}Match Dashboard - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}TBA Admin - Memcache Flush Results{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}TBA Admin - Memcache Management{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}frc{{team.team_number}} - TBA Admin{% endblock %}
View
@@ -1,4 +1,4 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
{% block title %}Teams - TBA Admin{% endblock %}
View
@@ -1,12 +1,17 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{% block title %}The Blue Alliance{% endblock %}</title>
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
- <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.2.0/build/cssreset/reset-min.css">
+
<link rel="stylesheet" href="/css/style.css" type="text/css" />
+ <link rel="stylesheet" href="/css/jquery-ui-1.8.13.custom.css" type="text/css" />
+ <link rel="stylesheet" href="/css/jquery.fancybox.css" type="text/css" />
+
+ <script type="text/javascript" src="/javascript/jquery.min.js"></script>
<script type="text/javascript" src="/javascript/tba.js"></script>
+ <script type="text/javascript" src="/javascript/bootstrap.js"></script>
+ <script type="text/javascript" src="/javascript/jquery.fancybox.pack.js"></script>
<script type="text/javascript" src="/jwplayer/jwplayer.js"></script>
<script type="text/javascript">
@@ -26,82 +31,91 @@
<meta property="fb:page_id" content="29895192027" />
<meta property="fb:admins" content="1086840001" />
<meta property="fb:app_id" content="31893535040" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
{% block more_head_tags %}{% endblock %}
</head>
<body>
- <div id="fb-root"></div>
- <script>
- window.fbAsyncInit = function() {
- FB.init({appId: '29895192027', status: true, cookie: true,
- xfbml: true});
- };
- (function() {
- var e = document.createElement('script'); e.async = true;
- e.src = document.location.protocol +
- '//connect.facebook.net/en_US/all.js';
- document.getElementById('fb-root').appendChild(e);
- }());
- </script>
- <script type="text/javascript">
- (function() {
- var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
- po.src = 'https://apis.google.com/js/plusone.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
- })();
- </script>
- <div id="topHeader">
- <div id="header">
- <div id="headerContent">
- <ul class="headerNav">
- <li id="navLogo">
- <a href="/" id="tbaLogo"></a>
- </li>
- <li class="navButton">
- <a href="/teams">Teams</a>
- </li>
- <li class="navButton">
- <a href="/events">Events</a>
- </li>
- <li class="rightNav">
- <div id="headerSearch">
- <form action="http://www.thebluealliance.com/search" id="cse-search-box" class="textInput">
- <input type="hidden" name="cx" value="017956276086362105630:99ctqytcokm" />
- <input type="hidden" name="cof" value="FORID:11" />
- <input type="hidden" name="ie" value="UTF-8" />
- <input type="text" id="q" name="q" />
- <button id="sa" name="sa" type="submit" value="Search" ></button>
- </form>
- <script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&lang=en"></script>
- </div>
- </li>
- <li class="rightNav socialIcon">
- <a href="http://facebook.com/thebluealliance" title="Like us on Facebook"><img src="/images/icons/facebook-24x24.png" /></a>
- </li>
- <li class="rightNav socialIcon">
- <a href="http://twitter.com/thebluealliance" title="Follow us on Twitter"><img src="/images/icons/twitter-24x24.png" /></a>
- </li>
- <li class="rightNav socialIcon">
- <a href="http://thebluealliance.tumblr.com" title="Read our Blog"><img src="/images/icons/tumblr-24x24.png" /></a>
- </li>
+<div id="fb-root"></div>
+<script>
+ window.fbAsyncInit = function() {
+ FB.init({appId: '29895192027', status: true, cookie: true,
+ xfbml: true});
+ };
+ (function() {
+ var e = document.createElement('script'); e.async = true;
+ e.src = document.location.protocol +
+ '//connect.facebook.net/en_US/all.js';
+ document.getElementById('fb-root').appendChild(e);
+ }());
+</script>
+<script type="text/javascript">
+ (function() {
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
+ po.src = 'https://apis.google.com/js/plusone.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
+ })();
+</script>
- </ul>
- </div>
- </div>
- </div>
- <div id="main">
- <div id="leftCol">
- {% block leftCol %}
- {% endblock %}
- </div>
- <div id="content">
- {% block content %}
- {% endblock %}
- </div>
- </div>
- <div id="footer">
- <p class="left">The Blue Alliance. <a href="/admin/debug/">admin</a></p>
- <p class="right"><a href="/contact">contact</a> - <a href="http://thebluealliance.tumblr.com/">blog</a> - <a href="http://thebluealliance.tumblr.com/post/1066946079/tba-on-github">code</a> - <a href="/contact">report issue</a> - <a href="/thanks">sponsors</a></p>
+<div class="navbar navbar-fixed-top">
+ <div class="navbar-inner">
+ <div class="container">
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </a>
+ <a id="navTitle" class="brand" href="/">The Blue Alliance</a>
+ <div class="nav-collapse">
+ <ul id="subnav" class="nav">
+ <li class=" {% block teams_active %}{% endblock %}"><a href="/teams">Teams</a></li>
+ <li class=" {% block events_active %}{% endblock %}"><a href="/events">Events</a></li>
+ </ul>
+
+ <form id="cse-search-box" class="navbar-search pull-right" action="http://www.thebluealliance.com/search" >
+ <input type="hidden" name="cx" value="017956276086362105630:99ctqytcokm" />
+ <input type="hidden" name="cof" value="FORID:11" />
+ <input type="hidden" name="ie" value="UTF-8" />
+ <input type="text" id="q" class="search-query" placeholder="Search" name="q"/>
+ </form>
+
+ <div class="social-icons">
+ <a id="facebook" class="socialIcon" href="http://facebook.com/thebluealliance" title="Like us on Facebook"></a>
+ <a id="twitter" class="socialIcon" href=" http://twitter.com/thebluealliance" title="Follow us on Twitter"></a>
+ <a id="tumblr" class="socialIcon" href="http://thebluealliance.tumblr.com" title="Read our Blog"></a>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+{% block content %}
+{% endblock %}
+
+<div id="footer" class="container">
+ <div class="row">
+ <div class="span6 offset3">
+ <div>
+ <span class="sponsor">Brought to you by: </span>
+ <a id="appengine" class="sponsor sponsorImage" href="http://www.appspot.com" title="Powered by Google App Engine"></a>
+ <a id="dotblock" class="sponsor sponsorImage" href="http://www.dotblock.com" title="Dotblock VPS Hosting"></a>
+ <a class="sponsor" href="/thanks" title="Thanks">and others...</a>
+ </div>
+
+ <hr />
+
+ <div>The Blue Alliance | <a href="/admin/debug/">admin</a></div>
+ <div>
+ <a href="/contact">contact</a> -
+ <a href="http://thebluealliance.tumblr.com/">blog</a> -
+ <a href="http://thebluealliance.tumblr.com/post/1066946079/tba-on-github">code</a> -
+ <a href="/contact">report issue</a> -
+ <a href="/thanks">sponsors</a>
+ </div>
</div>
+ </div>
+</div>
+
</body>
</html>
View
@@ -1,7 +0,0 @@
-<div class="contentBlock">
- <img src="/images/logo_square_200.png" width="200" class="profileImg" />
- <ul class="leftNav">
- <li class="event"><a href="/events">Events</a></li>
- <li class="robot"><a href="/teams">Teams</a></li>
- </ul>
-</div>
View
@@ -1,8 +0,0 @@
-<div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Brought to you by..</h2>
- </div>
- <p><a href="http://www.appspot.com" title="Powered by Google App Engine"><img src="http://code.google.com/appengine/images/appengine-noborder-120x30.gif" alt="Powered by Google App Engine" width="120" height="30" /></a></p>
- <p>Dotblock <a href="http://www.dotblock.com" title="Dotblock VPS Hosting">VPS Hosting</a></p>
- <p><a href="/thanks" title="Thanks">and others...</a></p>
-</div>
View
@@ -0,0 +1,39 @@
+{% extends "base.html" %}
+
+{% block title %}The Blue Alliance - Contact{% endblock %}
+
+{% block meta_description %}How to get in touch with The Blue Alliance.{% endblock %}
+
+{% block content %}
+<div class="container">
+ <h1 class="end_header">Contact Us</h1>
+ <div class="row">
+ <div class="span8 offset2">
+ <div>
+ <div>
+ <h2>Team Name Wrong?</h2>
+ </div>
+ <p>If your team's name or other information is incorrect on The Blue Alliance, please check if it is correct <a href="http://www.usfirst.org/whatsgoingon.aspx">on <em>FIRST</em>'s website</a>. We update our records from <a href="https://my.usfirst.org/frc/tims/site.lasso\"><em>FIRST</em>'s TIMS system</a> twice per month, and are unable to change your team name to anything other than what is listed there.</p>
+ </div>
+ <div>
+ <div>
+ <h2>API Access</h2>
+ </div>
+ <p>The new "dotcom" website brings a new API that doesn't require an API key to use. We're not quite ready to launch it, but please contact us if you are interested in using it.</p>
+ </div>
+ <div>
+ <div>
+ <h2>Problem with the site?</h2>
+ </div>
+ <p>Does the site not look quite right in your browser? <a href="https://spreadsheets.google.com/viewform?formkey=dGJFZWRPVV9OX2p0cXVqbWVQSW5UUlE6MQ">Please let us know!</a></p>
+ </div>
+ <div>
+ <div>
+ <h2>By email</h2>
+ </div>
+ <p>We can be reached by email at <a href="mailto:contact@thebluealliance.com">contact@thebluealliance.com</a>.</p>
+ </div>
+ </div>
+ </div>
+</div>
+{% endblock %}
View
@@ -0,0 +1,67 @@
+{% extends "base.html" %}
+
+{% block title %}The Blue Alliance - Debug Help{% endblock %}
+
+{% block content %}
+<div class="container">
+ <h1 class="end_header">The Blue Alliance <span class="annotation">Debug and Setup</span></h1>
+ <div class="row">
+ <div class="span8 offset2">
+ <div>
+ <div>
+ <h2>The Blue Alliance Developer Page</h2>
+ </div>
+ <p>Hello developer! Welcome to the debug page for The Blue Alliance. This page is full of useful pointers to help you locally develop TBA. It is different from <a href="/admin/">the admin console</a>, which is designed to help fix data in production.</p>
+ <p>To get started, you have to set up some initial test data for your local copy of TBA. We use <a href="http://paver.github.com/paver/">paver</a> scripts in pavement.py to set up this test data in your dev environment. <a href="http://packages.python.org/distribute/easy_install.html">easy_install</a> paver if you don't have it.</p>
+ <p>Run these on the command line in the folder you have the-blue-alliance project in:</p>
+ <ol>
+ <li><a href="/tasks/usfirst_teams_fast_get">/tasks/usfirst_teams_fast_get</a> : Sets up all 2012 teams, fast.</li>
+ <li>$ paver dev_data_setup</li>
+ <li><a href="/tasks/eventteam_update_enqueue">/tasks/eventteam_update_enqueue</a> : Build event attendance information.</li>
+ <li><a href="/tasks/tba_videos_get/2010cmp">/tasks/tba_videos_get/2010cmp</a> : Grab videos for 2010cmp</li>
+ </ol>
+ <p>This test data gives you the <a href="/event/2010cmp">2010 Championship Einstein Field</a> as your main test data.</p>
+ </div>
+ <div>
+ <div>
+ <h2>Prod Setup</h2>
+ </div>
+ <p>If you're setting up a full copy of The Blue Alliance, these will help you create all the data you need.
+ <ol>
+ <li><a href="/tasks/usfirst_events_instantiate?year=2012">UsfirstEventsInstantiate</a>, enqueues Tasks to create Event objects for regional events from USFIRST.</li>
+ <li>Instantiate 2012 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=2000">@2000</a> <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=3000">@3000</a></li>
+ <li>Instantiate 2011 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2011&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2011&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2011&amp;skip=2000">@2000</a></li>
+ <li>Instantiate 2010 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2010&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2010&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2010&amp;skip=2000">@2000</a></li>
+ <li>Instantiate 2009 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2009&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2009&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2009&amp;skip=2000">@2000</a></li>
+ <li>Bulkload Old Events:<br />appcfg.py upload_data --config_file=bulkloader.yaml --filename=test_data/events.csv --kind=Event --url=http://tbatv-prod.appspot.com/_ah/remote_api</li>
+ <li>Bulkload Old Matches: <br />appcfg.py upload_data --config_file=bulkloader.yaml --filename=test_data/matches.csv --kind=Match --url=http://tbatv-prod.appspot.com/_ah/remote_api</li>
+ <li><a href="/tasks/eventteam_update_enqueue">Update EventTeams</a>, to build all the event attendance information.</li>
+ </ol>
+ </div>
+
+ <div>
+ <div>
+ <h2>Updates</h2>
+ </div>
+ <ol>
+ <li><a href="/tasks/usfirst_event_get_enqueue">UsfirstEventGetEnqueue</a>, enqueue tasks to update official Events.</li>
+ <li><a href="/tasks/usfirst_matches_get_enqueue?year=2012">UsfirstMatchesGetEnqueue</a>, enqueue tasks to update match results for 2012 Events</li>
+ <li><a href="/tasks/usfirst_team_get_enqueue?offset=0">UsfirstTeamGetEnqueue @ 0</a>, <a href="/tasks/usfirst_team_get_enqueue?offset=1000">@ 1000</a>, <a href="/tasks/usfirst_team_get_enqueue?offset=2000">@ 2000</a>, <a href="/tasks/usfirst_team_get_enqueue?offset=3000">@ 3000</a>, enqueue tasks to update Team details</li>
+ <li><a href="/tasks/tba_videos_get/2010cmp">TBAVideosGet</a> with an Event key to scrape <a href="http://videos.thebluealliance.net">http://videos.thebluealliance.net</a> for TBAVideos.</li>
+ <li><a href="/tasks/eventteam_update_enqueue">Update EventTeams</a>, to build all the event attendance information.</li>
+ <li><a href="/tasks/event_opr_get_enqueue?year=2012">Update OPRs</a> or <a href="/tasks/event_opr_get/2010cmp">Update One Event's OPRs</a>, to recalculate OPRs.</li>
+ </ol>
+ </div>
+
+ <div>
+ <div>
+ <h2>Useful Other Commands</h2>
+ </div>
+ <ul>
+ <li>appcfg.py upload_data --config_file=bulkloader.yaml --filename=<em>something</em>.csv --kind=<em>Something</em> --url=http://<em>something</em>/_ah/remote_api</li>
+ </ul>
+ </div>
+ </div>
+ </div>
+</div>
+{% endblock %}
View
@@ -0,0 +1,163 @@
+{% extends "base.html" %}
+
+{% block title %}{{event.name}} ({{event.year}}) - The Blue Alliance{% endblock %}
+
+{% block meta_description %}Match results and for the {{event.year}} {{event.name}} FIRST Robotics Competition in {{event.location}}.{% endblock %}
+
+{% block more_head_tags %}
+ <meta property="og:title" content="{{event.year}} {{event.name}}" />
+ <meta property="og:type" content="article" />
+ <meta property="og:url" content="http://thebluealliance.com/event/{{event.key.name}}" />
+ <meta property="og:image" content="http://www.thebluealliance.com/images/logo_square_200.png" />
+ <meta property="og:description" content="The {{event.year}} {{event.name}} FIRST Robotics Competition in {{event.location}}."/>
+ <meta property="og:site_name" content="The Blue Alliance" />
+ <meta property="og:location" content="{{event.location}}" />
+ {% if event.start_date %}<meta property="og:start_time" content="{{event.start_date|date:"Y-m-d"}}" />
+ {% else %}<meta property="og:start_time" content="{{event.year}}" />{% endif %}
+ {% if event.end_date %}<meta property="og:end_time" content="{{event.end_date|date:"Y-m-d"}}" />{% endif %}
+ {% if event.venue %}<meta property="og:fn" content="{{event.venue}}" />{% endif %}
+{% endblock %}
+
+{% block content %}
+
+<div class="container">
+ <h1 class="end_header">{{event.name}} {{event.year}}</h1>
+ <p><a href="/events/{{event.year}}"><i class="icon-chevron-left"></i> {{event.year}} Event List</a></p>
+
+ <div class="row">
+ <div class="span6">
+ <table class="table table-striped table-condensed">
+ <tbody>
+ <tr><th>Dates</th>
+ {% if event.start_date %}
+ <td>{{ event.start_date|date:"M d, Y" }} to {{ event.end_date|date:"M d, Y" }}</td>
+ {% else %}
+ <td>Unknown</td>
+ {% endif %}</tr>
+ {% if event.location %}<tr>
+ <th>Location</th>
+ <td><a href="http://maps.google.com/maps?q={{ event.location }}">{{ event.location }}</a></td>
+ </tr>{% endif %}
+ {% if event.website %}<tr>
+ <th>Website</th>
+ <td><a href="{{ event.website }}" title="{{ event.name }}">{{ event.website }}</a></td>
+ </tr>{% endif %}
+ {% if event.official %}<tr>
+ <th>Details on <em>FIRST</em></th>
+ <td><a href="https://my.usfirst.org/myarea/index.lasso?page=teamlist&event_type=FRC&sort_teams=number&year={{ event.year }}&event={{ event.event_short }}">{{ event.name }} on usfirst.org</a></td>
+ </tr>{% endif %}
+ {% if event.facebook_eid %}<tr>
+ <th>Facebook</th>
+ <td><a href="{{ event.getFacebookEventUrl }}" title="Facebook Event">RSVP</td>
+ </tr>{% endif %}
+ {% if event.webcast_url %}<tr>
+ <th>Live Webcast</th>
+ <td><a href="{{ event.webcast_url }}" title="">{{ event.webcast_url }}</td>
+ </tr>{% endif %}
+ {% if num_teams %}<tr>
+ <th>Teams</th>
+ <td>{{num_teams}} Team{{num_teams|pluralize}}</td>
+ </tr>{% endif %}
+ {% if matches.num %}<tr>
+ <th>Matches</th>
+ <td>{{matches.num}} Match{{matches.num|pluralize:"es"}} - (<a href="http://www.thebluealliance.com/event/{{ event.get_key_name }}/feed">rss</a>)</td>
+ </tr>{% endif %}
+ </tbody>
+ </table>
+ </div>
+ <div class="span6">
+ <!-- <h2>Awards Overview:</h2>
+ <p>Regional Chairman's Award:</p>
+ <p>Engineering Inspiration Award:</p>
+ <p>Rookie All-Star Award:</p>
+ <p>Regional Winners:<p>
+ <p>Regional Finalists:</p>-->
+ </div>
+ </div>
+
+ <ul class="nav nav-tabs nav-stacked-phone">
+ <li class="active"><a href="#results" data-toggle="tab">Results</a></li>
+ <li><a href="#teams" data-toggle="tab">Teams</a></li>
+ <!-- <li><a href="#awards" data-toggle="tab">Awards</a></li>-->
+ </ul>
+
+ <div class="tab-content">
+
+ <div class="tab-pane active" id="results">
+
+ <div class="row">
+ <div class="span6">
+ <h3>Qualification Match Results</h3>
+ {% include "match_partials/qual_match_table.html" %}
+ </div>
+
+ <div class="span6">
+ <h3>Elimination Match Results</h3>
+ {% include "match_partials/elim_match_table.html" %}
+
+ {% if oprs|length > 0 %}
+ <h3>OPRs - Top 15 (<a href="/opr">?</a>)</h3>
+ <table class="table table-condensed table-striped table-center">
+ <tr>
+ <th>Team</th>
+ <th>OPR</th>
+ </tr>
+ {% for opr,opr_team in oprs %}
+ <tr>
+ <td><a href="/team/{{ opr_team }}">{{ opr_team }}</a></td>
+ <td>{{ opr|floatformat:2 }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ {% endif %}
+ </div>
+ </div>
+
+
+ </div>
+ <div class="tab-pane" id="teams">
+ <div class="row">
+ {% if teams_a %}
+ <div class="span6">
+ <table class="table table-striped table-condensed table-center team-table">
+ <tbody>
+ <tr><th>Team Number</th><th>Team Name</th><th>Location</th></tr>
+ {% for team in teams_a %}
+ <tr>
+ <td><a class="team_table" href="/team/{{ team.team_number }}">{{ team.team_number }}</a></td>
+ <td><a href="/team/{{ team.team_number }}">{% if team.nickname %}{{ team.nickname }}{% else %}--{% endif %}</a></td>
+ <td>{% if team.address %}{{ team.address }}{% else %}--{% endif %}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </div>
+ {% else %}
+ <p>No teams yet.</p>
+ {% endif %}
+
+ {% if teams_b %}
+ <div class="span6">
+ <table class="table table-striped table-condensed table-center team-table">
+ <tbody>
+ <tr><th>Team Number</th><th>Team Name</th><th>Location</th></tr>
+ {% for team in teams_b %}
+ <tr>
+ <td><a class="team_table" href="/team/{{ team.team_number }}">{{ team.team_number }}</a></td>
+ <td><a href="/team/{{ team.team_number }}">{% if team.nickname %}{{ team.nickname }}{% else %}--{% endif %}</a></td>
+ <td>{% if team.address %}{{ team.address }}{% else %}--{% endif %}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </div>
+ {% endif %}
+ </div>
+ <div class="tab-pane" id="awards"><h2>Awards</h2>
+
+ </div>
+ </div>
+ </div>
+</div>
+{% endblock %}
+
View
@@ -0,0 +1,84 @@
+{% extends "base.html" %}
+
+{% block title %}Events - The Blue Alliance{% endblock %}
+
+{% block meta_description %}FIRST Robotics Competition events{% if explicit_year %} from {{year}}{% endif %}.{% endblock %}
+
+{% block events_active %}active{% endblock %}
+
+{% block content %}
+<div class="container">
+ <h1 class="end_header">Events in {{year}}</h1>
+ <div class="row">
+ <div class="span2 year_list">
+ <h2>Year</h2>
+ <div class="btn-group visible-phone">
+ <a class="btn btn-large dropdown-toggle" data-toggle="dropdown" href="#">
+ {{year}}
+ <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ <li><a href="/events/2012">2012</a></li>
+ <li><a href="/events/2011">2011</a></li>
+ <li><a href="/events/2010">2010</a></li>
+ <li><a href="/events/2009">2009</a></li>
+ <li><a href="/events/2008">2008</a></li>
+ <li><a href="/events/2007">2007</a></li>
+ <li><a href="/events/2006">2006</a></li>
+ <li><a href="/events/2005">2005</a></li>
+ <li><a href="/events/2004">2004</a></li>
+ <li><a href="/events/2003">2003</a></li>
+ <li><a href="/events/2002">2002</a></li>
+ </ul>
+ </div>
+ <ul class="nav nav-tabs nav-stacked hidden-phone">
+ <li {% if year == 2012 %}class="active"{% endif %}><a href="/events/2012">2012</a></li>
+ <li {% if year == 2011 %}class="active"{% endif %}><a href="/events/2011">2011</a></li>
+ <li {% if year == 2010 %}class="active"{% endif %}><a href="/events/2010">2010</a></li>
+ <li {% if year == 2009 %}class="active"{% endif %}><a href="/events/2009">2009</a></li>
+ <li {% if year == 2008 %}class="active"{% endif %}><a href="/events/2008">2008</a></li>
+ <li {% if year == 2007 %}class="active"{% endif %}><a href="/events/2007">2007</a></li>
+ <li {% if year == 2006 %}class="active"{% endif %}><a href="/events/2006">2006</a></li>
+ <li {% if year == 2005 %}class="active"{% endif %}><a href="/events/2005">2005</a></li>
+ <li {% if year == 2004 %}class="active"{% endif %}><a href="/events/2004">2004</a></li>
+ <li {% if year == 2003 %}class="active"{% endif %}><a href="/events/2003">2003</a></li>
+ <li {% if year == 2002 %}class="active"{% endif %}><a href="/events/2002">2002</a></li>
+ </ul>
+ </div>
+ <div class="span10">
+ <h2>This Week's Events</h2>
+ {% for event in upcoming_events %}
+ <a href="/event/{{event.key.name}}">
+ <div class="event_block">
+ <div class="event_info">
+ <h3>{{ event.name }}</h3>
+ <p><em>
+ {% if event.start_date %}{{ event.start_date|date:"M d, Y" }}{% endif %}
+ {% if event.end_date %}- {{ event.end_date|date:"M d, Y" }}{% endif %}</em>
+ </p>
+ </div>
+ </div>
+ </a>
+ {% empty %}
+ <div class="no_events">
+ <p>There are no upcoming events.</p>
+ <p>If you have an offseason event, <a href="/contact">tell us about it</a>!</p>
+ </div>
+ {% endfor %}
+ <h2>Full Event List ({{ events|length }} Events)</h2>
+ {% for event in events %}
+ <a href="/event/{{event.key.name}}">
+ <div class="event_block">
+ <div class="event_info">
+ <h3>{{ event.name }}</h3>
+ <p><em>{% if event.start_date %}{{ event.start_date|date:"M d, Y" }}{% endif %}
+ {% if event.end_date %}- {{ event.end_date|date:"M d, Y" }}{% endif %}</em>
+ </p>
+ </div>
+ </div>
+ </a>
+ {% endfor %}
+ </div>
+ </div>
+</div>
+{% endblock %}
View
@@ -1,167 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{event.name}} ({{event.year}}) - The Blue Alliance{% endblock %}
-
-{% block meta_description %}Match results and for the {{event.year}} {{event.name}} FIRST Robotics Competition in {{event.location}}.{% endblock %}
-
-{% block more_head_tags %}
- <meta property="og:title" content="{{event.year}} {{event.name}}" />
- <meta property="og:type" content="article" />
- <meta property="og:url" content="http://thebluealliance.com/event/{{event.key.name}}" />
- <meta property="og:image" content="http://www.thebluealliance.com/images/logo_square_200.png" />
- <meta property="og:description" content="The {{event.year}} {{event.name}} FIRST Robotics Competition in {{event.location}}."/>
- <meta property="og:site_name" content="The Blue Alliance" />
- <meta property="og:location" content="{{event.location}}" />
- {% if event.start_date %}<meta property="og:start_time" content="{{event.start_date|date:"Y-m-d"}}" />
- {% else %}<meta property="og:start_time" content="{{event.year}}" />{% endif %}
- {% if event.end_date %}<meta property="og:end_time" content="{{event.end_date|date:"Y-m-d"}}" />{% endif %}
- {% if event.venue %}<meta property="og:fn" content="{{event.venue}}" />{% endif %}
-{% endblock %}
-
-{% block leftCol %}
- <ul class="leftNav">
- <li class="info"><a href="#info">Information</a></li>
- <li class="match"><a href="#matches">Matches{% if matches.num %} ({{ matches.num }}){% endif %}</a></li>
- <li class="robot"><a href="#teams">Teams{% if teams %} ({{ teams|length }}){% endif %}</a></li>
- </ul>
- <div class="divider"></div>
-{% endblock %}
-
-{% block content %}
-
-<div id="contentTop">
- <h1>{{ event.name }} <span class="annotation">{{ event.year }}</span></h1>
-</div>
-<div id="contentRight">
- {% include "base_partials/right_col.html" %}
-</div>
-
-<div id="contentCenter">
- <div id="info" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Information</h2>
- </div>
- <table class="infoTable">
- <tr>
- <th>Dates</th>
- {% if event.start_date %}
- <td>{{ event.start_date|date:"M d, Y" }} to {{ event.end_date|date:"M d, Y" }}</th>
- {% else %}
- <td>Unknown</td>
- {% endif %}
- </tr>
- {% if event.location %}<tr>
- <th>Location</th>
- <td><a href="http://maps.google.com/maps?q={{ event.location }}">{{ event.location }}</a></td>
- </tr>{% endif %}
- {% if event.website %}<tr>
- <th>Website</th>
- <td><a href="{{ event.website }}" title="{{ event.name }}">{{ event.website }}</a></td>
- </tr>{% endif %}
- {% if event.official %}<tr>
- <th>Details on FIRST</th>
- <td><a href="https://my.usfirst.org/myarea/index.lasso?page=teamlist&event_type=FRC&sort_teams=number&year={{ event.year }}&event={{ event.event_short }}">{{ event.name }} on usfirst.org</a></td>
- </tr>{% endif %}
- {% if event.facebook_eid %}<tr>
- <th>Facebook</th>
- <td><a href="{{ event.getFacebookEventUrl }}" title="Facebook Event">RSVP</td>
- </tr>{% endif %}
- {% if event.webcast_url %}<tr>
- <th>Live Webcast</th>
- <td><a href="{{ event.webcast_url }}" title=" ">{{ event.webcast_url }}</td>
- </tr>{% endif %}
- </table>
- </div>
- <div id="matches" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>{% if matches.num %}{{matches.num}} {% endif %}Match{{matches.num|pluralize:"es"}} - (<a href="http://www.thebluealliance.com/event/{{ event.get_key_name }}/feed">rss</a>)</h2>
- </div>
- {% if matches.num %}
- <table class="matchTable">
- <tr class="key">
- <th class="icon"><img src="/images/icons/video.png" /></th>
- <th>Match Number</th>
- <th colspan="3">Red Alliance</th>
- <th colspan="3">Blue Alliance</th>
- <th colspan="2">Scores</th>
- </tr>
-
- {% if matches.qm %}
- <tr class="key"><th colspan="10">Qualifications</th></tr>
- {% for match in matches.qm %}
- {% include "matches/partials/match_row.html" %}
- {% endfor %}
- {% endif %}
-
- {% if matches.ef %}
- <tr class="key"><th colspan="10">Eighth Finals</th></tr>
- {% for match in matches.ef %}
- {% include "matches/partials/match_row.html" %}
- {% endfor %}
- {% endif %}
-
- {% if matches.qf %}
- <tr class="key"><th colspan="10">Quarterfinals</th></tr>
- {% for match in matches.qf %}
- {% include "matches/partials/match_row.html" %}
- {% endfor %}
- {% endif %}
-
- {% if matches.sf %}
- <tr class="key"><th colspan="10">Semifinals</th></tr>
- {% for match in matches.sf %}
- {% include "matches/partials/match_row.html" %}
- {% endfor %}
- {% endif %}
-
- {% if matches.f %}
- <tr class="key"><th colspan="10">Finals</th></tr>
- {% for match in matches.f %}
- {% include "matches/partials/match_row.html" %}
- {% endfor %}
- {% endif %}
- </table>
- {% else %}
- <p>No matches yet.</p>
- {% endif %}
- </div>
- {% if oprs|length > 0 %}
- <div id="opr" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>OPRs - Top 15 (<a href="/opr">?</a>)</h2>
- </div>
- <table class="oprTable">
- <tr class="key">
- <th>Team</th>
- <th>OPR</th>
- </tr>
- {% for opr,opr_team in oprs %}
- <tr class="{% cycle 'odd' 'even' %}">
- <td><a href="/team/{{ opr_team }}">{{ opr_team }}</a></td>
- <td>{{ opr|floatformat:2 }}</td>
- </tr>
- {% endfor %}
- </table>
- </div>
- {% endif %}
- <div id="teams" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>{% if teams %}{{ teams|length}} {% endif %}Team{{teams|length|pluralize}}</h2>
- </div>
- {% if teams %}
- <ul class="infoList">
- {% for team in teams %}
- <li>
- <h3><a href="/team/{{team.team_number}}">{{ team.team_number }}{% if team.nickname %} <span class="annotation">{{ team.nickname }}</span>{% endif %}</a></h3>
- {% if team.address %}<p>{{ team.address }}</p>{% endif %}
- </li>
- {% endfor %}
- </ul>
- {% else %}
- <p>No teams yet.</p>
- {% endif %}
- </div>
-</div>
-
-{% endblock %}
-
View
@@ -1,51 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}Events - The Blue Alliance{% endblock %}
-
-{% block meta_description %}FIRST Robotics Competition events{% if explicit_year %} from {{year}}{% endif %}.{% endblock %}
-
-{% block leftCol %}
-<ul class="leftNav">
- <li class="event"><a href="/events"><strong>Events</strong></a></li>
- <li><a href="/events/2012">2012</a></li>
- <li><a href="/events/2011">2011</a></li>
- <li><a href="/events/2010">2010</a></li>
- <li><a href="/events/2009">2009</a></li>
- <li><a href="/events/2008">2008</a></li>
- <li><a href="/events/2007">2007</a></li>
- <li><a href="/events/2006">2006</a></li>
- <li><a href="/events/2005">2005</a></li>
- <li><a href="/events/2004">2004</a></li>
- <li><a href="/events/2003">2003</a></li>
- <li><a href="/events/2002">2002</a></li>
-</ul>
-{% endblock %}
-
-
-{% block content %}
-<div id="contentTop">
- <h1>Events in {{year}}</h1>
-</div>
-<div id="contentRight">
- {% include "base_partials/right_col.html" %}
-</div>
-<div id="contentCenter">
- <div id="events" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>{{ events|length }} Events</h2>
- </div>
- <ul class="infoList">
- {% for event in events %}
- <li>
- <h3><a href="/event/{{event.key.name}}">{{ event.name }}{%if event.location %} <span class="annotation">{{ event.location }}</span>{% endif %}</a></h3>
- <p>
- {% if event.start_date %}{{ event.start_date|date:"M d, Y" }}{% endif %}
- {% if event.end_date %}- {{ event.end_date|date:"M d, Y" }}{% endif %}
- </p>
- </li>
- {% endfor %}
- </ul>
- </div>
-</div>
-
-{% endblock %}
View
@@ -0,0 +1,52 @@
+{% extends "base.html" %}
+
+{% block title %}The Blue Alliance{% endblock %}
+
+{% block content %}
+
+<div class="container">
+ <div class="hero-unit landing-hero-unit">
+ <div class="row-fluid">
+ <div class="span7 landing">
+ <img class="landing-logo landing-logo-phone visible-phone" src="images/logo_square_200.png" alt="tbalogo" />
+
+ <h1>The Blue Alliance</h1>
+ <p>The one-stop place for <em>FIRST</em> Robotics Competition team information, event results, and video archives</p>
+ <div>
+ <a class="btn btn-large btn-primary" href="/teams">Teams</a>
+ <a class="btn btn-large btn-primary" href="/events">Events</a>
+ </div>
+ </div>
+ <div class="span5 hidden-phone">
+ <img class="landing-logo" src="images/logo_square_200.png" alt="tbalogo" />
+ </div>
+ </div>
+ </div>
+</div>
+
+<div class="container">
+ <div class="row">
+ <div class="span5 offset2">
+ <h2>This Week's Events</h2>
+ {% for event in upcoming_events %}
+ <a href="/event/{{event.key.name}}">
+ <div class="event_block">
+ <div class="event_info">
+ <h3>{{ event.name }}</h3>
+ <p><em>
+ {% if event.start_date %}{{ event.start_date|date:"M d, Y" }}{% endif %}
+ {% if event.end_date %}- {{ event.end_date|date:"M d, Y" }}{% endif %}</em>
+ </p>
+ </div>
+ </div>
+ </a>
+ {% empty %}
+ <div class="no_events">
+ <p>There are no upcoming events.</p>
+ <p>If you have an offseason event, <a href="/contact">tell us about it</a>!</p>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+</div>
+{% endblock %}
View
@@ -1,48 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}The Blue Alliance - Contact{% endblock %}
-
-{% block meta_description %}How to get in touch with The Blue Alliance.{% endblock %}
-
-{% block leftCol %}
-<img src="/images/logo_square_200.png" width="200" class="profileImg" />
-<ul class="leftNav">
- <li class="event"><a href="/events/">Events</a></li>
- <li class="robot"><a href="/teams/">Teams</a></li>
-</ul>
-{% endblock %}
-
-{% block content %}
-<div id="contentTop">
- <h1>Contact Us</h1>
-</div>
-<div id="contentRight">
- {% include "base_partials/right_col.html" %}
-</div>
-<div id="contentCenter">
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Team Name Wrong?</h2>
- </div>
- <p>If your team's name or other information is incorrect on The Blue Alliance, please check if it is correct <a href="http://www.usfirst.org/whatsgoingon.aspx">on FIRST's website</a>. We update our records from <a href="https://my.usfirst.org/frc/tims/site.lasso\">FIRST's TIMS system</a> twice per month, and are unable to change your team name to anything other than what is listed there.</p>
- </div>
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>API Access</h2>
- </div>
- <p>The new "dotcom" website brings a new API that doesn't require an API key to use. We're not quite ready to launch it, but please contact us if you are interested in using it.</p>
- </div>
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Problem with the site?</h2>
- </div>
- <p>Does the site not look quite right in your browser? <a href="https://spreadsheets.google.com/viewform?formkey=dGJFZWRPVV9OX2p0cXVqbWVQSW5UUlE6MQ">Please let us know!</a></p>
- </div>
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>By email</h2>
- </div>
- <p>We can be reached by email at <a href="mailto:contact@thebluealliance.com">contact@thebluealliance.com</a>.</p>
- </div>
-</div>
-{% endblock %}
View
@@ -1,83 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}The Blue Alliance - Debug Help{% endblock %}
-
-{% block leftCol %}
- <img src="http://firsthandtechnology.org.uk/blogs/fllteam/WindowsLiveWriter/TSMRoboteam2K7PowerPuzzleWorldFestivalAt_A81D/Opening%20Ceremony%20Georgia%20Dome_2.jpg" width="200" height="160" class="profileImg" />
- <ul class="leftNav">
- <li class="info"><a href="https://github.com/gregmarra/the-blue-alliance">github</a></li>
- </ul>
- <div class="divider"></div>
-{% endblock %}
-
-{% block content %}
-<div id="contentTop">
- <h1>The Blue Alliance <span class="annotation">Debug and Setup</span></h1>
-</div>
-<div id="contentRight">
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Admin Tasks</h2>
- </div>
- <p>Go <a href="/admin/">admin some stuff</a>.</p>
- </div>
- {% include "base_partials/right_col.html" %}
-</div>
-<div id="contentCenter">
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>The Blue Alliance Developer Page</h2>
- </div>
- <p>Hello developer! Welcome to the debug page for The Blue Alliance. This page is full of useful pointers to help you locally develop TBA. It is different from <a href="/admin/">the admin console</a>, which is designed to help fix data in production.</p>
- <p>To get started, you have to set up some initial test data for your local copy of TBA. We use <a href="http://paver.github.com/paver/">paver</a> scripts in pavement.py to set up this test data in your dev environment. <a href="http://packages.python.org/distribute/easy_install.html">easy_install</a> paver if you don't have it.</p>
- <p>Run these on the command line in the folder you have the-blue-alliance project in:</p>
- <ol>
- <li><a href="/tasks/usfirst_teams_fast_get">/tasks/usfirst_teams_fast_get</a> : Sets up all 2012 teams, fast.</li>
- <li>$ paver dev_data_setup</li>
- <li><a href="/tasks/eventteam_update_enqueue">/tasks/eventteam_update_enqueue</a> : Build event attendance information.</li>
- <li><a href="/tasks/tba_videos_get/2010cmp">/tasks/tba_videos_get/2010cmp</a> : Grab videos for 2010cmp</li>
- </ol>
- <p>This test data gives you the <a href="/event/2010cmp">2010 Championship Einstein Field</a> as your main test data.</p>
- </div>
- <div id="moreSetup" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Prod Setup</h2>
- </div>
- <p>If you're setting up a full copy of The Blue Alliance, these will help you create all the data you need.
- <ol>
- <li><a href="/tasks/usfirst_events_instantiate?year=2012">UsfirstEventsInstantiate</a>, enqueues Tasks to create Event objects for regional events from USFIRST.</li>
- <li>Instantiate 2012 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=2000">@2000</a> <a href="/tasks/usfirst_teams_instantiate?year=2012&amp;skip=3000">@3000</a></li>
- <li>Instantiate 2011 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2011&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2011&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2011&amp;skip=2000">@2000</a></li>
- <li>Instantiate 2010 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2010&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2010&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2010&amp;skip=2000">@2000</a></li>
- <li>Instantiate 2009 Teams: <a href="/tasks/usfirst_teams_instantiate?year=2009&amp;skip=0">UsfirstTeamsInstantiate @0</a> <a href="/tasks/usfirst_teams_instantiate?year=2009&amp;skip=1000">@1000</a> <a href="/tasks/usfirst_teams_instantiate?year=2009&amp;skip=2000">@2000</a></li>
- <li>Bulkload Old Events:<br />appcfg.py upload_data --config_file=bulkloader.yaml --filename=test_data/events.csv --kind=Event --url=http://tbatv-prod.appspot.com/_ah/remote_api</li>
- <li>Bulkload Old Matches: <br />appcfg.py upload_data --config_file=bulkloader.yaml --filename=test_data/matches.csv --kind=Match --url=http://tbatv-prod.appspot.com/_ah/remote_api</li>
- <li><a href="/tasks/eventteam_update_enqueue">Update EventTeams</a>, to build all the event attendance information.</li>
- </ol>
- </div>
-
- <div id="updates" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Updates</h2>
- </div>
- <ol>
- <li><a href="/tasks/usfirst_event_get_enqueue">UsfirstEventGetEnqueue</a>, enqueue tasks to update official Events.</li>
- <li><a href="/tasks/usfirst_matches_get_enqueue?year=2012">UsfirstMatchesGetEnqueue</a>, enqueue tasks to update match results for 2012 Events</li>
- <li><a href="/tasks/usfirst_team_get_enqueue?offset=0">UsfirstTeamGetEnqueue @ 0</a>, <a href="/tasks/usfirst_team_get_enqueue?offset=1000">@ 1000</a>, <a href="/tasks/usfirst_team_get_enqueue?offset=2000">@ 2000</a>, <a href="/tasks/usfirst_team_get_enqueue?offset=3000">@ 3000</a>, enqueue tasks to update Team details</li>
- <li><a href="/tasks/tba_videos_get/2010cmp">TBAVideosGet</a> with an Event key to scrape <a href="http://videos.thebluealliance.net">http://videos.thebluealliance.net</a> for TBAVideos.</li>
- <li><a href="/tasks/eventteam_update_enqueue">Update EventTeams</a>, to build all the event attendance information.</li>
- <li><a href="/tasks/event_opr_get_enqueue?year=2012">Update OPRs</a> or <a href="/tasks/event_opr_get/2010cmp">Update One Event's OPRs</a>, to recalculate OPRs.</li>
- </ol>
- </div>
-
- <div id="commands" class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Useful Other Commands</h2>
- </div>
- <ul>
- <li>appcfg.py upload_data --config_file=bulkloader.yaml --filename=<em>something</em>.csv --kind=<em>Something</em> --url=http://<em>something</em>/_ah/remote_api</li>
- </ul>
- </div>
-</div>
-
-{% endblock %}
View
@@ -1,31 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}The Blue Alliance{% endblock %}
-
-{% block leftCol %}
-<img src="/images/logo_square_200.png" width="200" class="profileImg" />
-{% endblock %}
-
-{% block content %}
-<div id="contentRight">
- {% include "base_partials/right_col.html" %}
-</div>
-<div id="contentCenter">
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Upcoming Events</h2>
- </div>
- <ul class="infoList">
- {% for event in upcoming_events %}
- <li>
- <h3><a href="/event/{{event.key.name}}">{{ event.name }}{%if event.location %} <span class="annotation">{{ event.location }}</span>{% endif %}</a></h3>
- <p>
- {% if event.start_date %}{{ event.start_date|date:"M d, Y" }}{% endif %}
- {% if event.end_date %}- {{ event.end_date|date:"M d, Y" }}{% endif %}
- </p>
- </li>
- {% endfor %}
- </ul>
- </div>
-</div>
-{% endblock %}
View
@@ -1,31 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}The Blue Alliance - OPR{% endblock %}
-
-{% block meta_description %}What is OPR?{% endblock %}
-
-{% block leftCol %}
-<img src="/images/logo_square_200.png" width="200" class="profileImg" />
-<ul class="leftNav">
- <li class="event"><a href="/events/">Events</a></li>
- <li class="robot"><a href="/teams/">Teams</a></li>
-</ul>
-{% endblock %}
-
-{% block content %}
-<div id="contentTop">
- <h1>What is OPR?</h1>
-</div>
-<div id="contentRight">
- {% include "base_partials/right_col.html" %}
-</div>
-<div id="contentCenter">
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>What is an OPR?</h2>
- </div>
- <p>OPR stands for <strong>Offensive Power Rating</strong>, which is a system to attempt to deduce the average point contribute of a team to an alliance. It is based on <a href="http://en.wikipedia.org/wiki/Sports_rating_system">sports rating systems</a> used in other sports. OPRs are an interesting way to slice the data for teams at particular events, but aren't a perfect system for assessing a team's performance or contribution.</p>
- <p>The Blue Alliance opts to show the top 15 OPRs for each competition.</p>
- </div>
-</div>
-{% endblock %}
View
@@ -1,38 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}The Blue Alliance - Search{% endblock %}
-
-{% block meta_description %}Search for FIRST Robotics Competition teams, events, and matches.{% endblock %}
-
-{% block leftCol %}
-<img src="/images/logo_square_200.png" width="200" class="profileImg" />
-<ul class="leftNav">
- <li class="event"><a href="/events/">Events</a></li>
- <li class="robot"><a href="/teams/">Teams</a></li>
-</ul>
-{% endblock %}
-
-{% block content %}
-<div id="contentTop">
- <h1>Search</h1>
-</div>
-<div id="contentRight">
- {% include "base_partials/right_col.html" %}
-</div>
-<div id="contentCenter">
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Search Results</h2>
- </div>
- <div id="cse-search-results"></div>
- <script type="text/javascript">
- var googleSearchIframeName = "cse-search-results";
- var googleSearchFormName = "cse-search-box";
- var googleSearchFrameWidth = 500;
- var googleSearchDomain = "www.google.com";
- var googleSearchPath = "/cse";
- </script>
- <script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>
- </div>
-</div>
-{% endblock %}
View
@@ -1,43 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}The Blue Alliance - Thanks{% endblock %}
-
-{% block meta_description %}Thanks to all the companies and technologies that make The Blue Alliance possible.{% endblock %}
-
-{% block leftCol %}
-<img src="/images/logo_square_200.png" width="200" class="profileImg" />
-<ul class="leftNav">
- <li class="event"><a href="/events/">Events</a></li>
- <li class="robot"><a href="/teams/">Teams</a></li>
-</ul>
-{% endblock %}
-
-{% block content %}
-<div id="contentTop">
- <h1>Thanks to...</h1>
-</div>
-<div id="contentRight">
- {% include "base_partials/right_col.html" %}
-</div>
-<div id="contentCenter">
- <div class="contentBlock">
- <div class="contentBlockTopper">
- <h2>Thanks to</h2>
- </div>
- <ul class="infoList">
- <li>
- <h3><a href="http://www.dotblock.com" title="Dotblock VPS Hosting">Dotblock VPS Hosting</a></h3>
- <p>For the dedicated server that serves our videos</p>
- </li>
- <li>
- <h3><a href="http://www.appspot.com">Google AppEngine</a></h3>
- <p>For the webapp platform</p>
- </li>
- <li>
- <h3><a href="http://www.komodomedia.com/download/#social-network-icon-pack">Komodo Media</a></h3>
- <p>For the wonderful social media icons</p>
- </li>
- </ul>
- </div>
-</div>
-{% endblock %}
View
@@ -0,0 +1,59 @@
+{% extends "base.html" %}
+
+{% block title %}{{match.verbose_name}} - {{match.event.year}} {{match.event.name}} - The Blue Alliance{% endblock %}
+
+{% block meta_description %}Match results and video for {{match.verbose_name}} at the {{match.event.year}} {{match.event.name}} FIRST Robotics Competition in {{match.event.location}}.{% endblock %}
+
+{% block more_head_tags %}
+ <meta property="og:title" content="{{match.verbose_name}} - {{match.event.year}} {{match.event.name}}" />
+ <meta property="og:type" content="article" />
+ <meta property="og:url" content="http://thebluealliance.com/match/{{match.key.name}}" />
+ {% if tbavideo.getThumbnailPath %}
+ <meta property="og:image" content="{{tbavideo.getThumbnailPath}}" />
+ {% else %}
+ <meta property="og:image" content="http://www.thebluealliance.com/images/logo_square_200.png" />
+ {% endif %}
+ <meta property="og:description" content="{{match.verbose_name}} at the {{match.event.year}} {{match.event.name}} FIRST Robotics Competition in {{match.event.location}}."/>
+ <meta property="og:site_name" content="The Blue Alliance" />
+ {% if tbavideo.getStreamablePath %}<meta property="og:video" content="{{ tbavideo.getStreamablePath }}" />{% endif %}
+{% endblock %}
+
+{% block content %}
+<div class="container">
+ <h1>{{match.verbose_name}}</h1>
+ <h3 class="end_header">{{ match.event.year }} {{ match.event.name }}</h3>
+ <p><a href="/event/{{match.event.key.name}}"><i class="icon-chevron-left"></i> Back to Event Page</a></p>
+
+ <div class="row">
+ <div class="span6 offset3">
+ <table class="matchTable">
+ <tr class="key">
+ <th colspan="{{match.alliances.items.0.1.teams|length}}">Teams</th>
+ <th>Score</th>
+ </tr>
+ {% for items in match.alliances.items reversed %}
+ <tr>
+ {% for team in items.1.teams %}
+ <td class="{{ items.0 }}{% ifequal match.winning_alliance items.0 %} winner{% endifequal %}"><a href="/team/{{ team|slice:"3:" }}">{{ team|slice:"3:" }}</a></td>
+ {% endfor %}
+ <td class="{{items.0}}Score{% ifequal match.winning_alliance items.0 %} winner{% endifequal %}">{% ifequal items.1.score "-1" %}?{% else %}{{ items.1.score }}{% endifequal %}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ </div>
+ </div>
+ <div class="row">
+ <div class="span6 offset3">
+ {% if tbavideo %}
+ {% include "videos/partials/tbavideo_player.html" %}
+ {% endif %}
+ {% for youtube_video in match.youtube_videos %}
+ {% include "videos/partials/youtube_video_player.html" %}
+ {% endfor %}
+ {% if not tbavideo and not match.youtube_videos %}
+ <p>No video available. Have one? <a href="/contact">Contact us!</a></p>
+ {% endif %}
+ </div>
+ </div>
+</div>
+{% endblock %}
View
File renamed without changes.
View
@@ -0,0 +1,48 @@
+<table class="table-condensed matchTable">
+ <tr class="key hidden-phone">
+ <th class="videoIcon"></th>
+ <th>Match Num.</th>
+ <th colspan="3">Red Alliance</th>
+ <th colspan="3">Blue Alliance</th>
+ <th colspan="2">Scores</th>
+ </tr>
+
+ <tr class="key visible-phone">
+ <th class="videoIcon" rowspan="2"></th>
+ <th rowspan="2">Match Num.</th>
+ <th colspan="6">Red Alliance</th>
+ <th colspan="2">Red Score</th>
+ </tr>
+ <tr class="key visible-phone">
+ <th colspan="6">Blue Alliance</th>
+ <th colspan="2">Blue Score</th>
+ </tr>
+
+ {% if matches.ef %}
+ <tr class="key"><th colspan="10">Eighth Finals</th></tr>
+ {% for match in matches.ef %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+
+ {% if matches.qf %}
+ <tr class="key"><th colspan="10">Quarterfinals</th></tr>
+ {% for match in matches.qf %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+
+ {% if matches.sf %}
+ <tr class="key"><th colspan="10">Semifinals</th></tr>
+ {% for match in matches.sf %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+
+ {% if matches.f %}
+ <tr class="key"><th colspan="10">Finals</th></tr>
+ {% for match in matches.f %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+</table>
View
@@ -0,0 +1,55 @@
+<table class="table-condensed matchTable">
+ <tr class="key hidden-phone">
+ <th class="videoIcon"></th>
+ <th>Match Num.</th>
+ <th colspan="3">Red Alliance</th>
+ <th colspan="3">Blue Alliance</th>
+ <th colspan="2">Scores</th>
+ </tr>
+
+ <tr class="key visible-phone">
+ <th class="videoIcon" rowspan="2"></th>
+ <th rowspan="2">Match Num.</th>
+ <th colspan="6">Red Alliance</th>
+ <th colspan="2">Red Score</th>
+ </tr>
+ <tr class="key visible-phone">
+ <th colspan="6">Blue Alliance</th>
+ <th colspan="2">Blue Score</th>
+ </tr>
+
+ {% if matches.qm %}
+ <tr class="key"><th colspan="10">Qualifications</th></tr>
+ {% for match in matches.qm %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+
+ {% if matches.ef %}
+ <tr class="key"><th colspan="10">Eighth Finals</th></tr>
+ {% for match in matches.ef %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+
+ {% if matches.qf %}
+ <tr class="key"><th colspan="10">Quarterfinals</th></tr>
+ {% for match in matches.qf %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+
+ {% if matches.sf %}
+ <tr class="key"><th colspan="10">Semifinals</th></tr>
+ {% for match in matches.sf %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+
+ {% if matches.f %}
+ <tr class="key"><th colspan="10">Finals</th></tr>
+ {% for match in matches.f %}
+ {% include "match_partials/match_row.html" %}
+ {% endfor %}
+ {% endif %}
+</table>
Oops, something went wrong.