How to Add a New Data Grid

When you have made a layer selectable (by defining it as an Active Layer) you will normally want to create a Data Grid to display the attributes of the layer or to display data from related tables. 

Step-by-step guide

  1. From the Weave client, make note of the Active Layer for which you want to create a Data Grid. Note also the datasource value (from the datasource.xml file), database schema name and table name. 
     
  2. Open your data.xml file for editing. This file will contain other Data Grids that have been configured for your site.
     
  3. A new Data Definition needs to be created as this is what dictates which fields will be shown in the Data Grid. If you are familiar with the fields you want in the Data Grid, you can use the other Data Definitions as a guide and add in as many parameter XML Entity lines that you need. However an easier way is to use the Administration Tool Console window or Weave's OSGi console (this will save you some typing and reduces the likelihood of a typing mistake). In the console, run the dbmd command with the details of the table you want to report on.

    dbmd conf <datasource> <table> <schema>
    	(schema name is not needed if table name is unique in the database) 
    e.g.:
    	dbmd conf gis counciltrees
  4. Copy the XML generated at Step 3 into the data.xml file. Notice there are some FIX_ME values that need to be updated, i.e. you will need to give the Data Definition an identifier (with the id XML Attribute) and supply the key field (with the key XML Attribute). This is shown in the example below.

    Raw XML as output from the dbmd command:
    <data:datadefinition id='FIX_ME'>
    	<datasourcedataconnection key='FIX_ME' table='mann.counciltrees' datasource='gis'>
    		<parameter name='fid' label='FID' column='fid' type='int'/>
            <parameter name='tree_no' label='Tree No.' column='tree_no' type='float'/>
    		<parameter name='species' label='Species' column='species'/>
    		<parameter name='height' label='Height' column='height'/>
            <parameter name='dbh' label='DBH' column='dbh'/>
            <parameter name='hazard' label='Hazard' column='hazard'/>
            <parameter name='condition' label='Condition' column='condition'/>
    	</datasourcedataconnection>
    </data:datadefinition>
    Updated XML ready for use:
    <data:datadefinition id='counciltrees'>
    	<datasourcedataconnection key='fid' table='mann.counciltrees' datasource='gis'>
       		<parameter name='fid' label='FID' column='fid' type='int' />
    		<parameter name='tree_no' label='Tree No.' column='tree_no' type='float'/>
            <parameter name='species' label='Species' column='species'/>
            <parameter name='height' label='Height' column='height'/>
            <parameter name='dbh' label='DBH' column='dbh'/>
            <parameter name='hazard' label='Hazard' column='hazard'/>
            <parameter name='condition' label='Condition' column='condition'/>
    	</datasourcedataconnection>
    </data:datadefinition>
  5. The output from the dbmd command reports on all the fields from the table so delete or comment out any lines that you do not want to include in the Data Grid. If you want all the fields to appear in the Data Grid, then you can delete all the parameter lines. By default, all fields from the table will be displayed in the Data Grid when no fields are given as shown below.

    <data:datadefinition id='counciltrees'>
            <datasourcedataconnection key='fid' table='mann.counciltrees' datasource='gis'/>
    </data:datadefinition>
  6. Some Weave practitioners use the “dd_” prefix as their naming convention for Data Definitions. This is not necessary as long as there are no other Data Definitions with the same id value. However if your Weave configuration is using the "dd_" prefix, or another naming convention, then for consistency it is best to continue using this convention. 
     

  7. Add a data:data XML Element to link the Data Definition (defined above) to the Entity (from the entity.xml file) as shown below.

    <data:data id="counciltrees" label="Council Trees" entity="counciltrees" datadefinition="counciltrees" />

     

  8. This has now set up a Data Definition that will be used in the Data Grid when a Search is run or the Identify tool is used.
     

  9. Often, you’ll want to display fields from more than one table or database in your Data Grid, particularly if you want to link spatial features to data stored in an aspatial database. This can be done by adding a from and where clause in the data:datadefinition XML Tag before listing the fields to retrieve. It’s best to fully qualify the field in the column XML Attribute when reading from more than one table, i.e. <schema>.<table>.<field>. In the example below additional fields are being read from the same database but a different schema and table (i.e. datasource = gis, schema = cid, table = treedetails).  (Note, you can only use a table from a second database if that table is known to the first database.) 

    <data:datadefinition id='counciltrees'>
    	<datasourcedataconnection key='fid' table='mann.counciltrees' datasource='gis'>
    		<from table="cid.treedetails"/>
    		<where clause="cid.treedetails.fid=mann.counciltrees.fid"/>
       			<parameter name='fid' label='FID' column='fid' type='int' />
    			<parameter name='tree_no' label='Tree No.' column='tree_no' type='float'/>
    			...
                <parameter name='condition' label='Condition' column='condition'/>
    			<parameter name='priority' label='Priority' column='priority'/>
           </datasourcedataconnection>
    </data:datadefinition>
  10. The Data Sources Tool in the Administration Tool reports on the tables that you can use in Data Definitions (and thus Data Grids). It is useful to explore data and check field names, etc. for data you wish to include in a Data Grid.


     

     

Also refer to the following sections of the Weave System Administrator Guides: