/**
 * Map Generator Groovy weather sample
 */
package weather.map.generator;

import weather.data.DataValueWithMetar;
import idea.graphics.map.HtmlImageMapItemsFromInputDataValues;
import idea.map.colorscale.AbstractColorScale;
import idea.map.data.DataValue;

/**
 * HTML image map items - construct HTML map items from matrix input data values
 * Adds raw METAR into standard HTML tooltips
 * 
 * @author Lumir Vanek, vanek@idea-envi.cz
 *
 */
public class MyHtmlImageMapItems extends HtmlImageMapItemsFromInputDataValues 
{
	/**
	 * Constructor
	 * 
	 * @param type Station type - circle, square ...
	 * @param matrixId ID of the computed matrix that contain data values for Stations
	 * @param size Size of item in pixels
	 */
	public MyHtmlImageMapItems(Type type, String matrixId, int size)
	{
		super(type, matrixId, size);
	}
	
	/**
	 * Get item title
	 * 
	 * @param dataValue Input data value
	 * @param colorScale Color scale for converting values to colors
	 * @return Item title
	 */
	protected String getTitle(DataValue dataValue, AbstractColorScale colorScale)
	{
		return "TITLE, '" + dataValue.getCode() + " - " + dataValue.getName() + "'";
	}
	
	/**
	 * Get item content
	 * 
	 * @param dataValue Input data value
	 * @param colorScale Color scale for converting values to colors
	 * @return Item content
	 */
	protected String getContent(DataValue dataValue, AbstractColorScale colorScale)
	{
		DataValueWithMetar dataValueWithMetar = (DataValueWithMetar) dataValue;
		
		return "'" +  
		((dataValue.getValue() != null) ? ("<strong>" + decimalFormat.format(dataValue.getValue()) + " " + colorScale.getUnit() + "</strong>")
				: 
				getNodataText()) +
		"<br/>" + dataValueWithMetar.getMetarOrigin().replaceAll("\n", "<br/>") +
		"'";
	}
}