Top Banner
Ext JS Πως να μετατρέψετε τις σελίδες σας σε interactive applications Σουργκούνης Θεοδόσης www.kamibu.com
43

Ext JS (Greek)

Nov 29, 2014

Download

Technology

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ext JS (Greek)

Ext JS

Πως να μετατρέψετε τις σελίδες σας σε interactive applications

Σουργκούνης Θεοδόσηςwww.kamibu.com

Page 2: Ext JS (Greek)

Τι είναι το Ext JS;Το Ext JS είναι ένα framework που βοηθάει στην ανάπτυξη διαδραστικών σελίδων

Γιατί το χρειαζόμαστε;Επιταχύνει τη διαδικασία της ανάπτυξης, διευκολύνει την ομοιομορφία και βοηθάει στη σωστή δομή του κώδικα

Είναι συμβατό;Το Ext JS είναι συμβατό με όλους τους μεγάλους browsers που χρησιμοποιούνται σήμερα

Παραδείγματα: http://www.kamibu.com/techtalk/extjs

Page 3: Ext JS (Greek)

Ext.MessageBox

Ext.MessageBox.alert( 'Title here', 'Hello world!' );

Ext.MessageBox.prompt( 'Title here', 'Insert value' );

Ext.MessageBox.wait( 'Please wait...' );

Ext.MessageBox.progress( 'title', 'almost ready', '2%' );

Page 4: Ext JS (Greek)

Selectors ( Ext.DomQuery )

Επιλογή με ID: var el = Ext.get( 'my-div' );

Επιλογή με αναφορά: var el = Ext.get( myDivElement );

Επιλογή με CSS selector: var el = Ext.select( selector );

Element: 'div > span'Class or id: '#my-div .class'Attribute: 'form[method=post]'Pseudo Classes: 'div:first-child'CSS Value: 'div{background*=no-repeat}'

Page 5: Ext JS (Greek)

Ext.Element

el.setSize( 100, 200, { duration: 1, easing: 'backBoth'});

el.createChild({ tag:'h1', id:'header', html:'Header 1'});

Page 6: Ext JS (Greek)

Events

Φυσικά events (click, mouseover, keypress ... )

Software driven events ( datachanged, beforedestroy ... )

el.on( 'click', doSomething );

Ορίσματα στην συνάρτηση doSomething1. eventObject2. DOM element

Page 7: Ext JS (Greek)

The Component Model

Page 8: Ext JS (Greek)

The Component Model

var panel1 = new Ext.Panel({ height: 200, width: 300, title: "I am a happy panel!!", html: "Hello there!"});

var panel2 = { xtype: 'panel', width: 300, height: 200, title: "Plain Panel", html: 'Panel with xtype specified' listeners: { click: fn }};

new Ext.Window({ id: 'myWin', height: 200, width: 300, title: "A window", items: [ panel1, panel2 ]});

Page 9: Ext JS (Greek)

The Component Life Cycle

Page 10: Ext JS (Greek)

Containersvar myWin = new Ext.Window({ height: 400, width: 400, items: [{ xtype: 'panel', html: 'I am a panel', frame: true, height: 100 },{ html: '<b> I am a bold panel</b>', frame: true }]});myWin.show();

Page 11: Ext JS (Greek)

Containers

Ext.getCmp( 'myWin' ).add({ title: 'Appended Panel', id: 'addedPanel', html: "hello there!"});Ext.getCmp( 'myWin' ).doLayout();

var panel = Ext.getCmp( 'addedPanel' );Ext.getCmp( 'myWin' ).remove( panel );

Ext.getCmp( 'myWin' ).findByType( 'panel' );

Page 12: Ext JS (Greek)

Panel

Page 13: Ext JS (Greek)

Panelvar myPanel = new Ext.Panel({ width: 200, height: 150, collapsible: true, renderTo: Ext.getBody(), tbar: TopToolbar, bbar: BottomToolbar, html: 'My first Toolbar Panel!' tools: [ { id: 'gear' },{ id: 'help' }]});

Page 14: Ext JS (Greek)

Buttons and Menus

new Ext.Button({ text: 'Plain Button', handler: handler menu: { defaults: { checked: false, }, items: [ { text: 'Red' }, { text: 'Green' }, { text: 'Blue' } ] }});

