<?xml version="1.0" encoding="UTF-8"?>
<NeoAppBuilderPlugIn>
  <Title>neoTable</Title>
  <Author>SinLios</Author>
  <Website>https://visualneo.com</Website>
  <EMail>info@sinlios.com</EMail>
  <Copyright>SinLios Soluciones Digitales 2021</Copyright>
  <Description>Version: 2021.12.16

Original script from:
https://bootstrap-table-docs3.wenzhixin.net.cn/home/
https://vitalets.github.io/x-editable/</Description>
  <Notes>Basado en:
https://bootstrap-table.wenzhixin.net.cn/home/

Last version:
16/12/2021</Notes>
  <Icon20>neoTable-icon20.png</Icon20>
  <Icon32>neoTable-icon32.png</Icon32>
  <CompiledName>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\neotable-new.nabp</CompiledName>
  <AutoInstall>yes</AutoInstall>
  <Code>function neoTableSetMultiSelectColumn(objId,columnNumber,idField){
   columnNumber--;
   columnsObj=objId+"Columns";
   if(typeof($App[columnsObj])=="undefined"){
      $App[columnsObj] = new Array();
   };
   if(typeof($App.NAB[objId])=="undefined"){
     $App.NAB[objId]=new Object();
     $App.NAB[objId].idField=idField;
   }
   $App[columnsObj][columnNumber]=({
        field: 'select',
        title: '',
        sortable: false,
        radio: false,
        checkbox: true,
        editable: false
   });
};
function neoTableSetSelectColumn(objId,columnNumber,idField){
   columnNumber--;
   columnsObj=objId+"Columns";
   if(typeof($App[columnsObj])=="undefined"){
      $App[columnsObj] = new Array();
   };
   if(typeof($App.NAB[objId])=="undefined"){
     $App.NAB[objId]=new Object();
     $App.NAB[objId].idField=idField;
   }
   $App[columnsObj][columnNumber]=({
        field: 'select',
        title: '',
        sortable: false,
        radio: true,
        editable: false
   });
};
function neoTableResetColumns(objId){
   columnsObj=objId+"Columns";
   $App[columnsObj] = new Array();
};
function neoTableHideContent(objId){
   hSize=parseInt($("#"+objId).css("height"))-125;
   hSize=hSize+"px";
   $("#"+objId+"neoTable &gt; tbody").css("display","none");
   $("#"+objId+"neoTable &gt; thead").css("display","none");
   $("#"+objId+"neoTable").css("height",hSize);
};
function neoTableShowContent(objId){
   $("#"+objId+"neoTable &gt; tbody").css("display","");
   $("#"+objId+"neoTable &gt; thead").css("display","");
   $("#"+objId+"neoTable").css("height","");
};
function neoTableSetColumn(objId,columnNumber,dataField,dataName,dataWidth,dataSortable,dataEditable,dataSearchable,dataFormatter){
   columnNumber--;
   columnsObj=objId+"Columns";
   if(typeof($App[columnsObj])=="undefined"){
      $App[columnsObj] = new Array();
   };
   if(dataEditable){
     $App[columnsObj][columnNumber]=({
        field: dataField,
        title: dataName,
        sortable: dataSortable,
        searchable: dataSearchable,
        width:dataWidth,
        editable: $App[columnsEditObj][columnNumber],
        formatter: ""
     });
   }else{
      $App[columnsObj][columnNumber]=({
        field: dataField,
        title: dataName,
        sortable: dataSortable,
        width:dataWidth,
        searchable: dataSearchable,
        editable: false,
        formatter: dataFormatter
     });
   }
};

function neoTableConfigDB(objId,dbAlias,tableName,idField){
  if(typeof($App.NAB[objId])=="undefined"){
     $App.NAB[objId]=new Object();
  }
  $App.NAB[objId].database=dbAlias;
  $App.NAB[objId].tableName=tableName;
  $App.NAB[objId].idField=idField;
};

function neoTableCheckDB(objId){
  if(typeof($App.NAB[objId])=="undefined"){
     $App.NAB[objId]=new Object();
     $App.NAB[objId].database="";
     $App.NAB[objId].tableName="";
     $App.NAB[objId].idField="";
  }
};

