@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
531 lines (419 loc) • 16 kB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(1507);
module.exports = __webpack_require__(1507);
/***/ }),
/***/ 3:
/***/ (function(module, exports) {
module.exports = function() { throw new Error("define cannot be used indirect"); };
/***/ }),
/***/ 5:
/***/ (function(module, exports) {
module.exports = require("../kendo.data");
/***/ }),
/***/ 19:
/***/ (function(module, exports) {
module.exports = require("../kendo.core");
/***/ }),
/***/ 1507:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(19), __webpack_require__(5) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
})(function(){
(function(kendo) {
if (kendo.support.browser.msie && kendo.support.browser.version < 9) {
return;
}
/*jshint evil: true */
var Filter = kendo.spreadsheet.Filter = kendo.Class.extend({
prepare: function() {
},
value: function(cell) {
return cell.value;
},
matches: function() {
throw new Error("The 'matches' method is not implemented.");
},
toJSON: function() {
throw new Error("The 'toJSON' method is not implemented.");
}
});
Filter.create = function(options) {
var filter = options.filter;
if (!filter) {
throw new Error("Filter type not specified.");
}
var constructor = kendo.spreadsheet[filter.charAt(0).toUpperCase() + filter.substring(1) + "Filter"];
if (!constructor) {
throw new Error("Filter type not recognized.");
}
return new constructor(options);
};
kendo.spreadsheet.ValueFilter = Filter.extend({
_values: [],
_dates: [],
_blanks: false,
init: function ValueFilter(options) {
if (options.values !== undefined) {
this._values = options.values;
}
if (options.blanks !== undefined) {
this._blanks = options.blanks;
}
if (options.dates !== undefined) {
this._dates = options.dates;
}
},
value: function(cell) {
var value = cell.value;
if (this._dates.length > 0 && cell.format && typeof value === "number") {
var type = kendo.spreadsheet.formatting.type(value, cell.format);
if (type === "date") {
value = kendo.spreadsheet.numberToDate(value);
}
}
return value;
},
matches: function(value) {
if (value === null || value === undefined) {
return this._blanks;
}
if (value instanceof Date) {
return this._dates.some(function(date) {
return date.year === value.getFullYear() &&
(date.month === undefined || date.month === value.getMonth()) &&
(date.day === undefined || date.day === value.getDate()) &&
(date.hours === undefined || date.hours === value.getHours()) &&
(date.minutes === undefined || date.minutes === value.getMinutes()) &&
(date.seconds === undefined || date.seconds === value.getSeconds());
});
}
return this._values.indexOf(value) >= 0;
},
toJSON: function() {
return {
filter: "value",
blanks: this._blanks,
values: this._values.slice(0)
};
}
});
kendo.spreadsheet.CustomFilter = Filter.extend({
_logic: "and",
init: function CustomFilter(options) {
if (options.logic !== undefined) {
this._logic = options.logic;
}
if (options.criteria === undefined) {
throw new Error("Must specify criteria.");
}
this._criteria = options.criteria;
var expression = kendo.data.Query.filterExpr({
logic: this._logic,
filters: this._criteria
}).expression;
this._matches = new Function("d", "return " + expression);
},
matches: function(value) {
if (value === null) {
return false;
}
return this._matches(value);
},
value: function(cell) {
var value = cell.value;
var criterionValue = this._criteria[0].value;
var criterionType = criterionValue instanceof Date ? "date" : typeof criterionValue;
var valueType = typeof value;
if (cell.format) {
valueType = kendo.spreadsheet.formatting.type(value, cell.format);
}
if (valueType != criterionType) {
if (criterionType == "string") {
if (cell.format) {
value = kendo.spreadsheet.formatting.text(value, cell.format);
}
value = value + "";
}
} else if (valueType == "date") {
value = kendo.spreadsheet.numberToDate(value);
}
return value;
},
toJSON: function() {
return {
filter: "custom",
logic: this._logic,
criteria: this._criteria
};
}
});
kendo.spreadsheet.TopFilter = Filter.extend({
init: function TopFilter(options) {
this._type = options.type;
this._value = options.value;
this._values = [];
},
prepare: function(cells) {
var values = cells.map(this.value)
.sort()
.filter(function(value, index, array) {
return index === 0 || value !== array[index - 1];
});
if (this._type === "topNumber" || this._type == "topPercent") {
values.sort(function(x, y) {
return y - x;
});
} else {
values.sort(function(x, y) {
return x - y;
});
}
var count = this._value;
if (this._type === "topPercent" || this._type === "bottomPercent") {
count = (values.length * count / 100) >> 0;
}
this._values = values.slice(0, count);
},
matches: function(value) {
return this._values.indexOf(value) >= 0;
},
toJSON: function() {
return {
filter: "top",
type: this._type,
value: this._value
};
}
});
kendo.spreadsheet.DynamicFilter = Filter.extend({
init: function DynamicFilter(options) {
this._type = options.type;
this._predicate = this[options.type];
if (typeof this._predicate !== "function") {
throw new Error("DynamicFilter type '" + options.type + "' not recognized.");
}
},
value: function(cell) {
var value = cell.value;
if (cell.format) {
var type = kendo.spreadsheet.formatting.type(value, cell.format);
if (type === "date") {
value = kendo.spreadsheet.numberToDate(value);
}
}
return value;
},
prepare: function(cells) {
var sum = 0;
var count = 0;
for (var ci = 0; ci < cells.length; ci++) {
var value = this.value(cells[ci]);
if (typeof value === "number") {
sum += value;
count ++;
}
}
if (count > 0) {
this._average = sum / count;
} else {
this._average = 0;
}
},
matches: function(value) {
return this._predicate(value);
},
aboveAverage: function(value) {
if (value instanceof Date) {
value = kendo.spreadsheet.dateToNumber(value);
}
if (typeof value !== "number") {
return false;
}
return value > this._average;
},
belowAverage: function(value) {
if (value instanceof Date) {
value = kendo.spreadsheet.dateToNumber(value);
}
if (typeof value !== "number") {
return false;
}
return value < this._average;
},
tomorrow: function(value) {
if (value instanceof Date) {
var tomorrow = kendo.date.addDays(kendo.date.today(), 1);
return kendo.date.getDate(value).getTime() === tomorrow.getTime();
}
return false;
},
today: function(value) {
if (value instanceof Date) {
return kendo.date.isToday(value);
}
return false;
},
yesterday: function(value) {
if (value instanceof Date) {
var yesterday = kendo.date.addDays(kendo.date.today(), -1);
return kendo.date.getDate(value).getTime() === yesterday.getTime();
}
return false;
},
nextWeek: function(value) {
return sameWeek(kendo.date.addDays(kendo.date.today(), 7), value);
},
thisWeek: function(value) {
return sameWeek(kendo.date.today(), value);
},
lastWeek: function(value) {
return sameWeek(kendo.date.addDays(kendo.date.today(), -7), value);
},
nextMonth: function(value) {
return sameMonth(value, 1);
},
thisMonth: function(value) {
return sameMonth(value, 0);
},
lastMonth: function(value) {
return sameMonth(value, -1);
},
nextQuarter: function(value) {
if (value instanceof Date) {
var today = kendo.date.today();
var diff = quarter(value) - quarter(today);
return (diff === 1 && today.getFullYear() === value.getFullYear()) ||
(diff == -3 && today.getFullYear() + 1 === value.getFullYear());
}
return false;
},
thisQuarter: function(value) {
if (value instanceof Date) {
var today = kendo.date.today();
var diff = quarter(value) - quarter(today);
return diff === 0 && today.getFullYear() === value.getFullYear();
}
return false;
},
lastQuarter: function(value) {
if (value instanceof Date) {
var today = kendo.date.today();
var diff = quarter(today) - quarter(value);
return (diff === 1 && today.getFullYear() === value.getFullYear()) ||
(diff == -3 && today.getFullYear() - 1 === value.getFullYear());
}
return false;
},
nextYear: function(value) {
return sameYear(value, 1);
},
thisYear: function(value) {
return sameYear(value, 0);
},
lastYear: function(value) {
return sameYear(value, -1);
},
yearToDate: function(value) {
if (value instanceof Date) {
var today = kendo.date.today();
return value.getFullYear() === today.getFullYear() && value <= today;
}
return false;
},
toJSON: function() {
return {
filter: "dynamic",
type: this._type
};
}
});
[1, 2, 3, 4].forEach(function(target) {
kendo.spreadsheet.DynamicFilter.prototype["quarter" + target] = function(value) {
if (value instanceof Date) {
return quarter(value) === target;
}
return false;
};
});
kendo.cultures["en-US"].calendar.months.names.forEach(function(month, index) {
kendo.spreadsheet.DynamicFilter.prototype[month.toLowerCase()] = function(value) {
if (value instanceof Date) {
return value.getMonth() === index;
}
return false;
};
});
function quarter(value) {
var month = value.getMonth() + 1;
if (month >= 1 && month <= 3) {
return 1;
} else if(month >= 4 && month <= 6) {
return 2;
} else if (month >= 7 && month <= 9) {
return 3;
} else {
return 4;
}
}
function sameYear(value, offset) {
if (value instanceof Date) {
var today = kendo.date.today();
today.setFullYear(today.getFullYear() + offset);
return today.getFullYear() === value.getFullYear();
}
return false;
}
function sameMonth(value, offset) {
if (value instanceof Date) {
var today = kendo.date.firstDayOfMonth(kendo.date.today());
today.setMonth(today.getMonth() + offset, 1);
return today.getTime() === kendo.date.firstDayOfMonth(value).getTime();
}
return false;
}
function sameWeek(a, b) {
if (b instanceof Date) {
var firstWeek = kendo.date.dayOfWeek(kendo.date.getDate(a), 1);
var secondWeek = kendo.date.dayOfWeek(kendo.date.getDate(b), 1);
return firstWeek.getTime() === secondWeek.getTime();
}
return false;
}
})(kendo);
}, __webpack_require__(3));
/***/ })
/******/ });