Dashboard > Nunaliit Documentation (Old v1) > Nunaliit User Guide > D. Release Notes
  Nunaliit Documentation (Old v1) Log In View a printable version of the current page.  
  D. Release Notes
Added by Amos Hayes, last edited by JP Fiset on Feb 12, 2009  (view change)

Release Notes

Release 1.0.20

Changes since last release:

  • Accept character set encoding on shapefileDataSource elements, to alleviate issues with international character sets found in those files.
  • Added a new data source based on JSON and aligned to match the innards of the data model. This work was done to improve performance of loading modules with large set of data. Although not meant to be used directly by module author, the intent is to convert known data source formats to this new format at compile time. The new element is called <jsonDataSource>.
  • In text (within topic) and in dynamic text (dynamicContext, focusWidget), when an attribute is displayed and that the attribute is a number, format number according to user's locale. So, instead of displaying 10000, now 10,000 is displayed.
  • Added "text buttons". This is a new element that can be placed in text or dynamic text to actuate the model. Here is an example:
		<text>Some text</text>
			<setAttribute layer="aLayer" feature="aFeature" attribute="anAttr" value="5"/>
  • Added the <conversions> tag to <shapefileDataSource>. This enables an author to compress path geometries found in a shapefile to accelerate loading and performance of modules based on this shapefile. In the example below, a data source is created on a shapefile, but at compile time, all path geometries in the "the_geom" column are compressed to the nearest 100m (projection found in file is in meters).
		<layer uid="ID" name="layer" src="myShapes.shp">
				<compressGeometry geometry="the_geom" resolution="100"/>
  • Performance/Usability improvements:
    • shapefileDataSource are converted to JSON data sources at compile time (SDK)
    • SVG map canvas now uses a faster renderer for circles (simple symbol), as opposed to the generic symbol renderer
    • In SVG map canvas, simple symbol renderer uses data model "busy waiters" scheduling to draw large number of points
    • Data model now pauses while "busy waiters" are performed, to allow screen to refresh
    • Data model offers multiple priorities in the "busy waiters" queue

Release 1.0.19

Changes since last release:

  • Trim URL in images since Safari does not display images when URL is preceded by end of lines.
  • Fix issue with <isNull> conditional formula.
  • Improve performance associated with resorting the symbols on a map canvas. Map canvas with large number of symbols were taking a long time to load.
  • Fix issue with <value-of> numeric formula where changes were not detected.
  • Fix issue with <equalTo> conditional formula.
  • Add "sort-attribute" to time lines.  This works like the sort attribute on selection bars.
  • In map canvas layers that display symbols, it is not possible to add a white border to the symbols by using the following symbol names: circleWithBorder, triangleWithBorder, squareWithBorder.
  • Refactor names used internally by model.
  • Dynamic feature is now renamed to layer "_global" feature "dynamic". It used to be called "_dynamic"/"global". Modules based on dynamic will need to be modified.

Release 1.0.18

Changes since last release:

  •  Fixes to csvDataSource to support files generated on Mac OS with carriage return only line endings
  • Major rework of feature variables in model (create-attribute). Now, all variables are assumed to be arrays of values, allowing support for multiple images/videos/sound files per feature.
  • Add caption element for images, movies and sound files. Captions are also supported on stock images for map canvas background.
  • Support for multiple editable data sources within a module.
  • Added edit widget and edit controller which allows end-users to edit features via any other widgets, not only the map canvas.
  • Changed comments widget to reflect a more consistent approach to forums. In a comments widget, an author should specify a forum name and a discussion attribute. Also added was an optional label attribute.
     <monitor layer="issues" forum="issues" discussion-attribute="issue_name" label-attribute="issue_name"/>
  •  Added a white border to symbols on map canvas. This helps with the visibility of symbols when multiple are grouped closely.
  • Apply symbols on the map canvas in order of size, such that bigger symbols appear behind smaller ones.

Release 1.0.17

