Web2py - Ajax Efektleri Ekleme

Bu bölümde, entegrasyon örneklerini tartışacağız. jQuery ile eklentiler web2py. Bu eklentiler, formları ve tabloları kullanıcı için daha etkileşimli ve kullanıcı dostu hale getirmeye yardımcı olur, böylece uygulamanızın kullanılabilirliğini artırır.

Özellikle öğreneceğiz

  • etkileşimli ekleme seçeneği düğmesiyle çoklu seçim açılır menüsünün nasıl iyileştirileceği,

  • bir giriş alanı kaydırıcıyla nasıl değiştirilir ve

  • tablo verileri nasıl görüntülenir jqGrid ve WebGrid.

Web2py bir sunucu tarafı geliştirme bileşeni olmasına rağmen, welcome iskele uygulaması tabanı içerir jQuerykütüphane. Bu iskele web2py uygulaması "karşılama" adlı bir dosya içerirviews/web2py_ajax.html.

Görünümün içeriği aşağıdaki gibidir -

<script type = "text/javascript"><!--

   // These variables are used by the web2py_ajax_init function in web2py_ajax.js 
      (which is loaded below).
		
   var w2p_ajax_confirm_message = "{{= T('Are you sure you want to delete this object?')}}";
   var w2p_ajax_disable_with_message = "{{= T('Working...')}}";
   var w2p_ajax_date_format = "{{= T('%Y-%m-%d')}}";
   var w2p_ajax_datetime_format = "{{= T('%Y-%m-%d %H:%M:%S')}}";
   
   var ajax_error_500 = '{{=T.M('An error occured, please [[reload %s]] the page') %
	
      URL(args = request.args, vars = request.get_vars) }}'
		
//--></script>

{{
   response.files.insert(0,URL('static','js/jquery.js'))
   response.files.insert(1,URL('static','css/calendar.css'))
   response.files.insert(2,URL('static','js/calendar.js'))
   response.files.insert(3,URL('static','js/web2py.js'))
   response.include_meta()
   response.include_files()
}}

Dosya, JavaScript ve AJAX uygulamasının uygulanmasından oluşur. web2py, kullanıcının Prototype, ExtJS gibi diğer AJAX kitaplıklarını kullanmasını engeller, çünkü bu tür kitaplıkları uygulamanın daha kolay olduğu her zaman gözlemlenir.

JQuery Etkileri

Varsayılan render <select multiple = "true">..</select>Özellikle bitişik olmayan seçeneklerin seçilmesi gerektiğinde, kullanımının o kadar sezgisel olmadığı düşünülmektedir. Bu bir HTML eksikliği olarak adlandırılamaz, ancak çoğu tarayıcı için kötü bir tasarımdır. Çoklu seçimin sunumunun üzerine JavaScript kullanılarak yazılabilir. Bu, adı verilen jQuery eklentisi kullanılarak uygulanabilir.jquery.multiselect.js.

Bunun için bir kullanıcı eklentiyi indirmelidir jquery.muliselect.js itibaren http://abeautifulsite.net/2008/04/jquery-multiselect, ve ilgili dosyaları içine yerleştirin static/js/jquery.multiselect.js ve static/css/jquery.multiselect.css.

Misal

Aşağıdaki kod önce ilgili görünüme eklenmelidir {{extend ‘layout.html’}}

{{
   response.files.append('https://ajax.googleapis.com/ajax\
      /libs/jqueryui/1.8.9/jquery-ui.js')
   
   response.files.append('https://ajax.googleapis.com/ajax\
      /libs/jqueryui/1.8.9/themes/ui-darkness/jquery-ui.css')
   
   response.files.append(URL('static','js/jquery.multiSelect.js'))
   response.files.append(URL('static','css/jquery.\multiSelect.css'))
}}

Aşağıdakileri sonrasına yerleştirin {{extend 'layout.html'}} -

<script>
   jQuery(document).ready(function(){jQuery('[multiple]').multiSelect();});
</script>

Bu modaya yardımcı olacak multiselect verilen form için

Kontrolör

def index():
   is_fruits = IS_IN_SET(['Apples','Oranges','Bananas','Kiwis','Lemons'], multiple = True)
   form = SQLFORM.factory(Field('fruits','list:string', requires = is_fruits))
   
   if form.accepts(request,session):response.flash = 'Yummy!'
return dict(form = form)

Bu eylem aşağıdaki görünümle denenebilir -

{{
   response.files.append('https://ajax.googleapis.com/ajax\
      /libs/jqueryui/1.8.9/jquery-ui.js')
   
   response.files.append('https://ajax.googleapis.com/ajax\
      /libs/jqueryui/1.8.9/themes/ui-darkness/jquery-ui.css')
   
   response.files.append(URL('static','js/jquery.multiSelect.js'))
   response.files.append(URL('static','css/jquery.\multiSelect.css'))
}}

{{extend 'layout.html}}
<script>
   jQuery(document).ready(function(){jQuery('[multiple]'). multiSelect();});
</script>
{{= form}}

Çıktının ekran görüntüsü aşağıdaki gibidir -

Yararlı Jquery olaylarından bazıları aşağıdaki tabloda listelenmiştir -

Sr.No. Etkinlik ve Kullanım
1

onchange

eleman değiştiğinde çalıştırılacak

2

onsubmit

form gönderildiğinde çalıştırılacak

3

onselect

eleman seçildiğinde çalıştırılacak

4

onblur

öğe odağı kaybettiğinde çalıştırılacak

5

onfocus

öğe odaklandığında çalıştırılacak

JQuery ve Ajax-jqGrid

jqGrid, tablo şeklindeki verileri temsil etmek ve işlemek için bir çözüm sağlayan, jQuery üzerine kurulmuş, Ajax özellikli bir JavaScript denetimidir. jqGrid bir istemci tarafı çözümdür ve verileri Ajax geri aramaları aracılığıyla dinamik olarak yükler, böylece sayfalandırma, arama açılır penceresi, satır içi düzenleme vb. sağlar.

jqGrid, PluginWiki'ye entegre edilmiştir, ancak burada, eklentiyi kullanmayan web2py programları için bağımsız olarak tartışıyoruz. jqGrid kendine ait bir kitabı hak ediyor ancak burada sadece temel özelliklerini ve en basit entegrasyonunu tartışacağız.

JqGrid'in sözdizimi aşağıdaki gibi olacaktır -

def JQGRID(
   table, fieldname = None,
   fieldvalue = None, col_widths = [],
   colnames = [], _id = None, fields = [],
   col_width = 80, width = 700,
   height = 300, dbname = 'db'
):