Ventana comun en mis programas
Tengo un que desarrollar un proyecto algo grande en el que todas mis aplicaciones tienen este codigo comun
que basicamente es una ventana con una cabecera con informacion basica, todos mis programas deben tener esta
misma ventana, a la que dependiendo del programa podria cambiar ya sea el ancho, alto y el titulo de la misma.
Actualmente copio todo este codigo en todos mis programas, y se me presenta el problema de que si hay algun
cambio debo hacerlo en todos mis programas
Se que en Extjs se puede crear una clase de la cual puedo instanciarla y asi hacer reutilizacion de codigo, pero
no logro instanciar correctamente la ventana por lo que pido que me guien en como hacerlo correctamente.
Lo que deseo es en cada nuevo programa que haga llamar a este codigo que crea la ventana pasandole los parametros
basicos que necesite, ya que tengo tambien un dataStore al que le debo enviar un parametro llamado "codigo_modulo"
y a esa ventana que instancio agregarle ya en mi programa el "form" o contenido propio del programa.
Como podria realizar esto ???
Aqui esta el codigo que tengo:
dsGenCargarInformacionCabecera = new Ext.data.JsonStore({
url: '../../gen/controller/gen.php',
root: 'data',
totalProperty: 'total',
baseParams: {
codigoEmpresa: codigoEmpresa,
action: 'cargarInformacionCabecera',
login: usuarioBD,
codigo_modulo: 9
},
fields: ['codigo_empresa', 'nombre_empresa', 'codigo_usuario', 'nombre_usuario', 'codigo_modulo' , 'nombre_modulo', 'fecha_calendario', 'cadena_fecha_calendario', 'fecha_calendario_anterior', 'fecha_servidor', 'cadena_fecha_servidor']
});
btnCadenaNombreUsuario = new Ext.Button({
text: ''
});
btnCadenaFechaCalendario = new Ext.Button({
text: ''
});
btnCadenaFechaServidor = new Ext.Button({
text: ''
});
btnCadenaNombreEmpresa = new Ext.Button({
text: ''
});
btnCadenaNombrePrograma = new Ext.Button({
text: 'adm01021000'
});
var statusbarEmpresa = new Ext.Toolbar({
items:[btnCadenaNombreUsuario, '->', '-', btnCadenaFechaCalendario, '-', '-', btnCadenaFechaServidor]
});
var toolbarEmpresa = new Ext.Toolbar({
items:[btnCadenaNombreEmpresa, '->', '-', btnCadenaNombrePrograma]
});
form = new Ext.FormPanel({
id: 'formadm01021000',
border: false,
width: '100%',
height: '100%',
frame: true,
labelWidth: 100,
layout: 'form',
items: [...]
});
win = new Ext.Window({
title: "Fideicomiso - Consulta - Bienes",
width: 900,
height: 500,
closable: false,
autoScroll: true,
tbar: toolbarEmpresa,
bbar: statusbarEmpresa,
bodyStyle: 'background-color:#fff; padding: 10px',
items: form
})
win.show();
dsGenCargarInformacionCabecera.load({
callback: function(rec,o,s) {
btnCadenaNombreEmpresa.setText(rec[0].get('codigo_empresa') + ' - ' + rec[0].get('nombre_empresa'));
btnCadenaNombreUsuario.setText('Usuario: ' + rec[0].get('nombre_usuario'));
btnCadenaFechaCalendario.setText('F. Calendario: ' + rec[0].get('cadena_fecha_calendario'));
btnCadenaFechaServidor.setText('Fecha: ' + rec[0].get('cadena_fecha_servidor'));
}
});
Gracias ....
Lo ideal en situaciones como esta es crear clases abstractas, 99% de las veces yo siempre creo clases abstractas en mi aplicación para estandarizar el look and feel o bien aquellos componentes que se require mostrar en todas los componentes de mi aplicación.
Para crear una clase abstracta basta con extender del componente que desees personalizar.
Ext.ns('MyApp.abstract.window');
MyApp.abstract.window.Window = Ext.extend(Ext.window.Window,{
maximizable : true,
resizable : false,
// Todo lo que quiero hacer común entre todas las instancias que usaré
});
Luego puedo instanciar esa clase en cualquiera de mis módulos! crear clases abstractas es algo muy importante para poder reutilizar código y no andar copiando/pegando porciones de código por todos lados.
Saludos
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.