Personalisieren von Benutzereinstellungen

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

}