Changes since last release:

  • Ability for <image> tags to display multiple images, when multiple images are associated with a feature. When multiple images are available, buttons are drawn to move between images. This feature required to change the way all variable formulae installed on features worked: arrays of values are returned instead of scalars.
  • Ability for <movie> tags to display multiple movies, when multiple movies are available. These changes are similar to <image> tag.
  • Add <default> to <dynamicContext>. This allows to specify default text to be displayed, within a dynamicContext, until a feature is selected.
  • Add <csvDataSource>. This is a data source that reads in CSV files, also known as comma separated files. CSV files are text files that can be generated by most popular spreadsheet applications. The first line of the CSV file must contain the headings for the columns. Here is an example where a CSV file is loaded into a layer named "points":
<csvDataSource field-delimiter=",">
		<layer uid="POINT_ID" name="points" src="./points.csv"/>
  • Fixes to <shapefileDataSource> where certain shapefiles could not be translated because of projections.
  • Fixes to volume bar where the sub-levels were not drawn.

Release 1.0.16

Changes since last release:

  • Bug fixes relating to servletGenerator version and the uploading of user content.
  • Migrate server to geotools-2.4-RC0 and test all functions against geoserver-1.6.0-RC3
  • Improve loading of large data sets via proxy server.
  • Support filtering at the server.
  • Better reporting of load status.
  • Improve support for skins of different sizes, where the root SVG element of the skin is used to perform other computations.
  • Comment widget introduced. In a servlet mode, it is possible to allow commenting on features and reviewing current comments. For example:
         <monitor concept-attribute="countryName" layer="data"/>

    This widget described above monitors a layer called "data". Every time a feature on the layer is selected, comments associated with its "concept" are retrieved and displayed. A user can also submit new comments on the "concept". The concept associated with a feature is established via an attribute name.

Release 1.0.15

Changes since last release:

  • Added support for shape files (*.shp). This is a new data source for the Nunaliit framework. It acts like any other data source. The following is an example snippet:
       <layer name="layer" uid="CINE_ID" src="Cine_DB_Geo_point.shp"/>
  • Modified graphoMap widget definition. Previous versions of the graphoMap assumed that the span of the longitude was from -180 to 180. Also, a centre point could be specified. In this release, the centre point is retained, but two other attributes are also available: minX and maxX. This is useful if the graphoMap is not based on the full extent of the earth, but only on a subsection. For example, to have a graphoMap spanning the Canadian regions, minX and maxX can be set to -141 and -52, respectively. Finally, the default values for the attributes are: -180 for minX; 180 for maxX; and, ((maxX - minX)/2 + minX) for centre.

Release 1.0.14

Changes since last release:

  • This release includes major improvements to the nunaliit-servletGenerator. Support for WFS-T was added to the nunaliit-server and is compatible with geoserver-1.6.0-beta3.
  • Migrated nunaliit-server to a patched version of geotools (gt2-2.3.5). See notes in directory for geotools.
  • Add functions for editable data sources (ogcDataSource and simpleDataSource).
  • Add ability to reload layers on edit.
  • Include support to add points, pictures, movies and sound files via a map canvas, when the map canvas is based on an editable data source.
  • Add caching of WFS data at the proxy server. Caching is invalidated when the layer is edited.
  • Fixes to upload server to report right MIME type and transmit files with a URL that has the same file extension as when it was loaded.

Release 1.0.13

Changes since last release: 

  • Lot of fixes into the various data sources. Functions common to all data sources were grouped for easier maintenance.
  • Added functions to edit data sources. This is useful in modules created using the servletGenerator. Currently, the map canvas is where edit is cued from. In future versions, this will migrate to data source objects. For now, look at the tag "editDataSource" under mapCanvas/layer
  • Added an "upload" service to nunaliit-server. This allows modules with editable layers to upload files, pictures, movies, sound files, etc. The upload service is able to retrieve EXIF data from pictures.
  • Added <dynamicContext> to the <text> element. Dynamic contexts are used to produce portions of the rendered atlas based on a feature which is selected or in focus. This concept was first introduced in the focus widget, where the content of the displayed text was derived from the feature in focus. This concept is now generalized and can also be used in the text portion of the module.
  • Fix positioning of windows opened by focus widget.
  • Add support in model to deal with dates retrieved from databases (SQL date format). The following operators were added to deal with dates: <stringToDate>, <dateToYear>, <dateToMonth>, <dateToDay> and <dateToTime>

