Ana içeriğe atla

Web Sitelerinde Dinamik ID Kullanımı

Öncelikle konu başlığındaki Dinamik ID derken ne kastettiğimi anlatmak istiyorum. Bunun için bir örnek üzerinden konuyu açıklayarak konuya başlayacağım. Basit olabilmesi açısından elinizde bir tablo olduğunu düşünün. Bu tablodaki verileri tablodaki belirli bir özelliğe göre kategorize etmek istiyorsunuz. Kategorize ettikten sonra da örneğin Bootstrap Collapse kullanarak sadece tıklandığında göstermek istiyorsunuz. Sizin senaryolarınız da benzerlik içeriyorsa anlatacağım konu size faydalı olabilir. Bu işlemleri dinamik olarak yapabilmenin anahtar noktalarından bir tanesi de two-way binding destekli JavaScript Frameworklerinden birini kullanmaktan geçer.
JavaScript yapısı gereği kodları sıralı olarak çalıştırır ve örneğin sunucu tarafından gelen verileriniz verilerin tamamı geldikten sonra işlem yapılması gerekir. Pure JavaScript kullanıyorsanız callback'ler kullanarak verileriniz sunucu tarafından geldikten sonra işlenmesini sağlayabilirsiniz. Ama bu konularla uğraşmak için JavaScript Callback konusunu çok iyi araştırmanızı tavsiye ederim. Bunun yerine yukarıda da bahsettiğimi gibi Two-way binding destekli frameworklerden birini kullanmak işlerinizi çok kolaylaştıracaktır.Two-Way Binding destekli JavaScript frameworkleri için en çok bilinenlerden olan AngularJS veya Knockout kullanmanızı tavsiye edeceğim. Bunlardan da AngularJS geliştirici kitlesinin çok olması ve Google destekli bir proje olmasından dolayı çok tercih edildiğini vurgulamak istiyorum. Ben de örneğimizde AngularJS kullanarak anlatım yapacağım.

AngularJS Logo, AngularJS Framework

Diğer önemli konulardan bir tanesi de Bootstrap Collapse'dır. Bu konuyu anlattığım makaleye de buradan erişebilirsiniz. Çünkü örneğimizde kullanacağım konulardan bir tanesi de budur. 
Gerekli kütüphaneleri tanıttıktan sonra artık örneğimize geçebiliriz. Elimizde 
scope.Kararlar = [];
gibi bir dizi olduğunu düşünün. Kararların Karar Numarası diye bir özelliği olduğunu ve bu karar numarasının bir kaç veride aynı olduğunu listemizi de karar numarasına göre kategorize etmek istediğinizi düşünün. Bunun için yapacağımız ilk işlem Karar Numaraları tekrarlanmadan listeden çıkarmak olabilir. Bunun için basitçe KararNumaraList diye bir dizi tanımlayıp Distinct(tekrarlanmadan) Karar numaralarını diziden çıkaralım.
Bunun için aşağıdaki fonksiyonu kullanabilirsiniz.

scope.KararList = [];
scope.ExtractKararList = function () {
            scope.KararList = [];
            for (i = 0; i < scope.Kararlar.length; i++) {
                scope.eklenecek = true;
                for (j = 0; j < scope.KararList.length; j++) {
                    if (scope.Kararlar [i].KararNo == scope.KararList[j].KararNo )
                    {
                        scope.eklenecek = false;
                        break;
                    }
                }
                if (scope.eklenecek) {
                    scope.KararList.push({
                        KararNo: scope.Kararlar [i].KararNo
                    });
                }
            }

        };

Bu işlemden sonra yapacağımız işlem ise karar numaralarına göre panel grubu oluşturmak olacaktır. Bunun için de bootsrap panel kullanacağız. Ama önemli olan dinamik olarak karar numaralarımızın sayısı kadar panel oluşturmaktır. Bunun için Angular ng-repeate kullanabiliriz.


<div class="panel panel-default" ng-repeat="karar in KararList">

Bu kod parçasını da ekledikten sonra yapılacak diğer işlem collapse kullarak verilerimizi karar numarasına göre kategorize etmek olacaktır. Bunun için ID değerini kullanacağız. Ve aşağıdaki HTML kodlarından sonra AngularJS tarafında neler yaptığımza bakalım.


<div class="panel-footer" style="border:none;"><strong><a data-toggle="collapse" data-target="#{{Filtrele(karar.KararNo)}}" style="cursor:pointer; color:darkblue;">Detay</a></strong></div>
<div id="{{Filtrele(karar.KararNo)}}" class="collapse">
Burada Tablo halinde verilerimizi listeleyebiliriz
</div>


Bu işlemlerden sonra yapacağım tek şey verileri filtrelemek olacaktır. Bu filtreleme işlemi basitçe ID kullanımı sırasında gerekli olan ingilizce karakterler ve rakamlar dışındaki karakterleri karar numaramızdan atmak için kullanılan fonksiyondur.

