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
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
#app.baseURL = 'https://sk-jjo.imnavajas.es'
|
app.baseURL = 'https://sk-jjo.imnavajas.es'
|
||||||
app.baseURL = 'https://sk-imn.imnavajas.es'
|
#app.baseURL = 'https://sk-imn.imnavajas.es'
|
||||||
# app.baseURL = "http://safekat.test/"
|
# app.baseURL = "http://safekat.test/"
|
||||||
# app.forceGlobalSecureRequests = false
|
# app.forceGlobalSecureRequests = false
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ database.default.dump =
|
|||||||
security.headerName = 'X-CSRF-TOKEN'
|
security.headerName = 'X-CSRF-TOKEN'
|
||||||
security.cookieName = 'safekat_cookie'
|
security.cookieName = 'safekat_cookie'
|
||||||
security.expires = 7200
|
security.expires = 7200
|
||||||
security.regenerate = true
|
security.regenerate = false
|
||||||
security.redirect = true
|
security.redirect = true
|
||||||
security.samesite = 'Lax'
|
security.samesite = 'Lax'
|
||||||
|
|
||||||
|
|||||||
@ -321,14 +321,23 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
$start = $reqData['start'] ?? 0;
|
$start = $reqData['start'] ?? 0;
|
||||||
$length = $reqData['length'] ?? 5;
|
$length = $reqData['length'] ?? 5;
|
||||||
|
|
||||||
$requestedOrder = $reqData['order']['0']['column'] ?? 0;
|
$requestedOrder1 = $reqData['order']['0']['column'] ?? 0;
|
||||||
$order = PresupuestoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0];
|
$order1 = PresupuestoModel::SORTABLE[$requestedOrder1 >= 0 ? $requestedOrder1 : 0];
|
||||||
$dir = $reqData['order']['0']['dir'] ?? 'asc';
|
$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)) {
|
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) :
|
foreach ($resourceData as $item) :
|
||||||
if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) :
|
if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) :
|
||||||
$item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100);
|
$item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100);
|
||||||
|
|||||||
@ -641,6 +641,25 @@ function templateSelect($templates=[],$name='',$type='') {
|
|||||||
return null;
|
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
|
// 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
|
// https://stackoverflow.com/questions/3269434/whats-the-most-efficient-way-to-test-if-two-ranges-overlap
|
||||||
function check_overlap($a1, $a2, $b1, $b2){
|
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",
|
2 => "t2.nombre",
|
||||||
3 => "t3.first_name",
|
3 => "t3.first_name",
|
||||||
4 => "t1.titulo",
|
4 => "t1.titulo",
|
||||||
5 => "t4.nombre",
|
5 => "t5.nombre",
|
||||||
6 => "t5.nombre",
|
6 => "t1.inc_rei",
|
||||||
7 => "t1.inc_rei",
|
7 => "t1.paginas",
|
||||||
8 => "t1.paginas",
|
8 => "t1.tirada",
|
||||||
9 => "t1.tirada",
|
9 => "t1.total_pedido",
|
||||||
10 => "t1.total_pedido",
|
10 => "t6.estado",
|
||||||
11 => "t6.estado",
|
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $allowedFields = [
|
protected $allowedFields = [
|
||||||
@ -307,7 +306,7 @@ class PresupuestoModel extends \App\Models\GoBaseModel
|
|||||||
*
|
*
|
||||||
* @return \CodeIgniter\Database\BaseBuilder
|
* @return \CodeIgniter\Database\BaseBuilder
|
||||||
*/
|
*/
|
||||||
public function getResource(string $search = "")
|
public function getResource($search = [])
|
||||||
{
|
{
|
||||||
$builder = $this->db
|
$builder = $this->db
|
||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
@ -324,36 +323,22 @@ class PresupuestoModel extends \App\Models\GoBaseModel
|
|||||||
|
|
||||||
$builder->where("t1.is_deleted", 0);
|
$builder->where("t1.is_deleted", 0);
|
||||||
|
|
||||||
return empty($search)
|
if(empty($search))
|
||||||
? $builder
|
return $builder;
|
||||||
: $builder
|
else{
|
||||||
->groupStart()
|
$builder->groupStart();
|
||||||
->like("t1.id", $search)
|
foreach($search as $col_search){
|
||||||
->orLike("t1.created_at", $search)
|
if($col_search[0] != 1)
|
||||||
->orLike("t2.nombre", $search)
|
$builder->like(self::SORTABLE[$col_search[0]], $col_search[2]);
|
||||||
->orLike("t3.first_name", $search)
|
else{
|
||||||
->orLike("t3.last_name", $search)
|
$dates = explode(" ", $col_search[2]);
|
||||||
->orLike("t1.titulo", $search)
|
$builder->where(self::SORTABLE[$col_search[0]] . ">=", $dates[0]);
|
||||||
->orLike("t4.nombre", $search)
|
$builder->where(self::SORTABLE[$col_search[0]] . "<=", $dates[1]);
|
||||||
->orLike("t5.nombre", $search)
|
}
|
||||||
->orLike("t1.inc_rei", $search)
|
}
|
||||||
->orLike("t1.paginas", $search)
|
$builder->groupEnd();
|
||||||
->orLike("t1.tirada", $search)
|
return $builder;
|
||||||
->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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,11 +25,11 @@
|
|||||||
<th><?= lang('Presupuestos.titulo') ?></th>
|
<th><?= lang('Presupuestos.titulo') ?></th>
|
||||||
<th><?= lang('Paises.pais') ?></th>
|
<th><?= lang('Paises.pais') ?></th>
|
||||||
<th><?= lang('Presupuestos.incRei') ?></th>
|
<th><?= lang('Presupuestos.incRei') ?></th>
|
||||||
<th><?= lang('Presupuestos.paginas') ?></th>
|
<th class='noFilter'><?= lang('Presupuestos.paginas') ?></th>
|
||||||
<th><?= lang('Presupuestos.tirada') ?></th>
|
<th class='noFilter'><?= lang('Presupuestos.tirada') ?></th>
|
||||||
<th><?= lang('Presupuestos.totalPresupuesto') ?></th>
|
<th class='noFilter'><?= lang('Presupuestos.totalPresupuesto') ?></th>
|
||||||
<th><?= lang('Presupuestos.presupuestoEstado') ?></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>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -48,134 +48,149 @@
|
|||||||
|
|
||||||
|
|
||||||
<?=$this->section('additionalInlineJs') ?>
|
<?=$this->section('additionalInlineJs') ?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const lastColNr = $('#tableOfPresupuestos').find("tr:first th").length - 1;
|
const lastColNr = $('#tableOfPresupuestos').find("tr:first th").length - 1;
|
||||||
const actionBtns = function(data) {
|
const actionBtns = function(data) {
|
||||||
return `
|
return `
|
||||||
<td class="text-right py-0 align-middle">
|
<td class="text-right py-0 align-middle">
|
||||||
<div class="btn-group btn-group-sm">
|
<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-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>
|
<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>
|
</div>
|
||||||
</td>`;
|
</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
|
theTable = $('#tableOfPresupuestos').DataTable({
|
||||||
$('#tableOfPresupuestos thead tr')
|
orderCellsTop: true,
|
||||||
.clone(true)
|
fixedHeader: true,
|
||||||
.addClass('filters')
|
processing: true,
|
||||||
.appendTo('#tableOfPresupuestos thead');
|
serverSide: true,
|
||||||
|
autoWidth: true,
|
||||||
|
responsive: true,
|
||||||
theTable = $('#tableOfPresupuestos').DataTable({
|
scrollX: true,
|
||||||
orderCellsTop: true,
|
lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ],
|
||||||
processing: true,
|
pageLength: 50,
|
||||||
serverSide: true,
|
lengthChange: true,
|
||||||
autoWidth: true,
|
"dom": 'lBrtip',
|
||||||
responsive: true,
|
"buttons": [
|
||||||
scrollX: true,
|
'colvis', 'copy', 'csv', 'excel', 'print', {
|
||||||
lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ],
|
extend: 'pdfHtml5',
|
||||||
pageLength: 50,
|
orientation: 'landscape',
|
||||||
lengthChange: true,
|
pageSize: 'A4'
|
||||||
"dom": 'lfBrtip',
|
}
|
||||||
"buttons": [
|
],
|
||||||
'colvis', 'copy', 'csv', 'excel', 'print', {
|
stateSave: false,
|
||||||
extend: 'pdfHtml5',
|
order: [[1, 'asc']],
|
||||||
orientation: 'landscape',
|
language: {
|
||||||
pageSize: 'A4'
|
url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/<?= config('Basics')->i18n ?>.json"
|
||||||
}
|
},
|
||||||
],
|
ajax : $.fn.dataTable.pipeline( {
|
||||||
stateSave: true,
|
url: '<?= route_to('dataTableOfCosidotapablanda') ?>',
|
||||||
order: [[1, 'asc']],
|
method: 'POST',
|
||||||
language: {
|
headers: {'X-Requested-With': 'XMLHttpRequest'},
|
||||||
url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/<?= config('Basics')->i18n ?>.json"
|
async: true,
|
||||||
},
|
}),
|
||||||
ajax : $.fn.dataTable.pipeline( {
|
columnDefs: [
|
||||||
url: '<?= route_to('dataTableOfCosidotapablanda') ?>',
|
{
|
||||||
method: 'POST',
|
orderable: false,
|
||||||
headers: {'X-Requested-With': 'XMLHttpRequest'},
|
searchable: false,
|
||||||
async: true,
|
targets: [lastColNr]
|
||||||
}),
|
}
|
||||||
columnDefs: [
|
],
|
||||||
{
|
columns : [
|
||||||
orderable: false,
|
{ 'data': 'id' },
|
||||||
searchable: false,
|
{ 'data': 'fecha' },
|
||||||
targets: [lastColNr]
|
{ 'data': 'cliente' },
|
||||||
}
|
{ 'data': 'comercial' },
|
||||||
],
|
{ 'data': 'titulo' },
|
||||||
columns : [
|
{ 'data': 'pais' },
|
||||||
{ 'data': 'id' },
|
{ 'data': 'inc_rei' },
|
||||||
{ 'data': 'fecha' },
|
{ 'data': 'paginas' },
|
||||||
{ 'data': 'cliente' },
|
{ 'data': 'tirada' },
|
||||||
{ 'data': 'comercial' },
|
{ 'data': 'total_presupuesto' },
|
||||||
{ 'data': 'titulo' },
|
{ 'data': 'estado' ,
|
||||||
{ 'data': 'pais' },
|
'render': function ( data, type, row, meta ) {
|
||||||
{ 'data': 'inc_rei' },
|
if(data=='borrador')
|
||||||
{ 'data': 'paginas' },
|
return '<?= lang('Presupuestos.presupuestoEstadoBorrador') ?>';
|
||||||
{ 'data': 'tirada' },
|
else if(data=='aceptado')
|
||||||
{ 'data': 'total_presupuesto' },
|
return '<?= lang('Presupuestos.presupuestoEstadoAceptado') ?>';
|
||||||
{ 'data': 'estado' ,
|
}
|
||||||
'render': function ( data, type, row, meta ) {
|
},
|
||||||
if(data=='borrador')
|
{ 'data': actionBtns }
|
||||||
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.on( 'draw.dt', function () {
|
theTable.on( 'draw.dt', function () {
|
||||||
@ -242,6 +257,8 @@ $(document).on('click', '.btn-remove', function(e) {
|
|||||||
|
|
||||||
<?=$this->section('css') ?>
|
<?=$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" 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() ?>
|
<?=$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.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.print.min.js"></script>
|
||||||
<script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.colVis.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/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>
|
<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;
|
overflow-y: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.column-input-search {
|
||||||
|
min-width: 100px;
|
||||||
|
max-width: 120px;
|
||||||
|
font-size: 0.8rem !important;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user