Several good changes

* Add vote validation before submitting
* Show 'Saved Vote' after vote saved, fade out message
* Increase flash message size
* Randomize order of games in voting list (Issue #5)
* Embiggen ScreenShots on Click
This commit is contained in:
Brian Buller 2017-07-09 19:18:03 -05:00
parent 262c855643
commit 2fe197b99d
6 changed files with 204 additions and 98 deletions

176
assets.go
View File

@ -202,28 +202,28 @@ Y8Pj6dAeZ3gBzLZbhMnSW8r0f78+9y+zlDVuQ3ZNXD8zD+/mGzZjDfK53gEAAP//D/6XxHkAAAA=
"/assets/css/gjvote.css": {
local: "assets/css/gjvote.css",
size: 3784,
modtime: 1499536516,
size: 3812,
modtime: 1499642341,
compressed: `
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
`,
},
@ -318,22 +318,26 @@ H4sIAAAAAAAA/0rOzyvOz0nVy8lP11DydA5RcE/MTfVKzFVwTMnNzFPStOYCBAAA//8imS6KIgAAAA==
"/assets/js/gjvote.js": {
local: "assets/js/gjvote.js",
size: 2455,
modtime: 1498145831,
size: 3235,
modtime: 1499642977,
compressed: `
H4sIAAAAAAAA/6RWT0/jOhC/51OMysGJChF6lye1L0Lv8ZB2JUArwW21hzSeNqO6djd20o2g331lO0nT
0rRFywGI5/cnnhl7Mi9lZkhJMGqxEPgvX5H8lkoUYQRvAQBXWblCaeKfJRb1CwrMjCpCdrVCWbIozkSq
9SNpE3uBkOXEOUoWTYNtEAQdX8kl1lxtJCTQmoZYGW+DlYHE/X5/hw1JrjYxVijNNACo0gJIP+gsXaNl
p0KjXad5OFpiPQKS0ClBH2oN4iXWkCQw8qsj63CwPIqs3BZQaBwWuVccLeOvvz3cv0ELbN0/5tGDt0HQ
5VrnavOkeCpCtbYL2pPtPld2GZJd3hdoHgTaf/+rv/KQOcCNqrAQac2c+BmsISOQRTFJicUr/rKZbo1j
F4zu9h4no9EFsrqcnVRu4zvxdqXRp3mHnSletwk8Y2uhB5Z9lV4hD/SfFcfPeaTrNUp+n5PgH5V6LdDF
SmO6YgLMVRG61oUEbqdA8A8cIGOBcmHyKdB43LJ8G8yMnDaPHw2+04+Y9Es5W5HZ0cCS+p2TFZgabLYX
Mu3wvmPsz167n6enPWbz98hrufr2u+AwliSl5DgniTy6Y2wyhJsOe+QFzgcsbGjf4eqohcWdcMgEZcsB
Cxfb8+hus+hte8zMMU66pVoPuqVaX5AzhzvhsVaa3NVz3KYN7zsVtMjNUbsWPw2Crnf8kfzy+vTYP5ID
ZbX4tlcuwTY1P1NKi3SZeE5XVpnpdZohrMsCbzwF2Hgoe2N2PLjbqzfRMs2WsSBtUGIRdsfnTSqOk5mR
1+Am14S5wrPtdQcZao4G0B2wc9eTpx/cUDMjG4FtczU5dKxNLTCuSNOMBJna5sU9CWQW30xbnRVKiFcV
3l7DrR/e3bzKiaOfV382qIZfqPlo+Ow0a7qNXULsD449nrtvfUr/p+r8lrr02+TlJDDcseM5Fdq4grQ3
cy9Y4EpV2JTrKKf9VvgdAAD//3s8PKeXCQAA
H4sIAAAAAAAA/6xWUW/jNgx+z68gcg+y0dRwDxgGxPMdttsdNqC9Dbi+DXtQLDoWokieJadntPnvg2TZ
cRI7abH1oa3Fj/wokiKZ1zIzXEkwar0W+DPbcvknlSiCEJ5nADtawRZlDSkwldVblCb6p8aq+YYCM6Oq
gLyzchImMwCeB/YjygTV+p5rE2VKGsqlDkjBGUNJwtYuTJsTtFG1+eBUURoSRto0AqMtrdZc3mNuUnL3
Q1x+J4kzdMJY4Vbt8MBnQXtAofH/II7HSSljJ4yz/Ww266mU3GDD1JOEFLqQB7gzbTBwZyB1v19e4IlL
pp4i3KE0ic8A1591Rku02lRo9LGeb7CZA5fQW4Ih1BJEG2wgTWHens4tw8nx/DxEI0Y+KYZW4/2P/n7O
gw7YsZ9XUR+MvtJ0oZ4eFKMiUKU90INKs8fDUluj+SzQ/vtL8zsLiAPcqh1WgjZtpK9gDTcCSRhxKbF6
xO820h1x5IThx6PP5Xz+CrO6Xl203MkPxrsTb5/nPXalWHP2KsZpLfSEcmhlkMgT+18Vw7dx0LJEyT4V
XLBzS4MS6GW1MX0yAXJVBa50IYU4AQ4/wQkyEijXpkiA39x0Wm0ZrIxM/Oc5wV/874jrb/Vqy81BDazS
sHKyCqlBf72AaIdvK8b+HJX7dXU60PR/R9xy+R1WwaksTWvJMOcSWfiRkOUULpnmKCrMJyis6Jjh3SiF
xV1gyATPNhMUTnbE0Xez8Hk/RuY0LrJRrSfZqNaviJnDXeAoleau9YzTdOJjpoqvCzNK1+GT2ayvnfZJ
/vb4cD98khNptfiuVl6D9Tm/kkqLdJH4SrfWMtElzRDKusLbVgXIzVT0bsi48HDXlkRLmm0iwbVBiVXQ
P59nqRguV0YuwE2uJXGJJ/tFD5kqDg/oH9i19tSqn3SolZHewN63Jof2E3zHNV9xwU1j4+K+BLpJ7qet
ziolxKMK4gXEYXI0rwrOsJ1X/21QTTvkF4e3TjNfbeQ1isPBcaTn+m0b0l/57vqV+vDb4BVcYHDQjnJe
aeMS0nXmgbBdzHy6RnXOd4WCSibwi6C6eECt6RoHScjt8YXFlGrOMHKofj11X6P7aU4Zl+vDfqrRPPIt
qtoEOWX4R22GbizgfRzHIx6PYN/qcuushauSZnbnc063lWOPuGn6FcICUpjPQ3ju4HeJewCZkloJjIRa
B+SLu53n37Z+Ld2Tp1k4NPYB4rEI9F2+H5kjTrkeRTO4hTi6657zaED8U13A3TCIY9lOZv8GAAD//yHs
yEqjDAAA
`,
},
@ -12178,56 +12182,58 @@ AAD//1puW/YhAwAA
"/templates/public-voting.html": {
local: "templates/public-voting.html",
size: 10440,
modtime: 1499536431,
size: 10658,
modtime: 1499568691,
compressed: `
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
AA==
`,
},

View File

@ -136,6 +136,10 @@ img.thumbnail {
margin-bottom: 5px;
}
.large {
font-size: 18px;
}
.big-space {
margin: 10px;
}
@ -216,6 +220,22 @@ table tfoot {
text-align: center;
}
div#embiggenedScreenShot {
cursor: pointer;
background-color: #FFF;
}
div.fullscreen {
height: 100%;
width: 100%;
position: absolute;
top: 0px;
left: 0px;
text-align: center;
margin: auto auto;
z-index:1001;
}
@media (min-width: 40em) {
#menu {
width: 150px;
@ -244,7 +264,7 @@ table tfoot {
}
aside.flash {
margin-left: 150px;
font-size: 24px;
}
aside.flash.error {

View File

@ -1,5 +1,12 @@
function toggleAdminPanel() {
document.querySelector('#menu').classList.toggle('hidden');
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');
}
}
@ -64,3 +71,35 @@ function hideModal() {
buttonsDiv.removeChild(buttonsDiv.firstChild);
}
}
function setFlashMessage(msg, cls) {
var flash = document.querySelector('aside.flash');
flash.innerText = msg;
for(var i = 0; i < cls.length; i++) {
flash.classList.add(cls[i]);
}
flash.classList.remove('hidden');
flash.style.opacity=1;
handleFlashMessage();
}
function handleFlashMessage() {
var flash = document.querySelector('aside.flash');
if(flash.classList.contains('fading')) {
setTimeout(fadeOutFlashMessage, 1000);
}
}
function fadeOutFlashMessage() {
var flash = document.querySelector('aside');
var opac = flash.style.opacity;
if(opac == "") { opac = 1; }
if(opac > 0) {
setTimeout(function() {
flash.style.opacity = opac - 0.01;
fadeOutFlashMessage();
}, 10);
}
}
handleFlashMessage();

