Changes

Jump to: navigation, search

Custom Field Type: Special - Advanced Data Table

5,972 bytes added, 14:18, 5 December 2022
m
Adding a formula to a cell (working with data in the same section)
==Overview=General Description=XML (Extensible Markup Language) is a type of custom field used to create budgets and lists of information[[File:xmlSample. This advanced custom png|thumb|none|500px|Example field opens in configured as a separate window from the main browser screen, it can have multiple sections, and it is robustly configurable (formulas, validation, reporting)budget sheet. ]]
If you are looking This field type can be used to create a basic lists worksheets or tables such as budgetsheets, and lists of information. A wide range of complexity is supported from very simple tables to multi-section, multi-year budgets. This is accomplished through the ability to configure sub-sections within the same worksheet, you can and also use the define automatic cell calculations. This all adds up to a very robust, and flexible field called '''Special - In-Line Data Grid.'''
[[File:xmlSampleBy default, the data for this field is stored in the structured XML (Extensible Markup Language) format.png|The look However, you also have the option to instead use this field as a presentation layer for lists of an XML|500px|border]]sub-activity records. For example, you may use this field on a UTA Level 1 record to display any associated UTA Level 2 records for a user to easily update the activities or create new activities.
Creating If you are looking to create a XML is a multi step process. For convenience we have grouped how basic list or budget, you do specific tasks under several groupingscan also use the field called '''[[Custom Field Type: Special - In-Line Data Grid|Special - In-Line Data Grid]].'''
'''Configuring the XML {| class="wikitable"|-||Summary|||-||Commonly Used in Markets (Philanthropy, Research, Insurance)||All|-||Used By (User Type)||All|-||Requires Administrator Setup||Yes|-||Configuration Complexity (Low, Medium, High)||High|-||Time to Configure (Minutes, Hours, Days)||Hours|}==Field Options==All common options:<br />[[Custom Fields - General Information #General_Settings|General Settings]]<br />[[Custom Fields - Essentials'''General Information #Role Field Permissions and Status Field Permissions|Permissions & Availability]]<br />*Creating a Special [[Custom Fields - XML Data custom fieldGeneral Information #Classic Options|Classic Options]]<br />*Create XML section with defined number of rowsFor further information, please refer to [[Custom Fields – General Information]].<br /><br />*Create XML section with dynamic number of rowsOptions listed below are specific to this particular field type.<br />*Display XML sections{{XSL Template}}
'''Configuring the XML - Advanced'''*Creating formulas (calculations) in XML*Adding a formula to a XML cell (working with data in the same section)*Adding a formula to a XML cell (working with data in the different sections)*Validate XML values when saving the worksheet*Validating values when saving record (SmartCheck, Submit Logic, Browser Script)'''Displaying the XML'''*Displaying an XML on a object*Access, Display and Format options for XML*Styling an XML for web and print (PDF)*Reporting on a XML'''XML - Appendix'''*Field options and settings*Example of an {{XMLTag Mapping}}
{{XML Javascript Function}}
== Configuring - Essentials =={{Show View XML Button}}
=== Creating a Special - XML Data custom field ==={{Show Upload Button}}
Typically XML Data custom fields are created for UTA level 1, 2 or 3, (e.g. a grant application) or they are created for organizations. To create a XML custom field:{{Show Up/Down Button}}#Navigate to the desired place, where you want to create the XML custom field (e.g. the UTA level 1).# Click the '''New Field''' (+) button.# For Field Type select '''Special - XML Data'''.# Enter a '''Field Name''' and '''Caption'''.# Click '''Save'''.{{Show Clear Button}}
{{Custom Field Ids}}
=Configuration - Essentials=
==Creating the field==
Typically Advanced Data table custom fields are created for UTA level 1, 2 or 3, (e.g. a grant application) or they are created for organizations. To create the field:
=== Create XML with defined number of rows ===# Navigate to the desired settings area where you want to create a worksheet (e.g. the UTA level 1).# Click the '''New Field''' (+) button.# For Field Type select '''Special - Advanced Data Table'''.# Enter a '''Field Name''', '''Caption''' then '''Save'''.# Use the XML '''Section Builder''' button to create sections, including defining begin process of creating the number of rows and columns displayed, formulas, and style your XMLtables. Note you must manually enable # Use the '''Section BuilderCustom Field''' before you can use itbutton to navigate back from the Section Builder to the Field settings to configure the display of tables.
[[File:xml-sectionbuilder==Create a Simple Table==Using the '''Section Builder''' you can create sections and define the attributes of each section and the cells within them. You can define the number of rows and columns, the display format, calculation formulas, and modify other parameters.png|The section builder|500px|border]]
[[File:xml-sectionbuilder1.png|thumb|none|500px|The section builder.]]
# Scroll down to While editing the '''Options''' section and check '''Enable Builder'''. # Click '''Save'''.# In the action bar custom field click on the '''Section Builder''' button (it has the four squares on itsquare icon)in the action bar.# Enter Create a '''Section NameNew''' (e.g. '''expense''').# Click into the section and enter a '''Section Node Name''' (the name auto populatese.g. Note: '''Section Node Names''' are case sensitiveExpenses).# Enter '''Number of Rows''' desired.# Enter and '''Number of Columns''' desired.# Check Once you '''Apply Default StylesSave'''.# Navigate you will be brought to the '''Cell Grid''' in the lower section of the page.# Click into the first cell of the '''Cell GridDetails''' at the top lefttab.# Enter Define a '''Display Name'''.# Click into the top row of for the column labeled '''1'''headers (e.g. Item, Amount, Date).# Enter Define a '''Display Name''' and a '''Node Name'''.# If desired choose for the '''Format''' first column of each row (e.g. number, comma, dateSalaries, currencyEquipment, percentOther) and other settings for this column.# Repeat for Within each of the remaining column headers.# Click into the first cell in the row labeled '''1'''.# Enter you can define a '''Display Name''Format' and '''Node Name'''.# Repeat for the remaining row labelscolumn (e.g. Text, Currency, Date).# Click For the '''Build''' buttonNumber format option you may also specify a precision.# When you are done, navigate from the builder back to the field by clicking click the '''FieldBuild button''' button.Note: Do not use the same node names across different sections, rows or columns in the xml.
Note:
=== Create XML with dynamic number of rows ===The XML section builder can also # When you choose the format '''Currency''' in a column header, make sure you specify the column alignment as '''Right Align'''. This way it will be configured easy for the user to allow compare the user values. This step is also required if you plan to export this data to add additional PDF for printing.# You must use unique node names of sections, rows of data using a plus button, and columns within this field.
==Create a Table with a Dynamic Number of Rows==[[File:xmlDynamic.png|The dynamic XMLthumb|none|500px|borderExample section set to dynamic rows.]]
The is configured by entering '''0''' for the Number In addition to defining a set number of Rowscolumns and rows, which in turn exposes the following configuration options: * '''Maximum Number you can also configure a section to handle a dynamic number of Rows''': if this option is left as 0 then the user can add as many rows as needed. If populated with a numeric value then The user entering the user data can only add as many rows as specified. * '''Maximum Reached Message''': message to be displayed if user tries to add more that the specific maximum number necessary at time of rowsentry. A default message This is displayed if left blank. * done by entering '''Has Total0''': will appear when clicking into for the section's column headers. Check ''Number of Rows'Has Total''' to automatically sum and display all , which in turn exposes the items in that column. following configuration options:
Even though you set * '''Maximum Number of Rows''': Set a maximum limit to the number of rows to that can be entered, or leave as 0 you still need for no limit.* '''Maximum Message''': The message to configure one row of data which will be used to format displayed when the dynamically created rows. You may also maximum limit is set and reached by a maximum number of rows for a dynamic XML sectionuser. A default message is displayed if this input is empty.
Setting the Number of Rows to 0 also exposes the following configuration options for each column header within the Cell Details tab:
=== * '''Has Total''': Display XML sections ===the total sum of the column.The XML Data custom field has an XSL Template * '''Total Row Label''': For columns without a total display this option within allows you to enter a label for the overall XML Data custom field settingstotal sum of another column. The XSL Template is used For example, if column 3 was displaying a total, then you could configure the '''Total Row Label''' of column 2 to define how the XML will be displayed. XSL stands for Extensible Style Sheet Languagedisplay 'Total'.
==Configure the Display of Tables==The presentation of the XML Data custom field is configured in the '''General Settings''' tab of the field. This is defined in the XSL Template (Extensible Style Sheet Language) inputn. The XSL Template includes a sample template optionlink. If the Once you have inserted sample template is used then all that is left to do is you will need to specify what which sections should included appear and where they should appear.
[[File:xml-xsl.png|thumb|none|500px|The XSL template|500px|borderand configuration.]]
# In While editing the Section builder click the field button to return to the overall XML Data custom field settings. # In locate the '''XSL Template''' click link and insert the '''Sample Template''' link.# Replace <pre><!---- Insert section variable here ----></pre> with <pre>'''@section.''SectionNodeName''@'''</pre># Click '''Save'''Locate the marker below.
<pre><!---- Insert section variable here ----></pre>
# Below this marker, insert variable references to the each section with the following syntax (e.g. @section.Expenses@) in the order in which you wish the sections to appear.
The syntax '''@section.''SectionNodeName''@''' will display the section we created using the section builder. Note: you must replace '''SectionNodeName''' with the name you gave your section (e.g. '''@section.''expense''@'''), the section node name is case sensitive, and you must remove the html comments.
# Make sure you are using the '''Section Node Name''' and not the '''Section Name'''
# '''Section Node Name''' is case sensitive Example if your '''Section Node Name''' is '''Expenses''' than @section.Expenses@ will work but @section.expenses@ will not because it has a lower case '''e'''.
@section.''SectionNodeName''@
== Configuring the XML Configuration - Advanced ===Creating formulas (calculations) in cells==[[File:xml-formula.png|500px|border|Adding a formula]]
=== Creating formulas In the section builder you declare the formatting such as currency or numeric for specific columns as well as choose the precision.You can also do calculations on numeric and currency data (calculations) in XML e.g. to sum the contents of column one, over two rows, enter '''===[1,1]+[File:xml-formula2,1]''').png|Adding a formula|500px|border]]
In the section builder you declare the formatting such as currency or numeric for specific columns as well as settings like precision. If you are collecting numeric or currency data you will likely want to do calculations on this information found within your XML (e.g. to sum the contents of column one, over two rows, enter '''=[1,1]+[2,1]''').
=== Adding a formula to a XML cell (working with data in the same section) ===# Navigate to your XML custom field.# Click the '''Section Builder''' button in the action bar (section builder must be enabled).# Click the desired '''Section'''to edit it.
# Click the desired '''Cell'''.
# In Enter the '''Cell Properties''' enter your desired formula into the '''Content''' input.
# Click '''Build'''.
The Syntax for basic calculations within a section:
 {| borderclass="1wikitable"|-||'''Operation'''||'''Symbol'''||'''Example'''
|-
|| Add|| +|| =[row#,column#]+[row#,column#]
|-
|| Subtract|| -|| =[row#,column#]-[row#,column#]
|-
|| Divide|| /|| =[row#,column#]/[row#,column#]
|-
|| Multiply|| *|| =[row#,column#]*[row#,column#]
|}
So if you wanted to add the values of row 1 and 2 together in column 1 you would enter '''=[1,1]+[2,1]'''.
To minimize divide by zero errors, you can first check if the denominator is 0 (and set value to 0) by using the following syntax:<pre>=(ssParseNum([1,3])== Adding a formula to a XML cell 0 ? 0 : (working with data in the different sections[1,2]/[1,3])*100) ===</pre>
==Adding a formula to a cell (working with data in the different sections)==
Refer to cells in different sections using this syntax
'''[@section.''sectionnodenamesectionname''.id@_''rownodename''_''columnnodename'']'''
=== Validate XML values when saving If you need want to display data in the worksheet ===head of a section (row 0) from another section you can use the following:
'''@xml.customfieldname.sectionnodename.rownodename.columnnodename@'''
==Validate values when saving the worksheet==
Clicking on a cell inside the section builder will present you with the cell properties. There are two cell properties used for the validation of cells when the xml worksheet is saved.
 
* '''Validation Script''': Validates the input field.
* '''Validation Message''': Content that is displayed, when the validation script is not true (e.g. Value must be greater than 100).
* Total Amount greater than 0, for currency formatted column totals
 
<pre>ssParseNum([this])>0</pre>
Message: Total must be greater than $0.00
 
* Date is at least 30 days in the future
 
<pre>datediff(ConvertDateStr([this],'@dateformat@'),'@date(currentdate)@','d') > 30</pre>
Message: Please select a date that is at least thirty 30 days from today.
 
* Cell is not empty
 
<pre>[this].length>0</pre>
Message: Please provide a value.
 
* Check the user selected something other than the default Combo Box value
 
<pre>[this]!="Default Combo Box Value"</pre>
Message: Please select a value.
Note, '''Default Combo Box Value''' should be substituted with the default value you have configured, e.g. '''--- Select One ---'''.
 
* Integer greater than 0 (Allow only an integer or if your field on the XML is formatted to display/use a comma.)
 
<pre>parseInt([this])>0</pre>
Message: Please provide a numeric value greater than 0.
* Value entered in one cell cannot be more than 20% above or below the value in another cell <pre>(ssParseNum([this])>=(ssParseNum([1,4])*(0.80)) && ssParseNum([this])<== Validating values when saving record (SmartCheckssParseNum([1, Submit Logic, Browser Script4])*1.20)) ===</pre>Message: Value entered in one cell cannot be more than 20% above or below the value in another cell
In addition to validating values when you save the XML worksheet you can also validate the XML worksheet when you save the record (e.g. save a level 1 grant application).
When creating validation for an XML custom field use the '''Appear Mandatory''' option. Appear mandatory does not enforce the validation but will make the field look mandatory (add the asterisk and color) just like the mandatory option. Once you have checked '''Appear Mandatory''', validate the XML worksheet using one of the following validation methods, when the record is saved.
==Validating values when saving record (SmartCheck, Submit Logic, Browser Script)==
In addition to validating values when you save the worksheet you can also validate the worksheet when you save the record (e.g. save a level 1 grant application).
==== SmartCheck Validation ====Use SmartCheck When creating validation for XML an this custom field use the '''Appear Mandatory''' option. Appear mandatory does not enforce the validation when possiblebut will make the field look mandatory (it adds the asterisk and or color) just like the mandatory option. SmartCheck Once you have checked '''Appear Mandatory''', validate this field using one of the following validation methods, when the record is a secure server side method. SmartCheck also displays all error messages in a context as well as in one central placesaved.
Validate an XML table node is not empty and display a message.
 ===SmartCheck Validation===Use SmartCheck for validation when possible. SmartCheck validation is a secure server-side method. SmartCheck also displays all error messages in a context as well as in one central place. Validate a table node is not empty and display a message. <pre>if("<ssEscape>@level1.xml.fieldname.sectionnodename.rownodename.columnnodename.nodevalue@</ssEscape>"=="")
{result.isPassed=false;
result.addMsg('xml_@fieldname.id@','YourAlertMessage'); }</pre>
==== Submit Logic Validation ====Use Submit Logic in conjunction with Submit Buttons to Validate a worksheet.
Use Submit Logic Check a node in conjunction with Submit Buttons to Validate a XML not blank when saving the worksheet.
Check an XML node in not blank when saving the XML worksheet.<pre>"<ssEscape>@level1.xml.fieldname.sectionnodename.rownodename.columnnodename.nodevalue@</ssEscape>"!=""</pre>
==== Special - Browser Script validation ====You can enter JavaScript and jQuery into XML JavaScript Function input to create specific validations. Use the following syntax when referencing a value in your variables.
You can enter JavaScript and jQuery into XML JavaScript Function input to create specific validations. Use the following syntax when referencing a value in your variables.
<pre>@xml.customfieldname.sectionnodename.rownodename.columnnodename@</pre>
The following function allows you to check for an already selected value from an existing row when using dynamic rows:
 
<pre>// REPLACE '7172_dsItem_Population' AND '7172_dsItem_Population_' WITH SPECIFIC XML FIELD ID
 
var saveFunc=saveXML;
saveXML=function() {
checkdupeval();
}
function checkdupeval() {
var result = 0;
var numOfRows = document.getElementsByName('7172_dsItem_Population'); //section node
var ctr=1;
for (ctr=1;ctr<numOfRows.length;ctr++)
{
var field1='7172_dsItem_Population_'+ctr;
var lastfield='7172_dsItem_Population_'+numOfRows.length;
var a = document.getElementById(field1).value;
var b = document.getElementById(lastfield).value;
if( a == b)
{
alert ("Please list each population no more than once.");
result = 1;
}
}
if(result==0)
saveFunc();
}
</pre>
 
The following function allows you to check for an already selected value from an existing row when using dynamic rows on multiple sections:
 
<pre>
var saveFunc=saveXML;
saveXML=function() {
if (checkdupeval_Section1() == 0 && checkdupeval_Section2() == 0 && checkdupeval_Section3() == 0) {
saveFunc();
}
 
}
function checkdupeval_Section1() {
var result = 0;
var numOfRows = document.getElementsByName('16580_row_COUNTY'); // REPLACE '16580_row_COUNTY' AND '16580_row_COUNTY_' WITH SPECIFIC XML sectionid_rownodename_columnnodename for Section 1
var ctr=1;
for (ctr=1;ctr<numOfRows.length;ctr++)
{
var field1='16580_row_COUNTY_'+ctr;
var lastfield='16580_row_COUNTY_'+numOfRows.length;
var a = document.getElementById(field1).value;
var b = document.getElementById(lastfield).value;
if( a == b)
{
alert ("Please list each option no more than once for Section 1.");
result = 1;
}
}
return result;
 
}
 
function checkdupeval_Section2() {
var result = 0;
var numOfRows = document.getElementsByName('16581_row_COUNTY'); // REPLACE '16581_row_COUNTY' AND '16581_row_COUNTY_' WITH SPECIFIC XML sectionid_rownodename_columnnodename for Section 2
var ctr=1;
for (ctr=1;ctr<numOfRows.length;ctr++)
{
var field1='16581_row_COUNTY_'+ctr;
var lastfield='16581_row_COUNTY_'+numOfRows.length;
var a = document.getElementById(field1).value;
var b = document.getElementById(lastfield).value;
if( a == b)
{
alert ("Please list each option no more than once for Section 2.");
result = 1;
}
}
return result;
}
 
function checkdupeval_Section3() {
var result = 0;
var numOfRows = document.getElementsByName('16582_row_COUNTY'); // REPLACE '16582_row_COUNTY' AND '16582_row_COUNTY_' WITH SPECIFIC XML sectionid_rownodename_columnnodename for Section 3
var ctr=1;
for (ctr=1;ctr<numOfRows.length;ctr++)
{
var field1='16582_row_COUNTY_'+ctr;
var lastfield='16582_row_COUNTY_'+numOfRows.length;
var a = document.getElementById(field1).value;
var b = document.getElementById(lastfield).value;
if( a == b)
{
alert ("Please list each option no more than once for Section 3.");
result = 1;
}
}
return result;
 
}
</pre>
 
==Managing Level 2 / 3 Activities with a Section==
System administrators can configure this field to add, modify or delete {{l2}} records on a {{l1}} entity or {{l3}} records on a {{l2}} entity.
 
In the '''Section Builder''', when the ''Number of Rows'' for a Section is set to '0', the ''Enable Mapping'' option will be shown.
 
[[Image:XMLEnableMapping2017.png|link=|800px|border]]
 
 
When '''Enable Mapping''' is selected, you can choose one type of activities to be referenced by this field.
 
The '''Activity Status Filter''' setting allows you to filter the activities to be referenced by status.
 
The '''Additional Filter''' setting allows you to select custom fields and associated values. These are used to filter the existing activities that will be listed within this field. The custom fields used have to be fields with pre-defined options (e.g. [[Custom_Field_Type:_Select_One_-_Dropdown_List|Select One - Dropdown List]], and [[Custom_Field_Type:_Select_Many_–_Check_Boxes|Select Many – Check Boxes]]).
 
[[Image:XMLEnableMappingFilter2017.png|link=|650px|border]]
 
 
When building your section, you will need to map the fields on the {{l2}}s that will be referenced by the section.
 
For each Section column, enter the field name from the Level 2 type that you have selected from the '''Activity Type''' dropdown in the '''Map Field''' section:
[[Image:MappingL2Fields2017.png|link== Displaying XML Data==|800px|border]]
=== Displaying XML Data on a object ===[[FileThe syntax for the '''Map Field''' section is:xml-readonly.png|The XML displayed in a read only|500px|border]]
* for [[custom fields]], the field name (i.e., '''Fund Name''');
* for [[Standard_Field|Standard Field]]s, use the prefix '''sf_''' and then the system name for the standard field (i.e., '''sf_status''').
 
see [[Standard Level 2 Field List]] article for a list of system names for {{l2}} standard fields.
If the Standard or Custom field has a limited number of pre-defined options then these need to be defined in the Content section of the cell properties.
 
You may need to reference some standard field options using both the displayed name and stored ID values.
 
[[Image:MappingL2Fields2018.png|link=|650px|border]]
 
 
 
When this section is added to the Template of your field, the list of {{l2}} activities will be displayed when the worksheet is opened. Level 2s can be added, deleted and modified directly from the {{l1}} Advanced Data Table field.
 
=Displaying XML Data=
==Displaying Advanced Data Table data on an object==
[[File:xml-readonly.png|500px|border|The XML displayed in a read only]]
 
 
The Advanced Data Table custom field can open in a new or modal window. The '''Open in Modal Window''' option is recommended. You can toggle this on under '''Document Options'''.
 
By default the information entered into this field type is hidden until the user clicks a button. But there is a way to display the information entered into this field on your object, such as a grant application, without requiring the user to click a button and launch the modal window.
 
Use the '''Display - Text and Variables''' custom field to display the content of the Advanced Data Table on the object. The same syntax can be used elsewhere in the system when referencing this field's values.
The XML custom field opens in a modal window and the user must click a button to launch the modal window and see the information entered. You can however, display the information entered into a '''Special - XML Data''' custom field on your object, such as a grant application, without requiring the user to click a button and launch the modal window. To do this we use the '''Read Only – System Variables''' custom field. The same syntax can be used elsewhere in the system (e.g. include Display Only - Web Page View, Special MS Word Merge, visibility conditions, etc.) when referencing the xml values.
# Go to the desired location where you want to create the custom field.
# Click the '''New Field''' (+) button in the action bar.
# For '''Field Type''' select '''Read Only – System Display - Text and Variables'''.
# Enter a '''Field Name'''.
# For '''Variables''' enter '''@xml.''CustomFieldName''.''SectionNodeName''.html@''' (replace the '''CustomFieldName ''' and '''SectionNodeName ''' with the actual names from your XMLexample '''@xml.Budget.Expenses.html@''').
# Scroll Down to the '''Display''' section.
# For '''Caption''' select '''Hide Caption''' (we recommended that you hide the caption for the display so that you can utilize the full screen width).
# Click '''Save'''.
# Navigate back to the XML custom Advanced Data Table field and click '''Save''' ('''Display Fields Refreshed Upon Edit''' will be updated with this updates the linkage and ensures when data is entered into the custom field ID of worksheet the Read Only we just created. From now data displayed on when a user edits the XML the read only object will be also get automatically updated. If you miss this step it , information entered into the Advanced Data Table will only refresh in the Display - Text and Variables field when the object is saved). Note: you may want to create two '''Display - Text and Variables''' custom fields for each '''Advanced Data Table''' custom field. One that you will use for printing and one for displaying on the object. ==Access, Display and Format options for Data==The syntax options for accessing, displaying and formatting the data from the Advanced Data Table field is detailed below.
=== Access, Display and Format options for XML Data ===
Access data from within the XML field.
* Extract the value from a specific individual cell using the '''field name'''.
 
<pre>@xml.fieldname.sectionnodename.rownodename.columnnodename@</pre>
* Extract the value from a specific individual cell using the '''field id'''.
 
<pre>@xml.#fieldid#.sectionnodename.rownodename.columnnodename@</pre>
* Extract numeric value and return in '''comma format''' (i.e. 1000 will display as 1,000).
 
<pre>@xml.fieldname.sectionnodename.rownodename[# ~comma(columnnodename.nodevalue)~ #]@</pre>
* Extract a numeric value and return in '''currency format'''.
 
<pre>@xml.fieldname.sectionnodename.rownodename[# ~currency(columnodename.nodevalue)~ #]@</pre>
* Extract a numeric value and return in a '''specific currency format'''.
 
<pre>@xml.fieldname.sectionnodename.rownodename[# ~currency_eur(columnodename.nodevalue)~ #]@</pre>
Further currency formatting options below
* Specific currency formatting examples
{| border="1"
|-
|| usd|| $300.00
|-
|| eur|| €300.00
|-
|| jpy|| ¥ 300
|-
|| zar|| R 300.00
|-
|| inr|| ₹300.00
|-
|| frca|| 300,00 $
|}
 
* Extract a numeric value and return in '''currency format with two decimal places'''. If pulled from a '''dynamic''' XML section then you will see multiple values.
 
<pre>@xml.fieldname.sectionnodename.rownodename[# ~currency_eur(columnodename.nodevalue,2)~ #]@</pre>
* Extract a numeric value and return in '''currency format with two decimal places''' for value pulled from a '''static''' XML section.<pre><!--@sscalculation(format("@xml.fieldname.sectionnodename.rownodename.columnodename.nodevalue@",2))--></pre> * Extract date values and return with specific formatting using the following syntaxReturn the date number of characters in the user's date format.<pre>@xml.fieldname.sectionnodename.rownodename.formatdate(columnnodenamefield.nodevalue)@</pre>
* Return the year.<pre>@xml.fieldname.sectionnodename.year(columnnodename.nodevalue)@</pre>Return the month.<pre>@xml.fieldname.sectionnodenamerownodename.month(columnnodenamecolumnodename.nodevalue)nodevaluelength@</pre>
* Return the month nameExtract a numeric value and return in '''currency format with two decimal places''' for value pulled from a '''static''' XML section.<pre>@xml.fieldname.sectionnodename.monthname(columnnodename.nodevalue)@</pre>
* Return the day.<pre><!--@sscalculation(format("@xml.fieldname.sectionnodename.day(columnnodenamerownodename.columnodename.nodevalue@",2)@)--></pre>
* Return the day of the weekExtract a filtered row count from a '''dynamic''' XML section.<pre>@xml.fieldname.sectionnodename.dayweek(columnnodename.nodevalue)@</pre>
* Count the number of rows the user created in a dynamic XML section.<pre><!--@sscalculation(@xml.fieldnameXML Field.sectionnodenamePeople.rownodenamePerson[#(?criteria="~type.nodecountnodevalue~" == "A") 1+#]@0)--></pre>
* Return the Extract a percentage value and '''format with two decimal places'''. If pulled from a '''dynamic''' XML feed (code) from the field.<pre>@fieldnamesection then you will see multiple values.xmlvalue@</pre>
* Return multiple rows for XML with dynamic sections.<pre>@xml.fieldname.sectionnodename.rownodename[# ~columnnodenamepercentdisplay(columnodename.nodevalue,2)~ #]@</pre>
* Return Filtered row Extract date values for XML and return with dynamic sections.<pre>@xml.fieldname.sectionodename.rownodename[#(?criteria="~colunnnodename.nodevalue~" == "matching criteria")~columnnodename.nodevalue~ #]@</pre>specific formatting using the following syntaxReturn the date in the user's date format
<pre>@xml.fieldname.sectionnodename.rownodename.formatdate(columnnodename.nodevalue)@</pre>
=== Styling XML for web and print (PDF) ===[[File:xml-readonly-styled* Return the year.png|The XML styled at 700 pixels wide in a read only|500px|border]]
If you enable the '''Section Builder''' and check '''Apply Default Styles''' in each section of your XML custom field, the field will be automatically styled<pre>@xml. If you have manually added CSS classes to your cells, you will need to remove those classes and check '''Apply Default Styles''' again and then click '''Build''' on your XML in section builderfieldname.sectionnodename.year(columnnodename.nodevalue)@</pre>
Administrators with CSS knowledge can modify * Return the look and feel of their XMLs (e.g. make columns wider or thinner). To modify the look and feel of your XML, create an external CSS style sheet, upload the style sheet to a SmartFolder, add classes to the elements in your XML, and add a link to the style sheet in your '''Special - XML Data''' or '''Read Only - System Variable''' custom fieldsmonth.
==== Styling XML Data for Printing ====<pre>@xml.fieldname.sectionnodename.month(columnnodename.nodevalue)@</pre>
You can print your XML if you are displaying it in a '''Read Only - System Variable'''. Size your your XML to fit within 700 pixels wide (portrait) or 900 pixels wide (landscape) to avoid content cutting off, when a PDF is generated. If you have more than one section and more than a few columns, some of your content may cut off when printed if it is not sized. You will also notice columns between sections do not align. To fix this, we will use CSS in a SmartFolder and amend our '''Read Only - System Variable''', which is displaying * Return the XML informationmonth name.
Wrap the content in your read only system variable with a div and give the div a class<pre>@xml. We do this to control the widthfieldname. Wrap the section syntax in a div and give it a classsectionnodename. We do this so we can control the size of cells and the fonts. e.gmonthname(columnnodename.nodevalue)@</pre>
<pre><div class="xml700"><div class="xmlTitleBar">Title Bar Name</div><div class="xml3col">@xml* Return the day.fieldname.sectionnodename.html@</div></div></pre>
Now create a CSS file<pre>@xml. efieldname.gsectionnodename.day(columnnodename.nodevalue)@</pre>
<pre>@charset "utf-8";/* CSS Document */.LeftAlign {text-align:left;}.RightAlign {text-align:right;} <!--Used to align numbers like money to the right-->.xml700 {width:700px;} <!--Used to constrain Return the xml and title bars to 700px-->.xml3col .xmlHead {font-size:12px;} <!--Used to change the header font size-->.xml3col .xmlLabel {width:470px; min-width:470px; max-width:470px; font-size:12px;} <!--Used to set the first column to a set size and change the font size-->.xml3col .xmlCell {width:80px; min-width:80px; max-width:80px; font-size:12px} <!--Used to set the rest day of the columns to a set size and change the font size-->.xml3col .xmlCellweek.note {width:150px; min-width:150px; max-width:150px; font-size:12px} <!--Used to set one column to a larger size than the other cells--></pre>
Go to the desired SmartFolders and upload your CSS file<pre>@xml. Use '''View URL''' to get the path to the CSS filefieldname. Then add the relative link back into your '''Read Only - System Variable'''sectionnodename. e.gdayweek(columnnodename.nodevalue)@</pre>
<link href="/files/427076/f114840/filename* Count the number of rows the user created in a dynamic XML section.css" rel="stylesheet" type="text/css" />
Add the class '''RightAlign''' to the desired cells in the section builder<pre>@xml.fieldname.sectionnodename.rownodename.nodecount@</pre>
If you want to make one cell larger than * Return the others, add a custom class to that cell in XML feed (code) from the section builder e.gfield.
<pre>@fieldname.xml3col .xmlCell.note {width:150px; min-width:150px; max-width:150px; font-size:12px}xmlvalue@</pre>
I can add '''note''' to a cell that has xmlCell in a section wrapped in a div * Return multiple rows for XML with a class '''xml3col''' and that cell will become 150 pixels widedynamic sections.
Note: your cells must add up to 700 pixels if you are displaying your budget in a portrait PDF on letter size paper (8<pre>@xml.5 x 11”)fieldname.sectionnodename.rownodename[# ~columnnodename.nodevalue~ #]@</pre>
==== Using different styles * Return Filtered row values for Print and Web XML with XML Data ====dynamic sections.
You can have one look for your XML when it is onscreen and another when it is in PDF format for printing<pre>@xml. To do this, create two '''Read Only - System Variables''' custom fields, create two CSS style sheets in '''SmartFolders''' and reference the desired style sheet in the desired '''Read Only - System Variables'''fieldname. Then on the '''Read Only - System Variables''' for viewing on screen for '''SmartFields''' View choose '''Exclude'''sectionodename. This custom field will no longer be included in PDFs generated using the SmartFields variablerownodename[#(?criteria="~colunnnodename. For the other custom field you want to print, choose '''Only display for SmartFields View'''. Now one '''Read Only - System Variables''' will appear on screen and another when the PDF is created, and you can have a separate style sheet to control the look and feel of bothnodevalue~" == "matching criteria")~columnnodename.nodevalue~ #]@</pre>
=== Reporting on a XML ===Extract XML value in a report using the following syntax in the report builder. This will return one value for static XML sections specific to the row and * Return multiple values rows for Dynamic XML with dynamic sections across all rowsin a custom html table.<pre>ExtractValue([this], '/worksheet/sectionnodename/rownodename/columnnodename')</pre>
== XML Data - Appendix ==<pre>@xml.fieldname.sectionnodename.rownodename[# #]@</pre>
{| border=== Field options and settings ==="1"|-||~columnodename.nodevalue~||~columnodename.nodevalue~||~columnodename.nodevalue~|}
==== General Settings ====* Return a single value in the total row of a Dynamic XML.
'''Custom Field ID''': Used internally to reference the user's input<pre>@xml.fieldname.sectionnodename.total.columnnodename.nodevalue@</pre>
'''Field Type'''==Styling Advanced Data Table for web, print and conversion to PDF==[[File: Used to select the xml-readonly-styled.png|500px|border|The worksheet styled at 700 pixels wide in a Display Text and Variables custom field type from list of available field types.]]
To ensure data entered into an '''Field NameAdvanced Data Table''': Used internally fits on screen and will converted to a PDF without having data cut off, administrators need to upload two external CSS style sheet to a SmartFolder, reference it on the user's input''Advanced Data Table''' and the '''Display Text and Variables''' fields as well as add some code to both of these fields.
'''Description'''Note: Used for a general description, this field only appears on the configuration page.
# Make sure your Advanced Data Table has 8 or less columns to ensure it will print and fit on screen.# If the user is expected to enter paragraphs of information, do so in a new row or new section, instead of adding another column.# If your worksheet does not look as expected make sure '''XSL TemplateApply Default Styles''': Used to define how is toggled on in the '''Section Builder''' and then click '''Build''' on each of your sections in the XML will looksection builder.
'''XML Tag Mapping''': Used to Tag Maps.
===Styling the Advanced Data Table for viewing onscreen===Ensure the columns and rows of your '''XML Javascript FunctionAdvanced Data Table''': Used for JavaScript and jQuery functions such as validationslook good onscreen, when a user enters information, by following the steps below.
====Uploading the external CSS files and getting the relative links====# Download the CSS files [[File:CSS.zip|CSS.zip]]# In your desired instance navigate to the Menu Icon and choose '''SmartFolders'''# If it does not exist already create a '''New Folder''' and call it '''System Files'''# Upload the CSS files found inside the Zip file you downloaded in step 1# Inside SmartFolders in the column called '''File Options''' for the desired file select '''Show View XML ButtonURL''' from the drop down. This will give you the absolute path to the file you uploaded# Copy this link that starts with '''https: Used ''' and ends with '''/CSS_for_XSL_onscreen_1290.css'''.# Remove the first part of the link before the '''/files...''' to display make it a relative link. Absolute links can have an adverse affect on your instance and they won't work as expected on your backup. So Always convert the XML buttonabsolute link to a relative link. This button opens Your relative link will look like '''/files/000000/f000000/CSS_for_XSL_onscreen_1290.css'''# Save this relative link in a text file so we can add it to each '''Advanced Data Table''' custom field in your instance.# Repeat steps 5 to 8 for the second CSS file which will be used for rendering on the xml feed (code) object and in a new windowthe PDF.
====Modifying the Advanced Data Table template====# Download the templates used for the '''Show Upload ButtonAdvanced Data Table'''and the '''Display Text and Variables''' fields [[File: Used TEMPLATES.zip]].# In the desired '''Advanced Data Table''' Field paste the content from the xsl_template_1290 file you downloaded, into the XSL Template input.# Change the href in the link to display the upload buttonrelative URL that points to the CSS file you previously uploaded to the SmartFolder (Example href="/files/000000/f000000/CSS_for_XSL_onscreen_1290").# Update the text called '''Title''' in two places inside the XSL template.# Update '''@section. This button enables Section Node Name@''' with the user '''Section Node Name''' you want to upload an XML, and if display.# Modify the class wrapper with the node structure matches that amount of the fieldcolumns in your section. Example '''class="xml6col"''' is for a 6 column section. If you have 2 columns, change it will populate the cells with to '''class="xml2col"'''.# Save the correct valuesAdvanced Data table Field.
'''Show Up/Down Button''': Used Now when you click the button to display an up and down arrow on each row of a dynamic XML section. Enabling open the user to move rows up Advanced Data Table you will see your columns will render nicely and downthey will be equal in width.
'''Display fields refreshed upon edit'''Note: Displays the ID of custom fields that reference this field. When this field is modified the references will automatically update.
# Under Display you can customize the Button Label. To meet with Accessibility guidelines you must change the button label from '''Custom Field IdsOpen''': Used to reduce variable processing timesomething meaningful like '''Modify Budget'''. Specify field ids The user must know what the button will do based on the text in the button. You cannot have a generic link that says '''open''' or '''click here''' as that does not provide enough information when read out of custom fields referenced from within the current fieldcontext by a screen reader.# Sections must contain 8 or less columns to render properly and be usable.
===Styling Advanced Data Table for Converting to PDF and Printing===
You can print your Advanced Data Table content by displaying it in a '''Display Text and Variables''' custom field. In order to do this the content must fit within 700 pixels wide (portrait) or 900 pixels wide (landscape) otherwise content will cut off when a PDF is generated. To ensure content does not cut off and to ensure columns between sections align, we will use CSS in a SmartFolder and amend our '''Display Text and Variables''' custom field.
==== # Navigate to the desired '''Display Text and Variables'''.# Paste the contents of '''display.html''' into the '''Content''' section of the field.# update the href to point to the relative path to the file called '''xml-print.css''' that you uploaded to the SmartFolders.# Add your desired variable example '''@xml.Budget.Expenses.html@''' inside the div with the '''class="xml8col"'''.# Change the '''8''' in '''class="xml8col"''' to the number of columns in your section. Note you must have 8 or less columns.# If you want this table to be displayed wider for landscape printing add the word '''landscape''' in the class example '''class=="xml8col landscape"'''. # Save your custom field
'''Display Order''': Used to define where You now have a version of your Advanced Data Table that you can display on the object such as the level 1 application and you can convert this field appears relative to other fields. Lower numbers appear closer to a PDF using the top of the pageWeb Page View custom field.
If you created two '''Tab NameDisplay - Text and Variables''': Used custom fields one for printing and one for onscreen. The above instructions are for the print version as it will reduce the font size and constrain the content to display 700 pixels. In this print version use the setting '''SmartFields View''' and choose '''Include'''. This will include this field under a specific tabin the PDF. On the second '''Display - Text and Variables''' intended for on screen use '''SmartFields View''' and choose '''Exclude'''. This will hide the onscreen version from the PDF. Lastly for the onscreen version you do not use the xml-print.css or the div wrappers.
'''Caption''': Used as ==Reporting on Advanced Data Table data==Extract values in a label or question before report using the fieldfollowing syntax in the report builder. If left blank, the Field Name This will be displayed as return one value for static sections specific to the captionrow and multiple values for Dynamic sections across all rows.
'''Caption Location''': Used to control the position and visibility of the caption. See Examples <pre>ExtractValue([[Label_Display_Optionsthis]] '''Instructions''': Used to display text in the caption area. Instructions appear below the caption and are always visible unlike tool tips that appear on mouse over. '''Button Label''': Used to specify the text that appears on the button. You can also specify an icon. '''Tool Tip''': Used to display a text message when the user hovers over the question mark. These messages are intended to assist the user in filling in the desired field.'''On New Record''': Used to control when the field should be displayed.  ==== Options ====  '''Appear Mandatory''': Used to make the field look like it is required without doing validation. This is used in conjunction with other validation methods such as SmartCheck, Submit Logic or Browser Script. '''Track Changes''': Used to log changes to the field e.g. who updated the field when and what was the new and old values. '''Enable Builder''': Used to create sections, define rows, columns, formulas and styles in your XML. '''[[KML|Enable KML]]''': Used to upload a KML file which is used to display geographic data on a map. '''Disable Field from Global Search''': Used to control the display of this field in the global search results.  ==== Value Storage ==== '''Value Storage''': Used to save values to another field on the same entity. === Example of XML field === Here is an example of an XML field with one section (Expenses) 3 static rows (Salaries, Supplies and Total) and 3 columns (Amount, Notes and Date). <pre><?xml version="1.0" encoding="UTF-8"?></worksheet> <Expenses> <Salaries> <Amount>50000</Amount> <Notes>People I work with<sectionnodename/Notes> <Date>2016-11-30<rownodename/Date> </Salaries> <Supplies> <Amount>30000</Amount> <Notes>Things I need</Notes> <Date>2016-11-30</Date> </Supplies> <Total> <Amount>8000</Amount> <Notes></Notes> <Date>2016-11-30</Date> </Total> </Expenses></worksheet>columnnodename')</pre>
{{CustomFieldPageFooter}}
[[Category:XML]]
Smartstaff
281
edits

Navigation menu