protected function translateRows($rows)
{
$metaModel = $this->getMetaModel();
$activeLegend = $this->translateLegend(array('legendtitle' => 'Unnamed legend', 'legendhide' => false), $metaModel);
$activeLegendId = null;
// First pass, fetch all attribute names.
$columnNames = array();
foreach ($rows as $row) {
if ($row['dcatype'] != 'attribute') {
continue;
}
$attribute = $metaModel->getAttributeById($row['attr_id']);
if ($attribute) {
$columnNames[$row['id']] = $attribute->getColName();
}
}
$this->propertyMap = $columnNames;
$this->propertyMap2 = array_flip($columnNames);
// Second pass, translate all information into local properties.
foreach ($rows as $row) {
switch ($row['dcatype']) {
case 'legend':
$activeLegend = $this->translateLegend($row, $metaModel);
$activeLegendId = $row['id'];
break;
case 'attribute':
$exists = $this->translateProperty($row, $metaModel, $activeLegend);
if ($exists && $activeLegendId) {
$this->applyLegendConditions($row['id'], $activeLegendId);
}
break;
default:
throw new \RuntimeException('Unknown palette rendering mode ' . $row['dcatype']);
}
}
}