sc-import-json
1 Purpose
This document is a user guide for the Formbird sc-import-json component version 5.1.
sc-import-json places field on a form allowing the user to select a json file and save the documents within the file as documents in the database.
The import json file field on the form provides:
- A button to browse and select a json file for importing.
- An area to drag and drop a json file for importing.
- A Results table to display each document within the selected json file and their import status (e.g. "Awaiting Save").
- A "CLEAR" button to clear the Results table and cancel the import process.
- A "SAVE" button to save the documents within the json file as documents in the database by using a pre-defined template.
- Counters for "Records Read", "Documents Created" and "Errors".
The sc-import-json definition provides fields for setting the properties of the sc-import-json field and is fully described below.
2 Definition
sc-import-json is defined by a set of name/value pair fields consisting of:
- Required system fields
- Required customizable fields
- Optional customizable fields
Note:
- Default values for fields described in the tables below are shown in bold text.
2.1 Required System Fields
Field | Valid Values | Description |
---|---|---|
componentName | sc-import-json | The component name. Example: "componentName": "sc-import-json" |
2.2 Required Customizable Fields
Field | Valid Values | Description |
---|---|---|
columns | Array of field names | An ordered array of field names where each field is a field in:
Example: See Example 1 below in Section 4 Examples |
name | Any value written in camel case. | Defines the name of the sc-import-json field in the document and database. Example: "name": "testScImportJson" |
templateId | A template id | The id of the template used to create a document for each successfully imported document in the json file. Example: "templateId": "7a359860-3cec-11e6-bd1a-f78cdb4c4f6f" |
2.3 Optional Customizable Fields
Field | Valid Values | Description |
---|---|---|
directImporting | true | The imported json file documents are immediately added to the database as documents and the results displayed in the Results table. The Results table will need to be cleared before an additional file can be imported. Example: "directImporting": true |
false | Defaults to false. The imported json file documents are not immediately added to the database as documents. The sc-import-json field's dedicated "SAVE" button must be clicked to save the results displayed in the Results table. |
|
disableSave | true | Changing the sc-import-json field value (i.e. selecting a json file) does not trigger the Save icon to flash. Exiting the form without saving changes to the sc-import-json field value does not trigger a warning message to display. In the Angular version of the sc-import-json component, clicking the Save icon will not save the sc-import-json field value to the document. In the AngularJS version of the sc-import-json component, clicking the Save icon will save the sc-import-json field value to the document. Note: As sc-import-json provides a dedicated "Save" button, recommend defining sc-import-json with "disableSave": true. Example: "disableSave": true |
false | Default value. Changing the sc-import-json field value (i.e. selecting a json file) does trigger the Save icon to flash. Exiting the form without saving changes to the sc-import-json field value does trigger a warning message to display. In both the Angular or AngularJS versions of the sc-import-json component, clicking the Save icon will not save the sc-import-json field value to the document. |
|
disableSaving | true | The sc-import-json field's dedicated Save button is hidden. Example: "disableSaving": true |
false | Defaults to false. The sc-import-json field's dedicated Save button is visible. Clicking the Save button will save the imported json file to the database. One document is created and saved for each document in the json file. |
|
documentIdMatch | Enable the user to update an existing database document by supplying its documentId in the json file. The system first checks if the documentId exists in the database and if found completes the document changes in accordance with the values defined below i.e. replace or merge. |
|
replace | If the documentId is found, creates a new version of the document by deleting the document contents, and adding just the fields in the json file to the document. If the replace is successful, the Results column of the Results table displays: Replaced -6f8a0520-5a5f-11e9-991a-1faf1584063b If there is an error in the json file data, the error count is incremented by one and the Results column of the Results table displays a meaningful error message, e.g.: Failed - Error replacing document: Error preprocessing save fields on update: sc-date-time field named date_stamp has invalid value "24/15/2015 11:20 a" Example: "documentIdMatch": "replace" |
|
merge | Defaults to merge. If the documentId is found, creates a new version of the document by updating the document fields that are in both the json file and the document and adding document fields that are in the json file but not in the document. If the merge is successful, the Results column of the Results table displays: Updated - 6f8a0520-5a5f-11e9-991a-1faf1584063b If there is an error in the json file data, the error count is incremented by one and the Results column of the Results table displays a meaningful error message, e.g.: Failed - Error updating document: Error preprocessing save fields on update: sc-date-time field named date_stamp has invalid value "24/15/2015 11:20 a" |
|
documentIdNoMatch | Enable the user to insert a new database document by supplying its documentId in the json file. The system first checks if the documentId exists in the database and if not found completes the document changes in accordance with the values defined below i.e. error or add. |
|
error | If the documentId is found, then a document is not added to the database, the error count is incremented by one and the Results column of the Results table displays a meaningful error message, e.g.: documentId 6f8a0520-5a5f-11e9-991a-1faf1584063b is in database and adding is not enabled If the json file documentId field is empty, the error count is incremented by one and the Results column of the Results table displays a meaningful error message. Example: "documentIdNoMatch": "error" |
|
add | Defaults to add. If the documentId is not found, a new document is added to the database with that documentId and with fields corresponding to the fields in the json file. If the document is found, the error count is incremented by one and the Results column of the Results table displays a meaningful error message e.g. Failed: - Error inserting document: Document exists: 94682f20-5b5e-11e9-8d0b-fb1a625205ff If the json file documentId field is empty, then a new document is added to the database with a generated documentId and the Results table Results column displays: Imported - 94682f20-5b5e-11e9-8d0b-fb1a625205ff<*". |
|
enabled | false | The sc-import-json control buttons and Results table are greyed out, cannot be clicked and a Stop icon appears on mouseover. A json file cannot be selected for import. Example: "enabled": false |
true | Defaults to true. The sc-import-json control buttons and Results table are not greyed out, can be clicked and a Stop icon does not appear on mouseover. A json file can be selected and imported. |
|
fullWidth | true | The import json file field displays full width on the form. Note: As sc-import-json contains multiple gui elements including a grid, recommend defining sc-import-json to display full width on the form. Example: "fullWidth": true |
false | Defaults to false. The import json file field does not display full width on the form. |
|
label | Any value | Defines the name of the import json file field on the form i.e. the field label. Example: "label": "Test sc-import-json" |
Defaults to no field label is displayed. | ||
labels | Array of any values | An ordered array of values to be used as column headings for the Results table. Example: See Example 1 below in Section 4 Examples. |
Defaults to the array of field names defined by the "columns" field. | ||
mandatory | true | The import json file field displays as mandatory (i.e. label in red text with an asterisk). Saving without importing a json file, a message prompts the user to import a json file. Example: mandatory": true |
false | Defaults to false. The import json file field displays as optional (i.e. field label in black text). Saving without importing a json file, a message does not prompt the user to import a json file. |
|
visible | false | The import json file field is not visible on the form. Example: "visible": false |
true | Defaults to true. The import json file field is visible on the form. |
3 Typical Definition
Below is a typical sc-import-json definition, defined with its required fields plus any optional field whose value is typically other than its default value.
{
"componentName": "sc-import-json",
"name": "testScImportJson",
"columns": [
"documentId",
"date_stamp",
"zone_id",
"zone_name",
"operational_state",
"wat_category",
"zoneGeo"
],
"labels": [
"Document ID",
"Date Stamp",
"Zone ID",
"Zone Name",
"Operational State",
"Water Category",
"Zone Geometry"
],
"label": "Test sc-import-json",
"fullWidth": true,
"templateId": "44524840-55dc-11e9-be36-2f29df521630",
"disableSave": true
}
One or more of the optional fields shown below can be included in the above definition should a value other than their default value be required.
"directImporting":true,
"disableSaving":true,
"documentIdMatch":"replace",
"documentIdNoMatch":"error",
"enabled":false,
"visible":false
4 Examples
Example 1
sc-import-json defined with the typically needed fields.
{
"componentName": "sc-import-json",
"name": "testScImportJson",
"columns": [
"documentId",
"date_stamp",
"zone_id",
"zone_name",
"operational_state",
"wat_category",
"zoneGeo"
],
"labels": [
"Document ID",
"Date Stamp",
"Zone ID",
"Zone Name",
"Operational State",
"Water Category",
"Zone Geometry"
],
"label": "Test sc-import-json",
"fullWidth": true,
"templateId": "44524840-55dc-11e9-be36-2f29df521630",
"disableSave": true
}
Resulting field on the form:
Below is a sample json file that could be imported using the above sc-import-json field:
The above json file contains 3 documents each having the following 7 fields:
- "documentId": The value of this field:
- Will display in the Results table "Document ID" column.
-
Will be saved in the template's "documentId" field.
-
"date_stamp": The value of this field:
- Will display in the Results table "Date Stamp" column.
- Will be saved in the template's "date_stamp" field.
-
"zone_id": The value of this field:
- Will display in the Results table "Zone ID" column.
- Will be saved in the template's "zone_id" field.
-
"zone_name": The value of this field:
- Will display in the Results table "Zone Name" column.
- Will be saved in the template's "zone_name" field.
-
"operational_state": The value of this field:
- Will display in the Results table "Operational State" column.
- Will be saved in the template's "operational_state" field.
-
"wat_category": The value of this field:
- Will display in the Results table "Water Category" column.
- Will be saved in the template's "wat_category" field.
-
"zoneGeo": The value of this field:
- Will display in the Results table "Zone Geometry" column.
- Will be saved in the template's "zoneGeo" field.
- Defines the geometry of a polygon allowing it to be displayed on a map.
Resulting field on the form after selecting the above json file:
Clicking the "CLEAR" button will clear the Results table and cancel the import process.
Clicking the "SAVE" button will save the selected json file to the database such that one document is created and saved for each document within the json file.
Resulting field on the form after clicking the "SAVE" button:
To open a created document, click its hyperlink in the Result column.
Clicking the 1st hyperlink in the Results table opens the document created for the 1st document within the json file:
Notes:
- The above document was created and is being displayed using the predefined template whose documentId is the
templateId
field value in the sc-import-json definition. - The fields of the above document were saved in the database as:
"documentId": "6f839c80-5a5f-11e9-991a-1faf1584063b",
"date_stamp": "2018-08-20T02:35:00.000Z",
"zone_id": "1",
"zone_name": "Hansen Reserve",
"operational_state": "ACTIVE",
"wat_category": "POTABLE",
"zoneGeo": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
144.87159004211424,
-37.8016954692588
],
[
144.87596740722654,
-37.80223801120207
],
[
144.87545242309568,
-37.80474721584969
],
[
144.87442245483396,
-37.80461158534551
],
[
144.87429370880125,
-37.80600178620508
],
[
144.87086048126218,
-37.80562880805537
],
[
144.87159004211424,
-37.8016954692588
]
]
]
},
"properties": {}
}
]
}
- The fields in the database document have the same name as the corresponding fields in the json file.
- The order of the fields in the database document matches the order of the fields in the sc-import-json definition
columns
array. - If the predefined template used to create the above document did not have a field name exactly matching a field name in the imported json file, the document would still be created but the field would not display on the form until the predefined template was updated with a matching field name.