namlook / ember-eureka

Ember client for Eureka applications
MIT License
3 stars 0 forks source link

Split view configurations #36

Closed namlook closed 10 years ago

namlook commented 10 years ago

Group all view's setting into on section so its easier to configure:

{
  BlogPost: {
    views: {
      index: {
        populate: 2,
        sortBy: [...],
        filters: [...],
        search: {....}
      },
      display: {
        fieldset: [...],
        actions: [...]
      },
      new: {
        fieldsets: [...]
      },
      edit: {
         fieldsets: [...],
      }
    },
    schema: {...}
  }
}

This is how a model should look like:

{
        ModelName: {
            label: {
                en: {singular: 'Model', plural: 'Models'},
                fr: {singular: 'Modèle', plural: 'Modèles'}
            },
            description: {
                en: 'this is a good model',
                fr: 'c'est un bon modèle
            },
            aliases: {
                title: 'title',
                description: 'description'
            },
            i18n: {
                i18nField: 'lang',
                queryOnCurrentLang: true
            },
            static: false,
            hidden: false,
            views: {
                index: {
                    limit: 10,
                    populate: 1,
                    search: {
                        field: 'title',
                        placeholder: {
                            en: 'search a model',
                            fr: 'rechercher un modèle'
                        }
                    }
                    sortBy: {
                        label: {en: 'sort by', fr: 'trier par'},
                        orders: [
                            {label: {en: 'title (asc)', fr: 'titre (asc)'}, order: 'title' },
                            {label: {en: 'title (desc)', fr: 'titre (desc)'}, order: '-title' }
                        ]
                    },
                    filters: [
                        {
                            route: 'model-name.favorite',
                            label: {en: 'Favorites', fr: 'Favoris'},
                            icon: 'glyphicon glyphicon-ok'}
                        }
                    ]
                },
                display: {
                    populate: 2,
                    fielsets: [
                        {
                            label: {en: 'First fieldset', fr: 'Premier group'},
                            fields: ['title', 'favorite']
                        }
                    ],
                    actions: [
                        {name: 'delete', label: {en: 'delete', fr: 'supprimer'}, secondary: false},
                        {name: 'advancedAction', label: {en: 'advanced action', fr: 'action avancée'}, secondary: true},
                        {
                            name: 'toggleAction',
                            field: 'favorite',
                            toggle: {
                                false: {label: {en: 'add to favorites', fr: 'ajouter au favoris', icon: 'glyphicon glyphicon-unchecked'},
                                true:  {label: {en: 'uncheck boolean', fr: 'enlever des favoris', icon: 'glyphicon glyphicon-check'},
                            }
                        }
                    ],
                    relations: [
                        {field: '', label: {en: '', fr: ''}, icon: ''},
                        {field: '', label: {en: '', fr: ''}, icon: ''}
                    ],
                    geolocation: {
                        map: true,
                        field: 'geolocation'
                    }
                }
                new: {
                    fielsets: [
                        {
                            label: {en: 'First fieldset', fr: 'Premier group'},
                            fields: ['title', 'favorite']
                        }
                    ],
                }
                edit: {
                    fielsets: [
                        {
                            label: {en: 'First fieldset', fr: 'Premier group'},
                            fields: ['title', 'favorite']
                        }
                    ],
                }
            },
            schema: {
                title: {
                    type: 'string',
                    label: {
                        fr: 'titre'
                    }
                },
                favorite: {
                    type: 'boolean',
                    label: {
                        en: {
                            plural: 'favorites'
                        },
                        fr: {
                            singular: 'favoris',
                            plural: 'favoris'
                        }
                    }
                },
                lang: {
                    type: 'string'
                },
                relation: {
                    type: 'OtherModel',
                    reverse: {
                        name: 'modelName',
                        label: {
                            en: {
                                single: 'model',
                                plural: 'models'
                            },
                            fr: {
                                single: 'modèle',
                                plural: 'modèles'
                            }
                        }
                    },
                    suggest: {
                        field: 'otherTitle',
                        sortBy: '-otherField'
                        // title: {template: "erf: {{title}}"}
                    }
                }
            }
        }
    }