24 Kasım 2013 Pazar

JAVASCRIPT KÜTÜPHANELERİNİN VERİ TABANI İŞLEMLERİNDE KULLANIMI VE TAFFY DB KÜTÜPHANESİ

JavaScript Kütüphanelerinin Veri Tabanı İşlemlerinde Kullanımı
  Merhaba arkadaşlar bu hafta JavaScript kütüphanelerinin veri tabanı işlemlerinde kullanımını ve Taffy DB kütüphanesini göreceğiz. JavaScript veri tabanı işlemlerini gerçekleştiren temel iki kütüphane vardır: ActiveRecord.js (veri modelleme, geri butonu ve tarih desteği de içeren bir JavaScript veri tabanı kütüphanesi) ve Taffy DB (SQL veri tabanı gibi düşünebileceğimiz, gerekli veri tabanı işlevlerini hızlıca gerçekleştirebilen bir JavaScript veri tabanı kütüphanesi)

Taffy DB Kütüphanesi

 Taffy DB tarayıcıda bulunan bir SQL veri tabanı veya gelişmiş bir "dizi yöneticisi" olarak düşünebileceğimiz, açık kaynak bir JavaScript kütüphanesidir. İnternet uygulamaları için bir veri tabanı katmanı gibi çalışır. Verileri okuma, düzenleme, silme, döngüler kullanma, verileri sıralama ve gelişmiş sorguları kullanma gibi pek çok veri tabanı işlemi bu kütüphane sayesinde JavaScript sayfaları için de yapılabilir hale gelmiştir.

 Başlıca özellikleri şöyledir :

  • Küçük dosya boyutlu ve oldukça hızlı sorgular
  • Tüm belge nesnesi modeli kütüphaneleriyle uyumluluk
  • Basit söz dizimi (syntax)
  • Herhangi bir internet uygulamasına ekleme kolaylığı
  • Güncelleme, okuma, silme, oluşturma işlemleri arayüzü
  • Sınıflandırma
  • Döngü oluşturma
  • Gelişmiş sorgular 

  •  Kütüphaneyi Taffy DB linkinden indirebilirsiniz. Şimdi kütüphanenin kullanımını, bir ASP.NET sayfası üzerinde görelim. Bunun için kütüphaneyi indirdikten sonra, ASP.NET projemizin dosyalarına şekilde görüldüğü gibi ekliyoruz : 

     Ardından sayfanın <head> bölümünde, aşağıdaki kod satırıyla kütüphanenin dizinini göstererek, kütüphaneyi projemizde kullanabilir hale getiriyoruz :
     <script type="text/javascript" src="taffydb-master/taffy.js"> </script>
    
      Şimdi sayfamızda basit bir veri tabanı oluşturmayı görelim :
    var sehirler = TAFFY([{ sehirIsmi: "Eskişehir", plakaKodu: "26" }, { sehirIsmi: "İstanbul", plakaKodu: "34" }, { sehirIsmi: "Zonguldak", plakaKodu: "67"}]);
      Örneğimizde global TAFFY fonksiyonunu kullanarak, "sehirler" isimli yeni bir veri tabanı oluşturduk ve oluşturduğumuz veri tabanının satırlarını {sütun1_ismi: "değeri" , sütun2_ismi: "değeri" } formatında ekledik. Örneğimizi genişletip, veri tabanı işlemlerini örneğimizde uygulamadan önce, bu işlemleri gerçekleştirirken kullanacağımız temel Taffy DB fonksiyonlarını tanıyalım :
    • insert(): Parametre olarak veri tabanı oluştururken yazdığımız formatta, veri tabanı kayıtlarını alır ve ilgili veri tabanına ekler. Kullanımı :
    •  sehirler.insert({ sehirIsmi: "Ankara", plakaKodu: "06" });
      
    • limit(): Parametre olarak bir sayı alır ve bu sayı, veri tabanının ilk kaç verisi üzerinde çalışacağımızı belirtir. Yani veri tabanın bir kısmı üzerinde işlem yapabilmemizi sağlar. Örneğin fonksiyona "limit(4)" şeklinde bir parametre girdiğimizde, veri tabanının ilk 4 elemanı üzerinde işlemler yapabiliriz. Kullanımı:  
    •  sehirler.limit(4);
      
    • start(): Parametre olarak bir sayı alır ve bu sayı, veri tabanının kaçıncı kaydından itibaren işlem yapacağımızı belirtir. "start(3)" dediğimizde 3. kayıttan itibaren veri tabanının elemanları üzerinde çalışırız. Kullanımı:
    •  sehirler.start(3);
      
    • update(): Parametre olarak güncellenecek veya değiştirilecek objenin, hangi sütun veya sütunları değiştirilecekse onu alır ve yeni değeriyle eşleştirilir. Aşağıdaki örneğimizde "sehirIsmi" sütununun değeri "Eskişehir" olan kaydın, bu değeri "İzmir" olarak değiştirilmiştir:
    •  sehirler({ sehirIsmi: "Eskişehir"}).update({"sehirIsmi":"İzmir"});
      
       Eğer bu kodumuzu aşağıdaki şekilde yazmış olsaydık, veri tabanındaki tüm "sehirIsmi" sütunlarını "İzmir" değeriyle değiştirmiş olacaktık:
       sehirler().update({"sehirIsmi":"İzmir"});
      
    • remove(): Bu fonksiyon herhangi bir parametre almıyor ve veri tabanından istenilen kaydı silmeye yarıyor. Peki herhangi bir parametre almadan hangi kaydı sileceğimizi nereden bilebiliriz? Bu sorunun cevabı; sileceğimiz kaydı, ayırt edilebilirliğini sağlayan ilgili sütun ve satır değeri ile veri tabanı üzerinden çağırmak olacaktır. Aşağıdaki örneğimizde "sehirIsmi" sütunun değeri "Ankara" olan kaydı veri tabanından sildik:
       sehirler({ sehirIsmi: "Ankara" }).remove();
      
      Eğer bu kodu aşağıdaki şekilde yazmış olsaydık, veri tabanındaki tüm kayıtları silmiş olacaktık:
       sehirler().remove();
      
    • sort(): Fonksiyon veri tabanı içindeki verileri, istenilen düzene göre sıralamayı sağlar. Parametre olarak, verilerin sıralanması istenilen ilgili sütunun ismini ve sıralanma biçimini (artan, azalan düzen) alır. Aşağıdaki kullanımda "sehirler" veri tabanı üzerindeki veriler, "plakaKodu" sütununa göre, plaka kodları artan (ascending) düzende olacak şekilde sıralanmıştır.
    •  sehirler.sort("plakaKodu asec");
      
    • select(): Parametre olarak bir veya daha fazla sütunun isimlerini alır. Fonksiyonla, ismi yazılan sütunlardaki veriler, veri tabanından seçilmiş olur. Bu veriler, istenirse bu yolla başka bir veri dizisine aktarılabilir. Örneğimizde bu şekilde, 2 sütunun değerlerinin seçilip, bir başka veri dizisine aktarılışını görelim:
    •  var veri = sehirler().select("sehirIsmi","plakaKodu");
      
    • join(): Fonksiyon iki veri tabanın, istenilen sütunlarını birleştirerek onlar üzerinde işlem yapabilmemizi sağlar. Birinci veri tabanımızın adı "vt1", ikinci veri tabanımızın adı da "vt2" olsun. "vt1" veri tabanımız "sütun_vt1" ve "vt2" veri tabanımız da "sütun_vt2" sütunlarına sahip olsun. Şimdi bu iki veri tabanının bu sütunlarını birleştirmeyi görelim:
    •  vt1().join(vt2, ['sütun_vt1', 'sütun_vt2'])
      
      Şimdi buraya kadar gördüklerimizden faydalanarak basit bir ASP.NET projesi oluşturalım: 
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript" src="taffydb-master/taffy.js"> </script>
        <script type="text/javascript">
    
            var sehirler = TAFFY([{ sehirIsmi: "Eskişehir", plakaKodu: "26" },
                                  { sehirIsmi: "İstanbul", plakaKodu: "34" }, 
                                  { sehirIsmi: "Zonguldak", plakaKodu: "67"}]);
    
            sehirler.insert({ sehirIsmi: "Ankara", plakaKodu: "06" });
    
            function tablo_olustur() {
    
                var body = document.getElementsByTagName("body")[0];
    
                // <table> ve <tbody> elemanlarını oluşturma
                var tbl = document.createElement("table");
                var tblBody = document.createElement("tbody");
    
                // tablo hücrelerini ve satırlarını oluşturma
                var satır1 = document.createElement("tr");
    
                var hucre1 = document.createElement("td");
                var hucreText1 = document.createTextNode("Şehir İsmi:");
                hucre1.appendChild(hucreText1);
                satır1.appendChild(hucre1)
    
                var hucre2 = document.createElement("td");
                var hucreText2 = document.createTextNode(sehirler().select("sehirIsmi"));
                hucre2.appendChild(hucreText2);
                satır1.appendChild(hucre2);
    
                var satır2 = document.createElement("tr");
    
                var hucre3 = document.createElement("td");
                var hucreText3 = document.createTextNode("Plaka Kodu:");
                hucre3.appendChild(hucreText3);
                satır2.appendChild(hucre3)
    
                var hucre4 = document.createElement("td");
                var hucreText4 = document.createTextNode(sehirler().select("plakaKodu"));
                hucre4.appendChild(hucreText4);
                satır2.appendChild(hucre4);
    
                // tabloya oluşturulan satırları ekleme
                tblBody.appendChild(satır1);
                tblBody.appendChild(satır2);
    
                // <tbody>'yi <table>'ın içine koyma
                tbl.appendChild(tblBody);
                // <table>'ı <body>'ye ekleme
                body.appendChild(tbl);
                // çerçeve oluşturma
                tbl.setAttribute("border", "2");
            }
        </script>
    </head>
    <body style="width: 696px">
        <form id="form1" runat="server">
        <input type="button" value="Tablo Oluştur" onclick="tablo_olustur()">
        </form>
    </body>
    </html>
    
      Örneğimizde HTML içeriğinde, tablo oluşturma işlemi için bir buton ve JavaScript içeriğinde de bu işlemi gerçekleştirip, oluşturduğumuz "sehirler" veri tabanının verilerini bu tablonun hücrelerine yerleştiren "tablo_oluştur" fonksiyonunu oluşturduk. JavaScript içeriğinde aynı zamanda, öğrendiğimiz şekliyle "TAFFY()" fonksiyonuyla bir veri tabanı oluşturduk; "insert()" fonksiyonuyla veri tabanına bir veri ekledik; "select()" fonksiyonuyla da ilgili sütunun değerlerini hücrelere yazdırmak için seçtik. Şimdi bu örneğimizin, tablo oluştur butonuna bastıktan sonraki çıktısını görelim:
    Örneğimizde şimdi daha önce öğrendiğimiz şekliyle, aşağıdaki "update()" yani düzenleme fonksiyonunu, <script> etiketi içerisine ekleyip bir kaydın içeriğini değiştirelim:
    sehirler({ sehirIsmi: "İstanbul" }).update({ sehirIsmi: "İzmir" ,plakaKodu: "35"});
    
      Örneğimizin bu kodla düzenleme yaptıktan sonraki çıktısını görelim:
      Benzer şekilde aşağıdaki kod ile "remove()" yani silme fonksiyonunun işleyişini görelim: 
    sehirler({ sehirIsmi: "Zonguldak" }).remove();
    
      Bu kodu ekledikten sonra tablomuzun son hali:
      Son olarak da "first()" ve "last()" fonksiyonlarının kullanımını,aşağıdaki kodu ekleyerek, veri tabanımız üzerinde bir JavaScript mesaj kutusu içinde görelim: 
    alert("son kayıt: " + sehirler().last().sehirIsmi + "  ilk kayıt: " + sehirler().first().sehirIsmi);
    
    Örneğimizin son hali üzerinde bu kodun çalışmasını görelim:
      
    Taffy DB kütüphanesinin kullanımı ve işlevleri bu şekildedir. Anlaşılacağı üzere kütüphanenin veri tabanı işlemlerinde kullanımı oldukça kolay ve veri tabanı ile ilgili pek çok ihtiyacı karşılayacak düzeydedir. Benzer şekilde, öğrendiğimiz diğer fonksiyonları da kullanarak istediğimiz çeşitlilikte veri tabanı işlemleri yapabiliriz.

    Kaynaklar:
    http://www.taffydb.com/
    https://github.com/typicaljoe/taffydb
    http://www.taffydb.com/workingwithdata
    http://ajaxian.com/archives/taffy-db-javascript-database

    17 Kasım 2013 Pazar

    JAVASCRİPT KÜTÜPHANELERİNİN  GÖRSELLEŞTİRME VE GÖRÜNTÜ EFEKTİ İŞLEMLERİNDE KULLANIMI VE JS CHARTS KÜTÜPHANESİ

    JavaScript Kütüphanelerinin Görselleştirme ve Görüntü Efekti İşlemlerinde Kullanımı
    Merhaba arkadaşlar bu hafta sizlere JavaScript kütüphanelerinin görselleştirme ve görüntü efekti işlemlerinde kullanımınından ve de JScharts kütüphanesininden bahsedeceğim. JavaScript kütüphaneleri ile veri kümelerini, internet tabanlı, oldukça etkileyici görsel temsillere çevirmek mümkündür. Bu işlemler için kullanılan başlıca JavaScript kütüphaneleri: Processing.js ( 2 boyutlu çıktı sağlayan çizim, renk işleme,yazı tipleri gibi pek çok alanda görselleştirme sağlayan kütüphane), Raphael.js (Vektörel grafikler oluşturmayı ve bu grafiklere ölçekleme, döndürme, çizim eğrileri eklemeyi sağlayan kütüphane), ImageFX (Resimlere rengini açma, netleştirme, bulanıklaştırma gibi görüntü efektleri ekleyen kütüphane), Reflection.js (resimler üzerinde yansıma efekti oluşturmayı sağlayan kütüphane) ve JS Charts (temel tipteki pasta, çubuk ve çizgi grafik türlerini oluşturmaya yarayan kütüphane) gibidir.

    JS Charts Kütüphanesi
    JS Charts istemci tabanlı komut dosyası kullanılarak grafikler oluşturmaya yarayan bir JavaScript kütüphanesidir. Bu kütüphane çubuklar (bars), pasta grafikleri (pie charts) ve basit çizgilerle (lines) farklı tiplerde grafikler çizmemize izin verir. Windows için Firefox 1.5 ve üzeri, Chrome 10 ve üzeri, İnternet Explorer 8 ve üzeri, Safari 3.1 ve üzeri, Opera 9 ve üzeri tarafından; Mac için Firefox 1.5 ve üzeri, Chrome 10 ve üzeri, Safari 2 ve üzeri tarafından desteklenmektedir. Kütüphaneyi JSCharts linkinden indirebilirsiniz. Kütüphaneyi kullanabilmek için öncelikle sayfanın <head> bölümüne bu satırı eklememiz gerekiyor:
    <script type="text/javascript" src="jscharts.js"></script>
    Sonrasında oluşturacağımız grafiğin tutulacağı bir içerici (container) hazırlamalıyız. Bu işlemi basitçe, benzersiz (unique) bir id özelliğine sahip <div> etiketiyle yapabiliriz :
    <div id="container"></div>
    Şimdi bir ASP.NET sayfası üzerinden JSChart kütüphanesinin nasıl çalıştığını görelim. Kütüphaneyi kullanabilmek için verdiğim linkten indirdikten sonra, ASP.NET sayfamıza şekilde görüldüğü gibi ekliyoruz:


    Artık JSCharts Kütüphanesi'nin fonksiyonlarını rahatça kullanarak, istediğimiz türde grafik oluşturabiliriz. ASP.NET sayfamızda ilk olarak çizgilerle bir grafik oluşturalım :
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <div id="grafikcontainer"></div>
        <script type="text/javascript" src="sources/jscharts.js"></script>
        <script type="text/javascript">      
          var veriler = new Array([15, 20], [20, 10], [25, 30], [30, 15], [35, 20]);
            var cizgiGrafik = new JSChart('grafikcontainer', 'line');
            cizgiGrafik.setDataArray(veriler);
           cizgiGrafik.draw();</script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        </div>
        </form>
    </body>
    </html>
    
    Örneğimizde önce " <script type="text/javascript" src="sources/jscharts.js"></script> " satırıyla kütüphanemizin bulunduğu dizini göstererek, projemizde bu kütüphaneyi kullanılabilir hale getirdik. Sonrasında " <div id="grafikcontainer"></div> " satırıyla içericimizi oluşturduk. Ardından oluşturduğumuz, veriler iki boyutlu dizisiyle, oluşturacağımız grafiğin x ve y düzlemlerindeki değerlerini girdik. " var cizgiGrafik = new JSChart('grafikcontainer', 'line'); " satırıyla, bir grafik nesnesi oluşturup onun tipinin 'line' yani bir çizgi grafik olmasını ve id özelliği 'grafikcontainer'  olan içericinin içerisinde bulunmasını sağladık. setDataArray fonksiyonuyla da bu grafik nesnesinin verilerini belirledik. Grafiğin özelliklerini bu şekilde belirttikten sonra draw methoduyla bu grafiği çizdirdik. Şimdi kodumuzun çıktısını görelim :



    Bir örnek de ASP.NET sayfamızda çubuk grafik oluşturmak üzerine yapalım :
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <div id="grafikcontainer"></div>
        <script type="text/javascript" src="sources/jscharts.js"></script>
        <script type="text/javascript">
           var veriler= new Array(['1. Alan', 25], ['2. Alan', 15], ['3. Alan', 30],
            ['4. Alan', 10], ['5. Alan', 20]);
            var cubukGrafik = new JSChart('grafikcontainer', 'bar');
            cubukGrafik.setDataArray(veriler);
            cubukGrafik.draw(); </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        </div>
        </form>
    </body>
    </html>
    
    Görüldüğü gibi farklı JS Charts Kütüphanesi ile farklı tiplerde grafik nesneleri oluşturmak için, "new JSChart('icerici','grafikTipi')" koduyla oluşturduğumuz grafik nesnelerinin grafik tipi parametresine, türünü girmemiz yeterli oluyor. Örnekte çubuk grafik oluşturmak için grafik tipi parametresine 'bar' anahtar kelimesini girdik. Şimdi örneğimizin çıktısını görelim:
    Örneğimizi "new JSChart('grafikcontainer','pie') " şeklinde, sadece grafiğin tipini değiştirip 'pie' yaparak çalıştırdığımızda aynı örneği şekildeki gibi pasta grafiği olarak görüntüleyebiliyoruz : 
    Örneklerimizde çubuk grafik ve pasta grafik alanları için, biz birer renk belirtmediğimiz için alanların renkleri rastgele olarak belirlendi. Yukarıdaki kod örneğimize aşağıda yazdığım kod satırlarını ekleyerek (istediğimiz rengin HTML kodunu renk dizisine ekleyip, grafiği renklendirme  kodu) grafik alanlarının renklerini düzenleyebiliyoruz:
     Pasta grafik için: 
    var renkler= new Array('#0f0', '#ff0000', '#00f', '#ff0', '#00ffff');
    pastaGrafik.colorizePie(renkler);
    Çubuk grafik için:
    var renkler = new Array('#0f0', '#ff0000', '#00f', '#ff0', '#00ffff');
    cizgiGrafik.colorizeBars(renkler);
     Diziye eklediğimiz renk kodlarını HTML Renk Kodları linkinden istediğiniz renk ile değiştirip renklerini kendimiz belirleyeceğimiz grafikler oluşturabiliriz. 
     Görüldüğü gibi JS Charts kütüphanesiyle kolayca verileri görselleştirerek grafikler oluşturabiliyoruz. JS Charts kütüphanesiyle ilgili anlatacaklarım bu kadar. Bu hafta sizlere bir başka görselleştirme kütüphanesi olan Google Charts'dan da kısaca bahsedeceğim. Oluşturduğumuz tüm bu grafik örneklerini ve başka türlerdeki grafikleri, kaynak dosyalarımıza herhangi bir kütüphane eklemeden Google Charts ile yapabiliriz. Bunu nasıl gerçekleştirdiğimizi hemen basit bir örnekle görelim. Yine ASP.NET sayfamızın <head> bölümüne geliyoruz ve aşağıda yazdığım kodla bir Google Charts grafiği oluşturuyoruz:
    <div id="grafik_alanı"></div>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
        
          google.load('visualization', '1.0', {'packages':['corechart']});
    
          google.setOnLoadCallback(drawChart);
    
          function drawChart() {
    
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Topping');
            data.addColumn('number', 'Slices');
            data.addRows([
              ['1. Alan', 40],
              ['2. Alan', 10],
              ['3. Alan', 15],
              ['4. Alan', 15],
              ['5. Alan', 20]
            ]);
    
            var baslık= {'title':'Google Chart',
                           'width':400,
                           'height':300};
    
            var grafik= new google.visualization.PieChart(document.getElementById('grafik_alanı'));
            grafik.draw(data, baslık);
          }
          </script>

     Örneğimizde Google Charts ile bir pasta grafiği oluşturmayı gördük. JS Charts'ı kullanırken kütüphanenin dizinini girdiğimiz src özelliğini, bu sefer "src="https://www.google.com/jsapi" yaparak Google Charts Kütüphanesi'ni ASP.NET sayfamıza gömmüş oluyoruz. Sonrasında rahatlıkla Google Charts fonksiyonlarını kullanıp, kütüphanenin grafiklerini oluşturabiliyoruz. Örnekte gördüğümüz "google.visualization.PieChart(document.getElementById('grafik_alanı'));" satırıyla yukarıda belirtmiş olduğumuz özelliklerdeki pasta grafiğimizi, grafik_alanı içericisi üzerinde oluşturduk ve "grafik.draw(data, baslık);" satırıyla da bu grafiğimizi sayfaya çizdirdik.   Şimdi bu örneğimizin çıktısını görelim:
     Görüldüğü gibi Google Charts grafiklerinin görünümüyle, JS Charts grafiklerinin görünümü arasında bazı farklılıklar bulunuyor; grafik alan başlıklarının görünüm yerleri,alanların grafikteki oranlarının görünümü gibi. Ayrıca JS Charts grafiklerini sadece pie, line, bar şeklinde yani pasta,çizgi ve çubuk grafikler olarak görüntüleyebilmemize karşın, Google Charts bu çeşit grafiklerin yanı sıra dağılım grafiği (scatter chart), coğrafi bölgelerin haritalı grafiği (geo chart), halkasal grafik  (donut chart) gibi pek çok farklı grafik çeşitlerini de desteklemektedir. Farklı türlerdeki bu grafiklerin görünümleri için Google Charts Grafik Örnekleri linkinden faydalanabilirsiniz. İsteğiniz türdeki bu grafiklerden herhangi birini kullanmak için; "google.visualization.PieChart(document.getElementById('grafik_alanı'));
    satırında grafiğin pasta grafik türünde olmasını sağlayan PieChart isimli fonksiyonun yerine, GeoChart, DonutChart gibi grafik türlerinin orijinal isimlerinden oluşan fonksiyonlarını çağırmamız gerekiyor. 
      Bu haftalık size bahsedeceklerim bu kadar. Verilerin görselleştirilmesinde pek çok kolaylık sağlayan bu kütüphanelerin kullanımını basitçe anlatmaya çalıştım. İhtiyacınıza göre her ikisi de fonksiyonel olan, Google Charts ve JS Charts kütüphanelerinden istediğinizi kullanabilirsiniz umarım bu yazı sonrasında.

    Kaynaklar:

    http://www.jscharts.com/free-download
    http://www.jscharts.com/
    http://www.codeproject.com/Articles/18618/JavaScript-Chart
    http://www.w3schools.com/html/html_colors.asp
    https://developers.google.com/chart/interactive/docs/gallery?hl=tr
    https://developers.google.com/chart/?hl=tr


    3 Kasım 2013 Pazar

    JAVASCRİPT KÜTÜPHANELERİNİN ANİMASYON OLUŞTURMADA KULLANIMI VE JSTWEENER KÜTÜPHANESİ

     JavaScript Kütüphanelerinin Animasyon Oluşturmada Kullanımı
    Merhaba arkadaşlar bu hafta JavaScript kütüphanelerinin animasyon oluşturmada kullanımını ve JSTweener Kütüphanesi'ni göreceğiz. JavaScript tabanlı kütüphanelerin ve çerçevelerin (framework) ortaya çıkması, internet geliştiricilere etkili animasyonlar ve geçişler oluşturmada kolaylık sağlamıştır. 
     JavaScript tabanlı animasyonların genel mantığı; sayfada bulunan DOM elemanlarının (Belge Nesnesi Modeli: sayfada bulunan resim, yazı, form gibi tüm elemanlar), mantıksal bir denklem ya da fonksiyon tarafından belirlenen desene göre hareket ettirmektir. Sayfa efektlerini elde etmek için bu elemanlar, belli aralıklarla ve belli hızlarla hareket ettirilmelidir. Bunu yapmanın en kolay yolu bir gecikme fonksiyonu kullanmaktır:
    birinciFonksyon();
    delay(400); // uygulamayı 400 milisaniye duraklatır.
    ikinciFonksiyon();
    
     Örnekte anlaşılacağı üzere JavaScript'de bu gecikme işlemi delay() fonksiyonu ile yapılmaktadır. Bu işlemi bir döngü halinde yapıp animasyon görüntüsü elde edebilmek için ise setTimeout ve setInterval fonksiyonları kullanılır:
    setTimeout(konumDegistirmeFonksiyonu,500);
    setInterval(konumDegistirmeFonksiyonu,500);
    
     Yukarıdaki örnekte setTimeout fonksiyonu, konum değiştirme fonksiyonunu, bulunulan andan 500 milisaniye sonrasında çağırıyor. Bu fonksiyon bir döngü içerisine çağırıldığında, form elemanını hareket ettirerek basit bir JavaScript animasyonu oluşturmamızı sağlıyor. setInterval fonksiyonu ile de konum değiştirme fonksiyonu program durdurulana kadar, her 500 milisaniyede bir çağırılarak istenilen animasyon görünümü sağlanmış oluyor. Bu ve benzeri yollarla istenilen görünümde animasyonları oluşturmak ve gelişmiş animasyon efektlerini kolaylıkla gerçekleştirmemizi sağlayan başlıca JavaScript animasyon kütüphaneleri: $fx (HTML nesneleri hareket ettirmek ve belli bir zaman sürecinde herhangi bir CSS özelliğini değiştirmeye yarayan kütüphane), FacebookAnimation (Facebook uygulamaları için CSS tabanlı animasyon oluşturmayı sağlayan kütüphane), FX (renk değiştirme ve kaydırma animasyonlarını destekleyen bir animasyon kütüphanesi) ve JSTweener (geniş kapsamlı ele alacağımız geçiş animasyonları oluşturma ve ara doldurma (tweening) kütüphanesi) kütüphaneleridir.

     JSTweener Kütüphanesi
    Bu kütüphanenin özelliklerinden bahsetmeden önce "tween" kavramını öğrenelim. Tween terimi anahtar kareler arasında, ardışık karelerle animasyon oluşturma anlamına gelir. Bilgisayar yazılımlarında şekil arası doldurma ve ara hareket oluşturmada kullanılır. JSTweener JavaScript tabanlı Tweener sınıfına bir ara doldurma (tweening) kütüphanesidir. Bu kütüphane daha hassas ve hızlı animasyonlar için sıfırdan tasarlanmış olup, eş zamanlı animasyonlar oluşturmaya olanak sağlar. Tüm temel tarayıcılar tarafından desteklenir. Kütüphaneyi JSTweener linkinden indirebilirsiniz. Şimdi bir örnekle kütüphanenin kullanımını bir ASP.NET sayfası üzerinde görelim. Kütüphaneyi indirdikten sonra, ASP.NET projemize bu dosyaları şekilde görüldüğü gibi ekliyoruz : 


    Sonrasında, kütüphaneyi kullanabilmek için sayfanın <head> bölümüne bu satırı eklememiz gerekiyor : 
    <script language="javascript" type="text/javascript" src="src/tweenjs/Tween.js">          </script>
    
     Kütüphanenin eylemleri Tween'ler üzerinden gerçekleştirildiği için, öncelikle bunu oluşturmayı görelim. Bir Tween değişkeni oluşturabilmek için, Tween sınıfının yapıcı methodunu (constructor) çağırıp, gerekli parametreleri girmemiz gerekiyor.
    var t = new Tween(nesne,ozellik,hız,ilk,son,sayi,sonek);
    
     nesne : Bu parametreye şeklini düzenlemek, hareket ettirmek, efekt eklemek gibi değişiklikler yapacağımız nesneyi yazıyoruz.
     ozellik : Bu parametre hedef nesne üzerinde güncellenir ve boş bırakılabilir.
     hız : Hareketin hızını ve uygulanacak genişliği belirleyen parametredir.
     ilk : Başlangıç pozisyonunun girildiği parametredir.
     son : Hareketin bitiş pozisyonunun girildiği parametredir.
     sayi : Saniyede oluşturulacak animasyon sayısının girildiği parametredir.
     sonek : Buraya düzenlenecek özelliğin son eki girilir; px (piksel),pt (punto) gibi.

    Şimdi basit bir örnek üzerinden kütüphanenin kullanımını görelim :

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script language="javascript" type="text/javascript" src="lib/tweenjs-0.5.0.min.js"> </script> <script language="javascript" type="text/javascript" src="src/tweenjs/Tween.js"> </script> </head>
    <body> <form id="form1" runat="server"> <div> <div id="sq" style="width:50px;height:50px;position:relative;left:0px;border:1px solid #333333;background-color:Blue"></div> <input type="button" value="Harekete Başla" onclick=" t1 = new Tween(document.getElementById('sq').style,'left',Tween.elasticEaseOut,0,500,10,'px'); var a = new Object(); a.onMotionFinished = function(){ alert( 'Hareket Sonlandı' ) }; a.onMotionStarted = function(){ alert( 'Hareket Başladı' ) } t1.addListener(a) t1.start();"/> <input type="button" onclick="t1.stop();" value="Durdur" /> <input type="button" onclick="t1.resume();" value="Devam Et"/> <input type="button" onclick="t1.rewind();" value="Başa Dön"/> <input type="button" onclick="t1.forward();" value="Sona Git"/> </div> </form> </body> </html>
     Örneğimizde öncelikle  "Harekete Başla" butonunda "new Tween(document.getElementById('sq').style,'left',Tween.elasticEaseOut,0,500,10,'px')" satırıyla hareket ettireceğimiz Tweenimizi oluşturduk. Oluşturduğumuz a değişkeni üzerinden onMotionFinished olay işleyicisini çağırarak hareketin bitişinde ve onMotionStarted olay işleyiciyle de hareketin başlangıcında birer mesaj gösterdik. Eklediğimiz diğer butonlarla da hareketi durdurma, kaldığı yerden devam ettirme, başa alma, hareketin mümkün en son pozisyonuna gitme gibi düzenlemelerini sağladık. Örnekteki kodu çalıştırdığımızda ilk olarak şekildeki görüntüyü alıyoruz :
















    "Harekete başla" butonuna basınca aldığımız görüntü:





























    Hareket sonlandığında aldığımız görüntü :
















    Şekillerde görüldüğü üzere Tweener kütüphanesiyle, form nesnesinin hareketini dinamik 
    olarak sağlayabiliyoruz.

    Kaynaklar :
    http://jstween.sourceforge.net/
    http://www.createjs.com/#!/TweenJS
    http://tweener.ivank.net/
    https://github.com/CreateJS/TweenJS/tags