1.0.0 • Published 7 years ago

md-crud v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

Angular material crud

Permite crear un cotrol CRUD simple o personalizado sobre un RESTful Api utilizando $http.

Demo

Aplicación Demo

Dependecias

{
    "angular": "~1.5.*",
    "angular-animate": "~1.5.*",
    "angular-aria": "~1.5.*",
    "angular-messages": "~1.5.*",
    "angular-sanitize": "~1.5.*",
    "angular-material": "^1.1.3",
    "angular-material-data-table": "^0.10.10",
    "mdPickers": "^0.7.5", //Opcional (para los tipos 'time' y 'datetaime')
    "moment": "^2.17.1" //Requerido por mdPickers
}

CDN

https://cdn.rawgit.com/ClassHP/md-crud/1.0.0/dist/md-crud.min.js

npm

$ npm install md-crud --save

bower

$ bower install md-crud --save

Configuración del CRUD

$scope.crudOptions = {
    entity: 'Books',
    id: 'ID',
    fields: [
        {
            name: 'Title',
            label: 'Title',
            type: 'text',
            required: true
        },
        {
            name: 'type',
            label: 'Type',
            type: 'select',
            columnHidden: true,
            detailHidden: true,
            data: [
                { value: 'text', text: 'Text' },
                { value: 'integer', text: 'Integer' },
                { value: 'decimal', text: 'Decimal' }
            ],
            flex: '33'
        },
        {
            name: 'PageCount',
            label: 'Page count',
            type: function(item) { return item.type || 'text'; },
            required: true,
            flex: '33'
        },
        {
            name: 'PublishDate',
            label: 'Publish date',
            type: 'datetime',
            required: true,
            columnTemplate: '<strong>{{row.PublishDate | date:"short"}}</strong>',
            flex: '33'
        },
        {
            name: 'Description',
            label: 'Description',
            type: 'textarea',
            required: true
        },
        {
            name: 'Excerpt',
            label: 'Excerpt',
            type: 'textarea',
            required: true,
            columnHidden: true,
        }
    ]
}; 

Server side

$scope.crudOptions2 = {
    entity: 'characters',
    id: 'id',
    noEdit: true,
    noDelete: true,
    noCreate: true,
    noDetail: false,
    noSearch: false,
    fields: [
        {
            name: 'thumbnail',
            label: 'Image',
            type: 'template',
            columnTemplate: '<image src="{{row.thumbnail.path + "/standard_medium." + row.thumbnail.extension}}" style="max-height:90px"></image>'
        },
        {
            name: 'name',
            label: 'Name',
            type: 'text'
        },
        {
            name: 'description',
            label: 'Description',
            type: 'text'
        },
    ],
    serverSide: {
        searchParam: 'nameStartsWith',
        offsetParam: 'offset',
        limitParam: 'limit',
    },
    http: {
        rootApi: 'https://gateway.marvel.com:443/v1/public',
        params: {
            apikey: 'c3c80a056a45ea887f1c77c2525e66a5'
        },
        functionData: function (response, resolve, reject, method) {
            if(method == 'getById') {
                resolve({ 
                    data: response.data.data.results[0]
                });
            }
            else {
                resolve({ 
                    data: response.data.data.results,
                    total: response.data.data.total
                });
            }
        }
    },
    form: {
        onEdit: function (item) {
            item.aditionalValue = 1;
        }
    }
};

Properties

ParamsTypeDetails
optionsObjectObjeto de configuración.
onLoadFunctionEvento que se ejecuta al terminar de cargar la directiva.
rowsArrayArreglo de filas a mostar en CRUDs offlines.

Options

