From ef36a8cee68c8e35b323e96fc989aabdf2040ab1 Mon Sep 17 00:00:00 2001 From: Pascal Desmarets Date: Thu, 16 May 2019 14:54:56 +0200 Subject: [PATCH] Markdown and cleanup --- logo.jpg | Bin 16226 -> 0 bytes logo.png | Bin 0 -> 45428 bytes package.json | 4 +- .../container_level/containerLevelConfig.json | 50 +++++- .../entity_level/entityLevelConfig.json | 50 +++++- .../field_level/fieldLevelConfig.json | 164 +++++------------- .../model_level/modelLevelConfig.json | 50 +++++- .../view_level/viewLevelConfig.json | 50 +++++- 8 files changed, 218 insertions(+), 150 deletions(-) delete mode 100644 logo.jpg create mode 100644 logo.png diff --git a/logo.jpg b/logo.jpg deleted file mode 100644 index 20af559a70f2d8046913db5c0c09172896da9891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16226 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 O?GB5@CTbM9pZ;Gk3z7c- diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9c8b068c12891e3d909506e44ffb9f847128c5 GIT binary patch literal 45428 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" }, { "propertyName": "Text area", "propertyKeyword": "textareaProp", - "propertyValidate": false, "propertyTooltip": "Popup for multi-line text entry", "propertyType": "details", "template": "textarea" @@ -28,7 +26,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "Dropdown selection", "propertyKeyword": "dropdownProp", - "shouldValidate": false, "propertyTooltip": "Select from list of options", "propertyType": "select", "options": [ @@ -50,32 +47,69 @@ making sure that you maintain a proper JSON format. { "propertyName": "Checkbox", "propertyKeyword": "checkboxProp", - "shouldValidate": false, "propertyType": "checkbox" }, { "propertyName": "Group", "propertyType": "group", "propertyKeyword": "grpProp", - "shouldValidate": true, "propertyTooltip": "", "structure": [ { "propertyName": "Simple Grp Text", "propertyKeyword": "simpleGrpText", - "shouldValidate": false, "propertyTooltip": "", "propertyType": "text" }, { "propertyName": "Group Number", "propertyKeyword": "grpNumber", - "propertyValidate": true, "propertyType": "numeric", "valueType": "number", "allowNegative": false } ] + }, +// “groupInput” can have the following states - 0 items, 1 item, and many items. +// “blockInput” has only 2 states - 0 items or 1 item. +// This gives us an easy way to represent it as an object and not as an array internally which is beneficial for processing +// and forward-engineering in particular. + { + "propertyName": "Block", + "propertyType": "block", + "propertyKeyword": "grpProp", + "propertyTooltip": "", + "structure": [ + { + "propertyName": "Simple Grp Text", + "propertyKeyword": "simpleGrpText", + "propertyTooltip": "", + "propertyType": "text" + }, + { + "propertyName": "Group Number", + "propertyKeyword": "grpNumber", + "propertyType": "numeric", + "valueType": "number", + "allowNegative": false + } + ] + }, + { + "propertyName": "Field List", + "propertyKeyword": "keyList", + "propertyType": "fieldList", + "template": "orderedList" + }, + { + "propertyName": "List with attribute", + "propertyKeyword": "keyListOrder", + "propertyType": "fieldList", + "template": "orderedList", + "attributeList": [ + "ascending", + "descending" + ] } */ diff --git a/properties_pane/entity_level/entityLevelConfig.json b/properties_pane/entity_level/entityLevelConfig.json index b893f73..237e9a7 100644 --- a/properties_pane/entity_level/entityLevelConfig.json +++ b/properties_pane/entity_level/entityLevelConfig.json @@ -1,5 +1,5 @@ /* -* Copyright © 2016-2017 by IntegrIT S.A. dba Hackolade. All rights reserved. +* Copyright © 2016-2019 by IntegrIT S.A. dba Hackolade. All rights reserved. * * The copyright to the computer software herein is the property of IntegrIT S.A. * The software may be used and/or copied only with the written permission of @@ -13,14 +13,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "Simple text", "propertyKeyword": "simpletextProp", - "shouldValidate": false, "propertyType": "text", "sampleGen": "&containerName|&entityName|&random|" }, { "propertyName": "Text area", "propertyKeyword": "textareaProp", - "propertyValidate": false, "propertyTooltip": "Popup for multi-line text entry", "propertyType": "details", "template": "textarea" @@ -28,7 +26,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "Dropdown selection", "propertyKeyword": "dropdownProp", - "shouldValidate": false, "propertyTooltip": "Select from list of options", "propertyType": "select", "options": [ @@ -50,32 +47,69 @@ making sure that you maintain a proper JSON format. { "propertyName": "Checkbox", "propertyKeyword": "checkboxProp", - "shouldValidate": false, "propertyType": "checkbox" }, { "propertyName": "Group", "propertyType": "group", "propertyKeyword": "grpProp", - "shouldValidate": true, "propertyTooltip": "", "structure": [ { "propertyName": "Simple Grp Text", "propertyKeyword": "simpleGrpText", - "shouldValidate": false, "propertyTooltip": "", "propertyType": "text" }, { "propertyName": "Group Number", "propertyKeyword": "grpNumber", - "propertyValidate": true, "propertyType": "numeric", "valueType": "number", "allowNegative": false } ] + }, +// “groupInput” can have the following states - 0 items, 1 item, and many items. +// “blockInput” has only 2 states - 0 items or 1 item. +// This gives us an easy way to represent it as an object and not as an array internally which is beneficial for processing +// and forward-engineering in particular. + { + "propertyName": "Block", + "propertyType": "block", + "propertyKeyword": "grpProp", + "propertyTooltip": "", + "structure": [ + { + "propertyName": "Simple Grp Text", + "propertyKeyword": "simpleGrpText", + "propertyTooltip": "", + "propertyType": "text" + }, + { + "propertyName": "Group Number", + "propertyKeyword": "grpNumber", + "propertyType": "numeric", + "valueType": "number", + "allowNegative": false + } + ] + }, + { + "propertyName": "Field List", + "propertyKeyword": "keyList", + "propertyType": "fieldList", + "template": "orderedList" + }, + { + "propertyName": "List with attribute", + "propertyKeyword": "keyListOrder", + "propertyType": "fieldList", + "template": "orderedList", + "attributeList": [ + "ascending", + "descending" + ] } */ diff --git a/properties_pane/field_level/fieldLevelConfig.json b/properties_pane/field_level/fieldLevelConfig.json index 3f2753e..62fe688 100644 --- a/properties_pane/field_level/fieldLevelConfig.json +++ b/properties_pane/field_level/fieldLevelConfig.json @@ -1,5 +1,5 @@ /* -* Copyright © 2016-2017 by IntegrIT S.A. dba Hackolade. All rights reserved. +* Copyright © 2016-2019 by IntegrIT S.A. dba Hackolade. All rights reserved. * * The copyright to the computer software herein is the property of IntegrIT S.A. * The software may be used and/or copied only with the written permission of @@ -13,14 +13,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "Simple text", "propertyKeyword": "simpletextProp", - "shouldValidate": false, "propertyType": "text", "sampleGen": "&containerName|&entityName|&random|" }, { "propertyName": "Text area", "propertyKeyword": "textareaProp", - "propertyValidate": false, "propertyTooltip": "Popup for multi-line text entry", "propertyType": "details", "template": "textarea" @@ -28,7 +26,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "Dropdown selection", "propertyKeyword": "dropdownProp", - "shouldValidate": false, "propertyTooltip": "Select from list of options", "propertyType": "select", "options": [ @@ -50,27 +47,48 @@ making sure that you maintain a proper JSON format. { "propertyName": "Checkbox", "propertyKeyword": "checkboxProp", - "shouldValidate": false, "propertyType": "checkbox" }, { "propertyName": "Group", "propertyType": "group", "propertyKeyword": "grpProp", - "shouldValidate": true, "propertyTooltip": "", "structure": [ { "propertyName": "Simple Grp Text", "propertyKeyword": "simpleGrpText", - "shouldValidate": false, "propertyTooltip": "", "propertyType": "text" }, { "propertyName": "Group Number", "propertyKeyword": "grpNumber", - "propertyValidate": true, + "propertyType": "numeric", + "valueType": "number", + "allowNegative": false + } + ] + }, +// “groupInput” can have the following states - 0 items, 1 item, and many items. +// “blockInput” has only 2 states - 0 items or 1 item. +// This gives us an easy way to represent it as an object and not as an array internally which is beneficial for processing +// and forward-engineering in particular. + { + "propertyName": "Block", + "propertyType": "block", + "propertyKeyword": "grpProp", + "propertyTooltip": "", + "structure": [ + { + "propertyName": "Simple Grp Text", + "propertyKeyword": "simpleGrpText", + "propertyTooltip": "", + "propertyType": "text" + }, + { + "propertyName": "Group Number", + "propertyKeyword": "grpNumber", "propertyType": "numeric", "valueType": "number", "allowNegative": false @@ -80,14 +98,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "Field List", "propertyKeyword": "keyList", - "shouldValidate": false, "propertyType": "fieldList", "template": "orderedList" }, { "propertyName": "List with attribute", "propertyKeyword": "keyListOrder", - "shouldValidate": false, "propertyType": "fieldList", "template": "orderedList", "attributeList": [ @@ -97,17 +113,18 @@ making sure that you maintain a proper JSON format. } */ + { "lowerTab": "JsonDetails", "structure": { "string": [ "name", "schemaId", + "description", "type", { "propertyName": "Sub-type", "propertyKeyword": "mode", - "shouldValidate": false, "propertyType": "select", "options": [ "text", @@ -116,7 +133,6 @@ making sure that you maintain a proper JSON format. "data": "options", "valueType": "string" }, - "description", "dependencies", "required", "primaryKey", @@ -126,7 +142,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "analyzer", "propertyKeyword": "analyzer", - "shouldValidate": false, "propertyTooltip": "Select from list of built-in analyzers", "propertyType": "select", "options": [ @@ -155,7 +170,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "copy_to", "propertyKeyword": "copy_to", - "shouldValidate": false, "propertyType": "fieldList", "template": "orderedList", "isTargetProperty": true @@ -163,7 +177,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "doc_values", "propertyKeyword": "doc_values", - "shouldValidate": false, "propertyType": "checkbox", "dependency": { "key": "mode", @@ -174,24 +187,22 @@ making sure that you maintain a proper JSON format. { "propertyName": "eager_global_ordinals", "propertyKeyword": "eager_global_ordinals", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "fielddata", "propertyKeyword": "fielddata", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "fielddata_frequency_filter", "propertyKeyword": "fielddata_frequency_filter", - "propertyValidate": false, "propertyTooltip": "Popup for fields entry", "propertyType": "details", "template": "textarea", + "markdown": false, "dependency": { "key": "fielddata", "value": true @@ -205,6 +216,7 @@ making sure that you maintain a proper JSON format. "propertyTooltip": "Popup for fields entry", "propertyType": "details", "template": "textarea", + "markdown": false, "isTargetProperty": true }, { @@ -223,7 +235,6 @@ making sure that you maintain a proper JSON format. /* { "propertyName": "include_in_all", "propertyKeyword": "include_in_all", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -231,14 +242,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "index", "propertyKeyword": "index", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "index_options", "propertyKeyword": "index_options", - "shouldValidate": false, "propertyTooltip": "Select from list of parameter controls for information is added to the inverted index, for search and highlighting purposes", "propertyType": "select", "options": [ @@ -256,7 +265,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "index_options", "propertyKeyword": "index_options", - "shouldValidate": false, "propertyTooltip": "Select from list of parameter controls for information is added to the inverted index, for search and highlighting purposes", "propertyType": "select", "options": [ @@ -272,30 +280,27 @@ making sure that you maintain a proper JSON format. { "propertyName": "index_prefixes", "propertyKeyword": "index_prefixes", - "propertyValidate": false, "propertyTooltip": "Popup for index_prefixes parameters", "propertyType": "details", "template": "textarea", + "markdown": false, "isTargetProperty": true }, { "propertyName": "index_phrases", "propertyKeyword": "index_phrases", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "norms", "propertyKeyword": "norms", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "null_value", "propertyKeyword": "null_value", - "propertyValidate": false, "propertyType": "text", "dependency": { "key": "mode", @@ -306,14 +311,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "similarity", "propertyKeyword": "similarity", - "shouldValidate": false, "propertyTooltip": "Select from list of scoring algorithm or similarity per field", "propertyType": "select", "options": [ @@ -327,14 +330,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "term_vector", "propertyKeyword": "term_vector", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "normalizer", "propertyKeyword": "normalizer", - "propertyValidate": false, "propertyType": "text", "dependency": { "key": "mode", @@ -353,11 +354,11 @@ making sure that you maintain a proper JSON format. "number": [ "name", "schemaId", + "description", "type", { "propertyName": "Sub-type", "propertyKeyword": "mode", - "shouldValidate": false, "propertyType": "select", "options": [ "long", @@ -372,7 +373,6 @@ making sure that you maintain a proper JSON format. "data": "options", "valueType": "string" }, - "description", "dependencies", "required", "primaryKey", @@ -384,14 +384,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "coerce", "propertyKeyword": "coerce", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "boost", "propertyKeyword": "boost", - "propertyValidate": false, "propertyType": "numeric", "valueType": "number", "allowNegative": false, @@ -400,49 +398,42 @@ making sure that you maintain a proper JSON format. { "propertyName": "doc_values", "propertyKeyword": "doc_values", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "ignore_malformed", "propertyKeyword": "ignore_malformed", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, /* { "propertyName": "include_in_all", "propertyKeyword": "include_in_all", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, */ { "propertyName": "index", "propertyKeyword": "index", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "null_value", "propertyKeyword": "null_value", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "scaling_factor", "propertyKeyword": "scaling_factor", - "propertyValidate": false, "propertyType": "numeric", "valueType": "number", "allowNegative": false, @@ -466,15 +457,14 @@ making sure that you maintain a proper JSON format. "date": [ "name", "schemaId", - "type", "description", + "type", "dependencies", "required", "default", { "propertyName": "boost", "propertyKeyword": "boost", - "propertyValidate": false, "propertyType": "numeric", "valueType": "number", "allowNegative": false, @@ -483,56 +473,48 @@ making sure that you maintain a proper JSON format. { "propertyName": "doc_values", "propertyKeyword": "doc_values", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "format", "propertyKeyword": "format", - "shouldValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "locale", "propertyKeyword": "locale", - "shouldValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "ignore_malformed", "propertyKeyword": "ignore_malformed", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, /* { "propertyName": "include_in_all", "propertyKeyword": "include_in_all", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, */ { "propertyName": "index", "propertyKeyword": "index", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "null_value", "propertyKeyword": "null_value", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -542,15 +524,14 @@ making sure that you maintain a proper JSON format. "boolean": [ "name", "schemaId", - "type", "description", + "type", "dependencies", "required", "default", { "propertyName": "boost", "propertyKeyword": "boost", - "propertyValidate": false, "propertyType": "numeric", "valueType": "number", "allowNegative": false, @@ -559,28 +540,24 @@ making sure that you maintain a proper JSON format. { "propertyName": "doc_values", "propertyKeyword": "doc_values", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "index", "propertyKeyword": "index", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "null_value", "propertyKeyword": "null_value", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -597,14 +574,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "doc_values", "propertyKeyword": "doc_values", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -613,11 +588,11 @@ making sure that you maintain a proper JSON format. "range": [ "name", "schemaId", + "description", "type", { "propertyName": "Sub-type", "propertyKeyword": "mode", - "shouldValidate": false, "propertyType": "select", "options": [ "integer_range", @@ -628,20 +603,17 @@ making sure that you maintain a proper JSON format. "ip_range" ] }, - "description", "dependencies", "required", { "propertyName": "coerce", "propertyKeyword": "coerce", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "boost", "propertyKeyword": "boost", - "propertyValidate": false, "propertyType": "text", "valueType": "number", "allowNegative": false, @@ -650,21 +622,18 @@ making sure that you maintain a proper JSON format. /* { "propertyName": "include_in_all", "propertyKeyword": "include_in_all", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, */ { "propertyName": "index", "propertyKeyword": "index", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -677,28 +646,25 @@ making sure that you maintain a proper JSON format. "geo-point": [ "name", "schemaId", + "description", "type", "subtype", - "description", "required", { "propertyName": "ignore_malformed", "propertyKeyword": "ignore_malformed", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "ignore_z_value", "propertyKeyword": "ignore_z_value", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "null_value", "propertyKeyword": "null_value", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, @@ -707,14 +673,13 @@ making sure that you maintain a proper JSON format. "geo-shape": [ "name", "schemaId", + "description", "type", "subtype", - "description", "required", { "propertyName": "tree", "propertyKeyword": "tree", - "shouldValidate": false, "propertyTooltip": "Select the name of the PrefixTree implementation to be used", "propertyType": "select", "options": [ @@ -726,21 +691,18 @@ making sure that you maintain a proper JSON format. { "propertyName": "precision", "propertyKeyword": "precision", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "tree_levels", "propertyKeyword": "tree_levels", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "strategy", "propertyKeyword": "strategy", - "shouldValidate": false, "propertyTooltip": "Select the name of the PrefixTree implementation to be used", "propertyType": "select", "options": [ @@ -756,14 +718,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "distance_error_pct", "propertyKeyword": "distance_error_pct", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "orientation", "propertyKeyword": "orientation", - "shouldValidate": false, "propertyTooltip": "Select a coordinate system rules", "propertyType": "select", "options": [ @@ -779,21 +739,18 @@ making sure that you maintain a proper JSON format. { "propertyName": "points_only", "propertyKeyword": "points_only", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "ignore_malformed", "propertyKeyword": "ignore_malformed", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "ignore_z_value", "propertyKeyword": "ignore_z_value", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -804,8 +761,8 @@ making sure that you maintain a proper JSON format. "name", "schemaId", "refPath", - "type", "description", + "type", "dependencies", "required", "minItems", @@ -818,14 +775,13 @@ making sure that you maintain a proper JSON format. "name", "schemaId", "refPath", - "type", "description", + "type", "dependencies", "required", { "propertyName": "dynamic", "propertyKeyword": "dynamic", - "shouldValidate": false, "propertyTooltip": "dynamic setting value", "propertyType": "select", "isTargetProperty": true, @@ -846,8 +802,8 @@ making sure that you maintain a proper JSON format. "sampleName", "schemaId", "refPath", - "type", "description", + "type", "dependencies", "comments" ], @@ -856,14 +812,13 @@ making sure that you maintain a proper JSON format. "sampleName", "schemaId", "refPath", - "type", "description", + "type", "dependencies", "required", { "propertyName": "dynamic", "propertyKeyword": "dynamic", - "shouldValidate": false, "propertyTooltip": "dynamic setting value", "propertyType": "select", "isTargetProperty": true, @@ -876,7 +831,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "enabled", "propertyKeyword": "enabled", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -889,14 +843,13 @@ making sure that you maintain a proper JSON format. "ip": [ "name", "schemaId", - "type", "description", + "type", "dependencies", "required", { "propertyName": "boost", "propertyKeyword": "boost", - "propertyValidate": false, "propertyType": "numeric", "valueType": "number", "allowNegative": false, @@ -905,28 +858,24 @@ making sure that you maintain a proper JSON format. { "propertyName": "doc_values", "propertyKeyword": "doc_values", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "index", "propertyKeyword": "index", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "null_value", "propertyKeyword": "null_value", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -939,14 +888,13 @@ making sure that you maintain a proper JSON format. "completion": [ "name", "schemaId", + "description", "type", "subtype", - "description", "required", { "propertyName": "analyzer", "propertyKeyword": "analyzer", - "shouldValidate": false, "propertyTooltip": "Select from list of built-in analyzers", "propertyType": "select", "options": [ @@ -966,28 +914,24 @@ making sure that you maintain a proper JSON format. { "propertyName": "search_analyzer", "propertyKeyword": "search_analyzer", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "preserve_separators", "propertyKeyword": "preserve_separators", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "preserve_position_increments", "propertyKeyword": "preserve_position_increments", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "max_input_length", "propertyKeyword": "max_input_length", - "propertyValidate": true, "propertyType": "numeric", "valueType": "integer", "allowNegative": false @@ -997,14 +941,13 @@ making sure that you maintain a proper JSON format. "token_count": [ "name", "schemaId", - "type", "description", + "type", "dependencies", "required", { "propertyName": "analyzer", "propertyKeyword": "analyzer", - "shouldValidate": false, "propertyTooltip": "Select from list of built-in analyzers", "propertyType": "select", "options": [ @@ -1024,14 +967,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "enable_position_increments", "propertyKeyword": "enable_position_increments", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "boost", "propertyKeyword": "boost", - "propertyValidate": false, "propertyType": "numeric", "valueType": "number", "allowNegative": false, @@ -1040,28 +981,24 @@ making sure that you maintain a proper JSON format. { "propertyName": "doc_values", "propertyKeyword": "doc_values", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "index", "propertyKeyword": "index", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, { "propertyName": "null_value", "propertyKeyword": "null_value", - "propertyValidate": false, "propertyType": "text", "isTargetProperty": true }, { "propertyName": "store", "propertyKeyword": "store", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -1077,8 +1014,8 @@ making sure that you maintain a proper JSON format. "join": [ "name", "schemaId", - "type", "description", + "type", "dependencies", "required", { @@ -1090,13 +1027,11 @@ making sure that you maintain a proper JSON format. { "propertyName": "parent", "propertyKeyword": "parent", - "shouldValidate": false, "propertyType": "text" }, { "propertyName": "children", "propertyKeyword": "children", - "shouldValidate": false, "propertyType": "group", "structure": [{ "propertyName": "name", @@ -1110,7 +1045,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "eager_global_ordinals", "propertyKeyword": "eager_global_ordinals", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -1119,14 +1053,13 @@ making sure that you maintain a proper JSON format. "alias": [ "name", "schemaId", - "type", "description", + "type", "dependencies", "required", { "propertyName": "path", "propertyKeyword": "path", - "shouldValidate": false, "propertyType": "fieldList", "template": "orderedList", "isTargetProperty": true @@ -1136,8 +1069,8 @@ making sure that you maintain a proper JSON format. "rank_feature": [ "name", "schemaId", - "type", "description", + "type", "dependencies", "required", "primaryKey", @@ -1148,7 +1081,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "positive_score_impact", "propertyKeyword": "positive_score_impact", - "shouldValidate": false, "propertyType": "checkbox", "isTargetProperty": true }, @@ -1168,8 +1100,8 @@ making sure that you maintain a proper JSON format. "sampleName", "schemaId", "refPath", - "type", "description", + "type", "dependencies", "required", "minProperties", diff --git a/properties_pane/model_level/modelLevelConfig.json b/properties_pane/model_level/modelLevelConfig.json index 0a19bab..d426da9 100644 --- a/properties_pane/model_level/modelLevelConfig.json +++ b/properties_pane/model_level/modelLevelConfig.json @@ -1,5 +1,5 @@ /* -* Copyright © 2016-2017 by IntegrIT S.A. dba Hackolade. All rights reserved. +* Copyright © 2016-2019 by IntegrIT S.A. dba Hackolade. All rights reserved. * * The copyright to the computer software herein is the property of IntegrIT S.A. * The software may be used and/or copied only with the written permission of @@ -13,14 +13,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "Simple text", "propertyKeyword": "simpletextProp", - "shouldValidate": false, "propertyType": "text", "sampleGen": "&containerName|&entityName|&random|" }, { "propertyName": "Text area", "propertyKeyword": "textareaProp", - "propertyValidate": false, "propertyTooltip": "Popup for multi-line text entry", "propertyType": "details", "template": "textarea" @@ -28,7 +26,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "Dropdown selection", "propertyKeyword": "dropdownProp", - "shouldValidate": false, "propertyTooltip": "Select from list of options", "propertyType": "select", "options": [ @@ -50,32 +47,69 @@ making sure that you maintain a proper JSON format. { "propertyName": "Checkbox", "propertyKeyword": "checkboxProp", - "shouldValidate": false, "propertyType": "checkbox" }, { "propertyName": "Group", "propertyType": "group", "propertyKeyword": "grpProp", - "shouldValidate": true, "propertyTooltip": "", "structure": [ { "propertyName": "Simple Grp Text", "propertyKeyword": "simpleGrpText", - "shouldValidate": false, "propertyTooltip": "", "propertyType": "text" }, { "propertyName": "Group Number", "propertyKeyword": "grpNumber", - "propertyValidate": true, "propertyType": "numeric", "valueType": "number", "allowNegative": false } ] + }, +// “groupInput” can have the following states - 0 items, 1 item, and many items. +// “blockInput” has only 2 states - 0 items or 1 item. +// This gives us an easy way to represent it as an object and not as an array internally which is beneficial for processing +// and forward-engineering in particular. + { + "propertyName": "Block", + "propertyType": "block", + "propertyKeyword": "grpProp", + "propertyTooltip": "", + "structure": [ + { + "propertyName": "Simple Grp Text", + "propertyKeyword": "simpleGrpText", + "propertyTooltip": "", + "propertyType": "text" + }, + { + "propertyName": "Group Number", + "propertyKeyword": "grpNumber", + "propertyType": "numeric", + "valueType": "number", + "allowNegative": false + } + ] + }, + { + "propertyName": "Field List", + "propertyKeyword": "keyList", + "propertyType": "fieldList", + "template": "orderedList" + }, + { + "propertyName": "List with attribute", + "propertyKeyword": "keyListOrder", + "propertyType": "fieldList", + "template": "orderedList", + "attributeList": [ + "ascending", + "descending" + ] } */ diff --git a/properties_pane/view_level/viewLevelConfig.json b/properties_pane/view_level/viewLevelConfig.json index 37ad202..f35cb1a 100644 --- a/properties_pane/view_level/viewLevelConfig.json +++ b/properties_pane/view_level/viewLevelConfig.json @@ -1,5 +1,5 @@ /* -* Copyright © 2016-2017 by IntegrIT S.A. dba Hackolade. All rights reserved. +* Copyright © 2016-2019 by IntegrIT S.A. dba Hackolade. All rights reserved. * * The copyright to the computer software herein is the property of IntegrIT S.A. * The software may be used and/or copied only with the written permission of @@ -13,14 +13,12 @@ making sure that you maintain a proper JSON format. { "propertyName": "Simple text", "propertyKeyword": "simpletextProp", - "shouldValidate": false, "propertyType": "text", "sampleGen": "&containerName|&entityName|&random|" }, { "propertyName": "Text area", "propertyKeyword": "textareaProp", - "propertyValidate": false, "propertyTooltip": "Popup for multi-line text entry", "propertyType": "details", "template": "textarea" @@ -28,7 +26,6 @@ making sure that you maintain a proper JSON format. { "propertyName": "Dropdown selection", "propertyKeyword": "dropdownProp", - "shouldValidate": false, "propertyTooltip": "Select from list of options", "propertyType": "select", "options": [ @@ -50,32 +47,69 @@ making sure that you maintain a proper JSON format. { "propertyName": "Checkbox", "propertyKeyword": "checkboxProp", - "shouldValidate": false, "propertyType": "checkbox" }, { "propertyName": "Group", "propertyType": "group", "propertyKeyword": "grpProp", - "shouldValidate": true, "propertyTooltip": "", "structure": [ { "propertyName": "Simple Grp Text", "propertyKeyword": "simpleGrpText", - "shouldValidate": false, "propertyTooltip": "", "propertyType": "text" }, { "propertyName": "Group Number", "propertyKeyword": "grpNumber", - "propertyValidate": true, "propertyType": "numeric", "valueType": "number", "allowNegative": false } ] + }, +// “groupInput” can have the following states - 0 items, 1 item, and many items. +// “blockInput” has only 2 states - 0 items or 1 item. +// This gives us an easy way to represent it as an object and not as an array internally which is beneficial for processing +// and forward-engineering in particular. + { + "propertyName": "Block", + "propertyType": "block", + "propertyKeyword": "grpProp", + "propertyTooltip": "", + "structure": [ + { + "propertyName": "Simple Grp Text", + "propertyKeyword": "simpleGrpText", + "propertyTooltip": "", + "propertyType": "text" + }, + { + "propertyName": "Group Number", + "propertyKeyword": "grpNumber", + "propertyType": "numeric", + "valueType": "number", + "allowNegative": false + } + ] + }, + { + "propertyName": "Field List", + "propertyKeyword": "keyList", + "propertyType": "fieldList", + "template": "orderedList" + }, + { + "propertyName": "List with attribute", + "propertyKeyword": "keyListOrder", + "propertyType": "fieldList", + "template": "orderedList", + "attributeList": [ + "ascending", + "descending" + ] } */