mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'mod/presupuestos_list' into 'main'
terminada modificacion See merge request jjimenez/safekat!84
This commit is contained in:
6
ci4/.env
6
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
|
||||
|
||||
@ -118,7 +118,7 @@ database.default.dump =
|
||||
security.headerName = 'X-CSRF-TOKEN'
|
||||
security.cookieName = 'safekat_cookie'
|
||||
security.expires = 7200
|
||||
security.regenerate = true
|
||||
security.regenerate = false
|
||||
security.redirect = true
|
||||
security.samesite = 'Lax'
|
||||
|
||||
|
||||
@ -321,14 +321,23 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
$start = $reqData['start'] ?? 0;
|
||||
$length = $reqData['length'] ?? 5;
|
||||
|
||||
$requestedOrder = $reqData['order']['0']['column'] ?? 0;
|
||||
$order = PresupuestoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0];
|
||||
$dir = $reqData['order']['0']['dir'] ?? 'asc';
|
||||
$requestedOrder1 = $reqData['order']['0']['column'] ?? 0;
|
||||
$order1 = PresupuestoModel::SORTABLE[$requestedOrder1 >= 0 ? $requestedOrder1 : 0];
|
||||
$dir1 = $reqData['order']['0']['dir'] ?? 'asc';
|
||||
$requestedOrder2 = $reqData['order']['1']['column'] ?? 0;
|
||||
$order2 = PresupuestoModel::SORTABLE[$requestedOrder2 >= 0 ? $requestedOrder1 : 0];
|
||||
$dir2 = $reqData['order']['0']['dir'] ?? 'asc';
|
||||
$requestedOrder3 = $reqData['order']['2']['column'] ?? 0;
|
||||
$order3 = PresupuestoModel::SORTABLE[$requestedOrder3 >= 0 ? $requestedOrder1 : 0];
|
||||
$dir3 = $reqData['order']['0']['dir'] ?? 'asc';
|
||||
|
||||
|
||||
|
||||
if (is_null($type)) {
|
||||
$resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject();
|
||||
|
||||
$searchValues = get_filter_datatables_columns($reqData);
|
||||
|
||||
$resourceData = $this->model->getResource($searchValues)->orderBy($order1, $dir1)->orderBy($order2, $dir2)
|
||||
->orderBy($order3, $dir3)->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);
|
||||
|
||||
@ -641,6 +641,25 @@ function templateSelect($templates=[],$name='',$type='') {
|
||||
return null;
|
||||
}
|
||||
|
||||
function get_filter_datatables_columns($request){
|
||||
$columnSearch = array();
|
||||
|
||||
if ( isset( $request['columns'] ) ) {
|
||||
for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) {
|
||||
$requestColumn = $request['columns'][$i];
|
||||
|
||||
$str = $requestColumn['search']['value'];
|
||||
|
||||
if ( $requestColumn['searchable'] == 'true' &&
|
||||
$str != '' ) {
|
||||
array_push($columnSearch, [$i, $requestColumn['data'], $str]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $columnSearch;
|
||||
}
|
||||
|
||||
// Devuelve true si los intervalos (a1,a2) (b1,b2) se solapan
|
||||
// https://stackoverflow.com/questions/3269434/whats-the-most-efficient-way-to-test-if-two-ranges-overlap
|
||||
function check_overlap($a1, $a2, $b1, $b2){
|
||||
|
||||
15
ci4/app/Language/en/datePicker.php
Normal file
15
ci4/app/Language/en/datePicker.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
return [
|
||||
'hoy' => 'Today',
|
||||
'ayer' => 'Yesterday',
|
||||
'ultimos7' => 'Last 7 Days',
|
||||
'ultimos30' => 'Last 30 Days',
|
||||
'esteMes' => 'This Month',
|
||||
'ultimoMes' => 'Last Month',
|
||||
'personalizar' => 'Custom',
|
||||
'aplicar' => 'Apply',
|
||||
'limpiar' => 'Clear',
|
||||
];
|
||||
15
ci4/app/Language/es/datePicker.php
Normal file
15
ci4/app/Language/es/datePicker.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
return [
|
||||
'hoy' => 'Hoy',
|
||||
'ayer' => 'Ayer',
|
||||
'ultimos7' => 'Últimos 7 días',
|
||||
'ultimos30' => 'Últimos 30 días',
|
||||
'esteMes' => 'Este mes',
|
||||
'ultimoMes' => 'Último mes',
|
||||
'personalizar' => 'Personalizado',
|
||||
'aplicar' => 'Aplicar',
|
||||
'limpiar' => 'Limpiar',
|
||||
];
|
||||
@ -18,13 +18,12 @@ class PresupuestoModel extends \App\Models\GoBaseModel
|
||||
2 => "t2.nombre",
|
||||
3 => "t3.first_name",
|
||||
4 => "t1.titulo",
|
||||
5 => "t4.nombre",
|
||||
6 => "t5.nombre",
|
||||
7 => "t1.inc_rei",
|
||||
8 => "t1.paginas",
|
||||
9 => "t1.tirada",
|
||||
10 => "t1.total_pedido",
|
||||
11 => "t6.estado",
|
||||
5 => "t5.nombre",
|
||||
6 => "t1.inc_rei",
|
||||
7 => "t1.paginas",
|
||||
8 => "t1.tirada",
|
||||
9 => "t1.total_pedido",
|
||||
10 => "t6.estado",
|
||||
];
|
||||
|
||||
protected $allowedFields = [
|
||||
@ -307,7 +306,7 @@ class PresupuestoModel extends \App\Models\GoBaseModel
|
||||
*
|
||||
* @return \CodeIgniter\Database\BaseBuilder
|
||||
*/
|
||||
public function getResource(string $search = "")
|
||||
public function getResource($search = [])
|
||||
{
|
||||
$builder = $this->db
|
||||
->table($this->table . " t1")
|
||||
@ -324,36 +323,22 @@ class PresupuestoModel extends \App\Models\GoBaseModel
|
||||
|
||||
$builder->where("t1.is_deleted", 0);
|
||||
|
||||
return empty($search)
|
||||
? $builder
|
||||
: $builder
|
||||
->groupStart()
|
||||
->like("t1.id", $search)
|
||||
->orLike("t1.created_at", $search)
|
||||
->orLike("t2.nombre", $search)
|
||||
->orLike("t3.first_name", $search)
|
||||
->orLike("t3.last_name", $search)
|
||||
->orLike("t1.titulo", $search)
|
||||
->orLike("t4.nombre", $search)
|
||||
->orLike("t5.nombre", $search)
|
||||
->orLike("t1.inc_rei", $search)
|
||||
->orLike("t1.paginas", $search)
|
||||
->orLike("t1.tirada", $search)
|
||||
->orLike("t1.total_pedido ", $search)
|
||||
->orLike("t6.estado", $search)
|
||||
->orLike("t1.id", $search)
|
||||
->orLike("t1.created_at", $search)
|
||||
->orLike("t2.nombre", $search)
|
||||
->orLike("t3.first_name", $search)
|
||||
->orLike("t3.last_name", $search)
|
||||
->orLike("t1.titulo", $search)
|
||||
->orLike("t4.nombre", $search)
|
||||
->orLike("t5.nombre", $search)
|
||||
->orLike("t1.inc_rei", $search)
|
||||
->orLike("t1.paginas", $search)
|
||||
->orLike("t1.tirada", $search)
|
||||
->orLike("t1.total_pedido ", $search)
|
||||
->orLike("t6.estado", $search)
|
||||
->groupEnd();
|
||||
if(empty($search))
|
||||
return $builder;
|
||||
else{
|
||||
$builder->groupStart();
|
||||
foreach($search as $col_search){
|
||||
if($col_search[0] != 1)
|
||||
$builder->like(self::SORTABLE[$col_search[0]], $col_search[2]);
|
||||
else{
|
||||
$dates = explode(" ", $col_search[2]);
|
||||
$builder->where(self::SORTABLE[$col_search[0]] . ">=", $dates[0]);
|
||||
$builder->where(self::SORTABLE[$col_search[0]] . "<=", $dates[1]);
|
||||
}
|
||||
}
|
||||
$builder->groupEnd();
|
||||
return $builder;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,11 +25,11 @@
|
||||
<th><?= lang('Presupuestos.titulo') ?></th>
|
||||
<th><?= lang('Paises.pais') ?></th>
|
||||
<th><?= lang('Presupuestos.incRei') ?></th>
|
||||
<th><?= lang('Presupuestos.paginas') ?></th>
|
||||
<th><?= lang('Presupuestos.tirada') ?></th>
|
||||
<th><?= lang('Presupuestos.totalPresupuesto') ?></th>
|
||||
<th class='noFilter'><?= lang('Presupuestos.paginas') ?></th>
|
||||
<th class='noFilter'><?= lang('Presupuestos.tirada') ?></th>
|
||||
<th class='noFilter'><?= lang('Presupuestos.totalPresupuesto') ?></th>
|
||||
<th><?= lang('Presupuestos.presupuestoEstado') ?></th>
|
||||
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
|
||||
<th class="noFilter text-nowrap"><?= lang('Basic.global.Action') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -48,134 +48,149 @@
|
||||
|
||||
|
||||
<?=$this->section('additionalInlineJs') ?>
|
||||
|
||||
|
||||
|
||||
const lastColNr = $('#tableOfPresupuestos').find("tr:first th").length - 1;
|
||||
const actionBtns = function(data) {
|
||||
return `
|
||||
<td class="text-right py-0 align-middle">
|
||||
<div class="btn-group btn-group-sm">
|
||||
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
|
||||
</div>
|
||||
</td>`;
|
||||
};
|
||||
const lastColNr = $('#tableOfPresupuestos').find("tr:first th").length - 1;
|
||||
const actionBtns = function(data) {
|
||||
return `
|
||||
<td class="text-right py-0 align-middle">
|
||||
<div class="btn-group btn-group-sm">
|
||||
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
|
||||
</div>
|
||||
</td>`;
|
||||
};
|
||||
|
||||
// Setup - add a text input to each footer cell
|
||||
$('#tableOfPresupuestos thead tr').clone(true).appendTo('#tableOfPresupuestos thead');
|
||||
$('#tableOfPresupuestos thead tr:eq(1) th').each(function (i) {
|
||||
if (!$(this).hasClass("noFilter")) {
|
||||
var title = $(this).text();
|
||||
if(i==1){
|
||||
|
||||
$(this).html('<input id="bs-rangepicker-range" type="text" class="form-control " style="min-width:100px;max-width:120px;font-size:0.8rem !important;" />');
|
||||
var bsRangePickerRange = $('#bs-rangepicker-range')
|
||||
bsRangePickerRange.daterangepicker({
|
||||
ranges: {
|
||||
'<?= lang('datePicker.hoy') ?>': [moment(), moment()],
|
||||
'<?= lang('datePicker.ayer') ?>': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||
'<?= lang('datePicker.ultimos7') ?>': [moment().subtract(6, 'days'), moment()],
|
||||
'<?= lang('datePicker.ultimos30') ?>': [moment().subtract(29, 'days'), moment()],
|
||||
'<?= lang('datePicker.esteMes') ?>': [moment().startOf('month'), moment().endOf('month')],
|
||||
'<?= lang('datePicker.ultimoMes') ?>': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
|
||||
},
|
||||
opens: 'right',
|
||||
language: '<?= config('Basics')->i18n ?>',
|
||||
"locale": {
|
||||
"customRangeLabel": "<?= lang('datePicker.personalizar') ?>",
|
||||
"format": "YYYY-MM-DD",
|
||||
"separator": " ",
|
||||
"applyLabel": "<?= lang('datePicker.aplicar') ?>",
|
||||
"cancelLabel": "<?= lang('datePicker.limpiar') ?>",
|
||||
|
||||
},
|
||||
"alwaysShowCalendars": true,
|
||||
autoUpdateInput: false,
|
||||
|
||||
});
|
||||
|
||||
bsRangePickerRange.on('apply.daterangepicker', function(ev, picker) {
|
||||
$(this).val(picker.startDate.format('YYYY-MM-DD') + ' ' + picker.endDate.format('YYYY-MM-DD'));
|
||||
theTable
|
||||
.column(i)
|
||||
.search(this.value)
|
||||
.draw();
|
||||
});
|
||||
|
||||
bsRangePickerRange.on('cancel.daterangepicker', function(ev, picker) {
|
||||
$(this).val('');
|
||||
theTable
|
||||
.column(i)
|
||||
.search(this.value)
|
||||
.draw();
|
||||
});
|
||||
|
||||
}
|
||||
else{
|
||||
$(this).html('<input type="text" class="form-control " style="min-width:100px;max-width:120px;font-size:0.8rem !important;" />');
|
||||
|
||||
$('input', this).on('change clear', function () {
|
||||
if (theTable.column(i).search() !== this.value) {
|
||||
theTable
|
||||
.column(i)
|
||||
.search(this.value)
|
||||
.draw();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
$(this).html('<span></span>');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
// Setup - add a text input to each footer cell
|
||||
$('#tableOfPresupuestos thead tr')
|
||||
.clone(true)
|
||||
.addClass('filters')
|
||||
.appendTo('#tableOfPresupuestos thead');
|
||||
|
||||
|
||||
theTable = $('#tableOfPresupuestos').DataTable({
|
||||
orderCellsTop: true,
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
autoWidth: true,
|
||||
responsive: true,
|
||||
scrollX: true,
|
||||
lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ],
|
||||
pageLength: 50,
|
||||
lengthChange: true,
|
||||
"dom": 'lfBrtip',
|
||||
"buttons": [
|
||||
'colvis', 'copy', 'csv', 'excel', 'print', {
|
||||
extend: 'pdfHtml5',
|
||||
orientation: 'landscape',
|
||||
pageSize: 'A4'
|
||||
}
|
||||
],
|
||||
stateSave: true,
|
||||
order: [[1, 'asc']],
|
||||
language: {
|
||||
url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/<?= config('Basics')->i18n ?>.json"
|
||||
},
|
||||
ajax : $.fn.dataTable.pipeline( {
|
||||
url: '<?= route_to('dataTableOfCosidotapablanda') ?>',
|
||||
method: 'POST',
|
||||
headers: {'X-Requested-With': 'XMLHttpRequest'},
|
||||
async: true,
|
||||
}),
|
||||
columnDefs: [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColNr]
|
||||
}
|
||||
],
|
||||
columns : [
|
||||
{ 'data': 'id' },
|
||||
{ 'data': 'fecha' },
|
||||
{ 'data': 'cliente' },
|
||||
{ 'data': 'comercial' },
|
||||
{ 'data': 'titulo' },
|
||||
{ 'data': 'pais' },
|
||||
{ 'data': 'inc_rei' },
|
||||
{ 'data': 'paginas' },
|
||||
{ 'data': 'tirada' },
|
||||
{ 'data': 'total_presupuesto' },
|
||||
{ 'data': 'estado' ,
|
||||
'render': function ( data, type, row, meta ) {
|
||||
if(data=='borrador')
|
||||
return '<?= lang('Presupuestos.presupuestoEstadoBorrador') ?>';
|
||||
else if(data=='aceptado')
|
||||
return '<?= lang('Presupuestos.presupuestoEstadoAceptado') ?>';
|
||||
}
|
||||
},
|
||||
{ 'data': actionBtns }
|
||||
],
|
||||
initComplete: function () {
|
||||
var api = this.api();
|
||||
$("#tableOfPresupuestos").DataTable().columns.adjust();
|
||||
|
||||
// For each column
|
||||
api
|
||||
.columns()
|
||||
.eq(0)
|
||||
.each(function (colIdx) {
|
||||
// Set the header cell to contain the input element
|
||||
var cell = $('.filters th').eq(
|
||||
$(api.column(colIdx).header()).index()
|
||||
);
|
||||
var title = $(cell).text();
|
||||
$(cell).html('<input type="text" placeholder="' + title + '" />');
|
||||
|
||||
// On every keypress in this input
|
||||
$(
|
||||
'input',
|
||||
$('.filters th').eq($(api.column(colIdx).header()).index())
|
||||
)
|
||||
.off('keyup change')
|
||||
.on('change', function (e) {
|
||||
// Get the search value
|
||||
$(this).attr('title', $(this).val());
|
||||
var regexr = '({search})'; //$(this).parents('th').find('select').val();
|
||||
|
||||
var cursorPosition = this.selectionStart;
|
||||
// Search the column for that value
|
||||
api
|
||||
.column(colIdx)
|
||||
.search(
|
||||
this.value != ''
|
||||
? regexr.replace('{search}', '(((' + this.value + ')))')
|
||||
: '',
|
||||
this.value != '',
|
||||
this.value == ''
|
||||
)
|
||||
.draw();
|
||||
})
|
||||
.on('keyup', function (e) {
|
||||
e.stopPropagation();
|
||||
|
||||
$(this).trigger('change');
|
||||
$(this)
|
||||
.focus()[0]
|
||||
.setSelectionRange(cursorPosition, cursorPosition);
|
||||
});
|
||||
});
|
||||
},
|
||||
});
|
||||
theTable = $('#tableOfPresupuestos').DataTable({
|
||||
orderCellsTop: true,
|
||||
fixedHeader: true,
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
autoWidth: true,
|
||||
responsive: true,
|
||||
scrollX: true,
|
||||
lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ],
|
||||
pageLength: 50,
|
||||
lengthChange: true,
|
||||
"dom": 'lBrtip',
|
||||
"buttons": [
|
||||
'colvis', 'copy', 'csv', 'excel', 'print', {
|
||||
extend: 'pdfHtml5',
|
||||
orientation: 'landscape',
|
||||
pageSize: 'A4'
|
||||
}
|
||||
],
|
||||
stateSave: false,
|
||||
order: [[1, 'asc']],
|
||||
language: {
|
||||
url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/<?= config('Basics')->i18n ?>.json"
|
||||
},
|
||||
ajax : $.fn.dataTable.pipeline( {
|
||||
url: '<?= route_to('dataTableOfCosidotapablanda') ?>',
|
||||
method: 'POST',
|
||||
headers: {'X-Requested-With': 'XMLHttpRequest'},
|
||||
async: true,
|
||||
}),
|
||||
columnDefs: [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColNr]
|
||||
}
|
||||
],
|
||||
columns : [
|
||||
{ 'data': 'id' },
|
||||
{ 'data': 'fecha' },
|
||||
{ 'data': 'cliente' },
|
||||
{ 'data': 'comercial' },
|
||||
{ 'data': 'titulo' },
|
||||
{ 'data': 'pais' },
|
||||
{ 'data': 'inc_rei' },
|
||||
{ 'data': 'paginas' },
|
||||
{ 'data': 'tirada' },
|
||||
{ 'data': 'total_presupuesto' },
|
||||
{ 'data': 'estado' ,
|
||||
'render': function ( data, type, row, meta ) {
|
||||
if(data=='borrador')
|
||||
return '<?= lang('Presupuestos.presupuestoEstadoBorrador') ?>';
|
||||
else if(data=='aceptado')
|
||||
return '<?= lang('Presupuestos.presupuestoEstadoAceptado') ?>';
|
||||
}
|
||||
},
|
||||
{ 'data': actionBtns }
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
theTable.on( 'draw.dt', function () {
|
||||
@ -242,6 +257,8 @@ $(document).on('click', '.btn-remove', function(e) {
|
||||
|
||||
<?=$this->section('css') ?>
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/2.2.3/css/buttons.<?=config('Basics')->theme['name'] == 'Bootstrap5' ? 'bootstrap5' : 'bootstrap4' ?>.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/fixedheader/3.1.7/css/fixedHeader.dataTables.min.css">
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.css') ?>" />
|
||||
<?=$this->endSection() ?>
|
||||
|
||||
|
||||
@ -251,8 +268,12 @@ $(document).on('click', '.btn-remove', function(e) {
|
||||
<script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.html5.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.print.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.colVis.min.js"></script>
|
||||
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/moment/moment.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.js') ?>"></script>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.0/jszip.min.js" integrity="sha512-xcHCGC5tQ0SHlRX8Anbz6oy/OullASJkEhb4gjkneVpGE3/QGYejf14CUO5n5q5paiHfRFTa9HKgByxzidw2Bw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.5/pdfmake.min.js" integrity="sha512-rDbVu5s98lzXZsmJoMa0DjHNE+RwPJACogUCLyq3Xxm2kJO6qsQwjbE5NDk2DqmlKcxDirCnU1wAzVLe12IM3w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
|
||||
|
||||
@ -102,3 +102,9 @@ div.draw-shapes {
|
||||
overflow-y: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.column-input-search {
|
||||
min-width: 100px;
|
||||
max-width: 120px;
|
||||
font-size: 0.8rem !important;
|
||||
}
|
||||
Reference in New Issue
Block a user