sap.m.table Personalization

Über Table Personalization kann das Layout der Tabelle durch den Benutzer eingestellt werden. Dies ist vergleichbar mit den Layouts bei ALV Listen.

Umsetzung

Controller.js

Um die Funktion zu aktivieren, kann im Kontroller diese Funktion eingebaut werden. Die Funktion nutzt dabei einen Service der SAP UI Shell, um die Daten zu persistieren

tablePersonalization: function (key) {
	// Create a persistence key
	var oPersId = {
		container: "myContainer",
		item: key
	};

	// default Provider (uiShell)
	var oProvider = sap.ushell.Container.getService("Personalization").getPersonalizer(oPersId);

	// init and activate controller
	var oTablePersoController = new TablePersoController({
		table: this.byId("idInsplotTable"),
		//specify the first part of persistence ids e.g. 'demoApp-productsTable-dimensionsCol'
		persoService: oProvider
	}).activate();

	// Cause the dialog to open when the button is pressed
	this.byId("idPersonalization").attachPress(function () {
		oTablePersoController.openDialog();
	});
}

Der Aufruf erfolgt vor der Ausgabe der Tabelle (z.B. onInit oder onBeforeRendering) etwa wie folgt

// Table Personalization aktivieren
this.tablePersonalization(myKey);

View

In der View wird im Tabellen Headerbereich ein Button (idPersonalization) definiert, über den der Personalization Dialog aufgerufen werden kann (Auszug):

<Table id="tableID" inset="false" items="{uiModel>/localData/results}">
	<headerToolbar>
		<OverflowToolbar>
			<core:Icon src="sap-icon://status-negative" color="red" size="3em"/>
			<Title text="{uiModel>/header/redcount}"/>
			<core:Icon src="sap-icon://alert" color="orange" size="3em"/>
			<Title text="{uiModel>/header/yellowcount}"/>
			<core:Icon src="sap-icon://status-positive" color="green" size="3em"/>
			<Title text="{uiModel>/header/greencount}"/>
			<ToolbarSpacer/>
			<Button icon="sap-icon://action-settings" id="idPersonalization">
				<layoutData>
					<OverflowToolbarLayoutData priority="NeverOverflow"/>
				</layoutData>
			</Button>
		</OverflowToolbar>
	</headerToolbar>
	<columns>
		<Column id="trafficSign">
			<Text text="{i18n>TrafficSign}"/>
</Column>

Ergebnis

Die hier vorgenommenen Einstellungen bleiben beim erneuten Aufruf erhalten

Aufgerufene Tabellenpersonalisierung

Einschränkung

Es lassen sich hiermit nicht mehrere Varianten speichern, so dass der Benutzer bequem zwischen den Varianten wechseln kann. Dies ließe sich ggf. durch einen zusätzlichen Variant Manager lösen