public function getUnitValuesForForm($unit_id = null, $is_near = false)
{
if ($unit_id) {
$unit = OphCiExamination_VisualAcuityUnit::model()->findByPk($unit_id);
} else {
$unit = $this->unit;
}
$unit_values = $unit->selectableValues;
$criteria = new \CDbCriteria();
$criteria->condition = 'id <> :unit_id AND active = 1 AND is_near = :is_near';
$criteria->params = array(':unit_id' => $unit->id, 'is_near' => $is_near);
$criteria->order = 'name';
$tooltip_units = OphCiExamination_VisualAcuityUnit::model()->findAll($criteria);
$options = array();
// getting the conversion values
foreach ($unit_values as $uv) {
$idx = (string) $uv->base_value;
$options[$idx] = array('data-tooltip' => array());
foreach ($tooltip_units as $tt) {
$last = null;
foreach ($tt->values as $tt_val) {
if ($tt_val->base_value <= $uv->base_value) {
$val = $tt_val->value;
if ($last != null && abs($uv->base_value - $tt_val->base_value) > abs($uv->base_value - $last->base_value)) {
$val = $last->value;
}
$map = array('name' => $tt->name, 'value' => $val, 'approx' => false);
if ($tt_val->base_value < $uv->base_value) {
$map['approx'] = true;
}
$options[$idx]['data-tooltip'][] = $map;
break;
}
$last = $tt_val;
}
}
// need to JSONify the options data
$options[$idx]['data-tooltip'] = \CJSON::encode($options[$idx]['data-tooltip']);
}
return array(\CHtml::listData($unit_values, 'base_value', 'value'), $options);
}