Release 1.0.13 is meant for users of nunaliit-sdk. At the time of the release, nunaliit-servletGenerator is unstable. Users of nunaliit-servletGenerator should continue with version 1.0.12 until a newer version is available.

Release 1.0.12

Changes since 1.0.11:

  • Add geotools to nunaliit-server
  • Add WFS-T support to nunaliit-server
  • Fixes to sound applet
  • Add JSON support to nunaliit-server
  • Change communication format between client and proxy server to JSON
  • Fix dragging problem with Safari 3 on map canvas
  • Add servletGenerator project to Nunaliit, previously incubated under the name of server4u. ServletGenerator is the second Nunaliit Framework compiler, offered to generate servlet applications containing the content of an atlas coupled with a proxy server required to access remote services.

Release 1.0.11

This release is a port of the Nunaliit Atlas Framework to Safari 3 (Beta). Modules and Atlases compiled with this version of the framework can now be viewed by Mozilla Firefox 2.0 and Apple's Safari 3 (still in beta testing). Safari is available on Mac OS and Windows.

Release 1.0.10

Changes since 1.0.9:

  • Changed default font from Myriad-Roman to Arial, since Myriad-Roman is not supported in Mozilla SVG 

Release 1.0.9

Changes since 1.0.8:

  • Multiple bug fixes: auto redirect on module load; request version 1.0.0 in WFS requests; improve load performance; wrong topic loaded by default.
  • Moved many libraries to jsolait in order to delay loading until required.
  • Changed handling of geometries when points are specified. In previous releases, a point geometry was inserted in the model as two components: topp:the_x and topp:the_y. This was modified in 1.0.8 for different names: nunaliit:x and nunaliit:y. From version 1.0.9 and on, the point geometries will be handled exactly like other geometries: one field will be used and the original name will be preserved.
  • The module schema was changed so that all widgets based on geometries must now specify a geometry attribute. This affects mapCanvas and graphoMap widgets. Currently, if not supplied, the geometry attribute will be assumed "topp:the_geom" . However, the geometry attribute is required and this behaviour might not be supported in the long term.
  • Added a column translation service at the data source level. This enables an author to translate database column name into names that are more appropriate to the data model. This is useful in situations where there are collisions between column names from various data sources. In general, an atom is created for each row found in a database used as a data source. Each atom is given a property that relates to each column for the database. The property is assigned a name equivalent to the name of the column, and a value equivalent to the datum of the column. Using column name translation, an author can specify that the property name is different than that provided as column name. Here is an example where the data from an OGC source is modified in such a way that the data found in the "trade:the_geom" column is referenced using the property name "centroid":
	<extent minX="-180" minY="-90" maxX="180" maxY="90"/>
	<wfs url="http://atlases.gcrc.carleton.ca/geoserver/wfs">
		<layer uid="trade:point_id" typename="trade:world_regions_points" name="centroids">
				<translateColumnName sourceName="trade:the_geom" targetName="centroid"/>

Point Geometries

As specified above, previous releases handled point geometries differently. A number of widgets use point geometries (mapCanvas, graphoMap) and the change in the handling of point geometries will affect all modules created using the previous method. As a consequence, some modifications of previously working modules might be required for them to continue working with future releases. Basically, all widgets that handle geometries must now be specified with the attribute name where the geometry is accessed. The following example demonstrates a map canvas with a layer of symbols (circles):

	<extent minX="-180" minY="-60" maxX="180" maxY="90"/>

In this example, the geometry data used to figure out the coordinates of the point is drawn from the "centroid" attribute of each feature on layer "world_regions".

In previous versions, the specifying of the geometry attribute would have been ignored. Actually, in versions previous to 1.0.8, two attributes would have been queried: "topp:the_x" and "topp:the_y". In version 1.0.8, two attributes would also have been queried: "nunaliit:x" and "nunaliit:y". In previous versions, the two components would have been computed from a database table column name hard-coded to "topp:the_geom".

