hedera-web/js/sql/filter.js

53 lines
1.0 KiB
JavaScript
Raw Normal View History

2016-09-26 09:28:47 +00:00
var Operation = require ('./operation');
2017-04-19 06:16:37 +00:00
var Value = require ('./value');
2016-09-26 09:28:47 +00:00
/**
2017-04-19 06:16:37 +00:00
* The equivalent of a SQL filter expression. It allows to automatically build
* SQL filters based on lot parameters.
2016-12-20 09:32:17 +00:00
*/
2016-09-26 09:28:47 +00:00
module.exports = new Class
({
2016-09-26 09:28:47 +00:00
Extends: Operation
,Tag: 'sql-filter'
2017-04-19 06:16:37 +00:00
/**
* Checks if any of filters childs are ready.
*/
,isReady: function (params)
{
2017-11-13 16:36:30 +00:00
var exprs = this.exprs;
2017-04-19 06:16:37 +00:00
for (var i = exprs.length; i--;)
if (exprs[i].isReady (params))
return true;
2017-04-19 06:16:37 +00:00
return false;
}
2017-04-19 06:16:37 +00:00
/**
* Renders the filter as an SQL expression. If any of its childs isn't
* ready is ommitted from the expression. If all of its childs aren't ready
* renders the TRUE expression.
*/
,render: function (params)
{
2017-11-13 16:36:30 +00:00
var newOp;
var newExprs = [];
2017-04-19 06:16:37 +00:00
2017-11-13 16:36:30 +00:00
this.exprs.forEach (function (expr) {
if (expr.isReady (params))
2017-11-16 14:53:20 +00:00
newExprs.push (expr);
2017-11-13 16:36:30 +00:00
})
2017-11-13 16:36:30 +00:00
if (newExprs.length > 0)
newOp = new Operation ({
type: this.type,
exprs: newExprs
});
else
newOp = new Value ({value: true});
2017-11-13 16:36:30 +00:00
return newOp.render (params);
}
});