Widget | Parametre (Kısıt)

Tanım

Eklendiği sayfada bulunan diğer uygun widgetlardaki veriye kısıt gönderilmesini sağlayan widgettır.

Kullanımı

"Tasarım Modu" açıldığında "Sayfa Tasarımı Düzenle" özelliği ile sayfa layout üzerinden "Yeni Widget Ekle" ile eklenebilir.


Parametre widgetı, kısıt verilmesi istenen widgetların bulunduğu sayfaya eklenmeli ve ayarları yapılmalıdır. Advanced SQL widget ve Grafik Rapor widgetlarına kısıt verilebilmesini sağlayan parametre widgetı, widgetların data kaynaklarına göre haberleşme sağlar.

  • View ve tablolar için ilgili kısıtı sorguda direkt olarak where clause olarak verirken, prosedürler için xml kullanarak kısıt verebilir. (Prosedürün de bu duruma göre yazılmış olması gerekmektedir.)


1) Bir Prosedüre kısıt gönderme: 

 

Örnek olarak aşağıdaki şekilde grafik rapor içerisinde tanımlı prosedüre tetiklenme aşamasında veri XML olarak gönderildiğinden, prosedür içerisi de buna uygun şekilde yapılandırılmalıdır.
*Parametreler içindeki *Name İsim alanı, prosedürlere gönderilen "FormData" xml inde gönderilen alan ismi için kullanılır. 


  • exec sp_executesql N'EXEC PRTSP_REVENUE_LINE_CHART BranchId,CurrentAccountCode,@FormData',N'@CurrentAccountCode nvarchar(8),@BranchId int,@StoreId int,@UserId int,@FormData nvarchar(346)',@CurrentAccountCode=N'12011001',@BranchId=0,@StoreId=0,@UserId=2,@FormData=N'<?xml version="1.0"?>
    <WidgetFormParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <DataForm>
       <FormElement name="ACCOUNT_CODE" formvalue="12011001" />
       <FormElement name="filterWidgetDataId" formvalue="8f41b741-5127-4b0b-862d-3520b0e2fc08" />
    </DataForm>
    </WidgetFormParam>'
    Yukarıdaki örnekte "FormData" isimli xml tipindeki input sayesinde istenen alanı filtrelemek mümkündür. Stored procedure için geçerli olan bu yapıda prosedür içine de aşağıdaki örnek gibi bir uyarlama yapılması gerekmektedir.

    2) Tablo ve viewlara kısıt gönderme:

    *Parametreler içindeki *ColumnName yani kolon ismi alanı, tablolar ve viewlar için kısıt vermeye yarar.
    Parametre widgetında cari kodu ile bir kısıtlama işlemi yapılarak rapor çekildiğinde ise aşağıdaki ekran görüntüsünde olduğu gibi profiler sorguda "ACCOUNT_CODE" kısıtı verilmiş olur.



    SELECT * FROM (SELECT ROW_NUMBER() OVER(  ORDER BY ACCOUNT_CODE)  AS RN, * FROM PRTV_BASKET (NOLOCK)  where ID>5000) AS A WHERE RN BETWEEN 1 AND 10

    Ekran

    Görünüm

    Girilen ayarlara göre sayfada bulunan diğer widgetların veri kaynaklarına kısıt uygular.
    Aşağıdaki örnek için parametre widgetının ayarları aşağıdaki gibi kullanılmıştır.



    Örneğin; boş bir sayfaya parametre widgetı ve grafik raporu eklenildiğinde ve ayarları yapıldığında, sayfa ilk yüklendiğinde görünüm kısıt verilmemiş şekildedir. (Örnekte grafik tüm cariler ve tarih için geçerli)



    "Filtrele" butonuna tıklandığında ise widgetın içinde belirlenmiş olan kısıtlar uygulanır ve sonuç örneğin aşağıdaki gibi değişir.



    Ayarlar

    Yetki dahilinde Tasarım modu ile widget üzerinde görünen "Ayarlar" kısmından eklentinin parametre ekranı açılır. 

  • Başlık Widget başlık bilgisi
  • Parametreler Parametreler bölümünde json dizisi yazılarak tek tek verilmesi gereken kısıtlar yazılır. Json içine yazılabilecek olan değerler:
  • Name: İsim alanı, prosedürlere gönderilen "FormData" xml inde gönderilen alan ismi için kullanılır.

