From b8a795e06d064fa9b918b0f772ac5284c951ef6b Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Sat, 15 Sep 2018 08:14:31 +0200 Subject: [PATCH] Calendar Setup --- .../Appointment_entity/Appointment_entity.aod | 40 +++++++++++++ entity/Appointment_entity/contentProcess.js | 29 +++++---- .../entityfields/begin/valueProcess.js | 0 .../classification/possibleItemsProcess.js | 6 ++ .../classification/valueProcess.js | 0 .../entityfields/end/valueProcess.js | 0 .../entityfields/startend/valueProcess.js | 59 +++++++++++++++++++ .../status/possibleItemsProcess.js | 24 ++++++++ .../entityfields/summary/valueProcess.js | 4 -- entity/Appointment_entity/onInsert.js | 3 + entity/Appointment_entity/onUpdate.js | 10 +++- .../AppointmentEdit_view.aod | 11 ++-- .../AppointmentPreview_view.aod | 8 ++- 13 files changed, 166 insertions(+), 28 deletions(-) create mode 100644 entity/Appointment_entity/entityfields/begin/valueProcess.js create mode 100644 entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js create mode 100644 entity/Appointment_entity/entityfields/classification/valueProcess.js create mode 100644 entity/Appointment_entity/entityfields/end/valueProcess.js create mode 100644 entity/Appointment_entity/entityfields/startend/valueProcess.js create mode 100644 entity/Appointment_entity/entityfields/status/possibleItemsProcess.js diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod index bd143b765e..9992bec4e3 100644 --- a/entity/Appointment_entity/Appointment_entity.aod +++ b/entity/Appointment_entity/Appointment_entity.aod @@ -20,6 +20,7 @@ <element>DESCRIPTION</element> <element>LOCATION</element> <element>ICON</element> + <element>CLASSIFICATION</element> </fields> <contentProcess>%aditoprj%/entity/Appointment_entity/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/Appointment_entity/onInsert.js</onInsert> @@ -31,6 +32,7 @@ <entityField> <name>SUMMARY</name> <fieldName>SUBJECT</fieldName> + <caption>Betreff</caption> <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/summary/valueProcess.js</valueProcess> </entityField> <entityParameter> @@ -43,7 +45,45 @@ <fieldName>DESCRIPTION</fieldName> </entityField> <entityField> + <name>CLASSIFICATION</name> + <fieldName>CLASSIFICATION</fieldName> + <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js</possibleItemsProcess> + <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>BEGIN</name> + <fieldName>STARTDATE</fieldName> + <selectionMode>SINGLE</selectionMode> + <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/begin/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>END</name> + <fieldName>ENDDATE</fieldName> + <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/end/valueProcess.js</valueProcess> + </entityField> + <entityFieldGroup> <name>STARTEND</name> + <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/startend/valueProcess.js</valueProcess> + <description>FIELDGROUP</description> + <fields> + <element>BEGIN</element> + <element>END</element> + </fields> + </entityFieldGroup> + <entityField> + <name>STATUS</name> + <fieldName>STATUS</fieldName> + <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess> + </entityField> + <entityField> + <name>LOCATION</name> + <fieldName>LOCATION</fieldName> + </entityField> + <entityField> + <name>REMINDER_CHECK</name> + </entityField> + <entityField> + <name>REMINDER</name> </entityField> </entityFields> </entity> diff --git a/entity/Appointment_entity/contentProcess.js b/entity/Appointment_entity/contentProcess.js index 6457081b56..c09809b137 100644 --- a/entity/Appointment_entity/contentProcess.js +++ b/entity/Appointment_entity/contentProcess.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.result"); import("system.vars"); import("system.calendars"); @@ -21,16 +22,19 @@ if(vars.exists("$image.entry")) var location = entry[calendars.LOCATION]; var reminder = entry[calendars.REMINDER]; var remindercheck = entry[calendars.HASREMINDER] + var classification = entry[calendars.CLASSIFICATION]; + + logging.log("contentproc: entry location:" + location + " desc: " + description + " summary: " + summary); //@TODO Icon result.object([ - [uid, '', '', attendees.length, startdate, enddate, summary, organizer, attendees, status, links, description, location, ''] //, location, reminder, remindercheck + [uid, '', '', attendees.length, startdate, enddate, summary, organizer, attendees, status, links, description, location, '', classification] //, location, reminder, remindercheck ]); } else { - + logging.log("contentproc: empty"); var filter = ( vars.exists("$param.p_filter") && vars.get("$param.p_filter") != null @@ -43,16 +47,15 @@ else ,USER_1: vars.get("$sys.user") ,COUNT: "1" }; - var entries = calendars.getExpandedEntries(cond, new Long(datetime.date()), new Long(eMath.addInt(datetime.date(), datetime.ONE_DAY * 7))); + //var entries = calendars.getExpandedEntries(cond, new Long(datetime.date()), new Long(eMath.addInt(datetime.date(), datetime.ONE_DAY * 7))); - for (i = 0; i < events.length; i++) - { - events[i].push([""]) - var count = events[i][3]; - var iconInfo = (count > 1 ? "gruppentermin" : "einzeltermin"); - var icon = (getIcon("termine_aufgaben", iconInfo)); - events[i] = events[i].concat(icon); - } - result.object(events); - + //for (i = 0; i < events.length; i++) + //{ + // events[i].push([""]) + // var count = events[i][3]; + // var iconInfo = (count > 1 ? "gruppentermin" : "einzeltermin"); + // var icon = (getIcon("termine_aufgaben", iconInfo)); + // events[i] = events[i].concat(icon); + //} + //result.object(events); } \ No newline at end of file diff --git a/entity/Appointment_entity/entityfields/begin/valueProcess.js b/entity/Appointment_entity/entityfields/begin/valueProcess.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js b/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js new file mode 100644 index 0000000000..7f8cf5bff3 --- /dev/null +++ b/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js @@ -0,0 +1,6 @@ +import("system.result"); + +var resObject = new Object(); +resObject["PRIVATE"] = "PRIVATE"; +resObject["PUBLIC"] = "PUBLIC"; +result.object( resObject ); \ No newline at end of file diff --git a/entity/Appointment_entity/entityfields/classification/valueProcess.js b/entity/Appointment_entity/entityfields/classification/valueProcess.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/entity/Appointment_entity/entityfields/end/valueProcess.js b/entity/Appointment_entity/entityfields/end/valueProcess.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/entity/Appointment_entity/entityfields/startend/valueProcess.js b/entity/Appointment_entity/entityfields/startend/valueProcess.js new file mode 100644 index 0000000000..5d76d8d6c6 --- /dev/null +++ b/entity/Appointment_entity/entityfields/startend/valueProcess.js @@ -0,0 +1,59 @@ +import("system.result"); +import("system.calendars"); +import("system.vars"); +import("system.datetime"); + +var startLong = vars.get("$field.BEGIN"); +var endLong = vars.get("$field.END"); + + +if(startLong != null && endLong != null) +{ + var startdate = datetime.toDate(startLong, "dd.MM.yyyy"); + var enddate = datetime.toDate(endLong, "dd.MM.yyyy"); + var starttime = datetime.toDate(startLong, "HH:mm"); + var endtime = datetime.toDate(endLong, "HH:mm"); + + //wenn der termin an einem tag beginnt UND endet + if(startdate == enddate) + { + if(datetime.isToday(startLong) || + datetime.isTomorrow(startLong)) + { + if(datetime.isToday(startLong)) + result.string("heute " + " | " + starttime + " - " + endtime + " Uhr"); + + if(datetime.isTomorrow(startLong)) + result.string("morgen " + " | " + starttime + " - " + endtime + " Uhr"); + } + else + result.string(startdate + " | " + starttime + " - " + endtime + " Uhr"); + + } + //wenn der termin über mehrere tage geht + else + { + var datebegin; + var dateend; + + if(datetime.isToday(startLong)) + datebegin = "heute"; + else if(datetime.isTomorrow(startLong)) + datebegin = "morgen"; + else + datebegin = startdate; + + if(datetime.isToday(endLong)) + dateend = "heute"; + else if(datetime.isTomorrow(endLong)) + dateend = "morgen"; + else + dateend = enddate; + + result.string(datebegin + " | " + starttime + " Uhr - " + dateend + " | " + endtime + " Uhr"); + } +} +else +{ + result.string(""); +} \ No newline at end of file diff --git a/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js b/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js new file mode 100644 index 0000000000..74fdc79b4a --- /dev/null +++ b/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js @@ -0,0 +1,24 @@ +import("system.logging"); +import("system.result"); +import("system.translate"); +import("system.calendars"); + +if( calendars.getBackendType() != calendars.BACKEND_EXCHANGEWS ) +{ + logging.log("possible items: if") + + result.object( [ [calendars.STATUS_TENTATIVE, translate.text("Vorläufig")] + , [calendars.STATUS_CONFIRMED, translate.text("Bestätigt")] + , [calendars.STATUS_CANCELLED, translate.text("Abgesagt")] + ] ); +} +else +{ + logging.log("possible items: else") + + result.object( [ [calendars.STATUS_TENTATIVE, translate.text("Vorläufig")] + , [calendars.STATUS_BUSY, translate.text("Gebucht")] + , [calendars.STATUS_OOF, translate.text("Außer Haus")] + , [calendars.STATUS_FREE, translate.text("frei")] + ] ); +} \ No newline at end of file diff --git a/entity/Appointment_entity/entityfields/summary/valueProcess.js b/entity/Appointment_entity/entityfields/summary/valueProcess.js index e8dc52cb18..d3f5a12faa 100644 --- a/entity/Appointment_entity/entityfields/summary/valueProcess.js +++ b/entity/Appointment_entity/entityfields/summary/valueProcess.js @@ -1,5 +1 @@ -import("system.result"); -import("system.vars"); -var sum = vars.getString("$field.SUMMARY"); -result.string(sum); \ No newline at end of file diff --git a/entity/Appointment_entity/onInsert.js b/entity/Appointment_entity/onInsert.js index 0dd49954c3..a5258b7fec 100644 --- a/entity/Appointment_entity/onInsert.js +++ b/entity/Appointment_entity/onInsert.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.neon"); import("system.calendars"); import("system.vars"); @@ -9,6 +10,8 @@ import("system.db"); import("system.result"); import("system.tools"); +logging.log("on insert"); + // Dieser Prozess speichert die im Frame angezeigten Daten // Je nach Modus (INSERT, EDIT) wird ein neuer Datensatz angelegt oder der alte editiert var event = vars.get("$image.entry"); diff --git a/entity/Appointment_entity/onUpdate.js b/entity/Appointment_entity/onUpdate.js index 77ab68ffa7..95a51ce1a5 100644 --- a/entity/Appointment_entity/onUpdate.js +++ b/entity/Appointment_entity/onUpdate.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.neon"); import("system.calendars"); import("system.vars"); @@ -10,6 +11,9 @@ import("system.db"); import("system.result"); import("system.tools"); + +logging.log("on update"); + // Dieser Prozess speichert die im Frame angezeigten Daten // Je nach Modus (INSERT, EDIT) wird ein neuer Datensatz angelegt oder der alte editiert if(vars.exists("$image.entry")) @@ -26,11 +30,11 @@ if(vars.exists("$image.entry")) { event[calendars.TYPE] = calendars.VEVENT; event[calendars.STATUS] = vars.getString("$field.STATUS"); - event[calendars.SUMMARY] = vars.getString("$field.SUBJECT"); + event[calendars.SUMMARY] = vars.getString("$field.SUMMARY"); event[calendars.LOCATION] = vars.get("$field.LOCATION"); event[calendars.DESCRIPTION] = vars.get("$field.DESCRIPTION"); - event[calendars.DTSTART] = vars.get("$field.STARTDATE"); - event[calendars.DTEND] = vars.get("$field.ENDDATE"); + event[calendars.DTSTART] = vars.get("$field.BEGIN"); + event[calendars.DTEND] = vars.get("$field.END"); event[calendars.HASREMINDER] = "false"; var hasReminder = vars.get("$field.REMINDER_CHECK"); if (hasReminder == "true") diff --git a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod index 8bb02c87b7..e43e16d398 100644 --- a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod +++ b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod @@ -11,13 +11,14 @@ <appointmentEditViewTemplate> <name>AppointmentEditTemplate</name> <summaryField>SUMMARY</summaryField> - <beginField>SUMMARY</beginField> - <endField>SUMMARY</endField> + <descriptionField>DESCRIPTION</descriptionField> + <beginField>BEGIN</beginField> + <endField>END</endField> <affectedUsersField>SUMMARY</affectedUsersField> <attendeesField>SUMMARY</attendeesField> - <privateField>SUMMARY</privateField> - <statusField>SUMMARY</statusField> - <locationField>SUMMARY</locationField> + <privateField>CLASSIFICATION</privateField> + <statusField>STATUS</statusField> + <locationField>LOCATION</locationField> <entityField>#ENTITY</entityField> </appointmentEditViewTemplate> </children> diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod index 2d360e85af..4e5e5e466f 100644 --- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod +++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod @@ -11,11 +11,13 @@ <appointmentPreviewViewTemplate> <name>AppointmentPreviewTemplate</name> <summaryField>SUMMARY</summaryField> - <periodField>SUMMARY</periodField> + <descriptionField>DESCRIPTION</descriptionField> + <periodField>STARTEND</periodField> <affectedUsersField>SUMMARY</affectedUsersField> <attendeesField>SUMMARY</attendeesField> - <privateField>SUMMARY</privateField> - <statusField>SUMMARY</statusField> + <privateField>CLASSIFICATION</privateField> + <statusField>STATUS</statusField> + <locationField>LOCATION</locationField> <entityField>#ENTITY</entityField> </appointmentPreviewViewTemplate> </children> -- GitLab