View File

@ -261,6 +261,7 @@ func InitPageData(w http.ResponseWriter, req *http.Request) *pageData {
if p.FlashClass == "" {
p.FlashClass = "hidden"
}
fmt.Println("Flash Message: " + p.FlashMessage + " (" + p.FlashClass + ")")
// Build the menu
if p.LoggedIn {

View File

@ -1,6 +1,8 @@
package main
import (
"fmt"
"math/rand"
"net/http"
"strings"
"time"
@ -12,10 +14,10 @@ func initPublicPage(w http.ResponseWriter, req *http.Request) *pageData {
}
func handleMain(w http.ResponseWriter, req *http.Request) {
page := initPublicPage(w, req)
page.SubTitle = ""
switch dbGetPublicSiteMode() {
case SiteModeWaiting:
page := initPublicPage(w, req)
page.SubTitle = ""
page.show("public-waiting.html", w)
case SiteModeVoting:
loadVotingPage(w, req)
@ -29,7 +31,17 @@ func loadVotingPage(w http.ResponseWriter, req *http.Request) {
Timestamp string
}
vpd := new(votingPageData)
vpd.Teams = dbGetAllTeams()
tms := dbGetAllTeams()
// Randomize the team list
rand.Seed(time.Now().Unix())
for len(tms) > 0 {
i := rand.Intn(len(tms))
fmt.Println("Chose Team: " + tms[i].Name)
vpd.Teams = append(vpd.Teams, tms[i])
tms = append(tms[:i], tms[i+1:]...)
}
vpd.Timestamp = time.Now().Format(time.RFC3339)
page.TemplateData = vpd
page.show("public-voting.html", w)
@ -60,5 +72,6 @@ func handlePublicSaveVote(w http.ResponseWriter, req *http.Request) {
if newVote, err := dbGetVote(page.ClientId, timestamp); err == nil {
site.Votes = append(site.Votes, *newVote)
}
page.session.setFlashMessage("Vote Saved!", "success large fading")
redirect("/", w, req)
}

View File

@ -50,7 +50,7 @@
</table>
</div>
<div class="content half">
<form action="/vote">
<form action="/vote" onsubmit="return validateVote();">
<input id="uservote" type="hidden" name="uservote" value="" />
<input id="timestamp" type="hidden" name="timestamp" value="{{.TemplateData.Timestamp}}" />
<button class="pure-button pure-button-primary space-vertical pull-right" type="submit">Submit Vote!</button>
@ -62,13 +62,14 @@
<label class="control-label">Click to view original size</label>
<div class="center-all horizontal-scroll thumbnail-container" id="thumbnail-container">
{{ range $imgi, $imgv := $v.Game.Screenshots }}
<a href="javascript:embiggenScreenshot(this.getElementsByTagName('img')[0]);">
<img data-teamid="{{ $v.UUID }}" data-ssid="{{ $imgv.UUID }}" class="thumbnail" alt="{{ $imgv.Description }}" src="data:image/png;base64,{{ $imgv.Image }}" />
<a href="javascript:embiggenScreenshot('{{$imgv.UUID}}');">
<img id="{{ $imgv.UUID }}" data-teamid="{{ $v.UUID }}" data-ssid="{{ $imgv.UUID }}" class="thumbnail" alt="{{ $imgv.Description }}" src="data:image/png;base64,{{ $imgv.Image }}" />
</a>
{{ end }}
</div>
</div>
{{ end }}
<div id="embiggenedScreenShot" class="hidden fullscreen" onclick="javascript:document.getElementById('embiggenedScreenShot').classList.add('hidden');"></div>
{{ end }}
<script>
var teamNames = { };
@ -89,11 +90,34 @@ function showScreenshots(tmuuid) {
click: hideModal
}]
});
}
function embiggenScreenshot(img) {
var ss = document.getElementById(img);
if(ss == null) {
// Couldn't find the screenshot... Error
setFlashMessage('Error viewing that screenshot, sorry...', ['error','fading']);
return;
}
var container = document.getElementById('embiggenedScreenShot');
var clone = ss.cloneNode(true);
clone.classList.remove('thumbnail');
while(container.hasChildNodes()) {
container.removeChild(container.firstChild);
}
var clickToCloseMsg = document.createElement('div');
clickToCloseMsg.innerText = "Click Image to Close";
container.appendChild(clickToCloseMsg);
container.appendChild(clone);
container.classList.remove('hidden');
}
function validateVote() {
var isValid = (getRanked().length > 0);
if(!isValid) {
setFlashMessage('You must choose at least one game.', ['error','fading']);
}
return (getRanked().length > 0);
}
function updateView() {
@ -243,9 +267,12 @@ function getRanked() {
// 'tbl' should be either 'ranked' or 'unranked'
function gameTableToArray(tbl) {
var ret = [];
snack.wrap('#'+tbl+'-table>tbody>tr').each(function(ele, idx) {
ret = ret.concat(getTeamObj(ele.dataset.teamid));
});
var trs = snack.wrap('#'+tbl+'-table>tbody>tr')
if(trs[0].length > 0) {
trs.each(function(ele, idx) {
ret = ret.concat(getTeamObj(ele.dataset.teamid));
});
}
return ret;
}