Пример портала extjs 4 - PullRequest
       22

Пример портала extjs 4

1 голос
/ 27 августа 2011

Я хотел бы сказать, что я изо всех сил пытаюсь понять демо портала в ExtJS 4. Может кто-нибудь, пожалуйста, просто предоставьте мне общий пример контейнера и как добавить элемент портлета. Документы, предоставляемые для загрузки, не имеют слова портала или портлета, когда я выполняю поиск. Когда я смотрю на источник примера, там есть файлы классов и дополнительные CSS-файлы. Это нужно? Я искал по всей сети и, кажется, только найти других людей, задающих тот же вопрос. Любая помощь или даже ссылка на демо для extjs 4 будет принята с благодарностью. Может быть, мой googlefoo отсутствует?

Когда я использую демонстрацию и начинаю изменять макет границы, я сталкиваюсь со всевозможными проблемами. Центральная область не может содержать панель вкладок, я использую макеты аккордеона для моих восточных, западных и северных регионов. Кажется, есть проблема с Западным регионом и наличием аккордеонной разметки, потому что он не отображается должным образом, т.е. гармошка наполовину открыта, и любые изображения внутри не отображаются, пока вы не свернетесь и не откроете снова. Может ли кто-нибудь предоставить мне пример, который просто показывает, как сделать базовый портал без какой-либо дополнительной функциональности? Ниже приведен код, который я использовал, который не работал должным образом, но отображает и работает нормально (за исключением части портала) при использовании только области просмотра.

Вот пример кода

Ext.define('Ext.app.Portal', {

    extend: 'Ext.container.Viewport',

    uses: ['Ext.app.PortalPanel'],

    initComponent: function(){
        Ext.apply(this, Ext.create('Ext.Viewport', {
            id: 'main-viewport',
            layout: {
                type: 'border',
                padding: '0 5 5 5'
            },
            items: [{
                title: 'My Notifications',
                id: 'My-Notifications-Panel',
                region: 'north',
                height: 300,
                split: true,
                collapsible: true,
                collapsed: true,
                margins: '0 0 0 0',
                layout: 'accordion',
                items: [
                {
                    title: 'Alerts'
                },{
                    title: 'Communications'
                }
                ]
            },{
                title: 'My Support',
                id: 'My-Support-Panel',
                region: 'east',
                width: 140,
                collapsible: true,
                collapsed: true,
                margins: '0 0 0 0',
                layout: 'column',
                autoScroll: true,
                defaults: {
                    margins: '10 5 0 0',
                    xtype: 'panel',
                    height: 100,
                    width: '100%',
                    headerPosition: 'bottom',
                    border: false,
                    cls: 'myicon',
                    bodyStyle: 'background-image: url(images/icon.png); background-repeat: no-repeat; background-position: center;'
                },
                items:[
                    {
                        title: 'Customer Services'
                    },{
                        title: 'Technical Support',
                        listeners: {
                            afterrender: function(c){
                                c.el.on('click', function(){
                                    CreateChatSession();
                                    Ext.getCmp('My-Support-Chat-Panel').update('<iframe width="100%" height="700" src="/pub/" frameborder="0"></iframe>');
                                });
                            }
                        }
                    }
                ]
            },{
                xtype: 'panel',
                region: 'west',
                collapsible: true,
                collapsed: true,
                title: 'My Apps',
                width: 275,
                layout:'accordion',
                split: true,
                margins: '0 0 0 0',
                defaults: {
                    bodyStyle: 'padding:15px',
                    layout: 'column'
                },
                items: [{
                    title: 'Internal Apps',
                    defaults: {
                        padding: '5 5 5 5',
                        xtype: 'panel',
                        height: 100,
                        width: 80,
                        headerPosition: 'bottom',
                        border: false,
                        cls: 'myicon',
                        bodyStyle: 'background-image: url(images/icon.png); background-repeat: no-repeat; background-position: center;'
                    },
                    items: []
                },{
                    title: 'Favorites',
                    defaults: {
                        padding: '5 5 5 5',
                        xtype: 'panel',
                        height: 100,
                        width: 80,
                        headerPosition: 'bottom',
                        border: false,
                        cls: 'myicon',
                        bodyStyle: 'background-image: url(images/icon.png); background-repeat: no-repeat; background-position: center;'
                    },
                    items: []
                },{
                    title: 'Reporting',
                    defaults: {
                        padding: '5 5 5 5',
                        xtype: 'panel',
                        height: 100,
                        width: 80,
                        headerPosition: 'bottom',
                        border: false,
                        cls: 'myicon',
                        bodyStyle: 'background-image: url(images/icon.png); background-repeat: no-repeat; background-position: center;'
                    },
                    items: []
                }]
            },
                Ext.create('Ext.tab.Panel', {
                    region: 'center',
                    layout: 'fit',
                    items: [{
                        id: 'Workspace-1',
                        title: 'Workspace 1',
                        layout: 'fit',
                        items: [{
                            id: 'app-portal',
                            xtype: 'portalpanel',
                            region: 'center',
                            items: [{
                                id: 'col-1',
                                items: [{
                                    id: 'portlet-2',
                                    title: 'Portlet 2',
                                    listeners: {
                                        'close': Ext.bind(this.onPortletClose, this)
                                    }
                                }]
                            },{
                                id: 'col-2',
                                items: [{
                                    id: 'portlet-3',
                                    title: 'Portlet 3',
                                    listeners: {
                                        'close': Ext.bind(this.onPortletClose, this)
                                    }
                                }]
                            }]
                        }]
                    }]
                })
            ]
        }));
        this.callParent(arguments);
    }
});

