push my latest changes because I'm agile
parent
cde239c97a
commit
e3f4df7e0a
@ -0,0 +1,144 @@
|
||||
define([
|
||||
'/poll/table.js',
|
||||
'/bower_components/jquery/dist/jquery.min.js',
|
||||
], function (Table) {
|
||||
var $ = window.jQuery;
|
||||
var W = {};
|
||||
|
||||
var xy = function (x, y) {
|
||||
return x + '_' + y;
|
||||
};
|
||||
|
||||
var Checkbox = W.Checkbox = function (id) {
|
||||
return $('<input>', {
|
||||
id: id,
|
||||
type: 'checkbox',
|
||||
checked: true,
|
||||
});
|
||||
};
|
||||
|
||||
console.log("Creating wizard");
|
||||
|
||||
var $modal = W.$modal = $('#wizard-modal');
|
||||
var $table = $modal.find('table');
|
||||
console.log("wizard table ->", $table[0]);
|
||||
var table = W.table = Table($table, xy);
|
||||
|
||||
W.cleanup = function () {
|
||||
// TODO reset table to fresh state
|
||||
};
|
||||
|
||||
W.show = function () {
|
||||
$modal.addClass('shown');
|
||||
W.isShown = true;
|
||||
};
|
||||
|
||||
W.hide = function () {
|
||||
$modal.removeClass('shown');
|
||||
W.isShown = false;
|
||||
};
|
||||
|
||||
$(window).on('keyup', function (e) {
|
||||
if (!W.isShown) { return; }
|
||||
if (e.which !== 27) { return; }
|
||||
W.hide();
|
||||
});
|
||||
|
||||
var $closeme = W.$closeme = ($('#close-wizard').click(function () {
|
||||
W.hide();
|
||||
}));
|
||||
|
||||
var Input = function (opt) { return $('<input>', opt); };
|
||||
|
||||
W.width = 0;
|
||||
W.height = 0;
|
||||
|
||||
W.times = [];
|
||||
W.dates = [];
|
||||
|
||||
var coluid = function () {
|
||||
return 'x-' + W.width++;
|
||||
};
|
||||
|
||||
var rowuid = function () {
|
||||
return 'y-' + W.height++;
|
||||
};
|
||||
|
||||
var makeTime = function (id) {
|
||||
var $time = Input({
|
||||
id: id,
|
||||
type: 'text',
|
||||
placeholder: 'your time',
|
||||
}).on('keyup', function () {
|
||||
// do something
|
||||
});
|
||||
|
||||
// add row
|
||||
|
||||
table.addRow($time, Checkbox, id);
|
||||
|
||||
return $time;
|
||||
};
|
||||
|
||||
var makeDate = function (id) {
|
||||
var $date = Input({
|
||||
id: id,
|
||||
type: 'text',
|
||||
placeholder: 'your date',
|
||||
}).on('keyup', function () {
|
||||
// do something
|
||||
});
|
||||
|
||||
// add column
|
||||
table.addColumn($date, Checkbox, id);
|
||||
|
||||
return $date;
|
||||
};
|
||||
|
||||
var $addtime = $('#addtime').click(function () {
|
||||
if (!W.isShown) { return; }
|
||||
var id = rowuid();
|
||||
|
||||
var $time = makeTime(id).focus();
|
||||
|
||||
W.times.push(id);
|
||||
});
|
||||
|
||||
var $addDate = $('#adddate').click(function () {
|
||||
if (!W.isShown) { return; }
|
||||
|
||||
var id = coluid();
|
||||
var $date = makeDate(id).focus();
|
||||
|
||||
W.dates.push(id);
|
||||
});
|
||||
|
||||
var fix1 = function (f,a) { return function (b) { return f(a,b); }; };
|
||||
var carte = function (f,A,B){ return A.map(function(a){ return B.map(fix1(f,a)); }); };
|
||||
var flatten = function (A) {
|
||||
return A.reduce(function (a, b) {
|
||||
return a.concat(b);
|
||||
}, []);
|
||||
};
|
||||
|
||||
var computeSlots = W.computeSlots = function (f) {
|
||||
f = f || function (a, b) { return a + ', ' + b; };
|
||||
return flatten(carte(function (date, time) {
|
||||
var $check = $table.find('#' + date + '_' + time);
|
||||
var checked = $check[0].checked;
|
||||
|
||||
if (!$check[0].checked) { return; }
|
||||
|
||||
var dateValue = $table.find('#' + date).val();
|
||||
var timeValue = $table.find('#' + time).val();
|
||||
|
||||
return f(dateValue, timeValue);
|
||||
}, W.dates, W.times)).filter(function (x) { return x; });
|
||||
};
|
||||
|
||||
var $toolbar = $('#modal-toolbar');
|
||||
|
||||
var $getOptions = W.$getOptions = $('#get-options');
|
||||
|
||||
return W;
|
||||
});
|
Loading…
Reference in New Issue