{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=}History is a stack of form names that were visible on the screen ordered by appearance. The first/oldest item is stored in position/index 1.

Each container (the main application window or dialogs showing forms) has its own history stack. When the History object is accessed from within scripting, the methods of the History object will work with the history stack for the active container. 

Only main forms ( [currentcontroller|Globals#currentcontroller]) will be stored in History, so not forms displayed in tabpanels or splitpanes. 

The history has a maximum size of 10 entries. When the maximum size is reached, the oldest entries are automatically removed to make place for new entries.{sub-section}\\ 

{table:id=|class=servoy sSummery}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Property Summery{th}{tr}{tbody}{tr}{td}[Boolean]{td}{td}[#buttonsEnabled]
Set/Get the history buttons enabled.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummery}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summery{th}{tr}{tbody}{tr}{td}void{td}{td}[#back]\()
Navigates back in the history stack; shows the previous form (if present).{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#clear]\()
Clear the entire history stack.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#forward]\()
Navigates forward in the history stack; shows the next form (if present).{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getCurrentIndex]\()
Get the current absolute index in the history stack.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getFormName]\(i)
Get the form name based on the specified absolute index in the history stack location.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#go]\(i)
Navigates to the relative index based on current position in the history.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeForm]\(formName)
Removes the named form item from the history stack (and from memory) if not currently shown.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeIndex]\(index)
Removes an absolute index based history stack form item.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#size]\()
Returns the total size of the history stack.{td}{tr}{tbody}{table}\\ 

{table:id=property|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=buttonsEnabled|class=node}{tr:id=name}{td}h6.buttonsEnabled{td}{tr}{tr:id=des}{td}{sub-section:buttonsEnabled_des|text=|trigger=button}{sub-section}{sub-section:buttonsEnabled_des|trigger=none|class=sIndent}Set/Get the history buttons enabled.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:buttonsEnabled_snc|text=|trigger=button}{sub-section}{sub-section:buttonsEnabled_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:buttonsEnabled_prs|text=|trigger=button}{sub-section}{sub-section:buttonsEnabled_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:buttonsEnabled_ret|text=|trigger=button}{sub-section}{sub-section:buttonsEnabled_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:buttonsEnabled_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:buttonsEnabled_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:buttonsEnabled_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:buttonsEnabled_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:buttonsEnabled_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:buttonsEnabled_sam|trigger=none}{code:language=javascript}
history.buttonsEnabled = true;
var status = history.buttonsEnabled;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=back|class=node}{tr:id=name}{td}h6.back{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}back{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:back_des|text=|trigger=button}{sub-section}{sub-section:back_des|trigger=none|class=sIndent}Navigates back in the history stack; shows the previous form (if present).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:back_snc|text=|trigger=button}{sub-section}{sub-section:back_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:back_prs|text=|trigger=button}{sub-section}{sub-section:back_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:back_ret|text=|trigger=button}{sub-section}{sub-section:back_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:back_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:back_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:back_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:back_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:back_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:back_sam|trigger=none}{code:language=javascript}
history.back();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=clear|class=node}{tr:id=name}{td}h6.clear{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}clear{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:clear_des|text=|trigger=button}{sub-section}{sub-section:clear_des|trigger=none|class=sIndent}Clear the entire history stack.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:clear_snc|text=|trigger=button}{sub-section}{sub-section:clear_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:clear_prs|text=|trigger=button}{sub-section}{sub-section:clear_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:clear_ret|text=|trigger=button}{sub-section}{sub-section:clear_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:clear_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:clear_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:clear_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:clear_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:clear_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:clear_sam|trigger=none}{code:language=javascript}
history.clear();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=forward|class=node}{tr:id=name}{td}h6.forward{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}forward{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:forward_des|text=|trigger=button}{sub-section}{sub-section:forward_des|trigger=none|class=sIndent}Navigates forward in the history stack; shows the next form (if present).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:forward_snc|text=|trigger=button}{sub-section}{sub-section:forward_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:forward_prs|text=|trigger=button}{sub-section}{sub-section:forward_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:forward_ret|text=|trigger=button}{sub-section}{sub-section:forward_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:forward_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:forward_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:forward_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:forward_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:forward_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:forward_sam|trigger=none}{code:language=javascript}
history.forward();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getCurrentIndex|class=node}{tr:id=name}{td}h6.getCurrentIndex{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getCurrentIndex{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getCurrentIndex_des|text=|trigger=button}{sub-section}{sub-section:getCurrentIndex_des|trigger=none|class=sIndent}Get the current absolute index in the history stack.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getCurrentIndex_snc|text=|trigger=button}{sub-section}{sub-section:getCurrentIndex_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:getCurrentIndex_prs|text=|trigger=button}{sub-section}{sub-section:getCurrentIndex_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getCurrentIndex_ret|text=|trigger=button}{sub-section}{sub-section:getCurrentIndex_ret|trigger=none|class=sIndent}[Number] -- the current absolute index{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getCurrentIndex_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getCurrentIndex_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getCurrentIndex_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getCurrentIndex_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getCurrentIndex_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getCurrentIndex_sam|trigger=none}{code:language=javascript}
var abs_index = history.getCurrentIndex();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getFormName|class=node}{tr:id=name}{td}h6.getFormName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getFormName{span}{span:id=iets|style=float: left;}\(i){span}{td}{tr}{tr:id=des}{td}{sub-section:getFormName_des|text=|trigger=button}{sub-section}{sub-section:getFormName_des|trigger=none|class=sIndent}Get the form name based on the specified absolute index in the history stack location.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getFormName_snc|text=|trigger=button}{sub-section}{sub-section:getFormName_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getFormName_prs|text=|trigger=button}{sub-section}{sub-section:getFormName_prs|trigger=none|class=sIndent}\{[Number]} i -- the absolute index
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getFormName_ret|text=|trigger=button}{sub-section}{sub-section:getFormName_ret|trigger=none|class=sIndent}[String] -- the formName{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getFormName_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFormName_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getFormName_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFormName_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getFormName_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFormName_sam|trigger=none}{code:language=javascript}
var name = history.getFormName(history.getCurrentIndex());
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=go|class=node}{tr:id=name}{td}h6.go{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}go{span}{span:id=iets|style=float: left;}\(i){span}{td}{tr}{tr:id=des}{td}{sub-section:go_des|text=|trigger=button}{sub-section}{sub-section:go_des|trigger=none|class=sIndent}Navigates to the relative index based on current position in the history.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:go_snc|text=|trigger=button}{sub-section}{sub-section:go_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:go_prs|text=|trigger=button}{sub-section}{sub-section:go_prs|trigger=none|class=sIndent}\{[Number]} i -- the absolute index
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:go_ret|text=|trigger=button}{sub-section}{sub-section:go_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:go_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:go_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:go_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:go_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:go_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:go_sam|trigger=none}{code:language=javascript}
history.go(-3);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeForm|class=node}{tr:id=name}{td}h6.removeForm{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}removeForm{span}{span:id=iets|style=float: left;}\(formName){span}{td}{tr}{tr:id=des}{td}{sub-section:removeForm_des|text=|trigger=button}{sub-section}{sub-section:removeForm_des|trigger=none|class=sIndent}Removes the named form item from the history stack (and from memory) if not currently shown.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:removeForm_snc|text=|trigger=button}{sub-section}{sub-section:removeForm_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:removeForm_prs|text=|trigger=button}{sub-section}{sub-section:removeForm_prs|trigger=none|class=sIndent}\{[String]} formName -- the name of the form to remove.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:removeForm_ret|text=|trigger=button}{sub-section}{sub-section:removeForm_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:removeForm_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeForm_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:removeForm_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeForm_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:removeForm_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeForm_sam|trigger=none}{code:language=javascript}
var done = history.removeForm('mypreviousform');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeIndex|class=node}{tr:id=name}{td}h6.removeIndex{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}removeIndex{span}{span:id=iets|style=float: left;}\(index){span}{td}{tr}{tr:id=des}{td}{sub-section:removeIndex_des|text=|trigger=button}{sub-section}{sub-section:removeIndex_des|trigger=none|class=sIndent}Removes an absolute index based history stack form item.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:removeIndex_snc|text=|trigger=button}{sub-section}{sub-section:removeIndex_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:removeIndex_prs|text=|trigger=button}{sub-section}{sub-section:removeIndex_prs|trigger=none|class=sIndent}\{[Number]} index -- the index of the form to remove.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:removeIndex_ret|text=|trigger=button}{sub-section}{sub-section:removeIndex_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:removeIndex_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeIndex_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:removeIndex_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeIndex_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:removeIndex_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeIndex_sam|trigger=none}{code:language=javascript}
var done = history.removeIndex(history.getCurrentIndex()+1);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=size|class=node}{tr:id=name}{td}h6.size{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}size{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:size_des|text=|trigger=button}{sub-section}{sub-section:size_des|trigger=none|class=sIndent}Returns the total size of the history stack.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:size_snc|text=|trigger=button}{sub-section}{sub-section:size_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:size_prs|text=|trigger=button}{sub-section}{sub-section:size_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:size_ret|text=|trigger=button}{sub-section}{sub-section:size_ret|trigger=none|class=sIndent}[Number] -- the size{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:size_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:size_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:size_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:size_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:size_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:size_sam|trigger=none}{code:language=javascript}
var size = history.size();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}