UNPKG

unserver-unify

Version:

67 lines (62 loc) 1.78 kB
'use strict'; 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; } });