Apre una generica form in un floatingPane, totalmente svincolata da una gwClass. E' utile in generale quando si vogliono creare velocemente form diverse da quelle generate in automatico a partire dalle gwClass. Alla velocità di codifica si contrappongono dei vincoli sulla struttura, composta da:
{ fieldId: 'fieldId1', //optional declaredClass: 'dijit/form/NumberTextBox', //required label: 'Field 1', //optional fieldOptions: { value: 100, name: 'field1Value', style: {color: 'red'}, 'class': 'gwMyClass', myCustomFunction: function(a, b, c){ }, functionThatOverridesOneAlreadyExistingInsideDojoWidget: function(a, b, c){ } } }
{ label: 'Do Action', iconClass: 'iconDone', action: function(dialog, event){ //TODO dialog.close(); } }
Sono inoltre supportati tutti i parametri esposti dal generico FloatingPane (vedi Apertura FloatingPane Generico;)
Alcuni widget dojo, in fase di creazione, autonomamente rielaborano le proprietà passate in creazione, compresi gli stili. Quindi può essere necessario applicare eventuali customizzazioni, per esempio sovrascritture di stile/valori, solo in seguito all'apertura della form, quando tutti i widget sono già stati inizializzati. A questo scopo può essere utile adottare un fieldId univoco e successivamente utilizzare:
require(['dijit/registry'], function(registry){ .. var widget = registry.byId(fieldId); if(widget) widget.set('value', newValue); });
Cambiare stili nodi dom interni dopo elaborazione iniziale widget
require(['dijit/registry', 'dojo/query', 'dojo/dom-style'], function(registry, query, domStyle){ .. var widget = registry.byId(fieldId); if(widget) domStyle.set(query('.dojoInnnerClass', widget.domNode)[0], 'color', 'red'); });
Esempio di utilizzo da dentro una gwClass di tipo 'Selezionati in Lista':
var title = 'Title'; //optional var floatingPaneId = 'floatingPaneId'; //optional var dimensions = {w: 400, h: 300}; //optional var formManagerId = 'formManagerId'; //optional var tableContainerId = 'tableContainerId'; //optional var formManagerOptions = {}; //optional var formFields = [ { fieldId: 'fieldId1', //optional declaredClass: 'dijit/form/NumberTextBox', //required label: 'Field 1', //optional fieldOptions: { name: 'field1Value' } }, { fieldId: 'rbField1', //optional declaredClass: 'dijit/form/RadioButton', //required label: 'RB 1', //optional groupLabel: 'RB Group', fieldOptions: { name: 'rbName' } }, { fieldId: 'rbField2', //optional declaredClass: 'dijit/form/RadioButton', //required label: 'RB 2', //optional fieldOptions: { checked: true, name: 'rbName' } } ]; var buttons = [ { label: 'Do Action', iconClass: 'iconDone', action: function(dialog, event){ //TODO dialog.close(); //use close() instead of hide() when dialog don't needs to be reshown again } }, { label: closeLabel, iconClass: 'iconClose', action: function(dialog, event){ dialog.close(); //use close() instead of hide() when dialog don't needs to be reshown again } } ]; var params = { title: title, dimensions: dimensions, modal: true, //modal is optional floatingPaneId: floatingPaneId, formManagerId: formManagerId, formManagerOptions: formManagerOptions, tableContainerId: tableContainerId, formFields: formFields, buttons: buttons } var formFloatingPane = openFormFloatingPane(params);