ParamsTypeDetails
entitystringNombre de la entidad o tabla a consultar en el RESTfull Api.
idstringId de la entidad o tabla.
noEditBooleanDesabilita la edición. Valor por defecto: false.
noDeleteBooleanDesabilita la eliminación. Valor por defecto: false.
noCreateBooleanDesabilita la creación. Valor por defecto: false.
noDetailBooleanDesabilita la visualización de detalles. Valor por defecto: false.
noSearchBooleanDesabilita la busqueda. Valor por defecto: false.
fieldsArrayArreglo de campos a usar en el CRUD.
serverSideBoolean, ObjectHabilita el paginado y busqueda del lado del servidor. Valor por defecto: false.
httpObjectConfiguración de las consultas al RESTfull Api.
formTypeStringTipo de formulario. Posibles valores: 'inline', 'window'. Valor por defecto: 'inline'.
deleteConfirmBooleanIndica si se solicitará conformación al intentar eliminar un registro. Valor por defecto: true.
searchTextStringTexto a buscar por defecto.
searchDelayIntegerTiempo en miliseguntos de retraso en escribir en el campo de busqueda.
tableLimitIntegerCantidad de filas por paginas a mostrar en la tabla.
limitOptionsArray(Integer)Opciones para elegir la cantidad de filas a mostrar por pagina. Valor por defecto: 10, 20, 30.
editOnSelectBooleanDesactiva la funcionalidad de detalle y al presionar la fila abre el formulario de editar.
noDetailButtonsBooleanOculta los botones de Aceptar y Cancelar del formulario de detalle.
noButtonsBooleanOculta los botones de Aceptar y Cancelar del formulario de detalle y editar.
offlineBooleanDesabilita todas las funcionalidades de carga y actualización a travez de $http, utiliza como modelo de datos la propiedad 'rows' en la directiva.
noPaginateBooleanDesabilita la paginación.
windowFlexStringAplica la propiedad flex para aujustar el tamaño de las ventanas de edición y detalle.

Options -> fields

ParamsTypeDetails
nameStringNombre del campo.
labelStringTexto a mostrar como cabecera en la columna de la tabla y como etiqueta en el formulario.
typeString, FunctionTipo de campo. Posibles valores: 'text', 'textarea', 'email', 'integer', 'decimal', 'boolean', 'select', 'date', 'time', 'datetime', 'label', 'button'.
multipleBooleanIndica si el tipo 'select' sera se selección multiple.
columnHiddenBooleanOculta el campo en la tabla.
createHiddenBooleanOculta el formulario al crear.
editHiddenBooleanOculta el campo en el formulario al editar.
detailHiddenBooleanOculta el formulario al ver el detalle.
templateUrlStringUrl de la plantilla a utilizar para personalizar el formulario.
templateStringTemplate HTML con el formato a utilizar en el formulario.
columnTemplateStringPlantilla a utilizar para mostrar el campo en la tabla.
readonlyBooleanColoca el campo en solo lectura o deshabilitado.
minlengthIntegerDefine la cantidad mínima de caracteres para los campos de texto.
maxlengthIntegerDefine la cantidad máxima de caracteres para los campos de texto.
patternStringFormato en expreción regular para los campos de texto.
minIntegerDefine el valor mínimo para los campos numericos.
maxIntegerDefine el valor máximo para los campos numericos.
stepIntegerDefine el valor de salto para campos numericos.
minDateDateDefine la fecha menor a ingresar en el campo 'date'.
maxDateDateDefine la fecha mayor a ingresar en el campo 'date'.
dataArray, FunctionFunción que devuelve los datos a usar en el tipo 'select'.
valueStringValor a usar en el tipo 'select'.
textStringTexto a usar en el tipo 'select'.
requiredBooleanIndica si el campo es requerido.
flexStringPersonaliza el tamaño y posición del campo en el formulario.
messagePatternStringPersonaliza el mensaje a mostrar cuando no se cumpla la expresion regular.
rowsIntegerCantidad de filas iniciales en el formulatio del tipo 'textarea'.
columnHeaderStringTexto de la cabecera de la columna en la tabla. Por defecto es igual al campo "label".
styleCellObjectEstilo CSS de la celda en la tabla.
hideErrorMsgBooleanOculta el espacio reservado para los mensajes de error.

Options -> form

ParamsTypeDetails
onOpenFunctionSe ejecuta cuando se abre el formulario.
onEditFunctionSe ejecuta cuando se abre el formulario para editar luego de obtener el registro actualizado.
onCancelFunctionSe ejecuta al cancelar el formulario.
onSubmitFunctionSe ejecuta antes de enviar los datos del formulario.
onSusscesFunctionSe ejecuta cuando la respuesta del formulario es correcta.

