- improvements for "signature table" group filter.
This commit is contained in:
@@ -97,7 +97,7 @@ class Signature extends Controller\AccessController {
|
||||
// this key should not be saved (it is an obj)
|
||||
unset($data['updated']);
|
||||
|
||||
$system->getById( (int)$data['systemId']);
|
||||
$system->getById( (int)$data['systemId'], 0);
|
||||
|
||||
if( !$system->dry() ){
|
||||
// update/save signature
|
||||
|
||||
@@ -50,7 +50,8 @@ define([
|
||||
// xEditable
|
||||
moduleIcon: 'pf-module-icon-button', // class for "filter" - icons
|
||||
editableDescriptionInputClass: 'pf-editable-description', // class for "description" textarea
|
||||
editableFilterInputClass: 'pf-editable-filter' // class for "filter" selects
|
||||
editableFilterElementClass: 'pf-editable-filter', // class for "filter" selects (not active)
|
||||
editableFilterSelectPopoverClass: 'pf-editable-filter-active' // class for active "filter" selects (popover)
|
||||
};
|
||||
|
||||
// lock Signature Table update temporary (until. some requests/animations) are finished
|
||||
@@ -1397,9 +1398,12 @@ define([
|
||||
* @returns {*}
|
||||
*/
|
||||
$.fn.drawSignatureTable = function(signatureData, systemData){
|
||||
|
||||
var moduleElement = $(this);
|
||||
|
||||
// setup filter select in footer
|
||||
// column indexes that need a filter select
|
||||
var filterColumnIndexes = [2];
|
||||
|
||||
// create new signature table ---------------------------------------------------------------------------------
|
||||
var table = $('<table>', {
|
||||
class: ['display', 'compact', 'nowrap', config.sigTableClass, config.sigTablePrimaryClass].join(' ')
|
||||
@@ -1419,38 +1423,26 @@ define([
|
||||
|
||||
var dataTableOptions = {
|
||||
data: signatureData,
|
||||
drawCallback: function(settings){
|
||||
this.api().columns(filterColumnIndexes).every(function(){
|
||||
var column = this;
|
||||
var footerColumnElement = $(column.footer());
|
||||
var filterSelect = footerColumnElement.find('.editable');
|
||||
|
||||
// update select values
|
||||
filterSelect.editable('option', 'source', getColumnTableDataForFilter(column));
|
||||
});
|
||||
},
|
||||
initComplete: function (settings, json){
|
||||
// setup filter select in footer
|
||||
// column indexes that need a filter select
|
||||
var filterColumnIndexes = [2];
|
||||
|
||||
this.api().columns(filterColumnIndexes).every(function(){
|
||||
var column = this;
|
||||
var headerLabel = $(column.header()).text();
|
||||
var selectField = $('<a class="pf-editable ' +
|
||||
config.moduleIcon + ' ' +
|
||||
config.editableFilterInputClass +
|
||||
config.editableFilterElementClass +
|
||||
'" href="#" data-type="select" data-name="' + headerLabel + '"></a>');
|
||||
|
||||
// get all available options from column
|
||||
var source = {};
|
||||
column.data().unique().sort(function(a,b){
|
||||
// sort alphabetically
|
||||
var valA = a.filter.toLowerCase();
|
||||
var valB = b.filter.toLowerCase();
|
||||
|
||||
if(valA < valB) return -1;
|
||||
if(valA > valB) return 1;
|
||||
return 0;
|
||||
}).each(function(callData){
|
||||
if(callData.filter){
|
||||
source[callData.filter] = callData.filter;
|
||||
}
|
||||
});
|
||||
|
||||
// add empty option
|
||||
source[0] = '';
|
||||
|
||||
// add field to footer
|
||||
selectField.appendTo( $(column.footer()).empty() );
|
||||
|
||||
@@ -1459,8 +1451,8 @@ define([
|
||||
onblur: 'submit',
|
||||
title: 'filter',
|
||||
showbuttons: false,
|
||||
source: source,
|
||||
value: 0
|
||||
source: getColumnTableDataForFilter(column),
|
||||
inputclass: config.editableFilterSelectPopoverClass
|
||||
});
|
||||
|
||||
selectField.on('save', { column: column }, function(e, params) {
|
||||
@@ -1482,6 +1474,34 @@ define([
|
||||
return signatureTable;
|
||||
};
|
||||
|
||||
/**
|
||||
* get unique column data from column object for select filter options
|
||||
* @param column
|
||||
* @returns {{}}
|
||||
*/
|
||||
var getColumnTableDataForFilter = function(column){
|
||||
// get all available options from column
|
||||
var source = {};
|
||||
column.data().unique().sort(function(a,b){
|
||||
// sort alphabetically
|
||||
var valA = a.filter.toLowerCase();
|
||||
var valB = b.filter.toLowerCase();
|
||||
|
||||
if(valA < valB) return -1;
|
||||
if(valA > valB) return 1;
|
||||
return 0;
|
||||
}).each(function(callData){
|
||||
if(callData.filter){
|
||||
source[callData.filter] = callData.filter;
|
||||
}
|
||||
});
|
||||
|
||||
// add empty option
|
||||
source[0] = '';
|
||||
|
||||
return source;
|
||||
};
|
||||
|
||||
/**
|
||||
* format signature data array into dataTable structure
|
||||
* @param systemData
|
||||
@@ -2019,7 +2039,6 @@ define([
|
||||
* @param systemData
|
||||
*/
|
||||
$.fn.drawSignatureTableModule = function(systemData){
|
||||
|
||||
var parentElement = $(this);
|
||||
|
||||
// show module
|
||||
@@ -2032,7 +2051,6 @@ define([
|
||||
unlockSignatureTable(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -50,7 +50,8 @@ define([
|
||||
// xEditable
|
||||
moduleIcon: 'pf-module-icon-button', // class for "filter" - icons
|
||||
editableDescriptionInputClass: 'pf-editable-description', // class for "description" textarea
|
||||
editableFilterInputClass: 'pf-editable-filter' // class for "filter" selects
|
||||
editableFilterElementClass: 'pf-editable-filter', // class for "filter" selects (not active)
|
||||
editableFilterSelectPopoverClass: 'pf-editable-filter-active' // class for active "filter" selects (popover)
|
||||
};
|
||||
|
||||
// lock Signature Table update temporary (until. some requests/animations) are finished
|
||||
@@ -1397,9 +1398,12 @@ define([
|
||||
* @returns {*}
|
||||
*/
|
||||
$.fn.drawSignatureTable = function(signatureData, systemData){
|
||||
|
||||
var moduleElement = $(this);
|
||||
|
||||
// setup filter select in footer
|
||||
// column indexes that need a filter select
|
||||
var filterColumnIndexes = [2];
|
||||
|
||||
// create new signature table ---------------------------------------------------------------------------------
|
||||
var table = $('<table>', {
|
||||
class: ['display', 'compact', 'nowrap', config.sigTableClass, config.sigTablePrimaryClass].join(' ')
|
||||
@@ -1419,38 +1423,26 @@ define([
|
||||
|
||||
var dataTableOptions = {
|
||||
data: signatureData,
|
||||
drawCallback: function(settings){
|
||||
this.api().columns(filterColumnIndexes).every(function(){
|
||||
var column = this;
|
||||
var footerColumnElement = $(column.footer());
|
||||
var filterSelect = footerColumnElement.find('.editable');
|
||||
|
||||
// update select values
|
||||
filterSelect.editable('option', 'source', getColumnTableDataForFilter(column));
|
||||
});
|
||||
},
|
||||
initComplete: function (settings, json){
|
||||
// setup filter select in footer
|
||||
// column indexes that need a filter select
|
||||
var filterColumnIndexes = [2];
|
||||
|
||||
this.api().columns(filterColumnIndexes).every(function(){
|
||||
var column = this;
|
||||
var headerLabel = $(column.header()).text();
|
||||
var selectField = $('<a class="pf-editable ' +
|
||||
config.moduleIcon + ' ' +
|
||||
config.editableFilterInputClass +
|
||||
config.editableFilterElementClass +
|
||||
'" href="#" data-type="select" data-name="' + headerLabel + '"></a>');
|
||||
|
||||
// get all available options from column
|
||||
var source = {};
|
||||
column.data().unique().sort(function(a,b){
|
||||
// sort alphabetically
|
||||
var valA = a.filter.toLowerCase();
|
||||
var valB = b.filter.toLowerCase();
|
||||
|
||||
if(valA < valB) return -1;
|
||||
if(valA > valB) return 1;
|
||||
return 0;
|
||||
}).each(function(callData){
|
||||
if(callData.filter){
|
||||
source[callData.filter] = callData.filter;
|
||||
}
|
||||
});
|
||||
|
||||
// add empty option
|
||||
source[0] = '';
|
||||
|
||||
// add field to footer
|
||||
selectField.appendTo( $(column.footer()).empty() );
|
||||
|
||||
@@ -1459,8 +1451,8 @@ define([
|
||||
onblur: 'submit',
|
||||
title: 'filter',
|
||||
showbuttons: false,
|
||||
source: source,
|
||||
value: 0
|
||||
source: getColumnTableDataForFilter(column),
|
||||
inputclass: config.editableFilterSelectPopoverClass
|
||||
});
|
||||
|
||||
selectField.on('save', { column: column }, function(e, params) {
|
||||
@@ -1482,6 +1474,34 @@ define([
|
||||
return signatureTable;
|
||||
};
|
||||
|
||||
/**
|
||||
* get unique column data from column object for select filter options
|
||||
* @param column
|
||||
* @returns {{}}
|
||||
*/
|
||||
var getColumnTableDataForFilter = function(column){
|
||||
// get all available options from column
|
||||
var source = {};
|
||||
column.data().unique().sort(function(a,b){
|
||||
// sort alphabetically
|
||||
var valA = a.filter.toLowerCase();
|
||||
var valB = b.filter.toLowerCase();
|
||||
|
||||
if(valA < valB) return -1;
|
||||
if(valA > valB) return 1;
|
||||
return 0;
|
||||
}).each(function(callData){
|
||||
if(callData.filter){
|
||||
source[callData.filter] = callData.filter;
|
||||
}
|
||||
});
|
||||
|
||||
// add empty option
|
||||
source[0] = '';
|
||||
|
||||
return source;
|
||||
};
|
||||
|
||||
/**
|
||||
* format signature data array into dataTable structure
|
||||
* @param systemData
|
||||
@@ -2019,7 +2039,6 @@ define([
|
||||
* @param systemData
|
||||
*/
|
||||
$.fn.drawSignatureTableModule = function(systemData){
|
||||
|
||||
var parentElement = $(this);
|
||||
|
||||
// show module
|
||||
@@ -2032,7 +2051,6 @@ define([
|
||||
unlockSignatureTable(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -88,6 +88,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
// table filter (active) select (popover)
|
||||
// -> popover is child from <body>
|
||||
.pf-editable-filter-active{
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
// system graph module =====================================================
|
||||
.pf-system-graph-module{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user