<!DOCTYPE html>
<html style="height: 100%;">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="utf-8" />
<title>https://github.com/SAP/openui5/issues/3004</title>
<script id="sap-ui-bootstrap"
src="https://openui5nightly.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-theme="sap_fiori_3"
data-sap-ui-libs="sap.m"
data-sap-ui-async="true"
data-sap-ui-modules="sap/ui/thirdparty/datajs,sap/ui/thirdparty/sinon"
data-sap-ui-oninit="module:demo/init"
data-sap-ui-resourceroots='{ "demo": "./" }'
data-sap-ui-compatversion="edge"
data-sap-ui-excludejquerycompat="true"
data-sap-ui-xx-waitfortheme="init"
></script>
</head>
<body id="content" class="sapUiBody"></body>
</html>
sap.ui.require([
"demo/localService/mockServer",
"sap/ui/model/odata/v2/ODataModel",
"sap/ui/core/mvc/XMLView",
], async (mockServer, ODataModel, XMLView) => {
"use strict";
mockServer.init();
const view = await XMLView.create({
id: "demo",
viewName: "demo.view.App",
height: "100%",
models: new ODataModel("/sampleService/"),
});
view.placeAt("content");
});
sap.ui.define([
"sap/ui/core/util/MockServer",
], function (MockServer) {
"use strict";
return {
init: function () {
// create
var oMockServer = new MockServer({
rootUri: "/sampleService/",
recordRequests: false,
});
MockServer.config({
autoRespond: true,
autoRespondAfter: 0,
});
// simulate
var sPath = "./localService";
oMockServer.simulate(sPath + "/metadata.xml", sPath + "/mockData");
// start
oMockServer.start();
}
};
});
[
{
"carrid":"AC",
"connid":"0820",
"fldate":"/Date(1579132800000)/"
},
{
"carrid":"AF",
"connid":"0820",
"fldate":"/Date(1040601600000)/"
}
]
[
{
"carrid": "AC",
"CARRNAME": "Air Canada"
},
{
"carrid": "AF",
"CARRNAME": "Air France"
}
]
<?xml version="1.0" encoding="UTF-8"?>
<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" Version="1.0">
<edmx:DataServices m:DataServiceVersion="2.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="RMTSAMPLEFLIGHT">
<EntityType Name="Flight">
<Key>
<PropertyRef Name="carrid" />
<PropertyRef Name="connid" />
<PropertyRef Name="fldate" />
</Key>
<Property Name="carrid" Type="Edm.String" Nullable="false" MaxLength="3" />
<Property Name="connid" Type="Edm.String" Nullable="false" MaxLength="4" />
<Property Name="fldate" Type="Edm.DateTime" Nullable="false" Precision="0" />
<NavigationProperty Name="FlightCarrier" Relationship="RMTSAMPLEFLIGHT.CarrierToFlight" FromRole="ToRole_CarrierToFlight" ToRole="FromRole_CarrierToFlight" />
</EntityType>
<EntityType Name="Carrier" m:HasStream="true">
<Key>
<PropertyRef Name="carrid" />
</Key>
<Property Name="carrid" Type="Edm.String" Nullable="false" MaxLength="3" />
<Property Name="CARRNAME" Type="Edm.String" MaxLength="20" />
<NavigationProperty Name="carrierFlights" Relationship="RMTSAMPLEFLIGHT.CarrierToFlight" FromRole="FromRole_CarrierToFlight" ToRole="ToRole_CarrierToFlight" />
</EntityType>
<Association Name="CarrierToFlight">
<End Type="RMTSAMPLEFLIGHT.Carrier" Multiplicity="1" Role="FromRole_CarrierToFlight" />
<End Type="RMTSAMPLEFLIGHT.Flight" Multiplicity="*" Role="ToRole_CarrierToFlight" />
<ReferentialConstraint>
<Principal Role="FromRole_CarrierToFlight">
<PropertyRef Name="carrid" />
</Principal>
<Dependent Role="ToRole_CarrierToFlight">
<PropertyRef Name="carrid" />
</Dependent>
</ReferentialConstraint>
</Association>
<EntityContainer Name="RMTSAMPLEFLIGHT_Entities" m:IsDefaultEntityContainer="true">
<EntitySet Name="CarrierCollection" EntityType="RMTSAMPLEFLIGHT.Carrier" />
<EntitySet Name="FlightCollection" EntityType="RMTSAMPLEFLIGHT.Flight" />
<AssociationSet Name="CarrierToFlight_AssocSet" Association="RMTSAMPLEFLIGHT.CarrierToFlight">
<End EntitySet="CarrierCollection" Role="FromRole_CarrierToFlight" />
<End EntitySet="FlightCollection" Role="ToRole_CarrierToFlight" />
</AssociationSet>
</EntityContainer>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" href="https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/$metadata" />
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="latest-version" href="https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/$metadata" />
</Schema>
</edmx:DataServices>
</edmx:Edmx>
<mvc:View controllerName="demo.controller.App"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m"
xmlns:core="sap.ui.core"
core:require="{
ODataTypeDateTime: 'sap/ui/model/odata/type/DateTime'
}"
>
<App autoFocus="false">
<Page title="Filtering on expanded entity property">
<headerContent>
<SearchField search=".handleSearch(${$parameters>/query}.trim())"/>
</headerContent>
<Table id="myTable"
growing="true"
items="{
path: '/FlightCollection',
templateShareable: false,
parameters: {
expand: 'FlightCarrier'
}
}">
<columns>
<Column>
<Text text="Carrier" />
</Column>
<Column>
<Text text="Flight Number" />
</Column>
<Column>
<Text text="Flight Date" />
</Column>
</columns>
<ColumnListItem>
<Text text="{FlightCarrier/CARRNAME}" />
<Text text="{carrid}" />
<Text text="{
path: 'fldate',
type: 'ODataTypeDateTime',
constraints: { displayFormat: 'Date' }
}" />
</ColumnListItem>
</Table>
</Page>
</App>
</mvc:View>
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/Filter",
"sap/ui/model/FilterOperator",
], function(Controller, Filter, FilterOperator) {
"use strict";
return Controller.extend("demo.controller.App", {
handleSearch: function(query) {
const filter = query ? new Filter({
path: "FlightCarrier/CARRNAME",
operator: FilterOperator.Contains,
value1: query,
}) : [];
this.byId("myTable").getBinding("items").filter(filter, "Application");
},
});
});