Horváth András NetVisor zrt.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

HTML enhanced for web apps! Fodor Krisztián
JQuery 8. előadás.
Többszálúság a böngészőben, avagy merjünk-e Javascriptben programot írni? Farkas Máté Budapest.js meetup
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
2 Forrás: The Standish Group International, Extreme Chaos, The Standish Group International, Inc., 2000.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Objective-C Készítette: Zsivics Sanel NL5LWN. Tartalom bevezető történeti háttér rangsor elterjedtsége / népszerűsége alapok felépítése (.h,.m, xcode,
Hibakezelés és Tesztelés a Visual Studio.NET-ben
JavaScript.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Fejlett programozási technikák II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Készítette: Sárközi Anikó
Kliensoldali Programozás
Böngésző programok (Böngészés).
Delphi programozás 8. ELŐADÁS ADO ActiveX Data Objects.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Horváth István Általános Iskola
Kivételkezelés a C++ nyelvben Bevezetés
JavaScript a gyakorlatban. 7. Gyakorlat DHTML  Fa-struktúrájú menük létrehozása  Legördülő menük létrehozása.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Orovecz János Tartalomjegyzék  Az Ajax története  HTTP-kérések és válaszok  XMLHttp-kérések  Egyéb Ajax technika  XML.
Bátyai Krisztián NetAcademia Oktatóközpont oktató, fejlesztő MCT, MCPD
JavaScript a gyakorlatban. 1.Gyakorlat Mi a JavaScript?  A JavaScript nem Java! JavaScript futtatása JavaScript beillesztése XHTML-be Változók kezelése.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Segédlet vizuális programozáshoz Kovács László
Weblapkészítési tudnivalók Pék Ágnes © Hogyan lehet weboldalt létrehozni? Lehet kész sablonokat használni Lehet önállóan előállítani.
Weblapkészítési tudnivalók Pék Ágnes © Hogyan lehet weboldalt létrehozni? Lehet kész sablonokat használni Lehet önállóan előállítani.
Virág András MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék.
Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai.
Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai.
A platform nem létezik Game engine portolás mobilról webre.
Objektum orientált programozás a gyakorlatban
Weboldal tervezés programozó szemmel. Alapok Minden webcím www. –tal kezdődikMinden webcím www. –tal kezdődik Webböngésző = Internet ExplorerWebböngésző.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Készítette: Lipp Marcell
Közzététel a Weben. Film közzététele.
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
Visual Basic 2008 Express Edition
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Webprogramozó tanfolyam
Blog Fülöp Dávid MCT, MCPD Egy blog sémája Use Case-ek – Blog áttekintése – Egy blogpost megtekintése – Blogpost írása – Blogpost.
Webprogramozó tanfolyam
WEBSTAR CSOPORT WC S ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE Marics Tamás június 20.
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Illés Zoltán ELTE Informatikai Kar
14. Szóbeli középszintű informatika tétel:
Így készült... a drupal6themes.com. 2 Miről lesz szó? Ötlet Célok Megoldások Problémák és hiányosságok További ötletek és tervek.
Vizualizáció és képszintézis Sugárkövetés (Dart + GLSL) Szécsi László.
A böngészőprogram használata. A böngészők értelmezik a html nyelvet, a javascript kódokat és a php kódokat is. Majd ezeket lefuttatja, és azok alapján.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék R „Big Data” elemzési módszerek Kocsis Imre
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
Maven és Ant Build eszközök bemutatása
Asynchronous Javascript And XML
Test Automation Kurzus Intro
Témavezető: Dr. Oniga István Fejlesztők: Erdős andrás Zákány józsef
YUI február YUI szeptember YUI3
Villogó delay függvény használata nélkül
Cascading Style Sheet.
JavaScript a böngészőben
Ünnepre készülünk Preparing for Christmas
Függvénysablonok használata
This table is avarage! Read instructions below!
Előadás másolata:

Horváth András NetVisor zrt. A projekt kezdeti fázisa: ajánlattétel, becslés, szerződéskötés. A követelmény-specifikáció, követelményfajták, use case-ek és egyéb követelmények. Követlemény-analízis a Requisite Pro eszközzel. Teszt esetek. 1 DOJO Framework Horváth András NetVisor zrt.

Bevezető DOJO: 1. Javascript GUI Framework 2. Rengeteg kész GUI komponens, egy-két trükkös JS kiegészítés igényesebb kód írásához 3. http://www.dojotoolkit.org/

Előnyei 1. Ingyenes, nagyjából browser független 2. Open source 3. Aktívan fejlesztik 4. Teljes kontrollt kapunk a GUI elkészítéséhez (vs pl.: Echo) 5. Tud Lightweight is lenni (elég csak azokat a komponenseket betölteni, amik kellenek)

Hátrányok 1. Vannak bugok, 2. A dokumentáció sok helyen hiányos (fórumok / tutorial-ok viszont általában használhatóak) 3. Új verziók kiadása esetén nincs backward compatibility

5 Getting started 1. A dojo hivatalos oldalán lévő release-re hivatkozunk <script src="http://ajax.googleapis.com/ajax/ libs/dojo/1.4.2/dojo/dojo.xd.js"></script> 2. Letöltjük az egész src-t és azt használjuk Gyors teszt: <script> dojo.addOnLoad(function(){alert(“dojo running”)} </script>

<script type="text/javascript" src="..dojo/1.4.2/dojo/dojo.js" djConfig="parseOnLoad: true, isDebug: true, gfxRenderer:'svg,silverlight,vml', myParam: true"></script> 1. parseOnLoad: true vagy false kétféle módon lehet létrehozni dojo-s gui elemeket: a) html markup b) javascript kódból Ha true akkor parse-olja betöltés után a dom fát, ha talál dojo-s gui komponenseket, akkor létrehozza őket <div dojoType="dijit.TitlePane" title="Title Pane #1" tooltip="I'm the tooltip for Title Pane #1's title bar" style="width: 300px;" jsId="pane1" id="testPane1"> … </div> vagy var x = new dijit.TitlePane({id: "myTitlePane", title: "test", style: "...", stb}); //kell a dom-ban lennie egy div-nek ilyen id-vel!!!