From this version on, no such detours are taken and the column name is used directly as both X and Y components are encoded under a single attribute. In general, previous working modules were based on OGC data sources where the column name was "topp:the_geom". Those modules should work fine with the new versions of the framework. For modules that previously worked using external data sources and simple data sources, features that are encoded using previous schemes must be updated to use the new scheme. Basically, where the X and Y components are encoded independently, they must be combined under on attribute. For example:

		<layer name="layer">
			<feature name="0">
				<property name="topp:the_x">0</property>
				<property name="topp:the_y">0</property>

must become:

		<layer name="layer">
			<feature name="0">
				<property name="topp:the_geom">0,0</property>

Note that "topp:the_geom" is purely arbitrary and that any name can be used, as long as the widgets based on this attribute are modified accordingly via the "geometryAttribute" attribute. 

Finally, these changes might bring collisions between various layers that are joined. In fact, polygons and centroids used to coexist fine in joined layers since the geometries used different names, by default. Now, such situations might require the used of "columnNameTranslation" when importing a data source. See not above for more details. 

Release 1.0.8

Changes since 1.0.7:

  • Augmented the module schema to include a focus widget. A focus widget specifies a "pop-up" window that appears when a feature is under focus for a period of time. To enable this feature, the element <focusWidget> must be employed. Within the focus widget, the author specifies the text to appear in the pop-up window using dynamic text. Dynamic text is based on the feature currently in focus. For example:
<focusWidget layer="data">
			<item>Name: <attribute attribute="topp:klb_name" layer="data"/></item>
			<item>Entity: <attribute attribute="topp:entity" layer="data"/></item>
			<item>Meaning: <attribute attribute="topp:meaning" layer="data"/></item>
			<item>Id: <attribute attribute="topp:id" layer="data"/></item>
  •  Augmented the module schema to include a new sound widget element: <soundWidget>. This new element improves the suite of sound widgets in that it provides a widget that is defined and act similar to layers in map canvas and graphoMap. For example:
	<layer layer="world_countries" trackUrl-attribute="track"/>
  • Add "default" attribute to the <monitorForSelection> widget. Value reverts to default after selection is turned off.
  • Various performance improvements to help with loading.
  • Changes to sound applet to provide the ability of handling a number of tracks in excess of the number of hardware lines.

Release 1.0.7

Changes since last revision:

  • Fix issues with proxy server where round-off errors of extents retrieved the same image multiple times from the WMS server.
  • Large rework of Sound Applet to decouple the hardware lines from the tracks. This enable adding a large number of sound files in a module, well in excess than the number of line available in the sound card mixer.
  • Fix problem where conditional processing of attributes could not compare strings successfully.
  • Fix issue where topics with ids that contained spaces crashed the atlas.
  • Rework topic selection so that all topics are reflected in the URL address. This way, browser arrows (forward/backward) can be used to move between topics.
  • Continue porting javascript libraries to jsolait.

Release 1.0.6 

Changes since last revision: 

  • Add new service to nunaliit-server called EasyOGC. This service is accessible from the proxy service and allows easy crafting of WMS requests.
  • Augmented the module schema and compiler to allow custom background images to graphoMap elements. Update <graphoMap> tag to allow background images. Use the <background> tag inside <graphoMap> to do so. For example:
