UNPKG

json-object-editor

Version:

JOE the Json Object Editor | Platform Edition

120 lines (116 loc) 5.9 kB
var question ={ title: 'Q | ${name}', info:"The question panel is where you can manage the questions used to build a form.", // Curated summary for agents summary:{ description:'Reusable question definition used to build forms with various input types.', purpose:'Questions define form field types (text, select, boolean, etc.) and can be organized into forms. Questions can reference datasets for select/multiple types, can be marked as usable for visitor ID or submission date tracking, and are categorized with tags. Questions are used in the Questionnaire and Church apps.', labelField:'name', defaultSort:{ field:'joeUpdated', dir:'desc' }, searchableFields:['name','info','description','title','fieldname','_id'], allowedSorts:['joeUpdated','created','name','question_type'], relationships:{ outbound:[ { field:'tags', targetSchema:'tag', cardinality:'many' } ], inbound:{ graphRef:'server/relationships.graph.json' } }, joeManagedFields:['created','joeUpdated'], fields:[ { name:'_id', type:'string', required:true }, { name:'itemtype', type:'string', required:true, const:'question' }, { name:'name', type:'string', required:true }, { name:'info', type:'string' }, { name:'description', type:'string' }, { name:'title', type:'string' }, { name:'fieldname', type:'string' }, { name:'question_type', type:'string', enumValues:['oneline','textarea','select','boolean','multiple','content','password','number'] }, { name:'question_dataset', type:'string' }, { name:'option_template', type:'string' }, { name:'value_template', type:'string' }, { name:'options', type:'objectList' }, { name:'content', type:'code' }, { name:'required', type:'boolean' }, { name:'canBeId', type:'boolean' }, { name:'canBeDate', type:'boolean' }, { name:'tags', type:'string', isArray:true, isReference:true, targetSchema:'tag' }, { name:'joeUpdated', type:'string', format:'date-time', required:true }, { name:'created', type:'string', format:'date-time', required:true } ] }, subsets:function(){ return [{name:'Required',filter:{required:true},stripeColor:'#ff9999'} ].concat(_joe.Filter.Options.getDatasetPropertyValues( 'question', 'question_type', { group: 'fieldtype', collapsed: false } // optional grouping )); }, stripeColor:function(item){ if(item.required){ return { title:'Required', color:'#ff9999' }; } }, filters:function(item){ return _joe.Filter.Options.tags({group:'tags',untagged:true,collapsed:true}).concat(_joe.Filter.Options.status({group:'status',collapsed:true})); }, fields:[ 'name', {name:'info',width:'50%'}, {extend:'description',specs:{comment:'description of question background and purpose.'}}, {name:'title',width:'50%'}, {name:'fieldname',comment:'used for database storage instead of name field'}, {name:'question_type',type:'select', rerender:'options,content,question_dataset,option_template', values:['oneline','textarea','select','boolean','multiple','content','password','number']}, {name:'question_dataset',type:'select',width:'33%', values:function(){ return [{name:'none',value:''}].concat(__collectionNames); },hidden:function(item){ return (['multiple','select'].indexOf(item.question_type) == -1); } }, {name:'option_template',width:'33%',display:'option template',comment:'template for each option, use ${property} to display the property value.', hidden:function(item){ return (['multiple','select'].indexOf(item.question_type) == -1); } }, {name:'value_template',width:'33%',display:'value template',comment:'defaults to _id', hidden:function(item){ return (['multiple','select'].indexOf(item.question_type) == -1); } }, {name:'options',type:'objectList',comment:'label is the wording, value is the code', hidden:function(item){ return (['multiple','select'].indexOf(item.question_type) == -1); }, properties:['label','value'] }, {name:'content',type:'code', comment:'receives an object of {question,form} when run as function.', hidden:function(item){ return (item.question_type != 'content') }}, 'required:boolean', {sidebar_start:'right'}, {section_start:'adv',collapsed:false}, {name:'canBeId',type:'boolean',tooltip:'can this field be used as form visitor id',display:'use as id',label:'can be used as visitor ID'}, {name:'canBeDate',type:'boolean',tooltip:'can this field be used as form submission date',display:'use as date',label:'can be used as form date'}, {section_end:'adv'}, 'status', 'tags', {sidebar_end:'right'}, {section_start:'system',collapsed:true}, '_id','created','itemtype', {section_end:'system'} ], idprop: '_id', listView:{ title: '<joe-subtext>${fieldname}</joe-subtext>' +'<joe-title>${name}</joe-title><joe-subtitle>${question_type}</joe-subtitle>', listWindowTitle: 'Questions' } }; module.exports = question;