Page 15: Ext JS (Greek)

Toolbarsvar toolbar = { items: [ { text: 'Add', }, '->', 'Select one of theese: ', { xtype: 'combo', store: [ 'Toolbars', 'Are', 'Awesome' ] } ]}

Page 16: Ext JS (Greek)

Window

var win = new Ext.Window({ html : 'My first Window', id : 'myWin', height : 200, width : 300, constrain : true});win.show();

Page 17: Ext JS (Greek)

Windowvar win = new Ext.Window({ height: 75, width: 200, modal: true, title: 'This is a window', html: 'Try to move or resize me. I dare you.', plain: true, border: false, resizable: false, draggable: false, closable: false, buttonAlign: 'center', buttons: [ ... ]});win.show();

Page 18: Ext JS (Greek)

Laying it all out

Page 19: Ext JS (Greek)

Container Layout

var myWin = new Ext.Window({ height : 300, width : 300, title : 'A window with a container layout', autoScroll : true, items : [ panel1, panel2 ]}

Page 20: Ext JS (Greek)

Anchor Layoutvar myWin = new Ext.Window({ height: 300, width: 300, layout: 'anchor', anchorSize: '400', items: [{ title: 'Panel1', anchor: '100%, 25%', frame: true },{ title: 'Panel2', anchor: '0, 50%', frame: true }});myWin.show();

Page 21: Ext JS (Greek)

Form Layout

var myWin = new Ext.Window({ height: 240, width: 200, bodyStyle: 'padding: 5px', layout: 'form', labelWidth: 50, defaultType: 'field', items: [{ fieldLabel: 'Name', width: 110 },{ xtype: 'combo', fieldLabel: 'Location', width: 120, store: storeObject },

{ xtype: 'panel', fieldLabel: ' ', labelSeparator: ' ', frame: true, title: 'Instructions', html: 'Please fill in the form', height: 55 }]});myWin.show();

Page 22: Ext JS (Greek)

Absolute Layout

var myWin = new Ext.Window({ height: 300, width: 300, layout: 'absolute', autoScroll: true, border: false, items: [{ title: 'Panel1', x: 50, y: 50, height: 100, width: 100, html: 'x: 50, y:50', frame: true },

{ title: 'Panel2', x: 90, y: 120, height: 75, width: 77, html: 'x: 90, y: 120', frame: true }]}).show();

Page 23: Ext JS (Greek)

Fit Layoutvar myWin = new Ext.Window({ height : 200, width : 200, layout : 'fit', border : false, items : [ { title : 'Panel1', html : 'I fit in my parent!', frame : true } ]});myWin.show();

Page 24: Ext JS (Greek)

Accordion Layoutvar myWin = new Ext.Window({ layout: 'accordion', layoutConfig: { animate: true }, items: [{ xtype: 'form', title: 'General info', items: { fieldLabel: 'Name', anchor: '-10', } },{ title: 'Instructions', html: 'Please enter information.', }]});myWin.show();

Page 25: Ext JS (Greek)

Card Layout

var myWin = new Ext.Window({ title: 'A Window with a Card layout', layout: 'card', items: [{ title: 'Bio', value: 'Tell us about yourself' },{ title: 'Congratulations', html: 'Thank you for filling out our form!' }], bbar: bottomToolbar});

myWin.show();

Page 26: Ext JS (Greek)

Column Layoutvar myWin = new Ext.Window({ id: 'myWin', title: 'A Window with a Card layout', layout: 'column', defaults: { frame: true }, items: [{ title: 'Col 1', columnWidth: .3 },{ title: 'Col 3', html: "100px fixed width", width: 100 }]});myWin.show();

Page 27: Ext JS (Greek)

Table Layoutvar myWin = new Ext.Window({ title: 'A Window with a Table layout', layout: 'table', layoutConfig: { columns: 3 }, defaults: { height: 50, width: 50 }, items: [{ html: '1', colspan: 3, width: 150 }, { html: '2', rowspan: 2, height: 100 },

{ html: '3' }, { html: '4', rowspan: 2, height: 100 }, { html: '5' }, { html: '6', colspan: 3, width: 150 }]});myWin.show();

Page 28: Ext JS (Greek)

Border Layout

Page 29: Ext JS (Greek)

Border Layoutnew Ext.Viewport({ layout: 'border', defaults: { frame: true, split: true }, items: [{ title: 'North Panel', region: 'north', height: 100, collapsible: true },{ title: 'South Panel', region: 'south', height: 75, split: false, margins: { top: 5 } },

{ title: 'East Panel', region: 'east', width: 100, minWidth: 75, maxWidth: 150, collapsible: true },{ title: 'West Panel', region: 'west', collapsible: true, collapseMode: 'mini' },{ title: 'Center Panel', region: 'center' }]});

Page 30: Ext JS (Greek)

Form panels

var form = new Ext.Form.FormPanel({ ... initialConfig: { method: 'GET', fileUpload: true, standardSubmit: false, url: 'http://...' baseParams: { foo: 'bar' } }});

Page 31: Ext JS (Greek)

Form Fieldsvar textfield = { xtype: 'textfield', fieldLabel: 'Full Name', emptyText: 'Enter your full name here!', maskRe: /[a-z]/i, msgTarget: 'side'}var browsefile = { xtype: 'textfield', fieldLabel: 'Browse for a file', inputType: 'file'}var textarea = { xtype: 'textarea',}

Page 32: Ext JS (Greek)

Combo box

var combo = { xtype: 'combo', fieldLabel: 'Select a name', store: new Ext.data.ArrayStore({ data: [ ['Jack Slocum'], ... ], fields: ['name'] }), displayField: 'name', mode: 'local'}

Ειδική περίπτωση: timefield

Page 33: Ext JS (Greek)

More form fields

var htmleditor = { xtype: 'htmleditor', fieldLabel: 'Enter any text'}

var datefield = { xtype: 'datefield', fieldLabel: 'Select date'}

var checkbox = { xtype: 'checkbox', fieldLabel: 'Click me'}

Page 34: Ext JS (Greek)

Load and SubmitΜπορούμε να υποβάλουμε τη φόρμα μας σύγχρονα ή ασύγχρονα, μέσω του ορίσματος standardSubmit. Για να υποβάλουμε τη φόρμα, εκτελούμε

myFormPanel.getForm().submit(config)

Το config στην περίπτωση της ασύγχρονης υποβολής μπορεί να περιέχει handlers, όπως onSuccess ή onFailure, ή οτιδήποτε άλλο από το initialConfig.

myFormPanel.getForm().load({ url: 'data.php',});

Page 35: Ext JS (Greek)

Trees

Page 36: Ext JS (Greek)

Trees

var rootNode = { text: 'Root Node', expanded: true, children: [ { text: 'Child 1', leaf: true },{ text: 'Child 2', children: [ ... ] } ]}

var tree = { xtype: 'treepanel', root: rootNode}

new Ext.Window({ layout: 'fit', items: tree}).show();

Page 37: Ext JS (Greek)

Data Store

Page 38: Ext JS (Greek)

How Stores work

ProxyHttpProxyScriptTagProxyMemoryProxy

ReaderArray ReaderXML ReaderJSON Reader

Page 39: Ext JS (Greek)

Grid Panel

Page 40: Ext JS (Greek)

Building a simple Grid Panelvar arrayData = [ ['Jay Gracia', 'MD' ], ['Aaron Baker', 'VA' ],];var nameRecord = Ext.data.Record.create([ 'name', 'state']);var arrayReader = new Ext.data.ArrayReader({}, nameRecord );

var memoryProxy = new Ext.data.MemoryProxy( arrayData );

var store = new Ext.data.Store({ reader: arrayReader, proxy: memoryProxy});

var store = new Ext.data.ArrayStore({ data: arrayData, fields: [ 'name', 'state' ]});

Page 41: Ext JS (Greek)

Building a simple Grid Panel

var gridView = new Ext.grid.GridView();var colModel = new Ext.grid.ColumnModel([ { header: 'Full Name', sortable: true, dataIndex: 'name' },{ header: 'State', dataIndex: 'state' }]);var selModel = new Ext.grid.RowSelectionModel({ singleSelect: true});

Page 42: Ext JS (Greek)

Building a simple Grid Panel

var grid = new Ext.grid.GridPanel({ title: 'Our first grid', store: store, view: gridView, colModel: colModel, selModel: selModel});

Page 43: Ext JS (Greek)

Ευχαριστούμε!

Ερωτήσεις;