function neoTableEditColumnAsText(objId,columnNumber,editorMode,placement,editorTitle,placeHolder,escapeHTML,validateFunction,sendToServer,callbackFn){
   columnNumber--;
   columnsEditObj=objId+"EditCols";
   if(typeof($App[columnsEditObj])=="undefined"){
      $App[columnsEditObj] = new Array();
   };
   if(sendToServer){
       serverURL=$App.NAB.NeoPhpPath;
   }else{
       serverURL="";
   };
   neoTableCheckDB(objId);
   $App[columnsEditObj][columnNumber]=({
        type: 'text',
        mode: editorMode,
        url: serverURL,
        emptytext: '----',
        placement: placement,
        title: editorTitle,
        pk: $App.neoTableRow,
        params:{
           database: $App.NAB[objId].database,
           table: $App.NAB[objId].tableName,
           idfield: $App.NAB[objId].idField,
           funcname: 'neotableupdate'
        },
        placeholder: placeHolder,
        escape: escapeHTML,
        validate: validateFunction,
        success:callbackFn
   });
};
function neoTableEditColumnAsHTML5Input(objId,html5Type,columnNumber,editorMode,placement,editorTitle,placeHolder,escapeHTML,validateFunction,sendToServer,callbackFn){
   columnNumber--;
   columnsEditObj=objId+"EditCols";
   if(typeof($App[columnsEditObj])=="undefined"){
      $App[columnsEditObj] = new Array();
   };
   if(sendToServer){
       serverURL=$App.NAB.NeoPhpPath;
   }else{
       serverURL="";
   };
   neoTableCheckDB(objId);
   $App[columnsEditObj][columnNumber]=({
        type: html5Type,
        mode: editorMode,
        url: serverURL,
        emptytext: '----',
        placement: placement,
        title: editorTitle,
        pk: $App.neoTableRow,
        params:{
           database: $App.NAB[objId].database,
           table: $App.NAB[objId].tableName,
           idfield: $App.NAB[objId].idField,
           funcname: 'neotableupdate'
        },
        placeholder: placeHolder,
        escape: escapeHTML,
        validate: validateFunction,
        success:callbackFn
   });
};
function neoTableEditColumnAsDate(objId,columnNumber,placement,editorTitle,format,viewFormat,weekFirstDay,language,validateFunction,sendToServer,callbackFn){
   columnNumber--;
   columnsEditObj=objId+"EditCols";
   if(typeof($App[columnsEditObj])=="undefined"){
      $App[columnsEditObj] = new Array();
   };
   if(sendToServer){
       serverURL=$App.NAB.NeoPhpPath;
   }else{
       serverURL="";
   };
   if(weekFirstDay=="Sunday"){
     weekFirstDayNumber=0;
   }else{
     weekFirstDayNumber=1
   }
   neoTableCheckDB(objId);
   $App[columnsEditObj][columnNumber]=({
        type: 'date',
        format: format,
        viewformat: viewFormat,
        mode: 'popup',
        emptytext: '----',
        url: serverURL,
        placement: placement,
        title: editorTitle,
        pk: $App.neoTableRow,
        params:{
           database: $App.NAB[objId].database,
           table: $App.NAB[objId].tableName,
           idfield: $App.NAB[objId].idField,
           funcname: 'neotableupdate'
        },
        datepicker:{
                language: language,
                weekStart: weekFirstDayNumber
        },
        escape: true,
        validate: validateFunction,
        success:callbackFn
   });
};
function neoTableEditColumnAsTextArea(objId,columnNumber,editorMode,placement,editorTitle,placeHolder,escapeHTML,validateFunction,sendToServer,callbackFn){
   columnNumber--;
   columnsEditObj=objId+"EditCols";
   if(typeof($App[columnsEditObj])=="undefined"){
      $App[columnsEditObj] = new Array();
   };
   if(sendToServer){
       serverURL=$App.NAB.NeoPhpPath;
   }else{
       serverURL="";
   };
   $App[columnsEditObj][columnNumber]=({
        type: 'textarea',
        mode: editorMode,
        url: serverURL,
        placement: placement,
        emptytext: '----',
        title: editorTitle,
        pk: $App.neoTableRow,
        params:{
           database: $App.NAB[objId].database,
           table: $App.NAB[objId].tableName,
           idfield: $App.NAB[objId].idField,
           funcname: 'neotableupdate'
        },
        rows:4,
        placeholder: placeHolder,
        escape: escapeHTML,
        validate: validateFunction,
        success:callbackFn
   });
};
function neoTableEditColumnAsSelect(objId,columnNumber,editorMode,placement,editorTitle,selectData,validateFunction,sendToServer,callbackFn){
   columnNumber--;
   columnsEditObj=objId+"EditCols";
   if(typeof($App[columnsEditObj])=="undefined"){
      $App[columnsEditObj] = new Array();
   };
   if(sendToServer){
       serverURL=$App.NAB.NeoPhpPath;
   }else{
       serverURL="";
   };
   var dataArray = selectData.split("\n");
   $App[columnsEditObj][columnNumber]=({
        type: 'select',
        mode: editorMode,
        url: serverURL,
        emptytext: '----',
        placement: placement,
        title: editorTitle,
        pk: $App.neoTableRow,
        params:{
           database: $App.NAB[objId].database,
           table: $App.NAB[objId].tableName,
           idfield: $App.NAB[objId].idField,
           funcname: 'neotableupdate'
        },
        source: dataArray,
        validate: validateFunction,
        success:callbackFn
   });
};
function neoTableEditColumnAsCheckList(objId,columnNumber,editorMode,placement,editorTitle,selectData,validateFunction,sendToServer,callbackFn){
   columnNumber--;
   columnsEditObj=objId+"EditCols";
   if(typeof($App[columnsEditObj])=="undefined"){
      $App[columnsEditObj] = new Array();
   };
   if(sendToServer){
       serverURL=$App.NAB.NeoPhpPath;
   }else{
       serverURL="";
   };
   var dataArray = selectData.split("\n");
   $App[columnsEditObj][columnNumber]=({
        type: 'checklist',
        mode: editorMode,
        url: serverURL,
        placement: placement,
        emptytext: '----',
        title: editorTitle,
        pk: $App.neoTableRow,
        params:{
           database: $App.NAB[objId].database,
           table: $App.NAB[objId].tableName,
           idfield: $App.NAB[objId].idField,
           funcname: 'neotableupdate'
        },
        source: dataArray,
        validate: validateFunction,
        success:callbackFn
   });
};
function neoTableInitTable(objId,language,pagination,viewmode,exportable,searchable,showcolumns,showtoggle,selectable,eventFunc){
 singleselect=!selectable;
 columnsObj=objId+"Columns";
 if(typeof($App[columnsObj])=="undefined"){
      alert("You should use neoTableAddColumn first!");
 };
 if(typeof($App.NAB[objId])=="undefined"){
     $App.NAB[objId]=new Object();
     $App.NAB[objId].idField="";
 };
 if(typeof($App.neoTableRow)=="undefined"){
     $App.neoTableRow=new Object();
 };
 if(viewmode=="Card"){
     cardview=true;
 }else{
     cardview=false;
 };
 subrutinas = angular.element(document.getElementById("ng-view")).scope();
 if(language==""){
    language="en-EN";
 }
 if(pagination==0){
    paginacion=false;
 }else{
    paginacion=true;
 }
 $("#"+objId).html('&lt;table id="'+objId+'neoTable"&gt;&lt;/table&gt;');

 $("#"+objId+"neoTable").bootstrapTable({
    pagination: paginacion,
    pageSize: pagination,
    pageList: [pagination],
    locale: language,
    clickToSelect: true,
    paginationLoop: false,
    showRefresh: false,
    maintainSelected: true,
    cardView:cardview,
    checkboxHeader: selectable,
    singleSelect: singleselect,
    //Primary key
    uniqueId: $App.NAB[objId].idField,
    idField: $App.NAB[objId].idField,
    striped: true,
    sortOrder: 'asc',
    showColumns: showcolumns,
    showToggle: showtoggle,
    search: searchable,
    showExport: exportable,
    columns: $App[columnsObj]
 });
 $("#"+objId+'neoTable').bootstrapTable({
       exportDataType:"all"
 });
 $("#"+objId+"neoTable").on('click-row.bs.table', function (e, row, $element, field){
    $App.neoTableRow=row;
    $App.neoTableEvent="click";
    $App.neoTableField=field;
    eventFunc();
 });
 $("#"+objId+"neoTable").on('check.bs.table', function (e, row, $element){
    $App.neoTableRow=row;
    $App.neoTableEvent="check";
    eventFunc();
 });
 $("#"+objId+"neoTable").on('uncheck.bs.table', function (e, row, $element){
    $App.neoTableRow=row;
    $App.neoTableEvent="uncheck";
    eventFunc();
 });
 $("#"+objId+"neoTable").on('load-error.bs.table', function (e, status, res){
    $App.neoTableEvent="loaderror";
    eventFunc();
 });
 $("#"+objId+"neoTable").on('load-success.bs.table', function (e, data){
    $App.neoTableEvent="loadsuccess";
     eventFunc();
 });
 $("#"+objId+"neoTable").on('page-change.bs.table', function (e, number, size){
    $App.neoTableEvent="pagechange";
    $App.neoTablePage=number;
    eventFunc();
 });
 $("#"+objId+"neoTable").on('search.bs.table', function (e, text){
    $App.neoTableEvent="search";
    $App.neoTableSearch=text;
    eventFunc();
 });
};
Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};
function neoTableHideColumn(objId,columnName){
   $("#"+objId+"neoTable").bootstrapTable('hideColumn', columnName);
};
function neoTableShowColumn(objId,columnName){
   $("#"+objId+"neoTable").bootstrapTable('showColumn', columnName);
};
function neoTableShowAllColumns(objId){
   $("#"+objId+"neoTable").bootstrapTable('showAllColumns');
};
function neoTableHideAllColumns(objId){
   $("#"+objId+"neoTable").bootstrapTable('hideAllColumns');
};
function neoTableGetAllData(objId){
   return $("#"+objId+"neoTable").bootstrapTable('getData');
};
function neoTableGetRowData(objId,rowId){
   return $("#"+objId+"neoTable").bootstrapTable('getRowByUniqueId', rowId);
};
function neoTableInsertRow(objId,rowIndex,rowData){
    $("#"+objId+"neoTable").bootstrapTable('insertRow',{
       index: rowIndex,
       row: rowData
    });
};
function getSelectedIds(objId){
   var ids = $.map($("#"+objId+"neoTable").bootstrapTable('getSelections'), function (row) {
        return row[$App.NAB[objId].idField];
   });
   return ids;
};
function getSelectedId(objId){
   var ids = $.map($("#"+objId+"neoTable").bootstrapTable('getSelections'), function (row) {
        return row[$App.NAB[objId].idField];
   });
   return ids[0];
};
function neoTableDeleteSelectedRows(objId){
      ids = getSelectedIds(objId);
      $("#"+objId+"neoTable").bootstrapTable('remove', {
        field: $App.NAB[objId].idField,
        values: ids
      })
};
function neoTableDeleteRowsByValue(objId, fieldName, theValue){
      $("#"+objId+"neoTable").bootstrapTable('remove', {
        field: fieldName,
        values: theValue
      })
};
function neoTableDeleteRowById(objId,rowId){
      $("#"+objId+"neoTable").bootstrapTable('removeByUniqueId', rowId);
};
function neoTableDeleteAll(objId){
      $("#"+objId+"neoTable").bootstrapTable('removeAll');
};
function neoTableGetSelectedRowsData(objId){
     return $("#"+objId+"neoTable").bootstrapTable('getSelections');
};
function neoTableLoadData(objId,theData){
     $("#"+objId+"neoTable").bootstrapTable('load',theData);
     $("#"+objId+"neoTable").bootstrapTable('uncheckAll')
};
function neoTableGotoNextPage(objId){
     $("#"+objId+"neoTable").bootstrapTable('nextPage');
};
function neoTableGotoPrevPage(objId){
     $("#"+objId+"neoTable").bootstrapTable('prevPage');
};
function neoTableGotoPage(objId, pageId){
     $("#"+objId+"neoTable").bootstrapTable('selectPage',pageId);
};
function neoTableFilterBy(objId, filter){
     $("#"+objId+"neoTable").bootstrapTable('filterBy',filter);
};
function neoTableSetData(theData,theId,theField,theValue){
   if(theData==null){
      console.log("neoTableSetData: The Array does not exist. Please use CreateEmptyArray");
   }
   if(theData[theId]==null){
      theData[theId]=new Object();
   }
   theData[theId][theField]=theValue;
};

