wiki/editor/src/formula.js

109 lines
1.8 KiB
JavaScript

import moment from "moment";
import "moment/locale/nl"
moment.locale('nl')
/**
* @param {string|moment.Moment} x
* @returns {moment.Moment}
*/
function date(x) {
if (!x) {
return moment()
}
if (_.isString(x)) {
let r = x.match(/^\[\[(.+)\]\]$/);
if (r) {
return moment(r[1], "DD MMM YYYY")
}
return moment(x, "DD MMM YYYY")
}
if (_.isObject(x) && _.has(x, 'title')) {
return moment(x.title, "DD MMM YYYY")
}
return moment(x, "YYYY-MM-DD");
}
/**
*
* @param {moment.Moment} d
* @param {int} n
* @param {string} s
* @returns {moment.Moment}
*/
function dateAdd(d, n, s) {
return date(d).add(n, s)
}
function dateSet(d, n, s) {
return date(d).set(s, n)
}
function dateGet(d, s) {
return date(d).get(s)
}
function dateFormat(d, fmt) {
return date(d).format(fmt)
}
function dateStartOf(d, period) {
return date(d).startOf(period)
}
function dateEndOf(d, period) {
return date(d).endOf(period)
}
function dateIsBefore(a, b) {
return date(a).isBefore(date(b))
}
function dateIsAfter(a, b) {
return date(a).isBefore(date(b))
}
function dateIsSame(a, b, g) {
return date(a).isSame(date(b), g);
}
function dateCalendar(d) {
return date(d).calendar(moment())
}
function dateDiff(a, b, g) {
return date(a).diff(date(b), g)
}
export default {
date,
dateAdd,
dateSet,
dateGet,
dateFormat,
dateStartOf,
dateEndOf,
dateIsBefore,
dateIsAfter,
dateIsSame,
dateCalendar,
dateDiff,
empty(x) {
return !x;
},
if: function (x, a, b) {
return x ? a : b
},
gt: function (a, b) {
return a > b
},
lt: function (a, b) {
return a < b
},
gteq: function (a, b) {
return a >= b
},
lteq: function (a, b) {
return a <= b
}
}