The spatial editing extension for Weave provides a means to edit geometry and attributes for an entity.
...
- Simple to setup for basic operation
Configure the id, label and entity and Weave will do the rest. - Customisable for advanced operation
Refine geometry setting and input parameters, and provide pre-defined lists of values for input. - Supports editing on an entity with multiple spatial layers
A single entity that is composed of separate point, line and/or polygon tables is transparently handled by Weave. - Creation and updating on an entity in the client can be initiated from URL parameters
The Weave client can be started with parameters in the URL to immediately begin the editing process for a specific entity for the user. - Auditing of editing operations
Custom auditing can be setup to write a new log records to a database table for each edit operation performed by a user. - Snapping of geometry
Configurable snapping is available to help with drawing geometry. - I18n support
All of the text/labels for the editing components can be customized for multiple languages or even just having the default text changed. - "Identity" columns
It's possible to specify that an attribute for a new record is based on incrementing the previous highest value of the column, or that the column will be automatically generated by the underlying database system. - Read-only columns
It's possible to specify that an attribute can be displayed but not changed (readonly), can only be changed when the entity is created (readonlyonupdate) or can only be changed when an entity is updated (readonlyoncreate). - Hidden columns
It's possible to specify attributes that aren't visible to the user but are still written when an edit is performed, using either a fixed value or one of a number of supported functions. - Formula columns
It's possible to specify a number of in-built formulas as the value for a column, including things like userid(), datetime(), entity(), area() and length(). These can be used for both the spatial and audit tables. - Restrictions on the number and types of geometry
Geometry input can be constrained to indicate a minimum and maximum number of geometries that can be entered when creating an entity and the types of geometries can be specified. - Customization of client view
The display of the input panel can be customized via the configuration. Some things that can be customized are if text and/or icons are display in buttons, which buttons are displayed (hiding the polygon button for example) and the locations of some of the buttons.
Limitations:
- Currently only Only attributes directly attached to the spatial table can be edited
Weave will only write to the spatial table when editing an entity, currently having some attributes written to the spatial table and other attributes written to separate database tables is not supported. Audit tables may provide enough functionality to support the required workflow though. - Spatial mapper for entity must have <dynamic> set to true and <cache> set to false
But this is generally the case for any entity that can have it's underlying data altered on the fly. - Generally a A database table will require a primary key
If you're editing data in a database and are unable to edit the table ensure that it has a primary key.
Installation
Currently, the Weave editing sub-system is provided as a single bundle, com.cohga.spatial.edit, but this may change before release.
...
The entity id must be unique within a spatial table. If an entity is composed of multiple spatial tables then it may be the case that the id may not be unique across all of the tables. If for example the entity is composed of more than one geometry type and the underlying spatial engine (e.g. ArcSDE, shapefiles) does not support different geometries in a single table, then the geometry would need to be spread over more than one table. In this situation, the entity id would have to be the same in all of the spatial tables, but it must at least be unique within each table. This is the only way that Weave can determine which row in the table that it needs to update as Weave determines which spatial table to update based on the geometry type stored in the spatial table.
The editing of multiple spatial tables is only fully supported when a different geometry type is stored in each table. That is, if an entity is linked to more than one spatial table then each spatial table should contain a different geometry type (point, line or polygon). This is so that Weave knows which table to write the appropriate geometries to. For example, if you were to have an entity linked to two spatial tables, both containing polygon geometry, then when an edit is submitted that contains a polygon, Weave would not know which table the geometry was supposed to be added to or updated in.
...
Spatial engines that do not differentiate between geometry types, (i.e. the spatial table stores "geometry" and not specifically points, lines or polygons) are not currently support supported in multi-table configurations. This is because in these cases, Weave can not cannot determine which table to write the geometry to (they are supported in single table configurations). This may change in the future.
Additionally, the spatial mapping associated with any entities that are to be edited should be configured to be dynamic, see Spatial Mapper.
Configuration
Client Edit Plugin
...
Name | Type | Required | Default | Description |
id | string | yes | A unique identifier for the parameter | |
label | string | yes | The prompt text displayed when user input the parameter value | |
column | string | no | The name of the column within the table that this parameter references | |
helptext | string | no | Additional text to display for the parameter to explain how to use the parameter | |
hidden | boolean | no | false | Hides the parameter from the parameter UI |
alignment | 'left', 'center', 'right', 'auto' | no | 'auto' | How the items should appear in the UI |
controltype | 'listbox', 'checkbox', 'radiobutton', 'textbox' or 'textarea' | no | 'textbox' | The suggested type of UI control to use when displaying the parameter |
datatype | 'any', 'date', 'time', 'datetime', 'integer', 'string' | no | 'string' | The data type for the parameter |
allownull | boolean | no | false | Whether a null value is allowed for this parameter |
allowblank | boolean | no | true | Give the user the choice of an empty value in the listbox (as opposed to a null value) |
allownewvalues | boolean | no | false | Allow the user to enter values not in the listbox already |
defaultvalue | any | no | The default value of the parameter | |
dataset | no | Where to get the values for a listbox | ||
labelcolumn | string | no | Column in the datadefinition that supplies the label of the value to show the user | |
valuecolumn | string | no | Column in the datadefinition that supplies the value of the value to use in the SQL | |
uppercase | boolean | no | false | Should the value be converted to upper case in the generated SQL |
readonly | boolean | no | false | Can the user change the value |
readonlyoninsert | boolean | no | false | Can the user change the value when a new entity is being created |
readonlyonupdate | boolean | no | false | Can the user change the value when an entity is being edited |
updatable | boolean | no | true | Can the underlying value ever be changed once set (implied readonlyonupdate if set to true) |
value | any | formula or any | A value to insert into the database, provides a means of creating values beyond what the user enters (implied readonly if set | |
persisted | boolean | no | false | Should the value the user chooses for the field become the default value for the field? |
minvalue | any | no | The minimum value allowed for a field. Available from 2.5.28. | |
maxvalue | any | no | The maximum value allowed for a field. Available from 2.5.28. | |
minlength | integer | no | The minimum length allowed for a field. Available from 2.5.28. | |
maxlength | integer | no | The maximum length allowed for a field. Available from 2.5.28. | |
increment | integer | no | The increment to use for fields that support it, the units are dependant upon the field type. Available from 2.5.28 and currently only for time fields. |
A few things to not about the properties that can be applied to parameters:
...