Я хотел бы отобразить элемент события в UI5 PlanningCalendar с oData V4, но есть проблема.
OData V4 имеет этот тип метаданных для StartDate и EndDate как Edm.Date:
.
Я получил это сообщение об ошибке при использовании данных:
Это фактические данные в oData V4:
И это 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>/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" без предварительного форматирования. Это ошибка?
Что я здесь не так делаю?