... | @@ -28,7 +28,7 @@ The user interface is constructed with the help of one from of a handful of _tem |
... | @@ -28,7 +28,7 @@ The user interface is constructed with the help of one from of a handful of _tem |
|
### Ractive.js
|
|
### Ractive.js
|
|
Catalinker uses [Ractive.js](http://www.ractivejs.org/) web framework, developed by the Guardian newspaper. Its most prominent feature is two-way binding between input fields and values in javascript object structures, suitable for rendering a complex user interface backed by an application state.
|
|
Catalinker uses [Ractive.js](http://www.ractivejs.org/) web framework, developed by the Guardian newspaper. Its most prominent feature is two-way binding between input fields and values in javascript object structures, suitable for rendering a complex user interface backed by an application state.
|
|
### main.js
|
|
### main.js
|
|
Most of the functionality in Catalinker is in main.js. It has grown from its humble beginnings in the old catalinker mentioned earlier to a quite large chunk of javascript code. Some parts and functions are more complex than others, and cater for more than one concern. No doubt should the file be divided into smaller modules and perhaps utilize Ractive's component support, but because of the incremental nature of the development process followed, and perhaps laziness, it has not come to this yet. However, most functions are kept small and with descriptive names, and the structure is roughly the same as from the beginning, only with more features added.
|
|
Most of the functionality in Catalinker is in `main.js`. It has grown from its humble beginnings in the old catalinker mentioned earlier to a quite large chunk of javascript code. Some parts and functions are more complex than others, and cater for more than one concern. No doubt should the file be divided into smaller modules and perhaps utilize Ractive's component support, but because of the incremental nature of the development process followed, and perhaps laziness, it has not come to this yet. However, most functions are kept small and with descriptive names, and the structure is roughly the same as from the beginning, only with more features added.
|
|
|
|
|
|
The core principle when editing RDF data with Catalinker is that "input" objects at some level in the application data tree structure are [two-way bound](http://docs.ractivejs.org/latest/two-way-binding) to html input fields, laid out according to the configuration. More precisely; it is the "input" objects' "current" value that is bound and shown in the input field, whereas the previous value is kept invisibly as "old". Whenever a field loses focus after it has been edited by the user, an event handler kicks in and compares the old with the current value, and when a change has taken place, a patch is created. The patch contains a delete operation for the old value and an add operation of the current one. This is conveyed to the back end as an HTTP PATCH, which removes the outdated RDF triple and inserts a new one for the updated value.
|
|
The core principle when editing RDF data with Catalinker is that "input" objects at some level in the application data tree structure are [two-way bound](http://docs.ractivejs.org/latest/two-way-binding) to html input fields, laid out according to the configuration. More precisely; it is the "input" objects' "current" value that is bound and shown in the input field, whereas the previous value is kept invisibly as "old". Whenever a field loses focus after it has been edited by the user, an event handler kicks in and compares the old with the current value, and when a change has taken place, a patch is created. The patch contains a delete operation for the old value and an add operation of the current one. This is conveyed to the back end as an HTTP PATCH, which removes the outdated RDF triple and inserts a new one for the updated value.
|
|
|
|
|
... | | ... | |