Ответы [ 2 ]

4 голосов
/ 30 июня 2012

----------- Просто для тех, кто читает этот макет портала, НЕ является частью официальной структуры и является сторонним расширением в комплекте с библиотекой, поэтому его нет в документации.

2 голосов
/ 07 сентября 2011

Это пример портала с вкладками в центральной области

Надеюсь, это поможет вам.

Ext.define('Ext.app.Portal', {

    extend: 'Ext.container.Viewport',

    getTools: function() {
        return [{
            xtype: 'tool',
            type: 'gear',
            handler: function(e, target, panelHeader, tool) {
                var portlet = panelHeader.ownerCt,
                    el = portlet.getEl();

                el.mask('Working...');
                Ext.defer(el.unmask, 2000, el);
            } //eo handler function
        }]; //eo return
    }, //eo get tools

    initComponent: function() {

        var content = '<div class="portlet-content">' + Ext.example.shortBogusMarkup + '</div>';

        Ext.apply(this, {
            id: 'app-viewport',
            layout: {
                type: 'border',
                padding: '0 5 5 5'
            }, //eo layout
            items: [{ //header : item 1 of app-viewport
                    id: 'app-header',
                    xtype: 'box',
                    region: 'north',
                    height: 50,
                    html: 'myPortal'
                },
                { //container : item 2 of app-viewport
                    xtype: 'container',
                    region: 'center',
                    layout: 'border',
                    items: [{ //options: item 1 of container
                            id: 'app-options',
                            title: 'Options',
                            region: 'west',
                            animCollapse: true,
                            width: 200,
                            minWidth: 150,
                            maxWidth: 400,
                            split: true,
                            collapsible: true,
                            layout: 'accordion',
                            layoutConfig: {
                                animate: true
                            },
                            items: [{ //item 1 of app-options

                                    title: 'title',
                                    autoScroll: true,
                                    border: false,
                                    iconCls: 'nav',
                                    items: [{
                                        xtype: 'treepanel',
                                        useArrows: true,
                                        autoScroll: true,
                                        animate: true,
                                        enableDD: true,
                                        containerScroll: true,
                                        border: false,
                                        region: 'west',
                                        split: true,

                                        listeners: {
                                            click: function(n) {
                                                Ext.Msg.alert('Navigation Tree Click', 'You clicked: "' + n.attributes.text + '"');
                                            }
                                        }
                                        /*Dashboard
                                        MultiServices
                                        Reporting
                                        Global Options
                                        */
                                    }]

                                },
                                { //settings : item 2 of app-options
                                    title: 'Settings',
                                    html: '<div class="portlet-content">' + 'details ??' + '</div>',
                                    border: false,
                                    autoScroll: true,
                                    iconCls: 'settings'
                                }
                            ] //eo items options
                        },
                        { //item 2 of container
                            id: 'tabpanel1', // id: 'app-portal',  ???
                            xtype: 'tabpanel',
                            activeTab: 0,
                            region: 'center',
                            items: [{
                                title: 'tab1',
                                layout: 'column', //
                                closable: true,
                                items: [{
                                    id: 'col-1',
                                    columnWidth: 0.5,
                                    flex: 1,
                                    items: [{
                                        id: 'portlet-1',
                                        title: 'Grid Portlet',
                                        tools: this.getTools(),
                                        items: new Ext.app.GridPortlet(),
                                        listeners: {
                                            'close': Ext.bind(this.onPortletClose, this)
                                        }
                                    }, {
                                        id: 'portlet-2',
                                        title: 'Portlet 2',
                                        tools: this.getTools(),
                                        html: content,
                                        listeners: {
                                            'close': Ext.bind(this.onPortletClose, this)
                                        }
                                    }] //eo col-1
                                }, {
                                    id: 'col-2',
                                    columnWidth: 0.5,
                                    flex: 1,
                                    items: [{
                                        id: 'portlet-3',
                                        title: 'Portlet 3',
                                        tools: this.getTools(),
                                        html: '<div class="portlet-content">' + Ext.example.bogusMarkup + '</div>',
                                        listeners: {
                                            'close': Ext.bind(this.onPortletClose, this)
                                        }
                                    }] //eo col-2
                                }, {
                                    id: 'col-3',
                                    columnWidth: 0.5,
                                    flex: 1,
                                    margins: '0 26 0 0',
                                    items: [{
                                        id: 'portlet-4',
                                        title: 'Chart Portlet',
                                        tools: this.getTools(),
                                        items: new Ext.app.ChartPortlet(),
                                        listeners: {
                                            'close': Ext.bind(this.onPortletClose, this)
                                        }
                                    }] //eo col-3
                                }] //eo tab1
                            }, {
                                title: 'tab2',
                                closable: true
                            }] //eo items tabpanel
                        }
                    ] //eo ietms container

                }
            ] //eo viewport
        }); //eo apply

        this.callParent(arguments);
    }, //eo initcomponent

    onPortletClose: function(portlet) {
        this.showMsg('"' + portlet.title + '" was removed');
    },

    showMsg: function(msg) {
        var el = Ext.get('app-msg'),
            msgId = Ext.id();

        this.msgId = msgId;
        el.update(msg).show();

        Ext.defer(this.clearMsg, 3000, this, [msgId]);
    },

    clearMsg: function(msgId) {
        if (msgId === this.msgId) {
            Ext.get('app-msg').hide();
        }
    }
});

РЕДАКТИРОВАТЬ

Или выможете попробовать этот пример Я думаю, что это лучше для ваших нужд, дайте мне знать.

...