Open Joerg82 opened 3 years ago
folgendes wird benötigt:
@Scrounger
Hallo der Fehler tritt immer noch auf.
Ich nutze dein Script, welches mir im Widget auch alles Aneigt, jedoch Problem hat mit den wiederkehrenden, ganztägigen Terminen, in meinem Fall den Geburtstagen.
Skript:
`// momentjs is required as dependecies in javascript adapter
const moment = require("moment");
var instances = $([id=ical.0.data.table]
);
instances.on(ical2CalendarWidget);
// remove this, if you know to use your own datapoint
let datapointId = 'javascript.0.scriptEnabled.common.Kalender.ical2calendar2'
createState(datapointId, "[]", {
read: true,
write: false,
desc: "JSON String for Calendar Widget",
type: "string",
def: "[]"
});
function ical2CalendarWidget() {
try {
let calList = [];
for (var inst = 0; inst <= instances.length - 1; inst++) {
let icalObj = getState(instances[inst]).val;
if (icalObj) {
for (var i = 0; i <= icalObj.length - 1; i++) {
let item = icalObj[i];
// extract calendar color
let calendarName = item._class.split(' ')[0].replace('ical_', '');
let startTime = moment(item._date);
let endTime = moment(item._end);
let start = startTime.format("YYYY-MM-DD HH:mm");
let end = endTime.format("YYYY-MM-DD HH:mm");
if (startTime.format('HH:mm') === '00:00' && endTime.format('HH:mm') === '00:00') {
// is full-day event
if (endTime.diff(startTime, 'hours') === 24) {
// full-day event, one day
start = startTime.format("YYYY-MM-DD");
end = startTime.format("YYYY-MM-DD");
} else {
// full-day event, multiple days
start = startTime.format("YYYY-MM-DD");
end = endTime.format("YYYY-MM-DD");
}
}
// create object for calendar widget
calList.push({
name: item.event,
color: getMyCalendarColor(calendarName),
colorText: getMyCalendarTextColor(calendarName),
start: start,
end: end
})
}
function getMyCalendarColor(calendarName) {
// assign colors via the calendar names, use calendar name as set in ical
if (calendarName === 'Jörg') {
return '#58ACFA';
} else if (calendarName === 'Simone') {
return '#E2A9F3'
} else if (calendarName === 'Müllentsorgung') {
return '#ffffdf'
} else if (calendarName === 'Feiertage') {
return '#FA5882'
} else if (calendarName === 'Ferien') {
return '#fdfdfd'
} else if (calendarName === 'Geburtstage') {
return '#81F79F'
}
}
function getMyCalendarTextColor(calendarName) {
// assign colors via the calendar names, use calendar name as set in ical
if (calendarName === 'Jörg') {
return '#FFFFFF';
} else if (calendarName === 'Simone') {
return '#111111'
} else if (calendarName === 'Müllentsorgung') {
return '#111111'
} else if (calendarName === 'Feiertage') {
return '#111111'
} else if (calendarName === 'Ferien') {
return '#111111'
} else if (calendarName === 'Geburtstage') {
return '#111111'
}
}
}
// Enter the destination data point that is to be used as object ID in the widget
setState(datapointId, JSON.stringify(calList), true);
}
} catch (e) {
console.error(`ical2MaterialDesignCalendarWidget: message: ${e.message}, stack: ${e.stack}`);
}
}
ical2CalendarWidget();`
Im Log spukt er folgenden Fehler aus:
javascript.0 (2992) script.js.common.Kalender.Skript_2: ical2MaterialDesignCalendarWidget: message: Cannot read property 'split' of undefined, stack: TypeError: Cannot read property 'split' of undefined at ical2CalendarWidget (script.js.common.Kalender.Skript_2:60:52) at script.js.common.Kalender.Skript_2:208:1 at script.js.common.Kalender.Skript_2:209:3 at Script.runInContext (vm.js:131:20) at Script.runInNewContext (vm.js:137:17) at execute (C:\iobroker\SmartHome\node_modules\iobroker.javascript\main.js:1483:27) at prepareScript (C:\iobroker\SmartHome\node_modules\iobroker.javascript\main.js:1691:38) at C:\iobroker\SmartHome\node_modules\iobroker.javascript\main.js:1791:17 at Immediate._onImmediate (C:\iobroker\SmartHome\node_modules\iobroker.javascript\main.js:1281:17) at processImmediate (internal/timers.js:458:21)
Widget Export:
[{"tpl":"tplVis-materialdesign-Calendar","data":{"oid":"javascript.0.scriptEnabled.common.Kalender.ical2calendar2","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","calendarView":"month","vibrateOnMobilDevices":"50","calendarWeekdays":"1,2,3,4,5,6,0","calendarDayButtonMonthViewGoTo":"day","calendarDayButtonWeekViewGoTo":"day","calendarDayButtonDayViewGoTo":"month","controlShow":false,"controlButtonLayout":"text","controlPosition":"stretch","controlShowLabel":false,"calendarTimeAxisShortIntervals":"true","calendarEventOverlapMode":"stack","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"calendarDayBackgroundColor":"rgba(1,1,1,0.6)","calendarDayLabelFontFamily":"Jura-Regular","calendarDayLabelTodayFontFamily":"Jura-Regular","calendarDayLabelFontColor":"white","calendarBorderColor":"grey","controlIconSize":"25","calendarTimeAxisHeight":"41","calendarShortWeekdays":false,"calendarDayBackgroundOutsideColor":"rgba(1,1,1,0.8)","calendarHeaderBackground":"rgba(1,1,1,0.2)","class":"","calendarDayLabelPreviousFontColor":"lightgrey","calendarDayLabelTodayFontColor":"white","calendarDayButtonTodayFontColor":"white","calendarDayLabelTodayFontSize":"25","calendarDayLabelFontSize":"20","calendarDayButtonFontSize":"20","calendarDayButtonFontColor":"white","calendarDayButtonTodayColor":"#fa760f","calendarDayButtonTodayFontSize":"30","calendarDayButtonTodayFontFamily":"Jura-Regular","calendarDayButtonFontFamily":"Jura-Regular","controlMinWidth":"1","controlButtonColor":"rgba(1,1,1,0.4)","controlIconColor":"white","controlTextSize":"20","controlTextFont":"Jura-Regular","controlTextColor":"White","calendarTimeAxisFont":"Jura-Regular","calendarTimeAxisFontSize":"19","calendarTimeAxisFontColor":"white","calendarTimeAxisStartTime":"6","calendarTimeAxisEndTime":"24","calendarTimeAxisIntervalMinutes":"60","calendarEventHeight":"20","calendarEventFontSize":"14","calendarEventFont":"Jura-Regular","calendarTimeAxisBackgroundColor":"rgba(1,1,1,0.5)","calendarTimeAxisHeaderBackgroundColor":"rgba(1,1,1,0.3)","calendarTimeAxisWidth":"119","calendarDayButtonColor":"","calendarWeeksNumbersShow":"true","calendarWeeksNumbersBackground":"rgba(1,1,1,0.1)","calendarWeeksNumbersFontSize":"20","calendarWeeksNumbersFont":"Jura-Medium","calendarWeeksNumbersFontColor":"white","calendarDayButtonRippleEffectColor":"{mode:vis-materialdesign.0.colors.darkTheme;light:vis-materialdesign.0.colors.light.calendar.button_hover;dark:vis-materialdesign.0.colors.dark.calendar.button_hover; mode === \"true\" ? dark : light}","controlButtonRippelEffectColor":"{mode:vis-materialdesign.0.colors.darkTheme;light:vis-materialdesign.0.colors.light.calendar.control_panel_hover;dark:vis-materialdesign.0.colors.dark.calendar.control_panel_hover; mode === \"true\" ? dark : light}"},"style":{"left":"10px","top":"467px","width":"880px","height":"714px","border-radius":"15px","z-index":"50"},"widgetSet":"materialdesign"}]
Ganztägig eingestellte Serientermine (Geburtstage) werden im Calendar-widget über 2 Tage dargestellt.
Ganztägige, einmalige Termine werden richtig angezeigt.