Importing from *.csv files
==========================
Date: 2017-01-03.

General rules:
o Multiple contiguous spaces are reduced to a single space.
o All dates are in Australian Standard Date Format. E.g.: 2017-06-21.
o All plant max and min heights and widths are stored in cm without decimal places.
	See Import.validate_size(). Also, the original imput is stored as entered.

attribute_types.csv
-------------------
o The column names are name, sequence, range.
o The rows are in sequence order.
o Each name must have underscores between words instead of spaces. The reason is that these
	names are used by the program to construct HTML tag ids for check boxes, which in turn
	affects the name of the CGI form field when the form is submitted to the Search Engine.
o Each name is stored in the database, and exported, in lower case.
o Each value in the range must be comma separated, preferably as ', '.
o Each value in the range must be unique.
o Each value in the range is stored in the database in lower-case with an upper-case 1st char.
o Each value in the range must not overlap, so don't use e.g. Small shrub and Large shrub.
	Just provide height and width (in flowers.csv) for such cases.
o Each sequence value must be unique. These sequence values determine the sort order, so that
	when attributes are displayed in the Search Engine, they form a slope off to the right, from
	shortest range to longest range. I.e. it looks pretty.

attributes.csv
--------------
o The column names are common_name, attribute_name, range.
o The rows are in common_name order.
o There must be 4 records per flower, corresponding to the 4 attribute types.
o The attribute names must be in the same format as discussed above for attribute_types.csv.
o Each value in the range must be comma separated, preferably as ', '.
o Each value in the range must be unique.
o Each value in the range is stored in the database, and exported, in lower case with an
	upper-case 1st char.
o The range must be a subset of the range for the corresponding attribute type.

colours.csv
-----------
o This file is generated by running scripts/parse.imagemagick.color.names.pl, so do not edit it.

constants.csv
-------------
o The column names are name, value.
o The rows are in name order.

Details:

o cell_height is the cell height for the garden layout SVGs.
o cell_width is the cell width for the garden layout SVGs.
o detail_thumbnail_size is the thumbnail size for the Details/Flower sub-tab pix.
o flower_dir is the location of the *.html files, the per-flower web pages, relative to homepage_dir.
o flower_url is the location of the *.html files, the per-flower web pages, relative to homepage_url.
	Used by JS so it must be in single-quotes.
o feature_dir is the location of the *.png files, the tiles of the objects, relative to homepage_dir.
o feature_url is the location of the *.png files, the tiles of the objects, relative to homepage_url.
	Used by JS so it must be in single-quotes.
o image_dir is the location of the *.jpg files, the per-flower pix, relative to homepage_dir.
o image_url is the location of the *.jpg files, the per-flower pix, relative to homepage_url.
	Used by JS so it must be in single-quotes.
o height_latitude is the % variation for height/width with the '=' operator, so must be 1 .. 100.
o homepage_dir is the base directory.
o homepage_url is the base URL. Used by JS so it must be in single-quotes.
o max_image_count is the # of lines on the Details/Images sub-tab. Used by JS.
o max_note_count is the # of lines on the Details/Notes sub-tab. used by JS.
o max_url_count is the # of lines on the Details/URLs sub-tab. Used by JS.
o search_thumbnail_size is the thumbnail size of the search result pix.
o template_path is the location of the *.tx files, the HTML templates used to generate various web pages.
o height_latitude is the % variation for height/width with the '=' operator, so must be 1 .. 100.
o x_offset is the distance from the left edge for the garden layout SVGs.
o y_offset is the distance from the top edge for the garden layout SVGs.

flower_locations.csv
--------------------

flowers.csv
-----------
This is the most important of all *.csv files.

o The column names are common_name, scientific_name, aliases, height, width.
o The rows are in common_name order.
o Height and width are stored as Xcm, where X means 1 or more digits, without a decimal point.
o Each may be specified as a range. E.g. 1-2m.
o A space before the 'cm' or 'm' is optional. It is removed upon importing.
o 'cm' is stored in lower-case.
