implement date filters
This commit is contained in:
@ -46,8 +46,8 @@
|
||||
nname: {value: ''},
|
||||
server: {type: 'nextcloud-credentials', required: true},
|
||||
calendar: {value: '', required: false},
|
||||
future: { type: 'bool', value: true, required: true},
|
||||
futureWeeks: { type: 'num', default: 4 }
|
||||
pastWeeks: { type: 'num', value: 0, required: true},
|
||||
futureWeeks: { type: 'num', default: 4, required: true }
|
||||
},
|
||||
inputs: 1,
|
||||
outputs: 1,
|
||||
@ -73,11 +73,11 @@
|
||||
<input type="text" id="node-input-calendar">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-future"><i class="fa fa-check-square"></i> Only future events?</label>
|
||||
<input type="checkbox" id="node-input-future">
|
||||
<label for="node-input-pastWeeks"><i class="fa fa-check-square"></i> Past weeks to sync</label>
|
||||
<span class="ui-spinner ui-widget ui-widget-content ui-corner-all"><input type="number" id="node-input-pastWeeks"></span>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-futureWeeks"><i class="fa fa-random"></i> Weeks to sync</label>
|
||||
<label for="node-input-futureWeeks"><i class="fa fa-random"></i> Upcoming weeks to sync</label>
|
||||
<span class="ui-spinner ui-widget ui-widget-content ui-corner-all"><input type="number" id="node-input-futureWeeks"></span>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
21
nextcloud.js
21
nextcloud.js
@ -20,11 +20,28 @@ module.exports = function (RED) {
|
||||
RED.nodes.createNode(this, n)
|
||||
this.server = RED.nodes.getNode(n.server)
|
||||
this.calendar = n.calendar
|
||||
this.future = n.future || true
|
||||
this.pastWeeks = n.pastWeeks || 0
|
||||
this.futureWeeks = n.futureWeeks || 4
|
||||
const node = this
|
||||
|
||||
node.on('input', (msg) => {
|
||||
let startDate = moment().startOf('day').subtract(this.pastWeeks, 'weeks').format('YYYYMMDD[T]HHmmss[Z]')
|
||||
let endDate = moment().startOf('day').add(this.futureWeeks, 'weeks').format('YYYYMMDD[T]HHmmss[Z]')
|
||||
const filters = [{
|
||||
type: 'comp-filter',
|
||||
attrs: { name: 'VCALENDAR' },
|
||||
children: [{
|
||||
type: 'comp-filter',
|
||||
attrs: { name: 'VEVENT' },
|
||||
children: [{
|
||||
type: 'time-range',
|
||||
attrs: {
|
||||
start: startDate,
|
||||
end: endDate
|
||||
}
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
// dav.debug.enabled = true;
|
||||
const xhr = new dav.transport.Basic(
|
||||
new dav.Credentials({
|
||||
@ -47,7 +64,7 @@ module.exports = function (RED) {
|
||||
// Wenn Kalender gesetzt ist, dann nur diesen abrufen
|
||||
let c = msg.calendar || node.calendar
|
||||
if (!c || !c.length || (c && c.length && c === calendar.displayName)) {
|
||||
dav.listCalendarObjects(calendar, { xhr: xhr })
|
||||
dav.listCalendarObjects(calendar, { xhr: xhr, filters: filters })
|
||||
.then(function (calendarEntries) {
|
||||
let icsList = { 'payload': { 'name': calendar.displayName, 'data': [] } }
|
||||
calendarEntries.forEach(function (calendarEntry) {
|
||||
|
||||
Reference in New Issue
Block a user