summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core/domain.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/core/domain.js')
-rw-r--r--addons/web/static/src/js/core/domain.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/addons/web/static/src/js/core/domain.js b/addons/web/static/src/js/core/domain.js
index 86e1f85a634..e8f089dca76 100644
--- a/addons/web/static/src/js/core/domain.js
+++ b/addons/web/static/src/js/core/domain.js
@@ -228,6 +228,86 @@ var Domain = collections.Tree.extend({
.replace(/false/g, "False")
.replace(/true/g, "True");
},
+ /*
+ * @param {string} fieldName
+ * @param {string} period
+ * @param {string} type ('date' or 'datetime')
+ * @param {boolean} forTooltip indicates if domain is used to print a tooltip
+ */
+ constructDomain: function (fieldName, period, type, forTooltip) {
+ var leftBoundaryParams, rightBoundaryParams;
+ var t = forTooltip || false;
+ function makeInterval () {
+ if (type === 'date') {
+ return "['&'," +
+ "('" + fieldName + "', '>=', (context_today() + relativedelta(" + leftBoundaryParams + ")).strftime('%Y-%m-%d'))," +
+ "('" + fieldName + "', '<', (context_today() + relativedelta(" + rightBoundaryParams + ")).strftime('%Y-%m-%d'))"+
+ "]";
+ }
+ else {
+ return "['&'," +
+ "('" + fieldName + "', '>=', " +
+ "(datetime.datetime.combine(context_today() + relativedelta(" + leftBoundaryParams + "), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))," +
+ "('" + fieldName + "', '<', " +
+ "(datetime.datetime.combine(context_today() + relativedelta(" + rightBoundaryParams + "), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))"+
+ "]";
+ }
+ }
+ switch (period) {
+ case 'today':
+ leftBoundaryParams = "";
+ rightBoundaryParams = t ? "" : "days=1";
+ return makeInterval();
+ case 'this_week':
+ leftBoundaryParams = "weeks=-1, days=1, weekday=0";
+ rightBoundaryParams = t ? "weekday=6" : "days=1, weekday=0";
+ return makeInterval();
+ case 'this_month':
+ leftBoundaryParams = "day=1";
+ rightBoundaryParams = (t ? "days=-1, " : "") + "day=1, months=1";
+ return makeInterval();
+ case 'this_quarter':
+ leftBoundaryParams = "months= - (context_today().month - 1) % 3, day=1";
+ rightBoundaryParams = (t ? "days=-1, " : "") + "months= 3 - (context_today().month -1 ) % 3, day=1";
+ return makeInterval();
+ case 'this_year':
+ leftBoundaryParams = "month=1, day=1";
+ rightBoundaryParams = (t ? "days=-1, " : "") + "month=1, day=1, years=1";
+ return makeInterval();
+ case 'yesterday':
+ leftBoundaryParams = "days=-1";
+ rightBoundaryParams = (t ? "days=-1" : "");
+ return makeInterval();
+ case 'last_week':
+ leftBoundaryParams = "weeks=-2, days=1, weekday=0";
+ rightBoundaryParams = t ? "weeks=-1, weekday=6" : "weeks=-1, days=1, weekday=0";
+ return makeInterval();
+ case 'last_month':
+ leftBoundaryParams = "months=-1, day=1";
+ rightBoundaryParams = (t ? "days=-1 , " : "") + "day=1";
+ return makeInterval();
+ case 'last_quarter':
+ leftBoundaryParams = "months= - 3 - (context_today().month - 1) % 3, day=1";
+ rightBoundaryParams = (t ? "days=-1 , " : "") + "months= - (context_today().month - 1) % 3, day=1";
+ return makeInterval();
+ case 'last_year':
+ leftBoundaryParams = "month=1, day=1, years=-1";
+ rightBoundaryParams = (t ? "days=-1 , " : "") + "month=1, day=1";
+ return makeInterval();
+ case 'last_7_days':
+ leftBoundaryParams = "days=-7";
+ rightBoundaryParams = t ? "days=-1" : "";
+ return makeInterval();
+ case 'last_30_days':
+ leftBoundaryParams = "days=-30";
+ rightBoundaryParams = t ? "days=-1" : "";
+ return makeInterval();
+ case 'last_365_days':
+ leftBoundaryParams = "days=-365";
+ rightBoundaryParams = t ? "days=-1" : "";
+ return makeInterval();
+ }
+ },
/**
* Converts a string representation of the Python prefix-array
* representation of a domain to a JS prefix-array representation of this