deserialize method

  1. @override
void deserialize(
  1. XmlElement xml
)
override

Deserializes the FML template elements, attributes and children

Implementation

@override
void deserialize(XmlElement xml) {
  // deserialize
  super.deserialize(xml);

  // properties
  title = Xml.get(node: xml, tag: 'title');
  if (_title == null) {
    title = Xml.get(node: xml, tag: 'sort')
        ?.split(",")[0]
        .replaceFirst(RegExp('data.', caseSensitive: false), "");
  }
  if (_title == null) {
    TextModel? text = findChildOfExactType(TextModel);
    title = text?.value;
  }

  // field - used to drive simple tables for performance
  field = Xml.get(node: xml, tag: 'field') ?? title;

  //type - denotes the field type. used for sorting
  type = Xml.get(node: xml, tag: 'type');

  // context menu
  menu = Xml.get(node: xml, tag: 'menu');
  sortable = Xml.get(node: xml, tag: 'sortable');
  resizeable = Xml.get(node: xml, tag: 'resizeable');
  editable = Xml.get(node: xml, tag: 'editable');
  filter = Xml.get(node: xml, tag: 'filter');
  onChange = Xml.get(node: xml, tag: 'onchange');

  // build default cell
  if (children?.isEmpty ?? true) _buildDefaultBody();
}