|Manuals

User Fields

The ‘Fields’ Property

The fields property is an array of objects, each one having the following structure describing each field element:

Property name Explanation
name A string constant that identifies the field element.
row The row’s field location, using the host screen row/column coordinates.
col The column’s field location, using the host screen row/column coordinates.
len The length of the field, expressed as the number of characters.
get An optional getter function to retrieve and transform field content.
items An array of fields that defines the field property as an array.

Please note that fields explicitly declared in this property, are added to the field collection automatically created by HostSurfer from the current screen.

The following code snippet shows how field objects are declared within a rule:

fields : [
{ name : 'screenTitle', row : 1, col : 35, len : 30, get : function (value) { return value.trim() } },
{ name : 'option', row : 18, col : 63, len : 2 }
]

It is also possible to declare a field being an array of inner fields, for array grouping purposes:

{
  name : 'label', fromRow : 16, toRow : 19, items : [
  {
    name : 'caption', col : 25, len : 20, get : function (value) {
      return value.toLowerCase().replace(/\b\w/g, function (l) { return l.toUpperCase() })
    }
  }
  ],
  skip : function (obj) {
    return false;
  },
  break : function (obj) {
    return false;
  }
}

The field declaration in the above code snippet, illustrates how a field named label is composed as a result of iterating from row 16 to row 19, thus creating an array of property fields with caption key, located at column 25 with a length of 20 characters, and a value resulting from the specified getter function. Such structure has optional  skip and break property keys, which values are condition evaluating functions. The skip property defines a condition upon which a row included within the bounds fromRow and toRow, is skipped on the iteration. The break property determines the condition upon which the iteration is halted.

As an example of use of this property:

var caption1 = hs.data.label[0].caption;
var caption2 = hs.data.label[1].caption;
var caption3 = hs.data.label[2].caption;

As shown in the example below, it is possible to include a regular expression as a match condition to select the fields on the iteration between the specified starting and ending rows.

{
  name : 'pfkeys', fromRow : 22, toRow : 24, match : '(F[0-9]{1,2})\\s*:\\s([^:]+)(?:(?=F[0-9]{1,2})|$)', items : [
  { name : 'pf', index : 1 },
  { name : 'desc', index : 2 }
  ], skip : function (obj) {
    return (obj.desc == '');
  }, break : function (obj) {
    return false;
  }
}
Example code:
hs.data.pfkeys.forEach(function(pfkey) {
  document.write('<br><b>'+pfkey.pf+'</b> - '+pfkey.desc+'</br>');
})