<graphoMap id="grapho_map">
	<title text="GraphoMap Demo"/>
		<image source="bg_image.png" width="80" height="113"/>
  • Port a large number of javascript libraries used in the web compiler to using jsolait.  This port saves on loading time of the compiled modules. 
  • Augmented the module schema and web compiler to allows zoom and pan on mapCanvas elements. Update <mapCanvas> tag to allow specifying the zoom level desired and if panning is allowed. Use the <controls> tag inside <mapCanvas>. For example:
	<extent minX="-1" minY="-1" maxX="3" maxY="3"/>
			<level factor="0.8"/>
			<level factor="0.5"/>
			<level factor="0.1"/>
	<title text="Demo Map"/>
	<layer name="geo_poly" colour="#ff8888"/>
  • Augmented the module schema and web compiler to allow an author to specify a starting zoom and position for a mapCanvas element. Remember that previously, a mapCanvas would always open to show the entire extent defined by the mapCanvas. To specify a different starting view, use the 'startX' and 'startY' attributes on a controls/zoom/level tag, as shown in the following example:
	<extent minX="0" minY="0" maxX="2" maxY="2"/>
			<level factor="0.75"/>
			<level factor="0.50" startX="1.5" startY="0.5"/>
			<level factor="0.25"/>
	<layer name="centroids" symbol="circle" size-attribute="size" colour="green"/>
  • Augmented the module schema and web compiler to allow an author to link two or multiple maps to the same controller. Linked maps zoom and pan synchronously. Linking maps is achieved by naming the same controller for all linked maps. This is done by using the <controllerName> tag inside a <controls> tag. The following example demonstrate the linking of maps. In it, two mapCanvas elements are defined, both specifying the same controller name by using the same name: myMap.
	<extent minX="0" minY="0" maxX="2" maxY="2"/>
			<level factor="0.75"/>
			<level factor="0.50" startX="1.5" startY="0.5"/>
			<level factor="0.25"/>
	<layer name="centroids" symbol="circle" size-attribute="size" colour="green"/>
	<extent minX="0" minY="0" maxX="2" maxY="2"/>
	<layer name="centroids" symbol="circle" size-attribute="size" colour="red"/>
  • Modified proxy server to use Hibernate and HSQLDB to keep track of WMS (image) requests.

Release 1.0.5

Changes since last revision:

  • Fix a problem where the compiler fails to create an atlas with an error: "XTRE1500: Cannot read a document that was written during the same transformation:" is reported
  • Support for path data. In a <mapCanvas> tag, a layer can be added to paint path data (linear strings) on the canvas. Use the <layer> tag with an attribute named "path" equal to "solid". For example:
  • <mapCanvas id="svgmap1">
    	<extent minX="-73.985" minY="40.775" maxX="-73.975" maxY="40.785"/>
    	<layer name="paths" path="solid" colour="#000000" size="0.0001"/>
  • Added ability to choose a geometry attribute other than "topp:the_geom" when drawing a canvas. When specifying a layer in a map canvas, use the "geometryAttribute" to specify the attribute to be used as geometry. For example:
  • <layer name="paths" path="solid" colour="#000000" size="0.0001" geometryAttribute="tiger:the_geom"/>

Release 1.0.4

Changes since last revision:

  • Include documentation found in Confluence with SDK releases.
  • External HTML pages are available in the map tag. They use the same syntax as External SVG pages.
  • Added a servlet project that implements a proxy
  • Migrated to using Saxon B8.8j 

Release 1.0.3

Changes since last revision:

  • Added a tag to text element: <featureList>.
    This tag creates a dynamic list of all features in a layer. It is similar to combining a list of <peer> and <attribute> tags. The advantage of this tag, over the latter less convenient approach, is that the list reflect all the features currently in the layer, in a dynamic way.
  • Added a new processing tag to the external SVG widget:
    <atlas-text name="attributeName" feature="featureName" layer="layerName"/>

    This processing instruction informs the widget that the content of the parent node should be replaced by the text found in the attribute associated with the name, feature and layer.

Release 1.0.2

