diff --git a/tests/resources/dynaform1.json b/tests/resources/dynaform1.json new file mode 100644 index 000000000..425f7e9db --- /dev/null +++ b/tests/resources/dynaform1.json @@ -0,0 +1,1666 @@ +{ + "name": "dynaform1", + "description": "", + "items": [{ + "type": "form", + "variable": "", + "var_uid": "", + "dataType": "", + "id": "9812177395ec54cb430b028012611278", + "name": "dynaform1", + "description": "", + "mode": "edit", + "script": "", + "language": "en", + "externalLibs": "", + "printable": false, + "items": [[{ + "type": "form", + "variable": "", + "var_uid": "", + "dataType": "", + "id": "7624389535ec54b8142adc1042059709", + "name": "subdynaform1", + "description": "", + "mode": "edit", + "script": "", + "language": "en", + "externalLibs": "", + "printable": false, + "items": [[{ + "type": "text", + "variable": "textVar001", + "var_uid": "2008131825ec54bf0dfc738088201313", + "dataType": "string", + "protectedValue": false, + "id": "textVar001", + "name": "textVar001", + "label": "text_1", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "textTransform": "none", + "validate": "", + "validateMessage": "", + "maxLength": 1000, + "formula": "", + "mode": "parent", + "operation": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "var_name": "textVar001", + "colSpan": 3 + }, { + "type": "textarea", + "variable": "textareaVar001", + "var_uid": "3427627605ec54bf2b9ab32022122425", + "dataType": "string", + "protectedValue": false, + "id": "textareaVar001", + "name": "textareaVar001", + "label": "textarea_1", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "validate": "", + "validateMessage": "", + "mode": "parent", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "rows": "5", + "var_name": "textareaVar001", + "colSpan": 3 + }, { + "type": "dropdown", + "variable": "dropdownVar001", + "var_uid": "1689215315ec54bf4c925b5097619001", + "dataType": "string", + "protectedValue": false, + "id": "dropdownVar001", + "name": "dropdownVar001", + "label": "dropdown_1", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "var_name": "dropdownVar001", + "colSpan": 3 + }, { + "type": "checkbox", + "variable": "checkboxVar001", + "var_uid": "5306838245ec54bf77c2b81031779019", + "dataType": "boolean", + "protectedValue": false, + "id": "checkboxVar001", + "name": "checkboxVar001", + "label": "checkbox_1", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "options": [{ + "value": "1", + "label": "true" + }, { + "value": "0", + "label": "false" + }], + "var_name": "checkboxVar001", + "colSpan": 3 + }], [{ + "type": "checkgroup", + "variable": "checkgroupVar001", + "var_uid": "6205030885ec54bf96e22e8022771313", + "dataType": "array", + "protectedValue": false, + "id": "checkgroupVar001", + "name": "checkgroupVar001", + "label": "checkgroup_1", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "var_name": "checkgroupVar001", + "colSpan": 3 + }, { + "type": "radio", + "variable": "radioVar001", + "var_uid": "3496436525ec54bfb7fef28085429683", + "dataType": "string", + "protectedValue": false, + "id": "radioVar001", + "name": "radioVar001", + "label": "radio_1", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "var_name": "radioVar001", + "colSpan": 3 + }, { + "type": "datetime", + "variable": "datetimeVar001", + "var_uid": "7352375875ec54bfe5ec633080735129", + "dataType": "datetime", + "protectedValue": false, + "id": "datetimeVar001", + "name": "datetimeVar001", + "label": "datetime_1", + "tabIndex": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "format": "YYYY-MM-DD", + "dayViewHeaderFormat": "MMMM YYYY", + "extraFormats": false, + "stepping": 1, + "minDate": "@@varMinDate0", + "maxDate": "@@varMaxDate0", + "useCurrent": "false", + "collapse": true, + "locale": "", + "defaultDate": "@@varDefDate0", + "disabledDates": false, + "enabledDates": false, + "icons": { + "time": "glyphicon glyphicon-time", + "date": "glyphicon glyphicon-calendar", + "up": "glyphicon glyphicon-chevron-up", + "down": "glyphicon glyphicon-chevron-down", + "previous": "glyphicon glyphicon-chevron-left", + "next": "glyphicon glyphicon-chevron-right", + "today": "glyphicon glyphicon-screenshot", + "clear": "glyphicon glyphicon-trash" + }, + "useStrict": false, + "sideBySide": false, + "daysOfWeekDisabled": false, + "calendarWeeks": false, + "viewMode": "days", + "toolbarPlacement": "default", + "showTodayButton": false, + "showClear": "false", + "widgetPositioning": { + "horizontal": "auto", + "vertical": "auto" + }, + "widgetParent": null, + "keepOpen": false, + "var_name": "datetimeVar001", + "colSpan": 3 + }, { + "type": "suggest", + "variable": "suggestVar001", + "var_uid": "2109403475ec54c01413f82044516898", + "dataType": "string", + "protectedValue": false, + "id": "suggestVar001", + "name": "suggestVar001", + "label": "suggest_1", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "delay": 0, + "resultsLimit": 10, + "forceSelection": false, + "var_name": "suggestVar001", + "colSpan": 3 + }], [{ + "type": "hidden", + "variable": "hiddenVar001", + "var_uid": "6145083135ec54c03548688097055491", + "dataType": "string", + "protectedValue": false, + "id": "hiddenVar001", + "name": "hiddenVar001", + "defaultValue": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "var_name": "hiddenVar001", + "colSpan": 3 + }, { + "type": "title", + "id": "title0000000001", + "label": "title_1", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "subtitle", + "id": "subtitle0000000001", + "label": "subtitle_1", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "label", + "id": "label0000000001", + "label": "label_1", + "ariaLabel": "", + "colSpan": 3 + }], [{ + "type": "link", + "id": "link0000000001", + "name": "link0000000001", + "label": "link_1", + "tabIndex": "", + "value": "", + "href": "http://www.processmaker.com/", + "hint": "", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "image", + "id": "image0000000001", + "name": "image0000000001", + "label": "image_1", + "tabIndex": "", + "hint": "", + "ariaLabel": "", + "src": "", + "shape": "", + "alternateText": "", + "comment": "", + "alt": "", + "colSpan": 3 + }, { + "type": "file", + "variable": "fileVar001", + "var_uid": "4863287415ec54c127295e7024137002", + "dataType": "file", + "protectedValue": false, + "id": "fileVar001", + "name": "fileVar001", + "label": "file_1", + "tabIndex": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": ".*", + "size": 0, + "sizeUnity": "KB", + "mode": "parent", + "multiple": false, + "inp_doc_uid": "1670605855ec549cf6f10c8028638555", + "var_name": "fileVar001", + "colSpan": 3 + }, { + "type": "multipleFile", + "variable": "multipleFileVar001", + "var_uid": "9278025435ec54c16bc80f4055495316", + "dataType": "multiplefile", + "protectedValue": false, + "id": "multipleFileVar001", + "name": "multipleFileVar001", + "label": "multipleFile_1", + "tabIndex": "", + "ariaLabel": "", + "inputDocument": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": "*", + "size": 1024, + "sizeUnity": "KB", + "enableVersioning": false, + "mode": "parent", + "multiple": false, + "inp_doc_uid": "", + "var_name": "multipleFileVar001", + "colSpan": 3 + }], [{ + "type": "submit", + "id": "submit0000000001", + "name": "submit0000000001", + "label": "submit_1", + "tabIndex": "", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "button", + "id": "button0000000001", + "name": "button0000000001", + "label": "button_1", + "tabIndex": "", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "panel", + "id": "panel0000000001", + "content": "", + "border": "1px", + "colSpan": 3 + }, { + "colSpan": 3 + }], [{ + "type": "grid", + "variable": "gridVar001", + "var_uid": "1290123295ec54c2e9efc32010176208", + "dataType": "grid", + "protectedValue": false, + "id": "gridVar001", + "name": "gridVar001", + "label": "grid_1", + "hint": "", + "required": false, + "requiredFieldErrorMessage": "", + "columns": [{ + "type": "text", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "text0000000002", + "name": "text0000000002", + "label": "text_2", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "textTransform": "none", + "validate": "", + "validateMessage": "", + "maxLength": 1000, + "formula": "", + "mode": "parent", + "operation": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "columnWidth": "10", + "width": 100, + "title": "text_2", + "var_name": "gridVar001" + }, { + "type": "textarea", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "textarea0000000002", + "name": "textarea0000000002", + "label": "textarea_2", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "validate": "", + "validateMessage": "", + "mode": "parent", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "rows": "5", + "columnWidth": "10", + "width": 100, + "title": "textarea_2" + }, { + "type": "dropdown", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "dropdown0000000002", + "name": "dropdown0000000002", + "label": "dropdown_2", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "columnWidth": "10", + "width": 100, + "title": "dropdown_2" + }, { + "type": "checkbox", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "checkbox0000000002", + "name": "checkbox0000000002", + "label": "checkbox_2", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "options": [], + "columnWidth": "10", + "width": 100, + "title": "checkbox_2" + }, { + "type": "datetime", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "datetime0000000002", + "name": "datetime0000000002", + "label": "datetime_2", + "tabIndex": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "format": "YYYY-MM-DD", + "dayViewHeaderFormat": "MMMM YYYY", + "extraFormats": false, + "stepping": 1, + "minDate": "@@varMinDate1", + "maxDate": "@@varMaxDate1", + "useCurrent": "false", + "collapse": true, + "locale": "", + "defaultDate": "@@varDefDate1", + "disabledDates": false, + "enabledDates": false, + "icons": { + "time": "glyphicon glyphicon-time", + "date": "glyphicon glyphicon-calendar", + "up": "glyphicon glyphicon-chevron-up", + "down": "glyphicon glyphicon-chevron-down", + "previous": "glyphicon glyphicon-chevron-left", + "next": "glyphicon glyphicon-chevron-right", + "today": "glyphicon glyphicon-screenshot", + "clear": "glyphicon glyphicon-trash" + }, + "useStrict": false, + "sideBySide": false, + "daysOfWeekDisabled": false, + "calendarWeeks": false, + "viewMode": "days", + "toolbarPlacement": "default", + "showTodayButton": false, + "showClear": "false", + "widgetPositioning": { + "horizontal": "auto", + "vertical": "auto" + }, + "widgetParent": null, + "keepOpen": false, + "columnWidth": "10", + "width": 100, + "title": "datetime_2" + }, { + "type": "suggest", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "suggest0000000002", + "name": "suggest0000000002", + "label": "suggest_2", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "delay": 0, + "resultsLimit": 10, + "forceSelection": false, + "columnWidth": "10", + "width": 100, + "title": "suggest_2" + }, { + "type": "hidden", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "hidden0000000002", + "name": "hidden0000000002", + "defaultValue": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "width": 100 + }, { + "type": "link", + "id": "link0000000002", + "name": "link0000000002", + "label": "link_2", + "tabIndex": "", + "value": "", + "href": "http://www.processmaker.com/", + "hint": "", + "ariaLabel": "", + "columnWidth": "10", + "width": 100, + "title": "link_2" + }, { + "type": "file", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "file0000000002", + "name": "file0000000002", + "label": "file_2", + "tabIndex": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": "*", + "size": 1024, + "sizeUnity": "KB", + "mode": "parent", + "multiple": false, + "inp_doc_uid": "", + "columnWidth": "10", + "width": 100, + "title": "file_2" + }, { + "type": "multipleFile", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "multipleFile0000000002", + "name": "multipleFile0000000002", + "label": "multipleFile_2", + "tabIndex": "", + "ariaLabel": "", + "inputDocument": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": "*", + "size": 1024, + "sizeUnity": "KB", + "enableVersioning": false, + "mode": "parent", + "multiple": false, + "inp_doc_uid": "", + "columnWidth": "10", + "width": 100, + "title": "multipleFile_2" + }], + "data": [], + "mode": "parent", + "layout": "responsive", + "pageSize": "0", + "addRow": true, + "deleteRow": true, + "title": "grid_1", + "colSpan": 12 + }]], + "variables": [{ + "var_uid": "2008131825ec54bf0dfc738088201313", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "textVar001", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "3427627605ec54bf2b9ab32022122425", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "textareaVar001", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "1689215315ec54bf4c925b5097619001", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "dropdownVar001", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "5306838245ec54bf77c2b81031779019", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "checkboxVar001", + "var_field_type": "boolean", + "var_field_size": 10, + "var_label": "boolean", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[{\"value\":\"1\",\"label\":\"true\"},{\"value\":\"0\",\"label\":\"false\"}]", + "inp_doc_uid": "" + }, { + "var_uid": "6205030885ec54bf96e22e8022771313", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "checkgroupVar001", + "var_field_type": "array", + "var_field_size": 10, + "var_label": "array", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "3496436525ec54bfb7fef28085429683", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "radioVar001", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "7352375875ec54bfe5ec633080735129", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "datetimeVar001", + "var_field_type": "datetime", + "var_field_size": 10, + "var_label": "datetime", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "2109403475ec54c01413f82044516898", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "suggestVar001", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "6145083135ec54c03548688097055491", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "hiddenVar001", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "4863287415ec54c127295e7024137002", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "fileVar001", + "var_field_type": "file", + "var_field_size": 10, + "var_label": "file", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "1670605855ec549cf6f10c8028638555" + }, { + "var_uid": "9278025435ec54c16bc80f4055495316", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "multipleFileVar001", + "var_field_type": "multiplefile", + "var_field_size": 10, + "var_label": "multiplefile", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "1290123295ec54c2e9efc32010176208", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "gridVar001", + "var_field_type": "grid", + "var_field_size": 10, + "var_label": "grid", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }], + "colSpan": 12 + }], [{ + "type": "text", + "variable": "textVar002", + "var_uid": "1812914805ec54cc31a5960087359139", + "dataType": "string", + "protectedValue": false, + "id": "textVar002", + "name": "textVar002", + "label": "text_3", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "textTransform": "none", + "validate": "", + "validateMessage": "", + "maxLength": 1000, + "formula": "", + "mode": "parent", + "operation": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "var_name": "textVar002", + "colSpan": 3 + }, { + "type": "textarea", + "variable": "textareaVar002", + "var_uid": "4307069485ec54ce1eb8888071098926", + "dataType": "string", + "protectedValue": false, + "id": "textareaVar002", + "name": "textareaVar002", + "label": "textarea_3", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "validate": "", + "validateMessage": "", + "mode": "parent", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "rows": "5", + "var_name": "textareaVar002", + "colSpan": 3 + }, { + "type": "dropdown", + "variable": "dropdownVar002", + "var_uid": "1138214905ec54ce561e477017714089", + "dataType": "string", + "protectedValue": false, + "id": "dropdownVar002", + "name": "dropdownVar002", + "label": "dropdown_3", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "var_name": "dropdownVar002", + "colSpan": 3 + }, { + "type": "checkbox", + "variable": "checkboxVar002", + "var_uid": "9750351345ec54d21706043076575642", + "dataType": "boolean", + "protectedValue": false, + "id": "checkboxVar002", + "name": "checkboxVar002", + "label": "checkbox_3", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "options": [{ + "value": "1", + "label": "true" + }, { + "value": "0", + "label": "false" + }], + "var_name": "checkboxVar002", + "colSpan": 3 + }], [{ + "type": "checkgroup", + "variable": "checkgroupVar002", + "var_uid": "8551499555ec54d8a3c1b52067607042", + "dataType": "array", + "protectedValue": false, + "id": "checkgroupVar002", + "name": "checkgroupVar002", + "label": "checkgroup_2", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "var_name": "checkgroupVar002", + "colSpan": 3 + }, { + "type": "radio", + "variable": "radioVar002", + "var_uid": "9216762805ec54d8e9c15a1064391236", + "dataType": "string", + "protectedValue": false, + "id": "radioVar002", + "name": "radioVar002", + "label": "radio_2", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "var_name": "radioVar002", + "colSpan": 3 + }, { + "type": "datetime", + "variable": "datetimeVar002", + "var_uid": "2676353185ec54d92b9d542086401008", + "dataType": "datetime", + "protectedValue": false, + "id": "datetimeVar002", + "name": "datetimeVar002", + "label": "datetime_3", + "tabIndex": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "format": "YYYY-MM-DD", + "dayViewHeaderFormat": "MMMM YYYY", + "extraFormats": false, + "stepping": 1, + "minDate": "@@varMinDate2", + "maxDate": "@@varMaxDate2", + "useCurrent": "false", + "collapse": true, + "locale": "", + "defaultDate": "@@varDefDate2", + "disabledDates": false, + "enabledDates": false, + "icons": { + "time": "glyphicon glyphicon-time", + "date": "glyphicon glyphicon-calendar", + "up": "glyphicon glyphicon-chevron-up", + "down": "glyphicon glyphicon-chevron-down", + "previous": "glyphicon glyphicon-chevron-left", + "next": "glyphicon glyphicon-chevron-right", + "today": "glyphicon glyphicon-screenshot", + "clear": "glyphicon glyphicon-trash" + }, + "useStrict": false, + "sideBySide": false, + "daysOfWeekDisabled": false, + "calendarWeeks": false, + "viewMode": "days", + "toolbarPlacement": "default", + "showTodayButton": false, + "showClear": "false", + "widgetPositioning": { + "horizontal": "auto", + "vertical": "auto" + }, + "widgetParent": null, + "keepOpen": false, + "var_name": "datetimeVar002", + "colSpan": 3 + }, { + "type": "suggest", + "variable": "suggestVar002", + "var_uid": "3315247505ec54d9d163527025569904", + "dataType": "string", + "protectedValue": false, + "id": "suggestVar002", + "name": "suggestVar002", + "label": "suggest_3", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "delay": 0, + "resultsLimit": 10, + "forceSelection": false, + "var_name": "suggestVar002", + "colSpan": 3 + }], [{ + "type": "hidden", + "variable": "hiddenVar002", + "var_uid": "4948016615ec54da5d1d8c7003880018", + "dataType": "string", + "protectedValue": false, + "id": "hiddenVar002", + "name": "hiddenVar002", + "defaultValue": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "var_name": "hiddenVar002", + "colSpan": 3 + }, { + "type": "title", + "id": "title0000000002", + "label": "title_2", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "subtitle", + "id": "subtitle0000000002", + "label": "subtitle_2", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "label", + "id": "label0000000002", + "label": "label_2", + "ariaLabel": "", + "colSpan": 3 + }], [{ + "type": "link", + "id": "link0000000003", + "name": "link0000000003", + "label": "link_3", + "tabIndex": "", + "value": "", + "href": "http://www.processmaker.com/", + "hint": "", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "image", + "id": "image0000000002", + "name": "image0000000002", + "label": "image_2", + "tabIndex": "", + "hint": "", + "ariaLabel": "", + "src": "", + "shape": "", + "alternateText": "", + "comment": "", + "alt": "", + "colSpan": 3 + }, { + "type": "file", + "variable": "fileVar002", + "var_uid": "9693174415ec54dbc8aac53019663138", + "dataType": "file", + "protectedValue": false, + "id": "fileVar002", + "name": "fileVar002", + "label": "file_3", + "tabIndex": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": ".*", + "size": 0, + "sizeUnity": "KB", + "mode": "parent", + "multiple": false, + "inp_doc_uid": "1670605855ec549cf6f10c8028638555", + "var_name": "fileVar002", + "colSpan": 3 + }, { + "type": "multipleFile", + "variable": "multipleFileVar002", + "var_uid": "2576759835ec54dc3339c79033907326", + "dataType": "multiplefile", + "protectedValue": false, + "id": "multipleFileVar002", + "name": "multipleFileVar002", + "label": "multipleFile_3", + "tabIndex": "", + "ariaLabel": "", + "inputDocument": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": "*", + "size": 1024, + "sizeUnity": "KB", + "enableVersioning": false, + "mode": "parent", + "multiple": false, + "inp_doc_uid": "", + "var_name": "multipleFileVar002", + "colSpan": 3 + }], [{ + "type": "submit", + "id": "submit0000000002", + "name": "submit0000000002", + "label": "submit_2", + "tabIndex": "", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "button", + "id": "button0000000002", + "name": "button0000000002", + "label": "button_2", + "tabIndex": "", + "ariaLabel": "", + "colSpan": 3 + }, { + "type": "panel", + "id": "panel0000000002", + "content": "", + "border": "1px", + "colSpan": 3 + }, { + "colSpan": 3 + }], [{ + "type": "grid", + "variable": "gridVar002", + "var_uid": "3173579815ec54de837a8e7056159351", + "dataType": "grid", + "protectedValue": false, + "id": "gridVar002", + "name": "gridVar002", + "label": "grid_2", + "hint": "", + "required": false, + "requiredFieldErrorMessage": "", + "columns": [{ + "type": "text", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "text0000000003", + "name": "text0000000003", + "label": "text_4", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "textTransform": "none", + "validate": "", + "validateMessage": "", + "maxLength": 1000, + "formula": "", + "mode": "parent", + "operation": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "columnWidth": "10", + "width": 100, + "title": "text_4", + "var_name": "gridVar002" + }, { + "type": "textarea", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "textarea0000000003", + "name": "textarea0000000003", + "label": "textarea_4", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "validate": "", + "validateMessage": "", + "mode": "parent", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "rows": "5", + "columnWidth": "10", + "width": 100, + "title": "textarea_4" + }, { + "type": "dropdown", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "dropdown0000000003", + "name": "dropdown0000000003", + "label": "dropdown_4", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "columnWidth": "10", + "width": 100, + "title": "dropdown_4" + }, { + "type": "checkbox", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "checkbox0000000003", + "name": "checkbox0000000003", + "label": "checkbox_4", + "tabIndex": "", + "defaultValue": "", + "hint": "", + "ariaLabel": "", + "ariaLabelVisible": true, + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "options": [], + "columnWidth": "10", + "width": 100, + "title": "checkbox_4" + }, { + "type": "datetime", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "datetime0000000003", + "name": "datetime0000000003", + "label": "datetime_4", + "tabIndex": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "format": "YYYY-MM-DD", + "dayViewHeaderFormat": "MMMM YYYY", + "extraFormats": false, + "stepping": 1, + "minDate": "@@varMinDate3", + "maxDate": "@@varMaxDate3", + "useCurrent": "false", + "collapse": true, + "locale": "", + "defaultDate": "@@varDefDate3", + "disabledDates": false, + "enabledDates": false, + "icons": { + "time": "glyphicon glyphicon-time", + "date": "glyphicon glyphicon-calendar", + "up": "glyphicon glyphicon-chevron-up", + "down": "glyphicon glyphicon-chevron-down", + "previous": "glyphicon glyphicon-chevron-left", + "next": "glyphicon glyphicon-chevron-right", + "today": "glyphicon glyphicon-screenshot", + "clear": "glyphicon glyphicon-trash" + }, + "useStrict": false, + "sideBySide": false, + "daysOfWeekDisabled": false, + "calendarWeeks": false, + "viewMode": "days", + "toolbarPlacement": "default", + "showTodayButton": false, + "showClear": "false", + "widgetPositioning": { + "horizontal": "auto", + "vertical": "auto" + }, + "widgetParent": null, + "keepOpen": false, + "columnWidth": "10", + "width": 100, + "title": "datetime_4" + }, { + "type": "suggest", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "suggest0000000003", + "name": "suggest0000000003", + "label": "suggest_4", + "tabIndex": "", + "defaultValue": "", + "placeholder": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "mode": "parent", + "datasource": "database", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "dataVariable": "", + "options": [], + "delay": 0, + "resultsLimit": 10, + "forceSelection": false, + "columnWidth": "10", + "width": 100, + "title": "suggest_4" + }, { + "type": "hidden", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "hidden0000000003", + "name": "hidden0000000003", + "defaultValue": "", + "dbConnection": "workflow", + "dbConnectionLabel": "PM Database", + "sql": "", + "width": 100 + }, { + "type": "link", + "id": "link0000000004", + "name": "link0000000004", + "label": "link_4", + "tabIndex": "", + "value": "", + "href": "http://www.processmaker.com/", + "hint": "", + "ariaLabel": "", + "columnWidth": "10", + "width": 100, + "title": "link_4" + }, { + "type": "file", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "file0000000003", + "name": "file0000000003", + "label": "file_4", + "tabIndex": "", + "hint": "", + "ariaLabel": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": "*", + "size": 1024, + "sizeUnity": "KB", + "mode": "parent", + "multiple": false, + "inp_doc_uid": "", + "columnWidth": "10", + "width": 100, + "title": "file_4" + }, { + "type": "multipleFile", + "variable": "", + "var_uid": "", + "dataType": "", + "protectedValue": false, + "id": "multipleFile0000000003", + "name": "multipleFile0000000003", + "label": "multipleFile_4", + "tabIndex": "", + "ariaLabel": "", + "inputDocument": "", + "required": false, + "requiredFieldErrorMessage": "", + "dnd": false, + "extensions": "*", + "size": 1024, + "sizeUnity": "KB", + "enableVersioning": false, + "mode": "parent", + "multiple": false, + "inp_doc_uid": "", + "columnWidth": "10", + "width": 100, + "title": "multipleFile_4" + }], + "data": [], + "mode": "parent", + "layout": "responsive", + "pageSize": "0", + "addRow": true, + "deleteRow": true, + "title": "grid_2", + "colSpan": 12 + }]], + "variables": [{ + "var_uid": "1812914805ec54cc31a5960087359139", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "textVar002", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "4307069485ec54ce1eb8888071098926", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "textareaVar002", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "1138214905ec54ce561e477017714089", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "dropdownVar002", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "9750351345ec54d21706043076575642", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "checkboxVar002", + "var_field_type": "boolean", + "var_field_size": 10, + "var_label": "boolean", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[{\"value\":\"1\",\"label\":\"true\"},{\"value\":\"0\",\"label\":\"false\"}]", + "inp_doc_uid": "" + }, { + "var_uid": "8551499555ec54d8a3c1b52067607042", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "checkgroupVar002", + "var_field_type": "array", + "var_field_size": 10, + "var_label": "array", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "9216762805ec54d8e9c15a1064391236", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "radioVar002", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "2676353185ec54d92b9d542086401008", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "datetimeVar002", + "var_field_type": "datetime", + "var_field_size": 10, + "var_label": "datetime", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "3315247505ec54d9d163527025569904", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "suggestVar002", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "4948016615ec54da5d1d8c7003880018", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "hiddenVar002", + "var_field_type": "string", + "var_field_size": 10, + "var_label": "string", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "9693174415ec54dbc8aac53019663138", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "fileVar002", + "var_field_type": "file", + "var_field_size": 10, + "var_label": "file", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "1670605855ec549cf6f10c8028638555" + }, { + "var_uid": "2576759835ec54dc3339c79033907326", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "multipleFileVar002", + "var_field_type": "multiplefile", + "var_field_size": 10, + "var_label": "multiplefile", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }, { + "var_uid": "3173579815ec54de837a8e7056159351", + "prj_uid": "1601276735ec545a8c3b6f2014626745", + "var_name": "gridVar002", + "var_field_type": "grid", + "var_field_size": 10, + "var_label": "grid", + "var_dbconnection": "workflow", + "var_dbconnection_label": "PM Database", + "var_sql": "", + "var_null": 0, + "var_default": "", + "var_accepted_values": "[]", + "inp_doc_uid": "" + }] + }] +} \ No newline at end of file diff --git a/tests/unit/workflow/engine/classes/PmDynaformTest.php b/tests/unit/workflow/engine/classes/PmDynaformTest.php index 5c6a10f0b..a0af45cf8 100644 --- a/tests/unit/workflow/engine/classes/PmDynaformTest.php +++ b/tests/unit/workflow/engine/classes/PmDynaformTest.php @@ -984,6 +984,64 @@ class PmDynaformTest extends TestCase // Compare the values $this->assertEquals($dynaformTitle, $dynaform->DYN_TITLE); } + + /** + * This test should verify the setDependentOptionsForDatetime() method, to + * add the dependentOptions property to the datetime control. + * @test + * @covers PmDynaform::jsonr() + * @covers PmDynaform::setDependentOptionsForDatetime() + */ + public function it_should_test_dependent_options_for_datetime_control() + { + $pathData = PATH_TRUNK . "/tests/resources/dynaform1.json"; + $data = file_get_contents($pathData); + $json = json_decode($data); + + //assert for not contain property: dependentOptions + $result = json_decode(json_encode($json), JSON_OBJECT_AS_ARRAY); + $fn = function($item) use(&$fn) { + if (is_array($item)) { + if (isset($item['type']) && $item['type'] === 'datetime') { + $this->assertArrayNotHasKey('dependentOptions', $item); + } + array_map($fn, $item); + } + }; + array_map($fn, $result); + + //assert new property: dependentOptions + $dynaform = new PmDynaform(); + $dynaform->jsonr($json); + $result = json_decode(json_encode($json), JSON_OBJECT_AS_ARRAY); + + $fn = function($item) use(&$fn) { + if (is_array($item)) { + if (isset($item['type']) && $item['type'] === 'datetime') { + $this->assertArrayHasKey('dependentOptions', $item); + $this->assertArrayHasKey('minDate', $item['dependentOptions']); + $this->assertArrayHasKey('maxDate', $item['dependentOptions']); + $this->assertArrayHasKey('defaultDate', $item['dependentOptions']); + } + array_map($fn, $item); + } + }; + array_map($fn, $result); + + $dynaform = new PmDynaform(); + $reflection = new ReflectionClass($dynaform); + $reflectionMethod = $reflection->getMethod('setDependentOptionsForDatetime'); + $reflectionMethod->setAccessible(true); + + $a = new stdClass(); + $reflectionMethod->invokeArgs($dynaform, [&$a]); + $this->assertInstanceOf('ReflectionMethod', $reflectionMethod); + + $a = new stdClass(); + $a->type = 'suggest'; + $reflectionMethod->invokeArgs($dynaform, [&$a]); + $this->assertInstanceOf('ReflectionMethod', $reflectionMethod); + } } // Dummy function used for the coverture diff --git a/workflow/engine/classes/PmDynaform.php b/workflow/engine/classes/PmDynaform.php index ab1c263fb..8ab4afdc6 100644 --- a/workflow/engine/classes/PmDynaform.php +++ b/workflow/engine/classes/PmDynaform.php @@ -29,6 +29,7 @@ class PmDynaform public $lang = SYS_LANG; public $translations = null; public $onPropertyRead = "onPropertyReadFormInstance"; + public $onAfterPropertyRead = "onAfterPropertyReadFormInstance"; public $pathRTLCss = ''; public $record = null; public $records = null; @@ -545,6 +546,7 @@ class PmDynaform if (isset($this->fields["APP_DATA"][$json->name . "_label"])) { $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"]; } + $this->setDependentOptionsForDatetime($json, $this->fields); } if ($key === "type" && ($value === "file") && isset($this->fields["APP_DATA"]["APPLICATION"])) { $oCriteriaAppDocument = new Criteria("workflow"); @@ -771,6 +773,11 @@ class PmDynaform } } } + //read event after + $fn = $this->onAfterPropertyRead; + if (is_callable($fn) || function_exists($fn)) { + $fn($json, $key, $value); + } } } } @@ -2489,4 +2496,38 @@ class PmDynaform $json->dataSchema[$key] = $columnsData; } } + + /** + * Sets the dependentOptions property for datetime control, if it contains dependent fields. + * @param stdClass $json + * @param array $fields + * @return void + */ + private function setDependentOptionsForDatetime(stdClass &$json, array $fields = []): void + { + if (!isset($json->type)) { + return; + } + if ($json->type !== 'datetime') { + return; + } + $json->dependentOptions = ''; + $backup = $this->onAfterPropertyRead; + $properties = [ + 'defaultDate' => $json->defaultDate, + 'minDate' => $json->minDate, + 'maxDate' => $json->maxDate + ]; + $this->onAfterPropertyRead = function(stdClass &$json, $key, $value) use($backup, $properties) { + if (isset($json->type) && $json->type === 'datetime' && $key === "dependentOptions") { + $json->dependentOptions = new stdClass(); + foreach ($properties as $property => $value) { + if (is_string($value) && in_array(substr($value, 0, 2), self::$prefixs)) { + $json->dependentOptions->{$property} = $value; + } + } + $this->onAfterPropertyRead = $backup; + } + }; + } }