function neoTableGetData(theData,theId,theField){
   if(theData==null){
      console.log("neoTableGetData: The Array does not exist.");
   }
   if(theData[theId]==null){
      console.log("neoTableGetData: The field does not exists.");
   }
   return theData[theId][theField];
};
function neoTableToggleView(objId){
   $("#"+objId+"neoTable").bootstrapTable('toggleView');
};</Code>
  <Files>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap-table-1.19.1\bootstrap-table-master\dist\bootstrap-table.min.css</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap-table-1.19.1\bootstrap-table-master\dist\bootstrap-table.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap-table-1.19.1\bootstrap-table-master\dist\bootstrap-table-locale-all.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap-table-1.19.1\bootstrap-table-master\dist\extensions\editable\bootstrap-table-editable.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap-table-1.19.1\bootstrap-table-master\dist\extensions\export\bootstrap-table-export.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\bootstrap3-editable\css\bootstrap-editable.css</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\bootstrap3-editable\js\bootstrap-editable.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\tableExport\tableExport.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\datepicker-locales\bootstrap-datepicker.es.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\datepicker-locales\bootstrap-datepicker.de.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\datepicker-locales\bootstrap-datepicker.fr.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\datepicker-locales\bootstrap-datepicker.it.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\datepicker-locales\bootstrap-datepicker.pt.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\datepicker-locales\bootstrap-datepicker.ru.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\datepicker-locales\bootstrap-datepicker.ja.min.js</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\bootstrap3-editable\img\clear.png</File>
    <File>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\bootstrap-table\bootstrap3-editable\bootstrap3-editable\img\loading.gif</File>
  </Files>
  <ActionList>
    <Action Name="neoTableConfigDB">
      <Hint>Database configuration.