**Dinamik rapor ve Parametre (Kısıt) widget ayarlarında; verilen tarih kısıtları için "Parametreler" bölümünde "Name" alan isminin içinde büyük ya da küçük harflerle "TARIH" veya "DATE" kelimeleri geçmesi gerekmektedir. Aksi durumda, bu kısıtlar tarih formatında algılanmaz.
**Dinamik rapor ve Parametre (Kısıt) widget ayarlarında; verilen ondalık kısıtları için "Parametreler" bölümünde "Name" alan isminin içinde büyük ya da küçük harflerle "ONDALIK" veya "DOUBLE" kelimeleri geçmesi gerekmektedir. Aksi durumda, bu kısıtlar ondalık formatında algılanmaz.

  • ColumnName: Kolon ismi alanı, tablolar ve viewlar için kısıt vermeye yarar.
  • Label: Alanın widget içerisinde görünüm etiketi için kullanılır.
  • DefaultValue: Filtre için varsayılan bir değer tutar.
  • Required: True durumunda zorunlu alan olarak tanımlanır.
  • DataType: Kolon verisinin tipinin belirlendiği alandır. Bu alanlar ;

 

String(Metin) = 1,
Int(Tamsayı) = 2,
Date(Tarih) = 3,
Boolean(Doğru/Yanlış) = 4,
CurrentAccount (Cari)= 5,
ResellerCode(Plasiyer Kodu) = 6,
ResellerId (Plasiyer ID)= 7,
Inventory(Stok) = 8,
ProjectCode (Proje Kodu)= 9,
Salesman (Satıcı)= 10,
Invoice (Fatura)= 11,
WarehouseCode(Depo) = 12,
ReturnInvoices (İade Faturası)= 13,
SpecialCode1(Özel Kod1) = 14,
SpecialCode2 (Özel Kod2)= 15,
ConditionalCode (Koşul Kodu)= 16,
AllCurrentAccounts (Tüm Cariler )= 17,
Double (Ondalık) = 18


şeklinde tanımlanmıştır.

  • Operator: Veritabanında yapılan aramalarda kullanılan büyüklük, küçüklük, ya da eşitlik işlemlerinin belirlendiği alandır. Bunların kullanımı ise;

Eşitlik=1,
BüyükEşit=2,
KüçükEşit=3,
İçerir=4
Örnek olarak cari kodu kolonunda "12" numarası geçen carileri aramak istiyorsanız operatör alanında 4'ü kullanırsak bu işlemi gerçekleştirecektir. Örneğimizde bitiş tarih kolonunda operatör=3 kullanılmıştır. Bu tarihe eşit ve küçük olan tarihleri getirmektedir. Başlangıç tarihinde ise büyük eşit görevi olan 2 numaralı alan başlangıç tarihine eşit ve büyük tarihleri getirmektedir.

  • DataSource: Belli kısıt için json datasource u ile custom dropdown yaratmak için kullanılır. Örneğin;

"DataSource":[{"Text":"Hepsi","Value":""},{"Text":"Beklemede","Value":"Beklemede"},{"Text":"Faturalasmis", "Value":"Faturalasmis"},{"Text":"Kismi Yüklendi.", "Value":"Kismi Yüklendi."}]
Bu değerler kısıttaki dropdown ın verilerini oluşturuyor, "Hepsi" seçeneğinde ayrı bir kısıt verilmiyor, value alanı boş. Diğer seçenekler seçilirse o durumlara göre kısıt uygulanıyor.

  • Buton Adı Filtre butonunun ismini belirler.
  • Buton Tıklama JS Adı Filtre butonunun javascript "onclick" eventini çalıştırır, form özelleştirme sayesinde "onclick" fonksiyonu oluşturabilir ve buton için çeşitli client işlemleri tanımlanabilir.

Örneğin ekrana javascript alert basmak istenirse yaratılacak fonksiyonun ismi bu alana yazılmalıdır.


Bu işlemden sonra aşağıdaki gibi form özelleştirmede aynı isimde fonksiyon tanımlanması gerekmektedir.

 


Böylece yazılan script aşağıdaki şekilde çalışır.


Page viewed 2639 times by 2 users since Jun 09, 2017