Indice

Apertura generica form in FloatingPane - openFormFloatingPane()

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:

Parametri

{
	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;)

Note

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

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);