forked from pollen8/fabrik
-
Notifications
You must be signed in to change notification settings - Fork 373
future json structure
Rob Clayburn edited this page Jul 22, 2013
·
51 revisions
Apps:
[{
"app": "Todo",
"description": "My todos",
"creator": 1,
"createDate": "yyyy-mm-dd",
"lists": [1, 2, 4]
}]
Lists
[
{
"id": 1,
"label": "Outstanding Tasks",
"order": [{"element": 1, "direction": "desc", "default": true}]
"columns": [{"element": 2, "label": "date"}, {"element": 1, "label": "cost"}],
"filters": [{"element": 3, "type": "field"}, {"element": 4, "type": "auto-complete"}],
"groups": [1, 2],
"form": {
"label": "Test form",
"intro": "Intro to this form",
"layout": "template"
}
}
]
Lists forms, Groups & elements are not in apps - so they can be reused in multiple apps.
groups: [
{
id: 1,
creator: 1,
name: 'tasks',
label: 'Tasks',
repeat: false,
repeats: {min: 0, max: 10}
elements: [1, 2]
}
],
elements: [
{
id: 1,
creator: 1,
label: 'Task name',
name 'name',
plugin : {type: 'field', length: 20, password: false, placeholder: 'Enter a task'},
tip: 'tip text'
},
{
id: 2,
creator: 1,
label: 'Create date',
name: 'createdate',
plugin : {type: 'date', length: 10,
tip: '',
validations: [{type: 'notempty', msg: 'please enter a create date}]
},
]
user: [{
id: 1,
name: 'Rob',
email: '[email protected]'
groups: [1, 2]
}]
groups: [{
id: 1,
label: 'Registered',
adaptors: [{site: 'http://myblog.com', 'type': 'Joomla', equivalent: 3}] // Map view access level of 3 to group id = 1
}]
- GUI to build the layouts
- Some form of mapping for host sites to parse in their users info/user groups to the web service
- The concept of parent / child elements
- Option for form to not record to db - everything will
What we're not going to implement to start with :
- Publishing start/end dates
- csv/pdf views
- custom list links
- element js events
- column calculations
- connections
- schedule
- packages
- list joins
- Every group treated as a join (we wont implement an interface for this yet but it would simplyfy things when we do add it in
- Groups would be re-usable and sharable between users.
- Reconsider if popups are the best display medium for additonal info when rendering in mobile or in an iframe.
So possible record structure might be:
// Main form record
{
id: 1
datetime: 'yyyy-mm-dd',
}
// Group (id = 1) records
{
id: 1
parent_id: 1 // ref to form.id
label: 'Warks',
checkbox: {'value1': true, 'value3': true},
}
Elements could be repeatable if they're arrays:
// Group (id = 1) records
{
id: 1
parent_id: 1 // ref to form.id
label: ['Warks'],
checkbox: [{'value1': true, 'value3': true}]
}
''URI Structure''
Itegrate the idea of apps from the start and use REST style urls:
View a app called shop:
View shop products:
http://site.com/shop/products/
View a product
http://site.com/shop/products/the-lord-of-the-rings/ (would require the slug to be unique)
Each page can define its main Global layout?
Might want to use
https://github.com/oJshua/mongoose-forms as a starting point - nice way to map mongoose models onto Form classes.
Ember.js with handlebars for front end display / rendering