datatracker/static/js/agenda/timeslot_edit.js
Henrik Levkowetz a3c8adfdf6 Merged in the contents of commit [6337] from mcr@sandelman.ca, with some changes to take out dead code that inadvertently came back in.
- Legacy-Id: 6344
Note: SVN reference [6337] has been migrated to Git commit d0d1d949a9328da6c4e30d8f5e0d14ffb204e678
2013-10-02 21:53:28 +00:00

262 lines
7.2 KiB
JavaScript

/*
* timeslot_edit.js
*
* Copyright (c) 2013, The IETF Trust. See ../../../LICENSE.
*
* www.credil.org: Project Orlando 2013
* Author: Justin Hornosty ( justin@credil.org )
* Michael Richardson <mcr@sandelman.ca>
*
* This file should contain functions relating to
* determining what a given timeslot can be used for.
*
*/
//////////////-GLOBALS----////////////////////////////////////////
var meeting_objs = {}; // contains a list of session objects
var slot_status = {}; // the status of the slot, in format { room_year-month-day_hour: { free: t/f, timeslotid: id } }
var slot_objs = {};
var group_objs = {}; // list of working groups
var days = [];
var legend_status = {}; // agenda area colors.
var duplicate_sessions = {};
/********* colors ************************************/
var highlight = "red"; // when we click something and want to highlight it.
var dragging_color = "blue"; // color when draging events.
var none_color = ''; // unset the color.
var color_droppable_empty_slot = 'rgb(0, 102, 153)';
// these are used for debugging only.
var last_json_txt = ""; // last txt from a json call.
var last_json_reply = []; // last parsed content
var hidden_rooms = [];
var total_rooms = 0; // the number of rooms
var hidden_days = [];
var total_days = 0; // the number of days
/****************************************************/
/////////////-END-GLOBALS-///////////////////////////////////////
/* refactor this out into the html */
$(document).ready(function() {
init_timeslot_edit();
$("#CLOSE_IETF_MENUBAR").click();
});
/*
init_timeslot_editf()
This is ran at page load and sets up the entire page.
*/
function init_timeslot_edit(){
log("initstuff() ran");
setup_slots();
log("setup_slots() ran");
fill_timeslots();
resize_listeners();
static_listeners();
$(".delete_room").unbind('click');
$(".delete_room").click(delete_room);
$("#add_room").unbind('click')
$("#add_room").click(add_room);
$(".delete_slot").unbind('click');
$(".delete_slot").click(delete_slot);
$("#add_day").unbind('click')
$("#add_day").click(add_day);
}
function add_room(event) {
event.preventDefault();
var rooms_url = $(event.target).attr('href');
$("#add_room_dialog").dialog({
"title" : "Add new room",
buttons : {
"Cancel" : function() {
$(this).dialog("close");
}
}
});
$("#room_delete_dialog").dialog("open");
}
function delete_room(event) {
var clickedroom = $(event.target).attr('roomid');
var room_url = $(event.target).attr('href');
event.preventDefault();
$("#room_delete_dialog").dialog({
buttons : {
"Confirm" : function() {
console.log("deleting room "+clickedroom);
$.ajax({
url: room_url,
type: 'DELETE',
success: function(result) {
window.location.reload(true);
}
});
$(this).dialog("close");
},
"Cancel" : function() {
$(this).dialog("close");
}
}
});
$("#room_delete_dialog").dialog("open");
}
function add_day(event) {
event.preventDefault();
var rooms_url = $(event.target).attr('href');
$("#add_day_dialog").dialog({
"title" : "Add new day/time",
buttons : {
"Cancel" : function() {
$(this).dialog("close");
}
}
});
$("#room_day_dialog").dialog("open");
}
function delete_slot(event) {
var clickedday = $(event.target).attr('timeslot_id');
var timeslot_url = $(event.target).attr('href');
event.preventDefault();
$("#slot_delete_dialog").dialog({
title: "Deleting slot "+clickedday,
buttons : {
"Confirm" : function() {
console.log("deleting day "+clickedday);
$.ajax({
url: timeslot_url,
type: 'DELETE',
success: function(result) {
window.location.reload(true);
}
});
$(this).dialog("close");
},
"Cancel" : function() {
$(this).dialog("close");
}
}
});
$("#slot_delete_dialog").dialog("open");
}
function fill_timeslots() {
$.each(slot_status, function(key) {
ssid_arr = slot_status[key];
for(var q = 0; q<ssid_arr.length; q++){
ssid = ssid_arr[q];
insert_timeslotedit_cell(ssid);
}
});
}
function insert_timeslotedit_cell(ssid) {
var domid = ssid.domid
var roomtype=ssid.roomtype
var slot_id = ("#"+domid)
roomtypesession="";
roomtypeother="";
roomtypeplenary="";
roomtypereserved="";
roomtypeclass="";
roomtypeunavailable="";
//console.log("domid: "+domid+" has roomtype: "+roomtype)
$(slot_id).removeClass("agenda_slot_unavailable")
$(slot_id).removeClass("agenda_slot_other")
$(slot_id).removeClass("agenda_slot_session")
$(slot_id).removeClass("agenda_slot_plenary")
$(slot_id).removeClass("agenda_slot_reserved")
if(roomtype == "session") {
roomtypesession="selected";
roomtypeclass="agenda_slot_session";
} else if(roomtype == "other") {
roomtypeother="selected";
roomtypeclass="agenda_slot_other";
} else if(roomtype == "plenary") {
roomtypeplenary="selected";
roomtypeclass="agenda_slot_plenary";
} else if(roomtype == "reserved") {
roomtypereserved="selected";
roomtypeclass="agenda_slot_reserved";
} else {
roomtypeunavailable="selected";
roomtypeclass="agenda_slot_unavailable";
}
var select_id = domid + "_select"
html = "<form action=\"/some/place\" method=\"post\"><select id='"+select_id+"'>";
html = html + "<option value='session' "+roomtypesession+" id='option_"+domid+"_session'>session</option>";
html = html + "<option value='other' "+roomtypeother+" id='option_"+domid+"_other'>non-session</option>";
html = html + "<option value='reserved' "+roomtypereserved+" id='option_"+domid+"_reserved'>reserved</option>";
html = html + "<option value='plenary' "+roomtypeplenary+" id='option_"+domid+"_plenary'>plenary</option>";
html = html + "<option value='unavail' "+roomtypeunavailable+" id='option_"+domid+"_unavail'>unavailable</option>";
html = html + "</select>";
$(slot_id).html(html)
$(slot_id).addClass(roomtypeclass)
$("#"+select_id).change(function(eventObject) {
start_spin();
var newpurpose = $("#"+select_id).val()
console.log("setting id: #"+select_id+" to "+newpurpose+" ("+roomtypeclass+")");
// how does dajaxice relay an error?
Dajaxice.ietf.meeting.update_timeslot_purpose(
function(json) {
if(json == "") {
console.log("No reply from server....");
} else {
stop_spin();
for(var key in json) {
ssid[key]=json[key];
}
console.log("server replied, updating cell contents: "+ssid.roomtype);
insert_timeslotedit_cell(ssid);
}
},
{
'timeslot_id': ssid.timeslot_id,
'purpose': newpurpose,
});
});
}
/*
* Local Variables:
* c-basic-offset:4
* End:
*/