setFocusNext method

dynamic setFocusNext(
  1. dynamic name,
  2. dynamic colId,
  3. dynamic id,
  4. dynamic isForm,
  5. dynamic context,
)

Implementation

setFocusNext(name, colId, id, isForm, context) {
  myLog('setFocusNext $name,colId: $colId, id: $id,isForm: $isForm');
  if (isNull(colId) || isNull(name)) {
    return;
  }

  var type = isNullID(id) ? gForm : gTable;
  bool findItem = false;
  if (type == gForm) {
    Map<dynamic, dynamic> itemsMap = _formLists[name]![gItems];

    for (var itemOne in itemsMap.entries) {
      Map item = itemOne.value;
      if (findItem) {
        if (isreadonly(item, name)) {
          continue;
        }
        var value = getValueByCol({gValue: item[gId]}, context);
        if (isNull(value)) {
          setFocusNode(
              {gType: type, gName: name, gCol: item[gId], gIsForm: isForm},
              context);
          break;
        }
      }
      if (item[gId] == colId) {
        findItem = true;
      }
    }
  } else {
    List columns = tableList[name]![gColumns];
    for (int i = 0; i < columns.length; i++) {
      if (findItem) {
        if (columns[i][gInputType] == gHidden) {
          continue;
        }
        if (columns[i][gType] == gLabel) {
          continue;
        }
        if (!isNull(columns[i][gShowrange])) {
          if (isForm && columns[i][gShowrange] != gForm) {
            continue;
          }
          if (!isForm && columns[i][gShowrange] != gTable) {
            continue;
          }
        }

        setFocusNode(
            {gType: type, gName: name, gCol: columns[i][gId], gId: id},
            context);
        return;
      }
      if (columns[i][gId] == colId) {
        findItem = true;
      }
    }
  }
}