With this class you can build a extended search modal window easyly, we use this class for every "magnify icon"
 

 
To include this library in your app, just add this code to your app source code in beas, between the "_header()" and "_footer()":
<script src="assets21/js/class_extendedSearch.js"></script>
 
Class members
Method Summary 
 | 
 
 | 
constructor 
 | 
constructor( params ) 
Initialize the class 
 | 
search 
 | 
search(onclose=null) 
Open the modal window 
 | 
 
 
 
 
 
 
Method Detail 
 | 
 
 | 
constructor 
constructor( mode, batches ) 
 | 
Initialize the class 
  
Parameters: 
{json object} params 
The parameters to initialize the search dialog 
  
Property 
 | 
Data Type 
 | 
Description 
 | 
 
id 
 | 
{string}  
 | 
The dialog id 
 | 
 
title 
 | 
{string} 
 | 
Title to display for the dialog window 
 | 
 
url 
 | 
{string} 
 | 
The source of the data, it can be 
•Array of Arrays with the data 
In this case, the filter is done internally using all the field (string comparison) and the pagination is done automatically also 
  
[ ['R1-F1','R1-F2','R1-F3'], ...,['Rn-F1','Rn-F2','Rn-F3'] ] 
 | 
 
 
 
•BSL data source 
If you include the token *q* then it will be replaced automatically by the text into the filter field, and we will call to that url after the user press the search button 
  
In the next example, we display all the warehouse with the {ItemCode} or {ItemName} containing the text in the field "filter" 
  
/odata4/v1/WareHouse?$select=WhsCode,WhsName&$orderby=WhsCode&$filter=(WhsCode like "*q*" or WhsName like "*q*") 
 | 
 
 
 
 | 
 
fields 
 | 
{array of json objects} 
 | 
Field to create the data grid, is an array of json objects with this structure: 
[ {...}, ..., {...} ] 
  
Property 
 | 
Data Type 
 | 
Description 
 | 
 
title 
 | 
{string}  
 | 
The column title 
 | 
 
sort_key 
 | 
{string}  
 | 
The field name to sort by 
 | 
 
sort_dir 
 | 
{string} 
 | 
The sort direction (ASC or DESC)  
 | 
 
align 
 | 
{string}  
 | 
Field alignement (left, right, center) 
 | 
 
hidden 
 | 
{boolean}  
 | 
Hide the field true/false/"M" 
If a string with the char "M" is provided then the field is hidden only for small devices (ux.useMinimalistUI) 
 | 
 
type 
 | 
{string}  
 | 
Data type for a better rendering of the field (string, number, date, boolean) 
 | 
 
width 
 | 
{string}  
 | 
Field width 
 | 
 
ondraw 
 | 
{function}  
 | 
You can overwrite the default cell draw function setting this function (see ux.dgrid) 
 | 
 
 
 
  
 | 
 
filter 
 | 
{string} 
 | 
The initial value for the field "filter" in the modal window 
 | 
 
 
 
 | 
 
 
 
  
  
Returns: 
{class_extendedSearch object} 
  
Example 
let s = new extendedSearch( 
{id:'warehouseSearch',  
title:_t('Warehouse Search'),  
url:'/odata4/v1/WareHouse?$select=WhsCode,WhsName&$orderby=WhsCode&$filter=(WhsCode like "*q*" or WhsName like "*q*")', 
fields:[  
{title:_t("WhsCode"), sort_key:'WhsCode'}, 
{title:_t("WhsName"), sort_key:'WhsName'} 
] 
} 
); 
  
 | 
 
 
 
 | 
search 
display(onclose=null) 
 | 
Open the modal window 
  
Parameters:  
function callback onclose 
When the user close the modal window, this function is called 
  
The selected row can be read from the variable "selected_row"" 
  
 | 
 
 
 
  
Returns: 
{void} 
  
Example 
searchWindow.search(  
function() {  
if (searchWindow.selected_row != null )  
do_something(searchWindow.selected_row); 
}  
); 
                                                                  
 | 
 
 
 
  
 | 
 
 
 
x