From d9afa9a1efd9d392db15eec60818c1e2c1526997 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 25 Sep 2023 08:03:28 +0200 Subject: [PATCH 01/46] ya funcionando la consulta de papel_impresion/maquinas --- .../Configuracion/Maquinascalles.php | 18 +-- ci4/app/Controllers/Test.php | 9 +- .../Configuracion/MaquinasCallesEntity.php | 6 +- ci4/app/Language/en/MaquinasCalles.php | 14 +- ci4/app/Language/es/MaquinasCalles.php | 14 +- ci4/app/Models/Configuracion/MaquinaModel.php | 140 +++++++++++------- .../Configuracion/MaquinasCallesModel.php | 41 ++--- .../Configuracion/PapelImpresionModel.php | 48 ++++++ ci4/app/Services/PresupuestoService.php | 95 ++++++++++-- .../maquinas/viewMaquinaForm.php | 10 +- 10 files changed, 251 insertions(+), 144 deletions(-) diff --git a/ci4/app/Controllers/Configuracion/Maquinascalles.php b/ci4/app/Controllers/Configuracion/Maquinascalles.php index c5816014..9c46a46c 100644 --- a/ci4/app/Controllers/Configuracion/Maquinascalles.php +++ b/ci4/app/Controllers/Configuracion/Maquinascalles.php @@ -52,19 +52,12 @@ class Maquinascalles extends \App\Controllers\GoBaseResourceController // Build our Editor instance and process the data coming from _POST $response = Editor::inst($db, 'maquinas_calles') ->fields( - Field::inst('formas_min') + Field::inst('formas') ->validator('Validate::numeric', array( - 'message' => lang('MaquinasCalles.validation.formas_min.integer')) + 'message' => lang('MaquinasCalles.validation.formas.integer')) ) ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasCalles.validation.formas_min.required')) - ), - Field::inst('formas_max') - ->validator('Validate::numeric', array( - 'message' => lang('MaquinasCalles.validation.formas_max.integer')) - ) - ->validator('Validate::notEmpty', array( - 'message' => lang('MaquinasCalles.validation.formas_max.required')) + 'message' => lang('MaquinasCalles.validation.formas.required')) ), Field::inst('internas') ->validator('Validate::numeric', array( @@ -94,10 +87,9 @@ class Maquinascalles extends \App\Controllers\GoBaseResourceController foreach ($data['data'] as $pkey => $values) { // Si no se quiere borrar... if ($data['data'][$pkey]['is_deleted'] != 1) { - $process_data['formas_min'] = $data['data'][$pkey]['formas_min']; - $process_data['formas_max'] = $data['data'][$pkey]['formas_max']; + $process_data['formas'] = $data['data'][$pkey]['formas']; $process_data['maquina_id'] = $data['data'][$pkey]['maquina_id']; - $response = $this->model->checkIntervals($process_data, $pkey); + $response = $this->model->checkDuplicatedFormas($process_data, $pkey); // No se pueden duplicar valores al crear o al editar if (!empty($response)) { return $response; diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 26d1a273..8811414e 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -2,7 +2,8 @@ namespace App\Controllers; -use App\Models\Configuracion\MaquinasCallesModel; +use App\Models\Presupuestos\PresupuestoModel; +use App\Services\PresupuestoService; class Test extends BaseController { @@ -15,11 +16,7 @@ class Test extends BaseController public function index() { - $model = new MaquinasCallesModel(); - echo '
';
-        $resourceData = $model->getResource("", 113)->get()->getResultObject();
-        var_dump($resourceData);
-        echo '
'; + PresupuestoService::test(); } } \ No newline at end of file diff --git a/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php b/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php index 5bca1d7c..57f17c59 100644 --- a/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php +++ b/ci4/app/Entities/Configuracion/MaquinasCallesEntity.php @@ -8,8 +8,7 @@ class MaquinasCallesEntity extends \CodeIgniter\Entity\Entity protected $attributes = [ "id" => null, "maquina_id" => null, - "formas_min" => null, - "formas_max" => null, + "formas" => null, "internas" => 3.32, "externas" => 1.66, "user_created_id" => 0, @@ -20,8 +19,7 @@ class MaquinasCallesEntity extends \CodeIgniter\Entity\Entity ]; protected $casts = [ "maquina_id" => "int", - "formas_min" => "int", - "formas_max" => "int", + "formas" => "int", "internas" => "float", "externas" => "float", "user_created_id" => "int", diff --git a/ci4/app/Language/en/MaquinasCalles.php b/ci4/app/Language/en/MaquinasCalles.php index 743baada..704e28f4 100644 --- a/ci4/app/Language/en/MaquinasCalles.php +++ b/ci4/app/Language/en/MaquinasCalles.php @@ -6,20 +6,12 @@ return [ 'id' => 'ID', 'moduleTitle' => 'Streets config', 'deleteLine' => 'the selected register', - 'formas_min' => 'Shapes mín.', - 'formas_max' => 'Shapes max.', + 'formas' => 'Shapes', 'internas' => 'Internal streets', 'externas' => 'External streets', 'validation' => [ - 'error_calle_overlap' => 'The range [Shapes mín, Shapes max] is overlapped with another one.', - 'error_calle_range' => 'The field Shapes min. must be lower than the field Shapes max.', - 'formas_min' => [ - 'integer' => 'Must be a integer number.', - 'required' => 'Required.', - - ], - - 'formas_max' => [ + 'error_formas_exists' => 'The shape value for another line already exists', + 'formas' => [ 'integer' => 'Must be a integer number.', 'required' => 'Required.', diff --git a/ci4/app/Language/es/MaquinasCalles.php b/ci4/app/Language/es/MaquinasCalles.php index dbb8c939..dbf93d8a 100644 --- a/ci4/app/Language/es/MaquinasCalles.php +++ b/ci4/app/Language/es/MaquinasCalles.php @@ -6,20 +6,12 @@ return [ 'id' => 'ID', 'moduleTitle' => 'Configuración Calles', 'deleteLine' => 'el registro seleccionado', - 'formas_min' => 'Formas mín.', - 'formas_max' => 'Formas max.', + 'formas' => 'Formas', 'internas' => 'Calles internas', 'externas' => 'Calles externas', 'validation' => [ - 'error_calle_overlap' => 'El rango [Formas mín, Formas max] se solapa con otro existente para el tipo seleccionado.', - 'error_calle_range' => 'El campo Formas mín. debe ser menor que el campo Formas max.', - 'formas_min' => [ - 'integer' => 'Debe contener un número entero.', - 'required' => 'Requerido.', - - ], - - 'formas_max' => [ + 'error_formas_exists' => 'Ya existe el valor de forma para otra línea', + 'formas' => [ 'integer' => 'Debe contener un número entero.', 'required' => 'Requerido.', diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index bb5dbdb3..247e4ba2 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -1,4 +1,5 @@ "t1.orden_planning", 10 => "t1.min", 11 => "t1.max", - - + + ]; protected $allowedFields = [ @@ -252,14 +253,15 @@ class MaquinaModel extends \App\Models\GoBaseModel return $result; } - public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa){ + public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa) + { $builder = $this->db ->table($this->table . " t1") ->select( - "'".$papel_impresion_id."'". " as papel_impresion_id, t1.id AS maquina_id, '0' as active" - ); + "'" . $papel_impresion_id . "'" . " as papel_impresion_id, t1.id AS maquina_id, '0' as active" + ); $builder->where("t1.is_rotativa", $rotativa); - + return $builder; } @@ -280,57 +282,87 @@ class MaquinaModel extends \App\Models\GoBaseModel $builder->join("lg_maquinas t2", "t1.padre_id = t2.id", "left"); //JJO - $builder->where("t1.is_deleted", 0); + $builder->where("t1.is_deleted", 0); return empty($search) ? $builder : $builder - ->groupStart() - ->like("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.velocidad", $search) - ->orLike("t1.ancho", $search) - ->orLike("t1.alto", $search) - ->orLike("t1.ancho_impresion", $search) - ->orLike("t1.alto_impresion", $search) - ->orLike("t1.alto_click", $search) - ->orLike("t1.min", $search) - ->orLike("t1.max", $search) - ->orLike("t1.duracion_jornada", $search) - ->orLike("t1.orden_planning", $search) - ->orLike("t1.precio_tinta_negro", $search) - ->orLike("t1.precio_tinta_color", $search) - ->orLike("t1.velocidad_corte", $search) - ->orLike("t1.precio_hora_corte", $search) - ->orLike("t1.metrosxminuto", $search) - ->orLike("t1.forzar_num_formas_horizontales_portada", $search) - ->orLike("t1.forzar_num_formas_verticales_portada", $search) - ->orLike("t1.observaciones", $search) - ->orLike("t2.id", $search) - ->orLike("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.velocidad", $search) - ->orLike("t1.ancho", $search) - ->orLike("t1.alto", $search) - ->orLike("t1.ancho_impresion", $search) - ->orLike("t1.alto_impresion", $search) - ->orLike("t1.alto_click", $search) - ->orLike("t1.padre_id", $search) - ->orLike("t1.min", $search) - ->orLike("t1.max", $search) - ->orLike("t1.duracion_jornada", $search) - ->orLike("t1.orden_planning", $search) - ->orLike("t1.precio_tinta_negro", $search) - ->orLike("t1.precio_tinta_color", $search) - ->orLike("t1.velocidad_corte", $search) - ->orLike("t1.precio_hora_corte", $search) - ->orLike("t1.metrosxminuto", $search) - ->orLike("t1.forzar_num_formas_horizontales_portada", $search) - ->orLike("t1.forzar_num_formas_verticales_portada", $search) - ->orLike("t1.observaciones", $search) - ->orLike("t2.nombre", $search) - ->groupEnd(); + ->groupStart() + ->like("t1.id", $search) + ->orLike("t1.nombre", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.velocidad", $search) + ->orLike("t1.ancho", $search) + ->orLike("t1.alto", $search) + ->orLike("t1.ancho_impresion", $search) + ->orLike("t1.alto_impresion", $search) + ->orLike("t1.alto_click", $search) + ->orLike("t1.min", $search) + ->orLike("t1.max", $search) + ->orLike("t1.duracion_jornada", $search) + ->orLike("t1.orden_planning", $search) + ->orLike("t1.precio_tinta_negro", $search) + ->orLike("t1.precio_tinta_color", $search) + ->orLike("t1.velocidad_corte", $search) + ->orLike("t1.precio_hora_corte", $search) + ->orLike("t1.metrosxminuto", $search) + ->orLike("t1.forzar_num_formas_horizontales_portada", $search) + ->orLike("t1.forzar_num_formas_verticales_portada", $search) + ->orLike("t1.observaciones", $search) + ->orLike("t2.id", $search) + ->orLike("t1.id", $search) + ->orLike("t1.nombre", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.velocidad", $search) + ->orLike("t1.ancho", $search) + ->orLike("t1.alto", $search) + ->orLike("t1.ancho_impresion", $search) + ->orLike("t1.alto_impresion", $search) + ->orLike("t1.alto_click", $search) + ->orLike("t1.padre_id", $search) + ->orLike("t1.min", $search) + ->orLike("t1.max", $search) + ->orLike("t1.duracion_jornada", $search) + ->orLike("t1.orden_planning", $search) + ->orLike("t1.precio_tinta_negro", $search) + ->orLike("t1.precio_tinta_color", $search) + ->orLike("t1.velocidad_corte", $search) + ->orLike("t1.precio_hora_corte", $search) + ->orLike("t1.metrosxminuto", $search) + ->orLike("t1.forzar_num_formas_horizontales_portada", $search) + ->orLike("t1.forzar_num_formas_verticales_portada", $search) + ->orLike("t1.observaciones", $search) + ->orLike("t2.nombre", $search) + ->groupEnd(); + } + + public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $papel_impresion_id = -1) + { + /* + 1.-> tarifa_Tipo impresion + 2.-> Maquina + 3.-> Papeles impresion asociados a esa maquina + 4.-> papeles genericos que aparecen en esos papeles impresion + */ + $builder = $this->db + ->table($this->table . " t1") + ->distinct('t1.id') + ->select( + "t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion, + t1.alto_impresion AS alto_impresion, t1.is_rotativa AS is rotativa" + ) + ->join("lg_maquinas_tarifas_impresion t2", "t1.id = t2.maquina_id", "left") + ->join("lg_maquina_papel_impresion t3", "t1.id = t3.maquina_id", "left") + + + ->where("t1.is_deleted", 0) + ->where("t1.tipo", "impresion") + ->where("t1.is_rotativa", $is_rotativa) + ->where("t2.is_deleted", 0) + ->where("t2.tipo", $tarifa_tipo) + ->where("t3.papel_impresion_id", $papel_impresion_id) + ->where("t3.active", 1); + + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } } diff --git a/ci4/app/Models/Configuracion/MaquinasCallesModel.php b/ci4/app/Models/Configuracion/MaquinasCallesModel.php index aca7e2d6..55eb1bdc 100644 --- a/ci4/app/Models/Configuracion/MaquinasCallesModel.php +++ b/ci4/app/Models/Configuracion/MaquinasCallesModel.php @@ -13,16 +13,14 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel protected $useAutoIncrement = true; const SORTABLE = [ - 0 => "t1.formas_min", - 1 => "t1.formas_max", - 2 => "t1.internas", - 3 => "t1.externas", + 0 => "t1.formas", + 1 => "t1.internas", + 2 => "t1.externas", ]; protected $allowedFields = [ "maquina_id", - "formas_min", - "formas_max", + "formas", "internas", "externas", "user_created_id", @@ -43,10 +41,7 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel public static $labelField = "maquina_id"; protected $validationRules = [ - "formas_min" => [ - "rules" => "required|int", - ], - "formas_max" => [ + "formas" => [ "rules" => "required|int", ], "internas" => [ @@ -70,8 +65,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.maquina_id as maquina, t1.formas_min AS formas_min, - t1.formas_max AS formas_max, t1.internas AS internas, t1.externas AS externas," + "t1.id AS id, t1.maquina_id as maquina, t1.formas AS formas, + t1.internas AS internas, t1.externas AS externas," ); //JJO @@ -82,29 +77,22 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel ? $builder : $builder ->groupStart() - ->like("t1.formas_min", $search) - ->orLike("t1.formas_max", $search) + ->like("t1.formas", $search) ->orLike("t1.internas", $search) ->orLike("t1.externas", $search) - ->orLike("t1.formas_min", $search) - ->orLike("t1.formas_max", $search) + ->orLike("t1.formas", $search) ->orLike("t1.internas", $search) ->orLike("t1.externas", $search) ->groupEnd(); } - public function checkIntervals($data = [], $id = null){ + public function checkDuplicatedFormas($data = [], $id = null){ helper('general'); - - if(floatval($data["formas_min"])>= floatval($data["formas_max"])){ - return lang('MaquinasCalles.validation.error_calle_range'); - } - - + $rows = $this->db ->table($this->table) - ->select("id, formas_min, formas_max") + ->select("id, formas") ->where("is_deleted", 0) ->where("maquina_id", $data['maquina_id']) ->get()->getResultObject(); @@ -116,9 +104,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel continue; } } - if(check_overlap(floatval($data["formas_min"]), floatval($data["formas_max"]), - $row->formas_min, $row->formas_max)){ - return lang('MaquinasCalles.validation.error_calle_overlap'); + if(intval($data["formas"]) == $row->formas){ + return lang('MaquinasCalles.validation.error_formas_exists'); } } } diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index 2a7e1411..d600bbc2 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -209,4 +209,52 @@ class PapelImpresionModel extends \App\Models\GoBaseModel return $builder; } + + /** + * @param null $papel_generico_id + * @param null $gramaje + * @param mixed $options + * array con las opciones para bn,color,cubierta,sobrecubierta,rotativa + * @param mixed $is_activo=true + * + * @return [type] + */ + public function getIdPapelesImpresionForPresupuesto($papel_generico_id = null, $gramaje = null, $options=[]){ + $bn = array_key_exists('bn', $options) ? $options['bn'] : null; + $color = array_key_exists('color', $options)? $options['color'] : null; + $cubierta = array_key_exists('cubierta', $options)? $options['cubierta'] : null; + $sobrecubierta = array_key_exists('sobrecubierta', $options)? $options['sobrecubierta'] : null; + $rotativa = array_key_exists('rotativa', $options)? $options['rotativa'] : null; + + $builder = $this->db + ->table($this->table . " t1") + ->distinct("t1.id") + ->select( + "t1.id AS id, t1.nombre AS nombre, t1.papel_generico_id AS papel_generico_id, + t1.gramaje as gramaje, t1.espesor AS espesor, t1.precio_tonelada AS precio_tonelada, t1.rotativa AS rotativa"); + + $builder->where("t1.is_deleted", 0); + $builder->where("t1.isActivo", 1); + + $builder->where("t1.papel_generico_id", $papel_generico_id); + $builder->where("t1.gramaje", $gramaje); + + if(!is_null($bn)){ + $builder->where("t1.bn", $bn); + } + if(!is_null($color)){ + $builder->where("t1.color", $color); + } + if(!is_null($cubierta)){ + $builder->where("t1.cubierta", $cubierta); + } + if(!is_null($sobrecubierta)){ + $builder->where("t1.sobrecubierta", $sobrecubierta); + } + if(!is_null($rotativa)){ + $builder->where("t1.rotativa", $rotativa); + } + + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); + } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 6c2eb28d..6e38684d 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -2,26 +2,99 @@ namespace App\Services; +use App\Controllers\Servicios\Maquetacion; use CodeIgniter\Config\BaseService; -use App\Models\Configuracion\PapelGenericoModel; +use App\Models\Configuracion\MaquinaModel; +use App\Models\Configuracion\PapelImpresionModel; class PresupuestoService extends BaseService { - public static function example(){ - return 'Hola'; + + public static function test(){ + $uso = 'interior'; + $tipo = 'negro'; + $cantidad = (object)array( + 'paginas' => 100, + 'tirada' => 50, + 'merma' => 5, + 'merma_portada' => 1, + ); + + + $maquina_model = new MaquinaModel(); + + + $opciones_papel = array( + 'bn' => 1, + 'cubierta' => 0, + 'sobrecubierta' => 0, + 'rotativa' => 0, + ); + $papelimpresionmodel = new PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: 4, + gramaje: 70, + options: $opciones_papel + ); + foreach($papeles as $papel){ + echo '-------------------------------'; + $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( + is_rotativa: $papel->rotativa, + tarifa_tipo: 'negro', + papel_impresion_id: $papel->id + ); + echo '
';
+            echo '

Para papel impresion: ' . $papel->nombre . '

'; + echo ''; + var_dump($maquinas); + echo '
'; + } + + + } - /* + /** - * getPapelForMenu. - * Devuelve la lista de papeles disponibles - * - * @param mixed $tipo_impresion - * @param mixed $dimensiones - * @return mixed + * @param mixed $uso + * contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta'] + * @param mixed $tipo + * contiene algun parametro de la lista ['negro','color','negrohq','bicolor','colorhq'] + * @param mixed $datos_cantidad + * objeto con la siguiente extructura: + * -> paginas: numero de paginas por libro + * -> tirada: numero de unidades a imprimir + * -> merma: unidades que se añaden a la tirada + * -> merma_portada: unidades de merma para la portada + * @param mixed $maquina + * objeto con la siguiente estructura: + * -> id: el id de la maquina + * -> nombre: nombre de la maquina + * -> calles: objeto con la configuracion de las calles de la maquina + * -> formas: numero de formas + * -> calle_interna: valor de las calles internas de la maquina + * -> calle_externa: valor de las calles externas de la maquina + * -> ancho_impresion: valor maximo del ancho para imprimir + * -> alto_impresion: valor maximo del alto para imprimir + * + * @return [type] */ - public static function test(){ + public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp){ + + $tipo = array_get($args, 'tipo') ; + $tirada = array_get($args, 'tirada'); + $merma = array_get($args, 'merma'); + $merma_portada = array_get($args, 'merma_portada'); + $ancho = array_get($args, 'ancho'); + $alto = array_get($args, 'alto'); + $paginas = array_get($args, 'paginas'); + $papel = array_get($args, 'papel'); + $papel_compra = array_get($args, 'papel_compra'); + $gramaje = array_get($args, 'gramaje'); + $maquina = array_get($args, 'maquina'); + $tarifa = array_get($args, 'tarifa'); + $cosido = array_get($args, 'cosido', false); } } \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php index f648b335..02873197 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php @@ -78,8 +78,7 @@ - - + @@ -657,9 +656,7 @@ table : "#tableOfCalles", idSrc: 'id', fields: [ { - name: "formas_min" - }, { - name: "formas_max" + name: "formas" }, { name: "internas" }, { @@ -728,8 +725,7 @@ async: true, }), columns : [ - { 'data': 'formas_min' }, - { 'data': 'formas_max' }, + { 'data': 'formas' }, { 'data': 'internas' }, { 'data': 'externas' }, { data: actionBtns, From 089df469e7e73f97514edbe8251402434a0f4992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 25 Sep 2023 13:47:49 +0200 Subject: [PATCH 02/46] trabajando en preciopliego --- ci4/app/Controllers/Test.php | 5 + ci4/app/Models/Configuracion/MaquinaModel.php | 3 +- .../Configuracion/MaquinasCallesModel.php | 17 ++ .../PapelImpresionMargenModel.php | 57 ++++-- ci4/app/Services/PresupuestoService.php | 183 ++++++++++++++++-- 5 files changed, 232 insertions(+), 33 deletions(-) diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 8811414e..5a4d5f45 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -18,5 +18,10 @@ class Test extends BaseController { PresupuestoService::test(); } + + public function pruebaJJO() + { + PresupuestoService::test2(); + } } \ No newline at end of file diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 247e4ba2..9b5d82e4 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -349,7 +349,8 @@ class MaquinaModel extends \App\Models\GoBaseModel ->distinct('t1.id') ->select( "t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion, - t1.alto_impresion AS alto_impresion, t1.is_rotativa AS is rotativa" + t1.alto_impresion AS alto_impresion, t1.ancho AS ancho, t1.alto AS alto, + t1.is_rotativa AS is rotativa" ) ->join("lg_maquinas_tarifas_impresion t2", "t1.id = t2.maquina_id", "left") ->join("lg_maquina_papel_impresion t3", "t1.id = t3.maquina_id", "left") diff --git a/ci4/app/Models/Configuracion/MaquinasCallesModel.php b/ci4/app/Models/Configuracion/MaquinasCallesModel.php index 55eb1bdc..6b84efc0 100644 --- a/ci4/app/Models/Configuracion/MaquinasCallesModel.php +++ b/ci4/app/Models/Configuracion/MaquinasCallesModel.php @@ -86,6 +86,23 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel ->groupEnd(); } + public function getCallesForMaquina($maquina_id=-1, $num_formas = 0) + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.formas AS formas, + t1.internas AS internas, t1.externas AS externas," + ); + + //JJO + $builder->where('t1.maquina_id', $maquina_id); + $builder->where('t1.formas', $num_formas); + $builder->where("t1.is_deleted", 0); + + return $builder->get()->getResultObject(); + } + public function checkDuplicatedFormas($data = [], $id = null){ helper('general'); diff --git a/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php b/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php index 1c320067..a986b135 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionMargenModel.php @@ -1,4 +1,5 @@ where('papel_impresion_id', $papel_impresion_id); + $builder->where('papel_impresion_id', $papel_impresion_id); $builder->where("t1.is_deleted", 0); return empty($search) ? $builder : $builder - ->groupStart() - ->like("t1.paginas_min", $search) - ->orLike("t1.paginas_max", $search) - ->orLike("t1.margen", $search) - ->orLike("t1.paginas_min", $search) - ->orLike("t1.paginas_max", $search) - ->orLike("t1.margen", $search) - ->groupEnd(); + ->groupStart() + ->like("t1.paginas_min", $search) + ->orLike("t1.paginas_max", $search) + ->orLike("t1.margen", $search) + ->orLike("t1.paginas_min", $search) + ->orLike("t1.paginas_max", $search) + ->orLike("t1.margen", $search) + ->groupEnd(); } - public function checkIntervals($data = [], $id_linea = null, $papel_impresion_id = null){ - + public function checkIntervals($data = [], $id_linea = null, $papel_impresion_id = null) + { + helper('general'); - if(floatval($data["paginas_min"])>= floatval($data["paginas_max"])){ + if (floatval($data["paginas_min"]) >= floatval($data["paginas_max"])) { return lang('PapelImpresionMargenes.validation.error_paginas_range'); } @@ -119,17 +121,38 @@ class PapelImpresionMargenModel extends \App\Models\GoBaseModel foreach ($rows as $row) { - if (!is_null($id_linea)){ - if($row->id == $id_linea){ + if (!is_null($id_linea)) { + if ($row->id == $id_linea) { continue; } } - if(check_overlap(floatval($data["paginas_min"]), floatval($data["paginas_max"]), - $row->paginas_min, $row->paginas_max)){ - return lang('PapelImpresionMargenes.validation.error_paginas_overlap'); + if (check_overlap( + floatval($data["paginas_min"]), + floatval($data["paginas_max"]), + $row->paginas_min, + $row->paginas_max + )) { + return lang('PapelImpresionMargenes.validation.error_paginas_overlap'); } } return ""; } + + public function getMargenFormPags($papel_impresion_id = -1, $num_paginas = 0) + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.margen AS margen" + ); + //JJO + $builder->where('papel_impresion_id', $papel_impresion_id); + $builder->where("t1.is_deleted", 0); + $builder->where("t1.paginas_min <=", $num_paginas); + $builder->where("t1.paginas_max >=", $num_paginas); + + + return $builder->get()->getResultArray(); + } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 6e38684d..dbce4497 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -2,16 +2,16 @@ namespace App\Services; -use App\Controllers\Servicios\Maquetacion; use CodeIgniter\Config\BaseService; -use App\Models\Configuracion\MaquinaModel; -use App\Models\Configuracion\PapelImpresionModel; + + class PresupuestoService extends BaseService { - - public static function test(){ + + public static function test() + { $uso = 'interior'; $tipo = 'negro'; $cantidad = (object)array( @@ -22,8 +22,8 @@ class PresupuestoService extends BaseService ); - $maquina_model = new MaquinaModel(); - + $maquina_model = new \App\Models\Configuracion\MaquinaModel(); + $opciones_papel = array( 'bn' => 1, @@ -31,13 +31,16 @@ class PresupuestoService extends BaseService 'sobrecubierta' => 0, 'rotativa' => 0, ); - $papelimpresionmodel = new PapelImpresionModel(); + $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); + + echo 'Papeles impresion con gramaje=90'; + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( papel_generico_id: 4, - gramaje: 70, + gramaje: 90, options: $opciones_papel ); - foreach($papeles as $papel){ + foreach ($papeles as $papel) { echo '-------------------------------'; $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, @@ -50,9 +53,75 @@ class PresupuestoService extends BaseService var_dump($maquinas); echo ''; } + } + + + /*public static function test2() + { + + $uso = 'interior'; + $tipo = 'negro'; + $cantidad = (object)array( + 'paginas' => 100, + 'tirada' => 50, + 'merma' => 5, + 'merma_portada' => 1, + ); + + + $maquina_model = new \App\Models\Configuracion\MaquinaModel(); + + + $opciones_papel = array( + 'bn' => 1, + 'cubierta' => 0, + 'sobrecubierta' => 0, + 'rotativa' => 0, + ); + $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: 4, + gramaje: 70, + options: $opciones_papel + ); + foreach ($papeles as $papel) { + echo '-------------------------------'; + $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( + is_rotativa: $papel->rotativa, + tarifa_tipo: 'negro', + papel_impresion_id: $papel->id + ); + + foreach ($maquinas as $maquina) { + + if ($maquina->maquina == 'C1100-ByN') { + + $formas = PresupuestoService::getNumFormasPlanaInterior( + maquina: $maquina, + ancho: 165.0, + alto: 148.0, + isCosido: true + ); + $precio_pliego = PresupuestoService::getPrecioPliego($maquina, $papel); + echo '
';
+                    echo '

Para papel impresion: ' . $papel->nombre . '

'; + echo ''; + var_dump($maquina); + var_dump($formas); + var_dump($precio_pliego); + echo '
'; + } + } + } + }*/ + + public static function test2(){ + - - + + $papel = (object) array('id' => 529, 'gramaje'=>80, "precio_tonelada"=>10); + $maquina = (object) array('alto' => 120, 'ancho'=>200); + echo PresupuestoService::getPrecioPliego($maquina, $papel,2); } @@ -80,9 +149,10 @@ class PresupuestoService extends BaseService * * @return [type] */ - public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp){ + public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp) + { - $tipo = array_get($args, 'tipo') ; + $tipo = array_get($args, 'tipo'); $tirada = array_get($args, 'tirada'); $merma = array_get($args, 'merma'); $merma_portada = array_get($args, 'merma_portada'); @@ -96,5 +166,88 @@ class PresupuestoService extends BaseService $tarifa = array_get($args, 'tarifa'); $cosido = array_get($args, 'cosido', false); } + + private static function getNumFormasPlanaInterior($maquina, $ancho, $alto, $isCosido) + { + $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; + + // horizontales + $h1 = floor($maquina->ancho_impresion / $anchoForCalculo); + $v1 = floor($maquina->alto_impresion / $alto); + $formas_h = $h1 * $v1; //p1 + + // verticales + $h2 = floor($maquina->ancho_impresion / $alto); + $v2 = floor($maquina->alto_impresion / $anchoForCalculo); + $formas_v = $h2 * $v2; //p2 + + // hay que iterar hasta que las formas entren o el num_formas sean ==0 + // se checkea que entran en el numero de calles + // se obtiene la configuracion de las calles para esa maquina + $good_configuration = false; + do { + $num_formas = ($formas_h > $formas_v) ? $formas_h : $formas_v; + $num_formas = $isCosido ? $num_formas * 2 : $num_formas; + + // solo hay calles para 2 formas o mas + if ((($formas_h > $formas_v) ? $h1 : $h2) > 1) { + + var_dump($formas_v); + var_dump($formas_h); + var_dump($h1); + var_dump(($formas_h > $formas_v)); + $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, ($formas_h > $formas_v) ? $h1 : $h2)[0]; + // se calcula el tamaño necesario para el numero de formas + el numero de calles internas + $size_needed = (($formas_h > $formas_v) ? $anchoForCalculo : $alto) * (($formas_h > $formas_v) ? $h1 : $h2) + + ((($formas_h > $formas_v) ? $h1 : $h2) - 1) * $calles->internas; + + // si el tamaño calculado entra en el area de impresion + if ($size_needed <= $maquina->ancho_impresion) + $good_configuration = true; + // en caso contrario se resta una forma donde corresponda para iterar otra vez + else { + if ($formas_h > $formas_v) { + $formas_h = ($formas_h - 1 > 0) ? $formas_h - 1 : 0; + } else { + $formas_v = ($formas_v - 1 > 0) ? $formas_v - 1 : 0; + } + } + } + // Si solo hay una forma, tiene que entrar en el ancho de impresion + else if ((($formas_h > $formas_v) ? $h1 : $h2) == 1) { + if ((($formas_h > $formas_v) ? $h1 : $h2) < $maquina->ancho_impresion) { + $good_configuration = true; + } + } + } while ($num_formas != 0 && !$good_configuration); + + // si no hay formas se devuelve n/a + if ($num_formas == 0) { + $response['num_formas']['posicion_formas'] = 'n/a'; // not available + } + else if ($formas_h > $formas_v) { + $response['num_formas']['posicion_formas'] = 'h'; + $response['num_formas']['num_formas_horizontales'] = $h1; + $response['num_formas']['num_formas_verticales'] = $v1; + } else { + $response['num_formas']['posicion_formas'] = 'v'; + $response['num_formas']['num_formas_horizontales'] = $h2; + $response['num_formas']['num_formas_verticales'] = $v2; + } + + return $response; + } + + + private static function getPrecioPliego($maquina, $papel_impresion, $paginas) + { + $margen = (new \App\Models\Configuracion\PapelImpresionMargenModel())->getMargenFormPags($papel_impresion->id, $paginas); + if(count($margen)>0){ + $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; + $precio_pliego = $papel_impresion->precio_tonelada*(1+(intVal($margen[0]['margen'])/100)) / 1000000 * $peso_por_pliego; + + return round($precio_pliego * 1.04, 6); + } + return -1; + } } - \ No newline at end of file From 011ecca0435798d8f9067ebdd07a2d282e859c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 25 Sep 2023 14:31:44 +0200 Subject: [PATCH 03/46] trabajando en preciopliego2 --- ci4/app/Models/Configuracion/MaquinaModel.php | 6 ++++-- ci4/app/Services/PresupuestoService.php | 11 ++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 9b5d82e4..140774fc 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -336,7 +336,7 @@ class MaquinaModel extends \App\Models\GoBaseModel ->groupEnd(); } - public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $papel_impresion_id = -1) + public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $tirada, $papel_impresion_id = -1) { /* 1.-> tarifa_Tipo impresion @@ -362,7 +362,9 @@ class MaquinaModel extends \App\Models\GoBaseModel ->where("t2.is_deleted", 0) ->where("t2.tipo", $tarifa_tipo) ->where("t3.papel_impresion_id", $papel_impresion_id) - ->where("t3.active", 1); + ->where("t3.active", 1) + ->where("t1.min <=", $tirada) + ->where("t1.max >=", $tirada); return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index dbce4497..f35a5800 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -15,10 +15,10 @@ class PresupuestoService extends BaseService $uso = 'interior'; $tipo = 'negro'; $cantidad = (object)array( - 'paginas' => 100, - 'tirada' => 50, - 'merma' => 5, - 'merma_portada' => 1, + 'paginas' => 200, + 'tirada' => 500, + 'merma' => 10, + 'merma_portada' => 10, ); @@ -45,7 +45,8 @@ class PresupuestoService extends BaseService $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, tarifa_tipo: 'negro', - papel_impresion_id: $papel->id + papel_impresion_id: $papel->id, + tirada: $cantidad->tirada+$cantidad->merma ); echo '
';
             echo '

Para papel impresion: ' . $papel->nombre . '

'; From 834ba3488d9faf96a5d1f980386edb773b33b5e4 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 25 Sep 2023 18:07:07 +0200 Subject: [PATCH 04/46] =?UTF-8?q?a=C3=B1adido=20orden=20multipla=20maquina?= =?UTF-8?q?spapelesimpresion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Configuracion/Maquinaspapelesimpresion.php | 16 +++++++++++++--- ci4/app/Language/es/Maquinas.php | 4 ++-- ci4/app/Services/PresupuestoService.php | 6 +++--- .../configuracion/maquinas/viewMaquinaForm.php | 18 ++++++++---------- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php index 0f05f073..5079aee9 100644 --- a/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Maquinaspapelesimpresion.php @@ -78,8 +78,17 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController $length = $reqData['length'] ?? 5; $search = $reqData['search']['value']; $requestedOrder = $reqData['order']['0']['column'] ?? 1; - $order = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 1]; + $requestedOrder2 = $reqData['order']['1']['column'] ?? $requestedOrder; + $requestedOrder3 = $reqData['order']['2']['column'] ?? $requestedOrder; + $requestedOrder4 = $reqData['order']['3']['column'] ?? $requestedOrder; + $order = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; + $order2 = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder2 >= 0 ? $requestedOrder2 : $requestedOrder]; + $order3 = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder3 >= 0 ? $requestedOrder3 : $requestedOrder]; + $order4 = MaquinasPapelesImpresionModel::SORTABLE[$requestedOrder4 >= 0 ? $requestedOrder4 : $requestedOrder]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; + $dir2 = $reqData['order']['1']['dir'] ?? $dir; + $dir3 = $reqData['order']['2']['dir'] ?? $dir; + $dir4= $reqData['order']['3']['dir'] ?? $dir; $maquina_id = $reqData['maquina_id'] ?? -1; // Para saber si el papel que se tiene que mostrar es para rotativa @@ -88,11 +97,12 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController // Se obtienen las líneas de las tarifas seleccionadas para esta máquina $tarifas = $tarifa_model->getResource("", $maquina_id)->get()->getResultObject(); - $resourceData = $this->model->getResource($search, $isRotativa, $tarifas, $maquina_id)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + $resourceData = $this->model->getResource($search, $isRotativa, $tarifas, $maquina_id) + ->orderBy($order, $dir)->orderBy($order2, $dir2)->orderBy($order3, $dir3)->orderBy($order4, $dir4)->limit($length, $start)->get()->getResultObject(); return $this->respond(Collection::datatable( $resourceData, - $this->model->getResource()->countAllResults(), + $this->model->getResource("", $isRotativa, $tarifas, $maquina_id)->countAllResults(), $this->model->getResource($search, $isRotativa, $tarifas, $maquina_id)->countAllResults() )); } else { diff --git a/ci4/app/Language/es/Maquinas.php b/ci4/app/Language/es/Maquinas.php index a58cfc6c..719665ad 100644 --- a/ci4/app/Language/es/Maquinas.php +++ b/ci4/app/Language/es/Maquinas.php @@ -12,8 +12,8 @@ return [ 'createdAt' => 'Created At', 'deletedAt' => 'Deleted At', 'duracionJornada' => 'Duracion Jornada', - 'forzarNumFormasHorizontalesPortada' => 'Forzar Num Formas Horizontales Portada', - 'forzarNumFormasVerticalesPortada' => 'Forzar Num Formas Verticales Portada', + 'forzarNumFormasHorizontalesPortada' => 'Forzar Num Formas Horizontales Cubierta', + 'forzarNumFormasVerticalesPortada' => 'Forzar Num Formas Verticales Cubierta', 'id' => 'ID', 'impresion' => 'impresion', 'isDeleted' => 'Is Deleted', diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index f35a5800..339dae09 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -120,7 +120,7 @@ class PresupuestoService extends BaseService - $papel = (object) array('id' => 529, 'gramaje'=>80, "precio_tonelada"=>10); + $papel = (object) array('id' => 201, 'gramaje'=>70, "precio_tonelada"=>1750); $maquina = (object) array('alto' => 120, 'ancho'=>200); echo PresupuestoService::getPrecioPliego($maquina, $papel,2); } @@ -245,9 +245,9 @@ class PresupuestoService extends BaseService $margen = (new \App\Models\Configuracion\PapelImpresionMargenModel())->getMargenFormPags($papel_impresion->id, $paginas); if(count($margen)>0){ $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; - $precio_pliego = $papel_impresion->precio_tonelada*(1+(intVal($margen[0]['margen'])/100)) / 1000000 * $peso_por_pliego; + $precio_pliego = $papel_impresion->precio_tonelada*(1+(floatval($margen[0]['margen'])/100.0)) / 1000000 * $peso_por_pliego; - return round($precio_pliego * 1.04, 6); + return round($precio_pliego, 6); } return -1; } diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php index 02873197..22003242 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaForm.php @@ -478,13 +478,14 @@ processing: true, autoWidth: true, responsive: true, - lengthMenu: [ 5, 10, 25], + lengthMenu: [ 5, 10, 25, 50, 75, 100, 250], order: [[ 1, "asc" ]], - pageLength: 10, + pageLength: 25, lengthChange: true, searching: true, paging: true, info: true, + stateSave: true, dom: "lftp", ajax : $.fn.dataTable.pipeline( { url: '', @@ -521,8 +522,11 @@ columnDefs: [ { orderable: false, - searchable: false, targets: [lastColNr2] + }, + { + searchable: false, + targets: [0,3,4,5,6,7,8,lastColNr2] } ], rowCallback: function (row, data) { @@ -531,13 +535,7 @@ }, language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" - }, - columnDefs: [ - { - searchable: false, - targets: [0,3,4,5,6,7,8] - } - ], + } } ); From 991a27286b6bedc51bfaf56a21c357c63b27b618 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Tue, 26 Sep 2023 09:25:40 +0200 Subject: [PATCH 05/46] trabajando en generar la tabla bn interior --- .../Presupuestos/Cosidotapablanda.php | 116 +++++--- ci4/app/Models/Configuracion/MaquinaModel.php | 2 +- .../MaquinasTarifasImpresionModel.php | 52 ++-- ci4/app/Services/PresupuestoService.php | 249 ++++++++++-------- 4 files changed, 263 insertions(+), 156 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 520929dc..9f086deb 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -3,13 +3,19 @@ namespace App\Controllers\Presupuestos; use App\Controllers\GoBaseResourceController; - +use App\Entities\Configuracion\Maquina; use App\Models\Collection; use App\Entities\Presupuestos\PresupuestoEntity; use App\Models\Configuracion\PapelGenericoModel; use App\Models\Presupuestos\PresupuestoModel; +use App\Services\PresupuestoService; +use App\Models\Configuracion\PapelImpresionModel; +use App\Models\Configuracion\MaquinaModel; +use App\Models\Configuracion\MaquinasTarifasImpresionModel; + + class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { @@ -397,43 +403,34 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $order = PresupuestoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; - $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); - foreach ($resourceData as $item) : - if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : - $item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100); - endif; - if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100) : - $item->causa_cancelacion = character_limiter($item->causa_cancelacion, 100); - endif; - if (isset($item->comentarios) && strlen($item->comentarios) > 100) : - $item->comentarios = character_limiter($item->comentarios, 100); - endif; - if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100) : - $item->comentarios_safekat = character_limiter($item->comentarios_safekat, 100); - endif; - if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100) : - $item->comentarios_tarifa = character_limiter($item->comentarios_tarifa, 100); - endif; - if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100) : - $item->tirada_alternativa_json_data = character_limiter($item->tirada_alternativa_json_data, 100); - endif; - if (isset($item->titulo) && strlen($item->titulo) > 100) : - $item->titulo = character_limiter($item->titulo, 100); - endif; - if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100) : - $item->paginas_color_posicion = character_limiter($item->paginas_color_posicion, 100); - endif; - if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100) : - $item->aprobado_json_data = character_limiter($item->aprobado_json_data, 100); - endif; - if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100) : - $item->comparador_json_data = character_limiter($item->comparador_json_data, 100); - endif; - if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100) : - $item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100); - endif; - endforeach; + $table_type = $reqData['table_type'] ?? null; + if (is_null($table_type)){ + return $this->failNotFound('Table type not found', 404); + } + + switch($table_type){ + case 'comp_int_bn': + + $datosPedido = (object)array( + 'paginas' => $reqData['paginas'] ?? 0, + 'tirada' => $reqData['tirada'] ?? 0, + 'merma' => $reqData['merma'] ?? 0, + 'ancho' => $reqData['alto'] ?? 100000, + 'alto' => $reqData['ancho'] ?? 100000, + 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto + ); + + $papel_generico_id = $reqData['papel_generico_id'] ?? 0; + $gramaje = $reqData['gramaje'] ?? 0; + + $resourceData = $this->getCompBnData($datosPedido, $papel_generico_id, $gramaje); + break; + + default: + break; + } + return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), @@ -444,6 +441,51 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } } + private function getCompBnData($datosPedido, $papel_generico_id, $gramaje){ + $uso = 'interior'; + $tipo = 'negro'; + + $opciones_papel = array( + 'bn' => 1, + 'cubierta' => 0, + 'sobrecubierta' => 0, + 'rotativa' => 0, + ); + + // Se obtienen los papeles disponibles + $papelimpresionmodel = new PapelImpresionModel(); + $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( + papel_generico_id: $papel_generico_id, + gramaje: $gramaje, + options: $opciones_papel + ); + + $resultado = json_encode( + array('data' => array()) + ); + + // Para cada papel, se obtienen las maquinas disponibles + foreach ($papeles as $papel) { + $maquinamodel = new MaquinaModel(); + $maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto( + is_rotativa: $papel->rotativa, + tarifa_tipo: $tipo, + tirada: $datosPedido->tirada + $datosPedido->merma, + papel_impresion_id: $papel->id, + ); + + // Se recorren las máquinas y se calcula el coste de linea por cada una + foreach ($maquinas as $maquina) { + $tarifamodel = new MaquinasTarifasImpresionModel(); + $tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo); + $linea = PresupuestoService::getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + } + } + + return $resultado; + + } + public function allItemsSelect() { if ($this->request->isAJAX()) { diff --git a/ci4/app/Models/Configuracion/MaquinaModel.php b/ci4/app/Models/Configuracion/MaquinaModel.php index 140774fc..3e85761c 100644 --- a/ci4/app/Models/Configuracion/MaquinaModel.php +++ b/ci4/app/Models/Configuracion/MaquinaModel.php @@ -350,7 +350,7 @@ class MaquinaModel extends \App\Models\GoBaseModel ->select( "t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion, t1.alto_impresion AS alto_impresion, t1.ancho AS ancho, t1.alto AS alto, - t1.is_rotativa AS is rotativa" + t1.is_rotativa AS is rotativa, t1.alto_click AS alto_click" ) ->join("lg_maquinas_tarifas_impresion t2", "t1.id = t2.maquina_id", "left") ->join("lg_maquina_papel_impresion t3", "t1.id = t3.maquina_id", "left") diff --git a/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php b/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php index 62b3e037..2dc1c9f7 100644 --- a/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php +++ b/ci4/app/Models/Configuracion/MaquinasTarifasImpresionModel.php @@ -1,4 +1,5 @@ db ->table($this->table . " t1") @@ -97,24 +98,45 @@ class MaquinasTarifasImpresionModel extends \App\Models\GoBaseModel ); //JJO - $builder->where('maquina_id', $maquina_id); + $builder->where('maquina_id', $maquina_id); $builder->where("t1.is_deleted", 0); - + $builder->join("lg_maquinas t2", "t1.maquina_id = t2.id", "left"); return empty($search) ? $builder : $builder - ->groupStart() - ->like("t1.id", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.precio", $search) - ->orLike("t1.uso", $search) - ->orLike("t1.id", $search) - ->orLike("t1.maquina_id", $search) - ->orLike("t1.tipo", $search) - ->orLike("t1.precio", $search) - ->orLike("t1.uso", $search) - ->groupEnd(); + ->groupStart() + ->like("t1.id", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.precio", $search) + ->orLike("t1.uso", $search) + ->orLike("t1.id", $search) + ->orLike("t1.maquina_id", $search) + ->orLike("t1.tipo", $search) + ->orLike("t1.precio", $search) + ->orLike("t1.uso", $search) + ->groupEnd(); + } + + public function getTarifa($maquina_id = -1, $uso = " ", $tipo = " ") + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.precio AS precio" + ); + + //JJO + $builder->where('maquina_id', $maquina_id); + $builder->where('tipo', $tipo); + $builder->where('uso', $uso); + $builder->where("t1.is_deleted", 0); + + $tarifas = $builder->get()->getResultArray(); + if (count($tarifas)>0){ + return floatval($tarifas[0]['precio']); + } + return $tarifas; } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 339dae09..48173d27 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -12,13 +12,24 @@ class PresupuestoService extends BaseService public static function test() { + $tarifa = (new \App\Models\Configuracion\MaquinasTarifasImpresionModel())->getTarifa(8, "interior", "negro"); + var_dump($tarifa); + } + + + public static function test2() + { + $uso = 'interior'; $tipo = 'negro'; - $cantidad = (object)array( + $datosPedido = (object)array( 'paginas' => 200, 'tirada' => 500, 'merma' => 10, 'merma_portada' => 10, + 'ancho' => 165, + 'alto' => 148, + 'isCosido' => true, ); @@ -32,9 +43,6 @@ class PresupuestoService extends BaseService 'rotativa' => 0, ); $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); - - echo 'Papeles impresion con gramaje=90'; - $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( papel_generico_id: 4, gramaje: 90, @@ -45,93 +53,32 @@ class PresupuestoService extends BaseService $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, tarifa_tipo: 'negro', + tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, - tirada: $cantidad->tirada+$cantidad->merma - ); - echo '
';
-            echo '

Para papel impresion: ' . $papel->nombre . '

'; - echo ''; - var_dump($maquinas); - echo '
'; - } - } - - - /*public static function test2() - { - - $uso = 'interior'; - $tipo = 'negro'; - $cantidad = (object)array( - 'paginas' => 100, - 'tirada' => 50, - 'merma' => 5, - 'merma_portada' => 1, - ); - - - $maquina_model = new \App\Models\Configuracion\MaquinaModel(); - - - $opciones_papel = array( - 'bn' => 1, - 'cubierta' => 0, - 'sobrecubierta' => 0, - 'rotativa' => 0, - ); - $papelimpresionmodel = new \App\Models\Configuracion\PapelImpresionModel(); - $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( - papel_generico_id: 4, - gramaje: 70, - options: $opciones_papel - ); - foreach ($papeles as $papel) { - echo '-------------------------------'; - $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( - is_rotativa: $papel->rotativa, - tarifa_tipo: 'negro', - papel_impresion_id: $papel->id ); foreach ($maquinas as $maquina) { - if ($maquina->maquina == 'C1100-ByN') { - - $formas = PresupuestoService::getNumFormasPlanaInterior( - maquina: $maquina, - ancho: 165.0, - alto: 148.0, - isCosido: true - ); - $precio_pliego = PresupuestoService::getPrecioPliego($maquina, $papel); - echo '
';
-                    echo '

Para papel impresion: ' . $papel->nombre . '

'; - echo ''; - var_dump($maquina); - var_dump($formas); - var_dump($precio_pliego); - echo '
'; - } + echo '----------------------------
'; + var_dump($maquina->maquina); + var_dump($papel->nombre); + $tarifa = (new \App\Models\Configuracion\MaquinasTarifasImpresionModel())->getTarifa($maquina->maquina_id, $uso, $tipo); + $linea = PresupuestoService::getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + echo '
';
+                var_dump($linea);
+                echo '
'; } } - }*/ - - public static function test2(){ - - - - $papel = (object) array('id' => 201, 'gramaje'=>70, "precio_tonelada"=>1750); - $maquina = (object) array('alto' => 120, 'ancho'=>200); - echo PresupuestoService::getPrecioPliego($maquina, $papel,2); } + /** * @param mixed $uso * contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta'] * @param mixed $tipo * contiene algun parametro de la lista ['negro','color','negrohq','bicolor','colorhq'] - * @param mixed $datos_cantidad + * @param mixed $datosPedido * objeto con la siguiente extructura: * -> paginas: numero de paginas por libro * -> tirada: numero de unidades a imprimir @@ -141,33 +88,101 @@ class PresupuestoService extends BaseService * objeto con la siguiente estructura: * -> id: el id de la maquina * -> nombre: nombre de la maquina - * -> calles: objeto con la configuracion de las calles de la maquina - * -> formas: numero de formas - * -> calle_interna: valor de las calles internas de la maquina - * -> calle_externa: valor de las calles externas de la maquina * -> ancho_impresion: valor maximo del ancho para imprimir * -> alto_impresion: valor maximo del alto para imprimir + * @param mixed $papel_impresion + * @param mixed $tarifa * * @return [type] */ - public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp) + public static function getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) { + $response['fields'] = []; - $tipo = array_get($args, 'tipo'); - $tirada = array_get($args, 'tirada'); - $merma = array_get($args, 'merma'); - $merma_portada = array_get($args, 'merma_portada'); - $ancho = array_get($args, 'ancho'); - $alto = array_get($args, 'alto'); - $paginas = array_get($args, 'paginas'); - $papel = array_get($args, 'papel'); - $papel_compra = array_get($args, 'papel_compra'); - $gramaje = array_get($args, 'gramaje'); - $maquina = array_get($args, 'maquina'); - $tarifa = array_get($args, 'tarifa'); - $cosido = array_get($args, 'cosido', false); + switch ($uso) { + case 'interior': + $formas = PresupuestoService::getNumFormasPlanaInterior($maquina, $datosPedido->ancho, $datosPedido->alto, $datosPedido->isCosido); + $response['fields'] = $formas; + break; + + case 'cubierta': + case 'sobrecubierta': + break; + + case 'rotativa': + default: + break; + } + + if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') { + $response['error']['value'] = true; + $response['error']['message'] = 'no_formas_disponibles'; + return response; + } + + // precio del pliego de impresion + $precio_pliego_impresion = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $datosPedido->paginas); + $precio_click = 0; + $precio_click_pedido = 0; + $pliegos_libro = 0; + + $cubierta = array_key_exists('cubierta', $opciones_papel) ? $opciones_papel['cubierta'] : 0; + $sobrecubierta = array_key_exists('sobrecubierta', $opciones_papel) ? $opciones_papel['sobrecubierta'] : 0; + $rotativa = array_key_exists('rotativa', $opciones_papel) ? $opciones_papel['rotativa'] : 0; + + //interior (bn o color) + if ($cubierta == 0 && $sobrecubierta == 0 && $rotativa == 0) { + // precio papel + $pliegos_libro = ($datosPedido->paginas / 2.0) / $response['fields']['num_formas']['value']; + $pliegos_pedido = $pliegos_libro * ($datosPedido->tirada + $datosPedido->merma); + $precio_libro = $pliegos_libro * $precio_pliego_impresion; + $precio_pedido = $precio_libro * ($datosPedido->tirada + $datosPedido->merma); + + $mano = PresupuestoService::computeLomoInterior($datosPedido->paginas, $papel_impresion->espesor); + + // peso + $peso = PresupuestoService::computePeso( + ancho: $datosPedido->isCosido ? $datosPedido->ancho / 2.0 : $datosPedido->ancho, + alto: $datosPedido->alto, + gramaje: $papel_impresion->gramaje, + paginas: $datosPedido->paginas + ); + + // impresion + $precio_click = $tarifa; + $precio_click_pedido = $pliegos_pedido * 2 * $precio_click; + + } + // cubierta o sobrecubierta (siempre a color) + else if (($cubierta == 1 || $sobrecubierta == 1) && $rotativa == 0) { + } + // rotativa + else if ($rotativa == 1) { + } + + + // response + $response['fields']['pliegos_libro'] = $pliegos_libro; + $response['fields']['pliegos_pedido'] = $pliegos_pedido; + $response['fields']['precios_pliegos'] = $precio_pliego_impresion; + $response['fields']['precio_libro'] = $precio_libro; + $response['fields']['precio_pedido'] = $precio_pedido; + $response['fields']['mano'] = $mano; + $response['fields']['peso'] = $peso; + $response['fields']['precio_click'] = $precio_click; + $response['fields']['precio_click_pedido'] = $precio_click_pedido; + + $response['fields']['dimensiones_maquina'] = [$maquina->ancho, $maquina->alto]; + $response['fields']['dimensiones_maquina_impresion'] = [$maquina->ancho_impresion, $maquina->alto_impresion]; + $response['fields']['dimensiones_maquina_click'] = [$maquina->ancho_impresion, $maquina->alto_click]; + $response['fields']['dimensiones_libro'] = [$datosPedido->ancho, $datosPedido->alto]; + + //$response['fields']['datos_rotativa'] = $datos_rotativa; + + return $response; } + private static function getNumFormasPlanaInterior($maquina, $ancho, $alto, $isCosido) { $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; @@ -193,10 +208,6 @@ class PresupuestoService extends BaseService // solo hay calles para 2 formas o mas if ((($formas_h > $formas_v) ? $h1 : $h2) > 1) { - var_dump($formas_v); - var_dump($formas_h); - var_dump($h1); - var_dump(($formas_h > $formas_v)); $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, ($formas_h > $formas_v) ? $h1 : $h2)[0]; // se calcula el tamaño necesario para el numero de formas + el numero de calles internas $size_needed = (($formas_h > $formas_v) ? $anchoForCalculo : $alto) * (($formas_h > $formas_v) ? $h1 : $h2) + @@ -213,7 +224,7 @@ class PresupuestoService extends BaseService $formas_v = ($formas_v - 1 > 0) ? $formas_v - 1 : 0; } } - } + } // Si solo hay una forma, tiene que entrar en el ancho de impresion else if ((($formas_h > $formas_v) ? $h1 : $h2) == 1) { if ((($formas_h > $formas_v) ? $h1 : $h2) < $maquina->ancho_impresion) { @@ -225,15 +236,16 @@ class PresupuestoService extends BaseService // si no hay formas se devuelve n/a if ($num_formas == 0) { $response['num_formas']['posicion_formas'] = 'n/a'; // not available - } - else if ($formas_h > $formas_v) { + } else if ($formas_h > $formas_v) { $response['num_formas']['posicion_formas'] = 'h'; $response['num_formas']['num_formas_horizontales'] = $h1; $response['num_formas']['num_formas_verticales'] = $v1; + $response['num_formas']['value'] = $num_formas; } else { $response['num_formas']['posicion_formas'] = 'v'; $response['num_formas']['num_formas_horizontales'] = $h2; $response['num_formas']['num_formas_verticales'] = $v2; + $response['num_formas']['value'] = $num_formas; } return $response; @@ -243,12 +255,43 @@ class PresupuestoService extends BaseService private static function getPrecioPliego($maquina, $papel_impresion, $paginas) { $margen = (new \App\Models\Configuracion\PapelImpresionMargenModel())->getMargenFormPags($papel_impresion->id, $paginas); - if(count($margen)>0){ + if (count($margen) > 0) { $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; - $precio_pliego = $papel_impresion->precio_tonelada*(1+(floatval($margen[0]['margen'])/100.0)) / 1000000 * $peso_por_pliego; + $precio_pliego = $papel_impresion->precio_tonelada * (1 + (floatval($margen[0]['margen']) / 100.0)) / 1000000 * $peso_por_pliego; return round($precio_pliego, 6); } return -1; } + + /** + * Devuelve la dimensión del lomo interior. + */ + private static function computeLomoInterior($paginas = null, $espesor = null) + { + $lomo = 0; + + if (!is_null($paginas) && !is_null($espesor)) { + + $lomo += (($espesor * $paginas / 2.0) + 1) / 1000.0; + } + + return $lomo; + } + + /** + * Devuelve el peso de un pedido. + */ + private static function computePeso($ancho, $alto, $gramaje, $paginas = null) + { + $peso = ($ancho / 1000.0) * ($alto / 1000.0) * $gramaje; + + if (!is_null($paginas)) { + if ($paginas > 0) { + $peso *= ($paginas / 2.0); + } + } + + return $peso; + } } From 693504f9d7dcc4474f31011009cdad7c148c3165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 26 Sep 2023 15:17:49 +0200 Subject: [PATCH 06/46] haciendo la conexion con el ajax del comparador negro --- ci4/app/Controllers/Js_loader.php | 26 +++ .../Presupuestos/Cosidotapablanda.php | 168 ++++++++++++------ .../Controllers/Presupuestos/Js_loader.php | 3 +- ci4/app/Controllers/Test.php | 16 +- ci4/app/Services/PresupuestoService.php | 4 +- .../_datosPresupuestoClienteItems.php | 6 +- .../cosidotapablanda/comparador.js | 13 +- .../viewCosidotapablandaForm.php | 73 ++++++++ .../backend/vuexy/form/test_js/test_js.js | 17 ++ .../backend/vuexy/form/test_js/viewTest.php | 36 ++++ 10 files changed, 298 insertions(+), 64 deletions(-) create mode 100644 ci4/app/Controllers/Js_loader.php create mode 100644 ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js create mode 100644 ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php diff --git a/ci4/app/Controllers/Js_loader.php b/ci4/app/Controllers/Js_loader.php new file mode 100644 index 00000000..691a5842 --- /dev/null +++ b/ci4/app/Controllers/Js_loader.php @@ -0,0 +1,26 @@ +response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js'); + + } + + +} + \ No newline at end of file diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 9f086deb..c8fbf198 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -138,7 +138,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['presupuestoEntity'] = isset($sanitizedData) ? new PresupuestoEntity($sanitizedData) : new PresupuestoEntity(); $this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null); - $this->viewData['incReiList'] = array('incidencia'=>lang('Presupuestos.incidencia'), 'reimpresion'=>lang('Presupuestos.reimpresion'), 'sin_cargo'=>lang('Presupuestos.sinCargo')); + $this->viewData['incReiList'] = array('incidencia' => lang('Presupuestos.incidencia'), 'reimpresion' => lang('Presupuestos.reimpresion'), 'sin_cargo' => lang('Presupuestos.sinCargo')); $this->viewData['paisList'] = $this->getPaisListItems(); $this->viewData['papelFormatoList'] = $this->getPapelFormatoListItems($presupuestoEntity->papel_formato_id ?? null); $this->viewData['papelGenericoNegroList'] = $this->getPapelGenericoNegro(); @@ -147,9 +147,9 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['papelGenericoColorHQList'] = $this->getPapelGenericoColorHQ(); $this->viewData['papelGenericoCubiertaList'] = $this->getPapelGenericoCubierta(); $this->viewData['papelGenericoSobrecubiertaList'] = $this->getPapelGenericoSobreCubierta(); - - - + + + /* $this->viewData['formaPagoList'] = $this->getFormaPagoListItems(); @@ -375,7 +375,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['papelGenericoColorHQList'] = $this->getPapelGenericoColorHQ(); $this->viewData['papelGenericoCubiertaList'] = $this->getPapelGenericoCubierta(); $this->viewData['papelGenericoSobrecubiertaList'] = $this->getPapelGenericoSobreCubierta(); - + $this->viewData['formAction'] = route_to('updatePresupuesto', $id); @@ -391,46 +391,102 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - if (!isset($reqData['draw']) || !isset($reqData['columns'])) { - $errstr = 'No data available in response to this specific request.'; - $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); - return $response; + + $table_type = $reqData['table_type'] ?? null; + + if (is_null($table_type)) { + if (!isset($reqData['draw']) || !isset($reqData['columns'])) { + $errstr = 'No data available in response to this specific request.'; + $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); + return $response; + } + + $search = $reqData['search']['value']; } $start = $reqData['start'] ?? 0; $length = $reqData['length'] ?? 5; - $search = $reqData['search']['value']; + $requestedOrder = $reqData['order']['0']['column'] ?? 0; $order = PresupuestoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; - $table_type = $reqData['table_type'] ?? null; - - if (is_null($table_type)){ - return $this->failNotFound('Table type not found', 404); - } - - switch($table_type){ - case 'comp_int_bn': - - $datosPedido = (object)array( - 'paginas' => $reqData['paginas'] ?? 0, - 'tirada' => $reqData['tirada'] ?? 0, - 'merma' => $reqData['merma'] ?? 0, - 'ancho' => $reqData['alto'] ?? 100000, - 'alto' => $reqData['ancho'] ?? 100000, - 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto - ); - - $papel_generico_id = $reqData['papel_generico_id'] ?? 0; - $gramaje = $reqData['gramaje'] ?? 0; - - $resourceData = $this->getCompBnData($datosPedido, $papel_generico_id, $gramaje); - break; - - default: - break; - } + + if (is_null($table_type)) { + $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + foreach ($resourceData as $item) : + if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : + $item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100); + endif; + if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100) : + $item->causa_cancelacion = character_limiter($item->causa_cancelacion, 100); + endif; + if (isset($item->comentarios) && strlen($item->comentarios) > 100) : + $item->comentarios = character_limiter($item->comentarios, 100); + endif; + if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100) : + $item->comentarios_safekat = character_limiter($item->comentarios_safekat, 100); + endif; + if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100) : + $item->comentarios_tarifa = character_limiter($item->comentarios_tarifa, 100); + endif; + if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100) : + $item->tirada_alternativa_json_data = character_limiter($item->tirada_alternativa_json_data, 100); + endif; + if (isset($item->titulo) && strlen($item->titulo) > 100) : + $item->titulo = character_limiter($item->titulo, 100); + endif; + if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100) : + $item->paginas_color_posicion = character_limiter($item->paginas_color_posicion, 100); + endif; + if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100) : + $item->aprobado_json_data = character_limiter($item->aprobado_json_data, 100); + endif; + if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100) : + $item->comparador_json_data = character_limiter($item->comparador_json_data, 100); + endif; + if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100) : + $item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100); + endif; + endforeach; + } else { + + switch ($table_type) { + case 'comp_int_bn': + + $datosPedido = (object)array( + 'paginas' => intval($reqData['paginas']) ?? 0, + 'tirada' => intval($reqData['tirada']) ?? 0, + 'merma' => intval($reqData['merma']) ?? 0, + 'ancho' => intval($reqData['alto']) ?? 100000, + 'alto' => intval($reqData['ancho']) ?? 100000, + 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto + ); + + $papel_generico = [ + 'id' => $reqData['papel_generico_id'] ?? 0, + 'nombre' => $reqData['papel_generico'] ?? "", + ]; + + $gramaje = $reqData['gramaje'] ?? 0; + + $resourceData = $this->getCompBnData($datosPedido, $papel_generico, $gramaje); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'lineas' => $resourceData, + $csrfTokenName => $newTokenHash + ]; + //return json_encode(array("data"=>$resourceData)); + return $this->respond($data); + break; + + default: + break; + } + } + return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), @@ -441,10 +497,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } } - private function getCompBnData($datosPedido, $papel_generico_id, $gramaje){ + private function getCompBnData($datosPedido, $papel_generico, $gramaje) + { $uso = 'interior'; $tipo = 'negro'; - + $opciones_papel = array( 'bn' => 1, 'cubierta' => 0, @@ -455,15 +512,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // Se obtienen los papeles disponibles $papelimpresionmodel = new PapelImpresionModel(); $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( - papel_generico_id: $papel_generico_id, + papel_generico_id: $papel_generico['id'], gramaje: $gramaje, options: $opciones_papel ); - $resultado = json_encode( - array('data' => array()) - ); - + + $lineas = array(); // Para cada papel, se obtienen las maquinas disponibles foreach ($papeles as $papel) { $maquinamodel = new MaquinaModel(); @@ -476,14 +531,23 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // Se recorren las máquinas y se calcula el coste de linea por cada una foreach ($maquinas as $maquina) { - $tarifamodel = new MaquinasTarifasImpresionModel(); + $tarifamodel = new MaquinasTarifasImpresionModel(); $tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo); - $linea = PresupuestoService::getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + $linea['fields']['maquina'] = $maquina->maquina; + $linea['fields']['maquina_id'] = $maquina->maquina_id; + $linea['fields']['papel_impresion'] = $papel->nombre; + $linea['fields']['papel_impresion_id'] = $papel->id; + $linea['fields']['paginas'] = $datosPedido->paginas; + $linea['fields']['gramaje'] = $gramaje; + $linea['fields']['papel_generico_id'] = $papel_generico['id']; + $linea['fields']['papel_generico_id'] = $papel_generico['nombre']; + + array_push($lineas, $linea); } } - return $resultado; - + return $lineas; } public function allItemsSelect() @@ -512,7 +576,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController public function menuItems() { if ($this->request->isAJAX()) { - + $reqData = $this->request->getPost(); $tipo = $reqData['tipo'] ?? null; @@ -520,12 +584,12 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; - if ($tipo == 'gramaje'){ + if ($tipo == 'gramaje') { // En este caso contiene el nombre del papel generico $model = new PapelGenericoModel(); $menu = $model->getGramajeComparador($datos, $searchStr); } - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -567,7 +631,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $papelFormatoModel = model('App\Models\Configuracion\PapelFormatoModel'); $data = $papelFormatoModel->getElementsForMenu(); - array_unshift($data, (object)['id'=>'', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); + array_unshift($data, (object)['id' => '', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); return $data; } diff --git a/ci4/app/Controllers/Presupuestos/Js_loader.php b/ci4/app/Controllers/Presupuestos/Js_loader.php index f753fee7..89baad3c 100644 --- a/ci4/app/Controllers/Presupuestos/Js_loader.php +++ b/ci4/app/Controllers/Presupuestos/Js_loader.php @@ -16,10 +16,9 @@ class Js_loader extends BaseController function comparadorCosidoTapablanda_js() { - $this->load->view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js', $data); + $this->load->view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js'); $this->output->set_content_type('text/javascript'); } - } \ No newline at end of file diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 5a4d5f45..c6d7621a 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -2,8 +2,7 @@ namespace App\Controllers; -use App\Models\Presupuestos\PresupuestoModel; -use App\Services\PresupuestoService; +use App\Controllers\BaseController; class Test extends BaseController { @@ -16,12 +15,21 @@ class Test extends BaseController public function index() { - PresupuestoService::test(); + //PresupuestoService::test(); + return view('themes/backend/vuexy/form/test_js/viewTest'); + } + + function test_js() + { + /*$this->response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/test_js/test_js.js');*/ + + } public function pruebaJJO() { - PresupuestoService::test2(); + //PresupuestoService::test2(); } } \ No newline at end of file diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 48173d27..38a70819 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -95,7 +95,7 @@ class PresupuestoService extends BaseService * * @return [type] */ - public static function getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) + public static function getCostesLinea($uso, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) { $response['fields'] = []; @@ -117,7 +117,7 @@ class PresupuestoService extends BaseService if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') { $response['error']['value'] = true; $response['error']['message'] = 'no_formas_disponibles'; - return response; + return $response; } // precio del pliego de impresion diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index 8bf30aaa..fc07f7f3 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -69,10 +69,10 @@

- +
- $v) : ?>
-
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index c91da748..9c0e2b1a 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -58,10 +58,21 @@ $('.accordion-button').on('click', function (e) { - /******************************* * Metodos *******************************/ +function checkDatosPedidoForComp() { + + if (parseInt(document.getElementById('paginas').value) > 0 && + parseInt(document.getElementById('tirada').value) > 0 && + ($('#papelFormatoId').select2('data').length > 0 || + (parseInt(document.getElementById('papelFormatoAncho').value) > 0 && parseInt(document.getElementById('papelFormatoAlto').value) > 0))) + return true; + return false; +} + + + function init_comparador() { updatePapelesComparador(); const paginasColor = document.getElementById('compCalPaginasColor'); diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index 0b877195..db55494c 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -145,11 +145,14 @@ document.getElementById("papelFormatoAncho").style.display = "block"; document.getElementById("papelFormatoAlto").style.display = "block"; $('#papelFormatoId').next(".select2-container").hide(); + $('#papelFormatoId').val('').change(); document.getElementById("label_papelFormatoId").innerHTML = " (" + " x )*"; } else{ + document.getElementById("papelFormatoAncho").value= ""; + document.getElementById("papelFormatoAlto").value= ""; document.getElementById("papelFormatoAncho").style.display = "none"; document.getElementById("papelFormatoAlto").style.display = "none"; $('#papelFormatoId').next(".select2-container").show(); @@ -172,6 +175,29 @@ language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" }, + columns: [ + { 'data': 'tipo' }, + { 'data': 'paginas' }, + { 'data': 'papel' }, + { 'data': 'gramaje' }, + { 'data': 'marca' }, + { 'data': 'maquina' }, + { 'data': 'numeroPliegos' }, + { 'data': 'pliegosPedido' }, + { 'data': 'precioPliego' }, + { 'data': 'libro' }, + { 'data': 'totalPapelPedido' }, + { 'data': 'lomo' }, + { 'data': 'peso' }, + { 'data': 'click' }, + { 'data': 'totalClicks' }, + { 'data': 'precioPagNegro' }, + { 'data': 'precioPagColor' }, + { 'data': 'totalTinta' }, + { 'data': 'totalCorte' }, + { 'data': 'total' }, + + ] }); @@ -245,6 +271,53 @@ }); }); + $('.comp_negro_items').on('change', function (e) { + checkComparadorNegro(); + + }); + + function checkComparadorNegro() { + if (document.getElementById('compPaginasNegro').value && + $('#compPapelNegro').select2('data').length > 0 && + $('#compGramajeNegro').select2('data').length > 0) { + + if (parseInt(document.getElementById('compPaginasNegro').value) > 0 && checkDatosPedidoForComp()) { + + if($('#papelFormatoId').select2('data').length > 0){ + ancho = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[0]); + alto = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[1]); + } + else{ + ancho = parseFloat(document.getElementById('papelFormatoAncho').value); + alto = parseFloat(document.getElementById('papelFormatoAlto').value); + } + + let datos = { + table_type: 'comp_int_bn', + paginas: parseInt(document.getElementById('compPaginasNegro').value), + tirada: parseInt(document.getElementById('tirada').value), + merma: parseInt(document.getElementById('merma').value), + ancho: ancho, + alto: alto, + papel_generico_id: $('#compPapelNegro').select2('data')[0].id, + papel_generico: $('#compPapelNegro').select2('data')[0].text.trim(), + gramaje: $('#compGramajeNegro').select2('data')[0].text.trim() , + : v + }; + + $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + console.log(data) + yeniden(data.); + }, + }) + } + } + } + $('#compPapelNegrohq').on('select2:select', function (e){ diff --git a/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js b/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js new file mode 100644 index 00000000..282ca8ac --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js @@ -0,0 +1,17 @@ + + + + +/* +fetch("/presupuestos/cosidotapablanda/datatable", { + + method: 'POST', + body: JSON.stringify(data), + headers: { 'X-Requested-With': 'XMLHttpRequest' }, + +}) +.then(response => console.log(response)) +//.then(json => console.log(json)) +.catch(err => console.log(err)); + +*/ diff --git a/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php b/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php new file mode 100644 index 00000000..756a2230 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php @@ -0,0 +1,36 @@ +extend('themes/backend/vuexy/main/defaultlayout') ?> + + +section("additionalInlineJs") ?> + + console.log("Hola") + + let datos = { + table_type: 'comp_int_bn', + paginas: 200, + tirada: 100, + merma: 10, + ancho: 98 , + alto: 148, + papel_generico_id: 4, + papel_generico: 'AHUESADO OFFSET', + gramaje: 80, + : v + } + + + $.ajax({ + type:"POST", + url:"cosidotapablanda/datatable", + data:datos, // data recive un objeto con la informacion que se enviara al servidor + success:function(data){ //success es una funcion que se utiliza si el servidor retorna informacion + console.log(data) + yeniden(data.); + }, + //dataType: dataType // El tipo de datos esperados del servidor. Valor predeterminado: Intelligent Guess (xml, json, script, text, html). + }) + + +endSection() ?> + + From accb06ba5ff2b0fed829e2d35cad3608e2b0201f Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Tue, 26 Sep 2023 21:44:21 +0200 Subject: [PATCH 07/46] tabla interior plana generada --- .../Presupuestos/Cosidotapablanda.php | 34 ++++++++++++++----- ci4/app/Language/en/Presupuestos.php | 2 +- ci4/app/Language/es/Presupuestos.php | 2 +- .../Configuracion/PapelGenericoModel.php | 5 +-- .../cosidotapablanda/_datosLibroItems.php | 6 ++-- .../_datosPresupuestoClienteItems.php | 24 ++++++------- .../cosidotapablanda/comparador.js | 26 ++++++++++++++ .../viewCosidotapablandaForm.php | 23 +++++++++++-- 8 files changed, 93 insertions(+), 29 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index c8fbf198..ebf3773d 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -478,7 +478,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController 'lineas' => $resourceData, $csrfTokenName => $newTokenHash ]; - //return json_encode(array("data"=>$resourceData)); + return $this->respond($data); break; @@ -541,7 +541,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $linea['fields']['paginas'] = $datosPedido->paginas; $linea['fields']['gramaje'] = $gramaje; $linea['fields']['papel_generico_id'] = $papel_generico['id']; - $linea['fields']['papel_generico_id'] = $papel_generico['nombre']; + $linea['fields']['papel_generico'] = $papel_generico['nombre']; array_push($lineas, $linea); } @@ -639,7 +639,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('negro', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -647,7 +650,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('negrohq', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -655,7 +661,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('color', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -663,7 +672,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('colorhq', false, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -671,7 +683,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('color', true, false); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } @@ -679,7 +694,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Configuracion\PapelGenericoModel'); $data = $model->getPapelForComparador('color', false, true); - array_unshift($data, lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))])); + array_unshift($data, (object)array( + "id" => 0, + "nombre" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papel'))]) + )); return $data; } diff --git a/ci4/app/Language/en/Presupuestos.php b/ci4/app/Language/en/Presupuestos.php index a5ae9bb9..c7869387 100644 --- a/ci4/app/Language/en/Presupuestos.php +++ b/ci4/app/Language/en/Presupuestos.php @@ -45,7 +45,7 @@ return [ 'recogerEnTaller' => 'Pick up in workshop', 'marcapaginas' => 'Bookmark', 'merma' => 'Weakening', - 'mermaportada' => 'Cover weakening', + 'mermacubierta' => 'Cover weakening', 'tipoImpresion' => 'Printing type', 'papelesComparadorCosidoTapaBlanda' => 'Interior and cover papers', 'posicionPagColor' => 'Color pages position', diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 30fffaec..e2a545bb 100644 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -45,7 +45,7 @@ return [ 'recogerEnTaller' => 'Recoger en taller', 'marcapaginas' => 'Marcapáginas', 'merma' => 'Merma', - 'mermaportada' => 'Merma portada', + 'mermacubierta' => 'Merma cubierta', 'tipoImpresion' => 'Tipo de impresión', 'papelesComparadorCosidoTapaBlanda' => 'Papeles interior y cubierta', 'posicionPagColor' => 'Posición páginas a color', diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index 1df24bcc..a956cfe4 100644 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -104,8 +104,9 @@ class PapelGenericoModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.nombre AS papel_generico" + "t1.id as id, t1.nombre AS nombre" ) + ->distinct('t1.id') ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") @@ -126,7 +127,7 @@ class PapelGenericoModel extends \App\Models\GoBaseModel } } - return array_unique(array_column($builder->orderBy("t1.nombre", "asc")->get()->getResultArray(), 'papel_generico')); + return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); } public function getGramajeComparador(string $papel_generico_nombre="") diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php index b458aaf7..dd8f5b93 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php @@ -101,10 +101,10 @@
-
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index fc07f7f3..091b4b08 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -75,8 +75,8 @@ $v) : ?> - @@ -131,8 +131,8 @@ $v) : ?> - @@ -194,8 +194,8 @@
- +
: 0.00 0.00
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index 9c0e2b1a..c98b8770 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -61,6 +61,32 @@ $('.accordion-button').on('click', function (e) { /******************************* * Metodos *******************************/ +function getRowFromLinea(tipo, linea){ + return { + 'tipo': tipo, + 'paginas': linea.fields.paginas, + 'papel': linea.fields.papel_generico_id, + 'gramaje': linea.fields.gramaje, + 'marca': linea.fields.papel_impresion, + 'maquina': linea.fields.maquina, + 'numeroPliegos': isNaN(parseFloat(linea.fields.pliegos_libro).toFixed(2)) ? "" : parseFloat(linea.fields.pliegos_libro).toFixed(2), + 'pliegosPedido': isNaN(parseFloat(linea.fields.pliegos_pedido).toFixed(2)) ? "" : parseFloat(linea.fields.pliegos_pedido).toFixed(2), + 'precioPliego': isNaN(parseFloat(linea.fields.precios_pliegos).toFixed(6)) ? "" : parseFloat(linea.fields.precios_pliegos).toFixed(6), + 'libro': isNaN(parseFloat(linea.fields.precio_libro).toFixed(2)) ? "" : parseFloat(linea.fields.precio_libro).toFixed(2), + 'totalPapelPedido': isNaN(parseFloat(linea.fields.precio_pedido).toFixed(2)) ? "" : parseFloat(linea.fields.precio_pedido).toFixed(2), + 'lomo': isNaN(parseFloat(linea.fields.mano).toFixed(2)) ? "" : parseFloat(linea.fields.mano).toFixed(2), + 'peso': isNaN(parseFloat(linea.fields.peso).toFixed(2)) ? "" : parseFloat(linea.fields.peso).toFixed(2), + 'click': isNaN(parseFloat(linea.fields.precio_click).toFixed(6)) ? "" : parseFloat(linea.fields.precio_click).toFixed(6), + 'totalClicks': isNaN(parseFloat(linea.fields.precio_click_pedido).toFixed(2)) ? "" : parseFloat(linea.fields.precio_click_pedido).toFixed(2), + 'precioPagNegro': isNaN(parseFloat(linea.fields.precioPagNegro).toFixed(6)) ? "" : parseFloat(linea.fields.precioPagNegro).toFixed(6), + 'precioPagColor': isNaN(parseFloat(linea.fields.precioPagColor).toFixed(6)) ? "" : parseFloat(linea.fields.precioPagColor).toFixed(6), + 'totalTinta': isNaN(parseFloat(linea.fields.totalTinta).toFixed(6)) ? "" : parseFloat(linea.fields.totalTinta).toFixed(6), + 'totalCorte': isNaN(parseFloat(linea.fields.totalCorte).toFixed(6)) ? "" : parseFloat(linea.fields.totalCorte).toFixed(6), + 'total': isNaN(parseFloat(linea.fields.precio_pedido+linea.fields.precio_click_pedido).toFixed(2)) ? + "" : parseFloat(linea.fields.precio_pedido+linea.fields.precio_click_pedido).toFixed(2), + } +} + function checkDatosPedidoForComp() { if (parseInt(document.getElementById('paginas').value) > 0 && diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index db55494c..d935982a 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -175,6 +175,10 @@ language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" }, + order: [[19, 'asc']], + "columnDefs": [ + {targets: 19, type: "num"} + ], columns: [ { 'data': 'tipo' }, { 'data': 'paginas' }, @@ -241,7 +245,7 @@ $('#compPapelNegro').on('select2:select', function (e){ - $('#compGramajeNegro').val(null).trigger('change'); + $('#compGramajeNegro').val(null).trigger('change') $('#compGramajeNegro').prop('disabled', false); $('#compPapelNegro').find('option[value="0"]').remove(); $('#compGramajeNegro').select2({ @@ -310,7 +314,22 @@ url: "/cosidotapablanda/datatable", data: datos, success: function (data) { - console.log(data) + if(data.lineas.length >0){ + let sorted = data.lineas.sort( + (p1, p2) => ((p1.fields.precio_pedido+p1.fields.precio_click_pedido) < (p2.fields.precio_pedido+p2.fields.precio_click_pedido)) ? + -1 : ((p1.fields.precio_pedido+p1.fields.precio_click_pedido) > (p2.fields.precio_pedido+p2.fields.precio_click_pedido)) ? 1 : 0); + sorted.forEach(function(linea) { + console.log(linea); + tableCompIntPlana.row + .add(getRowFromLinea('BN', linea)) + .draw() + }) + + $('#total_comp_negro').html( + isNaN(parseFloat(data.lineas[0].fields.precio_pedido).toFixed(2)) ? + "0.00" : parseFloat(data.lineas[0].fields.precio_pedido).toFixed(2)) + $("#tableCompIntPlana").DataTable().row( 0 ).nodes().to$().toggleClass( 'selected' ); + } yeniden(data.); }, }) From b188e30f7d163006259a0d532c7b56cba6c2d946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Wed, 27 Sep 2023 17:13:10 +0200 Subject: [PATCH 08/46] =?UTF-8?q?a=C3=B1adido=20el=201.04=20en=20el=20calc?= =?UTF-8?q?ulo=20del=20pliego=20para=20hacer=20pruebas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Services/PresupuestoService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 38a70819..28438760 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -259,7 +259,7 @@ class PresupuestoService extends BaseService $peso_por_pliego = $maquina->alto * $maquina->ancho * $papel_impresion->gramaje / 1000000; $precio_pliego = $papel_impresion->precio_tonelada * (1 + (floatval($margen[0]['margen']) / 100.0)) / 1000000 * $peso_por_pliego; - return round($precio_pliego, 6); + return round($precio_pliego*1.04, 6); // quitar el factor de 1.04 despues de los test } return -1; } From 84d20063137efa434d34382b479b3dbc11b9c2c0 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Thu, 28 Sep 2023 14:57:35 +0200 Subject: [PATCH 09/46] Eliminado Libro Tapa Blanda con Solapas del menu --- .../Presupuestos/Cosidotapablandasolapas.php | 19 ------------------- ci4/app/Language/es/App.php | 1 - .../backend/vuexy/main/menu_impresion.php | 12 +----------- 3 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php b/ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php deleted file mode 100644 index de7fdbf3..00000000 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablandasolapas.php +++ /dev/null @@ -1,19 +0,0 @@ -> Libros >> Cosido tapa blanda con solapas [en desarrollo].'; - } -} - \ No newline at end of file diff --git a/ci4/app/Language/es/App.php b/ci4/app/Language/es/App.php index 1a9d22be..64450f72 100644 --- a/ci4/app/Language/es/App.php +++ b/ci4/app/Language/es/App.php @@ -745,7 +745,6 @@ return [ "menu_libros_fresasdo_tapa_blanda" => "Fresado tapa blanda", "menu_libros_cosido_tapa_dura" => "Cosidos tapa dura", "menu_libros_cosido_tapa_blanda" => "Cosidos tapa blanda", - "menu_libros_cosido_tapa_blanda_solapas" => "Cosidos tapa blanda con solapas", "menu_libros_grapados" => "Grapados", "menu_libros_espiral_tapa_dura" => "Espiral tapa dura", "menu_libros_espiral_tapa_blanda" => "Espiral tapa blanda", diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php index 4a7622a4..d773389b 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php @@ -76,7 +76,7 @@ @@ -125,16 +125,6 @@ - 0): ?> - 0): ?> - - - - 0): ?> 0): ?> + @@ -99,7 +135,21 @@ - +
+
+
+
+ +
+
+
+
@@ -111,6 +161,14 @@ section("additionalInlineJs") ?> +$("textarea[name*='comentarios_']").each(function(){ + if (!$.trim($(this).val())) { + // textarea is empty or contains only white-space + $("#mostrar_" + $(this).attr('name')).hide(); + }else{ + $("#mostrar_" + $(this).attr('name')).show(); + } + }); endSection() ?> From 3c723c59d9495c9eeee8a992353bd3117b9924be Mon Sep 17 00:00:00 2001 From: imnavajas Date: Tue, 31 Oct 2023 22:32:21 +0100 Subject: [PATCH 23/46] Arreglada la edicion en servicios de presupuesto --- ci4/app/Config/Routes.php | 1 + .../Controllers/Presupuestos/PresupuestoAcabados.php | 3 --- .../Presupuestos/PresupuestoEncuadernaciones.php | 12 ------------ .../Presupuestos/PresupuestoManipulados.php | 8 -------- .../Presupuestos/PresupuestoPreimpresiones.php | 8 -------- ci4/app/Language/es/Presupuestos.php | 1 + .../cosidotapablanda/_datosServiciosItems.php | 2 +- 7 files changed, 3 insertions(+), 32 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index e795fbe2..aca370e9 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -482,6 +482,7 @@ $routes->resource('cosidotapablanda', ['namespace' => 'App\Controllers\Presupue $routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->post('datatable', 'PresupuestoAcabados::datatable', ['as' => 'dataTableOfPresupuestoAcabados']); $routes->post('datatable_editor', 'PresupuestoAcabados::datatable_editor', ['as' => 'editorOfPresupuestoAcabados']); + $routes->get('delete/(:num)', 'PresupuestoAcabados::delete/$1', ['as' => 'deletePresupuestoAcabado']); }); $routes->group('serviciosencuadernaciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php b/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php index eb06794d..d5374629 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoAcabados.php @@ -5,9 +5,6 @@ use App\Controllers\GoBaseResourceController; use App\Models\Collection; -use App\Entities\Clientes\ClienteContactoEntity; - -use App\Models\Clientes\ClienteModel; use App\Models\Presupuestos\PresupuestoAcabadosModel; use DataTables\Editor; diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php b/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php index 5160c308..c7a7687c 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoEncuadernaciones.php @@ -5,22 +5,10 @@ use App\Controllers\GoBaseResourceController; use App\Models\Collection; -use App\Entities\Clientes\ClienteContactoEntity; - -use App\Models\Clientes\ClienteModel; - use App\Models\Presupuestos\PresupuestoEncuadernacionesModel; use DataTables\Editor; use DataTables\Editor\Field; use DataTables\Editor\Validate; -use function App\Controllers\Clientes\csrf_hash; -use function App\Controllers\Clientes\csrf_token; -use function App\Controllers\Clientes\lang; -use function App\Controllers\Clientes\model; -use function App\Controllers\Clientes\redirect; -use function App\Controllers\Clientes\route_to; -use function App\Controllers\Clientes\view; -use const App\Controllers\Clientes\APPPATH; class PresupuestoEncuadernaciones extends \App\Controllers\GoBaseResourceController { diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php b/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php index af2e86db..4dcfed56 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoManipulados.php @@ -13,14 +13,6 @@ use App\Models\Presupuestos\PresupuestoManipuladosModel; use DataTables\Editor; use DataTables\Editor\Field; use DataTables\Editor\Validate; -use function App\Controllers\Clientes\csrf_hash; -use function App\Controllers\Clientes\csrf_token; -use function App\Controllers\Clientes\lang; -use function App\Controllers\Clientes\model; -use function App\Controllers\Clientes\redirect; -use function App\Controllers\Clientes\route_to; -use function App\Controllers\Clientes\view; -use const App\Controllers\Clientes\APPPATH; class PresupuestoManipulados extends \App\Controllers\GoBaseResourceController { diff --git a/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php b/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php index 5e92fd69..dfd9a7f3 100644 --- a/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php +++ b/ci4/app/Controllers/Presupuestos/PresupuestoPreimpresiones.php @@ -7,14 +7,6 @@ use App\Models\Presupuestos\PresupuestoPreimpresionesModel; use DataTables\Editor; use DataTables\Editor\Field; use DataTables\Editor\Validate; -use function App\Controllers\Clientes\csrf_hash; -use function App\Controllers\Clientes\csrf_token; -use function App\Controllers\Clientes\lang; -use function App\Controllers\Clientes\model; -use function App\Controllers\Clientes\redirect; -use function App\Controllers\Clientes\route_to; -use function App\Controllers\Clientes\view; -use const App\Controllers\Clientes\APPPATH; class PresupuestoPreimpresiones extends \App\Controllers\GoBaseResourceController { diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 894d6601..302e1a98 100644 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -97,6 +97,7 @@ return [ 'servicioAcabado' => 'Servicio de acabado', 'servicioPreimpresion' => 'Servicio de preimpresión', 'servicioEncuadernado' => 'Servicio de encuadernado', + 'servicioManipulado' => 'Servicio de manipulado', 'comentarios' => 'Comentarios', 'comentariosCliente' => 'Comentarios cliente', 'comentariosSafekat' => 'Comentarios Safekat', diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php index 3045316b..c10c3aa0 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php @@ -228,7 +228,7 @@ const row = $(this).closest('tr'); if ($.isNumeric(dataId)) { $.ajax({ - url: `/presupuestos/presupuestoacabados/delete/${dataId}`, + url: `/serviciosacabados/delete/${dataId}`, method: 'GET', }).done((data, textStatus, jqXHR) => { $('#confirm2delete').modal('toggle'); From a54bbacf358184e9c9ddce0b29f593a52f7526ed Mon Sep 17 00:00:00 2001 From: imnavajas Date: Tue, 31 Oct 2023 22:42:13 +0100 Subject: [PATCH 24/46] Eliminado controlador redundante de formas de pago --- .../Controllers/Configuracion/Formaspago.php | 232 ------------------ .../Configuracion/FormasPagoEntity.php | 15 -- .../Models/Configuracion/FormasPagoModel.php | 33 --- .../formas-pago/_formaPagoFormItems.php | 12 - .../formas-pago/viewFormaPagoForm.php | 26 -- .../formas-pago/viewFormaPagoList.php | 141 ----------- 6 files changed, 459 deletions(-) delete mode 100644 ci4/app/Controllers/Configuracion/Formaspago.php delete mode 100644 ci4/app/Entities/Configuracion/FormasPagoEntity.php delete mode 100644 ci4/app/Models/Configuracion/FormasPagoModel.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php diff --git a/ci4/app/Controllers/Configuracion/Formaspago.php b/ci4/app/Controllers/Configuracion/Formaspago.php deleted file mode 100644 index e7b86ee0..00000000 --- a/ci4/app/Controllers/Configuracion/Formaspago.php +++ /dev/null @@ -1,232 +0,0 @@ -viewData['pageTitle'] = lang('FormasPagoes.moduleTitle'); - parent::initController($request, $response, $logger); - $this->viewData['usingSweetAlert'] = true; - - if (session('errorMessage')) { - $this->session->setFlashData('sweet-error', session('errorMessage')); - } - if (session('successMessage')) { - $this->session->setFlashData('sweet-success', session('successMessage')); - } - } - - public function index() - { - - $this->viewData['usingClientSideDataTable'] = true; - - $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('FormasPagoes.formaPago')]); - parent::index(); - - } - - public function add() - { - - - $requestMethod = $this->request->getMethod(); - - if ($requestMethod === 'post') : - - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - - $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - - - $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - - - if ($this->canValidate()) : - try { - $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); - } catch (\Exception $e) { - $noException = false; - $this->dealWithException($e); - } - else: - $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [lang('Basic.global.record')]); - $this->session->setFlashdata('formErrors', $this->model->errors()); - endif; - - $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission - endif; - if ($noException && $successfulResult) : - - $id = $this->model->db->insertID(); - - $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; - - if ($thenRedirect) : - if (!empty($this->indexRoute)) : - return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); - else: - return $this->redirect2listView('sweet-success', $message); - endif; - else: - $this->session->setFlashData('sweet-success', $message); - endif; - - endif; // $noException && $successfulResult - - endif; // ($requestMethod === 'post') - - $this->viewData['formasPagoEntity'] = isset($sanitizedData) ? new FormasPagoEntity($sanitizedData) : new FormasPagoEntity(); - - $this->viewData['formAction'] = route_to('createFormaPago'); - - $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('FormasPagoes.formaPago') . ' ' . lang('Basic.global.addNewSuffix'); - - - return $this->displayForm(__METHOD__); - } // end function add() - - public function edit($requestedId = null) - { - - if ($requestedId == null) : - return $this->redirect2listView(); - endif; - $id = filter_var($requestedId, FILTER_SANITIZE_URL); - $formasPagoEntity = $this->model->find($id); - - if ($formasPagoEntity == false) : - $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('FormasPagoes.formaPago')), $id]); - return $this->redirect2listView('sweet-error', $message); - endif; - - $requestMethod = $this->request->getMethod(); - - if ($requestMethod === 'post') : - - $nullIfEmpty = true; // !(phpversion() >= '8.1'); - - $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - - - $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - - - if ($this->canValidate()) : - try { - $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); - } catch (\Exception $e) { - $noException = false; - $this->dealWithException($e); - } - else: - $this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('FormasPagoes.formaPago'))]); - $this->session->setFlashdata('formErrors', $this->model->errors()); - - endif; - - $formasPagoEntity->fill($sanitizedData); - - $thenRedirect = false; - endif; - if ($noException && $successfulResult) : - $id = $formasPagoEntity->id ?? $id; - $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.'; - - if ($thenRedirect) : - if (!empty($this->indexRoute)) : - return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); - else: - return $this->redirect2listView('sweet-success', $message); - endif; - else: - $this->session->setFlashData('sweet-success', $message); - endif; - - endif; // $noException && $successfulResult - endif; // ($requestMethod === 'post') - - $this->viewData['formasPagoEntity'] = $formasPagoEntity; - - $this->viewData['formAction'] = route_to('updateFormaPago', $id); - - $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('FormasPagoes.formaPago') . ' ' . lang('Basic.global.edit3'); - - - return $this->displayForm(__METHOD__, $id); - } // end function edit(...) - - - public function allItemsSelect() - { - if ($this->request->isAJAX()) { - $onlyActiveOnes = true; - $reqVal = $this->request->getPost('val') ?? 'id'; - $menu = $this->model->getAllForMenu($reqVal . ', nombre', 'nombre', $onlyActiveOnes, false); - $nonItem = new \stdClass; - $nonItem->id = ''; - $nonItem->nombre = '- ' . lang('Basic.global.None') . ' -'; - array_unshift($menu, $nonItem); - - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, - $csrfTokenName => $newTokenHash - ]; - return $this->respond($data); - } else { - return $this->failUnauthorized('Invalid request', 403); - } - } - - public function menuItems() - { - if ($this->request->isAJAX()) { - $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; - $reqId = goSanitize($this->request->getPost('id'))[0]; - $reqText = goSanitize($this->request->getPost('text'))[0]; - $onlyActiveOnes = false; - $columns2select = [$reqId ?? 'id', $reqText ?? 'nombre']; - $onlyActiveOnes = false; - $menu = $this->model->getSelect2MenuItems($columns2select, $columns2select[1], $onlyActiveOnes, $searchStr); - $nonItem = new \stdClass; - $nonItem->id = ''; - $nonItem->text = '- ' . lang('Basic.global.None') . ' -'; - array_unshift($menu, $nonItem); - - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, - $csrfTokenName => $newTokenHash - ]; - return $this->respond($data); - } else { - return $this->failUnauthorized('Invalid request', 403); - } - } - -} diff --git a/ci4/app/Entities/Configuracion/FormasPagoEntity.php b/ci4/app/Entities/Configuracion/FormasPagoEntity.php deleted file mode 100644 index d29181c6..00000000 --- a/ci4/app/Entities/Configuracion/FormasPagoEntity.php +++ /dev/null @@ -1,15 +0,0 @@ - null, - "nombre" => null, - "created_at" => null, - "updated_at" => null, - ]; - protected $casts = []; -} diff --git a/ci4/app/Models/Configuracion/FormasPagoModel.php b/ci4/app/Models/Configuracion/FormasPagoModel.php deleted file mode 100644 index 5230e7fd..00000000 --- a/ci4/app/Models/Configuracion/FormasPagoModel.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - "label" => "FormasPagoes.nombre", - "rules" => "trim|required|max_length[255]", - ], - ]; - - protected $validationMessages = [ - "nombre" => [ - "max_length" => "FormasPagoes.validation.nombre.max_length", - "required" => "FormasPagoes.validation.nombre.required", - ], - ]; -} diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php deleted file mode 100644 index 205027a8..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/_formaPagoFormItems.php +++ /dev/null @@ -1,12 +0,0 @@ -
-
-
- - -
- -
- -
\ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php deleted file mode 100644 index 1ddbfce1..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoForm.php +++ /dev/null @@ -1,26 +0,0 @@ -include("themes_commonPartialsBs/select2bs5") ?> -include("themes_commonPartialsBs/sweetalert") ?> -extend('themes/backend/vuexy/main/defaultlayout') ?> -section("content") ?> -
-
-
-
-

-
-
- -
- - getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - -
- -
-
-
-
-endSection() ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php deleted file mode 100644 index 07526fb2..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/configuracion/formas-pago/viewFormaPagoList.php +++ /dev/null @@ -1,141 +0,0 @@ -include('themes_commonPartialsBs/datatables') ?> -include('themes_commonPartialsBs/sweetalert') ?> -extend('themes'.config('Basics')->theme['name'].'/AdminLayout/defaultLayout') ?> -section('content'); ?> -
-
- -
-
-

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- id), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id,]); ?> - 'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteFormaPago', $item->id)]); ?> - - id ?> - - nombre) || strlen($item->nombre) < 51 ? esc($item->nombre) : character_limiter(esc($item->nombre), 50) ?> - - created_at) ? '' : date('mm/dd/YYYY H:i', strtotime($item->created_at)) ?> - - updated_at) ? '' : date('mm/dd/YYYY H:i', strtotime($item->updated_at)) ?> - - id), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id,]); ?> - 'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteFormaPago', $item->id)]); ?> -
-
- -
-
-
- -endSection() ?> - - -section('additionalInlineJs') ?> - - const lastColNr2 = $(".using-exportable-data-table").find("tr:first th").length - 1; - theTable = $('.using-exportable-data-table').DataTable({ - "responsive": true, - "paging": true, - "lengthMenu": [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ], - "pageLength": 10, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "dom": 'lfrtipB', // 'lfBrtip', // you can try different layout combinations by uncommenting one or the other - // "dom": '<"top"lf><"clear">rt<"bottom"ipB><"clear">', // remember to comment this line if you uncomment the above - "buttons": [ - 'copy', 'csv', 'excel', 'print', { - extend: 'pdfHtml5', - orientation: 'landscape', - pageSize: 'A4' - } - ], - "autoWidth": true, - "scrollX": true, - "stateSave": true, - "language": { - url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" - }, - "columnDefs": [ - { - orderable: false, - searchable: false, - targets: [0,lastColNr2] - } - ] - }); - - - - - $(document).on('click', '.btn-delete', function(e) { - e.preventDefault(); - const dataHref = $(this).data('href'); - Swal.fire({ - title: "", - text: "", - icon: 'warning', - showCancelButton: true, - confirmButtonColor: '#3085d6', - confirmButtonText: '', - cancelButtonText: '', - cancelButtonColor: '#d33' - }).then((result) => { - if (result.value) { - window.location.href = `${dataHref}`; - } - }); - }); - - -endSection() ?> - - -section('css') ?> - -endSection() ?> - - -section('additionalExternalJs') ?> - - - - - - - -endSection() ?> - From a5310e4dce3b9eb06d273c73cbf234f989dce8f6 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Tue, 31 Oct 2023 22:51:04 +0100 Subject: [PATCH 25/46] Eliminado Tarifas de cliente --- .../Controllers/Clientes/Tarifacliente.php | 46 ------------------- .../vuexy/main/menu_digitalizacion.php | 11 +---- .../backend/vuexy/main/menu_impresion.php | 11 +---- .../backend/vuexy/main/menu_maquetacion.php | 11 +---- 4 files changed, 3 insertions(+), 76 deletions(-) delete mode 100644 ci4/app/Controllers/Clientes/Tarifacliente.php diff --git a/ci4/app/Controllers/Clientes/Tarifacliente.php b/ci4/app/Controllers/Clientes/Tarifacliente.php deleted file mode 100644 index e8c7974e..00000000 --- a/ci4/app/Controllers/Clientes/Tarifacliente.php +++ /dev/null @@ -1,46 +0,0 @@ -getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } - - public function delete() - { - $uri = service('uri'); - $data['page_name'] = "Tarifa Cliente"; - $data['url'] = base_url() . $uri->getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } - - public function add() - { - $uri = service('uri'); - $data['page_name'] = "Tarifa Cliente"; - $data['url'] = base_url() . $uri->getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } - - public function edit() - { - $uri = service('uri'); - $data['page_name'] = "Tarifa Cliente"; - $data['url'] = base_url() . $uri->getSegment(1) . '/' . $uri->getSegment(2); - echo view(getenv('theme.path').'main/demo_view', $data); - } -} - \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php index 29b8a349..6863729e 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_digitalizacion.php @@ -29,7 +29,7 @@ /** * MENU CLIENTES */ - if (allowMenuSection($menus, ['Cliente', 'Tarifacliente'], 'index')): + if (allowMenuSection($menus, ['Cliente'], 'index')): ?> - 0): ?> - 0): ?> - - - diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php index d773389b..97522ace 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_impresion.php @@ -29,7 +29,7 @@ /** * MENU CLIENTES */ - if (allowMenuSection($menus, ['Cliente', 'Tarifacliente'], 'index')): + if (allowMenuSection($menus, ['Cliente'], 'index')): ?> - 0): ?> - 0): ?> - - - diff --git a/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php b/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php index 6c42a7c3..2d797e38 100644 --- a/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php +++ b/ci4/app/Views/themes/backend/vuexy/main/menu_maquetacion.php @@ -29,7 +29,7 @@ /** * MENU CLIENTES */ - if (allowMenuSection($menus, ['Cliente', 'Tarifacliente'], 'index')): + if (allowMenuSection($menus, ['Cliente'], 'index')): ?> - 0): ?> - 0): ?> - - - From d7574a0e2fe488c89fc874cf774cbea14de0f2bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez=20Ortega?= Date: Wed, 1 Nov 2023 19:17:04 +0100 Subject: [PATCH 26/46] hecho el html de las lineas de presupuesto --- ci4/app/Controllers/Test.php | 25 +- ci4/app/Language/en/Presupuestos.php | 38 +- ci4/app/Language/es/Presupuestos.php | 46 +- .../Configuracion/PapelGenericoModel.php | 18 +- ci4/app/Services/PresupuestoService.php | 14 +- .../_lineasPresupuestoItems.php | 817 +++++++++++++++++- .../cosidotapablanda/comparador.js | 16 +- .../viewCosidotapablandaForm.php | 84 +- httpdocs/themes/vuexy/css/sk-datatables.css | 48 + 9 files changed, 997 insertions(+), 109 deletions(-) diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 93c983c9..f6f20f20 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -4,6 +4,7 @@ namespace App\Controllers; use App\Controllers\BaseController; use App\Models\Configuracion\MaquinasTarifasImpresionModel; +use App\Models\Configuracion\PapelGenericoModel; use App\Models\Configuracion\MaquinaModel; use App\Services\PresupuestoService; @@ -16,7 +17,21 @@ class Test extends BaseController public function index() { - $this->testLineasCubierta(); + $this->testLineasIntPlana(); + } + + public function getPapelesHQ(){ + $model = model('App\Models\Configuracion\PapelGenericoModel'); + $data = $model->getPapelForComparador('colorhq', false, false); + + var_dump($data); + } + + public function getGramaje(){ + $model = new PapelGenericoModel(); + $data = $model->getGramajeComparador("AHUESADO OFFSET", "bnhq" ); + + var_dump($data); } public function testGetPrecioPliegoRotativa() @@ -58,8 +73,8 @@ class Test extends BaseController public static function testLineasIntPlana() { - $uso = 'negro'; - $tipo = 'color'; + $uso = 'interior'; + $tipo = 'colorhq'; $datosPedido = (object)array( 'paginas' => 200, 'tirada' => 500, @@ -73,7 +88,7 @@ class Test extends BaseController $maquina_model = new \App\Models\Configuracion\MaquinaModel(); $opciones_papel = array( - 'bn' => 1, + 'color' => 1, 'cubierta' => 0, 'sobrecubierta' => 0, 'rotativa' => 0, @@ -88,7 +103,7 @@ class Test extends BaseController echo '-------------------------------'; $maquinas = $maquina_model->getMaquinaImpresionForPresupuesto( is_rotativa: $papel->rotativa, - tarifa_tipo: 'negro', + tarifa_tipo: 'colorhq', tirada: $datosPedido->tirada + $datosPedido->merma, papel_impresion_id: $papel->id, ); diff --git a/ci4/app/Language/en/Presupuestos.php b/ci4/app/Language/en/Presupuestos.php index f19e9034..dc64feb9 100644 --- a/ci4/app/Language/en/Presupuestos.php +++ b/ci4/app/Language/en/Presupuestos.php @@ -99,7 +99,43 @@ return [ 'rotativa' => 'rotary', 'lineasPresupuesto' => 'Budget Lines', 'tiempo' => 'Time', - + + 'porDefecto' => 'Deafult', + 'tipoImpresion' => 'Print', + 'numPagColor' => 'No Color Pages', + 'saturacion' => 'Saturation', + 'cobNegro' => 'Cov. % Black', + 'cobCyan' => 'Cov. % Cyan', + 'cobMagenta' => 'Cov. % Magenta', + 'cobAmarillo' => 'Cov. % Yellow', + 'gotaNegro' => 'Black drop', + 'gotaColor' => 'Color drop', + 'totalLinea' => 'TOTAL LINE', + 'verCalculos' => 'Calculations', + 'metrosMinuto' => 'Meters x min.', + 'resolucion' => 'Resolution (dpi)', + 'areaPaginas' => 'Pages area (in)', + 'gotasNegro' => 'No black drops', + 'gotasCyan' => 'No color drops', + 'gotasMagenta' => 'No magenta drops', + 'gotasAmarillo' => 'No yellow drops', + 'precioPagNegro' => 'Price black pages', + 'precioPagColor' => 'Price color pages', + 'factorAltura' => 'Height factor', + 'factorAnchura' => 'Width factor', + 'paginasPliego' => 'Pages/sheet', + 'metrosPapelLibro' => 'M. Paper Book', + 'metrosPapelTotal' => 'M. Paper Total', + 'clicksLibro' => 'Clicks/Book', + 'gTintaNegro' => 'G. Black Ink', + 'gTintaCyan' => 'G. Cyan Ink', + 'gTintaMagenta' => 'G. Magenta Ink', + 'gTintaAmarillo' => 'G. Yellow Ink', + 'clicksPedido' => 'Clicks Order', + 'totalClicks' => 'Total Clicks', + 'totalTinta' => 'Total Ink', + 'totalCorte' => 'Total Cut', + 'totalImpresion' => 'TOTAL PRINT', /* '4x0' => '4x0', '4x4' => '4x4', diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 3f5e4f2b..c576203b 100644 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -78,7 +78,7 @@ return [ 'totalTinta' => 'Total tinta', 'totalCorte' => 'Total corte', 'total' => 'Total', - 'aFavorFibra' => 'A favor fibra', + 'aFavorFibra' => 'A favor de fibra', 'cubierta' => 'Cubierta', 'sobrecubierta' => 'Sobrecubierta', 'encuadernacion' => 'Encuadernación', @@ -98,6 +98,50 @@ return [ 'rotativa' => 'rotativa', 'lineasPresupuesto' => 'Líneas Presupuesto', 'tiempo' => 'Tiempo', + + 'porDefecto' => 'Por defecto', + 'tipoImpresion' => 'Impresion', + 'numPagColor' => 'Nº Paginas Color', + 'saturacion' => 'Saturación', + 'cobNegro' => 'Cob. % Negro', + 'cobCyan' => 'Cob. % Cyan', + 'cobMagenta' => 'Cob. % Magenta', + 'cobAmarillo' => 'Cob. % Amarillo', + 'gotaNegro' => 'Gota negro', + 'gotaColor' => 'Gota color', + 'totalLinea' => 'TOTAL LÍNEA', + 'verCalculos' => 'Cálculos', + 'metrosMinuto' => 'Metros x min.', + 'resolucion' => 'Resolución (dpi)', + 'areaPaginas' => 'Área páginas (in)', + 'gotasNegro' => 'Nº gotas negro', + 'gotasCyan' => 'Nº gotas cyan', + 'gotasMagenta' => 'Nº gotas magenta', + 'gotasAmarillo' => 'Nº gotas amarillo', + 'precioPagNegro' => 'Precio pág. Negro', + 'precioPagColor' => 'Precio pág. Color', + 'factorAltura' => 'Factor altura', + 'factorAnchura' => 'Factor anchura', + 'paginasPliego' => 'Páginas/pliego', + 'metrosPapelLibro' => 'M. Papel Libro', + 'metrosPapelTotal' => 'M. Papel Total', + 'clicksLibro' => 'Clicks/Libro', + 'gTintaNegro' => 'G. tinta Negro', + 'gTintaCyan' => 'G. tinta Cyan', + 'gTintaMagenta' => 'G. tinta Magenta', + 'gTintaAmarillo' => 'G. tinta Amarillo', + 'clicksPedido' => 'Clicks Pedido', + 'totalClicks' => 'Total Clicks', + 'totalTinta' => 'Total Tinta', + 'totalCorte' => 'Total Corte', + 'totalImpresion' => 'TOTAL IMPRES.', + 'velocidadCorte' => 'Velocidad corte', + 'precioHoraCorte' => 'Precio hora corte', + 'tiempoCorte' => 'Tiempo corte', + 'gTintaNegroPed' => 'G.T. Negro Ped.', + 'gTintaCyanPed' => 'G.T. Cyan Ped.', + 'gTintaMagentaPed' => 'G.T. Magenta Ped.', + 'gTintaAmarilloPed' => 'G.T. Amarillo Ped.', 'servicioAcabado' => 'Servicio de acabado', 'servicioPreimpresion' => 'Servicio de preimpresión', diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index 32bddfeb..eb971ea2 100644 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -114,6 +114,7 @@ class PapelGenericoModel extends \App\Models\GoBaseModel ->where("t1.is_deleted", 0) ->where("t2.is_deleted", 0) + ->where("t3.active", 1) ->where("t4.is_deleted", 0) ->where("t4.tipo", "impresion") ->where("t5.tipo", $tipo); @@ -134,21 +135,34 @@ class PapelGenericoModel extends \App\Models\GoBaseModel public function getGramajeComparador(string $papel_generico_nombre="", $uso="") { + $tipo=$uso; // color y colorhq valen para los dos + if($uso == 'bn') + $tipo="negro"; + if($uso == 'bnhq') + $tipo="negrohq"; + $builder = $this->db ->table($this->table . " t1") ->select( "t2.gramaje AS text" ) ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "left") ->where("t1.is_deleted", 0) ->where("t2.is_deleted", 0) ->where("t2.isActivo", 1) + ->where("t3.active", 1) + ->where("t4.is_deleted", 0) + ->where("t4.tipo", "impresion") + ->where("t5.tipo", $tipo) ->where("t1.nombre", $papel_generico_nombre); - if($uso == 'bn') + if($uso == 'bn' || $uso == 'bnhq') $builder->where("t2.bn", 1); - else if ($uso == 'color') + else if ($uso == 'color' || $uso == 'colorhq') $builder->where("t2.color", 1); else if ($uso == 'cubierta') $builder->where("t2.cubierta", 1); diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 14d4a374..c3a05d5c 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -361,10 +361,18 @@ class PresupuestoService extends BaseService } public static function getTiempoMaquina($totalClicks, $precioClick, $velocidadMaquina) { + try { + + if($precioClick>0 && $velocidadMaquina>0) + $minutos = (1.0*$totalClicks/$precioClick)/$velocidadMaquina; + else + $minutos = 0; - $minutos = (1.0*$totalClicks/$precioClick)/$velocidadMaquina; - - return gmdate("H:i:s", round($minutos*60,0)); + return gmdate("H:i:s", round($minutos*60,0)); + + } catch (Exception $e) { + return gmdate("H:i:s", round(0,0)); + } } diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index e5fef0a9..88cd20a4 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -12,27 +12,784 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + + + + + + +
+ + + + + + + +
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
@@ -40,4 +797,26 @@ - \ No newline at end of file + + + + + +section("additionalInlineJs") ?> + +$('#lp_rot_color_vercalculos').on("click", function () { + if($( ".calculos_rot_color" ).css('display') == 'none') + $( ".calculos_rot_color" ).css('display', 'flex') + else{ + $( ".calculos_rot_color" ).css('display', 'none') + } +}); + +$('#lp_rot_bn_vercalculos').on("click", function () { + if($( ".calculos_rot_bn" ).css('display') == 'none') + $( ".calculos_rot_bn" ).css('display', 'flex') + else{ + $( ".calculos_rot_bn" ).css('display', 'none') + } +}); +endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index b33a663e..6194f0ec 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -50,15 +50,19 @@ $('#compPaginasNegrohq').on("change", function () { }); $('#compPaginasColorhq').on("change", function () { - if (document.getElementById('paginas').value < document.getElementById('compPaginasColorhq').value) { - document.getElementById('compPaginasColorhq').value = document.getElementById('paginas').value; - } + const paginas = parseInt(document.getElementById('paginas').value); + var color = parseInt(document.getElementById('compPaginasColorhq').value); + var negro = parseInt(document.getElementById('compPaginasNegrohq').value); - if (document.getElementById('compPaginasNegrohq').value + document.getElementById('compPaginasColorhq').value > document.getElementById('paginas').value) { - var newValue = document.getElementById('paginas').value - document.getElementById('compPaginasColorhq').value; + if (paginas < color) { + document.getElementById('compPaginasColorhq').value = paginas; + color = paginas + } + var newValue = paginas - color; + if (newValue != negro) { document.getElementById('compPaginasNegrohq').value = newValue >= 0 ? newValue : 0; + $('#compPaginasNegrohq').change(); } - }); $('#paginas').on("change", function () { diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index e73e9d02..5b92d14c 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -116,6 +116,10 @@ allowClear: false, }); + $('#compGramajeColorhq').select2({ + allowClear: false, + }); + $('#compPapelCubierta').select2({ allowClear: false, }); @@ -334,6 +338,9 @@ ] }); + const papelGenericoNegroList = ; + + var tableLineasPresupuesto = new DataTable('#tableLineasPresupuesto',{ scrollX: true, searching: false, @@ -345,73 +352,7 @@ language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" }, - columns: [ - { 'data': 'tipo', - 'render': function ( data, type, row, meta ) { - if(data=='bn') - return '\" />'; - else if(data=='bnhq') - return '\" />'; - else if(data=='color') - return '\" />'; - else if(data=='colorhq') - return '\" />'; - else if(data=='rotativabn') - return '\" />'; - else if(data=='rotativacolor') - return '\" />'; - else - return ''; - } - }, - { 'data': 'paginas' }, - { 'data': 'papel' }, - { 'data': 'gramaje' }, - { 'data': 'marca' }, - { 'data': 'maquina' }, - { 'data': 'tiempo' }, - { 'data': 'numeroPliegos' }, - { 'data': 'pliegosPedido' }, - { 'data': 'precioPliego' }, - { 'data': 'libro' }, - { 'data': 'totalPapelPedido' }, - { 'data': 'chekPapel', - render: function (data,type,row) { - if (data == true) { - return ''; - } else { - return ''; - } - return data; - } - }, - { 'data': 'lomo' }, - { 'data': 'peso' }, - { 'data': 'click' }, - { 'data': 'totalClicks' }, - { 'data': 'chekClicks', - render: function (data,type,row) { - if (data == true) { - return ''; - } else { - return ''; - } - return data; - } - }, - { 'data': 'maquinaId'}, - { 'data': 'tiempoMaquina'}, - { 'data': 'maquinaVelocidad'}, - { 'data': 'papelGenericoId'}, - { 'data': 'papelImpresionId'} - ], - columnDefs: [ - { - target: [18,19,20,21,22], - visible: false, - searchable: false - }, - ] + }); @@ -458,7 +399,7 @@ url: "/cosidotapablanda/datatable", data: datos, success: function (data) { - + console.log(data) clearIntLineas(is_color); if(data.lineas.length >0){ @@ -644,8 +585,7 @@ elementos = getIDsComparador(is_color, is_hq) - if ($('#compPaginasNegro').val() && - $(''+ elementos.papel).select2('data').length > 0 && + if ($(''+ elementos.papel).select2('data').length > 0 && $(''+ elementos.gramaje).select2('data').length > 0 && parseInt($(''+ elementos.paginas).val()) > 0 && checkDatosPedidoForComp()) { @@ -732,7 +672,7 @@ data: function (params) { return { tipo: 'gramaje', - uso: 'bn', + uso: 'bnhq', datos: $('#compPapelNegrohq').select2('data')[0].text.trim() , : v }; @@ -820,7 +760,7 @@ data: function (params) { return { tipo: 'gramaje', - uso: 'color', + uso: 'colorhq', datos: $('#compPapelColorhq').select2('data')[0].text.trim() , : v }; diff --git a/httpdocs/themes/vuexy/css/sk-datatables.css b/httpdocs/themes/vuexy/css/sk-datatables.css index 00678af4..40066c00 100644 --- a/httpdocs/themes/vuexy/css/sk-datatables.css +++ b/httpdocs/themes/vuexy/css/sk-datatables.css @@ -40,4 +40,52 @@ table.dataTable.table-hover>tbody>tr.selected:hover>* { .comparator-table td.dt-result-value { text-align: left; +} + + +.lp-cell { + padding-left: 1px; + padding-right: 1px; + margin:0; +} + +.lp-input { + min-width: 40px; + width: 100%; + border-radius: 0.25rem !important; +} + +.lp-select { + padding-top: 2px; + padding-bottom: 2px; + width: 100%; + font-size:0.7rem !important; +} + +.lp-td { + padding-left: 1px; + padding-right: 1px; + margin:0 !important; +} + +.lp-header { + text-align: center !important; + padding-left: 1px !important; + padding-right: 1px !important; + padding-top: 1px !important; + padding-bottom: 5px !important; + margin:0 !important; +} + +.lp-cell-disabled { + background-color: Gainsboro; +} + +.lp-button{ + font-size: 1.1em; + padding-left: 3px; + padding-right: 3px; + width: 100%; + height: 25px; + margin-top: 6px; } \ No newline at end of file From bfa5e045500f0628258678936c57be788c9108d5 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Thu, 2 Nov 2023 22:59:29 +0100 Subject: [PATCH 27/46] Integrada libreria dompdf y ejemplo hola mundo --- ci4/.env | 4 +- ci4/app/Config/Autoload.php | 1 + ci4/app/Config/Routes.php | 4 + ci4/app/Controllers/Pdf/PdfController.php | 24 +++++ ci4/app/Views/pdf_view.php | 115 ++++++++++++++++++++++ ci4/composer.json | 3 +- 6 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 ci4/app/Controllers/Pdf/PdfController.php create mode 100644 ci4/app/Views/pdf_view.php diff --git a/ci4/.env b/ci4/.env index cfd0651b..40f48c5f 100644 --- a/ci4/.env +++ b/ci4/.env @@ -22,8 +22,8 @@ CI_ENVIRONMENT = development # APP #-------------------------------------------------------------------- -app.baseURL = 'https://sk-jjo.imnavajas.es' -#app.baseURL = 'https://sk-imn.imnavajas.es' +#app.baseURL = 'https://sk-jjo.imnavajas.es' +app.baseURL = 'https://sk-imn.imnavajas.es' # app.baseURL = "http://safekat.test/" # app.forceGlobalSecureRequests = false diff --git a/ci4/app/Config/Autoload.php b/ci4/app/Config/Autoload.php index ee27e3b2..5f149426 100644 --- a/ci4/app/Config/Autoload.php +++ b/ci4/app/Config/Autoload.php @@ -43,6 +43,7 @@ class Autoload extends AutoloadConfig public $psr4 = [ APP_NAMESPACE => APPPATH, // For custom app namespace 'Config' => APPPATH . 'Config', + 'Dompdf' => APPPATH . 'ThirdParty/dompdf/src', ]; /** diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 9ec4772e..84f7f385 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -50,6 +50,10 @@ $routes->delete('api/user/(:segment)', 'Api::user/delete/$1'); * Route Definitions * -------------------------------------------------------------------- */ +$routes->group('pdfcontroller', ['namespace' => 'App\Controllers\Pdf'], function ($routes) { + $routes->get('', 'PdfController::index', ['as' => 'pdfList']); + $routes->match(['get', 'post'], 'htmltopdf', 'PdfController::htmlToPDF', ['as' => 'toPdf']); +}); $routes->group('tarifaacabado', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { $routes->get('', 'Tarifaacabado::index', ['as' => 'tarifaAcabadoList']); diff --git a/ci4/app/Controllers/Pdf/PdfController.php b/ci4/app/Controllers/Pdf/PdfController.php new file mode 100644 index 00000000..6bcfc44d --- /dev/null +++ b/ci4/app/Controllers/Pdf/PdfController.php @@ -0,0 +1,24 @@ + true]); + $dompdf->loadHtml(view('pdf_view')); + $dompdf->setPaper('A4', 'portrait'); + $dompdf->render(); + $dompdf->stream(); + } +} \ No newline at end of file diff --git a/ci4/app/Views/pdf_view.php b/ci4/app/Views/pdf_view.php new file mode 100644 index 00000000..69fc8975 --- /dev/null +++ b/ci4/app/Views/pdf_view.php @@ -0,0 +1,115 @@ + + + + + + Codeigniter 4 PDF Example - positronx.io + + + + +
+

Generate PDF in Codeigniter from View

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameProfileCityDateCTC
Airi SatouAccountantTokyo332008/11/28$162,700
Angelica RamosChief Executive Officer (CEO)London472009/10/09$1,200,000
Ashton CoxJunior Technical AuthorSan Francisco662009/01/12$86,000
Bradley GreerSoftware EngineerLondon412012/10/13$132,000
Brenden WagnerSoftware EngineerSan Francisco282011/06/07$206,850
Brielle WilliamsonIntegration SpecialistNew York612012/12/02$372,000
Bruno NashSoftware EngineerLondon382011/05/03$163,500
Caesar VancePre-Sales SupportNew York212011/12/12$106,450
Cara StevensSales AssistantNew York462011/12/06$145,600
Cedric KellySenior Javascript DeveloperEdinburgh222012/03/29$433,060
+
+ + diff --git a/ci4/composer.json b/ci4/composer.json index 687cdb91..c2b4eef4 100644 --- a/ci4/composer.json +++ b/ci4/composer.json @@ -11,7 +11,8 @@ "google/apiclient": "^2.11.0", "firebase/php-jwt": "^5.4", "aws/aws-sdk-php": "^3.206", - "spatie/db-dumper": "^2.21" + "spatie/db-dumper": "^2.21", + "dompdf/dompdf": "^2.0" }, "require-dev": { "fakerphp/faker": "^1.9", From 512cac92762e2f8cdc7335536749a750589055ae Mon Sep 17 00:00:00 2001 From: imnavajas Date: Sat, 4 Nov 2023 23:22:19 +0100 Subject: [PATCH 28/46] Personalizado presupuesto safekat (plantilla basica v0) --- ci4/app/Controllers/Pdf/PdfController.php | 7 +- .../themes/backend/vuexy/pdfs/presupuesto.php | 294 + httpdocs/themes/vuexy/css/all.css | 15039 ++++++++++++++++ httpdocs/themes/vuexy/css/font-pdf.css | 144 + httpdocs/themes/vuexy/css/pdf.presupuesto.css | 755 + 5 files changed, 16237 insertions(+), 2 deletions(-) create mode 100644 ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php create mode 100644 httpdocs/themes/vuexy/css/all.css create mode 100644 httpdocs/themes/vuexy/css/font-pdf.css create mode 100644 httpdocs/themes/vuexy/css/pdf.presupuesto.css diff --git a/ci4/app/Controllers/Pdf/PdfController.php b/ci4/app/Controllers/Pdf/PdfController.php index 6bcfc44d..ba3808e0 100644 --- a/ci4/app/Controllers/Pdf/PdfController.php +++ b/ci4/app/Controllers/Pdf/PdfController.php @@ -12,11 +12,14 @@ class PdfController extends BaseController } public function index() { - return view('pdf_view'); + + //return view('pdf_view'); + return view(getenv('theme.path').'pdfs/presupuesto'); } public function htmlToPDF(){ $dompdf = new \Dompdf\Dompdf(['isRemoteEnabled' => true]); - $dompdf->loadHtml(view('pdf_view')); + //$dompdf->loadHtml(view('pdf_view')); + $dompdf->loadHtml(view(getenv('theme.path').'pdfs/presupuesto')); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); $dompdf->stream(); diff --git a/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php b/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php new file mode 100644 index 00000000..00241c88 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/pdfs/presupuesto.php @@ -0,0 +1,294 @@ + + + + + + + <?= "Presupuesto " . "TBC" ?> + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ PRESUPUESTO Nº: + + id" ?> + + CLIENTE: + + customer->name" ?> + + FECHA: + + +
+ Título: titulo" ?> +
+ Colección: coleccion" ?> + + Autor: autor" ?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INTERIOR
Tipo de ImpresiónBlanco Y Negro
FerroTBDPrototipoSIFerro DigitalSI
Formato + papel_formato->format()" ?> mm. +
Nº de páginas totalespaginas" ?>
Nº de páginas ByNPapelGramaje
Nº de páginas ColorPapelGramaje
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUBIERTA
Formato cubierta*papel_formato->alto" ?> mm. + Lomo
ImpresiónPapelGramajePlastificado
Reserva UVISI
SobrecubiertaPapelGramajePlastificado
+ + + + + + + + + + + + + + + + + +
ENCUADERNACIÓN
TipoSolapasAnchoTBD cm
+ + + + + + + + + + + + + + + + + + + + + +
EXTRAS
RetractiladoNO
GuardasNO
MarcapáginasNO
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ENVÍO
El pedido será recogido por el cliente
EjemplaresDirección
PaísProvinciaC.P.CiudadTelf.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TiradaU.Impresión 4%U.Envío 21%Precio**Precio UD.TOTAL CON IVA
TBD uds.TBD €TBD €TBD €TBD €TBD €
Estos precios no incluyen I.V.A.
+ + comentarios_pdf)) { ?> +
OBSERVACIONES
+
{!! nl2br($obj->comentarios_pdf) !!}
+ + + +
+ + + diff --git a/httpdocs/themes/vuexy/css/all.css b/httpdocs/themes/vuexy/css/all.css new file mode 100644 index 00000000..3b8fd0d2 --- /dev/null +++ b/httpdocs/themes/vuexy/css/all.css @@ -0,0 +1,15039 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fa-lg { + font-size: 1.33333333em; + line-height: .75em; + vertical-align: -15%; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-fw { + width: 1.28571429em; + text-align: center; +} + +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} + +.fa-ul>li { + position: relative; +} + +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: .14285714em; + text-align: center; +} + +.fa-li.fa-lg { + left: -1.85714286em; +} + +.fa-border { + padding: .2em .25em .15em; + border: solid .08em #eee; + border-radius: .1em; +} + +.fa-pull-left { + float: left; +} + +.fa-pull-right { + float: right; +} + +.fa.fa-pull-left { + margin-right: .3em; +} + +.fa.fa-pull-right { + margin-left: .3em; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.fa.pull-left { + margin-right: .3em; +} + +.fa.pull-right { + margin-left: .3em; +} + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} + +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} + +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} + +.fa-stack-1x { + line-height: inherit; +} + +.fa-stack-2x { + font-size: 2em; +} + +.fa-inverse { + color: #fff; +} + +.fa-glass:before { + content: "\f000"; +} + +.fa-music:before { + content: "\f001"; +} + +.fa-search:before { + content: "\f002"; +} + +.fa-envelope-o:before { + content: "\f003"; +} + +.fa-heart:before { + content: "\f004"; +} + +.fa-star:before { + content: "\f005"; +} + +.fa-star-o:before { + content: "\f006"; +} + +.fa-user:before { + content: "\f007"; +} + +.fa-film:before { + content: "\f008"; +} + +.fa-th-large:before { + content: "\f009"; +} + +.fa-th:before { + content: "\f00a"; +} + +.fa-th-list:before { + content: "\f00b"; +} + +.fa-check:before { + content: "\f00c"; +} + +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} + +.fa-search-plus:before { + content: "\f00e"; +} + +.fa-search-minus:before { + content: "\f010"; +} + +.fa-power-off:before { + content: "\f011"; +} + +.fa-signal:before { + content: "\f012"; +} + +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} + +.fa-trash-o:before { + content: "\f014"; +} + +.fa-home:before { + content: "\f015"; +} + +.fa-file-o:before { + content: "\f016"; +} + +.fa-clock-o:before { + content: "\f017"; +} + +.fa-road:before { + content: "\f018"; +} + +.fa-download:before { + content: "\f019"; +} + +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} + +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} + +.fa-inbox:before { + content: "\f01c"; +} + +.fa-play-circle-o:before { + content: "\f01d"; +} + +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} + +.fa-refresh:before { + content: "\f021"; +} + +.fa-list-alt:before { + content: "\f022"; +} + +.fa-lock:before { + content: "\f023"; +} + +.fa-flag:before { + content: "\f024"; +} + +.fa-headphones:before { + content: "\f025"; +} + +.fa-volume-off:before { + content: "\f026"; +} + +.fa-volume-down:before { + content: "\f027"; +} + +.fa-volume-up:before { + content: "\f028"; +} + +.fa-qrcode:before { + content: "\f029"; +} + +.fa-barcode:before { + content: "\f02a"; +} + +.fa-tag:before { + content: "\f02b"; +} + +.fa-tags:before { + content: "\f02c"; +} + +.fa-book:before { + content: "\f02d"; +} + +.fa-bookmark:before { + content: "\f02e"; +} + +.fa-print:before { + content: "\f02f"; +} + +.fa-camera:before { + content: "\f030"; +} + +.fa-font:before { + content: "\f031"; +} + +.fa-bold:before { + content: "\f032"; +} + +.fa-italic:before { + content: "\f033"; +} + +.fa-text-height:before { + content: "\f034"; +} + +.fa-text-width:before { + content: "\f035"; +} + +.fa-align-left:before { + content: "\f036"; +} + +.fa-align-center:before { + content: "\f037"; +} + +.fa-align-right:before { + content: "\f038"; +} + +.fa-align-justify:before { + content: "\f039"; +} + +.fa-list:before { + content: "\f03a"; +} + +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} + +.fa-indent:before { + content: "\f03c"; +} + +.fa-video-camera:before { + content: "\f03d"; +} + +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} + +.fa-pencil:before { + content: "\f040"; +} + +.fa-map-marker:before { + content: "\f041"; +} + +.fa-adjust:before { + content: "\f042"; +} + +.fa-tint:before { + content: "\f043"; +} + +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} + +.fa-share-square-o:before { + content: "\f045"; +} + +.fa-check-square-o:before { + content: "\f046"; +} + +.fa-arrows:before { + content: "\f047"; +} + +.fa-step-backward:before { + content: "\f048"; +} + +.fa-fast-backward:before { + content: "\f049"; +} + +.fa-backward:before { + content: "\f04a"; +} + +.fa-play:before { + content: "\f04b"; +} + +.fa-pause:before { + content: "\f04c"; +} + +.fa-stop:before { + content: "\f04d"; +} + +.fa-forward:before { + content: "\f04e"; +} + +.fa-fast-forward:before { + content: "\f050"; +} + +.fa-step-forward:before { + content: "\f051"; +} + +.fa-eject:before { + content: "\f052"; +} + +.fa-chevron-left:before { + content: "\f053"; +} + +.fa-chevron-right:before { + content: "\f054"; +} + +.fa-plus-circle:before { + content: "\f055"; +} + +.fa-minus-circle:before { + content: "\f056"; +} + +.fa-times-circle:before { + content: "\f057"; +} + +.fa-check-circle:before { + content: "\f058"; +} + +.fa-question-circle:before { + content: "\f059"; +} + +.fa-info-circle:before { + content: "\f05a"; +} + +.fa-crosshairs:before { + content: "\f05b"; +} + +.fa-times-circle-o:before { + content: "\f05c"; +} + +.fa-check-circle-o:before { + content: "\f05d"; +} + +.fa-ban:before { + content: "\f05e"; +} + +.fa-arrow-left:before { + content: "\f060"; +} + +.fa-arrow-right:before { + content: "\f061"; +} + +.fa-arrow-up:before { + content: "\f062"; +} + +.fa-arrow-down:before { + content: "\f063"; +} + +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} + +.fa-expand:before { + content: "\f065"; +} + +.fa-compress:before { + content: "\f066"; +} + +.fa-plus:before { + content: "\f067"; +} + +.fa-minus:before { + content: "\f068"; +} + +.fa-asterisk:before { + content: "\f069"; +} + +.fa-exclamation-circle:before { + content: "\f06a"; +} + +.fa-gift:before { + content: "\f06b"; +} + +.fa-leaf:before { + content: "\f06c"; +} + +.fa-fire:before { + content: "\f06d"; +} + +.fa-eye:before { + content: "\f06e"; +} + +.fa-eye-slash:before { + content: "\f070"; +} + +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} + +.fa-plane:before { + content: "\f072"; +} + +.fa-calendar:before { + content: "\f073"; +} + +.fa-random:before { + content: "\f074"; +} + +.fa-comment:before { + content: "\f075"; +} + +.fa-magnet:before { + content: "\f076"; +} + +.fa-chevron-up:before { + content: "\f077"; +} + +.fa-chevron-down:before { + content: "\f078"; +} + +.fa-retweet:before { + content: "\f079"; +} + +.fa-shopping-cart:before { + content: "\f07a"; +} + +.fa-folder:before { + content: "\f07b"; +} + +.fa-folder-open:before { + content: "\f07c"; +} + +.fa-arrows-v:before { + content: "\f07d"; +} + +.fa-arrows-h:before { + content: "\f07e"; +} + +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} + +.fa-twitter-square:before { + content: "\f081"; +} + +.fa-facebook-square:before { + content: "\f082"; +} + +.fa-camera-retro:before { + content: "\f083"; +} + +.fa-key:before { + content: "\f084"; +} + +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} + +.fa-comments:before { + content: "\f086"; +} + +.fa-thumbs-o-up:before { + content: "\f087"; +} + +.fa-thumbs-o-down:before { + content: "\f088"; +} + +.fa-star-half:before { + content: "\f089"; +} + +.fa-heart-o:before { + content: "\f08a"; +} + +.fa-sign-out:before { + content: "\f08b"; +} + +.fa-linkedin-square:before { + content: "\f08c"; +} + +.fa-thumb-tack:before { + content: "\f08d"; +} + +.fa-external-link:before { + content: "\f08e"; +} + +.fa-sign-in:before { + content: "\f090"; +} + +.fa-trophy:before { + content: "\f091"; +} + +.fa-github-square:before { + content: "\f092"; +} + +.fa-upload:before { + content: "\f093"; +} + +.fa-lemon-o:before { + content: "\f094"; +} + +.fa-phone:before { + content: "\f095"; +} + +.fa-square-o:before { + content: "\f096"; +} + +.fa-bookmark-o:before { + content: "\f097"; +} + +.fa-phone-square:before { + content: "\f098"; +} + +.fa-twitter:before { + content: "\f099"; +} + +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} + +.fa-github:before { + content: "\f09b"; +} + +.fa-unlock:before { + content: "\f09c"; +} + +.fa-credit-card:before { + content: "\f09d"; +} + +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} + +.fa-hdd-o:before { + content: "\f0a0"; +} + +.fa-bullhorn:before { + content: "\f0a1"; +} + +.fa-bell:before { + content: "\f0f3"; +} + +.fa-certificate:before { + content: "\f0a3"; +} + +.fa-hand-o-right:before { + content: "\f0a4"; +} + +.fa-hand-o-left:before { + content: "\f0a5"; +} + +.fa-hand-o-up:before { + content: "\f0a6"; +} + +.fa-hand-o-down:before { + content: "\f0a7"; +} + +.fa-arrow-circle-left:before { + content: "\f0a8"; +} + +.fa-arrow-circle-right:before { + content: "\f0a9"; +} + +.fa-arrow-circle-up:before { + content: "\f0aa"; +} + +.fa-arrow-circle-down:before { + content: "\f0ab"; +} + +.fa-globe:before { + content: "\f0ac"; +} + +.fa-wrench:before { + content: "\f0ad"; +} + +.fa-tasks:before { + content: "\f0ae"; +} + +.fa-filter:before { + content: "\f0b0"; +} + +.fa-briefcase:before { + content: "\f0b1"; +} + +.fa-arrows-alt:before { + content: "\f0b2"; +} + +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} + +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} + +.fa-cloud:before { + content: "\f0c2"; +} + +.fa-flask:before { + content: "\f0c3"; +} + +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} + +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} + +.fa-paperclip:before { + content: "\f0c6"; +} + +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} + +.fa-square:before { + content: "\f0c8"; +} + +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} + +.fa-list-ul:before { + content: "\f0ca"; +} + +.fa-list-ol:before { + content: "\f0cb"; +} + +.fa-strikethrough:before { + content: "\f0cc"; +} + +.fa-underline:before { + content: "\f0cd"; +} + +.fa-table:before { + content: "\f0ce"; +} + +.fa-magic:before { + content: "\f0d0"; +} + +.fa-truck:before { + content: "\f0d1"; +} + +.fa-pinterest:before { + content: "\f0d2"; +} + +.fa-pinterest-square:before { + content: "\f0d3"; +} + +.fa-google-plus-square:before { + content: "\f0d4"; +} + +.fa-google-plus:before { + content: "\f0d5"; +} + +.fa-money:before { + content: "\f0d6"; +} + +.fa-caret-down:before { + content: "\f0d7"; +} + +.fa-caret-up:before { + content: "\f0d8"; +} + +.fa-caret-left:before { + content: "\f0d9"; +} + +.fa-caret-right:before { + content: "\f0da"; +} + +.fa-columns:before { + content: "\f0db"; +} + +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} + +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} + +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} + +.fa-envelope:before { + content: "\f0e0"; +} + +.fa-linkedin:before { + content: "\f0e1"; +} + +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} + +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} + +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} + +.fa-comment-o:before { + content: "\f0e5"; +} + +.fa-comments-o:before { + content: "\f0e6"; +} + +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} + +.fa-sitemap:before { + content: "\f0e8"; +} + +.fa-umbrella:before { + content: "\f0e9"; +} + +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} + +.fa-lightbulb-o:before { + content: "\f0eb"; +} + +.fa-exchange:before { + content: "\f0ec"; +} + +.fa-cloud-download:before { + content: "\f0ed"; +} + +.fa-cloud-upload:before { + content: "\f0ee"; +} + +.fa-user-md:before { + content: "\f0f0"; +} + +.fa-stethoscope:before { + content: "\f0f1"; +} + +.fa-suitcase:before { + content: "\f0f2"; +} + +.fa-bell-o:before { + content: "\f0a2"; +} + +.fa-coffee:before { + content: "\f0f4"; +} + +.fa-cutlery:before { + content: "\f0f5"; +} + +.fa-file-text-o:before { + content: "\f0f6"; +} + +.fa-building-o:before { + content: "\f0f7"; +} + +.fa-hospital-o:before { + content: "\f0f8"; +} + +.fa-ambulance:before { + content: "\f0f9"; +} + +.fa-medkit:before { + content: "\f0fa"; +} + +.fa-fighter-jet:before { + content: "\f0fb"; +} + +.fa-beer:before { + content: "\f0fc"; +} + +.fa-h-square:before { + content: "\f0fd"; +} + +.fa-plus-square:before { + content: "\f0fe"; +} + +.fa-angle-double-left:before { + content: "\f100"; +} + +.fa-angle-double-right:before { + content: "\f101"; +} + +.fa-angle-double-up:before { + content: "\f102"; +} + +.fa-angle-double-down:before { + content: "\f103"; +} + +.fa-angle-left:before { + content: "\f104"; +} + +.fa-angle-right:before { + content: "\f105"; +} + +.fa-angle-up:before { + content: "\f106"; +} + +.fa-angle-down:before { + content: "\f107"; +} + +.fa-desktop:before { + content: "\f108"; +} + +.fa-laptop:before { + content: "\f109"; +} + +.fa-tablet:before { + content: "\f10a"; +} + +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} + +.fa-circle-o:before { + content: "\f10c"; +} + +.fa-quote-left:before { + content: "\f10d"; +} + +.fa-quote-right:before { + content: "\f10e"; +} + +.fa-spinner:before { + content: "\f110"; +} + +.fa-circle:before { + content: "\f111"; +} + +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} + +.fa-github-alt:before { + content: "\f113"; +} + +.fa-folder-o:before { + content: "\f114"; +} + +.fa-folder-open-o:before { + content: "\f115"; +} + +.fa-smile-o:before { + content: "\f118"; +} + +.fa-frown-o:before { + content: "\f119"; +} + +.fa-meh-o:before { + content: "\f11a"; +} + +.fa-gamepad:before { + content: "\f11b"; +} + +.fa-keyboard-o:before { + content: "\f11c"; +} + +.fa-flag-o:before { + content: "\f11d"; +} + +.fa-flag-checkered:before { + content: "\f11e"; +} + +.fa-terminal:before { + content: "\f120"; +} + +.fa-code:before { + content: "\f121"; +} + +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} + +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} + +.fa-location-arrow:before { + content: "\f124"; +} + +.fa-crop:before { + content: "\f125"; +} + +.fa-code-fork:before { + content: "\f126"; +} + +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} + +.fa-question:before { + content: "\f128"; +} + +.fa-info:before { + content: "\f129"; +} + +.fa-exclamation:before { + content: "\f12a"; +} + +.fa-superscript:before { + content: "\f12b"; +} + +.fa-subscript:before { + content: "\f12c"; +} + +.fa-eraser:before { + content: "\f12d"; +} + +.fa-puzzle-piece:before { + content: "\f12e"; +} + +.fa-microphone:before { + content: "\f130"; +} + +.fa-microphone-slash:before { + content: "\f131"; +} + +.fa-shield:before { + content: "\f132"; +} + +.fa-calendar-o:before { + content: "\f133"; +} + +.fa-fire-extinguisher:before { + content: "\f134"; +} + +.fa-rocket:before { + content: "\f135"; +} + +.fa-maxcdn:before { + content: "\f136"; +} + +.fa-chevron-circle-left:before { + content: "\f137"; +} + +.fa-chevron-circle-right:before { + content: "\f138"; +} + +.fa-chevron-circle-up:before { + content: "\f139"; +} + +.fa-chevron-circle-down:before { + content: "\f13a"; +} + +.fa-html5:before { + content: "\f13b"; +} + +.fa-css3:before { + content: "\f13c"; +} + +.fa-anchor:before { + content: "\f13d"; +} + +.fa-unlock-alt:before { + content: "\f13e"; +} + +.fa-bullseye:before { + content: "\f140"; +} + +.fa-ellipsis-h:before { + content: "\f141"; +} + +.fa-ellipsis-v:before { + content: "\f142"; +} + +.fa-rss-square:before { + content: "\f143"; +} + +.fa-play-circle:before { + content: "\f144"; +} + +.fa-ticket:before { + content: "\f145"; +} + +.fa-minus-square:before { + content: "\f146"; +} + +.fa-minus-square-o:before { + content: "\f147"; +} + +.fa-level-up:before { + content: "\f148"; +} + +.fa-level-down:before { + content: "\f149"; +} + +.fa-check-square:before { + content: "\f14a"; +} + +.fa-pencil-square:before { + content: "\f14b"; +} + +.fa-external-link-square:before { + content: "\f14c"; +} + +.fa-share-square:before { + content: "\f14d"; +} + +.fa-compass:before { + content: "\f14e"; +} + +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} + +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} + +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} + +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} + +.fa-gbp:before { + content: "\f154"; +} + +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} + +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} + +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} + +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} + +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} + +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} + +.fa-file:before { + content: "\f15b"; +} + +.fa-file-text:before { + content: "\f15c"; +} + +.fa-sort-alpha-asc:before { + content: "\f15d"; +} + +.fa-sort-alpha-desc:before { + content: "\f15e"; +} + +.fa-sort-amount-asc:before { + content: "\f160"; +} + +.fa-sort-amount-desc:before { + content: "\f161"; +} + +.fa-sort-numeric-asc:before { + content: "\f162"; +} + +.fa-sort-numeric-desc:before { + content: "\f163"; +} + +.fa-thumbs-up:before { + content: "\f164"; +} + +.fa-thumbs-down:before { + content: "\f165"; +} + +.fa-youtube-square:before { + content: "\f166"; +} + +.fa-youtube:before { + content: "\f167"; +} + +.fa-xing:before { + content: "\f168"; +} + +.fa-xing-square:before { + content: "\f169"; +} + +.fa-youtube-play:before { + content: "\f16a"; +} + +.fa-dropbox:before { + content: "\f16b"; +} + +.fa-stack-overflow:before { + content: "\f16c"; +} + +.fa-instagram:before { + content: "\f16d"; +} + +.fa-flickr:before { + content: "\f16e"; +} + +.fa-adn:before { + content: "\f170"; +} + +.fa-bitbucket:before { + content: "\f171"; +} + +.fa-bitbucket-square:before { + content: "\f172"; +} + +.fa-tumblr:before { + content: "\f173"; +} + +.fa-tumblr-square:before { + content: "\f174"; +} + +.fa-long-arrow-down:before { + content: "\f175"; +} + +.fa-long-arrow-up:before { + content: "\f176"; +} + +.fa-long-arrow-left:before { + content: "\f177"; +} + +.fa-long-arrow-right:before { + content: "\f178"; +} + +.fa-apple:before { + content: "\f179"; +} + +.fa-windows:before { + content: "\f17a"; +} + +.fa-android:before { + content: "\f17b"; +} + +.fa-linux:before { + content: "\f17c"; +} + +.fa-dribbble:before { + content: "\f17d"; +} + +.fa-skype:before { + content: "\f17e"; +} + +.fa-foursquare:before { + content: "\f180"; +} + +.fa-trello:before { + content: "\f181"; +} + +.fa-female:before { + content: "\f182"; +} + +.fa-male:before { + content: "\f183"; +} + +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} + +.fa-sun-o:before { + content: "\f185"; +} + +.fa-moon-o:before { + content: "\f186"; +} + +.fa-archive:before { + content: "\f187"; +} + +.fa-bug:before { + content: "\f188"; +} + +.fa-vk:before { + content: "\f189"; +} + +.fa-weibo:before { + content: "\f18a"; +} + +.fa-renren:before { + content: "\f18b"; +} + +.fa-pagelines:before { + content: "\f18c"; +} + +.fa-stack-exchange:before { + content: "\f18d"; +} + +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} + +.fa-arrow-circle-o-left:before { + content: "\f190"; +} + +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} + +.fa-dot-circle-o:before { + content: "\f192"; +} + +.fa-wheelchair:before { + content: "\f193"; +} + +.fa-vimeo-square:before { + content: "\f194"; +} + +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} + +.fa-plus-square-o:before { + content: "\f196"; +} + +.fa-space-shuttle:before { + content: "\f197"; +} + +.fa-slack:before { + content: "\f198"; +} + +.fa-envelope-square:before { + content: "\f199"; +} + +.fa-wordpress:before { + content: "\f19a"; +} + +.fa-openid:before { + content: "\f19b"; +} + +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} + +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} + +.fa-yahoo:before { + content: "\f19e"; +} + +.fa-google:before { + content: "\f1a0"; +} + +.fa-reddit:before { + content: "\f1a1"; +} + +.fa-reddit-square:before { + content: "\f1a2"; +} + +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} + +.fa-stumbleupon:before { + content: "\f1a4"; +} + +.fa-delicious:before { + content: "\f1a5"; +} + +.fa-digg:before { + content: "\f1a6"; +} + +.fa-pied-piper-pp:before { + content: "\f1a7"; +} + +.fa-pied-piper-alt:before { + content: "\f1a8"; +} + +.fa-drupal:before { + content: "\f1a9"; +} + +.fa-joomla:before { + content: "\f1aa"; +} + +.fa-language:before { + content: "\f1ab"; +} + +.fa-fax:before { + content: "\f1ac"; +} + +.fa-building:before { + content: "\f1ad"; +} + +.fa-child:before { + content: "\f1ae"; +} + +.fa-paw:before { + content: "\f1b0"; +} + +.fa-spoon:before { + content: "\f1b1"; +} + +.fa-cube:before { + content: "\f1b2"; +} + +.fa-cubes:before { + content: "\f1b3"; +} + +.fa-behance:before { + content: "\f1b4"; +} + +.fa-behance-square:before { + content: "\f1b5"; +} + +.fa-steam:before { + content: "\f1b6"; +} + +.fa-steam-square:before { + content: "\f1b7"; +} + +.fa-recycle:before { + content: "\f1b8"; +} + +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} + +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} + +.fa-tree:before { + content: "\f1bb"; +} + +.fa-spotify:before { + content: "\f1bc"; +} + +.fa-deviantart:before { + content: "\f1bd"; +} + +.fa-soundcloud:before { + content: "\f1be"; +} + +.fa-database:before { + content: "\f1c0"; +} + +.fa-file-pdf-o:before { + content: "\f1c1"; +} + +.fa-file-word-o:before { + content: "\f1c2"; +} + +.fa-file-excel-o:before { + content: "\f1c3"; +} + +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} + +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} + +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} + +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} + +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} + +.fa-file-code-o:before { + content: "\f1c9"; +} + +.fa-vine:before { + content: "\f1ca"; +} + +.fa-codepen:before { + content: "\f1cb"; +} + +.fa-jsfiddle:before { + content: "\f1cc"; +} + +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} + +.fa-circle-o-notch:before { + content: "\f1ce"; +} + +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} + +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} + +.fa-git-square:before { + content: "\f1d2"; +} + +.fa-git:before { + content: "\f1d3"; +} + +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} + +.fa-tencent-weibo:before { + content: "\f1d5"; +} + +.fa-qq:before { + content: "\f1d6"; +} + +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} + +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} + +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} + +.fa-history:before { + content: "\f1da"; +} + +.fa-circle-thin:before { + content: "\f1db"; +} + +.fa-header:before { + content: "\f1dc"; +} + +.fa-paragraph:before { + content: "\f1dd"; +} + +.fa-sliders:before { + content: "\f1de"; +} + +.fa-share-alt:before { + content: "\f1e0"; +} + +.fa-share-alt-square:before { + content: "\f1e1"; +} + +.fa-bomb:before { + content: "\f1e2"; +} + +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} + +.fa-tty:before { + content: "\f1e4"; +} + +.fa-binoculars:before { + content: "\f1e5"; +} + +.fa-plug:before { + content: "\f1e6"; +} + +.fa-slideshare:before { + content: "\f1e7"; +} + +.fa-twitch:before { + content: "\f1e8"; +} + +.fa-yelp:before { + content: "\f1e9"; +} + +.fa-newspaper-o:before { + content: "\f1ea"; +} + +.fa-wifi:before { + content: "\f1eb"; +} + +.fa-calculator:before { + content: "\f1ec"; +} + +.fa-paypal:before { + content: "\f1ed"; +} + +.fa-google-wallet:before { + content: "\f1ee"; +} + +.fa-cc-visa:before { + content: "\f1f0"; +} + +.fa-cc-mastercard:before { + content: "\f1f1"; +} + +.fa-cc-discover:before { + content: "\f1f2"; +} + +.fa-cc-amex:before { + content: "\f1f3"; +} + +.fa-cc-paypal:before { + content: "\f1f4"; +} + +.fa-cc-stripe:before { + content: "\f1f5"; +} + +.fa-bell-slash:before { + content: "\f1f6"; +} + +.fa-bell-slash-o:before { + content: "\f1f7"; +} + +.fa-trash:before { + content: "\f1f8"; +} + +.fa-copyright:before { + content: "\f1f9"; +} + +.fa-at:before { + content: "\f1fa"; +} + +.fa-eyedropper:before { + content: "\f1fb"; +} + +.fa-paint-brush:before { + content: "\f1fc"; +} + +.fa-birthday-cake:before { + content: "\f1fd"; +} + +.fa-area-chart:before { + content: "\f1fe"; +} + +.fa-pie-chart:before { + content: "\f200"; +} + +.fa-line-chart:before { + content: "\f201"; +} + +.fa-lastfm:before { + content: "\f202"; +} + +.fa-lastfm-square:before { + content: "\f203"; +} + +.fa-toggle-off:before { + content: "\f204"; +} + +.fa-toggle-on:before { + content: "\f205"; +} + +.fa-bicycle:before { + content: "\f206"; +} + +.fa-bus:before { + content: "\f207"; +} + +.fa-ioxhost:before { + content: "\f208"; +} + +.fa-angellist:before { + content: "\f209"; +} + +.fa-cc:before { + content: "\f20a"; +} + +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} + +.fa-meanpath:before { + content: "\f20c"; +} + +.fa-buysellads:before { + content: "\f20d"; +} + +.fa-connectdevelop:before { + content: "\f20e"; +} + +.fa-dashcube:before { + content: "\f210"; +} + +.fa-forumbee:before { + content: "\f211"; +} + +.fa-leanpub:before { + content: "\f212"; +} + +.fa-sellsy:before { + content: "\f213"; +} + +.fa-shirtsinbulk:before { + content: "\f214"; +} + +.fa-simplybuilt:before { + content: "\f215"; +} + +.fa-skyatlas:before { + content: "\f216"; +} + +.fa-cart-plus:before { + content: "\f217"; +} + +.fa-cart-arrow-down:before { + content: "\f218"; +} + +.fa-diamond:before { + content: "\f219"; +} + +.fa-ship:before { + content: "\f21a"; +} + +.fa-user-secret:before { + content: "\f21b"; +} + +.fa-motorcycle:before { + content: "\f21c"; +} + +.fa-street-view:before { + content: "\f21d"; +} + +.fa-heartbeat:before { + content: "\f21e"; +} + +.fa-venus:before { + content: "\f221"; +} + +.fa-mars:before { + content: "\f222"; +} + +.fa-mercury:before { + content: "\f223"; +} + +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} + +.fa-transgender-alt:before { + content: "\f225"; +} + +.fa-venus-double:before { + content: "\f226"; +} + +.fa-mars-double:before { + content: "\f227"; +} + +.fa-venus-mars:before { + content: "\f228"; +} + +.fa-mars-stroke:before { + content: "\f229"; +} + +.fa-mars-stroke-v:before { + content: "\f22a"; +} + +.fa-mars-stroke-h:before { + content: "\f22b"; +} + +.fa-neuter:before { + content: "\f22c"; +} + +.fa-genderless:before { + content: "\f22d"; +} + +.fa-facebook-official:before { + content: "\f230"; +} + +.fa-pinterest-p:before { + content: "\f231"; +} + +.fa-whatsapp:before { + content: "\f232"; +} + +.fa-server:before { + content: "\f233"; +} + +.fa-user-plus:before { + content: "\f234"; +} + +.fa-user-times:before { + content: "\f235"; +} + +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} + +.fa-viacoin:before { + content: "\f237"; +} + +.fa-train:before { + content: "\f238"; +} + +.fa-subway:before { + content: "\f239"; +} + +.fa-medium:before { + content: "\f23a"; +} + +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} + +.fa-optin-monster:before { + content: "\f23c"; +} + +.fa-opencart:before { + content: "\f23d"; +} + +.fa-expeditedssl:before { + content: "\f23e"; +} + +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} + +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} + +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} + +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} + +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} + +.fa-mouse-pointer:before { + content: "\f245"; +} + +.fa-i-cursor:before { + content: "\f246"; +} + +.fa-object-group:before { + content: "\f247"; +} + +.fa-object-ungroup:before { + content: "\f248"; +} + +.fa-sticky-note:before { + content: "\f249"; +} + +.fa-sticky-note-o:before { + content: "\f24a"; +} + +.fa-cc-jcb:before { + content: "\f24b"; +} + +.fa-cc-diners-club:before { + content: "\f24c"; +} + +.fa-clone:before { + content: "\f24d"; +} + +.fa-balance-scale:before { + content: "\f24e"; +} + +.fa-hourglass-o:before { + content: "\f250"; +} + +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} + +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} + +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} + +.fa-hourglass:before { + content: "\f254"; +} + +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} + +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} + +.fa-hand-scissors-o:before { + content: "\f257"; +} + +.fa-hand-lizard-o:before { + content: "\f258"; +} + +.fa-hand-spock-o:before { + content: "\f259"; +} + +.fa-hand-pointer-o:before { + content: "\f25a"; +} + +.fa-hand-peace-o:before { + content: "\f25b"; +} + +.fa-trademark:before { + content: "\f25c"; +} + +.fa-registered:before { + content: "\f25d"; +} + +.fa-creative-commons:before { + content: "\f25e"; +} + +.fa-gg:before { + content: "\f260"; +} + +.fa-gg-circle:before { + content: "\f261"; +} + +.fa-tripadvisor:before { + content: "\f262"; +} + +.fa-odnoklassniki:before { + content: "\f263"; +} + +.fa-odnoklassniki-square:before { + content: "\f264"; +} + +.fa-get-pocket:before { + content: "\f265"; +} + +.fa-wikipedia-w:before { + content: "\f266"; +} + +.fa-safari:before { + content: "\f267"; +} + +.fa-chrome:before { + content: "\f268"; +} + +.fa-firefox:before { + content: "\f269"; +} + +.fa-opera:before { + content: "\f26a"; +} + +.fa-internet-explorer:before { + content: "\f26b"; +} + +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} + +.fa-contao:before { + content: "\f26d"; +} + +.fa-500px:before { + content: "\f26e"; +} + +.fa-amazon:before { + content: "\f270"; +} + +.fa-calendar-plus-o:before { + content: "\f271"; +} + +.fa-calendar-minus-o:before { + content: "\f272"; +} + +.fa-calendar-times-o:before { + content: "\f273"; +} + +.fa-calendar-check-o:before { + content: "\f274"; +} + +.fa-industry:before { + content: "\f275"; +} + +.fa-map-pin:before { + content: "\f276"; +} + +.fa-map-signs:before { + content: "\f277"; +} + +.fa-map-o:before { + content: "\f278"; +} + +.fa-map:before { + content: "\f279"; +} + +.fa-commenting:before { + content: "\f27a"; +} + +.fa-commenting-o:before { + content: "\f27b"; +} + +.fa-houzz:before { + content: "\f27c"; +} + +.fa-vimeo:before { + content: "\f27d"; +} + +.fa-black-tie:before { + content: "\f27e"; +} + +.fa-fonticons:before { + content: "\f280"; +} + +.fa-reddit-alien:before { + content: "\f281"; +} + +.fa-edge:before { + content: "\f282"; +} + +.fa-credit-card-alt:before { + content: "\f283"; +} + +.fa-codiepie:before { + content: "\f284"; +} + +.fa-modx:before { + content: "\f285"; +} + +.fa-fort-awesome:before { + content: "\f286"; +} + +.fa-usb:before { + content: "\f287"; +} + +.fa-product-hunt:before { + content: "\f288"; +} + +.fa-mixcloud:before { + content: "\f289"; +} + +.fa-scribd:before { + content: "\f28a"; +} + +.fa-pause-circle:before { + content: "\f28b"; +} + +.fa-pause-circle-o:before { + content: "\f28c"; +} + +.fa-stop-circle:before { + content: "\f28d"; +} + +.fa-stop-circle-o:before { + content: "\f28e"; +} + +.fa-shopping-bag:before { + content: "\f290"; +} + +.fa-shopping-basket:before { + content: "\f291"; +} + +.fa-hashtag:before { + content: "\f292"; +} + +.fa-bluetooth:before { + content: "\f293"; +} + +.fa-bluetooth-b:before { + content: "\f294"; +} + +.fa-percent:before { + content: "\f295"; +} + +.fa-gitlab:before { + content: "\f296"; +} + +.fa-wpbeginner:before { + content: "\f297"; +} + +.fa-wpforms:before { + content: "\f298"; +} + +.fa-envira:before { + content: "\f299"; +} + +.fa-universal-access:before { + content: "\f29a"; +} + +.fa-wheelchair-alt:before { + content: "\f29b"; +} + +.fa-question-circle-o:before { + content: "\f29c"; +} + +.fa-blind:before { + content: "\f29d"; +} + +.fa-audio-description:before { + content: "\f29e"; +} + +.fa-volume-control-phone:before { + content: "\f2a0"; +} + +.fa-braille:before { + content: "\f2a1"; +} + +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} + +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} + +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} + +.fa-glide:before { + content: "\f2a5"; +} + +.fa-glide-g:before { + content: "\f2a6"; +} + +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} + +.fa-low-vision:before { + content: "\f2a8"; +} + +.fa-viadeo:before { + content: "\f2a9"; +} + +.fa-viadeo-square:before { + content: "\f2aa"; +} + +.fa-snapchat:before { + content: "\f2ab"; +} + +.fa-snapchat-ghost:before { + content: "\f2ac"; +} + +.fa-snapchat-square:before { + content: "\f2ad"; +} + +.fa-pied-piper:before { + content: "\f2ae"; +} + +.fa-first-order:before { + content: "\f2b0"; +} + +.fa-yoast:before { + content: "\f2b1"; +} + +.fa-themeisle:before { + content: "\f2b2"; +} + +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} + +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} + +.fa-handshake-o:before { + content: "\f2b5"; +} + +.fa-envelope-open:before { + content: "\f2b6"; +} + +.fa-envelope-open-o:before { + content: "\f2b7"; +} + +.fa-linode:before { + content: "\f2b8"; +} + +.fa-address-book:before { + content: "\f2b9"; +} + +.fa-address-book-o:before { + content: "\f2ba"; +} + +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} + +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} + +.fa-user-circle:before { + content: "\f2bd"; +} + +.fa-user-circle-o:before { + content: "\f2be"; +} + +.fa-user-o:before { + content: "\f2c0"; +} + +.fa-id-badge:before { + content: "\f2c1"; +} + +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} + +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} + +.fa-quora:before { + content: "\f2c4"; +} + +.fa-free-code-camp:before { + content: "\f2c5"; +} + +.fa-telegram:before { + content: "\f2c6"; +} + +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} + +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} + +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} + +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} + +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} + +.fa-shower:before { + content: "\f2cc"; +} + +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} + +.fa-podcast:before { + content: "\f2ce"; +} + +.fa-window-maximize:before { + content: "\f2d0"; +} + +.fa-window-minimize:before { + content: "\f2d1"; +} + +.fa-window-restore:before { + content: "\f2d2"; +} + +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} + +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} + +.fa-bandcamp:before { + content: "\f2d5"; +} + +.fa-grav:before { + content: "\f2d6"; +} + +.fa-etsy:before { + content: "\f2d7"; +} + +.fa-imdb:before { + content: "\f2d8"; +} + +.fa-ravelry:before { + content: "\f2d9"; +} + +.fa-eercast:before { + content: "\f2da"; +} + +.fa-microchip:before { + content: "\f2db"; +} + +.fa-snowflake-o:before { + content: "\f2dc"; +} + +.fa-superpowers:before { + content: "\f2dd"; +} + +.fa-wpexplorer:before { + content: "\f2de"; +} + +.fa-meetup:before { + content: "\f2e0"; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +a { + background-color: transparent; +} + +a:active, +a:hover { + outline: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: 700; +} + +dfn { + font-style: italic; +} + +h1 { + margin: .67em 0; + font-size: 2em; +} + +mark { + color: #000; + background: #ff0; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -.5em; +} + +sub { + bottom: -.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 1em 40px; +} + +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +pre { + overflow: auto; +} + +code, +kbd, +pre, +samp { + font-family: monospace,monospace; + font-size: 1em; +} + +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} + +button { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +input { + line-height: normal; +} + +input[type=checkbox], +input[type=radio] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto; +} + +input[type=search] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid silver; +} + +legend { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; +} + +optgroup { + font-weight: 700; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +td, +th { + padding: 0; +} + +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + +@media print { + *, + :after, + :before { + color: #000!important; + text-shadow: none!important; + background: 0 0!important; + -webkit-box-shadow: none!important; + box-shadow: none!important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + + blockquote, + pre { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; + } + + img, + tr { + page-break-inside: avoid; + } + + img { + max-width: 100%!important; + } + + h2, + h3, + p { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } + + .navbar { + display: none; + } + + .btn>.caret, + .dropup>.btn>.caret { + border-top-color: #000!important; + } + + .label { + border: 1px solid #000; + } + + .table { + border-collapse: collapse!important; + } + + .table td, + .table th { + background-color: #fff!important; + } + + .table-bordered td, + .table-bordered th { + border: 1px solid #ddd!important; + } +} + +@font-face { + font-family: 'Glyphicons Halflings'; + src: url(../fonts/glyphicons-halflings-regular.eot); + src: url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg'); +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.glyphicon-asterisk:before { + content: "\002a"; +} + +.glyphicon-plus:before { + content: "\002b"; +} + +.glyphicon-eur:before, +.glyphicon-euro:before { + content: "\20ac"; +} + +.glyphicon-minus:before { + content: "\2212"; +} + +.glyphicon-cloud:before { + content: "\2601"; +} + +.glyphicon-envelope:before { + content: "\2709"; +} + +.glyphicon-pencil:before { + content: "\270f"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-lock:before { + content: "\e033"; +} + +.glyphicon-flag:before { + content: "\e034"; +} + +.glyphicon-headphones:before { + content: "\e035"; +} + +.glyphicon-volume-off:before { + content: "\e036"; +} + +.glyphicon-volume-down:before { + content: "\e037"; +} + +.glyphicon-volume-up:before { + content: "\e038"; +} + +.glyphicon-qrcode:before { + content: "\e039"; +} + +.glyphicon-barcode:before { + content: "\e040"; +} + +.glyphicon-tag:before { + content: "\e041"; +} + +.glyphicon-tags:before { + content: "\e042"; +} + +.glyphicon-book:before { + content: "\e043"; +} + +.glyphicon-bookmark:before { + content: "\e044"; +} + +.glyphicon-print:before { + content: "\e045"; +} + +.glyphicon-camera:before { + content: "\e046"; +} + +.glyphicon-font:before { + content: "\e047"; +} + +.glyphicon-bold:before { + content: "\e048"; +} + +.glyphicon-italic:before { + content: "\e049"; +} + +.glyphicon-text-height:before { + content: "\e050"; +} + +.glyphicon-text-width:before { + content: "\e051"; +} + +.glyphicon-align-left:before { + content: "\e052"; +} + +.glyphicon-align-center:before { + content: "\e053"; +} + +.glyphicon-align-right:before { + content: "\e054"; +} + +.glyphicon-align-justify:before { + content: "\e055"; +} + +.glyphicon-list:before { + content: "\e056"; +} + +.glyphicon-indent-left:before { + content: "\e057"; +} + +.glyphicon-indent-right:before { + content: "\e058"; +} + +.glyphicon-facetime-video:before { + content: "\e059"; +} + +.glyphicon-picture:before { + content: "\e060"; +} + +.glyphicon-map-marker:before { + content: "\e062"; +} + +.glyphicon-adjust:before { + content: "\e063"; +} + +.glyphicon-tint:before { + content: "\e064"; +} + +.glyphicon-edit:before { + content: "\e065"; +} + +.glyphicon-share:before { + content: "\e066"; +} + +.glyphicon-check:before { + content: "\e067"; +} + +.glyphicon-move:before { + content: "\e068"; +} + +.glyphicon-step-backward:before { + content: "\e069"; +} + +.glyphicon-fast-backward:before { + content: "\e070"; +} + +.glyphicon-backward:before { + content: "\e071"; +} + +.glyphicon-play:before { + content: "\e072"; +} + +.glyphicon-pause:before { + content: "\e073"; +} + +.glyphicon-stop:before { + content: "\e074"; +} + +.glyphicon-forward:before { + content: "\e075"; +} + +.glyphicon-fast-forward:before { + content: "\e076"; +} + +.glyphicon-step-forward:before { + content: "\e077"; +} + +.glyphicon-eject:before { + content: "\e078"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-plus-sign:before { + content: "\e081"; +} + +.glyphicon-minus-sign:before { + content: "\e082"; +} + +.glyphicon-remove-sign:before { + content: "\e083"; +} + +.glyphicon-ok-sign:before { + content: "\e084"; +} + +.glyphicon-question-sign:before { + content: "\e085"; +} + +.glyphicon-info-sign:before { + content: "\e086"; +} + +.glyphicon-screenshot:before { + content: "\e087"; +} + +.glyphicon-remove-circle:before { + content: "\e088"; +} + +.glyphicon-ok-circle:before { + content: "\e089"; +} + +.glyphicon-ban-circle:before { + content: "\e090"; +} + +.glyphicon-arrow-left:before { + content: "\e091"; +} + +.glyphicon-arrow-right:before { + content: "\e092"; +} + +.glyphicon-arrow-up:before { + content: "\e093"; +} + +.glyphicon-arrow-down:before { + content: "\e094"; +} + +.glyphicon-share-alt:before { + content: "\e095"; +} + +.glyphicon-resize-full:before { + content: "\e096"; +} + +.glyphicon-resize-small:before { + content: "\e097"; +} + +.glyphicon-exclamation-sign:before { + content: "\e101"; +} + +.glyphicon-gift:before { + content: "\e102"; +} + +.glyphicon-leaf:before { + content: "\e103"; +} + +.glyphicon-fire:before { + content: "\e104"; +} + +.glyphicon-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.glyphicon-calendar:before { + content: "\e109"; +} + +.glyphicon-random:before { + content: "\e110"; +} + +.glyphicon-comment:before { + content: "\e111"; +} + +.glyphicon-magnet:before { + content: "\e112"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-retweet:before { + content: "\e115"; +} + +.glyphicon-shopping-cart:before { + content: "\e116"; +} + +.glyphicon-folder-close:before { + content: "\e117"; +} + +.glyphicon-folder-open:before { + content: "\e118"; +} + +.glyphicon-resize-vertical:before { + content: "\e119"; +} + +.glyphicon-resize-horizontal:before { + content: "\e120"; +} + +.glyphicon-hdd:before { + content: "\e121"; +} + +.glyphicon-bullhorn:before { + content: "\e122"; +} + +.glyphicon-bell:before { + content: "\e123"; +} + +.glyphicon-certificate:before { + content: "\e124"; +} + +.glyphicon-thumbs-up:before { + content: "\e125"; +} + +.glyphicon-thumbs-down:before { + content: "\e126"; +} + +.glyphicon-hand-right:before { + content: "\e127"; +} + +.glyphicon-hand-left:before { + content: "\e128"; +} + +.glyphicon-hand-up:before { + content: "\e129"; +} + +.glyphicon-hand-down:before { + content: "\e130"; +} + +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} + +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} + +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} + +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} + +.glyphicon-globe:before { + content: "\e135"; +} + +.glyphicon-wrench:before { + content: "\e136"; +} + +.glyphicon-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-briefcase:before { + content: "\e139"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-paperclip:before { + content: "\e142"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-pushpin:before { + content: "\e146"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.glyphicon-cd:before { + content: "\e201"; +} + +.glyphicon-save-file:before { + content: "\e202"; +} + +.glyphicon-open-file:before { + content: "\e203"; +} + +.glyphicon-level-up:before { + content: "\e204"; +} + +.glyphicon-copy:before { + content: "\e205"; +} + +.glyphicon-paste:before { + content: "\e206"; +} + +.glyphicon-alert:before { + content: "\e209"; +} + +.glyphicon-equalizer:before { + content: "\e210"; +} + +.glyphicon-king:before { + content: "\e211"; +} + +.glyphicon-queen:before { + content: "\e212"; +} + +.glyphicon-pawn:before { + content: "\e213"; +} + +.glyphicon-bishop:before { + content: "\e214"; +} + +.glyphicon-knight:before { + content: "\e215"; +} + +.glyphicon-baby-formula:before { + content: "\e216"; +} + +.glyphicon-tent:before { + content: "\26fa"; +} + +.glyphicon-blackboard:before { + content: "\e218"; +} + +.glyphicon-bed:before { + content: "\e219"; +} + +.glyphicon-apple:before { + content: "\f8ff"; +} + +.glyphicon-erase:before { + content: "\e221"; +} + +.glyphicon-hourglass:before { + content: "\231b"; +} + +.glyphicon-lamp:before { + content: "\e223"; +} + +.glyphicon-duplicate:before { + content: "\e224"; +} + +.glyphicon-piggy-bank:before { + content: "\e225"; +} + +.glyphicon-scissors:before { + content: "\e226"; +} + +.glyphicon-bitcoin:before { + content: "\e227"; +} + +.glyphicon-btc:before { + content: "\e227"; +} + +.glyphicon-xbt:before { + content: "\e227"; +} + +.glyphicon-yen:before { + content: "\00a5"; +} + +.glyphicon-jpy:before { + content: "\00a5"; +} + +.glyphicon-ruble:before { + content: "\20bd"; +} + +.glyphicon-rub:before { + content: "\20bd"; +} + +.glyphicon-scale:before { + content: "\e230"; +} + +.glyphicon-ice-lolly:before { + content: "\e231"; +} + +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} + +.glyphicon-education:before { + content: "\e233"; +} + +.glyphicon-option-horizontal:before { + content: "\e234"; +} + +.glyphicon-option-vertical:before { + content: "\e235"; +} + +.glyphicon-menu-hamburger:before { + content: "\e236"; +} + +.glyphicon-modal-window:before { + content: "\e237"; +} + +.glyphicon-oil:before { + content: "\e238"; +} + +.glyphicon-grain:before { + content: "\e239"; +} + +.glyphicon-sunglasses:before { + content: "\e240"; +} + +.glyphicon-text-size:before { + content: "\e241"; +} + +.glyphicon-text-color:before { + content: "\e242"; +} + +.glyphicon-text-background:before { + content: "\e243"; +} + +.glyphicon-object-align-top:before { + content: "\e244"; +} + +.glyphicon-object-align-bottom:before { + content: "\e245"; +} + +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} + +.glyphicon-object-align-left:before { + content: "\e247"; +} + +.glyphicon-object-align-vertical:before { + content: "\e248"; +} + +.glyphicon-object-align-right:before { + content: "\e249"; +} + +.glyphicon-triangle-right:before { + content: "\e250"; +} + +.glyphicon-triangle-left:before { + content: "\e251"; +} + +.glyphicon-triangle-bottom:before { + content: "\e252"; +} + +.glyphicon-triangle-top:before { + content: "\e253"; +} + +.glyphicon-console:before { + content: "\e254"; +} + +.glyphicon-superscript:before { + content: "\e255"; +} + +.glyphicon-subscript:before { + content: "\e256"; +} + +.glyphicon-menu-left:before { + content: "\e257"; +} + +.glyphicon-menu-right:before { + content: "\e258"; +} + +.glyphicon-menu-down:before { + content: "\e259"; +} + +.glyphicon-menu-up:before { + content: "\e260"; +} + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +:after, +:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + +body { + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} + +button, +input, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +a { + color: #337ab7; + text-decoration: none; +} + +a:focus, +a:hover { + color: #23527c; + text-decoration: underline; +} + +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +figure { + margin: 0; +} + +img { + vertical-align: middle; +} + +.carousel-inner>.item>a>img, +.carousel-inner>.item>img, +.img-responsive, +.thumbnail a>img, +.thumbnail>img { + display: block; + max-width: 100%; + height: auto; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +[role=button] { + cursor: pointer; +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} + +.h1 .small, +.h1 small, +.h2 .small, +.h2 small, +.h3 .small, +.h3 small, +.h4 .small, +.h4 small, +.h5 .small, +.h5 small, +.h6 .small, +.h6 small, +h1 .small, +h1 small, +h2 .small, +h2 small, +h3 .small, +h3 small, +h4 .small, +h4 small, +h5 .small, +h5 small, +h6 .small, +h6 small { + font-weight: 400; + line-height: 1; + color: #777; +} + +.h1, +.h2, +.h3, +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +.h1 .small, +.h1 small, +.h2 .small, +.h2 small, +.h3 .small, +.h3 small, +h1 .small, +h1 small, +h2 .small, +h2 small, +h3 .small, +h3 small { + font-size: 65%; +} + +.h4, +.h5, +.h6, +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} + +.h4 .small, +.h4 small, +.h5 .small, +.h5 small, +.h6 .small, +.h6 small, +h4 .small, +h4 small, +h5 .small, +h5 small, +h6 .small, +h6 small { + font-size: 75%; +} + +.h1, +h1 { + font-size: 36px; +} + +.h2, +h2 { + font-size: 30px; +} + +.h3, +h3 { + font-size: 24px; +} + +.h4, +h4 { + font-size: 18px; +} + +.h5, +h5 { + font-size: 14px; +} + +.h6, +h6 { + font-size: 12px; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} + +@media (min-width:768px) { + .lead { + font-size: 21px; + } +} + +.small, +small { + font-size: 85%; +} + +.mark, +mark { + padding: .2em; + background-color: #fcf8e3; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +.text-justify { + text-align: justify; +} + +.text-nowrap { + white-space: nowrap; +} + +.text-lowercase { + text-transform: lowercase; +} + +.text-uppercase { + text-transform: uppercase; +} + +.text-capitalize { + text-transform: capitalize; +} + +.text-muted { + color: #777; +} + +.text-primary { + color: #337ab7; +} + +a.text-primary:focus, +a.text-primary:hover { + color: #286090; +} + +.text-success { + color: #3c763d; +} + +a.text-success:focus, +a.text-success:hover { + color: #2b542c; +} + +.text-info { + color: #31708f; +} + +a.text-info:focus, +a.text-info:hover { + color: #245269; +} + +.text-warning { + color: #8a6d3b; +} + +a.text-warning:focus, +a.text-warning:hover { + color: #66512c; +} + +.text-danger { + color: #a94442; +} + +a.text-danger:focus, +a.text-danger:hover { + color: #843534; +} + +.bg-primary { + color: #fff; + background-color: #337ab7; +} + +a.bg-primary:focus, +a.bg-primary:hover { + background-color: #286090; +} + +.bg-success { + background-color: #dff0d8; +} + +a.bg-success:focus, +a.bg-success:hover { + background-color: #c1e2b3; +} + +.bg-info { + background-color: #d9edf7; +} + +a.bg-info:focus, +a.bg-info:hover { + background-color: #afd9ee; +} + +.bg-warning { + background-color: #fcf8e3; +} + +a.bg-warning:focus, +a.bg-warning:hover { + background-color: #f7ecb5; +} + +.bg-danger { + background-color: #f2dede; +} + +a.bg-danger:focus, +a.bg-danger:hover { + background-color: #e4b9b9; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} + +ol, +ul { + margin-top: 0; + margin-bottom: 10px; +} + +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} + +.list-inline>li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-top: 0; + margin-bottom: 20px; +} + +dd, +dt { + line-height: 1.42857143; +} + +dt { + font-weight: 700; +} + +dd { + margin-left: 0; +} + +@media (min-width:768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + + .dl-horizontal dd { + margin-left: 180px; + } +} + +abbr[data-original-title], +abbr[title] { + cursor: help; + border-bottom: 1px dotted #777; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} + +blockquote ol:last-child, +blockquote p:last-child, +blockquote ul:last-child { + margin-bottom: 0; +} + +blockquote .small, +blockquote footer, +blockquote small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} + +blockquote .small:before, +blockquote footer:before, +blockquote small:before { + content: '\2014 \00A0'; +} + +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} + +.blockquote-reverse .small:before, +.blockquote-reverse footer:before, +.blockquote-reverse small:before, +blockquote.pull-right .small:before, +blockquote.pull-right footer:before, +blockquote.pull-right small:before { + content: ''; +} + +.blockquote-reverse .small:after, +.blockquote-reverse footer:after, +.blockquote-reverse small:after, +blockquote.pull-right .small:after, +blockquote.pull-right footer:after, +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} + +code, +kbd, +pre, +samp { + font-family: Menlo,Monaco,Consolas,"Courier New",monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} + +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; + -webkit-box-shadow: none; + box-shadow: none; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width:768px) { + .container { + width: 750px; + } +} + +@media (min-width:992px) { + .container { + width: 970px; + } +} + +@media (min-width:1200px) { + .container { + width: 1170px; + } +} + +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} + +.col-lg-1, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-md-1, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-sm-1, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-xs-1, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col-xs-1, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9 { + float: left; +} + +.col-xs-12 { + width: 100%; +} + +.col-xs-11 { + width: 91.66666667%; +} + +.col-xs-10 { + width: 83.33333333%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-8 { + width: 66.66666667%; +} + +.col-xs-7 { + width: 58.33333333%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-5 { + width: 41.66666667%; +} + +.col-xs-4 { + width: 33.33333333%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-2 { + width: 16.66666667%; +} + +.col-xs-1 { + width: 8.33333333%; +} + +.col-xs-pull-12 { + right: 100%; +} + +.col-xs-pull-11 { + right: 91.66666667%; +} + +.col-xs-pull-10 { + right: 83.33333333%; +} + +.col-xs-pull-9 { + right: 75%; +} + +.col-xs-pull-8 { + right: 66.66666667%; +} + +.col-xs-pull-7 { + right: 58.33333333%; +} + +.col-xs-pull-6 { + right: 50%; +} + +.col-xs-pull-5 { + right: 41.66666667%; +} + +.col-xs-pull-4 { + right: 33.33333333%; +} + +.col-xs-pull-3 { + right: 25%; +} + +.col-xs-pull-2 { + right: 16.66666667%; +} + +.col-xs-pull-1 { + right: 8.33333333%; +} + +.col-xs-pull-0 { + right: auto; +} + +.col-xs-push-12 { + left: 100%; +} + +.col-xs-push-11 { + left: 91.66666667%; +} + +.col-xs-push-10 { + left: 83.33333333%; +} + +.col-xs-push-9 { + left: 75%; +} + +.col-xs-push-8 { + left: 66.66666667%; +} + +.col-xs-push-7 { + left: 58.33333333%; +} + +.col-xs-push-6 { + left: 50%; +} + +.col-xs-push-5 { + left: 41.66666667%; +} + +.col-xs-push-4 { + left: 33.33333333%; +} + +.col-xs-push-3 { + left: 25%; +} + +.col-xs-push-2 { + left: 16.66666667%; +} + +.col-xs-push-1 { + left: 8.33333333%; +} + +.col-xs-push-0 { + left: auto; +} + +.col-xs-offset-12 { + margin-left: 100%; +} + +.col-xs-offset-11 { + margin-left: 91.66666667%; +} + +.col-xs-offset-10 { + margin-left: 83.33333333%; +} + +.col-xs-offset-9 { + margin-left: 75%; +} + +.col-xs-offset-8 { + margin-left: 66.66666667%; +} + +.col-xs-offset-7 { + margin-left: 58.33333333%; +} + +.col-xs-offset-6 { + margin-left: 50%; +} + +.col-xs-offset-5 { + margin-left: 41.66666667%; +} + +.col-xs-offset-4 { + margin-left: 33.33333333%; +} + +.col-xs-offset-3 { + margin-left: 25%; +} + +.col-xs-offset-2 { + margin-left: 16.66666667%; +} + +.col-xs-offset-1 { + margin-left: 8.33333333%; +} + +.col-xs-offset-0 { + margin-left: 0; +} + +@media (min-width:768px) { + .col-sm-1, + .col-sm-10, + .col-sm-11, + .col-sm-12, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9 { + float: left; + } + + .col-sm-12 { + width: 100%; + } + + .col-sm-11 { + width: 91.66666667%; + } + + .col-sm-10 { + width: 83.33333333%; + } + + .col-sm-9 { + width: 75%; + } + + .col-sm-8 { + width: 66.66666667%; + } + + .col-sm-7 { + width: 58.33333333%; + } + + .col-sm-6 { + width: 50%; + } + + .col-sm-5 { + width: 41.66666667%; + } + + .col-sm-4 { + width: 33.33333333%; + } + + .col-sm-3 { + width: 25%; + } + + .col-sm-2 { + width: 16.66666667%; + } + + .col-sm-1 { + width: 8.33333333%; + } + + .col-sm-pull-12 { + right: 100%; + } + + .col-sm-pull-11 { + right: 91.66666667%; + } + + .col-sm-pull-10 { + right: 83.33333333%; + } + + .col-sm-pull-9 { + right: 75%; + } + + .col-sm-pull-8 { + right: 66.66666667%; + } + + .col-sm-pull-7 { + right: 58.33333333%; + } + + .col-sm-pull-6 { + right: 50%; + } + + .col-sm-pull-5 { + right: 41.66666667%; + } + + .col-sm-pull-4 { + right: 33.33333333%; + } + + .col-sm-pull-3 { + right: 25%; + } + + .col-sm-pull-2 { + right: 16.66666667%; + } + + .col-sm-pull-1 { + right: 8.33333333%; + } + + .col-sm-pull-0 { + right: auto; + } + + .col-sm-push-12 { + left: 100%; + } + + .col-sm-push-11 { + left: 91.66666667%; + } + + .col-sm-push-10 { + left: 83.33333333%; + } + + .col-sm-push-9 { + left: 75%; + } + + .col-sm-push-8 { + left: 66.66666667%; + } + + .col-sm-push-7 { + left: 58.33333333%; + } + + .col-sm-push-6 { + left: 50%; + } + + .col-sm-push-5 { + left: 41.66666667%; + } + + .col-sm-push-4 { + left: 33.33333333%; + } + + .col-sm-push-3 { + left: 25%; + } + + .col-sm-push-2 { + left: 16.66666667%; + } + + .col-sm-push-1 { + left: 8.33333333%; + } + + .col-sm-push-0 { + left: auto; + } + + .col-sm-offset-12 { + margin-left: 100%; + } + + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + + .col-sm-offset-9 { + margin-left: 75%; + } + + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + + .col-sm-offset-6 { + margin-left: 50%; + } + + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + + .col-sm-offset-3 { + margin-left: 25%; + } + + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + + .col-sm-offset-0 { + margin-left: 0; + } +} + +@media (min-width:992px) { + .col-md-1, + .col-md-10, + .col-md-11, + .col-md-12, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9 { + float: left; + } + + .col-md-12 { + width: 100%; + } + + .col-md-11 { + width: 91.66666667%; + } + + .col-md-10 { + width: 83.33333333%; + } + + .col-md-9 { + width: 75%; + } + + .col-md-8 { + width: 66.66666667%; + } + + .col-md-7 { + width: 58.33333333%; + } + + .col-md-6 { + width: 50%; + } + + .col-md-5 { + width: 41.66666667%; + } + + .col-md-4 { + width: 33.33333333%; + } + + .col-md-3 { + width: 25%; + } + + .col-md-2 { + width: 16.66666667%; + } + + .col-md-1 { + width: 8.33333333%; + } + + .col-md-pull-12 { + right: 100%; + } + + .col-md-pull-11 { + right: 91.66666667%; + } + + .col-md-pull-10 { + right: 83.33333333%; + } + + .col-md-pull-9 { + right: 75%; + } + + .col-md-pull-8 { + right: 66.66666667%; + } + + .col-md-pull-7 { + right: 58.33333333%; + } + + .col-md-pull-6 { + right: 50%; + } + + .col-md-pull-5 { + right: 41.66666667%; + } + + .col-md-pull-4 { + right: 33.33333333%; + } + + .col-md-pull-3 { + right: 25%; + } + + .col-md-pull-2 { + right: 16.66666667%; + } + + .col-md-pull-1 { + right: 8.33333333%; + } + + .col-md-pull-0 { + right: auto; + } + + .col-md-push-12 { + left: 100%; + } + + .col-md-push-11 { + left: 91.66666667%; + } + + .col-md-push-10 { + left: 83.33333333%; + } + + .col-md-push-9 { + left: 75%; + } + + .col-md-push-8 { + left: 66.66666667%; + } + + .col-md-push-7 { + left: 58.33333333%; + } + + .col-md-push-6 { + left: 50%; + } + + .col-md-push-5 { + left: 41.66666667%; + } + + .col-md-push-4 { + left: 33.33333333%; + } + + .col-md-push-3 { + left: 25%; + } + + .col-md-push-2 { + left: 16.66666667%; + } + + .col-md-push-1 { + left: 8.33333333%; + } + + .col-md-push-0 { + left: auto; + } + + .col-md-offset-12 { + margin-left: 100%; + } + + .col-md-offset-11 { + margin-left: 91.66666667%; + } + + .col-md-offset-10 { + margin-left: 83.33333333%; + } + + .col-md-offset-9 { + margin-left: 75%; + } + + .col-md-offset-8 { + margin-left: 66.66666667%; + } + + .col-md-offset-7 { + margin-left: 58.33333333%; + } + + .col-md-offset-6 { + margin-left: 50%; + } + + .col-md-offset-5 { + margin-left: 41.66666667%; + } + + .col-md-offset-4 { + margin-left: 33.33333333%; + } + + .col-md-offset-3 { + margin-left: 25%; + } + + .col-md-offset-2 { + margin-left: 16.66666667%; + } + + .col-md-offset-1 { + margin-left: 8.33333333%; + } + + .col-md-offset-0 { + margin-left: 0; + } +} + +@media (min-width:1200px) { + .col-lg-1, + .col-lg-10, + .col-lg-11, + .col-lg-12, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9 { + float: left; + } + + .col-lg-12 { + width: 100%; + } + + .col-lg-11 { + width: 91.66666667%; + } + + .col-lg-10 { + width: 83.33333333%; + } + + .col-lg-9 { + width: 75%; + } + + .col-lg-8 { + width: 66.66666667%; + } + + .col-lg-7 { + width: 58.33333333%; + } + + .col-lg-6 { + width: 50%; + } + + .col-lg-5 { + width: 41.66666667%; + } + + .col-lg-4 { + width: 33.33333333%; + } + + .col-lg-3 { + width: 25%; + } + + .col-lg-2 { + width: 16.66666667%; + } + + .col-lg-1 { + width: 8.33333333%; + } + + .col-lg-pull-12 { + right: 100%; + } + + .col-lg-pull-11 { + right: 91.66666667%; + } + + .col-lg-pull-10 { + right: 83.33333333%; + } + + .col-lg-pull-9 { + right: 75%; + } + + .col-lg-pull-8 { + right: 66.66666667%; + } + + .col-lg-pull-7 { + right: 58.33333333%; + } + + .col-lg-pull-6 { + right: 50%; + } + + .col-lg-pull-5 { + right: 41.66666667%; + } + + .col-lg-pull-4 { + right: 33.33333333%; + } + + .col-lg-pull-3 { + right: 25%; + } + + .col-lg-pull-2 { + right: 16.66666667%; + } + + .col-lg-pull-1 { + right: 8.33333333%; + } + + .col-lg-pull-0 { + right: auto; + } + + .col-lg-push-12 { + left: 100%; + } + + .col-lg-push-11 { + left: 91.66666667%; + } + + .col-lg-push-10 { + left: 83.33333333%; + } + + .col-lg-push-9 { + left: 75%; + } + + .col-lg-push-8 { + left: 66.66666667%; + } + + .col-lg-push-7 { + left: 58.33333333%; + } + + .col-lg-push-6 { + left: 50%; + } + + .col-lg-push-5 { + left: 41.66666667%; + } + + .col-lg-push-4 { + left: 33.33333333%; + } + + .col-lg-push-3 { + left: 25%; + } + + .col-lg-push-2 { + left: 16.66666667%; + } + + .col-lg-push-1 { + left: 8.33333333%; + } + + .col-lg-push-0 { + left: auto; + } + + .col-lg-offset-12 { + margin-left: 100%; + } + + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + + .col-lg-offset-9 { + margin-left: 75%; + } + + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + + .col-lg-offset-6 { + margin-left: 50%; + } + + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + + .col-lg-offset-3 { + margin-left: 25%; + } + + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + + .col-lg-offset-0 { + margin-left: 0; + } +} + +table { + background-color: transparent; +} + +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} + +th { + text-align: left; +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} + +.table>tbody>tr>td, +.table>tbody>tr>th, +.table>tfoot>tr>td, +.table>tfoot>tr>th, +.table>thead>tr>td, +.table>thead>tr>th { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} + +.table>thead>tr>th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} + +.table>caption+thead>tr:first-child>td, +.table>caption+thead>tr:first-child>th, +.table>colgroup+thead>tr:first-child>td, +.table>colgroup+thead>tr:first-child>th, +.table>thead:first-child>tr:first-child>td, +.table>thead:first-child>tr:first-child>th { + border-top: 0; +} + +.table>tbody+tbody { + border-top: 2px solid #ddd; +} + +.table .table { + background-color: #fff; +} + +.table-condensed>tbody>tr>td, +.table-condensed>tbody>tr>th, +.table-condensed>tfoot>tr>td, +.table-condensed>tfoot>tr>th, +.table-condensed>thead>tr>td, +.table-condensed>thead>tr>th { + padding: 5px; +} + +.table-bordered { + border: 1px solid #ddd; +} + +.table-bordered>tbody>tr>td, +.table-bordered>tbody>tr>th, +.table-bordered>tfoot>tr>td, +.table-bordered>tfoot>tr>th, +.table-bordered>thead>tr>td, +.table-bordered>thead>tr>th { + border: 1px solid #ddd; +} + +.table-bordered>thead>tr>td, +.table-bordered>thead>tr>th { + border-bottom-width: 2px; +} + +.table-striped>tbody>tr:nth-of-type(odd) { + background-color: #f9f9f9; +} + +.table-hover>tbody>tr:hover { + background-color: #f5f5f5; +} + +table col[class*=col-] { + position: static; + display: table-column; + float: none; +} + +table td[class*=col-], +table th[class*=col-] { + position: static; + display: table-cell; + float: none; +} + +.table>tbody>tr.active>td, +.table>tbody>tr.active>th, +.table>tbody>tr>td.active, +.table>tbody>tr>th.active, +.table>tfoot>tr.active>td, +.table>tfoot>tr.active>th, +.table>tfoot>tr>td.active, +.table>tfoot>tr>th.active, +.table>thead>tr.active>td, +.table>thead>tr.active>th, +.table>thead>tr>td.active, +.table>thead>tr>th.active { + background-color: #f5f5f5; +} + +.table-hover>tbody>tr.active:hover>td, +.table-hover>tbody>tr.active:hover>th, +.table-hover>tbody>tr:hover>.active, +.table-hover>tbody>tr>td.active:hover, +.table-hover>tbody>tr>th.active:hover { + background-color: #e8e8e8; +} + +.table>tbody>tr.success>td, +.table>tbody>tr.success>th, +.table>tbody>tr>td.success, +.table>tbody>tr>th.success, +.table>tfoot>tr.success>td, +.table>tfoot>tr.success>th, +.table>tfoot>tr>td.success, +.table>tfoot>tr>th.success, +.table>thead>tr.success>td, +.table>thead>tr.success>th, +.table>thead>tr>td.success, +.table>thead>tr>th.success { + background-color: #dff0d8; +} + +.table-hover>tbody>tr.success:hover>td, +.table-hover>tbody>tr.success:hover>th, +.table-hover>tbody>tr:hover>.success, +.table-hover>tbody>tr>td.success:hover, +.table-hover>tbody>tr>th.success:hover { + background-color: #d0e9c6; +} + +.table>tbody>tr.info>td, +.table>tbody>tr.info>th, +.table>tbody>tr>td.info, +.table>tbody>tr>th.info, +.table>tfoot>tr.info>td, +.table>tfoot>tr.info>th, +.table>tfoot>tr>td.info, +.table>tfoot>tr>th.info, +.table>thead>tr.info>td, +.table>thead>tr.info>th, +.table>thead>tr>td.info, +.table>thead>tr>th.info { + background-color: #d9edf7; +} + +.table-hover>tbody>tr.info:hover>td, +.table-hover>tbody>tr.info:hover>th, +.table-hover>tbody>tr:hover>.info, +.table-hover>tbody>tr>td.info:hover, +.table-hover>tbody>tr>th.info:hover { + background-color: #c4e3f3; +} + +.table>tbody>tr.warning>td, +.table>tbody>tr.warning>th, +.table>tbody>tr>td.warning, +.table>tbody>tr>th.warning, +.table>tfoot>tr.warning>td, +.table>tfoot>tr.warning>th, +.table>tfoot>tr>td.warning, +.table>tfoot>tr>th.warning, +.table>thead>tr.warning>td, +.table>thead>tr.warning>th, +.table>thead>tr>td.warning, +.table>thead>tr>th.warning { + background-color: #fcf8e3; +} + +.table-hover>tbody>tr.warning:hover>td, +.table-hover>tbody>tr.warning:hover>th, +.table-hover>tbody>tr:hover>.warning, +.table-hover>tbody>tr>td.warning:hover, +.table-hover>tbody>tr>th.warning:hover { + background-color: #faf2cc; +} + +.table>tbody>tr.danger>td, +.table>tbody>tr.danger>th, +.table>tbody>tr>td.danger, +.table>tbody>tr>th.danger, +.table>tfoot>tr.danger>td, +.table>tfoot>tr.danger>th, +.table>tfoot>tr>td.danger, +.table>tfoot>tr>th.danger, +.table>thead>tr.danger>td, +.table>thead>tr.danger>th, +.table>thead>tr>td.danger, +.table>thead>tr>th.danger { + background-color: #f2dede; +} + +.table-hover>tbody>tr.danger:hover>td, +.table-hover>tbody>tr.danger:hover>th, +.table-hover>tbody>tr:hover>.danger, +.table-hover>tbody>tr>td.danger:hover, +.table-hover>tbody>tr>th.danger:hover { + background-color: #ebcccc; +} + +.table-responsive { + min-height: .01%; + overflow-x: auto; +} + +@media screen and (max-width:767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + + .table-responsive>.table { + margin-bottom: 0; + } + + .table-responsive>.table>tbody>tr>td, + .table-responsive>.table>tbody>tr>th, + .table-responsive>.table>tfoot>tr>td, + .table-responsive>.table>tfoot>tr>th, + .table-responsive>.table>thead>tr>td, + .table-responsive>.table>thead>tr>th { + white-space: nowrap; + } + + .table-responsive>.table-bordered { + border: 0; + } + + .table-responsive>.table-bordered>tbody>tr>td:first-child, + .table-responsive>.table-bordered>tbody>tr>th:first-child, + .table-responsive>.table-bordered>tfoot>tr>td:first-child, + .table-responsive>.table-bordered>tfoot>tr>th:first-child, + .table-responsive>.table-bordered>thead>tr>td:first-child, + .table-responsive>.table-bordered>thead>tr>th:first-child { + border-left: 0; + } + + .table-responsive>.table-bordered>tbody>tr>td:last-child, + .table-responsive>.table-bordered>tbody>tr>th:last-child, + .table-responsive>.table-bordered>tfoot>tr>td:last-child, + .table-responsive>.table-bordered>tfoot>tr>th:last-child, + .table-responsive>.table-bordered>thead>tr>td:last-child, + .table-responsive>.table-bordered>thead>tr>th:last-child { + border-right: 0; + } + + .table-responsive>.table-bordered>tbody>tr:last-child>td, + .table-responsive>.table-bordered>tbody>tr:last-child>th, + .table-responsive>.table-bordered>tfoot>tr:last-child>td, + .table-responsive>.table-bordered>tfoot>tr:last-child>th { + border-bottom: 0; + } +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: 700; +} + +input[type=search] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type=checkbox], +input[type=radio] { + margin: 4px 0 0; + margin-top: 1px\9; + line-height: normal; +} + +input[type=file] { + display: block; +} + +input[type=range] { + display: block; + width: 100%; +} + +select[multiple], +select[size] { + height: auto; +} + +input[type=file]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6); +} + +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #999; +} + +.form-control::-webkit-input-placeholder { + color: #999; +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} + +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} + +textarea.form-control { + height: auto; +} + +input[type=search] { + -webkit-appearance: none; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + input[type=date].form-control, + input[type=time].form-control, + input[type=datetime-local].form-control, + input[type=month].form-control { + line-height: 34px; + } + + .input-group-sm input[type=date], + .input-group-sm input[type=time], + .input-group-sm input[type=datetime-local], + .input-group-sm input[type=month], + input[type=date].input-sm, + input[type=time].input-sm, + input[type=datetime-local].input-sm, + input[type=month].input-sm { + line-height: 30px; + } + + .input-group-lg input[type=date], + .input-group-lg input[type=time], + .input-group-lg input[type=datetime-local], + .input-group-lg input[type=month], + input[type=date].input-lg, + input[type=time].input-lg, + input[type=datetime-local].input-lg, + input[type=month].input-lg { + line-height: 46px; + } +} + +.form-group { + margin-bottom: 15px; +} + +.checkbox, +.radio { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} + +.checkbox label, +.radio label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + cursor: pointer; +} + +.checkbox input[type=checkbox], +.checkbox-inline input[type=checkbox], +.radio input[type=radio], +.radio-inline input[type=radio] { + position: absolute; + margin-top: 4px\9; + margin-left: -20px; +} + +.checkbox+.checkbox, +.radio+.radio { + margin-top: -5px; +} + +.checkbox-inline, +.radio-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + vertical-align: middle; + cursor: pointer; +} + +.checkbox-inline+.checkbox-inline, +.radio-inline+.radio-inline { + margin-top: 0; + margin-left: 10px; +} + +fieldset[disabled] input[type=checkbox], +fieldset[disabled] input[type=radio], +input[type=checkbox].disabled, +input[type=checkbox][disabled], +input[type=radio].disabled, +input[type=radio][disabled] { + cursor: not-allowed; +} + +.checkbox-inline.disabled, +.radio-inline.disabled, +fieldset[disabled] .checkbox-inline, +fieldset[disabled] .radio-inline { + cursor: not-allowed; +} + +.checkbox.disabled label, +.radio.disabled label, +fieldset[disabled] .checkbox label, +fieldset[disabled] .radio label { + cursor: not-allowed; +} + +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} + +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm { + height: 30px; + line-height: 30px; +} + +select[multiple].input-sm, +textarea.input-sm { + height: auto; +} + +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} + +.form-group-sm select[multiple].form-control, +.form-group-sm textarea.form-control { + height: auto; +} + +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} + +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} + +select.input-lg { + height: 46px; + line-height: 46px; +} + +select[multiple].input-lg, +textarea.input-lg { + height: auto; +} + +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} + +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} + +.form-group-lg select[multiple].form-control, +.form-group-lg textarea.form-control { + height: auto; +} + +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} + +.has-feedback { + position: relative; +} + +.has-feedback .form-control { + padding-right: 42.5px; +} + +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} + +.form-group-lg .form-control+.form-control-feedback, +.input-group-lg+.form-control-feedback, +.input-lg+.form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} + +.form-group-sm .form-control+.form-control-feedback, +.input-group-sm+.form-control-feedback, +.input-sm+.form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} + +.has-success .checkbox, +.has-success .checkbox-inline, +.has-success .control-label, +.has-success .help-block, +.has-success .radio, +.has-success .radio-inline, +.has-success.checkbox label, +.has-success.checkbox-inline label, +.has-success.radio label, +.has-success.radio-inline label { + color: #3c763d; +} + +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); +} + +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168; +} + +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} + +.has-success .form-control-feedback { + color: #3c763d; +} + +.has-warning .checkbox, +.has-warning .checkbox-inline, +.has-warning .control-label, +.has-warning .help-block, +.has-warning .radio, +.has-warning .radio-inline, +.has-warning.checkbox label, +.has-warning.checkbox-inline label, +.has-warning.radio label, +.has-warning.radio-inline label { + color: #8a6d3b; +} + +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); +} + +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b; +} + +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} + +.has-warning .form-control-feedback { + color: #8a6d3b; +} + +.has-error .checkbox, +.has-error .checkbox-inline, +.has-error .control-label, +.has-error .help-block, +.has-error .radio, +.has-error .radio-inline, +.has-error.checkbox label, +.has-error.checkbox-inline label, +.has-error.radio label, +.has-error.radio-inline label { + color: #a94442; +} + +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); +} + +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483; +} + +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} + +.has-error .form-control-feedback { + color: #a94442; +} + +.has-feedback label~.form-control-feedback { + top: 25px; +} + +.has-feedback label.sr-only~.form-control-feedback { + top: 0; +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} + +@media (min-width:768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + + .form-inline .form-control-static { + display: inline-block; + } + + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + + .form-inline .input-group .form-control, + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn { + width: auto; + } + + .form-inline .input-group>.form-control { + width: 100%; + } + + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + + .form-inline .checkbox, + .form-inline .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + + .form-inline .checkbox label, + .form-inline .radio label { + padding-left: 0; + } + + .form-inline .checkbox input[type=checkbox], + .form-inline .radio input[type=radio] { + position: relative; + margin-left: 0; + } + + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} + +.form-horizontal .checkbox, +.form-horizontal .checkbox-inline, +.form-horizontal .radio, +.form-horizontal .radio-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} + +.form-horizontal .checkbox, +.form-horizontal .radio { + min-height: 27px; +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width:768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} + +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} + +@media (min-width:768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} + +@media (min-width:768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} + +.btn.active.focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn:active:focus, +.btn:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.focus, +.btn:focus, +.btn:hover { + color: #333; + text-decoration: none; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + box-shadow: inset 0 3px 5px rgba(0,0,0,.125); +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} + +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} + +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} + +.btn-default.focus, +.btn-default:focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} + +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} + +.btn-default.active, +.btn-default:active, +.open>.dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} + +.btn-default.active.focus, +.btn-default.active:focus, +.btn-default.active:hover, +.btn-default:active.focus, +.btn-default:active:focus, +.btn-default:active:hover, +.open>.dropdown-toggle.btn-default.focus, +.open>.dropdown-toggle.btn-default:focus, +.open>.dropdown-toggle.btn-default:hover { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} + +.btn-default.active, +.btn-default:active, +.open>.dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled.focus, +.btn-default.disabled:focus, +.btn-default.disabled:hover, +.btn-default[disabled].focus, +.btn-default[disabled]:focus, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default.focus, +fieldset[disabled] .btn-default:focus, +fieldset[disabled] .btn-default:hover { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} + +.btn-primary.focus, +.btn-primary:focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} + +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} + +.btn-primary.active, +.btn-primary:active, +.open>.dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} + +.btn-primary.active.focus, +.btn-primary.active:focus, +.btn-primary.active:hover, +.btn-primary:active.focus, +.btn-primary:active:focus, +.btn-primary:active:hover, +.open>.dropdown-toggle.btn-primary.focus, +.open>.dropdown-toggle.btn-primary:focus, +.open>.dropdown-toggle.btn-primary:hover { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} + +.btn-primary.active, +.btn-primary:active, +.open>.dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled.focus, +.btn-primary.disabled:focus, +.btn-primary.disabled:hover, +.btn-primary[disabled].focus, +.btn-primary[disabled]:focus, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary.focus, +fieldset[disabled] .btn-primary:focus, +fieldset[disabled] .btn-primary:hover { + background-color: #337ab7; + border-color: #2e6da4; +} + +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} + +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success.focus, +.btn-success:focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} + +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} + +.btn-success.active, +.btn-success:active, +.open>.dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} + +.btn-success.active.focus, +.btn-success.active:focus, +.btn-success.active:hover, +.btn-success:active.focus, +.btn-success:active:focus, +.btn-success:active:hover, +.open>.dropdown-toggle.btn-success.focus, +.open>.dropdown-toggle.btn-success:focus, +.open>.dropdown-toggle.btn-success:hover { + color: #fff; + background-color: #398439; + border-color: #255625; +} + +.btn-success.active, +.btn-success:active, +.open>.dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled.focus, +.btn-success.disabled:focus, +.btn-success.disabled:hover, +.btn-success[disabled].focus, +.btn-success[disabled]:focus, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success.focus, +fieldset[disabled] .btn-success:focus, +fieldset[disabled] .btn-success:hover { + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info.focus, +.btn-info:focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} + +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} + +.btn-info.active, +.btn-info:active, +.open>.dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} + +.btn-info.active.focus, +.btn-info.active:focus, +.btn-info.active:hover, +.btn-info:active.focus, +.btn-info:active:focus, +.btn-info:active:hover, +.open>.dropdown-toggle.btn-info.focus, +.open>.dropdown-toggle.btn-info:focus, +.open>.dropdown-toggle.btn-info:hover { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} + +.btn-info.active, +.btn-info:active, +.open>.dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled.focus, +.btn-info.disabled:focus, +.btn-info.disabled:hover, +.btn-info[disabled].focus, +.btn-info[disabled]:focus, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info.focus, +fieldset[disabled] .btn-info:focus, +fieldset[disabled] .btn-info:hover { + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning.focus, +.btn-warning:focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} + +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} + +.btn-warning.active, +.btn-warning:active, +.open>.dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} + +.btn-warning.active.focus, +.btn-warning.active:focus, +.btn-warning.active:hover, +.btn-warning:active.focus, +.btn-warning:active:focus, +.btn-warning:active:hover, +.open>.dropdown-toggle.btn-warning.focus, +.open>.dropdown-toggle.btn-warning:focus, +.open>.dropdown-toggle.btn-warning:hover { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} + +.btn-warning.active, +.btn-warning:active, +.open>.dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled.focus, +.btn-warning.disabled:focus, +.btn-warning.disabled:hover, +.btn-warning[disabled].focus, +.btn-warning[disabled]:focus, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning.focus, +fieldset[disabled] .btn-warning:focus, +fieldset[disabled] .btn-warning:hover { + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} + +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger.focus, +.btn-danger:focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} + +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} + +.btn-danger.active, +.btn-danger:active, +.open>.dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} + +.btn-danger.active.focus, +.btn-danger.active:focus, +.btn-danger.active:hover, +.btn-danger:active.focus, +.btn-danger:active:focus, +.btn-danger:active:hover, +.open>.dropdown-toggle.btn-danger.focus, +.open>.dropdown-toggle.btn-danger:focus, +.open>.dropdown-toggle.btn-danger:hover { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} + +.btn-danger.active, +.btn-danger:active, +.open>.dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled.focus, +.btn-danger.disabled:focus, +.btn-danger.disabled:hover, +.btn-danger[disabled].focus, +.btn-danger[disabled]:focus, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger.focus, +fieldset[disabled] .btn-danger:focus, +fieldset[disabled] .btn-danger:hover { + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} + +.btn-link { + font-weight: 400; + color: #337ab7; + border-radius: 0; +} + +.btn-link, +.btn-link.active, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link, +.btn-link:active, +.btn-link:focus, +.btn-link:hover { + border-color: transparent; +} + +.btn-link:focus, +.btn-link:hover { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:focus, +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:focus, +fieldset[disabled] .btn-link:hover { + color: #777; + text-decoration: none; +} + +.btn-group-lg>.btn, +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} + +.btn-group-sm>.btn, +.btn-sm { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-xs>.btn, +.btn-xs { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block+.btn-block { + margin-top: 5px; +} + +input[type=button].btn-block, +input[type=reset].btn-block, +input[type=submit].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.in { + display: block; +} + +tr.collapse.in { + display: table-row; +} + +tbody.collapse.in { + display: table-row-group; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height,visibility; + -o-transition-property: height,visibility; + transition-property: height,visibility; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid\9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} + +.dropdown, +.dropup { + position: relative; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175); + box-shadow: 0 6px 12px rgba(0,0,0,.175); +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.dropdown-menu>li>a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} + +.dropdown-menu>li>a:focus, +.dropdown-menu>li>a:hover { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} + +.dropdown-menu>.active>a, +.dropdown-menu>.active>a:focus, +.dropdown-menu>.active>a:hover { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} + +.dropdown-menu>.disabled>a, +.dropdown-menu>.disabled>a:focus, +.dropdown-menu>.disabled>a:hover { + color: #777; +} + +.dropdown-menu>.disabled>a:focus, +.dropdown-menu>.disabled>a:hover { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open>.dropdown-menu { + display: block; +} + +.open>a { + outline: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right>.dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid\9; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} + +@media (min-width:768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.btn-group-vertical>.btn, +.btn-group>.btn { + position: relative; + float: left; +} + +.btn-group-vertical>.btn.active, +.btn-group-vertical>.btn:active, +.btn-group-vertical>.btn:focus, +.btn-group-vertical>.btn:hover, +.btn-group>.btn.active, +.btn-group>.btn:active, +.btn-group>.btn:focus, +.btn-group>.btn:hover { + z-index: 2; +} + +.btn-group .btn+.btn, +.btn-group .btn+.btn-group, +.btn-group .btn-group+.btn, +.btn-group .btn-group+.btn-group { + margin-left: -1px; +} + +.btn-toolbar { + margin-left: -5px; +} + +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} + +.btn-toolbar>.btn, +.btn-toolbar>.btn-group, +.btn-toolbar>.input-group { + margin-left: 5px; +} + +.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group>.btn:first-child { + margin-left: 0; +} + +.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group>.btn:last-child:not(:first-child), +.btn-group>.dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group>.btn-group { + float: left; +} + +.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn { + border-radius: 0; +} + +.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child, +.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group>.btn+.dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} + +.btn-group>.btn-lg+.dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + box-shadow: inset 0 3px 5px rgba(0,0,0,.125); +} + +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn .caret { + margin-left: 0; +} + +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} + +.btn-group-vertical>.btn, +.btn-group-vertical>.btn-group, +.btn-group-vertical>.btn-group>.btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} + +.btn-group-vertical>.btn-group>.btn { + float: none; +} + +.btn-group-vertical>.btn+.btn, +.btn-group-vertical>.btn+.btn-group, +.btn-group-vertical>.btn-group+.btn, +.btn-group-vertical>.btn-group+.btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical>.btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.btn-group-vertical>.btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical>.btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn { + border-radius: 0; +} + +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child, +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} + +.btn-group-justified>.btn, +.btn-group-justified>.btn-group { + display: table-cell; + float: none; + width: 1%; +} + +.btn-group-justified>.btn-group .btn { + width: 100%; +} + +.btn-group-justified>.btn-group .dropdown-menu { + left: auto; +} + +[data-toggle=buttons]>.btn input[type=checkbox], +[data-toggle=buttons]>.btn input[type=radio], +[data-toggle=buttons]>.btn-group>.btn input[type=checkbox], +[data-toggle=buttons]>.btn-group>.btn input[type=radio] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} + +.input-group[class*=col-] { + float: none; + padding-right: 0; + padding-left: 0; +} + +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} + +.input-group .form-control:focus { + z-index: 3; +} + +.input-group-lg>.form-control, +.input-group-lg>.input-group-addon, +.input-group-lg>.input-group-btn>.btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} + +select.input-group-lg>.form-control, +select.input-group-lg>.input-group-addon, +select.input-group-lg>.input-group-btn>.btn { + height: 46px; + line-height: 46px; +} + +select[multiple].input-group-lg>.form-control, +select[multiple].input-group-lg>.input-group-addon, +select[multiple].input-group-lg>.input-group-btn>.btn, +textarea.input-group-lg>.form-control, +textarea.input-group-lg>.input-group-addon, +textarea.input-group-lg>.input-group-btn>.btn { + height: auto; +} + +.input-group-sm>.form-control, +.input-group-sm>.input-group-addon, +.input-group-sm>.input-group-btn>.btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-group-sm>.form-control, +select.input-group-sm>.input-group-addon, +select.input-group-sm>.input-group-btn>.btn { + height: 30px; + line-height: 30px; +} + +select[multiple].input-group-sm>.form-control, +select[multiple].input-group-sm>.input-group-addon, +select[multiple].input-group-sm>.input-group-btn>.btn, +textarea.input-group-sm>.form-control, +textarea.input-group-sm>.input-group-addon, +textarea.input-group-sm>.input-group-btn>.btn { + height: auto; +} + +.input-group .form-control, +.input-group-addon, +.input-group-btn { + display: table-cell; +} + +.input-group .form-control:not(:first-child):not(:last-child), +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: 400; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} + +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} + +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} + +.input-group-addon input[type=checkbox], +.input-group-addon input[type=radio] { + margin-top: 0; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child>.btn, +.input-group-btn:first-child>.btn-group>.btn, +.input-group-btn:first-child>.dropdown-toggle, +.input-group-btn:last-child>.btn-group:not(:last-child)>.btn, +.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:first-child>.btn-group:not(:first-child)>.btn, +.input-group-btn:first-child>.btn:not(:first-child), +.input-group-btn:last-child>.btn, +.input-group-btn:last-child>.btn-group>.btn, +.input-group-btn:last-child>.dropdown-toggle { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} + +.input-group-btn>.btn { + position: relative; +} + +.input-group-btn>.btn+.btn { + margin-left: -1px; +} + +.input-group-btn>.btn:active, +.input-group-btn>.btn:focus, +.input-group-btn>.btn:hover { + z-index: 2; +} + +.input-group-btn:first-child>.btn, +.input-group-btn:first-child>.btn-group { + margin-right: -1px; +} + +.input-group-btn:last-child>.btn, +.input-group-btn:last-child>.btn-group { + z-index: 2; + margin-left: -1px; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav>li { + position: relative; + display: block; +} + +.nav>li>a { + position: relative; + display: block; + padding: 10px 15px; +} + +.nav>li>a:focus, +.nav>li>a:hover { + text-decoration: none; + background-color: #eee; +} + +.nav>li.disabled>a { + color: #777; +} + +.nav>li.disabled>a:focus, +.nav>li.disabled>a:hover { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} + +.nav .open>a, +.nav .open>a:focus, +.nav .open>a:hover { + background-color: #eee; + border-color: #337ab7; +} + +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.nav>li>a>img { + max-width: none; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs>li { + float: left; + margin-bottom: -1px; +} + +.nav-tabs>li>a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.nav-tabs>li>a:hover { + border-color: #eee #eee #ddd; +} + +.nav-tabs>li.active>a, +.nav-tabs>li.active>a:focus, +.nav-tabs>li.active>a:hover { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} + +.nav-tabs.nav-justified>li { + float: none; +} + +.nav-tabs.nav-justified>li>a { + margin-bottom: 5px; + text-align: center; +} + +.nav-tabs.nav-justified>.dropdown .dropdown-menu { + top: auto; + left: auto; +} + +@media (min-width:768px) { + .nav-tabs.nav-justified>li { + display: table-cell; + width: 1%; + } + + .nav-tabs.nav-justified>li>a { + margin-bottom: 0; + } +} + +.nav-tabs.nav-justified>li>a { + margin-right: 0; + border-radius: 4px; +} + +.nav-tabs.nav-justified>.active>a, +.nav-tabs.nav-justified>.active>a:focus, +.nav-tabs.nav-justified>.active>a:hover { + border: 1px solid #ddd; +} + +@media (min-width:768px) { + .nav-tabs.nav-justified>li>a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + + .nav-tabs.nav-justified>.active>a, + .nav-tabs.nav-justified>.active>a:focus, + .nav-tabs.nav-justified>.active>a:hover { + border-bottom-color: #fff; + } +} + +.nav-pills>li { + float: left; +} + +.nav-pills>li>a { + border-radius: 4px; +} + +.nav-pills>li+li { + margin-left: 2px; +} + +.nav-pills>li.active>a, +.nav-pills>li.active>a:focus, +.nav-pills>li.active>a:hover { + color: #fff; + background-color: #337ab7; +} + +.nav-stacked>li { + float: none; +} + +.nav-stacked>li+li { + margin-top: 2px; + margin-left: 0; +} + +.nav-justified { + width: 100%; +} + +.nav-justified>li { + float: none; +} + +.nav-justified>li>a { + margin-bottom: 5px; + text-align: center; +} + +.nav-justified>.dropdown .dropdown-menu { + top: auto; + left: auto; +} + +@media (min-width:768px) { + .nav-justified>li { + display: table-cell; + width: 1%; + } + + .nav-justified>li>a { + margin-bottom: 0; + } +} + +.nav-tabs-justified { + border-bottom: 0; +} + +.nav-tabs-justified>li>a { + margin-right: 0; + border-radius: 4px; +} + +.nav-tabs-justified>.active>a, +.nav-tabs-justified>.active>a:focus, +.nav-tabs-justified>.active>a:hover { + border: 1px solid #ddd; +} + +@media (min-width:768px) { + .nav-tabs-justified>li>a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + + .nav-tabs-justified>.active>a, + .nav-tabs-justified>.active>a:focus, + .nav-tabs-justified>.active>a:hover { + border-bottom-color: #fff; + } +} + +.tab-content>.tab-pane { + display: none; +} + +.tab-content>.active { + display: block; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} + +@media (min-width:768px) { + .navbar { + border-radius: 4px; + } +} + +@media (min-width:768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1); +} + +.navbar-collapse.in { + overflow-y: auto; +} + +@media (min-width:768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + + .navbar-collapse.collapse { + display: block!important; + height: auto!important; + padding-bottom: 0; + overflow: visible!important; + } + + .navbar-collapse.in { + overflow-y: visible; + } + + .navbar-fixed-bottom .navbar-collapse, + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} + +.navbar-fixed-bottom .navbar-collapse, +.navbar-fixed-top .navbar-collapse { + max-height: 340px; +} + +@media (max-device-width:480px) and (orientation:landscape) { + .navbar-fixed-bottom .navbar-collapse, + .navbar-fixed-top .navbar-collapse { + max-height: 200px; + } +} + +.container-fluid>.navbar-collapse, +.container-fluid>.navbar-header, +.container>.navbar-collapse, +.container>.navbar-header { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width:768px) { + .container-fluid>.navbar-collapse, + .container-fluid>.navbar-header, + .container>.navbar-collapse, + .container>.navbar-header { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} + +@media (min-width:768px) { + .navbar-static-top { + border-radius: 0; + } +} + +.navbar-fixed-bottom, +.navbar-fixed-top { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} + +@media (min-width:768px) { + .navbar-fixed-bottom, + .navbar-fixed-top { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} + +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} + +.navbar-brand:focus, +.navbar-brand:hover { + text-decoration: none; +} + +.navbar-brand>img { + display: block; +} + +@media (min-width:768px) { + .navbar>.container .navbar-brand, + .navbar>.container-fluid .navbar-brand { + margin-left: -15px; + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} + +.navbar-toggle:focus { + outline: 0; +} + +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} + +.navbar-toggle .icon-bar+.icon-bar { + margin-top: 4px; +} + +@media (min-width:768px) { + .navbar-toggle { + display: none; + } +} + +.navbar-nav { + margin: 7.5px -15px; +} + +.navbar-nav>li>a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} + +@media (max-width:767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + + .navbar-nav .open .dropdown-menu .dropdown-header, + .navbar-nav .open .dropdown-menu>li>a { + padding: 5px 15px 5px 25px; + } + + .navbar-nav .open .dropdown-menu>li>a { + line-height: 20px; + } + + .navbar-nav .open .dropdown-menu>li>a:focus, + .navbar-nav .open .dropdown-menu>li>a:hover { + background-image: none; + } +} + +@media (min-width:768px) { + .navbar-nav { + float: left; + margin: 0; + } + + .navbar-nav>li { + float: left; + } + + .navbar-nav>li>a { + padding-top: 15px; + padding-bottom: 15px; + } +} + +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1); +} + +@media (min-width:768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + + .navbar-form .form-control-static { + display: inline-block; + } + + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + + .navbar-form .input-group .form-control, + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn { + width: auto; + } + + .navbar-form .input-group>.form-control { + width: 100%; + } + + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + + .navbar-form .checkbox, + .navbar-form .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + + .navbar-form .checkbox label, + .navbar-form .radio label { + padding-left: 0; + } + + .navbar-form .checkbox input[type=checkbox], + .navbar-form .radio input[type=radio] { + position: relative; + margin-left: 0; + } + + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} + +@media (max-width:767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} + +@media (min-width:768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +.navbar-nav>li>.dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} + +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} + +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} + +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width:768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} + +@media (min-width:768px) { + .navbar-left { + float: left!important; + } + + .navbar-right { + float: right!important; + margin-right: -15px; + } + + .navbar-right~.navbar-right { + margin-right: 0; + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { + color: #777; +} + +.navbar-default .navbar-brand:focus, +.navbar-default .navbar-brand:hover { + color: #5e5e5e; + background-color: transparent; +} + +.navbar-default .navbar-text { + color: #777; +} + +.navbar-default .navbar-nav>li>a { + color: #777; +} + +.navbar-default .navbar-nav>li>a:focus, +.navbar-default .navbar-nav>li>a:hover { + color: #333; + background-color: transparent; +} + +.navbar-default .navbar-nav>.active>a, +.navbar-default .navbar-nav>.active>a:focus, +.navbar-default .navbar-nav>.active>a:hover { + color: #555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav>.disabled>a, +.navbar-default .navbar-nav>.disabled>a:focus, +.navbar-default .navbar-nav>.disabled>a:hover { + color: #ccc; + background-color: transparent; +} + +.navbar-default .navbar-toggle { + border-color: #ddd; +} + +.navbar-default .navbar-toggle:focus, +.navbar-default .navbar-toggle:hover { + background-color: #ddd; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} + +.navbar-default .navbar-nav>.open>a, +.navbar-default .navbar-nav>.open>a:focus, +.navbar-default .navbar-nav>.open>a:hover { + color: #555; + background-color: #e7e7e7; +} + +@media (max-width:767px) { + .navbar-default .navbar-nav .open .dropdown-menu>li>a { + color: #777; + } + + .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus, + .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover { + color: #333; + background-color: transparent; + } + + .navbar-default .navbar-nav .open .dropdown-menu>.active>a, + .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus, + .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover { + color: #555; + background-color: #e7e7e7; + } + + .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a, + .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus, + .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover { + color: #ccc; + background-color: transparent; + } +} + +.navbar-default .navbar-link { + color: #777; +} + +.navbar-default .navbar-link:hover { + color: #333; +} + +.navbar-default .btn-link { + color: #777; +} + +.navbar-default .btn-link:focus, +.navbar-default .btn-link:hover { + color: #333; +} + +.navbar-default .btn-link[disabled]:focus, +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:focus, +fieldset[disabled] .navbar-default .btn-link:hover { + color: #ccc; +} + +.navbar-inverse { + background-color: #222; + border-color: #080808; +} + +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} + +.navbar-inverse .navbar-brand:focus, +.navbar-inverse .navbar-brand:hover { + color: #fff; + background-color: transparent; +} + +.navbar-inverse .navbar-text { + color: #9d9d9d; +} + +.navbar-inverse .navbar-nav>li>a { + color: #9d9d9d; +} + +.navbar-inverse .navbar-nav>li>a:focus, +.navbar-inverse .navbar-nav>li>a:hover { + color: #fff; + background-color: transparent; +} + +.navbar-inverse .navbar-nav>.active>a, +.navbar-inverse .navbar-nav>.active>a:focus, +.navbar-inverse .navbar-nav>.active>a:hover { + color: #fff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav>.disabled>a, +.navbar-inverse .navbar-nav>.disabled>a:focus, +.navbar-inverse .navbar-nav>.disabled>a:hover { + color: #444; + background-color: transparent; +} + +.navbar-inverse .navbar-toggle { + border-color: #333; +} + +.navbar-inverse .navbar-toggle:focus, +.navbar-inverse .navbar-toggle:hover { + background-color: #333; +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} + +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} + +.navbar-inverse .navbar-nav>.open>a, +.navbar-inverse .navbar-nav>.open>a:focus, +.navbar-inverse .navbar-nav>.open>a:hover { + color: #fff; + background-color: #080808; +} + +@media (max-width:767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header { + border-color: #080808; + } + + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + + .navbar-inverse .navbar-nav .open .dropdown-menu>li>a { + color: #9d9d9d; + } + + .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover { + color: #fff; + background-color: transparent; + } + + .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a, + .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover { + color: #fff; + background-color: #080808; + } + + .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a, + .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover { + color: #444; + background-color: transparent; + } +} + +.navbar-inverse .navbar-link { + color: #9d9d9d; +} + +.navbar-inverse .navbar-link:hover { + color: #fff; +} + +.navbar-inverse .btn-link { + color: #9d9d9d; +} + +.navbar-inverse .btn-link:focus, +.navbar-inverse .btn-link:hover { + color: #fff; +} + +.navbar-inverse .btn-link[disabled]:focus, +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:focus, +fieldset[disabled] .navbar-inverse .btn-link:hover { + color: #444; +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} + +.breadcrumb>li { + display: inline-block; +} + +.breadcrumb>li+li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} + +.breadcrumb>.active { + color: #777; +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} + +.pagination>li { + display: inline; +} + +.pagination>li>a, +.pagination>li>span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} + +.pagination>li:first-child>a, +.pagination>li:first-child>span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +.pagination>li:last-child>a, +.pagination>li:last-child>span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.pagination>li>a:focus, +.pagination>li>a:hover, +.pagination>li>span:focus, +.pagination>li>span:hover { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} + +.pagination>.active>a, +.pagination>.active>a:focus, +.pagination>.active>a:hover, +.pagination>.active>span, +.pagination>.active>span:focus, +.pagination>.active>span:hover { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} + +.pagination>.disabled>a, +.pagination>.disabled>a:focus, +.pagination>.disabled>a:hover, +.pagination>.disabled>span, +.pagination>.disabled>span:focus, +.pagination>.disabled>span:hover { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} + +.pagination-lg>li>a, +.pagination-lg>li>span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} + +.pagination-lg>li:first-child>a, +.pagination-lg>li:first-child>span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.pagination-lg>li:last-child>a, +.pagination-lg>li:last-child>span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.pagination-sm>li>a, +.pagination-sm>li>span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} + +.pagination-sm>li:first-child>a, +.pagination-sm>li:first-child>span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.pagination-sm>li:last-child>a, +.pagination-sm>li:last-child>span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} + +.pager li { + display: inline; +} + +.pager li>a, +.pager li>span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} + +.pager li>a:focus, +.pager li>a:hover { + text-decoration: none; + background-color: #eee; +} + +.pager .next>a, +.pager .next>span { + float: right; +} + +.pager .previous>a, +.pager .previous>span { + float: left; +} + +.pager .disabled>a, +.pager .disabled>a:focus, +.pager .disabled>a:hover, +.pager .disabled>span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} + +a.label:focus, +a.label:hover { + color: #fff; + text-decoration: none; + cursor: pointer; +} + +.label:empty { + display: none; +} + +.btn .label { + position: relative; + top: -1px; +} + +.label-default { + background-color: #777; +} + +.label-default[href]:focus, +.label-default[href]:hover { + background-color: #5e5e5e; +} + +.label-primary { + background-color: #337ab7; +} + +.label-primary[href]:focus, +.label-primary[href]:hover { + background-color: #286090; +} + +.label-success { + background-color: #5cb85c; +} + +.label-success[href]:focus, +.label-success[href]:hover { + background-color: #449d44; +} + +.label-info { + background-color: #5bc0de; +} + +.label-info[href]:focus, +.label-info[href]:hover { + background-color: #31b0d5; +} + +.label-warning { + background-color: #f0ad4e; +} + +.label-warning[href]:focus, +.label-warning[href]:hover { + background-color: #ec971f; +} + +.label-danger { + background-color: #d9534f; +} + +.label-danger[href]:focus, +.label-danger[href]:hover { + background-color: #c9302c; +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.btn-group-xs>.btn .badge, +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} + +a.badge:focus, +a.badge:hover { + color: #fff; + text-decoration: none; + cursor: pointer; +} + +.list-group-item.active>.badge, +.nav-pills>.active>a>.badge { + color: #337ab7; + background-color: #fff; +} + +.list-group-item>.badge { + float: right; +} + +.list-group-item>.badge+.badge { + margin-right: 5px; +} + +.nav-pills>li>a>.badge { + margin-left: 3px; +} + +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} + +.jumbotron .h1, +.jumbotron h1 { + color: inherit; +} + +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} + +.jumbotron>hr { + border-top-color: #d5d5d5; +} + +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} + +.jumbotron .container { + max-width: 100%; +} + +@media screen and (min-width:768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + + .jumbotron .h1, + .jumbotron h1 { + font-size: 63px; + } +} + +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} + +.thumbnail a>img, +.thumbnail>img { + margin-right: auto; + margin-left: auto; +} + +a.thumbnail.active, +a.thumbnail:focus, +a.thumbnail:hover { + border-color: #337ab7; +} + +.thumbnail .caption { + padding: 9px; + color: #333; +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} + +.alert h4 { + margin-top: 0; + color: inherit; +} + +.alert .alert-link { + font-weight: 700; +} + +.alert>p, +.alert>ul { + margin-bottom: 0; +} + +.alert>p+p { + margin-top: 5px; +} + +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} + +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success hr { + border-top-color: #c9e2b3; +} + +.alert-success .alert-link { + color: #2b542c; +} + +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info hr { + border-top-color: #a6e1ec; +} + +.alert-info .alert-link { + color: #245269; +} + +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} + +.alert-warning hr { + border-top-color: #f7e1b5; +} + +.alert-warning .alert-link { + color: #66512c; +} + +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} + +.alert-danger hr { + border-top-color: #e4b9c0; +} + +.alert-danger .alert-link { + color: #843534; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1); + box-shadow: inset 0 1px 2px rgba(0,0,0,.1); +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 0 -1px 0 rgba(0,0,0,.15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} + +.progress-bar-striped, +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress-bar.active, +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-bar-success { + background-color: #5cb85c; +} + +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); +} + +.media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media-body { + width: 10000px; +} + +.media-object { + display: block; +} + +.media-object.img-thumbnail { + max-width: none; +} + +.media-right, +.media>.pull-right { + padding-left: 10px; +} + +.media-left, +.media>.pull-left { + padding-right: 10px; +} + +.media-body, +.media-left, +.media-right { + display: table-cell; + vertical-align: top; +} + +.media-middle { + vertical-align: middle; +} + +.media-bottom { + vertical-align: bottom; +} + +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.media-list { + padding-left: 0; + list-style: none; +} + +.list-group { + padding-left: 0; + margin-bottom: 20px; +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} + +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +a.list-group-item, +button.list-group-item { + color: #555; +} + +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} + +a.list-group-item:focus, +a.list-group-item:hover, +button.list-group-item:focus, +button.list-group-item:hover { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} + +button.list-group-item { + width: 100%; + text-align: left; +} + +.list-group-item.disabled, +.list-group-item.disabled:focus, +.list-group-item.disabled:hover { + color: #777; + cursor: not-allowed; + background-color: #eee; +} + +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading { + color: inherit; +} + +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text { + color: #777; +} + +.list-group-item.active, +.list-group-item.active:focus, +.list-group-item.active:hover { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active .list-group-item-heading>.small, +.list-group-item.active .list-group-item-heading>small, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading>.small, +.list-group-item.active:focus .list-group-item-heading>small, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading>.small, +.list-group-item.active:hover .list-group-item-heading>small { + color: inherit; +} + +.list-group-item.active .list-group-item-text, +.list-group-item.active:focus .list-group-item-text, +.list-group-item.active:hover .list-group-item-text { + color: #c7ddef; +} + +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} + +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} + +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} + +a.list-group-item-success:focus, +a.list-group-item-success:hover, +button.list-group-item-success:focus, +button.list-group-item-success:hover { + color: #3c763d; + background-color: #d0e9c6; +} + +a.list-group-item-success.active, +a.list-group-item-success.active:focus, +a.list-group-item-success.active:hover, +button.list-group-item-success.active, +button.list-group-item-success.active:focus, +button.list-group-item-success.active:hover { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} + +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} + +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} + +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} + +a.list-group-item-info:focus, +a.list-group-item-info:hover, +button.list-group-item-info:focus, +button.list-group-item-info:hover { + color: #31708f; + background-color: #c4e3f3; +} + +a.list-group-item-info.active, +a.list-group-item-info.active:focus, +a.list-group-item-info.active:hover, +button.list-group-item-info.active, +button.list-group-item-info.active:focus, +button.list-group-item-info.active:hover { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} + +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} + +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} + +a.list-group-item-warning:focus, +a.list-group-item-warning:hover, +button.list-group-item-warning:focus, +button.list-group-item-warning:hover { + color: #8a6d3b; + background-color: #faf2cc; +} + +a.list-group-item-warning.active, +a.list-group-item-warning.active:focus, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active, +button.list-group-item-warning.active:focus, +button.list-group-item-warning.active:hover { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} + +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} + +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} + +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} + +a.list-group-item-danger:focus, +a.list-group-item-danger:hover, +button.list-group-item-danger:focus, +button.list-group-item-danger:hover { + color: #a94442; + background-color: #ebcccc; +} + +a.list-group-item-danger.active, +a.list-group-item-danger.active:focus, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active, +button.list-group-item-danger.active:focus, +button.list-group-item-danger.active:hover { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} + +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05); + box-shadow: 0 1px 1px rgba(0,0,0,.05); +} + +.panel-body { + padding: 15px; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.panel-heading>.dropdown .dropdown-toggle { + color: inherit; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} + +.panel-title>.small, +.panel-title>.small>a, +.panel-title>a, +.panel-title>small, +.panel-title>small>a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel>.list-group, +.panel>.panel-collapse>.list-group { + margin-bottom: 0; +} + +.panel>.list-group .list-group-item, +.panel>.panel-collapse>.list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} + +.panel>.list-group:first-child .list-group-item:first-child, +.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.panel>.list-group:last-child .list-group-item:last-child, +.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.panel-heading+.list-group .list-group-item:first-child { + border-top-width: 0; +} + +.list-group+.panel-footer { + border-top-width: 0; +} + +.panel>.panel-collapse>.table, +.panel>.table, +.panel>.table-responsive>.table { + margin-bottom: 0; +} + +.panel>.panel-collapse>.table caption, +.panel>.table caption, +.panel>.table-responsive>.table caption { + padding-right: 15px; + padding-left: 15px; +} + +.panel>.table-responsive:first-child>.table:first-child, +.panel>.table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child, +.panel>.table:first-child>tbody:first-child>tr:first-child, +.panel>.table:first-child>thead:first-child>tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child, +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child, +.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child, +.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child, +.panel>.table:first-child>thead:first-child>tr:first-child td:first-child, +.panel>.table:first-child>thead:first-child>tr:first-child th:first-child { + border-top-left-radius: 3px; +} + +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child, +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child, +.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child, +.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child, +.panel>.table:first-child>thead:first-child>tr:first-child td:last-child, +.panel>.table:first-child>thead:first-child>tr:first-child th:last-child { + border-top-right-radius: 3px; +} + +.panel>.table-responsive:last-child>.table:last-child, +.panel>.table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child, +.panel>.table:last-child>tbody:last-child>tr:last-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child, +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child, +.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child, +.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} + +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child, +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child, +.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child, +.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} + +.panel>.panel-body+.table, +.panel>.panel-body+.table-responsive, +.panel>.table+.panel-body, +.panel>.table-responsive+.panel-body { + border-top: 1px solid #ddd; +} + +.panel>.table>tbody:first-child>tr:first-child td, +.panel>.table>tbody:first-child>tr:first-child th { + border-top: 0; +} + +.panel>.table-bordered, +.panel>.table-responsive>.table-bordered { + border: 0; +} + +.panel>.table-bordered>tbody>tr>td:first-child, +.panel>.table-bordered>tbody>tr>th:first-child, +.panel>.table-bordered>tfoot>tr>td:first-child, +.panel>.table-bordered>tfoot>tr>th:first-child, +.panel>.table-bordered>thead>tr>td:first-child, +.panel>.table-bordered>thead>tr>th:first-child, +.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child, +.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child, +.panel>.table-responsive>.table-bordered>thead>tr>td:first-child, +.panel>.table-responsive>.table-bordered>thead>tr>th:first-child { + border-left: 0; +} + +.panel>.table-bordered>tbody>tr>td:last-child, +.panel>.table-bordered>tbody>tr>th:last-child, +.panel>.table-bordered>tfoot>tr>td:last-child, +.panel>.table-bordered>tfoot>tr>th:last-child, +.panel>.table-bordered>thead>tr>td:last-child, +.panel>.table-bordered>thead>tr>th:last-child, +.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child, +.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child, +.panel>.table-responsive>.table-bordered>thead>tr>td:last-child, +.panel>.table-responsive>.table-bordered>thead>tr>th:last-child { + border-right: 0; +} + +.panel>.table-bordered>tbody>tr:first-child>td, +.panel>.table-bordered>tbody>tr:first-child>th, +.panel>.table-bordered>thead>tr:first-child>td, +.panel>.table-bordered>thead>tr:first-child>th, +.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td, +.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th, +.panel>.table-responsive>.table-bordered>thead>tr:first-child>td, +.panel>.table-responsive>.table-bordered>thead>tr:first-child>th { + border-bottom: 0; +} + +.panel>.table-bordered>tbody>tr:last-child>td, +.panel>.table-bordered>tbody>tr:last-child>th, +.panel>.table-bordered>tfoot>tr:last-child>td, +.panel>.table-bordered>tfoot>tr:last-child>th, +.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td, +.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th, +.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td, +.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th { + border-bottom: 0; +} + +.panel>.table-responsive { + margin-bottom: 0; + border: 0; +} + +.panel-group { + margin-bottom: 20px; +} + +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} + +.panel-group .panel+.panel { + margin-top: 5px; +} + +.panel-group .panel-heading { + border-bottom: 0; +} + +.panel-group .panel-heading+.panel-collapse>.list-group, +.panel-group .panel-heading+.panel-collapse>.panel-body { + border-top: 1px solid #ddd; +} + +.panel-group .panel-footer { + border-top: 0; +} + +.panel-group .panel-footer+.panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} + +.panel-default { + border-color: #ddd; +} + +.panel-default>.panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} + +.panel-default>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #ddd; +} + +.panel-default>.panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} + +.panel-default>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #ddd; +} + +.panel-primary { + border-color: #337ab7; +} + +.panel-primary>.panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} + +.panel-primary>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #337ab7; +} + +.panel-primary>.panel-heading .badge { + color: #337ab7; + background-color: #fff; +} + +.panel-primary>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #337ab7; +} + +.panel-success { + border-color: #d6e9c6; +} + +.panel-success>.panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.panel-success>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #d6e9c6; +} + +.panel-success>.panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} + +.panel-success>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-info { + border-color: #bce8f1; +} + +.panel-info>.panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.panel-info>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #bce8f1; +} + +.panel-info>.panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} + +.panel-info>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #bce8f1; +} + +.panel-warning { + border-color: #faebcc; +} + +.panel-warning>.panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} + +.panel-warning>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #faebcc; +} + +.panel-warning>.panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} + +.panel-warning>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #faebcc; +} + +.panel-danger { + border-color: #ebccd1; +} + +.panel-danger>.panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} + +.panel-danger>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #ebccd1; +} + +.panel-danger>.panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} + +.panel-danger>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #ebccd1; +} + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive embed, +.embed-responsive iframe, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} + +.embed-responsive-4by3 { + padding-bottom: 75%; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05); + box-shadow: inset 0 1px 1px rgba(0,0,0,.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); +} + +.well-lg { + padding: 24px; + border-radius: 6px; +} + +.well-sm { + padding: 9px; + border-radius: 3px; +} + +.close { + float: right; + font-size: 21px; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} + +.close:focus, +.close:hover { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} + +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: 0 0; + border: 0; +} + +.modal-open { + overflow: hidden; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} + +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0,-25%); + -ms-transform: translate(0,-25%); + -o-transform: translate(0,-25%); + transform: translate(0,-25%); +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0,0); + -ms-transform: translate(0,0); + -o-transform: translate(0,0); + transform: translate(0,0); +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} + +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0,0,0,.2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0,0,0,.5); + box-shadow: 0 3px 9px rgba(0,0,0,.5); +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} + +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} + +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} + +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.42857143; +} + +.modal-body { + position: relative; + padding: 15px; +} + +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} + +.modal-footer .btn+.btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn+.btn { + margin-left: -1px; +} + +.modal-footer .btn-block+.btn-block { + margin-left: 0; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width:768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5); + box-shadow: 0 5px 15px rgba(0,0,0,.5); + } + + .modal-sm { + width: 300px; + } +} + +@media (min-width:992px) { + .modal-lg { + width: 900px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + line-break: auto; +} + +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} + +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} + +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); + box-shadow: 0 5px 10px rgba(0,0,0,.2); + line-break: auto; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover>.arrow, +.popover>.arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover>.arrow { + border-width: 11px; +} + +.popover>.arrow:after { + content: ""; + border-width: 10px; +} + +.popover.top>.arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0,0,0,.25); + border-bottom-width: 0; +} + +.popover.top>.arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} + +.popover.right>.arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0,0,0,.25); + border-left-width: 0; +} + +.popover.right>.arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} + +.popover.bottom>.arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0,0,0,.25); +} + +.popover.bottom>.arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} + +.popover.left>.arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0,0,0,.25); +} + +.popover.left>.arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner>.item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} + +.carousel-inner>.item>a>img, +.carousel-inner>.item>img { + line-height: 1; +} + +@media all and (transform-3d),(-webkit-transform-3d) { + .carousel-inner>.item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + + .carousel-inner>.item.active.right, + .carousel-inner>.item.next { + left: 0; + -webkit-transform: translate3d(100%,0,0); + transform: translate3d(100%,0,0); + } + + .carousel-inner>.item.active.left, + .carousel-inner>.item.prev { + left: 0; + -webkit-transform: translate3d(-100%,0,0); + transform: translate3d(-100%,0,0); + } + + .carousel-inner>.item.active, + .carousel-inner>.item.next.left, + .carousel-inner>.item.prev.right { + left: 0; + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + } +} + +.carousel-inner>.active, +.carousel-inner>.next, +.carousel-inner>.prev { + display: block; +} + +.carousel-inner>.active { + left: 0; +} + +.carousel-inner>.next, +.carousel-inner>.prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner>.next { + left: 100%; +} + +.carousel-inner>.prev { + left: -100%; +} + +.carousel-inner>.next.left, +.carousel-inner>.prev.right { + left: 0; +} + +.carousel-inner>.active.left { + left: -100%; +} + +.carousel-inner>.active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0,0,0,.6); + background-color: rgba(0,0,0,0); + filter: alpha(opacity=50); + opacity: .5; +} + +.carousel-control.left { + background-image: -webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%); + background-image: -o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%); + background-image: -webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001))); + background-image: linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} + +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%); + background-image: -o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%); + background-image: -webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5))); + background-image: linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} + +.carousel-control:focus, +.carousel-control:hover { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} + +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right, +.carousel-control .icon-next, +.carousel-control .icon-prev { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} + +.carousel-control .glyphicon-chevron-left, +.carousel-control .icon-prev { + left: 50%; + margin-left: -10px; +} + +.carousel-control .glyphicon-chevron-right, +.carousel-control .icon-next { + right: 50%; + margin-right: -10px; +} + +.carousel-control .icon-next, +.carousel-control .icon-prev { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} + +.carousel-control .icon-prev:before { + content: '\2039'; +} + +.carousel-control .icon-next:before { + content: '\203a'; +} + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} + +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000\9; + background-color: rgba(0,0,0,0); + border: 1px solid #fff; + border-radius: 10px; +} + +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0,0,0,.6); +} + +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width:768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next, + .carousel-control .icon-prev { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + + .carousel-indicators { + bottom: 20px; + } +} + +.btn-group-vertical>.btn-group:after, +.btn-group-vertical>.btn-group:before, +.btn-toolbar:after, +.btn-toolbar:before, +.clearfix:after, +.clearfix:before, +.container-fluid:after, +.container-fluid:before, +.container:after, +.container:before, +.dl-horizontal dd:after, +.dl-horizontal dd:before, +.form-horizontal .form-group:after, +.form-horizontal .form-group:before, +.modal-footer:after, +.modal-footer:before, +.modal-header:after, +.modal-header:before, +.nav:after, +.nav:before, +.navbar-collapse:after, +.navbar-collapse:before, +.navbar-header:after, +.navbar-header:before, +.navbar:after, +.navbar:before, +.pager:after, +.pager:before, +.panel-body:after, +.panel-body:before, +.row:after, +.row:before { + display: table; + content: " "; +} + +.btn-group-vertical>.btn-group:after, +.btn-toolbar:after, +.clearfix:after, +.container-fluid:after, +.container:after, +.dl-horizontal dd:after, +.form-horizontal .form-group:after, +.modal-footer:after, +.modal-header:after, +.nav:after, +.navbar-collapse:after, +.navbar-header:after, +.navbar:after, +.pager:after, +.panel-body:after, +.row:after { + clear: both; +} + +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} + +.pull-right { + float: right!important; +} + +.pull-left { + float: left!important; +} + +.hide { + display: none!important; +} + +.show { + display: block!important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.hidden { + display: none!important; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} + +.visible-lg, +.visible-md, +.visible-sm, +.visible-xs { + display: none!important; +} + +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block { + display: none!important; +} + +@media (max-width:767px) { + .visible-xs { + display: block!important; + } + + table.visible-xs { + display: table!important; + } + + tr.visible-xs { + display: table-row!important; + } + + td.visible-xs, + th.visible-xs { + display: table-cell!important; + } +} + +@media (max-width:767px) { + .visible-xs-block { + display: block!important; + } +} + +@media (max-width:767px) { + .visible-xs-inline { + display: inline!important; + } +} + +@media (max-width:767px) { + .visible-xs-inline-block { + display: inline-block!important; + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm { + display: block!important; + } + + table.visible-sm { + display: table!important; + } + + tr.visible-sm { + display: table-row!important; + } + + td.visible-sm, + th.visible-sm { + display: table-cell!important; + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm-block { + display: block!important; + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm-inline { + display: inline!important; + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm-inline-block { + display: inline-block!important; + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md { + display: block!important; + } + + table.visible-md { + display: table!important; + } + + tr.visible-md { + display: table-row!important; + } + + td.visible-md, + th.visible-md { + display: table-cell!important; + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md-block { + display: block!important; + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md-inline { + display: inline!important; + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md-inline-block { + display: inline-block!important; + } +} + +@media (min-width:1200px) { + .visible-lg { + display: block!important; + } + + table.visible-lg { + display: table!important; + } + + tr.visible-lg { + display: table-row!important; + } + + td.visible-lg, + th.visible-lg { + display: table-cell!important; + } +} + +@media (min-width:1200px) { + .visible-lg-block { + display: block!important; + } +} + +@media (min-width:1200px) { + .visible-lg-inline { + display: inline!important; + } +} + +@media (min-width:1200px) { + .visible-lg-inline-block { + display: inline-block!important; + } +} + +@media (max-width:767px) { + .hidden-xs { + display: none!important; + } +} + +@media (min-width:768px) and (max-width:991px) { + .hidden-sm { + display: none!important; + } +} + +@media (min-width:992px) and (max-width:1199px) { + .hidden-md { + display: none!important; + } +} + +@media (min-width:1200px) { + .hidden-lg { + display: none!important; + } +} + +.visible-print { + display: none!important; +} + +@media print { + .visible-print { + display: block!important; + } + + table.visible-print { + display: table!important; + } + + tr.visible-print { + display: table-row!important; + } + + td.visible-print, + th.visible-print { + display: table-cell!important; + } +} + +.visible-print-block { + display: none!important; +} + +@media print { + .visible-print-block { + display: block!important; + } +} + +.visible-print-inline { + display: none!important; +} + +@media print { + .visible-print-inline { + display: inline!important; + } +} + +.visible-print-inline-block { + display: none!important; +} + +@media print { + .visible-print-inline-block { + display: inline-block!important; + } +} + +@media print { + .hidden-print { + display: none!important; + } +} + +/*# sourceMappingURL=bootstrap.min.css.map */ +.bootstrap-dialog .modal-header { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +.bootstrap-dialog .bootstrap-dialog-title { + color: #fff; + display: inline-block; + font-size: 16px; +} + +.bootstrap-dialog .bootstrap-dialog-message { + font-size: 14px; +} + +.bootstrap-dialog .bootstrap-dialog-button-icon { + margin-right: 3px; +} + +.bootstrap-dialog .bootstrap-dialog-close-button { + font-size: 20px; + float: right; + opacity: .9; + filter: alpha(opacity=90); +} + +.bootstrap-dialog .bootstrap-dialog-close-button:hover { + cursor: pointer; + opacity: 1; + filter: alpha(opacity=100); +} + +.bootstrap-dialog.type-default .modal-header { + background-color: #fff; +} + +.bootstrap-dialog.type-default .bootstrap-dialog-title { + color: #333; +} + +.bootstrap-dialog.type-info .modal-header { + background-color: #5bc0de; +} + +.bootstrap-dialog.type-primary .modal-header { + background-color: #337ab7; +} + +.bootstrap-dialog.type-success .modal-header { + background-color: #5cb85c; +} + +.bootstrap-dialog.type-warning .modal-header { + background-color: #f0ad4e; +} + +.bootstrap-dialog.type-danger .modal-header { + background-color: #d9534f; +} + +.bootstrap-dialog.size-large .bootstrap-dialog-title { + font-size: 24px; +} + +.bootstrap-dialog.size-large .bootstrap-dialog-close-button { + font-size: 30px; +} + +.bootstrap-dialog.size-large .bootstrap-dialog-message { + font-size: 18px; +} + +.bootstrap-dialog .icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + } +} + +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(359deg); + } +} + +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + + 100% { + -o-transform: rotate(359deg); + } +} + +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + + 100% { + -ms-transform: rotate(359deg); + } +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(359deg); + } +} +/*! + * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x + * + * Copyright 2013 Dan Grossman ( http://www.dangrossman.info ) + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Built for http://www.improvely.com + */ + +.daterangepicker.dropdown-menu { + max-width: none; + z-index: 3000; +} + +.daterangepicker.opensleft .ranges, +.daterangepicker.opensleft .calendar { + float: left; + margin: 4px; +} + +.daterangepicker.opensright .ranges, +.daterangepicker.opensright .calendar { + float: right; + margin: 4px; +} + +.daterangepicker .ranges { + width: 160px; + text-align: left; +} + +.daterangepicker .ranges .range_inputs>div { + float: left; +} + +.daterangepicker .ranges .range_inputs>div:nth-child(2) { + padding-left: 11px; +} + +.daterangepicker .calendar { + display: none; + max-width: 270px; +} + +.daterangepicker.show-calendar .calendar { + display: block; +} + +.daterangepicker .calendar.single .calendar-date { + border: none; +} + +.daterangepicker .calendar th, +.daterangepicker .calendar td { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + white-space: nowrap; + text-align: center; + min-width: 32px; +} + +.daterangepicker .daterangepicker_start_input label, +.daterangepicker .daterangepicker_end_input label { + color: #333; + display: block; + font-size: 11px; + font-weight: normal; + height: 20px; + line-height: 20px; + margin-bottom: 2px; + text-shadow: #fff 1px 1px 0px; + text-transform: uppercase; + width: 74px; +} + +.daterangepicker .ranges input { + font-size: 11px; +} + +.daterangepicker .ranges .input-mini { + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + display: block; + font-size: 11px; + height: 30px; + line-height: 30px; + vertical-align: middle; + margin: 0 0 10px 0; + padding: 0 6px; + width: 74px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0; + padding: 0; +} + +.daterangepicker .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + cursor: pointer; +} + +.daterangepicker .ranges li.active, +.daterangepicker .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; +} + +.daterangepicker .calendar-date { + border: 1px solid #ddd; + padding: 4px; + border-radius: 4px; + background: #fff; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 8px auto 0 auto; + line-height: 30px; +} + +.daterangepicker { + position: absolute; + background: #fff; + top: 100px; + left: 20px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker.opensleft:before { + position: absolute; + top: -7px; + right: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensleft:after { + position: absolute; + top: -6px; + right: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.opensright:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensright:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker table { + width: 100%; + margin: 0; +} + +.daterangepicker td, +.daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + white-space: nowrap; +} + +.daterangepicker td.off { + color: #999; +} + +.daterangepicker td.disabled { + color: #999; +} + +.daterangepicker td.available:hover, +.daterangepicker th.available:hover { + background: #eee; +} + +.daterangepicker td.in-range { + background: #ebf4f8; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.daterangepicker td.available + td.start-date { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.daterangepicker td.in-range + td.end-date { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.daterangepicker td.start-date.end-date { + -webkit-border-radius: 4px !important; + -moz-border-radius: 4px !important; + border-radius: 4px !important; +} + +.daterangepicker td.active, +.daterangepicker td.active:hover { + background-color: #357ebd; + border-color: #3071a9; + color: #fff; +} + +.daterangepicker td.week, +.daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker select.monthselect, +.daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, +.daterangepicker select.minuteselect, +.daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; +} + +.daterangepicker_start_input { + float: left; +} + +.daterangepicker_end_input { + float: left; + padding-left: 11px; +} + +.daterangepicker th.month { + width: auto; +} +div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} + +div.dataTables_length select { + width: 75px; + display: inline-block; +} + +div.dataTables_filter { + text-align: right; +} + +div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} + +div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; +} + +div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} + +div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} + +div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +@media screen and (max-width: 767px) { + div.dataTables_length, + div.dataTables_filter, + div.dataTables_info, + div.dataTables_paginate { + text-align: center; + } +} + +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} + +table.dataTable thead .sorting { + background: url('../images/sort_both.png') no-repeat center right; +} + +table.dataTable thead .sorting_asc { + background: url('../images/sort_asc.png') no-repeat center right; +} + +table.dataTable thead .sorting_desc { + background: url('../images/sort_desc.png') no-repeat center right; +} + +table.dataTable thead .sorting_asc_disabled { + background: url('../images/sort_asc_disabled.png') no-repeat center right; +} + +table.dataTable thead .sorting_desc_disabled { + background: url('../images/sort_desc_disabled.png') no-repeat center right; +} + +table.dataTable thead > tr > th { + padding-left: 18px; + padding-right: 18px; +} + +table.dataTable th:active { + outline: none; +} + +/* Scrolling */ + +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + +/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column + width calculations when using scrolling impossible to align columns. We have + to use separate + */ + +table.table-bordered.dataTable { + border-collapse: separate !important; +} + +table.table-bordered thead th, +table.table-bordered thead td { + border-left-width: 0; + border-top-width: 0; +} + +table.table-bordered tbody th, +table.table-bordered tbody td { + border-left-width: 0; + border-bottom-width: 0; +} + +table.table-bordered th:last-child, +table.table-bordered td:last-child { + border-right-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +/* + * TableTools styles + */ + +.table.dataTable tbody tr.active td, +.table.dataTable tbody tr.active th { + background-color: #08C; + color: white; +} + +.table.dataTable tbody tr.active:hover td, +.table.dataTable tbody tr.active:hover th { + background-color: #0075b0 !important; +} + +.table.dataTable tbody tr.active th > a, +.table.dataTable tbody tr.active td > a { + color: white; +} + +.table-striped.dataTable tbody tr.active:nth-child(odd) td, +.table-striped.dataTable tbody tr.active:nth-child(odd) th { + background-color: #017ebc; +} + +table.DTTT_selectable tbody tr { + cursor: pointer; +} + +div.DTTT .btn:hover { + text-decoration: none !important; +} + +ul.DTTT_dropdown.dropdown-menu { + z-index: 2003; +} + +ul.DTTT_dropdown.dropdown-menu a { + color: #333 !important; + /* needed only when demo_page.css is included */ +} + +ul.DTTT_dropdown.dropdown-menu li { + position: relative; +} + +ul.DTTT_dropdown.dropdown-menu li:hover a { + background-color: #0088cc; + color: white !important; +} + +div.DTTT_collection_background { + z-index: 2002; +} + +/* TableTools information display */ + +div.DTTT_print_info { + position: fixed; + top: 50%; + left: 50%; + width: 400px; + height: 150px; + margin-left: -200px; + margin-top: -75px; + text-align: center; + color: #333; + padding: 10px 30px; + opacity: 0.95; + background-color: white; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); +} + +div.DTTT_print_info h6 { + font-weight: normal; + font-size: 28px; + line-height: 28px; + margin: 1em; +} + +div.DTTT_print_info p { + font-size: 14px; + line-height: 20px; +} + +div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 60px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + padding-bottom: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0))); + background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); +} + +/* + * FixedColumns styles + */ + +div.DTFC_LeftHeadWrapper table, +div.DTFC_LeftFootWrapper table, +div.DTFC_RightHeadWrapper table, +div.DTFC_RightFootWrapper table, +table.DTFC_Cloned tr.even { + background-color: white; + margin-bottom: 0; +} + +div.DTFC_RightHeadWrapper table, +div.DTFC_LeftHeadWrapper table { + border-bottom: none !important; + margin-bottom: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightBodyWrapper table, +div.DTFC_LeftBodyWrapper table { + border-top: none; + margin: 0 !important; +} + +div.DTFC_RightBodyWrapper tbody tr:first-child th, +div.DTFC_RightBodyWrapper tbody tr:first-child td, +div.DTFC_LeftBodyWrapper tbody tr:first-child th, +div.DTFC_LeftBodyWrapper tbody tr:first-child td { + border-top: none; +} + +div.DTFC_RightFootWrapper table, +div.DTFC_LeftFootWrapper table { + border-top: none; + margin-top: 0 !important; +} + +/* + * FixedHeader styles + */ + +div.FixedHeader_Cloned table { + margin: 0 !important; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty { + cursor: default !important; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before { + display: none !important; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child { + position: relative; + padding-left: 30px; + cursor: pointer; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before { + top: 8px; + left: 4px; + height: 16px; + width: 16px; + display: block; + position: absolute; + color: white; + border: 2px solid white; + border-radius: 16px; + box-shadow: 0 0 3px #444; + box-sizing: content-box; + text-align: left; + font-family: 'Courier New', Courier, monospace; + text-indent: 4px; + line-height: 16px; + content: '+'; + background-color: #31b131; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before { + content: '-'; + background-color: #d33333; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before { + display: none; +} + +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child { + padding-left: 27px; +} + +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before { + top: 5px; + left: 4px; + height: 14px; + width: 14px; + border-radius: 14px; + line-height: 14px; + text-indent: 3px; +} + +table.dataTable.dtr-column > tbody > tr > td.control, +table.dataTable.dtr-column > tbody > tr > th.control { + position: relative; + cursor: pointer; +} + +table.dataTable.dtr-column > tbody > tr > td.control:before, +table.dataTable.dtr-column > tbody > tr > th.control:before { + top: 50%; + left: 50%; + height: 16px; + width: 16px; + margin-top: -10px; + margin-left: -10px; + display: block; + position: absolute; + color: white; + border: 2px solid white; + border-radius: 16px; + box-shadow: 0 0 3px #444; + box-sizing: content-box; + text-align: left; + font-family: 'Courier New', Courier, monospace; + text-indent: 4px; + line-height: 16px; + content: '+'; + background-color: #31b131; +} + +table.dataTable.dtr-column > tbody > tr.parent td.control:before, +table.dataTable.dtr-column > tbody > tr.parent th.control:before { + content: '-'; + background-color: #d33333; +} + +table.dataTable > tbody > tr.child { + padding: 0.5em 1em; +} + +table.dataTable > tbody > tr.child:hover { + background: transparent !important; +} + +table.dataTable > tbody > tr.child ul { + display: inline-block; + list-style-type: none; + margin: 0; + padding: 0; +} + +table.dataTable > tbody > tr.child ul li { + border-bottom: 1px solid #efefef; + padding: 0.5em 0; +} + +table.dataTable > tbody > tr.child ul li:first-child { + padding-top: 0; +} + +table.dataTable > tbody > tr.child ul li:last-child { + border-bottom: none; +} + +table.dataTable > tbody > tr.child span.dtr-title { + display: inline-block; + min-width: 75px; + font-weight: bold; +} + +div.dtr-modal { + position: fixed; + box-sizing: border-box; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 100; + padding: 10em 1em; +} + +div.dtr-modal div.dtr-modal-display { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 50%; + height: 50%; + overflow: auto; + margin: auto; + z-index: 102; + overflow: auto; + background-color: #f5f5f7; + border: 1px solid black; + border-radius: 0.5em; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6); +} + +div.dtr-modal div.dtr-modal-content { + position: relative; + padding: 1em; +} + +div.dtr-modal div.dtr-modal-close { + position: absolute; + top: 6px; + right: 6px; + width: 22px; + height: 22px; + border: 1px solid #eaeaea; + background-color: #f9f9f9; + text-align: center; + border-radius: 3px; + cursor: pointer; + z-index: 12; +} + +div.dtr-modal div.dtr-modal-close:hover { + background-color: #eaeaea; +} + +div.dtr-modal div.dtr-modal-background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 101; + background: rgba(0, 0, 0, 0.6); +} + +@media screen and (max-width: 767px) { + div.dtr-modal div.dtr-modal-display { + width: 95%; + } +} +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; +} + +.select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; +} + +.select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; +} + +.select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; +} + +.select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline-block; + overflow: hidden; + padding-left: 8px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.select2-container .select2-search--inline { + float: left; +} + +.select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; +} + +.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; +} + +.select2-results { + display: block; +} + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; +} + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; +} + +.select2-results__option[aria-selected] { + cursor: pointer; +} + +.select2-container--open .select2-dropdown { + left: 0; +} + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-search--dropdown { + display: block; + padding: 4px; +} + +.select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; +} + +.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +.select2-search--dropdown.select2-search--hide { + display: none; +} + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; +} + +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; +} + +.select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; +} + +.select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; +} + +.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; +} + +.select2-container--default .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; +} + +.select2-container--default .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; + float: left; +} + +.select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; +} + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder { + float: right; +} + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; +} + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; +} + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, +.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, +.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; +} + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; +} + +.select2-container--default .select2-results>.select2-results__options { + max-height: 200px; + overflow-y: auto; +} + +.select2-container--default .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; +} + +.select2-container--default .select2-results__option[aria-selected=true] { + background-color: #ddd; +} + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: #5897fb; + color: white; +} + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} + +.select2-container--classic .select2-selection--single { + background-color: #f6f6f6; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, #ffffff 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #ffffff 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, #ffffff 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); +} + +.select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; +} + +.select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; +} + +.select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; +} + +.select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; +} + +.select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#cccccc', GradientType=0); +} + +.select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; +} + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; +} + +.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; +} + +.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); +} + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #ffffff 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #ffffff 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); +} + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; +} + +.select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__rendered { + list-style: none; + margin: 0; + padding: 0 5px; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + color: #888; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; +} + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + float: right; +} + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; +} + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; +} + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; +} + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; +} + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; +} + +.select2-container--classic .select2-dropdown--below { + border-top: none; +} + +.select2-container--classic .select2-results>.select2-results__options { + max-height: 200px; + overflow-y: auto; +} + +.select2-container--classic .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--classic .select2-results__option[aria-disabled=true] { + color: grey; +} + +.select2-container--classic .select2-results__option--highlighted[aria-selected] { + background-color: #3875d7; + color: white; +} + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; +} +/*! Select2 Bootstrap 3 CSS v1.4.6 | MIT License | github.com/t0m/select2-bootstrap-css */ + +.select2-container.form-control { + background: transparent; + box-shadow: none; + border: 0; + display: block; + margin: 0; + padding: 0; +} + +.select2-container .select2-choices .select2-search-field input, +.select2-container .select2-choice, +.select2-container .select2-choices { + background: 0; + padding: 0; + border-color: #ccc; + border-radius: 4px; + color: #555; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + background-color: white; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); +} + +.select2-search input { + border-color: #ccc; + border-radius: 4px; + color: #555; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + background-color: white; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); +} + +.select2-container .select2-choices .select2-search-field input { + -webkit-box-shadow: none; + box-shadow: none; +} + +.select2-container .select2-choice { + height: 34px; + line-height: 1.42857; +} + +.select2-container.select2-container-multi.form-control { + height: auto; +} + +.select2-container.input-sm .select2-choice, +.input-group-sm .select2-container .select2-choice { + height: 30px; + line-height: 1.5; + border-radius: 3px; +} + +.select2-container.input-lg .select2-choice, +.input-group-lg .select2-container .select2-choice { + height: 46px; + line-height: 1.33333; + border-radius: 6px; +} + +.select2-container-multi .select2-choices .select2-search-field input { + height: 32px; +} + +.select2-container-multi.input-sm .select2-choices .select2-search-field input, +.input-group-sm .select2-container-multi .select2-choices .select2-search-field input { + height: 28px; +} + +.select2-container-multi.input-lg .select2-choices .select2-search-field input, +.input-group-lg .select2-container-multi .select2-choices .select2-search-field input { + height: 44px; +} + +.select2-container-multi .select2-choices .select2-search-field input { + margin: 0; +} + +.select2-chosen, +.select2-choice>span:first-child, +.select2-container .select2-choices .select2-search-field input { + padding: 6px 12px; +} + +.input-sm .select2-chosen, +.input-group-sm .select2-chosen, +.input-sm .select2-choice>span:first-child, +.input-group-sm .select2-choice>span:first-child, +.input-sm .select2-choices .select2-search-field input, +.input-group-sm .select2-choices .select2-search-field input { + padding: 5px 10px; +} + +.input-lg .select2-chosen, +.input-group-lg .select2-chosen, +.input-lg .select2-choice>span:first-child, +.input-group-lg .select2-choice>span:first-child, +.input-lg .select2-choices .select2-search-field input, +.input-group-lg .select2-choices .select2-search-field input { + padding: 10px 16px; +} + +.select2-container-multi .select2-choices .select2-search-choice { + margin-top: 5px; + margin-bottom: 3px; +} + +.select2-container-multi.input-sm .select2-choices .select2-search-choice, +.input-group-sm .select2-container-multi .select2-choices .select2-search-choice { + margin-top: 3px; + margin-bottom: 2px; +} + +.select2-container-multi.input-lg .select2-choices .select2-search-choice, +.input-group-lg .select2-container-multi .select2-choices .select2-search-choice { + line-height: 24px; +} + +.select2-container .select2-choice .select2-arrow, +.select2-container .select2-choice div { + border-left: none; + background: 0; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} + +.select2-dropdown-open .select2-choice .select2-arrow, +.select2-dropdown-open .select2-choice div { + border-left-color: transparent; + background: 0; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} + +.select2-container .select2-choice .select2-arrow b, +.select2-container .select2-choice div b { + background-position: 0 3px; +} + +.select2-dropdown-open .select2-choice .select2-arrow b, +.select2-dropdown-open .select2-choice div b { + background-position: -18px 3px; +} + +.select2-container.input-sm .select2-choice .select2-arrow b, +.input-group-sm .select2-container .select2-choice .select2-arrow b, +.select2-container.input-sm .select2-choice div b, +.input-group-sm .select2-container .select2-choice div b { + background-position: 0 1px; +} + +.select2-dropdown-open.input-sm .select2-choice .select2-arrow b, +.input-group-sm .select2-dropdown-open .select2-choice .select2-arrow b, +.select2-dropdown-open.input-sm .select2-choice div b, +.input-group-sm .select2-dropdown-open .select2-choice div b { + background-position: -18px 1px; +} + +.select2-container.input-lg .select2-choice .select2-arrow b, +.input-group-lg .select2-container .select2-choice .select2-arrow b, +.select2-container.input-lg .select2-choice div b, +.input-group-lg .select2-container .select2-choice div b { + background-position: 0 9px; +} + +.select2-dropdown-open.input-lg .select2-choice .select2-arrow b, +.input-group-lg .select2-dropdown-open .select2-choice .select2-arrow b, +.select2-dropdown-open.input-lg .select2-choice div b, +.input-group-lg .select2-dropdown-open .select2-choice div b { + background-position: -18px 9px; +} + +.has-warning .select2-choice, +.has-warning .select2-choices { + border-color: #8a6d3b; +} + +.has-warning .select2-container-active .select2-choice, +.has-warning .select2-container-multi.select2-container-active .select2-choices { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b; +} + +.has-warning.select2-drop-active { + border-color: #66512c; +} + +.has-warning.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #66512c; +} + +.has-error .select2-choice, +.has-error .select2-choices { + border-color: #a94442; +} + +.has-error .select2-container-active .select2-choice, +.has-error .select2-container-multi.select2-container-active .select2-choices { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483; +} + +.has-error.select2-drop-active { + border-color: #843534; +} + +.has-error.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #843534; +} + +.has-success .select2-choice, +.has-success .select2-choices { + border-color: #3c763d; +} + +.has-success .select2-container-active .select2-choice, +.has-success .select2-container-multi.select2-container-active .select2-choices { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168; +} + +.has-success.select2-drop-active { + border-color: #2b542c; +} + +.has-success.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #2b542c; +} + +.select2-container-active .select2-choice, +.select2-container-multi.select2-container-active .select2-choices { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +.select2-drop-active { + border-color: #66afe9; +} + +.select2-drop-auto-width, +.select2-drop.select2-drop-above.select2-drop-active { + border-top-color: #66afe9; +} + +.input-group.select2-bootstrap-prepend [class^="select2-choice"] { + border-bottom-left-radius: 0!important; + border-top-left-radius: 0!important; +} + +.input-group.select2-bootstrap-append [class^="select2-choice"] { + border-bottom-right-radius: 0!important; + border-top-right-radius: 0!important; +} + +.select2-dropdown-open [class^="select2-choice"] { + border-bottom-right-radius: 0!important; + border-bottom-left-radius: 0!important; +} + +.select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-top-right-radius: 0!important; + border-top-left-radius: 0!important; + border-bottom-right-radius: 4px!important; + border-bottom-left-radius: 4px!important; + background: white; + filter: none; +} + +.input-group.select2-bootstrap-prepend .select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-bottom-left-radius: 0!important; + border-top-left-radius: 0!important; +} + +.input-group.select2-bootstrap-append .select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-bottom-right-radius: 0!important; + border-top-right-radius: 0!important; +} + +.input-group.input-group-sm.select2-bootstrap-prepend .select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-bottom-right-radius: 3px!important; +} + +.input-group.input-group-lg.select2-bootstrap-prepend .select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-bottom-right-radius: 6px!important; +} + +.input-group.input-group-sm.select2-bootstrap-append .select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-bottom-left-radius: 3px!important; +} + +.input-group.input-group-lg.select2-bootstrap-append .select2-dropdown-open.select2-drop-above [class^="select2-choice"] { + border-bottom-left-radius: 6px!important; +} + +.select2-results .select2-highlighted { + color: white; + background-color: #337ab7; +} + +.select2-bootstrap-append .select2-container-multiple, +.select2-bootstrap-append .input-group-btn, +.select2-bootstrap-append .input-group-btn .btn, +.select2-bootstrap-prepend .select2-container-multiple, +.select2-bootstrap-prepend .input-group-btn, +.select2-bootstrap-prepend .input-group-btn .btn { + vertical-align: top; +} + +.select2-container-multi .select2-choices .select2-search-choice { + color: #555; + background: white; + border-color: #ccc; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: none; + box-shadow: none; +} + +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #ebebeb; + border-color: #adadad; + color: #333; + -webkit-box-shadow: none; + box-shadow: none; +} + +.select2-search-choice-close { + margin-top: -7px; + top: 50%; +} + +.select2-container .select2-choice abbr { + top: 50%; +} + +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-selection-limit { + background-color: #fcf8e3; + color: #8a6d3b; +} + +.select2-container.select2-container-disabled .select2-choice, +.select2-container.select2-container-disabled .select2-choices { + cursor: not-allowed; + background-color: #eee; + border-color: #ccc; +} + +.select2-container.select2-container-disabled .select2-choice .select2-arrow, +.select2-container.select2-container-disabled .select2-choice div, +.select2-container.select2-container-disabled .select2-choices .select2-arrow, +.select2-container.select2-container-disabled .select2-choices div { + background-color: transparent; + border-left: 1px solid transparent; +} + +.select2-search input.select2-active, +.select2-container-multi .select2-choices .select2-search-field input.select2-active, +.select2-more-results.select2-active { + background-position: 99%; + background-position: right 4px center; +} + +.select2-offscreen, +.select2-offscreen:focus { + width: 1px!important; + height: 1px!important; + position: absolute!important; +} +/* iCheck plugin Square skin, blue +----------------------------------- */ + +.icheckbox_square-blue, +.iradio_square-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-blue { + background-position: 0 0; +} + +.icheckbox_square-blue.hover { + background-position: -24px 0; +} + +.icheckbox_square-blue.checked { + background-position: -48px 0; +} + +.icheckbox_square-blue.disabled { + background-position: -72px 0; + cursor: default; +} + +.icheckbox_square-blue.checked.disabled { + background-position: -96px 0; +} + +.iradio_square-blue { + background-position: -120px 0; +} + +.iradio_square-blue.hover { + background-position: -144px 0; +} + +.iradio_square-blue.checked { + background-position: -168px 0; +} + +.iradio_square-blue.disabled { + background-position: -192px 0; + cursor: default; +} + +.iradio_square-blue.checked.disabled { + background-position: -216px 0; +} + +/* HiDPI support */ + +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .icheckbox_square-blue, + .iradio_square-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} +/*! X-editable - v1.5.1 +* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery +* http://github.com/vitalets/x-editable +* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ + +.editableform { + margin-bottom: 0; + /* overwrites bootstrap margin */ +} + +.editableform .control-group { + margin-bottom: 0; + /* overwrites bootstrap margin */ + white-space: nowrap; + /* prevent wrapping buttons on new line */ + line-height: 20px; + /* overwriting bootstrap line-height. See #133 */ +} + +/* + BS3 width:1005 for inputs breaks editable form in popup + See: https://github.com/vitalets/x-editable/issues/393 +*/ + +.editableform .form-control { + width: auto; +} + +.editable-buttons { + display: inline-block; + /* should be inline to take effect of parent's white-space: nowrap */ + vertical-align: top; + margin-left: 7px; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons.editable-buttons-bottom { + display: block; + margin-top: 7px; + margin-left: 0; +} + +.editable-input { + vertical-align: top; + display: inline-block; + /* should be inline to take effect of parent's white-space: nowrap */ + width: auto; + /* bootstrap-responsive has width: 100% that breakes layout */ + white-space: normal; + /* reset white-space decalred in parent*/ + /* display-inline emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons .editable-cancel { + margin-left: 7px; +} + +/*for jquery-ui buttons need set height to look more pretty*/ + +.editable-buttons button.ui-button-icon-only { + height: 24px; + width: 30px; +} + +.editableform-loading { + background: url('../img/loading.gif') center center no-repeat; + height: 25px; + width: auto; + min-width: 25px; +} + +.editable-inline .editableform-loading { + background-position: left 5px; +} + +.editable-error-block { + max-width: 300px; + margin: 5px 0 0 0; + width: auto; + white-space: normal; +} + +/*add padding for jquery ui*/ + +.editable-error-block.ui-state-error { + padding: 3px; +} + +.editable-error { + color: red; +} + +/* ---- For specific types ---- */ + +.editableform .editable-date { + padding: 0; + margin: 0; + float: left; +} + +/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */ + +.editable-inline .add-on .icon-th { + margin-top: 3px; + margin-left: 1px; +} + +/* checklist vertical alignment */ + +.editable-checklist label input[type="checkbox"], +.editable-checklist label span { + vertical-align: middle; + margin: 0; +} + +.editable-checklist label { + white-space: nowrap; +} + +/* set exact width of textarea to fit buttons toolbar */ + +.editable-wysihtml5 { + width: 566px; + height: 250px; +} + +/* clear button shown as link in date inputs */ + +.editable-clear { + clear: both; + font-size: 0.9em; + text-decoration: none; + text-align: right; +} + +/* IOS-style clear button for text inputs */ + +.editable-clear-x { + background: url('../img/clear.png') center center no-repeat; + display: block; + width: 13px; + height: 13px; + position: absolute; + opacity: 0.6; + z-index: 100; + top: 50%; + right: 6px; + margin-top: -6px; +} + +.editable-clear-x:hover { + opacity: 1; +} + +.editable-pre-wrapped { + white-space: pre-wrap; +} + +.editable-container.editable-popup { + max-width: none !important; + /* without this rule poshytip/tooltip does not stretch */ +} + +.editable-container.popover { + width: auto; + /* without this rule popover does not stretch */ +} + +.editable-container.editable-inline { + display: inline-block; + vertical-align: middle; + width: auto; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-container.ui-widget { + font-size: inherit; + /* jqueryui widget font 1.1em too big, overwrite it */ + z-index: 9990; + /* should be less than select2 dropdown z-index to close dropdown first when click */ +} + +.editable-click, +a.editable-click, +a.editable-click:hover { + text-decoration: none; + border-bottom: dashed 1px #0088cc; +} + +.editable-click.editable-disabled, +a.editable-click.editable-disabled, +a.editable-click.editable-disabled:hover { + color: #585858; + cursor: default; + border-bottom: none; +} + +.editable-empty, +.editable-empty:hover, +.editable-empty:focus { + font-style: italic; + color: #DD1144; + /* border-bottom: none; */ + text-decoration: none; +} + +.editable-unsaved { + font-weight: bold; +} + +.editable-unsaved:after { + /* content: '*'*/ +} + +.editable-bg-transition { + -webkit-transition: background-color 1400ms ease-out; + -moz-transition: background-color 1400ms ease-out; + -o-transition: background-color 1400ms ease-out; + -ms-transition: background-color 1400ms ease-out; + transition: background-color 1400ms ease-out; +} + +/*see https://github.com/vitalets/x-editable/issues/139 */ + +.form-horizontal .editable { + padding-top: 5px; + display: inline-block; +} + +.input-append.date .add-on i, +.input-prepend.date .add-on i { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} + +.input-daterange input { + text-align: center; +} + +.input-daterange input:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-daterange input:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-daterange .add-on { + display: inline-block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + vertical-align: middle; + background-color: #eeeeee; + border: 1px solid #ccc; + margin-left: -5px; + margin-right: -5px; +} +/*! + * Start Bootstrap - SB Admin Bootstrap Admin Template (http://startbootstrap.com) + * Code licensed under the Apache License v2.0. + * For details, see http://www.apache.org/licenses/LICENSE-2.0. + */ + +/* Global Styles */ + +body { + font-family: Open Sans; + margin-top: 50px; +} + +#wrapper { + padding-left: 0; +} + +#page-wrapper { + width: 100%; + padding: 0; + background-color: #fff; +} + +.huge { + font-size: 50px; + line-height: normal; +} + +@media (min-width: 768px) { + #wrapper { + padding-left: 225px; + } +} + +/* Top Navigation */ + +.navbar-maquetacion { + background-color: #ddd !important; +} + +.top-nav { + padding: 0 15px; +} + +.top-nav > li { + display: inline-block; + float: left; +} + +.top-nav > li > a { + line-height: 20px; + padding-top: 15px; + padding-bottom: 15px; + color: #999; +} + +.top-nav > li > a:hover, +.top-nav > li > a:focus, +.top-nav > .open > a, +.top-nav > .open > a:hover, +.top-nav > .open > a:focus { + color: #fff; + background-color: #000; +} + +.top-nav > .open > .dropdown-menu { + position: absolute; + float: left; + margin-top: 0; + border: 1px solid rgba(0, 0, 0, 0.15); + border-top-left-radius: 0; + border-top-right-radius: 0; + background-color: #fff; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} + +.top-nav > .open > .dropdown-menu > li > a { + white-space: normal; +} + +.top-nav-left { + display: none; +} + +@media (min-width: 768px) { + .top-nav-left { + display: inline; + margin-left: 95px; + } +} + +ul.message-dropdown { + overflow-x: hidden; + overflow-y: auto; + max-height: 250px; + padding: 0; +} + +li.message-preview { + width: 275px; + border-bottom: 1px solid rgba(0, 0, 0, 0.15); +} + +li.message-preview > a { + padding-top: 15px; + padding-bottom: 15px; +} + +li.message-footer { + margin: 5px 0; +} + +ul.alert-dropdown { + width: 200px; +} + +/* Side Navigation */ + +@media (min-width: 768px) { + .side-nav { + position: fixed; + top: 51px; + left: 225px; + overflow-y: auto; + width: 225px; + margin-left: -225px; + border: none; + border-radius: 0; + } + + .side-nav.produccion { + background-color: #000000; + } + + .side-nav.desarrollo { + background-color: #006847; + border-color: #006847; + } + + .side-nav.local { + background-color: #2E70A5; + border-color: #2E70A5; + } + + .side-nav > li > a { + width: 225px; + } + + .side-nav li a:hover, + .side-nav li a:focus { + outline: none; + background-color: #000 !important; + } +} + +.side-nav > li > ul { + padding: 0; +} + +.side-nav > li > ul > li > a { + display: block; + padding: 10px 15px 10px 38px; + text-decoration: none; + color: #999; +} + +.side-nav > li > ul > li > a:hover { + color: #fff; +} + +/* Flot Chart Containers */ + +.flot-chart { + display: block; + height: 400px; +} + +.flot-chart-content { + width: 100%; + height: 100%; +} + +/* Custom Colored Panels */ + +.huge { + font-size: 40px; +} + +.panel-green { + border-color: #abc335; +} + +.panel-green .panel-heading { + color: #fff; + border-color: #abc335; + background-color: #abc335; +} + +.panel-green a { + color: #abc335; +} + +.panel-green a:hover { + color: #3d8b3d; +} + +.panel-red { + border-color: #d9534f; +} + +.panel-red .panel-heading { + color: #fff; + border-color: #d9534f; + background-color: #d9534f; +} + +.panel-red a { + color: #d9534f; +} + +.panel-red a:hover { + color: #b52b27; +} + +.panel-yellow { + border-color: #e1a31a; +} + +.panel-yellow .panel-heading { + color: #fff; + border-color: #e1a31a; + background-color: #e1a31a; +} + +.panel-yellow a { + color: #e1a31a; +} + +.panel-yellow a:hover { + color: #df8a13; +} + +.page-header { + margin: 10px 0 10px; +} + +.breadcrumb { + margin-bottom: 10px; +} + +.right { + text-align: right; +} + +.details-control { + position: relative; + cursor: pointer; +} + +tr.details td.details-control { + background: url('/assets/images/details_close.png') no-repeat center center; +} + +td.details-control { + cursor: pointer; + background: url('/assets/images/details_open.png') no-repeat center center; +} + +.panel.inside-table .panel-body { + /* padding: 0px; */ +} + +.inside-table .table-responsive { + margin-bottom: 10px; +} + +.inside-table .table-responsive table { + margin-bottom: 0; +} + +textarea.code { + font-family: monospace; + min-height: 400px; +} + +.table-responsive { + overflow-x: visible; +} + +.green { + color: green; +} + +.red { + color: red; +} + +.blue { + color: blue; +} + +.incidencia { + background: #EBC22E; +} + +.right { + text-align: right !important; +} + +.no-margin { + margin: 0; +} + +.no-pl { + padding-left: 0 !important; +} + +.no-pr { + padding-right: 0 !important; +} + +.panel-user .huge { + font-size: 30px; +} + +.container-fluid.maquina { + padding-top: 10px; +} + +.dropzone { + width: 100%; + height: 100%; + padding: 20px; + text-align: center; +} + +.navbar-brand { + display: block; + width: 225px; + padding-left: 120px; + height: 50px; + text-indent: -9999px; + background-repeat: no-repeat; + background-position: center; +} + +.navbar-brand.safekat-erp { + background-image: url('../images/logo-login-safekat-erp.png'); + background-size: 115px; +} + +.navbar-inverse.produccion { + background-color: #000000; +} + +.navbar-inverse.desarrollo { + background-color: #006847; + border-color: #006847; +} + +.navbar-inverse.local { + background-color: #2E70A5; + border-color: #2E70A5; +} + +.navbar ul.top-nav-left { + margin-left: 0; +} + +.navbar ul.top-nav-left.produccion { + background-color: #000000; +} + +.navbar ul.top-nav-left.produccion li > a { + background-color: #000000; + color: #fff; +} + +.navbar ul.top-nav-left.produccion li > a:hover, +.navbar ul.top-nav-left.produccion li > a:focus { + color: #9d9d9d; + background-color: #000000; +} + +.navbar ul.top-nav-left.produccion .active > a, +.navbar ul.top-nav-left.produccion .active > a:focus, +.navbar ul.top-nav-left.produccion .active > a:hover { + color: #9d9d9d; + background-color: #000000; +} + +.navbar ul.top-nav-left.desarrollo { + background-color: #006847; +} + +.navbar ul.top-nav-left.desarrollo li > a { + background-color: #006847; + color: #fff; +} + +.navbar ul.top-nav-left.desarrollo li > a:hover, +.navbar ul.top-nav-left.desarrollo li > a:focus { + background-color: #015037; + color: #9d9d9d; +} + +.navbar ul.top-nav-left.desarrollo .active > a, +.navbar ul.top-nav-left.desarrollo .active > a:focus, +.navbar ul.top-nav-left.desarrollo .active > a:hover { + background-color: #015037; + color: #9d9d9d; +} + +.navbar ul.top-nav-left.local { + background-color: #2E70A5; +} + +.navbar ul.top-nav-left.local li > a { + background-color: #2E70A5; + color: #fff; +} + +.navbar ul.top-nav-left.local li > a:hover, +.navbar ul.top-nav-left.local li > a:focus { + background-color: #0f2dcd; + color: #9d9d9d; +} + +.navbar ul.top-nav-left.local .active > a, +.navbar ul.top-nav-left.local .active > a:focus, +.navbar ul.top-nav-left.local .active > a:hover { + background-color: #0f2dcd; + color: #9d9d9d; +} + +.text-area-height-100 { + height: 100px !important; +} + +.text-area-height-150 { + height: 150px !important; +} + +ul.navbar-right .open > .dropdown-menu > li > a { + color: #000000; +} + +ul.navbar-right .open > .dropdown-menu > li > a:hover { + color: #fff; +} + +ul.navbar-right.produccion li > a { + line-height: 20px; + padding-top: 15px; + padding-bottom: 15px; + color: #fff; +} + +ul.navbar-right.produccion .open > .dropdown-menu > li > a { + color: #000000; +} + +ul.navbar-right.produccion li > a:hover, +ul.navbar-right.produccion li > a:focus, +ul.navbar-right.produccion .open > a, +ul.navbar-right.produccion .open > a:hover, +ul.navbar-right.produccion .open > a:focus { + color: #9d9d9d; + background-color: #000000; +} + +ul.navbar-right.desarrollo li > a { + line-height: 20px; + padding-top: 15px; + padding-bottom: 15px; + color: #fff; +} + +ul.navbar-right.desarrollo .open > .dropdown-menu > li > a { + color: #000000; +} + +ul.navbar-right.desarrollo li > a:hover, +ul.navbar-right.desarrollo li > a:focus, +ul.navbar-right.desarrollo .open > a, +ul.navbar-right.desarrollo .open > a:hover, +ul.navbar-right.desarrollo .open > a:focus { + color: #9d9d9d; + background-color: #006847; +} + +ul.navbar-right.local li > a { + line-height: 20px; + padding-top: 15px; + padding-bottom: 15px; + color: #fff; +} + +ul.navbar-right.local .open > .dropdown-menu > li > a { + color: #0e38d0; +} + +ul.navbar-right.local li > a:hover, +ul.navbar-right.local li > a:focus, +ul.navbar-right.local .open > a, +ul.navbar-right.local .open > a:hover, +ul.navbar-right.local .open > a:focus { + color: #9d9d9d; + background-color: #2E70A5; +} + +ul.hidden-xs li.messages-count { + width: 50px; +} + +ul.hidden-xs li.messages-count > a { + color: #fff; +} + +ul.hidden-xs li.messages-count > a:hover, +ul.hidden-xs li.messages-count > a:focus { + color: #9d9d9d; +} + +.navbar-nav { + overflow-y: auto; + height: 100%; +} + +.navbar-nav span.bubble { + font: bold 12px Tahoma; + position: absolute; + top: 10px; + left: 25px; + padding: 1px 3px 1px 2px; + color: #fff; + border-width: 1px; + border-color: #e23923 #d83722 #c0311e; + border-left: 1px solid #d83722; + border-radius: 3px; + background-color: #e44c34; + box-shadow: -1px 1px 0 rgba(0, 0, 0, 0.25); +} + +.side-nav { + position: fixed; + top: 51px; + left: 225px; + overflow-y: auto; + width: 225px; + margin-left: -225px; + border-radius: 0; +} + +.side-nav.produccion { + background: #000000 top left repeat; +} + +.side-nav.produccion li { + margin-bottom: 0; + background-color: #000000; + color: #fff; +} + +.side-nav.produccion li > a { + width: 225px; + color: #fff; + background-color: #000000; +} + +.side-nav.produccion li a:hover, +.side-nav.produccion li a:focus { + outline: none; + color: #999; + background-color: #000000 !important; +} + +.side-nav.produccion li.panel.active > a, +.side-nav.produccion li.panel.active > a:focus, +.side-nav.produccion li.panel.active > a:hover { + color: #9d9d9d; + background-color: #000000; +} + +.side-nav.produccion li > ul { + padding: 0; +} + +.side-nav.produccion li > ul > li > a { + display: block; + padding: 10px 15px 10px 38px; + text-decoration: none; + color: #fff; + background-color: #000000; +} + +.side-nav.produccion li > ul > li > a:hover { + color: #999; + background-color: #000000; +} + +.side-nav.produccion.colapsed-menu { + width: 0; + background: transparent; +} + +.side-nav.desarrollo { + background: #006847 top left repeat; +} + +.side-nav.desarrollo li { + margin-bottom: 0; + background-color: #006847; + color: #fff; +} + +.side-nav.desarrollo li > a { + width: 225px; + color: #fff; + background-color: #006847; +} + +.side-nav.desarrollo li a:hover, +.side-nav.desarrollo li a:focus { + outline: none; + color: #999; + background-color: #006847 !important; + border: none; +} + +.side-nav.desarrollo li.panel.active > a, +.side-nav.desarrollo li.panel.active > a:focus, +.side-nav.desarrollo li.panel.active > a:hover { + color: #9d9d9d; + background-color: #006847; +} + +.side-nav.desarrollo li > ul { + padding: 0; +} + +.side-nav.desarrollo li > ul > li > a { + display: block; + padding: 10px 15px 10px 38px; + text-decoration: none; + color: #fff; + background-color: #006847; +} + +.side-nav.desarrollo li > ul > li > a:hover { + color: #999; + background-color: #006847; +} + +.side-nav.local { + background: #2E70A5 top left repeat; +} + +.side-nav.local li { + margin-bottom: 0; + background-color: #2E70A5; + color: #fff; +} + +.side-nav.local li > a { + width: 225px; + color: #fff; + background-color: #2E70A5; +} + +.side-nav.local li a:hover, +.side-nav.local li a:focus { + outline: none; + color: #999; + background-color: #2E70A5 !important; +} + +.side-nav.local li.panel.active > a, +.side-nav.local li.panel.active > a:focus, +.side-nav.local li.panel.active > a:hover { + color: #9d9d9d; + background-color: #2E70A5; +} + +.side-nav.local li > ul { + padding: 0; +} + +.side-nav.local li > ul > li > a { + display: block; + padding: 10px 15px 10px 38px; + text-decoration: none; + color: #fff; + background-color: #2E70A5; +} + +.side-nav.local li > ul > li > a:hover { + color: #999; + background-color: #2E70A5; +} + +.side-nav.local.colapsed-menu { + background-color: transparent; + width: 0; +} + +.side-nav.colapsed-menu { + background-color: transparent; + width: 0; +} + +@media (max-width: 1171px) { + .navbar-inverse .nav > li > a { + padding: 15px 10px; + } +} + +@media (max-width: 768px) { + .side-nav { + display: none; + } +} + +#page-wrapper pre { + overflow-y: scroll; +} + +.navbar-header { + color: white; +} + +.navbar-header.produccion { + background-color: #000000; +} + +.navbar-header.desarrollo { + background-color: gray; +} + +.navbar-header.local { + background-color: #2E70A5; +} + +.nav-pills { + margin-bottom: 10px; +} + +.nav-pills .with-menssages { + font-weight: bolder; +} + +.nav-pills.warning li.active a { + background-color: #f0ad4e; +} + +.bootstrap-dialog.type-primary .modal-header { + background-color: #373a3d; +} + +.center { + text-align: center; +} + +.link-disabled { + cursor: default; + pointer-events: none; +} + +.select2-container .select2-selection--single { + height: 34px; +} + +.spinner { + width: 100px; +} + +.spinner input { + padding-right: 3px; + padding-left: 3px; + text-align: right; + border-top-left-radius: 4px !important; + border-bottom-left-radius: 4px !important; +} + +.input-group-btn-vertical { + position: relative; + display: table-cell; + width: 1%; + vertical-align: middle; + white-space: nowrap; +} + +.input-group-btn-vertical > .btn { + position: relative; + display: block; + float: none; + width: 100%; + max-width: 100%; + margin-left: -1px; + padding: 8px; + border-radius: 0; +} + +.input-group-btn-vertical > .btn:first-child { + border-top-right-radius: 4px; +} + +.input-group-btn-vertical > .btn:last-child { + margin-top: -2px; + border-bottom-right-radius: 4px; +} + +.input-group-btn-vertical i { + position: absolute; + top: 0; + left: 4px; +} + +.pedido-files .dropzone-cover { + margin-top: 15px; +} + +.pedido-files .resume-upload { + height: 40px; + margin-top: 5px; +} + +.pedido-files .resume-upload p { + display: block; + float: left; +} + +.pedido-files .resume-upload button { + float: right; +} + +table .Select { + border: 1px solid #ccc; + border-radius: 4px; +} + +table.totales-pedido { + width: 100%; +} + +table.totales-pedido tr.margen .input, +table.totales-pedido tr.descuento .input { + float: right; + padding-right: 0; +} + +table.totales-pedido tr.margen .input input, +table.totales-pedido tr.descuento .input input { + height: 25px; +} + +table.totales-pedido tr.total { + font-size: 2em; +} + +table.mostrar-albaran { + width: 100%; +} + +table.mostrar-albaran td.boton { + padding-right: 2px; + width: 48%; +} + +table.papeles-por-defecto tr.c1 td { + background-color: rgba(0, 68, 204, 0.15); +} + +table.papeles-por-defecto tr.c2 td { + background-color: rgba(128, 128, 128, 0.3); +} + +table tr.presupuesto { + background-color: #a6a6a6; +} + +table tr.aceptado { + background-color: #74a174; +} + +table tr.validado { + background-color: #94bcbc; +} + +table tr.validado.in_production { + background-color: #a7c7b4; +} + +table.dataTable { + width: 100%; + border-collapse: collapse; +} + +table.dataTable thead .table-search { + width: 100%; + padding-left: 5px; + padding-right: 5px; +} + +table.dataTable thead .table-search .Select { + padding: 0; +} + +table.dataTable thead .table-search .Select .Select-control, +table.dataTable thead .table-search .Select .Select-placeholder, +table.dataTable thead .table-search .Select .Select-input, +table.dataTable thead .table-search .Select input { + height: 26px; +} + +table.dataTable thead .table-search .Select .Select-placeholder, +table.dataTable thead .table-search .Select .Select-value { + text-align: left; +} + +table.dataTable thead .table-search.form-group, +table.dataTable thead .table-search .form-group, +table.dataTable thead .table-search .form-control { + width: 100%; +} + +table.dataTable thead .datatable-input-search { + font-size: 12px; + font-weight: normal; + width: 80px; + height: 30px; + padding: 5px; + text-align: center; +} + +table.dataTable thead .datatable-input-search.range { + width: 120px; +} + +table.dataTable thead tr.filter th { + padding-right: 0; + padding-left: 0; +} + +table.dataTable thead tr.filter td { + border-bottom: 2px solid #ddd; +} + +table.dataTable thead th.checkbox-table-all { + padding-left: 9px; +} + +table.dataTable span.id-maquina { + font-size: 13px; + font-weight: bolder; + position: relative; + left: -21px; + padding-right: 1px; + padding-left: 1px; + border: 1px solid black; + background-color: white; +} + +table.dataTable span.id-maquina-twice { + top: -25px; + left: 5px; +} + +table.dataTable td span.edit { + cursor: pointer; +} + +table.dataTable td span.edit span:hover { + text-decoration: underline; +} + +table.dataTable td span.edit div.form-group { + width: 100%; +} + +table.dataTable td span.edit div.form-group div.Select { + width: 100%; + min-height: 38px; + padding: 0; +} + +table.dataTable input.checkbox-table-select { + width: 25px; +} + +div.dataTables_wrapper .dataTables_paginate a { + height: 30px; + padding-top: 4px; +} + +.s2-multi-drop { + font-size: 10px; +} + +.s2-multi { + font-size: 10px; +} + +body.auth { + background: #222 url(../images/darkpattern.png) top left repeat; +} + +body.pedido-detail .panel-body { + padding-bottom: 0; +} + +body.pedido-detail .panel-body h4 { + margin-top: 0; + margin-bottom: 20px; + text-decoration: underline; + text-transform: uppercase; +} + +body.pedido-detail .panel-body .actions { + margin-bottom: 10px; +} + +body.plantilla .panel-heading { + background-color: rgba(255, 255, 165, 0.38); +} + +body.papel-compra-detail a.big { + font-size: 25px; +} + +body.papel-compra-detail div.generate { + padding: 10px; + border: 1px solid gray; +} + +body.papel-compra-detail table.formatos td, +body.papel-compra-detail table.formatos th { + text-align: center; + vertical-align: middle; +} + +body.papel-compra-detail table.formatos tr.formas { + font-size: 10px; +} + +body.papel-compra-detail table.formatos span.size { + font-size: 10px; +} + +body.cliente-form .address_comunidad .select2-selection { + height: 30px; +} + +body.cliente-form .new-contact .form-group { + margin-bottom: 0; +} + +body.cliente-form .new-contact .buttons { + margin-top: 31px; +} + +body.config-tamanios-papeles .title { + text-decoration: underline; +} + +body.config-tamanios-papeles th p { + font-weight: normal; + margin-bottom: 0; +} + +body.config-tamanios-papeles .papeles_compra_contenedor p { + margin-bottom: 2px; + text-align: right; +} + +body.config-tamanios-papeles select { + height: 22px; + padding-top: 0; + padding-bottom: 0; +} + +body.config-tamanios-papeles tr.papeles_compra ul { + margin-bottom: 0; + margin-left: 0; + padding-left: 18px; +} + +body.config-tamanios-papeles tr.papeles_compra ul select { + padding: 0; +} + +body.permisos tr.noborder td { + border-top: 0; +} + +.chat-body { + margin-bottom: 5px; + padding-bottom: 5px; + border-bottom: 1px solid #ccc; +} + +ul.chat { + padding-left: 0; + list-style: none; +} + +ul.chat div.header { + margin-bottom: 5px; +} + +.mensajes select, +.mensajes input { + width: 100%; +} + +.pedido-mensajes .participants-list .participant { + float: left; + width: 40px; + margin-right: 5px; +} + +.pedido-mensajes .popup-chat { + padding: 35px; + padding-top: 15px; +} + +.pedido-mensajes .popup-chat h3 { + margin-top: 0; + margin-bottom: 10px; +} + +.pedido-mensajes .panel-body { + padding-top: 20px; +} + +.pedido-mensajes .panel-body .messages { + margin-bottom: 10px !important; +} + +.pedido-mensajes .panel-body .form-send-message { + margin-bottom: 0; +} + +.pedido-mensajes .panel-body .input-send-message { + min-height: 90px; + max-height: 90px; +} + +.pedido-mensajes .alert-danger { + padding: 2px; +} + +.pedido-mensajes .btn-new-message { + margin-bottom: 15px; +} + +.header { + padding: 5px; + margin: 5px; + color: black; +} + +.header.rojo { + background: red; + color: white; +} + +.header.ferro { + background: #d2d2d2; +} + +.header.pod { + background: #6cff6c; +} + +.header.incidencia { + background: #ebc22e; +} + +.header .title-customer.fecha { + color: white; +} + +.header .title-customer.sin-fecha { + color: #666666; +} + +.header .progreso { + font-size: 30px; +} + +.header .goto { + text-align: right; +} + +.no-bottom-margin { + margin-bottom: 0; +} + +body.panel-control td.facturacion_mes_corriente { + font-weight: bolder; +} + +.app-loading, +.app-alert { + font-size: 30px; + display: table; + width: 400px; + height: 300px; + text-align: center; +} + +.app-loading span, +.app-alert span { + display: table-cell; + vertical-align: middle; +} + +.app-loading span .spinner, +.app-alert span .spinner { + margin-top: 20px; + margin-right: auto; + margin-left: auto; +} + +.app-loading span .spinner .bounce1, +.app-alert span .spinner .bounce1 { + background-color: #999; +} + +.app-loading span .spinner .bounce2, +.app-alert span .spinner .bounce2 { + background-color: #777; +} + +.app-loading span .spinner .bounce3, +.app-alert span .spinner .bounce3 { + background-color: #555; +} + +.app-loading p.q, +.app-alert p.q { + font-size: 20px; + margin-top: 30px; + margin-left: 10px; +} + +.app-loading .buttons button, +.app-alert .buttons button { + width: 100px; + margin-right: 10px; +} + +.app-alert { + font-size: 15px; + padding: 15px; + text-align: left; +} + +.app-alert .buttons { + text-align: right; +} + +.app-popup-content { + width: 100%; + height: 100%; + padding: 20px; +} + +.app-popup-content .app-popup-btn { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + padding-right: 10px; + padding-bottom: 10px; + padding-left: 10px; +} + +.app-popup-content .app-popup-btn .align-rigth { + float: right; +} + +.dataTables_wrapper .dt-buttons { + float: left; + margin-right: 10px; +} + +.dataTables_wrapper .dataTables_length { + float: left; +} + +.dataTables_wrapper .dataTables_paginate { + float: right; + margin-left: 20px; +} + +.dataTables_wrapper .dataTables_filter { + float: right; + margin-top: 2px; +} + +.btn-colapse-menu { + position: fixed; + bottom: 0; + padding: 5px; +} + +.btn-colapse-menu button { + display: block; + float: right; + color: #ddd; + border: 1px solid #ddd; + background-color: #1a1a1a; +} + +.colapsed-wrapper { + padding-left: 0 !important; +} + +.panel.panel-primary .panel-heading a { + color: white; +} + +.panel.panel-login .panel-body { + text-align: center; +} + +.panel.panel-login .panel-body img.logo { + margin-bottom: 15px; +} + +.react-bs-table { + margin-right: 0; + margin-left: 0; +} + +.react-file-uploader .uploader-input { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + visibility: hidden; + width: 100%; + height: 100%; +} + +.react-file-uploader .uploader-label { + font-size: 14px; + position: relative; + display: inline-block; + margin-bottom: 10px; + padding: 5px 10px; + cursor: pointer; + color: #383838; + border: 1px solid #ddd; + border-radius: 3px; + background-color: #eee; +} + +.react-file-uploader .uploader-progress { + position: relative; + display: block; + overflow: hidden; + border-radius: 5px; +} + +.libro-catalogo-panelcontrol { + background-color: #eee; + border-radius: 6px; + padding: 20px; + margin-bottom: 10px; +} + +.libro-catalogo-panelcontrol a { + width: 100%; + display: block; +} + +.libro-catalogo-panelcontrol a img.cover { + width: 75px; + height: 100px; + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; + display: block; +} + +.libro-catalogo-panelcontrol a p.titulo { + margin-bottom: 0; +} + +.float { + float: right; +} + +@media (max-width: 1100px) { + .navbar-brand { + width: 50px; + background-image: url('../images/logoerp4.png'); + } +} \ No newline at end of file diff --git a/httpdocs/themes/vuexy/css/font-pdf.css b/httpdocs/themes/vuexy/css/font-pdf.css new file mode 100644 index 00000000..726bd4b0 --- /dev/null +++ b/httpdocs/themes/vuexy/css/font-pdf.css @@ -0,0 +1,144 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* hebrew */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2) format('woff2'); + unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* hebrew */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2) format('woff2'); + unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + font-stretch: 100%; + src: url(https://fonts.gstatic.com/s/opensans/v36/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/httpdocs/themes/vuexy/css/pdf.presupuesto.css b/httpdocs/themes/vuexy/css/pdf.presupuesto.css new file mode 100644 index 00000000..a817b597 --- /dev/null +++ b/httpdocs/themes/vuexy/css/pdf.presupuesto.css @@ -0,0 +1,755 @@ +/* Presupuesto Safekat */ + +body { + font-family: 'Open Sans', sans-serif; +} + +body table.logo { + width: 100%; + color: black; +} + +body table.logo td.logo img { + width: 100%; +} + +body table.presupuesto-data { + width: 100%; + font-size: 12px; +} + +body table.presupuesto-data th { + background: black; + color: white; + padding: 6px; +} + +body table.presupuesto-data th.intro_presupuesto { + width: 20%; + padding-left: 15px; +} + +body table.presupuesto-data th.num_presupuesto { + width: 10%; + font-weight: lighter; +} + +body table.presupuesto-data th.intro_cliente { + width: 11%; + padding-left: 15px; +} + +body table.presupuesto-data th.letra { + font-size: 9px; +} + +body table.presupuesto-data th.cliente { + width: 38%; + font-weight: lighter; + text-transform: uppercase; +} + +body table.presupuesto-data th.intro_fecha { + width: 10%; +} + +body table.presupuesto-data th.fecha { + width: 10%; + text-align: right; + font-weight: lighter; +} + +body table.presupuesto-data td { + background: #e3e4e7; + padding-left: 15px; +} + +body table.presupuesto-data td.titulo { + padding-top: 5px; +} + +body table.presupuesto-data td div.intro-coleccion, +body table.presupuesto-data td div.intro_autor { + font-weight: bold; + padding-bottom: 10px; +} + +body table.presupuesto-data td.coleccion, +body table.presupuesto-data td.autor { + padding-top: 3px; + padding-bottom: 10px; +} + +body table.impresion { + width: 100%; + font-size: 11px; + margin-bottom: 9px; + margin-top: 8px; +} + +body table.impresion th { + color: white; + font-size: 12px; + font-weight: lighter; + background: #8ac948; + padding: 3px; + padding-left: 8px; +} + +body table.impresion td { + border-bottom: 1px dotted black; + padding: 3px; + font-family: 'Open Sans', sans-serif; +} + +body table.impresion td.t { + width: 18%; + font-weight: bold; + border-right: 1px dotted black; +} + +body table.impresion td.t-first { + width: 8%; + font-weight: bold; + border-left: 1px dotted black; + border-right: 1px dotted black; +} + +body table.impresion td.t-second { + width: 11%; + font-weight: bold; + border-left: 1px dotted black; + border-right: 1px dotted black; +} + +body table.impresion td.v { + width: 12%; +} + +body table.impresion td.v-second { + width: 11%; +} + +body table.impresion td.v-first { + width: 40%; +} + +body table.cubierta { + width: 100%; + font-size: 11px; + margin-bottom: 9px; +} + +body table.cubierta th { + background: #0C2C84; + color: white; + font-size: 12px; + font-weight: lighter; + padding: 3px; + padding-left: 8px; +} + +body table.cubierta td { + border-bottom: 1px dotted black; + padding: 3px; +} + +body table.cubierta td.t { + width: 18%; + font-weight: bold; + border-right: 1px dotted black; +} + +body table.cubierta td.t-first, +body table.cubierta td.t-second, +body table.cubierta td.t-third, +body table.cubierta tdv.second { + width: 8%; + font-weight: bold; + border-left: 1px dotted black; + border-right: 1px dotted black; +} + +body table.cubierta td.v { + width: 10%; +} + +body table.cubierta td.v-third { + width: 12%; +} + +body table.cubierta td.v-first { + width: 28%; +} + +body table.encuadernacion { + width: 100%; + font-size: 11px; + margin-bottom: 9px; +} + +body table.encuadernacion th { + color: white; + font-size: 12px; + font-weight: lighter; + background: #8ac948; + padding: 3px; + padding-left: 8px; +} + +body table.encuadernacion td { + border-bottom: 1px dotted black; + padding: 3px; +} + +body table.encuadernacion td.t { + width: 18%; + font-weight: bold; + border-right: 1px dotted black; +} + +body table.encuadernacion td.v { + width: 46%; +} + +body table.encuadernacion td.v-first { + width: 7%; + border-left: 1px dotted black; + border-right: 1px dotted black; +} + +body table.encuadernacion tdv.second { + width: 8%; + border-left: 1px dotted black; + border-right: 1px dotted black; +} + +body table.encuadernacion td.t-first { + width: 8%; + font-weight: bold; + border-left: 1px dotted black; + border-right: 1px dotted black; +} + +body table.encuadernacion td.t-second { + width: 9%; + font-weight: bold; + border-right: 1px dotted black; +} + +body table.extras { + width: 100%; + font-size: 11px; + margin-bottom: 9px; +} + +body table.extras th { + color: white; + font-size: 12px; + font-weight: lighter; + background: #0C2C84; + padding: 3px; + padding-left: 8px; +} + +body table.extras td { + border-bottom: 1px dotted black; + padding: 3px; +} + +body table.extras td.t { + width: 18%; + font-weight: bold; + border-right: 1px dotted black; +} + +body table.envio { + width: 100%; + font-size: 11px; + margin-bottom: 9px; +} + +body table.envio th { + color: white; + font-size: 12px; + font-weight: lighter; + background: #8ac948; + padding: 3px; + padding-left: 8px; +} + +body table.envio td { + border-bottom: 1px dotted black; + padding: 3px; +} + +body table.envio td.v { + width: 12%; + border-right: 1px dotted black; +} + +body table.envio td.t-ejemplares, +body table.envio td.t { + width: 9%; + font-weight: bold; + border-right: 1px dotted black; +} + +body table.envio td.t-second { + width: 4%; + border-right: 1px dotted black; + font-weight: bold; +} + +body table.envio td.v-second { + width: 5%; +} + +body table.envio td.v-first, +body table.envio td.v-third { + width: 12%; + border-right: 1px dotted black; +} + +body table.envio td.v-third { + width: 16%; + border-right: 1px dotted black; +} + +body table.envio td.t-first, +body table.envio td.t-third, +body table.envio td.t-fourth, +body table.envio td.t-first-direccion, +body table.envio td.t-first { + width: 8%; + font-weight: bold; + border-left: 1px dotted black; + border-right: 1px dotted black; +} + +body table.totales { + width: 64%; + text-align: center; +} + +body table.totales th { + width: 12%; + font-weight: bold; + font-size: 12px; + text-align: center; + color: white; + background: #0C2C84; + padding: 3px; +} + +body table.totales th.u_envio_21 { + width: 16%; +} + +body table.totales th.hidden { + background: none; +} + +body table.totales td { + font-size: 12px; + font-weight: bold; + text-align: center; + border: 1px dotted #4e4e4e; + border-top: none; + padding: 3px; +} + +body table.totales td.tirada { + width: 12%; + border-left: none; +} + +body table.totales td.precio, +body table.totales td.u_impresion_4 { + width: 12%; +} + +body table.totales td.precio_ud { + width: 12%; + border-right: none; +} + +body table.totales td.iva { + border: none; + text-align: right; + font-size: 10px; +} + +body table.totales td.hidden { + border: none !important; +} + +/* Presupuesto Manual */ + +table.presupuesto-data td { + background: #e3e4e7; + padding-left: 15px; +} + +table.presupuesto-data td.descripcion { + padding-top: 10px; + padding-bottom: 10px; +} + +table.presupuesto-manual-lineas { + width: 100%; + margin-top: 20px; + border-spacing: 0; + border-collapse: collapse; +} + +table.presupuesto-manual-lineas tr.head-lineas-manual { + background: #688BC0; + color: white; +} + +table.presupuesto-manual-lineas th { + font-size: 11pt; + font-weight: lighter; + padding: 5px !important; + color: white; + border-right: 1px solid white; +} + +table.presupuesto-manual-lineas td { + padding: 10px !important; + font-size: 9pt; + color: black; + border: 1px dotted #4e4e4e; + border-top: none; +} + +table.presupuesto-manual-lineas td.num_unidades { + border-left: none; +} + +table.presupuesto-manual-lineas td.concepto { + border-right: none; +} + +table.presupuesto-manual-lineas td.precio_unidad { + text-align: right; +} + +table.presupuesto-manual-lineas td.total { + border-right: none; + text-align: right; +} + +table.totales-manual { + width: 25%; + margin-top: 15px; + text-align: center; + padding: 3px; +} + +table.totales-manual th { + font-weight: lighter; + font-size: 10pt; + padding: 5px; + text-align: center; + color: white; + background: #688BC0; + border-right: 1px solid white; +} + +table.totales-manual td { + font-size: 9pt; + padding: 5px; + text-align: center; + border: 1px dotted #4e4e4e; + border-top: none; +} + +table.totales-manual td.precio { + border-left: none; + border-right: none; +} + +table.totales-manual td.iva { + border: none; + text-align: right; + font-size: 8pt; +} + +.observaciones { + color: #0C2C84; + font-weight: bold; + margin-bottom: 0px; +} + +div.comentarios { + font-size: 9pt; + border: 1px solid #ddd; + margin-top: 5px; + padding-left: 10px; + padding-right: 10px; +} + +div.footer { + font-size: 10pt; + text-align: left; +} + +div.footer .texto-email { + font-weight: bold; +} + +div.footer .texto-asteriscos { + font-size: 11px; +} + +div.footer .texto-presupuesto { + color: black; + margin-top: 10px; + font-size: 7pt; +} + +div.footer.servicios { + margin-top: 20px; +} + +div.footer.tirada { + margin-top: 0px; +} + +div.footer.sin-servicios { + margin-top: 82px; +} + +/* Presup. y pedido maquetacion */ + +table.pedido-maquetacion-lineas { + width: 100%; +} + +table.pedido-maquetacion-lineas td { + padding: 3px; +} + +table.pedido-maquetacion-totales { + margin-top: 10px; + margin-bottom: 60px; +} + +table.pedido-maquetacion-totales td.iva_right { + font-size: 10px; + margin-top: 2px; +} + +#tablacentral { + border-top-width: 0; + border-left-width: 1px; + border-right-width: 1px; + border-bottom-width: 0; + text-align: center; + font-size: 9pt; +} + +#tablanoborde { + border-top-width: 0; + border-left-width: 0; + border-right-width: 0; + border-bottom-width: 0; +} + +#tabla { + border-style: solid; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + font-size: 7pt; + font-weight: bold; +} + +#tabladato { + font-size: 9pt; + font-weight: normal; + float: center; +} + +#tablaesquina { + border-style: solid; + border-top-width: 0; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 0; +} + +#tdinteriorabajo { + border-top: none; + border-bottom: 1px solid; + border-left: 1px solid; + border-right: 1px solid; + text-align: center; + font-size: 10px; + height: -40px; +} + +#tdinteriorarriba { + border-bottom: none; + border-top: 1px solid; + border-left: 1px solid; + border-right: 1px solid; + font-weight: bold; + font-size: 12px; + height: -40px; + padding-left: 2px; + padding-top: 1px; +} + +#tdinteriorarribacliente { + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: none; + font-weight: bold; + font-size: 12px; + height: -40px; + padding-left: 2px; + padding-top: 1px; +} + +#tdinteriorarribaclientedato { + border-top: 1px solid; + border-left: none; + border-bottom: 1px solid; + border-right: 1px solid; + font-size: 12px; + height: -40px; + padding-left: 2px; + padding-top: 1px; +} + +#tdniarribaniabajo { + border-bottom: none; + border-top: none; + border-left: 1px solid; + border-right: 1px solid; + font-size: 12px; + text-align: center; +} + +#tdniarribaniabajoopciones { + border-bottom: none; + border-top: none; + border-left: 1px solid; + border-right: 1px solid; + font-size: 10px; +} + +#tdniarribaniabajo2 { + border-bottom: none; + border-top: 1px solid; + border-left: 1px solid; + border-right: 1px solid; + font-size: 12px; + text-align: center; + font-weight: bold; +} + +#tdniarribaniabajo3 { + border-bottom: 1px solid; + border-top: none; + border-left: 1px solid; + border-right: 1px solid; + font-size: 12px; + text-align: center; +} + +#subtdabajocentro { + border-bottom: 1px solid; + border-top: none; + border-left: 1px solid; + border-right: 1px solid; + text-align: center; + font-size: 9pt; +} + +#subtd { + border-top: none; + border-bottom: 1px solid; + border-left: 1px solid; + border-right: 1px solid; + text-align: center; + font-size: 12px; +} + +#subtdcen { + border-top: none; + border-bottom: 1px solid #919191; + border-left: 1px solid #919191; + border-right: 1px solid #919191; + text-align: center; + font-size: 12px; + background-color: #77B2D0; + color: white; +} + +#subtdizq { + border-top: none; + border-bottom: 1px solid #919191; + border-right: 1px solid #919191; + text-align: center; + font-size: 12px; + color: white; + background-color: #77B2D0; +} + +#subtdder { + border-top: none; + border-bottom: 1px solid #919191; + border-left: 1px solid #919191; + text-align: center; + font-size: 12px; + color: white; + background-color: #77B2D0; +} + +#tdarriba { + border-bottom: none; + border-top: 1px solid; + border-left: 1px solid; + border-right: 1px solid; + font-size: 12px; +} + +#tdarribaopciones { + border-bottom: none; + border-top: 1px solid; + border-left: 1px solid; + border-right: 1px solid; + font-size: 10px; +} + +#tdabajo { + border-bottom: 1px solid; + border-top: none; + border-left: 1px solid; + border-right: 1px solid; + font-size: 12px; +} + +#dato { + text-align: center; + font-size: 9pt; +} + +#subrayado { + font-size: 9pt; + border-bottom: 1px solid; +} + +#td { + font-size: 12px; +} + +#tdopciones { + font-size: 10px; +} \ No newline at end of file From 71706158ca8de82843de1fbd6cc436c725105b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez=20Ortega?= Date: Mon, 6 Nov 2023 09:11:05 +0100 Subject: [PATCH 29/46] linea de presupuesto bn funcionando a falta de borrar --- .../Presupuestos/Cosidotapablanda.php | 457 +++--------------- .../Configuracion/PapelGenericoModel.php | 55 ++- .../Configuracion/PapelImpresionModel.php | 70 +++ ci4/app/Services/PresupuestoService.php | 4 +- .../cosidotapablanda/_datosLibroItems.php | 4 +- .../_lineasPresupuestoItems.php | 266 ++++++++-- .../viewCosidotapablandaForm.php | 3 +- httpdocs/themes/vuexy/css/sk-datatables.css | 3 +- 8 files changed, 425 insertions(+), 437 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index a75a8c57..49b3598e 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -747,20 +747,78 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $datos = $reqData['datos'] ?? null; //$searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); if ($tipo == 'gramaje') { // En este caso contiene el nombre del papel generico $model = new PapelGenericoModel(); $menu = $model->getGramajeComparador($datos, $uso ); + + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + } + elseif ($tipo == 'gramajeLineasPresupuesto') { + $tipoLinea = $reqData['tipoLinea'] ?? null; + // En este caso contiene el id del papel generico + $model = new PapelGenericoModel(); + $menu = $model->getGramajeLineasPresupuesto($datos, $tipoLinea, $uso ); + + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + } + elseif ($tipo == 'papelImpresion') { + $gramaje = $reqData['gramaje'] ?? null; + $tipoLinea = $reqData['tipoLinea'] ?? null; + // En este caso contiene el nombre del papel generico + // Uso: negro, negrohq, color, colorhq, rot_bn, rot_color, + $model = new PapelImpresionModel(); + $menu = $model->getPapelesImpresionForMenu($datos, $gramaje, $tipoLinea, $uso ); + + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; } + elseif ($tipo == 'maquina') { + $is_rotativa = $reqData['is_rotativa'] ?? null; + $papel_impresion = $reqData['papel_impresion'] ?? null; + $tipo_linea = $reqData['tipoLinea'] ?? null; + $ancho = $reqData['ancho'] ?? null; + $alto = $reqData['alto'] ?? null; + // Datos contiene la tirada + // uso: negro, negrohq, color, colorhq, + $model = new MaquinaModel(); + $maquinas = $model->getMaquinaImpresionForPresupuesto($is_rotativa, $uso, $datos, $papel_impresion ); + $menu = []; + foreach ($maquinas as $maquina){ + + $formas = PresupuestoService::getNumFormasPlana($tipo_linea, $maquina, floatval($ancho), floatval($alto), true); + + if($formas['num_formas'] != 'n/a'){ + array_push($menu, $maquina); + } + } - $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, - $csrfTokenName => $newTokenHash - ]; + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + } + + else{ + + $data = [ + 'tipo' => $tipo, + $csrfTokenName => $newTokenHash + ]; + } + return $this->respond($data); } else { return $this->failUnauthorized('Invalid request', 403); @@ -912,391 +970,4 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController - /* - - - - - - protected function getUbicacionLibroListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('LgUbicacionesLibros.ubicacionLibro'))])]; - if (!empty($selId)) : - $ubicacionesLibroModel = model('App\Models\Configuracion\UbicacionesLibroModel'); - - $selOption = $ubicacionesLibroModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getFormaPagoListItems() - { - $formasPagoModel = model('App\Models\Configuracion\FormasPagoModel'); - $onlyActiveOnes = true; - $data = $formasPagoModel->getAllForMenu('id, nombre', 'nombre', $onlyActiveOnes); - - return $data; - } - - - protected function getPapelImpresionListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPresupuestoEstadoListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PresupuestoEstados.presupuestoEstado'))])]; - if (!empty($selId)) : - $presupuestoEstadoModel = model('App\Models\Presupuestos\PresupuestoEstadoModel'); - - $selOption = $presupuestoEstadoModel->where('id', $selId)->findColumn('estado'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelImpresionListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinaListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('precio'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinaListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - - - protected function getMaquinaListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getTipologiasLibroListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('TipologiasLibros.tipologiasLibro'))])]; - if (!empty($selId)) : - $tipologiasLibroModel = model('App\Models\Presupuestos\TipologiasLibroModel'); - - $selOption = $tipologiasLibroModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelImpresionListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('precio'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getUserListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; - if (!empty($selId)) : - $userModel = model('App\Models\Presupuestos\UserModel'); - - $selOption = $userModel->where('id_user', $selId)->findColumn('first_name'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('id'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getUserListItems3($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; - if (!empty($selId)) : - $userModel = model('App\Models\Presupuestos\UserModel'); - - $selOption = $userModel->where('id_user', $selId)->findColumn('first_name'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelImpresionListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelImpresions.papelImpresion'))])]; - if (!empty($selId)) : - $papelImpresionModel = model('App\Models\Presupuestos\PapelImpresionModel'); - - $selOption = $papelImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getTiposImpresionListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('TiposImpresions.tiposImpresion'))])]; - if (!empty($selId)) : - $tiposImpresionModel = model('App\Models\Presupuestos\TiposImpresionModel'); - - $selOption = $tiposImpresionModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getMaquinasTarifasImpresionListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('MaquinasTarifasImpresions.maquinasTarifasImpresion'))])]; - if (!empty($selId)) : - $maquinasTarifasImpresionModel = model('App\Models\Presupuestos\MaquinasTarifasImpresionModel'); - - $selOption = $maquinasTarifasImpresionModel->where('id', $selId)->findColumn('precio'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - - protected function getMaquinaListItems4($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])]; - if (!empty($selId)) : - $maquinaModel = model('App\Models\Presupuestos\MaquinaModel'); - - $selOption = $maquinaModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getUserListItems2($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; - if (!empty($selId)) : - $userModel = model('App\Models\Presupuestos\UserModel'); - - $selOption = $userModel->where('id_user', $selId)->findColumn('first_name'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPapelGenericoListItems($selId = null) - { - $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('PapelGenericoes.papelGenerico'))])]; - if (!empty($selId)) : - $papelGenericoModel = model('App\Models\Presupuestos\PapelGenericoModel'); - - $selOption = $papelGenericoModel->where('id', $selId)->findColumn('nombre'); - if (!empty($selOption)) : - $data[$selId] = $selOption[0]; - endif; - endif; - return $data; - } - - - protected function getPaginasCubiertaOptions() - { - $paginasCubiertaOptions = [ - '' => lang('Basic.global.pleaseSelect'), - '4x0' => '4x0', - '4x4' => '4x4', - ]; - return $paginasCubiertaOptions; - } - - - - protected function getPaginasPortadaOptions() - { - $paginasPortadaOptions = [ - '' => lang('Basic.global.pleaseSelect'), - '4x0' => '4x0', - '4x4' => '4x4', - ]; - return $paginasPortadaOptions; - } - */ - } diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index eb971ea2..17b68119 100644 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -135,7 +135,10 @@ class PapelGenericoModel extends \App\Models\GoBaseModel public function getGramajeComparador(string $papel_generico_nombre="", $uso="") { - $tipo=$uso; // color y colorhq valen para los dos + if($uso == 'cubierta' || $uso == 'sobrecubierta') + $tipo = 'color'; + else + $tipo=$uso; // color y colorhq valen para los dos if($uso == 'bn') $tipo="negro"; if($uso == 'bnhq') @@ -168,10 +171,58 @@ class PapelGenericoModel extends \App\Models\GoBaseModel $builder->where("t2.cubierta", 1); else if ($uso == 'sobrecubierta') $builder->where("t2.sobrecubierta", 1); - + + $values = $builder->orderBy("t2.gramaje", "asc")->get()->getResultObject(); + $id = 1; + foreach ($values as $value){ + $value->id = $id; + $id++; + } + $values_array = array_map( function( $value ) { + return $value->text; + }, $values ); + $unique_values = array_unique($values_array); + return array_values(array_intersect_key($values, $unique_values)); + } + //tipo: negro, negrohq, color, colorhq + //uso: interior, rotativa, cubierta, sobrecubierta + public function getGramajeLineasPresupuesto($papel_generico_id=0, $tipo="", $uso="") + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t2.gramaje AS text" + ) + ->join("lg_papel_impresion t2", "t2.papel_generico_id = t1.id", "left") + ->join("lg_maquina_papel_impresion t3", "t3.papel_impresion_id = t2.id", "left") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") + ->join("lg_maquinas_tarifas_impresion t5", "t5.maquina_id = t4.id", "left") + + ->where("t1.is_deleted", 0) + ->where("t2.is_deleted", 0) + ->where("t2.isActivo", 1) + ->where("t3.active", 1) + ->where("t4.is_deleted", 0) + ->where("t4.tipo", "impresion") + ->where("t5.tipo", $tipo) + ->where("t1.id", $papel_generico_id); + if($tipo == 'negro' || $tipo == 'negrohq') + $builder->where("t2.bn", 1); + else if ($tipo == 'color' || $tipo == 'colorhq') + $builder->where("t2.color", 1); + if ($uso == 'cubierta') + $builder->where("t2.cubierta", 1); + else if ($uso == 'sobrecubierta') + $builder->where("t2.sobrecubierta", 1); + if($uso=='rotativa') + $builder->where("t2.rotativa", 1); + else + $builder->where("t2.rotativa", 0); + + $values = $builder->orderBy("t2.gramaje", "asc")->get()->getResultObject(); $id = 1; foreach ($values as $value){ diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index d600bbc2..4e53176b 100644 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -255,6 +255,76 @@ class PapelImpresionModel extends \App\Models\GoBaseModel $builder->where("t1.rotativa", $rotativa); } + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); + } + + //tipo: negro, negrohq, color, colorhq + //uso: interior, rotativa, cubierta, sobrecubierta + public function getPapelesImpresionForMenu($papel_generico = null, $gramaje = null, $tipo = null, $uso=""){ + $builder = $this->db + ->table($this->table . " t1") + ->distinct("t1.id") + ->join("lg_papel_generico t2", "t1.papel_generico_id = t2.id", "left") + ->join("lg_maquina_papel_impresion t3", "t1.id = t3.papel_impresion_id", "left") + ->join("lg_maquinas t4", "t3.maquina_id = t4.id", "left") + ->join("lg_maquinas_tarifas_impresion t5", "t4.id = t5.maquina_id", "left") + ->select( + "t1.id AS id, t1.nombre AS text"); + + $builder->where("t1.is_deleted", 0); + $builder->where("t1.isActivo", 1); + $builder->where("t2.is_deleted", 0); + $builder->where("t3.active", 1); + $builder->where("t4.is_deleted", 0); + $builder->where("t4.tipo", 'impresion'); + $builder->where("t5.is_deleted", 0); + $builder->where("t5.tipo", $tipo); + + $builder->where("t2.id", $papel_generico); + $builder->where("t1.gramaje", $gramaje); + + if($tipo == 'negro' || $tipo == 'negrohq') + $builder->where("t1.bn", 1); + else if ($tipo == 'color' || $tipo == 'colorhq') + $builder->where("t1.color", 1); + if ($uso == 'cubierta') + $builder->where("t1.cubierta", 1); + else if ($uso == 'sobrecubierta') + $builder->where("t1.sobrecubierta", 1); + if($uso=='rotativa') + $builder->where("t1.rotativa", 1); + else + $builder->where("t1.rotativa", 0); +/* + if($tipo=='negro' || $tipo=='negrohq'){ + $builder->where("t1.bn", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='color' || $tipo=='colorhq'){ + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='cubierta'){ + $builder->where("t1.cubierta", 1); + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='sobrecubierta'){ + $builder->where("t1.sobrecubierta", 1); + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 0); + } + elseif($tipo=='rot_bn'){ + $builder->where("t1.bn", 1); + $builder->where("t1.rotativa", 1); + } + elseif($tipo=='rot_color'){ + $builder->where("t1.color", 1); + $builder->where("t1.rotativa", 1); + } +*/ + + return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } } diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index c3a05d5c..81ddd6a3 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -251,7 +251,7 @@ class PresupuestoService extends BaseService } - private static function getNumFormasPlana($uso, $maquina, $ancho, $alto, $isCosido) + public static function getNumFormasPlana($uso, $maquina, $ancho, $alto, $isCosido) { // El ancho si es cosido es el doble if($uso != 'cubierta' && $uso != 'sobrecubierta'){ @@ -306,7 +306,7 @@ class PresupuestoService extends BaseService if(count($calles)>0) $h2 = ($h2_temp * $anchoForCalculo + 2 * $calles[0]->externas + ($h2_temp - 1) * $calles[0]->internas < ($maquina->ancho)) ? $h2_temp : $h2_temp - 1; else - $h2 = $h2_temp; + $h2 = $h2_temp; $v2 = floor($maquina->alto_impresion / $anchoForCalculo); $formas_v = $h2 * $v2; //p2 diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php index dd8f5b93..ac6a29b5 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php @@ -95,7 +95,7 @@ - + @@ -104,7 +104,7 @@ - + diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 88cd20a4..34fa2795 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -37,9 +37,9 @@ - + - $v) : ?> id != 0): ?> @@ -52,28 +52,28 @@ - - - - - - - - - + + + + + + - - - - + + + + @@ -82,7 +82,7 @@ - $v) : ?> id != 0): ?> @@ -99,11 +99,11 @@ - - @@ -125,7 +125,7 @@ - $v) : ?> id != 0): ?> @@ -142,11 +142,11 @@ - - @@ -168,7 +168,7 @@ - $v) : ?> id != 0): ?> @@ -185,11 +185,11 @@ - - @@ -211,7 +211,7 @@ - $v) : ?> id != 0): ?> @@ -228,11 +228,11 @@ - - @@ -460,7 +460,7 @@ - $v) : ?> id != 0): ?> @@ -477,11 +477,11 @@ - - @@ -708,7 +708,7 @@ - $v) : ?> id != 0): ?> @@ -725,11 +725,11 @@ - - @@ -751,7 +751,7 @@ - $v) : ?> id != 0): ?> @@ -768,11 +768,11 @@ - - @@ -803,7 +803,17 @@ section("additionalInlineJs") ?> + +$('#lp_bn_papel').val(''); +$('#lp_bnhq_papel').val(''); +$('#lp_color_papel').val(''); +$('#lp_colorhq_papel').val(''); +$('#lp_rot_bn_papel').val(''); +$('#lp_rot_color_papel').val(''); +$('#lp_cubierta_papel').val(''); +$('#lp_sobrecubierta_papel').val(''); + $('#lp_rot_color_vercalculos').on("click", function () { if($( ".calculos_rot_color" ).css('display') == 'none') $( ".calculos_rot_color" ).css('display', 'flex') @@ -819,4 +829,188 @@ $('#lp_rot_bn_vercalculos').on("click", function () { $( ".calculos_rot_bn" ).css('display', 'none') } }); + + +function clear_lp_bn(clear_selectors){ + let pags = $("#lp_bn_paginas" ).val() + $(".lp-bn-input" ).val("0") + $("#lp_bn_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-bn-select").empty() +} + +function fill_lp_bn(data){ + $('#lp_bn_tiempo').val(data.tiempo_maquina) + $('#lp_bn_numeroPliegos').val(isNaN(parseFloat(data.pliegos_libro)) ? "" : parseFloat(data.pliegos_libro).toFixed(2)) + $('#lp_bn_pliegosPedido').val(isNaN(parseFloat(data.pliegos_pedido)) ? "" : parseFloat(data.pliegos_pedido).toFixed(2)) + $('#lp_bn_precioPliego').val(isNaN(parseFloat(data.precios_pliegos)) ? "" : parseFloat(data.precios_pliegos).toFixed(6)) + $('#lp_bn_libro').val(isNaN(parseFloat(data.precio_libro)) ? "" : parseFloat(data.precio_libro).toFixed(2)) + $('#lp_bn_totalPapelPedido').val(isNaN(parseFloat(data.precio_pedido)) ? "" : parseFloat(data.precio_pedido).toFixed(2)) + $('#lp_bn_lomo').val(isNaN(parseFloat(data.mano)) ? "" : parseFloat(data.mano).toFixed(2)) + $('#lp_bn_peso').val(isNaN(parseFloat(data.peso)) ? "" : parseFloat(data.peso).toFixed(2)) + $('#lp_bn_click').val(isNaN(parseFloat(data.precio_click)) ? "" : parseFloat(data.precio_click).toFixed(6)) + $('#lp_bn_totalClicks').val(isNaN(parseFloat(data.precio_click_pedido)) ? "" : parseFloat(data.precio_click_pedido).toFixed(2)) +} + + + +$('#lp_bn_papel').on("change", function () { + clear_lp_bn(true) + $.ajax({ + type: 'post', + url: '', + data: { + tipo: 'gramajeLineasPresupuesto', + uso: 'interior', + datos: $('#lp_bn_papel option:selected').val() , + tipoLinea: "negro", + : v + }, + dataType: 'json', + success: function (data) { + yeniden(data.); + $.each(data.menu, function(item){ + var option = $('