diff options
Diffstat (limited to 'public/js/party.js')
| -rw-r--r-- | public/js/party.js | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/public/js/party.js b/public/js/party.js new file mode 100644 index 0000000..b4984f9 --- /dev/null +++ b/public/js/party.js @@ -0,0 +1,182 @@ +var Party = + { + parties: {}, + currentID: -1, + partyData: '', + liclick: function () + { + Nav.selectClass(Party.parties, this.id) + var id = this.id.split("-")[1] + warn("viewing party "+id) + Party.view(id) + }, + list: function() + { + $('#partyListContainer').fadeOut(200) + $('#partyEditContainer').hide() + $('#userListContainer').hide() + $('#userEditContainer').hide() + $('#userViewContainer').hide() + $.get(URL.party.list,{},Party.listCallback) + }, + listCallback: function (parties) + { + warn("got party list") + var partyList = "" + if (Party.currentID != -1) { + var firstPartyID = Party.currentID + } + parties.forEach(function(party){ + if (! firstPartyID) { + firstPartyID = party.id + } + partyList += "<li id='party-"+party.id+"'>"+party.date+"</li>" + Party.parties["party-"+party.id] = party + }) + + $('#partyList').html(partyList) + $('#partyListContainer').fadeIn(200) + for (id in Party.parties) { + $('#'+id).click(Party.liclick).data('party', Party.parties[id]) + } + Nav.selectClass(Party.parties, "party-"+firstPartyID) + if (firstPartyID) + Party.view(firstPartyID) + }, + view: function(id) + { + $('#userViewContainer').hide() + $('#userEditContainer').hide() + $('#partyEditContainer').hide() + $('#userListContainer').fadeOut(200) + Party.partyData = $(this).data('party') + $.get(URL.party.view, {'id':id}, Party.viewCallback) + }, + viewCallback: function (users) + { + var partyUserList = "" + var partyLocationTag = "" + var editable = [] + var currentHost = -1 + + users.forEach(function(user){ + var fields = lines[i].split('\t') + + // 0 id 1 group 2 name 3 email 4 blurb + partyUserList += "<li><span class='view' id='user-"+ user.id +"'>"+ user.name +"</span>" + if (Auth.isHost || user.id === Auth.userID) { + partyUserList += "<span class='edit' id='edit-"+user.id+"'>edit</span>" + editable.push(user.id) + } + partyUserList += "</li>" + Users.userlist['user-'+user.id] = user + }) + + partyLocationTag = Party.partyData.location + Party.currentID = Party.partyData.id + Party.partyData = partyData + $('#partyLocation').html(partyLocationTag) + $('#userList').html(partyUserList) + if (Auth.isHost) { + $('#user-add').show() + $('#party-edit').show() + } + $('#userListContainer').fadeIn(200) + $('#userViewContainer').show() + for (id in Users.userlist) { + $('#'+id).hover(Users.limousein, Users.limouseout).click(Users.liclick).data('user', Users.userlist[id]) + } + for (i in editable) { + $('#edit-'+editable[i]).bind("click",Users.editClick).data('user', Users.userlist[editable[i]]) + } + Users.hovering = true + }, + addClick: function () + { + warn("NEW PARTY FORM") + var id = "NEW" + var today = new Date() + $('#party-id').val(id) + $('#party-day').val(today.getDate()) + $('#party-year').val(today.getFullYear()) + $('#party-month option').attr("selected", false); + $('#party-month option[value="'+today.getMonth()+'"]').attr("selected", true); + $('#party-location').val("") + $('#partyEditContainer h2').html("New party") + $('#userListContainer').hide() + $('#userViewContainer').hide() + $('#userEditContainer').hide() + $('#partyEditContainer').show() + $('#party-location').focus() + Main.saveFunction = Party.editSave + Nav.selectClass(Party.parties, "") + }, + editClick: function () + { + var id = Party.currentID + // 0 id 1 date 2 location + var party = Party.partyData + var date = party[1].split("-") + $('#party-id').val(id) + $('#party-day').val(date[0]) + $('#party-year').val(date[2]) + $('#party-month option').attr("selected", false); + $('#party-month option[value="'+months[date[1]]+'"]').attr("selected", true); + $('#party-location').val(party[2]) + $('#partyEditContainer h2').html("Edit party") + $('#userListContainer').hide() + $('#userViewContainer').hide() + $('#userEditContainer').hide() + $('#partyEditContainer').show() + Main.saveFunction = Party.editSave + }, + editSave: function () + { + if (Main.saving) + return + Main.saving = true + warn("attempting save") + var data = + { + id: $('#party-id').val(), + userid: Auth.userID, + hostid: Auth.userID, + location: $('#party-location').val(), + month: $('#party-month').val(), + day: $('#party-day').val(), + year: $('#party-year').val(), + } + $('#partyEditContainer').fadeOut(200) + $.post(URL.party.edit, data, Party.editSaveCallback) + }, + editSaveCallback: function (raw) + { + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + warn("bad api: party save") + return + } + var result = lines.shift().split("\t") + if (result[0] === "ERROR") + { + warn("save error: "+result[1]) + return + } + var fields = lines.shift().split("\t") + var rowID = "party-"+fields[0] + if (result[0] === "OK") + { warn("party saved") } + else if (result[0] === "NEW") + { + warn("party created") + $("#partyList").append("<li id='"+rowID+"'>"+fields[1]+"</li>") + } + // Party.parties[rowID] = fields + // Party.view(fields[0]) + // Nav.selectClass(Party.parties, rowID) + Main.saving = false + Party.currentID = fields[0] + Party.list() + }, + }; |
