Ein Benutzer nimmt an einer Fiori Anwendung bestimmte Einstellungen vor. Beispielsweise selektiert er in einem Drop Down Menü, dass er nur bestimmte Arbeitsplätze bearbeiten möchte. Diese Auswahl soll dauerhaft gespeichert werden, bis der Benutzer eine neue Auswahl trifft. Dabei sollen die Einstellungen auch beibehalten werden, wenn er die Anwendung verlässt und später erneut aufruft.
Lösung
Hierzu kann der Personalisierungsdienst der UIShell verwendet werden. Dieser kann beispielsweise wie folgt in der Components.js oder in der controller.js implementiert werden
Service Instanz erstellen
Diese Methode dient zum Erstellen einer Instanz zum SAP UIShell Service
getPersonalizationInstance: function () {
// Beschaffen der Instanz zum Service
var oPersonalizationService = sap.ushell.Container.getService("Personalization");
var oComponent = sap.ui.core.Component.getOwnerComponentFor(this.getView());
var oScope = {
keyCategory: oPersonalizationService.constants.keyCategory.FIXED_KEY,
writeFrequency: oPersonalizationService.constants.writeFrequency.LOW,
clientStorageAllowed: true
};
// Schlüssel für die Personalisierung erstellen
var oPersId = {
container: "myContainer",
item: "myItem"
};
// Personalizer Instanz erstellen
var oPersonalizer = oPersonalizationService.getPersonalizer(oPersId, oScope, oComponent);
return oPersonalizer;
},
Lesen der Personalisierung
getPersonalization: function () {
var oPersonalizer = this.getPersonalizationInstance();
var test = {
Test: "5"
};
var oReadPromise = oPersonalizer.getPersData()
.done(function (oPersData) {
test.Test = test.Test + 1;
})
.fail(function () {
jQuery.sap.log.error("Reading personalization data failed.");
});
},
Schreiben der Personalisierung
savePersonalization: function () {
var oPersonalizer = this.getPersonalizationInstance();
var oSavePromise = oPersonalizer.setPersData(test)
.done(function () {
// Tell the user that the data was saved
})
.fail(function () {
jQuery.sap.log.error("Writing personalization data failed.");
});
}