'\r\n }\r\n }\r\n })\r\n\r\n // //Configuracion general\r\n // .state('flota.configuracion.general', {\r\n // url: '/general',\r\n // data: { tabTitle: 'Configuración general', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'GeneralConfigController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Talleres - Listado talleres\r\n // .state('flota.configuracion.listadoTalleres', {\r\n // url: '/talleres',\r\n // data: { tabTitle: 'Talleres', tabView: 'configuracion', icon: 'icon-025' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'WorkshopListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/talleres/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Talleres - Nuevo taller\r\n // .state('flota.configuracion.nuevoTaller', {\r\n // url: '/nuevoTaller',\r\n // data: { tabTitle: 'Nuevo taller', tabView: 'configuracion', icon: 'icon-025' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'WorkshopFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/talleres/nuevo_taller.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion - Talleres - Editar taller\r\n // .state('flota.configuracion.editarTaller', {\r\n // url: '/editarTaller?id',\r\n // data: { tabTitle: 'Editar taller', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'WorkshopFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/talleres/nuevo_taller.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Averías\r\n // .state('flota.configuracion.listadoAverias', {\r\n // url: '/averias',\r\n // data: { tabTitle: 'Averías', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'DamageListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/averias/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Averías - Nueva avería\r\n // .state('flota.configuracion.nuevaAveria', {\r\n // url: '/nuevaAveria',\r\n // data: { tabTitle: 'Nueva averia', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'DamageFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/averias/nueva_averia.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Averías - Editar avería\r\n // .state('flota.configuracion.editarAveria', {\r\n // url: '/editarAveria?id',\r\n // data: { tabTitle: 'Editar averia', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'DamageFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/averias/nueva_averia.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Colores\r\n // .state('flota.configuracion.listadoColores', {\r\n // url: '/colores',\r\n // data: { tabTitle: 'Colores', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ColorsListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/colores/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Colores - Nuevo color\r\n // .state('flota.configuracion.nuevoColor', {\r\n // url: '/nuevoColor',\r\n // data: { tabTitle: 'Nuevo color', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar', preload: null },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ColorFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/colores/nuevo_color.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion - Colores - Editar color\r\n // .state('flota.configuracion.editarColor', {\r\n // url: '/editarColor?id',\r\n // data: { tabTitle: 'Editar color', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ColorFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/colores/nuevo_color.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Contadores\r\n // .state('flota.configuracion.listadoContadores', {\r\n // url: '/contadores',\r\n // data: { tabTitle: 'Contadores', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'CounterListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/contadores/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Contadores - Nuevo contador\r\n // .state('flota.configuracion.nuevoContador', {\r\n // url: '/nuevoContador',\r\n // data: { tabTitle: 'Nuevo contador', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'CounterFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/contadores/nuevo_contador.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Listado de estados de operario\r\n // .state('flota.configuracion.listadoEstadosOperario', {\r\n // url: '/listadoEstadosOperario',\r\n // data: { tabTitle: 'Estados de operario', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'StateListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/estados/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Listado de estados de operario - Nuevo estado de operario\r\n // .state('flota.configuracion.nuevoEstado', {\r\n // url: '/nuevoEstado',\r\n // data: { tabTitle: 'Nuevo estado de operario', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'StateFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/estados/nuevo_estado.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Listado de estados de operario - Editar estado de operario\r\n // .state('flota.configuracion.editarEstado', {\r\n // url: '/editarEstado?id',\r\n // data: { tabTitle: 'Editar estado de operario', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'StateFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/estados/nuevo_estado.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Grupos - Listado grupos\r\n // .state('flota.configuracion.listadoGrupos', {\r\n // url: '/grupos',\r\n // data: { tabTitle: 'Grupos', tabView: 'configuracion', icon: 'icon-025' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'GroupsListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/grupos/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Grupos - Nuevo grupo\r\n // .state('flota.configuracion.nuevoGrupo', {\r\n // url: '/nuevoGrupo',\r\n // data: { tabTitle: 'Nuevo grupo', tabView: 'configuracion', icon: 'icon-025' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'GroupsFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/grupos/nuevo_grupo.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion - Grupos - Editar grupo\r\n // .state('flota.configuracion.editarGrupo', {\r\n // url: '/editarGrupo?id',\r\n // data: { tabTitle: 'Editar grupo', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'GroupsFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/grupos/nuevo_grupo.html'\r\n // }\r\n // }\r\n // })\r\n\r\n\r\n // //Configuracion: Tipos de mantenimiento\r\n // .state('flota.configuracion.tiposMantenimientos', {\r\n // url: '/tiposMantenimientos',\r\n // data: { tabTitle: 'Tipos de mantenimiento', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'MaintenanceTypeListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/mantenimiento/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Tipos de mantenimiento - Nuevo tipo de mantenimiento\r\n // .state('flota.configuracion.nuevoTipoMantenimiento', {\r\n // url: '/nuevoTipoMantenimiento',\r\n // data: { tabTitle: 'Nuevo tipo de mantenimiento', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'MaintenanceTypeFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/mantenimiento/nuevo_tipo_mantenimiento.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion - Tipos de mantenimiento - Editar Tipo de mantenimiento\r\n // .state('flota.configuracion.editarTipoMantenimiento', {\r\n // url: '/editarTipoMantenimiento?id',\r\n // data: { tabTitle: 'Editar tipo mantenimiento', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'MaintenanceTypeFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/mantenimiento/nuevo_tipo_mantenimiento.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Marcas\r\n // .state('flota.configuracion.listadoMarcas', {\r\n // url: '/marcas',\r\n // data: { tabTitle: 'Marcas', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'BrandListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/marcas/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Marcas - Nueva marca\r\n // .state('flota.configuracion.nuevaMarca', {\r\n // url: '/nuevaMarca',\r\n // data: { tabTitle: 'Nueva marca', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'BrandFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/marcas/nueva_marca.html'\r\n // }\r\n // }\r\n // })\r\n\r\n\r\n // //Configuracion: Base\r\n // .state('flota.configuracion.listadoBases', {\r\n // url: '/bases',\r\n // data: { tabTitle: 'Bases', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'BaseListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/bases/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Base - Nueva Base\r\n // .state('flota.configuracion.nuevaBase', {\r\n // url: '/nuevaBase',\r\n // data: { tabTitle: 'Nueva base', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'BaseFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/bases/nueva_base.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Base - Editar Base\r\n // .state('flota.configuracion.editarBase', {\r\n // url: '/editarBase?id',\r\n // data: { tabTitle: 'Editar Base', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'BaseFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/bases/nueva_base.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Productos - Listado productos\r\n // .state('flota.configuracion.listadoproductos', {\r\n // url: '/productos',\r\n // data: { tabTitle: 'Listado de productos', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ProductoListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/productos/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Productos - Nuevo productos\r\n // .state('flota.configuracion.nuevoProducto', {\r\n // url: '/nuevoProducto',\r\n // data: { tabTitle: 'Nuevo producto', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ProductoFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/productos/nuevo_producto.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Productos - Nuevo productos\r\n // .state('flota.configuracion.editarProducto', {\r\n // url: '/editarProducto?id',\r\n // data: { tabTitle: 'Editar producto', tabView: 'configuracion', icon: 'icon-019' },\r\n // params: { accion: 'guardarCerrar' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ProductoFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/productos/nuevo_producto.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Mensajes predefinidos de chat\r\n // .state('flota.configuracion.listadoMensajes', {\r\n // url: '/listadoMensajes',\r\n // data: { tabTitle: 'Mensajes predefinidos', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'MessageListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/mensajes/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Mensajes predefinidos de chat - Nuevo mensaje predefinido de chat\r\n // .state('flota.configuracion.nuevoMensaje', {\r\n // url: '/nuevoMensaje',\r\n // data: { tabTitle: 'Nuevo mensaje predefinido', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'MessageFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/mensajes/nuevo_mensaje.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Mensajes predefinidos de chat - Editar mensaje predefinido de chat\r\n // .state('flota.configuracion.editarMensaje', {\r\n // url: '/editarMensaje?id',\r\n // data: { tabTitle: 'Editar mensaje predefinido', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'MessageFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/mensajes/nuevo_mensaje.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Modelo\r\n // .state('flota.configuracion.listadoModelos', {\r\n // url: '/modelos',\r\n // data: { tabTitle: 'Modelos', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ModelListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/modelos/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Modelo - Nuevo modelo\r\n // .state('flota.configuracion.nuevoModelo', {\r\n // url: '/nuevoModelo',\r\n // data: { tabTitle: 'Nuevo modelo', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'ModelFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/modelos/nuevo_modelo.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Roles\r\n // .state('flota.configuracion.listadoRoles', {\r\n // url: '/roles',\r\n // data: { tabTitle: 'Roles', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'RoleListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/roles/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Roles - Nuevo rol\r\n // .state('flota.configuracion.nuevoRol', {\r\n // url: '/nuevoRol',\r\n // data: { tabTitle: 'Nuevo rol', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'RoleFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/roles/nuevo_rol.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Listado tipos\r\n // .state('flota.configuracion.listadoTipoOrden', {\r\n // url: '/tipoOrden',\r\n // data: { tabTitle: 'Listado de tipos de órdenes', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'OrderTypeListController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/tipos/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Listado tipos - Nuevo tipo de orden\r\n // .state('flota.configuracion.nuevoTipoOrden', {\r\n // url: '/nuevoTipoOrden',\r\n // data: { tabTitle: 'Nuevo tipo de orden', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'OrderTypeFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/tipos/nuevo_tipo.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // //Configuracion: Listado tipos - Editar tipo de orden\r\n // .state('flota.configuracion.editarTipoOrden', {\r\n // url: '/editarTipoOrden?id',\r\n // data: { tabTitle: 'Editar tipo de orden', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'OrderTypeFormController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/tipos/nuevo_tipo.html'\r\n // }\r\n // }\r\n // })\r\n\r\n //Configuracion: Usuarios\r\n .state('flota.configuracion.listadoUsuarios', {\r\n url: '/listadoUsuarios',\r\n data: { tabTitle: 'Usuarios', tabView: 'configuracion', icon: 'icon-019' },\r\n views: {\r\n 'configuracionContainer': {\r\n controller: 'UserListController',\r\n controllerAs: 'vm',\r\n templateUrl: 'app/views/flota/configuracion/usuarios/default.html'\r\n }\r\n }\r\n })\r\n\r\n //Configuracion: Usuarios - Nuevo usuario\r\n .state('flota.configuracion.nuevoUsuario', {\r\n url: '/nuevoUsuario',\r\n data: { tabTitle: 'Nuevo usuario', tabView: 'configuracion', icon: 'icon-019' },\r\n views: {\r\n 'configuracionContainer': {\r\n controller: 'UserFormController',\r\n controllerAs: 'vm',\r\n templateUrl: 'app/views/flota/configuracion/usuarios/nuevo_usuario.html'\r\n }\r\n }\r\n })\r\n\r\n //Chóferes - Editar usuario\r\n .state('flota.configuracion.editarUsuario', {\r\n url: '/editarUsuario?id',\r\n data: { tabTitle: 'Editar usuario', tabView: 'configuracion', icon: 'icon-019' },\r\n views: {\r\n 'configuracionContainer': {\r\n controller: 'UserFormController',\r\n controllerAs: 'vm',\r\n templateUrl: 'app/views/flota/configuracion/usuarios/nuevo_usuario.html'\r\n }\r\n }\r\n })\r\n\r\n // //Configuracion: Asignación de alarmas\r\n // .state('flota.configuracion.asignacion', {\r\n // url: '/alarmas',\r\n // data: { tabTitle: 'Asignación de alarmas', tabView: 'configuracion', icon: 'icon-019' },\r\n // views: {\r\n // 'configuracionContainer': {\r\n // controller: 'AlarmsAsignController',\r\n // controllerAs: 'vm',\r\n // templateUrl: 'app/views/flota/configuracion/alarmas/default.html'\r\n // }\r\n // }\r\n // })\r\n\r\n // Search\r\n .state('flota.search', {\r\n url: '/search',\r\n abstract: true,\r\n sticky: true,\r\n //deepStateRedirect: true,\r\n views: {\r\n 'search': {\r\n template: '
'\r\n }\r\n }\r\n })\r\n .state('flota.search.results', {\r\n url: '/results',\r\n data: { tabTitle: 'Resultados', tabView: 'search', icon: 'icon-056' },\r\n params: { q: '' },\r\n views: {\r\n 'searchContainer': {\r\n controller: 'SearchController',\r\n controllerAs: 'vm',\r\n templateUrl: 'app/views/flota/search/default.html'\r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n //$urlRouterProvider.deferIntercept(); //Needed to preload the fixed states\r\n\r\n $httpProvider.interceptors.push('httpInterceptor');\r\n\r\n $urlRouterProvider\r\n .when('', 'flota/misfichajes')\r\n .when('/flota', 'flota/misfichajes');\r\n\r\n // $urlRouterProvider\r\n // .when('', '/flota/mapa')\r\n // .when('/flota', '/flota/mapa');\r\n\r\n $urlRouterProvider.otherwise('/flota/404');\r\n\r\n }\r\n})();\r\n","(function () {\r\n //TODO:RESTYLE\r\n angular\r\n .module('invesfleet')\r\n .constant('routes', (function () {\r\n return {\r\n ordenesListado: '/flota/ordenes/listado'\r\n };\r\n }))\r\n .constant('constants', (function () {\r\n\r\n var constants = {\r\n ASEGURADORA_ID_ASSITUR: 0,\r\n ASEGURADORA_ID_RACC: 1,\r\n ASEGURADORA_ID_GENERIC: 99\r\n };\r\n\r\n return constants;\r\n })())\r\n .constant('common', (function () {\r\n\r\n var common = {\r\n\r\n changeNulltoBlank(obj) {\r\n for (var key in obj) {\r\n if (this.isNullOrUndefined(obj[key])) {\r\n obj[key] = '';\r\n }\r\n }\r\n },\r\n log(obj) {\r\n console.log(obj);\r\n return false;\r\n },\r\n isNullOrUndefined(obj) {\r\n return obj === null || typeof obj === 'undefined';\r\n },\r\n uuidv4() {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n )\r\n },\r\n formatDateFromTimestamp(timestamp) {\r\n return moment.unix(timestamp).format(\"DD/MM/YYYY\");\r\n },\r\n defaultDateRangePickerOptions: { // NOTE: usar $.extend\r\n fromDate: moment().subtract(7, \"days\"),\r\n toDate: moment(),\r\n options: {\r\n locale: {\r\n applyLabel: \"Aplicar\",\r\n fromLabel: \"Desde\",\r\n toLabel: \"hasta\",\r\n format: 'DD/MM/YYYY',\r\n separator: ' - ',\r\n applyLabel: 'Aplicar',\r\n cancelLabel: 'Cancelar',\r\n weekLabel: 'Sem',\r\n customRangeLabel: 'Personalizar',\r\n daysOfWeek: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sá\"],\r\n monthNames: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n },\r\n buttonClasses: '',\r\n applyClass: 'btn-blue',\r\n cancelClass: 'btn-red-invert',\r\n opens: 'left',\r\n alwaysShowCalendars: true,\r\n showDropdowns: true,\r\n ranges: {\r\n 'Hoy': [moment(), moment()],\r\n 'Ayer': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\r\n 'Esta semana': [moment().startOf('isoWeek'), moment()],\r\n 'Últimos 7 días': [moment().subtract(7, 'days'), moment()],\r\n 'La semana pasada': [moment().subtract(7, 'days').startOf('isoWeek'), moment().subtract(7, 'days').endOf('isoWeek')],\r\n 'Este mes': [moment().startOf('month'), moment()],\r\n 'Últimos 30 días': [moment().subtract(30, 'days'), moment()],\r\n 'El mes pasado': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],\r\n 'Este año': [moment().startOf('year'), moment()],\r\n 'Últimos 12 meses': [moment().subtract(1, 'years'), moment()]\r\n }\r\n }\r\n },\r\n\r\n timeFormatFilter(seconds) {\r\n\r\n if (seconds === null) {\r\n return '';\r\n }\r\n\r\n var neg = seconds < 0;\r\n seconds = Math.abs(seconds);\r\n var days = Math.floor(seconds / (3600 * 24));\r\n seconds = seconds - (days * (3600 * 24));\r\n var hours = Math.floor(seconds / 3600);\r\n seconds = seconds - hours * 3600;\r\n var minutes = Math.floor(seconds / 60);\r\n seconds = seconds - minutes * 60;\r\n var sec = Math.floor(seconds);\r\n\r\n var result = neg ? '-' : '';\r\n result += days ? days.toString() + 'd ' : '';\r\n if (days < 10) {\r\n result += hours ? hours.toString() + 'h ' : '';\r\n }\r\n if (!days) {\r\n result += minutes ? minutes.toString() + 'm ' : '';\r\n if (!result) {\r\n result += '<1m';\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n };\r\n\r\n return common;\r\n })())\r\n .constant('endPoints', (function () {\r\n\r\n var baseURI = environment.baseUrl;\r\n var zohoURI = environment.zohoUrl; \r\n var legacyBaseURI = environment.legacyBaseUrl;\r\n var messagingBaseURI = environment.messagingBaseUrl;\r\n\r\n var endPoints = {\r\n base: baseURI,\r\n messagingBase: messagingBaseURI,\r\n messaging: {\r\n notifications: messagingBaseURI + '/notifications'\r\n },\r\n authorization: {\r\n getToken: baseURI + '/connect/token',\r\n userInfo: baseURI + '/connect/userinfo',\r\n },\r\n fleet: {\r\n getMapData: baseURI + '/api/fleet/mapdummy',\r\n getActiveOrderById: baseURI + '/api/fleet/GetActiveOrderById',\r\n getAssignableOperators: baseURI + '/api/fleet/GetOperatorsForOrder',\r\n getRecData: baseURI + '/api/fleet/GetRecorrido',\r\n getActiveOrders: baseURI + '/api/fleet/GetActiveOrders',\r\n },\r\n orders: {\r\n getOrders: baseURI + '/api/orders/',\r\n getScheduledOrders: baseURI + '/api/orders/scheduled',\r\n activateScheduledOrder: baseURI + '/api/orders/activatescheduledorder',\r\n activateScheduledOrders: baseURI + '/api/orders/activatescheduledorders',\r\n getOrdenImagenes: baseURI + '/api/orders/GetOrderImages',\r\n getOrdenLineas: baseURI + '/api/orders/GetOrdenLineas',\r\n getLineasImpuesto: baseURI + '/api/orders/GetLineasImpuesto',\r\n addOrdenLinea: baseURI + '/api/orders/AddOrdenLinea',\r\n removeOrdenLinea: baseURI + '/api/orders/RemoveOrdenLinea',\r\n assignToOperator: baseURI + '/api/fleet/AssignOperatorToOrder',\r\n changeAssignmentState: legacyBaseURI + '/ChangeOrderAssignState',\r\n updateAssignmentState: baseURI + '/api/orders/ChangeAssigmentState',\r\n changeState: legacyBaseURI + '/ChangeOrderState',\r\n acknowledgeDelay: baseURI + '/api/orders/AcknowledgeDelay',\r\n retarifar: legacyBaseURI + '/retarifar',\r\n calcular: legacyBaseURI + '/calcular',\r\n removeOrders: baseURI + '/api/orders/Delete',\r\n getLogPlanner: baseURI + '/api/orders/GetLogPlannerOrders',\r\n getLogPlannerDiv: baseURI + '/api/orders/GetLogPlannerOrdersDiv',\r\n splitOrder: baseURI + '/api/orders/SplitOrder',\r\n joinOrder: baseURI + '/api/orders/JoinOrder',\r\n\t\t\t\t\tgetNewLogisticsCount: baseURI + '/api/orders/GetNewLogisticsCount',\r\n\t\t\t\t\tgetAllActiveLogistic: baseURI + '/api/orders/getAllActiveLogistic'\r\n },\r\n support: {\r\n getInsurerConnectionState: baseURI + '/api/support/GetInsurerCompanyConnections'\r\n },\r\n mantenimientoFlotas: {\r\n getMantenimientoFlotasByFlotaId: baseURI + '/api/mantenimientoflota/',\r\n getAll: baseURI + '/api/mantenimientoflota/getAll'\r\n },\r\n genericData: {\r\n getGenericData: baseURI + '/api/genericData/'\r\n },\r\n preferences: {\r\n getCompanyPrefs: baseURI + '/api/preferences/companyPreferences',\r\n operatorSates: baseURI + '/api/preferences/operatorSates',\r\n getUserPrefs: baseURI + '/api/preferences/userPreferences'\r\n },\r\n chat: {\r\n getFleetMessages: baseURI + '/api/chat/GetFleetMessages',\r\n getFleetUpdates: baseURI + '/api/chat/GetFleetUpdates',\r\n ackReceived: baseURI + '/api/chat/AckReception',\r\n markAsRead: baseURI + '/api/chat/MarkAsRead',\r\n sendMessage: baseURI + '/api/chat/SendFleetMessage'\r\n },\r\n report: {\r\n getReport: baseURI + '/api/report/',\r\n getReportList: baseURI + '/api/report/getReportList'\r\n },\r\n entities: {\r\n stays: baseURI + '/api/stay/',\r\n clients: baseURI + '/api/client/',\r\n get: baseURI + '/api/client/GetEntities',\r\n },\r\n drivers: {\r\n getAllDrivers: baseURI + '/api/driver/getAll',\r\n getAllDriversDadosDeBaja: baseURI + '/api/driver/getAllDadosDeBaja',\r\n addDrivers: baseURI + '/api/driver/add',\r\n getDriver: baseURI + '/api/driver/get',\r\n deleteById: baseURI + '/api/driver/deleteById',\r\n },\r\n \r\n user: {\r\n getAllUsers: baseURI + '/api/user/getAll',\r\n getUsuariosRoles: baseURI + '/api/user/getUsuariosRoles',\r\n getUser: baseURI + '/api/user/getUser',\r\n getUserCustomInfo: baseURI + '/api/user/getUserCustomInfo',\r\n getAllUsuariosDadosDeBaja: baseURI + '/api/user/getAllDadosDeBaja',\r\n deleteById: baseURI + '/api/user/deleteById',\r\n storeUserData: baseURI + '/api/user/storeUserData',\r\n saveConfig: baseURI + '/api/user/SaveConfig',\r\n add: baseURI + '/api/user/Add'\r\n },\r\n vehicles: {\r\n getAllVehicles: baseURI + '/api/vehicle/getAll',\r\n getAllVehiclesDadosDeBaja: baseURI + '/api/vehicle/getAllDadosDeBaja',\r\n deleteById: baseURI + '/api/vehicle/deleteById',\r\n getFlota: baseURI + '/api/vehicle/getFlota',\r\n addVehicles: baseURI + '/api/vehicle/add',\r\n },\r\n colectivos: {\r\n getAll: baseURI + '/api/colectivo/getAll',\r\n },\r\n zonas: {\r\n getAll: baseURI + '/api/zona/getAll',\r\n pointInZone: baseURI + '/api/zona/pointInZone',\r\n },\r\n empresas: {\r\n getAll: baseURI + '/api/empresa/getAll',\r\n },\r\n colaboradores: {\r\n getAll: baseURI + '/api/colaborador/getAll',\r\n },\r\n talleres: {\r\n getList: baseURI + '/api/taller/GetList',\r\n add: baseURI + '/api/taller/Add',\r\n getById: baseURI + '/api/taller/GetById',\r\n deleteById: baseURI + '/api/taller/DeleteById',\r\n },\r\n estadoOperario: {\r\n getList: baseURI + '/api/estadosOperario/GetList',\r\n add: baseURI + '/api/estadosOperario/Add',\r\n getById: baseURI + '/api/estadosOperario/GetById',\r\n deleteById: baseURI + '/api/estadosOperario/DeleteById',\r\n },\r\n tipoOrden: {\r\n getList: baseURI + '/api/tipoOrden/GetList',\r\n add: baseURI + '/api/tipoOrden/Add',\r\n getById: baseURI + '/api/tipoOrden/GetById',\r\n deleteById: baseURI + '/api/tipoOrden/DeleteById',\r\n },\r\n mantenimientoFlotaTipos: {\r\n getList: baseURI + '/api/mantenimientoFlotaTipo/GetList',\r\n add: baseURI + '/api/mantenimientoFlotaTipo/Add',\r\n getById: baseURI + '/api/mantenimientoFlotaTipo/GetById',\r\n deleteById: baseURI + '/api/mantenimientoFlotaTipo/DeleteById',\r\n },\r\n mensajesPredef: {\r\n getList: baseURI + '/api/mensajePredef/GetList',\r\n add: baseURI + '/api/mensajePredef/Add',\r\n getById: baseURI + '/api/mensajePredef/GetById',\r\n deleteById: baseURI + '/api/mensajePredef/DeleteById',\r\n },\r\n grupos: {\r\n getList: baseURI + '/api/grupo/GetList',\r\n add: baseURI + '/api/grupo/Add',\r\n getById: baseURI + '/api/grupo/GetById',\r\n deleteById: baseURI + '/api/grupo/DeleteById',\r\n },\r\n puntosInteres: {\r\n getAll: baseURI + '/api/puntoInteres/getAll',\r\n },\r\n alarmas: {\r\n getAll: baseURI + '/api/alarma/getAll',\r\n },\r\n tarifas: {\r\n getFields: baseURI + '/api/tarifa/GetFields',\r\n addTarifa: baseURI + '/api/tarifa/AddTarifa',\r\n getList: baseURI + '/api/tarifa/GetList',\r\n getTarifa: baseURI + '/api/tarifa/GetTarifaById',\r\n },\r\n aseguradoras: {\r\n getAseguradoras: baseURI + '/api/aseguradoras/getInsurerCompanyConnections',\r\n updateAseguradorasConnexion: baseURI + '/api/aseguradoras/updateConnexionColaboradorAseguradora',\r\n getConnexionEmpresaMaster: baseURI + '/api/aseguradoras/getConnexionEmpresaMaster',\r\n updateConnexionEmpresaMaster: baseURI + '/api/aseguradoras/updateConnexionEmpresaMaster',\r\n },\r\n perfilFlota: {\r\n getAll: baseURI + '/api/perfilFlota/GetAll',\r\n getById: baseURI + '/api/perfilFlota/GetById',\r\n deleteById: baseURI + '/api/perfilFlota/DeleteById',\r\n add: baseURI + '/api/perfilFlota/Add',\r\n update: baseURI + '/api/perfilFlota/Update',\r\n },\r\n productos: {\r\n getList: baseURI + '/api/productos/GetList',\r\n add: baseURI + '/api/productos/AddProduct',\r\n get: baseURI + '/api/productos/GetProduct',\r\n deleteById: baseURI + '/api/productos/deleteById',\r\n },\r\n bases: {\r\n getList: baseURI + '/api/baseFlota/GetList',\r\n add: baseURI + '/api/baseFlota/Add',\r\n getById: baseURI + '/api/baseFlota/GetById',\r\n deleteById: baseURI + '/api/baseFlota/DeleteById',\r\n },\r\n colores: {\r\n getList: baseURI + '/api/color/GetList',\r\n add: baseURI + '/api/color/Add',\r\n getById: baseURI + '/api/color/GetById',\r\n deleteById: baseURI + '/api/color/DeleteById',\r\n },\r\n logEmpleados: {\r\n getPending: baseURI + '/LogEmpleados/GetPending',\r\n getArchivadas: baseURI + '/LogEmpleados/GetArchivadas',\r\n getActive: baseURI + '/LogEmpleados/getActive',\r\n getAccepted: baseURI + '/LogEmpleados/GetAccepted', \r\n getDriversNum: baseURI + '/LogEmpleados/GetDriversNum', \r\n aprobar: baseURI + '/LogEmpleados/Aprobar', \r\n archivar: baseURI + '/LogEmpleados/Archivar',\r\n desarchivar: baseURI + '/LogEmpleados/Desarchivar',\r\n getAll: baseURI + '/LogEmpleados/getAll', \r\n getPendingNum: baseURI + '/LogEmpleados/getPendingNum', \r\n getAvailable: baseURI + '/LogEmpleados/getAvailable' , \r\n getById: baseURI + '/LogEmpleados/getById', \r\n getMyById: baseURI + '/LogEmpleados/getMyById',\r\n getEmpleados: baseURI + '/LogEmpleados/getEmpleados', \r\n getAllEmpleados: baseURI + '/LogEmpleados/getAllEmpleados',\r\n getGruposEstado: baseURI + '/LogEmpleados/getGruposEstado', \r\n save: baseURI + '/LogEmpleados/save', \r\n suscriptionHorarioUpdate: baseURI + '/LogEmpleados/suscriptionHorarioUpdate',\r\n getJornadasEmpleado: baseURI + '/LogEmpleados/GetJornadasEmpleado',\r\n aceptarJornadas: baseURI + '/LogEmpleados/AceptarJornadas',\r\n rechazarJornada: baseURI + '/LogEmpleados/RechazarJornada',\r\n changeEstadoJornada: baseURI + '/LogEmpleados/ChangeEstadoJornada', \r\n getZoho: zohoURI + '/get_company_subscriptions', \r\n updateZoho: zohoURI + '/update_company_subscription', \r\n deleteZoho: zohoURI + '/delete_company_subscription', \r\n createZoho: zohoURI + '/create_company_subscription', \r\n\r\n\r\n\r\n },\r\n empleados: {\r\n getAll: baseURI + '/Empleados/getAll',\r\n getById: baseURI + '/Empleados/getById',\r\n createUpdateContrato: baseURI + '/Empleados/createUpdateContrato', \r\n getContratos: baseURI + '/Empleados/getContratos', \r\n deleteContrato: baseURI + '/Empleados/deleteContrato', \r\n saveEmpleado: baseURI + '/Empleados/saveEmpleado', \r\n getSupervisores: baseURI + '/Empleados/getSupervisores'\r\n },\r\n averias: {\r\n getList: baseURI + '/api/averia/GetList',\r\n add: baseURI + '/api/averia/Add',\r\n getById: baseURI + '/api/averia/GetById',\r\n deleteById: baseURI + '/api/averia/DeleteById',\r\n },\r\n reporting: {\r\n showInform: baseURI + '/reporting/UserReport',\r\n saveReport: baseURI + '/reporting/SaveReport',\r\n getFields: baseURI + '/reporting/GetFields',\r\n getFilters: baseURI + '/reporting/GetFilters',\r\n getRelations: baseURI + '/reporting/GetRelations',\r\n testReport: baseURI + '/reporting/TestReport',\r\n testCloned: baseURI + '/reporting/TestCloned',\r\n saveCloned: baseURI + '/reporting/SaveCloned',\r\n showReport: baseURI + '/reporting/ShowReport',\r\n showPredeterminated: baseURI + '/reporting/ShowPredeterminated',\r\n showFacturasCliente: baseURI + '/reporting/ShowFacturasCliente',\r\n getReports: baseURI + '/reporting/GetReports',\r\n getFavorites: baseURI + '/reporting/GetFavorites',\r\n getById: baseURI + '/reporting/GetById',\r\n deleteReport: baseURI + '/reporting/DeleteReport',\r\n exportReport: baseURI + '/reporting/ExportReport',\r\n getPredeterminatedFilters: baseURI + '/reporting/GetPredeterminatedFilters',\r\n consumoCombustible: baseURI + '/reporting/ConsumoCombustible',\r\n combustibleRespectoTotal: baseURI + '/reporting/CombustibleRespectoTotal',\r\n showFichaje: baseURI + '/reporting/ShowFichaje',\r\n getEmpleados: baseURI + '/reporting/getEmpleados',\r\n exportFichaje: baseURI + '/reporting/ExportFichajePruebas',\r\n showServicios: baseURI + '/reporting/showServices',\r\n exportServicios: baseURI + '/reporting/ExportServicios',\r\n getEmpresas: baseURI + '/reporting/getEmpresas',\r\n\r\n },\r\n GOOGLE_MAPS_API_URL: 'https://maps.googleapis.com/maps/api/js?client=gme-investeltechnologies',\r\n };\r\n\r\n return endPoints;\r\n })());\r\n})();","'use strict';\r\n(function () { \r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('httpInterceptor', httpInterceptor);\r\n \r\n httpInterceptor.$inject = ['$q', '$window', '$injector'];\r\n \r\n function httpInterceptor($q, $window, $injector){\r\n return {\r\n responseError: function(rejection) {\r\n if (rejection.status === 401) //Unauthorized\r\n {\r\n var state = $injector.get('$state').current.name;\r\n var token = $window.localStorage.getItem('bearerToken');\r\n\r\n if (token || state !== 'login') {\r\n $window.localStorage.removeItem('bearerToken');\r\n $window.location = '/';\r\n }\r\n }\r\n //else if (rejection.status === 404) {\r\n //}\r\n //console.log('rejection.status >> ' + rejection.status + ' <<');\r\n\r\n return $q.reject(rejection); \r\n }\r\n };\r\n }\r\n})();","(function () {\r\n\r\n angular\r\n .module('invesfleet')\r\n .run(run);\r\n\r\n run.$inject = [\r\n '$rootScope',\r\n '$state',\r\n '$uiRouter',\r\n '$q',\r\n '$urlRouter',\r\n '$transitions',\r\n '$templateCache',\r\n 'ModalService',\r\n 'audioService',\r\n 'authorization',\r\n '$timeout',\r\n 'preferences',\r\n 'runtimeStates',\r\n 'common',\r\n 'messagingService', \r\n 'restrictionService', \r\n '$location'\r\n ];\r\n\r\n /* jshint maxstatements:false */\r\n /* jshint maxparams:false */\r\n function run(\r\n $rootScope,\r\n $state,\r\n $uiRouter,\r\n $q,\r\n $urlRouter,\r\n $transitions,\r\n $templateCache,\r\n ModalService,\r\n audioService,\r\n authorization,\r\n $timeout,\r\n preferences,\r\n runtimeStates,\r\n common,\r\n messagingService, \r\n restrictionService, \r\n $location\r\n ) {\r\n //Silent sound so that sounds keep playing in the background later\r\n try {\r\n audioService.play('content/sounds/silence.mp3');\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n \r\n Date.NewDate = function () {\r\n var now = new Date();\r\n var utcOffset = now.getTimezoneOffset();\r\n var minuteOffset = preferences.prefs.companyPrefs.minuteOffset;\r\n return new Date(now.getTime() + utcOffset * 60 * 1000 + minuteOffset * 60 * 1000);\r\n };\r\n\r\n $rootScope.$state = $state;\r\n\r\n $rootScope.restrictionService = restrictionService;\r\n\r\n $rootScope.sidebarOpen = true;\r\n\r\n $rootScope.stateStorage = {};\r\n\r\n $rootScope.tabManager = {\r\n tabs: [],\r\n prevSelectedTab: null,\r\n selectedTab: null,\r\n hideTimer: null,\r\n isVisible: false,\r\n show: function () {\r\n $timeout.cancel($rootScope.tabManager.hideTimer);\r\n $rootScope.tabManager.isVisible = true;\r\n },\r\n hide: function () {\r\n $rootScope.tabManager.hideTimer = $timeout(function () {\r\n $rootScope.tabManager.isVisible = false;\r\n }, 500);\r\n },\r\n add: function (title, viewName, hostedState, icon, fixed, params, parent, sidebar) {\r\n var newTab = {\r\n title: title,\r\n updateTitle: true,\r\n name: viewName,\r\n state: hostedState,\r\n icon: icon,\r\n fixed: fixed,\r\n params: params,\r\n parent: parent,\r\n sidebar: sidebar,\r\n isDirty: false,\r\n };\r\n\r\n newTab.isActive = function () { return this.name === $rootScope.tabManager.selectedTab.name; };\r\n\r\n $rootScope.tabManager.tabs.push(newTab);\r\n\r\n return newTab;\r\n },\r\n goToOrdenes: function (id, programada) {\r\n\r\n var entityName = 'ordenes';\r\n var params = { 'id': id };\r\n var tabView;\r\n var uiView;\r\n var stateName;\r\n\r\n if (!common.isNullOrUndefined(id)) {\r\n tabView = entityName + '-' + id;\r\n uiView = entityName + '-ui-view-' + id;\r\n stateName = 'flota.' + tabView + '.editar';\r\n } else {\r\n var guid = common.uuidv4();\r\n tabView = entityName + '-new-' + guid;\r\n uiView = entityName + '-ui-view-new-' + guid;\r\n stateName = 'flota.' + tabView + '.nueva';\r\n }\r\n\r\n var states = $state.get().map(function (state) {\r\n return state.name;\r\n });\r\n for (var i = 0; i < states.length; i++) {\r\n if (stateName === states[i]) {\r\n $state.go(stateName, params);\r\n return;\r\n }\r\n }\r\n\r\n var parentState = {\r\n url: '/' + entityName,\r\n abstract: true,\r\n sticky: true,\r\n views: {}\r\n };\r\n parentState.views[tabView] = {\r\n template: '
'\r\n };\r\n runtimeStates.addState('flota.' + tabView, parentState);\r\n\r\n if (!common.isNullOrUndefined(id)) {\r\n state = {\r\n url: '/editar?id',\r\n data: { tabTitle: 'Editar orden', tabView: tabView, icon: 'icon-012', refreshAfterSave: ['flota.ordenes.listado', 'flota.OrdenesActivas'] },\r\n params: { allOrdersOpen: null, accion: 'guardarCerrar', 'programada': programada },\r\n views: { }\r\n };\r\n } else {\r\n var tabTitle;\r\n switch (preferences.prefs.sector) {\r\n case 'TAX':\r\n tabTitle = (programada === true) ? 'Reserva' : 'Orden';\r\n break;\r\n case 'GRU': \r\n default:\r\n tabTitle = (programada === true) ? 'Programada' : 'Orden';\r\n }\r\n\r\n state = {\r\n url: '/nueva',\r\n data: { tabTitle: 'Nueva ' + tabTitle, tabView: tabView, icon: 'icon-012', refreshAfterSave: ['flota.ordenes.listado', 'flota.OrdenesActivas'] },\r\n params: { accion: 'guardarCerrar', preload: null, 'programada': programada },\r\n views: { }\r\n };\r\n }\r\n\r\n var templateUrl;\r\n switch (preferences.prefs.sector) {\r\n case 'TAX':\r\n templateUrl = 'app/views/flota/ordenes/form_ordenTAX.html';\r\n break;\r\n case 'GRU':\r\n default:\r\n templateUrl = 'app/views/flota/ordenes/form_ordenGRU.html';\r\n }\r\n\r\n state.views[uiView] = {\r\n controller: 'OrderFormController',\r\n controllerAs: 'vm',\r\n templateUrl: templateUrl,\r\n };\r\n runtimeStates.addState(stateName, state);\r\n\r\n $state.go(stateName, params);\r\n },\r\n removeByStateName: function (stateName) {\r\n var ix = $rootScope.tabManager.indexOfState(stateName);\r\n if (ix >= 0) {\r\n var tab = $rootScope.tabManager.tabs[ix];\r\n if (tab.fixed) { return; }\r\n \r\n if (tab.modified) {\r\n tab.closeAction = function () {\r\n $rootScope.tabManager.remove(tab);\r\n };\r\n $rootScope.$broadcast('checkExitAction' + tab.state);\r\n return;\r\n }\r\n \r\n var removed = $rootScope.tabManager.tabs.splice(ix, 1)[0];\r\n }\r\n },\r\n remove: function (tab) {\r\n if (tab.fixed) { return; }\r\n if (tab.isActive()) { $rootScope.tabManager.removeActiveTab(); return; }\r\n if (tab.modified) {\r\n tab.closeAction = function () {\r\n $rootScope.tabManager.remove(tab);\r\n };\r\n $rootScope.$broadcast('checkExitAction' + tab.state);\r\n return;\r\n }\r\n\r\n if ($rootScope.tabManager.tabs.length > 1) {\r\n var index = $rootScope.tabManager.tabs.indexOf(tab);\r\n var removed = $rootScope.tabManager.tabs.splice(index, 1)[0];\r\n //$stickyState.reset(removed.state);\r\n }\r\n },\r\n\r\n removeActiveTab: function (scope) {\r\n if ($rootScope.tabManager.tabs.length > 1) {\r\n var activeTab = null;\r\n for (var i = 0, len = $rootScope.tabManager.tabs.length; i < len; i++) {\r\n if ($rootScope.tabManager.tabs[i].isActive()) {\r\n activeTab = $rootScope.tabManager.tabs[i];\r\n }\r\n }\r\n if (activeTab.fixed) {\r\n return;\r\n }\r\n\r\n if (activeTab.modified) {\r\n activeTab.closeAction = function () {\r\n $rootScope.tabManager.remove(activeTab);\r\n };\r\n $rootScope.$broadcast('checkExitAction' + activeTab.state);\r\n return;\r\n }\r\n\r\n var index = $rootScope.tabManager.tabs.indexOf(activeTab);\r\n var removed = $rootScope.tabManager.tabs.splice(index, 1)[0];\r\n\r\n var newActive = null;\r\n if (\r\n $rootScope.tabManager.prevSelectedTab !== null &&\r\n $rootScope.tabManager.prevSelectedTab.name !== removed.name\r\n ) {\r\n newActive = $rootScope.tabManager.prevSelectedTab;\r\n }\r\n\r\n if (newActive === null) {\r\n var newActiveIndex = removed.parent ? $rootScope.tabManager.indexOfState(removed.parent.name) : 0;\r\n newActiveIndex = newActiveIndex >= 0 ? newActiveIndex : 0;\r\n newActive = $rootScope.tabManager.tabs[newActiveIndex];\r\n }\r\n\r\n $rootScope.tabManager.activate(newActive.title,\r\n newActive.name,\r\n newActive.state,\r\n newActive.icon,\r\n newActive.fixed,\r\n newActive.params);\r\n\r\n //$stickyState.reset(removed.state); \r\n $rootScope.stateSelect(newActive);\r\n }\r\n },\r\n\r\n indexOfName: function (stateName) {\r\n for (var i = 0, len = $rootScope.tabManager.tabs.length; i < len; i++) {\r\n if ($rootScope.tabManager.tabs[i].name === stateName) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n indexOfState: function (stateName) {\r\n for (var i = 0, len = $rootScope.tabManager.tabs.length; i < len; i++) {\r\n if ($rootScope.tabManager.tabs[i].state === stateName) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n activate: function (title, viewName, hostedState, icon, fixed, params, parent, sidebar) {\r\n var index = $rootScope.tabManager.indexOfName(viewName);\r\n var tab = null;\r\n var ret;\r\n if (index > -1) {\r\n tab = $rootScope.tabManager.tabs[index];\r\n if (tab.updateTitle)\r\n tab.title = title;\r\n tab.icon = icon;\r\n tab.fixed = fixed;\r\n tab.state = hostedState;\r\n tab.params = params;\r\n tab.keepState = true;\r\n if ($rootScope.tabManager.prevSelectedTab === null || $rootScope.tabManager.prevSelectedTab.name !== $rootScope.tabManager.selectedTab.name)\r\n $rootScope.tabManager.prevSelectedTab = $rootScope.tabManager.selectedTab;\r\n ret = true;\r\n }\r\n else\r\n {\r\n tab = $rootScope.tabManager.add(title,\r\n viewName,\r\n hostedState,\r\n icon,\r\n fixed,\r\n params,\r\n parent,\r\n sidebar);\r\n if ($rootScope.tabManager.prevSelectedTab === null || $rootScope.tabManager.prevSelectedTab.name != $rootScope.tabManager.selectedTab.name)\r\n $rootScope.tabManager.prevSelectedTab = $rootScope.tabManager.selectedTab;\r\n ret = false;\r\n }\r\n\r\n $rootScope.tabManager.selectedTab = tab;\r\n $rootScope.sidebarOpen = tab.sidebar;\r\n\r\n return ret;\r\n },\r\n\r\n goToTab: function(tab) {\r\n if (tab.isActive()) {\r\n return;\r\n }\r\n\r\n $state.go(tab.state, tab.params);\r\n },\r\n\r\n };\r\n\r\n $rootScope.searchManager = {\r\n searchText: '',\r\n inputIsVisible: false,\r\n onSearch: function () { \r\n $state.go('flota.search.results', {\r\n q: $rootScope.searchManager.searchText\r\n });\r\n },\r\n onClear: function () {\r\n },\r\n onInputLostFocus: function (id) {\r\n //var i = document.getElementById(id);\r\n //i.value = '';\r\n //$rootScope.searchManager.inputIsVisible = false;\r\n },\r\n openSearchResultTab: function (searchTabsAccum, uiView, tabView, tabTitle, params) {\r\n\r\n var parentState = {\r\n url: '/' + tabView,\r\n abstract: true,\r\n sticky: true,\r\n views: {}\r\n };\r\n parentState.views[tabView] = {\r\n template: '
'\r\n };\r\n runtimeStates.addState('flota.' + tabView, parentState);\r\n\r\n var state = {\r\n url: '/results?q',\r\n data: { tabTitle: 'Resultados', tabView: tabView, icon: 'icon-003' },\r\n params: { q: params.q },\r\n views: {}\r\n };\r\n state.views[uiView] = {\r\n controller: 'SearchController',\r\n controllerAs: 'vm',\r\n templateUrl: 'app/views/flota/search/default.html',\r\n };\r\n var stateName = 'flota.' + tabView + '.results';\r\n runtimeStates.addState(stateName, state);\r\n\r\n return stateName;\r\n },\r\n\r\n /* DEPRECATED */\r\n search: function (i) {\r\n var q = i.value;\r\n if (q.length > 0) {\r\n $rootScope.searchManager.searchText = q;\r\n $state.go('flota.search.results', {\r\n q: $rootScope.searchManager.searchText\r\n });\r\n $rootScope.blurry = false;\r\n i.value = '';\r\n }\r\n },\r\n onEnterPressed: function (evt) {\r\n if (evt.which === 13) {\r\n $rootScope.searchManager.search(evt.currentTarget);\r\n $rootScope.searchManager.inputIsVisible = false;\r\n }\r\n },\r\n onSearchButtonClick: function (id) {\r\n var i = document.getElementById(id);\r\n if (!$rootScope.searchManager.inputIsVisible) {\r\n $rootScope.searchManager.inputIsVisible = true;\r\n setTimeout(function () {\r\n i.focus();\r\n }, 100);\r\n } else if ($rootScope.searchManager.inputIsVisible && i.value.length == 0) {\r\n $rootScope.searchManager.inputIsVisible = false;\r\n } else if (i.value.length == 0) {\r\n $rootScope.searchManager.search(i);\r\n $rootScope.searchManager.inputIsVisible = false;\r\n } else {\r\n $rootScope.searchManager.inputIsVisible = false;\r\n }\r\n },\r\n onSearchClear: function (id) {\r\n var i = document.getElementById(id);\r\n i.value = '';\r\n i.focus();\r\n }\r\n /* END DEPRECATED */\r\n };\r\n\r\n var searchTabsAccum = 0;\r\n var preloaded = false;\r\n $transitions.onBefore(\r\n /*jshint maxcomplexity:false */\r\n { to: function (state) { return state.data != null && state.data.tabTitle != null; } },\r\n function (transition) {\r\n var toState = transition.$to();\r\n var fromState = transition.$from();\r\n var params = transition.params();\r\n\r\n if (toState && toState.data) {\r\n var index = $rootScope.tabManager.indexOfName(toState.data.tabView);\r\n if (index > -1) {\r\n var tab = $rootScope.tabManager.tabs[index];\r\n if (tab.modified && !checkIsSameRoute(toState, params, tab)) {\r\n tab.closeAction = function () {\r\n $state.go(toState.name, params);\r\n };\r\n $rootScope.$broadcast('checkExitAction' + tab.state);\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (toState.name === 'login') {\r\n return true;\r\n }\r\n\r\n if (toState.name !== 'login' && !authorization.hasToken()) {\r\n return transition.router.stateService.target('login',\r\n { redirectState: toState.name, redirectParams: params });\r\n }\r\n\r\n if (!authorization.hasLoaded) {\r\n return transition.router.stateService.target('login',\r\n { redirectState: toState.name, redirectParams: params, loading: true }, { location: false });\r\n }\r\n\r\n if (!preloaded) {\r\n preloadStates(toState, params);\r\n return false;\r\n }\r\n\r\n if (fromState && fromState.data) { $rootScope.$broadcast('tab-closed-' + fromState.data.tabView); }\r\n if (toState && toState.data) { $rootScope.$broadcast('tab-opened-' + toState.data.tabView); }\r\n\r\n if ($rootScope.tabManager.selectedTab) {\r\n $rootScope.tabManager.selectedTab.sidebar = $rootScope.sidebarOpen;\r\n }\r\n\r\n var tabTitle = toState.data.tabTitle;\r\n var tabView = toState.data.tabView;\r\n var name = toState.name;\r\n if (toState.name === 'flota.search.results') {\r\n searchTabsAccum++;\r\n var uiView = 'searchContainer' + searchTabsAccum;\r\n var tabView = 'search' + searchTabsAccum;\r\n tabTitle += ' de \"' + params.q + '\"';\r\n\r\n var stateName = $rootScope.searchManager.openSearchResultTab(searchTabsAccum, uiView, tabView, tabTitle, params);\r\n return transition.router.stateService.target(stateName, params);\r\n\r\n } else if (toState.name.lastIndexOf('.results') > 11) {\r\n tabTitle += ' de \"' + params.q + '\"';\r\n }\r\n\r\n $rootScope\r\n .tabManager\r\n .activate(tabTitle,\r\n tabView,\r\n name,\r\n toState.data.icon,\r\n toState.data.fixed === true,\r\n params,\r\n fromState,\r\n toState.data.sidebar === true);\r\n\r\n $timeout(function () {\r\n $rootScope.$broadcast('tab-opened');\r\n $rootScope.$broadcast('detail-resize');\r\n }, 0);\r\n\r\n });\r\n\r\n function checkIsSameRoute(toState, params, tab) {\r\n if (toState.name !== tab.state) { return false; }\r\n for (var key in toState.params) {\r\n if (toState.params.hasOwnProperty(key)) {\r\n if (toState.params[key].location === 1) {\r\n if (tab.params[key] === undefined) { return false; }\r\n if (tab.params[key] !== params[key]) { return false; }\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n $rootScope.stateSelect = function (tab) {\r\n $state.go(tab.state, tab.params, tab.options);\r\n };\r\n\r\n // $rootScope.$on(\"$locationChangeStart\", function (event, next, current) {\r\n // var path = $location.path(); \r\n // for (let item of $rootScope.restrictionService.lectura) {\r\n // if (path.search(item) != -1) {\r\n // $location.path('/404');\r\n // break;\r\n // }\r\n\r\n\r\n // }\r\n\r\n // });\r\n\r\n function preloadStates(finalState, finalParams) {\r\n preloaded = true;\r\n var openStates = $state.get().filter(function (state) { // Get states configured as 'open'\r\n if (state.data) { return state.data.open === true && state.name !== finalState.name; }\r\n return false;\r\n });\r\n\r\n //Preload the open states\r\n openStates\r\n // Create a promise chain that goes to one state, then goes to the next one...\r\n .reduce(function (memo, state) {\r\n\r\n //Turn watchers off in the next digest cycle\r\n $timeout(function () {\r\n if (state && state.data) { $rootScope.$broadcast('tab-closed-' + state.data.tabView); }\r\n }, 0);\r\n\r\n // Dont update the location (location: false)\r\n return memo.then(function () { return $state.go(state, undefined, { location: false }); });\r\n }, $q.when())\r\n .then(function () {\r\n // Now sync the url\r\n //$urlRouter.listen();\r\n $state.go(finalState.name, finalParams);\r\n $timeout(function () {\r\n if (finalState && finalState.data) {\r\n $rootScope.$broadcast('tab-opened-' + finalState.data.tabView);\r\n }\r\n }, 0);\r\n });\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('invesfleet')\r\n\r\n\r\n .component('elim', {\r\n \t\ttemplateUrl: 'app/views/componentTemplates/elimTemplate.html',\r\n \t\tbindings: {\r\n \t\tnum: '=',\r\n \t\ttext: '@',\r\n \t\tngClick: '&'\r\n \t\t}\r\n\t})\r\n\r\n\t\r\n\t.component('otro', {\r\n \t\ttemplateUrl: 'app/views/componentTemplates/elimTemplate.html',\r\n \t\tbindings: {\r\n \t\tnum: '=',\r\n \t\ttext: '@',\r\n \t\tngClick: '&'\r\n \t\t}\r\n\t});\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('LoginController', LoginController);\r\n\r\n LoginController.$inject = [\r\n '$state',\r\n 'authorization',\r\n '$stateParams',\r\n '$timeout', \r\n '$q',\r\n 'userService',\r\n 'genericDataService',\r\n 'preferences',\r\n 'reportService',\r\n '$rootScope',\r\n 'messagingService'\r\n ];\r\n\r\n function LoginController(\r\n $state,\r\n authorization,\r\n $stateParams,\r\n $timeout, \r\n $q,\r\n userService,\r\n genericDataService,\r\n preferences,\r\n reportService,\r\n $rootScope,\r\n messagingService\r\n ) {\r\n\r\n var vm = this;\r\n\r\n vm.doLogin = doLogin;\r\n vm.loading = $stateParams.loading;\r\n vm.clicked = false; \r\n vm.failed = false; \r\n\r\n (function () {\r\n if (vm.loading) { //Loading screen\r\n loadInitialData();\r\n } \r\n })();\r\n\r\n\r\n function doLogin(user, pass) {\r\n vm.clicked = true; \r\n vm.failed = false; \r\n authorization.doLogin(user, pass).then(function () {\r\n redirectForward();\r\n }, function () {\r\n vm.clicked = false; \r\n vm.failed = true; \r\n // alert('Failed Login'); //TODO: Failed login logic!\r\n });\r\n }\r\n\r\n function loadInitialData() {\r\n $q.all([\r\n //userService.getUserData(),\r\n userService.loadWithDefaults(),\r\n \r\n //byArnau\r\n // genericDataService.getPerfilesDeFlotaPorUsuario(),\r\n // preferences.getCompanyPrefs(),\r\n // reportService.getAvailableReports(),\r\n \r\n //GenericData\r\n //byArnau\r\n // genericDataService.getEmpresas(),\r\n // genericDataService.getVehicleBrands(),\r\n // genericDataService.getVehicleModel(),\r\n // genericDataService.getTiposSubFlota(),\r\n // genericDataService.getTiposFlota(),\r\n // genericDataService.getVehicleColors(),\r\n // genericDataService.getBases(),\r\n // genericDataService.getTalleres(),\r\n // genericDataService.getOperarios(),\r\n // genericDataService.getFlota(),\r\n // genericDataService.getTiposPago(), \r\n // genericDataService.getColaboradores(),\r\n // genericDataService.getTiposOrden(),\r\n \r\n \r\n //fakeDataCall()\r\n\r\n ]).then(function(values){\r\n authorization.hasLoaded = true;\r\n\r\n //byArnau\r\n // var ordenView = $state.router.stateProvider.stateRegistry\r\n\t\t\t\t// \t.states['flota.ordenes.nueva'].views.ordenesContainer;\r\n\r\n\t\t\t\t// var ordenViewEditar = $state.router.stateProvider.stateRegistry\r\n\t\t\t\t// \t.states['flota.ordenes.editar'].views.ordenesContainer;\r\n\r\n // switch(preferences.prefs.sector) {\r\n // case 'GRU':\r\n\t\t\t\t// \t\tordenView.templateUrl = 'app/views/flota/ordenes/form_ordenGRU.html'; \r\n\t\t\t\t// \t\tordenViewEditar.templateUrl = 'app/views/flota/ordenes/form_ordenGRU.html';\r\n // break;\r\n // case 'TAX':\r\n\t\t\t\t// \t\tordenView.templateUrl = 'app/views/flota/ordenes/form_ordenTAX.html';\r\n\t\t\t\t// \t\tordenViewEditar.templateUrl = 'app/views/flota/ordenes/form_ordenTAX.html';\r\n // break;\r\n // default:\r\n\t\t\t\t// \t\tordenView.templateUrl = 'app/views/flota/ordenes/form_ordenGRU.html';\r\n\t\t\t\t// \t\tordenViewEditar.templateUrl = 'app/views/flota/ordenes/form_ordenGRU.html';\r\n // }\r\n\r\n // messagingService.init();\r\n // messagingService.connect();\r\n\r\n redirectForward();\r\n });\r\n }\r\n\r\n function fakeDataCall(){\r\n var deferred = $q.defer();\r\n $timeout( function(){\r\n deferred.resolve('Fake call OK');\r\n }, 3000 );\r\n return deferred.promise;\r\n }\r\n\r\n function redirectForward() {\r\n $state.go($stateParams.redirectState, $stateParams.redirectParams);\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('MainController', MainController);\r\n\r\n MainController.$inject = [\r\n '$rootScope',\r\n 'authorization',\r\n '$location',\r\n 'scopes',\r\n 'audioService',\r\n 'userService',\r\n 'chat',\r\n '$filter',\r\n 'preferences',\r\n\t\t'genericDataService',\r\n 'fleet',\r\n '$route',\r\n '$state',\r\n 'common', \r\n 'restrictionService', \r\n 'logEmpleadosService', \r\n '$window'\r\n ];\r\n\r\n /* jshint maxstatements:false, maxparams:false */\r\n function MainController(\r\n $rootScope,\r\n authorization,\r\n $location,\r\n scopes,\r\n audioService,\r\n userService,\r\n chat,\r\n $filter,\r\n preferences,\r\n\t\tgenericDataService,\r\n fleet,\r\n $route,\r\n $state,\r\n common,\r\n restrictionService, \r\n logEmpleadosService, \r\n $window) {\r\n\r\n var vm = this;\r\n vm.lectura = restrictionService.lectura; \r\n vm.disableButton = true; \r\n\t\tvm.fleet = fleet;\r\n vm.chat = chat;\r\n vm.authService = authorization;\r\n vm.openLeftMenu = openLeftMenu;\r\n vm.logout = authorization.logout;\r\n vm.toggleFullscreen = toggleFullscreen;\r\n vm.audio = audioService;\r\n vm.perfilesFlota = [];\r\n\t\tvm.dropDownClicked = dropDownClicked;\r\n\t\tvm.updateConnexionEmpresaMaster = updateConnexionEmpresaMaster;\r\n vm.user = {\r\n name: null,\r\n surname: null\r\n };\r\n vm.goToOrdenNueva = goToOrdenNueva;\r\n vm.isActiveModule = isActiveModule;\r\n\r\n //estado desplegado secciones sidebar\r\n vm.activosClicked = true;\r\n vm.inactivosClicked = true;\r\n vm.isSidebarOpen = isSidebarOpen;\r\n vm.root = $rootScope;\r\n vm.preferences = preferences;\r\n //click events\r\n vm.menuClicked = false;\r\n vm.defaultIconClicked = false;\r\n vm.tab1 = true;\r\n\r\n //public functions\r\n vm.showHideFleetBar = showHideFleetBar;\r\n vm.connectDisconnectAseguradora = connectDisconnectAseguradora;\r\n vm.redirectControlHorario = redirectControlHorario; \r\n\r\n vm.changeEstadoJornada = changeEstadoJornada;\r\n vm.redirectToHelp = redirectToHelp;\r\n\r\n\t\t//traslados amounts\r\n\t\tvm.newLogisticsCount = null;\r\n\r\n $rootScope.isActive = isActive;\r\n \r\n /* INITIALIZER */\r\n\t\t(function () {\r\n getUserData();\r\n loadCompanyPreferences();\r\n //$timeout(function() {$scope.$broadcast('rebuild:me');}, 1000);\r\n //linkWithMap(); //byArnau\r\n })();\r\n\r\n function linkWithMap() { //Link with map to share scopes for the fleet side bar\r\n var map = scopes.get('map');\r\n if (map != null) {\r\n vm.map = map;\r\n vm.map.main = vm;\r\n }\r\n scopes.store('main', vm);\r\n }\r\n\r\n\r\n function getUserData() {\r\n vm.user.name = userService.userData.name;\r\n vm.user.surname = userService.userData.surname;\r\n vm.user.estadoJornada = userService.userData.estadoJornada; \r\n vm.user.estadoJornadaDescripcion = vm.user.estadoJornada == 0 ? 'Jornada iniciada' : vm.user.estadoJornada == 1 ? 'Jornada en pausa' : 'Jornada no iniciada'; \r\n vm.disableButton = false; \r\n vm.user.esSupervisor = userService.userData.esSupervisor; \r\n vm.user.esAdmin = userService.userData.esAdmin; \r\n genericDataService.getPerfilesDeFlotaPorUsuario()\r\n .then(function (res) {\r\n vm.perfilesFlota = res;\r\n\t\t\t\t});\r\n }\r\n\r\n function changeEstadoJornada(val) {\r\n vm.disableButton = true; \r\n logEmpleadosService.changeEstadoJornada(val)\r\n .then(function (res) {\r\n if(res.data == true) {\r\n userService.userData.estadoJornada = val == 2 ? 1 : val == 3 ? 2 : 0; \r\n vm.user.estadoJornada = userService.userData.estadoJornada;\r\n vm.user.estadoJornadaDescripcion = vm.user.estadoJornada == 0 ? 'Jornada iniciada' : vm.user.estadoJornada == 1 ? 'Jornada en pausa' : 'Jornada no iniciada';\r\n }\r\n vm.disableButton = false; \r\n });\r\n }\r\n\r\n function toggleFullscreen() {\r\n /*jshint maxcomplexity:false */\r\n if ((document.fullScreenElement && document.fullScreenElement !== null) ||\r\n (!document.mozFullScreen && !document.webkitIsFullScreen)) {\r\n if (document.documentElement.requestFullScreen) {\r\n document.documentElement.requestFullScreen();\r\n } else if (document.documentElement.mozRequestFullScreen) {\r\n document.documentElement.mozRequestFullScreen();\r\n } else if (document.documentElement.webkitRequestFullScreen) {\r\n document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);\r\n }\r\n } else {\r\n if (document.cancelFullScreen) {\r\n document.cancelFullScreen();\r\n } else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n } else if (document.webkitCancelFullScreen) {\r\n document.webkitCancelFullScreen();\r\n }\r\n }\r\n }\r\n\r\n function openLeftMenu() {\r\n\r\n }\r\n\r\n function redirectToHelp() {\r\n $window.open('https://investeltechnologies.com/soporte/', '_blank'); \r\n }\r\n\r\n function dropDownClicked(event) {\r\n\r\n angular.forEach(document.getElementsByTagName('ul'), function (elem) {\r\n elem.className = '';\r\n });\r\n var elementUl = event.target;\r\n while (elementUl !== null && elementUl.tagName.toLowerCase() !== 'ul') {\r\n elementUl = elementUl.nextElementSibling;\r\n }\r\n angular.element(elementUl).addClass('ulOpen');\r\n\r\n }\r\n\r\n function isActive(route) {\r\n return $location.path() === route;\r\n }\r\n\r\n function showHideFleetBar() {\r\n $rootScope.sidebarOpen = !$rootScope.sidebarOpen;\r\n $rootScope.$broadcast('detail-resize');\r\n }\r\n\r\n function isSidebarOpen() {\r\n return $rootScope.sidebarOpen;\r\n }\r\n\r\n function loadCompanyPreferences() {\r\n if (!preferences.loaded) {\r\n preferences.getCompanyPrefs();\r\n }\r\n\t\t}\r\n\r\n\t\tfunction connectDisconnectAseguradora(aseguradora) {\r\n\t\t\tvar aseguradoraToSend = {\r\n\t\t\t\t'asegId': aseguradora.asegId,\r\n\t\t\t\t'insurerName': aseguradora.insurerName,\r\n\t\t\t\t'state': !aseguradora.state,\r\n\t\t\t\t'editable': aseguradora.editable,\r\n\t\t\t\t'color': aseguradora.color\r\n\t\t\t};\r\n\t\t\tfleet.updateAseguradorasConnexion(aseguradoraToSend);\r\n\t\t}\r\n\r\n\t\tfunction updateConnexionEmpresaMaster() {\r\n\t\t\tfleet.updateConnexionEmpresaMaster();\r\n }\r\n\r\n function redirectControlHorario(type) {\r\n if(userService.userData.empresamaster.contrataControlHorario == true) {\r\n if(type == 0) {\r\n $state.go('flota.controlHorario.fichajes');\r\n }\r\n else if(type == 1){\r\n $state.go('flota.guardias'); \r\n }\r\n else if(type == 2){\r\n $state.go('flota.misfichajes');\r\n }\r\n }\r\n else {\r\n $state.go('flota.controlHorario.activarControlHorario'); \r\n\r\n }\r\n }\r\n\r\n function goToOrdenNueva() {\r\n $rootScope.tabManager.goToOrdenes(null);\r\n }\r\n\r\n function isActiveModule(startsWith) {\r\n if (common.isNullOrUndefined($state) || common.isNullOrUndefined($state.current) || $state.current.name.length == 0)\r\n return false;\r\n\r\n if (Array.isArray(startsWith)) {\r\n for (var i = 0; i < startsWith.length; i++) {\r\n if ($state.current.name.startsWith(startsWith[i]))\r\n return true;\r\n }\r\n } else {\r\n return $state.current.name.startsWith(startsWith);\r\n }\r\n }\r\n }\r\n})();","/* jshint -W058 */\r\n/*globals google*/\r\n(function () {\r\n 'use strict';\r\n angular\r\n .module('invesfleet')\r\n .controller('MapController', MapController);\r\n\r\n MapController.$inject = [\r\n '$rootScope',\r\n '$timeout',\r\n '$scope',\r\n 'fleet',\r\n 'userService',\r\n 'scopes',\r\n 'NgMap',\r\n '$q',\r\n 'endPoints',\r\n 'preferences',\r\n '$filter',\r\n '$state',\r\n 'chat',\r\n '$stateParams',\r\n '$location',\r\n 'common'\r\n ];\r\n\r\n /* jshint maxstatements:false */\r\n /* jshint maxparams:false */\r\n function MapController(\r\n $rootScope,\r\n $timeout,\r\n $scope,\r\n fleet,\r\n userService,\r\n scopes,\r\n NgMap,\r\n $q,\r\n endPoints,\r\n preferences,\r\n $filter,\r\n $state,\r\n chat,\r\n $stateParams,\r\n $location,\r\n common\r\n ) {\r\n\r\n /* PRIVATE VARIABLES */\r\n var MIN_ZOOM = 16;\r\n var TIME_TO_DISCONNECTED = 2 * 60;\r\n\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.userService = userService;\r\n vm.MAX_TIME_LAST_POS = 300; //5 min\r\n vm.fleet = fleet;\r\n vm.chat = chat;\r\n vm.layers = { //Capas\r\n vehicles: true,\r\n orders: true,\r\n clients: false,\r\n delegations: false,\r\n workshops: false,\r\n poi: false\r\n };\r\n vm.selectedVehicle = null;\r\n vm.selectedOrden = null;\r\n vm.tabs = {\r\n show: false,\r\n selected: 1,\r\n toggle: function () {\r\n this.changeShow(!this.show);\r\n },\r\n set: function (showVal) {\r\n this.changeShow(showVal);\r\n $timeout(function () { resizeMap(); }, 0);\r\n },\r\n select: function (tab) {\r\n this.selected = tab ? tab : -1;\r\n this.changeShow(true);\r\n },\r\n isSelected: function (tab) {\r\n return this.selected === tab;\r\n },\r\n changeShow: function (value) {\r\n this.show = value;\r\n if (this.show) {\r\n document.querySelector('#main-container').classList.add(\"showPanel\");\r\n }\r\n else {\r\n document.querySelector('#main-container').classList.remove(\"showPanel\");\r\n }\r\n }\r\n };\r\n\r\n vm.googleApiURL = endPoints.GOOGLE_MAPS_API_URL;\r\n vm.prefs = preferences.prefs;\r\n vm.seguimiento = {\r\n active: false,\r\n vehicles: {}\r\n };\r\n\r\n vm.logos = {\r\n 0: 'content/img/aseguradoras/asitur/asitur-imagotipo.png',\r\n 1: 'content/img/aseguradoras/racc/racc-imagotipo.png',\r\n 2: 'content/img/aseguradoras/mapfre/mapfre-imagotipo.png',\r\n 3: 'content/img/aseguradoras/europ/europ-imagotipo.png',\r\n 4: 'content/img/aseguradoras/mm/mm-imagotipo.png',\r\n 5: 'content/img/aseguradoras/race/race-imagotipo.png',\r\n 6: 'content/img/aseguradoras/allianz/allianz-imagotipo.png',\r\n 7: 'content/img/aseguradoras/pelayo/pelayo-imagotipo.png',\r\n 8: 'content/img/aseguradoras/ld/ld-imagotipo.png',\r\n };\r\n\r\n vm.estadosOrden = {\r\n null: 'NU', /* Nueva */\r\n 0: 'PA', /* Pte. Asignar */\r\n 1: 'AS', /* Asignado */\r\n 2: 'AC', /* Aceptado */\r\n 3: 'RZ', /* Rechazado */\r\n 4: 'IC', /* Iniciado */\r\n 5: 'LZ', /* Localizado */\r\n 6: 'EN', /* Entregado */\r\n 10: 'FZ', /* Finalizado */\r\n 11: 'OC', /* Ocupado */\r\n 12: 'DC' /* Desconectado */\r\n };\r\n\r\n vm.rootScope = $rootScope;\r\n /* PUBLIC FUNCTIONS */\r\n vm.onMarkerClick = onMarkerClick;\r\n vm.selectVehicleSideBar = selectVehicleSideBar;\r\n vm.getSignalIntensity = getSignalIntensity;\r\n vm.tiempoTranscurrido = tiempoTranscurrido;\r\n vm.getColorEstadoOrden = getColorEstadoOrden;\r\n vm.getColorEstadoVehicle = getColorEstadoVehicle;\r\n vm.iconTypeOrder = iconTypeOrder;\r\n vm.resetMap = resetMap;\r\n vm.formatNullable = formatNullable;\r\n vm.filterOrders = filterOrders;\r\n vm.getOrderState = getOrderState;\r\n vm.formatDate = formatDate;\r\n vm.zoomToIncludeTracked = zoomToIncludeTracked;\r\n vm.checkBoxStatus = checkBoxStatus;\r\n vm.trackAll = trackAll;\r\n vm.trackVehicle = trackVehicle;\r\n vm.onlineFilter = onlineFilter;\r\n vm.chatBoxKeyPress = chatBoxKeyPress;\r\n vm.getColorEstadoOperario = getColorEstadoOperario;\r\n vm.onClickOrder = onClickOrder;\r\n vm.goActiveOrder = goActiveOrder;\r\n vm.goFichaOrdenes = goFichaOrdenes;\r\n vm.getIconoOrden = getIconoOrden;\r\n vm.getObservaciones = getObservaciones;\r\n vm.centerMapOn = centerMapOn;\r\n vm.vehicleForOrder = vehicleForOrder;\r\n\r\n\r\n $(window).on('active-orders-update', function (e, args) {\r\n\r\n if (common.isNullOrUndefined(args.orders) || common.isNullOrUndefined(fleet.activeOrdersList))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tfor (var i = 0; i < args.orders.length; i++) {\r\n\r\n\t\t\t\tif (args.orders[i].tipo < 2) { // de tipo 0 -1, debe actualizar solo en activas y mapa\r\n\t\t\t\t\tif (args.orders[i].changed == true) {\r\n\t\t\t\t\t\tfor (var j = 0; j < fleet.activeOrdersList.length; j++) {\r\n\t\t\t\t\t\t\tif (fleet.activeOrdersList[j].orderId == args.orders[i].orderId) {\r\n\t\t\t\t\t\t\t\tfleet.activeOrdersList[j] = args.orders[i];\r\n\t\t\t\t\t\t\t\tbreak; //Stop this loop, we found it!\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tfleet.activeOrdersList.push(args.orders[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else { // de tipo 2, debe actualizar solo traslados (cabeceras)\r\n\r\n\t\t\t\t}\r\n }\r\n\r\n $(window).trigger('active-orders-update-setGridData');\r\n\r\n //Se tendría que hacer lo del digest acá?\r\n //vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n });\r\n\r\n\t\t$(window).on('removed-order', function (e, args) {\r\n fleet.activeOrdersList.splice(fleet.activeOrdersList.indexOf(x => x.orderId == args), 1);\r\n $(window).trigger('active-orders-update-setGridData');\r\n //Se tendría que hacer lo del digest acá?\r\n //vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n });\r\n\t\t\r\n /* INITIALIZER */\r\n (function () {\r\n\r\n var paramVehicle = $stateParams.id;\r\n vm.selectedOrden = null;\r\n if (paramVehicle) {\r\n selectVehicle(paramVehicle);\r\n }\r\n\r\n vm.fleet.getActiveOrders().then(function (result) {\r\n vm.fleet.activeOrdersList = result;\r\n\r\n });\r\n setMapResizers();\r\n\r\n linkWithMain();\r\n\r\n $scope.$on('mapInitialized', function (event, map) {\r\n setMapZoomCenter();\r\n var lat = $stateParams.lat, long = $stateParams.long;\r\n if (lat && long && !paramVehicle) {\r\n setMapPosForVehicle({ latitude: lat, longitude: long });\r\n }\r\n });\r\n\r\n //userService.loadWithDefaults(defaultConfig) //initialize user options\r\n // .then(function(data) {\r\n // userConfig = data;\r\n //});\r\n\r\n })();\r\n\r\n $scope.$on('fleetdata-refreshed', function (event, args) {\r\n // Refresh reference to selected vehicle\r\n if (vm.selectedVehicle) { selectVehicle(vm.selectedVehicle.id); }\r\n\r\n //Refresh references to tracked vehicles\r\n var seg = {};\r\n for (var key in vm.seguimiento.vehicles) {\r\n if (vm.seguimiento.vehicles.hasOwnProperty(key) && vm.seguimiento.vehicles[key] && findByFleetId(key)) {\r\n seg[key] = true;\r\n }\r\n }\r\n vm.seguimiento.vehicles = seg;\r\n\r\n if (vm.seguimiento.active) { vm.zoomToIncludeTracked(); }\r\n });\r\n\r\n\r\n /* FUNCTION DEFINITIONS */\r\n function onMarkerClick(event, fleetId) {\r\n vm.selectedOrden = null;\r\n vm.seguimiento.active = false;\r\n selectVehicle(fleetId);\r\n setMapPosForVehicle(vm.selectedVehicle);\r\n vm.tabs.set(true);\r\n if (vm.tabs.selected <= 0) {\r\n vm.tabs.select(1);\r\n }\r\n }\r\n\r\n function onClickOrder(event, orden) {\r\n vm.selectedOrden = orden;\r\n vm.selectedVehicle = null;\r\n setMapPosForVehicle(vm.selectedOrden);\r\n vm.tabs.set(true);\r\n }\r\n\r\n function selectVehicleSideBar(fleetId) {\r\n vm.seguimiento.active = false;\r\n var vChange = fleetId.toString() !== (vm.selectedVehicle ? vm.selectedVehicle.id : null);\r\n selectVehicle(fleetId);\r\n setMapPosForVehicle(vm.selectedVehicle);\r\n //if (vChange) { vm.tabs.selected = 1; }\r\n vm.tabs.set(true);\r\n }\r\n\r\n function getSignalIntensity(numericInput) {\r\n if (numericInput <= 6) {\r\n return 'Muy baja';\r\n } else if (numericInput <= 12) {\r\n return 'Baja';\r\n } else if (numericInput <= 18) {\r\n return 'Normal';\r\n } else if (numericInput <= 24) {\r\n return 'Buena';\r\n } else if (numericInput > 24) {\r\n return 'Muy Buena';\r\n } else {\r\n return '-';\r\n }\r\n }\r\n\r\n function tiempoTranscurrido(time) {\r\n if (!time) {\r\n return '-';\r\n }\r\n var dateNow = Date.NewDate();\r\n var timeNow = dateNow.getTime();\r\n var timeLasPos = new Date(time).getTime();\r\n var differenceTime = Math.floor((timeNow - timeLasPos) / 1000);\r\n return differenceTime;\r\n }\r\n\r\n function getColorEstadoOrden(estado) {\r\n return preferences.prefs.getStateColor(estado) || 'undefined';\r\n }\r\n\r\n function getColorEstadoVehicle(vehicle) {\r\n if (!vehicle) { return 'undefined'; }\r\n if (!vehicle.isConnected) { return preferences.prefs.getStateColor(100); }\r\n return preferences.prefs.getStateColor(vehicle.operatorStateId) || 'undefined';\r\n }\r\n\r\n function getColorEstadoOperario(vehicle) {\r\n if (!vehicle) { return 'undefined'; }\r\n if (!vehicle.isActive) { return preferences.prefs.getStateColor(100); }\r\n return preferences.prefs.getStateColor(vehicle.operatorStateId) || 'undefined';\r\n }\r\n\r\n function iconTypeOrder(data) {\r\n var typeIcon = '';\r\n // Icono Stop\r\n if (!data.gpio2 && data.speed === 0) {\r\n typeIcon = 'icon-stop';\r\n }\r\n // Icono Movimiento\r\n else if (data.speed > 0) {\r\n typeIcon = 'icon-move';\r\n }\r\n // Icono ralenti\r\n else if (data.gpio2 && data.speed === 0) {\r\n typeIcon = 'icon-ralenti';\r\n }\r\n // Icono alert\r\n if (!data.isLocalized) {\r\n typeIcon = 'icon-alert';\r\n }\r\n\r\n return typeIcon;\r\n }\r\n\r\n function getIconoOrden(tipo) {\r\n return userService.userData.orders.iconoOrden[tipo] || 'undefined';\r\n }\r\n\r\n function resetMap() {\r\n vm.selectedVehicle = null;\r\n vm.selectedOrden = null;\r\n vm.seguimiento = {\r\n active: false,\r\n vehicles: {}\r\n };\r\n setMapZoomCenter();\r\n }\r\n\r\n function formatNullable(text) {\r\n if (text === null) { return '-'; }\r\n return text;\r\n }\r\n\r\n function filterOrders(order) {\r\n if (!vm.selectedVehicle) { return false; }\r\n if (!order) { return false; }\r\n var oCheck = order.operatorId != null &&\r\n vm.selectedVehicle.idOperator != null &&\r\n order.operatorId === vm.selectedVehicle.idOperator;\r\n return oCheck;\r\n }\r\n\r\n function getOrderState(stateId) {\r\n //return userConfig.literals? userConfig.literals.estadosOrden[stateId] || '-' : '-';\r\n return preferences.prefs.getStateDesc(stateId);\r\n }\r\n\r\n function formatDate(ISODate) {\r\n var date = new Date(ISODate);\r\n return date.toLocaleString();\r\n }\r\n\r\n function onlineFilter(isOnline) {\r\n return function (item) {\r\n return item.isActive === isOnline;\r\n };\r\n }\r\n\r\n\r\n /*\r\n --------SEGUIMIENTO---------\r\n Estado inicial: desactivado y ningún vehiculo selectionado para seguimiento.\r\n\r\n Con seguimiento ON:\r\n - Si no hay ningun vehiculo -> Ajustar mapa para incluir todos los markers (vehiculos y ordenes)\r\n\r\n Al selectionar un vehiculo para seguimiento -> seguimiento se activa\r\n Al hacer click en un vehiculo seguimiento se desactiva \r\n y se centra en el vehiculo seleccionado (sin perder la seleccion de vehiculos para seguimiento)\r\n\r\n */\r\n function zoomToIncludeTracked() {\r\n if (!vm.seguimiento.active) { return; }\r\n var locations = [];\r\n for (var key in vm.seguimiento.vehicles) {\r\n if (vm.seguimiento.vehicles.hasOwnProperty(key) && vm.seguimiento.vehicles[key]) {\r\n locations.push(findByFleetId(key));\r\n }\r\n }\r\n\r\n if (locations.length > 0) {\r\n var bounds = new google.maps.LatLngBounds();\r\n var n = addToBounds(bounds, locations);\r\n if (n === 0) { return; }\r\n fitToBounds(bounds);\r\n }\r\n else { zoomToIncludeMarkers(); }\r\n }\r\n\r\n function checkBoxStatus(isActive) {\r\n\r\n //entra aquí por una directiva llamada checkbox indeterminated\r\n //if (!vm.fleet.live) {\r\n // console.log('false');\r\n // return false;\r\n //}\r\n\r\n if (!vm.fleet.canContinue) {\r\n return false;\r\n }\r\n var vehicles = $filter('filter')(vm.fleet.mapData.fleet, { isOnline: isActive });\r\n var last = null;\r\n for (var i = 0; i < vehicles.length; i++) {\r\n var isTracked = !!vm.seguimiento.vehicles[vehicles[i].id];\r\n if (last == null) { last = isTracked ? isTracked : false; }\r\n else if (last !== isTracked) {\r\n return null;\r\n }\r\n }\r\n return last;\r\n }\r\n\r\n function trackAll(isActive) {\r\n if (!vm.fleet.live) { return false; }\r\n var vehicles = $filter('filter')(vm.fleet.mapData.fleet, { isOnline: isActive });\r\n var ind = vm.checkBoxStatus(isActive) == null;\r\n for (var i = 0; i < vehicles.length; i++) {\r\n vm.seguimiento.vehicles[vehicles[i].id] =\r\n ind ? true : !vm.seguimiento.vehicles[vehicles[i].id];\r\n }\r\n vm.seguimiento.active = true;\r\n vm.zoomToIncludeTracked();\r\n $state.go('flota.mapa');\r\n }\r\n\r\n function trackVehicle() {\r\n vm.seguimiento.active = true;\r\n vm.zoomToIncludeTracked();\r\n $state.go('flota.mapa');\r\n }\r\n\r\n function chatBoxKeyPress(keyEvent, opId, msg) {\r\n if (keyEvent.which === 13) {\r\n vm.chat.sendMessage(opId, msg);\r\n msg = null;\r\n }\r\n }\r\n\r\n function centerMapOn(lat, long) {\r\n if (lat == null || long == null) { return; }\r\n var LatLng = new google.maps.LatLng(lat, long);\r\n if ($scope.map.zoom !== MIN_ZOOM) { //Fix for animations on the map\r\n $scope.map.setCenter(LatLng);\r\n $scope.map.setZoom(MIN_ZOOM);\r\n }\r\n else { $scope.map.panTo(LatLng); }\r\n }\r\n\r\n\r\n /* PRIVATE FUNCTIONS */\r\n function linkWithMain() { //Link with main to share scopes for the fleet side bar\r\n var main = scopes.get('main');\r\n if (main != null) {\r\n //if(main.map){ vm.selectedVehicle = main.map.selectedVehicle; }\r\n vm.main = main;\r\n vm.main.map = vm;\r\n }\r\n scopes.store('map', vm);\r\n }\r\n\r\n /*function loadCompanyPreferences() {\r\n if (!preferences.loaded) {\r\n preferences.getCompanyPrefs();\r\n }\r\n }*/\r\n\r\n function setMapResizers() { //Functionality to correctly display the map\r\n var tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('flotaMapa')];\r\n $rootScope.$watch(function () { return tab.isActive(); }, //TODO: Cambiar watch por evento\r\n function () {\r\n if (tab.isActive()) {\r\n\r\n $timeout(function () { resizeMap(); }, 0);\r\n }\r\n }\r\n );\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (tab.isActive()) {\r\n $timeout(function () { resizeMap(); }, 0);\r\n }\r\n });\r\n }\r\n\r\n function resizeMap() {\r\n return NgMap.getMap('mapa').then(function (map) {\r\n //If tab was initialized while closed zoom will be 0 so we need to call 'setMapZoomCenter' again\r\n if (map.getZoom() <= 2) {\r\n $scope.google.maps.event.trigger(map, 'resize');\r\n setMapZoomCenter();\r\n } else if (vm.seguimiento.active) {\r\n $scope.google.maps.event.trigger(map, 'resize');\r\n vm.zoomToIncludeTracked();\r\n } else {\r\n var center = map.getCenter();\r\n $scope.google.maps.event.trigger(map, 'resize');\r\n map.setCenter(center);\r\n }\r\n });\r\n }\r\n\r\n var firstCallDone = false;\r\n function setMapZoomCenter() {\r\n if (!vm.fleet.live) {\r\n if (!firstCallDone) {\r\n firstCallDone = true;\r\n vm.fleet\r\n .getMapData()\r\n .then(setMapZoomCenter);\r\n }\r\n return;\r\n }\r\n if (vm.selectedVehicle != null && vm.selectedVehicle.id !== '') {\r\n setMapPosForVehicle(vm.selectedVehicle);\r\n } else {\r\n zoomToIncludeMarkers();\r\n }\r\n }\r\n\r\n function setMapPosForVehicle(vehicle) {\r\n if (!vehicle.latitude || !vehicle.longitude) { return; } //Si no hay localizacion correcta no mover el mapa\r\n var LatLng = new google.maps.LatLng(vehicle.latitude, vehicle.longitude);\r\n if ($scope.map.zoom !== MIN_ZOOM) { //Fix for animations on the map\r\n $scope.map.setCenter(LatLng);\r\n $scope.map.setZoom(MIN_ZOOM);\r\n }\r\n else { $scope.map.panTo(LatLng); }\r\n }\r\n\r\n function zoomToIncludeMarkers() {\r\n setTimeout(function () {\r\n var bounds = new google.maps.LatLngBounds();\r\n var nLocations = 0;\r\n //console.log(vm.fleet.mapData); \r\n if (vm.layers.vehicles) { nLocations += addToBounds(bounds, vm.fleet.mapData.fleet); }\r\n if (vm.layers.orders) { nLocations += addToBounds(bounds, vm.fleet.activeOrdersList); }\r\n if (nLocations === 0) { return; }\r\n fitToBounds(bounds);\r\n }, 1000);\r\n }\r\n\r\n function addToBounds(bounds, locations) {\r\n if (common.isNullOrUndefined(locations))\r\n return 0;\r\n\r\n var nLocations = 0;\r\n locations.forEach(function (location) {\r\n if (location.latitude && location.longitude) {\r\n var latLng = new google.maps.LatLng(location.latitude, location.longitude);\r\n bounds.extend(latLng);\r\n nLocations++;\r\n }\r\n });\r\n return nLocations;\r\n }\r\n\r\n function fitToBounds(bounds) {\r\n $scope.map.fitBounds(bounds);\r\n if ($scope.map.zoom > MIN_ZOOM) { $scope.map.setZoom(MIN_ZOOM); } //Minimun zoom\r\n }\r\n\r\n function findByFleetId(fleetId) {\r\n if (!vm.fleet.live) { return null; }\r\n var array = vm.fleet.mapData.fleet;\r\n if (common.isNullOrUndefined(array))\r\n return null;\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i].id === fleetId.toString()) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function getAddress(lat, long) {\r\n var geocoder = new google.maps.Geocoder();\r\n var latlng = new google.maps.LatLng(\r\n parseFloat(lat),\r\n parseFloat(long)\r\n );\r\n\r\n var deferred = $q.defer();\r\n geocoder.geocode(\r\n { 'latLng': latlng },\r\n function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n if (results[0]) {\r\n /*jshint camelcase: false */\r\n deferred.resolve(results[0].formatted_address); return;\r\n }\r\n }\r\n deferred.reject('Dirección no encontrada');\r\n }\r\n );\r\n return deferred.promise;\r\n }\r\n\r\n function selectVehicle(id) {\r\n var v = findByFleetId(id);\r\n if (vm.selectedVehicle) {\r\n v.address = vm.selectedVehicle.address;\r\n }\r\n vm.selectedVehicle = v;\r\n vm.selectedOrden = null;\r\n\r\n if (vm.selectedVehicle == null) { return; }\r\n\r\n getAddress(vm.selectedVehicle.latitude, vm.selectedVehicle.longitude).then(\r\n function (address) { vm.selectedVehicle.address = address; },\r\n function (result) { vm.selectedVehicle.address = result; });\r\n\r\n }\r\n\r\n function goActiveOrder(orden) {\r\n onClickOrder(undefined, orden);\r\n }\r\n\r\n function goFichaOrdenes(order) {\r\n //var allOrdersOpen = null;\r\n //if (vm.rootScope.tabManager.indexOfName('ordenes') !== -1) {\r\n //\tallOrdersOpen = true;\r\n //}\r\n //$state.go('flota.ordenes.editar', { 'id': order.orderId, 'allOrdersOpen': allOrdersOpen });\r\n $rootScope.tabManager.goToOrdenes(order.orderId);\r\n }\r\n\r\n var lastObs = [];\r\n var lastObsId = null;\r\n function getObservaciones(json, id) {\r\n if (lastObsId === id) { return lastObs; }\r\n lastObsId = id;\r\n var result = [];\r\n if (json == null || json === '') {\r\n result = [];\r\n } else {\r\n try { result = JSON.parse(json); }\r\n catch (e) {\r\n result = [{ text: json }];\r\n }\r\n }\r\n lastObs = result;\r\n return result;\r\n }\r\n\r\n $scope.$on('heartbeat-pulse', function (event, args) {\r\n if (vm.selectedVehicle != null && vm.tabs.isSelected(4)) {\r\n markAsReadForOperator(vm.selectedVehicle.operatorId);\r\n }\r\n });\r\n\r\n function markAsReadForOperator(id) {\r\n var messages = vm.chat.messages;\r\n if (common.isNullOrUndefined(messages)) {\r\n return;\r\n }\r\n var to = messages.length || 0;\r\n var ids = [];\r\n for (var i = 0; i < to; i++) {\r\n if (messages[i].direction === 'IN' &&\r\n messages[i].operatorId === id &&\r\n messages[i].readTime === null) {\r\n ids.push(messages[i].id);\r\n }\r\n }\r\n if (ids.length > 0) {\r\n chat.markAsRead(ids);\r\n }\r\n }\r\n\r\n function vehicleForOrder(order) {\r\n if (!order) { return null; }\r\n\r\n return $filter('filter')(vm.fleet.mapData.fleet, { idOperator: order.operatorId })[0];\r\n }\r\n }\r\n})();","/*\n * angaccordion\n * Accordion directive for AngularJS\n * Licensed under the MIT license\n */\n\n(function() {\n 'use strict';\n\n angular\n .module('angAccordion', ['collapsibleItem'])\n .controller('angAccordionController', ['$scope', function($scope){\n var collapsibleItems = [];\n \n this.openCollapsibleItem = function(collapsibleItemToOpen) {\n if( $scope.oneAtATime ) {\n angular.forEach(collapsibleItems, function(collapsibleItem) {\n collapsibleItem.isOpenned = false;\n collapsibleItem.icon = collapsibleItem.closeIcon;\n });\n }\n collapsibleItemToOpen.isOpenned = true;\n };\n\n this.addCollapsibleItem = function(collapsibleItem) {\n collapsibleItems.push(collapsibleItem);\n \n if ( $scope.closeIconClass !== undefined || $scope.openIconClass !== undefined ) {\n collapsibleItem.iconsType = 'class';\n collapsibleItem.closeIcon = $scope.closeIconClass;\n collapsibleItem.openIcon = $scope.openIconClass;\n }\n else if ( $scope.closeIconUrl !== undefined || $scope.openIconUrl !== undefined ) {\n collapsibleItem.iconsType = 'url';\n collapsibleItem.closeIcon = $scope.closeIconUrl;\n collapsibleItem.openIcon = $scope.openIconUrl;\n }\n\n collapsibleItem.iconIsOnLeft = $scope.iconPosition === 'left' ? true: false;\n };\n\n }])\n .directive('angAccordion', function() {\n return {\n restrict: 'EA',\n transclude: true,\n replace: true,\n scope: {\n oneAtATime: '@',\n closeIconUrl: '@',\n openIconUrl: '@',\n closeIconClass: '@',\n openIconClass: '@',\n iconPosition: '@' \n },\n controller: 'angAccordionController',\n template: '
'\n };\n });\n\n angular.module('collapsibleItem', []).directive('collapsibleItem', function() {\n return {\n require: '^angAccordion',\n restrict: 'EA',\n transclude: true,\n replace: true,\n scope: {\n itemTitle: '@',\n itemDisabled: '=',\n initiallyOpen: '='\n },\n link: function(scope, element, attrs, accordionController) {\n scope.isOpenned = (scope.initiallyOpen) ? true : false;\n accordionController.addCollapsibleItem(scope);\n \n if (scope.isOpenned) {\r\n scope.icon = scope.openIcon;\r\n }\n else {\r\n scope.icon = scope.closeIcon;\r\n }\n\n scope.toggleCollapsibleItem = function () {\n if (scope.itemDisabled) {\r\n return;\r\n }\n \n if(!scope.isOpenned) {\n accordionController.openCollapsibleItem(this);\n scope.icon = scope.openIcon;\n }\n else {\n scope.isOpenned = false;\n scope.icon = scope.closeIcon;\n }\n };\n\n scope.getIconUrl = function ( type ) {\n return type === 'url' ? scope.icon : null;\n };\n },\n /*jshint ignore:start*/\n template: '
{{itemTitle}}
![]()
'\n /*jshint ignore:end*/\n };\n });\n})();\n","/*globals google*/\r\n(function () { \r\nangular.module('invesfleet')\r\n .directive('addressMap', addressMap);\r\n\r\n addressMap.$inject = ['ModalService', '$templateCache', 'NgMap', '$rootScope', '$q', 'endPoints', '$timeout'];\r\n\r\n function addressMap(ModalService, $templateCache, NgMap, $rootScope, $q, endPoints, $timeout) {\r\n \r\n return {\r\n restrict: 'A',\r\n scope: {\r\n address: '=?',\r\n country: '=?',\r\n state: '=?',\r\n city: '=?',\r\n cp: '=?',\r\n lat: '=?',\r\n long: '=?',\r\n onChange: '&?',\r\n onAddressChange: '&?',\r\n autocomplete: '=?',\r\n },\r\n link: function(scope, element, attrs){\r\n \r\n scope.googleApiURL = endPoints.GOOGLE_MAPS_API_URL;\r\n var modalTemplate = $templateCache.get('app/views/modals/mapAddressTemplate.html');\r\n\r\n element.bind('click', function(){\r\n /* jshint camelcase:false */\r\n ModalService.showModal({\r\n template: modalTemplate,\r\n controller:\r\n function ($scope, close) {\r\n var city, province, country, cp;\r\n\r\n var def = true;\r\n $scope.lat = 40.4168;\r\n $scope.lng = -3.7038;\r\n $scope.address = 'España';\r\n\r\n if(scope.lat && scope.long){\r\n def = false;\r\n $scope.lat = scope.lat;\r\n $scope.lng = scope.long;\r\n $scope.address = scope.address;\r\n } \r\n \r\n (function () {\r\n NgMap.getMap('mapAddress').then( function(map){\r\n $scope.google.maps.event.trigger(map,'resize');\r\n map.setCenter({lat: $scope.lat, lng: $scope.lng});\r\n\r\n if(def){\r\n map.setZoom(6);\r\n }\r\n });\r\n })();\r\n\r\n $scope.getCurrentlocation = function(event){\r\n getAddress(event.latLng.lat(), event.latLng.lng()).then(function(address){\r\n var streetNumber;\r\n angular.forEach(address.address_components, function(value, key) {\r\n switch (value.types[0]) {\r\n case 'street_number':\r\n streetNumber = value.long_name.toString();\r\n break;\r\n case 'locality': //city\r\n city = value.long_name;\r\n break;\r\n case 'administrative_area_level_2': //state\r\n province = value.long_name;\r\n break;\r\n case 'country': //country\r\n country = value.long_name;\r\n break;\r\n case 'postal_code': //cp\r\n cp = value.long_name;\r\n break; \r\n }\r\n });\r\n $scope.address = address.formatted_address.toString().split(',')[0] + (streetNumber ? ', ' + streetNumber : '');\r\n $scope.lat = event.latLng.lat();\r\n $scope.lng = event.latLng.lng();\r\n });\r\n };\r\n\r\n $scope.save = function () {\r\n scope.address = $scope.address;\r\n scope.lat = $scope.lat;\r\n scope.long = $scope.lng;\r\n if (scope.autocomplete) {\r\n if(scope.city)\r\n scope.city = city;\r\n\r\n if(scope.state)\r\n scope.state = province;\r\n\r\n if(scope.country)\r\n scope.country = country;\r\n\r\n if (scope.cp)\r\n scope.cp = cp;\r\n }\r\n $timeout(function () {\r\n if (scope.onChange) { scope.onChange(); }\r\n if (scope.onAddressChange) {\r\n scope.onAddressChange({\r\n address: {\r\n city: city,\r\n state: province,\r\n country: country,\r\n cp: cp,\r\n lat: scope.lat,\r\n lng: scope.long\r\n }\r\n });\r\n }\r\n }, 0);\r\n\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n $scope.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n \r\n }\r\n });\r\n });\r\n\r\n function getAddress(lat, long) {\r\n var geocoder = new google.maps.Geocoder();\r\n var latlng = new google.maps.LatLng(\r\n parseFloat(lat),\r\n parseFloat(long)\r\n );\r\n\r\n var deferred = $q.defer();\r\n geocoder.geocode(\r\n { 'latLng': latlng },\r\n function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n if (results[0]) {\r\n /*jshint camelcase: false */\r\n deferred.resolve(results[0]); return;\r\n }\r\n }\r\n deferred.reject('Dirección no encontrada');\r\n }\r\n );\r\n return deferred.promise;\r\n }\r\n\r\n }\r\n };\r\n }\r\n})();","(function () { \r\nangular.module('invesfleet')\r\n .directive('anchor', anchor);\r\n\r\n anchor.$inject = ['$location', '$anchorScroll', '$timeout'];\r\n\r\n function anchor($location, $anchorScroll, $timeout) {\r\n \r\n return {\r\n restrict: 'A',\r\n scope: {\r\n anchor: '@'\r\n },\r\n link: function(scope, element, attrs){\r\n element.bind('click', function () {\r\n\r\n //We save the old hash and restore it because changing it causes a reload\r\n var old = $location.hash();\r\n\r\n $location.hash(scope.anchor);\r\n $anchorScroll.yOffset = 148;\r\n $anchorScroll();\r\n\r\n $location.hash(old);\r\n\r\n });\r\n }\r\n };\r\n }\r\n})();","(function () {\r\n angular\r\n .module('invesfleet')\r\n .directive('inScroll', arrowScrollDirective);\r\n\r\n arrowScrollDirective.$inject = [];\r\n\r\n function arrowScrollDirective() {\r\n return {\r\n scope: true,\r\n restrict: 'A',\r\n controller: arrowScrollController\r\n };\r\n }\r\n\r\n function arrowScrollController($scope) {\r\n this.overflow = false;\r\n this.targetTab = 0;\r\n this.onTarget = true;\r\n\r\n this.getOffset = getOffset;\r\n\r\n this.notOnTarget = function(){\r\n this.onTarget = false;\r\n this.startAnimationCallback();\r\n };\r\n\r\n this.startAnimationCallback = function(){};\r\n\r\n function getOffset(tab) {\r\n return this.children[tab].offsetLeft - this.container.offsetLeft;\r\n }\r\n }\r\n\r\n arrowScrollController.$inject = ['$scope'];\r\n\r\n angular.module('invesfleet')\r\n .directive('inScrollArrow', arrowScrollLinkDirective);\r\n\r\n function arrowScrollLinkDirective() {\r\n return {\r\n scope: false,\r\n restrict: 'A',\r\n require: '^inScroll',\r\n link: function (scope, element, attributes, ctr) {\r\n\r\n //Scroll left or right to the next element\r\n var scrollTabs = function () {\r\n var maxScroll = ctr.container.scrollWidth - ctr.container.offsetWidth;\r\n var dir = attributes.inScrollArrow;\r\n if (dir === 'left' && ctr.targetTab > 0) {\r\n ctr.targetTab--;\r\n ctr.notOnTarget();\r\n } else if (dir === 'right' && ctr.getOffset(ctr.targetTab) < maxScroll) {\r\n ctr.targetTab++;\r\n ctr.notOnTarget();\r\n }\r\n };\r\n\r\n element.bind('click', function () {\r\n scope.$apply(function () {\r\n scrollTabs();\r\n });\r\n });\r\n\r\n element.bind('mouseover', function () {\r\n scope.$apply(function () {\r\n scrollTabs();\r\n });\r\n });\r\n\r\n function isArrowActive(dir) {\r\n if (dir === 'left') {\r\n return ctr.targetTab > 0;\r\n } else if (dir === 'right') {\r\n return ctr.targetTab < getMaxTab();\r\n }\r\n }\r\n\r\n function getMaxTab() {\r\n var maxScroll = ctr.container.scrollWidth - ctr.container.offsetWidth;\r\n for (var i = 0; i < ctr.children.length; i++) {\r\n if ((ctr.children[i].offsetLeft - ctr.container.offsetLeft) >= maxScroll) { return i; }\r\n }\r\n }\r\n\r\n scope.$watch(function () {return ctr.targetTab;}, function () {\r\n element.toggleClass('active', isArrowActive(attributes.inScrollArrow));\r\n });\r\n\r\n scope.$watch(function () {return ctr.container.scrollWidth > ctr.container.offsetWidth;}, function () {\r\n element.toggleClass('overflow', ctr.container.scrollWidth > ctr.container.offsetWidth);\r\n element.toggleClass('active', isArrowActive(attributes.inScrollArrow));\r\n });\r\n\r\n }\r\n };\r\n }\r\n\r\n angular.module('invesfleet')\r\n .directive('inScrollContainer', arrowScrollPaneDirective);\r\n\r\n function arrowScrollPaneDirective() {\r\n return {\r\n scope: false,\r\n restrict: 'A',\r\n require: '^inScroll',\r\n link: function (scope, element, attributes, ctr) {\r\n\r\n var STEP_SIZE = 7; //Pixels per frame\r\n\r\n var lastWidth = 0;\r\n var lastScrollWidth = 0;\r\n\r\n ctr.container = element[0];\r\n ctr.children = element[0].children;\r\n\r\n ctr.startAnimationCallback = onframe;\r\n\r\n function onframe() {\r\n scope.overflow = ctr.container.scrollWidth > ctr.container.offsetWidth;\r\n if (ctr.container.offsetWidth !== lastWidth) { lastWidth = ctr.container.offsetWidth; reset(); }\r\n if (ctr.container.scrollWidth !== lastScrollWidth) {\r\n lastScrollWidth = ctr.container.scrollWidth; reset();\r\n }\r\n\r\n takeStep();\r\n\r\n if(!ctr.onTarget){\r\n requestAnimationFrame(onframe); //PELIGRO MEMORY LEAK?\r\n }\r\n }\r\n\r\n function takeStep() {\r\n if (ctr.onTarget) { return; }\r\n if (ctr.targetTab < 0 || ctr.targetTab >= ctr.children.length) { reset(); return; }\r\n\r\n var maxScroll = ctr.container.scrollWidth - ctr.container.offsetWidth;\r\n var targetOffset = ctr.getOffset(ctr.targetTab);\r\n var sign = Math.sign(targetOffset - ctr.container.scrollLeft);\r\n var step = sign * STEP_SIZE;\r\n\r\n if (ctr.container.scrollLeft + step >= maxScroll) {\r\n ctr.container.scrollLeft = maxScroll;\r\n ctr.onTarget = true;\r\n }\r\n else if (ctr.container.scrollLeft + step >= targetOffset && sign >= 0 ||\r\n ctr.container.scrollLeft + step <= targetOffset && sign < 0) {\r\n ctr.container.scrollLeft = targetOffset;\r\n ctr.onTarget = true;\r\n } else {\r\n ctr.container.scrollLeft += step;\r\n }\r\n }\r\n\r\n function reset() {\r\n ctr.targetTab = 0;\r\n ctr.onTarget = true;\r\n ctr.container.scrollLeft = 0;\r\n }\r\n }\r\n };\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('autocombo', autocombo);\r\n\r\n autocombo.$inject = ['$filter', '$timeout', 'modals', '$state', '$compile', 'common'];\r\n\r\n /* USAGE:\r\n
\r\n
\r\n */\r\n\r\n function autocombo($filter, $timeout, modals, $state, $compile, common) {\r\n \r\n var directive = {\r\n link: link,\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/autocombo.html',\r\n scope: {\r\n data: '=', //List of elements\r\n ngModel: '=?', //Item selected\r\n ngModelId: '=?',\r\n ngModelValue: '=?',\r\n idField: '@?', //Default: 'id'\r\n displayField: '@?', //Default: 'nombre'\r\n displayIdField: '@?',\r\n labelText: '@?',\r\n isLoading: '=?', //Expression to display the loading message\r\n loadingText: '@?', //Default: 'Cargando datos...'\r\n emptyText: '@?', //Default: 'No hay elementos'\r\n ngChange: '&?', //Callback function when ngModel changes\r\n onChange: '&?',\r\n ngDisabled: '=?',\r\n strict: '=?', //Default: true\r\n placeholder: '@?',\r\n autofocus: '<',\r\n defaultOpt: '@?',\r\n required: '<',\r\n maxlength: '@?',\r\n\r\n //Entity create/link\r\n entityLink: '@?', //The final link will be: [entityLink + '?id=' + selectedItemId]\r\n entityCreate: '@?', //The string referencing the modal on the service\r\n entityEdit: '@?', //The string referencing the modal on the service\r\n entityCreateCallback: '&?',\r\n entityEditCallback: '&?',\r\n\r\n useBloodhound: '=?',\r\n bloodhound: '=?',\r\n limit: '@?',\r\n minLength: '@?',\r\n inputPrevValue: '@?', // used to avoid search again\r\n helperDisplayField: '@?',\r\n id: '@?'\r\n }\r\n };\r\n return directive;\r\n\r\n /* jshint maxstatements:false, maxcomplexity:false */\r\n function link(scope, element, attrs) {\r\n\r\n scope.isOpen = false;\r\n scope.hasFocus = false;\r\n scope.inputText = '';\r\n scope.idMatchItem = null;\r\n scope.filteredList = [];\r\n scope.highlightItem = null;\r\n\r\n if (!scope.idField) { scope.idField = 'id'; }\r\n if (!scope.displayField) { scope.displayField = 'nombre'; }\r\n if (!scope.loadingText) { scope.loadingText = 'Cargando datos...'; }\r\n if (!scope.emptyText) { scope.emptyText = 'No hay elementos'; }\r\n if (typeof scope.strict === 'undefined') { scope.strict = true; }\r\n if (!scope.placeholder) { scope.placeholder = ''; }\r\n if (!scope.defaultOpt) { scope.defaultOpt = null; }\r\n if (!scope.autofocus) { scope.autofocus = false; } else { scope.autofocus = true; }\r\n if (!scope.required) { scope.required = false; }\r\n if (scope.strict || !scope.maxlength) { scope.maxlength = ''; }\r\n if (scope.limit === null || typeof scope.limit === 'undefined') { scope.limit = 10; }\r\n if (scope.minLength === null || typeof scope.minLength === 'undefined') { scope.minLength = 2; }\r\n if (common.isNullOrUndefined(scope.useBloodhound)) { scope.useBloodhound = false; }\r\n //if(scope.cascadeChild === null || typeof scope.cascadeChild === 'undefined') { scope.cascadeChild = null; }\r\n //if(scope.cascadeParent === null || typeof scope.cascadeParent === 'undefined') { scope.cascadeParent = null; }\r\n\r\n if (!scope.ngModel) {\r\n scope.ngModel = {};\r\n scope.ngModel[scope.idField] = scope.ngModelId;\r\n scope.ngModel[scope.displayField] = scope.ngModelValue;\r\n }\r\n\r\n scope.defaultItem = {};\r\n scope.defaultItem[scope.idField] = null;\r\n scope.defaultItem[scope.displayField] = scope.defaultOpt;\r\n scope.defaultItem[scope.displayIdField] = null;\r\n\r\n scope.isSelected = function () {\r\n if (!scope.ngModel) { return false; }\r\n if (scope.strict && !scope.ngModel[scope.idField]) { return false; }\r\n if (!scope.ngModel[scope.displayField]) { return false; }\r\n return true;\r\n };\r\n\r\n scope.selectItem = function (item) {\r\n if (!scope.useBloodhound) {\r\n if (scope.defaultOpt && item === scope.defaultItem) {\r\n scope.ngModel = {};\r\n scope.ngModel[scope.idField] = null;\r\n scope.ngModel[scope.displayField] = null;\r\n scope.ngModel[scope.displayIdField] = null;\r\n } else {\r\n scope.ngModel = item;\r\n scope.inputText = scope.isSelected() ? scope.ngModel[scope.displayField] : '';\r\n }\r\n } else {\r\n scope.ngModel = item;\r\n scope.inputText = scope.isSelected() ? scope.ngModel[scope.displayField] : '';\r\n }\r\n };\r\n \r\n function filterData(newValue, oldValue) {\r\n \r\n if (!scope.data) {\r\n if (scope.data === [] && scope.ngModelId) {\r\n scope.ngModel = scope.emptyItem;\r\n }\r\n return;\r\n }\r\n\r\n if (!scope.useBloodhound) {\r\n //Filtered data by name\r\n if(scope.id == \"paisEnt\")\r\n console.log(\"entra pero no debería\");\r\n var filterInfo = { };\r\n filterInfo[scope.displayField] = scope.inputText;\r\n scope.filteredList = $filter('searchFilter')(scope.data, filterInfo, true);\r\n\r\n if (scope.defaultOpt) {\r\n scope.filteredList.unshift(scope.defaultItem);\r\n }\r\n\r\n //ID exact match\r\n scope.idMatchItem = null;\r\n if (scope.inputText) {\r\n var idMatch = scope.data.filter(\r\n function (element) { return element[scope.displayIdField] === scope.inputText; }\r\n );\r\n if (idMatch.length > 0) { scope.idMatchItem = idMatch[0]; }\r\n }\r\n\r\n //Highlighted item\r\n scope.highlightItem = null;\r\n if (scope.idMatchItem) {\r\n scope.highlightItem = scope.idMatchItem;\r\n }\r\n else {\r\n var nameMatch = scope.filteredList.filter(\r\n function (element) {\r\n return $filter('cleanFilter')\r\n (element[scope.displayField], null) === $filter('cleanFilter')(scope.inputText, null);\r\n }\r\n );\r\n\r\n if (nameMatch.length > 0) { scope.highlightItem = nameMatch[0]; }\r\n }\r\n\r\n if (scope.highlightItem == null && scope.filteredList.length > 0 && scope.inputText !== '') {\r\n scope.highlightItem = scope.filteredList[0];\r\n }\r\n\r\n if (scope.ngModelId) {\r\n var found = $filter('filter')(scope.data, { [scope.idField]: scope.ngModelId });\r\n if (found.length === 0) {\r\n scope.ngModel = scope.emptyItem;\r\n }\r\n else if (found.length === 1) {\r\n scope.ngModel = found[0];\r\n }\r\n }\r\n\r\n } else {\r\n if (scope.bloodhound) {\r\n if (scope.inputText.length >= scope.minLength) {\r\n //if (scope.inputPrevValue !== scope.inputText) {\r\n if (true) {\r\n //scope.inputPrevValue = scope.inputText;\r\n var limit = scope.limit;\r\n if (!scope.inputText || scope.inputText == '') {\r\n var end = scope.data.length <= limit ? scope.data.length : limit;\r\n scope.filteredList = scope.data.slice(0, end);\r\n } else {\r\n scope.bloodhound.search(scope.inputText, function (res) {\r\n var end = res.length <= limit ? res.length : limit;\r\n scope.filteredList = res.slice(0, end);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n scope.$watch('ngModel',\r\n function (newSelected, oldSelected) {\r\n /* jshint maxcomplexity:false */\r\n //If its an entity we show the create/link buttons\r\n \r\n element.removeClass('add-icon');\r\n if (!scope.isSelected()) {\r\n if (scope.entityCreate) { element.addClass('add-icon'); }\r\n } else {\r\n if ((scope.entityEdit || scope.entityLink) && scope.ngModel[scope.idField]) {\r\n element.addClass('add-icon');\r\n }\r\n }\r\n\r\n //TODO: mostrar el id del seleccionado? \r\n scope.inputText = scope.isSelected() ? scope.ngModel[scope.displayField] : '';\r\n\r\n if (!common.isNullOrUndefined(newSelected)) {\r\n\r\n if (!common.isNullOrUndefined(newSelected[scope.idField]))\r\n scope.ngModelId = newSelected[scope.idField];\r\n else\r\n scope.ngModelId = null;\r\n\r\n if (!common.isNullOrUndefined(newSelected[scope.displayField]))\r\n scope.ngModelValue = newSelected[scope.displayField];\r\n else\r\n scope.ngModelValue = null;\r\n \r\n //if (scope.id == \"paisEnt\") {\r\n // console.log(scope.ngModel);\r\n //}\r\n\r\n } else {\r\n scope.ngModelId = null;\r\n scope.ngModelValue = null; \r\n }\r\n\r\n if (scope.ngChange) {\r\n if ((newSelected && newSelected[scope.idField]) !== (oldSelected && oldSelected[scope.idField])) {\r\n $timeout(function () { scope.ngChange(); }); //Calling ngChange callback\r\n }\r\n }\r\n if (scope.onChange) {\r\n if ((newSelected && newSelected[scope.idField]) !== (oldSelected && oldSelected[scope.idField])) {\r\n $timeout(function () { scope.onChange(); }); //Calling onChange callback\r\n }\r\n }\r\n },\r\n true\r\n );\r\n\r\n scope.$watch(\r\n 'ngModelId',\r\n function (newSelected, oldSelected) {\r\n if (common.isNullOrUndefined(newSelected)) { return; }\r\n else if (!scope.ngModel || scope.ngModel[scope.idField] !== newSelected) {\r\n var found = $filter('filter')(scope.data, { [scope.idField]: scope.ngModelId });\r\n if (found && found.length > 0) {\r\n scope.ngModel = found[0];\r\n }\r\n }\r\n },\r\n true\r\n );\r\n\r\n scope.$watch(\r\n 'ngModelValue',\r\n function (newSelected, oldSelected) {\r\n if (!scope.ngModel || newSelected !== scope.ngModel[scope.displayField]) {\r\n scope.ngModel = { [scope.displayField]: scope.ngModelValue };\r\n }\r\n },\r\n true\r\n );\r\n\r\n /**\r\n * Watch inputText changes to:\r\n * - Filter the list with the inputText\r\n */\r\n scope.$watch('inputText',\r\n filterData\r\n );\r\n\r\n scope.$watch('data.length',\r\n filterData\r\n );\r\n\r\n element.find('input').on('blur',\r\n function (evt) {\r\n if (!scope.useBloodhound) {\r\n if (scope.highlightItem) { scope.selectItem(scope.highlightItem); }\r\n else {\r\n var o = {};\r\n o[scope.idField] = null;\r\n o[scope.displayIdField] = null;\r\n if (scope.strict) {\r\n o[scope.displayField] = null;\r\n scope.selectItem(o);\r\n } else {\r\n o[scope.displayField] = scope.inputText;\r\n scope.selectItem(o);\r\n }\r\n }\r\n\r\n scope.highlightItem = null;\r\n scope.isOpen = false;\r\n scope.hasFocus = false;\r\n scope.$apply();\r\n } else {\r\n setTimeout(function () {\r\n scope.isOpen = false;\r\n scope.hasFocus = false;\r\n scope.$apply();\r\n }, 50);\r\n }\r\n }\r\n );\r\n\r\n element.find('input').on('focus',\r\n function () {\r\n scope.isOpen = true;\r\n scope.hasFocus = true;\r\n scope.highlightItem = scope.ngModel;\r\n }\r\n );\r\n\r\n element.find('input').on('keydown',\r\n function (evt) {\r\n /* jshint maxcomplexity:false */\r\n scope.isOpen = true;\r\n var index = 0;\r\n switch (evt.keyCode) {\r\n case 40: //ARROW DOWN\r\n evt.preventDefault();\r\n scope.isOpen = true;\r\n if (scope.filteredList) {\r\n if (scope.highlightItem) {\r\n index = scope.filteredList.indexOf(scope.highlightItem);\r\n if (index < scope.filteredList.length - 1) {\r\n index++;\r\n }\r\n }\r\n scope.highlightItem = scope.filteredList[index];\r\n moveListTo(index);\r\n }\r\n break;\r\n\r\n case 38: //ARROW UP\r\n evt.preventDefault();\r\n scope.isOpen = true;\r\n if (scope.filteredList) {\r\n if (scope.highlightItem) {\r\n index = scope.filteredList.indexOf(scope.highlightItem);\r\n if (index > 0 || (scope.idMatchItem && index > -1)) {\r\n index--;\r\n }\r\n }\r\n if (index === -1) {\r\n scope.highlightItem = scope.idMatchItem;\r\n } else {\r\n scope.highlightItem = scope.filteredList[index];\r\n }\r\n moveListTo(index);\r\n }\r\n break;\r\n\r\n case 13:\r\n if (scope.highlightItem) { scope.selectItem(scope.highlightItem); }\r\n break;\r\n }\r\n\r\n scope.$apply();\r\n }\r\n );\r\n\r\n function moveListTo(index) {\r\n //var index = i + 1;\r\n\r\n var list = element.find('ul')[0];\r\n var item = list.children[index];\r\n\r\n if (!item) { return; }\r\n\r\n //If we need to scroll up to find the item\r\n if (item.offsetTop < list.scrollTop) {\r\n list.scrollTop = item.offsetTop;\r\n }\r\n\r\n //If we need to scroll down to find the item\r\n if (item.offsetTop + item.offsetHeight > list.scrollTop + list.clientHeight) {\r\n list.scrollTop = item.offsetTop + item.offsetHeight - list.clientHeight;\r\n }\r\n }\r\n\r\n scope.open = function () {\r\n if (scope.ngDisabled) { return; }\r\n if (scope.inputText !== '') {\r\n scope.isOpen = true;\r\n }\r\n\r\n filterData();\r\n //Timeout to wait for the DOM to render\r\n $timeout(\r\n function () {\r\n if (scope.isOpen) {\r\n moveListTo(0);\r\n if (scope.isSelected()) {\r\n moveListTo(scope.filteredList.indexOf(scope.highlightItem));\r\n }\r\n }\r\n }\r\n );\r\n\r\n };\r\n\r\n\r\n /**\r\n * Modal for creating entities quickly\r\n */\r\n scope.showCreateModal = function () {\r\n if (scope.entityCreate) {\r\n modals.showModal(scope.entityCreate, scope.entityCreateCallback);\r\n }\r\n };\r\n\r\n /**\r\n * Modal for editing entities quickly\r\n */\r\n scope.showEditModal = function () {\r\n if (scope.entityEdit) {\r\n modals.showModal(scope.entityEdit, scope.entityEditCallback);\r\n }\r\n };\r\n\r\n /**\r\n * Link to entity info [entityLink + '?id=' + selectedItemId]\r\n */\r\n scope.goToLink = function () {\r\n $state.transitionTo(scope.entityLink, { id: scope.ngModel[scope.idField] });\r\n };\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('isAutofocus', isAutofocus); \r\n\r\n isAutofocus.$inject = ['$timeout', '$rootScope'];\r\n\r\n function isAutofocus($timeout, $rootScope) {\r\n \r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attrs){\r\n var c = element.attr('is-autofocus');\r\n $timeout(function () {\r\n if(attrs.hasOwnProperty('isAutofocus') && \r\n (attrs.isAutofocus === 'true' || attrs.isAutofocus === '')){ \r\n element[0].focus();\r\n }\r\n }, 0);\r\n\r\n var deregister = $rootScope.$on('tab-opened', function (event, args) {\r\n $timeout(function () {\r\n if(attrs.hasOwnProperty('isAutofocus') && \r\n (attrs.isAutofocus === 'true' || attrs.isAutofocus === '')){\r\n element[0].focus();\r\n }\r\n }, 0);\r\n });\r\n\r\n scope.$on('$destroy', function() {\r\n deregister();\r\n });\r\n }\r\n };\r\n }\r\n})();","(function() {\r\n angular.module('invesfleet')\r\n .directive('checkboxstatus', function() {\r\n //TRUE:checked='true' | FALSE:checked='false' | NULL:indeterminate='true'\r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attributes) {\r\n scope.$watch(attributes['checkboxstatus'], function (value) {\r\n if(value == null){\r\n element[0].indeterminate = true;\r\n }else{\r\n element[0].indeterminate = false;\r\n element[0].checked = value;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n}());","(function () {\r\n angular.module('invesfleet')\r\n .directive('date', date);\r\n\r\n date.$inject = ['$timeout','$filter', 'common'];\r\n\r\n function date($timeout,$filter, common) {\r\n\r\n return {\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/dateInput.html',\r\n scope: {\r\n ngModel: '=',\r\n ngChange: '&?',\r\n seconds: '<',\r\n ngDisabled: '=',\r\n autofocus: '<',\r\n autoInit: '<',\r\n ngMin: '=?',\r\n ngMax: '=?',\r\n showTime: ''\r\n },\r\n link: function (scope, element, attrs) {\r\n\r\n var changedFromInput = false;\r\n\r\n if (typeof scope.seconds === 'undefined') {\r\n scope.seconds = true;\r\n }\r\n if (!scope.autofocus) {\r\n scope.autofocus = false;\r\n } else {\r\n scope.autofocus = true;\r\n }\r\n\r\n if (common.isNullOrUndefined(scope.showTime))\r\n scope.showTime = true;\r\n\r\n\r\n //INICIALIZAR CON FECHA ACTUAL\r\n if (scope.autoInit) {\r\n scope.ngModel = Date.NewDate();\r\n }\r\n\r\n scope.$watch('ngModel', function (newVal, oldVal) {\r\n if(changedFromInput){\r\n //We dont need to set the input because the change comes from it\r\n changedFromInput = false;\r\n } else {\r\n setPartsFromModel();\r\n }\r\n if(scope.ngChange){ scope.ngChange(); }\r\n });\r\n\r\n scope.onChangeDate = function () {\r\n setModelFromParts();\r\n };\r\n\r\n scope.onChangeTime = function () {\r\n setModelFromParts();\r\n };\r\n\r\n function setModelFromParts() {\r\n changedFromInput = true;\r\n if (!scope.internalDate) {\r\n scope.ngModel = null;\r\n } else {\r\n var year = scope.internalDate.getFullYear();\r\n var month = scope.internalDate.getMonth();\r\n var date = scope.internalDate.getDate();\r\n\r\n var now = Date.NewDate();\r\n var hour = compareDates(scope.internalDate, now) ? now.getHours() : 0;\r\n var min = compareDates(scope.internalDate, now) ? now.getMinutes() : 0;\r\n var sec = compareDates(scope.internalDate, now) ? now.getSeconds() : 0;\r\n if (scope.internalTime) {\r\n hour = scope.internalTime.getHours();\r\n min = scope.internalTime.getMinutes();\r\n sec = scope.internalTime.getSeconds();\r\n }\r\n\r\n scope.ngModel = new Date(year, month, date, hour, min, sec);\r\n }\r\n }\r\n\r\n function setPartsFromModel() {\r\n scope.internalDate = getProcessedDate(scope.ngModel);\r\n scope.internalTime = getProcessedDate(scope.ngModel);\r\n }\r\n\r\n function getProcessedDate(date) {\r\n if (!date) {\r\n return null;\r\n }\r\n var d = new Date(date);\r\n if (d && scope.seconds === false && d.getSeconds() > 0) {\r\n d = new Date(d.setSeconds(0));\r\n }\r\n if (d && d.getMilliseconds() > 0) {\r\n d = new Date(d.setMilliseconds(0));\r\n }\r\n return d;\r\n }\r\n\r\n function compareDates(date1, date2){\r\n if(!date1 || !date2) { return false; }\r\n return date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate();\r\n }\r\n }\r\n };\r\n }\r\n})();","(function () { \r\n angular.module('invesfleet')\r\n .directive('daterange', daterange);\r\n \r\n daterange.$inject = ['$filter'];\r\n \r\n function daterange($filter) {\r\n \r\n return {\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/dateRange.html',\r\n scope: {\r\n dateFrom: '=',\r\n dateTo: '=',\r\n maxRange: '=?',\r\n onChange: '&?',\r\n seconds: '',\r\n ngDisabled: '=?',\r\n autofocus: '',\r\n autoInit: '',\r\n allowFuture: ''\r\n }, \r\n link: function(scope, element, attrs){\r\n \r\n if(typeof scope.seconds === 'undefined'){ scope.seconds = true; } \r\n if(typeof scope.allowFuture === 'undefined'){ scope.allowFuture = true; } \r\n if (!scope.autofocus) { scope.autofocus = false; } else {\r\n //console.log('autofocus true'); \r\n scope.autofocus = true;\r\n }\r\n \r\n scope.minFrom = null;\r\n scope.maxFrom = null;\r\n scope.minTo = null;\r\n scope.maxTo = null;\r\n\r\n //INICIALIZAR CON FECHA ACTUAL\r\n if (scope.autoInit) {\r\n scope.dateFrom = Date.NewDate();\r\n scope.dateFrom.setDate(scope.dateFrom.getDate() - 1);\r\n scope.dateTo = Date.NewDate();\r\n \r\n setDatesLimits();\r\n }\r\n \r\n scope.ngChange = function(){\r\n setDatesLimits();\r\n if(scope.onChange){ scope.onChange(); }\r\n }; \r\n\r\n function setDatesLimits(){\r\n if(scope.dateFrom){\r\n scope.minTo = new Date(scope.dateFrom);\r\n scope.minTo.setDate(scope.minTo.getDate() + 1);\r\n scope.maxTo = new Date(scope.dateFrom);\r\n scope.maxTo.setDate(scope.maxTo.getDate() + scope.maxRange);\r\n\r\n if(!scope.allowFuture && scope.minTo > Date.NewDate()){ scope.minTo = Date.NewDate(); }\r\n if(!scope.allowFuture && scope.maxTo > Date.NewDate()){ scope.maxTo = Date.NewDate(); }\r\n\r\n scope.minTo = formatDateForHTML5(scope.minTo);\r\n scope.maxTo = formatDateForHTML5(scope.maxTo);\r\n }\r\n if(scope.dateTo){\r\n scope.maxFrom = new Date(scope.dateTo);\r\n scope.maxFrom.setDate(scope.maxFrom.getDate() - 1);\r\n scope.minFrom = new Date(scope.dateTo);\r\n scope.minFrom.setDate(scope.minFrom.getDate() - scope.maxRange);\r\n\r\n if(!scope.allowFuture && scope.minFrom > Date.NewDate()){ scope.minFrom = Date.NewDate(); }\r\n if(!scope.allowFuture && scope.maxFrom > Date.NewDate()){ scope.maxFrom = Date.NewDate(); }\r\n\r\n scope.maxFrom = formatDateForHTML5(scope.maxFrom);\r\n scope.minFrom = formatDateForHTML5(scope.minFrom);\r\n }\r\n }\r\n\r\n function formatDateForHTML5(date) {\r\n return $filter('date')(date, 'yyyy-MM-ddTHH:mm');\r\n }\r\n }\r\n };\r\n }\r\n })();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('fileDropzone', fileDropzone);\r\n\r\n /*USAGE:\r\n
// Maximun size in MB\r\n
\r\n */\r\n\r\n fileDropzone.$inject = [];\r\n\r\n function fileDropzone() {\r\n\r\n var directive = {\r\n restrict: 'A',\r\n scope: {\r\n file: '=?',\r\n fileName: '=?',\r\n onDrop: '&?'\r\n },\r\n link: link\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n var checkSize, isTypeValid, validMimeTypes;\r\n scope.onDrop = scope.onDrop? scope.onDrop() : null;\r\n\r\n var count = 0;\r\n element.bind('dragover', function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n e.dataTransfer.dropEffect = 'copy';\r\n e.dataTransfer.effectAllowed = 'copy';\r\n });\r\n element.bind('dragenter', function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n count++;\r\n element.addClass('dragging');\r\n });\r\n element.bind('dragleave', function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n count--;\r\n if (count <= 0) {\r\n element.removeClass('dragging');\r\n }\r\n });\r\n\r\n\r\n validMimeTypes = attrs.fileDropzone;\r\n checkSize = function (size) {\r\n var _ref;\r\n if (((_ref = attrs.maxFileSize) === (void 0) || _ref === '') || \r\n (size / 1024) / 1024 < attrs.maxFileSize) {\r\n return true;\r\n } else {\r\n alert('File must be smaller than ' + attrs.maxFileSize + ' MB');\r\n return false;\r\n }\r\n };\r\n isTypeValid = function (type) {\r\n if ((validMimeTypes === (void 0) || validMimeTypes === '') ||\r\n (type && type !== '' && validMimeTypes.indexOf(type) > -1)) {\r\n return true;\r\n } else {\r\n alert('Invalid file type. File must be one of following types ' + validMimeTypes);\r\n return false;\r\n }\r\n };\r\n\r\n return element.bind('drop', function (event) {\r\n var file, name, reader, size, type;\r\n if (event != null) {\r\n event.preventDefault();\r\n }\r\n reader = new FileReader();\r\n reader.onload = function (evt) {\r\n if (checkSize(size) && isTypeValid(type)) {\r\n scope.file = evt.target.result;\r\n scope.fileName = name;\r\n if(scope.onDrop){\r\n scope.onDrop(scope.file, scope.fileName);\r\n }\r\n scope.$apply(); // Force digest so angular can process the changes quickly\r\n }\r\n };\r\n file = event.dataTransfer.files[0];\r\n name = file.name;\r\n type = file.type;\r\n size = file.size;\r\n reader.readAsDataURL(file);\r\n return false;\r\n });\r\n }\r\n }\r\n})();","/*jshint ignore:start*/\r\n(function() {\r\n angular.module('invesfleet')\r\n .directive('dropdown',\r\n function($document) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, elem, attr) {\r\n elem.on('click',\r\n function(e) {\r\n elem.toggleClass('dropdown');\r\n elem.addClass('active-recent');\r\n });\r\n\r\n var docClickHandler = function() {\r\n if (!elem.hasClass('active-recent')) {\r\n elem.removeClass('dropdown');\r\n }\r\n elem.removeClass('active-recent');\r\n }\r\n\r\n $document.on('click', docClickHandler);\r\n \r\n scope.$on('$destroy', function() {\r\n $document.off('click', docClickHandler);\r\n });\r\n }\r\n }\r\n });\r\n}());\r\n/*jshint ignore:end*/","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('filter', filter);\r\n\r\n filter.$inject = [];\r\n\r\n function filter() {\r\n \r\n var directive = {\r\n link: link,\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/filter.html',\r\n scope: {\r\n field: '@',\r\n display: '@',\r\n type: '@', // 'string','number','date','options'\r\n ngModel: '=',\r\n ngChange: '&'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n \r\n scope.operators = {\r\n string: [\r\n {nombre:'E', id:'E', desc:'Empieza por...'},\r\n {nombre:'=', id:'=', desc:'Igual a...'},\r\n {nombre:'⊂', id:'⊂', desc:'Contiene...'}\r\n ],\r\n number: [\r\n {nombre:'<', id:'<', desc:'Menor que...'},\r\n {nombre:'>', id:'>', desc:'Mayor que...'},\r\n {nombre:'=', id:'=', desc:'Igual a...'}\r\n ]\r\n };\r\n scope.showOperator = scope.type === 'string' || scope.type === 'number';\r\n\r\n scope.dateOpts = [\r\n {nombre: 'Personalizado', id:'custom'},\r\n {nombre: 'Hoy', id:'hoy'},\r\n {nombre: 'Ayer', id:'ayer'},\r\n {nombre: 'Esta semana', id:'week'},\r\n {nombre: 'Últimos 7 días', id:'last7'},\r\n {nombre: 'La semana pasada', id:'lastWeek'},\r\n {nombre: 'Este mes', id:'month'},\r\n {nombre: 'Últimos 30 días', id:'last30'},\r\n {nombre: 'El mes pasado', id:'lastMonth'},\r\n {nombre: 'Este año', id:'year'}\r\n ];\r\n if (!scope.ngModel.date) { scope.ngModel.date = { selected: null }; }\r\n \r\n if(!scope.ngModel.operator){\r\n if(scope.type === 'number'){\r\n scope.ngModel.operator = {\r\n id : '='\r\n };\r\n } else if(scope.type === 'string'){\r\n scope.ngModel.operator = {\r\n id : 'E'\r\n };\r\n }\r\n }\r\n \r\n scope.dateTypeChanged = function(){ \r\n /* jshint maxcomplexity: false */\r\n if(!scope.ngModel.date.selected){ return; } \r\n \r\n var today = Date.NewDate();\r\n switch(scope.ngModel.date.selected.id){ \r\n\t\t\t\t\tcase 'hoy':\r\n scope.ngModel.input1 = \r\n new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\r\n scope.ngModel.input2 = new Date(today.getFullYear(), \r\n today.getMonth(), \r\n today.getDate() + 1, \r\n 0, 0, 0); \r\n break;\r\n case 'ayer':\r\n scope.ngModel.input1 = \r\n new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1, 0, 0, 0);\r\n scope.ngModel.input2 = \r\n new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\r\n break;\r\n case 'week':\r\n scope.ngModel.input1 = new Date(\r\n today.getFullYear(), \r\n today.getMonth(),\r\n today.getDate() - (today.getDay()-1),\r\n 0, 0, 0);\r\n scope.ngModel.input2 = new Date(\r\n today.getFullYear(), \r\n today.getMonth(),\r\n today.getDate() - (today.getDay()-1) + 7,\r\n 0, 0, 0);\r\n break;\r\n case 'last7':\r\n scope.ngModel.input1 = \r\n Date.NewDate(); scope.ngModel.input1.setDate(scope.ngModel.input1.getDate() - 7);\r\n scope.ngModel.input2 = today;\r\n break;\r\n case 'lastWeek':\r\n scope.ngModel.input1 =\r\n new Date(today.getFullYear(), today.getMonth(),\r\n today.getDate() - (today.getDay()-1) - 7, 0, 0, 0);\r\n scope.ngModel.input2 =\r\n new Date(today.getFullYear(), today.getMonth(),\r\n today.getDate() - (today.getDay()-1), 0, 0, 0);\r\n break;\r\n case 'month':\r\n scope.ngModel.input1 = new Date(today.getFullYear(), today.getMonth(), 1, 0, 0, 0);\r\n scope.ngModel.input2 = new Date(today.getFullYear(), today.getMonth()+1, 1, 0, 0, 0);\r\n break;\r\n case 'last30':\r\n scope.ngModel.input1 = Date.NewDate(); \r\n scope.ngModel.input1.setDate(scope.ngModel.input1.getDate() - 30);\r\n scope.ngModel.input2 = today;\r\n break;\r\n case 'lastMonth':\r\n scope.ngModel.input1 = new Date(today.getFullYear(), today.getMonth() - 1, 1, 0, 0, 0);\r\n scope.ngModel.input2 = new Date(today.getFullYear(), today.getMonth(), 1, 0, 0, 0);\r\n break;\r\n case 'year':\r\n scope.ngModel.input1 = new Date(today.getFullYear(), 0, 1, 0, 0, 0);\r\n scope.ngModel.input2 = new Date(today.getFullYear()+1, 0, 1, 0, 0, 0);\r\n break; \r\n\r\n }\r\n\r\n scope.filterChange();\r\n };\r\n\r\n scope.dateChanged = function(){\r\n if(scope.ngModel.date.selected && scope.ngModel.date.selected.id === 'custom') {\r\n scope.filterChange();\r\n }\r\n };\r\n\r\n scope.filterChange = function(){\r\n scope.ngChange();\r\n };\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('filterSection', filterSection);\r\n\r\n filterSection.$inject = ['$timeout'];\r\n\r\n function filterSection($timeout) {\r\n \r\n var directive = {\r\n link: link,\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/filterSection.html',\r\n scope: {\r\n fields: '=',\r\n applyFilter: '&',\r\n saveFilter: '&',\r\n onChange: '&',\r\n parent: '=',\r\n control: '='\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n \r\n scope.filters = [];\r\n var lastFilters = null;\r\n\r\n function getFilterFromField(field){\r\n var filter = {\r\n input1 : null,\r\n input2 : null,\r\n dataRef : field.data,\r\n data : [],\r\n display: field.display, \r\n type: field.type,\r\n field: field.field,\r\n getData: field.getData,\r\n params: field.params,\r\n\t\t\t\t\tdefault: field.default,\r\n\t\t\t\t\tonChange: field.onChange\r\n };\r\n\r\n if(filter.dataRef){\r\n filter.data = scope.parent[field.data];\r\n }\r\n if(filter.getData){\r\n filter.isLoading = true;\r\n scope.parent[filter.getData](filter.params).then(function(data){ \r\n\t\t\t\t\t\tfilter.data = data;\r\n\t\t\t\t\t\tscope.parent[field.data] = filter.data;\r\n filter.isLoading = false;\r\n });\r\n }\r\n\r\n return filter;\r\n }\r\n\r\n angular.forEach(scope.fields, function(value, key) {\r\n if(value.default){\r\n scope.filters.push(getFilterFromField(value));\r\n }\r\n });\r\n\r\n\t\t\tscope.filterChanged = function (filter) {\r\n scope.onChange();\r\n };\r\n\r\n scope.newFilter = function() {\r\n if (!scope.selectedField) { return; }\r\n var f = getFilterFromField(scope.selectedField);\r\n f.default = false;\r\n scope.filters.push(f);\r\n scope.selectedField = null;\r\n };\r\n \r\n /**\r\n * Execute filters\r\n */\r\n scope.doFilter = function(skipSave) {\r\n var appliedFilters = [];\r\n\r\n angular.forEach(scope.filters, function(filter, key) {\r\n switch(filter.type){\r\n case 'multi':\r\n if(filter.input1.length > 0){\r\n appliedFilters.push(createReturnFilter(filter));\r\n }\r\n break;\r\n case 'date':\r\n\t\t\t\t\t\t\tif (filter.date.selected && filter.input1 !== null &&\r\n\t\t\t\t\t\t\t\tfilter.input2 !== null && filter.input1 !== undefined &&\r\n\t\t\t\t\t\t\t\tfilter.input2 !== undefined) {\r\n appliedFilters.push(createReturnFilter(filter,1));\r\n appliedFilters.push(createReturnFilter(filter,2));\r\n }\r\n break;\r\n default:\r\n if(filter.input1 !== null && filter.input1 !== ''){\r\n appliedFilters.push(createReturnFilter(filter));\r\n }\r\n break;\r\n }\r\n });\r\n\r\n if(!skipSave) {lastFilters = scope.getFilters();}\r\n scope.applyFilter({filters: appliedFilters});\r\n };\r\n\r\n function createReturnFilter(filter, take){\r\n /* jshint maxcomplexity:false */ \r\n var op = null;\r\n var input = [];\r\n\r\n if (filter.type === 'string' || filter.type === 'number') {\r\n op = filter.operator.id;\r\n input.push(filter.input1);\r\n }\r\n else if(filter.type === 'date'){\r\n if(take === 1){\r\n op = '>=';\r\n if(typeof filter.input1 === 'string'){\r\n input.push(filter.input1);\r\n }else{\r\n input.push(filter.input1);\r\n }\r\n } else {\r\n op = '<=';\r\n if(typeof filter.input2 === 'string'){\r\n input.push(filter.input2);\r\n }else{\r\n input.push(filter.input2);\r\n }\r\n }\r\n }\r\n else if (filter.type === 'options') { \r\n op = '=';\r\n angular.forEach(filter.input1, function(value, key) {\r\n input.push(value.id);\r\n });\r\n }\r\n else if(filter.type === 'multi'){ \r\n op = 'IN'; \r\n angular.forEach(filter.input1, function(value, key) {\r\n input.push(value.id);\r\n });\r\n }\r\n\r\n var type = typeof input[0];\r\n\r\n return {\r\n field: filter.field,\r\n opt: op,\r\n input: input,\r\n type: type\r\n };\r\n }\r\n\r\n scope.getFilters = function(){\r\n /*jshint maxcomplexity:false */\r\n var fs = [];\r\n angular.forEach(scope.filters, function (value, key) {\r\n\r\n var f = {};\r\n f.field = value.field;\r\n f.type = value.type;\r\n f.display = value.display;\r\n f.getData = value.getData;\r\n f.params = value.params;\r\n f.dataRef = value.dataRef;\r\n f.default = value.default;\r\n\r\n if (value.type === 'date') {\r\n f.id = value.date.selected? value.date.selected.id : null;\r\n if(f.id === 'custom'){\r\n f.input1 = value.input1;\r\n f.input2 = value.input2;\r\n }\r\n } \r\n if(value.type === 'number' || value.type === 'string'){\r\n f.operator = value.operator? value.operator.id : null;\r\n f.input1 = value.input1; \r\n }\r\n if(value.type === 'select'){\r\n f.input1 = value.input1? value.input1.id : null;\r\n }\r\n if(value.type === 'multi'){\r\n f.input1 = value.input1.map(function (v){ return v.id; });\r\n //f.input1 = value.input1.map(function (v){ return Object.assign({},v.id); });\r\n }\r\n fs.push(Object.assign({},f));\r\n });\r\n return fs;\r\n };\r\n\r\n /**\r\n * Save actual filters as predefined\r\n */\r\n scope.save = function(){\r\n if(!scope.filterName){ return; }\r\n \r\n var fs = scope.getFilters();\r\n\r\n scope.saveFilter({name: scope.filterName, filters: fs});\r\n scope.filterName = '';\r\n };\r\n\r\n scope.setPredefinedFilters = function(filtros){\r\n /*jshint maxcomplexity:false */\r\n scope.filters = [];\r\n\r\n angular.forEach(filtros, function (value, key) {\r\n var f = {};\r\n f.field = value.field;\r\n f.type = value.type;\r\n f.display = value.display;\r\n f.getData = value.getData;\r\n f.params = value.params;\r\n f.dataRef = value.dataRef;\r\n f.default = value.default;\r\n\r\n f.data = scope.parent[value.dataRef];\r\n if(value.getData){\r\n scope.parent[value.getData](value.params).then(function(data){ \r\n f.data = data; \r\n });\r\n }\r\n\t\t\t\t\tif (value.type === 'date') {\r\n\t\t\t\t\t\t\r\n f.date = { selected: { id: value.id } };\r\n if(f.date.selected.id === 'custom'){\r\n f.input1 = value.input1 && new Date(value.input1);\r\n f.input2 = value.input2 && new Date(value.input2);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (f.date.selected.id === 'hoy') {\r\n\t\t\t\t\t\t\tvar today = Date.NewDate();\r\n\t\t\t\t\t\t\tf.input1 = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\r\n\t\t\t\t\t\t\tf.input2 = new Date(today.getFullYear(),\r\n\t\t\t\t\t\t\t\ttoday.getMonth(),\r\n\t\t\t\t\t\t\t\ttoday.getDate() + 1,\r\n\t\t\t\t\t\t\t\t0, 0, 0); \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (f.date.selected.id === null) {\r\n f.input1 = null;\r\n f.input2 = null;\r\n }\r\n }\r\n if(value.type === 'number' || value.type === 'string'){\r\n f.operator = { id: value.operator };\r\n f.input1 = value.input1; \r\n }\r\n if(value.type === 'select'){\r\n f.input1 = { id: value.input1 };\r\n }\r\n if(value.type === 'multi'){\r\n f.input1 = value.input1.map(function (v){ return { id: v}; });\r\n }\r\n\r\n scope.filters.push(f);\r\n });\r\n\r\n $timeout(function () {\r\n $timeout(function () {\r\n $timeout(function () {\r\n scope.doFilter();\r\n });\r\n });\r\n });\r\n };\r\n\r\n scope.clearAllFilters = function(skipDoFilter){\r\n angular.forEach(scope.filters, function (value, key) {\r\n if(value.type === 'multi'){\r\n value.input1 = [];\r\n }else{\r\n value.input1 = null;\r\n }\r\n value.input2 = null;\r\n // value.operator = null;\r\n if(value.date){\r\n value.date.selected = null;\r\n }\r\n });\r\n scope.filters = scope.filters.filter(function (item) {\r\n return item.default === true;\r\n });\r\n if(!skipDoFilter) {scope.doFilter();}\r\n };\r\n\r\n scope.clearModifiedFilters = function(){\r\n scope.clearAllFilters(true);\r\n if(lastFilters !== null){ scope.setPredefinedFilters(lastFilters); }\r\n };\r\n\r\n //To expose methos for the controller to call\r\n scope.internalControl = scope.control || {};\r\n scope.internalControl.applyFilter = scope.doFilter;\r\n scope.internalControl.setPredefinedFilters = scope.setPredefinedFilters;\r\n scope.internalControl.clearFilters = scope.clearAllFilters;\r\n scope.internalControl.getFilters = scope.getFilters;\r\n scope.internalControl.clearModifiedFilters = scope.clearModifiedFilters;\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('input', focusNavBasic);\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('navigable', focusNavCustom);\r\n \r\n angular\r\n .module('invesfleet')\r\n .directive('textarea', focusNavBasic);\r\n /*\r\n angular\r\n .module('invesfleet')\r\n .directive('button', focusNav);\r\n \r\n angular\r\n .module('invesfleet')\r\n .directive('a', focusNav);*/\r\n\r\n \r\n var linkFunction = function(scope, element, attrs){\r\n \r\n /* KEYCODES\r\n TAB: 9\r\n ENTER: 13\r\n ARROW UP: 38\r\n ARROW DOWN: 40\r\n ARROW LEFT: 37\r\n ARROW RIGHT: 39 */\r\n\r\n element.bind('keydown', function(e) {\r\n var code = e.keyCode || e.which;\r\n \r\n switch(code){\r\n case 9: //TAB \r\n e.preventDefault();\r\n if(event.shiftKey){\r\n moveFocusToPrev();\r\n }else{\r\n moveFocusToNext();\r\n }\r\n break;\r\n }\r\n });\r\n \r\n element.bind('keyup', function(e) {\r\n\r\n var code = e.keyCode || e.which;\r\n\r\n switch(code){\r\n case 13: //ENTER \r\n if (!element[0].classList.contains('searcher-input')) {\r\n moveFocusToNextEnter();\r\n } else {\r\n return true;\r\n }; \r\n break;\r\n }\r\n });\r\n\r\n function moveFocusToPrev(){\r\n var elements = document.querySelectorAll('input, textarea, [navigable]'); \r\n var index = -1;\r\n var target = null;\r\n for(var i = 0; i < elements.length; i++){\r\n if(elements[i] === element[0]){\r\n index = i;\r\n break;\r\n }\r\n }\r\n if(index > 0 && index < elements.length){\r\n for(i = index-1; i >= 0; i--){\r\n if(elements[i].offsetParent !== null && !elements[i].classList.contains('not-navigable') &&\r\n elements[i].getAttribute('type') !== 'checkbox' &&\r\n (elements[i].disabled === undefined || elements[i].disabled === false)){\r\n target = elements[i];\r\n break;\r\n }\r\n }\r\n }\r\n if(target){\r\n target.focus();\r\n }\r\n }\r\n\r\n function moveFocusToNext(){\r\n var elements = document.querySelectorAll('input, textarea, [navigable]');\r\n var found = false;\r\n var target = null;\r\n for(var i = 0; i < elements.length; i++){\r\n if(found && elements[i].offsetParent !== null && \r\n !elements[i].classList.contains('not-navigable') &&\r\n elements[i].getAttribute('type') !== 'checkbox' &&\r\n (elements[i].disabled === undefined || elements[i].disabled === false)){\r\n target = elements[i];\r\n break; \r\n }else if(elements[i] === element[0]){\r\n found = true;\r\n }\r\n }\r\n if(target){\r\n target.focus();\r\n }\r\n }\r\n\r\n function moveFocusToNextEnter(){\r\n if(element[0].tagName === 'TEXTAREA'){ return; }\r\n\r\n var elements = document.querySelectorAll('input, textarea, [navigable]');\r\n var found = false;\r\n var target = null;\r\n for(var i = 0; i < elements.length; i++){\r\n if(found && elements[i].offsetParent !== null && \r\n !elements[i].classList.contains('not-navigable') && \r\n elements[i].getAttribute('type') !== 'checkbox' &&\r\n (elements[i].disabled === undefined || elements[i].disabled === false)){\r\n target = elements[i];\r\n break; \r\n }else if(elements[i] === element[0]){\r\n found = true;\r\n }\r\n }\r\n if(target){ \r\n target.focus();\r\n }\r\n }\r\n };\r\n\r\n focusNavBasic.$inject = [];\r\n function focusNavBasic() {\r\n return {\r\n restrict: 'E',\r\n scope: false,\r\n link: linkFunction\r\n };\r\n }\r\n focusNavCustom.$inject = [];\r\n function focusNavCustom() {\r\n return {\r\n restrict: 'A',\r\n scope: false,\r\n link: linkFunction\r\n };\r\n }\r\n\r\n \r\n})();","//From https://stackoverflow.com/a/14837021\r\n\r\n/**\r\n * Directive to set the focus of the document when an expression becomes true\r\n */\r\n(function () { \r\n angular.module('invesfleet')\r\n .directive('focusWhen', focusWhen);\r\n \r\n focusWhen.$inject = ['$timeout'];\r\n \r\n function focusWhen($timeout) {\r\n return {\r\n link: function(scope, element, attrs) {\r\n scope.$watch(attrs.focusWhen, function(value) {\r\n if(value === true) { \r\n $timeout(function() {\r\n element[0].focus();\r\n scope[attrs.focusWhen] = false;\r\n });\r\n }\r\n });\r\n }\r\n };\r\n }\r\n })();","(function () {\r\n angular\r\n .module('invesfleet')\r\n .directive('tabs', tabsDirective);\r\n\r\n tabsDirective.$inject = [];\r\n\r\n function tabsDirective() {\r\n return {\r\n scope: true,\r\n restrict: 'A',\r\n controller: tabsController\r\n };\r\n }\r\n\r\n function tabsController($scope) {\r\n\r\n $scope.tabs = [];\r\n\r\n this.addTab = function (tab) {\r\n $scope.tabs.push(tab);\r\n };\r\n\r\n this.isTabActive = function (link) {\r\n for (var i = 0; i < $scope.tabs.length; i++) {\r\n if ($scope.tabs[i].link === link) {\r\n return $scope.tabs[i].active;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n this.setTabToActive = function (link) {\r\n\r\n for (var i = 0; i < $scope.tabs.length; i++) {\r\n $scope.tabs[i].active = $scope.tabs[i].link === link;\r\n }\r\n };\r\n }\r\n\r\n tabsController.$inject = ['$scope'];\r\n\r\n angular.module('invesfleet')\r\n .directive('tabsLink', tabsLinkDirective);\r\n\r\n function tabsLinkDirective() {\r\n return {\r\n scope: false,\r\n restrict: 'A',\r\n require: '^tabs',\r\n link: function (scope, element, attributes, controller) {\r\n\r\n var tab = {\r\n link: attributes.tabsLink,\r\n active: false\r\n };\r\n\r\n controller.addTab(tab);\r\n\r\n element.bind('click', function () {\r\n scope.$apply(function () {\r\n controller.setTabToActive(tab.link);\r\n });\r\n });\r\n\r\n scope.$watch('tabs', function () {\r\n element.toggleClass('active', controller.isTabActive(tab.link));\r\n }, true);\r\n }\r\n };\r\n }\r\n\r\n angular.module('invesfleet')\r\n .directive('tabsPane', tabsPaneDirective);\r\n\r\n function tabsPaneDirective() {\r\n return {\r\n scope: false,\r\n restrict: 'A',\r\n require: '^tabs',\r\n link: function (scope, element, attributes, controller) {\r\n\r\n if (element.hasClass('active')) { controller.setTabToActive(attributes.tabsPane); }\r\n\r\n scope.$watch('tabs', function () {\r\n element.toggleClass('active', controller.isTabActive(attributes.tabsPane));\r\n }, true);\r\n }\r\n };\r\n }\r\n\r\n})();","/*globals google*/\r\n/*jshint camelcase: false */\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('googlePlaces', googlePlaces);\r\n\r\n googlePlaces.$inject = ['$timeout'];\r\n\r\n function googlePlaces($timeout) {\r\n // Usage:\r\n //
\r\n\r\n var directive = {\r\n require: 'ngModel',\r\n link: link,\r\n restrict: 'A',\r\n scope: {\r\n ngModel: '=',\r\n country: '=?',\r\n state: '=?',\r\n city: '=?',\r\n cp: '=?',\r\n lat: '=?',\r\n long: '=?',\r\n onChange: '&?',\r\n onAddressChange: '&?',\r\n autocomplete: '=?'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs, model) {\r\n\r\n //GOOGLE AUTOCOMPLETE SIN GOOGLE PLACES\r\n \r\n var CALL_DELAY = 300; //Milisegundos que deben pasar sin input para hacer la llamada\r\n var MIN_LETTERS = 4; //Número mínimo de letras que debe tener la dirección para buscar\r\n\r\n var suggestionBox = null;\r\n var selectedSuggestion = -1;\r\n var suggestionItems = [];\r\n var poweredByGoogle = null;\r\n\r\n element.attr('placeholder', 'Introduce una ubicación');\r\n\r\n function selectAddress(info){\r\n var country, state, city, cp, streetNumber;\r\n \r\n var addressComponents = info.address_components;\r\n \r\n angular.forEach(addressComponents, function(value, key) {\r\n switch (value.types[0]) {\r\n case 'street_number':\r\n streetNumber = value.long_name.toString();\r\n break;\r\n case 'locality': //city\r\n city = value.long_name;\r\n break;\r\n case 'administrative_area_level_2': //state\r\n state = value.long_name;\r\n break;\r\n case 'country': //country\r\n country = value.long_name;\r\n break;\r\n case 'postal_code': //cp\r\n cp = value.long_name;\r\n break; \r\n }\r\n });\r\n scope.ngModel = info.formatted_address.toString().split(',')[0] + \r\n (streetNumber ? ', ' + streetNumber : '');\r\n\r\n if(scope.autocomplete){\r\n scope.country = country;\r\n scope.state = state;\r\n scope.city = city;\r\n scope.cp = cp;\r\n }\r\n \r\n if(info.geometry){\r\n scope.lat = info.geometry.location.lat();\r\n scope.long = info.geometry.location.lng();\r\n }\r\n \r\n model.$setViewValue(element.val());\r\n $timeout(function () {\r\n if (scope.onChange) { scope.onChange(); }\r\n if (scope.onAddressChange) {\r\n scope.onAddressChange({\r\n address: {\r\n city: city,\r\n state: state,\r\n country: country,\r\n cp: cp,\r\n lat: scope.lat,\r\n lng: scope.long\r\n }\r\n });\r\n }\r\n }, 0);\r\n }\r\n\r\n var delay = (function () {\r\n var timer = 0;\r\n return function (callback, ms) {\r\n clearTimeout(timer);\r\n timer = setTimeout(callback, ms);\r\n };\r\n })();\r\n\r\n function addSuggestionBox() {\r\n suggestionBox = angular.element('
');\r\n\r\n var rect = element[0].getBoundingClientRect();\r\n\r\n suggestionBox.css('width', rect.width + 'px');\r\n suggestionBox.css('top', rect.height + 'px');\r\n suggestionBox.css('left', element[0].offsetLeft + 'px');\r\n\r\n element[0].after(suggestionBox[0]);\r\n }\r\n\r\n function addSuggestionItem(info) {\r\n if(suggestionBox == null){return;}\r\n var suggestionItem = angular.element(\r\n '
' +\r\n '' + \r\n info.formatted_address + \r\n '
');\r\n\r\n var rect = element[0].getBoundingClientRect(); \r\n\r\n suggestionItem.css('height', 30 + 'px');\r\n suggestionItem.css('line-height', 30 + 'px');\r\n\r\n suggestionItem.on('mousedown', function () {\r\n selectAddress(info);\r\n });\r\n suggestionItem.data = info;\r\n suggestionItems.push(suggestionItem);\r\n\r\n suggestionBox.append(suggestionItem);\r\n }\r\n\r\n function addPoweredByGoogle() {\r\n if(suggestionBox == null){return;}\r\n poweredByGoogle = angular.element(\r\n '
![]()
');\r\n suggestionBox.append(poweredByGoogle);\r\n }\r\n\r\n function clearSuggestions() {\r\n angular.forEach(suggestionItems, function (value, key) {\r\n value.remove();\r\n });\r\n if(poweredByGoogle){\r\n poweredByGoogle.remove();\r\n }\r\n suggestionItems = [];\r\n }\r\n\r\n function geocode() {\r\n delay(function () {\r\n var geocoder = new google.maps.Geocoder();\r\n geocoder.geocode({ 'address': scope.ngModel }, function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n selectedSuggestion = -1;\r\n clearSuggestions();\r\n for (var i = 0; i < results.length; i++) {\r\n addSuggestionItem(results[i]);\r\n }\r\n addPoweredByGoogle();\r\n } \r\n });\r\n }, CALL_DELAY);\r\n }\r\n\r\n function selectSuggestion(index){\r\n if(selectedSuggestion >= 0 && selectedSuggestion < suggestionItems.length){\r\n suggestionItems[selectedSuggestion].removeClass('selected');\r\n }\r\n if(index >= 0 && index < suggestionItems.length){\r\n suggestionItems[index].addClass('selected');\r\n }\r\n selectedSuggestion = index;\r\n }\r\n\r\n element.on('focus', function () {\r\n addSuggestionBox();\r\n if (scope.ngModel && scope.ngModel.length >= MIN_LETTERS) {\r\n geocode();\r\n }\r\n }); \r\n\r\n element.on('blur', function () {\r\n if(selectedSuggestion >= 0 && selectedSuggestion < suggestionItems.length){\r\n selectAddress(suggestionItems[selectedSuggestion].data);\r\n }\r\n suggestionBox.remove();\r\n suggestionBox = null;\r\n suggestionItems = []; \r\n selectedSuggestion = -1; \r\n }); \r\n\r\n element.on('keydown', function (evt) {\r\n switch(evt.keyCode){\r\n case 40: //ARROW DOWN\r\n var nextSelected = selectedSuggestion + 1;\r\n if(nextSelected >= suggestionItems.length){\r\n nextSelected = -1; //None selected\r\n }\r\n selectSuggestion(nextSelected);\r\n break;\r\n\r\n case 38: //ARROW UP\r\n nextSelected = selectedSuggestion - 1;\r\n if(nextSelected < -1){\r\n nextSelected = suggestionItems.length - 1; //Jump to last\r\n }\r\n selectSuggestion(nextSelected);\r\n break;\r\n \r\n case 13: //ENTER\r\n if(suggestionBox && suggestionItems.length > 0 && selectedSuggestion !== -1){\r\n selectAddress(suggestionItems[selectedSuggestion].data);\r\n suggestionBox.remove();\r\n }\r\n break;\r\n }\r\n });\r\n\r\n element.on('keyup', function (evt) {\r\n if(evt.keyCode === 40 || evt.keyCode === 38 || evt.keyCode === 13){ return; }\r\n\r\n if (scope.ngModel && scope.ngModel.length >= MIN_LETTERS) {\r\n geocode();\r\n } else {\r\n clearSuggestions();\r\n }\r\n });\r\n\r\n\r\n /*\r\n AUTOCOMPLETE USANDO GOOGLE PLACES\r\n Dejar por si se contrata esa API algún día\r\n\r\n var geolocation = false;\r\n var options = {\r\n types: [],\r\n //componentRestrictions: {}\r\n };\r\n \r\n scope.gPlace = new google.maps.places.Autocomplete(element[0], options);\r\n\r\n google.maps.event.addListener(scope.gPlace, 'place_changed', function() {\r\n var geoComponents = scope.gPlace.getPlace();\r\n var country, state, city, cp;\r\n \r\n var addressComponents = geoComponents.address_components;\r\n angular.forEach(addressComponents, function(value, key) {\r\n switch (value.types[0]) {\r\n case 'locality': //city\r\n city = value.long_name;\r\n break;\r\n case 'administrative_area_level_1': //state\r\n state = value.long_name;\r\n break;\r\n case 'country': //country\r\n country = value.long_name;\r\n break;\r\n case 'postal_code': //cp\r\n cp = value.long_name;\r\n break; \r\n }\r\n });\r\n scope.$apply(function() {\r\n scope.country = country;\r\n scope.state = state;\r\n scope.city = city;\r\n scope.cp = cp;\r\n if(geoComponents.geometry){\r\n scope.lat = geoComponents.geometry.location.lat();\r\n scope.long = geoComponents.geometry.location.lng();\r\n }\r\n geolocation = true;\r\n model.$setViewValue(element.val());\r\n });\r\n });\r\n */\r\n\r\n }\r\n }\r\n})(); ","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('inputSelect', input);\r\n\r\n input.$inject = ['$timeout'];\r\n\r\n function input($timeout) {\r\n \r\n return {\r\n restrict: 'C',\r\n scope: false,\r\n link: function(scope, element, attrs){\r\n \r\n var tooltipElement = element[0].parentNode.getElementsByClassName('tooltip')[0];\r\n\r\n \r\n\r\n if(!tooltipElement) {return;}\r\n \r\n element.on('mouseenter', setTooltip);\r\n\r\n function setTooltip(){\r\n var overflowElement = element[0].getElementsByClassName('tooltip-overflow')[0];\r\n\r\n overflowElement = overflowElement ? overflowElement : element[0];\r\n if(overflowElement.scrollWidth - overflowElement.offsetWidth > 0){\r\n tooltipElement.classList.add('overflow');\r\n }else{\r\n tooltipElement.classList.remove('overflow');\r\n }\r\n }\r\n }\r\n };\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.directive('loadingPane', loadingPane);\r\n\t\r\n\r\n\tfunction loadingPane() {\r\n\t\treturn {\r\n\t\t\trestrict: 'EA',\r\n\t\t\treplace: true,\r\n\t\t\ttransclude: true,\r\n\t\t\tscope: {\r\n\t\t\t\tloaded: '=loaded',\r\n\t\t\t\tmessage: '@?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: 'app/views/directives/loadingPane.html'\r\n\t\t};\r\n\t\t\r\n\t}\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('modal', modal);\r\n\r\n modal.$inject = [];\r\n\r\n function modal() {\r\n // Usage:\r\n //
contenido \r\n // Creates:\r\n // \r\n var directive = {\r\n restrict: 'E',\r\n transclude: true, \r\n replace: true,\r\n templateUrl: 'app/views/directives/modal.html',\r\n scope: {\r\n show: '=',\r\n closeOnClickOutside: '=?'\r\n }\r\n };\r\n return directive;\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('multiSelect', multiSelect);\r\n\r\n multiSelect.$inject = ['$filter', '$timeout', 'modals', '$state'];\r\n\r\n function multiSelect($filter, $timeout, modals, $state) {\r\n\r\n var directive = {\r\n link: link,\r\n require: ['?^form','ngModel'],\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/multiSelect.html',\r\n scope: {\r\n data: '=', //List of elements\r\n ngModel: '=', //Item selected\r\n idField: '@?', //Default: 'id'\r\n displayField: '@?', //Default: 'nombre'\r\n displayIdField: '@?',\r\n displayExtraField: '@?',\r\n labelText: '@?',\r\n isLoading: '=?', //Expression to display the loading message\r\n loadingText: '@?', //Default: 'Cargando datos...'\r\n emptyText: '@?', //Default: 'No hay elementos'\r\n ngChange: '&?', //Callback function when ngModel changes\r\n ngDisabled: '=?',\r\n autofocus: '<',\r\n placeholder: '@?',\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs, ctrls) {\r\n\r\n var mainElement = element[0].children[1];\r\n \r\n scope.ngModel = [];\r\n scope.isOpen = false;\r\n scope.filter = { text: '' };\r\n\r\n if(!scope.idField){ scope.idField = 'id'; }\r\n if(!scope.displayField){ scope.displayField = 'nombre'; }\r\n if(!scope.loadingText){ scope.loadingText = 'Cargando datos...'; }\r\n if(!scope.emptyText){ scope.emptyText = 'No hay elementos'; }\r\n if(!scope.placeholder){ scope.placeholder = ''; }\r\n if(!scope.autofocus){ scope.autofocus = false; } else { scope.autofocus = true;}\r\n\r\n scope.emptyItem = {};\r\n scope.emptyItem[scope.idField] = null;\r\n scope.emptyItem[scope.displayField] = null;\r\n scope.emptyItem[scope.displayIdField] = null;\r\n\r\n scope.selectItem = function (item) {\r\n $timeout(function(){\r\n if(item){\r\n scope.ngModel.push(item);\r\n if(ctrls[0]){ ctrls[0].$dirty = true; }\r\n if(ctrls[1]){ ctrls[1].$dirty = true; }\r\n }\r\n });\r\n\r\n if (scope.highlighted === item) {\r\n var data = $filter('filter')(scope.data, scope.isNotSelected);\r\n if(data.length > 0){\r\n scope.highlighted = data[0];\r\n }else{\r\n scope.highlighted = null;\r\n }\r\n }\r\n };\r\n\r\n scope.removeItem = function (item) {\r\n if(scope.ngDisabled) { return; }\r\n \r\n var index = scope.ngModel.indexOf(item);\r\n if (index > -1) { \r\n scope.ngModel.splice(index, 1);\r\n if(ctrls[0]){ ctrls[0].$dirty = true; }\r\n if(ctrls[1]){ ctrls[1].$dirty = true; }\r\n if(!scope.highlighted){\r\n var data = $filter('filter')(scope.data, scope.isNotSelected);\r\n scope.highlighted = data[0];\r\n }\r\n }\r\n };\r\n\r\n scope.isSelected = function (item) {\r\n var id = scope.idField + '';\r\n var result = $filter('filter')(scope.ngModel, { id: item[scope.idField] });\r\n return result.length > 0;\r\n };\r\n\r\n scope.isNotSelected = function (item) {\r\n if(!scope.ngModel){return true;}\r\n var id = scope.idField + '';\r\n var result = $filter('filter')(scope.ngModel, { id: item[scope.idField] });\r\n return result.length <= 0;\r\n };\r\n\r\n /**\r\n * Setting listeners to close when the main element lose focus\r\n */\r\n $timeout(function () {\r\n mainElement.addEventListener('focus',focusEvent,true);\r\n mainElement.addEventListener('blur',blurEvent,true);\r\n });\r\n\r\n element.on('keydown', \r\n function (evt) {\r\n /* jshint maxcomplexity:false */\r\n var index = 0;\r\n switch(evt.keyCode){\r\n case 40: //ARROW DOWN\r\n evt.preventDefault();\r\n if(!scope.isOpen){ open(); }\r\n else if(scope.filteredList){\r\n if(scope.highlightItem){\r\n index = indexOfById(scope.highlightItem);\r\n if(index < scope.filteredList.length-1){\r\n index++;\r\n }\r\n }\r\n highlightIndex(index);\r\n }\r\n break;\r\n\r\n case 38: //ARROW UP\r\n evt.preventDefault();\r\n if(!scope.isOpen){ open(); }\r\n else if(scope.filteredList){\r\n if(scope.highlightItem){\r\n index = indexOfById(scope.highlightItem);\r\n if(index > 0){\r\n index--; \r\n }\r\n }\r\n highlightIndex(index);\r\n }\r\n break;\r\n \r\n case 13: //ENTER\r\n if(scope.highlightItem){ scope.selectItem(scope.highlightItem); }\r\n break;\r\n \r\n case 9: //TAB\r\n //if(scope.highlightItem){ scope.selectItem(scope.highlightItem); }\r\n break;\r\n }\r\n scope.$apply();\r\n }\r\n );\r\n\r\n scope.$watch('data.length',\r\n scope.filterData\r\n );\r\n\r\n /**\r\n * Watching the selected item:\r\n * - ngChange callback\r\n */\r\n scope.$watch(\r\n 'ngModel',\r\n function (newSelected, oldSelected) {\r\n /* jshint maxcomplexity:false */\r\n var equal = true;\r\n var newData = [];\r\n angular.forEach(newSelected, function(value, key) {\r\n var index = indexOfById(value, scope.data);\r\n equal = equal && indexOfById(value, oldSelected) >= 0;\r\n if(index < 0 && !scope.isLoading){\r\n scope.ngModel = oldSelected;\r\n return;\r\n } else {\r\n newData.push(scope.data[index]);\r\n }\r\n });\r\n\r\n scope.ngModel = newData;\r\n \r\n if(newSelected.length === oldSelected.length && equal){\r\n return;\r\n }\r\n\r\n if (scope.ngChange) {\r\n scope.ngChange(); //Calling ngChange callback\r\n }\r\n },\r\n true\r\n );\r\n\r\n scope.filterData = function(){\r\n if(!scope.data) { return; }\r\n //Filtered data by name\r\n var filterInfo = {};\r\n filterInfo[scope.displayField] = scope.filter.text;\r\n if(scope.displayIdField){\r\n filterInfo[scope.displayIdField] = scope.filter.text;\r\n }\r\n if(scope.displayExtraField){\r\n filterInfo[scope.displayExtraField] = scope.filter.text;\r\n }\r\n scope.filteredList = $filter('searchFilter')(scope.data, filterInfo, true);\r\n\r\n highlightIndex(0);\r\n };\r\n\r\n scope.toggleOpen = function(){\r\n if(scope.ngDisabled) { return; }\r\n\r\n if(scope.isOpen){ close(); }\r\n else { open(); }\r\n };\r\n\r\n scope.clickElement = function(item){\r\n scope.keepOpen = true;\r\n scope.selectItem(item);\r\n //console.log('Element clicked: keepOpen -> ' + scope.keepOpen);\r\n mainElement.focus();\r\n };\r\n\r\n /* Private functions */\r\n function focusEvent(){\r\n scope.keepOpen = true;\r\n //$timeout(function(){\r\n // $timeout(function(){\r\n // scope.keepOpen = false;\r\n // });\r\n //});\r\n }\r\n function blurEvent(){\r\n $timeout(function(){\r\n //console.log('BLUR EVENT: keep open -> ' + scope.keepOpen);\r\n if(!scope.keepOpen){\r\n close();\r\n }else{\r\n scope.keepOpen = false;\r\n mainElement.focus();\r\n }\r\n });\r\n }\r\n function highlightIndex(index){\r\n scope.highlightItem = scope.filteredList[index];\r\n moveListTo(index);\r\n }\r\n function open(){\r\n if(scope.ngDisabled) { return; }\r\n\r\n scope.isOpen = true;\r\n\r\n //Timeout to wait for the DOM to render\r\n $timeout( function () { //Render the div\r\n if(scope.isOpen){\r\n element[0].querySelectorAll('input')[0].focus();\r\n scope.filterData();\r\n }\r\n });\r\n }\r\n function close(){\r\n scope.isOpen = false;\r\n scope.filter.text = '';\r\n } \r\n function moveListTo(i){\r\n var index = i+1;\r\n var list = element.find('ul')[0];\r\n if(!list || !list.children || list.children.length <= 0) { return; }\r\n if(index < 0 || index >= list.children.length){ return; }\r\n\r\n var item = list.children[index];\r\n\r\n //If we need to scroll up to find the item\r\n if(item.offsetTop < list.scrollTop){\r\n list.scrollTop = item.offsetTop;\r\n }\r\n\r\n //If we need to scroll down to find the item\r\n if(item.offsetTop + item.offsetHeight > list.scrollTop + list.clientHeight){\r\n list.scrollTop = item.offsetTop + item.offsetHeight - list.clientHeight;\r\n }\r\n }\r\n function indexOfById(item, list){\r\n\r\n if(!list) { list = scope.filteredList; }\r\n if(!list) {return -1;}\r\n var value = item[scope.idField];\r\n for(var i = 0; i < list.length; i += 1) {\r\n if(list[i][scope.idField] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n scope.$on('$destroy', function() {\r\n mainElement.removeEventListener('focus',focusEvent,true);\r\n mainElement.removeEventListener('blur',blurEvent,true);\r\n });\r\n }\r\n }\r\n})();","(function () { \r\n angular.module('invesfleet')\r\n .directive('notAvailable', notAvailable);\r\n \r\n notAvailable.$inject = [];\r\n \r\n function notAvailable() {\r\n \r\n return {\r\n restrict: 'A', \r\n priority: 999, //Set order of execution to be able to unbind events set by other directives\r\n link: function(scope, element, attrs){\r\n\r\n if(attrs.condition === 'false'){return;}\r\n if(typeof attrs.dir === 'undefined'){ attrs.dir = 'bottom'; } \r\n if(typeof attrs.events === 'undefined'){ \r\n attrs.events = `blur change click dblclick error focus focusin focusout \r\n hover keydown keypress keyup load mousedown mouseenter mouseleave \r\n mousemove mouseout mouseover mouseup resize scroll select submit`; } \r\n\r\n element.addClass('tooltip-' + attrs.dir);\r\n element.attr('data-tooltip', 'No disponible en esta versión');\r\n element.attr('disabled', 'true');\r\n\r\n var evts = attrs.events.split(' ');\r\n\r\n element.off();\r\n\r\n angular.forEach(evts, function(value, key) {\r\n element.bind(value, function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n });\r\n });\r\n\r\n if(element[0].style){\r\n element[0].style.display = 'none';\r\n }\r\n \r\n },\r\n };\r\n }\r\n })();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('overflowElement', overflowElement);\r\n\r\n overflowElement.$inject = ['$timeout'];\r\n\r\n function overflowElement($timeout) {\r\n var scrollParent = null;\r\n return {\r\n restrict: 'A',\r\n scope: false,\r\n link: function(scope, element, attrs){\r\n\r\n var ELEMENT_HEIGHT = 27;\r\n\r\n scrollParent = getScrollParent(element[0]);\r\n\r\n $timeout(function () {\r\n setPositionClasses();\r\n }, 0);\r\n \r\n angular.element(scrollParent).bind('scroll', setPositionClasses);\r\n\r\n function setPositionClasses(){\r\n for (let i=0, l=element[0].classList.length; i
= 0){\r\n element.addClass('row-near-' + (Math.floor(distToTop / ELEMENT_HEIGHT) + 1));\r\n } else{\r\n element.addClass('row-near-0');\r\n }\r\n //element.addClass('row-near-dist-' + distToTop);\r\n } else {\r\n element.removeClass('near-top');\r\n }\r\n \r\n var distToBottom = scrollParent.clientHeight - (element[0].offsetTop - scrollParent.scrollTop);\r\n if(distToBottom < 150){\r\n element.addClass('near-bottom');\r\n if((distToBottom - ELEMENT_HEIGHT) >= 0){\r\n element.addClass('row-near-' + Math.floor(distToBottom / ELEMENT_HEIGHT) );\r\n } else {\r\n element.addClass('row-near-0');\r\n }\r\n //element.addClass('row-near-dist-' + distToBottom);\r\n } else {\r\n element.removeClass('near-bottom');\r\n }\r\n }\r\n }\r\n };\r\n\r\n \r\n function getScrollParent(node) {\r\n if (node == null) {\r\n return null;\r\n }\r\n \r\n if (node.style && (node.style.overflow === 'scroll' || node.style.overflow === 'hidden')) {\r\n return node;\r\n } else {\r\n return getScrollParent(node.parentNode);\r\n }\r\n }\r\n }\r\n})();","(function () { \r\nangular.module('invesfleet')\r\n .directive('parseDate', function() {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: function (scope, element, attr, ngModel) {\r\n function parseDates(data) {\r\n return data ? new Date(data) : '';\r\n }\r\n\r\n function serializeDates(data) {\r\n return data.toISOString();\r\n }\r\n\r\n ngModel.$parsers.push(serializeDates);\r\n ngModel.$formatters.push(parseDates);\r\n }\r\n };\r\n });\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('recompile', recompile);\r\n\r\n recompile.$inject = ['$parse', '$compile'];\r\n\r\n function recompile($parse, $compile) {\r\n\r\n var directive = {\r\n transclude: true,\r\n controller: function ($scope, $transclude,\r\n $attrs, $element) {\r\n var childScope;\r\n\r\n $scope.$watch($attrs.recompileWatch, function (value) {\r\n $element.empty();\r\n if (childScope) {\r\n childScope.$destroy();\r\n childScope = null;\r\n }\r\n\r\n $transclude(function (clone, newScope) {\r\n childScope = newScope;\r\n $element.append(clone);\r\n });\r\n });\r\n\r\n if ($attrs.recompileOn) { \r\n $scope.$on($attrs.recompileOn, function (e) {\r\n $element.empty();\r\n if (childScope) {\r\n childScope.$destroy();\r\n childScope = null;\r\n }\r\n\r\n $transclude(function (clone, newScope) {\r\n childScope = newScope;\r\n $element.append(clone);\r\n });\r\n });\r\n }\r\n }\r\n };\r\n\r\n return directive;\r\n }\r\n})();","/*jshint ignore:start*/\r\n(function() {\r\n angular.module('invesfleet')\r\n .directive('reportingCloseElements',\r\n function($document) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, elem, attr) {\r\n elem.on('click',\r\n function(e) {\r\n $(\"[reporting-stop-propagation]\").hide();\r\n });\r\n }\r\n }\r\n });\r\n}());\r\n/*jshint ignore:end*/","/*jshint ignore:start*/\r\n(function() {\r\n angular.module('invesfleet')\r\n .directive('reportingStopPropagation',\r\n function($document) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, elem, attr) {\r\n elem.on('click',\r\n function(e) {\r\n e.stopPropagation(); \r\n });\r\n }\r\n }\r\n });\r\n}());\r\n/*jshint ignore:end*/","/*jshint ignore:start*/\r\n(function () { \r\nangular.module('invesfleet')\r\n .directive('resizable', function() {\r\n return {\r\n restrict: 'AE',\r\n scope: {\r\n rDirections: '=',\r\n rCenteredX: '=',\r\n rCenteredY: '=',\r\n rWidth: '=',\r\n rHeight: '=',\r\n rFlex: '='\r\n },\r\n link: function(scope, element, attr) {\r\n \r\n // register watchers on width and height attributes if they are set\r\n scope.$watch('rWidth', function(value){\r\n element[0].style.width = scope.rWidth + 'px';\r\n });\r\n scope.$watch('rHeight', function(value){\r\n element[0].style.height = scope.rHeight;\r\n });\r\n\r\n element.addClass('resizable');\r\n\r\n var style = window.getComputedStyle(element[0], null),\r\n w,\r\n h,\r\n dir = scope.rDirections,\r\n vx = scope.rCenteredX ? 2 : 1, // if centered double velocity\r\n vy = scope.rCenteredY ? 2 : 1, // if centered double velocity\r\n start,\r\n dragDir,\r\n axis,\r\n info = {};\r\n \r\n var updateInfo = function () {\r\n info.width = false; info.height = false;\r\n if (axis === 'x') {\r\n info.width = scope.rFlex ?\r\n parseInt(element[0].style.flexBasis) :\r\n parseInt(element[0].style.width);\r\n }\r\n else {\r\n info.height = scope.rFlex ?\r\n parseInt(element[0].style.flexBasis) :\r\n parseInt(element[0].style.height);\r\n }\r\n info.id = element[0].id;\r\n };\r\n\r\n var dragging = function(e) {\r\n var offset = axis === 'x' ? start - e.clientX : start - e.clientY;\r\n switch(dragDir) {\r\n case 'top':\r\n if(scope.rFlex) { element[0].style.flexBasis = h + (offset * vy) + 'px'; }\r\n else { element[0].style.height = h + (offset * vy) + 'px'; } \r\n break;\r\n case 'right':\r\n if(scope.rFlex) { element[0].style.flexBasis = w - (offset * vx) + 'px'; }\r\n else { element[0].style.width = w - (offset * vx) + 'px'; }\r\n break;\r\n case 'bottom':\r\n if(scope.rFlex) { element[0].style.flexBasis = h - (offset * vy) + 'px'; }\r\n else { element[0].style.height = (h - (offset * vy)) + 'px'; }\r\n break;\r\n case 'left':\r\n if(scope.rFlex) { element[0].style.flexBasis = w + (offset * vx) + 'px'; }\r\n else { element[0].style.width = w + (offset * vx) + 'px'; }\r\n break;\r\n }\r\n };\r\n var dragEnd = function(e) {\r\n updateInfo();\r\n scope.$emit(\"angular-resizable.resizeEnd\", info);\r\n document.removeEventListener('mouseup', dragEnd, false);\r\n document.removeEventListener('mousemove', dragging, false);\r\n element.removeClass('no-transition');\r\n }\r\n var dragStart = function(e, direction) {\r\n dragDir = direction;\r\n axis = dragDir == 'left' || dragDir == 'right' ? 'x' : 'y';\r\n start = axis == 'x' ? e.clientX : e.clientY;\r\n w = parseInt(style.getPropertyValue(\"width\"));\r\n h = parseInt(style.getPropertyValue(\"height\"));\r\n \r\n //prevent transition while dragging\r\n element.addClass('no-transition');\r\n\r\n document.addEventListener('mouseup', dragEnd, false);\r\n document.addEventListener('mousemove', dragging, false);\r\n \r\n // Disable highlighting while dragging\r\n if(e.stopPropagation) e.stopPropagation();\r\n if(e.preventDefault) e.preventDefault();\r\n e.cancelBubble = true;\r\n e.returnValue = false;\r\n \r\n updateInfo();\r\n scope.$emit(\"angular-resizable.resizeStart\", info);\r\n };\r\n\r\n for(var i=0;i list.scrollTop + list.clientHeight) {\r\n list.scrollTop = item.offsetTop + item.offsetHeight - list.clientHeight;\r\n\r\n }\r\n\r\n });\r\n };\r\n\r\n }\r\n };\r\n }\r\n})();","(function () {\r\n angular.module('invesfleet')\r\n .directive('searcher', searcher);\r\n\r\n searcher.$inject = ['common'];\r\n\r\n function searcher(common) {\r\n\r\n var directive = {\r\n link: link,\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/searcher.html',\r\n scope: {\r\n ngModel: '=?',\r\n searcherInput: '@',\r\n searcherButton: '@',\r\n searcherClearButton: '@',\r\n onSearch: '&?',\r\n onClear: '&?',\r\n placeholder: '@?',\r\n useEnterKey: '=?'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n\r\n var container;\r\n var input;\r\n var button;\r\n var clear;\r\n var searched = false;\r\n var lastSearch = '';\r\n\r\n if (common.isNullOrUndefined(scope.useEnterKey))\r\n scope.useEnterKey = false;\r\n if (common.isNullOrUndefined(scope.placeholder)) {\r\n scope.placeholder = 'Buscar...'; // N� Orden, Exp. o Matr�cula\r\n }\r\n\r\n function hasValue() {\r\n return !common.isNullOrUndefined(input.value) && input.value.length > 0;\r\n }\r\n\r\n function inputFocus() {\r\n if (input === document.activeElement)\r\n return;\r\n setTimeout(() => {\r\n input.focus();\r\n }, 100);\r\n }\r\n\r\n function behave(containerState, buttonState, clearState, inputValue) {\r\n\r\n if (inputValue !== null) {\r\n input.value = inputValue;\r\n scope.ngModel = input.value;\r\n }\r\n\r\n switch (containerState) {\r\n case 'show':\r\n container.classList.add('display');\r\n break;\r\n case 'hide':\r\n container.classList.remove('display');\r\n break;\r\n case 'toggle':\r\n default:\r\n container.classList.toggle('display');\r\n break;\r\n }\r\n\r\n switch (buttonState) {\r\n case 'show':\r\n button.classList.remove('none');\r\n break;\r\n case 'hide':\r\n button.classList.add('none');\r\n break;\r\n case 'toggle':\r\n default:\r\n button.classList.toggle('none');\r\n break;\r\n }\r\n\r\n switch (clearState) {\r\n case 'show':\r\n clear.classList.remove('none');\r\n break;\r\n case 'hide':\r\n clear.classList.add('none');\r\n break;\r\n case 'toggle':\r\n default:\r\n clear.classList.toggle('none');\r\n break;\r\n }\r\n }\r\n\r\n function search() {\r\n lastSearch = input.value;\r\n if (scope.onSearch) {\r\n setTimeout(() => {\r\n scope.onSearch(); \r\n }, 100);\r\n }\r\n }\r\n\r\n function doClear() {\r\n lastSearch = '';\r\n if (scope.onClear) {\r\n setTimeout(() => {\r\n scope.onClear();\r\n }, 100);\r\n }\r\n }\r\n\r\n container = element[0];\r\n input = container.querySelector(scope.searcherInput);\r\n button = container.querySelector(scope.searcherButton);\r\n clear = container.querySelector(scope.searcherClearButton);\r\n\r\n button.addEventListener('click', (event) => {\r\n if (!searched) {\r\n if (!hasValue()) {\r\n behave('toggle', 'show', 'hide', '');\r\n inputFocus();\r\n } else {\r\n search();\r\n behave('show', 'show', 'show', null);\r\n searched = true;\r\n }\r\n } else {\r\n search();\r\n behave('show', 'show', 'show', null);\r\n }\r\n });\r\n\r\n clear.addEventListener('click', (event) => {\r\n behave('hide', 'show', 'hide', '');\r\n doClear();\r\n searched = false;\r\n });\r\n\r\n input.addEventListener('keyup', (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!scope.useEnterKey) {\r\n search();\r\n behave('show', 'show', 'show', null);\r\n searched = true;\r\n } else if (scope.useEnterKey && event.keyCode === 13) {\r\n if (hasValue()) {\r\n search();\r\n behave('show', 'show', 'show', null);\r\n searched = true;\r\n } else {\r\n input.value = lastSearch;\r\n }\r\n }\r\n });\r\n\r\n input.addEventListener('change', (event) => {\r\n if (searched)\r\n behave('show', 'show', 'show', null);\r\n else\r\n behave('show', 'show', 'hide', null);\r\n });\r\n\r\n input.addEventListener('focusin', (event) => {\r\n input.select();\r\n });\r\n\r\n input.addEventListener('focusout', (event) => {\r\n if (!searched && !hasValue()) {\r\n behave('hide', 'show', 'hide', '');\r\n searched = false;\r\n } else if (searched && (!hasValue() || lastSearch != input.value)) {\r\n input.value = lastSearch;\r\n }\r\n });\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('selectStyled', select);\r\n\r\n select.$inject = ['$filter', '$timeout', 'modals', '$state', '$document'];\r\n\r\n function select($filter, $timeout, modals, $state, $document) {\r\n \r\n var directive = {\r\n link: link,\r\n require: ['?^form'],\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/select.html',\r\n scope: {\r\n data: '=', //List of elements\r\n ngModel: '=?', //Item selected\r\n ngModelId: '=?',\r\n idField: '@?', //Default: 'id'\r\n displayField: '@?', //Default: 'nombre'\r\n displayIdField: '@?',\r\n displayExtraField: '@?',\r\n labelText: '@?',\r\n isLoading: '=?', //Expression to display the loading message\r\n loadingText: '@?', //Default: 'Cargando datos...'\r\n emptyText: '@?', //Default: 'No hay elementos'\r\n ngChange: '&?', //Callback function when ngModel changes\r\n onChange: '&?', //New callback(we need to change ngChange with this to be able to make ngModel optional)\r\n ngDisabled: '=?',\r\n autofocus: '<',\r\n defaultOpt: '@?',\r\n placeholder: '@?',\r\n ngRequired: '<',\r\n onBeforeChange: '&?',\r\n\r\n //Entity create/link\r\n entityLink: '@?', //The final link will be: [entityLink + '?id=' + selectedItemId]\r\n entityCreate: '@?', //The string referencing the modal on the service\r\n entityEdit: '@?', //The string referencing the modal on the service\r\n entityCreateCall: '&?',\r\n entityCreateCallback: '&?',\r\n entityEditCallback: '&?'\r\n }\r\n };\r\n return directive;\r\n\r\n /* jshint maxstatements:false, maxcomplexity:false */\r\n function link(scope, element, attrs, ctrls) {\r\n var mainElement = element[0].children[1];\r\n scope.isOpen = false;\r\n scope.filter = { text: '' };\r\n\r\n if(!scope.idField){ scope.idField = 'id'; }\r\n if(!scope.displayField){ scope.displayField = 'nombre'; }\r\n if(!scope.loadingText){ scope.loadingText = 'Cargando datos...'; }\r\n if(!scope.emptyText){ scope.emptyText = 'No hay elementos'; }\r\n if(!scope.placeholder){ scope.placeholder = ''; }\r\n if(!scope.defaultOpt){ scope.defaultOpt = null; }\r\n if(!scope.autofocus){ scope.autofocus = false; } else { scope.autofocus = true;}\r\n if(!scope.ngRequired){ scope.ngRequired = false; } else { scope.ngRequired = true;}\r\n\r\n if(!scope.data) { scope.data = []; }\r\n if(!scope.ngModel) { scope.ngModel = {}; }\r\n\r\n \r\n scope.defaultItem = {};\r\n scope.defaultItem[scope.idField] = null;\r\n scope.defaultItem[scope.displayField] = scope.defaultOpt;\r\n scope.defaultItem[scope.displayIdField] = null;\r\n\r\n scope.emptyItem = {};\r\n scope.emptyItem[scope.idField] = null;\r\n scope.emptyItem[scope.displayField] = null;\r\n scope.emptyItem[scope.displayIdField] = null;\r\n \r\n scope.isSelected = function(){\r\n if(!scope.ngModel){ return false; }\r\n if(scope.ngModel[scope.idField] == null){ return false; }\r\n return true;\r\n };\r\n scope.itemClick = function(item){\r\n selectItem(item);\r\n close();\r\n };\r\n \r\n scope.clearItem = function(item){\r\n if (scope.ngDisabled) { return; }\r\n selectItem(scope.emptyItem);\r\n };\r\n\r\n scope.filterData = function () {\r\n //console.log(scope.labelText + 'filterData');\r\n\r\n if (!scope.data || scope.data.length === 0) { \r\n //console.log('entra empty data');\r\n scope.ngModel = scope.emptyItem; \r\n return; \r\n }\r\n \r\n if(scope.labelText == 'Aplicable a') {\r\n // console.log('entra en');\r\n }\r\n\r\n if(scope.ngModelId){\r\n if(scope.labelText == 'Aplicable a') {\r\n // console.log('es de entidad');\r\n }\r\n\r\n var found = $filter('filter')(scope.data, {[scope.idField]: scope.ngModelId});\r\n if (found.length === 0) {\r\n // console.log('ng modelId ' + scope.ngModelId + ' not found');\r\n scope.ngModel = scope.emptyItem; \r\n }\r\n else { \r\n scope.ngModel = found[0]; \r\n }\r\n }\r\n\r\n //Filtered data by name\r\n var filterInfo = {};\r\n filterInfo[scope.displayField] = scope.filter.text;\r\n if(scope.displayIdField){\r\n filterInfo[scope.displayIdField] = scope.filter.text;\r\n }\r\n if(scope.displayExtraField){\r\n filterInfo[scope.displayExtraField] = scope.filter.text;\r\n }\r\n scope.filteredList = $filter('searchFilter')(scope.data, filterInfo, true);\r\n\r\n \r\n highlightIndex(0);\r\n\r\n if(scope.defaultOpt){\r\n scope.filteredList.unshift(scope.defaultItem);\r\n highlightIndex(1);\r\n }\r\n };\r\n\r\n scope.toggleOpen = function(){\r\n if(scope.ngDisabled) { return; }\r\n\r\n if(scope.isOpen){ close(); }\r\n else { open(); }\r\n };\r\n \r\n /**\r\n * Setting listeners to close when the main element lose focus\r\n */\r\n $timeout(function () {\r\n mainElement.addEventListener('focus',focusEvent,true);\r\n mainElement.addEventListener('blur',blurEvent,true);\r\n });\r\n element.on('keydown', \r\n manageKeydown\r\n ); \r\n scope.$watchCollection('data',\r\n scope.filterData\r\n );\r\n \r\n /**\r\n * Watching the selected item:\r\n * - ngChange callback\r\n */\r\n scope.$watch('ngModel', function (newSelected, oldSelected) {\r\n /* jshint maxcomplexity:false */\r\n //If its an entity we show the create/link buttons\r\n //console.log(scope.labelText + 'watch ngmodel');\r\n //console.log(newSelected);\r\n //console.log(oldSelected);\r\n element.removeClass('add-icon');\r\n if(!scope.isSelected()){\r\n if(scope.entityCreate){ element.addClass('add-icon'); } \r\n }else{\r\n if(scope.entityEdit || scope.entityLink) { element.addClass('add-icon'); } \r\n } \r\n\r\n var newValue = newSelected ? newSelected[scope.idField] : null;\r\n var oldValue = oldSelected ? oldSelected[scope.idField] : null;\r\n\r\n //if((newValue == null || typeof newValue === 'undefined') && (oldValue == null || typeof oldValue === 'undefined')){\r\n // return;\r\n //}\r\n\r\n var index = indexOfById(newSelected, scope.data);\r\n //if(index < 0){\r\n //scope.ngModel = scope.emptyItem;//newValue ? oldSelected : newValue;\r\n if (index >= 0 && scope.data !== null) {\r\n var a = scope.data[index];\r\n scope.ngModel = a;\r\n highlightIndex(index);\r\n }\r\n\r\n scope.ngModelId = scope.ngModel ? scope.ngModel[scope.idField] : null;\r\n \r\n if (!((newSelected === null || typeof newSelected === 'undefined') || (oldSelected === null || typeof oldSelected === 'undefined'))) {\r\n if (newSelected[scope.idField] === oldSelected[scope.idField]) {\r\n return;\r\n }\r\n }\r\n \r\n if (scope.ngChange) {\r\n $timeout(function () {\r\n scope.ngChange();\r\n }); //Calling ngChange callback\r\n }\r\n if (scope.onChange) {\r\n $timeout(function () {\r\n scope.onChange();\r\n }); //Calling onChange callback\r\n }\r\n },\r\n true\r\n );\r\n\r\n scope.$watch(\r\n 'ngModelId',\r\n function (newSelected, oldSelected) {\r\n if (newSelected == null) {\r\n scope.ngModel = scope.emptyItem;\r\n } else if(!scope.ngModel || scope.ngModel[scope.idField] !== newSelected) { \r\n scope.ngModel = { [scope.idField] : newSelected }; \r\n }\r\n },\r\n true\r\n );\r\n\r\n \r\n\r\n /* Private functions */\r\n function focusEvent(){\r\n scope.keepOpen = true;\r\n $timeout(function(){\r\n scope.keepOpen = false;\r\n },0);\r\n }\r\n function blurEvent(){\r\n $timeout(function(){\r\n if(!scope.keepOpen){\r\n close();\r\n }\r\n },0);\r\n }\r\n function manageKeydown (evt) {\r\n /* jshint maxcomplexity:false */\r\n var index = 0;\r\n switch(evt.keyCode){\r\n case 40: //ARROW DOWN\r\n evt.preventDefault();\r\n if(!scope.isOpen){ open(); }\r\n else if(scope.filteredList){\r\n if(scope.highlightItem){\r\n index = indexOfById(scope.highlightItem);\r\n if(index < scope.filteredList.length-1){\r\n index++;\r\n }\r\n }\r\n highlightIndex(index);\r\n }\r\n break;\r\n\r\n case 38: //ARROW UP\r\n evt.preventDefault();\r\n if(!scope.isOpen){ open(); }\r\n else if(scope.filteredList){\r\n if(scope.highlightItem){\r\n index = indexOfById(scope.highlightItem);\r\n if(index > 0){\r\n index--; \r\n }\r\n }\r\n highlightIndex(index);\r\n }\r\n break;\r\n \r\n case 13: //ENTER\r\n if(scope.highlightItem && scope.isOpen){ selectItem(scope.highlightItem); }\r\n break;\r\n \r\n case 9: //TAB\r\n if(scope.highlightItem && scope.isOpen){ selectItem(scope.highlightItem); }\r\n break;\r\n default:\r\n if(!scope.isOpen && \r\n ((evt.keyCode <= 48 && evt.keyCode <= 57) ||\r\n (evt.keyCode <= 65 && evt.keyCode <= 90) ||\r\n (evt.keyCode <= 97 && evt.keyCode <= 122))){\r\n var char = (65 <= evt.keyCode && evt.keyCode <= 90)? evt.keyCode+32 : evt.keyCode;\r\n scope.filter.text = String.fromCharCode(char);\r\n open();\r\n }\r\n break;\r\n }\r\n scope.$apply();\r\n }\r\n\r\n function selectItem(item) {\r\n if(scope.onBeforeChange){\r\n scope.onBeforeChange().then(function(){\r\n _selectItem(item);\r\n }, function(){\r\n return;\r\n });\r\n }else{\r\n _selectItem(item);\r\n }\r\n }\r\n\r\n function _selectItem(item) {\r\n highlightIndex(indexOfById(item));\r\n if(scope.defaultOpt && item === scope.defaultItem){\r\n scope.ngModel = scope.emptyItem;\r\n } else{\r\n scope.ngModel = item;\r\n }\r\n if(ctrls[0]){ ctrls[0].$dirty = true; }\r\n if(ctrls[1]){ ctrls[1].$dirty = true; }\r\n }\r\n\r\n\t\t\tfunction highlightIndex(index) {\r\n if (scope.filteredList !== null && typeof scope.filteredList !== 'undefined') { \r\n if (index > -1) {\r\n scope.highlightItem = scope.filteredList[index];\r\n moveListTo(index);\r\n } else {\r\n scope.highlightItem = null;\r\n moveListTo(0);\r\n }\r\n } else {\r\n scope.highlightItem = null;\r\n }\r\n }\r\n function open(){\r\n if(scope.ngDisabled) { return; }\r\n\r\n scope.isOpen = true;\r\n\r\n //Timeout to wait for the DOM to render\r\n $timeout( function () { //Render the div\r\n if(scope.isOpen){\r\n element[0].querySelectorAll('input')[0].focus();\r\n scope.filterData();\r\n\r\n if(scope.isSelected()){\r\n $timeout( function(){ //Render the list items\r\n highlightIndex(indexOfById(scope.ngModel)); \r\n });\r\n }\r\n }\r\n });\r\n }\r\n function close(){\r\n scope.isOpen = false;\r\n scope.filter.text = '';\r\n }\r\n function moveListTo(index){\r\n //var index = i+1;\r\n var list = element.find('ul')[0];\r\n if(!list || !list.children || list.children.length <= 0) { return; }\r\n if(index < 0 || index >= list.children.length){ return; }\r\n\r\n var item = list.children[index];\r\n\r\n var itemTop = item.offsetTop - list.offsetTop;\r\n\r\n //If we need to scroll up to find the item\r\n if(itemTop < list.scrollTop){\r\n list.scrollTop = itemTop;\r\n }\r\n\r\n //If we need to scroll down to find the item\r\n if(itemTop + item.offsetHeight > list.scrollTop + list.clientHeight){\r\n list.scrollTop = itemTop + item.offsetHeight - list.clientHeight;\r\n }\r\n }\r\n function indexOfById(item, list){\r\n if(!item) { return -1; }\r\n if(!list) { list = scope.filteredList; }\r\n if(!list) { return -1; }\r\n var value = item[scope.idField];\r\n for(var i = 0; i < list.length; i += 1) {\r\n if(list[i][scope.idField] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n scope.$on('$destroy', function() {\r\n mainElement.removeEventListener('focus',focusEvent,true);\r\n mainElement.removeEventListener('blur',blurEvent,true);\r\n });\r\n\r\n\r\n /**\r\n * Modal for creating entities quickly\r\n */\r\n scope.showCreateModal = function(){\r\n //if(scope.entityCreate){\r\n // modals.showModal(scope.entityCreate, scope.entityCreateCallback);\r\n //}\r\n scope.entityCreateCall();\r\n };\r\n\r\n /**\r\n * Link to entity info [entityLink + '?id=' + selectedItemId]\r\n */\r\n scope.goToLink = function(){\r\n $state.transitionTo(scope.entityLink, {id: scope.ngModel[scope.idField]});\r\n }; \r\n }\r\n }\r\n})();","'use strict';\r\n(function () {\r\n angular\r\n .module('invesfleet')\r\n .directive('suspendWatchers', suspendWatchers);\r\n\r\n suspendWatchers.$inject = [];\r\n\r\n function suspendWatchers() {\r\n\r\n return {\r\n restrict: 'AE',\r\n scope : true, //Create a child scope to wrap whatever we want to suspend\r\n link: function(scope, element, attr) {\r\n var deregisterClosed;\r\n var deregisterOpened;\r\n\r\n if (attr.suspendOn) {\r\n deregisterClosed = scope.$on('tab-closed-' + attr.suspendOn, function (e) {\r\n toggleWatchers(scope, false);\r\n });\r\n deregisterOpened = scope.$on('tab-opened-' + attr.suspendOn, function (e) {\r\n toggleWatchers(scope, true);\r\n });\r\n }\r\n\r\n function toggleWatchers(scope, enable) {\r\n var digest, current, next = scope;\r\n do {\r\n current = next;\r\n if (enable) {\r\n if (current.hasOwnProperty('$$watchersBackup')) {\r\n current.$$watchers = current.$$watchersBackup;\r\n delete current.$$watchersBackup;\r\n delete current.$watch;\r\n digest = !scope.$root.$$phase;\r\n }\r\n } else {\r\n if (!current.hasOwnProperty('$$watchersBackup')) {\r\n current.$$watchersBackup = current.$$watchers;\r\n current.$$watchers = null;\r\n\r\n //New watchers added while scope is suspended will now be added to the watchersBackup\r\n current.$watch = function () { \r\n this.$$watchersBackup = this.$$watchersBackup || [];\r\n this.$$watchers = this.$$watchersBackup;\r\n this.constructor.prototype.$watch.apply(this, arguments);\r\n this.$$watchers = null;\r\n };\r\n }\r\n }\r\n next = current.$$childHead;\r\n while (!next && current !== scope) {\r\n if (current.$$nextSibling) {\r\n next = current.$$nextSibling;\r\n } else {\r\n current = current.$parent;\r\n }\r\n }\r\n } while (next);\r\n if (digest) {\r\n scope.$digest();\r\n }\r\n }\r\n function disableDigest() {\r\n toggleWatchers(scope, false);\r\n }\r\n function enableDigest() {\r\n toggleWatchers(scope, true);\r\n }\r\n\r\n scope.$on('$destroy', function() {\r\n deregisterClosed();\r\n deregisterOpened();\r\n });\r\n }\r\n };\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .directive('invesTabs', invesTabs);\r\n\r\n invesTabs.$inject = ['$window', '$rootScope'];\r\n \r\n function invesTabs($window, $rootScope) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n link: link,\r\n restrict: 'EA',\r\n templateUrl: 'app/views/directives/invesTabs.html',\r\n scope: {\r\n tabManager: '=tabManager'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n\r\n\r\n var $activeTab = $('.nav-tabs li.active');\r\n $activeTab.addClass('measure');\r\n var width = $activeTab.width();\r\n $activeTab.removeClass('measure').css('min-width', width);\r\n\r\n/*\r\n var STEP_SIZE = 7; //Pixels per frame\r\n\r\n var ul = element[0].getElementsByTagName('UL')[0];\r\n var lis = ul.getElementsByTagName('LI');\r\n \r\n var targetTab = 0; \r\n var onTarget = true;\r\n var lastWidth = 0;\r\n var lastScrollWidth = 0;\r\n\r\n scope.overflow = false;\r\n\r\n //Functions\r\n scope.scrollTabs = scrollTabs;\r\n scope.goToTab = goToTab;\r\n scope.isArrowActive = isArrowActive;\r\n\r\n onframe();\r\n \r\n function onframe(){\r\n scope.overflow = ul.scrollWidth > ul.offsetWidth;\r\n if(ul.offsetWidth !== lastWidth){ lastWidth = ul.offsetWidth; reset(); }\r\n if(ul.scrollWidth !== lastScrollWidth){ lastScrollWidth = ul.scrollWidth; reset(); }\r\n takeStep();\r\n requestAnimationFrame(onframe);\r\n }\r\n\r\n function scrollTabs(dir){\r\n var maxScroll = ul.scrollWidth - ul.offsetWidth;\r\n\r\n if(dir === 'left' && targetTab > 0){\r\n targetTab--;\r\n onTarget = false;\r\n }else if (dir === 'right' && getOffset(targetTab) < maxScroll){\r\n targetTab++;\r\n onTarget = false;\r\n }\r\n }\r\n\r\n function takeStep(){\r\n if(onTarget){ return; }\r\n if(targetTab < 0 || targetTab >= lis.length){ reset(); return;}\r\n\r\n var maxScroll = ul.scrollWidth - ul.offsetWidth;\r\n var targetOffset = getOffset(targetTab);\r\n var sign = Math.sign(targetOffset - ul.scrollLeft);\r\n var step = sign * STEP_SIZE;\r\n\r\n if(ul.scrollLeft + step >= maxScroll){\r\n ul.scrollLeft = maxScroll;\r\n onTarget = true;\r\n }\r\n else if(ul.scrollLeft + step >= targetOffset && sign >= 0 || \r\n ul.scrollLeft + step <= targetOffset && sign < 0) {\r\n ul.scrollLeft = targetOffset;\r\n onTarget = true;\r\n }else{\r\n ul.scrollLeft += step;\r\n }\r\n }\r\n\r\n function goToTab(tab){\r\n if(tab < 0 || tab >= lis.length){ return; }\r\n var maxScroll = ul.scrollWidth - ul.offsetWidth;\r\n if(getOffset(tab) > maxScroll){\r\n targetTab = getMaxTab();\r\n onTarget = false;\r\n }else{\r\n targetTab = tab;\r\n onTarget = false;\r\n }\r\n }\r\n\r\n function getMaxTab(){\r\n var maxScroll = ul.scrollWidth - ul.offsetWidth;\r\n var offset = 0;\r\n for (var i = 0; i < lis.length; i++) {\r\n if(offset >= maxScroll){ return i; }\r\n offset += lis[i].offsetWidth;\r\n }\r\n }\r\n\r\n function getOffset(tab){\r\n var offset = 0;\r\n for (var i = 0; i < lis.length; i++) {\r\n if (i === tab) {return offset;}\r\n offset += lis[i].offsetWidth;\r\n }\r\n return offset;\r\n }\r\n\r\n function reset(){\r\n targetTab = 0;\r\n onTarget = true;\r\n ul.scrollLeft = 0;\r\n }\r\n\r\n function isArrowActive(dir){\r\n if(dir === 'left'){\r\n return targetTab > 0;\r\n }else if(dir === 'right'){\r\n return targetTab < getMaxTab();\r\n }\r\n }\r\n\r\n*/\r\n }\r\n }\r\n\r\n})();","(function () { \r\nangular.module('invesfleet')\r\n .directive('validate', validate);\r\n\r\n validate.$inject = [];\r\n\r\n function validate() {\r\n \r\n return {\r\n restrict: 'A',\r\n scope: {\r\n ngModel: '@'\r\n },\r\n link: function(scope, element, attrs){\r\n\r\n $(document).on('validate-error', function () {\r\n if (!element.validity.valid) { //validity.valid = true if all validity.attributes = false\r\n\r\n if (element.validity.badInput) {\r\n //Browser unable to convert the input\r\n $(element).addClass('error error-bad-input');\r\n }\r\n if (element.validity.customError) {\r\n //element's custom validity message has been set to a non-empty string by calling the element's setCustomValidity() method.\r\n $(element).addClass('error error-custom-error');\r\n }\r\n if (element.validity.patternMismatch) {\r\n //pattern attribute does not match\r\n $(element).addClass('error error-pattern-mismatch');\r\n }\r\n if (element.validity.rangeOverflow) {\r\n //max < input\r\n $(element).addClass('error error-range-overflow');\r\n }\r\n if (element.validity.rangeUnderflow) {\r\n //min > input\r\n $(element).addClass('error error-range-underflow');\r\n }\r\n if (element.validity.stepMismatch) {\r\n //pattern attribute does not match\r\n $(element).addClass('error error-step-mismatch');\r\n }\r\n if (element.validity.tooLong) {\r\n //maxlength < input.length\r\n $(element).addClass('error error-too-long');\r\n }\r\n if (element.validity.tooShort) {\r\n //minLength > input.length\r\n $(element).addClass('error error-too-short');\r\n }\r\n if (element.validity.typeMismatch) {\r\n //type = email || type = url and does not match the input\r\n $(element).addClass('error error-type-mismatch');\r\n }\r\n if (element.validity.valueMissing) {\r\n //required but no value\r\n $(element).addClass('error error-value-missing');\r\n }\r\n }\r\n \r\n });\r\n\r\n }\r\n };\r\n }\r\n})();","(function () {\r\n angular.module('invesfleet')\r\n .directive('zoomSrc',\r\n function ($document, $timeout) {\r\n /*USAGE:\r\n zoom-src=\"img\" // When the element with this attribute is clicked it will open the img\r\n */\r\n\r\n return {\r\n restrict: 'A',\r\n scope:{\r\n zoomSrc: '@'\r\n },\r\n link: function (scope, element, attrs) {\r\n\r\n var body = $document.find('body')[0];\r\n var overlay = angular.element('');\r\n //clone = element.clone(true);//.attr('src', attrs.large);\r\n var clone = angular.element('
');\r\n\r\n\r\n scope.match = function (el, target) {\r\n var rect = target[0].getBoundingClientRect();\r\n el.css('height', rect.height + 'px');\r\n el.css('left', rect.left + 'px');\r\n el.css('top', rect.top + 'px');\r\n el.css('width', rect.width + 'px');\r\n };\r\n\r\n scope.scaleDown = function (el) {\r\n el.css('transform', 'scale(1) translateX(0px) translateY(0px)');\r\n };\r\n\r\n scope.scaleUp = function (el) {\r\n var targetH = el[0].naturalHeight;\r\n var targetW = el[0].naturalWidth;\r\n var rect = el[0].getBoundingClientRect();\r\n\r\n var maxH = window.innerHeight - 40;\r\n var maxW = window.innerWidth - 40;\r\n\r\n if(targetH > maxH){\r\n targetH = maxH;\r\n targetW = el[0].naturalWidth / el[0].naturalHeight * targetH;\r\n }\r\n \r\n if(targetW > maxW){\r\n targetW = maxW;\r\n targetH = el[0].naturalHeight / el[0].naturalWidth * targetW;\r\n }\r\n\r\n var scaleW = (targetW / rect.width);\r\n var scaleH = (targetH / rect.height);\r\n\r\n var x = (((window.innerWidth / 2) - rect.left) / scaleW) - ((rect.width / 2));\r\n var y = (((window.innerHeight / 2) - rect.top) / scaleH) - ((rect.height / 2));\r\n\r\n el.css('transform',\r\n 'scale(' + scaleW + ',' + scaleH + ') translateX(' + x + 'px) translateY(' + y + 'px)');\r\n };\r\n\r\n overlay.append(clone);\r\n\r\n overlay.bind('click', function () {\r\n scope.match(clone, element);\r\n overlay.removeClass('show');\r\n scope.scaleDown(clone);\r\n $timeout(function () {\r\n body.removeChild(overlay[0]);\r\n }, 500);\r\n });\r\n\r\n element.bind('click', function () {\r\n scope.match(clone, element);\r\n body.appendChild(overlay[0]);\r\n $timeout(function () {\r\n overlay.addClass('show');\r\n scope.scaleUp(clone);\r\n }, 10);\r\n });\r\n }\r\n };\r\n });\r\n}());","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .filter('capitalize', capitalizeFilter);\r\n\r\n function capitalizeFilter() {\r\n return function(text){\r\n if(text && typeof text === 'string' || text instanceof String){\r\n var lowercaseText = text.toLowerCase();\r\n return lowercaseText.substr(0,1).toUpperCase()+ lowercaseText.substr(1,lowercaseText.length-1);\r\n\r\n }\r\n return text;\r\n };\r\n }\r\n\r\n})();","'use strict';\r\n(function() {\r\n\r\n angular\r\n .module('invesfleet')\r\n .filter('cleanFilter', cleanFilter);\r\n\r\n cleanFilter.$inject = ['$filter'];\r\n\r\n function cleanFilter() {\r\n\r\n /**\r\n * FILTER USED TO CLEAN A STRING\r\n * - Lowercase\r\n * - Removes accents and other special characters (camión -> camion)\r\n * - If removeSymbols is true it will remove anything besides letters and numbers\r\n */\r\n\r\n var defaultDiacriticsRemovalMap = [\r\n /* jshint ignore:start */\r\n {'base':'A', 'letters':'\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'},\r\n {'base':'AA','letters':'\\uA732'},\r\n {'base':'AE','letters':'\\u00C6\\u01FC\\u01E2'},\r\n {'base':'AO','letters':'\\uA734'},\r\n {'base':'AU','letters':'\\uA736'},\r\n {'base':'AV','letters':'\\uA738\\uA73A'},\r\n {'base':'AY','letters':'\\uA73C'},\r\n {'base':'B', 'letters':'\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'},\r\n {'base':'C', 'letters':'\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'},\r\n {'base':'D', 'letters':'\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0'},\r\n {'base':'DZ','letters':'\\u01F1\\u01C4'},\r\n {'base':'Dz','letters':'\\u01F2\\u01C5'},\r\n {'base':'E', 'letters':'\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'},\r\n {'base':'F', 'letters':'\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'},\r\n {'base':'G', 'letters':'\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'},\r\n {'base':'H', 'letters':'\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'},\r\n {'base':'I', 'letters':'\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'},\r\n {'base':'J', 'letters':'\\u004A\\u24BF\\uFF2A\\u0134\\u0248'},\r\n {'base':'K', 'letters':'\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'},\r\n {'base':'L', 'letters':'\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'},\r\n {'base':'LJ','letters':'\\u01C7'},\r\n {'base':'Lj','letters':'\\u01C8'},\r\n {'base':'M', 'letters':'\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'},\r\n {'base':'N', 'letters':'\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'},\r\n {'base':'NJ','letters':'\\u01CA'},\r\n {'base':'Nj','letters':'\\u01CB'},\r\n {'base':'O', 'letters':'\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'},\r\n {'base':'OI','letters':'\\u01A2'},\r\n {'base':'OO','letters':'\\uA74E'},\r\n {'base':'OU','letters':'\\u0222'},\r\n {'base':'OE','letters':'\\u008C\\u0152'},\r\n {'base':'oe','letters':'\\u009C\\u0153'},\r\n {'base':'P', 'letters':'\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'},\r\n {'base':'Q', 'letters':'\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'},\r\n {'base':'R', 'letters':'\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'},\r\n {'base':'S', 'letters':'\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'},\r\n {'base':'T', 'letters':'\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'},\r\n {'base':'TZ','letters':'\\uA728'},\r\n {'base':'U', 'letters':'\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'},\r\n {'base':'V', 'letters':'\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'},\r\n {'base':'VY','letters':'\\uA760'},\r\n {'base':'W', 'letters':'\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'},\r\n {'base':'X', 'letters':'\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'},\r\n {'base':'Y', 'letters':'\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'},\r\n {'base':'Z', 'letters':'\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'},\r\n {'base':'a', 'letters':'\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'},\r\n {'base':'aa','letters':'\\uA733'},\r\n {'base':'ae','letters':'\\u00E6\\u01FD\\u01E3'},\r\n {'base':'ao','letters':'\\uA735'},\r\n {'base':'au','letters':'\\uA737'},\r\n {'base':'av','letters':'\\uA739\\uA73B'},\r\n {'base':'ay','letters':'\\uA73D'},\r\n {'base':'b', 'letters':'\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'},\r\n {'base':'c', 'letters':'\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'},\r\n {'base':'d', 'letters':'\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'},\r\n {'base':'dz','letters':'\\u01F3\\u01C6'},\r\n {'base':'e', 'letters':'\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'},\r\n {'base':'f', 'letters':'\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'},\r\n {'base':'g', 'letters':'\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'},\r\n {'base':'h', 'letters':'\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'},\r\n {'base':'hv','letters':'\\u0195'},\r\n {'base':'i', 'letters':'\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'},\r\n {'base':'j', 'letters':'\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'},\r\n {'base':'k', 'letters':'\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'},\r\n {'base':'l', 'letters':'\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'},\r\n {'base':'lj','letters':'\\u01C9'},\r\n {'base':'m', 'letters':'\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'},\r\n {'base':'n', 'letters':'\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'},\r\n {'base':'nj','letters':'\\u01CC'},\r\n {'base':'o', 'letters':'\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'},\r\n {'base':'oi','letters':'\\u01A3'},\r\n {'base':'ou','letters':'\\u0223'},\r\n {'base':'oo','letters':'\\uA74F'},\r\n {'base':'p','letters':'\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'},\r\n {'base':'q','letters':'\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'},\r\n {'base':'r','letters':'\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'},\r\n {'base':'s','letters':'\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'},\r\n {'base':'t','letters':'\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'},\r\n {'base':'tz','letters':'\\uA729'},\r\n {'base':'u','letters': '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'},\r\n {'base':'v','letters':'\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'},\r\n {'base':'vy','letters':'\\uA761'},\r\n {'base':'w','letters':'\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'},\r\n {'base':'x','letters':'\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'},\r\n {'base':'y','letters':'\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'},\r\n {'base':'z','letters':'\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'}\r\n /* jshint ignore:end */\r\n ];\r\n\r\n var diacriticsMap = {};\r\n\r\n //INIT\r\n (function(){\r\n for (var i=0; i < defaultDiacriticsRemovalMap .length; i++){\r\n var letters = defaultDiacriticsRemovalMap [i].letters;\r\n for (var j=0; j < letters.length ; j++){\r\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base;\r\n }\r\n }\r\n })();\r\n\r\n return function(string, removeSymbols){\r\n removeSymbols = (typeof removeSymbols === 'undefined') ? null : removeSymbols; //RequireId defaults to TRUE\r\n\r\n if(isValidString(string)){\r\n var result = string.toLowerCase(); //A minuscula\r\n result = removeDiacritics(result); //Quitar accentos y cosas raras\r\n if(removeSymbols){\r\n result = result.replace(/[^A-Za-z0-9ñÑ]/g, ''); //Eliminar todo menos letras y números\r\n }\r\n return result;\r\n }\r\n return string;\r\n };\r\n\r\n function removeDiacritics (str) {\r\n return str.replace(/[^\\u0000-\\u007E]/g, function(a){ \r\n return diacriticsMap[a] || a; \r\n });\r\n } \r\n\r\n function isValidString(obj){\r\n if(!obj) { return false; }\r\n if(!(typeof obj === 'string' || obj instanceof String)) { return false; }\r\n return true;\r\n }\r\n }\r\n})();","\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .filter('dateFormat', dateFormatFilter);\r\n\r\n function dateFormatFilter($filter) {\r\n /*jshint maxcomplexity:false */\r\n return function (ISOstring) {\r\n\r\n var MONTHS = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio',\r\n 'Agosto','Septiembre','Octubre','Noviembre','Diciembre'];\r\n\r\n if(ISOstring === null){ return ''; }\r\n var date = new Date(ISOstring);\r\n\r\n var today = Date.NewDate();\r\n\r\n\r\n if(today.getFullYear() === date.getFullYear() && \r\n today.getMonth() === date.getMonth() && \r\n today.getDate() === date.getDate()){\r\n //Its today\r\n return $filter('date')(date, 'HH:mm');\r\n } else {\r\n var day = $filter('date')(date, 'dd');\r\n var month = MONTHS[date.getMonth()].substring(0, 3);\r\n return day + ' ' + month + '.';\r\n }\r\n };\r\n }\r\n\r\n})();","\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .filter('highlightFilter', highlightFilter);\r\n\r\n function highlightFilter($sce, $filter) {\r\n return function (text, phrase) {\r\n //console.log('highlightFilter >> ');\r\n //console.log('phrase >> ' + phrase);\r\n //console.log('text >> ' + text);\r\n if (phrase) {\r\n var cleanPhrase = $filter('cleanFilter')(phrase,null);\r\n var cleanText = $filter('cleanFilter')(text,null);\r\n \r\n var regex = new RegExp('(' + escapeRegExp(cleanPhrase) + ')', 'gi');\r\n var result, indices = [];\r\n while ( (result = regex.exec(cleanText)) ) {\r\n indices.push(result.index);\r\n }\r\n\r\n if(indices.length === 0){ return $sce.trustAsHtml(text); }\r\n var newText = '';\r\n\r\n for(var i = 0; i < indices.length; i++){\r\n var index = indices[i];\r\n\r\n if(i > 0){\r\n newText = newText + text.substring(indices[i-1] + phrase.length, index);\r\n }else {\r\n newText = newText + text.substring(0, index);\r\n }\r\n\r\n newText = newText + '' + \r\n text.substring(index, index + phrase.length) + '';\r\n\r\n if(i === indices.length -1){\r\n newText = newText + text.substring(index + phrase.length, text.length);\r\n }\r\n }\r\n\r\n return $sce.trustAsHtml(newText);\r\n }\r\n return $sce.trustAsHtml(text);\r\n };\r\n\r\n function escapeRegExp(str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\r\n }\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .filter('initials', initialsFilter);\r\n\r\n function initialsFilter() {\r\n /*jshint maxcomplexity:false */\r\n return function (name) {\r\n if(name == null) { return '-'; }\r\n \r\n //var inls = name.split(' ') || [];\r\n\r\n var re = /[A-Za-z0-9][A-Za-z0-9]*/g;\r\n var inls = name.match(re);\r\n\r\n for (var i = 0; i < inls.length; i++) {\r\n inls[i] = inls[i][0];\r\n }\r\n\r\n if(inls == null) { return '-'; }\r\n \r\n inls = ((inls[0] || '') + (inls[1] || '')).toUpperCase();\r\n return inls;\r\n };\r\n }\r\n\r\n})();","'use strict';\r\n(function () {\r\n\r\n angular\r\n .module('invesfleet')\r\n .filter('searchFilter', SearchFilter);\r\n\r\n SearchFilter.$inject = ['$filter', 'common'];\r\n\r\n function SearchFilter($filter, common) {\r\n\r\n var defaultDiacriticsRemovalMap = [\r\n /* jshint ignore:start */\r\n { 'base': 'A', 'letters': '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F' },\r\n { 'base': 'AA', 'letters': '\\uA732' },\r\n { 'base': 'AE', 'letters': '\\u00C6\\u01FC\\u01E2' },\r\n { 'base': 'AO', 'letters': '\\uA734' },\r\n { 'base': 'AU', 'letters': '\\uA736' },\r\n { 'base': 'AV', 'letters': '\\uA738\\uA73A' },\r\n { 'base': 'AY', 'letters': '\\uA73C' },\r\n { 'base': 'B', 'letters': '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' },\r\n { 'base': 'C', 'letters': '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E' },\r\n { 'base': 'D', 'letters': '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0' },\r\n { 'base': 'DZ', 'letters': '\\u01F1\\u01C4' },\r\n { 'base': 'Dz', 'letters': '\\u01F2\\u01C5' },\r\n { 'base': 'E', 'letters': '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E' },\r\n { 'base': 'F', 'letters': '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' },\r\n { 'base': 'G', 'letters': '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E' },\r\n { 'base': 'H', 'letters': '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D' },\r\n { 'base': 'I', 'letters': '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197' },\r\n { 'base': 'J', 'letters': '\\u004A\\u24BF\\uFF2A\\u0134\\u0248' },\r\n { 'base': 'K', 'letters': '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2' },\r\n { 'base': 'L', 'letters': '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780' },\r\n { 'base': 'LJ', 'letters': '\\u01C7' },\r\n { 'base': 'Lj', 'letters': '\\u01C8' },\r\n { 'base': 'M', 'letters': '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' },\r\n { 'base': 'N', 'letters': '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4' },\r\n { 'base': 'NJ', 'letters': '\\u01CA' },\r\n { 'base': 'Nj', 'letters': '\\u01CB' },\r\n { 'base': 'O', 'letters': '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C' },\r\n { 'base': 'OI', 'letters': '\\u01A2' },\r\n { 'base': 'OO', 'letters': '\\uA74E' },\r\n { 'base': 'OU', 'letters': '\\u0222' },\r\n { 'base': 'OE', 'letters': '\\u008C\\u0152' },\r\n { 'base': 'oe', 'letters': '\\u009C\\u0153' },\r\n { 'base': 'P', 'letters': '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' },\r\n { 'base': 'Q', 'letters': '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A' },\r\n { 'base': 'R', 'letters': '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782' },\r\n { 'base': 'S', 'letters': '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784' },\r\n { 'base': 'T', 'letters': '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786' },\r\n { 'base': 'TZ', 'letters': '\\uA728' },\r\n { 'base': 'U', 'letters': '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244' },\r\n { 'base': 'V', 'letters': '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' },\r\n { 'base': 'VY', 'letters': '\\uA760' },\r\n { 'base': 'W', 'letters': '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' },\r\n { 'base': 'X', 'letters': '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C' },\r\n { 'base': 'Y', 'letters': '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE' },\r\n { 'base': 'Z', 'letters': '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762' },\r\n { 'base': 'a', 'letters': '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250' },\r\n { 'base': 'aa', 'letters': '\\uA733' },\r\n { 'base': 'ae', 'letters': '\\u00E6\\u01FD\\u01E3' },\r\n { 'base': 'ao', 'letters': '\\uA735' },\r\n { 'base': 'au', 'letters': '\\uA737' },\r\n { 'base': 'av', 'letters': '\\uA739\\uA73B' },\r\n { 'base': 'ay', 'letters': '\\uA73D' },\r\n { 'base': 'b', 'letters': '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' },\r\n { 'base': 'c', 'letters': '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184' },\r\n { 'base': 'd', 'letters': '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A' },\r\n { 'base': 'dz', 'letters': '\\u01F3\\u01C6' },\r\n { 'base': 'e', 'letters': '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD' },\r\n { 'base': 'f', 'letters': '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' },\r\n { 'base': 'g', 'letters': '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F' },\r\n { 'base': 'h', 'letters': '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265' },\r\n { 'base': 'hv', 'letters': '\\u0195' },\r\n { 'base': 'i', 'letters': '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131' },\r\n { 'base': 'j', 'letters': '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' },\r\n { 'base': 'k', 'letters': '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3' },\r\n { 'base': 'l', 'letters': '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747' },\r\n { 'base': 'lj', 'letters': '\\u01C9' },\r\n { 'base': 'm', 'letters': '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' },\r\n { 'base': 'n', 'letters': '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5' },\r\n { 'base': 'nj', 'letters': '\\u01CC' },\r\n { 'base': 'o', 'letters': '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275' },\r\n { 'base': 'oi', 'letters': '\\u01A3' },\r\n { 'base': 'ou', 'letters': '\\u0223' },\r\n { 'base': 'oo', 'letters': '\\uA74F' },\r\n { 'base': 'p', 'letters': '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' },\r\n { 'base': 'q', 'letters': '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759' },\r\n { 'base': 'r', 'letters': '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783' },\r\n { 'base': 's', 'letters': '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B' },\r\n { 'base': 't', 'letters': '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787' },\r\n { 'base': 'tz', 'letters': '\\uA729' },\r\n { 'base': 'u', 'letters': '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289' },\r\n { 'base': 'v', 'letters': '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' },\r\n { 'base': 'vy', 'letters': '\\uA761' },\r\n { 'base': 'w', 'letters': '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' },\r\n { 'base': 'x', 'letters': '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D' },\r\n { 'base': 'y', 'letters': '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF' },\r\n { 'base': 'z', 'letters': '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763' }\r\n /* jshint ignore:end */\r\n ];\r\n var diacriticsMap = {};\r\n\r\n //INIT\r\n (function () {\r\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\r\n var letters = defaultDiacriticsRemovalMap[i].letters;\r\n for (var j = 0; j < letters.length; j++) {\r\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap[i].base;\r\n }\r\n }\r\n })();\r\n\r\n //FILTER FUNCTION\r\n return function (data, query, clustered) {\r\n if (!data) { return null; }\r\n var output = null;\r\n if (clustered) { //FILTRO 'OR' POR DIFERENTES CAMPOS\r\n data = processData(data, query, clustered);\r\n query = processQuery(query, clustered);\r\n output = $filter('filter')(data, query, function (actual, expected) {\r\n if (common.isNullOrUndefined(expected) || common.isNullOrUndefined(actual)) {\r\n return false;\r\n }\r\n\r\n var actualFields;\r\n if (typeof actual == 'string')\r\n actualFields = actual.split('-');\r\n else\r\n actualFields = [actual];\r\n\r\n var expectedFields;\r\n if (typeof expected == 'string')\r\n expectedFields = expected.split('-');\r\n else\r\n expectedFields = [expected];\r\n\r\n for (var i = 0; i < actualFields.length; i++) {\r\n if (actualFields[i].includes(expectedFields[i])) { return true; }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n else { //FILTRO NORMAL\r\n output = $filter('filter')(data, query, function (actual, expected) {\r\n var cleanValue = processString(actual);\r\n var cleanQuery = processString(expected);\r\n return cleanValue.includes(cleanQuery);\r\n });\r\n }\r\n return output;\r\n };\r\n\r\n function processData(data, query, clustered) {\r\n for (var i = 0; i < data.length; i++) {\r\n var clusteredKey = '';\r\n for (var key in query) {\r\n if (key) {\r\n var arr = key.split('.');\r\n var obj = data[i];\r\n while (arr.length && (obj = obj[arr.shift()])) {\r\n var doSomething = null;\r\n }\r\n\r\n if (query.hasOwnProperty(key)) {\r\n clusteredKey += processString(obj) + '-';\r\n }\r\n }\r\n }\r\n clusteredKey = clusteredKey.slice(0, -1);\r\n data[i].clusteredKey = clusteredKey;\r\n }\r\n return data;\r\n }\r\n\r\n function processQuery(query, clustered) {\r\n if (!clustered) { return query; }\r\n\r\n var clusteredKey = '';\r\n for (var key in query) {\r\n if (query.hasOwnProperty(key)) {\r\n clusteredKey += processString(query[key]) + '-';\r\n }\r\n }\r\n clusteredKey = clusteredKey.slice(0, -1);\r\n return { clusteredKey: clusteredKey };\r\n }\r\n\r\n function processString(string) {\r\n if (!string) { return ''; }\r\n return $filter('cleanFilter')(string, true);\r\n }\r\n }\r\n})();\r\n","\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .filter('timeFormat', timeFormatFilter);\r\n\r\n function timeFormatFilter() {\r\n /*jshint maxcomplexity:false */\r\n return function (seconds) {\r\n\r\n if(seconds === null){ return ''; }\r\n\r\n var neg = seconds < 0;\r\n seconds = Math.abs(seconds);\r\n var days = Math.floor(seconds / (3600 * 24));\r\n seconds = seconds - (days * (3600 * 24));\r\n var hours = Math.floor(seconds / 3600);\r\n seconds = seconds - hours * 3600;\r\n var minutes = Math.floor(seconds / 60);\r\n seconds = seconds - minutes * 60;\r\n var sec = Math.floor(seconds);\r\n\r\n var result = neg ? '-' : '';\r\n result += days ? days.toString() + 'd ' : '';\r\n if(days < 10) { result += hours ? hours.toString() + 'h ' : ''; }\r\n if(!days){\r\n result += minutes ? minutes.toString() + 'm ' : '';\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\tresult += '<1m'; \r\n\t\t\t\t}\r\n }\r\n\r\n return result;\r\n };\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('aceptacionServicioService', aceptacionServicioService);\r\n\r\n aceptacionServicioService.$inject = [\r\n '$q',\r\n '$rootScope',\r\n '$templateCache',\r\n 'ModalService',\r\n 'notificationService',\r\n 'clientService',\r\n '$state',\r\n 'genericDataService',\r\n 'ordersService'\r\n ];\r\n\r\n function aceptacionServicioService (\r\n $q,\r\n $rootScope,\r\n $templateCache,\r\n ModalService,\r\n notificationService,\r\n clientService,\r\n $state,\r\n genericDataService,\r\n ordersService\r\n ) {\r\n\r\n /*jshint maxcomplexity:false */\r\n var MSG_ERROR_DEFAULT = 'Ha ocurrido un error inesperado.';\r\n\r\n var acceptServiceTemplate = $templateCache.get('app/views/modals/aceptacion/acceptServiceTemplate.html');\r\n var rejectServiceTemplate = $templateCache.get('app/views/modals/aceptacion/rejectServiceTemplate.html');\r\n var showErrorServiceTemplate = $templateCache.get('app/views/modals/aceptacion/mostrarErrorTemplate.html');\r\n var manageServiceTemplate = $templateCache.get('app/views/modals/aceptacion/manageServiceTemplate.html');\r\n\r\n var orderAcceptationErrors = {};\r\n\r\n var service = {\r\n newOrderNotification: newOrderNotification,\r\n acceptServiceModal: acceptServiceModal,\r\n rejectServiceModal: rejectServiceModal,\r\n orderAcceptationErrors: orderAcceptationErrors,\r\n discardService: discardService,\r\n showErrorModal: showErrorModal,\r\n manageService: manageService\r\n };\r\n\r\n return service;\r\n\r\n //Notificacion Nuevo Servicio\r\n function newOrderNotification(order) {\r\n\r\n var s = $rootScope.$new();\r\n s.order = order;\r\n s.acceptServiceModal = acceptServiceModal;\r\n s.rejectServiceModal = rejectServiceModal;\r\n s.onClick = function () {\r\n $state.transitionTo('flota.OrdenesActivas');\r\n };\r\n\r\n s.icon = order.insurerId !== null ? clientService.getBrandLogo(order.insurerId) : 'content/img/logo-invesfleet.png';\r\n\r\n var notification = {\r\n title: 'Existen órdenes nuevas',\r\n message: 'Click para visualizar',\r\n icon: s.icon,\r\n templateUrl: 'app/views/tablesTemplates/notificationTemplates/newOrderNotification.html',\r\n scope: s,\r\n onclick: function (e) {\r\n window.focus();\r\n $state.transitionTo('flota.OrdenesActivas');\r\n }\r\n };\r\n\r\n notificationService.sendNotification(notification);\r\n\r\n }\r\n\r\n //Modal de rechazo servicio\r\n function rejectServiceModal(order) {\r\n ModalService.showModal({\r\n template: rejectServiceTemplate,\r\n controller: function (close) {\r\n var modal = this;\r\n\r\n modal.motivos = {\r\n list: null,\r\n selected: {}\r\n };\r\n\r\n (function () {\r\n modal.motivos.loading = true;\r\n genericDataService.getMotivosRechazo(order.idInsurer).then(function (data) {\r\n modal.motivos.list = data;\r\n modal.motivos.loading = false;\r\n });\r\n })();\r\n\r\n modal.accept = function () {\r\n ordersService.legacyChangeAssignmentState(order.orderId, 2,\r\n null, modal.motivos.selected.id, null).then(function (data) {\r\n $rootScope.$broadcast('ReloadOrdenesActivas');\r\n notificationService.sendAppNotification({\r\n message: 'Servicio rechazado',\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'success'\r\n });\r\n service.discardService(order);\r\n }, function (data) {\r\n sendErrorNot(order, 'REJECT', MSG_ERROR_DEFAULT);\r\n });\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n modal.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n },\r\n controllerAs: 'modal'\r\n });\r\n }\r\n\r\n //Modal de aceptación de servicio\r\n function acceptServiceModal(order) {\r\n /* jshint maxcomplexity: false */\r\n var acceptForm = 'app/views/modals/aceptacion/baseAcceptForm.html';\r\n\r\n switch (order.insurerId) {\r\n case 0: //ASITUR\r\n break; //Use baseAcceptForm\r\n case 1: //RACC\r\n return; //No aplica\r\n case 2: //MAPFRE\r\n return; //No aplica\r\n case 3: //EUROP\r\n ordersService.legacyChangeAssignmentState(order.orderId, 1, null, null, null);\r\n return;\r\n case 4: //MUTUA\r\n break; //Use baseAcceptForm\r\n case 5: //RACE\r\n break; //Use baseAcceptForm\r\n case 6: //ALLIANZ\r\n break; //Use baseAcceptForm\r\n case 7: //PELAYO\r\n acceptForm = 'app/views/modals/aceptacion/pelayoForm.html';\r\n break;\r\n case 8: //LINEA DIRECTA\r\n return; //No aplica\r\n case 9: //EUROTRANS\r\n break;\r\n case 10: //AXA\r\n //acceptForm = 'app/views/modals/aceptacion/pelayoForm.html';\r\n break;\r\n case 11: //IMA IBERICA\r\n return; //No aplica\r\n default:\r\n break;\r\n\r\n }\r\n\r\n ModalService.showModal({\r\n template: acceptServiceTemplate,\r\n controller: function (close) {\r\n var modal = this;\r\n modal.extraData = {};\r\n modal.acceptForm = acceptForm;\r\n modal.tiempoDemora = 0;\r\n\r\n modal.accept = function () {\r\n ordersService.legacyChangeAssignmentState(order.orderId, 1,\r\n modal.tiempoDemora, null, modal.extraData).then(function () {\r\n $rootScope.$broadcast('ReloadOrdenesActivas');\r\n notificationService.sendAppNotification({\r\n message: 'Servicio aceptado',\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'success'\r\n });\r\n }, function () {\r\n sendErrorNot(order, 'ACCEPT', MSG_ERROR_DEFAULT);\r\n });\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n modal.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n },\r\n controllerAs: 'modal'\r\n });\r\n }\r\n\r\n //Notificacion de error y reintento\r\n function sendErrorNot(order, type, msg) {\r\n var s = $rootScope.$new();\r\n s.order = order;\r\n s.icon = order.insurerId !== null ?\r\n clientService.getBrandLogo(order.insurerId) : 'content/img/logo-invesfleet.png';\r\n s.msg = msg;\r\n s.onClick = function () {\r\n $state.transitionTo('flota.OrdenesActivas');\r\n };\r\n var notification = {\r\n positionY: 'bottom',\r\n positionX: 'right',\r\n delay: null,\r\n type: 'error',\r\n templateUrl: 'app/views/tablesTemplates/notificationTemplates/acceptErrorNotification.html',\r\n scope: s\r\n };\r\n\r\n if (type === 'ACCEPT') {\r\n notification.message = 'Error aceptando el servicio';\r\n } else {\r\n notification.message = 'Error rechazando el servicio';\r\n }\r\n notificationService.sendAppNotification(notification);\r\n }\r\n\r\n function discardService(order) {\r\n ordersService.removeOrders([order.orderId]).then(function () {\r\n $rootScope.$broadcast('ReloadOrdenesActivas');\r\n //console.log('SERVICIO DESCARTADO');\r\n }, function () {\r\n //console.log('ERROR DESCARTANDO SERVICIO');\r\n });\r\n }\r\n\r\n\t\tfunction manageService(order, accept = true) {\r\n\t\t\tconsole.log(order);\r\n var state = order.assignmentState;\r\n var title, msg;\r\n\r\n switch (state) {\r\n case 102:\r\n title = 'Servicio rechazado tiempo agotado';\r\n msg = 'Confirme con el cliente la aceptación del servicio o descártelo';\r\n break;\r\n case 103:\r\n title = 'Servicio rechazado colaborador desconectado';\r\n msg = 'Confirme con el cliente la aceptación del servicio o descártelo';\r\n break;\r\n\t\t\t\tcase 7:\r\n\t\t\t\t\tif (accept) {\r\n\t\t\t\t\t\ttitle = 'Aceptación sin confirmación';\r\n\t\t\t\t\t\tmsg = 'Aceptar el servicio?';\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttitle = 'Rechazo del servicio';\r\n\t\t\t\t\t\tmsg = 'Rechazar el servicio?';\r\n\t\t\t\t\t}\r\n break;\r\n case 8:\r\n case 104:\r\n title = 'Servicio modificado';\r\n msg = 'Realice las acciones necesarias en la orden en curso';\r\n break;\r\n case 9:\r\n case 105:\r\n title = 'Servicio dado de baja';\r\n msg = 'Realice las acciones necesarias en la orden en curso';\r\n break;\r\n case 10:\r\n title = 'Servicio pendiente de presupuesto';\r\n msg = 'Ponga el estado adecuado del servicio según el estado del presupuesto';\r\n break;\r\n case 11:\r\n title = 'Presupuesto pendiente de aceptación';\r\n msg = 'Ponga el estado adecuado del servicio según el estado del presupuesto';\r\n break;\r\n case 106:\r\n title = 'Presupuesto rechazado';\r\n msg = 'Ponga el estado adecuado del servicio según el estado del presupuesto';\r\n break;\r\n case 107:\r\n title = 'Presupuesto aceptado';\r\n msg = 'Ponga el estado adecuado del servicio según el estado del presupuesto';\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 3:\r\n\t\t\t\tcase 0:\r\n\t\t\t\t\ttitle = 'Aceptar timeout';\r\n\t\t\t\t\tmsg = 'Desea confirmar que su órden ha sido rechazada por estar fuera de plazo?';\r\n\t\t\t\t\tbreak;\r\n default:\r\n title = 'Estado ' + state;\r\n msg = '-';\r\n break;\r\n }\r\n\r\n\r\n ModalService.showModal({\r\n template: manageServiceTemplate,\r\n controller: function (close) {\r\n\r\n var modal = this;\r\n\r\n modal.state = 7;\r\n modal.stateTitle = title;\r\n modal.stateMsg = msg;\r\n\t\t\t\t\tswitch (state) {\r\n\t\t\t\t\t\tcase 7:\r\n\t\t\t\t\t\t\tif (accept) {\r\n\t\t\t\t\t\t\t\tmodal.accept = function () {\r\n\t\t\t\t\t\t\t\t\tordersService.changeAssignmentState(order.orderId, 100).then(function () {\r\n\t\t\t\t\t\t\t\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'Servicio aceptado',\r\n\t\t\t\t\t\t\t\t\t\t\tpositionY: 'top',\r\n\t\t\t\t\t\t\t\t\t\t\tpositionX: 'right',\r\n\t\t\t\t\t\t\t\t\t\t\tdelay: 3000,\r\n\t\t\t\t\t\t\t\t\t\t\ttype: 'success'\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t$rootScope.$broadcast('ReloadOrdenesActivas');\r\n\t\t\t\t\t\t\t\t\t\t$rootScope.blurry = false;\r\n\t\t\t\t\t\t\t\t\t\tclose();\r\n\t\t\t\t\t\t\t\t\t}, function () {\r\n\t\t\t\t\t\t\t\t\t\t//console.log('ACEPTACION DIRECTA: ERROR pasando servicio a ACEPTADO (100)');\r\n\t\t\t\t\t\t\t\t\t\t$rootScope.blurry = false;\r\n\t\t\t\t\t\t\t\t\t\tclose();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tmodal.accept = function () {\r\n\t\t\t\t\t\t\t\t\tordersService.changeAssignmentState(order.orderId, 2).then(function () {\r\n\t\t\t\t\t\t\t\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'Servicio rechazado',\r\n\t\t\t\t\t\t\t\t\t\t\tpositionY: 'top',\r\n\t\t\t\t\t\t\t\t\t\t\tpositionX: 'right',\r\n\t\t\t\t\t\t\t\t\t\t\tdelay: 3000,\r\n\t\t\t\t\t\t\t\t\t\t\ttype: 'success'\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t$rootScope.$broadcast('ReloadOrdenesActivas');\r\n\t\t\t\t\t\t\t\t\t\t$rootScope.blurry = false;\r\n\t\t\t\t\t\t\t\t\t\tclose();\r\n\t\t\t\t\t\t\t\t\t}, function () {\r\n\t\t\t\t\t\t\t\t\t\t//console.log('ACEPTACION DIRECTA: ERROR pasando servicio a ACEPTADO (100)');\r\n\t\t\t\t\t\t\t\t\t\t$rootScope.blurry = false;\r\n\t\t\t\t\t\t\t\t\t\tclose();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\tmodal.accept = function () {\r\n\t\t\t\t\t\t\t\tordersService.changeAssignmentState(order.orderId, 101).then(function () {\r\n\t\t\t\t\t\t\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\t\t\t\t\t\t\tmessage: 'Timeout confirmado',\r\n\t\t\t\t\t\t\t\t\t\tpositionY: 'top',\r\n\t\t\t\t\t\t\t\t\t\tpositionX: 'right',\r\n\t\t\t\t\t\t\t\t\t\tdelay: 3000,\r\n\t\t\t\t\t\t\t\t\t\ttype: 'success'\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t$rootScope.$broadcast('ReloadOrdenesActivas');\r\n\t\t\t\t\t\t\t\t\t$rootScope.blurry = false;\r\n\t\t\t\t\t\t\t\t\tclose();\r\n\t\t\t\t\t\t\t\t}, function () {\r\n\t\t\t\t\t\t\t\t\t//console.log('ACEPTACION DIRECTA: ERROR pasando servicio a ACEPTADO (100)');\r\n\t\t\t\t\t\t\t\t\t$rootScope.blurry = false;\r\n\t\t\t\t\t\t\t\t\tclose();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\r\n\r\n modal.discard = function () {\r\n service.discardService(order);\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n modal.serviceInfo = function () {\r\n $state.go('flota.ordenes.editar', {\r\n 'id': order.orderId\r\n });\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n modal.changeState = function (state) {\r\n ordersService.legacyChangeAssignmentState(order.orderId, state,\r\n null, null, null).then(function (data) {\r\n $rootScope.$broadcast('ReloadOrdenesActivas');\r\n $rootScope.blurry = false;\r\n close();\r\n }, function (data) {\r\n $rootScope.blurry = false;\r\n close();\r\n });\r\n };\r\n\r\n modal.cancel = function (){\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n },\r\n controllerAs: 'modal'\r\n });\r\n }\r\n\r\n function showErrorModal(order) {\r\n ModalService.showModal({\r\n template: showErrorServiceTemplate,\r\n controller: function (close) {\r\n\r\n var modal = this;\r\n modal.reintentar = order.assignmentState === 4;\r\n modal.errorMsg = order.msgAseg || MSG_ERROR_DEFAULT;\r\n\r\n modal.discard = function () {\r\n service.discardService(order);\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n\r\n modal.retry = function () {\r\n\r\n ordersService.changeAssignmentState(order.orderId, 0).then(function () {\r\n //console.log('REINTENTAR: servicio pasado a PENDIENTE ACEPTACION (0)');\r\n $rootScope.$broadcast('ReloadOrdenesActivas');\r\n $rootScope.blurry = false;\r\n close();\r\n }, function () {\r\n //console.log('REINTENTAR: ERROR pasando servicio pasado a PENDIENTE ACEPTACION (0)');\r\n $rootScope.blurry = false;\r\n close();\r\n });\r\n\r\n };\r\n\r\n },\r\n controllerAs: 'modal'\r\n });\r\n }\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('alarmaService', alarmaService);\r\n\r\n\talarmaService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction alarmaService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.alarmas.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('audioService', audioService);\r\n\r\n audioService.$inject = ['preferences'];\r\n\r\n function audioService(preferences) {\r\n\r\n var MAX_QUEUE_LENGTH = 10;\r\n\r\n var mute = false;\r\n\r\n var audio = null;\r\n\r\n var isPlaying = false;\r\n var soundQueue = [];\r\n \r\n return {\r\n toggleMute: function () {\r\n mute = !mute;\r\n if(audio){\r\n audio.volume = mute? 0 : 1;\r\n }\r\n return mute;\r\n },\r\n isMuted: function () {\r\n return mute;\r\n },\r\n\r\n play: play,\r\n\r\n notification: {\r\n nuevas: nuevasNot,\r\n demora: demoraNot,\r\n pendientes: pendientesNot,\r\n programadas: programadasNot,\r\n asignado: asignadoNot,\r\n entregado: entregadoNot,\r\n aceptado: aceptadoNot,\r\n rechazado: rechazadoNot,\r\n iniciado: iniciadoNot,\r\n localizado: localizadoNot,\r\n finalizado: finalizadoNot,\r\n msg: msgNot,\r\n opOnline: opOnlineNot\r\n }\r\n };\r\n\r\n\r\n\r\n function play(audioPath){\r\n if(isPlaying){\r\n if(soundQueue.length < MAX_QUEUE_LENGTH){\r\n soundQueue.push(audioPath);\r\n }\r\n } else {\r\n startPlaying(audioPath);\r\n }\r\n }\r\n\r\n function nuevasNot(){\r\n if(preferences.prefs.companyPrefs.soundNuevas){\r\n //console.log('NOT -> Nuevas ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundNueva + '.mp3');\r\n }\r\n }\r\n\r\n function demoraNot(){\r\n if(preferences.prefs.companyPrefs.soundDemoras){\r\n //console.log('NOT -> Demora ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundDemora + '.mp3');\r\n }\r\n }\r\n\r\n function pendientesNot(){\r\n if(preferences.prefs.companyPrefs.soundPendientes){\r\n //console.log('NOT -> Pendientes ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundPendiente + '.mp3');\r\n }\r\n }\r\n\r\n function programadasNot(){\r\n if(preferences.prefs.companyPrefs.soundProgramadas){\r\n //console.log('NOT -> Programadas ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundProgramada + '.mp3');\r\n }\r\n }\r\n\r\n function asignadoNot(){\r\n if(preferences.prefs.companyPrefs.soundAsignado){\r\n //console.log('NOT -> Asignadas ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundAsignado + '.mp3');\r\n }\r\n }\r\n\r\n function entregadoNot(){\r\n if(preferences.prefs.companyPrefs.soundEntregado){\r\n //console.log('NOT -> Entregada ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundEntregado + '.mp3');\r\n }\r\n }\r\n\r\n function aceptadoNot(){\r\n if(preferences.prefs.companyPrefs.soundAceptado){\r\n //console.log('NOT -> Aceptada ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundAceptado + '.mp3');\r\n }\r\n }\r\n\r\n function rechazadoNot(){\r\n if(preferences.prefs.companyPrefs.soundRechazado){\r\n //console.log('NOT -> Rechazado ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundRechazado + '.mp3');\r\n }\r\n }\r\n\r\n function iniciadoNot(){\r\n if(preferences.prefs.companyPrefs.soundIniciado){\r\n //console.log('NOT -> Iniciado ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundIniciado + '.mp3');\r\n }\r\n }\r\n\r\n function localizadoNot(){\r\n if(preferences.prefs.companyPrefs.soundLocalizado){\r\n //console.log('NOT -> Localizado ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundLocalizado + '.mp3');\r\n }\r\n }\r\n\r\n function finalizadoNot(){\r\n if(preferences.prefs.companyPrefs.soundFinalizado){\r\n //console.log('NOT -> Finalizado ordenes');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundFinalizado + '.mp3');\r\n }\r\n }\r\n \r\n function msgNot(){\r\n if(preferences.prefs.companyPrefs.soundRecMessages){\r\n //console.log('NOT -> MSG nuevo');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundRecMessages + '.mp3');\r\n }\r\n }\r\n \r\n function opOnlineNot(){\r\n if(preferences.prefs.companyPrefs.soundOpOnline){\r\n //console.log('NOT -> Operario online');\r\n play('content/' + preferences.prefs.companyPrefs.fileSoundOpOnline + '.mp3');\r\n }\r\n }\r\n\r\n function startPlaying(url) {\r\n isPlaying = true;\r\n\r\n audio = new Audio(url);\r\n audio.volume = mute? 0 : 1;\r\n audio.onended = function(){\r\n if(soundQueue.length > 0){\r\n startPlaying(soundQueue.shift()); \r\n } else {\r\n isPlaying = false;\r\n }\r\n };\r\n\r\n var playPromise = audio.play();\r\n if (playPromise !== undefined) {\r\n playPromise.then(_ => {\r\n // Automatic playback started!\r\n // Show playing UI.\r\n }).catch(error => {\r\n // Auto-play was prevented\r\n // Show paused UI.\r\n });\r\n }\r\n \r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('authorization', authorization);\r\n\r\n authorization.$inject = ['$http', '$window', '$q', 'endPoints'];\r\n\r\n function authorization($http, $window, $q, endPoints) {\r\n var bearerToken = $window.localStorage.getItem('bearerToken');\r\n var service = {\r\n getStoredToken: getStoredToken,\r\n getToken: doLogin,\r\n setBearerHeader: setBearerHeader,\r\n doLogin: doLogin,\r\n logout: logout,\r\n isOnline: false,\r\n hasToken: hasToken,\r\n hasLoaded: false\r\n };\r\n return service;\r\n\r\n function getStoredToken() {\r\n return bearerToken;\r\n }\r\n\r\n function doLogin(user, password) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.authorization.getToken,\r\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\r\n transformRequest: function (obj) {\r\n var str = [];\r\n for (var p in obj) {\r\n if (obj.hasOwnProperty(p)) {\r\n str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));\r\n }\r\n }\r\n return str.join('&');\r\n },\r\n data: {\r\n 'client_id': 'web_client',\r\n 'client_secret': 'InvestelWeb2016',\r\n 'username': user,\r\n 'password': password,\r\n 'grant_type': 'password',\r\n 'scope': 'api openid',\r\n 'scope_secret': 'InvesfleetApi2016'\r\n }\r\n };\r\n $http(request).then(\r\n function (response) {\r\n service.isOnline = true;\r\n bearerToken = response.data.access_token;\r\n $window.localStorage.setItem('bearerToken', bearerToken);\r\n deferred.resolve(true);\r\n },\r\n function (response) {\r\n service.isOnline = false;\r\n deferred.reject(false);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function logout() {\r\n $window.localStorage.removeItem('bearerToken');\r\n service.isOnline = false;\r\n bearerToken = null;\r\n $window.location = './';\r\n }\r\n\r\n function setBearerHeader($httpProvider) {\r\n if (bearerToken) {\r\n $httpProvider.defaults.headers.common.authorization = 'Bearer ' + bearerToken;\r\n } \r\n }\r\n\r\n function hasToken(){\r\n return bearerToken !== null;\r\n }\r\n\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n .factory('averiaService', averiaService);\r\n\r\n averiaService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n function averiaService($http, $q, endPoints, authorization) {\r\n var service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.averias.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(averiaId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.averias.getById + '?averiaId=' + averiaId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(averia) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.averias.add,\r\n data: {\r\n averiaId: averia.averiaId,\r\n id: averia.id,\r\n descripcion: averia.descripcion,\r\n empresaMasterId: averia.empresaMasterId,\r\n tipoIncidenciaId: averia.tipoIncidenciaId,\r\n aseguradoraId: averia.aseguradoraId,\r\n canSendCompany: averia.canSendCompany,\r\n canSendSupplier: averia.canSendSupplier\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(averiaIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.averias.deleteById,\r\n data: averiaIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('baseFlotaService', baseFlotaService);\r\n\r\n\tbaseFlotaService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction baseFlotaService($http, $q, endPoints, authorization) {\r\n var service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n function getList(sorting, filters) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.bases.getList,\r\n data: { sorting: sorting, filters: filters }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(baseId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.bases.getById + '?baseId=' + baseId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(base) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.bases.add,\r\n data: {\r\n baseId: base.baseId,\r\n id: base.id,\r\n nombre: base.nombre,\r\n razon: base.razon,\r\n nif: base.nif,\r\n direccion: base.direccion,\r\n poblacion: base.poblacion,\r\n cp: base.cp,\r\n provincia: base.provincia,\r\n pais: base.pais,\r\n latitud: base.latitud,\r\n longitud: base.longitud,\r\n telefono: base.telefono,\r\n fax: base.fax,\r\n email: base.email,\r\n web: base.web,\r\n observaciones: base.observaciones,\r\n tipo: base.tipo,\r\n calendarioId: base.calendarioId,\r\n empresaMasterId: base.empresaMasterId\r\n }\r\n\r\n };\r\n \r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(baseIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.bases.deleteById,\r\n data: baseIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('chat', chat);\r\n\r\n chat.$inject = ['$http', '$q', 'endPoints', 'authorization', '$rootScope', 'audioService'];\r\n\r\n //Service for scope sharing between controllers\r\n function chat($http, $q, endPoints, authorization, $rootScope, audioService) {\r\n var service = {\r\n loadChat: loadChat,\r\n updateChat: updateChat,\r\n ackReceived: ackReceived,\r\n markAsRead: markAsRead,\r\n sendMessage: sendMessage,\r\n getNewMsgCount: getNewMsgCount,\r\n messages: null,\r\n operatorMessages: null,\r\n version: null,\r\n loadedInterval: null\r\n };\r\n\r\n var running = null;\r\n\r\n //Init\r\n (function () {\r\n //loadChat();\r\n })();\r\n\r\n // $rootScope.$on('heartbeat-pulse', function (event, args) {\r\n // if (service.messages != null) {\r\n // updateChat();\r\n // } else {\r\n // loadChat();\r\n // }\r\n // });\r\n\r\n return service;\r\n\r\n \r\n\r\n function loadChat(loadprevious) {\r\n loadprevious = loadprevious || false;\r\n if (running !== null) {\r\n return running;\r\n }\r\n \r\n if (service.loadedInterval === null) {\r\n service.loadedInterval = {\r\n to: Date.NewDate(),\r\n from: new Date((Date.NewDate()).getTime() - (24 * 60 * 60 * 1000)) //ayer\r\n };\r\n }\r\n else if (loadprevious) {\r\n service.loadedInterval.to = service.loadedInterval.from;\r\n service.loadedInterval.from = new Date(service.loadedInterval.from.getTime() - (24 * 60 * 60 * 1000));\r\n }\r\n else\r\n {\r\n return updateChat();\r\n }\r\n\r\n var deferred = $q.defer();\r\n running = deferred.promise;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.chat.getFleetMessages,\r\n params: { 'fromDate': service.loadedInterval.from, 'toDate': service.loadedInterval.to }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n var ids = processMessages(response.data.messages);\r\n service.version = response.data.version;\r\n running = null;\r\n deferred.resolve(response.data);\r\n if (ids.length > 0) {\r\n service.ackReceived(ids);\r\n }\r\n updateNewMessagesList();\r\n },\r\n function (response) {\r\n running = null;\r\n service.loadedInterval = null;\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function updateChat() {\r\n if (service.messages === null) {\r\n return service.loadChat();\r\n }\r\n \r\n if (running !== null) {\r\n return running;\r\n }\r\n var deferred = $q.defer();\r\n running = deferred.promise;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.chat.getFleetUpdates,\r\n params: { 'version': service.version }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n var ids = processMessages(response.data.messages);\r\n service.version = response.data.version;\r\n running = null;\r\n deferred.resolve(response.data);\r\n if (ids.length > 0) {\r\n service.ackReceived(ids);\r\n }\r\n \r\n updateNewMessagesList();\r\n },\r\n function (response) {\r\n running = null;\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function ackReceived(ids) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.chat.ackReceived,\r\n data: ids\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) { \r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function markAsRead(ids) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.chat.markAsRead,\r\n data: ids\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) { \r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function sendMessage(recipient, msg) {\r\n\r\n if (!msg) {\r\n return;\r\n }\r\n var message = {\r\n id: Math.random(),\r\n operatorId: recipient, \r\n sentTime: null,\r\n deliveryTime: null,\r\n readTime: null,\r\n direction: 'OUT',\r\n message: msg\r\n };\r\n service.messages.push(message);\r\n\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.chat.sendMessage,\r\n data: { messageText: msg, recipient: recipient }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n message.id = response.data.toString();\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n service.messages.splice(service.messages.indexOf(message),1);\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function processMessages(messages) {\r\n if (service.messages === null) {\r\n service.messages = [];\r\n }\r\n var ids = [];\r\n for (var i = 0; i < messages.length; i++) {\r\n if (messages[i].deliveryTime === null && messages[i].direction === 'IN') {\r\n ids.push(messages[i].id);\r\n }\r\n if (service.messages.find(function (cur, index, arr) {\r\n if (service.messages[index].id === messages[i].id) {\r\n service.messages[index] = messages[i];\r\n return true;\r\n }\r\n return false;\r\n }) === undefined) {\r\n service.messages.push(messages[i]);\r\n }\r\n\r\n\r\n }\r\n return ids;\r\n }\r\n\r\n function updateNewMessagesList() {\r\n var to = service.messages.length || 0;\r\n var processedOpMessages = {};\r\n for (var i = 0; i < to; i++) {\r\n if (service.messages[i].direction === 'IN') { \r\n var processedOp = processedOpMessages[service.messages[i].operatorId] || \r\n { unread:0 , lastTime: null};\r\n if (service.messages[i].readTime === null) {\r\n processedOp.unread = processedOp.unread + 1;\r\n }\r\n if ((processedOp.lastTime === null) || (processedOp.lastTime < service.messages[i].sentTime)) {\r\n processedOp.lastTime = service.messages[i].sentTime;\r\n }\r\n processedOpMessages[service.messages[i].operatorId] = processedOp;\r\n }\r\n }\r\n service.operatorMessages = processedOpMessages;\r\n }\r\n\r\n function getNewMsgCount(){\r\n if(!service.messages){ return 0; }\r\n var to = service.messages.length || 0;\r\n var count = 0;\r\n for(var i = 0; i < to; i++){\r\n if (service.messages[i].direction === 'IN' && service.messages[i].readTime === null) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('clientService', clientService);\r\n\r\n clientService.$inject = [\r\n '$http',\r\n '$q',\r\n 'endPoints',\r\n 'authorization',\r\n 'common'\r\n ];\r\n\r\n function clientService(\r\n $http,\r\n $q,\r\n endPoints,\r\n authorization,\r\n common\r\n ) {\r\n\r\n var insurance = {\r\n 0: 'content/img/aseguradoras/asitur/asitur-imagotipo.png',\r\n 1: 'content/img/aseguradoras/racc/racc-imagotipo.png',\r\n 2: 'content/img/aseguradoras/mapfre/mapfre-imagotipo.png',\r\n 3: 'content/img/aseguradoras/europ/europ-imagotipo.png',\r\n 4: 'content/img/aseguradoras/mm/mm-imagotipo.png',\r\n 5: 'content/img/aseguradoras/race/race-imagotipo.png',\r\n 6: 'content/img/aseguradoras/allianz/allianz-imagotipo.png',\r\n 7: 'content/img/aseguradoras/pelayo/pelayo-imagotipo.png',\r\n 8: 'content/img/aseguradoras/ld/ld-imagotipo.png',\r\n };\r\n\r\n var fieldNames = {\r\n 352: 'Tipo Orden',\r\n 814: 'Resultado',\r\n 824: 'Tipo Medio',\r\n 201: 'Noct/Fest',\r\n 205: 'Kms Compañia',\r\n 815: 'T. Vehículo',\r\n 817: 'Rep. InSitu',\r\n 202: 'Rep. InSitu',\r\n 826: 'Kms Compañia',\r\n 830: 'Noct/Fest',\r\n 827: 'Número de Bultos',\r\n 828: 'Zona de Recogida',\r\n 829: 'Zona de Entrega',\r\n };\r\n\r\n\r\n var operations = {\r\n options : [{nombre:'Igual a', id: '='}],\r\n numeric : [{nombre:'Igual a', id: '='}, {nombre:'Mayor que', id: '>'}, {nombre:'Menor que', id: '<'}],\r\n bool: [{nombre:'Igual a', id: '='}],\r\n guid: [{nombre:'Igual a', id: '='}],\r\n string: [{nombre:'Igual a', id: '='}]\r\n };\r\n\r\n var entidades = {\r\n 'TAX' : [{nombre:'Órdenes', id: 'ordenTAX'}],\r\n 'GRU' : [{nombre:'Órdenes Asistencia', id: 'ordenGRU'}, {nombre:'Órdenes Logística', id: 'ordenLOG'}]\r\n };\r\n\r\n var service = {\r\n getClient: getClient,\r\n\t\t\taddClient: addClient,\r\n\t\t\taddCuentaPortal: addCuentaPortal,\r\n\t\t\taddAseguradoraConexionPendiente: addAseguradoraConexionPendiente,\r\n getList: getList,\r\n\t\t\tgetBrandLogo: getBrandLogo,\r\n\t\t\tdeleteById: deleteById,\r\n checkExistingNif: checkExistingNif,\r\n getTarifaFields: getTarifaFields,\r\n fieldNames: fieldNames,\r\n operations: operations,\r\n addTarifa: addTarifa,\r\n getTarifaList: getTarifaList,\r\n entidades: entidades,\r\n getTarifa: getTarifa,\r\n getEntidades: getEntidades,\r\n getTarifasCliente: getTarifasCliente\r\n };\r\n\r\n return service;\r\n\r\n \r\n function getBrandLogo(tipo) {\r\n if(tipo === null){ return 'undefined'; }\r\n return insurance[tipo] || 'undefined';\r\n }\r\n\r\n\t\tfunction getList(skip, take, sorting, filters, listaClientesActivos, searchText, frequencyFields) {\r\n\t\t\tvar deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.entities.clients + 'getAll' + '?skip=' + skip + '&take=' + take,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t'sorting': sorting, 'filters': filters, 'dadosDeBaja': listaClientesActivos,\r\n\t\t\t\t\t'frequencyFields': frequencyFields, 'searchTextByFrequencyFields': searchText\r\n\t\t\t\t}\r\n };\r\n authorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n\t\t\t\tfunction (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getEntidades(sector) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.entities.get + '?sector=' + sector\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getTarifa(tarifaId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.tarifas.getTarifa + '?tarifaId=' + tarifaId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getClient(clientId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.entities.clients + 'get' + '?clientId=' + clientId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function addClient(client, tarifas) {\r\n\t\t\tvar deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.entities.clients + 'add',\r\n data: { cliente: client, tarifas }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction addCuentaPortal(NIF, Email, EmpresaId, AseguradoraId, ClienteId, EmpresaNombre) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.entities.clients + 'addCuentaPortal',\r\n\t\t\t\tdata: { NIF, Email, EmpresaId, AseguradoraId, ClienteId, EmpresaNombre}\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction addAseguradoraConexionPendiente(NIF, Email, EmpresaId, AseguradoraId, CuentaId, ClienteId) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.entities.clients + 'addAseguradoraConexionPendiente',\r\n\t\t\t\tdata: { NIF, Email, EmpresaId, AseguradoraId, CuentaId, ClienteId }\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction deleteById(clientIds) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.entities.clients + 'deleteById',\r\n\t\t\t\tdata: clientIds\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t} \r\n\r\n\t\tfunction checkExistingNif(empresaSelected, cliente) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n url: endPoints.entities.clients + 'checkExistingNif' + \r\n '?empresaId=' + empresaSelected + '&nif=' + cliente.nif,\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n }\r\n \r\n function getTarifaFields(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.tarifas.getFields\r\n };\r\n if (!common.isNullOrUndefined(id))\r\n request.url += '?clienteId=' + id;\r\n\r\n authorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n\t\t\t\tfunction (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function addTarifa(tarifa, andConditions, orConditions, tarifaProductos, clientId){\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.tarifas.addTarifa,\r\n data: { \r\n tarifa, \r\n andConditions, \r\n orConditions, \r\n tarifaProductos,\r\n clientId\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getTarifaList(id){\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.tarifas.getList + \"?clientId=\" + id\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getTarifasCliente(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.tarifas.getTarifasCliente + \"?clientId=\" + id\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('colaboradorService', colaboradorService);\r\n\r\n\tcolaboradorService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction colaboradorService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.colaboradores.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('colectivoService', colectivoService);\r\n\r\n\tcolectivoService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction colectivoService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.colectivos.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n .factory('colorService', colorService);\r\n\r\n colorService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n function colorService($http, $q, endPoints, authorization) {\r\n var service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById, \r\n configRedis: configRedis\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n function configRedis() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: '/api/color/ConfigRedis',\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.colores.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(colorId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.colores.getById + '?colorId=' + colorId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(color) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.colores.add,\r\n data: color\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(colorIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.colores.deleteById,\r\n data: colorIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('driverService', driverService);\r\n\r\n\tdriverService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction driverService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetDriver: getDriver,\r\n\t\t\taddDriver: addDriver,\r\n\t\t\tgetList: getList,\r\n\t\t\tgetListDadosDeBaja: getListDadosDeBaja,\r\n\t\t\tdeleteById: deleteById\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.drivers.getAllDrivers,\r\n\t\t\t\tdata: { sorting: sorting, filters: filters }\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getListDadosDeBaja(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.drivers.getAllDriversDadosDeBaja,\r\n\t\t\t\tdata: { sorting: sorting, filters: filters }\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getDriver(driverId) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.drivers.getDriver + '?operarioId=' + driverId\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction addDriver(driver) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.drivers.addDrivers,\r\n\t\t\t\tdata: driver\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction deleteById(driverIds) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.drivers.deleteById,\r\n\t\t\t\tdata: driverIds\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('empleadosService', empleadosService);\r\n\r\n\templeadosService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction empleadosService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetAll: getAll,\r\n\t\t\tgetById: getById, \r\n\t\t\tgetContratos: getContratos,\r\n\t\t\tcreateUpdateContrato: createUpdateContrato, \r\n\t\t\tdeleteContrato: deleteContrato,\r\n\t\t\tsaveEmpleado: saveEmpleado,\r\n\t\t\tgetSupervisores: getSupervisores\r\n\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getAll() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.empleados.getAll,\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\t\tfunction getById(id) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.empleados.getById +'?id=' + id,\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\t\tfunction getContratos(id) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.empleados.getContratos + '?id=' + id,\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\t\tfunction createUpdateContrato(contrato) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.empleados.createUpdateContrato,\r\n\t\t\t\tdata: contrato\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\t\tfunction deleteContrato(contrato) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.empleados.deleteContrato,\r\n\t\t\t\tdata: contrato\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\t\tfunction saveEmpleado(empleado) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.empleados.saveEmpleado,\r\n\t\t\t\tdata: empleado\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\r\n\t\tfunction getSupervisores() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.empleados.getSupervisores,\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('empresaService', empresaService);\r\n\r\n\tempresaService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction empresaService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.empresas.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('modals', modals);\r\n\r\n modals.$inject = ['ModalService', 'genericDataService', '$rootScope', 'clientService', 'logEmpleadosService', 'notificationService', '$q', 'empleadosService', 'common'];\r\n\r\n function modals(ModalService, genericDataService, $rootScope, clientService, logEmpleadosService, notificationService, $q, empleadosService, common) {\r\n var service = {\r\n showModal: showModal\r\n };\r\n\r\n return service;\r\n\r\n function showModal(entity, callback, args) {\r\n /*jshint maxcomplexity:false */\r\n $rootScope.blurry = true;\r\n \r\n switch (entity) {\r\n case 'colors':\r\n colorAddModal(callback);\r\n break;\r\n case 'clients':\r\n clientsAddModal(callback, args);\r\n break;\r\n case 'regularizar':\r\n regularizarAddModal(callback, args);\r\n break;\r\n case 'contrato':\r\n contratoAddModal(callback, args);\r\n break;\r\n case 'anadirObservacion':\r\n anadirObservacion(callback);\r\n break;\r\n case 'showMap':\r\n showMap(callback);\r\n break;\r\n case 'collective':\r\n collectiveAddModal(callback);\r\n break;\r\n case 'model':\r\n modelAddModal(callback);\r\n break;\r\n case 'brand':\r\n brandAddModal(callback);\r\n break;\r\n case 'vehicle':\r\n vehicleAddModal(callback);\r\n break;\r\n case 'orderType':\r\n orderTypeAddModal(callback);\r\n break;\r\n case 'damage':\r\n damageAddModal(callback);\r\n break;\r\n case 'base':\r\n baseAddModal(callback);\r\n break;\r\n case 'partners':\r\n partnersAddModal(callback);\r\n break;\r\n case 'group':\r\n groupAddModal(callback);\r\n break;\r\n case 'driver':\r\n driverAddModal(callback);\r\n break;\r\n case 'workshop':\r\n workshopAddModal(callback);\r\n break;\r\n case 'obra':\r\n obraAddModal(callback);\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n function colorAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/colorsTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.id = null;\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.id\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function clientsAddModal(callback, empresaId) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/clientsTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n\t\t\t\t\tvm.client = {};\r\n\t\t\t\t\tvm.existNif = false;\r\n vm.genericData = {\r\n empresas:{\r\n list: null,\r\n selected: { id: empresaId }\r\n },\r\n paises: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n provinces: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n poblaciones: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n tipoCliente: {\r\n list: [\r\n {id : 0, nombre : 'Cliente'},\r\n {id : 1, nombre : 'Particular'},\r\n {id : 2, nombre : 'Cliente Potencial'},\r\n {id : 3, nombre : 'Cía.Aseguradora'},\r\n ],\r\n selected: { id: null }\r\n }\r\n };\r\n\r\n vm.onPaisChange = onPaisChange;\r\n vm.onProvChange = onProvChange;\r\n\r\n (function(){\r\n vm.genericData.paises.loading = true;\r\n genericDataService.getPaises(null)\r\n .then(function (res) {\r\n vm.genericData.paises.loading = false;\r\n vm.genericData.paises.list = res; \r\n selectChanged(vm.genericData.paises.list, vm.genericData.paises.selected, false);\r\n });\r\n\r\n vm.genericData.empresas.loading = true;\r\n genericDataService.getEmpresas()\r\n .then(function (res) {\r\n vm.genericData.empresas.loading = false;\r\n vm.genericData.empresas.list = res;\r\n selectChanged(vm.genericData.empresas.list, vm.genericData.empresas.selected);\r\n });\r\n })();\r\n\r\n\r\n function onPaisChange() {\r\n var pais = vm.genericData.paises.selected && vm.genericData.paises.selected.id;\r\n getProvincias(pais);\r\n }\r\n function onProvChange() {\r\n var prov = vm.genericData.provinces.selected && vm.genericData.provinces.selected.id;\r\n getPoblaciones(prov);\r\n }\r\n\r\n // Get the delivery provinces data -> DEPENDS ON: country\r\n function getProvincias(pais) {\r\n if (pais == null) {\r\n vm.genericData.provinces.list = null;\r\n if (vm.genericData.provinces.selected.id != null) {\r\n vm.genericData.provinces.selected = { id: null, nombre: null };\r\n }\r\n } else {\r\n vm.genericData.provinces.loading = true;\r\n genericDataService.getProvinces(null, pais)\r\n .then(function (res) {\r\n vm.genericData.provinces.loading = false;\r\n vm.genericData.provinces.list = res;\r\n selectChanged(vm.genericData.provinces.list,\r\n vm.genericData.provinces.selected, false);\r\n });\r\n }\r\n }\r\n\r\n // Get the delivery populations data -> DEPENDS ON: province\r\n function getPoblaciones(provincia) {\r\n if (provincia == null) {\r\n vm.genericData.poblaciones.list = null;\r\n if (vm.genericData.poblaciones.selected.id != null) {\r\n vm.genericData.poblaciones.selected = { id: null, nombre: null };\r\n }\r\n }\r\n else {\r\n vm.genericData.poblaciones.loading = true;\r\n genericDataService.getPopulations(null, provincia)\r\n .then(function (res) {\r\n vm.genericData.poblaciones.loading = false;\r\n vm.genericData.poblaciones.list = res;\r\n selectChanged(vm.genericData.poblaciones.list,\r\n vm.genericData.poblaciones.selected, false);\r\n });\r\n }\r\n }\r\n\r\n\t\t\t\t\tvm.warningCheckExist = function () {\r\n clientService.checkExistingNif(vm.genericData.empresas.selected.id, vm.client)\r\n .then(function (res) {\r\n\t\t\t\t\t\t\tvm.existNif = res;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n vm.save = function () {\r\n vm.client.empresaId = vm.genericData.empresas.selected.id;\r\n vm.client.pais = vm.genericData.paises.selected.nombre;\r\n vm.client.provincia = vm.genericData.provinces.selected.nombre;\r\n vm.client.poblacion = vm.genericData.poblaciones.selected.nombre;\r\n vm.client.tipoClienteId = vm.genericData.tipoCliente.selected.id;\r\n\r\n\r\n\r\n clientService.addClient(vm.client).then(function(res){\r\n //vm.client.clienteId = res;\r\n var id = res.clienteId;\r\n callback(id);\r\n vm.cancel();\r\n });\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function regularizarAddModal(callback, args) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/regularizarTemplate.html',\r\n controller: function (close) {\r\n var vm = this;\r\n vm.gruposEstado = {};\r\n vm.hIni = null;\r\n vm.hFin = null; \r\n vm.observaciones = null; \r\n vm.option = args.option; \r\n vm.fechaIni = args.fechaIni;\r\n vm.changedDay = false; \r\n vm.modificar = args.option != undefined && args.index != undefined; \r\n\r\n (function () {\r\n logEmpleadosService.getGruposEstado().then(function(response){\r\n vm.gruposEstado.list = response; \r\n if(args.tipoEmpleado == 1) {\r\n vm.gruposEstado.list = vm.gruposEstado.list.filter(x=> x.grupoEstadoEmpleadoId == 1 || x.grupoEstadoEmpleadoId == 3);\r\n } \r\n vm.gruposEstado.selected = vm.gruposEstado.list[0];\r\n if (vm.modificar) {\r\n vm.hIni = new Date(Date.parse(vm.option.fechaIni));\r\n vm.hFin = new Date(Date.parse(vm.option.fechaFin));\r\n vm.observaciones = vm.option.observaciones;\r\n var idx = vm.gruposEstado.list.findIndex(x => x.grupoEstadoEmpleadoId == vm.option.grupoEstadoEmpleadoId);\r\n vm.gruposEstado.selected = vm.gruposEstado.list[idx];\r\n }\r\n else {\r\n vm.hIni = new Date(Date.parse(vm.option.fechaFin));\r\n vm.hFin = new Date(Date.parse(moment(vm.option.fechaFin).add(1, 'hours')));\r\n }\r\n })\r\n \r\n })();\r\n\r\n vm.getDuracion = function () {\r\n if(vm.hIni != null && vm.hFin != null) {\r\n var difference = (vm.hFin - vm.hIni) / 1000;\r\n return secondsToHoursAndMinutes(difference);\r\n \r\n }\r\n else {\r\n return '-'; \r\n }\r\n\r\n };\r\n\r\n vm.save = function () {\r\n if(checkHour() && checkEstado()) {\r\n var action = 1; \r\n if(vm.modificar == true) {\r\n action = vm.option.accion == 0 ? 2 : vm.option.accion;\r\n }\r\n callback(vm.hIni, vm.hFin, vm.gruposEstado.selected, vm.observaciones, (vm.hFin - vm.hIni) / 1000, args.index, action);\r\n vm.cancel();\r\n } \r\n };\r\n\r\n function sendErrorRequire(messageValue) {\r\n notificationService.sendAppNotification({\r\n message: messageValue,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'error'\r\n });\r\n }\r\n\r\n function secondsToHoursAndMinutes(seconds) {\r\n var horas = \"\";\r\n if (seconds < 0) {\r\n horas = \"-\";\r\n }\r\n horas += Math.abs(Math.trunc(seconds / 3600)).toString() + \" h \";\r\n var minutes = Math.abs(Math.round((seconds % 3600) / 60)).toString() + \" min\";\r\n return horas + minutes;\r\n }\r\n\r\n function checkHour() {\r\n var bool = true; \r\n if(vm.hIni == null) bool = false; \r\n else if(vm.hFin == null) bool = false; \r\n else if(vm.hFin <= vm.hIni) bool = false; \r\n if (bool == false) sendErrorRequire(\"Horas no válidas!\");\r\n\r\n return bool; \r\n }\r\n function checkEstado() {\r\n var bool = vm.gruposEstado.selected.grupoEstadoEmpleadoId != null; \r\n if (bool == false) sendErrorRequire(\"No ha seleccionado estado!\");\r\n return bool; \r\n\r\n }\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function anadirObservacion(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/anadirObservacionTemplate.html',\r\n controller: function (close) {\r\n var vm = this;\r\n vm.observacion = '';\r\n\r\n vm.rechazar = function () {\r\n callback(vm.observacion);\r\n vm.cancel(); \r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function contratoAddModal(callback, args) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/contratoTemplate.html',\r\n controller: function (close) {\r\n var vm = this;\r\n vm.contrato = {};\r\n vm.tiposContrato = {\r\n list: [\r\n {\r\n id: 0, \r\n nombre: 'Indefinido'},\r\n {\r\n id: 1,\r\n nombre: 'Temporal'\r\n },\r\n {\r\n id: 2,\r\n nombre: 'Prácticas'\r\n },\r\n {\r\n id: 3,\r\n nombre: 'Contratista'\r\n },\r\n {\r\n id: 4,\r\n nombre: 'Agencia'\r\n },\r\n {\r\n id: 5,\r\n nombre: 'Formación y aprendizaje'\r\n },\r\n ], \r\n selected: {}\r\n\r\n };\r\n\r\n vm.tiposHora = {\r\n list: [{\r\n id: 0,\r\n nombre: 'Diárias'\r\n },\r\n {\r\n id: 1,\r\n nombre: 'Semanales'\r\n }\r\n ],\r\n selected : {}\r\n };\r\n\r\n (function () {\r\n if(args.contrato != null) {\r\n vm.contrato = args.contrato; \r\n vm.contrato.fechainicio = new Date(vm.contrato.fechainicio); \r\n vm.contrato.fechafin = new Date(vm.contrato.fechafin); \r\n }\r\n vm.tiposContrato.selected = common.isNullOrUndefined(vm.contrato.tipoContrato) ? vm.tiposContrato.list[0] : vm.tiposContrato.list[vm.contrato.tipoContrato]; \r\n vm.tiposHora.selected = common.isNullOrUndefined(vm.contrato.tipoHoras) ? vm.tiposHora.list[0] : vm.tiposHora.list[vm.contrato.tipoHoras];\r\n \r\n })();\r\n\r\n vm.save = function () {\r\n if (check()) {\r\n if(vm.contrato.contratoId == null) {\r\n vm.contrato.contratoId = 0;\r\n }\r\n vm.contrato.tipoHoras = vm.tiposHora.selected.id; \r\n vm.contrato.tipoContrato = vm.tiposContrato.selected.id;\r\n empleadosService.createUpdateContrato({contratoId: vm.contrato.contratoId, fechainicio: vm.contrato.fechainicio, fechafin: vm.contrato.fechafin, horasContrato: vm.contrato.horasContrato, tipoContrato: vm.contrato.tipoContrato, tipoHoras: vm.contrato.tipoHoras, empleadoId: args.empleado}).then(function(response) {\r\n callback();\r\n vm.cancel();\r\n }); \r\n } \r\n\r\n };\r\n\r\n function check() {\r\n if (common.isNullOrUndefined(vm.tiposHora.selected.id)) {\r\n sendErrorRequire('Tiene que seleccionar un tipo de horas');\r\n return false;\r\n }\r\n else if (common.isNullOrUndefined(vm.tiposContrato.selected.id)) {\r\n sendErrorRequire('Tiene que seleccionar un tipo de contrato'); \r\n return false; \r\n }\r\n else if (common.isNullOrUndefined(vm.contrato.horasContrato) || vm.contrato.horasContrato < 0) {\r\n sendErrorRequire('El número de horas tiene que ser un valor positivo');\r\n return false;\r\n }\r\n else if (common.isNullOrUndefined(vm.contrato.fechainicio) || common.isNullOrUndefined(vm.contrato.fechafin) || vm.contrato.fechafin < vm.contrato.fechainicio) {\r\n if (vm.tiposContrato.selected.id == 0 && common.isNullOrUndefined(vm.contrato.fechafin) && !common.isNullOrUndefined(vm.contrato.fechainicio)) return true;\r\n else {\r\n sendErrorRequire('Fechas no válidas');\r\n return false; \r\n }\r\n }\r\n return true; \r\n }\r\n\r\n function sendErrorRequire(messageValue) {\r\n notificationService.sendAppNotification({\r\n message: messageValue,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'error'\r\n });\r\n }\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n\r\n function showMap(coordenadas) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/mapAddressJornadaTemplate.html',\r\n controller: function (close) {\r\n var vm = this;\r\n vm.lat = coordenadas.lat;\r\n vm.lng = coordenadas.lng;\r\n vm.address = null;\r\n\r\n (function () {\r\n getAddress(vm.lat, vm.lng).then(function(address) {\r\n vm.address = address.formatted_address.toString();\r\n });\r\n })();\r\n\r\n function getAddress(lat, long) {\r\n var geocoder = new google.maps.Geocoder();\r\n var latlng = new google.maps.LatLng(\r\n parseFloat(lat),\r\n parseFloat(long)\r\n );\r\n var deferred = $q.defer();\r\n geocoder.geocode({\r\n 'latLng': latlng\r\n },\r\n function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n if (results[0]) {\r\n /*jshint camelcase: false */\r\n deferred.resolve(results[0]);\r\n return;\r\n }\r\n }\r\n deferred.reject('Dirección no encontrada');\r\n }\r\n );\r\n return deferred.promise;\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal(); \r\n close(); \r\n };\r\n\r\n \r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function collectiveAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/collectiveTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function modelAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/modelTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function brandAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/brandTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function vehicleAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/vehicleTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function orderTypeAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/orderTypeTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function damageAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/damageTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function baseAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/baseTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n\r\n vm.name = null;\r\n vm.id = null;\r\n vm.bases = {\r\n list: null,\r\n selected: { id: -1, nombre: 'Nueva base' }\r\n };\r\n\r\n (function(){\r\n vm.bases.loading = true;\r\n genericDataService.getBases().then(function (data){\r\n vm.bases.list = data;\r\n vm.bases.list.unshift({id: -1, nombre: 'Nueva base'});\r\n vm.bases.loading = false;\r\n });\r\n })();\r\n\r\n vm.save = function () {\r\n if(vm.bases.selected.id === -1){\r\n callback({\r\n nombre: vm.name,\r\n id: vm.id\r\n });\r\n }else{\r\n callback({\r\n nombre: vm.bases.selected.nombre,\r\n baseId: vm.bases.selected.id\r\n });\r\n }\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function partnersAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/partnersTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function groupAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/groupTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function driverAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/driverTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function workshopAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/workshopTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n //Llamada api crear entidad\r\n genericDataService.addColor(color).then(\r\n function () { callback(); }\r\n );\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function obraAddModal(callback) {\r\n ModalService.showModal({\r\n templateUrl: 'app/views/modals/obraTemplate.html',\r\n controller:\r\n function (close) {\r\n var vm = this;\r\n\r\n vm.name = null;\r\n\r\n vm.save = function () {\r\n var color = {\r\n descripcion: vm.name,\r\n id: vm.name\r\n };\r\n\r\n\r\n closeModal();\r\n close();\r\n };\r\n\r\n vm.cancel = function () {\r\n closeModal();\r\n close();\r\n };\r\n },\r\n controllerAs: 'vm'\r\n });\r\n }\r\n\r\n function closeModal(){\r\n $rootScope.blurry = false;\r\n }\r\n\r\n function selectChanged(list, selected, requireId) {\r\n requireId = (typeof requireId === 'undefined') ? true : requireId; //RequireId defaults to TRUE\r\n if (!list || !selected) { return; } //If the is no list or element exit\r\n if (list.length <= 0 || selected.id == null) { // Delete element unless it doesnt require id\r\n if (!requireId) { return; }\r\n selected.nombre = null;\r\n selected.id = null;\r\n return;\r\n }\r\n var find = findByProperty(list, 'id', selected.id);\r\n if (find) {\r\n selected.nombre = find.nombre;\r\n selected.id = find.id;\r\n } else {\r\n selected.nombre = null;\r\n selected.id = null;\r\n }\r\n }\r\n function findByProperty(array, property, id) {\r\n if(array===null){ return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n .factory('errorManagerService', errorManagerService);\r\n\r\n errorManagerService.$inject = ['$http', '$q', 'authorization'];\r\n\r\n function errorManagerService($http, $q, authorization) {\r\n\t\tvar service = {\r\n initialize: initialize,\r\n isValid: isValid\r\n };\r\n\r\n\t\treturn service;\r\n\r\n var directiveArray = [];\r\n\r\n function initialize() {\r\n clear();\r\n fillDirectiveArray(); \r\n }\r\n\r\n function isValid() {\r\n var anyNotValid = false;\r\n //console.log(directiveArray[1].validity.valid);\r\n for (var i = 0; i < directiveArray.length; i++) { \r\n var state = directiveArray[i].validity;\r\n if (!state.valid) {\r\n // console.log(state);\r\n anyNotValid = true;\r\n break;\r\n }\r\n }\r\n\r\n if (anyNotValid) {\r\n $(document).trigger('validate-error');\r\n }\r\n\r\n return !anyNotValid;\r\n }\r\n\r\n function clear() {\r\n directiveArray = []; \r\n }\r\n\r\n function fillDirectiveArray() {\r\n directiveArray = $('[validate]');\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n .factory('estadosOperarioService', estadosOperarioService);\r\n\r\n estadosOperarioService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n function estadosOperarioService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.estadoOperario.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(estadoOperarioId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.estadoOperario.getById + '?estadoOperarioId=' + estadoOperarioId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(objs) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.estadoOperario.add,\r\n data: objs\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(objIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.estadoOperario.deleteById,\r\n data: objIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('fleet', fleet);\r\n\r\n fleet.$inject = [\r\n '$http',\r\n '$q',\r\n '$timeout',\r\n 'endPoints',\r\n 'authorization', \r\n 'genericDataService',\r\n '$rootScope',\r\n 'audioService',\r\n '$filter',\r\n 'chat',\r\n 'aceptacionServicioService',\r\n 'styleMapService'\r\n ];\r\n\r\n /* jshint maxparams:false */\r\n function fleet(\r\n $http,\r\n $q,\r\n $timeout,\r\n endPoints,\r\n authorization, \r\n genericDataService,\r\n $rootScope,\r\n audioService,\r\n $filter,\r\n chat,\r\n aceptacionServicioService,\r\n styleMapService\r\n ) {\r\n\t\tvar service = {\r\n\t\t\toptionsStyleMaps: styleMapService.getOptionsStyleMaps(),\r\n\t\t\tgetMapData: getMapData,\r\n\t\t\tgetNewLogisticsCount: getNewLogisticsCount,\r\n getActiveOrderById: getActiveOrderById,\r\n\t\t\tgetRecorrido: getRecorrido,\r\n\t\t\tgetAseguradoras: getAseguradoras,\r\n\t\t\tupdateConnexionEmpresaMaster: updateConnexionEmpresaMaster,\r\n\t\t\tupdateAseguradorasConnexion: updateAseguradorasConnexion,\r\n\t\t\tmapData: null,\r\n\t\t\taseguradorasData: null,\r\n\t\t\tempresaMasterData: null,\r\n lastUpdated: null,\r\n live: false,\r\n activeOrders: null,\r\n activeOrdersNumbers: {\r\n new: 0,\r\n newOrNotification: 0,\r\n newWithTime: 0,\r\n delay: 0,\r\n active: 0,\r\n pendientes: 0,\r\n delayNotSeen: 0,\r\n scheduled: 0,\r\n\t\t\t\ttodayScheduled: 0,\r\n\t\t\t\tnewLogistic: 0,\r\n\t\t\t\tmovePending: 0,\r\n },\r\n unreadMessages: null,\r\n unreadMessagesCount: null,\r\n getAssignableOperators: getAssignableOperators,\r\n\t\t\tgetActiveOrders: getActiveOrders, \r\n\t\t\tgetAllActiveLogistic: getAllActiveLogistic,\r\n canContinue: false,\r\n activeOrdersList: null \r\n };\r\n\r\n var refreshInterval = 10000; //10 seconds\r\n\r\n\t\t$rootScope.$on('ReloadOrdenesActivas', function (event, args) {\r\n\t\t\t// getFleetData();\r\n });\r\n\r\n $(window).on('messaging-active-orders-count', function (e, args) {\r\n service.activeOrdersNumbers.active = args;\r\n });\r\n\r\n $(window).on('messaging-news-orders-count', function (e, args) {\r\n service.activeOrdersNumbers.new = args;\r\n });\r\n\r\n $(window).on('messaging-news-notifications-orders-count', function (e, args) {\r\n service.activeOrdersNumbers.newOrNotification = args;\r\n });\r\n\r\n $(window).on('messaging-delayed-orders-count', function (e, args) {\r\n service.activeOrdersNumbers.delay = args;\r\n });\r\n\r\n $(window).on('messaging-scheduled-orders-count', function (e, args) {\r\n service.activeOrdersNumbers.todayScheduled = args;\r\n service.activeOrdersNumbers.scheduled = args;\r\n\t\t});\r\n\r\n\t\t$(window).on('messaging-movepending-orders-count', function (e, args) {\r\n\t\t\tservice.activeOrdersNumbers.movePending = args;\r\n\t\t});\r\n\r\n $(window).on('login-succeed', function (e) {\r\n service.live = true;\r\n $rootScope.$apply();\r\n });\r\n\r\n $(window).on('login-failed', function (e) {\r\n service.live = false;\r\n $rootScope.$apply();\r\n });\r\n\r\n $(window).on('messaging-unread-messages-count', function (e, args) {\r\n service.unreadMessagesCount = args;\r\n $rootScope.$apply();\r\n });\r\n\r\n\r\n //init\r\n (function () {\r\n // refresher();\r\n })();\r\n \r\n return service;\r\n\r\n function getMapData(companyId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.fleet.getMapData + (companyId ? '/?companyId=' + companyId : '')\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n //service.live = true;\r\n service.lastUpdated = Date.NewDate();\r\n updateOperatorsFromFleetdata(response.data.fleet);\r\n service.mapData = {\r\n fleet: response.data.fleet\r\n };\r\n //cancontinue sustitutes live in order to skip map error undefined\r\n service.canContinue = true; \r\n $rootScope.$broadcast('fleetdata-refreshed');\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n\t\t\t\t//if (service.live) { alert('No hay connexión a internet'); }\r\n //service.live = false;\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getActiveOrders() {\r\n //tiene que aplicar filtro de activa? \r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.fleet.getActiveOrders\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(filterActiveOrders(response.data));\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getAllActiveLogistic() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.orders.getAllActiveLogistic\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n function getActiveOrderById(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.fleet.getActiveOrderById + ('?orderId=' + orderId)\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data[0]);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getAseguradoras() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.aseguradoras.getAseguradoras \r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tvar aseguradorasByInsurname = computeAseguradorasByGroup(response.data);\r\n\t\t\t\tservice.aseguradorasData = {\r\n\t\t\t\t\taseguradoras: aseguradorasByInsurname,\r\n\t\t\t\t\tcolor: computeColorConnexion(response.data)\r\n\t\t\t\t};\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getConnexionEmpresaMaster() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.aseguradoras.getConnexionEmpresaMaster\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tservice.empresaMasterData = {\r\n\t\t\t\t\tempresaMaster: response.data,\r\n\t\t\t\t\tcolor: computeColorEmpresaMaster(response.data)\r\n\t\t\t\t};\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getNewLogisticsCount() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request =\r\n\t\t\t{\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.orders.getNewLogisticsCount\r\n\t\t\t};\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n function getAssignableOperators(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.fleet.getAssignableOperators + '?orderId=' + orderId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n var lastActiveOrders = [];\r\n var lastOnlineFleet = [];\r\n function refresher() {\r\n getFleetData();\r\n $timeout(refresher, refreshInterval);\r\n }\r\n\r\n function getFleetData() {\r\n $rootScope.$broadcast('heartbeat-pulse');\r\n lastActiveOrders = service.activeOrders;\r\n if(service.mapData) {\r\n lastOnlineFleet = $filter('filter')(service.mapData.fleet, {\r\n 'isOnline': true\r\n });\r\n }\r\n getMapData().then(function () {\r\n notifyOperatorOnline();\r\n notifyStateChanges();\r\n notify();\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t// getConnexionEmpresaMaster().then(function (res) { \r\n // getAseguradoras();\r\n // });\r\n }\r\n\r\n function notify(){\r\n if(chat.getNewMsgCount() > 0){\r\n audioService.notification.msg();\r\n }\r\n if(service.activeOrdersNumbers.new > 0){\r\n audioService.notification.nuevas();\r\n }\r\n if(service.activeOrdersNumbers.delayNotSeen > 0){\r\n audioService.notification.demora();\r\n }\r\n if(service.activeOrdersNumbers.pendientes > 0){\r\n audioService.notification.pendientes();\r\n }\r\n }\r\n\r\n function notifyStateChanges(){\r\n /* jshint maxcomplexity: false */\r\n if (lastActiveOrders === null) {\r\n return;\r\n }\r\n \r\n angular.forEach(service.activeOrders, function(order, index) {\r\n var o = $filter('filter')(lastActiveOrders, {'orderId': order.orderId});\r\n if(o.length > 0){\r\n if(o[0].state !== order.state){ //STATE CHANGE\r\n\r\n order.stateChanged = true;\r\n\r\n switch(order.state){\r\n case 1: //ASIGNADO \r\n audioService.notification.asignado();\r\n break;\r\n case 2: //ACEPTADO\r\n audioService.notification.aceptado();\r\n break;\r\n case 6: //ENTREGADO\r\n audioService.notification.entregado();\r\n break;\r\n case 3: //RECHAZADO\r\n audioService.notification.rechazado();\r\n break;\r\n case 4: //INICIADO\r\n audioService.notification.iniciado();\r\n break;\r\n case 5: //LOCALIZADO\r\n audioService.notification.localizado();\r\n break;\r\n case 10: //FINALIZADO\r\n audioService.notification.finalizado();\r\n break;\r\n }\r\n }\r\n } else if(order.programada){\r\n order.stateChanged = true;\r\n audioService.notification.programadas();\r\n } else if(order.grouping === 0){\r\n order.stateChanged = true;\r\n aceptacionServicioService.newOrderNotification(order);\r\n }\r\n });\r\n }\r\n\r\n function notifyOperatorOnline(){\r\n if(!lastOnlineFleet) {return;}\r\n \r\n var fleet = $filter('filter')(service.mapData.fleet, {'isOnline': true});\r\n angular.forEach(fleet, function(vehicle, index) {\r\n var v = $filter('filter')(lastOnlineFleet, {'operatorId':vehicle.operatorId});\r\n if(v.length <= 0){\r\n audioService.notification.opOnline();\r\n }\r\n });\r\n }\r\n\r\n function filterMapOrders(orders){\r\n var ordersMapa = [];\r\n\r\n // service.activeOrdersNumbers = {\r\n // 'new': 0,\r\n // 'newWithTime': 0,\r\n // 'delay': 0, \r\n // 'active': 0,\r\n // 'pendientes': 0,\r\n // 'delayNotSeen': 0\r\n\t\t\t//};\r\n\t\t\tangular.forEach(orders, function (order, index) {\r\n\t\t\t\t\r\n if (order.isMapa && order.state !== 10) {\r\n ordersMapa.push(order);\r\n }\r\n // if (order.isActive && order.grouping !== 3) {\r\n // service.activeOrdersNumbers.active++;\r\n // }\r\n // if (order.isActive && order.grouping === 0) {\r\n // service.activeOrdersNumbers.active--;\r\n // service.activeOrdersNumbers.new++;\r\n\r\n // if(order.timeAsignation - \r\n // parseInt((Date.NewDate().getTime() - new Date(order.stateDate).getTime())/1000) > 0)\r\n // { \r\n // service.activeOrdersNumbers.newWithTime++; \r\n // }\r\n // }\r\n // if (order.isActive && (order.tiempoRestante < 0)) { //order.viewDelay && \r\n // service.activeOrdersNumbers.delay++;\r\n // if(!order.viewDelay){\r\n // service.activeOrdersNumbers.delayNotSeen++;\r\n // }\r\n\t\t\t\t//}\r\n // if (order.isActive && order.assignmentState === 100 && order.state === 0){ //PENDIENTES\r\n // service.activeOrdersNumbers.pendientes++;\r\n // }\r\n\r\n });\r\n return ordersMapa;\r\n }\r\n\r\n function filterActiveOrders(orders){\r\n var ordersActive = [];\r\n angular.forEach(orders, function(order, index) {\r\n if (order.isActive) {\r\n ordersActive.push(order);\r\n }\r\n });\r\n return ordersActive;\r\n }\r\n\r\n function updateOperatorsFromFleetdata(fleetData) {\r\n genericDataService.getOperarios().then(function (data) {\r\n for (var i = 0; i < data.length; i++) {\r\n if (fleetData.find(function (cur, index, arr) {\r\n if (cur.idOperator === data[i].shortId) {\r\n data[i].fleetElement = cur;\r\n data[i].operatorStateId = cur.operatorStateId;\r\n data[i].stateDate = cur.operatorStateDate;\r\n return true;\r\n }\r\n return false;\r\n }) === undefined) {\r\n data[i].fleetElement = undefined; //we however do not change the state\r\n }\r\n }\r\n });\r\n }\r\n\r\n function getRecorrido(fleetId, start, finish){\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.fleet.getRecData + '?flotaId=' + fleetId + '&start=' + start + '&finish=' + finish\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction updateAseguradorasConnexion(aseguradora) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.aseguradoras.updateAseguradorasConnexion,\r\n\t\t\t\tdata: aseguradora\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t// getConnexionEmpresaMaster().then(function (res) { \r\n // getAseguradoras();\r\n // });\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction updateConnexionEmpresaMaster() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.aseguradoras.updateConnexionEmpresaMaster\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t// getConnexionEmpresaMaster().then(function (res) { \r\n // getAseguradoras();\r\n // });\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\t\tfunction computeColorConnexion(aseguradorasList) {\r\n /*jshint maxcomplexity:false */\r\n\t\t\tvar color = 'grey';\r\n\t\t\tvar anyConnected = false;\r\n var anyNotConnected = false;\r\n\t\t\tif (service.empresaMasterData.color === 'grey') { return color; }\r\n\t\t\tfor (var i = 0; i < aseguradorasList.length; ++i) {\r\n\t\t\t\tif (aseguradorasList[i].companyName === 'RACC') {\r\n\t\t\t\t\tanyConnected = true;\r\n\t\t\t\t}\r\n\t\t\t\telse if (aseguradorasList[i].companyName !== 'COLABORADOR' ) { \r\n\t\t\t\t\tif (aseguradorasList[i].isConnected) {\r\n\t\t\t\t\t\tanyConnected = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!aseguradorasList[i].isConnected) {\r\n\t\t\t\t\t\tanyNotConnected = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (anyConnected && anyNotConnected) {\r\n\t\t\t\tcolor = 'orange';\r\n\t\t\t}\r\n\t\t\telse if (anyConnected) {\r\n\t\t\t\tcolor = 'green';\r\n\t\t\t}\r\n\t\t\telse if (anyNotConnected) {\r\n\t\t\t\tcolor = 'red';\r\n\t\t\t}\r\n\t\t\treturn color;\r\n\t\t}\r\n\r\n\t\tfunction computeAseguradorasByGroup(aseguradorasList) {\r\n var aseguradorasByDistincInsurname = aseguradorasList.map(item => item.insurerName)\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n\t\t\tvar aseguradorasByGroup = [];\r\n\t\t\tfor (var i = 0; i < aseguradorasByDistincInsurname.length; ++i) {\r\n\t\t\t\tvar insurerName = aseguradorasByDistincInsurname[i];\r\n\t\t\t\tvar stateAseguradora = computeStateAseguradora(insurerName, aseguradorasList);\r\n\t\t\t\tvar editableAseguradora = computeEditableAseguradora(insurerName, aseguradorasList);\r\n\t\t\t\tvar colorAseguradora = computeColorAseguradora(insurerName, aseguradorasList);\r\n\t\t\t\tvar asegId = computeStateAseguradoraId(insurerName, aseguradorasList);\r\n\t\t\t\taseguradorasByGroup.push({\r\n\t\t\t\t\t'asegId': asegId,\r\n\t\t\t\t\t'insurerName': insurerName,\r\n\t\t\t\t\t'state': stateAseguradora,\r\n\t\t\t\t\t'editable': editableAseguradora,\r\n\t\t\t\t\t'color': colorAseguradora\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn aseguradorasByGroup;\r\n\t\t}\r\n\r\n\t\tfunction computeStateAseguradora(insurerName, aseguradorasList) {\r\n\t\t\tfor (var i = 0; i < aseguradorasList.length; ++i) {\r\n\t\t\t\tif (aseguradorasList[i].insurerName === insurerName) {\r\n\t\t\t\t\treturn aseguradorasList[i].state;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction computeStateAseguradoraId(insurerName, aseguradorasList) {\r\n\t\t\tfor (var i = 0; i < aseguradorasList.length; ++i) {\r\n\t\t\t\tif (aseguradorasList[i].insurerName === insurerName) {\r\n\t\t\t\t\treturn aseguradorasList[i].insurerId;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction computeEditableAseguradora(insurerName, aseguradorasList) {\r\n\t\t\tfor (var i = 0; i < aseguradorasList.length; ++i) {\r\n\t\t\t\tif (aseguradorasList[i].insurerName === insurerName) {\r\n\t\t\t\t\treturn aseguradorasList[i].editable;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction computeColorAseguradora(insurerName, aseguradorasList) {\r\n /*jshint maxcomplexity:false */\r\n\t\t\tvar color = 'grey';\r\n\t\t\tvar anyConnected = false;\r\n\t\t\tvar anyNotConnected = false;\r\n\t\t\tfor (var i = 0; i < aseguradorasList.length; ++i) {\r\n\t\t\t\tif (aseguradorasList[i].insurerName === insurerName) {\r\n\t\t\t\t\tif (aseguradorasList[i].state) {\r\n\t\t\t\t\t\tif (aseguradorasList[i].insurerName === 'RACC') {\r\n\t\t\t\t\t\t\treturn 'green';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (aseguradorasList[i].isConnected) {\r\n\t\t\t\t\t\t\tanyConnected = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!aseguradorasList[i].isConnected) {\r\n\t\t\t\t\t\t\tanyNotConnected = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (anyConnected && anyNotConnected) {\r\n\t\t\t\tcolor = 'orange';\r\n\t\t\t}\r\n\t\t\telse if (anyConnected) {\r\n\t\t\t\tcolor = 'green';\r\n\t\t\t}\r\n\t\t\telse if (anyNotConnected) {\r\n\t\t\t\tcolor = 'red';\r\n\t\t\t}\r\n\t\t\treturn color;\r\n\t\t}\r\n\r\n\t\tfunction computeColorEmpresaMaster(data) {\r\n\t\t\tvar color = 'grey';\r\n\t\t\tif (data.conexionAseguradoraOn) {\r\n\t\t\t\tcolor = 'green';\r\n\t\t\t}\r\n\t\t\treturn color;\r\n }\r\n\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('genericDataService', genericData);\r\n\r\n genericData.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n /* jshint maxstatements:false */\r\n function genericData($http, $q, endPoints, authorization) {\r\n\r\n var DEFAULT_LIFETIME = 600000; //10 min\r\n\r\n\t\tvar cache = {\r\n\t\t\tperfilesFlotaPorUsuario: {\r\n\t\t\t\tparams: { userId: null },\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n\t\t\t},\r\n\t\t\tperfilesFlota: {\r\n\t\t\t\tparams: { empresaMasterId: null },\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n\t\t\t},\r\n clients: {\r\n params: { company: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n empresas: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tarifas: {\r\n params: { clientId: null, type: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n productos: {\r\n params: { tarifaId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n marcas: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n modelos: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n paises: {\r\n params: { clientId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n provincias: {\r\n params: {\r\n clientId: null,\r\n paisId: null\r\n },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n poblaciones: {\r\n params: {\r\n clientId: null,\r\n provinciaId: null\r\n },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n colectivos: {\r\n params: { clientId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tiposFlota: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tiposSubFlota: {\r\n params: { tipoFlotaId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n colores: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tiposVhc: {\r\n params: { clientId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tiposIncidencia: {\r\n params: { clientId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n averias: {\r\n params: { tipoIncidenciaId: null, clienteId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n bases: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n\t\t\t},\r\n\t\t\tsucursales: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n\t\t\t},\r\n talleres: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n calendarios: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n ubicaciones: {\r\n params: { clientId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n operarios: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n flota: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tiposFin: {\r\n params: { clientId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tiposPago: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n tiposOrdenLog: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n colaboradores: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n aseguradoras: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n contadores: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n informes: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n motRechazo: {\r\n params: { asegId: null },\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n },\r\n comisiones: {\r\n list: null,\r\n lastUpdated: null,\r\n lifetime: DEFAULT_LIFETIME\r\n\t\t\t},\r\n\t\t\tgrupos: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n\t\t\t},\r\n\t\t\ttarifaProducto: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n },\r\n tiposOrden: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n },\r\n unidadesMedida: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n },\r\n impuestos: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tlastUpdated: null,\r\n\t\t\t\tlifetime: DEFAULT_LIFETIME\r\n },\r\n // address searcher cache\r\n\r\n };\r\n\r\n var service = {\r\n getClients: getClients,\r\n getEmpresas: getEmpresas,\r\n getEmpresasFromMaster: getEmpresasFromMaster,\r\n getColoresEstado: getColoresEstado,\r\n getColaboradores: getColaboradores,\r\n\t\t\tgetTarifas: getTarifas,\r\n\t\t\tgetComisiones: getComisiones,\r\n getProductos: getProductos,\r\n getVehicleBrands: getVehicleBrands,\r\n getVehicleModel: getVehicleModel,\r\n getPaises: getPaises,\r\n getProvinces: getProvinces,\r\n getPopulations: getPopulations,\r\n getEntidades: getEntidades,\r\n getEntidadesPersonalized: getEntidadesPersonalized,\r\n getColectivos: getColectivos,\r\n getTiposFlota: getTiposFlota,\r\n getTiposSubFlota: getTiposSubFlota,\r\n getVehicleColors: getVehicleColors,\r\n getTiposVhc: getTiposVhc,\r\n getTiposIncidencia: getTiposIncidencia,\r\n getTiposIncidencias: getTiposIncidencias,\r\n getAverias: getAverias,\r\n\t\t\tgetBases: getBases,\r\n getSucursales: getSucursales,\r\n getCalendarios: getCalendarios,\r\n getTalleres: getTalleres,\r\n getUbicaciones: getUbicaciones,\r\n getOperarios: getOperarios,\r\n getFlota: getFlota,\r\n getTiposFin: getTiposFin,\r\n getTiposPago: getTiposPago,\r\n getTiposOrdenLog: getTiposOrdenLog,\r\n getAseguradoras: getAseguradoras,\r\n getContadores: getContadores,\r\n getInformes: getInformes,\r\n \t\taddColor: addColor,\r\n \t\tgetPerfilesDeFlotaPorUsuario: getPerfilesDeFlotaPorUsuario,\r\n \t\tgetPerfilesDeFlota: getPerfilesDeFlota,\r\n getMotivosRechazo: getMotivosRechazo,\r\n\t\t\tgetGrupos: getGrupos,\r\n tarifaProducto: tarifaProducto,\r\n getTiposOrden: getTiposOrden,\r\n getImpuestos: getImpuestos,\r\n getUnidadesMedida: getUnidadesMedida,\r\n // address cache\r\n getAddressSearcherData: getAddressSearcherData,\r\n getAddressSearcherCache: getAddressSearcherCache\r\n };\r\n\r\n //init\r\n (function () {\r\n //initialize();\r\n })();\r\n\r\n return service;\r\n\r\n //EXPOSED FUNCTIONS\r\n function getClients(company, refreshCache) {\r\n refreshCache = (typeof refreshCache === 'undefined') ? false : refreshCache;\r\n \r\n var expired = cache.clients.params.company !== company ||\r\n cache.clients.lastUpdated === null ||\r\n (Date.now() - cache.clients.lastUpdated) >= cache.clients.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired || refreshCache) {\r\n cache.clients.params.company = company;\r\n cache.clients.lastUpdated = Date.now();\r\n cache.clients.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'GetClients' + '?empresaId=' + company\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.clients.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.clients.lastUpdated = null;\r\n });\r\n\r\n return deferred.promise;\r\n } \r\n\r\n if(cache.clients.list){\r\n deferred.resolve(cache.clients.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.clients.deferred.promise;\r\n }\r\n }\r\n\r\n\r\n function getEmpresas(refreshCache) {\r\n refreshCache = (typeof refreshCache === 'undefined') ? false : refreshCache;\r\n\r\n var expired = refreshCache || cache.empresas.lastUpdated === null ||\r\n (Date.now() - cache.empresas.lastUpdated) >= cache.empresas.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.empresas.lastUpdated = Date.now();\r\n cache.empresas.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getEmpresas'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.empresas.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.empresas.lastUpdated = null;\r\n });\r\n\r\n return deferred.promise;\r\n } \r\n\r\n if(cache.empresas.list){\r\n deferred.resolve(cache.empresas.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.empresas.deferred.promise;\r\n }\r\n }\r\n\r\n function getEmpresasFromMaster() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getEmpresasFromMaster'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getColoresEstado() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getColoresEstado'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getEntidades() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getEntidades'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getEntidadesPersonalized() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getEntidadesPersonalized'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getCalendarios() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getCalendarios'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getColaboradores(refreshCache) {\r\n refreshCache = (typeof refreshCache === 'undefined') ? false : refreshCache;\r\n\r\n var expired = refreshCache || cache.colaboradores.lastUpdated === null ||\r\n (Date.now() - cache.colaboradores.lastUpdated) >= cache.colaboradores.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.colaboradores.lastUpdated = Date.now();\r\n cache.colaboradores.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getColaboradores'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.colaboradores.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.colaboradores.lastUpdated = null;\r\n });\r\n\r\n return deferred.promise;\r\n } \r\n\r\n if(cache.colaboradores.list){\r\n deferred.resolve(cache.colaboradores.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.colaboradores.deferred.promise;\r\n }\r\n }\r\n\r\n function getTarifas(clientId, type) {\r\n /*jshint maxcomplexity:false */\r\n var expired = cache.tarifas.params.clientId !== clientId || cache.tarifas.params.type !== clientId || cache.tarifas.lastUpdated === null || (Date.now() - cache.tarifas.lastUpdated) >= cache.tarifas.lifetime;\r\n\r\n var deferred = $q.defer();\r\n if (expired) {\r\n cache.tarifas.params.clientId = clientId;\r\n cache.tarifas.params.type = type;\r\n cache.tarifas.lastUpdated = Date.now();\r\n cache.tarifas.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTarifas' + '?clientId=' + clientId\r\n };\r\n\r\n if(type === 'GRU'){\r\n\t\t\t\t\trequest.url = endPoints.genericData.getGenericData + 'getTarifasGru' + '?clientId=' + clientId;\r\n } else if(type === 'LOG'){\r\n\t\t\t\t\trequest.url = endPoints.genericData.getGenericData + 'getTarifasLog' + '?clientId=' + clientId;\r\n } else if(type === 'TAX'){\r\n request.url = endPoints.genericData.getGenericData + 'getTarifasTax' + '?clientId=' + clientId;\r\n }\r\n\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tarifas.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tarifas.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n }\r\n if(cache.tarifas.list){\r\n deferred.resolve(cache.tarifas.list.slice());\r\n return deferred.promise;\r\n } else {\r\n return cache.tarifas.deferred.promise;\r\n }\r\n\t\t}\r\n\r\n\r\n\t\tfunction tarifaProducto(tarifaId, productoId) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.genericData.getGenericData + 'getTarifaProducto',\r\n\t\t\t\tdata: { 'tarifaId': tarifaId, 'productoId': productoId}\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request)\r\n\t\t\t\t.then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\t\tfunction getComisiones() {\r\n\t\t\tvar expired = cache.comisiones.lastUpdated === null ||\r\n\t\t\t\t(Date.now() - cache.comisiones.lastUpdated) >= cache.comisiones.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.comisiones.lastUpdated = Date.now();\r\n cache.comisiones.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getComisiones'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.comisiones.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.comisiones.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n }\r\n if(cache.comisiones.list){\r\n deferred.resolve(cache.comisiones.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.comisiones.deferred.promise;\r\n }\r\n\t\t}\r\n\r\n function getProductos(tarifaId) {\r\n var expired = cache.productos.params.tarifaId !== tarifaId ||\r\n cache.productos.lastUpdated === null ||\r\n (Date.now() - cache.productos.lastUpdated) >= cache.productos.lifetime;\r\n\r\n var deferred = $q.defer();\r\n \r\n if (expired) {\r\n cache.productos.params.tarifaId = tarifaId;\r\n cache.productos.lastUpdated = Date.now();\r\n cache.productos.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getProductos' + (tarifaId? '?tarifaId=' + tarifaId : '')\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.productos.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.productos.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.productos.list){\r\n deferred.resolve(cache.productos.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.productos.deferred.promise;\r\n }\r\n }\r\n\r\n function getVehicleBrands() {\r\n var expired = cache.marcas.lastUpdated === null ||\r\n (Date.now() - cache.marcas.lastUpdated) >= cache.marcas.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.marcas.lastUpdated = Date.now();\r\n cache.marcas.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getVehicleBrands'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.marcas.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.marcas.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.marcas.list){\r\n deferred.resolve(cache.marcas.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.marcas.deferred.promise;\r\n }\r\n }\r\n\r\n function getVehicleModel() {\r\n var expired = cache.modelos.lastUpdated === null ||\r\n (Date.now() - cache.modelos.lastUpdated) >= cache.modelos.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.modelos.lastUpdated = Date.now();\r\n cache.modelos.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getVehicleModel'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.modelos.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.modelos.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n }\r\n if(cache.modelos.list){\r\n deferred.resolve(cache.modelos.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.modelos.deferred.promise;\r\n }\r\n }\r\n\r\n function getPaises(clientId) {\r\n var expired = cache.paises.params.clientId !== clientId ||\r\n cache.paises.lastUpdated === null ||\r\n (Date.now() - cache.paises.lastUpdated) >= cache.paises.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.paises.params.clientId = clientId;\r\n cache.paises.lastUpdated = Date.now();\r\n cache.paises.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getPaises' + '?clientId=' + clientId\r\n };\r\n\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.paises.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.paises.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.paises.list){\r\n deferred.resolve(cache.paises.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.paises.deferred.promise;\r\n }\r\n\t\t}\r\n\r\n\t\tfunction getPerfilesDeFlota() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getPerfilesDeFlota'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tfunction getPerfilesDeFlotaPorUsuario(userId) {\r\n\t\t\tvar expired = cache.perfilesFlotaPorUsuario.params.userId !== userId ||\r\n\t\t\t\t(Date.now() - cache.modelos.lastUpdated) >= cache.modelos.lifetime;\r\n\r\n\t\t\tvar deferred = $q.defer();\r\n\r\n\t\t\tif (expired) {\r\n\t\t\t\tcache.perfilesFlotaPorUsuario.params.userId = userId;\r\n\t\t\t\tcache.perfilesFlotaPorUsuario.lastUpdated = Date.now();\r\n\t\t\t\tcache.perfilesFlotaPorUsuario.deferred = deferred;\r\n\r\n\t\t\t\tvar request = {\r\n\t\t\t\t\tmethod: 'GET',\r\n\t\t\t\t\turl: endPoints.genericData.getGenericData + 'getPerfilesDeFlotaPorUsuario' + '?userId=' + userId\r\n\t\t\t\t};\r\n\t\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t\t$http(request)\r\n\t\t\t\t\t.then(function (response) {\r\n\t\t\t\t\t\tcache.perfilesFlotaPorUsuario.list = response.data;\r\n\t\t\t\t\t\tdeferred.resolve(response.data.slice());\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t\t\tcache.perfilesFlotaPorUsuario.lastUpdated = null;\r\n\t\t\t\t\t});\r\n\t\t\t\treturn deferred.promise;\r\n\t\t\t}\r\n\t\t\tif (cache.perfilesFlotaPorUsuario.list) {\r\n\t\t\t\tdeferred.resolve(cache.perfilesFlotaPorUsuario.list.slice());\r\n\t\t\t\treturn deferred.promise;\r\n\t\t\t} else {\r\n\t\t\t\treturn cache.perfilesFlotaPorUsuario.deferred.promise;\r\n\t\t\t}\r\n\t\t}\r\n\r\n function getProvinces(clientId, paisId) {\r\n var expired = cache.provincias.params.clientId !== clientId ||\r\n cache.provincias.params.paisId !== paisId ||\r\n cache.provincias.lastUpdated === null ||\r\n (Date.now() - cache.provincias.lastUpdated) >= cache.provincias.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.provincias.params.clientId = clientId;\r\n cache.provincias.params.paisId = paisId;\r\n cache.provincias.lastUpdated = Date.now();\r\n cache.provincias.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getProvinces' +\r\n '?clientId=' + clientId + '&paisId=' + paisId\r\n };\r\n \r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.provincias.list = response.data;\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.provincias.lastUpdated = null;\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n\r\n if(cache.provincias.list){\r\n deferred.resolve(cache.provincias.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.provincias.deferred.promise;\r\n }\r\n }\r\n\r\n function getPopulations(clientId, provinceId) {\r\n var expired = cache.poblaciones.params.clientId !== clientId ||\r\n cache.poblaciones.params.provinciaId !== provinceId ||\r\n cache.poblaciones.lastUpdated === null ||\r\n (Date.now() - cache.poblaciones.lastUpdated) >= cache.poblaciones.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.poblaciones.params.clientId = clientId;\r\n cache.poblaciones.params.provinciaId = provinceId;\r\n cache.poblaciones.lastUpdated = Date.now();\r\n cache.poblaciones.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getPopulations' +\r\n '?clientId=' + clientId + '&provinceId=' + provinceId\r\n };\r\n \r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.poblaciones.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.poblaciones.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.poblaciones.list){\r\n deferred.resolve(cache.poblaciones.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.poblaciones.deferred.promise;\r\n }\r\n }\r\n\r\n function getAddressSearcherData(clientId) {\r\n var deferred = $q.defer();\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getAddressSearcherData' +\r\n '/' + ((clientId != null) ? clientId : '00000000-0000-0000-0000-000000000000')\r\n };\r\n \r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getAddressSearcherCache(url) {\r\n var deferred = $q.defer();\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.base + '/' + url\r\n };\r\n \r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n deferred.resolve(response.data);\r\n\r\n },\r\n function (response) {\r\n deferred.reject(null); \r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getColectivos(clientId) {\r\n var expired = cache.colectivos.params.clientId !== clientId ||\r\n cache.colectivos.lastUpdated === null ||\r\n (Date.now() - cache.colectivos.lastUpdated) >= cache.colectivos.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.colectivos.params.clientId = clientId;\r\n cache.colectivos.lastUpdated = Date.now();\r\n cache.colectivos.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getColectivos' + '?clientId=' + clientId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.colectivos.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.colectivos.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.colectivos.list){\r\n deferred.resolve(cache.colectivos.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.colectivos.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposFlota() {\r\n var expired = cache.tiposFlota.lastUpdated === null ||\r\n (Date.now() - cache.tiposFlota.lastUpdated) >= cache.tiposFlota.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposFlota.lastUpdated = Date.now();\r\n cache.tiposFlota.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTipoFlota'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposFlota.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposFlota.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposFlota.list){\r\n deferred.resolve(cache.tiposFlota.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposFlota.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposSubFlota() {\r\n var expired = cache.tiposSubFlota.lastUpdated === null ||\r\n (Date.now() - cache.tiposSubFlota.lastUpdated) >= cache.tiposSubFlota.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposSubFlota.lastUpdated = Date.now();\r\n cache.tiposSubFlota.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTipoSubFlota'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposSubFlota.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposSubFlota.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposSubFlota.list){\r\n deferred.resolve(cache.tiposSubFlota.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposSubFlota.deferred.promise;\r\n }\r\n }\r\n\r\n function getVehicleColors(refreshCache) {\r\n refreshCache = (typeof refreshCache === 'undefined') ? false : refreshCache;\r\n\r\n var expired = refreshCache || cache.colores.lastUpdated === null ||\r\n (Date.now() - cache.colores.lastUpdated) >= cache.colores.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.colores.lastUpdated = Date.now();\r\n cache.colores.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getVehicleColors'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.colores.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.colores.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n }\r\n if(cache.colores.list){\r\n deferred.resolve(cache.colores.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.colores.deferred.promise;\r\n }\r\n }\r\n\r\n function addColor(color){\r\n var deferred = $q.defer();\r\n\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.genericData.getGenericData + 'AddVehicleColor',\r\n data: color\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.clients.lastUpdated = null;\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getTiposVhc(clientId) {\r\n var expired = cache.tiposVhc.params.clientId !== clientId ||\r\n cache.tiposVhc.lastUpdated === null ||\r\n (Date.now() - cache.tiposVhc.lastUpdated) >= cache.tiposVhc.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposVhc.params.clientId = clientId;\r\n cache.tiposVhc.lastUpdated = Date.now();\r\n cache.tiposVhc.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTipoVehicle' + '?clientId=' + clientId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposVhc.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposVhc.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposVhc.list){\r\n deferred.resolve(cache.tiposVhc.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposVhc.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposIncidencia(clientId) {\r\n var expired = cache.tiposIncidencia.params.clientId !== clientId ||\r\n cache.tiposIncidencia.lastUpdated === null ||\r\n (Date.now() - cache.tiposIncidencia.lastUpdated) >= cache.tiposIncidencia.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposIncidencia.params.clientId = clientId;\r\n cache.tiposIncidencia.lastUpdated = Date.now();\r\n cache.tiposIncidencia.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTipoIncidencia' + '?clientId=' + clientId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposIncidencia.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposIncidencia.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposIncidencia.list){\r\n deferred.resolve(cache.tiposIncidencia.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposIncidencia.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposIncidencias() {\r\n\r\n var deferred = $q.defer();\r\n \r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTiposIncidencias' \r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getAverias(tipoIncidenciaId, clienteId) {\r\n var expired = cache.averias.params.tipoIncidenciaId !== tipoIncidenciaId ||\r\n cache.averias.params.clienteId !== clienteId ||\r\n cache.averias.lastUpdated === null ||\r\n (Date.now() - cache.averias.lastUpdated) >= cache.averias.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.averias.params.tipoIncidenciaId = tipoIncidenciaId;\r\n cache.averias.params.clienteId = clienteId;\r\n cache.averias.lastUpdated = Date.now();\r\n cache.averias.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getAverias' + \r\n '?tipoIncidenciaId=' + tipoIncidenciaId + '&clientId=' + clienteId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.averias.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.averias.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.averias.list){\r\n deferred.resolve(cache.averias.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.averias.deferred.promise;\r\n }\r\n }\r\n\r\n function getBases() {\r\n var expired = cache.bases.lastUpdated === null ||\r\n (Date.now() - cache.bases.lastUpdated) >= cache.bases.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.bases.lastUpdated = Date.now();\r\n cache.bases.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getBases'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.bases.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.bases.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n\r\n if(cache.bases.list){\r\n deferred.resolve(cache.bases.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.bases.deferred.promise;\r\n }\r\n\t\t}\r\n\r\n\t\tfunction getSucursales(clientId) {\r\n\t\t\tvar expired = cache.sucursales.lastUpdated === null ||\r\n\t\t\t\t(Date.now() - cache.sucursales.lastUpdated) >= cache.bases.lifetime;\r\n\r\n\t\t\tvar deferred = $q.defer();\r\n\r\n\t\t\tif (expired) {\r\n\t\t\t\tcache.sucursales.lastUpdated = Date.now();\r\n\t\t\t\tcache.sucursales.deferred = deferred;\r\n\r\n\t\t\t\tvar request = {\r\n\t\t\t\t\tmethod: 'GET',\r\n\t\t\t\t\turl: endPoints.genericData.getGenericData + 'getSucursales' + '?clientId=' + clientId\r\n\t\t\t\t};\r\n\t\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t\t$http(request)\r\n\t\t\t\t\t.then(function (response) {\r\n\t\t\t\t\t\tcache.sucursales.list = response.data;\r\n\t\t\t\t\t\tdeferred.resolve(response.data.slice());\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t\t\tcache.sucursales.lastUpdated = null;\r\n\t\t\t\t\t});\r\n\t\t\t\treturn deferred.promise;\r\n\t\t\t}\r\n\r\n\t\t\tif (cache.sucursales.list) {\r\n\t\t\t\tdeferred.resolve(cache.sucursales.list.slice());\r\n\t\t\t\treturn deferred.promise;\r\n\t\t\t} else {\r\n\t\t\t\treturn cache.sucursales.deferred.promise;\r\n\t\t\t}\r\n\t\t}\r\n\r\n function getTalleres() {\r\n var expired = cache.talleres.lastUpdated === null ||\r\n (Date.now() - cache.talleres.lastUpdated) >= cache.talleres.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.talleres.lastUpdated = Date.now();\r\n cache.talleres.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTalleres'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.talleres.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.talleres.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.talleres.list){\r\n deferred.resolve(cache.talleres.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.talleres.deferred.promise;\r\n }\r\n }\r\n\r\n function getUbicaciones(clientId) {\r\n var expired = cache.ubicaciones.params.clientId !== clientId ||\r\n cache.ubicaciones.lastUpdated === null ||\r\n (Date.now() - cache.ubicaciones.lastUpdated) >= cache.ubicaciones.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.ubicaciones.params.clientId = clientId;\r\n cache.ubicaciones.lastUpdated = Date.now();\r\n cache.ubicaciones.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getUbicaciones' + '?clientId=' + clientId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.ubicaciones.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.ubicaciones.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.ubicaciones.list){\r\n deferred.resolve(cache.ubicaciones.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.ubicaciones.deferred.promise;\r\n }\r\n }\r\n\r\n function getOperarios() {\r\n var expired = cache.operarios.lastUpdated === null ||\r\n (Date.now() - cache.operarios.lastUpdated) >= cache.operarios.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.operarios.lastUpdated = Date.now();\r\n cache.operarios.deferred = deferred;\r\n \r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getOperarios'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.operarios.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.operarios.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.operarios.list){\r\n deferred.resolve(cache.operarios.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.operarios.deferred.promise;\r\n }\r\n }\r\n\r\n function getFlota() {\r\n var expired = cache.flota.lastUpdated === null ||\r\n (Date.now() - cache.flota.lastUpdated) >= cache.flota.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.flota.lastUpdated = Date.now();\r\n cache.flota.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getFlota'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.flota.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.flota.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.flota.list){\r\n deferred.resolve(cache.flota.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.flota.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposFin(clientId) {\r\n var expired = cache.tiposFin.params.clientId !== clientId ||\r\n cache.tiposFin.lastUpdated === null ||\r\n (Date.now() - cache.tiposFin.lastUpdated) >= cache.tiposFin.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposFin.params.clientId = clientId;\r\n cache.tiposFin.lastUpdated = Date.now();\r\n cache.tiposFin.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTiposFin' + '?clientId=' + clientId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposFin.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposFin.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposFin.list){\r\n deferred.resolve(cache.tiposFin.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposFin.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposPago() {\r\n var expired = cache.tiposPago.lastUpdated === null ||\r\n (Date.now() - cache.tiposPago.lastUpdated) >= cache.tiposPago.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposPago.lastUpdated = Date.now();\r\n cache.tiposPago.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTiposPago'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposPago.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposPago.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposPago.list){\r\n deferred.resolve(cache.tiposPago.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposPago.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposOrdenLog() {\r\n var expired = cache.tiposOrdenLog.lastUpdated === null ||\r\n (Date.now() - cache.tiposOrdenLog.lastUpdated) >= cache.tiposOrdenLog.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposOrdenLog.lastUpdated = Date.now();\r\n cache.tiposOrdenLog.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTiposOrdenLog'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposOrdenLog.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposOrdenLog.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposOrdenLog.list){\r\n deferred.resolve(cache.tiposOrdenLog.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposOrdenLog.deferred.promise;\r\n }\r\n }\r\n\r\n function getAseguradoras() {\r\n var expired = cache.aseguradoras.lastUpdated === null ||\r\n (Date.now() - cache.aseguradoras.lastUpdated) >= cache.aseguradoras.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.aseguradoras.lastUpdated = Date.now();\r\n cache.aseguradoras.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getAseguradoras'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.aseguradoras.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.aseguradoras.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.aseguradoras.list){\r\n deferred.resolve(cache.aseguradoras.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.aseguradoras.deferred.promise;\r\n }\r\n }\r\n \r\n\t\tfunction getContadores(empresaId) {\r\n\t\t\tvar deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n\t\t\t\turl: endPoints.genericData.getGenericData + 'getContadores' + '?empresaId=' + empresaId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getGrupos() {\r\n\t\t\tvar expired = cache.grupos.lastUpdated === null ||\r\n\t\t\t\t(Date.now() - cache.grupos.lastUpdated) >= cache.grupos.lifetime;\r\n\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tif (expired) {\r\n\t\t\t\tcache.grupos.lastUpdated = Date.now();\r\n\t\t\t\tcache.grupos.deferred = deferred;\r\n\r\n\t\t\t\tvar request = {\r\n\t\t\t\t\tmethod: 'GET',\r\n\t\t\t\t\turl: endPoints.genericData.getGenericData + 'getGrupos'\r\n\t\t\t\t};\r\n\t\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t\t$http(request)\r\n\t\t\t\t\t.then(function (response) {\r\n\t\t\t\t\t\tcache.grupos.list = response.data;\r\n\t\t\t\t\t\tdeferred.resolve(response.data.slice());\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction (response) {\r\n\t\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t\t\tcache.grupos.lastUpdated = null;\r\n\t\t\t\t\t});\r\n\t\t\t\treturn deferred.promise;\r\n\t\t\t}\r\n\t\t\tif (cache.grupos.list) {\r\n\t\t\t\tdeferred.resolve(cache.grupos.list.slice());\r\n\t\t\t\treturn deferred.promise;\r\n\t\t\t} else {\r\n\t\t\t\treturn cache.grupos.deferred.promise;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n function getInformes() {\r\n var expired = cache.informes.lastUpdated === null ||\r\n (Date.now() - cache.informes.lastUpdated) >= cache.informes.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.informes.lastUpdated = Date.now();\r\n cache.informes.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getInformes'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.informes.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.informes.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.informes.list){\r\n deferred.resolve(cache.informes.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.informes.deferred.promise;\r\n }\r\n }\r\n\r\n function getMotivosRechazo(asegId) {\r\n var expired = cache.motRechazo.params.asegId !== asegId ||\r\n cache.motRechazo.lastUpdated === null ||\r\n (Date.now() - cache.motRechazo.lastUpdated) >= cache.motRechazo.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.motRechazo.params.asegId = asegId;\r\n cache.motRechazo.lastUpdated = Date.now();\r\n cache.motRechazo.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getMotivosRechazo' + '?asegId=' + asegId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.motRechazo.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.motRechazo.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.motRechazo.list){\r\n deferred.resolve(cache.motRechazo.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.motRechazo.deferred.promise;\r\n }\r\n }\r\n\r\n function getTiposOrden() {\r\n var expired = cache.tiposOrden.lastUpdated === null ||\r\n (Date.now() - cache.tiposOrden.lastUpdated) >= cache.tiposOrden.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.tiposOrden.lastUpdated = Date.now();\r\n cache.tiposOrden.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getTiposOrden'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.tiposOrden.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.tiposOrden.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.tiposOrden.list){\r\n deferred.resolve(cache.tiposOrden.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.tiposOrden.deferred.promise;\r\n }\r\n }\r\n\r\n function getUnidadesMedida() {\r\n var expired = cache.unidadesMedida.lastUpdated === null ||\r\n (Date.now() - cache.unidadesMedida.lastUpdated) >= cache.unidadesMedida.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.unidadesMedida.lastUpdated = Date.now();\r\n cache.unidadesMedida.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getUnidadesMedida'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.unidadesMedida.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.unidadesMedida.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.unidadesMedida.list){\r\n deferred.resolve(cache.unidadesMedida.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.unidadesMedida.deferred.promise;\r\n }\r\n }\r\n\r\n function getImpuestos() {\r\n var expired = cache.impuestos.lastUpdated === null ||\r\n (Date.now() - cache.impuestos.lastUpdated) >= cache.impuestos.lifetime;\r\n\r\n var deferred = $q.defer();\r\n\r\n if (expired) {\r\n cache.impuestos.lastUpdated = Date.now();\r\n cache.impuestos.deferred = deferred;\r\n\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.genericData.getGenericData + 'getImpuestos'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request)\r\n .then(function (response) {\r\n cache.impuestos.list = response.data;\r\n deferred.resolve(response.data.slice());\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n cache.impuestos.lastUpdated = null;\r\n });\r\n return deferred.promise;\r\n } \r\n if(cache.impuestos.list){\r\n deferred.resolve(cache.impuestos.list.slice());\r\n return deferred.promise;\r\n }else{\r\n return cache.impuestos.deferred.promise;\r\n }\r\n }\r\n\r\n //PRIVATE FUNCTIONS\r\n function initialize(){\r\n //Initialize static data that needs no parameters \r\n getClients();\r\n getEmpresas();\r\n getTarifas();\r\n getProductos();\r\n getVehicleBrands();\r\n getTiposFlota();\r\n getVehicleColors();\r\n\t\t\tgetBases();\r\n\t\t\tgetSucursales();\r\n getOperarios();\r\n getFlota();\r\n getTiposFin();\r\n getTiposPago();\r\n }\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('grupoService', grupoService);\r\n\r\n\tgrupoService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction grupoService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.grupos.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(grupoId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.grupos.getById + '?grupoId=' + grupoId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(grupo) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.grupos.add,\r\n data: {\r\n grupoId : grupo.grupoId,\r\n empresaId : grupo.empresaId,\r\n id : grupo.id,\r\n descripcion : grupo.descripcion,\r\n tipoGrupo : grupo.tipoGrupo,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(grupoIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.grupos.deleteById,\r\n data: grupoIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n .factory('logEmpleadosService', logEmpleadosService);\r\n\r\n logEmpleadosService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n function logEmpleadosService($http, $q, endPoints, authorization) {\r\n var service = {\r\n getPending: getPending,\r\n getAccepted: getAccepted,\r\n getActive: getActive, \r\n getDriversNum: getDriversNum, \r\n aprobar: aprobar, \r\n archivar: archivar,\r\n desarchivar: desarchivar,\r\n getAvailable: getAvailable, \r\n getAll: getAll, \r\n getPendingNum: getPendingNum, \r\n getById: getById, \r\n getEmpleados: getEmpleados, \r\n getGruposEstado: getGruposEstado, \r\n save: save, \r\n getAllEmpleados: getAllEmpleados, \r\n suscriptionHorarioUpdate: suscriptionHorarioUpdate,\r\n aceptarJornadas: aceptarJornadas, \r\n getJornadasEmpleado: getJornadasEmpleado, \r\n rechazarJornada: rechazarJornada, \r\n changeEstadoJornada: changeEstadoJornada, \r\n getMyById: getMyById, \r\n createZoho: createZoho, \r\n updateZoho: updateZoho, \r\n deleteZoho: deleteZoho, \r\n getZoho: getZoho, \r\n getArchivadas: getArchivadas\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n function getPending() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getPending,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getArchivadas() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getArchivadas,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getJornadasEmpleado() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getJornadasEmpleado,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getZoho(empmasterId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getZoho +'?empresaMasterId='+empmasterId,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function deleteZoho(subId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.deleteZoho,\r\n data: {\r\n subscriptionId: subId\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n \r\n function updateZoho(subId, emp) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.updateZoho,\r\n data: {\r\n subscriptionId: subId,\r\n employeeCount: emp\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function createZoho(empmasterId, emp) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.createZoho +'?empresaMasterId=' + empmasterId,\r\n data: {\r\n planCode: 'ESTANDAR_RRHH_MEN',\r\n employeeCount: emp\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getDriversNum() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getDriversNum,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getEmpleados() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getEmpleados,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getAllEmpleados() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getAllEmpleados,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getGruposEstado() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getGruposEstado,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getById(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getById + '?id=' + id,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getMyById(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getMyById + '?id=' + id,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getPendingNum() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getPendingNum,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n function getActive() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getActive,\r\n \r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getAvailable() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.logEmpleados.getAvailable,\r\n\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function aceptarJornadas(jornadas) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.aceptarJornadas,\r\n data: jornadas\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function rechazarJornada(id, motivo) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.rechazarJornada,\r\n data : {\r\n id: id,\r\n motivo: motivo\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function changeEstadoJornada(val) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.changeEstadoJornada,\r\n data: val\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function aprobar(jornadas, resumenes = []) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.aprobar,\r\n data: {\r\n Resumenes: resumenes,\r\n Jornadas: jornadas,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function archivar(jornada) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.archivar,\r\n data: {\r\n jornada: jornada,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function desarchivar(jornada) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.desarchivar,\r\n data: {\r\n jornada: jornada,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function suscriptionHorarioUpdate(accion, list, numLic, supervisorId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.suscriptionHorarioUpdate,\r\n data: {\r\n accion: accion,\r\n list: list,\r\n numLic: numLic, \r\n supervisorId: supervisorId\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function save(modificaciones, observaciones, id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.save,\r\n data: {\r\n modificaciones: modificaciones,\r\n observaciones: observaciones, \r\n id: id\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getAccepted(date, id, type) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.getAccepted,\r\n data: {\r\n date: date,\r\n empleado: id\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n //unused\r\n function getAll(date, id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.logEmpleados.getAll,\r\n data: {\r\n date: date,\r\n empleado: id\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('mantenimientoFlotasService', mantenimientoFlotas);\r\n\r\n mantenimientoFlotas.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n function mantenimientoFlotas($http, $q, endPoints, authorization) {\r\n var service = {\r\n\t\t\tgetByFlotaId: getByFlotaId,\r\n\t\t\tgetList: getList,\r\n };\r\n\r\n return service;\r\n\r\n function getByFlotaId(flotaId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.mantenimientoFlotas.getMantenimientoFlotasByFlotaId + ('GetByflotaId?flotaId=' + flotaId)\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.mantenimientoFlotas.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('mensajePredefService', mensajePredefService);\r\n\r\n\tmensajePredefService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction mensajePredefService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.mensajesPredef.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(mensajePredefId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.mensajesPredef.getById + '?mensajePredefId=' + mensajePredefId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(mensajePredef) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.mensajesPredef.add,\r\n data: {\r\n mensajePredefId : mensajePredef.mensajePredefId,\r\n mensaje : mensajePredef.mensaje,\r\n empresaMasterId : mensajePredef.empresaMasterId,\r\n tipo : mensajePredef.tipo,\r\n orden : mensajePredef.orden,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(mensajePredefIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.mensajesPredef.deleteById,\r\n data: mensajePredefIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('messagingService', messagingService);\r\n\r\n messagingService.$inject = [\r\n '$http',\r\n '$q',\r\n 'endPoints',\r\n 'authorization',\r\n '$rootScope',\r\n 'userService'\r\n ];\r\n\r\n function messagingService(\r\n $http,\r\n $q,\r\n endPoints,\r\n authorization,\r\n $rootScope,\r\n userService\r\n ) {\r\n var service = {\r\n activeOrdersCountEventName: 'ActiveOrdersCount',\r\n\t\t\tnewOrdersCountEventName: 'NewOrdersCount',\r\n\t\t\tmovePendingOrdersCountEventName: 'MovePendingCount',\r\n newOrNotificationOrdersCountEventName: 'NewOrNotificationOrdersCount',\r\n delayedOrdersCountEventName: 'DelayedOrdersCount',\r\n scheduledOrdersCountEventName: 'ScheduledOrdersCount',\r\n addedOrderEventName: 'AddedOrder',\r\n removedOrderEventName: 'RemovedOrder',\r\n modifiedOrderEventName: 'ModifiedOrder',\r\n activeOrdersUpdateEventName: 'ActiveOrdersUpdate',\r\n\r\n\r\n init: init,\r\n connect: connect\r\n };\r\n\r\n var connection;\r\n\r\n return service;\r\n\r\n function init() {\r\n var url = endPoints.messaging.notifications;\r\n url += '?';\r\n url += 'usuarioId=' + userService.userData.usuarioId;\r\n url += '&';\r\n url += 'empresaMasterId=' + userService.userData.empresaMasterId;\r\n url += '&';\r\n url += 'receiverId=' + userService.userData.messagingReceiverId;\r\n\r\n connection = new signalR.HubConnectionBuilder()\r\n .withUrl(url)\r\n .build();\r\n\r\n connection\r\n .on(service.activeOrdersCountEventName, function (message) {\r\n $(window).trigger('messaging-active-orders-count', message.count);\r\n });\r\n\r\n connection\r\n .on(service.newOrdersCountEventName, function (message) {\r\n $(window).trigger('messaging-news-orders-count', message.count);\r\n });\r\n\r\n connection\r\n .on(service.newOrNotificationOrdersCountEventName, function (message) {\r\n $(window).trigger('messaging-news-notifications-orders-count', message.count);\r\n });\r\n\r\n connection\r\n .on(service.delayedOrdersCountEventName, function (message) {\r\n $(window).trigger('messaging-delayed-orders-count', message.count);\r\n });\r\n\r\n connection\r\n .on(service.scheduledOrdersCountEventName, function (message) {\r\n $(window).trigger('messaging-scheduled-orders-count', message.count);\r\n\t\t\t\t});\r\n\r\n\t\t\tconnection\r\n\t\t\t\t.on(service.movePendingOrdersCountEventName, function (message) {\r\n\t\t\t\t\t$(window).trigger('messaging-movepending-orders-count', message.count);\r\n\t\t\t\t});\r\n\r\n connection\r\n .on(service.addedOrderEventName, function (message) {\r\n $(window).trigger('added-order', message.orderId);\r\n });\r\n\r\n connection\r\n .on(service.removedOrderEventName, function (message) {\r\n $(window).trigger('removed-order', message.orderId);\r\n });\r\n\r\n connection\r\n .on(service.modifiedOrderEventName, function (message) {\r\n $(window).trigger('modified-order', message.orderId);\r\n });\r\n\r\n connection\r\n\t\t\t\t.on(service.activeOrdersUpdateEventName, function (message) {\r\n $(window).trigger('active-orders-update', message);\r\n });\r\n\r\n connection\r\n .on('UnreadMessagesCount', function (message) {\r\n $(window).trigger('messaging-unread-messages-count', message.count);\r\n });\r\n\r\n connection\r\n .on('UnreadMessage', function (message) {\r\n $(window).trigger('messaging-unread-message', message);\r\n });\r\n\r\n connection\r\n .onclose(function () {\r\n try {\r\n $(window).trigger('login-failed');\r\n connect();\r\n } catch (err) {\r\n setTimeout(connect, 5000);\r\n }\r\n });\r\n }\r\n\r\n\t\tfunction connect() {\r\n\t\t\treturn;\r\n connection\r\n .start()\r\n .then(function (a) {\r\n $(window).trigger('login-succeed');\r\n }, function (reason) {\r\n $(window).trigger('login-failed');\r\n setTimeout(connect, 5000);\r\n })\r\n .catch(function (err) {\r\n });\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('notificationService', notificationService);\r\n\r\n notificationService.$inject = ['$window', 'Notification', '$timeout'];\r\n\r\n function notificationService($window, appNotification, $timeout) {\r\n\r\n var isWindowOpen = true;\r\n\r\n\r\n $window.addEventListener('focus', function (e) {\r\n isWindowOpen = true;\r\n });\r\n\r\n $window.addEventListener('blur', function (e) {\r\n isWindowOpen = false;\r\n });\r\n \r\n return {\r\n sendNotification : sendNotification,\r\n sendHTMLNotification : sendHTMLNotification,\r\n sendAppNotification : sendAppNotification\r\n };\r\n\r\n function sendNotification(notification){\r\n if(isWindowOpen){\r\n sendAppNotification(notification);\r\n } else {\r\n sendHTMLNotification(notification);\r\n }\r\n }\r\n\r\n function sendHTMLNotification(notification){\r\n if(window.Notification && Notification.permission !== 'denied') {\r\n Notification.requestPermission(function(status) { // status is \"granted\", if accepted by user\r\n var n = new Notification(notification.title, { \r\n body: notification.message,\r\n icon: notification.icon\r\n }); \r\n n.onclick = function(){\r\n notification.onclick();\r\n n.close();\r\n };\r\n\r\n $timeout(function(){\r\n n.close();\r\n }, notification.delay || 8000);\r\n });\r\n }\r\n }\r\n\r\n function sendAppNotification(notification){\r\n appNotification({\r\n title : notification.title,\r\n message: notification.message,\r\n //templateUrl: notification.templateUrl, \r\n templateUrl: notification.templateUrl || 'app/views/notification.html',\r\n delay: notification.delay, \r\n positionY: notification.positionY,\r\n positionX: notification.positionX,\r\n replaceMessage: notification.replaceMessage,\r\n closeOnClick : notification.closeOnClick,\r\n scope: notification.scope\r\n },\r\n notification.type);\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('ordersService', order);\r\n\r\n order.$inject = [\r\n '$http',\r\n '$q',\r\n 'endPoints',\r\n 'authorization',\r\n '$filter'\r\n ];\r\n\r\n function order(\r\n $http,\r\n $q,\r\n endPoints,\r\n authorization,\r\n $filter\r\n ) {\r\n\r\n var service = {\r\n getAllOrders: getAllOrders,\r\n getScheduledOrders: getScheduledOrders,\r\n activateScheduledOrder: activateScheduledOrder,\r\n activateScheduledOrders: activateScheduledOrders,\r\n getOrderById: getOrderById,\r\n getOrderLogById: getOrderLogById,\r\n saveOrder: saveOrder,\r\n saveOrdenLinea: saveOrdenLinea,\r\n addOrder: addOrder,\r\n addOrderLog: addOrderLog,\r\n deleteOrderLog: deleteOrderLog,\r\n updateOrderLog: updateOrderLog,\r\n assignToOperator: assignToOperator,\r\n\t\t\tgetLogOrders: getLogOrders,\r\n\t\t\tsetEstadoAsignacionOrder: setEstadoAsignacionOrder,\r\n\t\t\tgetLogInternalOrders: getLogInternalOrders,\r\n\t\t\tgetLogInternalNewOrders: getLogInternalNewOrders,\r\n legacyChangeAssignmentState: legacyChangeAssignmentState,\r\n legacyChangeOrderState: legacyChangeOrderState,\r\n acknowledgeDelay: acknowledgeDelay,\r\n retarifar: retarifar,\r\n calcular: calcular,\r\n removeOrdenLinea: removeOrdenLinea,\r\n getOrdenLineas: getOrdenLineas,\r\n getOrdenImagenes: getOrdenImagenes,\r\n removeOrders: removeOrders,\r\n getLineasImpuesto: getLineasImpuesto,\r\n getLogPlannerOrders: getLogPlannerOrders,\r\n getLogPlannerOrdersDiv: getLogPlannerOrdersDiv,\r\n splitOrder: splitOrder,\r\n joinOrder: joinOrder,\r\n\t\t\tchangeAssignmentState: changeAssignmentState,\r\n\r\n };\r\n\r\n return service;\r\n\r\n function legacyChangeOrderState(orderId, state) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.changeState,\r\n data: { 'token': authorization.getStoredToken(), 'orderId': orderId, 'state': state },\r\n headers: {\r\n 'authorization': undefined\r\n }\r\n };\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function calcular(orderId, dto, supIncFac) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.calcular,\r\n data: {\r\n 'token': authorization.getStoredToken(),\r\n 'orderId': orderId,\r\n 'dto': dto,\r\n 'suplidos': supIncFac === true\r\n },\r\n headers: {\r\n 'authorization': undefined\r\n }\r\n };\r\n\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function retarifar(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.retarifar,\r\n data: { 'token': authorization.getStoredToken(), 'orderId': orderId },\r\n headers: {\r\n 'authorization': undefined\r\n }\r\n };\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function legacyChangeAssignmentState(orderId, state, tiempoDemora, idRechazo, extraParams) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.changeAssignmentState,\r\n data: {\r\n 'token': authorization.getStoredToken(),\r\n 'orderId': orderId,\r\n 'estadoAsignacion': state,\r\n 'idRechazo': idRechazo,\r\n 'tiempoDemora': tiempoDemora,\r\n 'extraparams': extraParams\r\n },\r\n headers: {\r\n 'authorization': undefined\r\n }\r\n };\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function changeAssignmentState(orderId, state) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.updateAssignmentState + '?orderId=' + orderId + '&state=' + state\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getAllOrders(skip, take, sorting, filters, baja, frequencyFields, searchText, programadas, fromDate, toDate) {\r\n var deferred = $q.defer();\r\n var dateParams = '&fromDate=' + ((fromDate) ? fromDate.format('YYYY-MM-DD') : '') + '&toDate=' + ((toDate) ? toDate.format('YYYY-MM-DD') : '');\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.getOrders + 'GetAll' + '?skip=' + skip + '&take=' + take + dateParams,\r\n data: {\r\n 'sorting': sorting,\r\n 'filters': filters,\r\n 'dadosDeBaja': baja,\r\n 'programadas': programadas,\r\n 'frequencyFields': frequencyFields,\r\n 'searchTextByFrequencyFields': searchText\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getScheduledOrders() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.orders.getScheduledOrders\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function activateScheduledOrder(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.activateScheduledOrder,\r\n data: {\r\n 'orderId': orderId\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n }, function (response) {\r\n deferred.reject(null);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function activateScheduledOrders(orderIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.activateScheduledOrders,\r\n data: {\r\n 'orderIds': orderIds\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n }, function (response) {\r\n deferred.reject(null);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getLogPlannerOrders(skip, take, sorting, filters, baja, frequencyFields, searchText, fromDate, toDate) {\r\n var deferred = $q.defer();\r\n var dateParams = '&fromDate=' + ((fromDate) ? fromDate.format('YYYY-MM-DD') : '') + '&toDate=' + ((toDate) ? toDate.format('YYYY-MM-DD') : '');\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.getLogPlanner + '?skip=' + skip + '&take=' + take + dateParams,\r\n data: {\r\n 'sorting': sorting, 'filters': filters, 'dadosDeBaja': baja,\r\n 'frequencyFields': frequencyFields, 'searchTextByFrequencyFields': searchText\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getLogPlannerOrdersDiv(skip, take, sorting, filters, baja, frequencyFields, searchText, fromDate, toDate) {\r\n var deferred = $q.defer();\r\n var dateParams = '&fromDate=' + ((fromDate) ? fromDate.format('YYYY-MM-DD') : '') + '&toDate=' + ((toDate) ? toDate.format('YYYY-MM-DD') : '');\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.getLogPlannerDiv + '?skip=' + skip + '&take=' + take + dateParams,\r\n data: {\r\n 'sorting': sorting, 'filters': filters, 'dadosDeBaja': baja,\r\n 'frequencyFields': frequencyFields, 'searchTextByFrequencyFields': searchText\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getLogOrders(skip, take, sorting, filters, frequencyFields, searchText, fromDate, toDate, minState, maxState) {\r\n var deferred = $q.defer();\r\n\t\t\tvar dateParams = '&fromDate=' + ((fromDate) ? fromDate.format('YYYY-MM-DD') : '') + '&toDate=' + ((toDate) ? toDate.format('YYYY-MM-DD') : '');\r\n var request = {\r\n method: 'POST',\r\n\t\t\t\turl: endPoints.orders.getOrders + 'getlogistic' + '?skip=' + skip + '&take=' + take + dateParams + '&minState=' + minState + '&maxState=' + maxState,\r\n data: {\r\n 'sorting': sorting, 'filters': filters,\r\n 'frequencyFields': frequencyFields, 'searchTextByFrequencyFields': searchText\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction setEstadoAsignacionOrder(orderId, estadoAsignacion) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.orders.getOrders + 'SetEstadoAsignacionOrder' + '?orderId=' + orderId + '&estadoAsignacion=' + estadoAsignacion\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\t\t\r\n\r\n function getLogInternalOrders(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.orders.getOrders + 'GetOrdersForLog' + '?orderId=' + orderId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getLogInternalNewOrders(orderId) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.orders.getOrders + 'GetNewOrdersForLog' + '?orderId=' + orderId\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n function getOrderById(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.orders.getOrders + ('getById?orderId=' + orderId)\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getOrderLogById(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.orders.getOrders + ('getOrdenLogById?orderId=' + orderId)\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function saveOrder(order, orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'PUT',\r\n url: endPoints.orders.getOrders + 'update' + '?orderId=' + orderId,\r\n data: order\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getOrdenImagenes(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.orders.getOrdenImagenes + '?orderId=' + orderId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getOrdenLineas(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.orders.getOrdenLineas + '?orderId=' + orderId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getLineasImpuesto(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.orders.getLineasImpuesto + '?orderId=' + orderId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function saveOrdenLinea(ordenLinea) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.addOrdenLinea,\r\n data: ordenLinea\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function removeOrdenLinea(ordenLineaId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'DELETE',\r\n url: endPoints.orders.removeOrdenLinea + '?ordenLineaId=' + ordenLineaId,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function removeOrders(ordenIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.removeOrders,\r\n data: ordenIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function addOrder(order) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.getOrders + 'add',\r\n data: order\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function addOrderLog(order) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.getOrders + 'addLogistica',\r\n data: order\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteOrderLog(orders) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.getOrders + 'deleteLogistica',\r\n data: orders\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function updateOrderLog(order, orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'PUT',\r\n url: endPoints.orders.getOrders + 'updateLogistica' + '?orderId=' + orderId,\r\n data: order\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function assignToOperator(operatorId, orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.assignToOperator,\r\n data: { orderId: orderId, operatorId: operatorId }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function acknowledgeDelay(orderId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.acknowledgeDelay + '?orderId=' + orderId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function splitOrder(orderId, parada) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.splitOrder + '?orderId=' + orderId,\r\n data: parada\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function joinOrder(orderId1, orderId2) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.orders.joinOrder + '?orderId1=' + orderId1 + '&orderId2=' + orderId2\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n .factory('perfilFlotaService', perfilFlotaService);\r\n\r\n perfilFlotaService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n function perfilFlotaService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t\tgetById: getById,\r\n\t\t\tadd: add,\r\n\t\t\tupdate: update,\r\n\t\t\tdeleteById: deleteById\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.perfilFlota.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\tfunction (response) {\r\n\t\t\t\tdeferred.reject(null);\r\n\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getById(id) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.perfilFlota.getById + '?id=' + id\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\tfunction (response) {\r\n\t\t\t\tdeferred.reject(null);\r\n\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction deleteById(ids) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.perfilFlota.deleteById,\r\n\t\t\t\tdata: ids\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\tfunction (response) {\r\n\t\t\t\tdeferred.reject(null);\r\n\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction add(perfil) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.perfilFlota.add,\r\n\t\t\t\tdata: perfil\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\tfunction (response) {\r\n\t\t\t\tdeferred.reject(null);\r\n\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction update(perfil) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.perfilFlota.update,\r\n\t\t\t\tdata: perfil\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\tfunction (response) {\r\n\t\t\t\tdeferred.reject(null);\r\n\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('preferences', preferences);\r\n\r\n preferences.$inject = ['$http', '$q', 'endPoints', 'authorization', '$filter'];\r\n\r\n function preferences($http, $q, endPoints, authorization, $filter) {\r\n\r\n var DEFAULT_PREFS = {\r\n 'sectorId': 'GRU',\r\n 'useNivel1': false,\r\n 'labelNivel1': null,\r\n 'typeNivel1': null,\r\n 'useGpio1': false,\r\n 'labelGpio1': null,\r\n 'typeGpio1': 0,\r\n 'useGpio3': false,\r\n 'labelGpio3': null,\r\n 'typeGpio3': 0,\r\n 'useGpio4': false,\r\n 'labelGpio4': null,\r\n 'typeGpio4': 0\r\n };\r\n\r\n var service = {\r\n getCompanyPrefs: getCompanyPrefs,\r\n prefs : {\r\n companyPrefs: DEFAULT_PREFS,\r\n sector: companyPrefs.sectorId ? companyPrefs.sectorId : 'GRU', \r\n opSates: [],\r\n getStateDesc: getStateDesc,\r\n getStateColor: getStateColor,\r\n getOpStateDesc: getOpStateDesc, \r\n orderStates: []\r\n },\r\n loaded: false\r\n };\r\n\r\n return service;\r\n\r\n function getCompanyPrefs() {\r\n companyPrefs();\r\n operatorSates();\r\n }\r\n\r\n\r\n function companyPrefs(){\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.preferences.getCompanyPrefs\r\n };\r\n authorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tservice.prefs.companyPrefs = response.data;\r\n\t\t\t\tservice.prefs.sector = response.data.sectorId;\r\n service.loaded = true;\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n service.prefs.companyPrefs = DEFAULT_PREFS;\r\n service.loaded = false;\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function operatorSates() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.preferences.operatorSates\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n service.prefs.opSates = response.data;\r\n service.prefs.orderStates = [];\r\n angular.forEach(service.prefs.opSates, function(value, key) {\r\n service.prefs.orderStates.push({id: value.operatorStateId, nombre: value.stateDescription});\r\n });\r\n service.loaded = true;\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n service.prefs.opSates = [];\r\n service.prefs.orderStates = [];\r\n service.loaded = false;\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getStateDesc(id){\r\n if(id == null){ return null; }\r\n for(var i = 0; i < service.prefs.opSates.length; i++){\r\n var s = service.prefs.opSates[i];\r\n\t\t\t\tif (s.operatorStateId === id) {\r\n\t\t\t\t\treturn s.stateDescription || '-';\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function getOpStateDesc(id) {\r\n if (id == null) { return null; }\r\n for (var i = 0; i < service.prefs.opSates.length; i++) {\r\n var s = service.prefs.opSates[i];\r\n if (s.operatorStateId === id) {\r\n return s.operatorDescription || '-';\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function getStateColor(id) {\r\n if (id == null) { return null; }\r\n for (var i = 0; i < service.prefs.opSates.length; i++) {\r\n var s = service.prefs.opSates[i];\r\n if (s.operatorStateId === id) {\r\n return s.stateColor || '';\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('productoService', productoService);\r\n\r\n productoService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction productoService($http, $q, endPoints, authorization) {\r\n\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t\taddProduct: addProduct,\r\n getProduct: getProduct,\r\n deleteById: deleteById\r\n\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\t\tfunction getList() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.productos.getList\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n function addProduct(product, andConditions, orConditions, habilitarIdaVuelta, zonaIdSource, zonaIdDestination) {\r\n\t\t\tvar deferred = $q.defer();\r\n\r\n var data = {\r\n product,\r\n andConditions,\r\n orConditions,\r\n habilitarIdaVuelta,\r\n zonaIdSource,\r\n zonaIdDestination\r\n };\r\n \r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.productos.add,\r\n data: data\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getProduct(id){\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.productos.get + \"?productId=\" + id\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n\t\t\treturn deferred.promise;\r\n }\r\n\r\n function deleteById(productsIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.productos.deleteById,\r\n data: productsIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('puntoInteresService', puntoInteresService);\r\n\r\n\tpuntoInteresService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction puntoInteresService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.puntosInteres.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('reportingService', reportingService);\r\n\r\n reportingService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n function reportingService($http, $q, endPoints, authorization) {\r\n var service = {\r\n showReport: showReport,\r\n showPredeterminated: showPredeterminated,\r\n getRelations: getRelations,\r\n deleteReport: deleteReport,\r\n getFields: getFields,\r\n getFilters: getFilters,\r\n getReports: getReports,\r\n getById: getById,\r\n getFavorites: getFavorites,\r\n testReport: testReport,\r\n testCloned: testCloned,\r\n saveCloned: saveCloned,\r\n saveReport: saveReport,\r\n getPredeterminatedFilters: getPredeterminatedFilters,\r\n showFacturasCliente: showFacturasCliente,\r\n exportReport: exportReport,\r\n consumoCombustible: consumoCombustible,\r\n combustibleRespectoTotal: combustibleRespectoTotal, \r\n showFichaje: showFichaje, \r\n getEmpleados: getEmpleados, \r\n exportFichaje: exportFichaje,\r\n showServicios: showServicios, \r\n exportServicios:exportServicios,\r\n getEmpresas: getEmpresas\r\n };\r\n\r\n return service;\r\n\r\n function showReport(reportId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.showReport + '?id=' + reportId,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function showPredeterminated(reportId, filters) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.showPredeterminated,\r\n data: {\r\n Id: reportId,\r\n Filters: filters\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n \r\n\r\n function consumoCombustible(fec, flot) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.consumoCombustible,\r\n data: {\r\n fecha: fec,\r\n flotas: flot\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getEmpresas() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.getEmpresas,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function combustibleRespectoTotal(fec, flot) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.combustibleRespectoTotal,\r\n data: {\r\n fecha: fec,\r\n flotas: flot\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function showFacturasCliente(reportId, filters) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.showFacturasCliente,\r\n data: {\r\n Id: reportId,\r\n Filters: filters\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getRelations(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.getRelations + '?id=' + id,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function exportReport(id, type, filters) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.exportReport,\r\n data: {\r\n Id: id,\r\n Type: type,\r\n Filters: filters\r\n },\r\n responseType: 'arraybuffer'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function exportServicios(from, to, type, empresaId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.exportServicios,\r\n data: {\r\n from: from,\r\n to: to,\r\n type: type, \r\n empresaId: empresaId\r\n },\r\n responseType: 'arraybuffer'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function exportFichaje(empleados, from, to, type) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.exportFichaje,\r\n data: {\r\n Empleado: empleados, \r\n from: from, \r\n to: to, \r\n Type: type\r\n },\r\n responseType: 'arraybuffer'\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteReport(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.deleteReport,\r\n data: id\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getFields(clone) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.getFields,\r\n data: {\r\n list: clone,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getFilters(relations, mainTableId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.getFilters,\r\n data: {\r\n Relations: relations,\r\n Id: mainTableId\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getReports() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.getReports,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.getById + '?id=' + id,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getFavorites() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.getFavorites,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function testReport(mainTable, relatedTables, fields, filters, orders) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.testReport,\r\n data: {\r\n Fields: fields,\r\n Filters: filters,\r\n MainTable: mainTable,\r\n RelatedTables: relatedTables,\r\n Orders: orders\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function testCloned(id, fields, filters, orders) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.testCloned,\r\n data: {\r\n Id: id,\r\n Fields: fields,\r\n Filters: filters,\r\n Orders: orders\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function saveCloned(id, userId, name, fields, filters, orders, grupoId, favorito, description) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.saveCloned,\r\n data: {\r\n Id: id,\r\n Name: name,\r\n UserId: userId,\r\n Fields: fields,\r\n Filters: filters,\r\n Orders: orders,\r\n GrupoId: grupoId,\r\n Favorito: favorito, \r\n Description: description\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function saveReport(id, name, fields, userId, mainTable, relatedTables, filters, orders, grupoId, favorito, description) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.saveReport,\r\n data: {\r\n Id: id,\r\n Name: name,\r\n Fields: fields,\r\n UserId: userId,\r\n MainTable: mainTable,\r\n RelatedTables: relatedTables,\r\n Filters: filters,\r\n Orders: orders,\r\n GrupoId: grupoId,\r\n Favorito: favorito, \r\n Description: description\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getPredeterminatedFilters(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.getPredeterminatedFilters + '?id= ' + id,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function showFichaje(id, from, to) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.showFichaje,\r\n data: {\r\n empleado: id, \r\n from: from, \r\n to: to\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function showServicios(from, to, empresaId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.reporting.showServicios,\r\n data: {\r\n from: from, \r\n to: to, \r\n empresaId: empresaId\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getEmpleados() {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.reporting.getEmpleados,\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('reportService', reportService);\r\n\r\n reportService.$inject = ['$http', '$q', 'endPoints', 'authorization', '$window', '$filter', 'preferences'];\r\n\r\n function reportService($http, $q, endPoints, authorization, $window, $filter, preferences) {\r\n\r\n var service = {\r\n listReports : listReports,\r\n ReportsTAX: { list: [], default: null},\r\n ReportsLOG: { list: [], default: null},\r\n ReportsGRU: { list: [], default: null},\r\n getAvailableReports : getAvailableReports,\r\n genericReport: genericReport,\r\n downloadReport: downloadReport,\r\n\t\t\tdownloadHojaDeRuta: downloadHojaDeRuta,\r\n\t\t\tcustomQuery: customQuery,\r\n };\r\n\r\n return service;\r\n\r\n function getAvailableReports(){\r\n getReports('GRU');\r\n getReports('TAX');\r\n getReports('LOG');\r\n }\r\n\r\n function listReports(tipoOrden){\r\n if(tipoOrden == null) { tipoOrden = 0; }\r\n\r\n if(preferences.prefs.sector === 'TAX'){\r\n return service.ReportsTAX;\r\n } else {\r\n if(tipoOrden === 0) { return service.ReportsGRU; }\r\n else { return service.ReportsLOG; }\r\n }\r\n }\r\n\r\n function getReports(sectorId){\r\n var name = 'GetReportListGru';\r\n if(sectorId === 'TAX') { name = 'GetReportListTax'; }\r\n else if(sectorId === 'LOG') { name = 'GetReportListLog'; }\r\n\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.report.getReport + name\r\n };\r\n \r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n \r\n if(sectorId === 'TAX') { service.ReportsTAX.list = response.data; }\r\n else if(sectorId === 'LOG') { service.ReportsLOG.list = response.data; }\r\n else { service.ReportsGRU.list = response.data; }\r\n\r\n var pred = $filter('filter')(response.data, \r\n function(value, index, array){ \r\n if(value.predeterminado === true){ \r\n return true;\r\n } else {\r\n return false;\r\n } \r\n })[0];\r\n if(pred == null){\r\n pred = response.data[0];\r\n }\r\n\r\n if(sectorId === 'TAX') { service.ReportsTAX.default = pred; }\r\n else if(sectorId === 'LOG') { service.ReportsLOG.default = pred; }\r\n else { service.ReportsGRU.default = pred; }\r\n\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function downloadHojaDeRuta(ordenId){\r\n downloadReport(ordenId, '/INVESFLEET/NuevosFormatos/Formatos/HojasDeRuta/rpt_HojaRuta_TAX');\r\n }\r\n\r\n function downloadReport(ordenId, reportUrl) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n responseType: 'arraybuffer',\r\n url: endPoints.report.getReport + 'DownloadReport' + '?urlName=' + reportUrl + '&orderId=' + ordenId\r\n\t\t\t};\r\n\t\t\tvar myWindow = window.open();\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n var file = new Blob([response.data], {type: 'application/pdf'});\r\n var fileURL = URL.createObjectURL(file);\r\n\t\t\t\tmyWindow.location.href = fileURL;\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n\t\t\t\t//myWindow.close();\r\n\t\t\t\tmyWindow.document.write('Ha habido un error al abrir el informe
');\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction genericReport(miData) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tresponseType: 'arraybuffer',\r\n\t\t\t\turl: endPoints.report.getReport + 'GenericReport' + '?urlName=' + miData.url,\r\n\t\t\t\tdata: miData.datosPeticion\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tvar file = new Blob([response.data], { type: 'application/pdf' });\r\n\t\t\t\tvar fileURL = URL.createObjectURL(file);\r\n\r\n\t\t\t\t//$window.open(fileURL);\r\n\t\t\t\t//show in Iframe\r\n\t\t\t\tvar iframe = document.createElement('iframe');\r\n\t\t\t\tiframe.className = 'sample-iframe';\r\n\t\t\t\tiframe.src = fileURL;\r\n\r\n\t\t\t\tvar myNodeIframe = document.getElementById('iFrameResult');\r\n\t\t\t\twhile (myNodeIframe.firstChild) {\r\n\t\t\t\t\tmyNodeIframe.removeChild(myNodeIframe.firstChild);\r\n\t\t\t\t}\r\n\t\t\t\tmyNodeIframe.appendChild(iframe);\r\n\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\t\tfunction customQuery(miData) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.report.getReport + 'CustomQuery',\r\n\t\t\t\tdata: miData.datosPeticion\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n .factory('restrictionService', restrictionService);\r\n\r\n restrictionService.$inject = ['$http', '$q', 'userService', '$state', 'notificationService', 'endPoints', 'authorization'];\r\n\r\n function restrictionService($http, $q, userService, $state, notificationService, endPoints, authorization) {\r\n\r\n //getEntidadesPersonalized(); \r\n\r\n var inUse = null; \r\n\r\n var service = {\r\n hasPermission: hasPermission, \r\n };\r\n\r\n\t\treturn service;\r\n\r\n \r\n function hasPermission(type, name, state, params) {\r\n\r\n var go = state != null && state != undefined;\r\n var idx = userService.userData.restrictions.findIndex(x => x.entidad == name);\r\n if (idx != -1 && (((userService.userData.restrictions[idx].tipo & type) == type))) {\r\n sendErrorRequire(\"No tiene los permisos adecuados, consulte con el administrador!\");\r\n return false; \r\n } \r\n else {\r\n if(go) {\r\n $state.go(state, params);\r\n }\r\n else return true; \r\n \r\n }\r\n }\r\n\r\n function sendErrorRequire(msg) {\r\n notificationService.sendAppNotification({\r\n message: msg,\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('scopes', scopes);\r\n\r\n scopes.$inject = [];\r\n\r\n //Service for scope sharing between controllers\r\n function scopes() {\r\n var mem = {};\r\n \r\n return {\r\n store: function (key, value) {\r\n mem[key] = value;\r\n },\r\n get: function (key) {\r\n return mem[key];\r\n }\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('simpleModalService', simpleModalService);\r\n\r\n simpleModalService.$inject = ['ModalService', '$q', '$templateCache'];\r\n\r\n function simpleModalService(ModalService, $q, $templateCache) {\r\n\r\n var modalTemplate = $templateCache.get('app/views/modals/general/YesNoBasicTemplate.html');\r\n var infoTemplate = $templateCache.get('app/views/modals/general/infoTemplate.html');\r\n var twoOptionsTemplate = $templateCache.get('app/views/modals/general/twoOptionsTemplate.html');\r\n\r\n\r\n var service = {\r\n yesNoModal: yesNoModal,\r\n infoModal: infoModal,\r\n showConfirmCloseModal: showConfirmCloseModal, \r\n twoOptionsModal: twoOptionsModal\r\n };\r\n\r\n return service;\r\n\r\n function yesNoModal(title, msg, yesMsg, noMsg){\r\n\r\n var deferred = $q.defer();\r\n\r\n ModalService.showModal({\r\n template: modalTemplate,\r\n controller: function($scope, close){\r\n\r\n $scope.title = title;\r\n $scope.message = msg;\r\n $scope.noText = noMsg ? noMsg : 'Cancelar';\r\n $scope.yesText = yesMsg ? yesMsg : 'Aceptar';\r\n\r\n $scope.close = function(result) {\r\n close(result);\r\n };\r\n }\r\n }).then(function(modal) {\r\n modal.close.then(function(result) { \r\n deferred.resolve(result);\r\n });\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n \r\n function infoModal(msg){\r\n var deferred = $q.defer();\r\n\r\n ModalService.showModal({\r\n template: infoTemplate,\r\n controller: function($scope, close){\r\n\r\n $scope.message = msg;\r\n\r\n $scope.close = function(result) {\r\n close(result);\r\n };\r\n }\r\n }).then(function(modal) {\r\n modal.close.then(function(result) { \r\n deferred.resolve(result);\r\n });\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n\t\tfunction showConfirmCloseModal(doSave, tab, callback) {\r\n\t\t\tModalService.showModal({\r\n\t\t\t\ttemplateUrl: 'app/views/modals/general/confirmCloseWithoutSave.html',\r\n\t\t\t\tcontroller:\r\n\t\t\t\tfunction (close) {\r\n\t\t\t\t\tvar modal = this;\r\n\t\t\t\t\tmodal.tab = tab;\r\n\r\n\t\t\t\t\tmodal.close = function (res) {\r\n\t\t\t\t\t\tclose(res);\r\n\t\t\t\t\t};\r\n\t\t\t\t\tmodal.saveAndClose = function (res) {\r\n\t\t\t\t\t\tdoSave().then(function () {\r\n\t\t\t\t\t\t\tclose(res);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t},\r\n\t\t\t\tcontrollerAs: 'modal'\r\n\t\t\t}).then(function (modal) {\r\n\t\t\t\tmodal.close.then(function (result) {\r\n\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\ttab.modified = false;\r\n\t\t\t\t\t\tcallback(tab);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n }\r\n \r\n function twoOptionsModal(title, msg, yesMsg, noMsg){\r\n\r\n var deferred = $q.defer();\r\n\r\n ModalService.showModal({\r\n template: twoOptionsTemplate,\r\n controller: function($scope, close){\r\n\r\n $scope.title = title;\r\n $scope.message = msg;\r\n $scope.noText = noMsg ? noMsg : 'Cancelar';\r\n $scope.yesText = yesMsg ? yesMsg : 'Aceptar';\r\n $scope.option = \"basico\";\r\n $scope.close = function(result) {\r\n close(result);\r\n };\r\n }\r\n }).then(function(modal) {\r\n modal.close.then(function(result) { \r\n deferred.resolve(result);\r\n });\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n \r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .factory('stayService', stayService);\r\n\r\n stayService.$inject = [\r\n '$http',\r\n '$q',\r\n 'endPoints',\r\n 'authorization'\r\n ];\r\n\r\n function stayService(\r\n $http,\r\n $q,\r\n endPoints,\r\n authorization\r\n ) {\r\n var service = {\r\n getStay: getStay,\r\n addStay: addStay,\r\n\t\t\tgetList: getList,\r\n\t\t\tremoveEstancias: removeEstancias,\r\n };\r\n\r\n return service;\r\n\r\n function getList(skip, take, sorting, filters, baja, frequencyFields, searchText, fromDate, toDate) {\r\n var deferred = $q.defer();\r\n var dateParams = '&fromDate=' + ((fromDate) ? fromDate.format('YYYY-MM-DD') : '') + '&toDate=' + ((toDate) ? toDate.format('YYYY-MM-DD') : '');\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.entities.stays + 'getAll' + '?skip=' + skip + '&take=' + take + dateParams,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t'sorting': sorting, 'filters': filters, 'dadosDeBaja': baja, \r\n\t\t\t\t\t'frequencyFields': frequencyFields, 'searchTextByFrequencyFields': searchText\r\n\t\t\t\t}\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getStay(stayId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.entities.stays + 'get' + '?stayId=' + stayId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function addStay(stay) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.entities.stays + 'add',\r\n data: stay\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction removeEstancias(estanciasIds) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.entities.stays + 'delete',\r\n\t\t\t\tdata: estanciasIds\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n \r\n }\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('styleMapService', styleMapService);\r\n\t\r\n\r\n\tfunction styleMapService() {\r\n\t\tvar service = {\r\n\t\t\tgetOptionsStyleMaps: getOptionsStyleMaps,\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getOptionsStyleMaps() {\r\n\t\t\treturn {\r\n\t\t\t\tstyles: [] //codigo generado por google\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('tallerService', tallerService);\r\n\r\n\ttallerService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction tallerService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.talleres.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(tallerId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.talleres.getById + '?tallerId=' + tallerId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(taller) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.talleres.add,\r\n data: {\r\n tallerId : taller.tallerId,\r\n nombre : taller.nombre,\r\n empresaMasterId : taller.empresaMasterId,\r\n id : taller.id,\r\n razon : taller.razon,\r\n nif : taller.nif,\r\n direccion : taller.direccion,\r\n poblacion : taller.poblacion,\r\n cp : taller.cp,\r\n provincia : taller.provincia,\r\n pais : taller.pais,\r\n latitud : taller.latitud,\r\n longitud : taller.longitud,\r\n telefono : taller.telefono,\r\n fax : taller.fax,\r\n email : taller.email,\r\n web : taller.web,\r\n observaciones : taller.observaciones,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(tallerIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.talleres.deleteById,\r\n data: tallerIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('tipoMantenimientoService', tipoMantenimientoService);\r\n\r\n\ttipoMantenimientoService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction tipoMantenimientoService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.mantenimientoFlotaTipos.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(id) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.mantenimientoFlotaTipos.getById + '?mantenimientoFlotaTipoId=' + id\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(tipoMantenimiento) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.mantenimientoFlotaTipos.add,\r\n data: {\r\n mantenimientoFlotaTipoId: tipoMantenimiento.mantenimientoFlotaTipoId,\r\n tipoVencimientoId: tipoMantenimiento.tipoVencimientoId,\r\n descripcion: tipoMantenimiento.descripcion,\r\n intervaloKms: tipoMantenimiento.intervaloKms,\r\n intervaloTiempoCantidad: tipoMantenimiento.intervaloTiempoCantidad,\r\n intervaloTiempoTipo: tipoMantenimiento.intervaloTiempoTipo,\r\n empresaMasterId: tipoMantenimiento.empresaMasterId,\r\n \r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(tipoMantenimientoIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.mantenimientoFlotaTipos.deleteById,\r\n data: tipoMantenimientoIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('tipoOrdenService', tipoOrdenService);\r\n\r\n\ttipoOrdenService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction tipoOrdenService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n getList: getList,\r\n getById: getById,\r\n add: add,\r\n deleteById: deleteById\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n function getList(sorting) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.tipoOrden.getList,\r\n data: { sorting: sorting }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getById(tipoOrdenId) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.tipoOrden.getById + '?tipoOrdenId=' + tipoOrdenId\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function add(obj) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.tipoOrden.add,\r\n data: {\r\n tipoOrdenId: obj.tipoOrdenId,\r\n descripcion: obj.descripcion,\r\n id : obj.id,\r\n entidadId: obj.entidadId,\r\n }\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function deleteById(objIds) {\r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'POST',\r\n url: endPoints.tipoOrden.deleteById,\r\n data: objIds\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response.data);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n\r\n }\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('userService', user);\r\n\r\n\tuser.$inject = ['$http', '$q', 'endPoints', 'authorization', '$rootScope'];\r\n\r\n\tfunction user($http, $q, endPoints, authorization, $rootScope) {\r\n\r\n\t\tvar defaultConfig = {\r\n\t\t\tcolors: {\r\n\t\t\t\testados: {\r\n\t\t\t\t\tnull: 'grey',\r\n\t\t\t\t\t0: 'green',\r\n\t\t\t\t\t1: 'orange',\r\n\t\t\t\t\t2: 'blue',\r\n\t\t\t\t\t3: 'burdeos',\r\n\t\t\t\t\t4: 'red',\r\n\t\t\t\t\t5: 'yellow',\r\n\t\t\t\t\t6: 'violet',\r\n\t\t\t\t\t10: 'black'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tliterals: {\r\n\t\t\t\testadosOrden: {\r\n\t\t\t\t\tnull: 'NU',\r\n\t\t\t\t\t/* Nueva */\r\n\t\t\t\t\t0: 'PA',\r\n\t\t\t\t\t/* Pte. Asignar */\r\n\t\t\t\t\t1: 'AS',\r\n\t\t\t\t\t/* Asignado */\r\n\t\t\t\t\t2: 'AC',\r\n\t\t\t\t\t/* Aceptado */\r\n\t\t\t\t\t3: 'RZ',\r\n\t\t\t\t\t/* Rechazado */\r\n\t\t\t\t\t4: 'IC',\r\n\t\t\t\t\t/* Iniciado */\r\n\t\t\t\t\t5: 'LZ',\r\n\t\t\t\t\t/* Localizado */\r\n\t\t\t\t\t6: 'EN',\r\n\t\t\t\t\t/* Entregado */\r\n\t\t\t\t\t10: 'FZ',\r\n\t\t\t\t\t/* Finalizado */\r\n\t\t\t\t\t11: 'OC',\r\n\t\t\t\t\t/* Ocupado */\r\n\t\t\t\t\t12: 'DC' /* Desconectado */\r\n\t\t\t\t},\r\n\t\t\t\testados: {\r\n\t\t\t\t\t0: 'Pte. Asignar',\r\n\t\t\t\t\t1: 'Asignado',\r\n\t\t\t\t\t2: 'Aceptado',\r\n\t\t\t\t\t3: 'Rechazado',\r\n\t\t\t\t\t4: 'Iniciado',\r\n\t\t\t\t\t5: 'Localizado',\r\n\t\t\t\t\t6: 'Entregado',\r\n\t\t\t\t\t10: 'Finalizado',\r\n\t\t\t\t\t11: 'Ocupado',\r\n\t\t\t\t\t12: 'Desconectado',\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\torders: {\r\n\t\t\t\ticonoOrden: {\r\n\t\t\t\t\tD: 'icon-010',\r\n\t\t\t\t\tB: 'icon-092',\r\n\t\t\t\t\tP: 'icon-056',\r\n\t\t\t\t\tT: 'icon-086',\r\n\t\t\t\t\tC: 'icon-137',\r\n\t\t\t\t},\r\n\t\t\t\ttextoOrden: {\r\n\t\t\t\t\tD: 'en dirección',\r\n\t\t\t\t\tB: 'en base',\r\n\t\t\t\t\tP: 'en parking',\r\n\t\t\t\t\tT: 'en taller',\r\n\t\t\t\t\tC: 'en Colaborador'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbrands: {\r\n\t\t\t\tinsurance: {\r\n\t\t\t\t\t0: 'content/img/aseguradoras/asitur/asitur-imagotipo.png',\r\n\t\t\t\t\t1: 'content/img/aseguradoras/racc/racc-imagotipo.png',\r\n\t\t\t\t\t2: 'content/img/aseguradoras/mapfre/mapfre-imagotipo.png',\r\n\t\t\t\t\t3: 'content/img/aseguradoras/europ/europ-imagotipo.png',\r\n\t\t\t\t\t4: 'content/img/aseguradoras/mm/mm-imagotipo.png',\r\n\t\t\t\t\t5: 'content/img/aseguradoras/race/race-imagotipo.png',\r\n\t\t\t\t\t6: 'content/img/aseguradoras/allianz/allianz-imagotipo.png',\r\n\t\t\t\t\t7: 'content/img/aseguradoras/pelayo/pelayo-imagotipo.png',\r\n\t\t\t\t\t8: 'content/img/aseguradoras/ld/ld-imagotipo.png',\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar service = {\r\n\t\t\tgetUserData: getUserData,\r\n\t\t\tgetUser: getUser,\r\n\t\t\tgetAllUsersData: getAllUsersData,\r\n\t\t\tgetUsuariosRoles: getUsuariosRoles,\r\n\t\t\tgetListDadosDeBaja: getListDadosDeBaja,\r\n\t\t\tstoreUserData: storeUserData,\r\n\t\t\tloadWithDefaults: loadWithDefaults,\r\n\t\t\tgetUserCustomInfo: getUserCustomInfo,\r\n\t\t\tdeleteById: deleteById,\r\n\t\t\tsaveConfig: saveConfig,\r\n\t\t\tsaveColumnConfig: saveColumnConfig,\r\n\t\t\tsaveFilterConfig: saveFilterConfig,\r\n\t\t\tgetColumnConfig: getColumnConfig,\r\n\t\t\tgetFilterConfig: getFilterConfig,\r\n\t\t\tadd: add,\r\n\t\t\tuserData: null\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\t\tfunction getUserData() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.preferences.getUserPrefs\r\n\t\t\t};\r\n\r\n\t\t\t//try\r\n\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tservice.userData = response.data;\r\n\t\t\t\t\t// console.log(response.data); \r\n\t\t\t\t\t// console.log(service.userData);\r\n\t\t\t\t\t// $rootScope.restrictionService.getEntidadesPersonalized();\r\n\t\t\t\t\t//$rootScope.restrictionService.setLectura();\r\n\t\t\t\t\t//console.log($rootScope.restrictionService.lectura.includes('color') == false);\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tservice.userData = null;\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getUser(userid) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.user.getUser + '?usuarioid=' + userid\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\r\n\t\tfunction getUserCustomInfo(userid) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.user.getUserCustomInfo + '?usuarioid=' + userid\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\t\tfunction getUsuariosRoles(userid) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.user.getUsuariosRoles + '?usuarioid=' + userid\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction getAllUsersData() {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.user.getAllUsers\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\t\tfunction getListDadosDeBaja(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.user.getAllUsuariosDadosDeBaja,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tsorting: sorting,\r\n\t\t\t\t\tfilters: filters\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction deleteById(usuarioid) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.user.deleteById + '?usuarioid=' + usuarioid\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\t\tfunction storeUserData(user) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.user.storeUserData,\r\n\t\t\t\tdata: user\r\n\r\n\t\t\t\t//data: { perfilFlotaAdd: perfilesDeFlotaListAdd, \r\n\t\t\t\t// perfilFlotaDelete: perfilesDeFlotaListDelete, user: user}\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction loadWithDefaults(defaults) {\r\n\t\t\tif (!defaults) {\r\n\t\t\t\tdefaults = defaultConfig;\r\n\t\t\t}\r\n\t\t\treturn service.getUserData()\r\n\t\t\t\t.then(function (data) {\r\n\t\t\t\t\tinjectDefaults(defaults, data);\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction saveFilterConfig(filterConfig, pageName) {\r\n\t\t\tservice.userData = service.userData || {};\r\n\t\t\tservice.userData.config = service.userData.config || {};\r\n\t\t\tservice.userData.config.filters = service.userData.config.filters || {};\r\n\t\t\tservice.userData.config.filters[pageName] = filterConfig;\r\n\t\t\tsaveConfig(service.userData.config);\r\n\t\t}\r\n\r\n\t\tfunction getFilterConfig(pageName) {\r\n\t\t\treturn service.userData && service.userData.config &&\r\n\t\t\t\tservice.userData.config.filters && service.userData.config.filters[pageName];\r\n\t\t}\r\n\r\n\t\tfunction add(objs) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.user.add,\r\n\t\t\t\tdata: objs\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction saveColumnConfig(columnConfig, pageName) {\r\n\t\t\tservice.userData = service.userData || {};\r\n\t\t\tservice.userData.config = service.userData.config || {};\r\n\t\t\tservice.userData.config.columns = service.userData.config.columns || {};\r\n\t\t\tservice.userData.config.columns[pageName] = columnConfig;\r\n\t\t\tsaveConfig(service.userData.config);\r\n\t\t}\r\n\r\n\t\tfunction getColumnConfig(pageName) {\r\n\t\t\treturn service.userData && service.userData.config &&\r\n\t\t\t\tservice.userData.config.columns && service.userData.config.columns[pageName];\r\n\t\t}\r\n\r\n\t\tfunction saveConfig(config) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.user.saveConfig,\r\n\t\t\t\tdata: angular.fromJson(config)\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction injectDefaults(src, dest) {\r\n\t\t\tfor (var prop in src) {\r\n\t\t\t\tif (src.hasOwnProperty(prop)) {\r\n\t\t\t\t\tif (dest.hasOwnProperty(prop)) {\r\n\t\t\t\t\t\tif (typeof dest[prop] === 'object') {\r\n\t\t\t\t\t\t\tinjectDefaults(src[prop], dest[prop]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdest[prop] = src[prop];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('vehicleService', vehicleService);\r\n\r\n\tvehicleService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction vehicleService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n\t\t\tgetList: getList,\r\n\t\t\tgetListDadosDeBaja: getListDadosDeBaja,\r\n\t\t\tdeleteById: deleteById,\r\n\t\t\tgetFlota: getFlota,\r\n\t\t\taddVehicle: addVehicle\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.vehicles.getAllVehicles\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\t\tfunction getListDadosDeBaja(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.vehicles.getAllVehiclesDadosDeBaja\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction deleteById(flotaIds) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.vehicles.deleteById,\r\n\t\t\t\tdata: flotaIds\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\r\n\t\t}\r\n\r\n\r\n\t\tfunction getFlota(flotaId) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\turl: endPoints.vehicles.getFlota + '?flotaId=' + flotaId\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\t\tfunction addVehicle(vehicle) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.vehicles.addVehicles,\r\n\t\t\t\tdata: vehicle\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response.data);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.factory('zonaService', zonaService);\r\n\r\n\tzonaService.$inject = ['$http', '$q', 'endPoints', 'authorization'];\r\n\r\n\tfunction zonaService($http, $q, endPoints, authorization) {\r\n\t\tvar service = {\r\n getList: getList,\r\n pointInZone: pointInZone,\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\r\n\r\n\t\tfunction getList(sorting, filters) {\r\n\t\t\tvar deferred = $q.defer();\r\n\t\t\tvar request = {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\turl: endPoints.zonas.getAll\r\n\t\t\t};\r\n\t\t\tauthorization.setBearerHeader($http);\r\n\t\t\t$http(request).then(function (response) {\r\n\t\t\t\tdeferred.resolve(response);\r\n\t\t\t},\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tdeferred.reject(null);\r\n\t\t\t\t});\r\n\t\t\treturn deferred.promise;\r\n }\r\n\r\n function pointInZone(latitude, longitude) {\r\n var params = \"latitude=\" + latitude + \"&longitude=\" + longitude; \r\n var deferred = $q.defer();\r\n var request = {\r\n method: 'GET',\r\n url: endPoints.zonas.pointInZone + \"?\" + params\r\n };\r\n authorization.setBearerHeader($http);\r\n $http(request).then(function (response) {\r\n deferred.resolve(response);\r\n },\r\n function (response) {\r\n deferred.reject(null);\r\n });\r\n return deferred.promise;\r\n }\r\n\t}\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ActiveOrdersController', ActiveOrdersController);\r\n\r\n ActiveOrdersController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$window',\r\n 'userService',\r\n 'ordersService',\r\n '$templateCache',\r\n '$timeout',\r\n '$filter',\r\n 'fleet',\r\n 'preferences',\r\n '$state',\r\n 'ModalService',\r\n 'reportService',\r\n 'aceptacionServicioService',\r\n 'notificationService',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants'\r\n ];\r\n\r\n /* jshint maxstatements:false, maxparams:false */\r\n function ActiveOrdersController(\r\n $scope,\r\n $rootScope,\r\n $window,\r\n userService,\r\n ordersService,\r\n $templateCache,\r\n $timeout,\r\n $filter,\r\n fleet,\r\n preferences,\r\n $state,\r\n ModalService,\r\n reportService,\r\n aceptacionServicioService,\r\n notificationService,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants\r\n ) {\r\n\r\n /* PRIVATE VARIABLES */\r\n var assignDriverTemplate = $templateCache.get('app/views/modals/assignDriverTemplate.html');\r\n var acceptServiceTemplate = $templateCache.get('app/views/modals/aceptacion/acceptServiceTemplate.html');\r\n var templatesBase = 'app/views/tablesTemplates/activeOrders/';\r\n var templates = {\r\n headerTemplate: $templateCache.get(templatesBase + 'headerTemplate.html'),\r\n headerCellTemplate: $templateCache.get(templatesBase + 'headerCellTemplate.html'),\r\n rowTemplate: $templateCache.get(templatesBase + 'rowTemplate.html'),\r\n estadoCellTemplateGRU: $templateCache.get(templatesBase + 'estadoCellTemplateGRU.html'),\r\n estadoCellTemplateTAX: $templateCache.get(templatesBase + 'estadoCellTemplateTAX.html'),\r\n drecogidaCellTemplate: $templateCache.get(templatesBase + 'dRecogidaCellTemplate.html'),\r\n dentregaCellTemplate: $templateCache.get(templatesBase + 'dEntregaCellTemplate.html'),\r\n accionesCellTemplate: $templateCache.get(templatesBase + 'accionesCellTemplate.html'),\r\n clienteCellTemplate: $templateCache.get(templatesBase + 'clienteCellTemplate.html'),\r\n choferCellTemplate: $templateCache.get(templatesBase + 'choferCellTemplate.html'),\r\n typeCellTemplate: $templateCache.get(templatesBase + 'typeOrderCellTemplate.html'),\r\n delayCellTemplate: $templateCache.get(templatesBase + 'delayCellTemplate.html'),\r\n vehicleCellTemplate: $templateCache.get(templatesBase + 'vehicleCellTemplate.html'),\r\n dateCellTemplate: $templateCache.get(templatesBase + 'dateCellTemplate.html'),\r\n brandCellTemplate: $templateCache.get(templatesBase + 'brandCellTemplate.html'),\r\n };\r\n\r\n var userConfig = userService.userData;\r\n\r\n var listeners = [];\r\n var timeouts = [];\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.firstTime = true; \r\n\r\n vm.searchText = '';\r\n vm.clearSearcher = clearSearcher;\r\n\r\n vm.fleet = fleet;\r\n vm.preferences = preferences;\r\n vm.rootScope = $rootScope;\r\n vm.aceptacionServicioService = aceptacionServicioService;\r\n vm.common = common;\r\n vm.showDeactivate = false;\r\n vm.onMouseOverDelayCell = onMouseOverDelayCell;\r\n vm.onMouseLeaveDelayCell = onMouseLeaveDelayCell;\r\n vm.getDelayState = getDelayState;\r\n vm.getStateClassName = getStateClassName;\r\n vm.getStateLabel = getStateLabel;\r\n\r\n //GRID\r\n $scope.gridData = null;\r\n vm.gridApi = null;\r\n $scope.gridOptions = {\r\n //headerTemplate: templates.headerTemplate,\r\n //headerCellTemplate: templates.headerCellTemplate,\r\n rowTemplate: templates.rowTemplate,\r\n enableGridMenu: true,\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n\r\n //With virtualization we lower the number of watchers (9257 to 4970 with 67 orders for example)\r\n //Virtualization uses transform: translateY for each row which means that each row creates \r\n //each own stacking context and our dropdown menus or any element using z-index wont work well..\r\n virtualizationThreshold: 200,\r\n\r\n //Row selection\r\n enableRowHeaderSelection: true,\r\n enableGroupHeaderSelection: true,\r\n enableRowSelection: false,\r\n enableSelectAll: true,\r\n multiSelect: true,\r\n enableColumnResizing: true,\r\n\r\n rowHeight: 26,\r\n\r\n primaryKey: 'orderId',\r\n columnDefs: computeColumnsByOrderType(),\r\n data: 'gridData',\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n\r\n vm.gridApi.selection.on.rowSelectionChanged($scope, function (row) {\r\n var childRows, rowEntity, length, i;\r\n\r\n if (row.internalRow === true && row.isSelected === true) {\r\n childRows = row.treeNode.children;\r\n for (i = 0, length = childRows.length; i < length; i++) {\r\n rowEntity = childRows[i].row.entity;\r\n vm.gridApi.selection.selectRow(rowEntity);\r\n }\r\n }\r\n\r\n if (row.internalRow === true && row.isSelected === false) {\r\n childRows = row.treeNode.children;\r\n for (i = 0, length = childRows.length; i < length; i++) {\r\n rowEntity = childRows[i].row.entity;\r\n vm.gridApi.selection.unSelectRow(rowEntity);\r\n }\r\n }\r\n\r\n });\r\n\r\n vm.gridApi.grid.registerDataChangeCallback(function () {\r\n angular.forEach(vm.gridApi.grid.grouping.groupingHeaderCache, function (value, key) {\r\n if (!value.row.userSet) {\r\n vm.gridApi.treeBase.expandRow(value.row);\r\n vm.gridApi.selection.selectRow(value.row.entity);\r\n value.row.userSet = true;\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n vm.operatorsList = [];\r\n vm.blurGrid = false;\r\n\r\n vm.filters = {\r\n logistic: null,\r\n programmed: null,\r\n delayed: null\r\n };\r\n\r\n\r\n vm.refreshing = false;\r\n vm.focusedRow = null;\r\n\r\n //vm.nProgrammed = 0;\r\n //vm.nDelayed = 0;\r\n vm.now = Date.NewDate().getTime();\r\n\r\n vm.reportService = reportService;\r\n\r\n /* PUBLIC FUNCTIONS */\r\n vm.getColorEstado = getColorEstado;\r\n vm.getTipoEstado = getTipoEstado;\r\n vm.getIconoOrden = getIconoOrden;\r\n vm.getTextoOrden = getTextoOrden;\r\n vm.getBrandLogo = getBrandLogo;\r\n vm.groupHeaderContent = groupHeaderContent;\r\n vm.showAssignDriver = showAssignDriver;\r\n vm.setGridData = setGridData;\r\n vm.getEstadoName = getEstadoName;\r\n vm.remove = remove;\r\n vm.assignOperatorToOrder = assignOperatorToOrder;\r\n vm.refreshData = refreshData;\r\n vm.selectAll = selectAll;\r\n vm.clearAll = clearAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.changeOrderState = changeOrderState;\r\n vm.chatWithChofer = chatWithChofer;\r\n vm.acknowledgeDelay = acknowledgeDelay;\r\n vm.isGroupSelected = isGroupSelected;\r\n vm.groupSelect = groupSelect;\r\n vm.getRemainingTimeToAccept = getRemainingTimeToAccept;\r\n vm.goToEdit = goToEdit;\r\n vm.removeAllOrders = removeAllOrders;\r\n vm.getTextoEstadoAsig = getTextoEstadoAsig;\r\n\r\n vm.goToOrdenNueva = goToOrdenNueva;\r\n vm.reloadListener = null;\r\n\r\n\r\n $(window).on('active-orders-update-setGridData', function (e, args) {\r\n vm.setGridData(); \r\n });\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n\r\n\r\n //byArnau sets restante column without looking the value in the server\r\n fleet.getActiveOrders().then(function (result) {\r\n fleet.activeOrdersList = result;\r\n for (var i = 0; i < fleet.activeOrdersList.length; i++) {\r\n fleet.activeOrdersList[i].timestamp = (new Date()).getTime();\r\n }\r\n vm.setGridData();\r\n });\r\n\r\n if (!preferences.loaded) { preferences.getCompanyPrefs(); }\r\n \r\n //setInterval(function () {\r\n // var t = (new Date()).getTime();\r\n // for (var i = 0; i < fleet.activeOrdersList.length; i++) {\r\n // fleet.activeOrdersList[i].tiempoRestante -= (t - fleet.activeOrdersList[i].timestamp) / 1000;\r\n // fleet.activeOrdersList[i].timestamp = t;\r\n // }\r\n // // TODO: This generetes a memory leak (test with 1 second loop)\r\n // vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n //}, 10 * 1000);\r\n })();\r\n\r\n listeners.push($scope.$on('detail-resize', function (event, args) {\r\n if ($rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('OrdenesActivas')].isActive()) {\r\n timeouts.push($timeout(function () { vm.gridApi.core.handleWindowResize(); }, 0));\r\n }\r\n }));\r\n\r\n function computeColumnsByOrderType() {\r\n if (preferences.prefs.sector === 'GRU') {\r\n return [\r\n {\r\n field: 'insurerId',\r\n displayName: '',\r\n width: 35,\r\n resizable: true,\r\n enableHiding: false,\r\n cellTemplate: templates.clienteCellTemplate\r\n },\r\n {\r\n name: 'tipo',\r\n displayName: '',\r\n width: 30,\r\n resizable: true,\r\n cellTemplate: templates.typeCellTemplate\r\n },\r\n {\r\n field: 'state',\r\n displayName: '',\r\n minWidth: 50,\r\n maxWidth: 70,\r\n resizable: true,\r\n cellTemplate: templates.estadoCellTemplateGRU,\r\n sortingAlgorithm: function (stateA, stateB, rowA, rowB) {\r\n if (stateA === stateB) {\r\n if (rowA.entity.stateTime === rowB.entity.stateTime) {\r\n return 0;\r\n } else if (rowA.entity.stateTime > rowB.entity.stateTime) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n } else if (stateA > stateB) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n },\r\n {\r\n field: 'id',\r\n displayName: 'Nº Orden',\r\n minWidth: 40,\r\n maxWidth: 80,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'expediente',\r\n displayName: 'Expediente',\r\n minWidth: 80,\r\n maxWidth: 80,\r\n resizable: true\r\n },\r\n {\r\n field: 'date',\r\n displayName: 'Fecha',\r\n minWidth: 70,\r\n maxWidth: 92,\r\n resizable: true,\r\n cellTemplate: templates.dateCellTemplate,\r\n sort: { priority: 1, direction: 'desc' }\r\n },\r\n {\r\n field: 'tiempoRestante',\r\n displayName: 'Restante',\r\n minWidth: 80,\r\n maxWidth: 80, // 100\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.delayCellTemplate,\r\n\r\n },\r\n {\r\n field: 'pickupAddress',\r\n displayName: 'Dirección de recogida',\r\n minWidth: 130,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.drecogidaCellTemplate,\r\n cellFilter: 'capitalize',\r\n sortingAlgorithm: function (stateA, stateB, rowA, rowB) {\r\n if (rowA.entity.pickupTown === rowB.entity.pickupTown) {\r\n return 0;\r\n }\r\n else if (rowA.entity.pickupTown > rowB.entity.pickupTown) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n },\r\n {\r\n field: 'deliveryAddress',\r\n displayName: 'Dirección de entrega',\r\n minWidth: 130,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.dentregaCellTemplate,\r\n cellFilter: 'capitalize',\r\n sortingAlgorithm: function (stateA, stateB, rowA, rowB) {\r\n if (rowA.entity.pickupTown === rowB.entity.pickupTown) {\r\n return 0;\r\n }\r\n else if (rowA.entity.deliveryTown > rowB.entity.deliveryTown) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n },\r\n {\r\n field: 'brand',\r\n displayName: 'Marca',\r\n minWidth: 62,\r\n maxWidth: 100,\r\n resizable: true,\r\n cellFilter: 'capitalize',\r\n cellTemplate: templates.brandCellTemplate\r\n },\r\n {\r\n field: 'plate',\r\n displayName: 'Matrícula',\r\n minWidth: 78,\r\n maxWidth: 78,\r\n resizable: true,\r\n },\r\n {\r\n field: 'fault',\r\n displayName: 'Avería',\r\n minWidth: 60,\r\n maxWidth: 85,\r\n resizable: true,\r\n cellFilter: 'capitalize'\r\n },\r\n {\r\n field: 'fleetId',\r\n displayName: '',\r\n minWidth: 30,\r\n maxWidth: 30,\r\n resizable: true,\r\n cellFilter: 'capitalize',\r\n cellTemplate: templates.vehicleCellTemplate\r\n },\r\n {\r\n field: 'assignedDriver',\r\n displayName: 'Chofer',\r\n width: 70,\r\n resizable: true,\r\n cellTemplate: templates.choferCellTemplate,\r\n cellFilter: 'capitalize'\r\n },\r\n {\r\n field: 'grouping',\r\n grouping: { groupPriority: 0 },\r\n enableHiding: false,\r\n sort: { priority: 0, direction: 'asc' },\r\n visible: false\r\n },\r\n {\r\n name: 'acciones',\r\n displayName: 'Acciones',\r\n width: 150,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableHiding: false,\r\n enableSorting: false\r\n }\r\n // {\r\n // name: 'acciones',\r\n // displayName: 'Acciones',\r\n // width: 140,\r\n // resizable: true,\r\n // cellClass: 'overflow',\r\n // cellTemplate: templates.accionesCellTemplate,\r\n // enableHiding: false,\r\n // enableSorting: false\r\n // }\r\n ];\r\n }\r\n else if (preferences.prefs.sector === 'TAX') {\r\n return [\r\n {\r\n field: 'insurerId',\r\n displayName: '',\r\n width: 40,\r\n resizable: true,\r\n enableHiding: false,\r\n cellTemplate: templates.clienteCellTemplate\r\n },\r\n {\r\n field: 'state',\r\n displayName: '',\r\n minWidth: 40,\r\n maxWidth: 100,\r\n resizable: true,\r\n cellTemplate: templates.estadoCellTemplateTAX,\r\n sortingAlgorithm: function (stateA, stateB, rowA, rowB) {\r\n if (stateA === stateB) {\r\n if (rowA.entity.stateTime === rowB.entity.stateTime) {\r\n return 0;\r\n } else if (rowA.entity.stateTime > rowB.entity.stateTime) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n } else if (stateA > stateB) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n },\r\n {\r\n field: 'id',\r\n displayName: 'Nº Orden',\r\n minWidth: 40,\r\n maxWidth: 80,\r\n resizable: true\r\n },\r\n {\r\n field: 'expediente',\r\n displayName: 'Expediente',\r\n minWidth: 90,\r\n maxWidth: 130,\r\n resizable: true\r\n },\r\n {\r\n field: 'date',\r\n displayName: 'Fecha',\r\n minWidth: 70,\r\n maxWidth: 130, \r\n resizable: true,\r\n cellTemplate: templates.dateCellTemplate,\r\n sort: { priority: 1, direction: 'desc' }\r\n },\r\n {\r\n field: 'delayTime',\r\n displayName: 'Restante',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n cellTemplate: templates.delayCellTemplate,\r\n },\r\n {\r\n field: 'pickupAddress',\r\n displayName: 'Dirección de recogida',\r\n minWidth: 160,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.drecogidaCellTemplate,\r\n cellFilter: 'capitalize'\r\n },\r\n {\r\n field: 'deliveryAddress',\r\n displayName: 'Dirección de entrega',\r\n minWidth: 160,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.dentregaCellTemplate,\r\n cellFilter: 'capitalize',\r\n },\r\n {\r\n field: 'plate',\r\n displayName: 'Matrícula',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n },\r\n {\r\n field: 'pax',\r\n displayName: 'PAX',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'numVuelo',\r\n displayName: 'Vuelo',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'equipajeL',\r\n displayName: 'Grande',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'equipajeM',\r\n displayName: 'Mediana',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'equipajeS',\r\n displayName: 'Pequeña',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'numSillasGrupo1',\r\n displayName: 'NumSillasGrupo1',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'numSillasGrupo2',\r\n displayName: 'NumSillasGrupo2',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'numSillasGrupo3',\r\n displayName: 'NumSillasGrupo3',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'numBolsasGolf',\r\n displayName: 'Bolsa Golf',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'numBicicletas',\r\n displayName: 'Bicicleta',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'numTransportines',\r\n displayName: 'Transportin',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n resizable: true,\r\n visible: false\r\n },\r\n {\r\n field: 'fleetId',\r\n displayName: 'Vehículo',\r\n minWidth: 75,\r\n maxWidth: 90,\r\n resizable: true,\r\n cellFilter: 'capitalize',\r\n cellTemplate: templates.vehicleCellTemplate\r\n },\r\n {\r\n field: 'assignedDriver',\r\n displayName: 'Chofer',\r\n width: 85,\r\n resizable: true,\r\n cellTemplate: templates.choferCellTemplate,\r\n cellFilter: 'capitalize'\r\n },\r\n {\r\n field: 'grouping',\r\n grouping: { groupPriority: 0 },\r\n enableHiding: false,\r\n sort: { priority: 0, direction: 'asc' },\r\n visible: false\r\n },\r\n {\r\n name: 'acciones',\r\n displayName: 'Acciones',\r\n width: 150,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableHiding: false,\r\n enableSorting: false\r\n }\r\n ];\r\n }\r\n\r\n\r\n }\r\n\r\n function countTimeEachSecond() { //Update the time each second so angular refreshes it in the ui each second\r\n vm.now = Date.NewDate().getTime();\r\n timeouts.push($timeout(countTimeEachSecond, 1000));\r\n }\r\n\r\n /* FUNCTION DEFINITIONS */\r\n function setGridData() {\r\n\r\n //$scope.gridData = $filter('filter')(fleet.activeOrders, filterExpression);\r\n $scope.gridData = $filter('filter')(fleet.activeOrdersList, filterExpression);\r\n \r\n //Search box (OR filter) \r\n var filterInfo = {\r\n expediente: vm.searchText,\r\n plate: vm.searchText,\r\n assignedDriver: vm.searchText,\r\n fleetId: vm.searchText,\r\n fault: vm.searchText,\r\n model: vm.searchText,\r\n brand: vm.searchText,\r\n deliveryTown: vm.searchText,\r\n deliveryAddress: vm.searchText,\r\n pickupTown: vm.searchText,\r\n pickupAddress: vm.searchText\r\n };\r\n $scope.gridData = $filter('searchFilter')($scope.gridData, filterInfo, true);\r\n\r\n countOrderProperties();\r\n\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n \r\n function filterExpression(value, index, array) {\r\n //Logistica/Asistencia filter\r\n if (vm.filters.logistic !== null && vm.filters.logistic !== value.isLogistica) { return false; }\r\n\r\n //Delayed filter\r\n if (vm.filters.delayed && (value.tiempoRestante >= 0 || value.viewDelay !== false)) { return false; }\r\n\r\n //Programmed filter\r\n if (vm.filters.programmed && !value.programada) { return false; }\r\n\r\n return true;\r\n }\r\n function countOrderProperties() {\r\n //vm.nProgrammed = 0;\r\n //vm.nDelayed = 0;\r\n //angular.forEach($scope.gridData, function (value, key) {\r\n // //Counts\r\n // //if(value.programada) { vm.nProgrammed += 1; }\r\n // if (value.tiempoRestante < 0 && value.viewDelay === false) { vm.nDelayed += 1; }\r\n //});\r\n }\r\n\r\n function refreshData(success) {\r\n vm.refreshing = true;\r\n fleet.getMapData().then(function () {\r\n if (success) {\r\n notificationService.sendAppNotification({\r\n message: 'Orden eliminada con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }\r\n vm.refreshing = false;\r\n });\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n setGridData();\r\n }\r\n\r\n /* ROW SELECTION */\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n function clearAll() {\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n /* Aceptación servicios */\r\n function getRemainingTimeToAccept(date, order) {\r\n var altaDate = new Date(order.altaDate);\r\n var compute = parseInt((date - altaDate.getTime()) / 1000);\r\n return (order.timeAsignation || 300) - compute;\r\n }\r\n\r\n /* Asignación chofer */\r\n function showAssignDriver(orderId, order) { //MODAL\r\n vm.operatorsList = [];\r\n fleet.getAssignableOperators(orderId).then(function (data) {\r\n vm.operatorsList = data;\r\n });\r\n\r\n ModalService.showModal({\r\n template: assignDriverTemplate,\r\n controller:\r\n function (close) {\r\n var modal = this;\r\n modal.parentScope = vm;\r\n\r\n modal.companyName = order.clientName;\r\n modal.companySrc = vm.getBrandLogo(order.insurerId);\r\n modal.tMedio = order.vehicleType;\r\n\r\n modal.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n },\r\n controllerAs: 'modal'\r\n });\r\n }\r\n function assignOperatorToOrder(orderId, operatorId, state, modal, confirm) {\r\n if (operatorId == null) {\r\n simpleModalService.yesNoModal('Confirmación desasignar chofer',\r\n '¿Desea desasignar el chofer de la orden?')\r\n .then(function (result) {\r\n if (result) {\r\n ordersService.assignToOperator(null, orderId).then(function (result) {\r\n vm.refreshData();\r\n });\r\n }\r\n });\r\n } else {\r\n if (state !== 100 || confirm) {\r\n vm.blurGrid = true;\r\n ordersService.assignToOperator(operatorId, orderId).then(function (result) {\r\n vm.modal1 = false;\r\n vm.blurGrid = false;\r\n fleet.getMapData().then(function () {\r\n if (modal) {\r\n modal.cancel();\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n /* Order actions */\r\n function remove(id) {\r\n if (id == null) { return; }\r\n simpleModalService.yesNoModal('Confirmación eliminar', '¿Desea eliminar la orden?')\r\n .then(function (result) {\r\n if (result) {\r\n notificationService.sendAppNotification({\r\n message: 'Eliminando orden...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n ordersService.removeOrders([id]).then(\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Orden eliminada con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al eliminar la orden',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n vm.refreshData();\r\n }\r\n });\r\n }\r\n\r\n function changeOrderState(orderId, state) {\r\n ordersService.legacyChangeOrderState(orderId, state)\r\n .then(function () { refreshData(); });\r\n }\r\n\r\n function acknowledgeDelay(order) {\r\n ordersService.acknowledgeDelay(order.orderId).then(function (result) {\r\n vm.refreshData();\r\n });\r\n }\r\n\r\n function goToEdit(orderId) {\r\n vm.focusedRow = orderId;\r\n $rootScope.tabManager.goToOrdenes(orderId);\r\n }\r\n\r\n function chatWithChofer(choferId) {\r\n $state.go('flota.chat', { 'id': choferId });\r\n }\r\n\r\n function groupHeaderContent(row, cols) {\r\n var header = 'nuevas';\r\n if (row.treeNode.aggregations[0].groupVal === 1) { header = 'notificaciones'; }\r\n if (row.treeNode.aggregations[0].groupVal === 2) { header = 'pendientes'; }\r\n if (row.treeNode.aggregations[0].groupVal === 3) { header = 'en curso'; }\r\n if (row.treeNode.aggregations[0].groupVal === 4) { header = 'finalizadas hoy'; }\r\n return header;\r\n }\r\n\r\n /* Group selection */\r\n function isGroupSelected(row) {\r\n for (var i = 0; i < row.treeNode.children.length; i++) {\r\n if (!row.treeNode.children[i].row.isSelected) {\r\n row.groupSelected = false;\r\n return false;\r\n }\r\n }\r\n row.groupSelected = true;\r\n return true;\r\n }\r\n function groupSelect(row) {\r\n angular.forEach(row.treeNode.children, function (value, key) {\r\n if (row.groupSelected) {\r\n vm.gridApi.selection.unSelectRow(value.row.entity);\r\n } else {\r\n vm.gridApi.selection.selectRow(value.row.entity);\r\n }\r\n });\r\n }\r\n \r\n function getColorEstado(estado) {\r\n return preferences.prefs.getStateColor(estado) || 'undefined';\r\n }\r\n\r\n function getTipoEstado(tipo) {\r\n return userConfig.literals.estadosOrden[tipo] || $filter('initials')(vm.getEstadoName(tipo));\r\n }\r\n\r\n function getEstadoName(estado) {\r\n return preferences.prefs.getStateDesc(estado) || '-';\r\n }\r\n\r\n function getIconoOrden(tipo) {\r\n return userConfig.orders.iconoOrden[tipo] || 'undefined';\r\n }\r\n\r\n function getBrandLogo(tipo) {\r\n if (tipo === null) { return null; }\r\n return userConfig.brands.insurance[tipo] || null;\r\n }\r\n\r\n function getTextoOrden(tipo) {\r\n return userConfig.orders.textoOrden[tipo] || 'en';\r\n }\r\n\r\n function removeAllOrders() {\r\n simpleModalService.yesNoModal('Confirmación eliminar',\r\n '¿Desea eliminar las ' + vm.gridApi.selection.getSelectedCount() + ' ordernes seleccionadas?')\r\n .then(function (result) {\r\n if (result) {\r\n var orderIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n orderIds.push(selected[i].orderId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Eliminando ordenes...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n ordersService.removeOrders(orderIds)\r\n .then(\r\n function () {\r\n vm.refreshData(true);\r\n notificationService.sendAppNotification({\r\n message: 'Ordenes eliminadas con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al eliminar las ordenes',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n $scope.$on('$destroy', function () {\r\n\r\n if (vm.reloadListener != null)\r\n vm.reloadListener();\r\n\r\n listeners.forEach(element => {\r\n element();\r\n });\r\n timeouts.forEach(element => {\r\n $timeout.cancel(element);\r\n });\r\n\r\n });\r\n\r\n function getTextoEstadoAsig(estadoAsig) {\r\n /*jshint maxcomplexity:false */\r\n switch (estadoAsig) {\r\n case 0:\r\n return 'Pendiente aceptación';\r\n case 1:\r\n return 'Aceptado pendiente confirmación';\r\n case 2:\r\n return 'Rechazado pendiente confirmación';\r\n case 3:\r\n return 'Rechazado timeout pendiente confirmación';\r\n case 4:\r\n return 'Error reintentar';\r\n case 5:\r\n return 'Error no reintentar';\r\n case 6:\r\n return 'Rechazado colaborador desconectado pendiente confirmación';\r\n case 7:\r\n return 'Aceptado sin confirmación';\r\n case 8:\r\n return 'Modificado sin confirmación';\r\n case 9:\r\n return 'Baja sin confirmación';\r\n case 10:\r\n return 'Pendiente presupuesto';\r\n case 11:\r\n return 'Pendiente aceptación presupuesto';\r\n case 100:\r\n return 'Aceptado';\r\n case 101:\r\n return 'Rechazado';\r\n case 102:\r\n return 'Rechazado timeout';\r\n case 103:\r\n return 'Rechazado colaborador desconectado';\r\n case 104:\r\n return 'Modificado';\r\n case 105:\r\n return 'Baja';\r\n case 106:\r\n return 'Rechazado presupuesto';\r\n case 107:\r\n return 'Aceptado presupuesto';\r\n default:\r\n return '-';\r\n }\r\n }\r\n\r\n function goToOrdenNueva() {\r\n $rootScope.tabManager.goToOrdenes(null);\r\n }\r\n\r\n function onMouseLeaveDelayCell(btnDeactivateId, containerId) {\r\n var btn = document.getElementById(btnDeactivateId);\r\n var c = document.getElementById(containerId);\r\n btn.classList.add('none');\r\n c.classList.remove('none');\r\n\r\n }\r\n\r\n function onMouseOverDelayCell(btnDeactivateId, containerId) {\r\n var btn = document.getElementById(btnDeactivateId, containerId);\r\n var c = document.getElementById(containerId);\r\n btn.classList.remove('none'); \r\n c.classList.add('none');\r\n }\r\n\r\n function getDelayState(item) {\r\n if (item.tiempoRestante >= 0) {\r\n return 'delay-positive';\r\n }\r\n\r\n if (item.tiempoRestante < 0 && item.viewDelay == false) {\r\n return 'delay-not-viewed-negative';\r\n }\r\n\r\n if (item.tiempoRestante < 0 && item.viewDelay == true) {\r\n return 'delay-viewed-negative';\r\n }\r\n\r\n return 'delay-default';\r\n }\r\n\r\n function getStateClassName(item) {\r\n\r\n switch (item.estadoOrden) {\r\n case 500:\r\n return 'state-modificado-sin-conf';\r\n case 501:\r\n return 'state-baja-sin-conf';\r\n case 502:\r\n return 'state-baja';\r\n case 503:\r\n return 'state-modificado';\r\n default:\r\n return 'state-undefined';\r\n }\r\n }\r\n\r\n function getStateLabel(item) {\r\n\r\n switch (item.estadoOrden) {\r\n case 500:\r\n return 'Modificado SIN conf.';\r\n case 501:\r\n return 'Baja SIN conf.';\r\n case 502:\r\n return 'Baja';\r\n case 503:\r\n return 'Modificado';\r\n default:\r\n return 'undefined';\r\n }\r\n }\r\n }\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ActivityAdviceController', ActivityAdviceController);\r\n \r\n\r\n ActivityAdviceController.$inject = [\r\n '$templateCache'\r\n ];\r\n\r\n function ActivityAdviceController($templateCache){\r\n // jshint maxstatements:false\r\n\r\n var icons = {\r\n 0: 'content/img/aseguradoras/asitur/asitur-imagotipo.png',\r\n 1: 'content/img/aseguradoras/racc/racc-imagotipo.png',\r\n 2: 'content/img/aseguradoras/mapfre/mapfre-imagotipo.png',\r\n 3: 'content/img/aseguradoras/europ/europ-imagotipo.png',\r\n 4: 'content/img/aseguradoras/mm/mm-imagotipo.png',\r\n 5: 'content/img/aseguradoras/race/race-imagotipo.png',\r\n 6: 'content/img/aseguradoras/allianz/allianz-imagotipo.png',\r\n 7: 'content/img/aseguradoras/pelayo/pelayo-imagotipo.png',\r\n 8: 'content/img/aseguradoras/ld/ld-imagotipo.png',\r\n };\r\n\r\n\r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n {\r\n//OJO!!! Hay que cambiar los logos de las empresas aseguradoras por el tipo de vehiculo. (taxi, grua, bus etc...)\r\n field: 'type', \r\n displayName: 'Tipo',\r\n cellTemplate: $templateCache.get('app/views/orders/common_templates/clienteCellTemplate.html'),\r\n width: 45,\r\n resizable: true\r\n },\r\n {\r\n name: 'id',\r\n displayName: 'Id.',\r\n minWidth: 60,\r\n maxWidth: 75,\r\n resizable: true\r\n\r\n\r\n },\r\n {\r\n\r\n field: 'enrollment',\r\n displayName: 'Matrícula',\r\n minWidth: 75,\r\n maxWidth: 90,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'description',\r\n displayName: 'Descripción',\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'brand',\r\n displayName: 'Marca',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'model',\r\n displayName: 'Modelo', \r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'version',\r\n displayName: 'Versión',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'group',\r\n displayName: 'Grupo',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'modify',\r\n displayName: 'Acciones',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n }\r\n ],\r\n data: vm.gridData,\r\n };\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData(){\r\n for(var i = 0; i < 20; i++){\r\n var icon = i % Object.keys(icons).length;\r\n var row = { 'insuranceCompanyCode' : icon, \r\n 'id': '001', 'enrollment' : 'B-1234-LL', \r\n 'description' : 'Lorem ipsum dolor sit amet consecteur adipiscing elit', \r\n 'brand': 'BMWDD', \r\n 'model' : '330', \r\n 'version' : '1234567890', \r\n 'group' : 'PLATAFORMAS', \r\n 'modify' : 'editar | eliminar'\r\n };\r\n vm.gridData.push(row);\r\n }\r\n }\r\n vm.getBrandLogo = getBrandLogo;\r\n function getBrandLogo(icon) {\r\n return icons[icon] || 'undefined';\r\n }\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ActivityDriverController', ActivityDriverController);\r\n\r\n\r\n ActivityDriverController.$inject = [\r\n '$rootScope'\r\n ];\r\n\r\n function ActivityDriverController($rootScope) {\r\n // jshint maxstatements:false\r\n\r\n var row = {\r\n 'name': 'Coches Taller',\r\n 'description':\r\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ',\r\n 'actions': 'editar | eliminar'\r\n };\r\n\r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n {\r\n field: 'name',\r\n displayName: 'Nombre',\r\n resizable: true,\r\n minWidth: 110,\r\n maxWidth: 150,\r\n },\r\n {\r\n name: 'description',\r\n displayName: 'Descripción',\r\n resizable: true\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n }\r\n ],\r\n data: vm.gridData,\r\n };\r\n\r\n vm.goToOrdenNueva = goToOrdenNueva;\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n\r\n function loadData() {\r\n for (var i = 0; i < 15; i++) {\r\n vm.gridData.push(row);\r\n }\r\n }\r\n\r\n function goToOrdenNueva() {\r\n $rootScope.tabManager.goToOrdenes(null);\r\n } \r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ActivityFleetController', ActivityFleetController);\r\n \r\n\r\n ActivityFleetController.$inject = [\r\n '$templateCache',\r\n '$rootScope'\r\n ];\r\n\r\n function ActivityFleetController($templateCache, $rootScope){\r\n // jshint maxstatements:false\r\n\r\n var icons = {\r\n 0: 'content/img/aseguradoras/asitur/asitur-imagotipo.png',\r\n 1: 'content/img/aseguradoras/racc/racc-imagotipo.png',\r\n 2: 'content/img/aseguradoras/mapfre/mapfre-imagotipo.png',\r\n 3: 'content/img/aseguradoras/europ/europ-imagotipo.png',\r\n 4: 'content/img/aseguradoras/mm/mm-imagotipo.png',\r\n 5: 'content/img/aseguradoras/race/race-imagotipo.png',\r\n 6: 'content/img/aseguradoras/allianz/allianz-imagotipo.png',\r\n 7: 'content/img/aseguradoras/pelayo/pelayo-imagotipo.png',\r\n 8: 'content/img/aseguradoras/ld/ld-imagotipo.png',\r\n };\r\n\r\n\r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n {\r\n//OJO!!! Hay que cambiar los logos de las empresas aseguradoras por el tipo de vehiculo. (taxi, grua, bus etc...)\r\n field: 'type', \r\n displayName: 'Tipo',\r\n cellTemplate: $templateCache.get('app/views/orders/common_templates/clienteCellTemplate.html'),\r\n width: 45,\r\n resizable: true\r\n },\r\n {\r\n name: 'id',\r\n displayName: 'Id.',\r\n minWidth: 60,\r\n maxWidth: 75,\r\n resizable: true\r\n\r\n\r\n },\r\n {\r\n\r\n field: 'enrollment',\r\n displayName: 'Matrícula',\r\n minWidth: 75,\r\n maxWidth: 90,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'description',\r\n displayName: 'Descripción',\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'brand',\r\n displayName: 'Marca',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'model',\r\n displayName: 'Modelo', \r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'version',\r\n displayName: 'Versión',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'group',\r\n displayName: 'Grupo',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'modify',\r\n displayName: 'Acciones',\r\n minWidth: 100,\r\n maxWidth: 120,\r\n resizable: true\r\n\r\n }\r\n ],\r\n data: vm.gridData,\r\n };\r\n\r\n vm.getBrandLogo = getBrandLogo;\r\n vm.goToOrdenNueva = goToOrdenNueva;\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData(){\r\n for(var i = 0; i < 20; i++){\r\n var icon = i % Object.keys(icons).length;\r\n var row = { 'insuranceCompanyCode' : icon, \r\n 'id': '001', 'enrollment' : 'B-1234-LL', \r\n 'description' : 'Lorem ipsum dolor sit amet consecteur adipiscing elit', \r\n 'brand': 'BMWDD', \r\n 'model' : '330', \r\n 'version' : '1234567890', \r\n 'group' : 'PLATAFORMAS', \r\n 'modify' : 'editar | eliminar'\r\n };\r\n vm.gridData.push(row);\r\n }\r\n }\r\n \r\n function getBrandLogo(icon) {\r\n return icons[icon] || 'undefined';\r\n }\r\n \r\n function goToOrdenNueva() {\r\n $rootScope.tabManager.goToOrdenes(null);\r\n } \r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('AlarmsFormController', AlarmsFormController);\r\n \r\n\r\n AlarmsFormController.$inject = [\r\n \r\n ];\r\n\r\n function AlarmsFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('AlarmsListController', AlarmsListController);\r\n \r\n\r\n AlarmsListController.$inject = [\r\n\t\t'$templateCache', 'alarmaService', '$scope', '$rootScope', '$state', '$filter'\r\n ];\r\n\r\n \r\n\r\n\tfunction AlarmsListController($templateCache, alarmaService, $scope, $rootScope, $state, $filter){\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html')\r\n };\r\n\r\n var row = { \r\n 'date' : '02/01/2017 17:34:31', \r\n 'type' : 'Zona', \r\n 'name' : 'Primera alarma', \r\n 'description': 'Lorem ipsum dolor sit amet consecteur adipiscing elit', \r\n 'entity': 'Vehículo', \r\n 'vehicle' : '001 - 0000AA', \r\n 'driver' : 'Lacasito', \r\n 'address' : 'click aquí', \r\n 'actions' : 'eliminar'\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n\t\t\trowTemplate: templates.rowTemplate,\r\n\r\n columnDefs: [\r\n\r\n {\r\n field: 'fecha',\r\n displayName: 'Fecha',\r\n minWidth: 135,\r\n maxWidth: 150,\r\n resizable: true\r\n },\r\n\r\n {\r\n name: 'type',\r\n displayName: 'Tipo',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'name',\r\n displayName: 'Nombre',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'descripcion',\r\n displayName: 'Descripción',\r\n },\r\n\r\n {\r\n field: 'entity',\r\n displayName: 'Entidad',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'vehicle',\r\n displayName: 'Vehículo',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'flota.operario.nombre',\r\n displayName: 'Operario',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'address',\r\n displayName: 'Dirección',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n };\r\n\r\n vm.goToEdit = goToEdit;\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function goToEdit(alarma) {\r\n\t\t\t$state.go('flota.alarmas.editar', { 'id': alarma.alarmaId });\r\n }\r\n \r\n function loadData(){\r\n\t\t\talarmaService.getList().then(function (result) {\r\n\t\t\t\t$scope.gridData = result.data.list;\r\n\t\t\t\tvm.gridData = result.data.list;\r\n\t\t\t});\r\n }\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('BusinessFormController', BusinessFormController);\r\n \r\n\r\n BusinessFormController.$inject = [\r\n \r\n ];\r\n\r\n function BusinessFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('BusinessListController', BusinessListController);\r\n \r\n\r\n BusinessListController.$inject = [\r\n\t\t'$templateCache', 'empresaService', '$scope', '$rootScope', '$state', '$filter'\r\n ];\r\n\r\n \r\n\r\n\tfunction BusinessListController($templateCache, empresaService, $scope, $rootScope, $state, $filter){\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n\t\t\taccionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n\t\t\trowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n \r\n columnDefs: [\r\n\r\n {\r\n name: 'id',\r\n displayName: 'ID',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n name: 'nombre',\r\n displayName: 'Nombre',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'direccion',\r\n displayName: 'Dirección',\r\n },\r\n\r\n {\r\n field: 'poblacion',\r\n displayName: 'Población',\r\n },\r\n\r\n {\r\n field: 'provincia',\r\n displayName: 'Provincia',\r\n },\r\n\r\n {\r\n field: 'telefono',\r\n displayName: 'Teléfono',\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate\r\n }\r\n\r\n ],\r\n\t\t\tdata: 'gridData',\r\n\r\n\t\t\tonRegisterApi: function (gridApi) {\r\n\t\t\t\tvm.gridApi = gridApi;\r\n\t\t\t\tvm.gridApi.grid.options.enableExpandAll = false;\r\n\t\t\t}\r\n };\r\n\r\n vm.goToEdit = goToEdit;\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n\r\n\t\tfunction loadData() {\r\n\t\t\tempresaService.getList().then(function (result) {\r\n\t\t\t\t$scope.gridData = result.data.list;\r\n\t\t\t\tvm.gridData = result.data.list;\r\n\t\t\t});\r\n }\r\n \r\n function goToEdit(empresa) {\r\n\t\t\t$state.go('flota.empresas.editar', { 'id': empresa.empresaId });\r\n\t\t}\r\n }\r\n\r\n})();","/*globals google*/\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ClientsFormController', ClientsFormController);\r\n\r\n\r\n ClientsFormController.$inject = [\r\n '$stateParams',\r\n 'clientService',\r\n 'genericDataService',\r\n '$filter',\r\n 'modals',\r\n 'ModalService',\r\n '$templateCache',\r\n '$rootScope',\r\n 'endPoints',\r\n 'NgMap',\r\n '$timeout',\r\n '$state',\r\n 'notificationService',\r\n 'simpleModalService',\r\n 'preferences',\r\n 'common',\r\n 'restrictionService'\r\n ];\r\n\r\n\r\n /* jshint maxstatements:false, maxparams:false */\r\n function ClientsFormController(\r\n $stateParams,\r\n clientService,\r\n genericDataService,\r\n $filter,\r\n modals,\r\n ModalService,\r\n $templateCache,\r\n $rootScope,\r\n endPoints,\r\n NgMap,\r\n $timeout,\r\n $state,\r\n notificationService,\r\n simpleModalService,\r\n preferences,\r\n common,\r\n restrictionService) {\r\n /* PRIVATE VARIABLES */\r\n var id = $stateParams.id;\r\n\r\n var obraTemplate = $templateCache.get('app/views/modals/clientes/obraTemplate.html');\r\n var baseTemplate = $templateCache.get('app/views/modals/clientes/baseTemplate.html');\r\n var tarifasTemplate = $templateCache.get('app/views/modals/clientes/tarifasTemplate.html');\r\n var productsTemplate = $templateCache.get('app/views/modals/clientes/productsTemplate.html');\r\n var copyTarifasTemplate = $templateCache.get('app/views/modals/clientes/copyTarifasTemplate.html');\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.googleApiURL = endPoints.GOOGLE_MAPS_API_URL;\r\n vm.client = {};\r\n vm.edit = false;\r\n vm.genericData = {\r\n empresas: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n aseguradoras: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n paises: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n provinces: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n poblaciones: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n tiposPago: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n contadorFac: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n formatoFac: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n tipoCliente: {\r\n list: [\r\n { id: 0, nombre: 'Cliente' },\r\n { id: 1, nombre: 'Particular' },\r\n { id: 2, nombre: 'Cliente Potencial' },\r\n { id: 3, nombre: 'Cía.Aseguradora' },\r\n ],\r\n selected: { id: null }\r\n },\r\n visibilidad: {\r\n list: [\r\n { id: 0, nombre: 'Visible en terminal de datos del operario' },\r\n { id: 1, nombre: 'No visible en terminal de datos del operario' }\r\n ],\r\n selected: { id: 0, nombre: 'Visible en terminal de datos del operario' }\r\n },\r\n metodoFac: {\r\n list: [\r\n { id: 0, nombre: 'Una factura por orden/servicio' },\r\n { id: 1, nombre: 'Una factura por orden/servicio (agrupar mismo expediente)' },\r\n { id: 2, nombre: 'Una factura de varias ordenes/servicios' },\r\n { id: 3, nombre: 'Autofacturación' },\r\n ],\r\n selected: { id: 0, nombre: 'Una factura por orden/servicio' }\r\n },\r\n impuestos: {\r\n list: [\r\n { id: 0, nombre: 'Aplicar el del producto' },\r\n { id: 1, nombre: 'Exento' }\r\n ],\r\n selected: { id: 0, nombre: 'Aplicar el del producto' }\r\n },\r\n tipoCobro: {\r\n list: [\r\n { id: 0, nombre: 'A la entrega' },\r\n { id: 1, nombre: 'A la retirada' },\r\n { id: 2, nombre: 'Crédito' }\r\n ],\r\n selected: { id: null }\r\n },\r\n productos: {\r\n list: null,\r\n selected: { id: null }\r\n }\r\n };\r\n vm.dates = {\r\n contrato: null\r\n };\r\n\r\n vm.textInput = '';\r\n\r\n vm.isTarifaForm = false;\r\n\r\n /* PUBLIC FUNCTIONS */\r\n vm.onPaisChange = onPaisChange;\r\n vm.onProvChange = onProvChange;\r\n vm.baseModal = baseModal;\r\n vm.addBase = addBase;\r\n vm.editBase = editBase;\r\n vm.removeBase = removeBase;\r\n vm.obraModal = obraModal;\r\n vm.addObra = addObra;\r\n vm.removeObra = removeObra;\r\n vm.save = save;\r\n vm.createCuentaPortal = createCuentaPortal;\r\n vm.createAseguradoraConexionPendiente = createAseguradoraConexionPendiente;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.copyTarifaModal = tarifaModalCopy;\r\n vm.productModal = productModal;\r\n vm.effectClass = effectClass;\r\n vm.changeStatus = changeStatus;\r\n vm.onCompanyChange = onCompanyChange;\r\n vm.resizable = resizable;\r\n vm.operationsList = operationsList;\r\n\r\n\r\n vm.hasCuentaPortalTab = false;\r\n vm.showCuentaExistsBox = false;\r\n vm.showSendBox = false;\r\n vm.cuentaPortalState = 0; // 0 = no tiene aseg conex para este proveedor , 1 = tiene aseg conex sin confirmar, 2 = tiene aseg conex confirmada.\r\n\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n vm.tarifaList = [];\r\n vm.estado = {\r\n null: 'Estado del cliente',\r\n 0: 'Activo',\r\n 1: 'Baja',\r\n colors: {\r\n 0: 'green',\r\n 2: 'black'\r\n }\r\n };\r\n vm.entidades = [];\r\n\r\n vm.getCuentaEmail = getCuentaEmail;\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n clientService.getEntidades(preferences.prefs.sector)\r\n .then(function (res) {\r\n vm.entidadesById = {};\r\n vm.entidades = [];\r\n res.forEach(e => {\r\n /*CHAPUZA para que funcione Valoración/Tarifas con Traslados*/\r\n if (e.entidadId.toString().toLowerCase() != 'fb29681b-861f-4e20-9a80-183eeb0a89e2') {\r\n // DEFAULT\r\n } else {\r\n // CHAPUZA\r\n e = { entidadId: '224940b1-91fb-4f01-8015-1774254fabc3', descripcionPlural: 'Órdenes de Traslados' };\r\n }\r\n /*CHAPUZA para que funcione Valoración/Tarifas con Traslados*/\r\n\r\n vm.entidadesById[e.entidadId] = e;\r\n vm.entidades.push({ id: e.entidadId, nombre: e.descripcionPlural });\r\n });\r\n });\r\n\r\n\r\n //Edit\r\n if (id != null) {\r\n vm.hasCuentaPortalTab = true;\r\n vm.edit = true;\r\n clientService.getClient(id)\r\n .then(function (client) {\r\n //if (!common.isNullOrUndefined(client.cuentaPortal)) {\r\n //\tfor (var i = 0; i < client.cuentaPortal.aseguradorasConexion.length; ++i) {\r\n //\t\tif (client.cuentaPortal.aseguradorasConexion[i].empresaId == client.empresaId) {\r\n //\t\t\tvm.cuentaPortalState = client.cuentaPortal.aseguradorasConexion[i].estado;\r\n //\t\t\tbreak;\r\n //\t\t}\r\n //\t}\r\n //}\r\n vm.cuentaPortalState = client.estadoPortal;\r\n if (vm.cuentaPortalState == 1)\r\n vm.showSendBox = true;\r\n\r\n vm.client = client;\r\n // console.log(vm.client);\r\n setDates();\r\n setCombosInitialData();\r\n });\r\n }\r\n\r\n //New\r\n else {\r\n vm.changeStatus(null);\r\n vm.genericData.tipoCliente.selected = vm.genericData.tipoCliente.list[0];\r\n }\r\n if (vm.client.estado == null) vm.client.estado = 0;\r\n getFields();\r\n //Wait for the next digest cycle for the page to render so onChange events can trigger\r\n $timeout(function () { getGenericData(); }, 0);\r\n })();\r\n\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El cliente se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendEmailSentNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'Se le ha enviado un correo con la solicitud al cliente.',\r\n positionY: 'top', positionX: 'right', delay: 4000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'El campo nombre es obligatorios',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n function sendErrorRequireCuenta() {\r\n notificationService.sendAppNotification({\r\n message: 'Para dar de alta una cuenta en el portal de cliente deben estar rellenados tanto el CIF como el Email',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n function sendErrorCuentaExistsForThisProvider() {\r\n notificationService.sendAppNotification({\r\n message: 'Se ha detectado que para este cliente y este proveedor ya existe una cuenta portal. No se pueden dar de alta más.',\r\n positionY: 'top', positionX: 'right', delay: 6000, type: 'error'\r\n });\r\n }\r\n\r\n function changeStatus(status) {\r\n vm.client.estado = status;\r\n }\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function getFields() {\r\n clientService.getTarifaFields(id).then(function (result) {\r\n var fields = [];\r\n vm.filterData = {};\r\n result.data.forEach(f => {\r\n fields.push({ id: f.fieldId, nombre: clientService.fieldNames[f.fieldId] });\r\n vm.filterData[f.fieldId] = f;\r\n vm.filterData[f.fieldId].nombre = clientService.fieldNames[f.fieldId];\r\n });\r\n vm.fields = fields;\r\n });\r\n }\r\n\r\n function operationsList(fieldId) {\r\n if (!fieldId) { return []; }\r\n var type = vm.filterData[fieldId].type;\r\n return clientService.operations[type];\r\n }\r\n\r\n function getCuentaEmail() {\r\n return vm.client.cuentaPortal.usuariosPortal[0].email;\r\n }\r\n\r\n /* FUNCTION DEFINITIONS */\r\n function doSave(action) {\r\n if (vm.edit == true) {\r\n if (!restrictionService.hasPermission(4, 'cliente')) return;\r\n } else {\r\n if (!restrictionService.hasPermission(1, 'cliente')) return;\r\n }\r\n /*jshint maxcomplexity:false */\r\n // if (common.isNullOrUndefined(vm.client.id)) { sendErrorRequire(); return; }\r\n\r\n if (common.isNullOrUndefined(vm.client.nombre)) { sendErrorRequire(); return; }\r\n\r\n if (vm.genericData.empresas.selected.id) { vm.client.empresaId = vm.genericData.empresas.selected.id; }\r\n\r\n if (vm.genericData.paises.selected.id) {\r\n vm.client.pais = vm.genericData.paises.selected.id;\r\n }\r\n if (vm.genericData.provinces.selected.id) {\r\n vm.client.provincia = vm.genericData.provinces.selected.id;\r\n }\r\n if (vm.genericData.poblaciones.selected.id) {\r\n vm.client.poblacion = vm.genericData.poblaciones.selected.id;\r\n }\r\n\r\n if (vm.genericData.contadorFac.selected.id) {\r\n vm.client.contadorfacId = vm.genericData.contadorFac.selected.id;\r\n }\r\n if (vm.genericData.formatoFac.selected.id) {\r\n vm.client.formatofacturaId = vm.genericData.formatoFac.selected.id;\r\n }\r\n if (vm.genericData.tiposPago.selected.id) {\r\n vm.client.tipopagoId = vm.genericData.tiposPago.selected.id;\r\n }\r\n if (!common.isNullOrUndefined(vm.genericData.tipoCliente.selected.id)) {\r\n vm.client.tipoClienteId = vm.genericData.tipoCliente.selected.id;\r\n if (vm.client.tipoClienteId == 3) vm.client.aseguradoraId = vm.genericData.aseguradoras.selected.id;\r\n else { vm.client.aseguradoraId = null; }\r\n }\r\n if (vm.genericData.visibilidad.selected.id) {\r\n vm.client.visibilidad = vm.genericData.visibilidad.selected.id;\r\n }\r\n if (vm.genericData.metodoFac.selected.id) {\r\n vm.client.metodofacturaId = vm.genericData.metodoFac.selected.id;\r\n }\r\n if (vm.genericData.impuestos.selected.id) {\r\n vm.client.impuestoaplId = vm.genericData.impuestos.selected.id;\r\n }\r\n\r\n\r\n vm.client.clientepagaen = vm.genericData.tipoCobro.selected.id;\r\n\r\n\r\n vm.client.fechacontrato = vm.dates.contrato;\r\n clientService.addClient(vm.client, vm.tarifaList).then(function (clienteSave) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.clientes.listado');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.clientes.nuevo', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.client.id = clienteSave.id;\r\n vm.client.clienteId = clienteSave.clienteId;\r\n }\r\n vm.hasCuentaPortalTab = true;\r\n });\r\n\r\n }\r\n\r\n function createCuentaPortal() {\r\n if (common.isNullOrUndefined(vm.client.nif) || common.isNullOrUndefined(vm.client.email)) {\r\n sendErrorRequireCuenta();\r\n return;\r\n }\r\n\r\n clientService.addCuentaPortal(vm.client.nif, vm.client.email, vm.client.empresaId, vm.client.aseguradoraId, vm.client.clienteId, vm.genericData.empresas.selected.nombre).then(function (result) {\r\n\r\n if (result.estado == 2) {\r\n sendErrorCuentaExistsForThisProvider();\r\n }\r\n else if (result.estado == 1) {\r\n //vm.showCuentaExistsBox = true;\r\n simpleModalService.yesNoModal('Confirmación solicitar', 'Este cliente ya tiene una cuenta en el portal. Si quiere añadirle como proveedor deberá solicitárselo directamente. ¿Desea realizar la solicitud ahora?', 'Enviar')\r\n .then(function (result) {\r\n if (result) {\r\n vm.createAseguradoraConexionPendiente();\r\n }\r\n });\r\n vm.client.cuentaId = result.cuentaId;\r\n }\r\n else {\r\n sendEmailSentNotification();\r\n vm.cuentaPortalState = 1;\r\n }\r\n });\r\n }\r\n\r\n function createAseguradoraConexionPendiente() {\r\n clientService.addAseguradoraConexionPendiente(vm.client.nif, vm.client.email, vm.client.empresaId, vm.client.aseguradoraId, vm.client.cuentaId, vm.client.clienteId).then(function (result) {\r\n if (result) {\r\n sendEmailSentNotification();\r\n vm.cuentaPortalState = 1;\r\n }\r\n });\r\n }\r\n\r\n function baseModal(cb, index) {\r\n ModalService.showModal({\r\n template: baseTemplate,\r\n controller:\r\n function ($scope, close) {\r\n $scope.vm = vm;\r\n var edit = false;\r\n var indexToModify = index;\r\n $scope.name = null;\r\n $scope.id = null;\r\n $scope.bases = {\r\n list: null,\r\n //selected: { id: -1, nombre: 'Nueva base' }\r\n selected: { id: null, nombre: '' }\r\n };\r\n $scope.sucursales = {\r\n list: null,\r\n //selected: { id: -1, nombre: 'Nueva base' }\r\n selected: { id: null, nombre: '' }\r\n };\r\n\r\n\r\n if (cb) {\r\n edit = true;\r\n $scope.name = cb.base.nombre;\r\n $scope.id = cb.base.id;\r\n $scope.bases.selected = { id: cb.base.baseId, nombre: cb.base.nombre };\r\n if (cb.colaboradorAseguradora) {\r\n $scope.sucursales.selected = {\r\n id: cb.colaboradorAseguradora.colaboradorAseguradoraId,\r\n nombre: cb.colaboradorAseguradora.nomSucursal\r\n };\r\n }\r\n\r\n }\r\n\r\n (function () {\r\n $scope.bases.loading = true;\r\n genericDataService.getBases().then(function (data) {\r\n $scope.bases.list = data;\r\n //$scope.bases.list.unshift({ id: -1, nombre: 'Nueva base' });\r\n $scope.bases.loading = false;\r\n });\r\n })();\r\n\r\n (function () {\r\n $scope.sucursales.loading = true;\r\n genericDataService.getSucursales(vm.client.clienteId).then(function (data) {\r\n $scope.sucursales.list = data;\r\n $scope.sucursales.loading = false;\r\n });\r\n })();\r\n\r\n $scope.save = function () {\r\n if (edit) {\r\n edit = false;\r\n vm.editBase({\r\n nombre: $scope.bases.selected.nombre,\r\n id: $scope.bases.selected.id\r\n }, {\r\n nomSucursal: $scope.sucursales.selected.nombre,\r\n colaboradorAseguradoraId: $scope.sucursales.selected.id\r\n }, indexToModify);\r\n } else {\r\n vm.addBase({\r\n nombre: $scope.bases.selected.nombre,\r\n baseId: $scope.bases.selected.id\r\n }, {\r\n nomSucursal: $scope.sucursales.selected.nombre,\r\n colaboradorAseguradoraId: $scope.sucursales.selected.id\r\n });\r\n\r\n }\r\n\r\n $scope.cancel();\r\n };\r\n\r\n $scope.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n }\r\n });\r\n }\r\n\r\n function editBase(base, colaboradorAseguradora, indexToModify) {\r\n vm.client.clientesBases[indexToModify].base = base;\r\n vm.client.clientesBases[indexToModify].baseId = base.id;\r\n if (colaboradorAseguradora) {\r\n vm.client.clientesBases[indexToModify].colaboradorAseguradoraId =\r\n colaboradorAseguradora.colaboradorAseguradoraId;\r\n if (colaboradorAseguradora.colaboradorAseguradoraId) {\r\n vm.client.clientesBases[indexToModify].colaboradorAseguradora = colaboradorAseguradora;\r\n }\r\n else {\r\n vm.client.clientesBases[indexToModify].colaboradorAseguradora = null;\r\n\r\n }\r\n }\r\n }\r\n\r\n function addBase(base, colaboradorAseguradora) {\r\n if (colaboradorAseguradora.colaboradorAseguradoraId) {\r\n vm.client.clientesBases.push({\r\n clienteId: vm.client.clienteId,\r\n base: base,\r\n colaboradorAseguradora: colaboradorAseguradora,\r\n colaboradorAseguradoraId: colaboradorAseguradora.colaboradorAseguradoraId\r\n });\r\n }\r\n else {\r\n vm.client.clientesBases.push({\r\n clienteId: vm.client.clienteId,\r\n base: base,\r\n colaboradorAseguradora: null,\r\n colaboradorAseguradoraId: null\r\n });\r\n }\r\n\r\n }\r\n\r\n function removeBase(index) {\r\n simpleModalService.yesNoModal('Confirmación', '¿Desea eliminar la base?')\r\n .then(function (result) {\r\n if (result) {\r\n if (index >= 0) {\r\n vm.client.clientesBases.splice(index, 1);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function obraModal(obra) {\r\n ModalService.showModal({\r\n template: obraTemplate,\r\n controller:\r\n function ($scope, close) {\r\n $scope.vm = vm;\r\n\r\n $scope.newObra = {};\r\n\r\n $scope.paisSelected = { id: null };\r\n $scope.provinces = {\r\n list: null,\r\n selected: { id: null }\r\n };\r\n $scope.poblaciones = {\r\n list: null,\r\n selected: { id: null }\r\n };\r\n\r\n if (obra) {\r\n Object.assign($scope.newObra, obra);\r\n $scope.paisSelected.nombre = obra.pais;\r\n $scope.provinces.selected.nombre = obra.provincia;\r\n $scope.poblaciones.selected.nombre = obra.poblacion;\r\n }\r\n\r\n centerMap();\r\n\r\n $scope.getProvincias = getProvincias;\r\n $scope.getPoblaciones = getPoblaciones;\r\n $scope.onPaisChange = onPaisChange;\r\n $scope.onProvChange = onProvChange;\r\n $scope.save = save;\r\n $scope.centerMap = centerMap;\r\n $scope.addZona = addZona;\r\n\r\n function addZona() {\r\n $scope.newObra.zona = {\r\n radio: 100\r\n };\r\n $timeout(function () {\r\n $scope.centerMap();\r\n }, 0\r\n );\r\n }\r\n function centerMap() {\r\n NgMap.getMap('mapZone').then(function (map) {\r\n $scope.google.maps.event.trigger(map, 'resize');\r\n if (!$scope.newObra.latitud || !$scope.newObra.longitud) {\r\n map.setCenter({ lat: 40.4168, lng: -3.7038 });\r\n map.setZoom(6);\r\n } else {\r\n map.setCenter({ lat: $scope.newObra.latitud, lng: $scope.newObra.longitud });\r\n map.setZoom(17);\r\n }\r\n });\r\n }\r\n\r\n function onPaisChange() {\r\n var pais = $scope.paisSelected && $scope.paisSelected.id;\r\n getProvincias(pais);\r\n }\r\n function onProvChange() {\r\n var prov = $scope.provinces.selected && $scope.provinces.selected.id;\r\n getPoblaciones(prov);\r\n }\r\n\r\n // Get the delivery provinces data -> DEPENDS ON: country\r\n function getProvincias(pais) {\r\n if (pais == null) {\r\n $scope.provinces.list = null;\r\n if ($scope.provinces.selected.id != null) {\r\n $scope.provinces.selected = { id: null, nombre: null };\r\n }\r\n } else {\r\n $scope.provinces.loading = true;\r\n genericDataService.getProvinces(id, pais)\r\n .then(function (res) {\r\n $scope.provinces.loading = false;\r\n $scope.provinces.list = res;\r\n selectChanged($scope.provinces.list,\r\n $scope.provinces.selected, false);\r\n });\r\n }\r\n }\r\n\r\n // Get the delivery populations data -> DEPENDS ON: province\r\n function getPoblaciones(provincia) {\r\n if (provincia == null) {\r\n $scope.poblaciones.list = null;\r\n if ($scope.poblaciones.id != null) {\r\n $scope.poblaciones = { id: null, nombre: null };\r\n }\r\n }\r\n else {\r\n $scope.poblaciones.loading = true;\r\n genericDataService.getPopulations(id, provincia)\r\n .then(function (res) {\r\n $scope.poblaciones.loading = false;\r\n $scope.poblaciones.list = res;\r\n selectChanged($scope.poblaciones.list,\r\n $scope.poblaciones.selected, false);\r\n });\r\n }\r\n }\r\n\r\n function save() {\r\n $scope.newObra.pais = $scope.paisSelected.nombre;\r\n $scope.newObra.provincia = $scope.provinces.selected.nombre;\r\n $scope.newObra.poblacion = $scope.poblaciones.selected.nombre;\r\n if (obra) {\r\n Object.assign(obra, $scope.newObra);\r\n } else {\r\n vm.addObra($scope.newObra);\r\n }\r\n $scope.cancel();\r\n }\r\n\r\n $scope.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n }\r\n });\r\n }\r\n\r\n function addObra(obra) {\r\n if (common.isNullOrUndefined(vm.client.obras))\r\n vm.client.obras = [];\r\n\r\n common.changeNulltoBlank(obra);\r\n vm.client.obras.push(obra);\r\n }\r\n\r\n function removeObra(index) {\r\n simpleModalService.yesNoModal('Confirmación', '¿Desea eliminar la base?')\r\n .then(function (result) {\r\n if (result) {\r\n if (index >= 0) {\r\n vm.client.obras.splice(index, 1);\r\n }\r\n }\r\n });\r\n }\r\n\r\n vm.tarifa = {\r\n tarifaProductos: []\r\n };\r\n\r\n\r\n vm.andType = 'string';\r\n vm.andOperations = [];\r\n vm.andOptions = [];\r\n\r\n vm.orType = 'string';\r\n vm.orOperations = [];\r\n vm.orOptions = [];\r\n\r\n vm.newAndCondition = {};\r\n vm.newOrCondition = {};\r\n\r\n vm.andConditions = [];\r\n vm.orConditions = [];\r\n\r\n vm.productoAdd = {};\r\n vm.productList = [];\r\n\r\n vm.addAndCondition = function () {\r\n\r\n var condition = {\r\n field: vm.newAndCondition.field,\r\n operation: vm.newAndCondition.operation,\r\n value: vm.newAndCondition.value,\r\n type: vm.filterData[vm.newAndCondition.field.id].type\r\n };\r\n vm.andConditions.push(condition);\r\n };\r\n vm.removeAndCondition = function (index) {\r\n vm.andConditions.splice(index, 1);\r\n };\r\n\r\n vm.addOrCondition = function () {\r\n var condition = {\r\n field: vm.newOrCondition.field,\r\n operation: vm.newOrCondition.operation,\r\n value: vm.newOrCondition.value,\r\n type: vm.filterData[vm.newOrCondition.field.id].type\r\n };\r\n vm.orConditions.push(condition);\r\n };\r\n vm.removeOrCondition = function (index) {\r\n vm.orConditions.splice(index, 1);\r\n };\r\n\r\n vm.onAndConditionFieldChange = function (field) {\r\n if (common.isNullOrUndefined(field) || common.isNullOrUndefined(field.id)) {\r\n vm.andOperations = null;\r\n vm.andOptions = null;\r\n vm.newAndCondition = {};\r\n return;\r\n }\r\n\r\n var type = vm.filterData[field.id].type;\r\n vm.andOperations = clientService.operations[type];\r\n vm.newAndCondition.operation = vm.andOperations[0];\r\n\r\n if (type === 'options') {\r\n vm.andOptions = vm.filterData[field.id].options;\r\n }\r\n\r\n };\r\n vm.onOrConditionFieldChange = function (field) {\r\n if (common.isNullOrUndefined(field) || common.isNullOrUndefined(field.id)) {\r\n vm.orOperations = null;\r\n vm.orOptions = null;\r\n vm.newOrCondition = {};\r\n return;\r\n }\r\n\r\n var type = vm.filterData[field.id].type;\r\n vm.orOperations = clientService.operations[type];\r\n vm.newOrCondition.operation = vm.orOperations[0];\r\n\r\n if (type === 'options') {\r\n vm.orOptions = vm.filterData[field.id].options;\r\n }\r\n };\r\n\r\n vm.addProducto = function () {\r\n if (!vm.genericData.productos.selected.id || (!vm.productoAdd.porcentaje && !vm.productoAdd.precio)) {\r\n return;\r\n }\r\n\r\n var prod = {\r\n productoId: vm.genericData.productos.selected.id,\r\n descripcion: vm.genericData.productos.selected.nombre,\r\n metodocalculo: vm.genericData.productos.selected.metodo\r\n };\r\n\r\n var tProd = {\r\n metodocalculo: vm.genericData.productos.selected.metodo,\r\n porcentaje: vm.productoAdd.porcentaje,\r\n precio: vm.productoAdd.precio,\r\n tarifaId: vm.tarifa.tarifaId,\r\n producto: prod,\r\n productoId: prod.productoId\r\n };\r\n vm.tarifa.tarifaProductos.push(tProd);\r\n\r\n vm.genericData.productos.selected = null;\r\n vm.productoAdd = {};\r\n };\r\n\r\n vm.removeProduct = function (index) {\r\n vm.tarifa.tarifaProductos.splice(index, 1);\r\n };\r\n\r\n vm.addTarifa = function () {\r\n var andConds = vm.andConditions.map(function (cond) {\r\n return {\r\n field: cond.field.id,\r\n operation: cond.operation.id,\r\n value: cond.value.id || cond.value\r\n };\r\n });\r\n var orConds = vm.orConditions.map(function (cond) {\r\n return {\r\n field: cond.field.id,\r\n operation: cond.operation.id,\r\n value: cond.value.id || cond.value\r\n };\r\n });\r\n\r\n\r\n var t = vm.tarifaList.filter(obj => {\r\n return obj.tarifa.descripcion === vm.tarifa.descripcion;\r\n });\r\n\r\n if (t[0]) {\r\n t[0].tarifa = vm.tarifa;\r\n t[0].andConditions = andConds;\r\n t[0].orConditions = orConds;\r\n } else {\r\n vm.tarifaList.push({\r\n tarifa: vm.tarifa,\r\n andConditions: andConds,\r\n orConditions: orConds\r\n });\r\n }\r\n\r\n var tc = vm.client.tarifasCliente.filter(obj => {\r\n return obj.tarifa.descripcion === vm.tarifa.descripcion;\r\n });\r\n\r\n if (tc[0]) {\r\n tc[0].tarifa = vm.tarifa;\r\n }\r\n else {\r\n vm.client.tarifasCliente.push({\r\n tarifa: vm.tarifa\r\n });\r\n }\r\n\r\n vm.resetTarifaForm();\r\n };\r\n\r\n\r\n vm.openTarifa = function (tar) {\r\n vm.resetTarifaForm();\r\n\r\n var t = vm.tarifaList.filter(obj => {\r\n return obj.tarifa.descripcion === tar.descripcion;\r\n });\r\n\r\n if (t[0]) {\r\n vm.tarifa = t[0].tarifa;\r\n vm.andConditions = t[0].andConditions.map(function (cond) {\r\n var field = vm.filterData[cond.field];\r\n var ops = clientService.operations[field.type];\r\n return {\r\n field: { nombre: field.nombre, id: cond.field },\r\n operation: { nombre: findOpById(ops, cond.operation).nombre, id: cond.operation },\r\n value: field.type === 'options' ? findOpById(field.options, cond.value) : cond.value,\r\n type: field.type\r\n };\r\n });\r\n vm.orConditions = t[0].orConditions.map(function (cond) {\r\n var field = vm.filterData[cond.field];\r\n var ops = clientService.operations[field.type];\r\n return {\r\n field: { nombre: field.nombre, id: cond.field },\r\n operation: { nombre: findOpById(ops, cond.operation).nombre, id: cond.operation },\r\n value: field.type === 'options' ? findOpById(field.options, cond.value) : cond.value,\r\n type: field.type\r\n };\r\n });\r\n }\r\n else {\r\n clientService.getTarifa(tar.tarifaId).then(function (tarifa) {\r\n vm.tarifa = tarifa.tarifa;\r\n\r\n vm.andConditions = tarifa.andConditions.map(function (cond) {\r\n var field = vm.filterData[cond.field];\r\n var ops = clientService.operations[field.type];\r\n return {\r\n field: { nombre: field.nombre, id: cond.field },\r\n operation: { nombre: findOpById(ops, cond.operation).nombre, id: cond.operation },\r\n value: field.type === 'options' ? findOpById(field.options, cond.value) : cond.value,\r\n type: field.type\r\n };\r\n });\r\n vm.orConditions = tarifa.orConditions.map(function (cond) {\r\n var field = vm.filterData[cond.field];\r\n var ops = clientService.operations[field.type];\r\n return {\r\n field: { nombre: field.nombre, id: cond.field },\r\n operation: { nombre: findOpById(ops, cond.operation).nombre, id: cond.operation },\r\n value: field.type === 'options' ? findOpById(field.options, cond.value) : cond.value,\r\n type: field.type\r\n };\r\n });\r\n\r\n });\r\n }\r\n\r\n vm.isTarifaForm = true;\r\n };\r\n\r\n function findOpById(operations, id) {\r\n var result = operations.filter(obj => {\r\n return obj.id === id;\r\n });\r\n return result[0] || null;\r\n }\r\n\r\n vm.desasignarTarifa = function (tar, index) {\r\n vm.client.tarifasCliente.splice(index, 1);\r\n }\r\n\r\n vm.resetTarifaForm = function () {\r\n vm.tarifa = {\r\n tarifaProductos: []\r\n };\r\n\r\n vm.andType = 'string';\r\n vm.andOperations = [];\r\n vm.andOptions = [];\r\n\r\n vm.orType = 'string';\r\n vm.orOperations = [];\r\n vm.orOptions = [];\r\n\r\n vm.newAndCondition = {};\r\n vm.newOrCondition = {};\r\n\r\n vm.andConditions = [];\r\n vm.orConditions = [];\r\n\r\n vm.productoAdd = {};\r\n vm.productList = [];\r\n };\r\n\r\n function tarifaModalCopy() {\r\n ModalService.showModal({\r\n template: copyTarifasTemplate,\r\n controller:\r\n function ($scope, close) {\r\n $scope.vm = vm;\r\n $scope.name = null;\r\n $scope.id = null;\r\n $scope.save = function () {\r\n $scope.cancel();\r\n };\r\n $scope.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n }\r\n });\r\n }\r\n\r\n function productModal() {\r\n ModalService.showModal({\r\n template: productsTemplate,\r\n controller:\r\n function ($scope, close) {\r\n $scope.vm = vm;\r\n $scope.name = null;\r\n $scope.id = null;\r\n $scope.save = function () {\r\n $scope.cancel();\r\n };\r\n $scope.cancel = function () {\r\n $rootScope.blurry = false;\r\n close();\r\n };\r\n }\r\n });\r\n }\r\n\r\n function onPaisChange() {\r\n var pais = vm.genericData.paises.selected && vm.genericData.paises.selected.id;\r\n getProvincias(pais);\r\n }\r\n function onProvChange() {\r\n var prov = vm.genericData.provinces.selected && vm.genericData.provinces.selected.id;\r\n getPoblaciones(prov);\r\n }\r\n\r\n /* PRIVATE FUNCTIONS */\r\n function getGenericData() {\r\n\r\n vm.genericData.paises.loading = true;\r\n genericDataService.getPaises(id)\r\n .then(function (res) {\r\n vm.genericData.paises.loading = false;\r\n vm.genericData.paises.list = res;\r\n selectChanged(vm.genericData.paises.list, vm.genericData.paises.selected, false);\r\n });\r\n\r\n vm.genericData.aseguradoras.loading = true;\r\n genericDataService.getAseguradoras()\r\n .then(function (res) {\r\n vm.genericData.aseguradoras.loading = false;\r\n vm.genericData.aseguradoras.list = res;\r\n selectChanged(vm.genericData.aseguradoras.list, vm.genericData.aseguradoras.selected, false);\r\n if (vm.edit == false || vm.client.aseguradoraId == null) {\r\n vm.genericData.aseguradoras.selected = vm.genericData.aseguradoras.list[0];\r\n }\r\n });\r\n\r\n vm.genericData.empresas.loading = true;\r\n genericDataService.getEmpresas()\r\n .then(function (res) {\r\n vm.genericData.empresas.loading = false;\r\n vm.genericData.empresas.list = res;\r\n selectChanged(vm.genericData.empresas.list, vm.genericData.empresas.selected, false);\r\n var modelEmpresas = findByProperty(vm.genericData.empresas.list, 'id', vm.client.empresaId);\r\n if (modelEmpresas) {\r\n vm.genericData.empresas.selected = modelEmpresas;\r\n }\r\n else {\r\n vm.genericData.empresas.selected = vm.genericData.empresas.list[0];\r\n }\r\n });\r\n\r\n vm.genericData.productos.loading = true;\r\n genericDataService.getProductos()\r\n .then(function (res) {\r\n vm.genericData.productos.loading = false;\r\n vm.genericData.productos.list = res;\r\n selectChanged(vm.genericData.productos.list, vm.genericData.productos.selected, false);\r\n });\r\n\r\n vm.genericData.contadorFac.loading = true;\r\n vm.genericData.contadorFac.selected = { id: null };\r\n genericDataService.getContadores(vm.client.empresaId)\r\n .then(function (res) {\r\n vm.genericData.contadorFac.loading = false;\r\n vm.genericData.contadorFac.list = res;\r\n selectChanged(vm.genericData.contadorFac.list, vm.genericData.contadorFac.selected, false);\r\n var contadorFac = findByProperty(vm.genericData.contadorFac.list, 'id', vm.client.contadorfacId);\r\n if (contadorFac) {\r\n vm.genericData.contadorFac.selected = contadorFac;\r\n }\r\n else {\r\n vm.genericData.contadorFac.selected = vm.genericData.contadorFac.list[0];\r\n }\r\n });\r\n\r\n\r\n\r\n vm.genericData.formatoFac.loading = true;\r\n genericDataService.getInformes()\r\n .then(function (res) {\r\n vm.genericData.formatoFac.loading = false;\r\n vm.genericData.formatoFac.list = res;\r\n selectChanged(vm.genericData.formatoFac.list, vm.genericData.formatoFac.selected, false);\r\n });\r\n\r\n vm.genericData.tiposPago.loading = true;\r\n genericDataService.getTiposPago()\r\n .then(function (res) {\r\n vm.genericData.tiposPago.loading = false;\r\n vm.genericData.tiposPago.list = res;\r\n selectChanged(vm.genericData.tiposPago.list, vm.genericData.tiposPago.selected, false);\r\n });\r\n }\r\n\r\n // Get the delivery provinces data -> DEPENDS ON: country\r\n function getProvincias(pais) {\r\n if (pais == null) {\r\n vm.genericData.provinces.list = null;\r\n if (vm.genericData.provinces.selected.id != null) {\r\n vm.genericData.provinces.selected = { id: null, nombre: null };\r\n }\r\n } else {\r\n vm.genericData.provinces.loading = true;\r\n genericDataService.getProvinces(id, pais)\r\n .then(function (res) {\r\n vm.genericData.provinces.loading = false;\r\n vm.genericData.provinces.list = res;\r\n selectChanged(vm.genericData.provinces.list,\r\n vm.genericData.provinces.selected, false);\r\n });\r\n }\r\n }\r\n\r\n // Get the delivery populations data -> DEPENDS ON: province\r\n function getPoblaciones(provincia) {\r\n if (provincia == null) {\r\n vm.genericData.poblaciones.list = null;\r\n if (vm.genericData.poblaciones.selected.id != null) {\r\n vm.genericData.poblaciones.selected = { id: null, nombre: null };\r\n }\r\n }\r\n else {\r\n vm.genericData.poblaciones.loading = true;\r\n genericDataService.getPopulations(id, provincia)\r\n .then(function (res) {\r\n vm.genericData.poblaciones.loading = false;\r\n vm.genericData.poblaciones.list = res;\r\n selectChanged(vm.genericData.poblaciones.list,\r\n vm.genericData.poblaciones.selected, false);\r\n });\r\n }\r\n }\r\n\r\n function onCompanyChange() {\r\n var c = vm.genericData.empresas.selected && vm.genericData.empresas.selected.id;\r\n getContadores(c);\r\n }\r\n\r\n function getContadores(company) {\r\n if (company == null) { vm.genericData.contadorFac.list = null; }\r\n else {\r\n vm.genericData.contadorFac.loading = true;\r\n vm.genericData.contadorFac.selected = { id: null };\r\n genericDataService.getContadores(company)\r\n .then(function (res) {\r\n vm.genericData.contadorFac.loading = false;\r\n vm.genericData.contadorFac.list = res;\r\n selectChanged(vm.genericData.contadorFac.list, vm.genericData.contadorFac.selected);\r\n var contadorFac = findByProperty(\r\n vm.genericData.contadorFac.list,\r\n 'id',\r\n vm.client.contadorfacId);\r\n if (contadorFac) {\r\n vm.genericData.contadorFac.selected = contadorFac;\r\n }\r\n else {\r\n vm.genericData.contadorFac.selected = vm.genericData.contadorFac.list[0];\r\n }\r\n });\r\n }\r\n }\r\n\r\n //Valor inicial selects y combos\r\n function setCombosInitialData() {\r\n vm.genericData.paises.selected = { nombre: vm.client.pais, id: null };\r\n selectChanged(vm.genericData.paises.list, vm.genericData.paises.selected, false);\r\n vm.genericData.provinces.selected = { nombre: vm.client.provincia, id: null };\r\n selectChanged(vm.genericData.provinces.list, vm.genericData.provinces.selected, false);\r\n vm.genericData.poblaciones.selected = { nombre: vm.client.poblacion, id: null };\r\n selectChanged(vm.genericData.poblaciones.list, vm.genericData.poblaciones.selected, false);\r\n\r\n vm.genericData.empresas.selected = { nombre: null, id: vm.client.empresaId };\r\n selectChanged(vm.genericData.empresas.list, vm.genericData.empresas.selected);\r\n\r\n vm.genericData.aseguradoras.selected = { nombre: null, id: vm.client.aseguradoraId };\r\n selectChanged(vm.genericData.aseguradoras.list, vm.genericData.aseguradoras.selected);\r\n\r\n vm.genericData.contadorFac.selected = { nombre: null, id: vm.client.contadorfacId };\r\n selectChanged(vm.genericData.contadorFac.list, vm.genericData.contadorFac.selected);\r\n\r\n vm.genericData.formatoFac.selected = { nombre: null, id: vm.client.formatofacturaId };\r\n selectChanged(vm.genericData.formatoFac.list, vm.genericData.formatoFac.selected);\r\n\r\n vm.genericData.tiposPago.selected = { nombre: null, id: vm.client.tipopagoId };\r\n selectChanged(vm.genericData.tiposPago.list, vm.genericData.tiposPago.selected);\r\n\r\n vm.genericData.tipoCliente.selected = { nombre: null, id: vm.client.tipoClienteId };\r\n selectChanged(vm.genericData.tipoCliente.list, vm.genericData.tipoCliente.selected);\r\n vm.genericData.visibilidad.selected = { nombre: null, id: vm.client.visibilidad };\r\n selectChanged(vm.genericData.visibilidad.list, vm.genericData.visibilidad.selected);\r\n vm.genericData.metodoFac.selected = { nombre: null, id: vm.client.metodofacturaId };\r\n selectChanged(vm.genericData.metodoFac.list, vm.genericData.metodoFac.selected);\r\n vm.genericData.impuestos.selected = { nombre: null, id: vm.client.impuestoaplId };\r\n selectChanged(vm.genericData.impuestos.list, vm.genericData.impuestos.selected);\r\n\r\n vm.genericData.tipoCobro.selected = { nombre: null, id: vm.client.clientepagaen };\r\n selectChanged(vm.genericData.tipoCobro.list, vm.genericData.tipoCobro.selected);\r\n }\r\n\r\n function setDates() {\r\n vm.dates.contrato = vm.client.fechacontrato && new Date(vm.client.fechacontrato);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n\r\n // Try to find the selected element in the list using the id property\r\n // If requireId is false it will keep the name even when id is null\r\n function selectChanged(list, selected, requireId) {\r\n requireId = (typeof requireId === 'undefined') ? true : requireId; //RequireId defaults to TRUE\r\n if (!list || !selected) { return; } //If the is no list or element exit\r\n if (list.length <= 0 || selected.id == null) { // Delete element unless it doesnt require id\r\n if (!requireId) { return; }\r\n selected.nombre = null;\r\n selected.id = null;\r\n return;\r\n }\r\n var find = findByProperty(list, 'id', selected.id);\r\n if (find) {\r\n selected.nombre = find.nombre;\r\n selected.id = find.id;\r\n } else {\r\n selected.nombre = null;\r\n selected.id = null;\r\n }\r\n }\r\n\r\n function findByProperty(array, property, id) {\r\n if (array === null) { return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n vm.toggleVisibility = function (className) {\r\n\r\n var elements = document.getElementsByClassName(className);\r\n\r\n for (var i = 0; i < elements.length; i++) {\r\n var obj = elements[i];\r\n\r\n if (obj.classList.contains('none')) {\r\n obj.classList.remove('none');\r\n } else {\r\n obj.classList.add('none');\r\n }\r\n }\r\n }\r\n\r\n vm.conditionsCount = function () {\r\n var conditionsCnt = vm.andConditions.length + vm.orConditions.length;\r\n return conditionsCnt;\r\n };\r\n\r\n vm.conditionsCountHumanized = function () {\r\n var conditionsCnt = vm.andConditions.length + vm.orConditions.length;\r\n\r\n if (conditionsCnt == 0) {\r\n return '';\r\n } else {\r\n if (conditionsCnt > 1) {\r\n return conditionsCnt + ' condiciones';\r\n } else {\r\n return '1 condición';\r\n }\r\n }\r\n };\r\n\r\n }\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ClientsListController', ClientsListController);\r\n\r\n\r\n ClientsListController.$inject = [\r\n '$templateCache',\r\n 'clientService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter', \r\n 'notificationService',\r\n '$timeout',\r\n 'genericDataService',\r\n 'userService',\r\n 'simpleModalService',\r\n 'common',\r\n 'uiGridConstants',\r\n 'restrictionService'\r\n ];\r\n \r\n function ClientsListController(\r\n $templateCache,\r\n clientService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n notificationService,\r\n $timeout,\r\n genericDataService,\r\n userService,\r\n simpleModalService,\r\n common,\r\n uiGridConstants,\r\n restrictionService\r\n ) {\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n\t\t\taccionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n\t\t\trowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n\t\t\tclienteCellTemplate: $templateCache.get('app/views/tablesTemplates/clients/clienteCellTemplate.html'),\r\n };\r\n\r\n var paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 25,\r\n sort: null\r\n };\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.appliedFilters = [];\r\n $scope.gridData = [];\r\n vm.gridData = []; \r\n\t\tvm.genericDataService = genericDataService;\r\n\t\tvm.listaClientesActivos = 0;\r\n\t\tvm.focusedRow = null;\r\n vm.loadingInformation = true;\r\n vm.rowCount = 0;\r\n\t\tvm.firstLoaded = false;\r\n\t\tvm.loaded = false; \r\n\t\tvm.dadosBaja = 'Mostrar dados de baja';\r\n\t\tvm.skip = 25;\r\n\t\tvm.take = 0;\r\n vm.frequencyFields = [\r\n 'nif',\r\n 'id',\r\n 'empresaNombre',\r\n 'nombre', \r\n 'direccion',\r\n 'poblacion',\r\n 'provincia',\r\n 'telefono'\r\n ];\r\n\r\n\t\tvm.allClientsResultList = [];\r\n\t\tvm.allClientsResultListWithFilters = [];\r\n\t\tvm.genericData = {\r\n\t\t\testadoClientes: {\r\n list: [\r\n { 'nombre': 'Activos', 'id': '0' }, \r\n\t\t\t\t\t{ 'nombre': 'Clientes dados de baja', 'id': '1' }, \r\n { 'nombre': 'Todos', 'id': '2' }\r\n ],\r\n selected:\r\n { 'nombre': 'Activos', 'id': '0' }\r\n },\r\n empresas: {\r\n list: [],\r\n loading: true,\r\n selected: null\r\n }\r\n };\r\n\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n \r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n\t\t\tuseExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n\t\t\tprimaryKey: 'clienteId',\r\n columnDefs: [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: 'Initials',\r\n\t\t\t\t\tdisplayName: '',\r\n\t\t\t\t\twidth: 60,\r\n\t\t\t\t\tresizable: true,\r\n\t\t\t\t\tenableHiding: false,\r\n\t\t\t\t\tcellTemplate: templates.clienteCellTemplate\r\n\t\t\t\t},\r\n\t\t\t\t/*{\r\n\t\t\t\t\tfield: 'estado',\r\n\t\t\t\t\tdisplayName: 'Estado',\r\n\t\t\t\t\tmaxWidth: 120,\r\n\t\t\t\t\tresizable: true,\r\n\t\t\t\t\tcellTemplate: \r\n\t\t\t\t\t\t'{{row.entity.estado == 0? \"Activo\" : \"Baja\"}}
'\r\n\t\t\t\t},*/\r\n {\r\n name: 'id',\r\n displayName: 'Id',\r\n width: 70,\r\n\t\t\t\t\tresizable: true,\r\n\t\t\t\t\tsort: { priority: 1, direction: 'desc' }\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'nombre',\r\n \t\tcellClass: 'strong',\r\n\t\t\t\t\tdisplayName: 'Nombre',\r\n\t\t\t\t\twidth: 230,\r\n\t\t\t\t\tresizable: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'nif',\r\n\t\t\t\t\tdisplayName: 'NIF',\r\n width: 100,\r\n\t\t\t\t\tresizable: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'direccion',\r\n\t\t\t\t\tdisplayName: 'Dirección',\r\n\t\t\t\t\tresizable: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'poblacion',\r\n\t\t\t\t\tdisplayName: 'Población',\r\n\t\t\t\t\tresizable: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'provincia',\r\n\t\t\t\t\tdisplayName: 'Provincia',\r\n\t\t\t\t\tresizable: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: 'telefono',\r\n\t\t\t\t\tdisplayName: 'Teléfono',\r\n width: 110,\r\n\t\t\t\t\tresizable: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t//field: 'empresaNombre',\r\n\t\t\t\t\tname: 'empresaNombre',\r\n\t\t\t\t\tdisplayName: 'Empresa',\r\n\t\t\t\t\tresizable: true\r\n\r\n\t\t\t\t},\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n\t\t\t\t\tcellTemplate: templates.accionesCellTemplate,\r\n\t\t\t\t\tenableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n\r\n vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {\r\n if (sortColumns.length > 0) {\r\n sorting.field = sortColumns[0].field;\r\n sorting.direction = sortColumns[0].sort.direction;\r\n } else {\r\n sorting = { field: null, direction: null };\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdoSkipTake();\r\n\t\t\t\t\tapplyPagination();\r\n });\r\n vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {\r\n paginationOptions.pageNumber = newPage;\r\n paginationOptions.pageSize = pageSize;\r\n\t\t\t\t\tdoSkipTake();\r\n\t\t\t\t\tapplyPagination();\r\n\r\n\r\n });\r\n }\r\n\t\t};\r\n\r\n\t\tvm.selectAll = selectAll;\r\n vm.clearAll = clearAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n\t\tvm.showHideFilterBar = showHideFilterBar;\r\n\t\tvm.goToEdit = goToEdit;\r\n\t\tvm.deleteAllItems = deleteAllItems;\r\n\t\tvm.changeGrid = changeGrid;\r\n\t\tvm.remove = remove;\r\n\t\tvm.onCompanyChange = onCompanyChange;\r\n\t\tvm.getBrandLogo = getBrandLogo;\r\n\t\tvm.focusRow = focusRow;\r\n\t\tvm.isFocused = isFocused;\r\n\t\tvm.deleteSearchData = deleteSearchData;\r\n\t\tvm.filterGrid = filterGrid;\r\n\t\tvm.refreshGrid = refreshGrid;\r\n\t\tvm.estadoBajaChange = estadoBajaChange;\r\n\t\tvm.refreshData = refreshData; \r\n\r\n vm.clearSearcher = clearSearcher;\r\n vm.searchText = '';\r\n vm.onSelectEmpresasClick = onSelectEmpresasClick;\r\n vm.selectEmpresasText = 'Todos';\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('clientes')];\r\n\r\n\t\t(function () {\r\n\r\n\t\t\tvar state = $rootScope.stateStorage[vm.tab.name];\r\n\t\t\tif (state && vm.tab.keepState) {\r\n\t\t\t\tvm.focusedRow = state.focusedRow || null;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvm.genericDataService.getEmpresas()\r\n\t\t\t\t.then(function (result) {\r\n\t\t\t\t\tvm.genericData.empresas.list = result;\r\n\t\t\t\t\tvm.genericData.empresas.list.unshift({ 'nombre': 'TODAS', 'id': '0' });\r\n\t\t\t\t\tvm.genericData.empresas.selected = { 'nombre': 'TODAS', 'id': '0' };\r\n\t\t\t\t});\r\n\t\t\tloadData();\r\n })();\r\n\r\n\t\t$scope.$on('detail-resize', function (event, args) {\r\n if (vm.tab.isActive()) {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n $timeout(function () { vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n\t\t});\r\n\r\n\t\tfunction onCompanyChange() {\r\n\t\t\t//applyFilters();\r\n\t\t\tapplyPagination();\r\n\t\t\tfilterGrid();\r\n\t\t}\r\n\r\n\t\tfunction refreshData() {\r\n\t\t\tloadData(); \r\n\t\t}\r\n\r\n\t\tfunction doSkipTake() {\r\n\t\t\tvm.skip = (paginationOptions.pageNumber - 1) * paginationOptions.pageSize;\r\n\t\t\tvm.take = paginationOptions.pageSize;\r\n\t\t}\r\n\r\n\r\n function loadData() {\r\n\t\t\tvm.loaded = false; \r\n clearAll(); \r\n\r\n getGenericData();\r\n\r\n vm.skip = (paginationOptions.pageNumber - 1) * paginationOptions.pageSize;\r\n vm.take = paginationOptions.pageSize;\r\n\r\n\t\t\tvm.loadingInformation = false;\r\n\t\t\tclientService.getList(vm.skip, vm.take, sorting, vm.appliedFilters, vm.listaClientesActivos, vm.searchText, vm.frequencyFields)\r\n\t\t\t\t.then(function (result) {\r\n vm.allClientsResultList = result.data.list;\r\n vm.rowsToShow = result.data.list; \r\n vm.gridData = vm.allClientsResultList;\r\n vm.gridOptions.totalItems = result.data.count;\r\n vm.rowCount = vm.gridOptions.totalItems;\r\n\t\t\t\t\tvm.firstLoaded = true;\r\n\t\t\t\t\t//applyFilters();\r\n\t\t\t\t\tapplyPagination();\r\n\t\t\t\t\tvm.loadingInformation = true;\r\n\t\t\t\t\tvm.loaded = true;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction applyFilters() {\r\n\t\t\t/*jshint maxcomplexity:false */\r\n\t\t\tvm.allClientsResultListWithFilters = [];\r\n\t\t\tvar i = 0;\r\n\t\t\tif (vm.genericData.empresas.selected.nombre !== 'TODAS') {\r\n\t\t\t\tfor (i = 0; i < vm.allClientsResultList.length; ++i) {\r\n\t\t\t\t\tif ((vm.genericData.empresas.selected.id === vm.allClientsResultList[i].empresaId) &&\r\n\t\t\t\t\t\t(vm.genericData.estadoClientes.selected.nombre === 'Todos')) {\r\n\t\t\t\t\t\tvm.allClientsResultListWithFilters.push(vm.allClientsResultList[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ((vm.genericData.empresas.selected.id === vm.allClientsResultList[i].empresaId) &&\r\n\t\t\t\t\t\t(vm.genericData.estadoClientes.selected.nombre === 'Activos') &&\r\n\t\t\t\t\t\t(0 === vm.allClientsResultList[i].estado)) {\r\n\t\t\t\t\t\tvm.allClientsResultListWithFilters.push(vm.allClientsResultList[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ((vm.genericData.empresas.selected.id === vm.allClientsResultList[i].empresaId) &&\r\n\t\t\t\t\t\t(vm.genericData.estadoClientes.selected.nombre === 'Clientes dados de baja') &&\r\n\t\t\t\t\t\t(1 === vm.allClientsResultList[i].estado)) {\r\n\t\t\t\t\t\tvm.allClientsResultListWithFilters.push(vm.allClientsResultList[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (i = 0; i < vm.allClientsResultList.length; ++i) {\r\n\t\t\t\t\tif ((vm.genericData.estadoClientes.selected.nombre === 'Clientes dados de baja') &&\r\n\t\t\t\t\t\t(1 === vm.allClientsResultList[i].estado)) {\r\n\t\t\t\t\t\tvm.allClientsResultListWithFilters.push(vm.allClientsResultList[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ((vm.genericData.estadoClientes.selected.nombre === 'Activos') &&\r\n\t\t\t\t\t\t(0 === vm.allClientsResultList[i].estado)) {\r\n\t\t\t\t\t\tvm.allClientsResultListWithFilters.push(vm.allClientsResultList[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (vm.genericData.estadoClientes.selected.nombre === 'Todos') {\r\n\t\t\t\t\t\tvm.allClientsResultListWithFilters.push(vm.allClientsResultList[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvm.gridOptions.totalItems = vm.allClientsResultListWithFilters.length;\r\n\t\t}\r\n\r\n function applyPagination() {\r\n\t\t\t//$scope.gridData = [];\r\n\t\t\t//vm.gridData = [];\r\n\t\t\t//for (var i = 0; i < vm.allClientsResultListWithFilters.length; ++i) {\r\n\t\t\t//\tif (i >= vm.skip && i < (vm.skip + vm.take)){\r\n\t\t\t//\t\t$scope.gridData.push(vm.allClientsResultList[i]);\r\n\t\t\t//\t\tvm.gridData.push(vm.allClientsResultList[i]);\r\n\t\t\t//\t}\r\n\t\t\t//}\r\n $scope.gridData = []; \r\n for (var i = 0; i < vm.gridData.length; ++i) {\r\n if (i >= vm.skip && i < (vm.skip + vm.take)) {\r\n $scope.gridData.push(vm.gridData[i]);\r\n }\r\n }\r\n\r\n //$scope.gridData = vm.gridData.slice(vm.skip, vm.skip + vm.take);\r\n\t\t}\r\n\r\n\t\t$scope.$on('fleetdata-refreshed', function (event, args) {\r\n\t\t\t////Save selected rows to mantain the selection after refreshing the data\r\n\t\t\t//var selected = vm.gridApi.selection.getSelectedRows();\r\n\t\t\t//filterGrid();\r\n\t\t\t//vm.clearAll();\r\n\t\t\t//var list = $scope.gridData;\r\n\t\t\t//if (list) {\r\n\t\t\t//\tfor (var i = 0; i < list.length; i++) {\r\n\t\t\t//\t\tvar found = $filter('filter')(selected, { 'clienteId': list[i].clienteId });\r\n\t\t\t//\t\tif (found[0]) {\r\n\t\t\t//\t\t\tvm.gridApi.grid.modifyRows($scope.gridData);\r\n\t\t\t//\t\t\tvm.gridApi.selection.selectRow($scope.gridData[i]);\r\n\t\t\t//\t\t}\r\n\t\t\t//\t}\r\n\t\t\t//}\r\n\t\t});\r\n\r\n function filterGrid() {\r\n if (vm.searchText !== '') {\r\n vm.gridData = $filter('searchFilter')(vm.allClientsResultList, {\r\n 'nif': vm.searchText,\r\n\t\t\t\t\t'id': vm.searchText,\r\n\t\t\t\t\t'nombre': vm.searchText,\r\n\t\t\t\t\t'direccion': vm.searchText,\r\n\t\t\t\t\t'poblacion': vm.searchText,\r\n\t\t\t\t\t'provincia': vm.searchText,\r\n\t\t\t\t\t'telefono': vm.searchText,\r\n }, true);\r\n }\r\n else {\r\n vm.gridData = vm.allClientsResultList;\r\n }\r\n\r\n if (!common.isNullOrUndefined(vm.genericData.empresas.selected) && vm.genericData.empresas.selected.id != 0) {\r\n //vm.gridData = $filter('searchFilter')(vm.gridData, {\r\n // 'empresaNombre': vm.genericData.empresas.selected.nombre\r\n\t\t\t\t//}, true);\r\n\t\t\t\tvm.gridData = vm.gridData.filter(data => data.empresaNombre.trim() == vm.genericData.empresas.selected.nombre.trim())\r\n }\r\n \r\n vm.gridOptions.totalItems = vm.gridData.length;\r\n vm.rowCount = vm.gridData.length;\r\n\r\n\r\n //applyFilters();\r\n applyPagination();\r\n\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n\t\t}\r\n\r\n\r\n\t\tfunction focusRow(client){\r\n\t\t\tvm.focusedRow = client.clienteId;\r\n\t\t}\r\n\r\n\t\tfunction isFocused(client){\r\n\t\t\treturn vm.focusedRow === client.clienteId;\r\n\t\t}\r\n\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n function showHideFilterBar() {\r\n vm.filtersSidebar = !vm.filtersSidebar;\r\n $rootScope.$broadcast('detail-resize');\r\n\t\t}\r\n\r\n\t\tfunction goToEdit(client) {\r\n vm.focusedRow = client.clienteId;\r\n restrictionService.hasPermission(2, 'cliente', 'flota.clientes.editar', { 'id': client.clienteId });\r\n\r\n\t\t\t//$state.go('flota.clientes.editar', { 'id': client.clienteId });\r\n\t\t}\r\n\r\n function remove(client) {\r\n if (!restrictionService.hasPermission(8, 'cliente')) return; \r\n\r\n\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\tmessage: 'Dando de baja cliente...',\r\n\t\t\t\tpositionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n\t\t\t});\r\n\t\t\tclientService.deleteById([client.clienteId]).then(function () {\r\n loadData();\r\n clearSearcher(); \r\n\t\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\t\tmessage: 'Cliente dado de baja con éxito',\r\n\t\t\t\t\tpositionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n\t\t\t\t});\r\n\t\t\t}, function () {\r\n\t\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\t\tmessage: 'Ha ocurrido un error al dar de baja el cliente',\r\n\t\t\t\t\tpositionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission(8, 'cliente')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los clientes seleccionados?') // ' + vm.gridApi.selection.vm.gridApi.selection.getSelectedRows() + '\r\n .then(function (result) {\r\n if (result) {\r\n\t var clientIds = [];\r\n\t var selected = vm.gridApi.selection.getSelectedRows();\r\n\t for (var i = 0; i < selected.length; i++) {\r\n\t\t clientIds.push(selected[i].clienteId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja clientes...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n\t clientService.deleteById(clientIds)\r\n .then(function () {\r\n refreshGrid(); \r\n clearSearcher(); \r\n\t\t\t notificationService.sendAppNotification({\r\n\t\t\t\t message: 'Clientes dados de baja con éxito',\r\n\t\t\t\t positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n\t\t\t });\r\n\t\t }, function () {\r\n\t\t\t notificationService.sendAppNotification({\r\n\t\t\t\t message: 'Ha ocurrido un error al dar de baja los clientes',\r\n\t\t\t\t positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n\t\t\t });\r\n\t\t });\r\n }\r\n });\r\n\t\t}\r\n\r\n\t\t$scope.$on('$destroy', function () { //Save state\r\n\t\t\t$rootScope.stateStorage[vm.tab.name] = {\r\n\t\t\t\tfocusedRow: vm.focusedRow\r\n\t\t\t};\r\n\t\t}); \r\n\r\n\t\tfunction changeGrid() {\r\n\t\t\t//applyFilters();\r\n\t\t\tapplyPagination();\r\n\t\t\tfilterGrid();\r\n\t\t}\r\n\r\n\t\tfunction getBrandLogo(tipo) {\r\n if(tipo === null){ return null; }\r\n return userService.userData.brands.insurance[tipo] || null;\r\n\t\t}\r\n\r\n\t\tfunction deleteSearchData() {\r\n\t\t\tvm.searchText = '';\r\n\t\t\tfilterGrid();\r\n\t\t}\r\n\r\n\t\tfunction refreshGrid() {\r\n\t\t\tvm.searchText = '';\r\n\t\t\tloadData();\r\n\t\t}\r\n\r\n\t\tfunction estadoBajaChange() {\r\n\t\t\tchangeGrid();\r\n\t\t}\r\n\r\n function getGenericData() {\r\n\r\n vm.genericData.empresas.loading = true;\r\n genericDataService.getEmpresas()\r\n .then(function (res) {\r\n vm.genericData.empresas.loading = false;\r\n vm.genericData.empresas.list = res;\r\n\r\n if (vm.genericData.empresas.selected.id == null && defaultVal.empresa) {\r\n vm.genericData.empresas.selected = vm.genericData.empresas.list[0];\r\n }\r\n });\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n function onSelectEmpresasClick(obj) {\r\n vm.genericData.empresas.selected = obj;\r\n\r\n if (obj !== null) {\r\n vm.selectEmpresasText = obj.nombre;\r\n } else {\r\n vm.selectEmpresasText = 'Todos';\r\n }\r\n\r\n filterGrid();\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ColectiveFormController', ColectiveFormController);\r\n \r\n\r\n ColectiveFormController.$inject = [\r\n \r\n ];\r\n\r\n function ColectiveFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ColectiveListController', ColectiveListController);\r\n \r\n\r\n ColectiveListController.$inject = [\r\n\t\t'$templateCache', 'colectivoService', '$scope', '$rootScope', '$state', '$filter'\r\n ];\r\n\r\n \r\n\r\n\tfunction ColectiveListController($templateCache, colectivoService, $scope, $rootScope, $state, $filter){\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n\t\t\taccionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n\t\t\trowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n columnDefs: [\r\n\r\n {\r\n name: 'id',\r\n displayName: 'ID',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n name: 'nombre',\r\n displayName: 'Nombre',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'direccion',\r\n displayName: 'Dirección',\r\n },\r\n\r\n {\r\n field: 'poblacion',\r\n displayName: 'Población',\r\n },\r\n\r\n {\r\n field: 'provincia',\r\n displayName: 'Provincia',\r\n },\r\n\r\n {\r\n field: 'cp',\r\n displayName: 'CP',\r\n },\r\n\r\n {\r\n field: 'pais',\r\n displayName: 'País',\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate\r\n }\r\n\r\n ],\r\n\t\t\tdata: 'gridData',\r\n\r\n\t\t\tonRegisterApi: function (gridApi) {\r\n\t\t\t\tvm.gridApi = gridApi;\r\n\t\t\t\tvm.gridApi.grid.options.enableExpandAll = false;\r\n\t\t\t}\r\n };\r\n\r\n vm.goToEdit = goToEdit;\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n\t\tfunction loadData() {\r\n\t\t\tcolectivoService.getList().then(function (result) {\r\n\t\t\t\t$scope.gridData = result.data.list;\r\n\t\t\t\tvm.gridData = result.data.list;\r\n\t\t\t});\r\n }\r\n \r\n function goToEdit(col) {\r\n\t\t\t$state.go('flota.colectivos.editar', { 'id': col.colectivoAseguradoraId });\r\n\t\t}\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('AlarmsAsignController', AlarmsAsignController);\r\n \r\n\r\n AlarmsAsignController.$inject = [\r\n \r\n ];\r\n\r\n function AlarmsAsignController(){\r\n // jshint maxstatements:false\r\n\r\n var row = { 'type' : 'Zona', \r\n //'type' : 'Zona', \r\n 'entity': 'Vehículo', \r\n 'asignedTo' : 'Plataformas',\r\n 'name' : 'Primera alarma',\r\n 'description' : 'Lorem ipsum dolor sit amet consecteur adipiscing elit', \r\n 'active' : 'Activada', \r\n 'actions' : 'editar | eliminar'\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n\r\n {\r\n field: 'type',\r\n displayName: 'Tipo',\r\n minWidth: 75,\r\n maxWidth: 100,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'entity',\r\n displayName: 'Entidad',\r\n minWidth: 75,\r\n maxWidth: 150,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'name',\r\n displayName: 'Nombre',\r\n minWidth: 75,\r\n maxWidth: 150,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'description',\r\n displayName: 'Descripción',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'asignedTo',\r\n displayName: 'Asignado a',\r\n minWidth: 75,\r\n maxWidth: 150,\r\n resizable: true\r\n },\r\n\r\n\r\n\r\n {\r\n field: 'active',\r\n displayName: 'Activada',\r\n minWidth: 75,\r\n maxWidth: 150,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 75,\r\n maxWidth: 150,\r\n resizable: true\r\n }\r\n\r\n ],\r\n\r\n data: vm.gridData,\r\n\r\n };\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData(){\r\n for(var i = 0; i < 15; i++){\r\n vm.gridData.push(row);\r\n }\r\n }\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('BaseFormController', BaseFormController);\r\n \r\n\r\n BaseFormController.$inject = [\r\n '$stateParams',\r\n 'baseFlotaService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'notificationService',\r\n '$scope',\r\n 'common'\r\n ];\r\n\r\n function BaseFormController($stateParams, baseFlotaService, genericDataService,\r\n $filter, $state, $rootScope, notificationService, $scope, common){\r\n\r\n var watchers;\r\n watchers = $scope.$$watchers;\r\n $scope.$$watchers = [];\r\n\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.procesoInicializacion = true;\r\n\r\n vm.base = {};\r\n vm.timesIgnore = 0; \r\n vm.edit = false;\r\n vm.genericData = {\r\n provinces: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n pais: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n poblaciones: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n calendarios: {\r\n list: null, \r\n selected: {id: null}\r\n },\r\n empresas: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n tipo: {\r\n list: [\r\n {\r\n id: 0,\r\n nombre: 'Fisica'\r\n },\r\n {\r\n id: 1,\r\n nombre: 'Virtual'\r\n }\r\n ],\r\n selected: {\r\n id: 0,\r\n nombre: 'Fisica'\r\n }\r\n }\r\n };\r\n\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.onPaisChange = onPaisChange;\r\n vm.onProvinciaChange = onProvinciaChange;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n vm.onAddressChange = onAddressChange; \r\n vm.clearDir = clearDir; \r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n \r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n\r\n //Edit\r\n if (id != null) {\r\n vm.edit = true;\r\n baseFlotaService.getById(id)\r\n .then(function (base) {\r\n vm.base = base;\r\n if (vm.base.tipo === 1) {\r\n vm.genericData.tipo.selected = vm.genericData.tipo.list[1];\r\n }\r\n getGenericData();\r\n });\r\n }\r\n //New\r\n else {\r\n getGenericData();\r\n }\r\n })();\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n function getGenericData() {\r\n genericDataService.getPaises()\r\n .then(function (res) {\r\n vm.genericData.pais.list = res;\r\n var modelPais = vm.genericData.pais.list.find(pais => {\r\n return pais.nombre === vm.base.pais\r\n })\r\n\r\n if (!common.isNullOrUndefined(modelPais)) {\r\n vm.genericData.pais.selected = modelPais;\r\n }\r\n else {\r\n vm.genericData.pais.selected = vm.genericData.pais.list[0];\r\n }\r\n selectChanged(vm.genericData.pais.list, vm.genericData.pais.selected, false);\r\n genericDataService.getProvinces(null, vm.genericData.pais.selected.id)\r\n .then(function (res) {\r\n vm.genericData.provinces.list = res;\r\n var modelProvincia = vm.genericData.provinces.list.find(provincia => {\r\n return provincia.nombre === vm.base.provincia\r\n })\r\n\r\n if (!common.isNullOrUndefined(modelProvincia)) {\r\n vm.genericData.provinces.selected = modelProvincia;\r\n }\r\n else {\r\n vm.genericData.provinces.selected = vm.genericData.provinces.list[0];\r\n }\r\n selectChanged(vm.genericData.provinces.list, vm.genericData.provinces.selected, false);\r\n genericDataService.getPopulations(null, vm.genericData.provinces.selected.id)\r\n .then(function (res) {\r\n vm.genericData.poblaciones.list = res;\r\n var modelPoblacion = findByProperty(vm.genericData.poblaciones.list, 'nombre', vm.base.poblacion);\r\n if (modelPoblacion) {\r\n vm.genericData.poblaciones.selected = modelPoblacion;\r\n }\r\n else {\r\n vm.genericData.poblaciones.selected = vm.genericData.poblaciones.list[0];\r\n }\r\n selectChanged(vm.genericData.poblaciones.list, vm.genericData.poblaciones.selected, false);\r\n setTimeout(function () { vm.procesoInicializacion = false; }, 3000);\r\n });\r\n });\r\n });\r\n\r\n genericDataService.getCalendarios()\r\n .then(function (res) {\r\n vm.genericData.calendarios.list = res;\r\n var calendario = findByProperty(vm.genericData.calendarios.list,\r\n 'id', vm.base.calendarioId);\r\n if (calendario) {\r\n vm.genericData.calendarios.selected = calendario;\r\n }\r\n else {\r\n vm.genericData.calendarios.selected = vm.genericData.calendarios.list[0];\r\n }\r\n });\r\n\r\n genericDataService.getEmpresas()\r\n .then(function (res) {\r\n vm.genericData.empresas.list = res;\r\n var modelEmpresas = findByProperty(vm.genericData.empresas.list, 'id', vm.driver.empresaId);\r\n if (modelEmpresas) {\r\n vm.genericData.empresas.selected = modelEmpresas;\r\n }\r\n else {\r\n vm.genericData.empresas.selected = vm.genericData.empresas.list[0];\r\n }\r\n });\r\n }\r\n\r\n function clearDir() {\r\n vm.base.direccion = null;\r\n vm.genericData.pais.selected = vm.genericData.pais[0];\r\n vm.genericData.provinces.selected = vm.genericData.provinces[0];\r\n vm.genericData.poblaciones.selected = vm.genericData.poblaciones[0];;\r\n vm.base.cp = null;\r\n vm.base.longitud = null;\r\n vm.base.latitud = null;\r\n }\r\n\r\n function doSave(action) {\r\n if (vm.edit && (vm.base.id === null || vm.base.id === '' || vm.base.id === undefined)) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n vm.base.pais = vm.genericData.pais.selected.nombre;\r\n vm.base.provincia = vm.genericData.provinces.selected.nombre;\r\n vm.base.poblacion = vm.genericData.poblaciones.selected.nombre;\r\n vm.base.calendarioId = vm.genericData.calendarios.selected.id;\r\n vm.base.tipo = vm.genericData.tipo.selected.id; \r\n vm.base.empresaId = vm.genericData.empresas.selected.id;\r\n\r\n baseFlotaService.add(vm.base).then(function (baseSave) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoBases');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevo', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.base.id = baseSave.id;\r\n vm.base.operarioId = baseSave.operarioId;\r\n }\r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El operario se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'El campo Id es obligatorio',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n function selectChanged(list, selected, requireId) {\r\n requireId = (typeof requireId === 'undefined') ? true : requireId; //RequireId defaults to TRUE\r\n if (!list || !selected) { return; } //If the is no list or element exit\r\n if (list.length <= 0 || selected.id == null) { // Delete element unless it doesnt require id\r\n if (!requireId) { return; }\r\n selected.nombre = null;\r\n selected.id = null;\r\n return;\r\n }\r\n var find = findByProperty(list, 'id', selected.id);\r\n if (find) {\r\n selected.nombre = find.nombre;\r\n selected.id = find.id;\r\n } else {\r\n selected.nombre = null;\r\n selected.id = null;\r\n }\r\n }\r\n\r\n function findByProperty(array, property, id) {\r\n if (array === null) { return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function onPaisChange() {\r\n if (!vm.procesoInicializacion) {\r\n var p = vm.genericData.pais.selected && vm.genericData.pais.selected.id;\r\n getProvincias(p);\r\n }\r\n }\r\n\r\n function getProvincias(pais) {\r\n if (pais == null) {\r\n vm.genericData.provinces.list = null;\r\n }\r\n else {\r\n genericDataService.getProvinces(null, pais)\r\n .then(function (res) {\r\n vm.genericData.provinces.list = res;\r\n selectChanged(vm.genericData.provinces.list, vm.genericData.provinces.selected);\r\n\r\n if (vm.genericData.provinces.id == null) {\r\n vm.genericData.provinces.selected = vm.genericData.provinces.list[0];\r\n }\r\n });\r\n }\r\n }\r\n\r\n function onProvinciaChange() {\r\n if (!vm.procesoInicializacion) {\r\n var p = vm.genericData.provinces.selected && vm.genericData.provinces.selected.id;\r\n getPoblaciones(p);\r\n }\r\n }\r\n\r\n function getPoblaciones(poblacion) {\r\n if (poblacion == null) { vm.genericData.poblaciones.list = null; }\r\n else {\r\n genericDataService.getPopulations(null, poblacion)\r\n .then(function (res) {\r\n vm.genericData.poblaciones.list = res;\r\n selectChanged(vm.genericData.poblaciones.list, vm.genericData.poblaciones.selected);\r\n\r\n if (vm.genericData.poblaciones.id == null) {\r\n vm.genericData.poblaciones.selected = vm.genericData.poblaciones.list[0];\r\n }\r\n });\r\n }\r\n }\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n function onAddressChange(address) {\r\n vm.base.cp = address.cp;\r\n var watchers = $scope.$$watchers;\r\n $scope.$$watchers = [];\r\n\r\n if (!common.isNullOrUndefined(address.country)) {\r\n vm.genericData.pais.selected.nombre = address.country.toUpperCase();\r\n }\r\n\r\n if (!common.isNullOrUndefined(address.state)) {\r\n vm.genericData.provinces.selected.nombre = address.state.toUpperCase();\r\n }\r\n\r\n if (!common.isNullOrUndefined(address.city)) {\r\n vm.genericData.poblaciones.selected.nombre = address.city.toUpperCase();\r\n }\r\n\r\n $scope.$$watchers = watchers;\r\n\r\n }\r\n\r\n \r\n\r\n\r\n\r\n\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('BaseListController', BaseListController);\r\n \r\n\r\n BaseListController.$inject = [\r\n '$templateCache',\r\n 'baseFlotaService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n 'notificationService',\r\n '$timeout',\r\n 'genericDataService',\r\n 'userService',\r\n 'simpleModalService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n ];\r\n\r\n \r\n\r\n function BaseListController($templateCache,\r\n baseFlotaService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n notificationService,\r\n $timeout,\r\n genericDataService,\r\n userService,\r\n simpleModalService,\r\n common,\r\n uiGridConstants,\r\n restrictionService) {\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n };\r\n\r\n\r\n var paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 25,\r\n sort: null\r\n };\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.appliedFilters = [];\r\n $scope.gridData = [];\r\n vm.genericDataService = genericDataService;\r\n vm.focusedRow = null;\r\n vm.loadingInformation = true;\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'baseId',\r\n columnDefs: [\r\n\r\n {\r\n field: 'id',\r\n displayName: 'Id',\r\n width: 70,\r\n resizable: true,\r\n sort: { priority: 1, direction: 'desc' }\r\n\r\n }, \r\n\r\n {\r\n name: 'nombre',\r\n displayName: 'Nombre',\r\n width: 230,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'direccion',\r\n displayName: 'Dirección',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'poblacion',\r\n displayName: 'Población',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'provincia',\r\n displayName: 'Provincia',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'telefono',\r\n displayName: 'Teléfono',\r\n minWidth: 110,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n\t\t\t],\r\n\t\t\tdata: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n\t\t};\r\n\r\n vm.selectAll = selectAll;\r\n vm.clearAll = clearAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.goToEdit = goToEdit;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.remove = remove;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n vm.deleteSearchData = deleteSearchData;\r\n vm.filterGrid = filterGrid;\r\n\r\n vm.clearSearcher = clearSearcher;\r\n vm.searchText = '';\r\n\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('bases')];\r\n\r\n (function () {\r\n // var state = $rootScope.stateStorage[vm.tab.name];\r\n // if (state && vm.tab.keepState) {\r\n // vm.focusedRow = state.focusedRow || null;\r\n // }\r\n\t\t\tloadData();\r\n\t\t})();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n // if (vm.tab.isActive()) {\r\n // if (!common.isNullOrUndefined(vm.gridApi))\r\n // $timeout(function () { vm.gridApi.core.handleWindowResize(); }, 0);\r\n // }\r\n });\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n\t\tfunction loadData() {\r\n clearAll();\r\n vm.searchText = ''; \r\n vm.loadingInformation = false;\r\n baseFlotaService.getList()\r\n .then(function (result) {\r\n //vm.gridOptions.totalItems = result.data.length;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.length;\r\n $scope.gridData = result.data;\r\n vm.gridData = result.data;\r\n });\r\n\r\n }\r\n\r\n\r\n function focusRow(base) {\r\n vm.focusedRow = base.baseId;\r\n }\r\n\r\n function isFocused(base) {\r\n return vm.focusedRow === base.baseId;\r\n }\r\n\r\n function goToEdit(base) {\r\n restrictionService.hasPermission('modificar', 'base', 'flota.configuracion.editarBase', { 'id': base.baseId });\r\n\r\n\t\t\t//$state.go('flota.configuracion.editarBase', { 'id': base.baseId });\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function filterGrid() {\r\n if (vm.searchText !== '') {\r\n $scope.gridData = $filter('searchFilter')(vm.gridData, {\r\n 'nombre': vm.searchText,\r\n 'id': vm.searchText,\r\n 'telefono': vm.searchText,\r\n }, true);\r\n }\r\n else {\r\n $scope.gridData = vm.gridData;\r\n }\r\n\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.rowCount = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n function deleteSearchData() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n\r\n function remove(base) {\r\n if (!restrictionService.hasPermission('eliminar', 'base')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja base...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n baseFlotaService.deleteById([base.baseId]).then(function () {\r\n loadData();\r\n notificationService.sendAppNotification({\r\n message: 'Base dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja la base',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'base')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar las bases seleccionadas?')\r\n .then(function (result) {\r\n if (result) {\r\n var basesIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n basesIds.push(selected[i].baseId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja bases...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n baseFlotaService.deleteById(basesIds)\r\n .then(function () {\r\n loadData(); \r\n notificationService.sendAppNotification({\r\n message: 'Bases dadas de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja las bases',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('BrandFormController', BrandFormController);\r\n \r\n\r\n BrandFormController.$inject = [\r\n \r\n ];\r\n\r\n function BrandFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('BrandListController', BrandListController);\r\n \r\n\r\n BrandListController.$inject = [\r\n \r\n ];\r\n\r\n function BrandListController(){\r\n // jshint maxstatements:false\r\n\r\n var row = { 'id' : '001', \r\n 'name' : 'Alfa Romeo', \r\n 'actions' : 'editar | eliminar'\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n\r\n {\r\n field: 'id',\r\n displayName: 'ID',\r\n minWidth: 80,\r\n maxWidth: 80,\r\n resizable: true\r\n },\r\n\r\n {\r\n name: 'name',\r\n displayName: 'Nombre',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n }\r\n\r\n ],\r\n data: vm.gridData,\r\n };\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData(){\r\n for(var i = 0; i < 15; i++){\r\n vm.gridData.push(row);\r\n }\r\n }\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ColorFormController', ColorFormController);\r\n \r\n\r\n ColorFormController.$inject = [\r\n '$stateParams',\r\n 'colorService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'notificationService',\r\n '$scope',\r\n 'errorManagerService'\r\n ];\r\n\r\n function ColorFormController($stateParams, colorService, genericDataService,\r\n $filter, $state, $rootScope, notificationService, $scope, errorManagerService){\r\n /* PRIVATE VARIABLES */\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.color = {};\r\n vm.edit = false;\r\n\r\n vm.textInput = '';\r\n vm.procesoInicializacion = true;\r\n\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n //Edit\r\n errorManagerService.initialize(); \r\n if (id != null) {\r\n vm.edit = true;\r\n colorService.getById(id)\r\n .then(function (color) {\r\n vm.color = color;\r\n });\r\n }\r\n })();\r\n\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n\r\n /* PRIVATE FUNCTIONS */\r\n \r\n\r\n function doSave(action) {\r\n //if (vm.edit && (vm.color.id === null || vm.color.id === '' || vm.color.id === undefined)) {\r\n // sendErrorRequire();\r\n // return;\r\n //}\r\n\r\n if (!errorManagerService.isValid()) {\r\n \r\n sendErrorRequire();\r\n return;\r\n }\r\n\r\n\r\n colorService.add(vm.color).then(function (colorSave) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoColores');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoColor', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.color.id = colorSave.id;\r\n vm.color.colorId = colorSave.colorId;\r\n }\r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El color se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n //function sendErrorRequire() {\r\n // notificationService.sendAppNotification({\r\n // message: 'El campo Id es obligatorio',\r\n // positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n // });\r\n //}\r\n\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'Algunos campos contienen errores',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n\r\n }\r\n \r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ColorsListController', ColorsListController);\r\n \r\n\r\n ColorsListController.$inject = [\r\n '$templateCache',\r\n 'colorService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n ];\r\n\r\n function ColorsListController(\r\n $templateCache,\r\n colorService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants, \r\n restrictionService\r\n ) {\r\n \r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/vehicles/stateTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.focusedRow = null;\r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n vm.allcoloresResultList = [];\r\n \r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'id',\r\n columnDefs: [\r\n {\r\n field: 'descripcion',\r\n cellClass: 'strong',\r\n displayName: 'Nombre',\r\n resizable: true,\r\n //minWidth: 100,\r\n //maxWidth: 120\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: false,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n vm.configRedis = configRedis;\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('colores')];\r\n\r\n\r\n (function () {\r\n //var state = $rootScope.stateStorage[vm.tab.name];\r\n //if (state && vm.tab.keepState) {\r\n // vm.focusedRow = state.focusedRow || null;\r\n //}\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (!common.isNullOrUndefined(vm.tab) && vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n function loadData() {\r\n\r\n clearAll();\r\n\r\n\r\n colorService.getList(sorting).then(function (result) {\r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.allcoloresResultList = result.data.list;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n\r\n $scope.gridData = result.data.list;\r\n vm.gridData = result.data.list;\r\n });\r\n }\r\n \r\n function configRedis() {\r\n colorService.configRedis().then(function(){\r\n \r\n notificationService.sendAppNotification({\r\n message: 'Redis Hecho',\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: null,\r\n type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function focusRow(color) {\r\n vm.focusedRow = color.colorId;\r\n }\r\n\r\n function isFocused(color) {\r\n return vm.focusedRow === color.colorId;\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(color) {\r\n vm.focusedRow = color.colorId;\r\n restrictionService.hasPermission('modificar', 'color','flota.configuracion.editarColor', { 'id': color.colorId });\r\n //$state.go('flota.configuracion.editarColor', { 'id': color.colorId });\r\n }\r\n\r\n function remove(color) {\r\n if (!restrictionService.hasPermission('eliminar', 'color')) return; \r\n \r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja color...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n colorService.deleteById([color.colorId]).then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'Color dado de baja con �xito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el color',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n \r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'color')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmaci�n eliminar', '�Desea eliminar los colores seleccionados?') // ' + vm.gridApi.selection.vm.gridApi.selection.getSelectedRows() + '\r\n .then(function (result) {\r\n if (result) {\r\n var colorIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n colorIds.push(selected[i].colorId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja colores...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n colorService.deleteById(colorIds)\r\n .then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'Colores dados de baja con �xito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los colores',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n //$scope.$on('$destroy', function () { //Save state\r\n // $rootScope.stateStorage[vm.tab.name] = {\r\n // focusedRow: vm.focusedRow\r\n // };\r\n //});\r\n\r\n\r\n \r\n\r\n\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('CounterFormController', CounterFormController);\r\n \r\n\r\n CounterFormController.$inject = [\r\n \r\n ];\r\n\r\n function CounterFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('CounterListController', CounterListController);\r\n \r\n\r\n CounterListController.$inject = [\r\n \r\n ];\r\n\r\n function CounterListController(){\r\n // jshint maxstatements:false\r\n\r\n var row = { 'type' : 'Notas gasto', \r\n 'name' : 'Notas de gasto', \r\n 'set' : '3017/', \r\n 'counter': '24', \r\n 'actions' : 'editar | eliminar'\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n\r\n {\r\n field: 'type',\r\n displayName: 'Tipo',\r\n minWidth: 100,\r\n maxWidth: 100,\r\n resizable: true\r\n },\r\n\r\n {\r\n name: 'name',\r\n displayName: 'Nombre',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'set',\r\n displayName: 'Serie',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'counter',\r\n displayName: 'Contador',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n }\r\n\r\n ],\r\n data: vm.gridData,\r\n };\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData(){\r\n for(var i = 0; i < 15; i++){\r\n vm.gridData.push(row);\r\n }\r\n }\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('DamageFormController', DamageFormController);\r\n\r\n\r\n DamageFormController.$inject = [\r\n '$stateParams',\r\n 'averiaService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'common',\r\n 'notificationService',\r\n '$scope'\r\n ];\r\n\r\n function DamageFormController($stateParams, averiaService, genericDataService,\r\n $filter, $state, $rootScope, common, notificationService, $scope) {\r\n /* PRIVATE VARIABLES */\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.tipoIncidenciaOriginal = []; \r\n vm.averia = {};\r\n vm.edit = false;\r\n vm.genericData = {\r\n tiposIncidencias: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n aseguradoras: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n };\r\n\r\n vm.onAseguradoraChange = onAseguradoraChange;\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n vm.firstOnChange = true; \r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('saveAndClose')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n //Edit\r\n if (id != null) {\r\n vm.edit = true;\r\n averiaService.getById(id)\r\n .then(function (averia) {\r\n vm.averia = averia;\r\n getGenericData();\r\n });\r\n }\r\n else {\r\n getGenericData(); \r\n }\r\n })();\r\n\r\n\r\n\r\n function getGenericData() {\r\n genericDataService.getAseguradoras()\r\n .then(function (res) {\r\n \r\n vm.genericData.aseguradoras.list = res;\r\n var found = false;\r\n if (!common.isNullOrUndefined(vm.averia.aseguradoraId)) {\r\n var model = findByProperty(vm.genericData.aseguradoras.list, 'id', vm.averia.aseguradoraId);\r\n if (model) {\r\n vm.genericData.aseguradoras.selected = model; \r\n found = true; \r\n }\r\n }\r\n if (!found) vm.genericData.aseguradoras.selected = vm.genericData.aseguradoras.list[0];\r\n genericDataService.getTiposIncidencias()\r\n .then(function (res) {\r\n vm.tipoIncidenciaOriginal = res;\r\n vm.genericData.tiposIncidencias.list = vm.tipoIncidenciaOriginal.filter(incidencia => incidencia.aseguradoraId == vm.genericData.aseguradoras.selected.id);\r\n var found2 = false;\r\n if (!common.isNullOrUndefined(vm.averia.tipoIncidenciaId)) {\r\n var tipo = findByProperty(vm.genericData.tiposIncidencias.list, 'tipoIncidenciaId', vm.averia.tipoIncidenciaId);\r\n if (tipo) {\r\n vm.genericData.tiposIncidencias.selected = tipo;\r\n found2 = true; \r\n }\r\n }\r\n if (!found2) {\r\n vm.genericData.tiposIncidencias.selected = vm.genericData.tiposIncidencias.list[0];\r\n }\r\n\r\n });\r\n\r\n });\r\n \r\n }\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n\r\n /* PRIVATE FUNCTIONS */\r\n\r\n\r\n function doSave(action) {\r\n if (vm.edit && (vm.averia.id === null || vm.averia.id === '' || vm.averia.id === undefined)) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n vm.averia.aseguradoraId = vm.genericData.aseguradoras.selected.id;\r\n vm.averia.tipoIncidenciaId = vm.genericData.tiposIncidencias.selected.tipoIncidenciaId; \r\n\r\n averiaService.add(vm.averia).then(function (averiaSave) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoAverias');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevaAveria', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.averia.id = averiaSave.id;\r\n vm.averia.averiaId = averiaSave.averiaId;\r\n }\r\n });\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'La aver�a se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'La averia se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'El campo Id es obligatorio',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n function onAseguradoraChange() {\r\n //console.log(vm.genericData.aseguradoras.selected.id);\r\n //console.log(vm.tipoIncidenciaOriginal);\r\n if (!vm.firstOnChange) {\r\n vm.genericData.tiposIncidencias.list = vm.tipoIncidenciaOriginal.filter(incidencia => incidencia.aseguradoraId == vm.genericData.aseguradoras.selected.id);\r\n //console.log(vm.genericData.tiposIncidencias.list);\r\n vm.genericData.tiposIncidencias.selected = vm.genericData.tiposIncidencias.list[0];\r\n //console.log(vm.genericData.tiposIncidencias.selected);\r\n }\r\n if (vm.firstOnChange) vm.firstOnChange = false; \r\n \r\n //$rootScope.$apply();\r\n }\r\n\r\n function findByProperty(array, property, id) {\r\n if (array === null) { return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n \r\n\r\n \r\n \r\n }\r\n\r\n\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('DamageListController', DamageListController);\r\n\r\n\r\n DamageListController.$inject = [\r\n '$templateCache',\r\n 'averiaService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n ];\r\n\r\n function DamageListController(\r\n $templateCache,\r\n averiaService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants, \r\n restrictionService\r\n ) {\r\n\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/vehicles/stateTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.focusedRow = null;\r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n vm.allaveriasResultList = [];\r\n\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'id',\r\n columnDefs: [\r\n {\r\n field: 'id',\r\n displayName: 'Id',\r\n resizable: true,\r\n width: 80,\r\n sort: { priority: 1, direction: 'desc' }\r\n },\r\n {\r\n field: 'descripcion',\r\n cellClass: 'strong',\r\n displayName: 'Descripcion',\r\n resizable: true,\r\n \r\n }, {\r\n field: 'tipoIncidencia.descripcion',\r\n cellClass: 'strong',\r\n displayName: 'Tipo Incidencia',\r\n resizable: true,\r\n \r\n }, {\r\n field: 'aseguradora.nombre',\r\n cellClass: 'strong',\r\n displayName: 'Aseguradora',\r\n resizable: true,\r\n \r\n },\r\n {\r\n field: 'canSendCompany',\r\n cellClass: 'strong',\r\n displayName: '¿Puede enviar compañia?',\r\n cellTemplate: '{{COL_FIELD == true ? \"Sí\" : \"No\"}}
',\r\n resizable: true,\r\n\r\n },\r\n {\r\n field: 'canSendSupplier',\r\n cellClass: 'strong',\r\n displayName: '¿Puede enviar proveedor?',\r\n cellTemplate: '{{COL_FIELD == true ? \"Sí\" : \"No\"}}
',\r\n resizable: true,\r\n\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: false,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('averias')];\r\n\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (!common.isNullOrUndefined(vm.tab) && vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n function loadData() {\r\n\r\n clearAll();\r\n\r\n\r\n averiaService.getList(sorting).then(function (result) {\r\n // console.log(result.data.list);\r\n // for(var i = 0; i < result.data.list.length; i++) {\r\n // if (result.data.list[i].canSendCompany == true) result.data.list[i].canSendCompany = 'Sí';\r\n // else result.data.list[i].canSendCompany = 'No';\r\n // if (result.data.list[i].canSendSupplier == true) result.data.list[i].canSendSupplier = 'Sí';\r\n // else result.data.list[i].canSendSupplier = 'Sí';\r\n // }\r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.allaveriasResultList = result.data.list;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n\r\n $scope.gridData = result.data.list;\r\n vm.gridData = result.data.list;\r\n });\r\n }\r\n\r\n\r\n function focusRow(averia) {\r\n vm.focusedRow = averia.averiaId;\r\n }\r\n\r\n function isFocused(averia) {\r\n return vm.focusedRow === averia.averiaId;\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(averia) {\r\n vm.focusedRow = averia.averiaId;\r\n restrictionService.hasPermission('modificar', 'averia', 'flota.configuracion.editarAveria', { 'id': averia.averiaId });\r\n\r\n //$state.go('flota.configuracion.editarAveria', { 'id': averia.averiaId });\r\n }\r\n\r\n function remove(averia) {\r\n if (!restrictionService.hasPermission('eliminar', 'averia')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja averia...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n averiaService.deleteById([averia.averiaId]).then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'averia dado de baja con �xito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja la averia',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'averia')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmaci�n eliminar', '�Desea eliminar los averias seleccionados?') // ' + vm.gridApi.selection.vm.gridApi.selection.getSelectedRows() + '\r\n .then(function (result) {\r\n if (result) {\r\n var averiaIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n averiaIds.push(selected[i].averiaId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja averias...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n averiaService.deleteById(averiaIds)\r\n .then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'averias dados de baja con �xito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los averias',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('GeneralConfigController', GeneralConfigController);\r\n \r\n\r\n GeneralConfigController.$inject = [\r\n \r\n ];\r\n\r\n function GeneralConfigController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n\r\n vm.selected = { id: 0, nombre: ''};\r\n vm.data = [];\r\n vm.keepRecData = true; \r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('GroupsFormController', GroupsFormController);\r\n \r\n\r\n GroupsFormController.$inject = [\r\n '$stateParams',\r\n 'grupoService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'notificationService',\r\n '$scope'\r\n ];\r\n\r\n function GroupsFormController($stateParams, grupoService, genericDataService,\r\n $filter, $state, $rootScope, notificationService, $scope){\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.grupo = {};\r\n vm.edit = false;\r\n vm.genericData = {\r\n empresas: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n };\r\n\r\n vm.textInput = '';\r\n vm.procesoInicializacion = true;\r\n\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n //Edit\r\n if (id != null) {\r\n vm.edit = true;\r\n grupoService.getById(id)\r\n .then(function (grupo) {\r\n\r\n vm.grupo = grupo;\r\n getGenericData();\r\n });\r\n }\r\n //New\r\n else {\r\n getGenericData();\r\n }\r\n })();\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n\r\n\r\n /* PRIVATE FUNCTIONS */\r\n function getGenericData() {\r\n genericDataService.getEmpresas()\r\n .then(function (res) {\r\n\r\n vm.genericData.empresas.list = res;\r\n var modelEmpresa = findByProperty(vm.genericData.empresas.list, 'id', vm.grupo.empresaId);\r\n if (modelEmpresa) {\r\n vm.genericData.empresas.selected = modelEmpresa;\r\n }\r\n else {\r\n vm.genericData.empresas.selected = vm.genericData.empresas.list[0];\r\n }\r\n \r\n });\r\n\r\n }\r\n\r\n function doSave(action) {\r\n if (vm.edit && (vm.grupo.id === null || vm.grupo.id === '' || vm.grupo.id === undefined)) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n vm.grupo.empresaId = vm.genericData.empresas.selected.id;\r\n\r\n grupoService.add(vm.grupo).then(function (grupoSave) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoGrupos');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoGrupo', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.grupo.id = grupoSave.id;\r\n vm.grupo.tallerId = grupoSave.tallerId;\r\n }\r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El grupo se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'El campo Id es obligatorio',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n // Try to find the selected element in the list using the id property\r\n // If requireId is false it will keep the name even when id is null\r\n\r\n function findByProperty(array, property, id) {\r\n if (array === null) { return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('GroupsListController', GroupsListController);\r\n \r\n\r\n GroupsListController.$inject = [\r\n '$templateCache',\r\n 'grupoService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n \r\n ];\r\n\r\n function GroupsListController(\r\n $templateCache,\r\n grupoService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants,\r\n restrictionService) {\r\n\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/vehicles/stateTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n\r\n vm.focusedRow = null;\r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'id',\r\n columnDefs: [\r\n \r\n {\r\n field: 'descripcion',\r\n displayName: 'Descripción',\r\n resizable: true,\r\n minWidth: 110,\r\n maxWidth: 150,\r\n },\r\n {\r\n name: 'tipoGrupo',\r\n displayName: 'Tipo de Grupo',\r\n resizable: true\r\n },\r\n {\r\n name: 'empresa.nombre',\r\n displayName: 'Empresa',\r\n resizable: true\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: false,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('grupos')];\r\n\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (!common.isNullOrUndefined(vm.tab) && vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n function loadData() {\r\n\r\n clearAll();\r\n\r\n grupoService.getList(sorting).then(function (result) {\r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n\r\n $scope.gridData = result.data.list;\r\n vm.gridData = result.data.list;\r\n });\r\n }\r\n\r\n\r\n function focusRow(grupo) {\r\n vm.focusedRow = grupo.grupoId;\r\n }\r\n\r\n function isFocused(grupo) {\r\n return vm.focusedRow === grupo.grupoId;\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(grupo) {\r\n vm.focusedRow = grupo.grupoId;\r\n restrictionService.hasPermission('modificar', 'grupoFlota', 'flota.configuracion.editarGrupo', { 'id': grupo.grupoId });\r\n\r\n //$state.go('flota.configuracion.editarGrupo', { 'id': grupo.grupoId });\r\n }\r\n\r\n function remove(grupo) {\r\n if (!restrictionService.hasPermission('eliminar', 'grupoFlota')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja grupo...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n grupoService.deleteById([grupo.grupoId]).then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'grupo dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el grupo',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'grupoFlota')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los grupos seleccionados?')\r\n .then(function (result) {\r\n if (result) {\r\n var gruposIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n gruposIds.push(selected[i].grupoId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja grupos...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n grupoService.deleteById(gruposIds)\r\n .then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'grupos dados de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los grupos',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('MaintenanceTypeFormController', MaintenanceTypeFormController);\r\n \r\n\r\n MaintenanceTypeFormController.$inject = [\r\n '$stateParams',\r\n 'tipoMantenimientoService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'notificationService',\r\n '$scope',\r\n 'common'\r\n ];\r\n\r\n function MaintenanceTypeFormController($stateParams, tipoMantenimientoService, genericDataService,\r\n $filter, $state, $rootScope, notificationService, $scope, common){\r\n\r\n\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.tipoMantenimiento = {};\r\n vm.edit = false;\r\n\r\n vm.tipo = {\r\n list: [\r\n { 'nombre': 'Por Kms Vehículo', 'id': 0 },\r\n { 'nombre': 'Tiempo', 'id': 1 },\r\n { 'nombre': 'Lo que suceda antes', 'id': 2 }\r\n\r\n ],\r\n selected: { 'nombre': 'Por Kms Vehículo', 'id': 0 }\r\n };\r\n\r\n vm.tiempo = {\r\n list: [\r\n { 'nombre': 'días', 'id': 0 },\r\n { 'nombre': 'meses', 'id': 1 },\r\n { 'nombre': 'años', 'id': 2 }\r\n\r\n ],\r\n selected: { 'nombre': 'días', 'id': 0 }\r\n };\r\n\r\n\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n if (id != null) {\r\n vm.edit = true;\r\n tipoMantenimientoService.getById(id)\r\n .then(function (result) {\r\n\r\n vm.tipoMantenimiento = result;\r\n\r\n if (!common.isNullOrUndefined(vm.tipoMantenimiento.tipoVencimientoId) && vm.tipoMantenimiento.tipoVencimientoId == 1) vm.tipo.selected = vm.tipo.list[1];\r\n else if (!common.isNullOrUndefined(vm.tipoMantenimiento.tipoVencimientoId) && vm.tipoMantenimiento.tipoVencimientoId == 2) vm.tipo.selected = vm.tipo.list[2];\r\n else vm.tiempo.selected = vm.tiempo.list[0];\r\n\r\n if (!common.isNullOrUndefined(vm.tipoMantenimiento.intervaloTiempoTipo) && vm.tipoMantenimiento.intervaloTiempoTipo == 1) vm.tiempo.selected = vm.tiempo.list[1];\r\n else if (!common.isNullOrUndefined(vm.tipoMantenimiento.intervaloTiempoTipo) && vm.tipoMantenimiento.intervaloTiempoTipo == 2) vm.tiempo.selected = vm.tiempo.list[2];\r\n else vm.tiempo.selected = vm.tiempo.list[0];\r\n });\r\n }\r\n })();\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n\r\n\r\n /* PRIVATE FUNCTIONS */\r\n\r\n function doSave(action) {\r\n vm.tipoMantenimiento.tipoVencimientoId = vm.tipo.selected.id;\r\n vm.tipoMantenimiento.intervaloTiempoTipo = vm.tiempo.selected.id;\r\n\r\n tipoMantenimientoService.add(vm.tipoMantenimiento).then(function (obj) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.tiposMantenimientos');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoTipoMantenimiento', { 'accion': 'saveAndNew' });\r\n }\r\n \r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El tipo mantenimiento se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n\r\n // Try to find the selected element in the list using the id property\r\n // If requireId is false it will keep the name even when id is null\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('MaintenanceTypeListController', MaintenanceTypeListController);\r\n \r\n\r\n MaintenanceTypeListController.$inject = [\r\n '$templateCache',\r\n 'tipoMantenimientoService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n ];\r\n\r\n function MaintenanceTypeListController($templateCache,\r\n tipoMantenimientoService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants,\r\n restrictionService) {\r\n \r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/vehicles/stateTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.focusedRow = null;\r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n\r\n vm.searchText = ''\r\n vm.initialResult = []; \r\n\r\n\r\n\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'id',\r\n columnDefs: [\r\n {\r\n field: 'descripcion',\r\n displayName: 'Descripción',\r\n resizable: true,\r\n sort: { priority: 1, direction: 'desc' }\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: false,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n \r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n\r\n vm.filterGrid = filterGrid;\r\n vm.clearSearcher = clearSearcher; \r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('tipoMantenimiento')];\r\n\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (!common.isNullOrUndefined(vm.tab) && vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n function loadData() {\r\n\r\n clearAll();\r\n\r\n tipoMantenimientoService.getList(sorting).then(function (result) {\r\n vm.initialResult = result.data.list; \r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n\r\n $scope.gridData = result.data.list;\r\n vm.gridData = result.data.list;\r\n });\r\n }\r\n\r\n\r\n function focusRow(obj) {\r\n vm.focusedRow = obj.mantenimientoFlotaTipoId;\r\n }\r\n\r\n function isFocused(obj) {\r\n return vm.focusedRow === obj.mantenimientoFlotaTipoId;\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(obj) {\r\n vm.focusedRow = obj.mantenimientoFlotaTipoId;\r\n restrictionService.hasPermission('modificar', 'mantenimientoFlotaTipo', 'flota.configuracion.editarTipoMantenimiento', { 'id': obj.mantenimientoFlotaTipoId });\r\n\r\n $state.go('flota.configuracion.editarTipoMantenimiento', { 'id': obj.mantenimientoFlotaTipoId });\r\n }\r\n\r\n function remove(obj) {\r\n if (!restrictionService.hasPermission('eliminar', 'mantenimientoFlotaTipo')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja tipo mantenimiento...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n tipoMantenimientoService.deleteById([obj.mantenimientoFlotaTipoId]).then(function () {\r\n loadData();\r\n notificationService.sendAppNotification({\r\n message: 'tipo mantenimiento dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el tipo mantenimiento',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'mantenimientoFlotaTipo')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los tipos mantenimientos seleccionados?')\r\n .then(function (result) {\r\n if (result) {\r\n var objIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n objIds.push(selected[i].mantenimientoFlotaTipoId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja tipos mantenimientos...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n tipoMantenimientoService.deleteById(objIds)\r\n .then(function () {\r\n loadData();\r\n notificationService.sendAppNotification({\r\n message: 'tipos mantenimientos dados de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los tipos mantenimientos',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n //filtra la grilla según searcher\r\n function filterGrid() {\r\n\r\n if (vm.searchText !== '') {\r\n $scope.gridData = $filter('searchFilter')(vm.initialResult, {\r\n 'descripcion': vm.searchText,\r\n }, true);\r\n }\r\n else {\r\n $scope.gridData = vm.initialResult; \r\n }\r\n\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.rowCount = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('MenuConfigController', MenuConfigController);\r\n\r\n\r\n MenuConfigController.$inject = [\r\n 'restrictionService', '$scope'\r\n ];\r\n\r\n function MenuConfigController(restrictionService, $scope) {\r\n\r\n var vm = this;\r\n\r\n vm.showTest = true;\r\n\r\n vm.lectura = restrictionService.lectura; \r\n }\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n\r\n })();\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('MessageFormController', MessageFormController);\r\n \r\n\r\n MessageFormController.$inject = [\r\n '$stateParams',\r\n 'mensajePredefService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'notificationService',\r\n '$scope', \r\n 'common'\r\n ];\r\n\r\n function MessageFormController($stateParams, mensajePredefService, genericDataService,\r\n $filter, $state, $rootScope, notificationService, $scope, common) {\r\n\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.mensaje = {};\r\n vm.edit = false;\r\n \r\n\r\n vm.estado = {\r\n list: [\r\n { 'nombre': 'En terminal operario', 'id': 0},\r\n { 'nombre': 'En gestor flota', 'id': 1 }\r\n ],\r\n selected: { 'nombre': 'En terminal operario', 'id': 0, 'list': [] }\r\n };\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n //Edit\r\n if (id != null) {\r\n vm.edit = true;\r\n mensajePredefService.getById(id)\r\n .then(function (mensaje) {\r\n\r\n vm.mensaje = mensaje;\r\n if (common.isNullOrUndefined(vm.mensaje.tipo) || vm.mensaje.tipo == 0) vm.estado.selected = vm.estado.list[0];\r\n else {\r\n vm.estado.selected = vm.estado.list[1]; \r\n }\r\n });\r\n }\r\n })();\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n\r\n\r\n /* PRIVATE FUNCTIONS */\r\n\r\n function doSave(action) {\r\n vm.mensaje.tipo = vm.estado.selected.id; \r\n mensajePredefService.add(vm.mensaje).then(function (mensajePredef) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoMensajes');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoMensaje', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.mensaje.id = mensajePredef.id;\r\n vm.mensaje.tallerId = mensajePredef.tallerId;\r\n }\r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El mensaje se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n\r\n // Try to find the selected element in the list using the id property\r\n // If requireId is false it will keep the name even when id is null\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('MessageListController', MessageListController);\r\n \r\n\r\n MessageListController.$inject = [\r\n '$templateCache',\r\n 'mensajePredefService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n ];\r\n\r\n function MessageListController(\r\n $templateCache,\r\n mensajePredefService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants,\r\n restrictionService) {\r\n \r\n\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/vehicles/stateTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n \r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n\r\n vm.focusedRow = null;\r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n\r\n vm.searchText = ''\r\n \r\n\r\n vm.estado = {\r\n list: [\r\n { 'nombre': 'En terminal operario', 'id': 0, 'list': [] },\r\n { 'nombre': 'En gestor flota', 'id': 1, 'list': [] }\r\n ],\r\n selected: { 'nombre': 'En terminal operario', 'id': 0, 'list' : [] }\r\n };\r\n\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'id',\r\n columnDefs: [\r\n {\r\n field: 'mensaje',\r\n displayName: 'Mensaje',\r\n resizable: true,\r\n sort: { priority: 1, direction: 'desc' }\r\n },\r\n {\r\n field: 'orden',\r\n cellClass: 'strong',\r\n displayName: 'Orden',\r\n resizable: true,\r\n\r\n }, \r\n {\r\n field: 'tipo',\r\n cellClass: 'strong',\r\n displayName: 'tipo',\r\n resizable: true,\r\n\r\n }, \r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: false,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.onSelectEstado = onSelectEstado;\r\n vm.filterGrid = filterGrid;\r\n vm.clearSearcher = clearSearcher; \r\n\r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('mensajes')];\r\n\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (!common.isNullOrUndefined(vm.tab) && vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n function loadData() {\r\n\r\n vm.searchText = ''; \r\n clearAll();\r\n vm.estado.list[0].list = [];\r\n vm.estado.list[1].list = [];\r\n\r\n mensajePredefService.getList(sorting).then(function (result) {\r\n\r\n for (var i = 0; i < result.data.list.length; ++i) {\r\n var item = result.data.list[i]; \r\n if (0 == item.tipo) vm.estado.list[0].list.push(item);\r\n else if (1 == item.tipo) vm.estado.list[1].list.push(item);\r\n }\r\n \r\n vm.estado.selected = vm.estado.list[0]; \r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n\r\n $scope.gridData = vm.estado.selected.list;\r\n vm.gridData = result.data.list;\r\n });\r\n }\r\n\r\n\r\n function focusRow(mensaje) {\r\n vm.focusedRow = mensaje.mensajePredefId;\r\n }\r\n\r\n function isFocused(mensaje) {\r\n return vm.focusedRow === mensaje.mensajePredefId;\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(mensaje) {\r\n\r\n vm.focusedRow = mensaje.mensajePredefId;\r\n restrictionService.hasPermission('modificar', 'mensajePredef', 'flota.configuracion.editarMensaje', { 'id': mensaje.mensajePredefId });\r\n\r\n //$state.go('flota.configuracion.editarMensaje', { 'id': mensaje.mensajePredefId });\r\n }\r\n\r\n function remove(mensaje) {\r\n if (!restrictionService.hasPermission('eliminar', 'mensajePredef')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja mensaje...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n mensajePredefService.deleteById([mensaje.mensajePredefId]).then(function () {\r\n loadData();\r\n notificationService.sendAppNotification({\r\n message: 'mensaje dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el mensaje',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'mensajePredef')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los mensajes seleccionados?')\r\n .then(function (result) {\r\n if (result) {\r\n var mensajesIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n mensajesIds.push(selected[i].mensajePredefId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja mensajes...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n mensajePredefService.deleteById(mensajesIds)\r\n .then(function () {\r\n loadData();\r\n notificationService.sendAppNotification({\r\n message: 'mensajes dados de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los mensajes',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n //resetea el searcher y cambia de vector seleccionado\r\n function onSelectEstado(obj) {\r\n vm.estado.selected = obj;\r\n\r\n vm.searchText = '';\r\n\r\n $scope.gridData = vm.estado.selected.list;\r\n\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.rowCount = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL); \r\n }\r\n\r\n //filtra la grilla según searcher\r\n function filterGrid() {\r\n\r\n if (vm.searchText !== '') {\r\n $scope.gridData = $filter('searchFilter')(vm.estado.selected.list, {\r\n 'mensaje': vm.searchText,\r\n 'orden': vm.searchText\r\n }, true);\r\n }\r\n else {\r\n $scope.gridData = vm.estado.selected.list;\r\n }\r\n\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.rowCount = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ModelFormController', ModelFormController);\r\n \r\n\r\n ModelFormController.$inject = [\r\n \r\n ];\r\n\r\n function ModelFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ModelListController', ModelListController);\r\n \r\n\r\n ModelListController.$inject = [\r\n \r\n ];\r\n\r\n function ModelListController(){\r\n // jshint maxstatements:false\r\n\r\n var row = { 'id' : '001', \r\n 'model' : '50cc', \r\n 'brand' : 'Aprilia', \r\n 'type': 'Ciclomotor', \r\n 'actions' : 'editar | eliminar'\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n\r\n {\r\n field: 'id',\r\n displayName: 'ID',\r\n minWidth: 80,\r\n maxWidth: 80,\r\n resizable: true\r\n },\r\n\r\n {\r\n name: 'model',\r\n displayName: 'Modelo',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'brand',\r\n displayName: 'Marca',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'type',\r\n displayName: 'Tipo',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n }\r\n\r\n ],\r\n data: vm.gridData,\r\n };\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData(){\r\n for(var i = 0; i < 15; i++){\r\n vm.gridData.push(row);\r\n }\r\n }\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('OrderTypeFormController', OrderTypeFormController);\r\n\r\n\r\n OrderTypeFormController.$inject = [\r\n '$stateParams',\r\n 'tipoOrdenService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'notificationService',\r\n '$scope'\r\n ];\r\n\r\n function OrderTypeFormController($stateParams, tipoOrdenService, genericDataService,\r\n $filter, $state, $rootScope, notificationService, $scope) {\r\n\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.tipoOrden = {};\r\n vm.timesIgnore = 0;\r\n vm.edit = false;\r\n vm.genericData = {\r\n entidades: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n };\r\n\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n\r\n //Edit\r\n if (id != null) {\r\n vm.edit = true;\r\n\r\n tipoOrdenService.getById(id)\r\n .then(function (result) {\r\n vm.tipoOrden = result;\r\n getGenericData();\r\n });\r\n }\r\n //New\r\n else {\r\n getGenericData();\r\n }\r\n })();\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n function getGenericData() {\r\n genericDataService.getEntidades()\r\n .then(function (res) {\r\n\r\n vm.genericData.entidades.list = res.data;\r\n\r\n var modelEntidad = findByProperty(vm.genericData.entidades.list, 'entidadId', vm.tipoOrden.entidadId);\r\n \r\n\r\n if (modelEntidad) {\r\n vm.genericData.entidades.selected = modelEntidad;\r\n }\r\n else {\r\n vm.genericData.entidades.selected = vm.genericData.entidades.list[0];\r\n }\r\n \r\n });\r\n }\r\n\r\n function doSave(action) {\r\n if (vm.edit && (vm.tipoOrden.id === null || vm.tipoOrden.id === '' || vm.tipoOrden.id === undefined)) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n\r\n vm.tipoOrden.entidadId = vm.genericData.entidades.selected.entidadId;\r\n\r\n tipoOrdenService.add(vm.tipoOrden).then(function (obj) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoTipoOrden');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoTipoOrden', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.tipoOrden.id = obj.id;\r\n vm.tipoOrden.tipoOrdenId = obj.tipoOrdenId;\r\n }\r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El tipo orden se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'El campo Id es obligatorio',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n function findByProperty(array, property, id) {\r\n if (array === null) { return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('OrderTypeListController', OrderTypeListController);\r\n\r\n OrderTypeListController.$inject = [\r\n '$templateCache',\r\n 'tipoOrdenService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n 'notificationService',\r\n '$timeout',\r\n 'genericDataService',\r\n 'userService',\r\n 'simpleModalService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n ];\r\n\r\n\r\n\r\n function OrderTypeListController($templateCache,\r\n tipoOrdenService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n notificationService,\r\n $timeout,\r\n genericDataService,\r\n userService,\r\n simpleModalService,\r\n common,\r\n uiGridConstants,\r\n restrictionService) {\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n };\r\n\r\n\r\n var paginationOptions = {\r\n pageNumber: 1,\r\n pageSize: 25,\r\n sort: null\r\n };\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.appliedFilters = [];\r\n vm.initialResult = []; \r\n $scope.gridData = [];\r\n vm.genericDataService = genericDataService;\r\n vm.focusedRow = null;\r\n vm.loadingInformation = true;\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'tipoOrdenId',\r\n columnDefs: [\r\n\r\n {\r\n field: 'id',\r\n displayName: 'Id',\r\n width: 70,\r\n resizable: true,\r\n sort: { priority: 1, direction: 'desc' }\r\n\r\n },\r\n\r\n {\r\n name: 'descripcion',\r\n displayName: 'Descripcion',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.selectAll = selectAll;\r\n vm.clearAll = clearAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.goToEdit = goToEdit;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.remove = remove;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n vm.filterGrid = filterGrid;\r\n\r\n vm.clearSearcher = clearSearcher;\r\n vm.searchText = '';\r\n\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('tipoOrdenes')];\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (!common.isNullOrUndefined(vm.tab) && vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function loadData() {\r\n clearAll();\r\n vm.searchText = '';\r\n vm.loadingInformation = false;\r\n tipoOrdenService.getList()\r\n .then(function (result) {\r\n vm.initialResult = result.data.list; \r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n\r\n $scope.gridData = result.data.list;\r\n vm.gridData = result.data.list;\r\n });\r\n\r\n }\r\n\r\n\r\n function focusRow(obj) {\r\n vm.focusedRow = obj.tipoOrdenId;\r\n }\r\n\r\n function isFocused(obj) {\r\n return vm.focusedRow === obj.tipoOrdenId;\r\n }\r\n\r\n function goToEdit(obj) {\r\n restrictionService.hasPermission('modificar', 'tipoOrden', 'flota.configuracion.editarTipoOrden', { 'id': obj.tipoOrdenId });\r\n\r\n //$state.go('flota.configuracion.editarTipoOrden', { 'id': obj.tipoOrdenId });\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function filterGrid() {\r\n\r\n if (vm.searchText !== '') {\r\n $scope.gridData = $filter('searchFilter')(vm.initialResult, {\r\n 'descripcion': vm.searchText,\r\n 'id': vm.searchText\r\n }, true);\r\n }\r\n else {\r\n $scope.gridData = vm.initialResult;\r\n }\r\n\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.rowCount = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n function remove(obj) {\r\n if (!restrictionService.hasPermission('eliminar', 'tipoOrden')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja tipo orden...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n tipoOrdenService.deleteById([obj.tipoOrdenId]).then(function () {\r\n loadData();\r\n notificationService.sendAppNotification({\r\n message: 'Tipo orden dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el tipo orden',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'tipoOrden')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los tipos ordenes seleccionados?')\r\n .then(function (result) {\r\n if (result) {\r\n var objIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n objIds.push(selected[i].tipoOrdenId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja tipo órdenes...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n tipoOrdenService.deleteById(objIds)\r\n .then(function () {\r\n loadData();\r\n notificationService.sendAppNotification({\r\n message: 'Tipo órdenes dadas de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los tipos órdenes',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ProductoFormController', ProductoFormController);\r\n\r\n\r\n ProductoFormController.$inject = [\r\n '$stateParams',\r\n 'productoService',\r\n 'clientService',\r\n 'genericDataService',\r\n '$state',\r\n 'notificationService',\r\n 'common',\r\n 'zonaService'\r\n ];\r\n\r\n function ProductoFormController(\r\n $stateParams,\r\n productoService,\r\n clientService,\r\n genericDataService,\r\n $state,\r\n notificationService,\r\n common,\r\n zonaService\r\n ) {\r\n // jshint maxstatements:false\r\n var id = $stateParams.id;\r\n\r\n var vm = this;\r\n vm.product = {};\r\n\r\n vm.stateParams = $stateParams;\r\n\r\n vm.fields = vm.fields;\r\n\r\n vm.andType = 'string';\r\n vm.andOperations = [];\r\n vm.andOptions = [];\r\n\r\n vm.orType = 'string';\r\n vm.orOperations = [];\r\n vm.orOptions = [];\r\n\r\n vm.newAndCondition = {};\r\n vm.newOrCondition = {};\r\n\r\n vm.andConditions = [];\r\n vm.orConditions = [];\r\n\r\n vm.genericData = {\r\n impuestos: { list: [] },\r\n unidadesMedida: { list: [] },\r\n tipo: {\r\n list: [\r\n { id: 'S', nombre: 'Servicio' },\r\n { id: 'A', nombre: 'Artículo' },\r\n { id: 'G', nombre: 'Gasto Suplido' },\r\n { id: 'R', nombre: 'Recorrido' }\r\n ]\r\n },\r\n metodoCalculo: {\r\n list: [\r\n { id: 'I', nombre: 'Importe' },\r\n { id: 'P', nombre: 'Porcentaje' }\r\n ]\r\n },\r\n zonas: {\r\n list: [],\r\n loading: false,\r\n source: {\r\n zonaId: null,\r\n descripcion: ''\r\n },\r\n destination: {\r\n zonaId: null,\r\n descripcion: ''\r\n },\r\n habilitarIdaVuelta: true\r\n }\r\n };\r\n\r\n vm.save = save;\r\n vm.saveAndNew = saveAndNew;\r\n vm.saveAndClose = saveAndClose;\r\n\r\n vm.selectedAction = 0;\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.tipoOnChange = tipoOnChange;\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n\r\n clientService.getTarifaFields().then(function (result) {\r\n var fields = [];\r\n vm.filterData = {};\r\n result.data.forEach(f => {\r\n fields.push({ id: f.fieldId, nombre: clientService.fieldNames[f.fieldId] });\r\n vm.filterData[f.fieldId] = f;\r\n vm.filterData[f.fieldId].nombre = clientService.fieldNames[f.fieldId];\r\n });\r\n vm.fields = fields;\r\n getProduct();\r\n });\r\n\r\n getGenericData();\r\n\r\n })();\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function findOpById(operations, id) {\r\n var result = operations.filter(obj => {\r\n return obj.id === id;\r\n });\r\n return result[0] || null;\r\n }\r\n\r\n function doSave(action) {\r\n\r\n if (vm.edit && (vm.product.id === null || vm.product.id === '' || vm.product.id === undefined)) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n\r\n var andConds = vm.andConditions.map(function (cond) {\r\n return {\r\n field: cond.field.id,\r\n operation: cond.operation.id,\r\n value: cond.value.id || cond.value\r\n };\r\n });\r\n\r\n var orConds = [];\r\n\r\n if (vm.genericData.tipo.selected.id != 'R') {\r\n orConds = vm.orConditions.map(function (cond) {\r\n return {\r\n field: cond.field.id,\r\n operation: cond.operation.id,\r\n value: cond.value.id || cond.value\r\n };\r\n });\r\n } \r\n\r\n productoService\r\n .addProduct(vm.product, andConds, orConds, vm.genericData.zonas.habilitarIdaVuelta, vm.genericData.zonas.source.zonaId, vm.genericData.zonas.destination.zonaId)\r\n .then(function (productoSave) {\r\n sendSaveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoproductos');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoProducto', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.product.id = productoSave.data.product.id;\r\n vm.product.productoId = productoSave.data.product.productoId;\r\n //$state.reload();\r\n }\r\n });\r\n }\r\n\r\n function getProduct() {\r\n if (id != null) {\r\n vm.edit = true;\r\n productoService.getProduct(id)\r\n .then(function (res) {\r\n vm.product = res.data.product;\r\n vm.product.descripcion = vm.product.descripcion.trim();\r\n vm.product.id = vm.product.id.trim();\r\n vm.genericData.zonas.habilitarIdaVuelta = res.data.habilitarIdaVuelta;\r\n vm.genericData.zonas.source.zonaId = res.data.zonaIdSource;\r\n vm.genericData.zonas.destination.zonaId = res.data.zonaIdDestination;\r\n\r\n vm.andConditions = res.data.andConditions.map(function (cond) {\r\n var field = vm.filterData[cond.field];\r\n var ops = clientService.operations[field.type];\r\n return {\r\n field: { nombre: field.nombre, id: cond.field },\r\n operation: { nombre: findOpById(ops, cond.operation).nombre, id: cond.operation },\r\n value: field.type === 'options' ? findOpById(field.options, cond.value) : cond.value,\r\n type: field.type\r\n };\r\n });\r\n vm.orConditions = res.data.orConditions.map(function (cond) {\r\n var field = vm.filterData[cond.field];\r\n var ops = clientService.operations[field.type];\r\n return {\r\n field: { nombre: field.nombre, id: cond.field },\r\n operation: { nombre: findOpById(ops, cond.operation).nombre, id: cond.operation },\r\n value: field.type === 'options' ? findOpById(field.options, cond.value) : cond.value,\r\n type: field.type\r\n };\r\n });\r\n });\r\n }\r\n }\r\n\r\n function getGenericData() {\r\n vm.genericData.impuestos.loading = true;\r\n genericDataService.getImpuestos()\r\n .then(function (res) {\r\n vm.genericData.impuestos.loading = false;\r\n vm.genericData.impuestos.list = res;\r\n vm.genericData.impuestos.selected = vm.genericData.impuestos.list[0];\r\n });\r\n\r\n vm.genericData.unidadesMedida.loading = true;\r\n genericDataService.getUnidadesMedida()\r\n .then(function (res) {\r\n vm.genericData.unidadesMedida.loading = false;\r\n vm.genericData.unidadesMedida.list = res;\r\n vm.genericData.unidadesMedida.selected = vm.genericData.unidadesMedida.list[0];\r\n });\r\n\r\n vm.genericData.tipo.selected = vm.genericData.tipo.list[0];\r\n vm.genericData.metodoCalculo.selected = vm.genericData.metodoCalculo.list[0];\r\n\r\n vm.genericData.zonas.loading = true;\r\n zonaService.getList()\r\n .then(function (res) {\r\n vm.genericData.zonas.loading = false;\r\n vm.genericData.zonas.list = res.data.list;\r\n });\r\n }\r\n\r\n //#region Condiciones\r\n vm.addAndCondition = function () {\r\n if (common.isNullOrUndefined(vm.filterData[vm.newAndCondition.field.id])) { return; }\r\n var type = vm.filterData[vm.newAndCondition.field.id].type;\r\n\r\n if (vm.newAndCondition.field.id && vm.newAndCondition.operation.id &&\r\n ((type === 'options' && vm.newAndCondition.value.id) || (type !== 'options' && vm.newAndCondition.value))) {\r\n var condition = {\r\n field: vm.newAndCondition.field,\r\n operation: vm.newAndCondition.operation,\r\n value: vm.newAndCondition.value,\r\n type: vm.filterData[vm.newAndCondition.field.id].type\r\n };\r\n vm.andConditions.push(condition);\r\n vm.newAndCondition = {};\r\n }\r\n };\r\n\r\n vm.removeAndCondition = function (index) {\r\n vm.andConditions.splice(index, 1);\r\n };\r\n\r\n vm.addOrCondition = function () {\r\n if (common.isNullOrUndefined(vm.filterData[vm.newOrCondition.field.id])) { return; }\r\n var type = vm.filterData[vm.newOrCondition.field.id].type;\r\n\r\n if (vm.newOrCondition.field.id && vm.newOrCondition.operation.id &&\r\n ((type === 'options' && vm.newOrCondition.value.id) || (type !== 'options' && vm.newOrCondition.value))) {\r\n var condition = {\r\n field: vm.newOrCondition.field,\r\n operation: vm.newOrCondition.operation,\r\n value: vm.newOrCondition.value,\r\n type: vm.filterData[vm.newOrCondition.field.id].type\r\n };\r\n vm.orConditions.push(condition);\r\n vm.newOrCondition = {};\r\n }\r\n };\r\n\r\n vm.removeOrCondition = function (index) {\r\n vm.orConditions.splice(index, 1);\r\n };\r\n\r\n vm.onAndConditionFieldChange = function (field) {\r\n if (common.isNullOrUndefined(field) || common.isNullOrUndefined(field.id)) {\r\n vm.andOperations = null;\r\n vm.andOptions = null;\r\n vm.newAndCondition = {};\r\n return;\r\n }\r\n\r\n var type = vm.filterData[field.id].type;\r\n\r\n vm.andOperations = clientService.operations[type];\r\n vm.newAndCondition.operation = vm.andOperations[0];\r\n\r\n if (type === 'options') {\r\n vm.andOptions = vm.filterData[field.id].options;\r\n }\r\n };\r\n\r\n vm.onOrConditionFieldChange = function (field) {\r\n if (common.isNullOrUndefined(field) || common.isNullOrUndefined(field.id)) {\r\n vm.orOperations = null;\r\n vm.orOptions = null;\r\n vm.newOrCondition = {};\r\n return;\r\n }\r\n\r\n var type = vm.filterData[field.id].type;\r\n vm.orOperations = clientService.operations[type];\r\n vm.newOrCondition.operation = vm.orOperations[0];\r\n\r\n if (type === 'options') {\r\n vm.orOptions = vm.filterData[field.id].options;\r\n }\r\n };\r\n //#endregion\r\n\r\n function computeValueAccionSelected(accion) {\r\n\r\n if (accion === vm.stateParams.accion) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function sendSaveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El producto se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'El campo Id es obligatorio',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n vm.toggleVisibility = function (className) {\r\n\r\n var elements = document.getElementsByClassName(className);\r\n\r\n for (var i = 0; i < elements.length; i++) {\r\n var obj = elements[i];\r\n\r\n if (obj.classList.contains('none')) {\r\n obj.classList.remove('none');\r\n } else {\r\n obj.classList.add('none');\r\n }\r\n }\r\n }\r\n\r\n vm.conditionsCount = function () {\r\n var conditionsCnt = vm.andConditions.length + vm.orConditions.length;\r\n return conditionsCnt;\r\n };\r\n\r\n vm.conditionsCountHumanized = function () {\r\n var conditionsCnt = vm.andConditions.length + vm.orConditions.length;\r\n\r\n if (conditionsCnt == 0) {\r\n return '';\r\n } else {\r\n if (conditionsCnt > 1) {\r\n return conditionsCnt + ' condiciones';\r\n } else {\r\n return '1 condición';\r\n }\r\n }\r\n };\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n function tipoOnChange() {\r\n //console.log(vm.genericData.tipo.selected);\r\n //if (vm.genericData.tipo.selected.id == 'R') {\r\n //} else {\r\n //}\r\n //vm.genericData.tipo.selected.id == 'R'\r\n }\r\n\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('ProductoListController', ProductoListController);\r\n \r\n\r\n ProductoListController.$inject = [\r\n '$templateCache',\r\n 'productoService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n 'notificationService',\r\n 'simpleModalService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n ];\r\n\r\n \r\n\r\n function ProductoListController(\r\n $templateCache,\r\n productoService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n notificationService,\r\n simpleModalService,\r\n common,\r\n uiGridConstants, \r\n restrictionService\r\n ) {\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n\t\t\taccionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n\t\t\trowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n vm.goToEdit = goToEdit;\r\n vm.filterGrid = filterGrid;\r\n vm.clearSearcher = clearSearcher;\r\n vm.searchText = '';\r\n vm.remove = remove; \r\n vm.deleteAllItems = deleteAllItems; \r\n\r\n vm.gridOptions = {\r\n enableFilter: true,\r\n rowTemplate: templates.rowTemplate, \r\n columnDefs: [\r\n {\r\n name: 'id',\r\n displayName: 'ID',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n {\r\n name: 'descripcion',\r\n cellClass: 'strong', \r\n displayName: 'Nombre',\r\n minWidth: 110,\r\n resizable: true\r\n },\r\n {\r\n name: 'porcentaje',\r\n displayName: 'Porcentaje',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate\r\n }\r\n ],\r\n\t\t\tdata: 'gridData',\r\n\r\n\t\t\tonRegisterApi: function (gridApi) {\r\n\t\t\t\tvm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll= false;\r\n\t\t\t}\r\n };\r\n \r\n (function () {\r\n loadData();\r\n })();\r\n \r\n function loadData() {\r\n\r\n clearAll();\r\n \r\n\t\t\tproductoService.getList().then(function (result) {\r\n $scope.gridData = result.data;\r\n vm.gridData = result.data;\r\n vm.rowCount = result.data.length;\r\n vm.firstLoaded = true; \r\n\t\t\t});\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n \r\n function goToEdit(col) {\r\n restrictionService.hasPermission('modificar', 'producto', 'flota.configuracion.editarProducto', { 'id': col.productoId });\r\n\r\n\t\t //$state.go('flota.configuracion.editarProducto', { 'id': col.productoId });\r\n } \r\n\r\n function remove(producto) {\r\n if (!restrictionService.hasPermission('eliminar', 'producto')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja producto...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n productoService.deleteById([producto.productoId]).then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'Producto dado de baja con �xito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el producto',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n\r\n \r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'producto')) return; \r\n simpleModalService\r\n .yesNoModal('Confirmaci�n eliminar', '�Desea eliminar los productos seleccionados?') // ' + vm.gridApi.selection.vm.gridApi.selection.getSelectedRows() + '\r\n .then(function (result) {\r\n if (result) {\r\n var productsIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n productsIds.push(selected[i].productoId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja productos...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n productoService.deleteById(productsIds)\r\n .then(function () {\r\n refreshGrid();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'Productos dados de baja con �xito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los productos',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n function refreshGrid() {\r\n loadData();\r\n }\r\n\r\n function filterGrid() {\r\n if (vm.searchText !== '') {\r\n $scope.gridData = $filter('searchFilter')(vm.gridData, {\r\n descripcion: vm.searchText,\r\n precio: vm.searchText,\r\n porcentaje: vm.searchText,\r\n id: vm.searchText,\r\n }, true);\r\n\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n else {\r\n $scope.gridData = vm.gridData;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n vm.rowCount = $scope.gridData.length;\r\n }\r\n \r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('RoleFormController', RoleFormController);\r\n \r\n\r\n RoleFormController.$inject = [\r\n \r\n ];\r\n\r\n function RoleFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('RoleListController', RoleListController);\r\n \r\n\r\n RoleListController.$inject = [\r\n \r\n ];\r\n\r\n function RoleListController(){\r\n // jshint maxstatements:false\r\n\r\n var row = { \r\n 'role' : 'Administrador', \r\n 'actions' : 'editar | eliminar'\r\n };\r\n \r\n var vm = this;\r\n vm.gridData = [];\r\n vm.gridOptions = {\r\n columnDefs: [\r\n\r\n {\r\n field: 'role',\r\n displayName: 'Rol',\r\n resizable: true\r\n },\r\n\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n }\r\n\r\n ],\r\n data: vm.gridData,\r\n };\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData(){\r\n for(var i = 0; i < 15; i++){\r\n vm.gridData.push(row);\r\n }\r\n }\r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('StateFormController', StateFormController);\r\n \r\n\r\n StateFormController.$inject = [\r\n \r\n ];\r\n\r\n function StateFormController(){\r\n // jshint maxstatements:false\r\n var vm = this;\r\n }\r\n\r\n})();\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('StateListController', StateListController);\r\n \r\n\r\n StateListController.$inject = [\r\n '$scope',\r\n 'estadosOperarioService',\r\n 'ModalService', \r\n '$templateCache', \r\n 'genericDataService',\r\n 'common', \r\n 'notificationService',\r\n '$state', \r\n 'restrictionService'\r\n\r\n\r\n ];\r\n\r\n function StateListController($scope, estadosOperarioService, ModalService, $templateCache, genericDataService, common, notificationService, $state, restrictionService) {\r\n\r\n var modalTemplate = $templateCache.get('app/views/modals/estadoOperarioTemplate.html');\r\n\r\n \r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.initialResult = [];\r\n vm.elements = []; \r\n\r\n vm.addState = addState;\r\n vm.showModal = showModal; \r\n vm.save = save;\r\n vm.remove = remove;\r\n vm.addEstadoOperario = addEstadoOperario;\r\n vm.refresh = refresh; \r\n\r\n //substituir por el dragdrop\r\n vm.up = up; \r\n vm.down = down; \r\n \r\n\r\n\r\n\r\n (function () {\r\n loadData();\r\n\r\n })();\r\n\r\n function loadData() {\r\n estadosOperarioService.getList()\r\n .then(function (result) {\r\n vm.initialResult = result.data.list;\r\n vm.elements = result.data.list; \r\n\r\n });\r\n\r\n }\r\n\r\n function addState() {\r\n if (!restrictionService.hasPermission('crear', 'estadoOperario')) return; \r\n\r\n showModal(); \r\n }\r\n\r\n function showModal(estadoOperario) {\r\n if (!restrictionService.hasPermission('crear', 'estadoOperario')) return; \r\n\r\n ModalService.showModal({\r\n template: modalTemplate,\r\n controller: function ($scope, close) {\r\n var modal = this;\r\n modal.vm = vm;\r\n modal.isEdit = false; \r\n modal.estadoOperario = {};\r\n modal.colores = {\r\n list: [],\r\n selected: {}\r\n };\r\n\r\n modal.estadoOperario = {}; \r\n\r\n modal.load = function () {\r\n genericDataService.getColoresEstado()\r\n .then(function (res) {\r\n modal.colores.list = res.data;\r\n\r\n if (modal.estadoOperario.colorEstadoId == null) {\r\n modal.colores.selected = modal.colores.list[0];\r\n }\r\n else {\r\n modal.colores.selected = modal.colores.list.find(el => el.colorEstadoId == modal.estadoOperario.colorEstadoId);\r\n\r\n }\r\n });\r\n };\r\n\r\n modal.saveClose = function () {\r\n if (modal.estadoOperario.descripcion != null) {\r\n modal.estadoOperario.colorEstadoId = modal.colores.selected.colorEstadoId; \r\n modal.estadoOperario.colorEstado = modal.colores.selected;\r\n vm.addEstadoOperario(modal.estadoOperario, modal.isEdit);\r\n close(modal.estadoOperario);\r\n }\r\n };\r\n\r\n modal.close = function () {\r\n close();\r\n };\r\n\r\n if (estadoOperario) {\r\n modal.isEdit = true;\r\n modal.estadoOperario = Object.assign({}, estadoOperario);\r\n } else {\r\n modal.estadoOperario = {};\r\n }\r\n\r\n modal.load(); \r\n },\r\n controllerAs: 'modal'\r\n });\r\n }\r\n\r\n function addEstadoOperario(obj, edit) {\r\n if (edit) {\r\n var indx = vm.elements.findIndex(x => x.estadoOperarioId == obj.estadoOperarioId);\r\n if (indx) {\r\n vm.elements[indx] = obj; \r\n }\r\n \r\n }\r\n else { //new\r\n var estadoOperarioIdTemp = 101;\r\n if (vm.elements.length > 0) {\r\n estadoOperarioIdTemp = vm.elements[vm.elements.length - 1].estadoOperarioId + 1;\r\n }\r\n var temp = \r\n {\r\n estadoOperarioId : estadoOperarioIdTemp,\r\n descripcion : obj.descripcion,\r\n colorEstadoId: obj.colorEstadoId,\r\n colorEstado: obj.colorEstado\r\n }\r\n vm.elements.push(temp); \r\n \r\n }\r\n }\r\n\r\n //guarda y recarga pagina\r\n function save() {\r\n estadosOperarioService.add(vm.elements).then(function (result) {\r\n sendSAveNotification(); \r\n $state.go('flota.configuracion.general');\r\n });\r\n \r\n }\r\n\r\n function refresh() {\r\n loadData();\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'Los estados de operario se han guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n\r\n function up(obj) {\r\n changePosition(obj, 0);\r\n }\r\n\r\n function down(obj) {\r\n changePosition(obj, 1); \r\n }\r\n\r\n //mode = 0 up, mode = 1 down\r\n function changePosition(obj, mode) {\r\n var it = 0;\r\n var found = false;\r\n while (it < vm.elements.length && !found) {\r\n if (vm.elements[it] == obj) found = true;\r\n else ++it; \r\n }\r\n if (found) {\r\n if (mode === 0 && it != 0) {\r\n var tempId = vm.elements[it - 1].estadoOperarioId; \r\n var tempObj = vm.elements[it - 1];\r\n vm.elements[it - 1] = obj; \r\n vm.elements[it] = tempObj;\r\n vm.elements[it].estadoOperarioId = obj.estadoOperarioId;\r\n vm.elements[it - 1].estadoOperarioId = tempId; \r\n }\r\n else if (mode === 1 && it != (vm.elements.length - 1)) {\r\n var tempId = vm.elements[it + 1].estadoOperarioId;\r\n var tempObj = vm.elements[it + 1];\r\n vm.elements[it + 1] = obj;\r\n vm.elements[it] = tempObj;\r\n vm.elements[it].estadoOperarioId = obj.estadoOperarioId;\r\n vm.elements[it + 1].estadoOperarioId = tempId; \r\n }\r\n\r\n }\r\n }\r\n function remove(estadoOperario) {\r\n if (!restrictionService.hasPermission('eliminar', 'estadoOperario')) return; \r\n\r\n var i = findByProperty(vm.elements, 'estadoOperarioId', estadoOperario.estadoOperarioId);\r\n if (i) {\r\n vm.elements.splice(i, 1);\r\n }\r\n }\r\n\r\n //returns postion in the array\r\n function findByProperty(array, property, id) {\r\n if (array === null) { return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n})();","(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('invesfleet')\r\n\t\t.controller('UserFormController', UserFormController);\r\n\r\n\r\n\tUserFormController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', 'ModalService', '$templateCache', 'reportService', 'notificationService',\r\n '$q', '$scope', 'userService', '$timeout', 'simpleModalService', 'preferences', 'zonaService', 'common', 'logEmpleadosService', 'restrictionService'\r\n\t];\r\n\r\n function UserFormController($stateParams, genericDataService,\r\n $rootScope, $state, $filter, ModalService, $templateCache, reportService, notificationService,\r\n $q, $scope, userService, $timeout, simpleModalService, preferences, zonaService, common, logEmpleadosService, restrictionService) {\r\n\r\n var id = $stateParams.id;\r\n\r\n var modalTemplate = $templateCache.get('app/views/modals/usuarioTemplate.html');\r\n\r\n\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.loaded = true; \r\n vm.count = 0; \r\n\t\tvm.user = {};\r\n\t\tvm.perfilFlota = {};\r\n\t\tvm.perfilesDeFlotaList = [];\r\n\t\tvm.perfilesDeFlotaListOriginal = [];\r\n\t\tvm.operadorFlota = false;\r\n vm.operadorMovil = false;\r\n vm.flotaCheck = true; \r\n vm.facturacionCheck = true; \r\n vm.entidades = []; \r\n vm.empleados = {\r\n list: [], \r\n selected: {\r\n id: null, \r\n descripcion: null\r\n }\r\n }; \r\n\r\n vm.newIp = {};\r\n vm.tipoPermiso = {\r\n list: [\r\n { nombre: 'Permitir', id: 0 },\r\n { nombre: 'Denegar', id: 1 }],\r\n selected: { nombre: 'Permitir', id: 0 }\r\n };\r\n\r\n vm.edit = false; \r\n\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n vm.genericData = {\r\n\t\t\tperfilesFlota: {\r\n\t\t\t\tlist: [],\r\n\t\t\t\tselected: {}\r\n }\r\n\r\n };\r\n\r\n vm.rol = {\r\n list: [\r\n { nombre: 'Usuario', id: '72A66F7C-BDF9-48A0-9C15-D43F533DA778' },\r\n { nombre: 'Administrador', id: 'e413a979-2d86-458b-8187-8732671e1165' }\r\n\r\n ],\r\n selected: { nombre: 'Usuario', id: '72A66F7C-BDF9-48A0-9C15-D43F533DA778' }\r\n };\r\n\r\n vm.save = save;\r\n vm.addRow = addRow; \r\n vm.removeRow = removeRow; \r\n vm.entidadChange = entidadChange; \r\n\r\n //INITIALIZER\r\n (function () {\r\n //Edit\r\n if (id != null) {\r\n vm.loaded = false; \r\n vm.edit = true;\r\n //userService.getUserCustomInfo(id)\r\n logEmpleadosService.getAllEmpleados().then(function (res) {\r\n vm.empleados.list = res;\r\n for (var i = 0; i < vm.empleados.list.length; i++) {\r\n vm.empleados.list[i].fullName = vm.empleados.list[i].nombre + \" \" + vm.empleados.list[i].apellidos;\r\n }\r\n if (vm.user.empleadoId != null) {\r\n vm.empleados.selected = vm.empleados.list[vm.empleados.list.findIndex(x => x.empleadoId == vm.user.empleadoId)];\r\n } else {\r\n vm.empleados.selected = vm.empleados.list[0];\r\n }\r\n });\r\n userService.getUser(id)\r\n .then(function (user) {\r\n vm.user = user;\r\n\r\n if (vm.user.empleadoId != null && vm.empleados.list.length > 0) {\r\n vm.empleados.selected = vm.empleados.list[vm.empleados.list.findIndex(x => x.empleadoId == vm.user.empleadoId)];\r\n } else {\r\n vm.empleados.selected = vm.empleados.list[0];\r\n }\r\n //set selected of rol\r\n if (vm.user.rolid == 'e413a979-2d86-458b-8187-8732671e1165') vm.rol.selected = { nombre: 'Administrador', id: 'e413a979-2d86-458b-8187-8732671e1165' };\r\n\r\n //set usuariosIps\r\n if (vm.user.usuariosIps != null) {\r\n vm.user.usuariosIps.forEach(function (element) {\r\n element.id = vm.count;\r\n element.dirty = 0;\r\n vm.count++;\r\n });\r\n }\r\n\r\n //set checkbox\r\n switch (vm.user.acceso) {\r\n case 0:\r\n vm.flotaCheck = false;\r\n vm.facturacionCheck = false; \r\n break;\r\n case 2:\r\n vm.flotaCheck = true;\r\n vm.facturacionCheck = false;\r\n break;\r\n case 4:\r\n vm.flotaCheck = false;\r\n vm.facturacionCheck = true;\r\n break;\r\n case 6:\r\n vm.flotaCheck = true;\r\n vm.facturacionCheck = true;\r\n break;\r\n }\r\n vm.loaded = true; \r\n\r\n getGenericData();\r\n });\r\n }\r\n //New\r\n else {\r\n vm.user.usuariosIps = []; \r\n getGenericData();\r\n }\r\n\t\t})();\r\n\r\n function getGenericData() {\r\n\t\t\tgenericDataService.getPerfilesDeFlota()\r\n .then(function (res) {\r\n vm.genericData.perfilesFlota.list = res.data; \r\n vm.genericData.perfilesFlota.list.unshift({ descripcion: 'Ninguno', perfilFlotaId: '00000000-0000-0000-0000-000000000000' });\r\n\r\n var perfilFlota = findByProperty(vm.genericData.perfilesFlota.list, 'perfilFlotaId', vm.user.perfilFlotaId);\r\n if (perfilFlota) {\r\n vm.genericData.perfilesFlota.selected = perfilFlota;\r\n }\r\n else {\r\n vm.genericData.perfilesFlota.selected = vm.genericData.perfilesFlota.selected = vm.genericData.perfilesFlota.list[0];\r\n }\r\n\r\n });\r\n genericDataService.getEntidadesPersonalized()\r\n .then(function (res) {\r\n if (vm.edit) {\r\n res.data.forEach(function (entidad) {\r\n var restrictionType = vm.user.restricciones.find(x => x.entidadId == entidad.entidadId);\r\n var entity = {};\r\n entity.entidad = entidad; \r\n if (restrictionType) {\r\n entity.restrictionType = restrictionType.type; \r\n setPermissionCheckbox(entity); \r\n }\r\n else {\r\n entity.restrictionType = 0; \r\n entity.leer = true; \r\n entity.crear = true;\r\n entity.modificar = true;\r\n entity.eliminar = true; \r\n }\r\n vm.entidades.push(entity); \r\n \r\n });\r\n }\r\n else {\r\n res.data.forEach(function (entidad) {\r\n vm.entidades.push({ entidad: entidad, restrictionType: 0, crear: true, leer: true, modificar: true, eliminar: true })\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n function setPermissionCheckbox(entity) {\r\n entity.crear = true; \r\n entity.leer = true; \r\n entity.modificar = true; \r\n entity.eliminar = true; \r\n\r\n if ((entity.restrictionType & 8) == 8) entity.crear = false;\r\n if ((entity.restrictionType & 2) == 2) entity.leer = false;\r\n if ((entity.restrictionType & 4) == 4) entity.modificar = false;\r\n if ((entity.restrictionType & 16) == 16) entity.eliminar = false; \r\n\r\n }\r\n\r\n\t\tfunction findByProperty(array, property, id) {\r\n\t\t\tif (array === null) { return null; }\r\n\t\t\tfor (var i = 0; i < array.length; i++) {\r\n\t\t\t\tif (array[i][property] === id) {\r\n\t\t\t\t\treturn array[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn null;\r\n }\r\n\r\n function entidadChange(entidad, value) {\r\n if ((entidad.restrictionType & value) == value) {\r\n entidad.restrictionType -= value;\r\n \r\n }\r\n else {\r\n entidad.restrictionType += value; \r\n }\r\n }\r\n \r\n function addRow() {\r\n if (vm.newIp.ip == '') return;\r\n vm.user.usuariosIps.push({ id: vm.count, ip: vm.newIp.ip, permiso: vm.tipoPermiso.selected.id, dirty: 2 });\r\n\r\n vm.tipoPermiso.selected = { nombre: 'Permitir', id: 0 };\r\n vm.newIp.ip = '';\r\n vm.count++;\r\n };\r\n\r\n function removeRow (index) {\r\n if (vm.user.usuariosIps[index].dirty == 2) vm.user.usuariosIps.splice(index, 1);\r\n else if (vm.user.usuariosIps[index].dirty == 0) vm.user.usuariosIps[index].dirty = 1;\r\n };\r\n\r\n function setRestrictions() {\r\n //check in order to delete\r\n if (vm.edit == true) {\r\n vm.user.restricciones.forEach(function (restriccion) {\r\n var found = vm.entidades.find(x => x.entidad.entidadId == restriccion.entidadId);\r\n if (found) {\r\n if (found.restrictionType == 0) {\r\n restriccion.dirty = -1 //delete\r\n }\r\n else if (found.restrictionType != restriccion.restrictionType) {\r\n restriccion.type = found.restrictionType;\r\n restriccion.dirty = 1; //update\r\n }\r\n else {\r\n restriccion.dirty = 0; //do nothing\r\n }\r\n found.found = true; \r\n }\r\n else {\r\n restriccion.dirty = 0; //do nothing\r\n }\r\n }); \r\n }\r\n\r\n //check in order to add \r\n vm.entidades.forEach(function (entidad) {\r\n if (entidad.restrictionType != 0) {\r\n if (entidad.found != true) {\r\n var restriccion = {}; \r\n restriccion.entidadId = entidad.entidad.entidadId;\r\n restriccion.usuarioId = vm.user.usuarioid;\r\n restriccion.type = entidad.restrictionType;\r\n restriccion.dirty = 2; //create\r\n vm.user.restricciones.push(restriccion); \r\n }\r\n }\r\n });\r\n }\r\n\r\n function doSave(action) {\r\n if (vm.user.nombre == null || vm.user.nombre == '' || vm.user.nombre == undefined) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n\r\n else if (vm.user.idusuario == null || vm.user.idusuario == '' || vm.user.idusuario == undefined) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n\r\n if (vm.edit == true) {\r\n if (!restrictionService.hasPermission(4, 'usuario')) return;\r\n } else {\r\n if (!restrictionService.hasPermission(1, 'usuario')) return;\r\n }\r\n\r\n //set combobox to values\r\n vm.user.rolid = vm.rol.selected.id; \r\n vm.user.perfilFlotaId = vm.genericData.perfilesFlota.selected.perfilFlotaId;\r\n\r\n if(vm.edit == true) {\r\n vm.user.empleadoId = vm.empleados.selected.empleadoId; \r\n }\r\n\r\n //set checkbox to values\r\n var c = 0;\r\n if (vm.flotaCheck == true) c += 2; \r\n if (vm.facturacionCheck == true) c += 4; \r\n vm.user.acceso = c; \r\n\r\n //set restrictions\r\n setRestrictions(); \r\n\r\n\r\n userService.add(vm.user).then(function (res) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoUsuarios');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoUsuario', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.user = res; \r\n }\r\n });\r\n \r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El usuario se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'Los campos nombre y usuario son obligatorio',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n\t\tfunction save() {\r\n\r\n\t\t\t\r\n }\r\n\r\n \r\n }\r\n\r\n\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('UserListController', UserListController);\r\n \r\n\r\n UserListController.$inject = [\r\n 'userService', '$templateCache', '$state', '$scope', '$filter', '$q', 'uiGridConstants', 'restrictionService' \r\n ];\r\n\r\n function UserListController(userService, $templateCache, $state, $scope, $filter, $q, uiGridConstants, restrictionService){\r\n // jshint maxstatements:false\r\n\r\n\t\t/* PRIVATE VARIABLES */\r\n\t\tvar templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n\r\n\t\t};\r\n\r\n\t\tvar sorting = {\r\n\t\t\tfield: null,\r\n\t\t\tdirection: null\r\n\t\t};\r\n\r\n var row = { \r\n 'state' : 'iconOffline', \r\n 'name' : 'Rodolfo', \r\n 'lastName': 'Llador', \r\n 'user': 'demogru01', \r\n 'actions' : 'editar/eliminar'\r\n };\r\n \r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n\r\n\t\tvm.listaUsuariosActivos = true;\r\n\t\tvm.gridData = [];\r\n\t\tvm.loaded = false;\r\n\r\n\t\tvm.appliedFilters = [];\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\t\t\tenableFilter: true,\r\n\t\t\tpaginationPageSizes: [25, 50, 75],\r\n\t\t\tpaginationPageSize: 25,\r\n\t\t\tuseExternalPagination: true,\r\n\t\t\tuseExternalSorting: true,\r\n\r\n\t\t\tenableRowSelection: true,\r\n\t\t\tmultiSelect: true,\r\n\r\n\t\t\tenableColumnResizing: true,\r\n\r\n\t\t\tenableColumnMenus: false,\r\n\t\t\ttreeRowHeaderAlwaysVisible: false,\r\n\t\t\tvirtualizationThreshold: 200,\r\n\t\t\tprimaryKey: 'usuarioid',\r\n columnDefs: [\r\n\r\n \r\n\r\n {\r\n name: 'nombre',\r\n displayName: 'Nombre',\r\n resizable: true\r\n },\r\n\r\n {\r\n name: 'apellidos',\r\n displayName: 'Apellidos',\r\n resizable: true\r\n },\r\n { \r\n name: 'rol',\r\n displayName: 'Rol',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n {\r\n name: 'idusuario',\r\n displayName: 'Usuario',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true\r\n },\r\n {\r\n name: 'estado',\r\n displayName: 'Estado',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n resizable: true,\r\n cellTemplate: ''\r\n + ''\r\n + ''\r\n + '' \r\n + '' \r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n minWidth: 110,\r\n maxWidth: 125,\r\n\t\t\t\t\tresizable: true,\r\n\t\t\t\t\tcellClass: 'overflow',\r\n\t\t\t\t\tcellTemplate: templates.accionesCellTemplate\r\n }\r\n\t\t\t],\r\n\t\t\tdata: 'gridData',\r\n\r\n\t\t\tonRegisterApi: function (gridApi) {\r\n\t\t\t\tvm.gridApi = gridApi;\r\n\t\t\t\tvm.gridApi.grid.options.enableExpandAll = false;\r\n\t\t\t}\r\n };\r\n\t\tvm.searchText = '';\r\n\t\tvm.filterGrid = filterGrid;\r\n\t\tvm.goToEdit = goToEdit;\r\n\t\tvm.changeGrid = changeGrid;\r\n\t\tvm.refreshGrid = refreshGrid;\r\n\t\tvm.remove = remove;\r\n\t\tvm.deleteAllItems = deleteAllItems;\r\n vm.selectAll = selectAll;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n\t\tvm.clearAll = clearAll;\r\n\t\tvm.invertSelection = invertSelection;\r\n\t\tvm.selectOrClear = selectOrClear;\r\n\r\n (function () {\r\n loadData();\r\n\t\t})();\r\n\r\n\t\tfunction filterGrid() {\r\n\t\t\tif (vm.searchText !== '') {\r\n\t\t\t\t$scope.gridData = $filter('searchFilter')(vm.gridData, \r\n\t\t\t\t\t{ nombre: vm.searchText, apellidos: vm.searchText }, true);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$scope.gridData = vm.gridData;\r\n }\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n\t\t}\r\n\r\n\t\t$scope.$on('fleetdata-refreshed', function (event, args) {\r\n\t\t\t//Save selected rows to mantain the selection after refreshing the data\r\n\t\t\tvar selected = vm.gridApi.selection.getSelectedRows();\r\n\t\t\tfilterGrid();\r\n\t\t\tvm.clearAll();\r\n\t\t\tvar list = $scope.gridData;\r\n\t\t\tfor (var i = 0; i < list.length; i++) {\r\n\t\t\t\tvar found = $filter('filter')(selected, { 'usuarioid': list[i].usuarioid });\r\n\t\t\t\tif (found[0]) {\r\n\t\t\t\t\tvm.gridApi.grid.modifyRows($scope.gridData);\r\n\t\t\t\t\tvm.gridApi.selection.selectRow($scope.gridData[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfunction loadData() {\r\n\t\t\tvm.loaded = false;\r\n userService.getAllUsersData().then(function (result) {\r\n\t\t\t\t$scope.gridData = result.data.list;\r\n\t\t\t\tvm.gridData = result.data.list;\r\n\t\t\t\tvm.loaded = true;\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n function goToEdit(obj) {\r\n restrictionService.hasPermission(2, 'usuario', 'flota.configuracion.editarUsuario', {\r\n \t'id': obj.usuarioid\r\n });\r\n\t\t}\r\n\r\n\t\tfunction refreshGrid() {\r\n\t\t\tif (vm.listaUsuariosActivos) {\r\n\t\t\t\tloadData();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tloadDataDadosDeBaja();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction changeGrid() {\r\n\t\t\tif (vm.listaUsuariosActivos) {\r\n\t\t\t\tvm.listaUsuariosActivos = false;\r\n\t\t\t\tloadDataDadosDeBaja();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvm.listaUsuariosActivos = true;\r\n\t\t\t\tloadData();\r\n\t\t\t}\r\n\t\t}\r\n\r\n function remove(usuarioId) {\r\n if (!restrictionService.hasPermission('eliminar', 'usuario')) return; \r\n\r\n\t\t\tuserService.deleteById(usuarioId).then(function (result) {\r\n\t\t\t\tloadData();\r\n\t\t\t});\r\n\t\t}\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'usuario')) return; \r\n\r\n\t\t\tvar promises = [];\r\n\t\t\tvar selected = vm.gridApi.selection.getSelectedRows();\r\n\t\t\tfor (var i = 0; i < selected.length; i++) {\r\n\t\t\t\tvar promise = userService.deleteById(selected[i].usuarioid);\r\n\t\t\t\tpromises.push(promise);\r\n\t\t\t}\r\n\t\t\t$q.all(promises).then(refreshGrid);\r\n\t\t}\r\n\r\n\t\tfunction loadDataDadosDeBaja() {\r\n\t\t\tuserService.getListDadosDeBaja(sorting, vm.appliedFilters).then(function (result) {\r\n\t\t\t\tvm.gridData = result.data.list;\r\n\t\t\t\t$scope.gridData = result.data.list;\r\n\r\n\t\t\t});\r\n }\r\n\r\n function focusRow(obj) {\r\n vm.focusedRow = obj.usuarioid;\r\n }\r\n\r\n function isFocused(obj) {\r\n return vm.focusedRow === obj.usuarioid;\r\n }\r\n\r\n\t\tfunction selectAll() {\r\n\t\t\tvm.gridApi.selection.selectAllRows();\r\n\t\t}\r\n\t\tfunction clearAll() {\r\n\t\t\tvm.gridApi.selection.clearSelectedRows();\r\n\t\t}\r\n\t\tfunction invertSelection() {\r\n\t\t\tvar selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n\t\t\tvm.selectAll();\r\n\r\n\t\t\tfor (var i = 0; i < selected.length; i++) {\r\n\t\t\t\tvm.gridApi.selection.unSelectRow(selected[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfunction selectOrClear() {\r\n\t\t\tif (vm.gridApi.selection.getSelectAllState()) {\r\n\t\t\t\tvm.clearAll();\r\n\t\t\t} else {\r\n\t\t\t\tvm.selectAll();\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('WorkshopFormController', WorkshopFormController);\r\n\r\n\r\n WorkshopFormController.$inject = [\r\n '$stateParams',\r\n 'tallerService',\r\n 'genericDataService',\r\n '$filter',\r\n '$state',\r\n '$rootScope',\r\n 'notificationService',\r\n '$scope',\r\n 'common'\r\n ];\r\n\r\n function WorkshopFormController($stateParams, tallerService, genericDataService,\r\n $filter, $state, $rootScope, notificationService, $scope, common) {\r\n /* PRIVATE VARIABLES */\r\n var id = $stateParams.id;\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.stateParams = $stateParams;\r\n vm.taller = {};\r\n vm.edit = false;\r\n vm.genericData = {\r\n provinces: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n paises: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n poblaciones: {\r\n list: null,\r\n selected: { id: null }\r\n },\r\n \r\n };\r\n\r\n vm.textInput = '';\r\n vm.procesoInicializacion = true;\r\n\r\n vm.save = save;\r\n vm.saveAndClose = saveAndClose;\r\n vm.saveAndNew = saveAndNew;\r\n vm.onPaisChange = onPaisChange;\r\n vm.onProvinciaChange = onProvinciaChange;\r\n vm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n vm.clearEntDir = clearEntDir; \r\n vm.onAddressChange = onAddressChange; \r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n vm.accionSaveList = [\r\n {\r\n accionTexto: 'Guardar y cerrar',\r\n accion: vm.saveAndClose,\r\n selected: computeValueAccionSelected('guardarCerrar')\r\n },\r\n {\r\n accionTexto: 'Guardar y nuevo',\r\n accion: vm.saveAndNew,\r\n selected: computeValueAccionSelected('saveAndNew')\r\n },\r\n {\r\n accionTexto: 'Guardar',\r\n accion: vm.save,\r\n selected: computeValueAccionSelected('save')\r\n },\r\n ];\r\n\r\n /* INITIALIZER */\r\n (function () {\r\n //Edit\r\n if (id != null) {\r\n vm.edit = true;\r\n tallerService.getById(id)\r\n .then(function (taller) {\r\n \r\n vm.taller = taller;\r\n getGenericData();\r\n });\r\n }\r\n //New\r\n else {\r\n getGenericData();\r\n }\r\n })();\r\n\r\n function computeValueAccionSelected(accion) {\r\n if (accion === vm.stateParams.accion) { return true; }\r\n return false;\r\n }\r\n\r\n\r\n\r\n /* PRIVATE FUNCTIONS */\r\n function getGenericData() {\r\n genericDataService.getPaises()\r\n .then(function (res) {\r\n \r\n vm.genericData.paises.list = res;\r\n var modelPais = findByProperty(vm.genericData.paises.list, 'nombre', vm.taller.pais);\r\n if (modelPais) {\r\n vm.genericData.paises.selected = modelPais;\r\n }\r\n else {\r\n vm.genericData.paises.selected = vm.genericData.paises.list[0];\r\n }\r\n selectChanged(vm.genericData.paises.list, vm.genericData.paises.selected, false);\r\n genericDataService.getProvinces(null, vm.genericData.paises.selected.id)\r\n .then(function (res) {\r\n \r\n vm.genericData.provinces.list = res;\r\n var modelProvincia = findByProperty(vm.genericData.provinces.list, 'nombre', vm.taller.provincia);\r\n if (modelProvincia) {\r\n vm.genericData.provinces.selected = modelProvincia;\r\n }\r\n else {\r\n vm.genericData.provinces.selected = vm.genericData.provinces.list[0];\r\n }\r\n selectChanged(vm.genericData.provinces.list, vm.genericData.provinces.selected, false);\r\n genericDataService.getPopulations(null, vm.genericData.provinces.selected.id)\r\n .then(function (res) {\r\n vm.genericData.poblaciones.list = res;\r\n var modelPoblacion = findByProperty(vm.genericData.poblaciones.list, 'nombre', vm.taller.poblacion);\r\n if (modelPoblacion) {\r\n vm.genericData.poblaciones.selected = modelPoblacion;\r\n }\r\n else {\r\n vm.genericData.poblaciones.selected = vm.genericData.poblaciones.list[0];\r\n }\r\n selectChanged(vm.genericData.poblaciones.list, vm.genericData.poblaciones.selected, false);\r\n setTimeout(function () { vm.procesoInicializacion = false; }, 3000);\r\n });\r\n });\r\n });\r\n\r\n }\r\n\r\n function doSave(action) {\r\n if (vm.edit && (vm.taller.id === null || vm.taller.id === '' || vm.taller.id === undefined)) {\r\n sendErrorRequire();\r\n return;\r\n }\r\n vm.taller.pais = vm.genericData.paises.selected.nombre;\r\n vm.taller.provincia = vm.genericData.provinces.selected.nombre;\r\n vm.taller.poblacion = vm.genericData.poblaciones.selected.nombre;\r\n\r\n tallerService.add(vm.taller).then(function (tallerSave) {\r\n sendSAveNotification();\r\n vm.edit = true;\r\n if (action === 'saveAndClose') {\r\n $state.go('flota.configuracion.listadoTalleres');\r\n }\r\n else if (action === 'saveAndNew') {\r\n $state.go('flota.configuracion.nuevoTaller', { 'accion': 'saveAndNew' });\r\n }\r\n else {\r\n vm.taller.id = tallerSave.id;\r\n vm.taller.tallerId = tallerSave.tallerId;\r\n }\r\n });\r\n }\r\n\r\n function save() {\r\n var action = 'save';\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n doSave(action);\r\n }\r\n\r\n function saveAndClose() {\r\n var action = 'saveAndClose';\r\n doSave(action);\r\n }\r\n\r\n function saveAndNew() {\r\n for (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n if (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n else { vm.accionSaveList[i].selected = false; }\r\n }\r\n var action = 'saveAndNew';\r\n doSave(action);\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'El taller se ha guardado correctamente',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorRequire() {\r\n notificationService.sendAppNotification({\r\n message: 'El campo Id es obligatorio',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n });\r\n }\r\n\r\n // Try to find the selected element in the list using the id property\r\n // If requireId is false it will keep the name even when id is null\r\n function selectChanged(list, selected, requireId) {\r\n requireId = (typeof requireId === 'undefined') ? true : requireId; //RequireId defaults to TRUE\r\n if (!list || !selected) { return; } //If the is no list or element exit\r\n if (list.length <= 0 || selected.id == null) { // Delete element unless it doesnt require id\r\n if (!requireId) { return; }\r\n selected.nombre = null;\r\n selected.id = null;\r\n return;\r\n }\r\n var find = findByProperty(list, 'id', selected.id);\r\n if (find) {\r\n selected.nombre = find.nombre;\r\n selected.id = find.id;\r\n } else {\r\n selected.nombre = null;\r\n selected.id = null;\r\n }\r\n }\r\n\r\n function findByProperty(array, property, id) {\r\n if (array === null) { return null; }\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i][property] === id) {\r\n return array[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function onPaisChange() {\r\n if (!vm.procesoInicializacion) {\r\n var p = vm.genericData.paises.selected && vm.genericData.paises.selected.id;\r\n getProvincias(p);\r\n }\r\n\r\n }\r\n\r\n function getProvincias(pais) {\r\n if (pais == null) {\r\n vm.genericData.provinces.list = null;\r\n }\r\n else {\r\n vm.genericData.provinces.loading = true;\r\n genericDataService.getProvinces(null, pais)\r\n .then(function (res) {\r\n vm.genericData.provinces.loading = false;\r\n vm.genericData.provinces.list = res;\r\n selectChanged(vm.genericData.provinces.list, vm.genericData.provinces.selected);\r\n\r\n if (vm.genericData.provinces.id == null) {\r\n vm.genericData.provinces.selected = vm.genericData.provinces.list[0];\r\n }\r\n });\r\n }\r\n }\r\n\r\n function onProvinciaChange() {\r\n if (!vm.procesoInicializacion) {\r\n var p = vm.genericData.provinces.selected && vm.genericData.provinces.selected.id;\r\n getPoblaciones(p);\r\n }\r\n }\r\n\r\n function getPoblaciones(poblacion) {\r\n if (poblacion == null) { vm.genericData.poblaciones.list = null; }\r\n else {\r\n vm.genericData.poblaciones.loading = true;\r\n genericDataService.getPopulations(null, poblacion)\r\n .then(function (res) {\r\n vm.genericData.poblaciones.loading = false;\r\n vm.genericData.poblaciones.list = res;\r\n selectChanged(vm.genericData.poblaciones.list, vm.genericData.poblaciones.selected);\r\n\r\n if (vm.genericData.poblaciones.id == null) {\r\n vm.genericData.poblaciones.selected = vm.genericData.poblaciones.list[0];\r\n }\r\n });\r\n }\r\n }\r\n\r\n function effectClass(target) {\r\n vm.effects = {};\r\n vm.effects[target] = true;\r\n setTimeout(function () {\r\n vm.effects[target] = undefined;\r\n }, 3000);\r\n }\r\n\r\n function resizableInput(el, factor) {\r\n var int = Number(factor) || 7.7;\r\n function resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n var e = 'keyup,keypress,focus,blur,change'.split(',');\r\n for (var i in e) { el.addEventListener(e[i], resize, false); }\r\n resize();\r\n }\r\n\r\n function resizable() {\r\n resizableInput(document.getElementById('txt'), 7);\r\n }\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if (!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n function clearEntDir() {\r\n vm.taller.direccion = null;\r\n vm.genericData.paises.selected = vm.genericData.paises[0]; \r\n vm.genericData.provinces.selected = vm.genericData.provinces[0];\r\n vm.genericData.poblaciones.selected = vm.genericData.poblaciones[0];;\r\n vm.taller.cp = null;\r\n vm.taller.longitud = null;\r\n vm.taller.latitud = null;\r\n }\r\n\r\n function onAddressChange(address) {\r\n vm.taller.cp = address.cp;\r\n var watchers = $scope.$$watchers;\r\n $scope.$$watchers = [];\r\n\r\n if (!common.isNullOrUndefined(address.country)) {\r\n vm.genericData.paises.selected.nombre = address.country.toUpperCase();\r\n }\r\n\r\n if (!common.isNullOrUndefined(address.state)) {\r\n vm.genericData.provinces.selected.nombre = address.state.toUpperCase();\r\n }\r\n\r\n if (!common.isNullOrUndefined(address.city)) {\r\n vm.genericData.poblaciones.selected.nombre = address.city.toUpperCase();\r\n }\r\n\r\n $scope.$$watchers = watchers;\r\n\r\n }\r\n\r\n }\r\n\r\n})();\r\n\r\n\r\n\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('WorkshopListController', WorkshopListController);\r\n \r\n\r\n WorkshopListController.$inject = [\r\n '$templateCache',\r\n 'tallerService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants', \r\n 'restrictionService'\r\n\r\n ];\r\n\r\n \r\n\r\n function WorkshopListController(\r\n $templateCache,\r\n tallerService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants,\r\n restrictionService) {\r\n\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/vehicles/stateTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n\r\n vm.restrictionService = restrictionService; \r\n\r\n vm.focusedRow = null;\r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.firstLoaded = false;\r\n\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'id',\r\n columnDefs: [\r\n {\r\n field: 'id',\r\n displayName: 'Id',\r\n resizable: true,\r\n width: 80,\r\n sort: { priority: 1, direction: 'desc' }\r\n },\r\n {\r\n field: 'nombre',\r\n cellClass: 'strong',\r\n displayName: 'Nombre',\r\n resizable: true,\r\n\r\n }, {\r\n field: 'direccion',\r\n cellClass: 'strong',\r\n displayName: 'Direccion',\r\n resizable: true,\r\n\r\n }, {\r\n field: 'poblacion',\r\n cellClass: 'strong',\r\n displayName: 'Población',\r\n resizable: true,\r\n\r\n },\r\n {\r\n field: 'provincia',\r\n cellClass: 'strong',\r\n displayName: 'Provincia',\r\n resizable: true,\r\n\r\n },\r\n {\r\n field: 'telefono',\r\n cellClass: 'strong',\r\n displayName: 'Teléfono',\r\n resizable: true,\r\n\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: false,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('talleres')];\r\n\r\n\r\n (function () {\r\n\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (!common.isNullOrUndefined(vm.tab) && vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n\r\n function loadData() {\r\n\r\n clearAll();\r\n\r\n\r\n tallerService.getList(sorting).then(function (result) {\r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n\r\n $scope.gridData = result.data.list;\r\n vm.gridData = result.data.list;\r\n });\r\n }\r\n\r\n\r\n function focusRow(taller) {\r\n vm.focusedRow = taller.tallerId;\r\n }\r\n\r\n function isFocused(taller) {\r\n return vm.focusedRow === taller.tallerId;\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(taller) {\r\n vm.focusedRow = taller.tallerId;\r\n restrictionService.hasPermission('modificar', 'taller', 'flota.configuracion.editarTaller', { 'id': taller.tallerId });\r\n\r\n //$state.go('flota.configuracion.editarTaller', { 'id': taller.tallerId });\r\n }\r\n\r\n function remove(taller) {\r\n if (!restrictionService.hasPermission('eliminar', 'taller')) return; \r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja taller...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n tallerService.deleteById([taller.tallerId]).then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'taller dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el taller',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'usuario')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los talleres seleccionados?') \r\n .then(function (result) {\r\n if (result) {\r\n var talleresIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n talleresIds.push(selected[i].tallerId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja talleres...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n tallerService.deleteById(talleresIds)\r\n .then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'talleres dados de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los talleres',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('activarControlHorarioController', activarControlHorarioController);\r\n\r\n\r\n activarControlHorarioController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'notificationService', 'common', 'userService'\r\n ];\r\n\r\n\r\n function activarControlHorarioController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, notificationService, common, userService ) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.goToSubscription = goToSubscription; \r\n (function () {\r\n \r\n })();\r\n\r\n function goToSubscription() {\r\n $state.go('flota.suscripciones.general');\r\n }\r\n\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('detalleJornadaController', detalleJornadaController);\r\n\r\n\r\n detalleJornadaController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'notificationService', 'logEmpleadosService', 'common', 'modals', 'userService'\r\n ];\r\n\r\n\r\n function detalleJornadaController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, notificationService, logEmpleadosService, common, modals, userService ) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n var id = $stateParams.id;\r\n var screen = $stateParams.type; \r\n var tabNumber = $stateParams.tabNumber; \r\n var empleadoId = $stateParams.empleadoId; \r\n vm.jornada = {}; \r\n vm.modificaciones = [];\r\n vm.allowRegularizar = false; \r\n vm.canApprove = true; \r\n vm.estados = [\r\n 'Activa', 'Finalizada', 'Aprobada', 'Aceptada', 'Rechazada', 'Archivada'\r\n ];\r\n vm.loaded = false; \r\n vm.observaciones = {list: [], add: null}; \r\n vm.newEfectivas = 0; \r\n vm.newPresencia = 0; \r\n vm.newDescanso = 0; \r\n vm.orEfectivas = 0;\r\n vm.orPresencia = 0;\r\n vm.orDescanso = 0; \r\n vm.fechaIni = null;\r\n vm.jornadaOrig = false;\r\n vm.cumpleModificaciones = false;\r\n vm.newInicio = null; \r\n vm.newFin = null; \r\n \r\n vm.showRegularizar = showRegularizar; \r\n vm.regularizarCallback = regularizarCallback;\r\n vm.formatDateToHours = formatDateToHours; \r\n vm.secondsToHoursAndMinutes = secondsToHoursAndMinutes; \r\n vm.save = save; \r\n vm.aprobar = aprobar;\r\n vm.cancelar = cancelar; \r\n vm.showMap = showMap; \r\n vm.actualize = actualize; \r\n vm.addObservacion = addObservacion; \r\n vm.eliminarDetalle = eliminarDetalle; \r\n vm.getHours = getHours; \r\n vm.changeToOrig = changeToOrig; \r\n vm.filtrarOtras = filtrarOtras; \r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n console.log('asdf');\r\n if (userService.userData.empresamaster.contrataControlHorario != true) $state.go('flota.controlHorario.activarControlHorario');\r\n\r\n logEmpleadosService.getById(id).then(function (response) {\r\n vm.jornada = response; \r\n vm.original = vm.jornada.original; \r\n vm.jornada.estadoDescripcion = vm.estados[vm.jornada.estado]; \r\n vm.allowRegularizar = vm.jornada.estado == 1 || vm.jornada.estado == 4; \r\n vm.canApprove = userService.userData.usuarioId == vm.jornada.empleado.usuarioId; \r\n vm.modificaciones = vm.jornada.registroJornadaDetalles.filter(x=> x.duracion != 0);\r\n parseObservaciones(vm.observaciones, vm.jornada.observaciones); \r\n vm.loaded = true; \r\n vm.cumpleModificaciones = (vm.jornada.estado == 1 || vm.jornada.estado == 4 )&& vm.jornadaOrig == false;\r\n \r\n if(vm.jornada.estado == 1) {\r\n vm.fechaIni = vm.jornada.registroJornadaDetalles[0].fechaIni;\r\n calcularOriginales(); \r\n }\r\n else {\r\n vm.orEfectivas = vm.jornada.horas.efectivas;\r\n vm.orDescanso = vm.jornada.horas.descanso;\r\n vm.orPresencia = vm.jornada.horas.presencia;\r\n }\r\n vm.newInicio = vm.jornada.hInicio;\r\n vm.newFin = vm.jornada.hFin;\r\n vm.newEfectivas = vm.jornada.horas.efectivas;\r\n vm.newDescanso = vm.jornada.horas.descanso;\r\n vm.newPresencia = vm.jornada.horas.presencia;\r\n });\r\n }\r\n\r\n function actualize() {\r\n vm.loaded = false;\r\n loadData(); \r\n }\r\n\r\n function changeToOrig() {\r\n vm.cumpleModificaciones = vm.jornadaOrig == true ? false : true; \r\n }\r\n\r\n function showMap(lat, long) {\r\n if (lat == null || long == null) sendErrorNotification();\r\n else modals.showModal('showMap', {\r\n lat: lat,\r\n lng: long\r\n });\r\n }\r\n\r\n function getHours(num) {\r\n if(vm.jornadaOrig == false) {\r\n if(num == 0) return secondsToHoursAndMinutes(vm.newEfectivas);\r\n else if (num == 1) return secondsToHoursAndMinutes(vm.newPresencia);\r\n else if(num == 2) return secondsToHoursAndMinutes(vm.newDescanso);\r\n }\r\n else{\r\n if (num == 0) return secondsToHoursAndMinutes(vm.orEfectivas);\r\n else if (num == 1) return secondsToHoursAndMinutes(vm.orPresencia);\r\n else if (num == 2) return secondsToHoursAndMinutes(vm.orDescanso);\r\n }\r\n }\r\n\r\n function showRegularizar(option, idx) {\r\n modals.showModal('regularizar', vm.regularizarCallback, {\r\n option: option,\r\n index: idx,\r\n tipoEmpleado: vm.jornada.empleado.tipoEmpleado,\r\n fechaIni: vm.fechaIni\r\n });\r\n }\r\n\r\n function regularizarCallback(hIni, hFin, estado, observaciones, duracion, idx, accion) {\r\n vm.original = false; \r\n if(idx != undefined) {\r\n vm.modificaciones[idx].duracion = duracion; \r\n vm.modificaciones[idx].fechaIni = hIni;\r\n vm.modificaciones[idx].fechaFin = hFin;\r\n vm.modificaciones[idx].observaciones = observaciones;\r\n vm.modificaciones[idx].accion = accion;\r\n vm.modificaciones[idx].prioritario = true; \r\n }\r\n else {\r\n vm.modificaciones.push({\r\n duracion: duracion,\r\n fechaFin: hFin,\r\n fechaIni: hIni,\r\n grupoEstadoEmpleadoId: estado.grupoEstadoEmpleadoId,\r\n observaciones: observaciones,\r\n registroJornadaDetalleId: -1,\r\n registroJornadaId: estado.registroJornadaId,\r\n grupoEstadoEmpleado: estado,\r\n usuarioId: null, \r\n accion: 1, \r\n registroJornadaId: vm.jornada.registroJornadaId, \r\n prioritario: true, \r\n original: false\r\n })\r\n }\r\n vm.modificaciones.sort(function(a,b){\r\n return new Date(a.fechaIni) - new Date(b.fechaIni); \r\n }); \r\n recalcularDetalles(); \r\n }\r\n \r\n function eliminarDetalle(idx) {\r\n vm.original = false;\r\n if(idx != 0 && idx != vm.modificaciones.length-1) {\r\n vm.modificaciones[idx-1].fechaFin = vm.modificaciones[idx].fechaFin;\r\n vm.modificaciones[idx-1].accion = vm.modificaciones[idx-1].accion == 1 ? 1 : 2; \r\n vm.modificaciones[idx - 1].duracion = getDuracion(vm.modificaciones[idx - 1].fechaIni, vm.modificaciones[idx - 1].fechaFin);\r\n }\r\n vm.modificaciones.splice(idx, 1); \r\n recalcularTiempos(); \r\n }\r\n\r\n function recalcularDetalles() {\r\n var prio = vm.modificaciones.findIndex(x=> x.prioritario); \r\n vm.modificaciones[prio].prioritario = false; \r\n console.log('asdf');\r\n if (prio != vm.modificaciones.length - 1) {\r\n vm.modificaciones[prio + 1].fechaIni = vm.modificaciones[prio].fechaFin;\r\n vm.modificaciones[prio + 1].duracion = getDuracion(vm.modificaciones[prio + 1].fechaIni, vm.modificaciones[prio + 1].fechaFin);\r\n vm.modificaciones[prio + 1].accion = vm.modificaciones[prio + 1].accion == 1 ? 1 : 2;\r\n }\r\n if (prio != 0) {\r\n if (vm.modificaciones[prio].fechaFin < vm.modificaciones[prio - 1].fechaFin) {\r\n vm.modificaciones.splice(prio + 1, 0,\r\n {\r\n fechaIni: vm.modificaciones[prio].fechaFin,\r\n fechaFin: vm.modificaciones[prio - 1].fechaFin,\r\n duracion: getDuracion(vm.modificaciones[prio - 1].fechafin, vm.modificaciones[prio].fechaFin),\r\n accion: vm.modificaciones[prio - 1].accion\r\n });\r\n }\r\n vm.modificaciones[prio-1].fechaFin = vm.modificaciones[prio].fechaIni; \r\n vm.modificaciones[prio -1].duracion = getDuracion(vm.modificaciones[prio - 1].fechaIni, vm.modificaciones[prio - 1].fechaFin);\r\n vm.modificaciones[prio - 1].accion = vm.modificaciones[prio - 1].accion == 1 ? 1 : 2;\r\n\r\n }\r\n var idx = prio+1; \r\n var flag = true; \r\n while(idx < vm.modificaciones.length && flag) {\r\n if(moment(vm.modificaciones[idx].fechaFin) < moment(vm.modificaciones[prio].fechaFin)) {\r\n vm.modificaciones.splice(idx, 1); \r\n --idx; \r\n }//eliminar estado \r\n else {\r\n flag = false; \r\n }\r\n ++idx; \r\n }\r\n\r\n recalcularTiempos(); \r\n }\r\n\r\n function recalcularTiempos() {\r\n vm.newEfectivas = 0; \r\n vm.newPresencia = 0; \r\n vm.newDescanso = 0; \r\n for(var i = 0; i < vm.modificaciones.length; i++) {\r\n var estado = vm.modificaciones[i].grupoEstadoEmpleadoId; \r\n if(estado == 0) vm.newPresencia += vm.modificaciones[i].duracion; \r\n else if(estado == 1 || estado == 2) vm.newEfectivas += vm.modificaciones[i].duracion; \r\n else if(estado == 3) vm.newDescanso += vm.modificaciones[i].duracion; \r\n }\r\n vm.newInicio = vm.modificaciones.length != 0 ? moment(vm.modificaciones[0].fechaIni).format('HH:mm') : '--:--'; \r\n vm.newFin = vm.modificaciones.length != 0 ? moment(vm.modificaciones[(vm.modificaciones.length-1)].fechaFin).format('HH:mm') : '--:--';\r\n\r\n } \r\n\r\n function calcularOriginales() {\r\n vm.orEfectivas = 0;\r\n vm.orPresencia = 0;\r\n vm.orDescanso = 0;\r\n for (var i = 0; i < vm.jornada.registroJornadaDetalles.length; i++) {\r\n if(vm.jornada.registroJornadaDetalles[i].original == true) {\r\n var estado = vm.jornada.registroJornadaDetalles[i].grupoEstadoEmpleadoId;\r\n if (estado == 0) vm.orPresencia += vm.jornada.registroJornadaDetalles[i].duracionOrig;\r\n else if (estado == 1 || estado == 2) vm.orEfectivas += vm.jornada.registroJornadaDetalles[i].duracionOrig;\r\n else if (estado == 3) vm.orDescanso += vm.jornada.registroJornadaDetalles[i].duracionOrig;\r\n }\r\n }\r\n }\r\n\r\n function getDuracion(ini, fin) {\r\n var difference = moment(fin).diff(moment(ini), 'seconds');\r\n return difference;\r\n };\r\n\r\n function formatDateToHours(date) {\r\n if (date == null) return \"--:--\";\r\n return moment(date).format('HH:mm');\r\n }\r\n\r\n function compare(a, b) {\r\n if (a.fechaIni < b.fechaIni) {\r\n return -1;\r\n }\r\n if (a.fechaIni > b.fechaIni) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n function save() {\r\n var modifi = []; \r\n for(var i = 0; i < vm.modificaciones.length; i++) {\r\n modifi.push({\r\n GrupoEstadoEmpleadoId: vm.modificaciones[i].grupoEstadoEmpleadoId,\r\n RegistroJornadaId: vm.modificaciones[i].registroJornadaId, \r\n FechaIni: new Date(vm.modificaciones[i].fechaIni),\r\n FechaFin: new Date(vm.modificaciones[i].fechaFin),\r\n Duracion: vm.modificaciones[i].duracion,\r\n Observaciones: vm.modificaciones[i].observaciones, \r\n RegistroJornadaDetalleId: vm.modificaciones[i].registroJornadaDetalleId, \r\n Accion: vm.modificaciones[i].accion\r\n });\r\n }\r\n logEmpleadosService.save(modifi, vm.jornada.observaciones, vm.jornada.registroJornadaId).then(function() {\r\n sendSAveNotification();\r\n cancelar();\r\n });\r\n }\r\n\r\n function secondsToHoursAndMinutes(seconds) {\r\n var horas = \"\"; \r\n if(seconds < 0) {\r\n horas = \"-\";\r\n }\r\n horas += Math.abs(Math.trunc(seconds / 3600)).toString() + \" h \";\r\n var minutes = Math.abs(Math.round((seconds % 3600) / 60)).toString() + \" min\";\r\n return horas + minutes;\r\n\r\n }\r\n\r\n function sendSAveNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'La jornada se ha guardado correctamente',\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function sendAprobarNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'La jornada se ha guardado y aprobado correctamente',\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function sendErrorNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'La ubicación del empleado en ese momento no está disponible',\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function aprobar() {\r\n var lista = [];\r\n var modifi = [];\r\n for (var i = 0; i < vm.modificaciones.length; i++) {\r\n modifi.push({\r\n GrupoEstadoEmpleadoId: vm.modificaciones[i].grupoEstadoEmpleadoId,\r\n RegistroJornadaId: vm.modificaciones[i].registroJornadaId,\r\n FechaIni: new Date(vm.modificaciones[i].fechaIni),\r\n FechaFin: new Date(vm.modificaciones[i].fechaFin),\r\n Duracion: vm.modificaciones[i].duracion,\r\n Observaciones: vm.modificaciones[i].observaciones,\r\n RegistroJornadaDetalleId: vm.modificaciones[i].registroJornadaDetalleId,\r\n Accion: vm.modificaciones[i].accion\r\n });\r\n }\r\n lista.push(vm.jornada.registroJornadaId);\r\n logEmpleadosService.save(modifi, vm.jornada.observaciones, vm.jornada.registroJornadaId).then(function () {\r\n sendSAveNotification();\r\n logEmpleadosService.aprobar(lista).then(function () {\r\n sendAprobarNotification();\r\n cancelar();\r\n });\r\n });\r\n \r\n }\r\n\r\n function cancelar() {\r\n console.log(empleadoId); \r\n $state.go('flota.controlHorario.fichajes', {\r\n 'tabNumber': tabNumber, \r\n 'empleadoId': empleadoId\r\n });\r\n }\r\n\r\n\r\n function parseObservaciones(obs, data) {\r\n if (data == null) {\r\n obs.list = [];\r\n } else {\r\n try {\r\n obs.list = JSON.parse(data);\r\n } catch (e) {\r\n data = JSON.stringify([{\r\n text: data\r\n }]);\r\n obs.list = JSON.parse(data);\r\n }\r\n }\r\n }\r\n\r\n function addObservacion(obs) {\r\n if (!obs.add) {\r\n return;\r\n }\r\n obs.list.push({\r\n text: obs.add,\r\n time: Date.now(),\r\n author: userService.userData.name ? userService.userData.name : '' +\r\n (userService.userData.surname ? ' ' + userService.userData.surname : '')\r\n });\r\n obs.add = null;\r\n\r\n vm.jornada.observaciones = JSON.stringify(vm.observaciones.list);\r\n \r\n }\r\n\r\n function filtrarOtras(obj) {\r\n if(obj.duracion == 0)return false; \r\n return true; \r\n }\r\n\r\n\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('detalleMiJornadaController', detalleMiJornadaController);\r\n\r\n\r\n detalleMiJornadaController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'notificationService', 'logEmpleadosService', 'common', 'modals', 'userService'\r\n ];\r\n\r\n\r\n function detalleMiJornadaController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, notificationService, logEmpleadosService, common, modals, userService ) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n var id = $stateParams.id;\r\n var tabNumber = $stateParams.tabNumber; \r\n vm.jornada = {}; \r\n vm.modificaciones = [];\r\n vm.allowAceptar = false; \r\n vm.estados = [\r\n 'Activa', 'Finalizada', 'Aprobada', 'Aceptada', 'Rechazada'\r\n ];\r\n vm.loaded = false; \r\n vm.observaciones = {list: [], add: null}; \r\n vm.jornadaOrig = false; \r\n vm.newEfectivas = 0; \r\n vm.newDescanso = 0; \r\n\r\n vm.showRechazar = showRechazar;\r\n vm.rechazarCallback = rechazarCallback;\r\n vm.formatDateToHours = formatDateToHours; \r\n vm.secondsToHoursAndMinutes = secondsToHoursAndMinutes; \r\n vm.aceptar = aceptar;\r\n vm.cancelar = cancelar; \r\n vm.getSobrantes = getSobrantes; \r\n vm.actualize = actualize; \r\n vm.addObservacion = addObservacion; \r\n vm.rechazar = rechazar;\r\n vm.changeToOrig = changeToOrig;\r\n vm.getHours = getHours;\r\n vm.filtrarOtras = filtrarOtras; \r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n if (userService.userData.empresamaster.contrataControlHorario != true) $state.go('flota.controlHorario.activarControlHorario');\r\n\r\n logEmpleadosService.getMyById(id).then(function (response) {\r\n vm.jornada = response; \r\n vm.original = vm.jornada.original;\r\n vm.jornada.estadoDescripcion = vm.estados[vm.jornada.estado]; \r\n vm.allowAceptar = vm.jornada.estado == 2 && (vm.jornada.empleado.empleadoId == userService.userData.empleadoId); \r\n vm.cumpleModificaciones = vm.jornada.estado == 2 && vm.jornadaOrig == false;\r\n vm.modificaciones = vm.jornada.registroJornadaDetalles.filter(x => x.duracion != 0);\r\n parseObservaciones(vm.observaciones, vm.jornada.observaciones); \r\n vm.loaded = true; \r\n if (vm.jornada.estado == 2) {\r\n vm.fechaIni = vm.jornada.registroJornadaDetalles[0].fechaIni;\r\n calcularOriginales();\r\n } else {\r\n vm.orEfectivas = vm.jornada.horas.efectivas;\r\n vm.orDescanso = vm.jornada.horas.descanso;\r\n }\r\n vm.newInicio = vm.jornada.hInicio;\r\n vm.newFin = vm.jornada.hFin;\r\n vm.newEfectivas = vm.jornada.horas.efectivas;\r\n vm.newDescanso = vm.jornada.horas.descanso;\r\n });\r\n \r\n }\r\n\r\n function actualize() {\r\n vm.loaded = false; \r\n loadData(); \r\n }\r\n \r\n function calcularOriginales() {\r\n vm.orEfectivas = 0;\r\n vm.orDescanso = 0;\r\n for (var i = 0; i < vm.jornada.registroJornadaDetalles.length; i++) {\r\n if (vm.jornada.registroJornadaDetalles[i].original == true) {\r\n var estado = vm.jornada.registroJornadaDetalles[i].grupoEstadoEmpleadoId;\r\n if (estado == 1 || estado == 2) vm.orEfectivas += vm.jornada.registroJornadaDetalles[i].duracionOrig;\r\n else if (estado == 3) vm.orDescanso += vm.jornada.registroJornadaDetalles[i].duracionOrig;\r\n }\r\n }\r\n }\r\n\r\n function getHours(num) {\r\n if (vm.jornadaOrig == false) {\r\n if (num == 0) return secondsToHoursAndMinutes(vm.newEfectivas);\r\n else if (num == 2) return secondsToHoursAndMinutes(vm.newDescanso);\r\n } else {\r\n if (num == 0) return secondsToHoursAndMinutes(vm.orEfectivas);\r\n else if (num == 2) return secondsToHoursAndMinutes(vm.orDescanso);\r\n }\r\n }\r\n\r\n function showRechazar() {\r\n modals.showModal('anadirObservacion', vm.rechazarCallback);\r\n }\r\n\r\n function rechazarCallback(observacion) {\r\n if(observacion != '') {\r\n vm.observaciones.add = observacion; \r\n vm.addObservacion(vm.observaciones); \r\n }\r\n logEmpleadosService.rechazarJornada(vm.jornada.registroJornadaId, vm.jornada.observaciones).then(function () {\r\n sendSAveNotification('La jornada se ha rechazado correctamente');\r\n cancelar();\r\n });\r\n }\r\n\r\n function changeToOrig() {\r\n vm.cumpleModificaciones = vm.jornadaOrig == true ? false : true;\r\n }\r\n \r\n function formatDateToHours(date) {\r\n if(date == null) return \"--:--\"; \r\n return moment(date).format('HH:mm');\r\n }\r\n\r\n function rechazar() {\r\n vm.showRechazar()\r\n \r\n }\r\n\r\n function secondsToHoursAndMinutes(seconds) {\r\n var horas = \"\"; \r\n if(seconds < 0) {\r\n horas = \"-\";\r\n }\r\n horas += Math.abs(Math.trunc(seconds / 3600)).toString() + \" h \";\r\n var minutes = Math.abs(Math.round((seconds % 3600) / 60)).toString() + \" min\";\r\n return horas + minutes;\r\n\r\n }\r\n\r\n function sendSAveNotification(msg) {\r\n notificationService.sendAppNotification({\r\n message: msg,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function aceptar() {\r\n var lista = [];\r\n lista.push(vm.jornada.registroJornadaId);\r\n logEmpleadosService.aceptarJornadas(lista).then(function () {\r\n sendAprobarNotification();\r\n cancelar();\r\n });\r\n \r\n }\r\n\r\n function sendAprobarNotification() {\r\n notificationService.sendAppNotification({\r\n message: 'La jornada se ha guardado y aprobado correctamente',\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function cancelar() {\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Detalle jornada'), 1);\r\n\r\n $state.go('flota.misfichajes', {\r\n 'tabNumber': tabNumber\r\n });\r\n }\r\n\r\n function getSobrantes() {\r\n if (43200 < vm.jornada.horas.trabajadas) {\r\n vm.jornada.sobrantesContrato = vm.jornada.horas.trabajadas - 43200; \r\n return vm.secondsToHoursAndMinutes(vm.jornada.sobrantesContrato);\r\n }\r\n else {\r\n vm.jornada.sobrantesContrato = null; \r\n }\r\n return null; \r\n }\r\n\r\n function parseObservaciones(obs, data) {\r\n if (data == null) {\r\n obs.list = [];\r\n } else {\r\n try {\r\n obs.list = JSON.parse(data);\r\n } catch (e) {\r\n data = JSON.stringify([{\r\n text: data\r\n }]);\r\n obs.list = JSON.parse(data);\r\n }\r\n }\r\n }\r\n\r\n function addObservacion(obs) {\r\n if (!obs.add) {\r\n return;\r\n }\r\n obs.list.push({\r\n text: obs.add,\r\n time: Date.now(),\r\n author: userService.userData.name ? userService.userData.name : '' +\r\n (userService.userData.surname ? ' ' + userService.userData.surname : '')\r\n });\r\n obs.add = null;\r\n\r\n vm.jornada.observaciones = JSON.stringify(vm.observaciones.list);\r\n }\r\n\r\n function filtrarOtras(obj) {\r\n if (obj.duracion == 0) return false;\r\n return true;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('disponibilidadController', disponibilidadController);\r\n\r\n \r\n\r\n disponibilidadController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'notificationService', 'logEmpleadosService', 'reportingService',\r\n 'endPoints', 'common', 'userService'];\r\n\r\n\r\n function disponibilidadController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, notificationService, logEmpleadosService, reportingService, endPoints, common, userService) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.changeTab = changeTab;\r\n vm.expandAll = expandAll;\r\n vm.goToEdit = goToEdit;\r\n vm.filterAll = filterAll;\r\n vm.goToFichajes = goToFichajes; \r\n vm.aprobar = aprobar;\r\n vm.actualize = actualize; \r\n vm.aprovacionNum = 0;\r\n vm.aceptacionNum = 0;\r\n vm.aprovacionSign = '-';\r\n vm.pendientesSign = '-';\r\n vm.expandPendientes = expandPendientes;\r\n vm.expandAccepted = expandAccepted;\r\n vm.selectOne = selectOne; \r\n vm.goToInforme = goToInforme;\r\n vm.filterJornadas = filterJornadas; \r\n vm.selectAll = selectAll; \r\n\r\n\r\n vm.selectedNum = 0;\r\n vm.meses = {\r\n list: [{\r\n id: 0,\r\n nombre: 'Enero'\r\n }, {\r\n id: 1,\r\n nombre: 'Febrero'\r\n }, {\r\n id: 2,\r\n nombre: 'Marzo'\r\n }, {\r\n id: 3,\r\n nombre: 'Abril'\r\n }, {\r\n id: 4,\r\n nombre: 'Mayo'\r\n }, {\r\n id: 5,\r\n nombre: 'Junio'\r\n }, {\r\n id: 6,\r\n nombre: 'Julio'\r\n }, {\r\n id: 7,\r\n nombre: 'Agosto'\r\n }, {\r\n id: 8,\r\n nombre: 'Septiembre'\r\n }, {\r\n id: 9,\r\n nombre: 'Octubre'\r\n }, {\r\n id: 10,\r\n nombre: 'Noviembre'\r\n }, {\r\n id: 11,\r\n nombre: 'Diciembre'\r\n }],\r\n selected: {\r\n id: 0,\r\n nombre: 'Enero'\r\n }\r\n };\r\n vm.anos = {\r\n list: [],\r\n selected: 0\r\n };\r\n\r\n vm.empleados = {\r\n list: [],\r\n selected: null\r\n };\r\n\r\n vm.tabNumber = 1;\r\n vm.active = [];\r\n vm.pending = [];\r\n vm.all = [];\r\n vm.chargedAll = false;\r\n vm.supervisor = userService.userData.usuarioId;\r\n vm.pendingNum = 0;\r\n vm.loaded = false; \r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n if (userService.userData.empresamaster.contrataControlHorario != true) $state.go('flota.controlHorario.activarControlHorario');\r\n var idx = userService.userData.restrictions.findIndex(x => x.entidad == 'controlHorario');\r\n if (idx != -1 && (userService.userData.restrictions[idx].tipo & 2) == 2) {\r\n sendErrorNotification(\"No tiene los permisos adecuados, consulte con el administrador!\");\r\n $state.go('flota.controlHorario.empleados');\r\n }\r\n logEmpleadosService.getAvailable().then(function (response) {\r\n vm.available = response.data;\r\n\r\n });\r\n logEmpleadosService.getPending(1).then(function (response) {\r\n vm.pending = response;\r\n for (var i = 0; i < vm.pending.length; i++) {\r\n vm.pending[i].selected = false;\r\n }\r\n vm.aprovacionNum = vm.pending.filter(x => x.estado == 1 || x.estado == 4).length;\r\n vm.aceptacionNum = vm.pending.filter(x => x.estado == 2).length;\r\n\r\n if ($stateParams.tabNumber != null || $stateParams.tabNumber != undefined) {\r\n vm.changeTab($stateParams.tabNumber);\r\n }\r\n vm.loaded = true; \r\n });\r\n logEmpleadosService.getPendingNum().then(function (response) {\r\n vm.pendingNum = response;\r\n }); \r\n\r\n }\r\n\r\n function sendErrorNotification(msg) {\r\n notificationService.sendAppNotification({\r\n message: msg,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function actualize() {\r\n vm.chargedAll = false; \r\n loadData();\r\n }\r\n\r\n function filterAll() {\r\n if (vm.meses.selected == null || vm.anos.selected == null || vm.empleados.selected == null) {\r\n sendErrorRequire('Los filtros no están completos!');\r\n } else {\r\n var date = new Date(vm.anos.selected.id, vm.meses.selected.id);\r\n logEmpleadosService.getAccepted(date, vm.empleados.selected.id, 1).then(function (response) {\r\n vm.all = response.data;\r\n for (var i = 0; i < vm.all.length; i++) {\r\n vm.all[i].sign = '-';\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n function sendErrorRequire(messageValue) {\r\n notificationService.sendAppNotification({\r\n message: messageValue,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'error'\r\n });\r\n }\r\n\r\n function changeTab(idx) {\r\n vm.tabNumber = idx;\r\n if (idx == 3 && vm.chargedAll == false) {\r\n vm.chargedAll = true;\r\n reportingService.getEmpleados().then(function (result) {\r\n vm.empleados.list.push({\r\n nombre: 'Todos los empleados',\r\n id: '00000000-0000-0000-0000-000000000000'\r\n })\r\n for (var i = 0; i < result.data.length; i++) {\r\n vm.empleados.list.push({\r\n nombre: result.data[i].nombre + ' ' + result.data[i].apellidos,\r\n id: result.data[i].empleadoId\r\n });\r\n }\r\n vm.empleados.selected = vm.empleados.list[0];\r\n setYearsCombo();\r\n vm.anos.selected = vm.anos.list.find(x => x.id == ((new Date().getFullYear())));\r\n vm.meses.selected = vm.meses.list.find(x => x.id == ((new Date().getMonth() == 0 ? 12 : (new Date().getMonth()-1))));\r\n vm.filterAll();\r\n });\r\n }\r\n }\r\n\r\n function setYearsCombo() {\r\n for (var i = 2016; i < 2100; i++) {\r\n vm.anos.list.push({\r\n id: i,\r\n nombre: i.toString()\r\n });\r\n }\r\n\r\n }\r\n\r\n function aprobar(item) {\r\n var lista = [];\r\n var paprobar = true;\r\n if (item == null) {\r\n for (var i = 0; i < vm.pending.length; i++) {\r\n if (vm.pending[i].empleado.usuarioId != vm.supervisor) paprobar = false;\r\n if (vm.pending[i].selected == true) lista.push(vm.pending[i].registroJornadaId);\r\n }\r\n } else {\r\n if (item.empleado.usuarioId != vm.supervisor) paprobar = false;\r\n lista.push(item.registroJornadaId);\r\n }\r\n if (paprobar) {\r\n vm.loaded = false; \r\n logEmpleadosService.aprobar(lista);\r\n vm.chargedAll = false;\r\n loadData();\r\n } else {\r\n sendErrorRequire('No tiene permiso para aprobar las jornadas seleccionadas!');\r\n\r\n }\r\n\r\n }\r\n\r\n function goToEdit(item) {\r\n\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x=> x.title == 'Guardias'), 1); \r\n\r\n $state.go('flota.controlHorario.detalleJornada', {\r\n 'id': item.registroJornadaId,\r\n 'type': 1,\r\n 'tabNumber': vm.tabNumber\r\n });\r\n\r\n }\r\n\r\n function goToFichajes() {\r\n\r\n $state.go('flota.fichajes');\r\n }\r\n\r\n function goToInforme() {\r\n $state.go('flota.informes.detalle', {\r\n 'id': 32\r\n });\r\n }\r\n\r\n function expandAll(item) {\r\n if (item.sign == '-') item.sign = '+';\r\n else item.sign = '-';\r\n }\r\n function expandPendientes(idx) {\r\n if (idx == 1) {\r\n if (vm.aprovacionSign == '-') {\r\n vm.aprovacionSign = '+';\r\n } else {\r\n vm.aprovacionSign = '-';\r\n }\r\n } else if (idx == 2) {\r\n if (vm.pendientesSign == '-') {\r\n vm.pendientesSign = '+';\r\n } else {\r\n vm.pendientesSign = '-';\r\n }\r\n }\r\n }\r\n\r\n function expandAccepted(item) {\r\n if (item.sign == '-') item.sign = '+';\r\n else item.sign = '-';\r\n }\r\n\r\n function selectOne(option) {\r\n if (option.selected == true) {\r\n option.selected = false;\r\n vm.selectedNum--;\r\n } else if (option.selected == false) {\r\n option.selected = true;\r\n vm.selectedNum++;\r\n }\r\n\r\n }\r\n\r\n function selectAll(idx) {\r\n if (idx == 1) {\r\n if (vm.allAprovacion == false) {\r\n vm.allAprovacion = true;\r\n for (var i = 0; i < vm.pending.length; i++) {\r\n if (vm.pending[i].estado == 1 || vm.pending[i].estado == 4) {\r\n if (vm.pending[i].selected == false) vm.selectedNum++;\r\n vm.pending[i].selected = true;\r\n }\r\n }\r\n } else {\r\n vm.allAprovacion = false;\r\n for (var i = 0; i < vm.pending.length; i++) {\r\n if (vm.pending[i].estado == 1 || vm.pending[i].estado == 4) {\r\n if (vm.pending[i].selected == true) vm.selectedNum--;\r\n vm.pending[i].selected = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function filterJornadas(item) {\r\n return item.estado == 1 || item.estado == 4;\r\n }\r\n\r\n }\r\n})();","\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('editarEmpleadoController', editarEmpleadoController);\r\n\r\n\r\n editarEmpleadoController.$inject = [\r\n '$stateParams',\r\n '$templateCache',\r\n 'empleadosService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants',\r\n 'restrictionService', \r\n 'modals', \r\n 'userService'\r\n ];\r\n\r\n\r\n\r\n function editarEmpleadoController(\r\n $stateParams,\r\n $templateCache,\r\n empleadosService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants,\r\n restrictionService, \r\n modals, \r\n userService\r\n ) {\r\n // jshint maxstatements:false\r\n \r\n var id = $stateParams.id;\r\n\r\n var vm = this;\r\n vm.save = save; \r\n vm.activarHorario = false; \r\n vm.showContrato = showContrato; \r\n vm.deleteContrato = deleteContrato;\r\n vm.changeActiveContract = changeActiveContract;\r\n vm.showContratoCallback = showContratoCallback; \r\n vm.goBack = goBack; \r\n\r\n\r\n vm.empleado = {}; \r\n vm.supervisores = {\r\n list : [], \r\n selected : {}, \r\n } ; \r\n\r\n vm.tiposContrato = ['Indefinido', 'Temporal', 'Prácticas', 'Contratista', 'Agencia', 'Formación y aprendizaje'];\r\n vm.tiposHoras = ['Diárias', 'Semanales'];\r\n vm.antiguoActivo = null;\r\n vm.bloqueado = true; \r\n\r\n\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n empleadosService.getById(id).then(function(response){\r\n vm.empleado=response; \r\n vm.supervisores.list = vm.empleado.supervisores; \r\n vm.supervisores.selected = vm.empleado.usuario != null ? vm.empleado.usuario: null; \r\n vm.activarHorario = vm.empleado.activarControlHorario; \r\n for(var i = 0; i < vm.empleado.contratos.length; i++) {\r\n vm.antiguoActivo = common.isNullOrUndefined(vm.empleado.contratoId) ? 0 : vm.empleado.contratoId; \r\n }\r\n vm.antiguoActivo = vm.empleado.contratoId; \r\n vm.bloqueado = vm.empleado.empresa.empresamaster.contrataControlHorario != true; \r\n }); \r\n }\r\n\r\n function goBack() {\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Editar empleado'), 1);\r\n\r\n $state.go('flota.empleados');\r\n }\r\n\r\n function save(accion) {\r\n vm.empleado.usuarioId = vm.supervisores.selected != null ? vm.supervisores.selected.usuarioid : null;\r\n if(vm.antiguoActivo == 0) {\r\n sendErrorNotification('Tiene que asignar un contrato al empleado'); \r\n return; \r\n }\r\n if(vm.empleado.activarControlHorario == true && vm.activarHorario == false && vm.empleado.registroJornadaId != null) {\r\n simpleModalService\r\n .yesNoModal('Confirmación desactivar', 'Este empleado tiene una jornada activa y procediendo a guardar la eliminará. ¿Está de acuerdo?') // ' + vm.gridApi.selection.vm.gridApi.selection.getSelectedRows() + '\r\n .then(function (result) {\r\n if (result) {\r\n if (checkLicencias()) {\r\n vm.empleado.activarControlHorario = vm.activarHorario;\r\n empleadosService.saveEmpleado({\r\n empleadoId: vm.empleado.empleadoId,\r\n supervisorId: vm.empleado.usuarioId,\r\n activarControlHorario: vm.activarHorario,\r\n contratoId: vm.antiguoActivo\r\n }).then(function (res) {\r\n userService.getUserData().then(function (response) {\r\n if (res == true) sendNotification('El empleado se ha guardado con éxito');\r\n else {\r\n sendErrorNotification('Los empleados con control horario activo superan las licencias contratadas');\r\n vm.activarHorario = false;\r\n }\r\n if (accion == 0 && res == true) {\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Editar empleado'), 1);\r\n\r\n $state.go('flota.empleados');\r\n }\r\n\r\n });\r\n });\r\n }\r\n } else return;\r\n });\r\n }\r\n else {\r\n if (checkLicencias()) {\r\n vm.empleado.activarControlHorario = vm.activarHorario;\r\n empleadosService.saveEmpleado({\r\n empleadoId: vm.empleado.empleadoId,\r\n supervisorId: vm.empleado.usuarioId,\r\n activarControlHorario: vm.activarHorario,\r\n contratoId: vm.antiguoActivo\r\n }).then(function (res) {\r\n userService.getUserData().then(function (response) {\r\n if (res == true) sendNotification('El empleado se ha guardado con éxito');\r\n else {\r\n sendErrorNotification('Los empleados con control horario activo superan las licencias contratadas');\r\n vm.activarHorario = false;\r\n }\r\n if (accion == 0 && res == true) {\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Editar empleado'), 1);\r\n\r\n $state.go('flota.empleados');\r\n }\r\n\r\n });\r\n });\r\n }\r\n }\r\n \r\n }\r\n\r\n function checkLicencias() {\r\n if(vm.supervisores.selected == null) {\r\n sendErrorNotification('Tiene que seleccionar un supervisor'); \r\n return false; \r\n }\r\n if(vm.empleado.empresa.empresamaster.contrataControlHorario == true \r\n && vm.empleado.activarControlHorario == false\r\n && vm.activarHorario == true\r\n && vm.empleado.numEmpleadosControlHorario == vm.empleado.empresa.empresamaster.numEmpleadosControlHorario) {\r\n sendErrorNotification('Los empleados con control horario activo superan las licencias contratadas');\r\n return false;\r\n } \r\n \r\n return true; \r\n }\r\n\r\n function sendErrorNotification(message) {\r\n notificationService.sendAppNotification({\r\n message: message,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'error'\r\n });\r\n }\r\n\r\n function deleteContrato(id) {\r\n empleadosService.deleteContrato(id).then(function(response){\r\n if(vm.antiguoActivo == id) vm.antiguoActivo = 0; \r\n vm.empleado.contratos.splice(vm.empleado.contratos.findIndex(x=> x.contratoId == id), 1); \r\n sendNotification('El contrato se ha eliminado con éxito');\r\n });\r\n }\r\n\r\n function sendNotification(message) {\r\n notificationService.sendAppNotification({\r\n message: message,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function showContrato(contrato) {\r\n modals.showModal('contrato', vm.showContratoCallback, {\r\n contrato: contrato,\r\n empleado: id\r\n });\r\n }\r\n\r\n function showContratoCallback() {\r\n sendNotification('Se ha guardado el contrato con éxito'); \r\n empleadosService.getContratos(vm.empleado.empleadoId).then(function(response){\r\n vm.empleado.contratos = response; \r\n\r\n }); \r\n }\r\n\r\n function changeActiveContract(item) {\r\n vm.antiguoActivo = item.contratoId;\r\n }\r\n\r\n }\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('empleadosController', empleadosController);\r\n\r\n\r\n empleadosController.$inject = [\r\n '$templateCache',\r\n 'empleadosService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants',\r\n 'restrictionService', \r\n 'userService'\r\n ];\r\n\r\n\r\n\r\n function empleadosController(\r\n $templateCache,\r\n empleadosService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants,\r\n restrictionService, \r\n userService\r\n ) {\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/empleados/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/empleados/stateTemplate.html'),\r\n nombreTemplate: $templateCache.get('app/views/tablesTemplates/empleados/nombreIconoTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n\r\n vm.focusedRow = null;\r\n vm.loaded = false; \r\n vm.empleados = []; \r\n vm.gridData = [];\r\n vm.refreshData = refreshData; \r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n enableRowHeaderSelection: false, \r\n enableRowSelection: false,\r\n multiSelect: false,\r\n enableSelectAll: false,\r\n enableFooterTotalSelected: false,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'empleadoId',\r\n columnDefs: [\r\n // {\r\n // field: 'tipoEmpleado',\r\n // displayName: 'Tipo',\r\n // cellTemplate: templates.stateTemplate,\r\n // resizable: true,\r\n // width: 40\r\n // },\r\n {\r\n field: 'nombre',\r\n cellClass: 'strong',\r\n displayName: 'Nombre',\r\n cellTemplate: templates.nombreTemplate,\r\n resizable: true,\r\n maxWidth: 180,\r\n\r\n },\r\n {\r\n name: 'apellidos',\r\n displayName: 'Apellidos',\r\n resizable: true,\r\n maxWidth: 250,\r\n\r\n },\r\n {\r\n name: 'nif',\r\n displayName: 'Nif',\r\n resizable: true,\r\n\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 100,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.filterGrid = filterGrid;\r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.clearAll = clearAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.refreshGrid = refreshGrid;\r\n vm.changeGrid = changeGrid;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n vm.deleteSearchData = deleteSearchData;\r\n vm.selectEmpresa = selectEmpresa; \r\n vm.empleadosEmpresa = []; \r\n\r\n vm.clearSearcher = clearSearcher;\r\n vm.searchText = '';\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function filterGrid() {\r\n if (vm.searchText !== '') {\r\n $scope.gridData = $filter('searchFilter')(vm.empleadosEmpresa, {\r\n 'nombre': vm.searchText,\r\n 'apellidos': vm.searchText,\r\n 'nif': vm.searchText\r\n }, true);\r\n }\r\n else {\r\n $scope.gridData = vm.empleadosEmpresa;\r\n }\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n function refreshData() {\r\n loadData();\r\n }\r\n\r\n function loadData() {\r\n vm.loaded = false; \r\n vm.searchText = ''; \r\n\r\n clearAll();\r\n genericDataService.getEmpresasFromMaster().then(function(result) {\r\n vm.empresas = result.data; \r\n vm.empresas.selected = {nombre: 'Todas', id: 0}; \r\n }); \r\n empleadosService.getAll().then(function (result) {\r\n vm.loaded = true; \r\n vm.gridOptions.totalItems = result.length;\r\n vm.firstLoaded = true;\r\n vm.empleados = result; \r\n vm.empleadosEmpresa = result; \r\n\r\n $scope.gridData = result;\r\n vm.gridData = result;\r\n\r\n });\r\n }\r\n\r\n\r\n function selectEmpresa(empresa) {\r\n if(empresa == null) {\r\n vm.empleadosEmpresa = vm.empleados;\r\n vm.empresas.selected = {\r\n nombre: 'Todas',\r\n id: 0\r\n };\r\n }\r\n else {\r\n vm.empleadosEmpresa = vm.empleados.filter(x=> x.empresaId == empresa.empresaId);\r\n vm.empresas.selected = empresa; \r\n }\r\n filterGrid(); \r\n }\r\n\r\n function focusRow(empleado) {\r\n vm.focusedRow = empleado.empleadoId;\r\n }\r\n\r\n function isFocused(empleado) {\r\n return vm.focusedRow === empleado.empleadoId;\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(empleado) {\r\n\r\n \r\n var ret = restrictionService.hasPermission(2, 'empleado', 'flota.editarEmpleado', {\r\n 'id': empleado.empleadoId\r\n });\r\n if(ret != false) $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Empleados'), 1);\r\n\r\n }\r\n\r\n function remove(empleado) {\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja empleado...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n empleadosService.deleteById([empleado.empleadoId]).then(function () {\r\n clearSearcher();\r\n vm.empleados.splice(vm.empleados.findIndex(x=> x.empleadoId == empleado.empleadoId),1); \r\n notificationService.sendAppNotification({\r\n message: 'Empleado dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el empleado',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission('eliminar', 'empleado')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los empleados seleccionados?') // ' + vm.gridApi.selection.vm.gridApi.selection.getSelectedRows() + '\r\n .then(function (result) {\r\n if (result) {\r\n var empleadoIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n empleadoIds.push(selected[i].empleadoId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja empleados...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n empleadoService.deleteById(empleadoIds)\r\n .then(function () {\r\n refreshGrid();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'empleados dados de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los empleados',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n function refreshGrid() {\r\n loadData();\r\n }\r\n\r\n function deleteSearchData() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n function changeGrid() {\r\n filterGrid();\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n }\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('fichajesController', fichajesController);\r\n\r\n\r\n fichajesController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'notificationService', 'logEmpleadosService', 'common', 'reportingService', 'userService','simpleModalService'\r\n ];\r\n\r\n\r\n function fichajesController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, notificationService, logEmpleadosService, common, reportingService, userService, simpleModalService ) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.changeTab = changeTab; \r\n vm.selectAll = selectAll; \r\n vm.selectOne = selectOne; \r\n vm.expandPendientes = expandPendientes;\r\n vm.expandAccepted = expandAccepted;\r\n vm.aprobar = aprobar; \r\n vm.archivar = archivar; \r\n vm.desarchivar = desarchivar;\r\n vm.goToEdit = goToEdit; \r\n vm.filterAccepted = filterAccepted;\r\n vm.actualize = actualize; \r\n vm.goToInforme = goToInforme; \r\n vm.orderBy = orderBy; \r\n vm.changeNumbers = changeNumbers; \r\n\r\n vm.ordered = {field: 1, order: false}; \r\n\r\n vm.selectedNum = 0;\r\n vm.meses = {\r\n list: [{\r\n id: 0,\r\n nombre: 'Enero'\r\n }, {\r\n id: 1,\r\n nombre: 'Febrero'\r\n }, {\r\n id: 2,\r\n nombre: 'Marzo'\r\n }, {\r\n id: 3,\r\n nombre: 'Abril'\r\n }, {\r\n id: 4,\r\n nombre: 'Mayo'\r\n }, {\r\n id: 5,\r\n nombre: 'Junio'\r\n }, {\r\n id: 6,\r\n nombre: 'Julio'\r\n }, {\r\n id: 7,\r\n nombre: 'Agosto'\r\n }, {\r\n id: 8,\r\n nombre: 'Septiembre'\r\n }, {\r\n id: 9,\r\n nombre: 'Octubre'\r\n }, {\r\n id: 10,\r\n nombre: 'Noviembre'\r\n }, {\r\n id: 11,\r\n nombre: 'Diciembre'\r\n }],\r\n selected: {\r\n id: 1,\r\n nombre: 'Enero'\r\n }\r\n };\r\n vm.anos = {\r\n list: [],\r\n selected: 0\r\n };\r\n\r\n vm.empleados = {\r\n list: [],\r\n selected: null\r\n };\r\n\r\n vm.aprovacionSign = '-'; \r\n vm.pendientesSign = '-'; \r\n vm.archivadasSign = '-';\r\n vm.charged = false; \r\n vm.tabNumber = 1; \r\n vm.active = []; \r\n vm.pending = []; \r\n vm.accepted = []; \r\n vm.chargedAccepted = false; \r\n vm.aprovacionNum = 0; \r\n vm.aceptacionNum = 0; \r\n vm.archivadasNum = 0;\r\n vm.allAprovacion = false; \r\n vm.supervisor = userService.userData.usuarioId;\r\n vm.drivers = 0; \r\n vm.loaded = false; \r\n vm.filterJornadas = filterJornadas; \r\n vm.filterArchivadas = filterArchivadas;\r\n\r\n vm.filterJornadasRechazadas = filterJornadasRechazadas; \r\n vm.loadedAcepted = true; \r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n if (userService.userData.empresamaster.contrataControlHorario != true) {\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Fichajes'), 1);\r\n $state.go('flota.controlHorario.activarControlHorario');\r\n }\r\n var idx = userService.userData.restrictions.findIndex(x => x.entidad == 'controlHorario');\r\n if (idx != -1 && (userService.userData.restrictions[idx].tipo & 2) == 2) {\r\n sendErrorNotification(\"No tiene los permisos adecuados, consulte con el administrador!\");\r\n $state.go('flota.empleados');\r\n }\r\n \r\n logEmpleadosService.getEmpleados().then(function (result) {\r\n vm.empleados.list = []; \r\n vm.empleados.list.push({\r\n nombre: 'Todos los empleados',\r\n id: '00000000-0000-0000-0000-000000000000'\r\n });\r\n vm.empleados.list.push({\r\n nombre: 'Mis supervisados',\r\n id: 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'\r\n });\r\n for (var i = 0; i < result.length; i++) {\r\n vm.empleados.list.push({\r\n nombre: result[i].nombre + ' ' + result[i].apellidos,\r\n id: result[i].empleadoId\r\n });\r\n }\r\n vm.empleados.selected = vm.empleados.list[0];\r\n if($stateParams.empleadoId != null || $stateParams.empleadoId != undefined) {\r\n vm.empleados.selectedPending = vm.empleados.list.find(x=> x.id == $stateParams.empleadoId); \r\n }\r\n else {\r\n vm.empleados.selectedPending = vm.empleados.list[0];\r\n }\r\n logEmpleadosService.getPending().then(function (response) {\r\n vm.pending = response; \r\n for(var i = 0; i x.estado == 2).length;\r\n vm.aprovacionNum = vm.pending.length - vm.aceptacionNum;\r\n \r\n if($stateParams.tabNumber != null || $stateParams.tabNumber != undefined) {\r\n vm.changeTab($stateParams.tabNumber);\r\n }\r\n vm.loaded = true;\r\n });\r\n logEmpleadosService.getArchivadas().then(function (response) {\r\n vm.archivadas = response;\r\n vm.archivadasNum = vm.archivadas.length;\r\n\r\n if ($stateParams.tabNumber != null || $stateParams.tabNumber != undefined) {\r\n vm.changeTab($stateParams.tabNumber);\r\n }\r\n vm.loaded = true;\r\n });\r\n setYearsCombo();\r\n vm.anos.selected = vm.anos.list.find(x => x.id == ((new Date().getFullYear())));\r\n vm.meses.selected = vm.meses.list.find(x => x.id == ((new Date().getMonth())));\r\n });\r\n logEmpleadosService.getActive().then(function (response) {\r\n vm.active = response.data;\r\n });\r\n }\r\n\r\n function sendErrorNotification(msg) {\r\n notificationService.sendAppNotification({\r\n message: msg,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n \r\n function actualize() {\r\n vm.loaded = false;\r\n vm.chargedAccepted = false; \r\n loadData();\r\n }\r\n\r\n \r\n function changeNumbers() {\r\n if(vm.empleados.selectedPending.id == 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF') {\r\n vm.aprovacionNum = vm.pending.filter(x=> (x.estado == 1 || x.estado == 4) && x.empleado.usuarioId == vm.supervisor).length; \r\n vm.aceptacionNum = vm.pending.filter(x=> (x.estado == 2) && x.empleado.usuarioId == vm.supervisor).length; \r\n vm.archivadasNum = vm.archivadas.filter(x=> x.empleado.usuarioId == vm.supervisor).length;\r\n }\r\n else if(vm.empleados.selectedPending.id != '00000000-0000-0000-0000-000000000000') {\r\n vm.aprovacionNum = vm.pending.filter(x=> (x.estado == 1 || x.estado == 4) && x.empleado.empleadoId == vm.empleados.selectedPending.id).length; \r\n vm.aceptacionNum = vm.pending.filter(x=> (x.estado == 2) && x.empleado.empleadoId == vm.empleados.selectedPending.id).length; \r\n vm.archivadasNum = vm.archivadas.filter(x=> x.empleado.empleadoId == vm.empleados.selectedPending.id).length;\r\n }\r\n else { \r\n vm.aprovacionNum = vm.pending.filter(x=> x.estado == 1 || x.estado == 4).length;\r\n vm.aceptacionNum = vm.pending.filter(x=> x.estado == 2).length;\r\n vm.archivadasNum = vm.archivadas.filter(x=> x.estado == 5).length;\r\n }\r\n }\r\n\r\n function filterJornadas(item) {\r\n if(vm.empleados.selectedPending.id == 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF') {\r\n return (item.estado == 1 || item.estado == 4) && item.empleado.usuarioId == vm.supervisor; \r\n }\r\n else if(vm.empleados.selectedPending.id != '00000000-0000-0000-0000-000000000000') {\r\n return (item.estado == 1 || item.estado == 4) && item.empleado.empleadoId == vm.empleados.selectedPending.id; \r\n }\r\n else return item.estado == 1 || item.estado == 4; \r\n }\r\n\r\n function filterArchivadas(item) {\r\n if (vm.empleados.selectedPending.id == 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF') {\r\n return item.empleado.usuarioId == vm.supervisor;\r\n } else if (vm.empleados.selectedPending.id != '00000000-0000-0000-0000-000000000000') {\r\n return item.empleado.empleadoId == vm.empleados.selectedPending.id;\r\n } else return item.estado == 5;\r\n }\r\n\r\n function filterJornadasRechazadas(item) {\r\n if(vm.empleados.selectedPending.id == 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF') {\r\n return (item.estado == 2) && item.empleado.usuarioId == vm.supervisor; \r\n }\r\n else if(vm.empleados.selectedPending.id != '00000000-0000-0000-0000-000000000000') {\r\n return item.estado == 2 && item.empleado.empleadoId == vm.empleados.selectedPending.id; \r\n }\r\n else return item.estado == 2; \r\n }\r\n\r\n function filterAccepted() {\r\n if (vm.meses.selected == null || vm.anos.selected == null || vm.empleados.selected == null) {\r\n sendErrorRequire('Los filtros no están completos!');\r\n } else {\r\n vm.loadedAcepted = false;\r\n var date = new Date(vm.anos.selected.id, vm.meses.selected.id);\r\n logEmpleadosService.getAccepted(date, vm.empleados.selected.id).then(function (response) {\r\n vm.accepted = response.data; \r\n for(var i = 0; i < vm.accepted.length; i++) {\r\n vm.accepted[i].sign = '-'; \r\n }\r\n vm.loadedAcepted = true;\r\n });\r\n }\r\n }\r\n\r\n function sendErrorRequire(messageValue) {\r\n notificationService.sendAppNotification({\r\n message: messageValue,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'error'\r\n });\r\n }\r\n\r\n function orderBy(field) {\r\n if(vm.ordered.field == field) {\r\n vm.ordered.order = !vm.ordered.order;\r\n }\r\n else {\r\n vm.ordered.field = field; \r\n vm.ordered.order = false; \r\n }\r\n vm.pending.sort(compare); \r\n }\r\n\r\n function compare(a, b) {\r\n if(vm.ordered.field == 1) { //fecha\r\n if(vm.ordered.order == true) { //ascending\r\n return moment(a.fechaOrder).isBefore(b.fechaOrder) ? -1 : 1;\r\n }\r\n else { \r\n return moment(a.fechaOrder).isBefore(b.fechaOrder) ? 1 : -1;\r\n }\r\n }\r\n else if(vm.ordered.field == 0){\r\n if(vm.ordered.order == true) return a.estado - b.estado; \r\n else return b.estado - a.estado; \r\n }\r\n else {\r\n if(vm.ordered.order == true) return a.empleado.nombre > b.empleado.nombre ? 1 : -1; \r\n else return a.empleado.nombre < b.empleado.nombre ? 1 : -1;\r\n\r\n }\r\n }\r\n\r\n function changeTab(idx) {\r\n vm.tabNumber = idx; \r\n if(idx == 3 && vm.chargedAccepted == false) {\r\n vm.chargedAccepted = true; \r\n filterAccepted();\r\n }\r\n }\r\n\r\n function setYearsCombo() {\r\n for (var i = 2016; i < 2100; i++) {\r\n vm.anos.list.push({\r\n id: i,\r\n nombre: i.toString()\r\n });\r\n }\r\n\r\n }\r\n\r\n function goToEdit(item) {\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Fichajes'), 1);\r\n $state.go('flota.controlHorario.detalleJornada', {'id': item.registroJornadaId, 'type': 0, 'tabNumber': vm.tabNumber, 'empleadoId': vm.empleados.selectedPending.id});\r\n }\r\n\r\n function goToInforme() {\r\n $state.go('flota.informes.detalle', {\r\n 'id': 32\r\n });\r\n }\r\n\r\n function aprobar(item) {\r\n var lista = []; \r\n var paprobar = true; \r\n if(item == null) {\r\n for(var i = 0; i < vm.pending.length; i++) {\r\n if (vm.pending[i].selected == true)\r\n {\r\n if (vm.pending[i].empleado.usuarioId != vm.supervisor) \r\n {\r\n paprobar = false;\r\n i = vm.pending.length - 1;\r\n }\r\n else \r\n lista.push(vm.pending[i].registroJornadaId);\r\n } \r\n\r\n }\r\n }\r\n else {\r\n if (item.empleado.usuarioId != vm.supervisor) paprobar = false;\r\n else lista.push(item.registroJornadaId);\r\n } \r\n if (paprobar) {\r\n vm.loaded = false\r\n logEmpleadosService.aprobar(lista).then(function(res){\r\n vm.chargedAccepted = false;\r\n vm.selectedNum = 0;\r\n loadData();\r\n });\r\n \r\n }\r\n else {\r\n sendErrorRequire('No tiene permiso para aprobar las jornadas seleccionadas!');\r\n\r\n }\r\n \r\n }\r\n\r\n function archivar(item) {\r\n var parchivar = true;\r\n if (item.empleado.usuarioId != vm.supervisor) parchivar = false;\r\n if (parchivar) {\r\n simpleModalService.yesNoModal('Confirmación archivar jornada',\r\n 'Si archiva la jornada no será visible para el empleado. ¿Desea archivarla igualmente?')\r\n .then(function (result) {\r\n if (result) {\r\n vm.loaded = false\r\n logEmpleadosService.archivar(item.registroJornadaId).then(function (res) {\r\n vm.chargedAccepted = false;\r\n loadData();\r\n });\r\n }\r\n });\r\n \r\n \r\n } else {\r\n sendErrorRequire('No tiene permiso para archivar las jornadas seleccionadas!');\r\n\r\n }\r\n\r\n }\r\n\r\n function desarchivar(item) {\r\n var parchivar = true;\r\n if (item.empleado.usuarioId != vm.supervisor) parchivar = false;\r\n if (parchivar) {\r\n vm.loaded = false\r\n logEmpleadosService.desarchivar(item.registroJornadaId).then(function (res) {\r\n vm.chargedAccepted = false;\r\n loadData();\r\n });\r\n } else {\r\n sendErrorRequire('No tiene permiso para archivar las jornadas seleccionadas!');\r\n\r\n }\r\n\r\n }\r\n \r\n\r\n function selectAll(idx) {\r\n if(idx == 1) {\r\n if(vm.allAprovacion == false) {\r\n vm.allAprovacion = true; \r\n for(var i = 0; i < vm.pending.length; i++) {\r\n if(vm.pending[i].estado == 1 || vm.pending[i].estado == 4) {\r\n if (vm.pending[i].selected == false) vm.selectedNum++;\r\n vm.pending[i].selected = true;\r\n } \r\n }\r\n }\r\n else {\r\n vm.allAprovacion = false;\r\n for (var i = 0; i < vm.pending.length; i++) {\r\n if (vm.pending[i].estado == 1 || vm.pending[i].estado == 4) {\r\n if (vm.pending[i].selected == true) vm.selectedNum--;\r\n vm.pending[i].selected = false;\r\n } \r\n }\r\n }\r\n }\r\n }\r\n\r\n function selectOne(option) {\r\n if(option.selected == true) {\r\n option.selected = false; \r\n vm.selectedNum--; \r\n }\r\n else if(option.selected == false) {\r\n option.selected = true; \r\n vm.selectedNum++; \r\n } \r\n\r\n }\r\n\r\n function expandPendientes(idx) {\r\n if(idx == 1) {\r\n if(vm.aprovacionSign == '-') {\r\n vm.aprovacionSign = '+'; \r\n }\r\n else {\r\n vm.aprovacionSign = '-';\r\n }\r\n }\r\n else if (idx == 2) {\r\n if (vm.pendientesSign == '-') {\r\n vm.pendientesSign = '+';\r\n } else {\r\n vm.pendientesSign = '-';\r\n }\r\n }\r\n else if (idx == 3) {\r\n if (vm.archivadasSign == '-') {\r\n vm.archivadasSign = '+';\r\n } else {\r\n vm.archivadasSign = '-';\r\n }\r\n }\r\n }\r\n\r\n function expandAccepted(item) {\r\n if(item.sign == '-') item.sign = '+'; \r\n else item.sign = '-';\r\n }\r\n \r\n\r\n\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('misfichajesController', misfichajesController);\r\n\r\n\r\n misfichajesController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'notificationService', 'logEmpleadosService', 'common', 'reportingService', 'userService', 'modals'\r\n ];\r\n\r\n\r\n function misfichajesController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, notificationService, logEmpleadosService, common, reportingService, userService, modals) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n vm.changeTab = changeTab; \r\n vm.selectAll = selectAll; \r\n vm.selectOne = selectOne; \r\n vm.expandPendientes = expandPendientes;\r\n vm.aprobar = aprobar; \r\n vm.goToEdit = goToEdit; \r\n vm.filterAccepted = filterAccepted;\r\n vm.showRechazar = showRechazar;\r\n vm.rechazarCallback = rechazarCallback;\r\n vm.addObservacion = addObservacion; \r\n vm.actualize = actualize; \r\n vm.finalizadasSign = '-'; \r\n vm.rechazadasSign = '-';\r\n vm.itemRechazado = {}; \r\n vm.loadedAcepted = true;\r\n\r\n\r\n vm.selectedNum = 0;\r\n vm.meses = {\r\n list: [{\r\n id: 0,\r\n nombre: 'Enero'\r\n }, {\r\n id: 1,\r\n nombre: 'Febrero'\r\n }, {\r\n id: 2,\r\n nombre: 'Marzo'\r\n }, {\r\n id: 3,\r\n nombre: 'Abril'\r\n }, {\r\n id: 4,\r\n nombre: 'Mayo'\r\n }, {\r\n id: 5,\r\n nombre: 'Junio'\r\n }, {\r\n id: 6,\r\n nombre: 'Julio'\r\n }, {\r\n id: 7,\r\n nombre: 'Agosto'\r\n }, {\r\n id: 8,\r\n nombre: 'Septiembre'\r\n }, {\r\n id: 9,\r\n nombre: 'Octubre'\r\n }, {\r\n id: 10,\r\n nombre: 'Noviembre'\r\n }, {\r\n id: 11,\r\n nombre: 'Diciembre'\r\n }],\r\n selected: {\r\n id: 1,\r\n nombre: 'Enero'\r\n }\r\n };\r\n vm.anos = {\r\n list: [],\r\n selected: 0\r\n };\r\n\r\n vm.charged = false; \r\n vm.tabNumber = 1; \r\n vm.pending = []; \r\n vm.accepted = []; \r\n vm.chargedAccepted = false; \r\n vm.aprovacionNum = 0; \r\n vm.aceptacionNum = 0; \r\n vm.allAprovacion = false; \r\n vm.supervisor = userService.userData.usuarioId;\r\n vm.loaded = false; \r\n vm.rechazar = rechazar; \r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n if (userService.userData.empresamaster.contrataControlHorario != true) $state.go('flota.controlHorario.activarControlHorario');\r\n else if(userService.userData.empleado.activarControlHorario != true) {\r\n // sendErrorNotification(\"No tiene activado el control horario!\");\r\n var tab = $rootScope.tabManager.tabs.find(x=> x.name == 'misfichajes'); \r\n if(tab != null) {\r\n $rootScope.tabManager.remove(tab); \r\n $rootScope.$broadcast('checkExitAction' + tab.state);\r\n }\r\n $state.go('flota.empleados');\r\n }\r\n\r\n logEmpleadosService.getJornadasEmpleado().then(function (response) {\r\n vm.pending = response; \r\n for(var i = 0; ix.estado == 4).length; \r\n vm.finalizadasNum = vm.pending.filter(x => x.estado == 1).length;\r\n vm.aprovacionNum = vm.pending.filter(x => x.estado == 2).length;\r\n\r\n if($stateParams.tabNumber != null || $stateParams.tabNumber != undefined) {\r\n vm.changeTab($stateParams.tabNumber);\r\n }\r\n vm.loaded = true; \r\n });\r\n }\r\n\r\n function sendErrorNotification(msg) {\r\n notificationService.sendAppNotification({\r\n message: msg,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n \r\n function actualize() {\r\n vm.loaded = false;\r\n vm.chargedAccepted = false; \r\n loadData();\r\n }\r\n\r\n function filterAccepted() {\r\n if (vm.meses.selected == null || vm.anos.selected == null) {\r\n sendErrorRequire('Los filtros no están completos!');\r\n } else {\r\n vm.loadedAcepted = false;\r\n var date = new Date(vm.anos.selected.id, vm.meses.selected.id);\r\n logEmpleadosService.getAccepted(date, userService.userData.empleadoId, 0).then(function (response) {\r\n vm.accepted = response.data; \r\n for(var i = 0; i < vm.accepted.length; i++) {\r\n vm.accepted[i].sign = '-'; \r\n }\r\n vm.loadedAcepted = true;\r\n });\r\n }\r\n }\r\n\r\n function sendErrorRequire(messageValue) {\r\n notificationService.sendAppNotification({\r\n message: messageValue,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'error'\r\n });\r\n }\r\n\r\n function changeTab(idx) {\r\n vm.tabNumber = idx; \r\n if(idx == 3 && vm.chargedAccepted == false) {\r\n vm.chargedAccepted = true; \r\n setYearsCombo();\r\n vm.anos.selected = vm.anos.list.find(x => x.id == ((new Date().getFullYear())));\r\n // vm.meses.selected = vm.meses.list.find(x => x.id == ((new Date().getMonth() == 0 ? 12 : (new Date().getMonth() - 1))));\r\n vm.meses.selected = vm.meses.list.find(x => x.id == ((new Date().getMonth())));\r\n filterAccepted();\r\n }\r\n }\r\n\r\n function setYearsCombo() {\r\n for (var i = 2016; i < 2100; i++) {\r\n vm.anos.list.push({\r\n id: i,\r\n nombre: i.toString()\r\n });\r\n }\r\n }\r\n\r\n function goToEdit(item) {\r\n $rootScope.tabManager.tabs.splice($rootScope.tabManager.tabs.findIndex(x => x.title == 'Mis fichajes'), 1);\r\n\r\n $state.go('flota.controlHorario.detalleMiJornada', {\r\n 'id': item.registroJornadaId,\r\n 'tabNumber': vm.tabNumber\r\n });\r\n }\r\n\r\n function aprobar(item) {\r\n var lista = []; \r\n if(item == null) {\r\n for(var i = 0; i < vm.pending.length; i++) {\r\n if(vm.pending[i].selected == true) lista.push(vm.pending[i].registroJornadaId);\r\n }\r\n }\r\n else {\r\n lista.push(item.registroJornadaId);\r\n } \r\n logEmpleadosService.aceptarJornadas(lista).then(function(){\r\n vm.loaded = false\r\n vm.chargedAccepted = false;\r\n vm.selectedNum = 0; \r\n loadData();\r\n });\r\n }\r\n\r\n\r\n function selectAll(idx) {\r\n if(idx == 1) {\r\n if(vm.allAprovacion == false) {\r\n vm.allAprovacion = true; \r\n for(var i = 0; i < vm.pending.length; i++) {\r\n if(vm.pending[i].estado == 2) {\r\n if (vm.pending[i].selected == false) vm.selectedNum++;\r\n vm.pending[i].selected = true;\r\n } \r\n }\r\n }\r\n else {\r\n vm.allAprovacion = false;\r\n for (var i = 0; i < vm.pending.length; i++) {\r\n if (vm.pending[i].estado == 2) {\r\n if (vm.pending[i].selected == true) vm.selectedNum--;\r\n vm.pending[i].selected = false;\r\n } \r\n }\r\n }\r\n }\r\n }\r\n\r\n function selectOne(option) {\r\n if(option.selected == true) {\r\n option.selected = false; \r\n vm.selectedNum--; \r\n }\r\n else if(option.selected == false) {\r\n option.selected = true; \r\n vm.selectedNum++; \r\n } \r\n\r\n }\r\n\r\n function expandPendientes(idx) {\r\n if(idx == 1) {\r\n if(vm.finalizadasSign == '-') {\r\n vm.finalizadasSign = '+'; \r\n }\r\n else {\r\n vm.finalizadasSign = '-';\r\n }\r\n }\r\n else if (idx == 2) {\r\n if (vm.rechazadasSign == '-') {\r\n vm.rechazadasSign = '+';\r\n } else {\r\n vm.rechazadasSign = '-';\r\n }\r\n }\r\n }\r\n\r\n function showRechazar() {\r\n modals.showModal('anadirObservacion', vm.rechazarCallback);\r\n }\r\n\r\n function rechazarCallback(observacion) {\r\n if (observacion != '') {\r\n vm.itemRechazado.observacionesParsed = {}; \r\n parseObservaciones(vm.itemRechazado.observacionesParsed, vm.itemRechazado.observaciones);\r\n vm.itemRechazado.observacionesParsed.add = observacion;\r\n vm.addObservacion(vm.itemRechazado.observacionesParsed);\r\n vm.itemRechazado.observaciones = JSON.stringify(vm.itemRechazado.observacionesParsed.list);\r\n }\r\n\r\n logEmpleadosService.rechazarJornada(vm.itemRechazado.registroJornadaId, vm.itemRechazado.observaciones).then(function () {\r\n vm.loaded = false\r\n loadData();\r\n });\r\n }\r\n function rechazar(item) {\r\n vm.itemRechazado = item; \r\n vm.showRechazar()\r\n \r\n }\r\n\r\n function addObservacion(obs) {\r\n if (!obs.add) {\r\n return;\r\n }\r\n obs.list.push({\r\n text: obs.add,\r\n time: Date.now(),\r\n author: userService.userData.name ? userService.userData.name : '' +\r\n (userService.userData.surname ? ' ' + userService.userData.surname : '')\r\n });\r\n obs.add = null;\r\n }\r\n\r\n function parseObservaciones(obs, data) {\r\n if (data == null) {\r\n obs.list = [];\r\n } else {\r\n try {\r\n obs.list = JSON.parse(data);\r\n } catch (e) {\r\n data = JSON.stringify([{\r\n text: data\r\n }]);\r\n obs.list = JSON.parse(data);\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('DriverFormController', DriverFormController);\r\n \r\n\r\n DriverFormController.$inject = [\r\n\t\t'$stateParams',\r\n\t\t'driverService',\r\n\t\t'genericDataService',\r\n\t\t'$filter',\r\n\t\t'$state',\r\n\t\t'$rootScope',\r\n 'notificationService',\r\n '$scope', \r\n\t\t'common', \r\n\t\t'restrictionService'\r\n ];\r\n\r\n\tfunction DriverFormController($stateParams, driverService, genericDataService, \r\n $filter, $state, $rootScope, notificationService, $scope, common, restrictionService) {\r\n\t\t/* PRIVATE VARIABLES */\r\n\t\tvar id = $stateParams.id;\r\n\r\n\t\t/* PUBLIC VARIABLES */\r\n\t\tvar vm = this;\r\n\t\tvm.stateParams = $stateParams;\r\n\t\tvm.driver = {};\r\n\t\tvm.edit = false;\r\n\t\tvm.genericData = {\r\n\t\t\tprovinces: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tselected: { id: null }\r\n\t\t\t},\r\n\t\t\tpais: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tselected: { id: null }\r\n\t\t\t},\r\n\t\t\tpoblaciones: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tselected: { id: null }\r\n\t\t\t},\r\n\t\t\ttarifas: {\r\n\t\t\t\tlist: null\r\n\t\t\t},\r\n\t\t\tempresas: {\r\n\t\t\t\tlist: null,\r\n\t\t\t\tselected: { id: null }\r\n\t\t\t},\r\n\t\t\testados: {\r\n\t\t\t\tlist: [\r\n\t\t\t\t\t{ nombre: 'Activo', id: 0 },\r\n\t\t\t\t\t{ nombre: 'Dado de baja', id: 1 },\r\n\t\t\t\t],\r\n\t\t\t\tselected: { nombre: 'Activo', id: 0 }\r\n\t\t\t},\r\n\t\t};\r\n\t\tvm.dates = {\r\n\t\t\tfecEstadoOperario: Date.NewDate()\r\n\t\t};\r\n\r\n\t\tvm.textInput = '';\r\n\t\tvm.procesoInicializacion = true;\r\n\r\n\t\tvm.save = save;\r\n\t\tvm.saveAndClose = saveAndClose;\r\n\t\tvm.saveAndNew = saveAndNew;\r\n\t\tvm.onPaisChange = onPaisChange;\r\n\t\tvm.onProvinciaChange = onProvinciaChange;\r\n\t\tvm.effectClass = effectClass;\r\n vm.resizable = resizable;\r\n vm.onAddressChange = onAddressChange; \r\n\r\n\r\n vm.showEditIcon = showEditIcon;\r\n vm.hideEditIcon = hideEditIcon;\r\n vm.showEditIconValue = false;\r\n\r\n\t\tvm.accionSaveList = [\r\n\t\t\t{\r\n\t\t\t\taccionTexto: 'Guardar y cerrar',\r\n\t\t\t\taccion: vm.saveAndClose,\r\n\t\t\t\tselected: computeValueAccionSelected('guardarCerrar')\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\taccionTexto: 'Guardar y nuevo',\r\n\t\t\t\taccion: vm.saveAndNew,\r\n\t\t\t\tselected: computeValueAccionSelected('saveAndNew')\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\taccionTexto: 'Guardar',\r\n\t\t\t\taccion: vm.save,\r\n\t\t\t\tselected: computeValueAccionSelected('save')\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\t/* INITIALIZER */\r\n (function () {\r\n\t\t\t\r\n\t\t\t//Edit\r\n\t\t\tif (id != null) {\r\n vm.edit = true;\r\n\t\t\t\tdriverService.getDriver(id)\r\n\t\t\t\t\t.then(function (driver) {\r\n\t\t\t\t\t\tvm.driver = driver;\r\n\t\t\t\t\t\tgetGenericData();\r\n\t\t\t\t\t\tsetDates();\r\n\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//New\r\n\t\t\telse {\r\n\t\t\t\tgetGenericData();\r\n\t\t\t}\r\n\t\t})();\r\n\r\n\t\tfunction setDates() {\r\n\t\t\tvm.dates.fecEstadoOperario = vm.driver.fecEstadoOperario && new Date(vm.driver.fecEstadoOperario);\r\n\t\t}\r\n\r\n\t\tfunction computeValueAccionSelected(accion) {\r\n\t\t\tif (accion === vm.stateParams.accion) { return true; }\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tfunction getEstadoDriverDescripcion(estado) {\r\n\t\t\tif (estado === 0) {\r\n\t\t\t\treturn 'Activo';\r\n\t\t\t} else if (estado === 1) {\r\n\t\t\t\treturn 'Dado de baja';\r\n\t\t\t} \r\n\t\t}\r\n\r\n\t\t/* PRIVATE FUNCTIONS */\r\n function getGenericData() {\r\n\t\t\tif (vm.driver.estado !== undefined && vm.driver.estado !== null) {\r\n\t\t\t\tvm.genericData.estados.selected = {\r\n\t\t\t\t\tid: vm.driver.estado,\r\n\t\t\t\t\tnombre: getEstadoDriverDescripcion(vm.driver.estado)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvm.genericData.estados.selected = vm.genericData.estados.list[0];\r\n\t\t\t}\r\n\t\t\tvm.genericData.pais.loading = true;\r\n\t\t\tgenericDataService.getPaises()\r\n\t\t\t\t.then(function (res) {\r\n\t\t\t\t\tvm.genericData.pais.loading = false;\r\n\t\t\t\t\tvm.genericData.pais.list = res;\r\n\t\t\t\t\tvar modelPais = findByProperty(vm.genericData.pais.list, 'nombre', vm.driver.pais);\r\n\t\t\t\t\tif (modelPais) {\r\n\t\t\t\t\t\tvm.genericData.pais.selected = modelPais;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvm.genericData.pais.selected = vm.genericData.pais.list[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tselectChanged(vm.genericData.pais.list, vm.genericData.pais.selected, false);\r\n\t\t\t\t\tvm.genericData.provinces.loading = true;\r\n\t\t\t\t\tgenericDataService.getProvinces(null, vm.genericData.pais.selected.id)\r\n\t\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\t\tvm.genericData.provinces.loading = false;\r\n\t\t\t\t\t\t\tvm.genericData.provinces.list = res;\r\n\t\t\t\t\t\t\tvar modelProvincia = findByProperty(vm.genericData.provinces.list, 'nombre', vm.driver.provincia);\r\n\t\t\t\t\t\t\tif (modelProvincia) {\r\n\t\t\t\t\t\t\t\tvm.genericData.provinces.selected = modelProvincia;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tvm.genericData.provinces.selected = vm.genericData.provinces.list[0];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tselectChanged(vm.genericData.provinces.list, vm.genericData.provinces.selected, false);\r\n\t\t\t\t\t\t\tvm.genericData.poblaciones.loading = true;\r\n\t\t\t\t\t\t\tgenericDataService.getPopulations(null, vm.genericData.provinces.selected.id)\r\n\t\t\t\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\t\t\t\tvm.genericData.poblaciones.loading = false;\r\n\t\t\t\t\t\t\t\t\tvm.genericData.poblaciones.list = res;\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tvar modelPoblacion = findByProperty(vm.genericData.poblaciones.list, \r\n\t\t\t\t\t\t\t\t\t\t'nombre', vm.driver.poblacion);\r\n\t\t\t\t\t\t\t\t\tif (modelPoblacion) {\r\n\t\t\t\t\t\t\t\t\t\tvm.genericData.poblaciones.selected = modelPoblacion;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\tvm.genericData.poblaciones.selected = vm.genericData.poblaciones.list[0];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tselectChanged(vm.genericData.poblaciones.list, \r\n\t\t\t\t\t\t\t\t\t\tvm.genericData.poblaciones.selected, false);\r\n\t\t\t\t\t\t\t\t\tsetTimeout(function () { vm.procesoInicializacion = false; }, 3000);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\tvm.genericData.tarifas.loading = true;\r\n\t\t\tgenericDataService.getComisiones()\r\n\t\t\t\t.then(function (res) {\r\n\t\t\t\t\tvm.genericData.tarifas.loading = false;\r\n\t\t\t\t\tvm.genericData.tarifas.list = res;\r\n\t\t\t\t\tvar modelComisiones = findByProperty(vm.genericData.tarifas.list, 'id', vm.driver.comisionId);\r\n\t\t\t\t\tif (modelComisiones) {\r\n\t\t\t\t\t\tvm.genericData.tarifas.selected = modelComisiones;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvm.genericData.tarifas.selected = vm.genericData.tarifas.list[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tvm.genericData.empresas.loading = true;\r\n\t\t\tgenericDataService.getEmpresas()\r\n\t\t\t\t.then(function (res) {\r\n\t\t\t\t\tvm.genericData.empresas.loading = false;\r\n\t\t\t\t\tvm.genericData.empresas.list = res;\r\n\t\t\t\t\tvar modelEmpresas = findByProperty(vm.genericData.empresas.list, 'id', vm.driver.empresaId);\r\n\t\t\t\t\tif (modelEmpresas) {\r\n\t\t\t\t\t\tvm.genericData.empresas.selected = modelEmpresas;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvm.genericData.empresas.selected = vm.genericData.empresas.list[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction doSave(action) {\r\n\t\t\tif (vm.edit && (vm.driver.id === null || vm.driver.id === '' || vm.driver.id === undefined)) { \r\n\t\t\t\tsendErrorRequire(); \r\n\t\t\t\treturn;\r\n\t\t\t }\r\n\t\t\t if (vm.edit == true) {\r\n\t\t\t \tif (!restrictionService.hasPermission(4, 'operario')) return;\r\n\t\t\t } else {\r\n\t\t\t \tif (!restrictionService.hasPermission(1, 'operario')) return;\r\n\t\t\t }\r\n\t\t\tvm.driver.pais = vm.genericData.pais.selected.nombre;\r\n\t\t\tvm.driver.provincia = vm.genericData.provinces.selected.nombre;\r\n\t\t\tvm.driver.poblacion = vm.genericData.poblaciones.selected.nombre;\r\n\t\t\tvm.driver.comisionId = vm.genericData.tarifas.selected.id;\r\n\t\t\tvm.driver.empresaId = vm.genericData.empresas.selected.id;\r\n\t\t\tvm.driver.fecEstadoOperario = vm.dates.fecEstadoOperario;\r\n vm.driver.estado = vm.genericData.estados.selected.id;\r\n\t\t\tdriverService.addDriver(vm.driver).then(function (driverSave) {\r\n\t\t\t\tsendSAveNotification();\r\n\t\t\t\tvm.edit = true;\r\n\t\t\t\tif (action === 'saveAndClose') {\r\n\t\t\t\t\t$state.go('flota.choferes.listado');\r\n\t\t\t\t}\r\n\t\t\t\telse if (action === 'saveAndNew') {\r\n\t\t\t\t\t$state.go('flota.choferes.nuevo', { 'accion': 'saveAndNew' });\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tvm.driver.id = driverSave.id;\r\n\t\t\t\t\tvm.driver.operarioId = driverSave.operarioId;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction save() {\r\n\t\t\tvar action = 'save';\r\n\t\t\tfor (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n\t\t\t\tif (vm.accionSaveList[i].accionTexto === 'Guardar') { vm.accionSaveList[i].selected = true; }\r\n\t\t\t\telse { vm.accionSaveList[i].selected = false; }\r\n\t\t\t}\r\n\t\t\tdoSave(action);\r\n\t\t}\r\n\r\n\t\tfunction saveAndClose() {\r\n\t\t\tvar action = 'saveAndClose';\r\n\t\t\tdoSave(action);\r\n\t\t}\r\n\r\n\t\tfunction saveAndNew() {\r\n\t\t\tfor (var i = 0; i < vm.accionSaveList.length; ++i) {\r\n\t\t\t\tif (vm.accionSaveList[i].accionTexto === 'Guardar y nuevo') { vm.accionSaveList[i].selected = true; }\r\n\t\t\t\telse { vm.accionSaveList[i].selected = false; }\r\n\t\t\t}\r\n\t\t\tvar action = 'saveAndNew';\r\n\t\t\tdoSave(action);\r\n\t\t}\r\n\r\n\t\tfunction sendSAveNotification() {\r\n\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\tmessage: 'El operario se ha guardado correctamente',\r\n\t\t\t\tpositionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction sendErrorRequire() {\r\n\t\t\tnotificationService.sendAppNotification({\r\n\t\t\t\tmessage: 'El campo Id es obligatorio',\r\n\t\t\t\tpositionY: 'top', positionX: 'right', delay: 3000, type: 'error'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t // Try to find the selected element in the list using the id property\r\n // If requireId is false it will keep the name even when id is null\r\n\t\tfunction selectChanged(list, selected, requireId) {\r\n\t\t\trequireId = (typeof requireId === 'undefined') ? true : requireId; //RequireId defaults to TRUE\r\n\t\t\tif (!list || !selected) { return; } //If the is no list or element exit\r\n\t\t\tif (list.length <= 0 || selected.id == null) { // Delete element unless it doesnt require id\r\n\t\t\t\tif (!requireId) { return; }\r\n\t\t\t\tselected.nombre = null;\r\n\t\t\t\tselected.id = null;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar find = findByProperty(list, 'id', selected.id);\r\n\t\t\tif (find) {\r\n\t\t\t\tselected.nombre = find.nombre;\r\n\t\t\t\tselected.id = find.id;\r\n\t\t\t} else {\r\n\t\t\t\tselected.nombre = null;\r\n\t\t\t\tselected.id = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction findByProperty(array, property, id) {\r\n\t\t\tif (array === null) { return null; }\r\n\t\t\tfor (var i = 0; i < array.length; i++) {\r\n\t\t\t\tif (array[i][property] === id) {\r\n\t\t\t\t\treturn array[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tfunction onPaisChange() {\r\n\t\t\tif (!vm.procesoInicializacion) {\r\n\t\t\t\tvar p = vm.genericData.pais.selected && vm.genericData.pais.selected.id;\r\n\t\t\t\tgetProvincias(p);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction getProvincias(pais) {\r\n\t\t\tif (pais == null) {\r\n\t\t\t\tvm.genericData.provinces.list = null;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvm.genericData.provinces.loading = true;\r\n\t\t\t\tgenericDataService.getProvinces(null, pais)\r\n\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\tvm.genericData.provinces.loading = false;\r\n\t\t\t\t\t\tvm.genericData.provinces.list = res;\r\n\t\t\t\t\t\tselectChanged(vm.genericData.provinces.list, vm.genericData.provinces.selected);\r\n\r\n\t\t\t\t\t\tif (vm.genericData.provinces.id == null) {\r\n\t\t\t\t\t\t\tvm.genericData.provinces.selected = vm.genericData.provinces.list[0];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onProvinciaChange() {\r\n\t\t\tif (!vm.procesoInicializacion) {\r\n\t\t\t\tvar p = vm.genericData.provinces.selected && vm.genericData.provinces.selected.id;\r\n\t\t\t\tgetPoblaciones(p);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction getPoblaciones(poblacion) {\r\n\t\t\tif (poblacion == null) { vm.genericData.poblaciones.list = null; }\r\n\t\t\telse {\r\n\t\t\t\tvm.genericData.poblaciones.loading = true;\r\n\t\t\t\tgenericDataService.getPopulations(null, poblacion)\r\n\t\t\t\t\t.then(function (res) {\r\n\t\t\t\t\t\tvm.genericData.poblaciones.loading = false;\r\n\t\t\t\t\t\tvm.genericData.poblaciones.list = res;\r\n\t\t\t\t\t\tselectChanged(vm.genericData.poblaciones.list, vm.genericData.poblaciones.selected);\r\n\r\n\t\t\t\t\t\tif (vm.genericData.poblaciones.id == null) {\r\n\t\t\t\t\t\t\tvm.genericData.poblaciones.selected = vm.genericData.poblaciones.list[0];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction effectClass(target) {\r\n\t\t\tvm.effects = {};\r\n\t\t\tvm.effects[target] = true;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tvm.effects[target] = undefined;\r\n\t\t\t}, 3000);\r\n\t\t}\r\n\r\n\t\tfunction resizableInput(el, factor) {\r\n\t\t\tvar int = Number(factor) || 7.7;\r\n\t\t\tfunction resize() { el.style.width = ((el.value.length + 1) * int) + 'px'; }\r\n\t\t\tvar e = 'keyup,keypress,focus,blur,change'.split(',');\r\n\t\t\tfor (var i in e) { el.addEventListener(e[i], resize, false); }\r\n\t\t\tresize();\r\n\t\t}\r\n\r\n\t\tfunction resizable() {\r\n\t\t\tresizableInput(document.getElementById('txt'), 7);\r\n\t\t}\r\n\r\n function showEditIcon(e) {\r\n vm.showEditIconValue = true;\r\n }\r\n\r\n function hideEditIcon(e) {\r\n if(!$(e.currentTarget).is(\":focus\"))\r\n vm.showEditIconValue = false;\r\n }\r\n\r\n $scope.$watch('vm.dates.fecEstadoOperario', function (o, n) {\r\n if (o != null && n != null) {\r\n var m = moment(n);\r\n if (m.isValid()) {\r\n if (m.year() < 1980)\r\n m.year(1980);\r\n else if (m.year() > 2100)\r\n m.year(2100);\r\n }\r\n }\r\n }, true);\r\n\r\n function onAddressChange(address) {\r\n vm.driver.cp = address.cp;\r\n var watchers = $scope.$$watchers;\r\n $scope.$$watchers = [];\r\n\r\n if (!common.isNullOrUndefined(address.country)) {\r\n vm.genericData.pais.selected.nombre = address.country.toUpperCase();\r\n }\r\n\r\n if (!common.isNullOrUndefined(address.state)) {\r\n vm.genericData.provinces.selected.nombre = address.state.toUpperCase();\r\n }\r\n\r\n if (!common.isNullOrUndefined(address.city)) {\r\n vm.genericData.poblaciones.selected.nombre = address.city.toUpperCase();\r\n }\r\n\r\n $scope.$$watchers = watchers;\r\n\r\n }\r\n\r\n }\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('DriverListController', DriverListController);\r\n\r\n\r\n DriverListController.$inject = [\r\n '$templateCache',\r\n 'driverService',\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$filter',\r\n '$q',\r\n 'notificationService',\r\n '$timeout',\r\n 'preferences',\r\n 'simpleModalService',\r\n 'genericDataService',\r\n 'common',\r\n 'uiGridConstants',\r\n 'restrictionService'\r\n ];\r\n\r\n\r\n\r\n function DriverListController(\r\n $templateCache,\r\n driverService,\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $filter,\r\n $q,\r\n notificationService,\r\n $timeout,\r\n preferences,\r\n simpleModalService,\r\n genericDataService,\r\n common,\r\n uiGridConstants,\r\n restrictionService\r\n ) {\r\n // jshint maxstatements:false\r\n\r\n /* PRIVATE VARIABLES */\r\n var templates = {\r\n accionesCellTemplate: $templateCache.get('app/views/tablesTemplates/generic/accionesCellTemplate.html'),\r\n rowTemplate: $templateCache.get('app/views/tablesTemplates/generic/rowTemplate.html'),\r\n stateTemplate: $templateCache.get('app/views/tablesTemplates/vehicles/stateTemplate.html'),\r\n };\r\n\r\n var sorting = {\r\n field: null,\r\n direction: null\r\n };\r\n\r\n var vm = this;\r\n vm.restrictionService = restrictionService; \r\n vm.refreshData = refreshData; \r\n\r\n vm.listaChoferesActivos = true;\r\n vm.focusedRow = null;\r\n vm.appliedFilters = [];\r\n vm.gridData = [];\r\n vm.rowCount = 0;\r\n vm.initialRowCount = 0;\r\n vm.firstLoaded = false;\r\n vm.alldriversResultList = [];\r\n vm.alldriversResultListWithFlters = [];\r\n vm.genericData = {\r\n estadoClientes: {\r\n list: [\r\n { 'nombre': 'Activos', 'id': '0' },\r\n { 'nombre': 'Choferes dados de baja', 'id': '1' },\r\n { 'nombre': 'Todos', 'id': '2' }\r\n ],\r\n selected: { 'nombre': 'Activos', 'id': '0' }\r\n },\r\n empresas: {\r\n list: [],\r\n loading: true,\r\n selected: null\r\n }\r\n };\r\n vm.gridOptions = {\r\n rowTemplate: templates.rowTemplate,\r\n\r\n enableFilter: true,\r\n paginationPageSizes: [25, 50, 75],\r\n paginationPageSize: 25,\r\n useExternalPagination: true,\r\n\r\n enableRowSelection: true,\r\n multiSelect: true,\r\n\r\n enableColumnResizing: true,\r\n\r\n enableColumnMenus: false,\r\n treeRowHeaderAlwaysVisible: false,\r\n virtualizationThreshold: 200,\r\n primaryKey: 'operarioId',\r\n columnDefs: [\r\n {\r\n field: 'estado',\r\n displayName: 'Estado',\r\n cellTemplate: templates.stateTemplate,\r\n resizable: true,\r\n width: 100\r\n },\r\n {\r\n field: 'id',\r\n displayName: 'Id',\r\n resizable: true,\r\n width: 80,\r\n sort: { priority: 1, direction: 'desc' }\r\n },\r\n {\r\n field: 'nombre',\r\n cellClass: 'strong',\r\n displayName: 'Nombre',\r\n resizable: true,\r\n minWidth: 100,\r\n maxWidth: 120\r\n },\r\n {\r\n name: 'apellidos',\r\n displayName: 'Apellidos',\r\n resizable: true,\r\n minWidth: 100,\r\n maxWidth: 220,\r\n },\r\n {\r\n name: 'telefono',\r\n displayName: 'Teléfono',\r\n resizable: true,\r\n minWidth: 100,\r\n maxWidth: 220,\r\n },\r\n\r\n {\r\n name: 'carne',\r\n displayName: 'Carné',\r\n resizable: true,\r\n minWidth: 80,\r\n maxWidth: 220,\r\n },\r\n {\r\n field: 'empresaNombre',\r\n displayName: 'Empresa',\r\n minWidth: 150,\r\n resizable: true\r\n\r\n },\r\n {\r\n field: 'actions',\r\n displayName: 'Acciones',\r\n width: 90,\r\n resizable: true,\r\n cellClass: 'overflow',\r\n cellTemplate: templates.accionesCellTemplate,\r\n enableSorting: false\r\n }\r\n\r\n ],\r\n data: 'gridData',\r\n\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.grid.options.enableExpandAll = false;\r\n }\r\n };\r\n\r\n vm.dadosBaja = 'Mostrar dados de baja';\r\n vm.filterGrid = filterGrid;\r\n vm.goToEdit = goToEdit;\r\n vm.selectAll = selectAll;\r\n vm.clearAll = clearAll;\r\n vm.invertSelection = invertSelection;\r\n vm.selectOrClear = selectOrClear;\r\n vm.remove = remove;\r\n vm.refreshGrid = refreshGrid;\r\n vm.changeGrid = changeGrid;\r\n vm.deleteAllItems = deleteAllItems;\r\n vm.getEstadoName = getEstadoName;\r\n vm.getColorEstado = getColorEstado;\r\n vm.focusRow = focusRow;\r\n vm.isFocused = isFocused;\r\n vm.deleteSearchData = deleteSearchData;\r\n vm.estadoBajaChange = estadoBajaChange;\r\n vm.loaded = false; \r\n\r\n vm.clearSearcher = clearSearcher;\r\n vm.searchText = '';\r\n vm.onSelectEmpresasClick = onSelectEmpresasClick;\r\n vm.selectEmpresasText = 'Todos';\r\n\r\n vm.tab = $rootScope.tabManager.tabs[$rootScope.tabManager.indexOfName('choferes')];\r\n\r\n (function () {\r\n var state = $rootScope.stateStorage[vm.tab.name];\r\n if (state && vm.tab.keepState) {\r\n vm.focusedRow = state.focusedRow || null;\r\n }\r\n loadData();\r\n })();\r\n\r\n $scope.$on('detail-resize', function (event, args) {\r\n if (vm.tab.isActive()) {\r\n $timeout(function () { if (!common.isNullOrUndefined(vm.gridApi)) vm.gridApi.core.handleWindowResize(); }, 0);\r\n }\r\n });\r\n\r\n function refreshData() {\r\n loadData();\r\n }\r\n function filterGrid() {\r\n if (vm.searchText !== '') {\r\n $scope.gridData = $filter('searchFilter')(vm.alldriversResultListWithFlters, {\r\n 'nombre': vm.searchText,\r\n 'apellidos': vm.searchText,\r\n 'id': vm.searchText,\r\n 'telefono': vm.searchText,\r\n 'carne': vm.searchText\r\n }, true);\r\n }\r\n else {\r\n $scope.gridData = vm.alldriversResultListWithFlters;\r\n }\r\n\r\n if (!common.isNullOrUndefined(vm.genericData.empresas.selected)) {\r\n $scope.gridData = $filter('searchFilter')($scope.gridData, {\r\n 'empresaNombre': vm.genericData.empresas.selected.nombre\r\n }, true);\r\n }\r\n vm.gridOptions.totalItems = $scope.gridData.length;\r\n vm.rowCount = $scope.gridData.length;\r\n vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n $scope.$on('fleetdata-refreshed', function (event, args) {\r\n ////Save selected rows to mantain the selection after refreshing the data\r\n //var selected = vm.gridApi.selection.getSelectedRows();\r\n //filterGrid();\r\n //vm.clearAll();\r\n //var list = $scope.gridData;\r\n //for (var i = 0; i < list.length; i++) {\r\n // var found = $filter('filter')(selected, { 'operarioId': list[i].operarioId });\r\n // if (found[0]) {\r\n // vm.gridApi.grid.modifyRows($scope.gridData);\r\n // vm.gridApi.selection.selectRow($scope.gridData[i]);\r\n // }\r\n //}\r\n });\r\n\r\n function loadData() {\r\n vm.loaded = false; \r\n clearAll();\r\n\r\n getGenericData();\r\n\r\n driverService.getList(sorting, vm.appliedFilters).then(function (result) {\r\n result = addStateProperty(result);\r\n vm.gridOptions.totalItems = result.data.list.length;\r\n vm.alldriversResultList = result.data.list;\r\n vm.firstLoaded = true;\r\n vm.rowCount = result.data.list.length;\r\n vm.initialRowCount = result.data.list.length;\r\n\r\n $scope.gridData = result.data.list;\r\n vm.gridData = result.data.list;\r\n applyFilters();\r\n vm.loaded = true;\r\n filterGrid();\r\n });\r\n }\r\n\r\n\r\n function addStateProperty(result) {\r\n for (var i = 0; i < result.data.list.length; ++i) {\r\n var estado = getEstadoName(result.data.list[i].estado);\r\n result.data.list[i].nombreEstado = estado;\r\n }\r\n return result;\r\n }\r\n\r\n function focusRow(operario) {\r\n vm.focusedRow = operario.operarioId;\r\n }\r\n\r\n function isFocused(operario) {\r\n return vm.focusedRow === operario.operarioId;\r\n }\r\n\r\n function getEstadoName(estado) {\r\n if (estado === 0) {\r\n return 'Activo';\r\n } else if (estado === 1) {\r\n return 'Dado de baja';\r\n }\r\n }\r\n\r\n function selectAll() {\r\n vm.gridApi.selection.selectAllRows();\r\n }\r\n\r\n function clearAll() {\r\n if (!common.isNullOrUndefined(vm.gridApi))\r\n vm.gridApi.selection.clearSelectedRows();\r\n }\r\n\r\n function invertSelection() {\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n\r\n vm.selectAll();\r\n\r\n for (var i = 0; i < selected.length; i++) {\r\n vm.gridApi.selection.unSelectRow(selected[i]);\r\n }\r\n }\r\n\r\n function selectOrClear() {\r\n if (vm.gridApi.selection.getSelectAllState()) {\r\n vm.clearAll();\r\n } else {\r\n vm.selectAll();\r\n }\r\n }\r\n\r\n function goToEdit(operario) {\r\n vm.focusedRow = operario.operarioId;\r\n restrictionService.hasPermission(2, 'operario', 'flota.choferes.editar', { 'id': operario.operarioId });\r\n $state.go('flota.choferes.editar', { 'id': operario.operarioId });\r\n }\r\n\r\n function remove(operario) {\r\n if (!restrictionService.hasPermission(8, 'operario')) return; \r\n\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja chófer...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n driverService.deleteById([operario.operarioId]).then(function () {\r\n loadData();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'Chófer dado de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n }, function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja el chófer',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n\r\n function deleteAllItems() {\r\n if (!restrictionService.hasPermission(8, 'operario')) return; \r\n\r\n simpleModalService\r\n .yesNoModal('Confirmación eliminar', '¿Desea eliminar los chóferes seleccionados?') // ' + vm.gridApi.selection.vm.gridApi.selection.getSelectedRows() + '\r\n .then(function (result) {\r\n if (result) {\r\n var driverIds = [];\r\n var selected = vm.gridApi.selection.getSelectedRows();\r\n for (var i = 0; i < selected.length; i++) {\r\n driverIds.push(selected[i].operarioId);\r\n }\r\n notificationService.sendAppNotification({\r\n message: 'Dando de baja chóferes...',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'info'\r\n });\r\n driverService.deleteById(driverIds)\r\n .then(function () {\r\n refreshGrid();\r\n clearSearcher();\r\n notificationService.sendAppNotification({\r\n message: 'Chóferes dados de baja con éxito',\r\n positionY: 'top', positionX: 'right', delay: 3000, type: 'success'\r\n });\r\n },\r\n function () {\r\n notificationService.sendAppNotification({\r\n message: 'Ha ocurrido un error al dar de baja los chóferes',\r\n positionY: 'top', positionX: 'right', delay: null, type: 'error'\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n function refreshGrid() {\r\n loadData();\r\n }\r\n\r\n function getColorEstado(estado) {\r\n var estadoDriver = 'undefined';\r\n if (!common.isNullOrUndefined(preferences.prefs)) {\r\n estadoDriver = preferences.prefs.getStateColor(estado) || 'undefined';\r\n }\r\n\r\n return estadoDriver;\r\n }\r\n\r\n $scope.$on('$destroy', function () { //Save state\r\n $rootScope.stateStorage[vm.tab.name] = {\r\n focusedRow: vm.focusedRow\r\n };\r\n });\r\n\r\n function deleteSearchData() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n function estadoBajaChange() {\r\n changeGrid();\r\n }\r\n\r\n function changeGrid() {\r\n applyFilters();\r\n filterGrid();\r\n }\r\n\r\n function applyFilters() {\r\n vm.alldriversResultListWithFlters = [];\r\n for (var i = 0; i < vm.alldriversResultList.length; ++i) {\r\n if ((vm.genericData.estadoClientes.selected.nombre === 'Todos')) {\r\n vm.alldriversResultListWithFlters.push(vm.alldriversResultList[i]);\r\n }\r\n else if ((vm.genericData.estadoClientes.selected.nombre === 'Activos') &&\r\n (0 === vm.alldriversResultList[i].estado)) {\r\n vm.alldriversResultListWithFlters.push(vm.alldriversResultList[i]);\r\n }\r\n else if ((vm.genericData.estadoClientes.selected.nombre === 'Choferes dados de baja') &&\r\n (1 === vm.alldriversResultList[i].estado)) {\r\n vm.alldriversResultListWithFlters.push(vm.alldriversResultList[i]);\r\n }\r\n }\r\n\r\n }\r\n\r\n function getGenericData() {\r\n vm.genericData.empresas.loading = true;\r\n genericDataService.getEmpresas()\r\n .then(function (res) {\r\n vm.genericData.empresas.loading = false;\r\n vm.genericData.empresas.list = res;\r\n\r\n if (vm.genericData.empresas.selected.id == null && defaultVal.empresa) {\r\n vm.genericData.empresas.selected = vm.genericData.empresas.list[0];\r\n }\r\n });\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = '';\r\n filterGrid();\r\n }\r\n\r\n function onSelectEmpresasClick(obj) {\r\n vm.genericData.empresas.selected = obj;\r\n\r\n if (obj !== null) {\r\n vm.selectEmpresasText = obj.nombre;\r\n } else {\r\n vm.selectEmpresasText = 'Todos';\r\n }\r\n\r\n filterGrid();\r\n }\r\n\r\n }\r\n\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('FinalizadosDetailController.js', FinalizadosDetailController);\r\n \r\n\r\n FinalizadosDetailController.$inject = [\r\n \r\n ];\r\n\r\n function FinalizadosDetailController(){\r\n \r\n }\r\n\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('FinalizadosListController.js', FinalizadosListController);\r\n \r\n\r\n FinalizadosListController.$inject = [\r\n \r\n ];\r\n\r\n function FinalizadosListController(){\r\n \r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('InformeFormController', InformeFormController);\r\n\r\n testApp.filter('customFilter', function () {\r\n return function (dataArray, searchTerm) {\r\n if (!dataArray) {\r\n return;\r\n } else if (!searchTerm) {\r\n return dataArray;\r\n } else {\r\n var term = searchTerm.toString().toLowerCase();\r\n return dataArray.filter(function (item) {\r\n var termNombre = false,\r\n termId = false,\r\n termDescripcion = false,\r\n termValue = false;\r\n if (item.nombre != undefined) termNombre = item.nombre.toLowerCase().indexOf(term) > -1;\r\n if (item.descripcion != undefined) termDescripcion = item.descripcion.toLowerCase().indexOf(term) > -1;\r\n if (item.value != undefined && (typeof item.value === 'string')) termValue = item.value.toLowerCase().indexOf(term) > -1;\r\n\r\n return termNombre || termId || termDescripcion || termValue;\r\n });\r\n }\r\n }\r\n });\r\n\r\n InformeFormController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'reportService', 'notificationService', 'reportingService', 'endPoints', 'common', 'userService', 'simpleModalService'\r\n ];\r\n\r\n\r\n function InformeFormController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, reportService, notificationService, reportingService, endPoints, common, userService,simpleModalService) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n var id = $stateParams.id;\r\n vm.predeterminated = false;\r\n vm.report = {};\r\n vm.adaptedFilters = [];\r\n vm.stablished = null;\r\n vm.loadingInformation = true; //es contrario\r\n vm.exportOption = {\r\n id: 2, \r\n description: 'PDF'\r\n };\r\n\r\n vm.meses = {\r\n list: [\r\n {\r\n id: 12,\r\n nombre: 'Todos',\r\n selected: false\r\n },\r\n {\r\n id: 0, \r\n nombre: 'Enero', \r\n selected: false\r\n }, {\r\n id: 1,\r\n nombre: 'Febrero',\r\n selected: false\r\n }, {\r\n id: 2,\r\n nombre: 'Marzo',\r\n selected: false\r\n }, {\r\n id: 3,\r\n nombre: 'Abril',\r\n selected: false\r\n }, {\r\n id: 4,\r\n nombre: 'Mayo',\r\n selected: false\r\n }, {\r\n id: 5,\r\n nombre: 'Junio',\r\n selected: false\r\n }, {\r\n id: 6,\r\n nombre: 'Julio',\r\n selected: false\r\n }, {\r\n id: 7,\r\n nombre: 'Agosto',\r\n selected: false\r\n }, {\r\n id: 8,\r\n nombre: 'Septiembre',\r\n selected: false\r\n }, {\r\n id: 9,\r\n nombre: 'Octubre',\r\n selected: false\r\n }, {\r\n id: 10,\r\n nombre: 'Noviembre',\r\n selected: false\r\n }, {\r\n id: 11,\r\n nombre: 'Diciembre',\r\n selected: false\r\n }], \r\n selected: []\r\n }; \r\n vm.anos = {list: [],\r\n selected: 0\r\n };\r\n\r\n vm.empleados = {\r\n list: [],\r\n selected: null\r\n }; \r\n\r\n vm.filtersSelected = [];\r\n vm.masFiltros = false;\r\n vm.dateFilter = $.extend({}, common.defaultDateRangePickerOptions);\r\n vm.dateFilter.fromDate = moment().subtract(1, 'years');\r\n vm.dateFilter.toDate = moment();\r\n vm.filtroFlota = {};\r\n vm.bitwise = [{\r\n id: 0,\r\n nombre: 'ninguno'\r\n },\r\n {\r\n id: 1,\r\n nombre: '=', \r\n caption: 'igual a'\r\n },\r\n {\r\n id: 2,\r\n nombre: '>',\r\n caption: 'mayor a'\r\n },\r\n {\r\n id: 4,\r\n nombre: '<',\r\n caption: 'menor a'\r\n },\r\n {\r\n id: 8,\r\n nombre: '!=',\r\n caption: 'diferente de'\r\n },\r\n {\r\n id: 16,\r\n nombre: 'between',\r\n caption: 'entre'\r\n },\r\n {\r\n id: 32,\r\n nombre: 'in',\r\n caption: 'contiene'\r\n }\r\n ];\r\n vm.graphs = [];\r\n vm.disablebuttonfilter = true; \r\n \r\n\r\n vm.sendErrorRequire = sendErrorRequire;\r\n vm.print = print;\r\n vm.exportReport = exportReport;\r\n vm.filtrarReport = filtrarReport;\r\n vm.addFilter = addFilter;\r\n vm.addFrequentItem = addFrequentItem;\r\n vm.addFrequentItemFlota = addFrequentItemFlota;\r\n vm.removeFilter = removeFilter;\r\n vm.changeGraph = changeGraph;\r\n vm.expandMasFiltros = expandMasFiltros;\r\n vm.openList = openList;\r\n vm.showFichaje = showFichaje; \r\n vm.addMes = addMes; \r\n vm.showServicios = showServicios; \r\n \r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n reportingService.getById(id).then(function (response) {\r\n vm.predeterminated = response.data.empresaMasterId == null;\r\n vm.report = response.data;\r\n if (vm.predeterminated == false) {\r\n vm.loadingInformation = false;\r\n reportingService.showReport(id).then(function (response) {\r\n $('#report-container').html(response.data);\r\n vm.loadingInformation = true;\r\n });\r\n } else {\r\n if(vm.report.grupoId != 3) vm.loadingInformation = false;\r\n if(vm.report.name == 'Servicios por día') {\r\n reportingService.getEmpresas().then(function(result){\r\n vm.empresas.list = result.data;\r\n vm.empresas.list.unshift({nombre:'Todas', id:'00000000-0000-0000-0000-000000000000'}); \r\n vm.empresas.selected = vm.empresas.list[0]; \r\n setGraphs(); \r\n vm.dateFilter.fromDate = moment().subtract(7, 'days');\r\n vm.dateFilter.toDate = moment();\r\n vm.showServicios(); \r\n });\r\n }\r\n else if (vm.report.grupoId == 4) {\r\n if (userService.userData.empresamaster.contrataControlHorario != true) $state.go('flota.controlHorario.activarControlHorario');\r\n\r\n reportingService.getEmpleados().then(function (result) {\r\n vm.empleados.list.push({\r\n nombre: 'Todos',\r\n id: '00000000-0000-0000-0000-000000000000'\r\n })\r\n for (var i = 0; i < result.data.length; i++) {\r\n vm.empleados.list.push({\r\n nombre: result.data[i].nombre + ' ' + result.data[i].apellidos,\r\n id: result.data[i].empleadoId\r\n });\r\n }\r\n vm.empleados.selected = vm.empleados.list[0];\r\n vm.dateFilter.toDate = moment(); \r\n vm.dateFilter.fromDate = moment().subtract(7, 'days');\r\n vm.showFichaje();\r\n });\r\n }\r\n else {\r\n setGraphs();\r\n if (vm.report.grupoId != 3) {\r\n adaptDateFilter();\r\n filtrarReportIni();\r\n }\r\n reportingService.getPredeterminatedFilters(id).then(function (response) {\r\n vm.filters = response.data;\r\n if (vm.report.grupoId == 3) {\r\n vm.dateFilter.fromDate = moment().subtract(7, 'days');\r\n vm.dateFilter.toDate = moment();\r\n vm.filtroFlota = vm.filters[0];\r\n vm.filtroFlota.dataArray = 0;\r\n vm.filtroFlota.text = '';\r\n vm.filtroFlota.totalGrupos = 0;\r\n var count = 0;\r\n if (vm.filtroFlota.data.length == 0) {\r\n vm.loadingInformation = true;\r\n //sendErrorRequire('No tiene ningún vehículo con datos válidos');\r\n //return;\r\n\r\n $state.go('flota.informes.nopremium', {\r\n 'id': id\r\n });\r\n return;\r\n\r\n }\r\n for (var i = 0; i < vm.filtroFlota.data.length; i++) {\r\n vm.filtroFlota.data[i].group = false;\r\n vm.filtroFlota.data[i].show = true; \r\n vm.filtroFlota.data[i].selected = false;\r\n\r\n if (i == 0 || (vm.filtroFlota.data[i].groupBy != vm.filtroFlota.data[i - 1].groupBy)) {\r\n vm.filtroFlota.data.splice(i, 0, {\r\n nombre: vm.filtroFlota.data[i].groupBy,\r\n value: '0',\r\n group: true,\r\n show: true,\r\n selected: 0\r\n });\r\n ++i;\r\n if (i != 1) {\r\n vm.filtroFlota.data[count].value = i - count - 2;\r\n count = i - 1;\r\n }\r\n }\r\n if (i == vm.filtroFlota.data.length - 1) {\r\n vm.filtroFlota.data[count].value = vm.filtroFlota.data.length - count - 1;\r\n }\r\n }\r\n for (var j = 0; j < vm.filtroFlota.data.length; ++j) {\r\n if (vm.filtroFlota.data[j].group == true) {\r\n vm.filtroFlota.totalGrupos += 1;\r\n vm.addFrequentItemFlota(vm.filtroFlota.data[j]);\r\n }\r\n }\r\n\r\n vm.filtrarReport(); \r\n } \r\n \r\n else {\r\n setFilters();\r\n }\r\n vm.disablebuttonfilter = false; \r\n //if(vm.report.grupoId != 3) filtrarReport();\r\n });\r\n }\r\n \r\n\r\n\r\n }\r\n });\r\n }\r\n\r\n function setGraphs() {\r\n var count = vm.report.graph;\r\n var times = 0;\r\n while (count != 0) {\r\n if ((count & Math.pow(2, times)) == Math.pow(2, times)) {\r\n vm.graphs.push(Math.pow(2, times));\r\n count -= Math.pow(2, times);\r\n }\r\n times++;\r\n }\r\n vm.stablished = vm.graphs[0];\r\n }\r\n\r\n function openList(e) {\r\n $(e.currentTarget).siblings(\"div\").toggle(); \r\n e.stopPropagation(); \r\n }\r\n\r\n function setFilters() {\r\n\r\n for (var j = 0; j < vm.filters.length; j++) {\r\n vm.filters[j].operators = [];\r\n vm.bitwise.forEach(function (bit) {\r\n if (bit.id != 0 && (vm.filters[j].bitwise & bit.id) == bit.id) {\r\n vm.filters[j].operators.push(bit);\r\n }\r\n });\r\n if (vm.filters[j].dataType == 'guid') {\r\n var count = 0;\r\n for (var i = 0; i < vm.filters[j].data.length; i++) {\r\n vm.filters[j].data[i].group = false;\r\n if(vm.filters[j].columnExtendedId != 314) vm.filters[j].data[i].show = true;\r\n else vm.filters[j].data[i].show = false;\r\n vm.filters[j].data[i].selected = false;\r\n\r\n if (i == 0 || (vm.filters[j].data[i].groupBy != vm.filters[j].data[i - 1].groupBy)) {\r\n vm.filters[j].data.splice(i, 0, {\r\n nombre: vm.filters[j].data[i].groupBy,\r\n value: '0',\r\n group: true,\r\n show: true,\r\n selected: 0\r\n });\r\n ++i;\r\n if (i != 1) {\r\n vm.filters[j].data[count].value = i - count - 2;\r\n count = i - 1;\r\n }\r\n }\r\n if (i == vm.filters[j].data.length - 1) {\r\n vm.filters[j].data[count].value = vm.filters[j].data.length - count - 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function sendErrorRequire(messageValue) {\r\n notificationService.sendAppNotification({\r\n message: messageValue,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'error'\r\n });\r\n }\r\n\r\n function print() {\r\n\r\n }\r\n\r\n function exportReport(type) {\r\n\r\n vm.exportOption.id = type; \r\n vm.exportOption.description = type == 0 ? 'CSV' : type == 1 ? 'Excel' : 'PDF';\r\n if(vm.report.name == 'Servicios por día') {\r\n vm.loadingInformation = false; \r\n reportingService.exportServicios(vm.dateFilter.fromDate, vm.dateFilter.toDate, type, vm.empresas.selected.id).then(function(response) {\r\n var file;\r\n if (type == 0) {\r\n file = new Blob([response.data], {\r\n type: 'application/octet-stream'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.csv');\r\n\r\n } else if (type == 1) {\r\n file = new Blob([response.data], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.xlsx');\r\n } else {\r\n file = new Blob([response.data], {\r\n type: 'application/pdf'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.pdf');\r\n\r\n }\r\n vm.loadingInformation = true;\r\n });\r\n }\r\n else if(vm.report.grupoId != 4) {\r\n vm.loadingInformation = false;\r\n reportingService.exportReport(vm.report.id, type, vm.adaptedFilters).then(function (response) {\r\n var file;\r\n if (type == 0) {\r\n file = new Blob([response.data], {\r\n type: 'application/octet-stream'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.csv');\r\n\r\n } else if (type == 1) {\r\n file = new Blob([response.data], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.xlsx');\r\n } else {\r\n file = new Blob([response.data], {\r\n type: 'application/pdf'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.pdf');\r\n\r\n }\r\n vm.loadingInformation = true;\r\n\r\n\r\n });\r\n }\r\n else if(vm.report.grupoId == 4) {\r\n if (common.isNullOrUndefined(vm.dateFilter.fromDate) || common.isNullOrUndefined(vm.dateFilter.toDate) || vm.empleados.selected == null || vm.dateFilter.fromDate > vm.dateFilter.toDate) {\r\n sendErrorRequire('Los filtros no están completos!');\r\n } else {\r\n simpleModalService\r\n .twoOptionsModal('Exportar a '+ vm.exportOption.description) \r\n .then(function (result) {\r\n if(result == 0) return; \r\n if (result == \"extendido\") { \r\n type+=3; \r\n }\r\n vm.loadingInformation = false;\r\n // var date = new Date(vm.anos.selected.id, vm.meses.selected.id);\r\n reportingService.exportFichaje(vm.empleados.selected.id, vm.dateFilter.fromDate, vm.dateFilter.toDate, type).then(function (response) {\r\n var file;\r\n if (type == 1 || type == 0 || type==3 ||type==4) {\r\n file = new Blob([response.data], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.xlsx');\r\n } else {\r\n file = new Blob([response.data], {\r\n type: 'application/pdf'\r\n });\r\n saveAs(file, vm.report.name.trim() + '.pdf');\r\n\r\n }\r\n vm.loadingInformation = true;\r\n });\r\n });\r\n }\r\n }\r\n \r\n }\r\n\r\n function filtrarReportIni() {\r\n vm.loadingInformation = false;\r\n if (id == 20) {\r\n var filters = [];\r\n var filterDate = {\r\n id: 403,\r\n operando: 'between',\r\n value: null\r\n }\r\n var dateTimeFrom = new Date(vm.dateFilter.fromDate);\r\n var dateTimeTo = new Date(vm.dateFilter.toDate);\r\n var string = moment(dateTimeFrom).format('YYYYMMDD');\r\n string += moment(dateTimeTo).format('YYYYMMDD');\r\n filterDate.value = string;\r\n filters.push(filterDate);\r\n vm.adaptedFilters = filters; \r\n reportingService.showFacturasCliente(id, filters).then(function (response) {\r\n $('#report-container').html(response.data);\r\n if (vm.stablished == 1) drawColumn();\r\n else if (vm.stablished == 2) drawCheese();\r\n else if (vm.stablished == 4) drawLine();\r\n vm.loadingInformation = true;\r\n });\r\n } else {\r\n var filters = [];\r\n var filterDate = {\r\n id: 316,\r\n operando: 'between',\r\n value: null\r\n }\r\n var dateTimeFrom = new Date(vm.dateFilter.fromDate);\r\n var dateTimeTo = new Date(vm.dateFilter.toDate);\r\n var string = moment(dateTimeFrom).format('YYYYMMDD');\r\n string += moment(dateTimeTo).format('YYYYMMDD');\r\n filterDate.value = string;\r\n filters.push(filterDate);\r\n vm.adaptedFilters = filters;\r\n reportingService.showPredeterminated(id, filters).then(function (response) {\r\n $('#report-container').html(response.data);\r\n if (vm.stablished == 1) drawColumn();\r\n else if (vm.stablished == 2) drawCheese();\r\n else if (vm.stablished == 4) drawLine();\r\n vm.loadingInformation = true;\r\n });\r\n }\r\n }\r\n\r\n function filtrarReport() {\r\n if (checkFilters() == 1) {\r\n sendErrorRequire('Los filtros no están completos!');\r\n } else {\r\n vm.adaptedFilters = adaptFilters();\r\n vm.loadingInformation = false;\r\n if (id == 20) {\r\n reportingService.showFacturasCliente(id, vm.adaptedFilters).then(function (response) {\r\n $('#report-container').html(response.data);\r\n if (vm.stablished == 1) drawColumn();\r\n else if (vm.stablished == 2) drawCheese();\r\n else if (vm.stablished == 4) drawLine();\r\n vm.loadingInformation = true;\r\n });\r\n } else if (id == 27) {\r\n if(vm.adaptedFilters[1].length == 0) {\r\n sendErrorRequire('Los filtros no están completos!'); \r\n vm.loadingInformation = true;\r\n return; \r\n }\r\n reportingService.consumoCombustible(vm.adaptedFilters[0], vm.adaptedFilters[1]).then(function (response) {\r\n $('#report-container').html(response.data);\r\n vm.loadingInformation = true;\r\n drawGraph();\r\n });\r\n\r\n } else if (id == 28) {\r\n if (vm.adaptedFilters[1].length == 0) {\r\n sendErrorRequire('Los filtros no están completos!');\r\n vm.loadingInformation = true;\r\n return;\r\n }\r\n reportingService.combustibleRespectoTotal(vm.adaptedFilters[0], vm.adaptedFilters[1]).then(function (response) {\r\n $('#report-container').html(response.data);\r\n vm.loadingInformation = true;\r\n drawGraph();\r\n });\r\n } else {\r\n reportingService.showPredeterminated(id, vm.adaptedFilters).then(function (response) {\r\n $('#report-container').html(response.data);\r\n if (vm.stablished == 1) drawColumn();\r\n else if (vm.stablished == 2) drawCheese();\r\n else if (vm.stablished == 4) drawLine();\r\n vm.loadingInformation = true;\r\n });\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n function showFichaje() {\r\n vm.loadingInformation = false;\r\n if (common.isNullOrUndefined(vm.dateFilter.fromDate) || common.isNullOrUndefined(vm.dateFilter.toDate) || vm.empleados.selected == null || vm.dateFilter.fromDate > vm.dateFilter.toDate) {\r\n sendErrorRequire('Los filtros no están completos!');\r\n } else {\r\n reportingService.showFichaje(vm.empleados.selected.id, vm.dateFilter.fromDate, vm.dateFilter.toDate).then(function (response) {\r\n $('#report-container').html(response.data);\r\n vm.loadingInformation = true;\r\n drawGraph();\r\n });\r\n } \r\n }\r\n\r\n function showServicios() {\r\n vm.loadingInformation = false; \r\n reportingService.showServicios(vm.dateFilter.fromDate, vm.dateFilter.toDate, vm.empresas.selected.id).then(function(response){\r\n $('#report-container').html(response.data);\r\n vm.loadingInformation = true;\r\n drawColumn();\r\n }); \r\n }\r\n\r\n function changeGraph(val) {\r\n if (val != vm.stablished) {\r\n vm.stablished = val;\r\n if (vm.stablished == 1) drawColumn();\r\n else if (vm.stablished == 2) drawCheese();\r\n else if (vm.stablished == 4) drawLine();\r\n }\r\n }\r\n\r\n function checkFilters() {\r\n for (var i = 0; i < vm.filtersSelected.length; i++) {\r\n if (common.isNullOrUndefined(vm.filtersSelected[i].field)) {\r\n vm.filtersSelected.splice(i, 1);\r\n i--;\r\n } else {\r\n if (vm.filtersSelected[i].field.dataType == 'guid' && vm.filtersSelected[i].dataArray == 0) return 1;\r\n else if (vm.filtersSelected[i].field.data != null && common.isNullOrUndefined(vm.filtersSelected[i].data)) return 1;\r\n else if (common.isNullOrUndefined(vm.filtersSelected[i].data)) return 1;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n function adaptDateFilter() {\r\n if(vm.report.id == 24) { //diferencia kms\r\n vm.dateFilter.fromDate = moment().startOf('year');\r\n vm.dateFilter.toDate = moment();\r\n }\r\n }\r\n\r\n function adaptFilters() {\r\n var filters = [];\r\n if (vm.report.grupoId == 3) {\r\n var dateTimeFrom = new Date(vm.dateFilter.fromDate);\r\n var dateTimeTo = new Date(vm.dateFilter.toDate);\r\n var string = moment(dateTimeFrom).format('YYYYMMDD');\r\n string += moment(dateTimeTo).format('YYYYMMDD');\r\n var list = [];\r\n for (var i = 0; i < vm.filtroFlota.data.length; ++i) {\r\n if (vm.filtroFlota.data[i].selected == true && vm.filtroFlota.data[i].group == false) {\r\n list.push(vm.filtroFlota.data[i].id);\r\n }\r\n }\r\n filters.push(list);\r\n return [string, list];\r\n }\r\n var temp = vm.filters.find(x => (x.dataType == 'datetime' || x.dataType == 'date') && x.tableId == vm.report.mainTable);\r\n var filterDate = {\r\n id: temp.columnExtendedId,\r\n operando: 'between',\r\n value: null\r\n }\r\n var dateTimeFrom = new Date(vm.dateFilter.fromDate);\r\n var dateTimeTo = new Date(vm.dateFilter.toDate);\r\n var string = moment(dateTimeFrom).format('YYYYMMDD');\r\n string += moment(dateTimeTo).format('YYYYMMDD');\r\n filterDate.value = string;\r\n filters.push(filterDate);\r\n\r\n for (var i = 0; i < vm.filtersSelected.length; i++) {\r\n var filter = {\r\n id: null,\r\n operando: '',\r\n value: ''\r\n }\r\n filter.id = vm.filtersSelected[i].field.columnExtendedId;\r\n if (vm.filtersSelected[i].field.dataType == 'guid') {\r\n filter.operando = 'in';\r\n for (var j = 0; j < vm.filtersSelected[i].field.data.length; j++) {\r\n if (vm.filtersSelected[i].field.data[j].selected == true && vm.filtersSelected[i].field.data[j].group == false) {\r\n filter.value += vm.filtersSelected[i].field.data[j].id + ';';\r\n }\r\n }\r\n filter.value = filter.value.slice(0, -1);\r\n } else if (vm.filtersSelected[i].field.data != null) {\r\n filter.operando = vm.filtersSelected[i].operator.nombre;\r\n filter.value = vm.filtersSelected[i].data.value;\r\n\r\n } else {\r\n filter.operando = vm.filtersSelected[i].operator.nombre;\r\n filter.value = vm.filtersSelected[i].data;\r\n }\r\n filters.push(filter);\r\n }\r\n return filters;\r\n }\r\n\r\n function addFilter() {\r\n var filter = {\r\n fieldId: null,\r\n data: \"\",\r\n operator: null,\r\n dataArray: 0,\r\n dateRange: $.extend({}, common.defaultDateRangePickerOptions),\r\n text: ''\r\n };\r\n vm.filtersSelected.push(filter);\r\n }\r\n\r\n function expandMasFiltros() {\r\n if (vm.masFiltros == false && vm.filtersSelected.length == 0) {\r\n vm.addFilter();\r\n }\r\n vm.masFiltros = !vm.masFiltros; \r\n }\r\n\r\n function removeFilter(index) {\r\n if(vm.filtersSelected[index].field.dataType == 'guid') {\r\n for(var i = 0; i < vm.filtersSelected[index].field.data.length; i++) {\r\n if (vm.filtersSelected[index].field.data[i].group == true) vm.filtersSelected[index].field.data[i].selected = 0;\r\n else vm.filtersSelected[index].field.data[i].selected = false; \r\n }\r\n }\r\n vm.filtersSelected.splice(index, 1);\r\n }\r\n\r\n function addMes(option) {\r\n if(option.id == 12) {\r\n if(option.selected == true) {\r\n option.selected = false; \r\n vm.meses.selected = []; \r\n for (var i = 0; i < vm.meses.list.length; ++i) {\r\n vm.meses.list[i].selected = false;\r\n }\r\n }\r\n else {\r\n option.selected = true; \r\n vm.meses.selected = [];\r\n for (var i = 1; i < vm.meses.list.length; ++i) {\r\n vm.meses.list[i].selected = true;\r\n vm.meses.selected.push(vm.meses.list[i].id); \r\n }\r\n }\r\n \r\n \r\n }\r\n else {\r\n if (option.selected == true) {\r\n if(vm.meses.list[0].selected == true) vm.meses.list[0].selected = false; \r\n option.selected = false;\r\n var idx = vm.meses.selected.findIndex(x => x == option.id);\r\n if (idx > -1) {\r\n vm.meses.selected.splice(idx, 1);\r\n }\r\n } else {\r\n option.selected = true;\r\n vm.meses.selected.push(option.id);\r\n if (vm.meses.selected.length == 12) vm.meses.list[0].selected = false;\r\n\r\n }\r\n }\r\n }\r\n\r\n function addFrequentItem(item, option) {\r\n if (option.group == false) {\r\n if (option.selected == false) {\r\n option.show = true;\r\n option.selected = true;\r\n item.dataArray += 1;\r\n for (var i = 0; i < item.field.data.length; i++) {\r\n if (item.field.data[i].group == true && item.field.data[i].nombre == option.groupBy) {\r\n item.field.data[i].selected += 1;\r\n if (item.field.data[i].selected == item.field.data[i].value) {\r\n for (var j = 0; j < item.field.data.length; j++) {\r\n if (item.field.data[j].group == false && item.field.data[j].groupBy == item.field.data[i].nombre) {\r\n item.field.data[j].show = false;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n } else {\r\n item.dataArray -= 1;\r\n if(item.field.columnExtendedId == 314) option.show = false;\r\n option.selected = false;\r\n for (var i = 0; i < item.field.data.length; i++) {\r\n if (item.field.data[i].group == true && (item.field.data[i].nombre == option.groupBy)) {\r\n item.field.data[i].selected -= 1;\r\n if (item.field.data[i].selected == (item.field.data[i].value - 1)) {\r\n for (var j = 0; j < item.field.data.length; j++) {\r\n if ((item.field.data[j].group == false) && (item.field.data[j].groupBy == item.field.data[i].nombre) && (item.field.data[j].selected == true)) {\r\n item.field.data[j].show = true;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n if (option.selected != option.value) {\r\n for (var i = 0; i < item.field.data.length; i++) {\r\n if (option.nombre == item.field.data[i].groupBy) {\r\n if (item.field.data[i].selected == false) {\r\n option.selected += 1;\r\n item.dataArray += 1;\r\n item.field.data[i].selected = true;\r\n }\r\n if (item.field.columnExtendedId == 314) item.field.data[i].show = false;\r\n }\r\n }\r\n\r\n } else {\r\n\r\n option.selected = 0;\r\n for (var i = 0; i < item.field.data.length; i++) {\r\n if (item.field.data[i].group == false && item.field.data[i].groupBy == option.nombre) {\r\n if (item.field.columnExtendedId == 314)item.field.data[i].show = false;\r\n item.field.data[i].selected = false;\r\n item.dataArray -= 1;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n function addFrequentItemFlota(option) {\r\n if (option.group == false) {\r\n if (option.selected == false) {\r\n option.show = true;\r\n option.selected = true;\r\n vm.filtroFlota.dataArray += 1;\r\n for (var i = 0; i < vm.filtroFlota.data.length; i++) {\r\n if (vm.filtroFlota.data[i].group == true && vm.filtroFlota.data[i].nombre == option.groupBy) {\r\n vm.filtroFlota.data[i].selected += 1;\r\n if (vm.filtroFlota.data[i].selected == vm.filtroFlota.data[i].value) {\r\n for (var j = 0; j < vm.filtroFlota.data.length; j++) {\r\n if (vm.filtroFlota.data[j].group == false && vm.filtroFlota.data[j].groupBy == vm.filtroFlota.data[i].nombre) {\r\n vm.filtroFlota.data[j].show = false;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n } else {\r\n vm.filtroFlota.dataArray -= 1;\r\n option.selected = false;\r\n for (var i = 0; i < vm.filtroFlota.data.length; i++) {\r\n if (vm.filtroFlota.data[i].group == true && (vm.filtroFlota.data[i].nombre == option.groupBy)) {\r\n vm.filtroFlota.data[i].selected -= 1;\r\n if (vm.filtroFlota.data[i].selected == (vm.filtroFlota.data[i].value - 1)) {\r\n for (var j = 0; j < vm.filtroFlota.data.length; j++) {\r\n if ((vm.filtroFlota.data[j].group == false) && (vm.filtroFlota.data[j].groupBy == vm.filtroFlota.data[i].nombre) && (vm.filtroFlota.data[j].selected == true)) {\r\n vm.filtroFlota.data[j].show = true;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n if (option.selected != option.value) {\r\n for (var i = 0; i < vm.filtroFlota.data.length; i++) {\r\n if (option.nombre == vm.filtroFlota.data[i].groupBy) {\r\n if (vm.filtroFlota.data[i].selected == false) {\r\n option.selected += 1;\r\n vm.filtroFlota.dataArray += 1;\r\n vm.filtroFlota.data[i].selected = true;\r\n }\r\n }\r\n }\r\n\r\n } else {\r\n option.selected = 0;\r\n for (var i = 0; i < vm.filtroFlota.data.length; i++) {\r\n if (vm.filtroFlota.data[i].group == false && vm.filtroFlota.data[i].groupBy == option.nombre) {\r\n vm.filtroFlota.data[i].selected = false;\r\n vm.filtroFlota.dataArray -= 1;\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('invesfleet')\r\n .controller('InformeListController', InformeListController);\r\n\r\n\r\n InformeListController.$inject = [\r\n '$templateCache', '$scope', '$rootScope', '$state', '$filter', '$q', 'restrictionService', 'reportingService', 'simpleModalService', 'userService', 'notificationService'\r\n ];\r\n\r\n\r\n\r\n function InformeListController($templateCache, $scope, $rootScope, $state, $filter, $q, restrictionService, reportingService, simpleModalService, userService, notificationService) {\r\n var vm = this;\r\n\r\n vm.title = \"Informes\";\r\n vm.loadingInformation = false;\r\n vm.gridData = [];\r\n vm.reports = [];\r\n vm.searchText = \"\";\r\n vm.showList = false;\r\n vm.favorites = [];\r\n vm.groupSelected = 0;\r\n vm.groups = [{\r\n id: 1,\r\n nombre: 'Informes de órdenes'\r\n },\r\n {\r\n id: 2,\r\n nombre: 'Informes de facturas'\r\n },\r\n {\r\n id: 99,\r\n nombre: 'Informes favoritos'\r\n },\r\n {\r\n id: 3,\r\n nombre: 'Informes de flota'\r\n }, \r\n {\r\n id: 4,\r\n nombre: 'Informes de empleados'\r\n }\r\n ]\r\n\r\n vm.restrictionService = restrictionService;\r\n vm.deleteReport = deleteReport;\r\n vm.showReport = showReport;\r\n vm.clearSearcher = clearSearcher;\r\n vm.filterGrid = filterGrid;\r\n vm.getList = getList;\r\n vm.goToEdit = goToEdit;\r\n vm.checkFavorites = checkFavorites;\r\n vm.seleccionGrupos = seleccionGrupos;\r\n vm.permisoHorario = userService.userData.esAdmin || userService.userData.esSupervisor; \r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n vm.loadingInformation = false;\r\n reportingService.getReports().then(function (response) {\r\n vm.reports = response.data;\r\n vm.gridData = response.data;\r\n reportingService.getFavorites().then(function (response) {\r\n vm.favorites = response.data;\r\n vm.loadingInformation = true;\r\n });\r\n });\r\n\r\n }\r\n\r\n function showReport(id) { //quitar if cuando fran termine\r\n ////blurred\r\n // if(id == 27 || id == 28) {\r\n // $state.go('flota.informes.nopremium', {\r\n // 'id': id\r\n // });\r\n\r\n // }\r\n // else {\r\n // restrictionService.hasPermission('leer', 'informe', 'flota.informes.detalle', {\r\n // 'id': id\r\n // });\r\n // }\r\n\r\n //normal\r\n $state.go('flota.informes.detalle', {\r\n 'id': id\r\n });\r\n \r\n }\r\n\r\n function deleteReport(report) {\r\n simpleModalService.yesNoModal('Confirmación eliminar',\r\n '¿Desea eliminar este report?')\r\n .then(function (result) {\r\n if (result) {\r\n reportingService.deleteReport(report.id)\r\n .then(function (response) {\r\n vm.reports.splice(vm.reports.indexOf(report), 1);\r\n vm.gridData.splice(vm.gridData.indexOf(report), 1);\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n function goToEdit(report) {\r\n // console.log(userService.userData); \r\n var idx = userService.userData.restrictions.findIndex(x => x.entidad == 'informe');\r\n if( idx != -1 && (userService.userData.restrictions[idx].tipo & 2) == 2) {\r\n sendErrorNotification(\"No tiene los permisos adecuados, consulte con el administrador!\"); \r\n }\r\n else {\r\n $state.go('flota.informes.editarInforme', {\r\n 'id': report.id\r\n });\r\n }\r\n\r\n }\r\n\r\n function sendErrorNotification(msg) {\r\n notificationService.sendAppNotification({\r\n message: msg,\r\n positionY: 'top',\r\n positionX: 'right',\r\n delay: 3000,\r\n type: 'info'\r\n });\r\n }\r\n\r\n function filterGrid() {\r\n vm.showList = true;\r\n if (vm.searchText !== '') {\r\n vm.gridData = $filter('searchFilter')(vm.gridData, {\r\n 'id': vm.searchText,\r\n 'name': vm.searchText,\r\n 'grupo': vm.searchText,\r\n }, true);\r\n } else {\r\n vm.clearSearcher();\r\n }\r\n $rootScope.$apply();\r\n\r\n //vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n function clearSearcher() {\r\n vm.searchText = \"\";\r\n vm.showList = false;\r\n if (vm.groupSelected == 0) vm.gridData = vm.reports;\r\n else {\r\n getList(vm.groupSelected);\r\n }\r\n $rootScope.$apply();\r\n //vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n function getList(id) {\r\n vm.groupSelected = id;\r\n vm.title = vm.groups.find(x => x.id == id).nombre;\r\n if (id == 99) { //Favoritos\r\n vm.gridData = vm.reports.filter(report => vm.favorites.filter(x => x.reportId == report.id).length > 0);\r\n } else { //grupos\r\n vm.gridData = vm.reports.filter(report => report.grupoId == id);\r\n }\r\n vm.showList = true;\r\n //vm.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);\r\n }\r\n\r\n function checkFavorites(id) {\r\n var idx = vm.favorites.findIndex(x => x.reportId == id);\r\n var bool = idx != -1;\r\n return bool;\r\n }\r\n\r\n function seleccionGrupos() {\r\n vm.title = 'Informes';\r\n vm.showList = false;\r\n vm.gridData = vm.reports;\r\n vm.groupSelected = 0;\r\n }\r\n\r\n }\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var testApp = angular\r\n .module('invesfleet')\r\n .controller('InformeNoPremiumController', InformeNoPremiumController);\r\n\r\n \r\n\r\n InformeNoPremiumController.$inject = [\r\n '$stateParams', 'genericDataService', '$rootScope', '$state',\r\n '$filter', '$q', '$scope', 'reportService', 'notificationService', 'reportingService', 'endPoints', 'common', 'userService'\r\n ];\r\n\r\n\r\n function InformeNoPremiumController($stateParams, genericDataService, $rootScope, $state,\r\n $filter, $q, $scope, reportService, notificationService, reportingService, endPoints, common, userService) {\r\n\r\n /* PUBLIC VARIABLES */\r\n var vm = this;\r\n var id = $stateParams.id;\r\n vm.cancelar = cancelar;\r\n\r\n (function () {\r\n loadData();\r\n })();\r\n\r\n function loadData() {\r\n if(id == 27) {\r\n drawGraph27();\r\n }\r\n else if(id == 28) {\r\n drawGraph28();\r\n }\r\n }\r\n\r\n function drawGraph27() {\r\n $('#bar_chart').remove();\r\n $('#graph-container').append('