Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
[ { title : 'Page Title', properties : [ { name : 'Property Name', label : 'Property Label', description : 'Property Description', //optional, default is NULL type : 'Property Type', value : 'Property Value', //optional, default is null required : 'Mandatory or Not', //optional, 'true' or 'false', default is 'false' //… more attributes … }, //… more fields … ], validators : [ //optional //… properties custom validators … ], buttons : [ //optional //… custom properties page buttons … ] }, //… more properties page … ]
columns : [ {key : 'key', label : 'Columns'}, {key : 'value', label : 'Value', required: 'true'}, {key : 'label', label : 'Label', required: 'true'}, {key : 'width', label : 'Width', options:[ {value : '10%', label : '10%'}, {value : '20%', label : '20%'}, {value : '30%', label : '20%'}, {value : '40%', label : '20%'} ]} ]
columns : [ {key : 'key', label : 'Columns'}, // first column will used to populate row label {key : 'value', label : 'Value', required: 'true'}, {key : 'label', label : 'Label', required: 'true'}, {key : 'width', label : 'Width', options:[ {value : '10%', label : '10%'}, {value : '20%', label : '20%'}, {value : '30%', label : '20%'}, {value : '40%', label : '20%'} ]} ], rows : [ {label : 'Username', required: 'true'}, {label : 'Status'}, {label : 'Message'}, {label : 'Date'} ], value : [ {label : 'Username'}, {label : 'Status'}, {label : 'Message', width : '20%'}, {label : 'Date', value : 'dateCreated'} ]
value : JSON对象格式的JSON列数组,其中所有用作“column”对象的“key”属性用作属性。
columns : [ {key : 'value', label : 'Value', required: 'true'}, {key : 'label', label : 'Label', required: 'true'}, {key : 'width', label : 'Width', options:[ {value : '10%', label : '10%'}, {value : '20%', label : '20%'}, {value : '30%', label : '20%'}, {value : '40%', label : '20%'} ]} ], value : [ {label : 'Username', value : 'username'}, {label : 'Status', value : 'status'}, {label : 'Message', value : 'message', width : '20%'}, {label : 'Date', value : 'dateCreated'} ]
{ regex_validation : '^[a-zA-Z0-9_]+$', validation_message : 'Invalid ID!!' }
{ control_field: 'chartType', control_value: 'bar|xy|area|bubble|line|candlestick|ohlc', control_use_regex: 'true', }
options : [ {value: 'value1', label : 'Value 1'}, {value: 'value2', label : 'Value 2'}, {value: 'value3', label : 'Value 3'} ]
options_ajax : '[CONTEXT_PATH]/web/json/console/app[APP_PATH]/datalist/options'
options_ajax_on_change : 'type' options_ajax : '[CONTEXT_PATH]/web/json/app[APP_PATH]/plugin/org.joget.plugin.enterprise.SamplePlugin/service?action=getJson'
options_callback: 'DatalistBuilder.getColumnOptions'
options_script: 'var tempArray = [{\'label\':\'\',\'value\':\'\'}]; for(ee in DatalistBuilder.availableColumns){ var temp = { \'label\' : UI.escapeHTML(DatalistBuilder.availableColumns[ee].label), \'value\' : DatalistBuilder.availableColumns[ee].id}; tempArray.push(temp);}tempArray;'
DatalistBuilder.getColumnOptions(properties)
可以使用与Datalist Builder相关的插件。它将根据绑定器配置返回所有可用的列。
例:
buttons : [{ name : 'testmail', label : 'Send Test Email', ajax_url : '[CONTEXT_PATH]/web/json/app[APP_PATH]/plugin/org.joget.apps.app.lib.EmailTool/service?action=testmail', fields : ['host', 'port', 'security', 'username', 'password'], addition_fields : [ { name : 'from', label : 'From', type : 'textfield', required : 'True' }, { name : 'toSpecific', label : 'To', type : 'textfield', required : 'True' } ] }]
String value = getPropertyString("property_name");
String[] values = getPropertyString("property_name").split(";");
String[] col1_values = getPropertyString("col1_name").split(";"); String[] col2_values = getPropertyString("col2_name").split(";");
Object columns = getProperty("property_name"); if (columns != null) { for (Object colObj : (Object[]) columns) { Map col = (Map) colObj; String col1_value = (String) opt.get("col1_key"); String col2_value = (String) opt.get("col2_key"); } }
import org.joget.plugin.base.PluginManager; import org.joget.apps.app.service.AppUtil; import org.joget.plugin.base.ExtDefaultPlugin; Object element = getProperty("property_name"); if (element != null && element instanceof Map) { Map elementMap = (Map) element; String className = (String) elementMap.get("className"); Map<String, Object> properties = (Map<String, Object>) elementMap.get("properties"); //convert it to plugin PluginManager pm = (PluginManager) AppUtil.getApplicationContext().getBean("pluginManager"); ExtDefaultPlugin plugin = (ExtDefaultPlugin) pm.getPlugin(className); if (plugin != null) { plugin.setProperties(properties); } }