Needs neoPHP plugin.</Hint>
      <Params>objId|OBJID|Select neoTable container;dbAlias|STRING|Database alias name (as defined in config.php);tableName|STRING|Database table name;idField|STRING|Id field name (Unique primary key)</Params>
      <Template>neoTableConfigDB(objId,dbAlias,tableName,idField);</Template>
    </Action>
    <Action Name="neoTableInitTable">
      <Hint>Initializes neoTable into a container.
</Hint>
      <Params>objId|OBJID|Select a container to initialize neoTable;language|ENUMLIST=af-ZA,ar-SA,ca-ES,cs-CZ,da-DK,de-DE,el-GR,en-US,es-AR,es-CL,es-CR,es-ES,es-MX,es-NI,es-SP,et-EE,eu-EU,fa-IR,fi-FI,fr-BE,fr-FR,he-IL,hr-HR,hu-HU,id-ID,it-IT,ja-JP,ka-GE,ko-KR,ms-MY,nb-NO,nl-NL,pl-PL,pt-BR,pt-PT,ro-RO,ru-RU,sk-SK,sv-SE,th-TH,tr-TR,uk-UA,ur-PK,uz-Latn-UZ,vi-VN,zh-CN,zh-TW|Language (i.e. 'es-ES'). Default 'en-US';pagination|INTEGER|Records per page? (0 for no pagination);viewmode|ENUMLIST=Table,Card|View mode;exportable|BOOLEAN|Allow user export data?;searchable|BOOLEAN|Allow user search through data?;showcolums|BOOLEAN|Allow user show and hide colums?;showtoggle|BOOLEAN|Allow user change view mode (table / card);selectable|BOOLEAN|Allow multiple selections? (Use neoTableSetMultiSelectColumn first);eventFunc|FUNCTION|On event subroutine (check, click, uncheck, loaderror, pagechange, search)</Params>
      <Template>neoTableInitTable(objId,language,pagination,viewmode,exportable,searchable,showcolums,showtoggle,selectable,eventFunc);</Template>
    </Action>
    <Action Name="neoTableSetColumn">
      <Hint>Sets a new neoTable column</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|INTEGER|Column number (1,2,3...);dataField|STRING|Data field name;dataName|STRING|Column header text;dataWidth|STRING|Column width. (Use px, % or empty for auto);dataSortable|BOOLEAN|Make column sortable by user?;dataEditable|BOOLEAN|User editable? (use neoTableEditColumnAs... first);dataSearchable|BOOLEAN|Searchable by user?;dataFormatter|FUNCTION|Subroutine to format the data (optional)</Params>
      <Template>neoTableSetColumn(objId,columnNumber,dataField,dataName,dataWidth,dataSortable,dataEditable,dataSearchable,dataFormatter);</Template>
    </Action>
    <Action Name="neoTableResetColumns">
      <Hint>Resets neoTable columns so they can be set again.</Hint>
      <Params>objId|OBJID|Select a container object</Params>
      <Template>neoTableResetColumns(objId);</Template>
    </Action>
    <Action Name="neoTableSetSelectColumn">
      <Hint>Sets a select column to allow user select rows</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|INTEGER|Column number (Usually 1);idField|STRING|Id field name (Unique primary key)</Params>
      <Template>neoTableSetSelectColumn(objId,columnNumber,idField);</Template>
    </Action>
    <Action Name="neoTableSetMultiSelectColumn">
      <Hint>Sets a select column to allow user select rows</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|INTEGER|Column number (Usually 1);idField|STRING|Id field name (Unique primary key)</Params>
      <Template>neoTableSetMultiSelectColumn(objId,columnNumber,idField);</Template>
    </Action>
    <Action Name="neoTableEditColumnAsText">
      <Hint>Settings to allow user edit column content as text</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|STRING|Column number (1,2,3...);editorMode|ENUMLIST=popup,inline|Editor mode;placement|ENUMLIST=top,left,right,bottom|Placement (Only for popup mode);editorTitle|STRING|Title (optional and only for popup mode);placeHolder|STRING|Placeholder text. Shown when input is empty.;escapeHTML|BOOLEAN|Escape HTML? (default true);validateFunction|FUNCTION|Data validation subroutine (optional);sendToServer|BOOLEAN|Send data to server? (Needs neoPHP plugin);callbackFn|FUNCTION|Callback subroutine after server response (optional)</Params>
      <Template>neoTableEditColumnAsText(objId,columnNumber,editorMode,placement,editorTitle,placeHolder,escapeHTML,validateFunction,sendToServer,callbackFn);</Template>
    </Action>
    <Action Name="neoTableEditColumnAsTextArea">
      <Hint>Settings to allow user edit column content using a Text Area</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|STRING|Column number (1,2,3...);editorMode|ENUMLIST=popup,inline|Editor mode;placement|ENUMLIST=top,left,right,bottom|Placement (Only for popup mode);editorTitle|STRING|Title (optional and only for popup mode);placeHolder|STRING|Placeholder text. Shown when input is empty.;escapeHTML|BOOLEAN|Escape HTML? (default true);validateFunction|FUNCTION|Data validation subroutine (optional);sendToServer|BOOLEAN|Send data to server? (Needs neoPHP plugin);callbackFn|FUNCTION|Callback subroutine after server response (optional)</Params>
      <Template>neoTableEditColumnAsTextArea(objId,columnNumber,editorMode,placement,editorTitle,placeHolder,escapeHTML,validateFunction,sendToServer,callbackFn);</Template>
    </Action>
    <Action Name="neoTableEditColumnAsSelect">
      <Hint>Settings to allow user edit column content using a drop down</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|STRING|Column number (1,2,3...);editorMode|ENUMLIST=popup,inline|Editor mode;placement|ENUMLIST=top,left,right,bottom|Placement (Only for popup mode);editorTitle|STRING|Title (optional and only for popup mode);selectData|HTML|Data (Each list item in a separate line);validateFunction|FUNCTION|Data validation subroutine (optional);sendToServer|BOOLEAN|Send data to server? (Needs neoPHP plugin);callbackFn|FUNCTION|Callback subroutine after server response (optional)</Params>
      <Template>neoTableEditColumnAsSelect(objId,columnNumber,editorMode,placement,editorTitle,selectData,validateFunction,sendToServer,callbackFn);</Template>
    </Action>
    <Action Name="neoTableEditColumnAsCheckList">
      <Hint>Settings to allow user edit column content using a drop down</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|STRING|Column number (1,2,3...);editorMode|ENUMLIST=popup,inline|Editor mode;placement|ENUMLIST=top,left,right,bottom|Placement (Only for popup mode);editorTitle|STRING|Title (optional and only for popup mode);selectData|HTML|Data (Each list item in a separate line);validateFunction|FUNCTION|Data validation subroutine (optional);sendToServer|BOOLEAN|Send data to server? (Needs neoPHP plugin);callbackFn|FUNCTION|Callback subroutine after server response (optional)</Params>
      <Template>neoTableEditColumnAsCheckList(objId,columnNumber,editorMode,placement,editorTitle,selectData,validateFunction,sendToServer,callbackFn);</Template>
    </Action>
    <Action Name="neoTableEditColumnAsDate">
      <Hint>Settings to allow user edit column content using a date picker</Hint>
      <Params>objId|OBJID|Select a container;columnNumber|STRING|Column number (1,2,3...);placement|ENUMLIST=top,left,right,bottom|Date picker placement;editorTitle|STRING|Title (optional);format|STRING|Date format for server (ie: yyyy-mm-dd) ;viewFormat|STRING|Date format for displaying (ie: yyyy-mm-dd) ;weekFirstDay|ENUMLIST=Sunday,Monday|Week first day;language|ENUMLIST=en,es,fr,de,ru,it,pt,ja|Language;validateFunction|FUNCTION|Data validation subroutine (optional);sendToServer|BOOLEAN|Send data to server? (Needs neoPHP);callbackFn|FUNCTION|Callback subroutine after server response (optional)</Params>
      <Template>neoTableEditColumnAsDate(objId,columnNumber,placement,editorTitle,format,viewFormat,weekFirstDay,language,validateFunction,sendToServer,callbackFn);</Template>
    </Action>
    <Action Name="neoTableEditColumnAsHTML5Type">
      <Hint>Settings to allow user edit column content as HTML5 input type</Hint>
      <Params>objId|OBJID|Select a container;html5Type|ENUMLIST=password,email,url,tel,number,range,time|Select HTML5 native input type;columnNumber|STRING|Column number (1,2,3...);editorMode|ENUMLIST=popup,inline|Editor mode;placement|ENUMLIST=top,left,right,bottom|Placement (Only for popup mode);editorTitle|STRING|Title (optional and only for popup mode);placeHolder|STRING|Placeholder text. Shown when input is empty.;escapeHTML|BOOLEAN|Escape HTML? (default true);validateFunction|FUNCTION|Data validation subroutine (optional);sendToServer|BOOLEAN|Send data to server? (Needs neoPHP plugin);callbackFn|FUNCTION|Callback subroutine after server response (optional)</Params>
      <Template>neoTableEditColumnAsHTML5Input(objId,html5Type,columnNumber,editorMode,placement,editorTitle,placeHolder,escapeHTML,validateFunction,sendToServer,callbackFn);</Template>
    </Action>
    <Action Name="neoTableLoadData">
      <Hint>Load data into neoTable. Previous data will be deleted</Hint>
      <Params>objId|OBJID|Select neoTable Container;theData|VARREF|Data object array (JSON)</Params>
      <Template>neoTableLoadData(objId,theData);</Template>
    </Action>
    <Action Name="neoTableSetData">
      <Hint>Sets the value of a field in a dataset</Hint>
      <Params>theData|VARREF|Data object array;theId|INTEGER|Row number (first one is 0);theField|STRING|Field name;theValue|MIXED|Value to store</Params>
      <Template>neoTableSetData(theData,theId,theField,theValue);</Template>
    </Action>
    <Action Name="neoTableGetData">
      <Hint>Gets the value of a field in a dataset</Hint>
      <Params>theData|VARREF|Data object array;theId|INTEGER|Row number (first one is 0);theField|STRING|Field name;theValue|VARREF|Variable to store result value</Params>
      <Template>theValue = neoTableGetData(theData,theId,theField);</Template>
    </Action>
    <Action Name="neoTableGetRowData">
      <Hint>Get data from the table row that contains the id passed by parameter.
