Added support for relative date ranges in segments
This commit is contained in:
parent
9bd6db2624
commit
a229f80e22
11 changed files with 169 additions and 14 deletions
|
@ -140,7 +140,9 @@ module.exports.get = (id, callback) => {
|
|||
case 'number':
|
||||
case 'date':
|
||||
case 'birthday':
|
||||
if (rule.value.range) {
|
||||
if (rule.value.relativeRange) {
|
||||
rule.formatted = (rule.value.start ? rule.value.start + ' days ' + (rule.value.startDirection ? 'after' : 'before') + ' today' : 'today') + ' … ' + (rule.value.end ? rule.value.end + ' days ' + (rule.value.endDirection ? 'after' : 'before') + ' today' : 'today');
|
||||
} else if (rule.value.range) {
|
||||
rule.formatted = (rule.value.start || '') + ' … ' + (rule.value.end || '');
|
||||
} else {
|
||||
rule.formatted = rule.value.value || '';
|
||||
|
@ -294,7 +296,15 @@ module.exports.createRule = (segmentId, rule, callback) => {
|
|||
case 'date':
|
||||
case 'birthday':
|
||||
case 'number':
|
||||
if (rule.range) {
|
||||
if (column.type === 'date' && rule.range === 'relative') {
|
||||
value = {
|
||||
relativeRange: true,
|
||||
start: Number(rule.startRelative) || 0,
|
||||
startDirection: Number(rule.startDirection) ? 1 : 0,
|
||||
end: Number(rule.endRelative) || 0,
|
||||
endDirection: Number(rule.endDirection) ? 1 : 0
|
||||
};
|
||||
} else if (rule.range === 'yes') {
|
||||
value = {
|
||||
range: true,
|
||||
start: rule.start,
|
||||
|
@ -389,7 +399,9 @@ module.exports.getRule = (id, callback) => {
|
|||
case 'number':
|
||||
case 'date':
|
||||
case 'birthday':
|
||||
if (rule.value.range) {
|
||||
if (rule.value.relativeRange) {
|
||||
rule.formatted = (rule.value.start ? rule.value.start + ' days ' + (rule.value.startDirection ? 'after' : 'before') + ' today' : 'today') + ' … ' + (rule.value.end ? rule.value.end + ' days ' + (rule.value.endDirection ? 'after' : 'before') + ' today' : 'today');
|
||||
} else if (rule.value.range) {
|
||||
rule.formatted = (rule.value.start || '') + ' … ' + (rule.value.end || '');
|
||||
} else {
|
||||
rule.formatted = rule.value.value || '';
|
||||
|
@ -445,7 +457,15 @@ module.exports.updateRule = (id, rule, callback) => {
|
|||
case 'date':
|
||||
case 'birthday':
|
||||
case 'number':
|
||||
if (rule.range) {
|
||||
if (column.type === 'date' && rule.range === 'relative') {
|
||||
value = {
|
||||
relativeRange: true,
|
||||
start: Number(rule.startRelative) || 0,
|
||||
startDirection: Number(rule.startDirection) ? 1 : 0,
|
||||
end: Number(rule.endRelative) || 0,
|
||||
endDirection: Number(rule.endDirection) ? 1 : 0
|
||||
};
|
||||
} else if (rule.range === 'yes') {
|
||||
value = {
|
||||
range: true,
|
||||
start: rule.start,
|
||||
|
@ -527,6 +547,11 @@ module.exports.getQuery = (id, prefix, callback) => {
|
|||
let query = [];
|
||||
let values = [];
|
||||
|
||||
let getRelativeDate = (days, direction) => {
|
||||
let date = new Date(Date.now() + (direction ? 1 : -1) * days * 24 * 3600 * 1000);
|
||||
return date.toISOString().substr(0, 10);
|
||||
};
|
||||
|
||||
let getDate = (value, nextDay) => {
|
||||
let parts = value.trim().split(/\D/);
|
||||
let year = Number(parts.shift()) || 0;
|
||||
|
@ -579,7 +604,15 @@ module.exports.getQuery = (id, prefix, callback) => {
|
|||
}
|
||||
break;
|
||||
case 'date':
|
||||
if (rule.value.range) {
|
||||
if (rule.value.relativeRange) {
|
||||
// start
|
||||
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
|
||||
values.push(getDate(getRelativeDate(rule.value.start, rule.value.startDirection)));
|
||||
|
||||
// end
|
||||
query.push(prefix + '`' + rule.columnType.column + '` < ?');
|
||||
values.push(getDate(getRelativeDate(rule.value.end, rule.value.endDirection), true));
|
||||
} else if (rule.value.range) {
|
||||
if (rule.value.start) {
|
||||
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
|
||||
values.push(getDate(rule.value.start));
|
||||
|
|
|
@ -87,8 +87,10 @@ module.exports.authenticate = (username, password, callback) => {
|
|||
if (!result) {
|
||||
return callback(null, false);
|
||||
}
|
||||
|
||||
let user = tools.convertKeys(rows[0]);
|
||||
return callback(null, {
|
||||
id: rows[0].id,
|
||||
id: user.id,
|
||||
username
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue