Updates to schedule maker

This commit is contained in:
Godwin
2016-08-29 22:03:12 -07:00
parent d70795e72c
commit 4ee45f013b
8 changed files with 191 additions and 2617 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
(function() {
function closeGuestSelector() {
document.getElementById('guest-selector').classList.remove('open');
document.body.classList.remove('modal-open');
}
function _post(form, params, f) {
var request = new XMLHttpRequest();
@@ -16,7 +17,6 @@
params['authenticity_token'] = form.querySelector('[name="authenticity_token"]').value;
var data = [];
for (var key in params) {
//data.push(key + '=' + encodeURI(params[key]));
data.push(key + '=' + params[key]);
}
request.send(data.join('&'));
@@ -29,6 +29,7 @@
document.getElementById('guest-selector').classList.add('open');
var table = document.getElementById('table');
table.classList.add('loading');
document.body.classList.add('modal-open');
_post(
document.getElementById('housing-table-form'),
{
-1
View File
@@ -129,7 +129,6 @@
document.observe("focusin", function (event) { editTableCell(event.target); });
} else {
document.addEventListener("focus", function (event) { editTableCell(event.target); }, true);
// document.addEventListener("focus", function (event) { editTableCell(event.target); }, true);
}
searchControl.addEventListener('keyup', filterTable);
+109 -34
View File
@@ -1,39 +1,114 @@
(function() {
function initSchedule() {
forEachElement('table.schedule td.workshop.empty', function(block) {
block.addEventListener('click', function(event) {
console.log('clicked');
});
});
function closeWorkshopSelector() {
document.getElementById('workshop-selector').classList.remove('open');
document.body.classList.remove('modal-open');
}
initSchedule();
/*var body = document.querySelector('body');
var primaryContent = document.getElementById('primary-content');
var eventDlg = document.getElementById('event-dlg');
forEachElement('.event-detail-link', function(link) {
var eventDetails = link.parentElement.querySelector('.event-details');
var moreDetails = eventDlg.querySelector('.more-details');
link.addEventListener('click', function(event) {
event.preventDefault();
eventDlg.querySelector('.event-details').innerHTML = eventDetails.innerHTML;
var href = eventDetails.getAttribute('data-href');
if (href) {
moreDetails.setAttribute('href', href);
moreDetails.classList.remove('hidden');
} else {
moreDetails.classList.add('hidden');
document.getElementById('workshop-selector').addEventListener('click', function(event) {
if (event.target.id == 'workshop-selector') {
closeWorkshopSelector();
}
});
function _post(form, params, f) {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4) {
if (request.status == 200) {
f(request.responseText);
}
}
window.openOverlay(eventDlg, primaryContent, body);
}
request.open('POST', form.getAttribute('action'), true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
params['authenticity_token'] = form.querySelector('[name="authenticity_token"]').value;
var data = [];
for (var key in params) {
data.push(key + '=' + params[key]);
}
request.send(data.join('&'));
}
function selectorMatches(el, selector) {
var p = Element.prototype;
var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) {
return [].indexOf.call(document.querySelectorAll(s), this) !== -1;
};
return f.call(el, selector);
}
function updateSchedule(html) {
var schedule = document.getElementById('schedule-preview');
var s = document.createElement('div');
s.innerHTML = html;
schedule.innerHTML = s.children[0].innerHTML;
schedule.classList.remove('requesting');
}
var closeDlg = function(event) {
event.preventDefault();
window.closeOverlay(eventDlg, primaryContent, body);
};
eventDlg.querySelector('.close-btn').onclick = closeDlg;
document.getElementById('overlay').onclick = closeDlg;
});
});*/
document.body.addEventListener('submit', function (event) {
if (event.target.classList.contains('deschedule-workshop')) {
event.preventDefault();
var schedule = document.getElementById('schedule-preview');
var form = event.target;
schedule.classList.add('requesting');
_post(
form,
{
id: form.querySelector('[name="id"]').value,
button: 'deschedule_workshop'
},
updateSchedule
);
}
});
document.body.addEventListener('click', function (event) {
//console.log(event.target);
if (selectorMatches(event.target, 'td.workshop.open, td.workshop.open *')) {
//event.stopPropagation();
var button = event.target;
while (button && button.tagName && button.tagName !== 'TD') {
button = button.parentElement;
}
document.getElementById('workshop-selector').classList.add('open');
var table = document.getElementById('table');
table.classList.add('loading');
document.body.classList.add('modal-open');
var block = button.getAttribute('data-block');
var day = button.getAttribute('data-day');
var location = button.getAttribute('data-location');
_post(
document.getElementById('workshop-table-form'),
{
block: block,
day: day,
location: location,
button: 'get-workshop-list'
},
function (response) {
var table = document.getElementById('table');
table.innerHTML = response;
table.classList.remove('loading');
forEachElement('tr.selectable', function(row) {
row.addEventListener('click', function(event) {
var schedule = document.getElementById('schedule-preview');
schedule.classList.add('requesting');
closeWorkshopSelector();
var form = document.getElementById('workshop-table-form');
_post(
form,
{
workshop: row.getAttribute('data-workshop'),
block: block,
day: day,
location: form.querySelector('#event_location').value,
button: 'set-workshop'
},
updateSchedule
);
});
}, table);
}
);
}
}, true);
})();
+35 -15
View File
@@ -1761,7 +1761,7 @@ ul.warnings li,
}
}
#admin-housing {
#admin-housing, #admin-schedule {
.guests-housed {
margin-bottom: 1em;
text-align: right;
@@ -1873,7 +1873,19 @@ ul.warnings li,
}
}
#guest-selector {
#workshop-selector {
td, th {
white-space: nowrap;
}
td .text {
max-width: 50em;
overflow: hidden;
text-overflow: ellipsis;
}
}
#guest-selector, #workshop-selector {
display: none;
position: fixed;
top: 0;
@@ -1888,7 +1900,7 @@ ul.warnings li,
display: block;
}
.guest-dlg {
.guest-dlg, .workshop-dlg {
position: absolute;
top: 0;
right: 0;
@@ -1931,7 +1943,7 @@ ul.warnings li,
}
table {
min-width: 100em;
margin: 0 0 2em;
}
h4 {
@@ -2035,6 +2047,10 @@ ul.warnings li,
}
#admin-housing {
#table table {
min-width: 100em;
}
#hosts {
background-color: $white;
@@ -2208,9 +2224,8 @@ table.schedule {
&.locations-6 td.workshop.filled {
width: 16.66667%;
}
td {
position: relative;
//position: relative;
text-align: center;
&.empty {
@@ -2249,21 +2264,20 @@ table.schedule {
}
.event-detail-link {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: inline-block;
display: inline-flex;
position: relative;
height: 100%;
width: 100%;
color: inherit;
align-items: center;
@include after {
display: none;
}
&:hover {
outline: 0.33rem solid #02CA9E;
outline-offset: 0.25rem;
z-index: 1;
.details {
flex: 1;
}
}
@@ -2329,6 +2343,12 @@ table.schedule {
}
}
body.home table.schedule td .event-detail-link:hover {
outline: 0.33rem solid #02CA9E;
outline-offset: 0.25rem;
z-index: 1;
}
.event-dlg {
@include _-(flex, 0);
position: relative;