<?php 
class AppColumna{

	protected $cabecera;
	protected $_valor;
	protected $name;
	protected $tipo;
	protected $_visibilidad = '';
	protected $ordenable = true;
	protected $agrupable = false;
	protected $agrupado = false;
	protected $_baseUrl = BASEURL;
	protected $_enlace = '';
	protected $_title =  '';
	protected $_mensaje_confirmacion;	
	protected $_editable;
	protected $_ancho;
	protected $_orden_por_defecto = false;
	const APP_VIS_VISIBLE_MOBIL = 'visible-phone';
	const APP_VIS_VISIBLE_TABLE = 'visible-tablet';
	const APP_VIS_VISIBLE_ORDENADOR = 'visible-desktop';
	const APP_VIS_NO_VISIBLE_MOBIL = 'hidden-phone';
	const APP_VIS_NO_VISIBLE_TABLET = 'hidden-tablet';
	const APP_VIS_NO_VISIBLE_ORDENADOR = 'hidden-desktop';
	
	public function __construct($name, $valor = null, $cabecera = ''){
		$this->cabecera = $cabecera;
		$this->_valor = $valor;
		$this->name = $name;
	}
	public function getName(){
		return $this->name;
		
	}
	public function setCabecera($cabecera){
		$this->cabecera = $cabecera;
	}
	
	public function setordenarPorDefecto($value){
		$this->_orden_por_defecto = $value;
	}
	public function getOrdenarPorDefecto(){
		return $this->_orden_por_defecto;
	}
	public function setMensajeConfirmacion($mensaje){
		$this->_mensaje_confirmacion = $mensaje;
	}

	
	public function setVisibilidad($visibilida){
		$this->_visibilidad = $visibilida;
	}
	public function setAncho($ancho){
		$this->_ancho = $ancho;
	}
	
	public function getAncho(){
		return $this->_ancho;
	}
	
	protected function getValorCelda(){
		$valor = '';
		$confirmacion = '';
		if(strlen($this->_mensaje_confirmacion)>0)
			$confirmacion = 'onclick="return window.confirm(\''.$this->_mensaje_confirmacion.'\');"';
		
		if(strlen($this->_enlace)>0){
			$valor .= '<a href="'. $this->_baseUrl . $this->_enlace .'" '.((strlen($this->_title)>0)? " title=\"$this->_title\"" : '').' '.$confirmacion.'>';
		}
		
		$valor .= $this->getValor();
		
		if(strlen($this->_enlace)>0)
			$valor .= '</a>';
		
		
		return $valor;
	}
	public function setEnlace($enlace, $title, $baseUrl = BASEURL){
		$this->_enlace = $enlace;
		$this->_title = $title;
		$this->_baseUrl = $baseUrl;
	}
	
	

	public function setOrdenable($ordenable){
		$this->ordenable = $ordenable;
	}
	public function setAgrupable($agrupable){
		$this->agrupable = $agrupable;
	}
	
	public function setAgrupado($agrupado){
		$this->agrupado = $agrupado;
	}

	public function setValor($valor){
		$this->_valor = $valor;
	}
	public function getValor(){
		return $this->_valor;
	}
	
	public function getInfo(){
		return array(
				'cabecera' => $this->cabecera,
				'clases' => $this->_visibilidad,
				'valor' => $this->getValorCelda(),
				'name'=> $this->name,
				'ancho' => $this->getAncho(),
				'ordenable' => $this->ordenable,
				'agrupable' => $this->agrupable,
				'agrupado' => $this->agrupado,
				'tipo' => $this->tipo

		);


	}

	public function render(){
		return '';
	}
	public function __toString(){
		return $this->render();
	}
	
	public function setEditable($valor){
		$this->_editable = $valor;
	
	}
	public function getEditable(){
		if($this->_editable)
			return $this->name;
		return false;
	}
	
	/**
	 * Devuelve el elemento de formulario asociaco con la columna
	 * @return EFTexto
	 */
	
	public function getCampo(){
		$campo = new EFTexto($this->getEditable());
		$campo->setAncho(12);
		return $campo;
	}
	
	
	public function reemplaza_datosCampo($datos){
		$dato = $this->getValor();
		$datos = AppResultadoListado::convertirFilaParaListado($datos);
		$dato = str_replace(array_keys($datos), array_values($datos), $dato);
		return $dato;
	}
	
}