Scrounger / ioBroker.vis-materialdesign

ioBroker Material Design Widgets are based on Google's material design guidelines. The adapter uses different libraries.
https://forum.iobroker.net/topic/42185/test-adapter-material-design-widgets-v0-5-x
MIT License
59 stars 38 forks source link

calendar-widget: Ganztägige Serientermine werde nicht richtig angezeigt #144

Open Joerg82 opened 3 years ago

Joerg82 commented 3 years ago

Ganztägig eingestellte Serientermine (Geburtstage) werden im Calendar-widget über 2 Tage dargestellt.

Ganztägige, einmalige Termine werden richtig angezeigt.

grafik

Scrounger commented 3 years ago

folgendes wird benötigt:

Joerg82 commented 3 years ago

@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"}]