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