Skip to content

Commit

Permalink
Added everything for Step 11: Assign Multiple Targets
Browse files Browse the repository at this point in the history
  • Loading branch information
wridgeu committed Apr 4, 2020
1 parent 7b53705 commit 6795425
Show file tree
Hide file tree
Showing 10 changed files with 257 additions and 3 deletions.
3 changes: 3 additions & 0 deletions webapp/controller/Home.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ sap.ui.define([
},
onNavToEmployees: function () {
this.getRouter().navTo("employeeList");
},
onNavToEmployeeOverview : function () {
this.getRouter().navTo("employeeOverview");
}
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
sap.ui.define([
"com/mrb/UI5-Navigation-and-Routing/controller/BaseController"
], function (BaseController) {
"use strict";
return BaseController.extend("com.mrb.UI5-Navigation-and-Routing.controller.employee.overview.EmployeeOverview", {
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
sap.ui.define([
"com/mrb/UI5-Navigation-and-Routing/controller/BaseController",
"sap/ui/model/Filter",
"sap/ui/model/FilterOperator",
"sap/ui/model/Sorter",
"sap/m/ViewSettingsDialog",
"sap/m/ViewSettingsItem"
], function(
BaseController,
Filter,
FilterOperator,
Sorter,
ViewSettingsDialog,
ViewSettingsItem
) {
"use strict";

return BaseController.extend("com.mrb.UI5-Navigation-and-Routing.controller.employee.overview.EmployeeOverviewContent", {

onInit: function () {
this._oTable = this.byId("employeesTable");
this._oVSD = null;
this._sSortField = null;
this._bSortDescending = false;
this._aValidSortFields = ["EmployeeID", "FirstName", "LastName"];
this._sSearchQuery = null;

this._initViewSettingsDialog();
},

onSortButtonPressed : function () {
this._oVSD.open();
},

onSearchEmployeesTable : function (oEvent) {
this._applySearchFilter( oEvent.getSource().getValue() );
},

_initViewSettingsDialog : function () {
this._oVSD = new ViewSettingsDialog("vsd", {
confirm: function (oEvent) {
var oSortItem = oEvent.getParameter("sortItem");
this._applySorter(oSortItem.getKey(), oEvent.getParameter("sortDescending"));
}.bind(this)
});

// init sorting (with simple sorters as custom data for all fields)
this._oVSD.addSortItem(new ViewSettingsItem({
key: "EmployeeID",
text: "Employee ID",
selected: true // by default the MockData is sorted by EmployeeID
}));

this._oVSD.addSortItem(new ViewSettingsItem({
key: "FirstName",
text: "First Name",
selected: false
}));

this._oVSD.addSortItem(new ViewSettingsItem({
key: "LastName",
text: "Last Name",
selected: false
}));
},

_applySearchFilter : function (sSearchQuery) {
var aFilters, oFilter, oBinding;

// first check if we already have this search value
if (this._sSearchQuery === sSearchQuery) {
return;
}
this._sSearchQuery = sSearchQuery;
this.byId("searchField").setValue(sSearchQuery);

// add filters for search
aFilters = [];
if (sSearchQuery && sSearchQuery.length > 0) {
aFilters.push(new Filter("FirstName", FilterOperator.Contains, sSearchQuery));
aFilters.push(new Filter("LastName", FilterOperator.Contains, sSearchQuery));
oFilter = new Filter({ filters: aFilters, and: false }); // OR filter
} else {
oFilter = null;
}

// update list binding
oBinding = this._oTable.getBinding("items");
oBinding.filter(oFilter, "Application");
},

/**
* Applies sorting on our table control.
* @param {string} sSortField the name of the field used for sorting
* @param {string} sortDescending true or false as a string or boolean value to specify a descending sorting
* @private
*/
_applySorter : function (sSortField, sortDescending){
var bSortDescending, oBinding, oSorter;

// only continue if we have a valid sort field
if (sSortField && this._aValidSortFields.indexOf(sSortField) > -1) {

// convert the sort order to a boolean value
if (typeof sortDescending === "string") {
bSortDescending = sortDescending === "true";
} else if (typeof sortDescending === "boolean") {
bSortDescending = sortDescending;
} else {
bSortDescending = false;
}

// sort only if the sorter has changed
if (this._sSortField && this._sSortField === sSortField && this._bSortDescending === bSortDescending) {
return;
}

this._sSortField = sSortField;
this._bSortDescending = bSortDescending;
oSorter = new Sorter(sSortField, bSortDescending);

// sync with View Settings Dialog
this._syncViewSettingsDialogSorter(sSortField, bSortDescending);

oBinding = this._oTable.getBinding("items");
oBinding.sort(oSorter);
}
},

_syncViewSettingsDialogSorter : function (sSortField, bSortDescending) {
// the possible keys are: "EmployeeID" | "FirstName" | "LastName"
// Note: no input validation is implemented here
this._oVSD.setSelectedSortItem(sSortField);
this._oVSD.setSortDescending(bSortDescending);
}

});

});
10 changes: 9 additions & 1 deletion webapp/i18n/i18n.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,12 @@ tabProjects=Projects
tabHobbies=Hobbies
tabNotes=Notes
FlipToResume=Flip to Resume
FlipToResume.tooltip=See the resume of this employee
FlipToResume.tooltip=See the resume of this employee
#Step 11
EmployeeOverview=Employee Overview
ShowEmployeeOverview=Show Employee Overview
EmployeeOverviewTop=Employee Overview Top
Region=Region
EmployeeID=Employee ID
Phone=Phone
Employees=Employees
10 changes: 9 additions & 1 deletion webapp/i18n/i18n_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,12 @@ tabProjects=Projects
tabHobbies=Hobbies
tabNotes=Notes
FlipToResume=Flip to Resume
FlipToResume.tooltip=See the resume of this employee
FlipToResume.tooltip=See the resume of this employee
#Step 11
EmployeeOverview=Employee Overview
ShowEmployeeOverview=Show Employee Overview
EmployeeOverviewTop=Employee Overview Top
Region=Region
EmployeeID=Employee ID
Phone=Phone
Employees=Employees
30 changes: 30 additions & 0 deletions webapp/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@
"pattern": "employees",
"target": "employees"
},
{
"pattern": "employees/overview",
"name": "employeeOverview",
"target": [
"employeeOverviewTop",
"employeeOverviewContent"
]
},
{
"pattern": "employees/{employeeId}",
"name": "employee",
Expand Down Expand Up @@ -158,6 +166,28 @@
"viewName": "ResumeNotes",
"controlId": "notesTab",
"controlAggregation": "content"
},
"employeeOverview": {
"viewId": "employeeOverview",
"viewPath": "com.mrb.UI5-Navigation-and-Routing.view.employee.overview",
"viewName": "EmployeeOverview",
"viewLevel": 2
},
"employeeOverviewTop": {
"viewId": "employeeOverviewTop",
"parent": "employeeOverview",
"viewPath": "com.mrb.UI5-Navigation-and-Routing.view.employee.overview",
"viewName": "EmployeeOverviewTop",
"controlId": "EmployeeOverviewParent",
"controlAggregation": "content"
},
"employeeOverviewContent": {
"viewId": "employeeOverviewContent",
"parent": "employeeOverview",
"viewPath": "com.mrb.UI5-Navigation-and-Routing.view.employee.overview",
"viewName": "EmployeeOverviewContent",
"controlId": "EmployeeOverviewParent",
"controlAggregation": "content"
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion webapp/view/Home.view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<content>
<Button id="displayNotFoundBtn" text="{i18n>DisplayNotFound}" press=".onDisplayNotFound" class="sapUiTinyMarginEnd"/>
<Button id="employeeListBtn" text="{i18n>ShowEmployeeList}" press=".onNavToEmployees" class="sapUiTinyMarginEnd"/>
</content>
<Button id="employeeOverviewBtn" text="{i18n>ShowEmployeeOverview}" press=".onNavToEmployeeOverview" class="sapUiTinyMarginEnd"/>
</content>
</Page>
</mvc:View>
13 changes: 13 additions & 0 deletions webapp/view/employee/overview/EmployeeOverview.view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<mvc:View
controllerName="com.mrb.UI5-Navigation-and-Routing.controller.employee.overview.EmployeeOverview"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Page id="EmployeeOverviewParent" title="{i18n>EmployeeOverview}"
showNavButton="true"
navButtonPress=".onNavBack"
class="sapUiResponsiveContentPadding">
<content>
<!-- inserted by routing -->
</content>
</Page>
</mvc:View>
42 changes: 42 additions & 0 deletions webapp/view/employee/overview/EmployeeOverviewContent.view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<mvc:View
controllerName="com.mrb.UI5-Navigation-and-Routing.controller.employee.overview.EmployeeOverviewContent"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Table id="employeesTable"
items="{/Employees}">
<headerToolbar>
<Toolbar>
<Title text="{i18n>Employees}" level="H2"/>
<ToolbarSpacer />
<SearchField id="searchField" search=".onSearchEmployeesTable" width="50%"/>
<Button icon="sap-icon://sort" press=".onSortButtonPressed"/>
</Toolbar>
</headerToolbar>
<columns>
<Column id="employeeIDCol"><Text text="{i18n>EmployeeID}"/></Column>
<Column id="firstNameCol" demandPopin="true"><Text text="{i18n>FirstName}"/></Column>
<Column id="lastNameCol" demandPopin="true"><Text text="{i18n>LastName}"/></Column>
<Column id="addressCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>Address}"/></Column>
<Column id="cityCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>City}"/></Column>
<Column id="regionCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>Region}"/></Column>
<Column id="postalCodeCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>PostalCode}"/></Column>
<Column id="countryCol" minScreenWidth="Tablet" demandPopin="true"><Text text="{i18n>Country}"/></Column>
<Column id="homePhoneCol" minScreenWidth="Tablet" demandPopin="true" hAlign="Right"><Text text="{i18n>Phone}"/></Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Text text="{EmployeeID}"/>
<Text text="{FirstName}"/>
<Text text="{LastName}"/>
<Text text="{Address}"/>
<Text text="{City}"/>
<Text text="{Region}"/>
<Text text="{PostalCode}"/>
<Text text="{Country}"/>
<Text text="{HomePhone}"/>
</cells>
</ColumnListItem>
</items>
</Table>
</mvc:View>
3 changes: 3 additions & 0 deletions webapp/view/employee/overview/EmployeeOverviewTop.view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<mvc:View xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc" class="sapUiMediumMarginBottom">
<Title text="{i18n>EmployeeOverviewTop}"/>
</mvc:View>

0 comments on commit 6795425

Please sign in to comment.