Changes since last revision:

  • Make text pane optional in the generated atlas module. To do so, one must provide an empty text tag (<text/>). The generated module will then contain a module where artifacts, other than text, occupy the full view port.
  • Added ability to link between topics, accross multiple modules. Linking to a topics is a two steps process. First, one must assign a unique identifier to a topic. Second, a topic link tag must be used in the text that includes the unique identifier.
    To obtain a unique topic identifier, use the utility program called 'genId'. It is located in the same directory as the command 'gen' to create the atlas.
    > genId
    Generated id: p31fWtc3YIto92kn2k7JupIq1xE
    The unique identifier should be used only once and is assigned to a topic via the XML identifier, as shown in this example:
    <topic id="p31fWtc3YIto92kn2k7JupIq1xE"> ...

    The second step, linking to a topic from the text, amounts to adding the tag <topicLink> to the text, as demonstrated in the next example:

    <topic id="4HwbqsRv5tmfVoPSCfIWZOFFzao">
    	<title>Topic Links</title>
    		<h1>A Topic</h1>
    			This module demonstrates the use of topic link, within a module and between modules.
    			<topicLink ref="p31fWtc3YIto92kn2k7JupIq1xE"/>
  • Added the ability to import an external SVG file as a map. Within the <map> tag, an author can use the <externalSvgWidget> tag, as shown below:
    	<externalSvgWidget src="test.svg"/>

    In the simplest form, importing an external SVG file is equivalent to displaying a static image. However, it is possible to augment the SVG file with processing instructions that links the content to the atlas model. The following is a list of supported processing instructions:

    <atlas-animate name="<svgAttrName>" layer="<layerName>" feature="<featureName>" attribute="<variableName>"/>

    This processing instruction indicates that the SVG element including the instruction (the parent element) should be modified according to an attribute found in the model. The attribute (variable) found in the model via the specified layer, feature and attribute names is observed. For every change in the value of the observed attribute, the parent element has a SVG attribute modified with the new value.

    <atlas-controller layer="<layerName>" feature="<fatureName>"/>

    This processing instruction indicates that the parent SVG element should be observed for mouse events. Mouse events captured for the parent element are rerouted to the model feature indicated via the layer and feature names.

    <atlas-display layer="<layerName>"
    	feature="<featureName>" onNormal="(true|false)"
    	onFocus="(true|false)" onSelected="(true|false)"

    This processing instruction indicates that the parent element should be displayed only at certain times, according to behaviour found in the model. A feature is selected via layer and feature names. The selected feature is monitored for the four selection states: normal, in focus, selected and focus while selected. When the selection state of the monitored feature is changed, then the parent SVG element is rendered visible or invisible, according to the states chosen in the processing instructions.
    The following example shows how some processing instructions can be combined to achieve interactions between an external SVG file and the atlas framework model:

    	cx="100" cy="50" r="40"
    	<atlas-display layer="testLayer" feature="testFeature" onFocusAndSelected="true"/>
    	cx="100" cy="50" r="40"
    	<atlas-display layer="testLayer" feature="testFeature" onFocus="true"/>
    	cx="100" cy="50" r="40"
    	<atlas-display layer="testLayer" feature="testFeature" onSelected="true"/>
    	cx="100" cy="50" r="40"
    	<atlas-display layer="testLayer" feature="testFeature" onNormal="true"/>
    	cx="100" cy="50" r="40"
    	<atlas-controller layer="testLayer" feature="testFeature"/>

    In this example, 5 identical circles are drawn atop one another. The yellow circle is located on a layer below all others, while the white circle is above. In this scheme, the white circle (the one above) is given an opcity of 0, meaning it is transparent. It is also associated with the processing instruction 'atlas-controller'. This means that when the mouse is entering/exiting/clicking the circle, the appropriate events are routed to the feature named 'testFeature' located on the layer named "testLayer'. These events affect the display state of the feature. The other four circles are associated with processing instructions 'atlas-display'. They are all associated with the same feature as the controller circle (the white one). However, the circles are displayed only at certain values of the display state of the feature. In fact, in the default state (normal), only the red circle is displayed. When the feature is selected, only the blue circle is displayed. Therefore, at any one time, only two circles are displayed with one, the controller, being transparent. The visual effect to the end user is to see a circle changing colour with the display state of a feature.

Release 1.0.1

Changes since last revision:

Renamed the compiler option "atlas.src.nav" to "atlas.src.toc".

Fixed timeline widget where times are sorted according to time values, not label content

Release 1.0

Initial public release. Rename project to Nunaliit.

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.4 Build:#809 Jun 12, 2007) - Bug/feature request - Contact Administrators