{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
{sub-section:description|text=}{sub-section}\\ 

{table:id=|class=servoy sReturnTypes}{tr:style=height: 30px;}{th}Return Types{th}{tr}{tr}{td}{span:class=sWordList}[OfflineDataDescription]{span}{td}{tr}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}[OfflineDataDescription]{td}{td}[#createOfflineDataDescription]\()
Create a descriptive model for offline data.{td}{tr}{tbody}{tbody}{tr}{td}[OfflineDataDescription]{td}{td}[#createOfflineDataDescription]\(prefix)
Create a descriptive model for offline data.{td}{tr}{tbody}{tbody}{tr}{td}[Array]{td}{td}[#getRowDescriptions]\(fs, pks)
This method returns the description of rows as a json array object.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#performSync]\(data, version, authenticateResult)
If all the changes for a mobile client needs to come as once so that they can be in 1 transaction.{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=createOfflineDataDescription|class=node}{tr:id=name}{td}h6.createOfflineDataDescription{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[OfflineDataDescription]{span}{span:id=iets|style=float: left; font-weight: bold;}createOfflineDataDescription{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:createOfflineDataDescription_des|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:createOfflineDataDescription_snc|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:createOfflineDataDescription_prs|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:createOfflineDataDescription_ret|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription_ret|trigger=none|class=sIndent}[OfflineDataDescription]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:createOfflineDataDescription_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createOfflineDataDescription_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:createOfflineDataDescription_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createOfflineDataDescription_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:createOfflineDataDescription_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createOfflineDataDescription_sam|trigger=none}{code:language=javascript}
//plugins.mobile.getOfflineFoundSetData(foundset,null);
var data = plugins.mobileservice.createOfflineDataDescription('data_');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createOfflineDataDescription-String|class=node}{tr:id=name}{td}h6.createOfflineDataDescription{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[OfflineDataDescription]{span}{span:id=iets|style=float: left; font-weight: bold;}createOfflineDataDescription{span}{span:id=iets|style=float: left;}\(prefix){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:createOfflineDataDescription-String_des|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription-String_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:createOfflineDataDescription-String_snc|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription-String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:createOfflineDataDescription-String_prs|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription-String_prs|trigger=none|class=sIndent}\{[String]} prefix -- specified formname prefix used to retrieve row data from REST wise
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:createOfflineDataDescription-String_ret|trigger=button|text=}{sub-section}{sub-section:createOfflineDataDescription-String_ret|trigger=none|class=sIndent}[OfflineDataDescription]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:createOfflineDataDescription-String_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createOfflineDataDescription-String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:createOfflineDataDescription-String_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createOfflineDataDescription-String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:createOfflineDataDescription-String_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createOfflineDataDescription-String_sam|trigger=none}{code:language=javascript}
//plugins.mobile.getOfflineFoundSetData(foundset,null);
var data = plugins.mobileservice.createOfflineDataDescription('data_');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRowDescriptions|class=node}{tr:id=name}{td}h6.getRowDescriptions{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Array]{span}{span:id=iets|style=float: left; font-weight: bold;}getRowDescriptions{span}{span:id=iets|style=float: left;}\(fs, pks){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:getRowDescriptions_des|trigger=button|text=}{sub-section}{sub-section:getRowDescriptions_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getRowDescriptions_snc|trigger=button|text=}{sub-section}{sub-section:getRowDescriptions_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getRowDescriptions_prs|trigger=button|text=}{sub-section}{sub-section:getRowDescriptions_prs|trigger=none|class=sIndent}\{[JSFoundSet]} fs -- the foundset
\{[Object]\[]} pks -- the array of pks
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getRowDescriptions_ret|trigger=button|text=}{sub-section}{sub-section:getRowDescriptions_ret|trigger=none|class=sIndent}[Array]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRowDescriptions_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getRowDescriptions_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getRowDescriptions_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getRowDescriptions_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getRowDescriptions_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getRowDescriptions_sam|trigger=none}{code:language=javascript}
/** @type {Array<Object>} */
var idsArray = new Array(100,200,300);
foundset.loadAllRecords();
var json = plugins.mobileservice.getRowDescriptions(foundset, idsArray)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=performSync|class=node}{tr:id=name}{td}h6.performSync{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}performSync{span}{span:id=iets|style=float: left;}\(data, version, authenticateResult){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:performSync_des|trigger=button|text=}{sub-section}{sub-section:performSync_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:performSync_snc|trigger=button|text=}{sub-section}{sub-section:performSync_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:performSync_prs|trigger=button|text=}{sub-section}{sub-section:performSync_prs|trigger=none|class=sIndent}\{[Object]} data -- The data package that is given to the offline\_data form ws\_update method.
\{[Number]} version -- The version number that is given to the offline\_data form ws\_update method.
\{[Object]} authenticateResult -- The authenticateResult object that is given to the offline\_data form ws\_update method. (generated by the  offline\_data.ws\_authenticate)
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:performSync_ret|trigger=button|text=}{sub-section}{sub-section:performSync_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:performSync_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:performSync_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:performSync_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:performSync_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:performSync_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:performSync_sam|trigger=none}{code:language=javascript}
try {
   databaseManager.startTransaction();
   plugins.mobileservice.performSync(data,version,authenticateResult);
   databaseManager.commitTransaction();
} catch (e) {
   databaseManager.rollbackTransaction();
   // log the error and return false to that the mobile client will know the sync did fail.
   application.output(e,LOGGINGLEVEL.ERROR);
   return false;
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}