Untitled
unknown
plain_text
a year ago
5.8 kB
18
Indexable
function initializeDataTableModal($action, $field, $output_param, $filter = [], $input_param = [], $id = 'example')
{
$custom_filter = [];
$renderDataTable = "var table = $('#" . $id . "').DataTable({";
$renderDataTable .= "\n\t\t\t scrollCollapse: true,";
$renderDataTable .= "\n\t\t\t responsive: true,";
$renderDataTable .= "\n\t\t\t deferRender: true,";
$renderDataTable .= "\n\t\t\t scrollX: true,";
$renderDataTable .= "\n\t\t\t search: {
return: true
},";
$renderDataTable .= "\n\t\t\t 'ajax': {";
$renderDataTable .= "\n\t\t\t 'url': '" . route('ajax-data-table') . "',";
$renderDataTable .= "\n\t\t\t 'type': 'GET',";
$renderDataTable .= "\n\t\t\t 'data': function (d) {";
$renderDataTable .= "\n\t\t\t d.action = '" . $action . "';";
if (!empty($input_param)) {
$set_input_param = $input_param;
// $set_input_param = json_decode($input_param, true);
// custom filter
if (!empty($set_input_param)) {
foreach ($set_input_param as $key => $value) {
$set_value = $value['query'];
if ($value['query'] == 'on') {
$set_value = 'true';
}
$custom_filter[] = array(
'key' => $value['key'],
'term' => $value['term'],
'query' => $set_value,
);
}
}
}
if (!empty(json_encode($filter))) {
$filter = json_decode(json_encode($filter), true);
foreach ($filter as $key => $value) {
if (is_array($value)) {
$custom_filter[] = array(
'key' => $key,
'term' => 'in',
'query' => $value
);
} else {
$custom_filter[] = array(
'key' => $key,
'term' => 'equal',
'query' => $value
);
}
}
}
if (!empty($custom_filter)) {
$renderDataTable .= "\n\t\t\t d.filters = '" . json_encode($custom_filter) . "';";
}
$renderDataTable .= "\n\t\t\t },";
$renderDataTable .= "\n\t\t\t },";
$renderDataTable .= "\n\t\t\t processing: true,";
$renderDataTable .= "\n\t\t\t serverSide: true,";
$renderDataTable .= "columns: [";
foreach ($field as $value) {
$renderDataTable .= "{ data: '" . strtolower($value['field']) . "', name: '" . $value['name'] . "'},";
}
$renderDataTable .= "],";
$renderDataTable .= "\n\t\t\t language: {";
$renderDataTable .= "\n\t\t\t paginate: {";
$renderDataTable .= "\n\t\t\t next: '<i class=\"fa fa-angle-double-right\" aria-hidden=\"true\"></i>',";
$renderDataTable .= "\n\t\t\t previous: '<i class=\"fa fa-angle-double-left\" aria-hidden=\"true\"></i>'";
$renderDataTable .= "\n\t\t\t },";
$renderDataTable .= "\n\t\t\t }";
$renderDataTable .= "\n\t\t\t });";
$renderDataTable .= "\n\t\t\t table.on('click', 'tbody tr', (e) => {";
$renderDataTable .= "\n\t\t\t let classList = e.currentTarget.classList;";
$renderDataTable .= "\n\t\t\t if (classList.contains('selected')) {";
$renderDataTable .= "\n\t\t\t classList.remove('selected');";
$renderDataTable .= "\n\t\t\t }";
$renderDataTable .= "\n\t\t\t else {";
$renderDataTable .= "\n\t\t\t table.rows('.selected').nodes().each((row) => row.classList.remove('selected'));";
$renderDataTable .= "\n\t\t\t classList.add('selected');}";
$renderDataTable .= "\n\t\t\t });";
$renderDataTable .= "\n\t\t\t $('#" . $id . " tbody').on( 'dblclick', 'tr', function () {";
$renderDataTable .= "\n\t\t\t var getDataRow = table.row( this ).data();";
if (!empty($output_param)) {
foreach ($output_param as $parameter) {
$param = explode("|", $parameter);
$output_action = "val";
if (isset($param[2])) {
if ($param[2] == "html") {
$output_action = $param[2];
}
}
$setOutputUI = "getDataRow." . $param[1] . ".toString()";
if (str_contains($param[1], '-')) {
$renderOutputs = explode("-", $param[1]);
$tempOutputUI = "";
$count = 0;
foreach ($renderOutputs as $value) {
$tempOutputUI .= "getDataRow." . $value . ".toString()";
$count++;
if ($count < count($renderOutputs)) {
$tempOutputUI .= " + ' - ' + ";
}
}
$setOutputUI = $tempOutputUI;
}
$renderDataTable .= "\n\t\t\t $('#" . $param[0] . "')." . $output_action . "(" . $setOutputUI . ");";
$renderDataTable .= "\n\t\t\t selectedItems.push(getDataRow.name.toString());";
$renderDataTable .= "\n\t\t\t selectedItemIds.push(getDataRow.id.toString());";
$renderDataTable .= "\n\t\t\t $('#" . $param[0] . "_tags').append('<span class=\"selected-item\" data-id=\"' + getDataRow.id.toString() + '\">' + getDataRow.name.toString() + ' <button class=\"remove-item\">x</button></span>');";
$renderDataTable .= "\n\t\t\t $('#" . $param[0] . "_ids').val(selectedItemIds.join(','));";
}
}
$renderDataTable .= "$('#baseModel').modal('hide');";
$renderDataTable .= "if(typeof getVal === 'function') {
getVal();
} else {
console.log('No function defined');
}";
$renderDataTable .= '})';
return $renderDataTable;
}Editor is loading...
Leave a Comment