Backport commit r48263, committed by Nathan Gray. Infolog lists embedded as action can have their own separate column preferences.

This commit is contained in:
Hadi Nategh 2014-08-26 13:51:06 +00:00
parent 9e7b3107b5
commit 59f0b65e63
3 changed files with 24 additions and 18 deletions

View File

@ -955,9 +955,9 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput],
for (var x = 0; x < _row.length; x++) for (var x = 0; x < _row.length; x++)
{ {
this.columns[x] = { this.columns[x] = jQuery.extend({
"widget": _row[x].widget "widget": _row[x].widget
}; },_colData[x]);
columnData[x] = { columnData[x] = {

View File

@ -372,7 +372,11 @@ class infolog_ui
// do we need to read the custom fields, depends on the column is enabled and customfields exist, prefs are filter specific // do we need to read the custom fields, depends on the column is enabled and customfields exist, prefs are filter specific
// so we have to check that as well // so we have to check that as well
$details = $query['filter2'] == 'all'; $details = $query['filter2'] == 'all';
$columselection = $this->prefs['nextmatch-infolog.index.rows'.($details?'-details':'')]; $columnselection_pref = 'nextmatch-'.($query['action'] ? 'infolog.'.$query['action'] : (is_object($query['template']) ? $query['template']->name : 'infolog.index.rows'))
.($details ? '-details' : '');
$columselection = $this->prefs[$columnselection_pref];
//_debug_array($columselection); //_debug_array($columselection);
if ($columselection) if ($columselection)
{ {
@ -394,13 +398,11 @@ class infolog_ui
// add a '-details' to the name of the columnselection pref // add a '-details' to the name of the columnselection pref
if ($details) if ($details)
{ {
$query['columnselection_pref'] = 'nextmatch-'.(is_object($query['template'])?$query['template']->name:'infolog.index.rows').'-details'; $query['default_cols'] = '!cat_id,info_used_time_info_planned_time,info_used_time_info_planned_time_info_replanned_time,info_id';
$query['default_cols'] = '!cat_id,info_used_time_info_planned_time,info_used_time_info_planned_time_info_replanned_time,info_id,actions';
} }
else else
{ {
$query['columnselection_pref'] = 'nextmatch-infolog.index.rows'; $query['default_cols'] = '!cat_id,info_datemodified,info_used_time_info_planned_time,info_used_time_info_planned_time_info_replanned_time,info_id';
$query['default_cols'] = '!cat_id,info_datemodified,info_used_time_info_planned_time,info_used_time_info_planned_time_info_replanned_time,info_id,actions';
} }
// set old show_times pref, that get_info calculates the cumulated time of the timesheets (we only check used&planned to work for both time cols) // set old show_times pref, that get_info calculates the cumulated time of the timesheets (we only check used&planned to work for both time cols)
$this->prefs['show_times'] = strpos($this->prefs[$query['columnselection_pref']],'info_used_time_info_planned_time') !== false; $this->prefs['show_times'] = strpos($this->prefs[$query['columnselection_pref']],'info_used_time_info_planned_time') !== false;
@ -861,7 +863,7 @@ class infolog_ui
$values['nm']['filter_onchange'] = "app.infolog.filter_change();"; $values['nm']['filter_onchange'] = "app.infolog.filter_change();";
//apply infolog_filter2_change javascript method (show/hide details each rows) over onchange filter2 //apply infolog_filter2_change javascript method (show/hide details each rows) over onchange filter2
$values['nm']['filter2_onchange'] = "app.infolog.filter2_change();"; $values['nm']['filter2_onchange'] = "app.infolog.filter2_change";
// disable favories dropdown button, if not running as infolog // disable favories dropdown button, if not running as infolog
if ($called_as && $called_as != 'infolog') if ($called_as && $called_as != 'infolog')
@ -878,9 +880,11 @@ class infolog_ui
$values['nm']['placeholder_actions'] = array('new'); $values['nm']['placeholder_actions'] = array('new');
// disable columns for main entry as set in the pref for details or no details // disable columns for main entry as set in the pref for details or no details
$values['nm']['columnselection_pref'] = 'nextmatch-'.($action ? 'infolog.'.$action : 'infolog.index.rows')
.($values['nm']['filter2']=='all' ? '-details' : '');
if ($action == 'sp') if ($action == 'sp')
{ {
$pref = 'nextmatch-infolog.index.rows'.($values['nm']['filter2']=='all'?'-details':''); $pref = $values['nm']['columnselection_pref'];
foreach(array('info_used_time_info_planned_time_info_replanned_time','info_datemodified','info_owner_info_responsible','customfields') as $name) foreach(array('info_used_time_info_planned_time_info_replanned_time','info_datemodified','info_owner_info_responsible','customfields') as $name)
{ {
$values['main']['no_'.$name] = strpos($this->prefs[$pref],$name) === false; $values['main']['no_'.$name] = strpos($this->prefs[$pref],$name) === false;

View File

@ -151,11 +151,12 @@ app.classes.infolog = AppJS.extend(
* show or hide the details of rows by selecting the filter2 option * show or hide the details of rows by selecting the filter2 option
* either 'all' for details or 'no_description' for no details * either 'all' for details or 'no_description' for no details
* *
* @param {Event} event Change event
* @param {et2_nextmatch} nm The nextmatch widget that owns the filter
*/ */
filter2_change: function() filter2_change: function(event, nm)
{ {
var nm = this.et2.getWidgetById('nm'); var filter2 = nm.getWidgetById('filter2');
var filter2 = this.et2.getWidgetById('filter2');
if (nm && filter2) if (nm && filter2)
{ {
@ -163,16 +164,17 @@ app.classes.infolog = AppJS.extend(
this.show_details(filter2.value == 'all'); this.show_details(filter2.value == 'all');
// Change preference location - widget is nextmatch // Change preference location - widget is nextmatch
nm.options.settings.columnselection_pref = 'infolog.index.rows'+(filter2.value == 'all' ? '-details' :''); nm.options.settings.columnselection_pref = nm.options.settings.columnselection_pref.replace('-details','') + (filter2.value == 'all' ? '-details' :'');
// Load new preferences // Load new preferences
var colData = []; var colData = nm.columns.slice();
for(var i = 0; i < nm.columns.length; i++) colData[i] = {disabled: true, width: '20'}; for(var i = 0; i < nm.columns.length; i++) colData[i].disabled=false;
nm._applyUserPreferences(nm.columns, colData); nm._applyUserPreferences(nm.columns, colData);
// Now apply them to columns
for(var i = 0; i < colData.length; i++) for(var i = 0; i < colData.length; i++)
{ {
// Wants a string nm.dataview.getColumnMgr().columns[i].set_width(colData[i].width);
nm.dataview.getColumnMgr().columns[i].set_width(colData[i].width + 'px');
nm.dataview.getColumnMgr().columns[i].set_visibility(!colData[i].disabled); nm.dataview.getColumnMgr().columns[i].set_visibility(!colData[i].disabled);
} }
nm.dataview.getColumnMgr().updated = true; nm.dataview.getColumnMgr().updated = true;