Index: searcher.hk/grails-app/taglib/DisplayTagLib.groovy =================================================================== --- searcher.hk/grails-app/taglib/DisplayTagLib.groovy (revision 1787) +++ searcher.hk/grails-app/taglib/DisplayTagLib.groovy Thu Nov 20 20:13:22 CST 2008 @@ -1,3 +1,5 @@ +import groovy.js.JSCategory + class DisplayTagLib { static namespace = "gui" @@ -119,7 +121,9 @@ def rowsPerPage = attrs.remove('rowsPerPage') def paginatorConfig = attrs.remove('paginatorConfig') def paramQueryString = params.collect {key,val -> "$key=$val" }.join('&') - + + def dataSource = attrs.remove('dataSource') + def dataSourceID = dataSource?.'var'?: jsid+'_ds' def dataUrl = createLink(attrs) // build query for initial request @@ -140,26 +144,32 @@ YAHOO.util.Event.onDOMReady(function () { var DataSource = YAHOO.util.DataSource, DataTable = YAHOO.widget.DataTable, - Paginator = YAHOO.widget.Paginator; + Paginator = YAHOO.widget.Paginator;""" - var ${jsid}_ds = new DataSource('${dataUrl}?'); - ${jsid}_ds.responseType = DataSource.TYPE_JSON; - ${jsid}_ds.connMethodPost=${connMethodPost}; - ${jsid}_ds.responseSchema = { + if (dataSource){ + out << use(JSCategory){dataSource.toJavaScript()} + }else{ + out << """ + var ${dataSourceID} = new DataSource('${dataUrl}?'); + ${dataSourceID}.responseType = DataSource.TYPE_JSON; + ${dataSourceID}.connMethodPost=${connMethodPost}; + ${dataSourceID}.responseSchema = { resultsList : '${attrs.remove('resultsList')}', fields : [${columnDefs.collect { "\"$it.key\""}.join(',')}], metaFields : { totalRecords: 'totalRecords' } - }; + };""" + } + out << """ var ${jsid}_paginator = new Paginator( {${grailsUITagLibService.mapToConfig paginatorConfig}} ); var myColumnDefs = [${grailsUITagLibService.listToConfig columnDefs}]; - GRAILSUI.${jsid} = new GRAILSUI.DataTable('dt_div_${id}', myColumnDefs, ${jsid}_ds, '${paramQueryString}', { + GRAILSUI.${jsid} = new GRAILSUI.DataTable('dt_div_${id}', myColumnDefs, ${dataSourceID}, '${paramQueryString}', { initialRequest : '${query}', paginator : ${jsid}_paginator, dynamicData : true,