Metadata-Version: 1.0
Name: tw.jqgrid
Version: 0.1b1dev-20101020
Summary: tosca widget wrapper around jqgrid library
Home-page: http://code.google.com/p/twjqgrid
Author: Nicolas Laurance
Author-email: nicolas[dot]laurance[at]gmail[dot]com
License: UNKNOWN
Description: 
        .. contents::
        
        Detailed Documentation
        **********************
        
        
        tw.jqgrid documentation
        =======================
        
        
        tw.jqmultiselect is a tosca widget wrapper around jquery grid plugin
         which can be found here :
        
        `http://www.trirand.com/blog/ <http://www.trirand.com/blog/>`_
        
        the version released with this package is 3.7.2
        
        in the view controller ::
        
            from tw.jqgrid import JqGrid
            colNames = ['ID','Title', 'Synopsis']
            colModel = [
                        {'name':'id', 'index':'id', 'width':20, 'align':'right'},
                        {'name':'title', 'index':'title','width':100, 'align':'left'},
                        {'name':'synopsis', 'index':'synopsis','width':580, 'align':'left', 'sortable':False},
                       ]
            search_options = {
                  "caption": "Search...",
                  "Find": "Find",
                  "Reset": "Reset",
                  "sopt" : ['cn', 'bw'],
                  "closeOnEscape":True,
            }
        
            navbuttons_options = {
                                  "view":False,
                                  "edit": False,
                                  "add": False,
                                  "del": False,
                                  "search":True,
                                  "refresh":True,
                                  }
        
            grid_local = JqGrid('movie_list', url='fetch', caption='Movies',
                        colNames=colNames, colModel=colModel,
                        rowList=[5,10], rowNum=5,
                        sortname='title',
                        viewrecords=True,
                        width='auto',
                        height='auto',
                        shrinkToFit=True,
                        search_options = search_options,
                        navbuttons_options = navbuttons_options,
            )
        
        
            class MoviesController(BaseRestController):
        
                @expose('project.templates.movies.get_all')
                def get_all(self):
                    pylons.c.grid = grid_local
                    return dict(page='all movies')
        
        in the template::
        
            ${tmpl_context.grid()}
        
        now to feed data we need a controller::
        
            from math import ceil
        
            @expose('json')
            def fetch(self, page=1, rows=10, sidx=1, sord='asc', _search='false',\
                      searchOper=u'', searchField=u'', searchString=u'', **kwargs):
                offset = (int(page)-1) * int(rows)
                q = Movie.query
                search_bool = eval(_search.capitalize())
                if (search_bool):
                    field = str(searchField)
                    field_attr = getattr(Movie, field)
                    if searchOper == u'cn':
                        q = medias_q.filter(field_attr.contains(searchString))
                    if searchOper == u'bw':
                        q = q.filter(field_attr.startswith(searchString))
        
                result_count = medias_q.count()
                total = int(ceil(result_count / float(rows))) # total nb of pages
                column = getattr(Movie.table.c, sidx)
                movies = q.order_by(getattr(column,sord)()).offset(offset).limit(rows)
                rows = [{'id'  : movie.id,
                         'cell': [movie.id,  '<a href="/medias/%s/">%s</a>' % (movie.id, movie.title),
                                  movie.synopsis]} for movie in movies]
                return dict(page=page, total=total, records=result_count, rows=rows)
        
        .. note:: this is written for an elixir model, adapt to your need
        
        design it:
        
        tw.jqgrid rely on tw.uitheme for its design, the smooth theme is the default
        you can use any other theme, or roll your own `theme <http://jqueryui.com/themeroller/>`_
        
        below a code snippet on how to do that::
        
            from tw.uitheme import lefrog_css, peppergrinder_css
            from tw.jqgrid import jqgrid_css, jqgrid_search_css
        
            class CustomGrid(JqGrid):
                css = [peppergrinder_css, jqgrid_css, jqgrid_search_css]
        
            grid_local = CustomGrid(.....
        
        
        Contributors
        ************
        
        
        Main developpers
        ================
        
        * Nicolas Laurance <nicolas[dot]laurance[at]gmail[dot]com>
        
        with contributions from
        -----------------------
        
        * Tuomas Peltonen
        
        Change history
        **************
        
        New in 0.1
        ==========
        
        0.1b1
        added parameter for edit url
        
        0.1a4
        sortorder has "asc" as default value
        better example in readme
        
        0.1a3
        added sortorder param to allow setting of default order
        thanks to : Tuomas Peltonen
        
        0.1a2
        added parameters for subgrids
        
        0.1a1
        added dependency on tw.uitheme for design
        
        0.1a0
        First Release
        
        
Keywords: toscawidgets.widgets,jquery,grid,jqgrid
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Environment :: Web Environment :: ToscaWidgets
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Widget Sets
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Framework :: TurboGears :: Widgets
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: License :: OSI Approved :: MIT License
