Merge pull request #34 from br0xen/master

Better mobile formatting
This commit is contained in:
Brian Buller 2018-06-18 09:19:34 -05:00 committed by GitHub
commit 1623fa279d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 259 additions and 206 deletions

View File

@ -141,9 +141,15 @@ func handleAdminVotes(w http.ResponseWriter, req *http.Request, page *pageData)
Results []Ranking Results []Ranking
} }
vpd := new(votePageData) vpd := new(votePageData)
now := time.Now()
dayThresh := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
for i := range m.jam.Votes { for i := range m.jam.Votes {
v := new(vpdVote) v := new(vpdVote)
v.Timestamp = m.jam.Votes[i].Timestamp.Format(time.RFC3339) if m.jam.Votes[i].Timestamp.Before(dayThresh) {
v.Timestamp = m.jam.Votes[i].Timestamp.Format("Jan _2 15:04")
} else {
v.Timestamp = m.jam.Votes[i].Timestamp.Format(time.Kitchen)
}
v.ClientId = m.jam.Votes[i].ClientId v.ClientId = m.jam.Votes[i].ClientId
for _, choice := range m.jam.Votes[i].Choices { for _, choice := range m.jam.Votes[i].Choices {
for _, fndTm := range m.jam.Teams { for _, fndTm := range m.jam.Teams {

286
assets.go
View File

@ -192,43 +192,46 @@ var _escData = map[string]*_escFile{
"/assets/css/admin.css": { "/assets/css/admin.css": {
local: "assets/css/admin.css", local: "assets/css/admin.css",
size: 291, size: 252,
modtime: 1517696170, modtime: 1529324817,
compressed: ` compressed: `
H4sIAAAAAAAC/2TPwWoDIRAG4LtPMZCzIWnpYXev+yKuWjtUZ2QcS6Dk3YtJWNrm+vvp/xvw6+iZNJLC H4sIAAAJbogA/2SOzarDIBCF9z7FQNaGm3u5iyTbvIhRa4eqI6OWQMm7Nz9QKNl+8805x+CznakUCjIn
twEoThKSzfFdZzi/neplMVdjBttYlYtt1fn4297zoR8YSzrqRy8bOcw36bs0lhkqI2mU/UmJrWdtdixw pS28BEBQ7DDKkw/Q/adlFKsQGFxb7jXMUaE/TF05Ew+QCGOxfFh7JNtcfclSUywKo+XDnomN3ewuLZDJ
SFFuemMJUWY41ws0zhjgME3Tsp9YcQF7m+F1FAJszn8m4U7Bes6j57Cu6/K88OV0v1BdCEjp8cv/6V99 o4Gm7/vxc5GsDNY8wN9euFGlH46pRrMF+b2nmaZpvC78/TkfkjIGo5Pe3sqVftureAcAAP//BQCMs/wA
NT8BAAD//49jsTYjAQAA AAA=
`, `,
}, },
"/assets/css/gjvote.css": { "/assets/css/gjvote.css": {
local: "assets/css/gjvote.css", local: "assets/css/gjvote.css",
size: 4497, size: 5010,
modtime: 1517698891, modtime: 1529328784,
compressed: ` compressed: `
H4sIAAAAAAAC/6xX62rcOBT+n6cQhEICK2OnmSZxICz08gL9WfpDtjT2IbJkZHlm0pJ3X3TzWLY8XZaF H4sIAAAJbogA/6xY3WvcOBB/z18hCIWm1O5umm02GwgH/eAe7p76WPogW7ItIltGlpNNS//3G315JVve
BMY6F53Ldy5qdcfR7yuEOhC4ZdC0ukRFnn94vnq/uqokfbPUWnKpSnT98PDwvMVMLKdmJ40pq6UiGqQo HseVBmJpNPrNzG8+lEa1HP28QKhlXdZQVjfqgLabzav7i18XF4UgL2a3FFzIA7q8vb29XxPGRlLRo8oI
kZCCWTqFQ1ZLoZnQlrMnlIJoSlTs+lNa63RxxUn9OmlpCd9bFUegui3RzluQtYxQppw/RDUgMGd7XaLc LYXEionugDrRUbNP2FNeik7RThnJHhPCuho07PpjWut0ccFx+ThpaTCvjIpnRlRzQDuHIG8oJlRae7Cs
kfcE31niXgqNB/jFSnTHOkfsFXRExe7m+cMje4jouGosS0Xq10bJUVCc4mZKSRXp+vIlz/N8Rr2gacZ7 QR+nFWjb2O0KZ9dmswIY2cB+0AO6pq3d7CWDM7G5m83tnt5G+1lRG5ECANVSjB3JUtJUSiEjXZ8+beBf
BaIfdbYHzuKoZTvWoeyTMR8hCkPPyVuJQHAQDFdcmnghVElFmSpR0Z/QIDlQdF3XtaOc8NASKo9GamAa sHtGUyB7wbp+VHnFOI29lu9oi/IPGj5ChA09xy8HxDrOOpoVXGh/gXIhwSPgz/6IBsEZQZdlWdqdYzY0
5ZbrY39C15TSszRWhMI4lOje5Ok9mKSIeAXRYPsVp8PlcyG9m59GFn3+/Pk5QIdwaESJaiY0Uw6Eo9ZS mIhnfWqgCm2M1Hv4uSSEnE5nEhM2Dgd0o+P0y0OSuHsEJJn5isNh4zk7vQtXI0QfP36899TBnNXAmhJY
ZMNYdaDxQWoTCGNF1skDw1BL4QI9qsFETwxYMZNcK33dMTHOrQvICki799b2cgCHWMU40XBgz1FySnRd QqUl4aiU6PJhLFqmsiehtCM0irwVTzRjwCnr6FEO2nvdkEmqg2tOX7a0G0N0nlmeaTcObS8GZhkrKQfu
PBWPxaM5PrLqFTSWB6b2XB7xUCvJuc2LlmPdzq7O+lExbH5iA08QLusbGUuJCWlYXlOFGKOhWIBhQsFG PtH7KDgQlu3ddr/d6+VnWjwCGLhfVlw8Z0MpBecmLkqMZRNcnfejpJn+NdP0BBmDZiViqWOQQSDymErE
USJ0bEEzPPSkZubwqEg/t8Fe7+KfMjoOG6kGyUdtT7XsS+QDq1yc/ZevS8tQxGcqlL479a5aE58vdhZv mA3bGRkmFqwkJdjRMEWzoccl1YvPEvchBnO99X8KdOw2XEA4R2VWlegh66xjpfWz+3J5aQS28Zr0qW9X
p9RadlGqF0h0l06485oX7poWRUD4NjJ5HCKW9jf20d4TcJUo74CjrZtfRr7VGWaithNKBb+MGPcQtHIT nakG4hkjdD5ZnAJwtlGoZ0y0l068c5pn5uoShcE4GVvsPZa2N7bR3ON5lUhvz6O1mx9GvlYZgqOmEgrJ
LE8lcseubLsm0+3YVYKAY5x125CJ06oFm7OodkzEJz1b8Zqwt1SXcOrr168zMLs03eW+2WT+OO5+u0C1 fuhj3FHQnJtoeTwgu2zTtq1z1Yxt0WFmBYNq6yNxXJRgvRbljvb4pGfNXxP35uoSRn3+/Dkgsw3T9cYV
2J11/CUJD0DZsB4JuxT0FqIHpjTUhM+lrXGxsAPeTJoT1bDloCkeA7mCBq/NLiaHjYHnWeobojk05Mya m9wtx9Vv53cNd4OKP9+CMk/osGwJuxT1ZkfBjYqVmIenDbj4sCVecJrDOp03mu3ebxeszpawt5PBGuCp
uiLbU0t3nXPFMGuongUTD5cUG0LB+TUlWExGLa1CTSrOwsXaLA0vml6ywAmExHreVW4tF9J7KZ2/6Sp2 l7qCqBf1dm6gLrbNqtm3lXMhEBRUJwI7fFUMIW/8cscjxqMSRqHCBaf+YqWHhgdFziGwB3xgnewitkYK
08MCxXRM163wef5eGK/ndvrt27e1Di2bhjO8BzUsDXCAmUZb3GYcHlIs78kLOqDUT/fFyIz7owMujuao qUoIa286i233METRFdNWq+zUf8+011M5/fLly1KHEnXNaVYxOcwBWMJMrS0uM5YPKZFfyQtaRojr7rOW
P1yHI3URJ2tHjPxlP1Ic/8WiyKSSwmDSS7dy5HeC8Pn09OT7paSE42kxXZRgEbDj+Uwn5MSxHmCACjjo GddHS9ws6qNucemO1EUcLw3R58/bkZL4L4giSAcoFDq8ZC1Gbibwn3d3d65eCgKcnAbTWQpuPXecnK6E
txK1QCkT2/3cr42zdu5/bywR4TtdSr8wCMpOli1P90DVVOQm/wv5v2x3m3DjhcJh0TM+mP+ZYY+hZweG UI6M6BMbWME4U1CdGnA57dbruRsbg3Lufl8ZIvx3OpV+wIxE6NGIbdI1UNYFfr15i9z/fHeVMOMBSv6s
vD/5Qk2G2QI/uZQFU2NEhuG8Wt43Kp3C4Zp1FTQNE4x+rxVj4nvrCzpsbL2EEKotEy+oeoGu+R3Nqfnk ZrzSPwGwva/ZXgBwu0RNutkQPzmUeagxI31zXgzvK5kOiC9pCxWvph0lX0tJafe1cQntJ7ZeMO+qNYhn
8hmaJpeZmvuR88HKL6fgh0SO/7zhxGhJQmDeM6d8BFwUeV7MKmQvVYfsVv0jVMnPUkh980O/9eznbRZO VD1AX/sZ9amwc7kITZ1Ld81q5Hww5+dd8FUixr+fcGK2JCkQ1swpHp4XcNM2yJBKyBaZqfqbz5Lvh06o
TS1hC+vQPjYTHD53u525yW3wdk6p+cZ0n4cp9HfHKBB0Yx5lE5F1t5b7vFSvd611POch3MOJ2afF+9Wk 19/US0+/X+V+VedSZmjty8dqgP3nbrfTN9kJ3vQpGU5MNxvfhf5oKWEYvdaPsmmTtldG+jRUL2etpT9D
Z7VmJtauFfu0diwEQIAGwp8j27whVslqWUy5kDB4kWZTGa7n+AOnfPYCXXTJSbtltDDkZGg96/xFen/R F1bsSM3TAq7wehZjZmLsWohPY8fsAOvgJszvI2wOiFGyGBZTJiQAz8KsM8PWHLdglQcv0FmVnLQbQUND
ijnw0h5Oumev0D/MwWgSesgsdA1jXbNh2NZ2d/dE9k8XtUXv/0V8HnYhPGf0+SIlgqKbc3l/3JnXzq3f qMeNEw1fpDdnUYTES1s46Q5eob/pg1EndJSZ6RrGsqTDsK7t+voOV3fr2kDfuzfoa6vHDpu9A3rzzhPN
Nw+uaIxmJTk2RvWIk4rxLJzZL3/neqf6N1d+ujcXusNZQTz+/2b8EwAA//8cq67XkREAAA== 5SPuCHBuyuT3O/2wuXKj5ZPNDx16GGozfX+POC4oz/2a+XIYl+OThgFBgvfUS3Ya0pJ082JD68ekQIzQ
Co/8pFBR3GYt7nBNgV3KcXlY4ohgrJx6CPtkzCQ7+thX3uRQhWFQgzEKK+vct+j0Klhz8Cmp5x4O/0Kz
zuD/PRpJN5+iEXLnz5N1UEv/BuPG9t/bOSMYutkb65G9wWn7DT2DkrhP6PxwE6r8yxbZpcpQT3DknwAA
AP//znRJ1pITAAA=
`, `,
}, },
@ -323,27 +326,28 @@ H4sIAAAAAAAC/wEAAP//AAAAAAAAAAA=
"/assets/js/gjvote.js": { "/assets/js/gjvote.js": {
local: "assets/js/gjvote.js", local: "assets/js/gjvote.js",
size: 3561, size: 3874,
modtime: 1517696170, modtime: 1517841211,
compressed: ` compressed: `
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
`, `,
}, },
@ -11942,67 +11946,69 @@ NeurW5vrS2g3c+5HAAAA//8MM1iJSgMAAA==
"/templates/admin-clients.html": { "/templates/admin-clients.html": {
local: "templates/admin-clients.html", local: "templates/admin-clients.html",
size: 1023, size: 1173,
modtime: 1517696170, modtime: 1529329301,
compressed: ` compressed: `
H4sIAAAAAAAC/5RTTYvbMBC951cMJsc6gh6LIigNhdAS9tA99DjxjGOBIgV51iWI/Pcif2zjbLJlcwjz H4sIAAAJbogA/5RUwYrbMBC95ysGkUMLdQQ9FsWwNJfQsuyhe+hxEo0TgSwZSesSlv33jqI4jd1smwRi
8UZ+b/SUEtgafBBY/eLjyaHwBgVX35xlLy1cLgtNtoPKYduui/aEFZcdR7EVusLsAiCRFRs8OqjGoQY7 xqN5M8/znv36CqYB5xMsflDbWUy0woSLr9aQSxHe3mZKmx62FmNcitjhlqqeQjJbtKJ+9IBam2S8Q8tF
hj2zB3yRhn0GC5NWZDuzSAnYtdwfLbh3DJbWxThb9pXi9XshDpDTS+TyNiz3IRJHJqjYC8fCLAC0NIyU BbTHnmBD5ABf0p5TXJxIK8md6hmPJBvp2DrhxhIYvRQnbHXMiPM8H0pJ9xKomobVxgdNgTRsGUtB1DMA
o/zTEqdwSBvzPVr25M6wwyNrJc0tYNAO28295k9sBX748MfD9uke4Otc8lvAdU2rgV+ujay17AOdJ0BK xRNR5yj/VApDWG739QNzUpKDSf4RW7qSH6h4Zw+VxbAjUZftwHp1Y/13jAm+Of/LwfrpRszDeHV/MBwf
ENEfGJb2Eyw7+LJ+eFHwSDKZlGDZrbJeuFy0EroPeH7ebt4FbJ8et22dEVl95vKbW/h30bALfebpwfxV nynnTk+q0sbrw1DACw7odgRz8wnmPXxZvisuvLcmfXl7bMk2mfeLzCord3moEPaBmqWQqFvj5ElKySBG
2mueHTZraoQmcr0uFNLRejX6Rs0UKOLsvFcbnaI9YjwXRtupVCPUWH7OfxIOB8dl8IXRyhqt8A2fybAf PD+vV4yQmrIZzsp2wbQYDqJWZkg1CA1Wn/Ml+d2O9fWOz6XhP/7FZ/DQ/UxGPCgEH/7Domn+QcPpMQuW
ZzLjwTGG+B8Wdf0OjX6B17u72uXkpVusVqOjtOpfzfACh+7fAAAA///E71UP/wMAAA== RU93WeZng3Gt6kZyxxYtv0kfRhw/KtnVVzpdM8oIeBdm/XQXYuQA+EnxQgbgL8F5G5ctB7dO18X54lkO
8rtcvgvl9HcAAAD//w5BhnqVBAAA
`, `,
}, },
"/templates/admin-editteam.html": { "/templates/admin-editteam.html": {
local: "templates/admin-editteam.html", local: "templates/admin-editteam.html",
size: 13682, size: 13866,
modtime: 1517696170, modtime: 1529328971,
compressed: ` compressed: `
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
`, `,
}, },
@ -12027,14 +12033,14 @@ tlNKdgYAAA==
"/templates/admin-games.html": { "/templates/admin-games.html": {
local: "templates/admin-games.html", local: "templates/admin-games.html",
size: 507, size: 592,
modtime: 1517696170, modtime: 1529329086,
compressed: ` compressed: `
H4sIAAAAAAAC/3SRvW7DMAyE9zzFwcjY2HsheyrQLUvzArR1jQ3YUiCpBgrB715I6k/aNNuJH0kdyRgx H4sIAAAJbogA/3RRQW/zIAy991dYqMcvzf0T5TRpt162P2CKl0QiEAGLFFX97zPQqE3XXdCz3zN+ti8X
vcLYgPrE5TJL4JMEqU+UxWPbdkpPa3e0OMtCj1FWoicNBkcJ1KpJfBcjOHvmgiD9TEy6rXLNIb8rDLN4 GL7A+QSHTxoni4neMCEHOEa4XnfSDLM6eehwpAg9zgSayME5EGuNbDO/42/IRioFCbUlGMxRlJqmxALO
31beupJweXM8/JWH3jpNR42BJtBV3Q5QYaTopJJ2ReRw9ywLcZSFqgnjNUj+/wUvgyONH23wP0g1pW2K FmM8iuhDFUzfgZpn2GgfDAUycCaXKAi1A5CpJzQZZRwqKGn1zh3gxI9sOboTazfv7NJYDB0JlUd6pVUf
fH6lQm/1e8Exwok5E/vpAfsVj+2dbeHWo+5ixH6tk9M6GcK2qSbo24z7cKb5bnHl/1fy1wjZLY1Op8jR PAu52PsU7xSj0ilnbt1l0t4sleaBA7qOYD/8g/0M/49/LBB+2zaKq/fzIZs/ZEMsk9PGchzRWqH0InWA
MoZq8n7LpQr9CAAA//9TakiY+wEAAA== 9qZfpe2k2JV5+PDVuE81G30mLR9xNfGwgY14XUKZl5zJ9y3ZuggG+Wj1/JX9CQAA//9YnNSjUAIAAA==
`, `,
}, },
@ -12054,17 +12060,17 @@ vh6n2F5nK55X3h/q0K8AAAD//5F9arwmAwAA
"/templates/admin-main.html": { "/templates/admin-main.html": {
local: "templates/admin-main.html", local: "templates/admin-main.html",
size: 1541, size: 1534,
modtime: 1517696170, modtime: 1529324657,
compressed: ` compressed: `
H4sIAAAAAAAC/6yTT4/aMBDF7/spphESlybZP7dViISo1FP/aEvb85AMibXOmNqTIITy3SsnAUGX7SKW H4sIAAAJbogA/6xTTW/bMAy991dwRoBcJrvtboVtIMiAnfaBrtvOis3YQmUpk2QHQdH/Psqyg2RN28Dt
C0OS5+fn+Y2TXDWQaXRuEmSGhViC9AbAv/cVICkf0u/1QqsMvpickrh8GD4sahHDYDjTKnueBGvFuVlH xbLIp6dHPiotRQeF5NZmUZRfAPiAX+mv/pT/aFdSFPBVl5gmtA+JVeucVqBVQcn7LNoKVeptLHXBndAq
2mQoynBUWlpOxjHmleK4MjnFt+Ngt9mqthT2DqGYotAULpV1AgcfYLsFtQT6A1GfwAeAW2jbw9Urqyq0 rg2us3nCy0aopKGzyeU8Gm/ZtAZZYGBOV5VEthbGOjhIwMMDiDXgX4iDAi8ALuHx8fD0xoiGmx1hUZWU
m+0WiHNo2yD9jUoUF0ncKy6Oe/ffuBrPSXv3Ztpf5t+wSTx0P/kQhi9gTLU2a8qhXwdzspVi1O5SMlhL i/I/XDihqjQJiMlyr16US4kz1F69qva3/l9smgzdTz8w9sSMhZR6iyWEc3CHhgRzaac6w1tXv9GdBVGc
+U4601rKM9l8Y70BrycWlaFQDjOtiMW9B9f+DBcj2x/hbWBT3gyZYYbsOdBJemHof1+digHsLq4lV2tx 6c13JXfg8aicIDlUyFIK2ti32LWvYbJl+xJeN2yhdoNmWHLlfcCT7jHmv89OxWDsKNegbaWzrNDKcaHQ
ob+FqJhsfw/L+3RWW+s3e+oVSVzeD8YWuSAYqY8wauBxAtGcqpVGoU8o2G9xqBMvlE45aqI5YeV2ok42 hHdYX+fL1hh/2W1AkM/XA7HhqkKYiY8w6+Amg/gOm42kpn7mjocrDnHOA12PnHWE5Y0dQT2Mgrdc3VPs
aqIn5Gdo28fuUZroK1YEbZssLMTpzq5vxM3x//2xj14eT65nBT8o8wBPzOtLcMGZ/Bsj5MbdXaJXBuly pt+6Lv7GG6R9ujKQ5CNdaMTF8f++7KPg8eR6r+AnFt7AE/P61LjoTP878sDO+7eEzwzSdHLnG0XkfcPe
c/GNGgdp17BrmxdYdck/+3pt89qR9eY/fT0xo0P5GwAA//8pWoRoBQYAAA== m7yiBnvyL359b/LWovHkv/x6YkaH5V8AAAD//6BFHFz+BQAA
`, `,
}, },
@ -12079,17 +12085,17 @@ H4sIAAAAAAAC/wEAAP//AAAAAAAAAAA=
"/templates/admin-teams.html": { "/templates/admin-teams.html": {
local: "templates/admin-teams.html", local: "templates/admin-teams.html",
size: 1090, size: 1248,
modtime: 1517696170, modtime: 1529326977,
compressed: ` compressed: `
H4sIAAAAAAAC/5xT0arbMAx971eI0Melfh+u4cKFMdju070foETqjZnjBFvNGCH/Pmw3W1vSjS1Pknws H4sIAAAJbogA/5xTzW7bMAy+5ykII8c5ug+KgAEFhgFbT+0D0BYTC9OPISkZiqLvPkq2u6R1sWw+kTS/
6Zwca7ITtA5jPFbNIDL0dRyxZWjZC4fK7AA0gqVj1Yh/Inpl7Kv1xngOXDdnkcHDVVzHc9tyjBV0gU/H jz/iJ7U5Q28xpX3ThZyDa9OIPUFPPlNs1AZAIhjNv7P/ovUDoWsWxHiK1HYnhnm4sNt06ntKqYEh0mHf
SiH11ith7KPy/L0y2q4tTggnrEd3jpXRyhp4IoI0RCs0O63ITmY3z2BP4AeBwyv3o0PhZxQ8JFyEZdkl CNTOeJEZmoSnX42SZqE4IBywHe0pcVQYBVwDShEpUG2k4P7U5vkZzAF8yLB7IDdazHSHGXclL8HLy6aM
GuZlgDwCOpwYGmYPbWAUpt9t2EXOFwQbx5lXvlPn/BexOIQCyKzuw7oZAnFgulFJOkZKUfq0hDUsaWde oe4D1BIw4JmgI/LQR+Jc/YeGbKIKyNhZqnNVTFv918FSiFNCneqt2XYhaoqkr7aUB0JdrPLJHBdzcgd1
sGetpLuvf0WP79yzF/hi/bdNCPcNh7h19OlB1+uaVmWbVLvsqKUZ6McKmGcI6N8Z9vYD7Cf4eHwgNDyi j46kYOM6vpQM3j61FuORGvUDPR7JMTl8N/7nrShyHcV0Y/bX9XbUZYztOkaJzcPJ3AX9tCTwRiP6I8HW
R2aeYT8dEklYFq2E7gEaVzskxVXBv719foZlqcxNmv79Vot5Bsc+AS+KPBhVmiVp/rTQVZpNvmHWm60U fILtGT7vP3gh+GgvWjHH9rwr2+E8OV71mhxa28wppePXPDGWTvUbsrVB+XznMywvLSaux8dvd0yzUM9u
k5W/en90aP2Gw9m31hWPZ2v/63Bix8L/O14Cxm5z+rUyq1EunmBP6a3kerGLVvkBlKdUTn8GAAD//1lQ ubkbWRln+cAYO6+9wm+FvpvmHfDSrRJckdJV74K0yX9VJr+M8Sv6I98bOymwCu9fi2uylOl/y+eIaVit
SRlCBAAA frmZ5RrnwyOvi5JrfLpJNoo8J6FPf38HAAD//zs8r8zgBAAA
`, `,
}, },
@ -12111,16 +12117,16 @@ GXvy3PwYKZ6fyZHhEKvyv82bVJmo3N8XAPZYvcMb01mHkXzjyL9wpz4sHABCwHMXXoE7Wthy9p3rhfjJ
"/templates/admin-votes.html": { "/templates/admin-votes.html": {
local: "templates/admin-votes.html", local: "templates/admin-votes.html",
size: 848, size: 881,
modtime: 1517696170, modtime: 1529325858,
compressed: ` compressed: `
H4sIAAAAAAAC/3xSTW/bMAy9+1cQRo6LBXS3ghEwpJdediiC3RWJrYXJkiExBobC/32QbEdLm/XGj0fy H4sIAAAJbogA/3xSwW7bMAy95ysII8c5BrZboQgY0ksvOxTB7rLFJsJkyZAYA0XRfx8l2VWSdT2FfHn0
8ZFo7ATaqZQObaR0cZz2OnhW1lNsZYP9gzxeYiTP8LLkUfQPsnl/h6j8G8HOfoPdBI8H6E40jE4xPSlW e3yU0GaGwaoY903AeLEU28E7UsZhaORGnL/LwyUEdATP5X/RMbZ5e4Og3Alha77BdoaHPeyOOE5WET4q
3YqGeW4AKpoznAt+N3UnUsMKKaDd1L0o/xvm+bG4PHU/1UAwz3iOIOTSirzJNdVCYewkG2R1dgTWHNop UruFDe/vG4DKpkSnzN/OPKHGhZJJDD0r94eRh9zSvPulRuRe9AE6WT6FTqeZWomO12CzpHqLYPS+mT1h
MKV98dttvxTiAhgvkfYfzf05REORDGjyXJYHQO5JGVnoIcfFKGF5sgMlVsOIgvt/E0dns1rPTx8TeTPr bHPfrPtFHwphugRs78u290FjQA0DL5uXBxB0RqVlticolCLD8mhGFB0XV1jybtwp3uGrAe/sa2tVOGEj
31KNo1h65sg6B/kczB+5CfK1xj+c+5UX3RS8oWjkIuiVaFZRsPmMWBg/mzuA1QTA4KpTienMTG/nPPbB D9akTJ8eK5errJCQRVVQ7/WrXOP5OvGf1v5Oa6953hjWssSbbEdS45Qy7UhfM5aSG29rU3WHJDystzuc
6kpnrXS2zNH1lsLZm2brGa8Vog6rhDaxbitQXAVDfg2B7xzLbB/g6JVb0MGlUflD+73NxBz5/8sKp8DK vRmq2jJpTRYa6uE6hq4/ttzsY6KrYneGPsutbFHSe9I3S6z53aowumYo6MV7+uSaH0oWX4jfi7dxUm7f
QXE/U0GxjkRRfkg2fwMAAP//DHOOx1ADAAA= /Mh6Ft3/k4ajJ2Uht/9a4d8iyUV6ZHLzNwAA//+9mrcmcQMAAA==
`, `,
}, },

View File

@ -1,7 +1,3 @@
div.content {
margin-left: 150px;
}
div.bottom-space { div.bottom-space {
margin-bottom: 15px; margin-bottom: 15px;
} }

View File

@ -312,21 +312,46 @@ input.larger {
background-color: #229af9; background-color: #229af9;
color: #FFFFFF; color: #FFFFFF;
} }
.content {
margin-left: 75px;
}
} }
/* Small Screens */
@media screen and (max-width:35.5em) { @media screen and (max-width:35.5em) {
div.pure-control-group label.control-label { div.pure-control-group label.control-label {
text-align: left; text-align: left;
} }
.only-large {
display: none;
}
.only-small {
display: default;
}
.team-management-buttons {
text-align:left;
}
.team-management-buttons>.pure-button {
margin-top: 1em;
}
} }
@media screen and (max-width:64em) and (min-width: 48em) { /* Starting at Small, horizontal */
@media screen and (min-width: 35.5em) {
div.content {
margin-left: 150px;
}
div.pure-control-group label.control-label { div.pure-control-group label.control-label {
text-align: left; text-align: left;
} }
.only-small {
display: none;
}
} }
/* Small Horizontal to Medium */
@media screen and (min-width: 35.5em) and (max-width: 48em) { }
/* Medium Screens */
@media screen and (min-width: 48em) and (max-width:64em) { }
/* Larger Screens */
@media (min-width: 64em) { }

View File

@ -1,15 +1,4 @@
function toggleAdminPanel() { (function(){
var menu = document.querySelector('#menu');
if(menu.classList.contains('hidden')) {
document.querySelector('#layout>.content').style.marginLeft='150px';
menu.classList.remove('hidden');
} else {
document.querySelector('#layout>.content').style.marginLeft='0';
menu.classList.add('hidden');
}
}
document.onkeydown = function(evt) { document.onkeydown = function(evt) {
evt = evt || window.event; evt = evt || window.event;
var isEscape = false; var isEscape = false;
@ -22,6 +11,26 @@ document.onkeydown = function(evt) {
toggleAdminPanel(); toggleAdminPanel();
} }
} }
document.querySelector('.menu-button').onclick = function() {
var mnu = document.querySelector('#menu .menu-container');
if(mnu.style.display == 'inline-block') {
mnu.style.display = 'none';
} else {
mnu.style.display = 'inline-block';
}
}
})()
function toggleAdminPanel() {
var menu = document.querySelector('#menu');
if(menu.classList.contains('hidden')) {
document.querySelector('#layout>.content').style.marginLeft='150px';
menu.classList.remove('hidden');
} else {
document.querySelector('#layout>.content').style.marginLeft='0';
menu.classList.add('hidden');
}
}
function showModal(options) { function showModal(options) {
var modal = document.getElementById('modal-overlay'); var modal = document.getElementById('modal-overlay');

View File

@ -136,7 +136,7 @@ func main() {
}() }()
fmt.Printf("Listening on port %d\n", m.site.Port) fmt.Printf("Listening on port %d\n", m.site.Port)
log.Fatal(http.ListenAndServe("127.0.0.1:"+strconv.Itoa(m.site.Port), chain)) log.Fatal(http.ListenAndServe(m.site.Ip+":"+strconv.Itoa(m.site.Port), chain))
} }
func loadConfig() { func loadConfig() {
@ -154,6 +154,9 @@ func loadConfig() {
case "-title": case "-title":
m.site.Title = val m.site.Title = val
fmt.Print("Set site title: ", m.site.Title, "\n") fmt.Print("Set site title: ", m.site.Title, "\n")
case "-ip":
m.site.Ip = val
fmt.Print("Set site IP: ", m.site.Ip, "\n")
case "-port": case "-port":
var tryPort int var tryPort int
var err error var err error

View File

@ -12,6 +12,7 @@ import (
*/ */
type siteData struct { type siteData struct {
Title string Title string
Ip string
Port int Port int
SessionName string SessionName string
ServerDir string ServerDir string
@ -32,6 +33,7 @@ type siteData struct {
func NewSiteData(m *model) *siteData { func NewSiteData(m *model) *siteData {
ret := new(siteData) ret := new(siteData)
ret.Title = "ICT GameJam" ret.Title = "ICT GameJam"
ret.Ip = "127.0.0.1"
ret.Port = 8080 ret.Port = 8080
ret.SessionName = "ict-gamejam" ret.SessionName = "ict-gamejam"
ret.ServerDir = "./" ret.ServerDir = "./"
@ -65,6 +67,9 @@ func (s *siteData) LoadFromDB() error {
if title, _ := s.m.bolt.GetValue(s.mPath, "title"); strings.TrimSpace(title) != "" { if title, _ := s.m.bolt.GetValue(s.mPath, "title"); strings.TrimSpace(title) != "" {
s.Title = title s.Title = title
} }
if ip, err := s.m.bolt.GetValue(s.mPath, "ip"); err == nil {
s.Ip = ip
}
if port, err := s.m.bolt.GetInt(s.mPath, "port"); err == nil { if port, err := s.m.bolt.GetInt(s.mPath, "port"); err == nil {
s.Port = port s.Port = port
} }
@ -97,6 +102,9 @@ func (s *siteData) SaveToDB() error {
if err = s.m.bolt.SetValue(s.mPath, "title", s.Title); err != nil { if err = s.m.bolt.SetValue(s.mPath, "title", s.Title); err != nil {
return err return err
} }
if err = s.m.bolt.SetValue(s.mPath, "ip", s.Ip); err != nil {
return err
}
if err = s.m.bolt.SetInt(s.mPath, "port", s.Port); err != nil { if err = s.m.bolt.SetInt(s.mPath, "port", s.Port); err != nil {
return err return err
} }

View File

@ -4,20 +4,16 @@
<table id="clients-table" class="sortable pure-table pure-table-bordered center"> <table id="clients-table" class="sortable pure-table pure-table-bordered center">
<thead> <thead>
<tr> <tr>
<th>Friendly Name</th> <th>Auth</th>
<th>Client ID</th> <th>Name</th>
<th>Last Known IP</th> <th class="only-large">Client ID</th>
<th>Authenticated</th> <th class="only-large">Last Known IP</th>
<th></th> <th class="only-large">Authenticated</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{ range $i, $v := .TemplateData.Clients }} {{ range $i, $v := .TemplateData.Clients }}
<tr> <tr>
<td>{{ $v.Name }}</td>
<td>{{ $v.UUID }}</td>
<td>{{ $v.IP }}</td>
<td>{{ if $v.Auth }} Yes {{ else }} No {{ end }}</td>
<td> <td>
{{ if $v.Auth }} {{ if $v.Auth }}
<a href="/admin/clients/{{ $v.UUID }}/deauth" class="primary"><i class="fa fa-2 fa-toggle-on"></i></a> <a href="/admin/clients/{{ $v.UUID }}/deauth" class="primary"><i class="fa fa-2 fa-toggle-on"></i></a>
@ -25,6 +21,10 @@
<a href="/admin/clients/{{ $v.UUID }}/auth" class="error"><i class="fa fa-2 fa-toggle-off"></i></a> <a href="/admin/clients/{{ $v.UUID }}/auth" class="error"><i class="fa fa-2 fa-toggle-off"></i></a>
{{ end }} {{ end }}
</td> </td>
<td>{{ $v.Name }}<p class="only-small">({{ $v.UUID }})</p></td>
<td class="only-large">{{ $v.UUID }}</td>
<td class="only-large">{{ $v.IP }}</td>
<td class="only-large">{{ if $v.Auth }} Yes {{ else }} No {{ end }}</td>
</tr> </tr>
{{ end }} {{ end }}
</tbody> </tbody>

View File

@ -1,10 +1,10 @@
{{ $uuid := .TemplateData.UUID }} {{ $uuid := .TemplateData.UUID }}
<div class="center"> <div class="center">
<div> <div class="team-management-buttons">
<h3>Team Management</h3> <h3>Team Management</h3>
<button id="edit-team-button" onclick="javascript:gotoTeamTab();" class="pure-button-toggle-first pure-button pure-button-primary">Team Details</button> <button id="edit-team-button" onclick="javascript:gotoTeamTab();" class="pure-button-toggle-first pure-button pure-button-primary">Team Details</button><br class="only-small" />
<button id="edit-game-button" onclick="javascript:gotoTeamGameTab();" class="pure-button-toggle-middle pure-button">Game Details</button> <button id="edit-game-button" onclick="javascript:gotoTeamGameTab();" class="pure-button-toggle-middle pure-button">Game Details</button><br class="only-small" />
<button id="edit-team-members-button" onclick="javascript:gotoTeamMemberTab();" class="pure-button-toggle-last pure-button">Team Members</button> <button id="edit-team-members-button" onclick="javascript:gotoTeamMemberTab();" class="pure-button-toggle-last pure-button">Team Members</button><br class="only-small" />
</div> </div>
<div id="edit-team-tab" class="left"> <div id="edit-team-tab" class="left">
<form class="pure-form pure-form-aligned" action="/admin/teams/{{ $uuid }}/save" method="POST"> <form class="pure-form pure-form-aligned" action="/admin/teams/{{ $uuid }}/save" method="POST">
@ -16,10 +16,10 @@
<input id="teamname" name="teamname" value="{{ .TemplateData.Name }}" placeholder="Team Name"> <input id="teamname" name="teamname" value="{{ .TemplateData.Name }}" placeholder="Team Name">
</div> </div>
</div> </div>
<div class="pure-control-group reset-pull"> <div class="pure-control-group team-management-buttons">
<a href="/admin/teams" class="pull-left space pure-button pure-button-plain">Cancel</a> <a href="/admin/teams" class="pure-button pure-button-plain">Cancel</a>
<button type="submit" class="pull-right space pure-button pure-button-primary">Update Team</button> <button type="submit" class="pure-button pure-button-primary">Update Team</button>
<button type="button" id="btnDeleteTeam" class="pull-right space pure-button pure-button-error">Delete Team</button> <button type="button" id="btnDeleteTeam" class="pure-button pure-button-error">Delete Team</button>
</div> </div>
</fieldset> </fieldset>
</form> </form>
@ -73,9 +73,9 @@
<thead> <thead>
<tr> <tr>
<th>Name</th> <th>Name</th>
<th>Slack ID</th> <th class="only-large">Slack ID</th>
<th>Twitter</th> <th class="only-large">Twitter</th>
<th>Email</th> <th class="only-large">Email</th>
<th>Remove</th> <th>Remove</th>
</tr> </tr>
</thead> </thead>
@ -83,9 +83,9 @@
{{ range $i, $v := .TemplateData.Members }} {{ range $i, $v := .TemplateData.Members }}
<tr> <tr>
<td>{{ $v.Name }}</td> <td>{{ $v.Name }}</td>
<td>{{ $v.SlackId }}</td> <td class="only-large">{{ $v.SlackId }}</td>
<td>{{ $v.Twitter }}</td> <td class="only-large">{{ $v.Twitter }}</td>
<td>{{ $v.Email }}</td> <td class="only-large">{{ $v.Email }}</td>
<td> <td>
<form action="/admin/teams/{{ $uuid }}/deletemember" method="POST"> <form action="/admin/teams/{{ $uuid }}/deletemember" method="POST">
<input type="hidden" name="memberid" value="{{ $v.UUID }}"/> <input type="hidden" name="memberid" value="{{ $v.UUID }}"/>

View File

@ -5,15 +5,15 @@
<thead> <thead>
<tr> <tr>
<th>Game Name</th> <th>Game Name</th>
<th>Team Name</th> <th class="only-large">Team Name</th>
<th>Screenshots</th> <th>Screenshots</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{ range $i, $v := .TemplateData.Teams }} {{ range $i, $v := .TemplateData.Teams }}
<tr> <tr>
<td>{{ $v.Game.Name }}</td> <td>{{ $v.Game.Name }}<p class="only-small">by<br />{{ $v.Name }}</p></td>
<td>{{ $v.Name }}</td> <td class="only-large">{{ $v.Name }}</td>
<td>{{ len $v.Game.Screenshots }}</td> <td>{{ len $v.Game.Screenshots }}</td>
</tr> </tr>
{{ end }} {{ end }}

View File

@ -1,4 +1,4 @@
<div class="content"> <div class="">
<div> <div>
<h3>Public Mode</h3> <h3>Public Mode</h3>
<button onclick="window.location.href='/admin/mode/0'" class="pure-button-toggle-first pure-button {{ if eq .PublicMode 0 }}pure-button-primary{{ end }}">Waiting</button> <button onclick="window.location.href='/admin/mode/0'" class="pure-button-toggle-first pure-button {{ if eq .PublicMode 0 }}pure-button-primary{{ end }}">Waiting</button>

View File

@ -8,19 +8,19 @@
<thead> <thead>
<tr> <tr>
<th>Name</th> <th>Name</th>
<th>Management Link</th> <th class="only-large">Management Link</th>
<th>Members</th> <th class="only-large">Members</th>
<th>Game</th> <th class="only-large">Game</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{ range $i, $v := .TemplateData.Teams }} {{ range $i, $v := .TemplateData.Teams }}
<tr> <tr>
<td>{{ $v.Name }}</td> <td>{{ $v.Name }}<p class="only-small">{{ $v.Game.Name }}</p></td>
<td><a href="/team/{{ $v.UUID }}">{{ $v.UUID }}</a></td> <td class="only-large"><a href="/team/{{ $v.UUID }}">{{ $v.UUID }}</a></td>
<td>{{ len $v.Members }}</td> <td class="only-large">{{ len $v.Members }}</td>
<td>{{ $v.Game.Name }}</td> <td class="only-large">{{ $v.Game.Name }}</td>
<td> <td>
<a href="/admin/teams/{{ $v.UUID }}/edit" class="pure-button pure-button-plain"><i class="fa fa-pencil"></i></a> <a href="/admin/teams/{{ $v.UUID }}/edit" class="pure-button pure-button-plain"><i class="fa fa-pencil"></i></a>
<a href="/admin/teams/{{ $v.UUID }}/delete" class="pure-button pure-button-plain"><i class="fa fa-trash"></i></a> <a href="/admin/teams/{{ $v.UUID }}/delete" class="pure-button pure-button-plain"><i class="fa fa-trash"></i></a>

View File

@ -9,16 +9,15 @@
<table id="votes-table" class="sortable pure-table pure-table-bordered center"> <table id="votes-table" class="sortable pure-table pure-table-bordered center">
<thead> <thead>
<tr> <tr>
<th>Timestamp</th> <th>Time</th>
<th>Client ID</th>
<th>Rankings</th> <th>Rankings</th>
<th class="only-large">Client ID</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{ range $i, $v := .TemplateData.AllVotes }} {{ range $i, $v := .TemplateData.AllVotes }}
<tr> <tr>
<td>{{ $v.Timestamp }}</td> <td>{{ $v.Timestamp }}</td>
<td>{{ $v.ClientId }}</td>
<td> <td>
<ol> <ol>
{{ range $ci, $cv := $v.Choices }} {{ range $ci, $cv := $v.Choices }}
@ -26,6 +25,7 @@
{{ end }} {{ end }}
</ol> </ol>
</td> </td>
<td class="only-large">{{ $v.ClientId }}</td>
</tr> </tr>
{{ end }} {{ end }}
</tbody> </tbody>