SAPUI5 Календарь планирования OData V4 - PullRequest
0 голосов
/ 23 мая 2019

Я хотел бы отобразить элемент события в UI5 PlanningCalendar с oData V4, но есть проблема.

OData V4 имеет этот тип метаданных для StartDate и EndDate как Edm.Date:

.

enter image description here

Я получил это сообщение об ошибке при использовании данных:

enter image description here

Это фактические данные в oData V4:

enter image description here

И это XML-представление:

<mvc:View xmlns:mvc="sap.ui.core.mvc" controllerName="ARN.ARN.controller.AppPOR" xmlns="sap.m" xmlns:unified="sap.ui.unified"
xmlns:l="sap.ui.layout">
<Page showHeader="true" title="{i18n>ApplicationPlanofRecord}" showFooter="true" showNavButton="true" navButtonPress="doNavBack">
    <l:DynamicSideContent id="DynamicSideContent" class="sapUiDSCExplored sapUiContentPadding" sideContentVisibility="AlwaysShow"
        showSideContent="{path: 'stateModel&gt;/legendShown'}" containerQuery="true" breakpointChanged="updateToggleButtonState">
        <l:mainContent>
            <VBox>
                <PlanningCalendar id="por" startDate="{/startDate}"
                    rows="{model: 'zearnModel', path: '/zearn_por_applications', 
                                           parameters : {$expand : 'EventItem'},
                                           sorter: [{ path: 'APPLICATION_ID', descending: false}], 
                                           events: {dataReceived : '.onDataEvents' }, templateShareable:true}"
                    legend="PlanningCalendarLegend" appointmentsVisualization="Filled" appointmentSelect="handleAppointmentSelect"
                    showEmptyIntervalHeaders="false" viewKey="M">
                    <toolbarContent>
                        <ToolbarSpacer/>
                        <ToggleButton pressed="{path: 'stateModel>/legendShown'}" icon="sap-icon://legend" tooltip="Legend"/>
                    </toolbarContent>
                    <views>
                        <PlanningCalendarView key="D" intervalType="Day" description="{i18n>WeekView}" intervalsS="1" intervalsM="3" intervalsL="7"
                            showSubIntervals="true"></PlanningCalendarView>
                        <PlanningCalendarView key="M" intervalType="Month" description="{i18n>MonthView}" intervalsS="1" intervalsM="1" intervalsL="1"
                            showSubIntervals="true"></PlanningCalendarView>
                        <PlanningCalendarView key="Y" intervalType="Month" description="{i18n>YearlyView}" intervalsS="60" intervalsM="60" intervalsL="60"
                            showSubIntervals="true"></PlanningCalendarView>
                        <PlanningCalendarView key="Q" intervalType="Month" description="{i18n>QuarterlyView}" intervalsS="4" intervalsM="4" intervalsL="4"
                            showSubIntervals="true"></PlanningCalendarView>
                    </views>
                    <rows>
                        <PlanningCalendarRow title="{zearnModel>PRODUCT_NAME_SHORT}"
                            appointments="{model: 'zearnModel', path : 'EventItem', templateShareable: 'true'}"
                            text="{zearnModel>PRODUCT_NAME_CAPTION}}" icon="" selected="false">
                            <appointments>
                                <unified:CalendarAppointment title="{zearnModel>EVENT_DESC}" text="{zearnModel>EVENTTYPE_DESC}" icon="sap-icon://family-care"
                                    startDate="{path: 'zearnModel>STARTDATE', type: 'sap.ui.model.odata.type.Date', formatter: '.formatter.date'}"
                                    endDate="{path: 'zearnModel>ENDDATE', type: 'sap.ui.model.odata.type.Date', formatter: '.formatter.date'}"
                                    type="{path: 'zearnModel>EVENTTYPE_DESC', formatter: '.formatter.PORType'}" selected="false" tentative="false"/>
                            </appointments>
                        </PlanningCalendarRow>
                    </rows>
                </PlanningCalendar>
            </VBox>
        </l:mainContent>
        <l:sideContent width="200px">
            <PlanningCalendarLegend id="PlanningCalendarLegend" appointmentItems="{path : '/legendAppointmentItems', templateShareable: 'true'}"
                standardItems="Today">
                <appointmentItems>
                    <unified:CalendarLegendItem text="{text}" type="{type}" tooltip="{text}"/>
                </appointmentItems>
            </PlanningCalendarLegend>
        </l:sideContent>
    </l:DynamicSideContent>
    <headerContent>
        <OverflowToolbarButton text="{i18n>Plan}" type="Default" icon="sap-icon://filter" iconFirst="true" width="auto" enabled="true"
            visible="true" iconDensityAware="false" press="onSearchDialog" tooltip="{i18n>Filter}"/>
    </headerContent>
    <subHeader/>
    <customHeader/>
</Page>

И код formatter.js:

    sap.ui.define([
    ], function () {
        "use strict";

        return {

            PORType: function (type) {
                return type; //for testing only.
            },

            date: function(date) {
                console.log("XXXXXXXXXXXX");
                console.log(date);
                return new Date(date); //for testing only
            }           
        };
    }
);

Я также чувствую, что функция форматирования не вызывается, UI5 просто выдает ошибку "невозможно прочитать свойство getTime" без предварительного форматирования. Это ошибка?

Что я здесь не так делаю?

...