scope.Filtrele = function (kararNo) {
            kararNo = kararNo.toLowerCase();
            var kararno = "";
            var karakterArray = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "q", "w", "e", "r", "t", "y", "u", "ı", "o", "p", "ğ", "ü", "a", "s", "d", "f", "g", "h", "j", "k", "l", "ş", "i", "z", "x", "c", "v", "b", "n", "m", "ö", "ç"];

            for (i = 0; i < kararNo.length; i++) {
                var eklenecek = false;
                
                for (j = 0; j < karakterArray.length; j++) {
                    if (karakterArray[j] == kararNo.charAt(i)) {
                        eklenecek = true;
                        break;
                    }
                }
                if (eklenecek) {
                    kararno += kararNo.charAt(i);
                }
            }
            kararno += ustBirimOid;
            return kararno;

        };

İşte bu kadar. Dinamik olarak verilerimiz bir ID altında nasıl toplayacağımızı gördük. Siz de kendi projenize göre buradaki işlemleri değiştirerek uygulamalar yapabilirsiniz. Konunun biraz advanced düzeyde olduğunun farkındayım. Anlamadığınız konular olursa lütfen sorun. En kısa sürede yanıtlamaya çalışacağım...

Yorumlar

Bu blogdaki popüler yayınlar

Medyan (Ortanca) Nedir? Nasıl Hesaplanır? Nerelerde Kullanılır?

Medyan işlemi olasılık hesaplamalarında sıkça kullanılan bir sayı dizisinin ortalamasını hesaplamak için alternatif yöntemlerden bir tanesidir. Ortanca medyan işleminin diğer adıdır. Matematiksel olarak medyan işlemi bir sayı dizisi küçükten büyüğe sıralayarak ortada kalan elemanı medyan değeri olarak belirleme işlemidir. Örnek verecek olursak: 2, 1, 5, 4, 5, 1, 2, 3, 5 serisi sıralanırsa 1, 1, 2, 2, 3, 4, 5, 5, 5 serisi elde edilir. Bu seri 9 elemanlı olduğundan ortadaki, yani 5. eleman (medyan) olacaktır. 5. eleman 3 sayısıdır. Yani ortanca değeri 3'dür Eleman sayısı tek sayı olan bir seride medyan değerin sırasının hesaplaması şu şekilde formüle edilir. Medyanın Sırası = (Eleman Sayısı + 1) / 2 Bu formülü yukarıdaki örneği uygulayacak olursak; Medyanın Sırası = (9 + 1) / 2 = 5 Veri serisi eleman sayısı bir çift sayı ise bu durumda serinin 2 medyanı olacaktır. Örneğin 2, 1, 5, 4, 5, 1, 2, 3, 5, 4 serisi sıralandığında 1, 1, 2, 2, 3, 4, 4, 5, 5, 5 s

Ağaçlar Kireçle veya Badana İle Neden Boyanır?

Ağaçlar kireçle boyanmasının veya badana yapılmasının hem çevreye hem de doğaya, ağaçlara faydası var. Bu makalede bu geleneği enine boyuna tartışmaya çalıştık. Ağaca zarar veren mikrop ve bakterileri öldürür. Ağacı çok aşarı soğuk havalarda ve çok aşırı sıcak havalarda korur. Ağacın çürümesini ve kurtlanmasını önler. Ağacın gövdesinin alabileceği zararları en az düzeyde düşürmeyi sağlar. Hoş, güzel, hijyenik, temiz pırıl pırıl bir görüntü oluşturur. Ayrıca çok sıcak havalarda da ağacı yanmaya karşı korumak. En büyük etkisi soğuk havalarda ağacı don vurmalarına karşı korumak . Küresel ısınma göz önüne alındığında mevsim değişiklikleri ani don, ani ısı artışları ve azalışları sonucunun doğuracağı etkenler için yararlı etkin bir yöntem. Gövdeden obur dalların çıkmasını azaltmak için sürülür. Kireçleme ağaçları güneş yanığından korumak için yapılıyor. Ağaçlar da güneşten yanabiliyorlar. Bu arada odun dokudaki gözenekleri doldurarak kapattığı için, zararlıların yuv

Azərbaycan Dilində Vurğu Qəbul Etmeyen Şekilçiler

Sözlərdə hecalardan birinin digərlərinə nisbətən daha qüvvətli deyilməsinə heca vurğusu deyilir. Üzərinə vurğu düşən hecaya isə vurğulu heca deyilir. Azərbaycan dilində vurğu adətən söz sonuna düşür. Söz şəkilçi qəbul ederkən vurğu adətən şəkilçinin üzərinə keçir. Məsələn: çiç ə k - çiçəkl ə r - çiçəklərd ə n məkt ə b - məktəbl i - məktəblil ə r - məktəblilərd ə n Buna baxmayaraq dilimizdə bir sıra şəkilçilər var ki onlar vurğu qebul etmirlər. Bu məqalədə Azərbaycan dilində vurğu qebul etməyən şəkilçilər incələnəcək ve bu şekilçilərin hansı hallarda vurğu qebul edib hansı hallarda vurğu qebul etmediyi araşdırılacaqdır. Eyni zamanda bildirmək istəyirəm ki vurğu ilə bağlı daha geniş və ətraflı məlumat üçün Azərbaycan Dilində Vurğunun Praktik Məsələləri adlı məqaləyə də nəzər yetirə bilərsiniz.  1. İsimlərdəki şəxs(xəbərlik) şəkilçiləri Məsələn: müəli'məm müəli'msən müəli'mdir müəli'mik müəli'msiniz müəli'mdirlər Qeyd: -dır4