@@ -0,0 +1,209 @@ | |||||
#campaigns-select { | |||||
display: inline-block; | |||||
padding-right: 1em; | |||||
background: transparent 100% 50%/contain no-repeat; | |||||
border-width: 1px; | |||||
} | |||||
#campaigns-select select { | |||||
max-width: 120px; | |||||
padding: 0 0.25em; | |||||
font-size: 100%; | |||||
color: inherit; | |||||
background: transparent; | |||||
border: none; | |||||
appearance: none; | |||||
-webkit-appearance: none; | |||||
-moz-appearance: none; | |||||
} | |||||
h2 .disabled { | |||||
color: #989898; | |||||
text-decoration: line-through; | |||||
} | |||||
h2 .disabled-info { | |||||
margin-left: 0.5em; | |||||
color: #989898; | |||||
font-size: 85%; | |||||
font-variant: none; | |||||
} | |||||
#operations { | |||||
margin-bottom: 1em; | |||||
} | |||||
#operations section { | |||||
display: flex; | |||||
} | |||||
.operation { | |||||
flex: 1; | |||||
} | |||||
.operation .primary .num { | |||||
height: 60px; | |||||
line-height: 60px; | |||||
} | |||||
.operation .big { | |||||
font-size: 300%; | |||||
} | |||||
.operation .medium { | |||||
font-size: 200%; | |||||
} | |||||
.operation .small { | |||||
font-size: 150%; | |||||
} | |||||
.operation .secondary { | |||||
font-size: 105%; | |||||
} | |||||
.operation .unit { | |||||
font-style: italic; | |||||
} | |||||
.operation .summary { | |||||
font-size: 14px; | |||||
} | |||||
.operation .summary .head { | |||||
margin-top: 1em; | |||||
} | |||||
.operation .summary .contents { | |||||
position: relative; | |||||
margin-top: 0.5em; | |||||
border: 1px solid #282828; | |||||
} | |||||
.operation .board { | |||||
border-spacing: 0; | |||||
border-collapse: collapse; | |||||
text-align: left; | |||||
} | |||||
.operation .board:not(.expanded) tr:nth-child(2n) { | |||||
background-color: #181818; | |||||
} | |||||
.operation .board:not(.expanded) tr:nth-child(2n+1) { | |||||
background-color: #0A0A0A; | |||||
} | |||||
.operation .board td { | |||||
padding: 0.25em 0; | |||||
} | |||||
.operation .board td:first-child { | |||||
padding-left: 1em; | |||||
} | |||||
.operation .board td:last-child { | |||||
padding-right: 1em; | |||||
} | |||||
.operation .board .fluid { | |||||
padding-right: 0.5em; | |||||
} | |||||
.operation .board .icon { | |||||
width: 46px; | |||||
} | |||||
.operation .board.expanded { | |||||
position: absolute; | |||||
z-index: 1; | |||||
transition: clip-path 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); | |||||
clip-path: inset(0 100% 0 0); | |||||
} | |||||
.operation .board:not(.expanded) .extra { | |||||
display: none; | |||||
} | |||||
.operation .board.expanded .spacer { | |||||
display: none; | |||||
} | |||||
.operation .board img { | |||||
width: 42px; | |||||
height: 42px; | |||||
vertical-align: middle; | |||||
} | |||||
.operation .board abbr { | |||||
border-bottom: none; | |||||
} | |||||
.operation .itemboard td:last-child { | |||||
padding-left: 0.5em; | |||||
text-align: right; | |||||
} | |||||
.operation .itemboard .count { | |||||
font-weight: bold; | |||||
} | |||||
.operation .itemboard .count::before { | |||||
content: "×"; | |||||
font-weight: normal; | |||||
color: #AAA; | |||||
} | |||||
@media (min-width: 800px) { | |||||
#operations { | |||||
margin: 1em 0; | |||||
} | |||||
#operations section { | |||||
margin-bottom: 2em; | |||||
} | |||||
.operation { | |||||
margin: 0 0.75em; | |||||
text-align: center; | |||||
} | |||||
.operation .secondary { | |||||
margin-top: 0.5em; | |||||
} | |||||
.operation .secondary .unit { | |||||
margin-left: 0.15em; | |||||
} | |||||
.operation .summary .contents { | |||||
display: inline-block; | |||||
margin-bottom: -4px; | |||||
} | |||||
} | |||||
@media (max-width: 799px) { | |||||
#operations section { | |||||
flex-direction: column; | |||||
} | |||||
.operation { | |||||
margin: 0.5em 0; | |||||
} | |||||
.operation .overview { | |||||
margin-left: 1em; | |||||
} | |||||
.operation .primary, .operation .primary .unit { | |||||
display: inline-block; | |||||
} | |||||
.operation .unit { | |||||
margin-left: 0.15em; | |||||
} | |||||
.operation .board:not(.expanded) { | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,26 @@ | |||||
$(function() { | |||||
// Enable form auto-submit on campaign change: | |||||
$("#campaigns-select select").change(function() { | |||||
this.form.submit(); | |||||
}); | |||||
$('#campaigns-select input[type="submit"]').hide(); | |||||
//Selectively reveal operation summary details: | |||||
$(".operation .killboard tr").mouseenter(function() { | |||||
var div = $("<table>", {addClass: "board expanded"}) | |||||
.css($(this).position()) | |||||
.css("background-color", $(this).css("background-color")) | |||||
.css("position", "fixed") | |||||
.append($("<tr>").html($(this).html())) | |||||
.mouseleave(function() { $(this).remove(); }); | |||||
div.find(".spacer").remove(); | |||||
$(this).closest(".summary").find(".expanded").remove(); | |||||
$(this).closest(".contents").prepend(div); | |||||
div.css("width", Math.max(div.width(), $(this).width())); | |||||
div.css("position", ""); | |||||
div.css("clip-path", "inset(0 0% 0 0)"); | |||||
}); | |||||
$(".operation .summary").mouseleave(function() { | |||||
$(this).find(".expanded").remove(); | |||||
}); | |||||
}); |
@@ -1,6 +1,3 @@ | |||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~ Calefaction Main CSS ~~~~~~~~~~~~~~~~~~~~~~~~~ */ | |||||
/* =============================== Universal =============================== */ | |||||
@import url(//fonts.googleapis.com/css?family=Open+Sans:400,400italic,700); | @import url(//fonts.googleapis.com/css?family=Open+Sans:400,400italic,700); | ||||
body { | body { | ||||
@@ -374,253 +371,3 @@ footer ul li:not(:last-child)::after { | |||||
.sec-1_0 { | .sec-1_0 { | ||||
color: #33F9F9; | color: #33F9F9; | ||||
} | } | ||||
/* ================================ Modules ================================ */ | |||||
/* ------------------------------- Campaigns ------------------------------- */ | |||||
#campaigns-select { | |||||
display: inline-block; | |||||
padding-right: 1em; | |||||
background: transparent 100% 50%/contain no-repeat; | |||||
border-width: 1px; | |||||
} | |||||
#campaigns-select select { | |||||
max-width: 120px; | |||||
padding: 0 0.25em; | |||||
font-size: 100%; | |||||
color: inherit; | |||||
background: transparent; | |||||
border: none; | |||||
appearance: none; | |||||
-webkit-appearance: none; | |||||
-moz-appearance: none; | |||||
} | |||||
h2 .disabled { | |||||
color: #989898; | |||||
text-decoration: line-through; | |||||
} | |||||
h2 .disabled-info { | |||||
margin-left: 0.5em; | |||||
color: #989898; | |||||
font-size: 85%; | |||||
font-variant: none; | |||||
} | |||||
#operations { | |||||
margin-bottom: 1em; | |||||
} | |||||
#operations section { | |||||
display: flex; | |||||
} | |||||
.operation { | |||||
flex: 1; | |||||
} | |||||
.operation .primary .num { | |||||
height: 60px; | |||||
line-height: 60px; | |||||
} | |||||
.operation .big { | |||||
font-size: 300%; | |||||
} | |||||
.operation .medium { | |||||
font-size: 200%; | |||||
} | |||||
.operation .small { | |||||
font-size: 150%; | |||||
} | |||||
.operation .secondary { | |||||
font-size: 105%; | |||||
} | |||||
.operation .unit { | |||||
font-style: italic; | |||||
} | |||||
.operation .summary { | |||||
font-size: 14px; | |||||
} | |||||
.operation .summary .head { | |||||
margin-top: 1em; | |||||
} | |||||
.operation .summary .contents { | |||||
position: relative; | |||||
margin-top: 0.5em; | |||||
border: 1px solid #282828; | |||||
} | |||||
.operation .board { | |||||
border-spacing: 0; | |||||
border-collapse: collapse; | |||||
text-align: left; | |||||
} | |||||
.operation .board:not(.expanded) tr:nth-child(2n) { | |||||
background-color: #181818; | |||||
} | |||||
.operation .board:not(.expanded) tr:nth-child(2n+1) { | |||||
background-color: #0A0A0A; | |||||
} | |||||
.operation .board td { | |||||
padding: 0.25em 0; | |||||
} | |||||
.operation .board td:first-child { | |||||
padding-left: 1em; | |||||
} | |||||
.operation .board td:last-child { | |||||
padding-right: 1em; | |||||
} | |||||
.operation .board .fluid { | |||||
padding-right: 0.5em; | |||||
} | |||||
.operation .board .icon { | |||||
width: 46px; | |||||
} | |||||
.operation .board.expanded { | |||||
position: absolute; | |||||
z-index: 1; | |||||
transition: clip-path 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); | |||||
clip-path: inset(0 100% 0 0); | |||||
} | |||||
.operation .board:not(.expanded) .extra { | |||||
display: none; | |||||
} | |||||
.operation .board.expanded .spacer { | |||||
display: none; | |||||
} | |||||
.operation .board img { | |||||
width: 42px; | |||||
height: 42px; | |||||
vertical-align: middle; | |||||
} | |||||
.operation .board abbr { | |||||
border-bottom: none; | |||||
} | |||||
.operation .itemboard td:last-child { | |||||
padding-left: 0.5em; | |||||
text-align: right; | |||||
} | |||||
.operation .itemboard .count { | |||||
font-weight: bold; | |||||
} | |||||
.operation .itemboard .count::before { | |||||
content: "×"; | |||||
font-weight: normal; | |||||
color: #AAA; | |||||
} | |||||
@media (min-width: 800px) { | |||||
#operations { | |||||
margin: 1em 0; | |||||
} | |||||
#operations section { | |||||
margin-bottom: 2em; | |||||
} | |||||
.operation { | |||||
margin: 0 0.75em; | |||||
text-align: center; | |||||
} | |||||
.operation .secondary { | |||||
margin-top: 0.5em; | |||||
} | |||||
.operation .secondary .unit { | |||||
margin-left: 0.15em; | |||||
} | |||||
.operation .summary .contents { | |||||
display: inline-block; | |||||
margin-bottom: -4px; | |||||
} | |||||
} | |||||
@media (max-width: 799px) { | |||||
#operations section { | |||||
flex-direction: column; | |||||
} | |||||
.operation { | |||||
margin: 0.5em 0; | |||||
} | |||||
.operation .overview { | |||||
margin-left: 1em; | |||||
} | |||||
.operation .primary, .operation .primary .unit { | |||||
display: inline-block; | |||||
} | |||||
.operation .unit { | |||||
margin-left: 0.15em; | |||||
} | |||||
.operation .board:not(.expanded) { | |||||
width: 100%; | |||||
} | |||||
} | |||||
/* -------------------------------- Members -------------------------------- */ | |||||
#members-list { | |||||
list-style: none; | |||||
margin: 1em 0 0.5em 0; | |||||
padding: 0; | |||||
column-count: 2; | |||||
} | |||||
#members-list li { | |||||
margin-bottom: 0.5em; | |||||
} | |||||
#members-list a:hover { | |||||
text-decoration: none; | |||||
} | |||||
#members-list img { | |||||
width: 48px; | |||||
height: 48px; | |||||
vertical-align: middle; | |||||
border-width: 1px; | |||||
} | |||||
#members-list span { | |||||
margin-left: 0.5em; | |||||
vertical-align: middle; | |||||
} | |||||
#members-list em { | |||||
font-size: 90%; | |||||
} | |||||
#members-list em::before { | |||||
content: ", "; | |||||
} |
@@ -3,8 +3,6 @@ var overlaps = function(needle, haystack) { | |||||
}; | }; | ||||
$(function() { | $(function() { | ||||
/* ============================= Universal ============================= */ | |||||
// Install logout auto-POST form: | // Install logout auto-POST form: | ||||
$("#logout").click(function() { | $("#logout").click(function() { | ||||
$("<form>", { | $("<form>", { | ||||
@@ -56,31 +54,4 @@ $(function() { | |||||
.prop("disabled", false); | .prop("disabled", false); | ||||
$(this).addClass("cur").find(":submit").prop("disabled", true); | $(this).addClass("cur").find(":submit").prop("disabled", true); | ||||
}); | }); | ||||
/* ============================== Modules ============================== */ | |||||
// Campaigns: enable form auto-submit on campaign change: | |||||
$("#campaigns-select select").change(function() { | |||||
this.form.submit(); | |||||
}); | |||||
$('#campaigns-select input[type="submit"]').hide(); | |||||
//Campaigns: selectively reveal operation summary details: | |||||
$(".operation .killboard tr").mouseenter(function() { | |||||
var div = $("<table>", {addClass: "board expanded"}) | |||||
.css($(this).position()) | |||||
.css("background-color", $(this).css("background-color")) | |||||
.css("position", "fixed") | |||||
.append($("<tr>").html($(this).html())) | |||||
.mouseleave(function() { $(this).remove(); }); | |||||
div.find(".spacer").remove(); | |||||
$(this).closest(".summary").find(".expanded").remove(); | |||||
$(this).closest(".contents").prepend(div); | |||||
div.css("width", Math.max(div.width(), $(this).width())); | |||||
div.css("position", ""); | |||||
div.css("clip-path", "inset(0 0% 0 0)"); | |||||
}); | |||||
$(".operation .summary").mouseleave(function() { | |||||
$(this).find(".expanded").remove(); | |||||
}); | |||||
}); | }); |
@@ -0,0 +1,34 @@ | |||||
#members-list { | |||||
list-style: none; | |||||
margin: 1em 0 0.5em 0; | |||||
padding: 0; | |||||
column-count: 2; | |||||
} | |||||
#members-list li { | |||||
margin-bottom: 0.5em; | |||||
} | |||||
#members-list a:hover { | |||||
text-decoration: none; | |||||
} | |||||
#members-list img { | |||||
width: 48px; | |||||
height: 48px; | |||||
vertical-align: middle; | |||||
border-width: 1px; | |||||
} | |||||
#members-list span { | |||||
margin-left: 0.5em; | |||||
vertical-align: middle; | |||||
} | |||||
#members-list em { | |||||
font-size: 90%; | |||||
} | |||||
#members-list em::before { | |||||
content: ", "; | |||||
} |
@@ -1,6 +1,6 @@ | |||||
<%inherit file="_base.mako"/> | <%inherit file="_base.mako"/> | ||||
<%block name="title"> | <%block name="title"> | ||||
${self.maketitle("404")} | |||||
${self.support.maketitle("404")} | |||||
</%block> | </%block> | ||||
<h2>Error 404</h2> | <h2>Error 404</h2> | ||||
<p>The page you asked for couldn't be found.</p> | <p>The page you asked for couldn't be found.</p> |
@@ -1,32 +1,27 @@ | |||||
<%namespace name="support" file="_base_support.mako" inheritable="True"/>\ | |||||
<!DOCTYPE html> | <!DOCTYPE html> | ||||
<html lang="en"> | <html lang="en"> | ||||
<head> | <head> | ||||
<meta charset="utf-8"> | <meta charset="utf-8"> | ||||
<title> | <title> | ||||
<%def name="maketitle(*parts)"> | |||||
<% | |||||
if request.url_rule and request.url_rule.endpoint == "index": | |||||
parts = () | |||||
%> | |||||
${" | ".join(parts + (g.config.get("corp.name"),)) | h} | |||||
</%def> | |||||
<%block name="title"> | <%block name="title"> | ||||
${maketitle()} | |||||
${support.maketitle()} | |||||
</%block> | </%block> | ||||
</title> | </title> | ||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
<link rel="canonical" href="${g.config.scheme}://${g.config.get('site.canonical')}${request.script_root}${request.path}"> | <link rel="canonical" href="${g.config.scheme}://${g.config.get('site.canonical')}${request.script_root}${request.path}"> | ||||
<link rel="stylesheet" type="text/css" href="${url_for('staticv', filename='main.css')}"/> | |||||
${support.makecss("main.css")} | |||||
<% style = g.auth.get_character_prop("style") or g.config.get("style.default") %> | <% style = g.auth.get_character_prop("style") or g.config.get("style.default") %> | ||||
% if style: | % if style: | ||||
<% stylesheet = "styles/{}.css".format(style) %> | |||||
<link id="user-style" rel="stylesheet" type="text/css" href="${url_for('staticv', filename=stylesheet)}"/> | |||||
${support.makecss("styles/{}.css".format(style), "user-style")} | |||||
% endif | % endif | ||||
<%block name="extracss"></%block> | |||||
% for size in g.eve.image.corp_widths: | % for size in g.eve.image.corp_widths: | ||||
<link rel="icon" type="image/png" sizes="${size}x${size}" href="${g.eve.image.corp(g.config.get('corp.id'), size)}"/> | <link rel="icon" type="image/png" sizes="${size}x${size}" href="${g.eve.image.corp(g.config.get('corp.id'), size)}"/> | ||||
% endfor | % endfor | ||||
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> | <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> | ||||
<script src="${url_for('staticv', filename='main.js')}"></script> | |||||
${support.makejs("main.js")} | |||||
<%block name="extrajs"></%block> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<%block name="header"> | <%block name="header"> | ||||
@@ -0,0 +1,14 @@ | |||||
<%! import markupsafe %> | |||||
<%def name="maketitle(*parts)" filter="trim"> | |||||
<% | |||||
if request.url_rule and request.url_rule.endpoint == "index": | |||||
parts = () | |||||
%> | |||||
${" | ".join(parts + (g.config.get("corp.name"),)) | h} | |||||
</%def> | |||||
<%def name="makecss(filename, id_=None)" filter="trim"> | |||||
<link ${'id="{}" '.format(markupsafe.escape(id_)) if id_ else ""}rel="stylesheet" type="text/css" href="${url_for('staticv', filename=filename)}"/> | |||||
</%def> | |||||
<%def name="makejs(filename)" filter="trim"> | |||||
<script src="${url_for('staticv', filename=filename)}"></script> | |||||
</%def> |
@@ -4,7 +4,13 @@ | |||||
<%inherit file="../_default.mako"/> | <%inherit file="../_default.mako"/> | ||||
<%namespace file="renderers.mako" import="render_summary"/> | <%namespace file="renderers.mako" import="render_summary"/> | ||||
<%block name="title"> | <%block name="title"> | ||||
${self.maketitle(campaign["title"], "Campaigns")} | |||||
${self.support.maketitle(campaign["title"], "Campaigns")} | |||||
</%block> | |||||
<%block name="extracss"> | |||||
${self.support.makecss("campaigns.css")} | |||||
</%block> | |||||
<%block name="extrajs"> | |||||
${self.support.makejs("campaigns.js")} | |||||
</%block> | </%block> | ||||
<h2> | <h2> | ||||
<span class="understate">Campaign:</span> | <span class="understate">Campaign:</span> | ||||
@@ -1,5 +1,5 @@ | |||||
<%inherit file="../_default.mako"/> | <%inherit file="../_default.mako"/> | ||||
<%block name="title"> | <%block name="title"> | ||||
${self.maketitle("Campaigns")} | |||||
${self.support.maketitle("Campaigns")} | |||||
</%block> | </%block> | ||||
<p>No campaigns currently.</p> | <p>No campaigns currently.</p> |
@@ -1,6 +1,6 @@ | |||||
<%inherit file="../_default.mako"/> | <%inherit file="../_default.mako"/> | ||||
<%block name="title"> | <%block name="title"> | ||||
${self.maketitle(operation["title"], campaign["title"], "Campaigns")} | |||||
${self.support.maketitle(operation["title"], campaign["title"], "Campaigns")} | |||||
</%block> | </%block> | ||||
<h2> <!-- ... breadcrumb --> | <h2> <!-- ... breadcrumb --> | ||||
<span class="understate">Operation:</span> | <span class="understate">Operation:</span> | ||||
@@ -1,6 +1,6 @@ | |||||
<%inherit file="_base.mako"/> | <%inherit file="_base.mako"/> | ||||
<%block name="title"> | <%block name="title"> | ||||
${self.maketitle("Error")} | |||||
${self.support.maketitle("Error")} | |||||
</%block> | </%block> | ||||
<h2>Error!</h2> | <h2>Error!</h2> | ||||
<p>You may report the following information to the developers:</p> | <p>You may report the following information to the developers:</p> | ||||
@@ -1,6 +1,6 @@ | |||||
<%inherit file="_base.mako"/> | <%inherit file="_base.mako"/> | ||||
<%block name="title"> | <%block name="title"> | ||||
${self.maketitle("Log out")} | |||||
${self.support.maketitle("Log out")} | |||||
</%block> | </%block> | ||||
<h2>Log out</h2> | <h2>Log out</h2> | ||||
<p>Use the button below to safely log out and clear your session.</p> | <p>Use the button below to safely log out and clear your session.</p> | ||||
@@ -1,6 +1,9 @@ | |||||
<%inherit file="../_default.mako"/> | <%inherit file="../_default.mako"/> | ||||
<%block name="title"> | <%block name="title"> | ||||
${self.maketitle("Members")} | |||||
${self.support.maketitle("Members")} | |||||
</%block> | |||||
<%block name="extracss"> | |||||
${self.support.makecss("members.css")} | |||||
</%block> | </%block> | ||||
<h2>Members</h2> | <h2>Members</h2> | ||||
% if members: | % if members: | ||||