InfoPanel

Guten Tag, ich habe das InfoPanel aus der Backend Components Doku nachgebaut. https://developers.shopware.com/develop … xtensions/ In meiner Tabelle aus meiner Datenbank habe ich die einzelnen Felder ausgegeben. Das klappt auch alles wunderbar soweit. Eine Spalte meiner Tabelle heißt timestamp wo sich dementsprechend ein timestamp mit folgendem Muster befindet: ‚yyyymmddhhmmss‘ Datentyp: String Ist es möglich, ohne die Tabelle in der Datenbank zu ändern, dieses Datum in dem InfoPanel in einem anderen Format anzuzeigen? z.B.: ‚dd.mm.yyyy hh:mm:ss‘ Vielen Dank Heiko Ter

Hi, aus der Doku der InfoPanel-Komponente: [code] If you want to display only the name field, set only the name field into the { @link #fields } property: Ext.define(‚Shopware.apps.Product.view.list.extension.Info‘, { configure: function() { return { fields: { name: undefined } } } }); This definition allows you to display only the name model field within the info panel. The undefined value says that shopware creates a default info field for the name field with the following template: ’

’ + field.name +’: {literal}{’ + field.name + '}{/literal}

’ Each info field is created in the { @link #createTemplateForField }. If you want to modify the template of a info field, you can set three different values: 1. A string => The string will be set as template 2. A object => The object can be an Ext.XTemplate 3. A function => The configured function will be called to create the info field. [/code] Du könntest also mal versuchen, mit einer Funktion oder einem Ext.XTemplate den String zu modifizieren. Gerade die Sache mit der Funktion scheint mir ganz vielversprechend, da solltest du den aktuellen Value reinbekommen und modifizieren können. Zur Not kannst du das Feld ja auch noch im Controller oder dem ExtJS-Model (mit der convert-Funktion) verändern - das ist nicht die schönste Variante, aber ggf. einen Versuch Wert. Daniel

Hallo Heiko, ich hab es mal getestet mit dem Plugin von https://developers.shopware.com/develop … xtensions/ indem ich ein Produkt in “20160120113715” umbenannt habe und die info.js modifiziert habe. Hier der Code: [code] Ext.define(‘Shopware.apps.SwagProduct.view.list.extensions.Info’, { extend: ‘Shopware.listing.InfoPanel’, alias: ‘widget.product-listing-info-panel’, width: 270, configure: function() { var me = this; return { model: ‘Shopware.apps.SwagProduct.model.Product’, // fields: { // name: ’

’ + // 'The product name is: ’ + // ‘{literal}{name}{/literal}’ + // ’

', // // description: me.createDescriptionField // } }; }, createTemplate: function() { return new Ext.XTemplate( ‘’,

’,

’,
‘The product name is: {literal}{[this.myDateFormat(values.name)]}{/literal}’,

’,

’,
Product description: {literal}{description}{/literal}’,

’,
’,
‘’, { myDateFormat: function(myDateStr) { var myDate = myDateStr.match({literal}/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/{/literal}); return myDate[3] + ‘.’ + myDate[2] + ‘.’ + myDate[1] + ’ ’ + myDate[4] + ‘:’ + myDate[5] + ‘:’ + myDate[6]; } } ); }, createDescriptionField: function(infoPanel, field) { return ’

’ + ‘Custom function call for the description field’ + ’

'; } }); [/code] Im Infopanel wird dein Timestamp nun so formatiert wie du ihn benötigst.

1 Like

Super! Vielen Dank für die hilfreiche Antwort. Jetzt habe ich mein Problem mit Hilfe dieser Lösung gelöst und einiges mehr verstanden. Danke! Heiko Ter