Options -> http

ParamsTypeDefault valueDetails
rootApiString'/api'Configura la ruta inicial del REST Api a consultar.
methodGetString'GET'Metodo HTTP a utilizar para la consultas.
methodPostString'POST'Metodo HTTP a utilizar en la creación.
methodPatchString'PATCH'Metodo HTTP a utilizar en la edición.
methodDeleteString'DELETE'Metodo HTTP a utilizar en la eliminación.
urlGetString (template)'{{rootApi}}/{{entity}}'Url para obtener los datos de la tabla.
urlGetByIdString (template)'{{rootApi}}/{{entity}}/{{id}}'Url para obtener los datos de edición o detalle.
urlPostString (template)'{{rootApi}}/{{entity}}'Url de la creación.
urlPatchString (template)'{{rootApi}}/{{entity}}/{{id}}'Url de la edición.
urlDeleteString (template)'{{rootApi}}/{{entity}}/{{id}}'Url de la eliminación.
functionHttpFunctionfunction(options, method) { ... }Función usada para obtener datos desde el REST Api.
functionDataFunctionfunction(response, resolve, reject, method) { resolve(response) }Función para tratar los datos devueltos por el REST Api.

Directivas

<md-crud options="options" onLoad="onLoad" rows="rows"></md-crud>

<md-crud-form options="options" ng-model="row" on-open="onOpen" on-edit="onEdit" on-detail="onDetail" 
    on-cancel="onCancel" on-sussces="onSussces" on-submit="onSubmit" editable="true" model-copy="true">
</md-crud-form>

<md-crud-form-base flex layout="row" layout-wrap options="options" ng-model="item" form-type="edit" 
    editable="true" form-crud="formCrud" is-loading="false">
</md-crud-form-base>

Configuración global

angular.module('app').run(['mdCrudService', function (mdCrudService) {    
    mdCrudService.setDefaultOptions({
        rootApi: '/api',
        methodGet: 'GET',
        methodPost: 'POST',
        methodPatch: 'PATCH',
        methodDelete: 'DELETE',
        urlGet: '{{rootApi}}/{{entity}}',
        urlGetById: '{{rootApi}}/{{entity}}/{{id}}',
        urlPost: '{{rootApi}}/{{entity}}',
        urlPatch: '{{rootApi}}/{{entity}}/{{id}}',
        urlDelete: '{{rootApi}}/{{entity}}/{{id}}',
        functionHttp: function(options, method) { return $q(...) },
        functionData: function(response, resolve, reject, method) { resolve(response) },
        formType: 'inline',
        deleteConfirm: true,
        tableLimit: 10,
        limitOptions: [10, 20, 30],
        translate: function(text) { return text; },
        autoRefresh: true,
        serverSide: {
            pageParam: 'page',
            offsetParam: 'offset',
            limitParam: 'limit',
            searchParam: 'search',
            dataResponse: 'data',
            totalResponse: 'total'
        }
    });
    mdCrudService.setDefaultOptions({
        editTitle: 'Edit',
        detailTitle: 'Detail',
        createTitle: 'Create',
        deleteError: 'Error while trying to delete row',
        deleteErrorTitle: 'Error deleting',
        deleteConfirmTitle: 'Delete',
        deleteConfirmMessage: 'Are you sure you want to delete the row?',
        tablePaginationPage: 'Page',
        tablePaginationRowsPerPage: 'Rows per page:',
        tablePaginationOf: 'of',
        createOption: 'Create',
        btnConfirmOk: 'Yes',
        btnConfirmCancel: 'No',
        btnAlertOk: 'Ok',
        generalErrorTitle: 'Error',
        messageRequired: 'Required',
        messageMinlength: 'Min length',
        messageMaxlength: 'Max length',
        messagePattern: 'Invalid input format.',
        messageMin: 'Min value',
        messageMax: 'Max value',
        messageMimetype: 'Invalid file type.',
        messageValid: 'Invalid input format.',
        messageMindate: 'Min date',
        messageMaxdate: 'Max date',
        formCancel: 'Cancel',
        formSubmit: 'Save'
    });
}]);