The result is stored in a JSON object.
</Hint>
      <Params>objId|OBJID|Select neoTable Container;rowId|INTEGER|Row id;retvar|VARREF|Variable object to store result</Params>
      <Template>retvar = neoTableGetRowData(objId, rowId);</Template>
    </Action>
    <Action Name="neoTableGetSelectedRowsData">
      <Hint>Get data from user selected rows</Hint>
      <Params>objId|OBJID|Select neoTable Container;retvar|VARREF|Variable to store result</Params>
      <Template>retvar = neoTableGetSelectedRowsData(objId);</Template>
    </Action>
    <Action Name="neoTableGetSelectedIds">
      <Hint>Get the id's of selected rows as an Array 
with values from the primary key field.</Hint>
      <Params>objId|OBJID|Select neoTable Container;retvar|VARREF|Variable to store result</Params>
      <Template>retvar = getSelectedIds(objId);</Template>
    </Action>
    <Action Name="neoTableGetSelectedId">
      <Hint>Get the id of selected row as value from the primary key field</Hint>
      <Params>objId|OBJID|Select neoTable Container;retvar|VARREF|Variable to store result</Params>
      <Template>retvar = getSelectedId(objId);</Template>
    </Action>
    <Action Name="neoTableGetAllData">
      <Hint>Get the loaded data of neoTable at the moment that this method is called.
