getTableRowByID method

dynamic getTableRowByID(
  1. dynamic tableName,
  2. dynamic id
)

Implementation

getTableRowByID(tableName, id) {
  myLogAll('getTableRowByID');
  if (isNull(id)) {
    return {};
  }
  dynamic tableInfo = _tableList[tableName];
  if (isNull(tableInfo)) {
    return {};
  }
  List tableData = tableInfo[gData];

  if (isNull(tableInfo[gTableMapPrefix]) ||
      isNull(tableInfo[gTableMapPrefix][gId])) {
    Map<dynamic, int> mapIDIndex = {};

    for (int i = 0; i < tableData.length; i++) {
      mapIDIndex[tableData[i][gId]] = i;
    }

    if (isNull(tableInfo[gTableMapPrefix])) {
      tableInfo[gTableMapPrefix] = {};
    }
    tableInfo[gTableMapPrefix][gId] = mapIDIndex;
  }
  if (id == gNewSearch) {
    return getTableRowSearch(tableName);
  }
  int index = tableInfo[gTableMapPrefix][gId][id];
  if (isNull(index)) {
    for (int i = 0; i < tableData.length; i++) {
      if (tableData[i][gId] == id) {
        tableInfo[gTableMapPrefix][gId][id] = i;
        return tableData[i];
      }
    }
  }
  return tableData[index];
}