<!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");
    },
    
  });
});