2. isDebug: true vagy false (firebug-hoz) Log-olás: console.log(Obj) 3. gfxRenderer: bizonyos komponens-ek (pl.: chart-ok) és a saját, egyszerű alakzatokra (circle stb.) épülő komponensek render-eléséhez function checkForSilverlight(){ if (navigator.appName=="Microsoft Internet Explorer") { var isSilverlightInstalled = false; try{ var silverlightControl = new ActiveXObject('AgControl.AgControl'); isSilverlightInstalled = true; } catch (e){ //Either not installed or not IE. Check in Firefox? if(navigator.plugins["Silverlight Plug-In"]) } if(!isSilverlightInstalled) dijit.byId('dialogNoSilverLight').show(); 4. dojo.config.myParam ? “something” : “something different”

Dojo, Dijit, Dojox 1. Dojo: core működés, Drag and Drop support, dátumok kezelése (date), ajax support (dojo.xhrGet és dojo.xhrPost), … 2. Dijit: hétköznapi control-ok, amik kellenek egy egyszerű gui-hoz: gombok, menük, panel-ek 3. Dojox: - minden olyan komponens, amihez valamilyen render-elés kell (chart, stb.) - dojox.math (BigInteger, Matrix stb.) - dojox.collections (arraylist, binarytree, set, stack, sortedlist, …) - dojox.lang.oo.mixin - dojox.lang.aspect - dojox.lang.functional

4. Nem mindegy, hogyan hivatkozunk a komponensekre: dojo.byId(“something”) <= DOM elemet ad vissza dijit.byId(“something”) <= Dijit objektum-ot ad vissza dojox.byId(“something”) nincs!!! 5. Miután létrejön egy dijit elem, az bekerül a dijit.registry-be, innen ha már nem kell, el kell távolítani a dijit.registry.remove(“id”)-vel 6. A dijit és dojox objektumoknak van .destroy metódusa, ez megszünteti őket, mint javascript objektumoket (kb. this = null) és kitörli őket a dom fából is

Hasznos DOJO nyelvi elemek 1. kb. mint a jQuery dojo.query("[name^=myCheckBox]").forEach(function(node, index, arr){ console.log(node.innerHTML); }); //mindent aminek a name propery-je myCheckBox Rövidebben: dojo.query("select", document).forEach("item.disabled = true;"); //minden select tag-re 2. eseménykezelés: dojo.connect //dojo.disconnect ha már nem kell!!! function init(){ button = dojo.byId('myButton'); dojo.connect(button, 'onclick', 'myButtonOnClickFunction'); }

3. dojo. filter: var filteredArray = dojo 3. dojo.filter: var filteredArray = dojo.filter(array, function(item) { return item.property == "myStringCondition"; }); 4. dojo.some: if (dojo.some(array, function(item) { return item >= 42 })) { result = 'there are some, which are greater than 42'; } else { result = 'no element is greater than 42'; } 5. dojo.every 6. dojo.map: var changedArray = dojo.map(array, function(item) { return item + (item / 100) * 10; //10% increase

AJAX 1. Get: dojo.xhrGet({ url: myurl, HandleAs: "json", //can be: text, javascript or even xml load: function(data){ //there is an ioArgs parameter here as well for(var i in data){ //we know its an array console.log("key", i, "value", data[i]); } }, error: function(error, response){ console.log("Error message: " + error.message + " Url: " + response.url + " Status: " + response.xhr.status) });

2. Post: dojo.xhrPost({ url: myUrl, postData: postData, handleAs: "text", load: function(data){ … }, error: function(error, response){ … } }); - postData helyett lehet form:"someForm" is 3. Delete: dojo.xhrDelete 4. Put: dojo.xhrPut

Data store Bizonyos GUI elemek feltöltéséhez data store-okat használhatunk / kell használnunk (pl.: dijit.Tree) 1. dojo.data.ItemFileReadStore - json-t olvas be 2. dojo.data.ItemFileWriteStore - json-t olvas, a változtatásokat megpróbálja elküldeni a szervernek

Dijit, Dojox 1. Minden dijit, dojox komponenst be kell töltenünk: dojo.require("dijit.form.Button"); //it will download this first dojo.require("dijit.form.TextBox"); //starts after the previous!! //lehet a /util/buildscripts könyvtárban lévő szkriptekkel egy-egy nagy dojo.js, dijit.js, dojox.js-t csinálni, amibe megmondhatod melyik js-ek kerüljenek (gyorsabban szed le 1 nagy js-t a browser mint sok picit) + a változóneveket is cseréli $1, $2 -re + kiszedi a whitespace-eket 2. Létrehozzuk őket: //van jsid: létrehoz egy globális változót ezzel a névvel neki, azt az objektum van benne amit a dijit.byId() ad vissza <table dojoType="dojox.grid.DataGrid" jsid="alarmsGrid" id="alarmsGrid" store="alarmsStoreTable" query="{ severity: '*' }" rowsPerPage="35" onCellClick="viewChartForAlarm" style="height: 300px; overflow: auto;"> 3. Ha már nem kellenek, akkor töröljük őket

Saját komponensek Probléma: - Van egy komponens, ami majdnem jó nekünk. - De csak majdnem. - Kicsit bele kellene írni itt-ott, új funkciók, meglévők átalakítása. Megoldás: 1) Elkezdjük átírni a komponenst => inkább ne :) 2) Származtassunk le belőle és írjuk át amit kell => ez a tuti

1717 Öröklődés stb. if(!dojo._hasResource["netvisor.charting.NetvisorChart2D"]){ //like #ifndef dojo._hasResource["netvisor.charting.NetvisorChart2D"] = true; dojo.provide("netvisor.charting.NetvisorChart2D"); dojo.require(...); //include those components we will need (function(){ //some useful functional/magical stuff var df = dojox.lang.functional, dc = dojox.charting, clear = df.lambda("item.clear()"), purge = df.lambda("item.purgeGroup()"), destroy = df.lambda("item.destroy()"), makeClean = df.lambda("item.dirty = false"), makeDirty = df.lambda("item.dirty = true");

dojo. declare("netvisor. charting. NetvisorChart2D", dojox. charting dojo.declare("netvisor.charting.NetvisorChart2D", dojox.charting.Chart2D, { //null => there is no parent //dojox.charting.Chart2D => inherits from this //[dojox.charting.Chart2D, dojox.charting.Chart3D] => multiple inheritance constructor: function(node, kwArgs){ … }), //every dijit/dojox component needs a constructor destroy: function(){ //and of course a destructor as well dojo.forEach(this.series, destroy); dojo.forEach(this.stack, destroy); df.forIn(this.axes, destroy); this.surface.destroy(); }, … }) })(); }

Ellenőrző kérdések Mik az előnyei a Dojo Framework-nek? Milyen csomagokra osztja a Dojo a komponenseket? Soroljon fel néhány komponenst mindegyik csomagból. Ismertessen néhány (legalább 2) fontosabb djConfig paramétert. Milyen módon hozhatunk létre Dojo komponensket? Ismertessen néhány hasznos Dojo nyelvi elemet. Írjon egy rövid Dojo-s AJAX hívásra példát (get vagy post). Hogyan írhatunk saját komponenst?