Skip to content

Commit aa39da6

Browse files
committed
Add jshint config, fix warnings
1 parent 34e9f0b commit aa39da6

File tree

3 files changed

+68
-43
lines changed

3 files changed

+68
-43
lines changed

.jshintrc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"jquery": true,
3+
"browser": true,
4+
5+
//"eqeqeq": true,
6+
"freeze": true,
7+
//"indent": 4, // when we move to spaces
8+
"latedef": true,
9+
"undef": true,
10+
"unused": true,
11+
"immed": true,
12+
"trailing": true,
13+
"maxcomplexity": 50, // Can we get this under 5?
14+
//"maxlen": 120,
15+
16+
"-W014": false, // Bad line breaking before ? (in tertiary operator)
17+
"-W065": false, // Missing radix parameter to parseInt (defaults to 10)
18+
"-W069": false, // Literal accessor is better written in dot notation
19+
"-W100": false // Silently deleted characters (in locales)
20+
}

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
before_script:
22
- cd ./tests
33
- echo "new Date().toString();" | phantomjs
4-
script: phantomjs run-qunit.js tests.html
4+
script:
5+
- jshint js/bootstrap-datepicker.js js/locales/*.js
6+
- phantomjs run-qunit.js tests.html

js/bootstrap-datepicker.js

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
function alias(method){
3535
return function(){
3636
return this[method].apply(this, arguments);
37-
}
37+
};
3838
}
3939

4040
var DateArray = (function(){
@@ -77,7 +77,7 @@
7777
a.push.apply(a, arguments);
7878
$.extend(a, extras);
7979
return a;
80-
}
80+
};
8181
})();
8282

8383

@@ -310,7 +310,7 @@
310310
focus: $.proxy(this.show, this),
311311
keyup: $.proxy(function(e){
312312
if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
313-
this.update()
313+
this.update();
314314
}, this),
315315
keydown: $.proxy(this.keydown, this)
316316
}],
@@ -404,7 +404,7 @@
404404
});
405405
},
406406

407-
show: function(e) {
407+
show: function(){
408408
if (!this.isInline)
409409
this.picker.appendTo('body');
410410
this.picker.show();
@@ -725,7 +725,7 @@
725725
startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
726726
endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
727727
endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
728-
tooltip, currentYear;
728+
tooltip;
729729
this.picker.find('.datepicker-days thead th.datepicker-switch')
730730
.text(dates[this.o.language].months[month]+' '+year);
731731
this.picker.find('tfoot th.today')
@@ -1186,17 +1186,11 @@
11861186
if (dir) {
11871187
this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
11881188
}
1189-
/*
1190-
vitalets: fixing bug of very special conditions:
1191-
jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.
1192-
Method show() does not set display css correctly and datepicker is not shown.
1193-
Changed to .css('display', 'block') solve the problem.
1194-
See https://github.com/vitalets/x-editable/issues/37
1195-
1196-
In jquery 1.7.2+ everything works fine.
1197-
*/
1198-
//this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
1199-
this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block');
1189+
this.picker
1190+
.find('>div')
1191+
.hide()
1192+
.filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)
1193+
.css('display', 'block');
12001194
this.updateNavArrows();
12011195
}
12021196
};
@@ -1269,11 +1263,14 @@
12691263
// Derive options from element data-attrs
12701264
var data = $(el).data(),
12711265
out = {}, inkey,
1272-
replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'),
1273-
prefix = new RegExp('^' + prefix.toLowerCase());
1266+
replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
1267+
prefix = new RegExp('^' + prefix.toLowerCase());
1268+
function re_lower(_,a){
1269+
return a.toLowerCase();
1270+
}
12741271
for (var key in data)
12751272
if (prefix.test(key)){
1276-
inkey = key.replace(replace, function(_,a){ return a.toLowerCase(); });
1273+
inkey = key.replace(replace, re_lower);
12771274
out[inkey] = data[key];
12781275
}
12791276
return out;
@@ -1416,12 +1413,12 @@
14161413
if (date instanceof Date) return date;
14171414
if (typeof format === 'string')
14181415
format = DPGlobal.parseFormat(format);
1416+
var part_re = /([\-+]\d+)([dmwy])/,
1417+
parts = date.match(/([\-+]\d+)([dmwy])/g),
1418+
part, dir, i;
14191419
if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)) {
1420-
var part_re = /([\-+]\d+)([dmwy])/,
1421-
parts = date.match(/([\-+]\d+)([dmwy])/g),
1422-
part, dir;
14231420
date = new Date();
1424-
for (var i=0; i<parts.length; i++) {
1421+
for (i=0; i<parts.length; i++) {
14251422
part = part_re.exec(parts[i]);
14261423
dir = parseInt(part[1]);
14271424
switch(part[2]){
@@ -1441,9 +1438,9 @@
14411438
}
14421439
return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
14431440
}
1444-
var parts = date && date.match(this.nonpunctuation) || [],
1445-
date = new Date(),
1446-
parsed = {},
1441+
parts = date && date.match(this.nonpunctuation) || [];
1442+
date = new Date();
1443+
var parsed = {},
14471444
setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
14481445
setters_map = {
14491446
yyyy: function(d,v){ return d.setUTCFullYear(v); },
@@ -1461,7 +1458,7 @@
14611458
},
14621459
d: function(d,v){ return d.setUTCDate(v); }
14631460
},
1464-
val, filtered, part;
1461+
val, filtered;
14651462
setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
14661463
setters_map['dd'] = setters_map['d'];
14671464
date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
@@ -1473,33 +1470,32 @@
14731470
}).toArray();
14741471
}
14751472
// Process remainder
1473+
function match_part(){
1474+
var m = this.slice(0, parts[i].length),
1475+
p = parts[i].slice(0, m.length);
1476+
return m == p;
1477+
}
14761478
if (parts.length == fparts.length) {
1477-
for (var i=0, cnt = fparts.length; i < cnt; i++) {
1479+
var cnt;
1480+
for (i=0, cnt = fparts.length; i < cnt; i++) {
14781481
val = parseInt(parts[i], 10);
14791482
part = fparts[i];
14801483
if (isNaN(val)) {
14811484
switch(part) {
14821485
case 'MM':
1483-
filtered = $(dates[language].months).filter(function(){
1484-
var m = this.slice(0, parts[i].length),
1485-
p = parts[i].slice(0, m.length);
1486-
return m == p;
1487-
});
1486+
filtered = $(dates[language].months).filter(match_part);
14881487
val = $.inArray(filtered[0], dates[language].months) + 1;
14891488
break;
14901489
case 'M':
1491-
filtered = $(dates[language].monthsShort).filter(function(){
1492-
var m = this.slice(0, parts[i].length),
1493-
p = parts[i].slice(0, m.length);
1494-
return m == p;
1495-
});
1490+
filtered = $(dates[language].monthsShort).filter(match_part);
14961491
val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
14971492
break;
14981493
}
14991494
}
15001495
parsed[part] = val;
15011496
}
1502-
for (var i=0, _date, s; i<setters_order.length; i++){
1497+
var _date, s;
1498+
for (i=0; i<setters_order.length; i++){
15031499
s = setters_order[i];
15041500
if (s in parsed && !isNaN(parsed[s])){
15051501
_date = new Date(date);
@@ -1528,8 +1524,8 @@
15281524
};
15291525
val.dd = (val.d < 10 ? '0' : '') + val.d;
15301526
val.mm = (val.m < 10 ? '0' : '') + val.m;
1531-
var date = [],
1532-
seps = $.extend([], format.separators);
1527+
date = [];
1528+
var seps = $.extend([], format.separators);
15331529
for (var i=0, cnt = format.parts.length; i <= cnt; i++) {
15341530
if (seps.length)
15351531
date.push(seps.shift());
@@ -1545,7 +1541,14 @@
15451541
'</tr>'+
15461542
'</thead>',
15471543
contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
1548-
footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
1544+
footTemplate: '<tfoot>'+
1545+
'<tr>'+
1546+
'<th colspan="7" class="today"></th>'+
1547+
'</tr>'+
1548+
'<tr>'+
1549+
'<th colspan="7" class="clear"></th>'+
1550+
'</tr>'+
1551+
'</tfoot>'
15491552
};
15501553
DPGlobal.template = '<div class="datepicker">'+
15511554
'<div class="datepicker-days">'+

0 commit comments

Comments
 (0)