"
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("
"+fields[1]+"
")
}
// Party.parties[rowID] = fields
// Party.view(fields[0])
// Nav.selectClass(Party.parties, rowID)
Main.saving = false
Party.currentID = fields[0]
Party.list()
},
};
var Users =
{
userlist: {},
hovering: true,
current: false,
allCount: 0,
userListIndex: [],
currentIdx: -1,
all: function ()
{
$('#userViewContainer').hide()
$('#userEditContainer').hide()
$('#partyEditContainer').hide()
$('#userListContainer').fadeOut(200)
$.get(URL.user.all,{},Users.allCallback)
},
allCallback: function (raw)
{
warn ("got all users")
var lines = raw.split("\n")
if (lines.shift() !== API_MAGIC)
{
warn("bad api: user all")
return
}
var partyUserList = [];
var guestHosts = [];
var editable = [];
var firstletter = "A";
Users.allCount = 0;
Users.userListIndex = [];
for (i in lines)
{
if (! lines[i])
continue
var fields = lines[i].split('\t')
// 0 id 1 group 2 name 3 email 4 blurb
// if (fields[1] !== currentHost)
// {
// currentHost = fields[1]
// partyUserList += "
invited by "+Auth.hosts[fields[1]]+"
"
// }
var a = fields[2].substr(0,1)
var li = "li id='r-"+Users.allCount+"'"
var userRow = "";
var editSpan = "";
if (firstletter !== a)
{
firstletter = a
li += " class='br'"
}
if (Auth.isHost || fields[0] === Auth.userID)
{
editSpan += "edit";
editable.push(fields[0]);
}
switch (fields[1]) {
case '2': // host
userRow = "<"+li+">"+fields[2]+" *" + editSpan + "";
break;
case '1': // guest host
userRow = "<"+li+">"+fields[2]+" *" + editSpan + "";
guestHosts.push(userRow);
Users.userListIndex.unshift('user-'+fields[0]);
Users.allCount += 1;
break;
default: // guest
userRow = "<"+li+">"+fields[2]+"" + editSpan + "";
}
partyUserList.push(userRow);
Users.userlist['user-'+fields[0]] = fields;
Users.userListIndex.push('user-'+fields[0]);
Users.allCount += 1;
}
$('#partyLocation').html("");
var guestHostHeader = "
Guest Hosts
";
var guestListHeader = "
Guest List
";
for (var i in guestHosts)
guestHosts[i] = guestHosts[i].replace("class='br'","").replace("*","");
// console.log(guestHosts);
// guestHosts[guestHosts.length-1] = guestHosts[guestHosts.length-1].replace("
Here\'s a tip! Use the up and down arrow keys to browse this list.').fadeIn(500)
$('#userViewContainer').html('');
for (id in Users.userlist)
{
$('#'+id).hover(Users.limousein, Users.limouseout)
$('#'+id).click(Users.liclick)
}
for (i in editable)
{
$('#edit-'+editable[i]).bind("click",Users.editClick)
}
Users.hovering = true
},
limouseout: function ()
{
if (Users.hovering)
$("#"+this.id).removeClass("selected")
},
limousein: function ()
{
if (Users.hovering)
{
$("#"+this.id).addClass("selected")
Users.view(this.id)
}
},
liclick: function ()
{
if (! Users.hovering && Users.current === this.id)
{
Nav.selectClass(Users.userlist, false)
Users.current = false
Users.hovering = true
}
else
{
Nav.selectClass(Users.userlist, this.id)
Users.view(this.id)
Users.hovering = false
}
},
viewIdx: function (idx)
{
var id = Users.userListIndex[idx]
if (isScrolledIntoView("#r-"+idx))
{
var offset = $("#r-"+idx)[0].offsetTop+5
if (offset > 300)
$("body").scrollTop( offset )
}
else
{
// get element at x,y
var element = document.elementFromPoint(30,180);
if (element.tagName === "UL")
element = document.elementFromPoint(30,190);
if (element.tagName === "UL")
element = document.elementFromPoint(30,200);
if (element.tagName === "SPAN")
id = element.id
}
Users.hovering = false
Users.view(id)
Nav.selectClass(Users.userlist, id)
},
view: function (id)
{
var user = Users.userlist[id]
var userRec = '';
// 0 id 1 group 2 name 3 email 4 blurb
var blurb = parse_blurb( atob ( user[4] ) )
userRec += "