unserver-unify
Version:
67 lines (62 loc) • 1.78 kB
JavaScript
;
angular.module('bamboo.common').service('searchHelper', function(oopHelper,$q) {
var self = this;
function SearchKeyCalculator() {}
SearchKeyCalculator.prototype.calculate = function() {
console.log('SearchKeyCalculator ...');
};
function TimeCalculator() {}
oopHelper.extend(TimeCalculator, SearchKeyCalculator);
//override
TimeCalculator.prototype.calculate = function(obj) {
console.log(obj);
var condition = {};
var flag = false;
if (obj.timestart || obj.timestart == 0) {
condition['$gte'] = obj.timestart;
flag = true;
}
if (obj.timestop || obj.timestop == 0) {
condition['$lte'] = obj.timestop;
flag = true;
}
if (flag) {
return condition;
}
console.log(condition);
return undefined;
}
function PriceCalculator() {}
oopHelper.extend(PriceCalculator, SearchKeyCalculator);
//override
PriceCalculator.prototype.calculate = function(obj) {
console.info(obj);
var condition = {};
var flag = false;
if (obj.minprice || obj.minprice === 0) {
condition['$gte'] = obj.minprice;
flag = true;
}
if (obj.maxprice || obj.maxprice === 0) {
condition['$lte'] = obj.maxprice;
flag = true;
}
console.info(condition);
//condition['']
if (flag) {
return condition;
}
return undefined;
}
self.getSearchKeyCondtion = function(type,obj) {
console.log(type,obj);
//register
var keyArr = ['Time','Price'];
var strategy = {};
angular.forEach(keyArr,function(key,idx){
strategy[key] = eval("new " +key+'Calculator()');
});
var cond = strategy[type].calculate(obj);
return cond;
}
});