dist
src
test
libs
unit
api.js
checklist.js
combodate.js
common.js
date.js
datefield.js
datetime.js
datetimefield.js
dateui.js
dateuifield.js
select.js
select2.js
text.js
textarea.js
typeahead.js
wysihtml5.js
coverage
index.html
loader.js
main.js
mocks.js
require.js
style.css
.gitignore
CHANGELOG.txt
LICENSE-MIT
Package.nuspec
README.md
bower.json
composer.json
grunt.js
package.json
243 lines
8.9 KiB
JavaScript
243 lines
8.9 KiB
JavaScript
$(function () {
|
|
|
|
var dpg, f = 'dd.mm.yyyy', mode;
|
|
|
|
module("date", {
|
|
setup: function(){
|
|
fx = $('#async-fixture');
|
|
dpg = $.fn.bdatepicker.DPGlobal;
|
|
$.support.transition = false;
|
|
mode = $.fn.editable.defaults.mode;
|
|
$.fn.editable.defaults.mode = 'popup';
|
|
},
|
|
teardown: function() {
|
|
//restore mode
|
|
$.fn.editable.defaults.mode = mode;
|
|
}
|
|
});
|
|
|
|
function frmt(date, format) {
|
|
return dpg.formatDate(date, dpg.parseFormat(format), 'en');
|
|
}
|
|
|
|
asyncTest("container should contain datepicker with value and save new entered date", function () {
|
|
$.fn.editabletypes.date.defaults.datepicker.weekStart = 1;
|
|
|
|
var d = '15.05.1984',
|
|
e = $('<a href="#" data-type="date" data-pk="1" data-url="post-date.php">'+d+'</a>').appendTo(fx).editable({
|
|
format: f,
|
|
datepicker: {
|
|
|
|
}
|
|
}),
|
|
nextD = '16.05.1984';
|
|
|
|
$.mockjax({
|
|
url: 'post-date.php',
|
|
response: function(settings) {
|
|
equal(settings.data.value, nextD, 'submitted value correct');
|
|
}
|
|
});
|
|
|
|
//testing func, run twice!
|
|
var func = function() {
|
|
var df = $.Deferred();
|
|
equal(frmt(e.data('editable').value, 'dd.mm.yyyy'), d, 'value correct');
|
|
|
|
e.click();
|
|
var p = tip(e);
|
|
ok(p.find('.datepicker').is(':visible'), 'datepicker exists');
|
|
equal(p.find('.datepicker').length, 1, 'datepicker single');
|
|
ok(p.find('.datepicker').find('.datepicker-days').is(':visible'), 'datepicker days visible');
|
|
|
|
equal(frmt(e.data('editable').value, f), d, 'day set correct');
|
|
ok(p.find('td.day.active').is(':visible'), 'active day is visible');
|
|
equal(p.find('td.day.active').text(), 15, 'day shown correct');
|
|
equal(p.find('th.dow').eq(0).text(), 'Mo', 'weekStart correct');
|
|
|
|
//set new day
|
|
p.find('td.day.active').next().click();
|
|
p.find('form').submit();
|
|
|
|
setTimeout(function() {
|
|
ok(!p.is(':visible'), 'popover closed');
|
|
equal(frmt(e.data('editable').value, f), nextD, 'new date saved to value');
|
|
equal(e.text(), nextD, 'new text shown');
|
|
df.resolve();
|
|
}, timeout);
|
|
|
|
return df.promise();
|
|
};
|
|
|
|
$.when(func()).then(function() {
|
|
e.editable('setValue', d, true);
|
|
$.when(func()).then(function() {
|
|
e.remove();
|
|
start();
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
asyncTest("viewformat, init by text", function () {
|
|
|
|
$.fn.editabletypes.date.defaults.datepicker.weekStart = 1;
|
|
|
|
var dview = '15/05/1984',
|
|
d = '1984-05-15',
|
|
e = $('<a href="#" data-type="date" data-pk="1" data-url="post-date1.php">'+dview+'</a>').appendTo(fx).editable({
|
|
format: 'yyyy-mm-dd',
|
|
viewformat: 'dd/mm/yyyy',
|
|
datepicker: {
|
|
|
|
}
|
|
}),
|
|
nextD = '1984-05-16',
|
|
nextDview = '16/05/1984';
|
|
|
|
equal(frmt(e.data('editable').value, 'yyyy-mm-dd'), d, 'value correct');
|
|
|
|
$.mockjax({
|
|
url: 'post-date1.php',
|
|
response: function(settings) {
|
|
equal(settings.data.value, nextD, 'submitted value correct');
|
|
}
|
|
});
|
|
|
|
e.click();
|
|
var p = tip(e);
|
|
ok(p.find('.datepicker').is(':visible'), 'datepicker exists');
|
|
|
|
equal(frmt(e.data('editable').value, 'yyyy-mm-dd'), d, 'day set correct');
|
|
equal(p.find('td.day.active').text(), 15, 'day shown correct');
|
|
equal(p.find('th.dow').eq(0).text(), 'Mo', 'weekStart correct');
|
|
|
|
//set new day
|
|
p.find('td.day.active').next().click();
|
|
p.find('form').submit();
|
|
|
|
setTimeout(function() {
|
|
ok(!p.is(':visible'), 'popover closed')
|
|
equal(frmt(e.data('editable').value, 'yyyy-mm-dd'), nextD, 'new date saved to value')
|
|
equal(e.text(), nextDview, 'new text shown in correct format')
|
|
e.remove();
|
|
start();
|
|
}, timeout);
|
|
|
|
});
|
|
|
|
test("viewformat, init by value", function () {
|
|
var dview = '15/05/1984',
|
|
d = '1984-05-15',
|
|
e = $('<a href="#" data-type="date" data-pk="1" data-format="yyyy-mm-dd" data-viewformat="dd/mm/yyyy" data-value="'+d+'"></a>').appendTo('#qunit-fixture').editable();
|
|
|
|
equal(frmt(e.data('editable').value, 'yyyy-mm-dd'), d, 'value correct');
|
|
equal(e.text(), dview, 'text correct');
|
|
});
|
|
|
|
test("datepicker options can be defined in data-datepicker string", function () {
|
|
var e = $('<a href="#" data-type="date" data-datepicker="{weekStart: 2}" data-pk="1" data-url="/post"></a>').appendTo('#qunit-fixture').editable({
|
|
});
|
|
|
|
equal(e.data('editable').input.options.datepicker.weekStart, 2, 'options applied correct');
|
|
});
|
|
|
|
|
|
test("input should contain today if element is empty", function () {
|
|
var e = $('<a href="#" data-type="date"></a>').appendTo('#qunit-fixture').editable();
|
|
e.click();
|
|
var p = tip(e),
|
|
today = new Date();
|
|
|
|
equal(p.find('td.day.active').text(), today.getDate(), 'day shown correct');
|
|
|
|
p.find('.editable-cancel').click();
|
|
ok(!p.is(':visible'), 'popover closed');
|
|
});
|
|
|
|
asyncTest("clear button (showbuttons: true)", function () {
|
|
var d = '15.05.1984',
|
|
e = $('<a href="#" data-type="date" data-pk="1" data-url="post-date-clear.php">'+d+'</a>').appendTo(fx).editable({
|
|
format: f,
|
|
clear: 'abc',
|
|
showbuttons: true
|
|
});
|
|
|
|
$.mockjax({
|
|
url: 'post-date-clear.php',
|
|
response: function(settings) {
|
|
equal(settings.data.value, '', 'submitted value correct');
|
|
}
|
|
});
|
|
|
|
equal(frmt(e.data('editable').value, 'dd.mm.yyyy'), d, 'value correct');
|
|
|
|
e.click();
|
|
var p = tip(e);
|
|
ok(p.find('.datepicker').is(':visible'), 'datepicker exists');
|
|
|
|
equal(frmt(e.data('editable').value, f), d, 'day set correct');
|
|
equal(p.find('td.day.active').text(), 15, 'day shown correct');
|
|
|
|
var clear = p.find('.editable-clear a');
|
|
equal(clear.text(), 'abc', 'clear link shown');
|
|
|
|
//click clear
|
|
clear.click();
|
|
ok(!p.find('td.day.active').length, 'no active day');
|
|
ok(p.find('.datepicker').is(':visible'), 'datepicker still visible');
|
|
|
|
p.find('form').submit();
|
|
|
|
setTimeout(function() {
|
|
ok(!p.is(':visible'), 'popover closed');
|
|
equal(e.data('editable').value, null, 'null saved to value');
|
|
equal(e.text(), e.data('editable').options.emptytext, 'empty text shown');
|
|
e.remove();
|
|
start();
|
|
}, timeout);
|
|
|
|
});
|
|
|
|
|
|
asyncTest("clear button (showbuttons: false)", function () {
|
|
var d = '15.05.1984',
|
|
e = $('<a href="#" data-type="date" data-pk="1" data-url="post-date-clear1.php">'+d+'</a>').appendTo(fx).editable({
|
|
format: f,
|
|
clear: 'abc',
|
|
showbuttons: false
|
|
});
|
|
|
|
$.mockjax({
|
|
url: 'post-date-clear1.php',
|
|
response: function(settings) {
|
|
equal(settings.data.value, '', 'submitted value correct');
|
|
}
|
|
});
|
|
|
|
equal(frmt(e.data('editable').value, 'dd.mm.yyyy'), d, 'value correct');
|
|
|
|
e.click();
|
|
var p = tip(e);
|
|
ok(p.find('.datepicker').is(':visible'), 'datepicker exists');
|
|
|
|
equal(frmt(e.data('editable').value, f), d, 'day set correct');
|
|
equal(p.find('td.day.active').text(), 15, 'day shown correct');
|
|
|
|
var clear = p.find('.editable-clear a');
|
|
equal(clear.text(), 'abc', 'clear link shown');
|
|
|
|
//click clear
|
|
clear.click();
|
|
|
|
setTimeout(function() {
|
|
ok(!p.is(':visible'), 'popover closed');
|
|
equal(e.data('editable').value, null, 'null saved to value');
|
|
equal(e.text(), e.data('editable').options.emptytext, 'empty text shown');
|
|
e.remove();
|
|
start();
|
|
}, timeout);
|
|
|
|
});
|
|
|
|
}); |