|
- Listing
- =======
-
- The listing widget is used to show a list of values from the server. It is a widget that is completely
- scripted and gets the list from a plug-in SQL query. It also has many viewing and customizing options
- and manages paging of results.
-
- Listing Options
- ---------------
-
- Features of a Listing widget can be controlled by setting the `opts` properties before calling the
- `make` function. The default Listing options are::
-
- list_opts = {
- cell_style : {padding:'3px 2px'},
-
- // style for alternate row
- alt_cell_style : {backgroundColor:'#F2F2FF'},
-
- // style for header
- head_style : {height:'20px',overflow:'hidden',verticalAlign:'middle',textAlign:'center',fontWeight:'bold',padding:'1px',fontSize:'13px'}
- head_main_style : {padding:'0px'},
-
- // buttons
- hide_export : 0,
- hide_print : 0,
- hide_refresh : 0,
- hide_rec_label: 0,
- show_calc: 1,
-
- // clear tab on "refresh"
- show_empty_tab : 1,
- show_bottom_paging: 1,
- no_border: 0
- };
-
- Listing Class
- -------------
-
- .. class:: Listing(head_text, no_index, no_loading)
-
- `head_text` is the header of the widget, `no_index` means that the "Serial No" is not to be shown and
- `no_loading` means the "Loading..." spinner is to be hidden while the query is executed.
-
- .. attribute:: page_len
-
- Length of one page output. Default 20
-
- .. attribute:: paging_len
-
- Number of page pointers to be shown. Default 5
-
- .. attribute:: head_text
-
- Text to be shown at the heading. Default "Results"
-
- .. attribute:: keyword
-
- Keyword for each record. Default "records"
-
- .. attribute:: colnames
-
- List of column labels
-
- .. attribute:: coltypes
-
- List of column types
-
- .. attribute:: colwidths
-
- List of column widths.
-
- **The listing only shows as many columns as specified in the `colwidths`**
-
- .. attribute:: coloptions
-
- List of column options. (Useful in case type is `Link`)
-
- .. attribute:: filters
-
- Dictionary of filter objects
-
- .. attribute:: is_std_query
-
- If this is true, it will add `match` permissions automatically. The query must be in :term:`Standard Query`
- format.
-
- .. method:: make(parent)
-
- Create the UI in the given `parent` Element. All filters must be added before this method is called
-
- .. method:: add_filter(label, ftype, options, tname, fname, cond)
-
- Add a filter input widget to the listing. See example
-
- .. method:: remove_filter(label)
-
- Remove a filter
-
- .. method:: remove_all_filters()
-
- Remove all filters
-
- .. method:: add_sort(column_index, fname)
-
- Add a sorting feature to a particular column
-
- .. method:: set_default_sort(fname, sort_order)
-
- Set the default sort property
-
- .. method:: run()
-
- Execute the query
-
- .. method:: std_cell(d, ri, ci)
-
- Render the standard output in the cell, `d` is the resultset, `ri` and `ci` are row index and
- column index
-
- Creating a Listing
- ------------------
-
- To create a listing,
-
- * Restrict the number of columns generated by specifying the `colwidths`
- * Optionally declare `colnames`, `coltypes` and `coloptions`
- * Declare the `get_query` method that will declare 2 queries
- * `query`
- * `query_max`
- * To customize the output, declare the `show_cell(cell, ri, ci, d)` method to render the cell content.
-
- See examples below
-
- Examples
- --------
-
- Example of a customized listing::
-
- // create a new listing
- var lst = new Listing();
-
- // define the columns etc
- lst.colwidths = ['5%','30%','15%','15%','20%','5%','10%'];
- lst.colnames = ['Sr.','Email','Status','','','',''];
- lst.coltypes = ['Data','Data','','','','',''];
- lst.coloptions = ['','','','','','',''];
-
- // define options
- var opts = {};
-
- opts.head_main_style = {};
- opts.cell_style = { padding:'3px 2px', borderRight : '0px', borderBottom : '1px solid #AAA'}
- opts.head_style = { padding:'3px 2px', borderBottom : '1px solid #AAA'}
- opts.alt_cell_style = {};
- opts.hide_print = 1;
- opts.no_border = 1;
-
- lst.opts = opts;
-
- // define the query
- lst.get_query = function(){
-
- // write your own query here
- this.query = repl("select name, enabled from ... where ... ");
- this.query_max = repl("select count(*) from ... where ...");
- }
-
- //show cell - customize output
- lst.show_cell = function(cell,ri,ci,d){
- if (ci==1){
- if (d[ri][ci]==1){
- var hl=$a(cell,'span','Data');
- hl.innerHTML = 'Enabled';
- $y(hl,{color:'GREEN'});
-
- }
- else if (d[ri][ci]==0){
- var hl=$a(cell,'span','Data');
- hl.innerHTML = 'Disabled';
- }
- } else{
-
- // show standard output
- lst.std_cell(d,ri,ci);
- }
- }
-
- // add filters
- lst.add_filter('Type', 'Select', ['','Old','New'].join(NEWLINE), 'Profile', 'user_type', '=');
-
- // generate
- lst.make(parent);
-
-
|