The result is stored in a JSON object.</Hint>
      <Params>objId|STRING|Select neoTable Container;retvar|VARREF|Variable object to store result</Params>
      <Template>retvar = neoTableGetAllData(objId);</Template>
    </Action>
    <Action Name="neoTableInsertRow">
      <Hint>Insert a new data row </Hint>
      <Params>objId|OBJID|Select neoTable Container;rowIndex|INTEGER|Row index (position) to insert new row;rowData|VARREF|Row data (variable object with the appropiate format)</Params>
      <Template>neoTableInsertRow(objId,rowIndex,rowData);</Template>
    </Action>
    <Action Name="neoTableDeleteRowById">
      <Hint>Delete just one row by id</Hint>
      <Params>objId|OBJID|Select neoTable Container;rowId|INTEGER|Row Id number</Params>
      <Template>neoTableDeleteRowById(objId,rowId);</Template>
    </Action>
    <Action Name="neoTableDeleteRowsByValue">
      <Hint>Delete rows by field value</Hint>
      <Params>objId|OBJID|Select neoTable Container;fieldName|STRING|Field name;theValue|STRING|Value</Params>
      <Template>neoTableDeleteRowsByValue(objId, fieldName, theValue);</Template>
    </Action>
    <Action Name="neoTableDeleteSelectedRows">
      <Hint>Delete user selected rows </Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableDeleteSelectedRows(objId);</Template>
    </Action>
    <Action Name="neoTableFilter">
      <Hint>Filter content to show on table</Hint>
      <Params>objId|OBJID|Select neoTable Container;"filter|FLOAT|Filter to apply ie: {age:10, hairColor: [""blue"", ""red"", ""green""]} "</Params>
      <Template>neoTableFilterBy(objId, filter);</Template>
    </Action>
    <Action Name="neoTableHideColumn">
      <Hint>Hides a neoTable column</Hint>
      <Params>objId|OBJID|Select neoTable Container;columnName|STRING|Field name to hide</Params>
      <Template>neoTableHideColumn(objId,columnName);</Template>
    </Action>
    <Action Name="neoTableHideAllColumns">
      <Hint>Hide all neoTable columns</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableHideAllColumns(objId)</Template>
    </Action>
    <Action Name="neoTableShowColumn">
      <Params>objId|STRING|Select neoTable Container;columnName|STRING|Field name to show</Params>
      <Template>neoTableShowColumn(objId,columnName);</Template>
    </Action>
    <Action Name="neoTableShowAllColumns">
      <Hint>Show all neoTable columns</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableShowAllColumns(objId);</Template>
    </Action>
    <Action Name="neoTableDeleteAll">
      <Hint>Delete all rows</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableDeleteAll(objId);</Template>
    </Action>
    <Action Name="neoTableGotoNextPage">
      <Hint>Go to the next page on a paginated neoTable</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableGotoNextPage(objId);</Template>
    </Action>
    <Action Name="neoTableGotoPrevPage">
      <Hint>Go to the previous page on a paginated neoTable</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableGotoPrevPage(objId);</Template>
    </Action>
    <Action Name="neoTableGotoPage">
      <Hint>Go to the specified page number on a paginated neoTable</Hint>
      <Params>objId|OBJID|Select neoTable Container;pageId|INTEGER|Page number</Params>
      <Template>neoTableGotoPage(objId,pageId);</Template>
    </Action>
    <Action Name="neoTableToggleView">
      <Hint>Toggle the card/table view.</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableToggleView(objId);</Template>
    </Action>
    <Action Name="neoTableHideContent">
      <Hint>Hide the neoTable content while keeping user interface elements and data formatting active.</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableHideContent(objId);</Template>
    </Action>
    <Action Name="neoTableShowContent">
      <Hint>Show a previously hidden neoTable content</Hint>
      <Params>objId|OBJID|Select neoTable Container</Params>
      <Template>neoTableShowContent(objId);</Template>
    </Action>
  </ActionList>
</NeoAppBuilderPlugIn>
