User configurable views will be defined by using JSON objects saved in the OpenSRP couchdb database. They will be fetched by clients(phone or tablet) after configuring the OpenSRP base urlURL. OpenSRP server has a REST endpoint that the clients will use to sync views to the client.
...
The Sequence diagram for User Configurable views
Sequence Diagram Keys: VC - View Configuration, SV - Server Version
The property serverVersion will be used for versioning. If a view configuration file is edited the serverVersion of the view configuration file will have to be updated so that the view configuration can be picked by clients when syncing configurable views. The property is number denoting unix timestamp; one can get the current unix timestamp from https://www.unixtimestamp.com and use that to update the property. Failure to increment server version when editing the files manually will result in the view configuration not to be synched back to the clients.
...
Property | Datatype | Mandatory | Should be updated | Description |
---|---|---|---|---|
_id | String | * | No | CouchDB Internal document ID used to differentiate different documents within CouchDB |
_rev | String | * | No | CouchDB Internal document revision number used to differentiate different revisions of the same documents within CouchDB. Dont amend this manually |
type | String | * | No | CouchDB Internal document type used to differentiate different documents types within CouchDB. This should always be ViewConfiguration |
identifier | String | * | No | This uniquely identifies this document. This will be used on the client to identify that this document if for a particular screen. This should not be amended |
serverVersion | long | * | Yes | A long number denoting the unix timestamp when the document was updated/created. Its used for versioning by clients. Whenever a document is amended this property should be incremented to the current timestamp so that clients notice the document has changed and they can sync it. |
metadata | Object | Yes | This will be an object that defines configuration at view level. It must have an attribute type that defines the type of configuration being defined. | |
views | List of View Objects | Yes | This will be populated for screens with configurable view components. It contains a list of view objects. The view object is described below. | |
labels | Map(Key value pairs) | Yes | This will be populated for language configuration files. It will have a key value pairs of labels where the key will be identical in all language files but the value will be different for each language. |
...