3083 lines
90 KiB
JavaScript
3083 lines
90 KiB
JavaScript
|
( function( $ ) {
|
||
|
|
||
|
$.fn.ADropDown = function( options ) {
|
||
|
var opts = $.extend( {}, $.fn.ADropDown.defaults, options );
|
||
|
|
||
|
var unselect_grid = null;
|
||
|
|
||
|
var select_grid = null;
|
||
|
|
||
|
var total_display_span = null;
|
||
|
|
||
|
var static_source_data = null; //Always use this to help to set Select data
|
||
|
|
||
|
var id = null;
|
||
|
|
||
|
var key = 'id';
|
||
|
|
||
|
var parent_a_combo_box = null;
|
||
|
|
||
|
var a_dropdown_this = this;
|
||
|
|
||
|
var unselect_grid_header_array = [];
|
||
|
|
||
|
var select_grid_header_array = [];
|
||
|
|
||
|
var show_search_inputs = true;
|
||
|
|
||
|
var local_search_mode = false;
|
||
|
|
||
|
var local_search_optional_filter = [];
|
||
|
|
||
|
var unselect_grid_search_map = null;
|
||
|
|
||
|
var select_grid_search_map = null;
|
||
|
|
||
|
var unselect_grid_sort_map = null;
|
||
|
|
||
|
var select_grid_sort_map = null;
|
||
|
|
||
|
var select_item = null;
|
||
|
|
||
|
var tree_mode = false;
|
||
|
|
||
|
var on_tree_grid_row_select = false; //#2566 - added select row callback so that trees can be used for edit-view navigation
|
||
|
|
||
|
var unselect_grid_last_row = '';
|
||
|
|
||
|
var select_grid_last_row = '';
|
||
|
|
||
|
var allow_multiple_selection = true;
|
||
|
|
||
|
var allow_drag_to_order = false;
|
||
|
|
||
|
var pager_data = null;
|
||
|
|
||
|
var paging_widget = null;
|
||
|
|
||
|
var real_selected_items = null; //Set this after search in select grid;
|
||
|
|
||
|
var start;
|
||
|
|
||
|
var last;
|
||
|
|
||
|
var next;
|
||
|
|
||
|
var end;
|
||
|
|
||
|
var paging_selector;
|
||
|
|
||
|
var left_buttons_div;
|
||
|
|
||
|
var right_buttons_div;
|
||
|
|
||
|
var left_buttons_enable;
|
||
|
|
||
|
var right_buttons_enable;
|
||
|
|
||
|
var field;
|
||
|
|
||
|
var error_tip_box;
|
||
|
|
||
|
var error_string = '';
|
||
|
|
||
|
var default_height = 150;
|
||
|
|
||
|
var unselect_grid_no_result_box = null;
|
||
|
|
||
|
var select_grid_no_result_box = null;
|
||
|
|
||
|
var box_width;
|
||
|
|
||
|
var focus_in_select_grid = false;
|
||
|
|
||
|
var auto_sort = false;
|
||
|
|
||
|
var isChanged = false;
|
||
|
|
||
|
var api = null; //Pass from owner
|
||
|
|
||
|
var column_editor = null;
|
||
|
|
||
|
var column_option_key = null;
|
||
|
|
||
|
var display_column_settings = true;
|
||
|
|
||
|
var quick_search_timer;
|
||
|
|
||
|
var quick_search_typed_keys = '';
|
||
|
|
||
|
var quick_search_dic = {};
|
||
|
|
||
|
var max_height = false;
|
||
|
var static_height = false;
|
||
|
|
||
|
var resize_grids = false;
|
||
|
|
||
|
//Select all records in target grid
|
||
|
var selectAllInGrid = function( target, deSelect ) {
|
||
|
target.resetSelection();
|
||
|
if ( !deSelect ) {
|
||
|
var source_data = target.getGridParam( 'data' );
|
||
|
var len = source_data.length;
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
var item = source_data[i];
|
||
|
if ( item.hidden ) {
|
||
|
continue;
|
||
|
}
|
||
|
if ( Global.isSet( item.id ) ) {
|
||
|
target.grid.jqGrid( 'setSelection', item.id, false );
|
||
|
} else {
|
||
|
target.grid.jqGrid( 'setSelection', i + 1, false );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
target.grid.parents( '.cbox-header' ).prop( 'checked', true );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Global.addCss( 'global/widgets/awesomebox/ADropDown.css' );
|
||
|
|
||
|
this.isLocalSearchMode = function() {
|
||
|
return local_search_mode;
|
||
|
};
|
||
|
|
||
|
this.setLocalSearchMode = function( value ) {
|
||
|
local_search_mode = value;
|
||
|
};
|
||
|
|
||
|
this.isChanged = function() {
|
||
|
return isChanged;
|
||
|
};
|
||
|
|
||
|
this.setIsChanged = function( val ) {
|
||
|
isChanged = val;
|
||
|
};
|
||
|
|
||
|
this.unSelectAll = function( target ) {
|
||
|
selectAllInGrid( target, true );
|
||
|
};
|
||
|
|
||
|
this.getFocusInSeletGrid = function() {
|
||
|
return focus_in_select_grid;
|
||
|
};
|
||
|
|
||
|
this.selectAll = function() {
|
||
|
|
||
|
if ( focus_in_select_grid ) {
|
||
|
selectAllInGrid( select_grid );
|
||
|
} else {
|
||
|
selectAllInGrid( unselect_grid );
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
this.gridScrollTop = function() {
|
||
|
|
||
|
unselect_grid.grid.parent().parent().scrollTop( 0 );
|
||
|
};
|
||
|
|
||
|
this.gridScrollDown = function() {
|
||
|
|
||
|
unselect_grid.grid.parent().parent().scrollTop( 10000 );
|
||
|
};
|
||
|
|
||
|
this.getBoxWidth = function() {
|
||
|
return box_width;
|
||
|
};
|
||
|
|
||
|
this.setErrorStyle = function( errStr, show, isWarning ) {
|
||
|
if ( isWarning ) {
|
||
|
$( this ).addClass( 'warning-tip' );
|
||
|
} else {
|
||
|
$( this ).addClass( 'error-tip' );
|
||
|
}
|
||
|
error_string = errStr;
|
||
|
|
||
|
if ( show ) {
|
||
|
this.showErrorTip();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.showErrorTip = function( sec ) {
|
||
|
|
||
|
if ( !Global.isSet( sec ) ) {
|
||
|
sec = 2;
|
||
|
}
|
||
|
|
||
|
if ( !error_tip_box ) {
|
||
|
error_tip_box = Global.loadWidgetByName( WidgetNamesDic.ERROR_TOOLTIP );
|
||
|
error_tip_box = error_tip_box.ErrorTipBox();
|
||
|
}
|
||
|
if ( $( this ).hasClass( 'warning-tip' ) ) {
|
||
|
error_tip_box.show( this, error_string, sec, true );
|
||
|
} else {
|
||
|
error_tip_box.show( this, error_string, sec );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.hideErrorTip = function() {
|
||
|
|
||
|
if ( Global.isSet( error_tip_box ) ) {
|
||
|
error_tip_box.remove();
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
this.clearErrorStyle = function() {
|
||
|
$( this ).removeClass( 'error-tip' );
|
||
|
$( this ).removeClass( 'warning-tip' );
|
||
|
this.hideErrorTip();
|
||
|
error_string = '';
|
||
|
};
|
||
|
|
||
|
this.getField = function() {
|
||
|
return field;
|
||
|
};
|
||
|
|
||
|
// Must call after setUnSelectGridData
|
||
|
this.setValue = function( val ) {
|
||
|
this.setSelectGridData( val );
|
||
|
};
|
||
|
|
||
|
this.getValue = function() {
|
||
|
return this.getSelectItems();
|
||
|
};
|
||
|
|
||
|
this.getSelectGridSortMap = function() {
|
||
|
return select_grid_sort_map;
|
||
|
};
|
||
|
|
||
|
this.getUnSelectGridSortMap = function() {
|
||
|
return unselect_grid_sort_map;
|
||
|
};
|
||
|
|
||
|
this.getUnSelectGridMap = function() {
|
||
|
|
||
|
if ( !unselect_grid_search_map ) {
|
||
|
unselect_grid_search_map = {};
|
||
|
}
|
||
|
|
||
|
return unselect_grid_search_map;
|
||
|
};
|
||
|
|
||
|
this.getUnSelectGrid = function() {
|
||
|
return unselect_grid;
|
||
|
};
|
||
|
|
||
|
this.getSelectGrid = function() {
|
||
|
return select_grid;
|
||
|
};
|
||
|
|
||
|
this.getSelectGridMap = function() {
|
||
|
|
||
|
if ( !select_grid_search_map ) {
|
||
|
select_grid_search_map = {};
|
||
|
}
|
||
|
|
||
|
var ids = [];
|
||
|
if ( allow_multiple_selection ) {
|
||
|
var select_items = a_dropdown_this.getSelectItems();
|
||
|
for ( var i = 0; i < select_items.length; i++ ) {
|
||
|
ids.push( select_items[i][key] );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ids.length > 0 ) {
|
||
|
select_grid_search_map.id = ids;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
return select_grid_search_map;
|
||
|
};
|
||
|
|
||
|
this.collectUnselectGridColumns = function() {
|
||
|
var columns = unselect_grid.getGridParam( 'colModel' );
|
||
|
|
||
|
var len = ( ( columns ) ? columns.length : 0 );
|
||
|
|
||
|
unselect_grid_header_array = [];
|
||
|
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
var column_info = columns[i];
|
||
|
var column_header = $( this ).find( 'div #jqgh_unselect_grid_' + id + '_' + column_info.name );
|
||
|
|
||
|
unselect_grid_header_array.push( column_header.TGridHeader( { column_model: column_info } ) );
|
||
|
|
||
|
column_header.bind( 'headerClick', onUnSelectColumnHeaderClick );
|
||
|
}
|
||
|
|
||
|
a_dropdown_this.setGridHeaderStyle( 'unselect_grid' );
|
||
|
|
||
|
function onUnSelectColumnHeaderClick( e, headerE, column_model ) {
|
||
|
|
||
|
//Error: Uncaught TypeError: Cannot read property 'setCachedSortFilter' of null in /interface/html5/global/widgets/awesomebox/ADropDown.js?v=7.4.6-20141027-072624 line 286
|
||
|
if ( !parent_a_combo_box || !parent_a_combo_box.getAPI() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var field = column_model.name;
|
||
|
|
||
|
if ( field === 'cb' ) { //first column, check box column.
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( headerE.metaKey || headerE.ctrlKey ) {
|
||
|
a_dropdown_this.buildSortCondition( false, field, 'unselect_grid' );
|
||
|
} else {
|
||
|
a_dropdown_this.buildSortCondition( true, field, 'unselect_grid' );
|
||
|
|
||
|
}
|
||
|
|
||
|
parent_a_combo_box.setCachedSortFilter( unselect_grid_sort_map );
|
||
|
a_dropdown_this.setGridHeaderStyle( 'unselect_grid' );
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid' );
|
||
|
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.buildSortCondition = function( reset, field, targetName ) {
|
||
|
|
||
|
var sort_map = null;
|
||
|
var nextSort = 'desc';
|
||
|
|
||
|
if ( targetName === 'unselect_grid' ) {
|
||
|
sort_map = unselect_grid_sort_map;
|
||
|
} else {
|
||
|
sort_map = select_grid_sort_map;
|
||
|
}
|
||
|
|
||
|
if ( reset ) {
|
||
|
|
||
|
if ( sort_map && sort_map.length > 0 ) {
|
||
|
var len = sort_map.length;
|
||
|
var found = false;
|
||
|
for ( i = 0; i < len; i++ ) {
|
||
|
var sortItem = sort_map[i];
|
||
|
for ( var key in sortItem ) {
|
||
|
if ( key === field ) {
|
||
|
if ( sortItem[key] === 'asc' ) {
|
||
|
nextSort = 'desc';
|
||
|
} else {
|
||
|
nextSort = 'asc';
|
||
|
}
|
||
|
|
||
|
found = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( found ) {
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
sort_map = [
|
||
|
{}
|
||
|
];
|
||
|
sort_map[0][field] = nextSort;
|
||
|
|
||
|
} else {
|
||
|
if ( !sort_map ) {
|
||
|
sort_map = [
|
||
|
{}
|
||
|
];
|
||
|
sort_map[0][field] = 'desc';
|
||
|
} else {
|
||
|
len = sort_map.length;
|
||
|
found = false;
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
sortItem = sort_map[i];
|
||
|
for ( var key in sortItem ) {
|
||
|
if ( key === field ) {
|
||
|
if ( sortItem[key] === 'asc' ) {
|
||
|
sortItem[key] = 'desc';
|
||
|
} else {
|
||
|
sortItem[key] = 'asc';
|
||
|
}
|
||
|
|
||
|
found = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( found ) {
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( !found ) {
|
||
|
sort_map.push( {} );
|
||
|
sort_map[len][field] = 'desc';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( targetName === 'unselect_grid' ) {
|
||
|
unselect_grid_sort_map = sort_map;
|
||
|
} else {
|
||
|
select_grid_sort_map = sort_map;
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
this.setGridHeaderStyle = function( targetName ) {
|
||
|
|
||
|
var headerArray = [];
|
||
|
var sort_map = [];
|
||
|
|
||
|
if ( targetName === 'unselect_grid' ) {
|
||
|
headerArray = unselect_grid_header_array;
|
||
|
sort_map = unselect_grid_sort_map;
|
||
|
} else {
|
||
|
headerArray = select_grid_header_array;
|
||
|
sort_map = select_grid_sort_map;
|
||
|
}
|
||
|
|
||
|
var len = headerArray.length;
|
||
|
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
var tGridHeader = headerArray[i];
|
||
|
var field = tGridHeader.getColumnModel().name;
|
||
|
|
||
|
tGridHeader.cleanSortStyle();
|
||
|
|
||
|
if ( sort_map ) {
|
||
|
var sortArrayLen = sort_map.length;
|
||
|
|
||
|
for ( var j = 0; j < sortArrayLen; j++ ) {
|
||
|
var sortItem = sort_map[j];
|
||
|
var sortField = Global.getFirstKeyFromObject( sortItem );
|
||
|
if ( sortField === field ) {
|
||
|
|
||
|
if ( sortArrayLen > 1 ) {
|
||
|
tGridHeader.setSortStyle( sortItem[sortField], j + 1 );
|
||
|
} else {
|
||
|
tGridHeader.setSortStyle( sortItem[sortField], 0 );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
this.collectSelectGridColumns = function() {
|
||
|
var columns = select_grid.getGridParam( 'colModel' );
|
||
|
|
||
|
var len = ( ( columns ) ? columns.length : 0 );
|
||
|
|
||
|
select_grid_header_array = [];
|
||
|
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
var column_info = columns[i];
|
||
|
var column_header = $( this ).find( 'div #jqgh_select_grid_' + id + '_' + column_info.name );
|
||
|
|
||
|
select_grid_header_array.push( column_header.TGridHeader( { column_model: column_info } ) );
|
||
|
|
||
|
column_header.bind( 'headerClick', onSelectColumnHeaderClick );
|
||
|
|
||
|
}
|
||
|
a_dropdown_this.setGridHeaderStyle( 'select_grid' );
|
||
|
|
||
|
function onSelectColumnHeaderClick( e, headerE, column_model ) {
|
||
|
|
||
|
if ( !parent_a_combo_box || !parent_a_combo_box.getAPI() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var field = column_model.name;
|
||
|
|
||
|
if ( field === 'cb' ) { //first column, check box column.
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( headerE.metaKey || headerE.ctrlKey ) {
|
||
|
a_dropdown_this.buildSortCondition( false, field, 'select_grid' );
|
||
|
} else {
|
||
|
a_dropdown_this.buildSortCondition( true, field, 'select_grid' );
|
||
|
|
||
|
}
|
||
|
parent_a_combo_box.setCachedSelectedGridSortFilter( select_grid_sort_map );
|
||
|
a_dropdown_this.setGridHeaderStyle( 'select_grid' );
|
||
|
parent_a_combo_box.onADropDownSearch( 'select_grid' );
|
||
|
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
//HightLight select item in UnSelect grid when !allow_multiple_selection
|
||
|
this.setSelectItem = function( val, target_grid ) {
|
||
|
if ( !target_grid ) {
|
||
|
target_grid = unselect_grid;
|
||
|
}
|
||
|
var source_data = target_grid.getGridParam( 'data' );
|
||
|
val && ( select_item = val );
|
||
|
if ( source_data && source_data.length > 0 ) {
|
||
|
for ( var i = 0; i < source_data.length; i++ ) {
|
||
|
var content = source_data[i];
|
||
|
var temp_val = val;
|
||
|
!val && ( temp_val = source_data[0] );
|
||
|
|
||
|
var content_key = key;
|
||
|
if ( tree_mode && key == 'id' ) {
|
||
|
content_key = '_id_';
|
||
|
}
|
||
|
|
||
|
if ( content[content_key] == temp_val[key] ) { //Some times 0, sometimes '0'
|
||
|
|
||
|
var content_id_key = 'id';
|
||
|
if ( tree_mode ) {
|
||
|
content_id_key = '_id_';
|
||
|
}
|
||
|
|
||
|
//Always use id to set select row, all record array should have id
|
||
|
target_grid.grid.find( 'tr[id="' + content[content_id_key] + '"]' ).focus();
|
||
|
if ( target_grid.grid.hasClass( 'unselect-grid' ) ) {
|
||
|
if ( unselect_grid_last_row ) {
|
||
|
target_grid.grid.jqGrid( 'saveRow', unselect_grid_last_row );
|
||
|
}
|
||
|
unselect_grid_last_row = content[content_id_key];
|
||
|
} else {
|
||
|
if ( select_grid_last_row ) {
|
||
|
target_grid.grid.jqGrid( 'saveRow', select_grid_last_row );
|
||
|
}
|
||
|
select_grid_last_row = content[content_id_key];
|
||
|
}
|
||
|
target_grid.grid.jqGrid( 'setSelection', content[content_id_key], false );
|
||
|
target_grid.grid.jqGrid( 'editRow', content[content_id_key], true );
|
||
|
val && ( select_item = content );
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
this.setTotalDisplaySpan();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.getUnSelectGridData = function() {
|
||
|
return unselect_grid.getGridParam( 'data' );
|
||
|
};
|
||
|
|
||
|
this.getSelectItem = function() {
|
||
|
return select_item;
|
||
|
};
|
||
|
|
||
|
this.getSelectItems = function() {
|
||
|
//Save last edit row if there is editable row in grid cell;
|
||
|
if ( unselect_grid_last_row.length > 0 ) {
|
||
|
unselect_grid.grid.jqGrid( 'saveRow', unselect_grid_last_row );
|
||
|
unselect_grid_last_row = '';
|
||
|
}
|
||
|
|
||
|
if ( select_grid_last_row.length > 0 ) {
|
||
|
select_grid.grid.jqGrid( 'saveRow', select_grid_last_row );
|
||
|
select_grid_last_row = '';
|
||
|
}
|
||
|
|
||
|
var retval = null;
|
||
|
if ( show_search_inputs && real_selected_items && real_selected_items.length > 0 ) {
|
||
|
retval = real_selected_items;
|
||
|
} else {
|
||
|
retval = select_grid.getGridParam( 'data' ); //Set this when setSelectGridItems
|
||
|
}
|
||
|
|
||
|
//Make sure we never return null, and always at least an empty array. This helps prevent JS excptions when we run .length on the return value.
|
||
|
if ( Global.isArray( retval ) == false ) {
|
||
|
return Array();
|
||
|
}
|
||
|
|
||
|
return retval;
|
||
|
};
|
||
|
|
||
|
this.setRealSelectItems = function( all_records, selected_ids ) {
|
||
|
real_selected_items = [];
|
||
|
if ( selected_ids != TTUUID.zero_id && selected_ids.length > 0 ) {
|
||
|
for ( var n = 0; n < all_records.length; n++ ) {
|
||
|
if ( selected_ids.indexOf( all_records[n].id ) != -1 ) {
|
||
|
real_selected_items.push( all_records[n] );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return real_selected_items;
|
||
|
};
|
||
|
|
||
|
this.getAllowMultipleSelection = function() {
|
||
|
return allow_multiple_selection;
|
||
|
};
|
||
|
|
||
|
this.getResizeGrids = function() {
|
||
|
return resize_grids;
|
||
|
};
|
||
|
|
||
|
this.setResizeGrids = function( val ) {
|
||
|
resize_grids = val;
|
||
|
if ( val ) {
|
||
|
this.setGridColumnsWidths();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.getTreeMode = function() {
|
||
|
return tree_mode;
|
||
|
};
|
||
|
|
||
|
//Must Set this after set Columns
|
||
|
this.setUnselectedGridData = function( val ) {
|
||
|
static_source_data = val;
|
||
|
|
||
|
if ( !tree_mode ) {
|
||
|
unselect_grid.setData( val );
|
||
|
|
||
|
this.setTotalDisplaySpan();
|
||
|
|
||
|
} else {
|
||
|
this.reSetUnSelectGridTreeData( val );
|
||
|
|
||
|
}
|
||
|
|
||
|
this.setUnSelectGridDragAble();
|
||
|
|
||
|
this.setGridsHeight();
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* This function calculates the optimal widths for awesomebox columns
|
||
|
* and whether they should overflow or shrink to fit
|
||
|
*/
|
||
|
this.setGridColumnsWidths = function() {
|
||
|
var primary_grid = unselect_grid;
|
||
|
var secondary_grid = select_grid;
|
||
|
|
||
|
//don't swap the grids. always size on left grid.
|
||
|
var p_data = primary_grid.getData();
|
||
|
var s_data = secondary_grid.getData();
|
||
|
if ( s_data && s_data.length != 0 && p_data && p_data.length == 0 ) {
|
||
|
//swap grids if no data in primary.
|
||
|
var temp = primary_grid;
|
||
|
primary_grid = secondary_grid;
|
||
|
secondary_grid = temp;
|
||
|
}
|
||
|
|
||
|
//Make sure what dropdown is expanded, we do not spill over the right edge of the browser causing scrollbars to appear.
|
||
|
var max_grid_width = ( ( ( ( Global.bodyWidth() - $( this ).offset().left ) - 100 ) / 2 ) );
|
||
|
|
||
|
var default_width = primary_grid.setGridColumnsWidth( null, { max_grid_width: max_grid_width } );
|
||
|
var colModel = primary_grid.getColumnModel();
|
||
|
|
||
|
secondary_grid.setGridColumnsWidth( colModel );
|
||
|
|
||
|
var width = 200;
|
||
|
var offset = 28;
|
||
|
//awesomeboxes with more than 1 column need to adjust for td borders.
|
||
|
|
||
|
var total_headers_width = 0;
|
||
|
if ( colModel ) {
|
||
|
for ( var i = 0; i < colModel.length; i++ ) {
|
||
|
total_headers_width += colModel[i].widthOrg + 1; //collect the (calculated) column widths (+1 for border
|
||
|
}
|
||
|
|
||
|
if ( colModel[0].name == 'cb' ) {
|
||
|
offset += 2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( tree_mode ) {
|
||
|
offset = 26;
|
||
|
} else {
|
||
|
offset = 22;
|
||
|
}
|
||
|
|
||
|
//only shrink smaller grids to fit container
|
||
|
if ( total_headers_width <= ( width ) || colModel.length < 5 ) {
|
||
|
//prevent resize on search.
|
||
|
width = primary_grid.grid.parents( '.unselect-grid-div, .select-grid-div' ).width() - offset;
|
||
|
} else {
|
||
|
width = total_headers_width; //primary_grid.grid.parents( '.unselect-grid-div' ).width() - offset;
|
||
|
if ( default_width > width ) {
|
||
|
width = default_width;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
primary_grid.setGridWidth( width );
|
||
|
secondary_grid.setGridWidth( width );
|
||
|
|
||
|
this.resizeUnSelectSearchInputs();
|
||
|
this.resizeSelectSearchInputs();
|
||
|
};
|
||
|
|
||
|
this.getPagerData = function() {
|
||
|
return pager_data;
|
||
|
};
|
||
|
|
||
|
//Always setPager data no matter static options or api.
|
||
|
this.setPagerData = function( value ) {
|
||
|
|
||
|
pager_data = value;
|
||
|
|
||
|
if ( LocalCacheData.paging_type === 0 ) {
|
||
|
if ( paging_widget.parent().length > 0 ) {
|
||
|
paging_widget.remove();
|
||
|
}
|
||
|
|
||
|
paging_widget.css( 'width', unselect_grid.width() );
|
||
|
unselect_grid.append( paging_widget );
|
||
|
|
||
|
paging_widget.click( function() {
|
||
|
$this.onPaging();
|
||
|
} );
|
||
|
|
||
|
if ( !pager_data || pager_data.is_last_page || pager_data.last_page_number < 0 ) {
|
||
|
paging_widget.css( 'display', 'none' );
|
||
|
} else {
|
||
|
paging_widget.css( 'display', 'inline-block' );
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
if ( !pager_data || pager_data.last_page_number < 0 ) {
|
||
|
left_buttons_div.css( 'display', 'none' );
|
||
|
right_buttons_div.css( 'display', 'none' );
|
||
|
|
||
|
} else {
|
||
|
left_buttons_div.css( 'display', 'inline-block' );
|
||
|
right_buttons_div.css( 'display', 'inline-block' );
|
||
|
|
||
|
if ( pager_data.is_last_page === true ) {
|
||
|
right_buttons_div.addClass( 'disabled' );
|
||
|
right_buttons_div.addClass( 'disabled-image' );
|
||
|
right_buttons_enable = false;
|
||
|
} else {
|
||
|
right_buttons_div.removeClass( 'disabled' );
|
||
|
right_buttons_div.removeClass( 'disabled-image' );
|
||
|
right_buttons_enable = true;
|
||
|
}
|
||
|
|
||
|
if ( pager_data.is_first_page ) {
|
||
|
left_buttons_div.addClass( 'disabled' );
|
||
|
left_buttons_div.addClass( 'disabled-image' );
|
||
|
left_buttons_enable = false;
|
||
|
|
||
|
} else {
|
||
|
left_buttons_div.removeClass( 'disabled' );
|
||
|
left_buttons_div.removeClass( 'disabled-image' );
|
||
|
left_buttons_enable = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
a_dropdown_this.setTotalDisplaySpan();
|
||
|
};
|
||
|
|
||
|
this.onPaging = function() {
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid', 'next' );
|
||
|
};
|
||
|
|
||
|
this.reSetUnSelectGridTreeData = function( val ) {
|
||
|
var scroll_position = unselect_grid.grid.parent().parent().scrollTop();
|
||
|
var grid_data = unselect_grid.getData();
|
||
|
if ( grid_data && grid_data.length > 0 && val && val.length > 0 ) {
|
||
|
//If in tree_mode, don't clear the unselected grid, since we just bold/unbold the selected items otherwise the "tree" layout would be lost.
|
||
|
unselect_grid.setData( val, !tree_mode );
|
||
|
} else {
|
||
|
var col_model = unselect_grid.getGridParam( 'colModel' );
|
||
|
|
||
|
if ( !unselect_grid.grid.is( ':visible' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
unselect_grid.grid.jqGrid( 'GridUnload' );
|
||
|
unselect_grid = $( this ).find( '.unselect-grid' );
|
||
|
unselect_grid = unselect_grid.grid = new TTGrid( $( this ).find( '.unselect-grid' ).attr( 'id' ), {
|
||
|
container_selector: '.unselect-grid-div',
|
||
|
altRows: true,
|
||
|
datastr: val,
|
||
|
datatype: 'jsonstring',
|
||
|
sortable: false,
|
||
|
width: 440,
|
||
|
onResizeGrid: resize_grids,
|
||
|
//maxHeight: default_height,
|
||
|
colNames: [],
|
||
|
rowNum: 10000,
|
||
|
colModel: col_model,
|
||
|
ondblClickRow: a_dropdown_this.onUnSelectGridDoubleClick,
|
||
|
gridview: true,
|
||
|
treeGrid: true,
|
||
|
treeGridModel: 'adjacency',
|
||
|
treedatatype: 'local',
|
||
|
ExpandColumn: 'name',
|
||
|
multiselect: allow_multiple_selection,
|
||
|
multiselectPosition: 'none',
|
||
|
winMultiSelect: allow_multiple_selection,
|
||
|
onCellSelect: function( id, k, el, e ) {
|
||
|
if ( $( e.target ).prop( 'class' ).indexOf( 'ui-icon-triangle' ) != -1 ) {
|
||
|
return false;
|
||
|
}
|
||
|
id = Global.convertToNumberIfPossible( id );
|
||
|
|
||
|
if ( !allow_multiple_selection ) {
|
||
|
var source_data = unselect_grid.getGridParam( 'data' );
|
||
|
$.each( source_data, function( index, content ) {
|
||
|
if ( tree_mode && key == 'id' ) {
|
||
|
key = '_id_';
|
||
|
}
|
||
|
|
||
|
if ( content[key] == id ) {
|
||
|
select_item = content;
|
||
|
isChanged = true;
|
||
|
if ( !LocalCacheData.currently_collapsing_navigation_tree_element ) { //#2583 - must allow null or false
|
||
|
a_dropdown_this.trigger( 'close', [a_dropdown_this] );
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( on_tree_grid_row_select ) {
|
||
|
on_tree_grid_row_select( id, LocalCacheData.currently_collapsing_navigation_tree_element );
|
||
|
}
|
||
|
},
|
||
|
beforeSelectRow: function( iRow, e ) {
|
||
|
var $td = $( e.target ).closest( 'tr.jqgrow>td' ),
|
||
|
iCol = $td.length > 0 ? $td[0].cellIndex : -1,
|
||
|
p = $( this ).jqGrid( 'getGridParam' ),
|
||
|
cm = iCol >= 0 ? p.colModel[iCol] : null;
|
||
|
|
||
|
if ( cm != null && cm.name === p.ExpandColumn &&
|
||
|
$( e.target ).closest( '.tree-wrap' ).length > 0 ) {
|
||
|
|
||
|
return false; // prevent row selection
|
||
|
}
|
||
|
return true;
|
||
|
},
|
||
|
jsonReader: {
|
||
|
repeatitems: false,
|
||
|
root: function( obj ) {
|
||
|
return obj;
|
||
|
},
|
||
|
page: function( obj ) {
|
||
|
return 1;
|
||
|
},
|
||
|
total: function( obj ) {
|
||
|
return 1;
|
||
|
},
|
||
|
records: function( obj ) {
|
||
|
return obj.length;
|
||
|
}
|
||
|
},
|
||
|
onResizeGrid: resize_grids
|
||
|
}, col_model );
|
||
|
}
|
||
|
scroll_position > 0 && unselect_grid.grid.parent().parent().scrollTop( scroll_position );
|
||
|
this.setGridsHeight();
|
||
|
|
||
|
var select_items = this.getSelectItems();
|
||
|
$( this ).find( 'tr' ).removeClass( 'selected-tree-cell' );
|
||
|
for ( var i = ( select_items.length - 1 ); i >= 0; i-- ) {
|
||
|
$( this ).find( '.unselect-grid-div' ).find( 'tr#' + select_items[i].id ).addClass( 'selected-tree-cell' );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.setGridsHeight = function() {
|
||
|
//Calculate the max possible size of awesomebox.
|
||
|
|
||
|
if ( static_height ) {
|
||
|
unselect_grid.grid.setGridHeight( static_height );
|
||
|
if ( allow_multiple_selection ) {
|
||
|
select_grid.grid.setGridHeight( static_height );
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( !parent_a_combo_box ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var top_offset = parent_a_combo_box.offset().top;
|
||
|
var bottom_offset = Global.bodyHeight() - top_offset - 30;
|
||
|
var new_height = top_offset > bottom_offset ? top_offset : bottom_offset;
|
||
|
|
||
|
new_height = new_height - 130;
|
||
|
|
||
|
var source_data = parent_a_combo_box.getStaticSourceData();
|
||
|
|
||
|
if ( !source_data ) {
|
||
|
new_height = default_height;
|
||
|
} else {
|
||
|
var source_height = source_data.length * 23;
|
||
|
|
||
|
if ( source_height < default_height ) {
|
||
|
new_height = default_height;
|
||
|
} else if ( source_height > default_height && source_height < new_height ) {
|
||
|
new_height = source_height;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( max_height && max_height < new_height ) {
|
||
|
new_height = max_height;
|
||
|
}
|
||
|
|
||
|
unselect_grid.grid.setGridHeight( new_height );
|
||
|
if ( allow_multiple_selection ) {
|
||
|
select_grid.grid.setGridHeight( new_height );
|
||
|
}
|
||
|
|
||
|
this.setPosition( top_offset, new_height );
|
||
|
|
||
|
};
|
||
|
|
||
|
this.setPosition = function( top_offset, new_height ) {
|
||
|
|
||
|
if ( top_offset + new_height + 130 < Global.bodyHeight() ) {
|
||
|
a_dropdown_this.parent().css( 'top', top_offset + 25 );
|
||
|
} else {
|
||
|
|
||
|
if ( new_height != default_height ) {
|
||
|
a_dropdown_this.parent().css( 'top', ( top_offset - new_height - 125 ) );
|
||
|
} else {
|
||
|
a_dropdown_this.parent().css( 'top', ( top_offset - new_height - 125 ) );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.onTreeCellFormat = function( cell_value, related_data, row ) {
|
||
|
var selected_items = a_dropdown_this.getSelectItems();
|
||
|
for ( var i = 0, m = selected_items.length; i < m; i++ ) {
|
||
|
var item = selected_items[i];
|
||
|
if ( item.name === cell_value ) {
|
||
|
return '<span class="selected-tree-cell">' + cell_value + '</span>';
|
||
|
}
|
||
|
}
|
||
|
return cell_value;
|
||
|
};
|
||
|
|
||
|
//Do this before set data
|
||
|
this.setColumns = function( val ) {
|
||
|
|
||
|
for ( var a = 0; a < val.length; a++ ) {
|
||
|
val[a].resizable = false;
|
||
|
}
|
||
|
|
||
|
unselect_grid.grid.jqGrid( 'GridUnload' );
|
||
|
unselect_grid = $( this ).find( '.unselect-grid' );
|
||
|
unselect_grid.getGridParam();
|
||
|
var unselect_grid_search_div = $( this ).find( '.unselect-grid-search-div' );
|
||
|
var select_grid_search_div = $( this ).find( '.select-grid-search-div' );
|
||
|
|
||
|
var gridWidth = $( '.unselect-grid-border-div' ).width() - 2; // single-column width
|
||
|
if ( show_search_inputs ) {
|
||
|
gridWidth -= 15;
|
||
|
}
|
||
|
|
||
|
gridWidth = val.length * 125;
|
||
|
if ( gridWidth < 438 ) {
|
||
|
box_width = gridWidth = 438;
|
||
|
}
|
||
|
if ( val.length > 1 ) {
|
||
|
|
||
|
box_width = gridWidth;
|
||
|
if ( allow_multiple_selection && gridWidth > ( Global.bodyWidth() / 2 - 30 - 15 ) ) {
|
||
|
box_width = ( Global.bodyWidth() / 2 - 30 - 15 );
|
||
|
} else if ( !allow_multiple_selection && gridWidth > ( Global.bodyWidth() - 30 - 15 ) ) {
|
||
|
box_width = ( Global.bodyWidth() - 30 - 15 );
|
||
|
}
|
||
|
|
||
|
this.find( '.unselect-grid-div' ).width( null );
|
||
|
this.find( '.unselect-grid-border-div' ).width( null );
|
||
|
|
||
|
this.find( '.select-grid-div' ).width( null );
|
||
|
this.find( '.select-grid-border-div' ).width( null );
|
||
|
|
||
|
if ( show_search_inputs ) {
|
||
|
unselect_grid_search_div.css( 'width', null );
|
||
|
select_grid_search_div.css( 'width', null );
|
||
|
}
|
||
|
} else {
|
||
|
box_width = gridWidth;
|
||
|
}
|
||
|
|
||
|
if ( !tree_mode ) {
|
||
|
unselect_grid = new TTGrid( $( unselect_grid ).attr( 'id' ), {
|
||
|
container_selector: '.unselect-grid-div',
|
||
|
altRows: true,
|
||
|
data: [],
|
||
|
datatype: 'local',
|
||
|
sortable: false,
|
||
|
width: gridWidth,
|
||
|
//maxHeight: default_height,
|
||
|
colNames: [],
|
||
|
rowNum: 10000,
|
||
|
keep_scroll_place: true,
|
||
|
ondblClickRow: a_dropdown_this.onUnSelectGridDoubleClick,
|
||
|
colModel: val,
|
||
|
multiselect: allow_multiple_selection,
|
||
|
multiboxonly: allow_multiple_selection,
|
||
|
viewrecords: true,
|
||
|
editurl: 'clientArray',
|
||
|
resizeStop: function() {
|
||
|
a_dropdown_this.resizeUnSelectSearchInputs();
|
||
|
},
|
||
|
onCellSelect: function( id ) {
|
||
|
id = Global.convertToNumberIfPossible( id );
|
||
|
|
||
|
if ( !allow_multiple_selection ) {
|
||
|
|
||
|
var source_data = unselect_grid.getGridParam( 'data' );
|
||
|
|
||
|
$.each( source_data, function( index, content ) {
|
||
|
|
||
|
if ( key !== 'id' ) {
|
||
|
if ( content['id'] == id ) {
|
||
|
select_item = content;
|
||
|
isChanged = true;
|
||
|
a_dropdown_this.trigger( 'close', [a_dropdown_this] );
|
||
|
return false;
|
||
|
}
|
||
|
} else {
|
||
|
if ( content[key] == id ) {
|
||
|
select_item = content;
|
||
|
isChanged = true;
|
||
|
a_dropdown_this.trigger( 'close', [a_dropdown_this] );
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( unselect_grid_last_row ) {
|
||
|
unselect_grid.grid.jqGrid( 'saveRow', unselect_grid_last_row );
|
||
|
}
|
||
|
unselect_grid.grid.jqGrid( 'editRow', id, true );
|
||
|
unselect_grid_last_row = id;
|
||
|
|
||
|
a_dropdown_this.setTotalDisplaySpan();
|
||
|
|
||
|
function getSelectValue() {
|
||
|
var len = source_data.length;
|
||
|
|
||
|
}
|
||
|
},
|
||
|
onResizeGrid: resize_grids
|
||
|
}, val );
|
||
|
|
||
|
} else {
|
||
|
if ( tree_mode ) {
|
||
|
var tree_columns = _.map( val, _.clone );
|
||
|
_.map( tree_columns, function( item ) {
|
||
|
item.formatter = a_dropdown_this.onTreeCellFormat;
|
||
|
} );
|
||
|
}
|
||
|
unselect_grid = new TTGrid( $( unselect_grid ).attr( 'id' ), {
|
||
|
container_selector: '.unselect-grid-div',
|
||
|
altRows: true,
|
||
|
datastr: [],
|
||
|
datatype: 'jsonstring',
|
||
|
sortable: false,
|
||
|
width: gridWidth,
|
||
|
maxHeight: default_height,
|
||
|
colNames: [],
|
||
|
rowNum: 10000,
|
||
|
colModel: tree_columns,
|
||
|
ondblClickRow: a_dropdown_this.onUnSelectGridDoubleClick,
|
||
|
onCellSelect: function() {
|
||
|
a_dropdown_this.onUnSelectGridSelectRow();
|
||
|
},
|
||
|
gridview: true,
|
||
|
treeGrid: true,
|
||
|
treeGridModel: 'adjacency',
|
||
|
treedatatype: 'local',
|
||
|
ExpandColumn: 'name',
|
||
|
multiselect: false, //allow_multiple_selection,
|
||
|
|
||
|
jsonReader: {
|
||
|
repeatitems: false,
|
||
|
root: function( obj ) {
|
||
|
return obj;
|
||
|
},
|
||
|
page: function( obj ) {
|
||
|
return 1;
|
||
|
},
|
||
|
total: function( obj ) {
|
||
|
return 1;
|
||
|
},
|
||
|
records: function( obj ) {
|
||
|
return obj.length;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
onSelectRow: function( id ) {
|
||
|
if ( on_tree_grid_row_select ) {
|
||
|
on_tree_grid_row_select( id );
|
||
|
}
|
||
|
|
||
|
id = Global.convertToNumberIfPossible( id );
|
||
|
|
||
|
},
|
||
|
|
||
|
onResizeGrid: resize_grids
|
||
|
}, tree_columns );
|
||
|
}
|
||
|
|
||
|
this.collectUnselectGridColumns(); //Make each column as THeader plugin and save them
|
||
|
|
||
|
if ( show_search_inputs ) {
|
||
|
if ( !parent_a_combo_box || !parent_a_combo_box.getAPI() ) {
|
||
|
this.setLocalSearchMode( true ); //If no API allow local searching of the dropdown items.
|
||
|
}
|
||
|
this.buildUnSelectSearchInputs(); //Build search input above columns
|
||
|
}
|
||
|
|
||
|
select_grid.grid.jqGrid( 'GridUnload' );
|
||
|
select_grid = $( this ).find( '.select-grid' );
|
||
|
select_grid = new TTGrid( $( select_grid ).attr( 'id' ), {
|
||
|
container_selector: '.select-grid-div',
|
||
|
altRows: true,
|
||
|
data: [],
|
||
|
datatype: 'local',
|
||
|
sortable: false,
|
||
|
width: gridWidth,
|
||
|
//maxHeight: default_height,
|
||
|
colNames: [],
|
||
|
rowNum: 10000,
|
||
|
ondblClickRow: this.onSelectGridDoubleClick,
|
||
|
colModel: val,
|
||
|
multiselect: allow_multiple_selection,
|
||
|
multiboxonly: allow_multiple_selection,
|
||
|
viewrecords: true,
|
||
|
keep_scroll_place: true,
|
||
|
resizeStop: function() {
|
||
|
a_dropdown_this.resizeSelectSearchInputs();
|
||
|
},
|
||
|
onCellSelect: function( id ) {
|
||
|
if ( id ) {
|
||
|
|
||
|
if ( select_grid_last_row ) {
|
||
|
select_grid.grid.jqGrid( 'saveRow', select_grid_last_row );
|
||
|
}
|
||
|
select_grid.grid.jqGrid( 'editRow', id, true );
|
||
|
select_grid_last_row = id;
|
||
|
}
|
||
|
|
||
|
},
|
||
|
onResizeGrid: resize_grids
|
||
|
}, val );
|
||
|
|
||
|
this.collectSelectGridColumns(); //Make each column as THeader plugin and save them
|
||
|
if ( show_search_inputs ) {
|
||
|
if ( !parent_a_combo_box || !parent_a_combo_box.getAPI() ) {
|
||
|
this.setLocalSearchMode( true ); //If no API allow local searching of the dropdown items.
|
||
|
}
|
||
|
this.buildSelectSearchInputs(); //Build search input above columns
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
this.buildSelectSearchInputs = function() {
|
||
|
var len = select_grid_header_array.length;
|
||
|
|
||
|
var search_div = $( this ).find( '.select-grid-search-div' );
|
||
|
var first_column_width = 0;
|
||
|
var search_input_array = [];
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
var header = select_grid_header_array[i];
|
||
|
|
||
|
if ( i === 0 ) {
|
||
|
first_column_width = header.getWidth();
|
||
|
continue;
|
||
|
} else if ( allow_multiple_selection && i === 1 ) {
|
||
|
var search_input = $( '<input type=\'text\' class=\'search-input\'>' );
|
||
|
search_input.css( 'width', header.getWidth() + first_column_width );
|
||
|
} else {
|
||
|
search_input = $( '<input type=\'text\' class=\'search-input\'>' );
|
||
|
search_input.css( 'width', header.getWidth() );
|
||
|
}
|
||
|
|
||
|
search_input.on( 'drop', function( e ) {
|
||
|
e.preventDefault();
|
||
|
} );
|
||
|
|
||
|
search_input.ASearchInput( { column_model: header.getColumnModel() } ); //Make it as ASearchInout Widget;
|
||
|
|
||
|
search_div.append( search_input );
|
||
|
search_input_array.push( search_input );
|
||
|
//Set cached seach_input data back, usually in navigation_mode
|
||
|
if ( select_grid_search_map ) {
|
||
|
search_input.setFilter( select_grid_search_map );
|
||
|
|
||
|
}
|
||
|
|
||
|
search_input.bind( 'searchEnter', function( e, searchVal, field ) {
|
||
|
|
||
|
if ( a_dropdown_this.getValue().length < 1 ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( !select_grid_search_map ) {
|
||
|
select_grid_search_map = {};
|
||
|
}
|
||
|
|
||
|
delete select_grid_search_map.id;
|
||
|
|
||
|
if ( !searchVal ) {
|
||
|
delete select_grid_search_map[field];
|
||
|
} else {
|
||
|
select_grid_search_map[field] = searchVal;
|
||
|
}
|
||
|
|
||
|
if ( a_dropdown_this.isLocalSearchMode() ) {
|
||
|
a_dropdown_this.localSearch( 'select', select_grid_search_map );
|
||
|
} else {
|
||
|
parent_a_combo_box.setCachedSelectGridSearchInputsFilter( Global.clone( select_grid_search_map ) );
|
||
|
parent_a_combo_box.onADropDownSearch();
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
}
|
||
|
|
||
|
var close_btn = $( '<button class="close-btn"><img src="' + Global.getRealImagePath( 'images/close.png' ) + '"></img></button>' );
|
||
|
|
||
|
//close_btn.width( unselect_grid_header_array[0].getWidth() + 2 );
|
||
|
//close_btn.width( 22 );
|
||
|
search_div.prepend( close_btn );
|
||
|
var $this = this;
|
||
|
close_btn.click( function() { //clear search inputs for select box
|
||
|
select_grid_search_map = {};
|
||
|
if ( a_dropdown_this.isLocalSearchMode() ) {
|
||
|
a_dropdown_this.localSearch( 'select', select_grid_search_map );
|
||
|
} else {
|
||
|
parent_a_combo_box.setCachedSelectGridSearchInputsFilter( select_grid_search_map );
|
||
|
parent_a_combo_box.onADropDownSearch();
|
||
|
}
|
||
|
for ( var i = 0; i < search_input_array.length; i++ ) {
|
||
|
var s_i = search_input_array[i];
|
||
|
s_i.clearValue();
|
||
|
}
|
||
|
} );
|
||
|
};
|
||
|
|
||
|
this.localSearch = function( grid_type, grid_search_map, optional_filter ) {
|
||
|
if ( !optional_filter ) {
|
||
|
//Replicates API Search functionality where newly added records are shown even if they don't match the search criteria.
|
||
|
optional_filter = [];
|
||
|
local_search_optional_filter = [];
|
||
|
}
|
||
|
|
||
|
//Merge in repeated optional search, so that user adding 1 by 1 will continue to see all new items.
|
||
|
local_search_optional_filter = local_search_optional_filter.concat( optional_filter );
|
||
|
|
||
|
let search_grid = null;
|
||
|
let search_items = [];
|
||
|
|
||
|
if ( grid_type === 'select' ) {
|
||
|
search_grid = select_grid;
|
||
|
} else {
|
||
|
search_grid = unselect_grid;
|
||
|
}
|
||
|
|
||
|
search_grid.resetSelection(); //Reset all checked items to replicate behavior of API search.
|
||
|
|
||
|
search_items = search_grid.getData();
|
||
|
|
||
|
//Need to search against multiple terms and columns.
|
||
|
let meetAllSearchCriteria = ( item, grid_search_map ) => {
|
||
|
for ( let key in grid_search_map ) {
|
||
|
if ( grid_search_map.hasOwnProperty( key ) ) {
|
||
|
let value = grid_search_map[key].trim();
|
||
|
if ( !item[key] || item[key].toLowerCase().includes( value.toLowerCase() ) === false ) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
};
|
||
|
|
||
|
for ( let i = 0; i < search_items.length; i++ ) {
|
||
|
if ( _.isEmpty( grid_search_map ) || local_search_optional_filter.some( item => item.id === search_items[i].id ) || meetAllSearchCriteria( search_items[i], grid_search_map ) ) {
|
||
|
$( search_grid.grid ).find( '[id="' + search_items[i].id + '"]' ).show();
|
||
|
search_items[i].hidden = false;
|
||
|
} else {
|
||
|
$( search_grid.grid ).find( '[id="' + search_items[i].id + '"]' ).hide();
|
||
|
search_items[i].hidden = true; //Hidden items are not selectable even with "Select all"
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.resizeUnSelectSearchInputs = function() {
|
||
|
var search_div = $( this ).find( '.unselect-grid-search-div' );
|
||
|
|
||
|
var search_inputs = search_div.find( '.search-input' );
|
||
|
var first_column_width;
|
||
|
var unselect_grid_search_div = $( this ).find( '.unselect-grid-search-div' );
|
||
|
|
||
|
var len = search_inputs.length;
|
||
|
var header;
|
||
|
var search_input;
|
||
|
if ( allow_multiple_selection ) {
|
||
|
first_column_width = unselect_grid_header_array[0].width();
|
||
|
|
||
|
if ( len == 1 ) {
|
||
|
header = unselect_grid_header_array[1];
|
||
|
search_input = $( search_inputs[0] );
|
||
|
search_input.css( 'width', header.getWidth() );
|
||
|
} else {
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
header = unselect_grid_header_array[i + 1];
|
||
|
search_input = $( search_inputs[i] );
|
||
|
if ( i == ( len - 1 ) ) {
|
||
|
search_input.css( 'width', header.getWidth() );
|
||
|
} else {
|
||
|
search_input.css( 'width', header.getWidth() + 1 );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
for ( i = 0; i < len; i++ ) {
|
||
|
header = unselect_grid_header_array[i];
|
||
|
search_input = $( search_inputs[i] );
|
||
|
if ( i === 0 ) {
|
||
|
search_input.css( 'width', header.getWidth() - 22 );
|
||
|
} else if ( i == ( len - 1 ) ) {
|
||
|
search_input.css( 'width', header.getWidth() + 1 );
|
||
|
} else {
|
||
|
search_input.css( 'width', header.getWidth() + 1 );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var unselect_grid_width = unselect_grid.grid.parents( '.ui-jqgrid-jquery-ui' ).width() ? unselect_grid.grid.parent().parent().width() : 100;
|
||
|
unselect_grid.setGridWidth( unselect_grid_width );
|
||
|
//var unselect_grid_width = unselect_grid.getWidth();
|
||
|
var unselect_grid_search_div_width = unselect_grid_width;
|
||
|
if ( tree_mode ) {
|
||
|
unselect_grid_width = unselect_grid.getWidth();
|
||
|
}
|
||
|
|
||
|
var outer_box_width = unselect_grid_width + 22;
|
||
|
var inner_box_width = unselect_grid_width + 4;
|
||
|
var max_width = ( $( 'body' ).width() - 30 );
|
||
|
if ( allow_multiple_selection ) {
|
||
|
max_width = ( ( $( 'body' ).width() / 2 ) - 30 );
|
||
|
}
|
||
|
|
||
|
if ( outer_box_width > max_width ) {
|
||
|
outer_box_width = max_width;
|
||
|
inner_box_width = max_width - 17;
|
||
|
}
|
||
|
|
||
|
unselect_grid.grid.parents( '.unselect-grid-div' ).css( 'width', outer_box_width ); //outer blue box width
|
||
|
unselect_grid.grid.parents( '.unselect-grid-border-div' ).css( 'width', inner_box_width ); //red border div.
|
||
|
unselect_grid_search_div.css( 'width', unselect_grid_search_div_width );
|
||
|
};
|
||
|
|
||
|
this.resizeSelectSearchInputs = function() {
|
||
|
var search_div = $( this ).find( '.select-grid-search-div' );
|
||
|
|
||
|
var search_inputs = search_div.find( '.search-input' );
|
||
|
var first_column_width;
|
||
|
var select_grid_search_div = $( this ).find( '.select-grid-search-div' );
|
||
|
|
||
|
var len = search_inputs.length;
|
||
|
|
||
|
first_column_width = select_grid_header_array[0].width() + 5;
|
||
|
if ( len == 1 ) {
|
||
|
header = unselect_grid_header_array[1];
|
||
|
search_input = $( search_inputs[0] );
|
||
|
search_input.css( 'width', header.getWidth() );
|
||
|
} else {
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
var header = select_grid_header_array[i + 1];
|
||
|
var search_input = $( search_inputs[i] );
|
||
|
if ( i == ( len - 1 ) ) {
|
||
|
search_input.css( 'width', header.getWidth() );
|
||
|
} else {
|
||
|
search_input.css( 'width', header.getWidth() + 1 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var newWidth = select_grid.grid.parents( '.ui-jqgrid-jquery-ui' ).width() ? select_grid.grid.parent().parent().width() : 100;
|
||
|
select_grid.setGridWidth( newWidth );
|
||
|
|
||
|
var outer_box_width = newWidth + 22;
|
||
|
var inner_box_width = newWidth + 4;
|
||
|
|
||
|
var max_width = ( ( $( 'body' ).width() / 2 ) - 30 );
|
||
|
|
||
|
if ( outer_box_width > max_width ) {
|
||
|
outer_box_width = max_width;
|
||
|
inner_box_width = max_width - 17;
|
||
|
}
|
||
|
|
||
|
select_grid.grid.parents( '.select-grid-div' ).css( 'width', outer_box_width ); //outer blue box width
|
||
|
select_grid.grid.parents( '.select-grid-border-div' ).css( 'width', inner_box_width ); //red border div.
|
||
|
select_grid_search_div.css( 'width', newWidth );
|
||
|
};
|
||
|
|
||
|
this.buildUnSelectSearchInputs = function() {
|
||
|
var len = unselect_grid_header_array.length;
|
||
|
|
||
|
var search_div = $( this ).find( '.unselect-grid-search-div' );
|
||
|
var first_column_width = 0;
|
||
|
var search_input_array = [];
|
||
|
for ( var i = 0; i < len; i++ ) {
|
||
|
var header = unselect_grid_header_array[i];
|
||
|
|
||
|
if ( allow_multiple_selection && i === 0 ) {
|
||
|
first_column_width = header.getWidth();
|
||
|
continue;
|
||
|
} else if ( allow_multiple_selection && i === 1 ) {
|
||
|
var search_input = $( '<input type=\'text\' class=\'search-input unselect-grid-search-input\'>' );
|
||
|
var width = header.getWidth() + first_column_width - 2;
|
||
|
search_input.css( 'width', width );
|
||
|
} else {
|
||
|
search_input = $( '<input type=\'text\' class=\'search-input\'>' );
|
||
|
if ( i == ( len - 1 ) ) {
|
||
|
search_input.css( 'width', header.getWidth() + 1 + 'px' );
|
||
|
} else {
|
||
|
search_input.css( 'width', header.getWidth() + 'px' );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
search_input.on( 'drop', function( e ) {
|
||
|
e.preventDefault();
|
||
|
} );
|
||
|
|
||
|
search_input.ASearchInput( { column_model: header.getColumnModel() } ); //Make it as ASearchInout Widget;
|
||
|
|
||
|
search_div.append( search_input );
|
||
|
search_input_array.push( search_input );
|
||
|
|
||
|
//Set cached seach_input data back, unsualy in navigation_mode
|
||
|
if ( unselect_grid_search_map ) {
|
||
|
search_input.setFilter( unselect_grid_search_map );
|
||
|
|
||
|
}
|
||
|
|
||
|
//Do Column Search
|
||
|
search_input.bind( 'searchEnter', function( e, searchVal, field ) {
|
||
|
|
||
|
if ( !unselect_grid_search_map ) {
|
||
|
unselect_grid_search_map = {};
|
||
|
}
|
||
|
|
||
|
if ( !searchVal ) {
|
||
|
delete unselect_grid_search_map[field];
|
||
|
} else {
|
||
|
unselect_grid_search_map[field] = searchVal;
|
||
|
}
|
||
|
|
||
|
if ( a_dropdown_this.isLocalSearchMode() ) {
|
||
|
//Search in local data may not always have a parent_a_combo_box such as in the case of Permission Groups.
|
||
|
a_dropdown_this.localSearch( 'unselect', unselect_grid_search_map );
|
||
|
} else {
|
||
|
parent_a_combo_box.setCachedSearchInputsFilter( unselect_grid_search_map );
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid' );
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
}
|
||
|
|
||
|
var close_btn = $( '<button class="close-btn"><img src="' + Global.getRealImagePath( 'images/close.png' ) + '"></img></button>' );
|
||
|
|
||
|
if ( allow_multiple_selection ) {
|
||
|
//close_btn.width( 22 )
|
||
|
} else {
|
||
|
//close_btn.width( 14 );
|
||
|
}
|
||
|
|
||
|
search_div.prepend( close_btn );
|
||
|
close_btn.click( function() {
|
||
|
unselect_grid_search_map = {};
|
||
|
if ( a_dropdown_this.isLocalSearchMode() ) {
|
||
|
a_dropdown_this.localSearch( 'unselect', unselect_grid_search_map );
|
||
|
} else {
|
||
|
parent_a_combo_box.setCachedSearchInputsFilter( unselect_grid_search_map );
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid' );
|
||
|
}
|
||
|
for ( var i = 0; i < search_input_array.length; i++ ) {
|
||
|
|
||
|
var s_i = search_input_array[i];
|
||
|
s_i.clearValue();
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
};
|
||
|
|
||
|
//Set select item when not allow multiple selection
|
||
|
// *IMPORTANT* This cannot be defined as this.setSelectItem() as it will break.
|
||
|
setSelectItem = function( val ) {
|
||
|
select_item = val;
|
||
|
};
|
||
|
|
||
|
//Search Reesult in select grid. it's not effect the selectitems when getSelectItems
|
||
|
this.setSelectGridSearchResult = function( val ) {
|
||
|
|
||
|
if ( !real_selected_items || real_selected_items.length == 0 ) {
|
||
|
//Clone the array with .slice(), this fixes the bug where you have an empty dropdown (no selected items)
|
||
|
//You move 5 items to the right side, then search within those items to show only 1, then clear the search, and only 1 item would still be shown.
|
||
|
real_selected_items = this.getSelectItems().slice();
|
||
|
}
|
||
|
select_grid.setData( val );
|
||
|
};
|
||
|
|
||
|
//Must Set this after setUnselectedGridData for now
|
||
|
//Remove select items form allColumn array
|
||
|
this.setSelectGridData = function( val, searchResult ) {
|
||
|
if ( parent_a_combo_box && parent_a_combo_box.getAPI() ) {
|
||
|
val = Global.formatGridData( val, parent_a_combo_box.getAPI().key_name );
|
||
|
}
|
||
|
if ( Object.prototype.toString.call( static_source_data ) !== '[object Array]' || static_source_data.length < 1 ) {
|
||
|
static_source_data = [];
|
||
|
}
|
||
|
//Uncaught TypeError: Cannot read property 'length' of undefined
|
||
|
if ( !val ) {
|
||
|
val = [];
|
||
|
}
|
||
|
var all_columns = static_source_data.slice(); //Copy from Static data
|
||
|
var i;
|
||
|
var j;
|
||
|
var select_item;
|
||
|
var tmp_select_items;
|
||
|
var all_columns_len;
|
||
|
if ( all_columns && all_columns.length > 0 ) {
|
||
|
var selectItemLen = val.length;
|
||
|
if ( !auto_sort ) {
|
||
|
|
||
|
for ( i = 0; i < selectItemLen; i++ ) {
|
||
|
select_item = val[i];
|
||
|
if ( !Global.isSet( select_item[key] ) ) {
|
||
|
select_item = [];
|
||
|
select_item[key] = val[i];
|
||
|
if ( !Global.isSet( tmp_select_items ) ) {
|
||
|
tmp_select_items = [];
|
||
|
}
|
||
|
}
|
||
|
all_columns_len = all_columns.length;
|
||
|
for ( j = 0; j < all_columns_len; j++ ) {
|
||
|
var fromAllColumn = all_columns[j];
|
||
|
if ( fromAllColumn[key] == select_item[key] ) {
|
||
|
//saved search select items may don't have ids if it's saved from flex, so set it back
|
||
|
if ( !select_item.hasOwnProperty( 'id' ) && fromAllColumn.hasOwnProperty( 'id' ) ) {
|
||
|
select_item.id = fromAllColumn.id;
|
||
|
}
|
||
|
if ( Global.isSet( tmp_select_items ) ) {
|
||
|
tmp_select_items.push( fromAllColumn );
|
||
|
}
|
||
|
if ( !tree_mode ) {
|
||
|
all_columns.splice( j, 1 );
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
all_columns_len = all_columns.length;
|
||
|
for ( j = 0; j < all_columns_len; j++ ) {
|
||
|
fromAllColumn = all_columns[j];
|
||
|
for ( i = 0; i < selectItemLen; i++ ) {
|
||
|
select_item = val[i];
|
||
|
if ( !Global.isSet( select_item[key] ) ) {
|
||
|
select_item = [];
|
||
|
select_item[key] = val[i];
|
||
|
if ( !Global.isSet( tmp_select_items ) ) {
|
||
|
tmp_select_items = [];
|
||
|
}
|
||
|
}
|
||
|
// we have both string case and number case. sometimes number will be 'xx'. So use == make sure all match
|
||
|
if ( fromAllColumn[key] == select_item[key] ) {
|
||
|
//saved search select items may don't have ids if it's saved from flex, so set it back
|
||
|
if ( !select_item.hasOwnProperty( 'id' ) && fromAllColumn.hasOwnProperty( 'id' ) ) {
|
||
|
select_item.id = fromAllColumn.id;
|
||
|
}
|
||
|
if ( Global.isSet( tmp_select_items ) ) {
|
||
|
tmp_select_items.push( fromAllColumn );
|
||
|
}
|
||
|
if ( !tree_mode ) {
|
||
|
all_columns.splice( j, 1 );
|
||
|
all_columns_len = all_columns_len - 1;
|
||
|
j = j - 1;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
// for all static options, that don't need get reald data, the length should always be match, use temp array because val don't
|
||
|
//contains full info.
|
||
|
if ( tmp_select_items && tmp_select_items.length === val.length ||
|
||
|
( val.length > 0 && !val[0].hasOwnProperty( key ) ) ) {
|
||
|
val = tmp_select_items;
|
||
|
}
|
||
|
// val = ( Global.isSet( tmp_select_items ) ) ? tmp_select_items : val;
|
||
|
|
||
|
//don't refresh select grid if it's calling from onDropDownsearch whcih doing search in search input
|
||
|
if ( !searchResult ) {
|
||
|
//select_grid.clearGridData();
|
||
|
//FIXES BUG #1998: The api call returns true when the data it's looking for is deleted. This causes the grid to add a blank row to the unselected side when clear is clicked.
|
||
|
if ( typeof val === 'object' ) {
|
||
|
select_grid.setData( val );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( !tree_mode ) {
|
||
|
unselect_grid.setData( all_columns );
|
||
|
this.setTotalDisplaySpan();
|
||
|
} else {
|
||
|
a_dropdown_this.reSetUnSelectGridTreeData( all_columns );
|
||
|
}
|
||
|
a_dropdown_this.setSelectGridDragAble();
|
||
|
a_dropdown_this.setUnSelectGridDragAble();
|
||
|
|
||
|
};
|
||
|
|
||
|
this.setUnSelectGridHighlight = function( array ) {
|
||
|
unselect_grid.resetSelection();
|
||
|
$.each( array, function( index, content ) {
|
||
|
unselect_grid.grid.jqGrid( 'setSelection', content, false );
|
||
|
} );
|
||
|
|
||
|
};
|
||
|
|
||
|
this.showNoResultCover = function( target_grid ) {
|
||
|
|
||
|
this.removeNoResultCover( target_grid );
|
||
|
|
||
|
var no_result_box = Global.loadWidgetByName( WidgetNamesDic.NO_RESULT_BOX );
|
||
|
no_result_box.NoResultBox( { related_view_controller: this } );
|
||
|
var grid_div;
|
||
|
|
||
|
if ( target_grid === 'unselect_grid' ) {
|
||
|
no_result_box.attr( 'id', id + target_grid + '_no_result_box' );
|
||
|
|
||
|
grid_div = $( this ).find( '#gbox_unselect_grid_' + id );
|
||
|
|
||
|
unselect_grid_no_result_box = no_result_box;
|
||
|
|
||
|
} else {
|
||
|
no_result_box.attr( 'id', id + target_grid + '_no_result_box' );
|
||
|
|
||
|
grid_div = $( this ).find( '#gbox_select_grid_' + id );
|
||
|
|
||
|
select_grid_no_result_box = no_result_box;
|
||
|
|
||
|
}
|
||
|
|
||
|
grid_div.append( no_result_box );
|
||
|
|
||
|
};
|
||
|
|
||
|
this.removeNoResultCover = function( target_grid ) {
|
||
|
if ( target_grid === 'unselect_grid' ) {
|
||
|
|
||
|
if ( unselect_grid_no_result_box ) {
|
||
|
unselect_grid_no_result_box.remove();
|
||
|
unselect_grid_no_result_box = null;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
if ( select_grid_no_result_box ) {
|
||
|
select_grid_no_result_box.remove();
|
||
|
select_grid_no_result_box = null;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.setSelectGridHighlight = function( array ) {
|
||
|
select_grid.resetSelection();
|
||
|
$.each( array, function( index, content ) {
|
||
|
select_grid.grid.jqGrid( 'setSelection', content, false );
|
||
|
} );
|
||
|
|
||
|
};
|
||
|
|
||
|
this.setUnSelectGridDragAble = function() {
|
||
|
|
||
|
var highlight_Rows = null;
|
||
|
|
||
|
var trs = unselect_grid.grid.find( 'tr.ui-widget-content' ).attr( 'draggable', 'true' );
|
||
|
|
||
|
trs.unbind( 'dragstart' ).bind( 'dragstart', function( event ) {
|
||
|
var target = $( event.target );
|
||
|
|
||
|
var container = $( '<table class=\'drag-holder-table\'></table>' );
|
||
|
highlight_Rows = unselect_grid.grid.find( 'tr.ui-state-highlight' );
|
||
|
var cloneRows = [];
|
||
|
var len = highlight_Rows.length;
|
||
|
if ( len === 0 ) {
|
||
|
len = 1;
|
||
|
unselect_grid.grid.jqGrid( 'setSelection', target.attr( 'id' ), false );
|
||
|
} else if ( !target.hasClass( 'ui-state-highlight' ) ) {
|
||
|
selectAllInGrid( unselect_grid, true );
|
||
|
unselect_grid.grid.jqGrid( 'setSelection', target.attr( 'id' ), false );
|
||
|
len = 1;
|
||
|
}
|
||
|
|
||
|
if ( len === 1 ) {
|
||
|
highlight_Rows = unselect_grid.grid.find( 'tr.ui-state-highlight' );
|
||
|
var clone_row = $( highlight_Rows[0] ).clone();
|
||
|
|
||
|
clone_row.children().eq( 0 ).remove();
|
||
|
clone_row.find( 'td' ).css( 'padding-right', 10 );
|
||
|
clone_row.find( 'td' ).css( 'padding-left', 10 );
|
||
|
|
||
|
container.append( clone_row );
|
||
|
} else {
|
||
|
container.append( len + ' ' + $.i18n._( 'item(s) selected' ) );
|
||
|
}
|
||
|
|
||
|
$( 'body' ).find( '.drag-holder-table' ).remove();
|
||
|
|
||
|
$( 'body' ).append( container );
|
||
|
|
||
|
event.originalEvent.dataTransfer.setData( 'Text', 'un_select_grid' );//JUST ELEMENT references is ok here NO ID
|
||
|
|
||
|
if ( event.originalEvent.dataTransfer.setDragImage ) {
|
||
|
event.originalEvent.dataTransfer.setDragImage( container[0], -10, 0 );
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
} );
|
||
|
|
||
|
unselect_grid.grid.parent().parent().unbind( 'dragover' ).bind( 'dragover', function( event ) {
|
||
|
event.preventDefault();
|
||
|
} );
|
||
|
|
||
|
unselect_grid.grid.parent().parent().unbind( 'drop' ).bind( 'drop', function( event ) {
|
||
|
|
||
|
event.preventDefault();
|
||
|
if ( event.stopPropagation ) {
|
||
|
event.stopPropagation(); // stops the browser from redirecting.
|
||
|
}
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
//drag from left to right
|
||
|
if ( event.originalEvent.dataTransfer.getData( 'Text' ) === 'select_grid' ) {
|
||
|
var grid_selected_id_array = select_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( false, grid_selected_id_array );
|
||
|
}
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
trs.unbind( 'dragend' ).bind( 'dragend', function( event ) {
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
} );
|
||
|
|
||
|
unselect_grid.grid.parent().parent().unbind( 'dragend' ).bind( 'dragend', function( event ) {
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
} );
|
||
|
|
||
|
};
|
||
|
|
||
|
//Start Drag
|
||
|
this.setSelectGridDragAble = function() {
|
||
|
|
||
|
var highlight_Rows = null;
|
||
|
var $$this = this;
|
||
|
|
||
|
var trs = select_grid.grid.find( 'tr.ui-widget-content' ).attr( 'draggable', 'true' );
|
||
|
|
||
|
trs.attr( 'draggable', true );
|
||
|
|
||
|
trs.unbind( 'dragstart' ).bind( 'dragstart', function( event ) {
|
||
|
var target = $( event.target );
|
||
|
var container = $( '<table class=\'drag-holder-table\' from=\'select_grid\'></table>' );
|
||
|
highlight_Rows = select_grid.grid.find( 'tr.ui-state-highlight' );
|
||
|
var cloneRows = [];
|
||
|
var len = highlight_Rows.length;
|
||
|
|
||
|
if ( len === 0 ) {
|
||
|
len = 1;
|
||
|
select_grid.grid.jqGrid( 'setSelection', target.attr( 'id' ), false );
|
||
|
} else if ( !target.hasClass( 'ui-state-highlight' ) ) {
|
||
|
selectAllInGrid( select_grid, true );
|
||
|
select_grid.grid.jqGrid( 'setSelection', target.attr( 'id' ), false );
|
||
|
len = 1;
|
||
|
}
|
||
|
|
||
|
if ( len === 1 ) {
|
||
|
highlight_Rows = select_grid.grid.find( 'tr.ui-state-highlight' );
|
||
|
|
||
|
var clone_row = $( highlight_Rows[0] ).clone();
|
||
|
|
||
|
clone_row.children().eq( 0 ).remove();
|
||
|
clone_row.find( 'td' ).css( 'padding-right', 10 );
|
||
|
clone_row.find( 'td' ).css( 'padding-left', 10 );
|
||
|
|
||
|
container.append( clone_row );
|
||
|
} else {
|
||
|
container.append( len + ' ' + $.i18n._( 'item(s) selected' ) );
|
||
|
}
|
||
|
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
|
||
|
$( 'body' ).append( container );
|
||
|
|
||
|
event.originalEvent.dataTransfer.setData( 'Text', 'select_grid' );//JUST ELEMENT references is ok here NO ID
|
||
|
|
||
|
if ( event.originalEvent.dataTransfer.setDragImage ) {
|
||
|
event.originalEvent.dataTransfer.setDragImage( container[0], -10, 0 );
|
||
|
}
|
||
|
return true;
|
||
|
|
||
|
} );
|
||
|
|
||
|
select_grid.grid.parent().parent().unbind( 'dragover' ).bind( 'dragover', function( event ) {
|
||
|
event.preventDefault();
|
||
|
} );
|
||
|
|
||
|
select_grid.grid.parent().parent().unbind( 'drop' ).bind( 'drop', function( event ) {
|
||
|
event.preventDefault();
|
||
|
if ( event.stopPropagation ) {
|
||
|
event.stopPropagation(); // stops the browser from redirecting.
|
||
|
}
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
//drag from left to right
|
||
|
if ( event.originalEvent.dataTransfer.getData( 'Text' ) === 'un_select_grid' ) {
|
||
|
if ( !tree_mode ) {
|
||
|
var grid_selected_id_array = unselect_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( true, grid_selected_id_array );
|
||
|
}
|
||
|
} else {
|
||
|
var selectRow = unselect_grid.grid.jqGrid( 'getGridParam', 'selrow' );
|
||
|
a_dropdown_this.moveItems( true, [selectRow] );
|
||
|
}
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
//when drag item to the header row, put them as first row
|
||
|
var parent_grid_container = select_grid.grid.parent().parent().parent();
|
||
|
parent_grid_container = parent_grid_container.find( '.ui-jqgrid-labels' );
|
||
|
|
||
|
parent_grid_container.unbind( 'dragover' ).bind( 'dragover', function( event ) {
|
||
|
event.preventDefault();
|
||
|
$( this ).addClass( 'drag-over-bottom' );
|
||
|
} );
|
||
|
|
||
|
parent_grid_container.unbind( 'dragleave' ).bind( 'dragleave', function( event ) {
|
||
|
$( this ).removeClass( 'drag-over-bottom' );
|
||
|
|
||
|
} );
|
||
|
|
||
|
trs.unbind( 'dragend' ).bind( 'dragend', function( event ) {
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
} );
|
||
|
|
||
|
select_grid.grid.parent().parent().unbind( 'dragend' ).bind( 'dragend', function( event ) {
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
} );
|
||
|
|
||
|
parent_grid_container.unbind( 'dragend' ).bind( 'dragend', function( event ) {
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
} );
|
||
|
|
||
|
//when dropping on th/divs at top of grid.
|
||
|
parent_grid_container.unbind( 'drop' ).bind( 'drop', function( event ) {
|
||
|
event.preventDefault();
|
||
|
if ( event.stopPropagation ) {
|
||
|
event.stopPropagation(); // stops the browser from redirecting.
|
||
|
}
|
||
|
|
||
|
$( '.drag-holder-table' ).remove();
|
||
|
$( this ).removeClass( 'drag-over-bottom' );
|
||
|
if ( event.originalEvent.dataTransfer.getData( 'Text' ) === 'select_grid' ) {
|
||
|
|
||
|
var firstTr = select_grid.grid.find( 'tr.ui-widget-content' )[0];
|
||
|
if ( !firstTr ) {
|
||
|
return;
|
||
|
}
|
||
|
var rows = select_grid.grid.find( 'tr.ui-state-highlight' );
|
||
|
|
||
|
var len = rows.length;
|
||
|
|
||
|
for ( var i = len - 1; i >= 0; i-- ) {
|
||
|
|
||
|
var value = rows[i];
|
||
|
var row = $( value );
|
||
|
|
||
|
var target_row_index = 0;
|
||
|
var select_items = a_dropdown_this.getSelectItems();
|
||
|
var drag_item_index = value.rowIndex - 1;
|
||
|
|
||
|
select_items.splice( target_row_index, 0, select_items.splice( drag_item_index, 1 )[0] );
|
||
|
|
||
|
$( row ).insertAfter( firstTr ); // insert after sizerow.
|
||
|
}
|
||
|
|
||
|
var scroll_position = select_grid.grid.parents( '.ui-jqgrid-bdiv' ).scrollTop();
|
||
|
isChanged = true;
|
||
|
select_grid.grid.trigger( 'reloadGrid' );
|
||
|
|
||
|
$$this.setSelectGridDragAble();
|
||
|
|
||
|
rows = select_grid.grid.find( 'tr.ui-widget-content' );
|
||
|
|
||
|
$.each( highlight_Rows, function( index, value ) {
|
||
|
|
||
|
var item = value;
|
||
|
var itemLabel = $( item ).find( 'td' )[1].innerHTML;
|
||
|
|
||
|
$.each( rows, function( index1, value1 ) {
|
||
|
var row = value1;
|
||
|
|
||
|
var rowLabel = $( row ).find( 'td' )[1].innerHTML;
|
||
|
if ( itemLabel === rowLabel ) {
|
||
|
select_grid.grid.jqGrid( 'setSelection', $( row ).attr( 'id' ), false );
|
||
|
return false;
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
} );
|
||
|
|
||
|
select_grid.grid.parents( '.ui-jqgrid-bdiv' ).scrollTop( scroll_position );
|
||
|
} else if ( event.originalEvent.dataTransfer.getData( 'Text' ) === 'un_select_grid' ) {
|
||
|
target_row_index = -1;
|
||
|
var grid_selected_id_array = unselect_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( true, grid_selected_id_array, target_row_index );
|
||
|
}
|
||
|
}
|
||
|
a_dropdown_this.trigger( 'formItemChange', [a_dropdown_this] );
|
||
|
|
||
|
} );
|
||
|
|
||
|
trs.unbind( 'dragover' ).bind( 'dragover', function( event ) {
|
||
|
$( this ).addClass( 'drag-over-bottom' );
|
||
|
} );
|
||
|
|
||
|
trs.unbind( 'dragleave' ).bind( 'dragleave', function( event ) {
|
||
|
$( this ).removeClass( 'drag-over-bottom' );
|
||
|
} );
|
||
|
|
||
|
trs.unbind( 'drop' ).bind( 'drop', function( event ) {
|
||
|
|
||
|
event.preventDefault();
|
||
|
if ( event.stopPropagation ) {
|
||
|
event.stopPropagation(); // stops the browser from redirecting.
|
||
|
}
|
||
|
|
||
|
$( this ).removeClass( 'drag-over-bottom' );
|
||
|
|
||
|
var $this = this;
|
||
|
// Dont do drag to order
|
||
|
if ( event.originalEvent.dataTransfer.getData( 'Text' ) === 'select_grid' ) {
|
||
|
var rows = select_grid.grid.find( 'tr.ui-state-highlight' );
|
||
|
|
||
|
var len = rows.length;
|
||
|
|
||
|
for ( var i = len - 1; i >= 0; i-- ) {
|
||
|
|
||
|
var value = rows[i];
|
||
|
var row = $( value );
|
||
|
|
||
|
if ( value === this ) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
var target_row_index = $this.rowIndex - 1;
|
||
|
var select_items = a_dropdown_this.getSelectItems();
|
||
|
var drag_item_index = value.rowIndex - 1;
|
||
|
|
||
|
if ( target_row_index >= drag_item_index ) {
|
||
|
select_items.splice( target_row_index, 0, select_items.splice( drag_item_index, 1 )[0] );
|
||
|
} else {
|
||
|
select_items.splice( target_row_index + 1, 0, select_items.splice( drag_item_index, 1 )[0] );
|
||
|
}
|
||
|
|
||
|
$( row ).insertAfter( $this );
|
||
|
}
|
||
|
isChanged = true;
|
||
|
var scroll_position = select_grid.grid.closest( '.ui-jqgrid-bdiv' ).scrollTop();
|
||
|
select_grid.grid.trigger( 'reloadGrid' );
|
||
|
|
||
|
$$this.setSelectGridDragAble();
|
||
|
|
||
|
rows = select_grid.grid.find( 'tr.ui-widget-content' );
|
||
|
|
||
|
$.each( highlight_Rows, function( index, value ) {
|
||
|
|
||
|
var item = value;
|
||
|
var itemLabel = $( item ).find( 'td' )[1].innerHTML;
|
||
|
|
||
|
$.each( rows, function( index1, value1 ) {
|
||
|
row = value1;
|
||
|
|
||
|
var rowLabel = $( row ).find( 'td' )[1].innerHTML;
|
||
|
if ( itemLabel === rowLabel ) {
|
||
|
select_grid.grid.jqGrid( 'setSelection', $( row ).attr( 'id' ), false );
|
||
|
return false;
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
} );
|
||
|
|
||
|
select_grid.grid.closest( '.ui-jqgrid-bdiv' ).scrollTop( scroll_position );
|
||
|
} else if ( event.originalEvent.dataTransfer.getData( 'Text' ) === 'un_select_grid' ) {
|
||
|
|
||
|
if ( !tree_mode ) {
|
||
|
target_row_index = $this.rowIndex - 1;
|
||
|
var grid_selected_id_array = unselect_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( true, grid_selected_id_array, target_row_index, $( $this ).attr( 'id' ) );
|
||
|
}
|
||
|
} else {
|
||
|
var selectRow = unselect_grid.grid.jqGrid( 'getGridParam', 'selrow' );
|
||
|
a_dropdown_this.moveItems( true, [selectRow] );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
//Need to dirty the form when changing order of selected items
|
||
|
a_dropdown_this.trigger( 'formItemChange', [a_dropdown_this] );
|
||
|
} );
|
||
|
};
|
||
|
|
||
|
this.setTotalDisplaySpan = function() {
|
||
|
var grid_selected_id_array;
|
||
|
|
||
|
if ( allow_multiple_selection ) {
|
||
|
grid_selected_id_array = unselect_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
} else {
|
||
|
grid_selected_id_array = unselect_grid.grid.jqGrid( 'getGridParam', 'selrow' ) ? [unselect_grid.grid.jqGrid( 'getGridParam', 'selrow' )] : [];
|
||
|
}
|
||
|
|
||
|
var grid_selected_length = 0;
|
||
|
//Uncaught TypeError: Cannot read property 'length' of undefined
|
||
|
if ( grid_selected_id_array ) {
|
||
|
grid_selected_length = grid_selected_id_array.length;
|
||
|
}
|
||
|
|
||
|
var totalRows = 0;
|
||
|
var start = 0;
|
||
|
var end = 0;
|
||
|
var unselect_grid_length = ( ( unselect_grid && Global.isArray( unselect_grid.getGridParam( 'data' ) ) ) ? unselect_grid.getGridParam( 'data' ).length : 0 );
|
||
|
|
||
|
// CLICK TO SHOW MORE MODE OR SHOW ALL
|
||
|
if ( LocalCacheData.paging_type === 0 || !pager_data || ( pager_data && pager_data.last_page_number < 0 ) ) {
|
||
|
if ( pager_data ) {
|
||
|
totalRows = pager_data.total_rows;
|
||
|
start = 1;
|
||
|
end = unselect_grid_length;
|
||
|
} else {
|
||
|
totalRows = unselect_grid_length;
|
||
|
start = 1;
|
||
|
end = unselect_grid_length;
|
||
|
}
|
||
|
} else {
|
||
|
if ( pager_data ) {
|
||
|
totalRows = pager_data.total_rows;
|
||
|
start = 0;
|
||
|
end = 0;
|
||
|
|
||
|
if ( pager_data.last_page_number > 1 ) {
|
||
|
if ( !pager_data.is_last_page ) {
|
||
|
start = ( pager_data.current_page - 1 ) * pager_data.rows_per_page + 1;
|
||
|
end = start + pager_data.rows_per_page - 1;
|
||
|
} else {
|
||
|
start = totalRows - unselect_grid_length + 1;
|
||
|
end = totalRows;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
start = 1;
|
||
|
end = totalRows;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
totalRows = 0;
|
||
|
start = 0;
|
||
|
end = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var totalInfo;
|
||
|
if ( allow_multiple_selection ) {
|
||
|
|
||
|
var selected_count = this.getSelectItems().length;
|
||
|
|
||
|
var remain_count = unselect_grid_length;
|
||
|
|
||
|
if ( remain_count === 0 ) {
|
||
|
end = 0;
|
||
|
start = 0;
|
||
|
} else {
|
||
|
end = ( remain_count + start );
|
||
|
if ( start === 1 ) {
|
||
|
end = end - 1;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( totalRows ) {
|
||
|
|
||
|
//If there is manually added item
|
||
|
if ( end > totalRows ) {
|
||
|
totalRows = end;
|
||
|
}
|
||
|
|
||
|
totalInfo = start + ' - ' + end + ' ' + $.i18n._( 'of' ) + ' ' + totalRows + ' ' + $.i18n._( 'total' ) + '. ';
|
||
|
|
||
|
} else {
|
||
|
totalInfo = start + ' - ' + end + '.';
|
||
|
}
|
||
|
|
||
|
total_display_span.text( $.i18n._( 'Displaying' ) + ' ' + totalInfo + ' ' + $.i18n._( 'Selected' ) + ': ' + selected_count );
|
||
|
|
||
|
} else {
|
||
|
|
||
|
if ( end === 0 ) {
|
||
|
start = 0;
|
||
|
}
|
||
|
if ( totalRows ) {
|
||
|
|
||
|
//If there is manually added item
|
||
|
if ( end > totalRows ) {
|
||
|
totalRows = end;
|
||
|
}
|
||
|
|
||
|
totalInfo = start + ' - ' + end + ' ' + $.i18n._( 'of' ) + ' ' + totalRows + ' ' + $.i18n._( 'total' ) + '. ';
|
||
|
} else {
|
||
|
totalInfo = start + ' - ' + end + '.';
|
||
|
}
|
||
|
|
||
|
total_display_span.text( $.i18n._( 'Displaying' ) + ' ' + totalInfo );
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
this.onUnSelectGridSelectRow = function() {
|
||
|
this.setTotalDisplaySpan();
|
||
|
};
|
||
|
|
||
|
this.onUnSelectGridDoubleClick = function() {
|
||
|
if ( allow_multiple_selection ) {
|
||
|
if ( !tree_mode ) {
|
||
|
var grid_selected_id_array = unselect_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( true, grid_selected_id_array );
|
||
|
}
|
||
|
} else {
|
||
|
var selectRow = unselect_grid.grid.jqGrid( 'getGridParam', 'selrow' );
|
||
|
a_dropdown_this.moveItems( true, [selectRow] );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.onSelectGridDoubleClick = function() {
|
||
|
var grid_selected_id_array = select_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( false, grid_selected_id_array );
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
//Move items between 2 grids
|
||
|
this.moveItems = function( left_to_right, array, index, target_row_id ) {
|
||
|
this.removeNoResultCover( 'unselect_grid' );
|
||
|
this.removeNoResultCover( 'select_grid' );
|
||
|
var added_items = [];
|
||
|
var removed_items = [];
|
||
|
isChanged = true;
|
||
|
|
||
|
var editable_unselect_items = $( unselect_grid.grid ).find( '.editable' );
|
||
|
for ( var i = 0; i < editable_unselect_items.length; i++ ) {
|
||
|
var $el = $( editable_unselect_items[i] );
|
||
|
var tr_id = $el.parents( 'tr' ).prop( 'id' );
|
||
|
unselect_grid.grid.saveRow( tr_id );
|
||
|
}
|
||
|
|
||
|
var editable_select_items = $( select_grid.grid ).find( '.editable' );
|
||
|
for ( var i = 0; i < editable_select_items.length; i++ ) {
|
||
|
var $el = $( editable_select_items[i] );
|
||
|
var tr_id = $el.parents( 'tr' ).prop( 'id' );
|
||
|
select_grid.grid.saveRow( tr_id );
|
||
|
}
|
||
|
|
||
|
var moved_items_array = array.slice();
|
||
|
|
||
|
if ( left_to_right ) {
|
||
|
var source_grid = unselect_grid;
|
||
|
var target_grid = select_grid;
|
||
|
var source_data = unselect_grid.getGridParam( 'data' );
|
||
|
var target_data = select_grid.getGridParam( 'data' );
|
||
|
} else {
|
||
|
source_grid = select_grid;
|
||
|
target_grid = unselect_grid;
|
||
|
source_data = select_grid.getGridParam( 'data' );
|
||
|
target_data = unselect_grid.getGridParam( 'data' );
|
||
|
}
|
||
|
|
||
|
if ( !Global.isArray( target_data ) ) {
|
||
|
target_data = [];
|
||
|
}
|
||
|
|
||
|
if ( source_data[0] && source_data[0].hasOwnProperty( 'id' ) ) {
|
||
|
if ( !Global.isSet( index ) ) {
|
||
|
array = array.reverse();
|
||
|
}
|
||
|
|
||
|
for ( var i = array.length - 1; i >= 0; i-- ) {
|
||
|
var selected_item_id = array[i];
|
||
|
|
||
|
for ( var j = 0; j < source_data.length; j++ ) {
|
||
|
var from_all_columns_item = source_data[j];
|
||
|
if ( from_all_columns_item.hidden ) {
|
||
|
continue; //Do not move hidden iteme
|
||
|
}
|
||
|
if ( from_all_columns_item.id == selected_item_id ) { //html number is string, compare string numbers with number number
|
||
|
var select_item = from_all_columns_item;
|
||
|
|
||
|
if ( !tree_mode || !left_to_right ) { //Don't remove item from list if tree mode
|
||
|
source_grid.grid.jqGrid( 'delRowData', selected_item_id );
|
||
|
i = i + 1;
|
||
|
}
|
||
|
|
||
|
if ( !tree_mode || left_to_right ) {
|
||
|
if ( tree_mode ) {
|
||
|
//Make sure only one item can be add to right when tree mode
|
||
|
var target_data_len = target_data.length;
|
||
|
var find = false;
|
||
|
for ( var y = 0; y < target_data_len; y++ ) {
|
||
|
var existed_item = target_data[y];
|
||
|
if ( existed_item[key] === select_item[key] ) {
|
||
|
find = true;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( !find ) {
|
||
|
|
||
|
if ( index >= 0 ) {
|
||
|
target_grid.grid.addRowData( selected_item_id, select_item, 'after', target_row_id );
|
||
|
target_data.splice( target_data.length - 1, 1 );
|
||
|
target_data.splice( index + 1, 0, select_item );
|
||
|
|
||
|
} else if ( index === -1 ) { // add to first row
|
||
|
target_grid.grid.addRowData( selected_item_id, select_item, 'first' );
|
||
|
target_data.splice( target_data.length - 1, 1 );
|
||
|
target_data.unshift( select_item );
|
||
|
} else {
|
||
|
target_grid.grid.addRowData( selected_item_id, select_item );
|
||
|
target_data[target_data.length - 1] = select_item; //need this since we need full data, addRowData only keep data which shown on UI
|
||
|
}
|
||
|
|
||
|
}
|
||
|
} else {
|
||
|
|
||
|
if ( index >= 0 ) {
|
||
|
target_grid.grid.addRowData( selected_item_id, select_item, 'after', target_row_id );
|
||
|
target_data.splice( target_data.length - 1, 1 );
|
||
|
target_data.splice( index + 1, 0, select_item );
|
||
|
|
||
|
} else if ( index === -1 ) { // add to first row
|
||
|
target_grid.grid.addRowData( selected_item_id, select_item, 'first' );
|
||
|
target_data.splice( target_data.length - 1, 1 );
|
||
|
target_data.unshift( select_item );
|
||
|
} else {
|
||
|
|
||
|
target_grid.grid.addRowData( selected_item_id, select_item );
|
||
|
target_data[target_data.length - 1] = select_item; //
|
||
|
|
||
|
}
|
||
|
|
||
|
added_items.push( select_item );
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( !tree_mode ) {
|
||
|
target_grid.grid.trigger( 'reloadGrid' );
|
||
|
// if ( left_to_right ) {
|
||
|
// a_dropdown_this.resizeSelectSearchInputs();
|
||
|
// }
|
||
|
} else {
|
||
|
if ( left_to_right ) {
|
||
|
a_dropdown_this.reSetUnSelectGridTreeData( source_data );
|
||
|
} else {
|
||
|
a_dropdown_this.reSetUnSelectGridTreeData( target_data );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
a_dropdown_this.setSelectGridDragAble();
|
||
|
a_dropdown_this.setUnSelectGridDragAble();
|
||
|
a_dropdown_this.updateRealSelectItemsIfNecessary( left_to_right, moved_items_array );
|
||
|
a_dropdown_this.setTotalDisplaySpan();
|
||
|
|
||
|
if ( !parent_a_combo_box ) {
|
||
|
a_dropdown_this.trigger( 'formItemChange', [a_dropdown_this] );
|
||
|
}
|
||
|
|
||
|
if ( a_dropdown_this.isLocalSearchMode() ) {
|
||
|
a_dropdown_this.localSearch( 'unselect', unselect_grid_search_map, added_items );
|
||
|
a_dropdown_this.localSearch( 'select', select_grid_search_map, added_items );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
this.updateRealSelectItemsIfNecessary = function( left_to_right, moved_items ) {
|
||
|
if ( !real_selected_items || real_selected_items.length == 0 ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( left_to_right ) {
|
||
|
var current_items_in_selected_grid = select_grid.getGridParam( 'data' );
|
||
|
$.each( moved_items, function( index, value ) {
|
||
|
$.each( current_items_in_selected_grid, function( index1, value1 ) {
|
||
|
if ( value1[key] == value ) { //use == to match '' or number of id
|
||
|
real_selected_items.push( value1 );
|
||
|
return false;
|
||
|
}
|
||
|
} );
|
||
|
} );
|
||
|
} else {
|
||
|
$.each( moved_items, function( index, value ) {
|
||
|
$.each( real_selected_items, function( index1, value1 ) {
|
||
|
if ( value1[key] == value ) { //use == to match '' or number of id
|
||
|
real_selected_items.splice( index1, 1 );
|
||
|
return false;
|
||
|
}
|
||
|
} );
|
||
|
} );
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
this.setHeight = function( height ) {
|
||
|
if ( max_height && max_height < height ) {
|
||
|
height = max_height;
|
||
|
}
|
||
|
unselect_grid.grid.setGridHeight( height );
|
||
|
if ( allow_multiple_selection ) {
|
||
|
select_grid.grid.setGridHeight( height );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var initColumnSettingsBtn = function() {
|
||
|
var edit_icon_div = $( a_dropdown_this ).find( '.edit-columnIcon-div' );
|
||
|
var edit_icon = $( a_dropdown_this ).find( '.edit_column_icon' );
|
||
|
if ( !display_column_settings || tree_mode ) {
|
||
|
edit_icon_div.hide();
|
||
|
return;
|
||
|
} else {
|
||
|
edit_icon_div.show();
|
||
|
}
|
||
|
|
||
|
edit_icon_div.css( 'display', 'inline-block' );
|
||
|
edit_icon.attr( 'src', Global.getRealImagePath( 'images/edit.png' ) );
|
||
|
|
||
|
//OPen Column editor
|
||
|
edit_icon_div.click( function( e ) {
|
||
|
e.preventDefault();
|
||
|
e.stopPropagation();
|
||
|
|
||
|
if ( !parent_a_combo_box.getEnabled() ) {
|
||
|
return;
|
||
|
}
|
||
|
api.getOptions( column_option_key, {
|
||
|
onResult: function( columns_result ) {
|
||
|
|
||
|
column_editor = $( $.fn.ColumnEditor.html_template ); // Unable to use Global.loadWidgetByName as FormItemType did not have ColumnEditor listed, and its only used in one place anyway.
|
||
|
column_editor.find( '#save_btn' ).text( $.i18n._( 'Save and Close' ) );
|
||
|
column_editor.find( '#close_btn' ).text( $.i18n._( 'Close' ) );
|
||
|
column_editor.find( '.rows-per-page' ).text( $.i18n._( 'Rows Per Page' ) );
|
||
|
column_editor.find( '.choose-layout' ).text( $.i18n._( 'Choose Layout' ) );
|
||
|
|
||
|
column_editor = column_editor.ColumnEditor( { parent_awesome_box: parent_a_combo_box } );
|
||
|
|
||
|
var columns_result_data = columns_result.getResult();
|
||
|
parent_a_combo_box.setAllColumns( Global.buildColumnArray( columns_result_data ) );
|
||
|
parent_a_combo_box.setDisplayColumnsForEditor( parent_a_combo_box.buildDisplayColumnsForEditor() );
|
||
|
|
||
|
//Open Column Editor;
|
||
|
column_editor.show();
|
||
|
|
||
|
}
|
||
|
} );
|
||
|
} );
|
||
|
};
|
||
|
|
||
|
var setLabels = function() {
|
||
|
var unselected_items_label = a_dropdown_this.find( '#unSelectedItemsLabel' );
|
||
|
var un_deselect_all_btn = a_dropdown_this.find( '#unDeselectAllBtn' );
|
||
|
var unselect_all_btn = a_dropdown_this.find( '#unselect_all_btn' );
|
||
|
var un_clear_btn = a_dropdown_this.find( '#un_clear_btn' );
|
||
|
var show_all_check_box_label = a_dropdown_this.find( '#show_all_check_box_label' );
|
||
|
|
||
|
if ( allow_multiple_selection ) {
|
||
|
unselected_items_label.text( $.i18n._( 'UNSELECTED ITEMS' ) );
|
||
|
} else {
|
||
|
unselected_items_label.text( $.i18n._( 'PLEASE SELECT ITEM' ) );
|
||
|
}
|
||
|
un_deselect_all_btn.text( $.i18n._( 'Deselect All' ) );
|
||
|
unselect_all_btn.text( $.i18n._( 'Select All' ) );
|
||
|
un_clear_btn.text( $.i18n._( 'Move All' ) );
|
||
|
show_all_check_box_label.text( $.i18n._( 'Show All' ) );
|
||
|
|
||
|
var selectedItemsLabel = a_dropdown_this.find( '#selectedItemsLabel' );
|
||
|
var delete_all_btn = a_dropdown_this.find( '#delete_all_btn' );
|
||
|
var select_all_btn = a_dropdown_this.find( '#select_all_btn' );
|
||
|
var clear_btn = a_dropdown_this.find( '#clear_btn' );
|
||
|
|
||
|
selectedItemsLabel.text( $.i18n._( 'SELECTED ITEMS' ) );
|
||
|
delete_all_btn.text( $.i18n._( 'Deselect All' ) );
|
||
|
select_all_btn.text( $.i18n._( 'Select All' ) );
|
||
|
clear_btn.text( $.i18n._( 'Move All' ) );
|
||
|
|
||
|
};
|
||
|
|
||
|
this.selectNextItem = function( e ) {
|
||
|
var next_index;
|
||
|
var target_grid;
|
||
|
var next_select_item;
|
||
|
if ( e.keyCode === 39 ) { //right
|
||
|
if ( allow_multiple_selection && !$( e.target ).hasClass( 'search-input' ) ) {
|
||
|
e.preventDefault();
|
||
|
a_dropdown_this.onUnSelectGridDoubleClick();
|
||
|
}
|
||
|
} else if ( e.keyCode === 37 ) { //left
|
||
|
if ( allow_multiple_selection && !$( e.target ).hasClass( 'search-input' ) ) {
|
||
|
e.preventDefault();
|
||
|
a_dropdown_this.onSelectGridDoubleClick();
|
||
|
}
|
||
|
} else {
|
||
|
if ( quick_search_timer ) {
|
||
|
clearTimeout( quick_search_timer );
|
||
|
}
|
||
|
var focus_target = $( ':focus' );
|
||
|
if ( focus_target.length > 0 && $( focus_target[0] ).hasClass( 'search-input' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
quick_search_timer = setTimeout( function() {
|
||
|
quick_search_typed_keys = '';
|
||
|
}, 200 );
|
||
|
e.preventDefault();
|
||
|
quick_search_typed_keys = quick_search_typed_keys + Global.KEYCODES[e.which];
|
||
|
if ( allow_multiple_selection || tree_mode ) {
|
||
|
if ( quick_search_typed_keys ) {
|
||
|
target_grid = a_dropdown_this.getFocusInSeletGrid() ? a_dropdown_this.getSelectGrid() : a_dropdown_this.getUnSelectGrid();
|
||
|
var search_index = quick_search_dic[quick_search_typed_keys] ? quick_search_dic[quick_search_typed_keys] : 0;
|
||
|
var tds = $( target_grid.grid.find( 'tr' ).find( 'td:eq(1)' ).filter( function() {
|
||
|
return $.text( [this] ).toLowerCase().indexOf( quick_search_typed_keys ) == 0;
|
||
|
} ) );
|
||
|
var td;
|
||
|
if ( search_index < 0 || search_index > tds.length ) {
|
||
|
search_index = 0;
|
||
|
}
|
||
|
|
||
|
td = $( tds[search_index] );
|
||
|
a_dropdown_this.unSelectAll( target_grid.grid, true );
|
||
|
|
||
|
next_index = td.parent().index() - 1;
|
||
|
|
||
|
var next_select_item = false;
|
||
|
var grid_data = target_grid.getData();
|
||
|
for ( var z = 0; z < grid_data.length; z++ ) {
|
||
|
if ( grid_data[z].id == td.parents( 'tr' ).attr( 'id' ) ) {
|
||
|
next_select_item = grid_data[z];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
select_item = next_select_item;
|
||
|
a_dropdown_this.setSelectItem( next_select_item, target_grid );
|
||
|
quick_search_dic = {};
|
||
|
quick_search_dic[quick_search_typed_keys] = search_index + 1;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
if ( quick_search_typed_keys ) {
|
||
|
search_index = quick_search_dic[quick_search_typed_keys] ? quick_search_dic[quick_search_typed_keys] : 0;
|
||
|
tds = $( a_dropdown_this.getUnSelectGrid().find( 'tr' ).find( 'td:first' ).filter( function() {
|
||
|
return $.text( [this] ).toLowerCase().indexOf( quick_search_typed_keys ) == 0;
|
||
|
} ) );
|
||
|
if ( search_index > 0 && search_index < tds.length ) {
|
||
|
|
||
|
} else {
|
||
|
search_index = 0;
|
||
|
}
|
||
|
|
||
|
td = $( tds[search_index] );
|
||
|
|
||
|
next_index = td.parent().index() - 1;
|
||
|
next_select_item = this.getItemByIndex( next_index );
|
||
|
select_item = next_select_item;
|
||
|
a_dropdown_this.setSelectItem( next_select_item );
|
||
|
|
||
|
quick_search_dic = {};
|
||
|
quick_search_dic[quick_search_typed_keys] = search_index + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
//For multiple items like .xxx could contains a few widgets.
|
||
|
//#2353 removed $.each because it's slower
|
||
|
for ( var i = 0; i < this.length; i++ ) {
|
||
|
var obj = $( this[i] ); //#2353 - caching the lookup to speed this part up.
|
||
|
var o = $.meta ? $.extend( {}, opts, obj.data() ) : opts;
|
||
|
|
||
|
if ( o.default_height > 150 ) {
|
||
|
default_height = o.default_height;
|
||
|
}
|
||
|
|
||
|
field = o.field;
|
||
|
|
||
|
if ( o.search_input_filter ) {
|
||
|
unselect_grid_search_map = o.search_input_filter;
|
||
|
}
|
||
|
|
||
|
if ( o.select_grid_search_input_filter ) {
|
||
|
select_grid_search_map = o.select_grid_search_input_filter;
|
||
|
}
|
||
|
|
||
|
if ( o.default_sort_filter ) {
|
||
|
unselect_grid_sort_map = o.default_sort_filter;
|
||
|
}
|
||
|
|
||
|
if ( o.default_select_grid_sort_filter ) {
|
||
|
select_grid_sort_map = o.default_select_grid_sort_filter;
|
||
|
}
|
||
|
|
||
|
if ( o.auto_sort ) {
|
||
|
auto_sort = o.auto_sort;
|
||
|
}
|
||
|
|
||
|
if ( Global.isSet( o.allow_multiple_selection ) ) {
|
||
|
allow_multiple_selection = o.allow_multiple_selection;
|
||
|
}
|
||
|
|
||
|
if ( o.column_option_key ) {
|
||
|
column_option_key = o.column_option_key;
|
||
|
}
|
||
|
|
||
|
if ( o.api ) {
|
||
|
api = o.api;
|
||
|
}
|
||
|
|
||
|
if ( o.hasOwnProperty( 'display_column_settings' ) ) {
|
||
|
display_column_settings = o.display_column_settings;
|
||
|
}
|
||
|
|
||
|
if ( o.resize_grids ) {
|
||
|
resize_grids = o.resize_grids;
|
||
|
} else {
|
||
|
resize_grids = false;
|
||
|
}
|
||
|
|
||
|
//Init paging widget
|
||
|
|
||
|
left_buttons_div = obj.find( '.left-buttons-div' );
|
||
|
right_buttons_div = obj.find( '.right-buttons-div' );
|
||
|
|
||
|
start = obj.find( '.start' );
|
||
|
last = obj.find( '.last' );
|
||
|
next = obj.find( '.next' );
|
||
|
end = obj.find( '.end' );
|
||
|
|
||
|
start.text( $.i18n._( 'Start' ) );
|
||
|
last.text( $.i18n._( 'Previous' ) );
|
||
|
|
||
|
next.text( $.i18n._( 'Next' ) );
|
||
|
end.text( $.i18n._( 'End' ) );
|
||
|
|
||
|
start.click( function() {
|
||
|
if ( left_buttons_enable ) {
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid', 'start' );
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
last.click( function() {
|
||
|
if ( left_buttons_enable ) {
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid', 'last' );
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
next.click( function() {
|
||
|
if ( right_buttons_enable ) {
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid', 'next' );
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
end.click( function() {
|
||
|
if ( right_buttons_enable ) {
|
||
|
parent_a_combo_box.onADropDownSearch( 'unselect_grid', 'end' );
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
left_buttons_div.css( 'display', 'none' );
|
||
|
right_buttons_div.css( 'display', 'none' );
|
||
|
|
||
|
if ( LocalCacheData.paging_type !== 10 ) {
|
||
|
//Click to show more button below the last row
|
||
|
paging_widget = Global.loadWidgetByName( WidgetNamesDic.PAGING );
|
||
|
}
|
||
|
|
||
|
//Display 'Displaying XX of xx, Selected: xxx'
|
||
|
total_display_span = obj.find( '.total-number-span' );
|
||
|
|
||
|
if ( allow_multiple_selection ) {
|
||
|
total_display_span.text( $.i18n._( 'Displaying' ) + ' 0 ' + $.i18n._( 'of' ) + ' 0 ' + $.i18n._( 'total' ) );
|
||
|
} else {
|
||
|
total_display_span.text( $.i18n._( 'Displaying' ) + ' 0 - 0 ' + $.i18n._( 'of' ) + ' 0 ' + $.i18n._( 'total' ) + '. ' + $.i18n._( 'Selected' ) + ': 0' );
|
||
|
}
|
||
|
|
||
|
if ( !allow_multiple_selection ) {
|
||
|
var unselect_grd_border_div = obj.find( '.unselect-grid-border-div' );
|
||
|
unselect_grd_border_div.addClass( 'single-mode-border' );
|
||
|
|
||
|
}
|
||
|
|
||
|
var unselect_grd_div = obj.find( '.unselect-grid-div' );
|
||
|
|
||
|
unselect_grd_div.bind( 'click', function() {
|
||
|
focus_in_select_grid = false;
|
||
|
|
||
|
} );
|
||
|
|
||
|
var select_grid_div = obj.find( '.select-grid-div' );
|
||
|
var left_and_right_div = obj.find( '.left-and-right-div' );
|
||
|
var unselected_items_label = obj.find( '#unselected_items_label' );
|
||
|
var selected_items_label = obj.find( '#selected_items_label' );
|
||
|
|
||
|
select_grid_div.bind( 'click', function() {
|
||
|
focus_in_select_grid = true;
|
||
|
|
||
|
} );
|
||
|
|
||
|
if ( !allow_multiple_selection ) {
|
||
|
select_grid_div.css( 'display', 'none' );
|
||
|
left_and_right_div.css( 'display', 'none' );
|
||
|
unselected_items_label.text( $.i18n._( 'SELECT AN ITEM' ) );
|
||
|
} else {
|
||
|
select_grid_div.css( 'display', 'inline-block' );
|
||
|
left_and_right_div.css( 'display', 'inline-block' );
|
||
|
unselected_items_label.text( $.i18n._( 'UNSELECTED ITEMS' ) );
|
||
|
selected_items_label.text( $.i18n._( 'SELECTED ITEMS' ) );
|
||
|
}
|
||
|
|
||
|
if ( Global.isSet( o.allow_drag_to_order ) ) {
|
||
|
allow_drag_to_order = o.allow_drag_to_order;
|
||
|
}
|
||
|
|
||
|
//Set UI visibility
|
||
|
if ( o.display_show_all === true ) {
|
||
|
|
||
|
var show_all_check_box = obj.find( '#show_all_check_box' );
|
||
|
|
||
|
show_all_check_box.css( 'display', 'normal' );
|
||
|
obj.find( '#show_all_check_box_label' ).css( 'display', 'normal' );
|
||
|
|
||
|
if ( o.show_all === true ) {
|
||
|
show_all_check_box.prop( 'checked', 'true' );
|
||
|
} else {
|
||
|
show_all_check_box.prop( 'checked', undefined );
|
||
|
}
|
||
|
|
||
|
obj.find( '#show_all_check_box' ).click( function() {
|
||
|
var show_all_checked = false;
|
||
|
if ( show_all_check_box.prop( 'checked' ) === 'checked' || show_all_check_box[0].checked === true ) {
|
||
|
show_all_checked = true;
|
||
|
}
|
||
|
|
||
|
parent_a_combo_box.onShowAll( show_all_checked );
|
||
|
|
||
|
} );
|
||
|
|
||
|
} else {
|
||
|
obj.find( '#show_all_check_box' ).css( 'display', 'none' );
|
||
|
obj.find( '#show_all_check_box_label' ).css( 'display', 'none' );
|
||
|
|
||
|
}
|
||
|
|
||
|
if ( o.comboBox ) {
|
||
|
parent_a_combo_box = o.comboBox;
|
||
|
|
||
|
if ( parent_a_combo_box.allow_multiple_selection ) {
|
||
|
obj.css( 'min-Width', 958 );
|
||
|
} else {
|
||
|
|
||
|
}
|
||
|
} else {
|
||
|
obj.css( 'min-Width', 958 );
|
||
|
}
|
||
|
|
||
|
id = o.id;
|
||
|
|
||
|
obj.attr( 'id', o.id + 'ADropDown' );
|
||
|
|
||
|
if ( o.max_height ) {
|
||
|
max_height = o.max_height;
|
||
|
}
|
||
|
|
||
|
if ( o.static_height ) {
|
||
|
static_height = o.static_height;
|
||
|
max_height = o.static_height;
|
||
|
}
|
||
|
|
||
|
if ( o.key ) {
|
||
|
key = o.key;
|
||
|
}
|
||
|
|
||
|
if ( o.hasOwnProperty( 'show_search_inputs' ) ) {
|
||
|
show_search_inputs = o.show_search_inputs;
|
||
|
}
|
||
|
|
||
|
if ( o.tree_mode ) {
|
||
|
tree_mode = o.tree_mode;
|
||
|
}
|
||
|
|
||
|
if ( o.on_tree_grid_row_select ) {
|
||
|
on_tree_grid_row_select = o.on_tree_grid_row_select;
|
||
|
}
|
||
|
|
||
|
//All options set, NOW we init the label and column settings button
|
||
|
setLabels();
|
||
|
initColumnSettingsBtn();
|
||
|
|
||
|
unselect_grid = obj.find( '.unselect-grid' ); //Must add id for them
|
||
|
|
||
|
unselect_grid.attr( 'id', 'unselect_grid' + '_' + id );
|
||
|
var unselect_grid_data = {};
|
||
|
if ( !tree_mode ) {
|
||
|
unselect_grid_data = {
|
||
|
width: 440,
|
||
|
//maxHeight: default_height,
|
||
|
onCellSelect: a_dropdown_this.onUnSelectGridSelectRow,
|
||
|
ondblClickRow: a_dropdown_this.onUnSelectGridDoubleClick,
|
||
|
multiselect: allow_multiple_selection,
|
||
|
winMultiSelect: allow_multiple_selection,
|
||
|
multiboxonly: allow_multiple_selection
|
||
|
};
|
||
|
} else {
|
||
|
unselect_grid_data = {
|
||
|
|
||
|
width: 440,
|
||
|
//maxHeight: default_height,
|
||
|
sortname: 'id',
|
||
|
onCellSelect: a_dropdown_this.onUnSelectGridSelectRow,
|
||
|
ondblClickRow: a_dropdown_this.onUnSelectGridDoubleClick,
|
||
|
multiselect: allow_multiple_selection,
|
||
|
winMultiSelect: allow_multiple_selection,
|
||
|
gridview: true,
|
||
|
treeGrid: true,
|
||
|
treeGridModel: 'adjacency',
|
||
|
treedatatype: 'local',
|
||
|
ExpandColumn: 'name',
|
||
|
jsonReader: {
|
||
|
repeatitems: false,
|
||
|
root: function( obj ) {
|
||
|
return obj;
|
||
|
},
|
||
|
page: function( obj ) {
|
||
|
return 1;
|
||
|
},
|
||
|
total: function( obj ) {
|
||
|
return 1;
|
||
|
},
|
||
|
records: function( obj ) {
|
||
|
return obj.length;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
if ( max_height ) {
|
||
|
unselect_grid_data.maxHeight = max_height;
|
||
|
}
|
||
|
|
||
|
if ( static_height ) {
|
||
|
unselect_grid_data.static_height = static_height;
|
||
|
}
|
||
|
|
||
|
unselect_grid = new TTGrid( 'unselect_grid' + '_' + id, unselect_grid_data, [] );
|
||
|
|
||
|
select_grid = obj.find( '.select-grid' );
|
||
|
|
||
|
select_grid.attr( 'id', 'select_grid' + '_' + id );
|
||
|
|
||
|
select_grid = new TTGrid( 'select_grid' + '_' + id, {
|
||
|
container_selector: '.select-grid-div',
|
||
|
altRows: true,
|
||
|
data: [],
|
||
|
datatype: 'local',
|
||
|
sortable: false,
|
||
|
width: 440,
|
||
|
//maxHeight: default_height,
|
||
|
rowNum: 10000,
|
||
|
colNames: [],
|
||
|
colModel: [],
|
||
|
ondblClickRow: a_dropdown_this.onSelectGridDoubleClick,
|
||
|
multiselect: allow_multiple_selection,
|
||
|
winMultiSelect: allow_multiple_selection,
|
||
|
multiboxonly: true,
|
||
|
viewrecords: true,
|
||
|
onResizeGrid: resize_grids,
|
||
|
maxHeight: max_height,
|
||
|
static_height: static_height ? static_height : null
|
||
|
|
||
|
}, [] );
|
||
|
|
||
|
var right_arrow = obj.find( '.a-grid-right-arrow' );
|
||
|
var left_arrow = obj.find( '.a-grid-left-arrow' );
|
||
|
|
||
|
right_arrow.attr( 'src', Global.getRealImagePath( 'css/global/widgets/awesomebox/images/nav_right.png' ) );
|
||
|
left_arrow.attr( 'src', Global.getRealImagePath( 'css/global/widgets/awesomebox/images/nav_left.png' ) );
|
||
|
|
||
|
right_arrow.click( function() {
|
||
|
|
||
|
if ( !tree_mode ) {
|
||
|
var grid_selected_id_array = unselect_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( true, grid_selected_id_array );
|
||
|
}
|
||
|
} else {
|
||
|
var selectRow = unselect_grid.grid.jqGrid( 'getGridParam', 'selrow' );
|
||
|
a_dropdown_this.moveItems( true, [selectRow] );
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
left_arrow.click( function() {
|
||
|
var grid_selected_id_array = select_grid.grid.jqGrid( 'getGridParam', 'selarrrow' );
|
||
|
var grid_selected_length = grid_selected_id_array.length;
|
||
|
|
||
|
if ( grid_selected_length > 0 ) {
|
||
|
a_dropdown_this.moveItems( false, grid_selected_id_array );
|
||
|
}
|
||
|
|
||
|
} );
|
||
|
|
||
|
//Set Action Buttons
|
||
|
|
||
|
//UnSelect grid
|
||
|
var unselect_all_btn = obj.find( '#unselect_all_btn' );
|
||
|
|
||
|
unselect_all_btn.click( function() {
|
||
|
selectAllInGrid( unselect_grid );
|
||
|
} );
|
||
|
|
||
|
var un_deselect_all_Btn = obj.find( '#unDeselectAllBtn' );
|
||
|
|
||
|
un_deselect_all_Btn.click( function() {
|
||
|
selectAllInGrid( unselect_grid, true );
|
||
|
|
||
|
} );
|
||
|
|
||
|
var un_clear_btn = obj.find( '#un_clear_btn' );
|
||
|
|
||
|
un_clear_btn.click( function() {
|
||
|
cleanAllInGrid( unselect_grid, true );
|
||
|
|
||
|
} );
|
||
|
|
||
|
if ( tree_mode || !allow_multiple_selection ) {
|
||
|
unselect_all_btn.css( 'display', 'none' );
|
||
|
un_deselect_all_Btn.css( 'display', 'none' );
|
||
|
un_clear_btn.css( 'display', 'none' );
|
||
|
} else {
|
||
|
unselect_all_btn.css( 'display', 'inline-block' );
|
||
|
un_deselect_all_Btn.css( 'display', 'inline-block' );
|
||
|
un_clear_btn.css( 'display', 'inline-block' );
|
||
|
}
|
||
|
|
||
|
//Select Grid
|
||
|
var select_all_btn = obj.find( '#select_all_btn' );
|
||
|
|
||
|
select_all_btn.click( function() {
|
||
|
selectAllInGrid( select_grid );
|
||
|
|
||
|
} );
|
||
|
|
||
|
var delete_all_btn = obj.find( '#delete_all_btn' );
|
||
|
|
||
|
delete_all_btn.click( function() {
|
||
|
selectAllInGrid( select_grid, true );
|
||
|
|
||
|
} );
|
||
|
|
||
|
var clear_btn = obj.find( '#clear_btn' );
|
||
|
|
||
|
clear_btn.click( function() {
|
||
|
cleanAllInGrid( select_grid );
|
||
|
} );
|
||
|
|
||
|
var select_grid_close_btn = obj.find( '#select_grid_close_btn' );
|
||
|
var unselect_grid_close_btn = obj.find( '#unselect_grid_close_btn' );
|
||
|
|
||
|
if ( allow_multiple_selection ) {
|
||
|
unselect_grid_close_btn.css( 'display', 'none' );
|
||
|
} else {
|
||
|
unselect_grid_close_btn.css( 'display', 'inline-block' );
|
||
|
unselect_grid_close_btn.click( function() {
|
||
|
a_dropdown_this.trigger( 'close', [a_dropdown_this] );
|
||
|
} );
|
||
|
}
|
||
|
if ( Global.isSet( o.display_close_btn ) && !o.display_close_btn ) {
|
||
|
select_grid_close_btn.css( 'display', 'none' );
|
||
|
} else {
|
||
|
select_grid_close_btn.css( 'display', 'inline-block' );
|
||
|
select_grid_close_btn.click( function() {
|
||
|
a_dropdown_this.trigger( 'close', [a_dropdown_this] );
|
||
|
} );
|
||
|
}
|
||
|
|
||
|
//Move all records from target grid to another
|
||
|
function cleanAllInGrid( target, left_to_right ) {
|
||
|
|
||
|
a_dropdown_this.removeNoResultCover( 'unselect_grid' );
|
||
|
a_dropdown_this.removeNoResultCover( 'select_grid' );
|
||
|
|
||
|
isChanged = true;
|
||
|
var finalArray = [];
|
||
|
if ( left_to_right ) {
|
||
|
var source_grid = unselect_grid;
|
||
|
var target_grid = select_grid;
|
||
|
var source_data = unselect_grid.getData();
|
||
|
var target_data = select_grid.getData();
|
||
|
} else {
|
||
|
source_grid = select_grid;
|
||
|
target_grid = unselect_grid;
|
||
|
source_data = select_grid.getData();
|
||
|
target_data = unselect_grid.getData();
|
||
|
}
|
||
|
|
||
|
if ( a_dropdown_this.isLocalSearchMode() ) {
|
||
|
//Only move visible items while on local search mode.
|
||
|
var [keep_items, move_items] = _.partition( source_data, ( item ) => {
|
||
|
return item.hidden;
|
||
|
} );
|
||
|
|
||
|
source_grid.setData( keep_items );
|
||
|
target_grid.setData( target_data.concat( move_items ) );
|
||
|
|
||
|
a_dropdown_this.localSearch( 'unselect', unselect_grid_search_map, move_items );
|
||
|
a_dropdown_this.localSearch( 'select', select_grid_search_map, move_items );
|
||
|
}
|
||
|
else if ( tree_mode ) {
|
||
|
source_grid.clearGridData();
|
||
|
source_grid.grid.trigger( 'reloadGrid' );
|
||
|
a_dropdown_this.setTotalDisplaySpan();
|
||
|
a_dropdown_this.getUnSelectGrid().grid.find( 'tr' ).removeClass( 'selected-tree-cell' );
|
||
|
} else {
|
||
|
finalArray = target_data.concat( source_data );
|
||
|
target_grid.setData( finalArray );
|
||
|
|
||
|
//#2721 - This helps fixes a bug where if you expand a awesomebox (ie: Edit Policy Group, Absence Policys), on right-hand side click clear search. Click Move All on right-hand side. Collapse, expand, click move All left-hand side. Both sides are now blank.
|
||
|
if ( left_to_right ) {
|
||
|
real_selected_items = finalArray; // Fixes #2721
|
||
|
} else {
|
||
|
real_selected_items = [];
|
||
|
}
|
||
|
|
||
|
source_grid.clearGridData();
|
||
|
source_grid.grid.trigger( 'reloadGrid' );
|
||
|
a_dropdown_this.setTotalDisplaySpan();
|
||
|
}
|
||
|
if ( !parent_a_combo_box ) {
|
||
|
a_dropdown_this.trigger( 'formItemChange', [a_dropdown_this] );
|
||
|
}
|
||
|
|
||
|
a_dropdown_this.setSelectGridDragAble();
|
||
|
a_dropdown_this.setUnSelectGridDragAble();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
return this;
|
||
|
|
||
|
};
|
||
|
|
||
|
$.fn.ADropDown.defaults = {};
|
||
|
$.fn.ADropDown.html_template = `
|
||
|
<div class="a-dropdown">
|
||
|
<div class="unselect-grid-div">
|
||
|
<div class="unselect-grid-title-bar">
|
||
|
<div class="edit-columnIcon-div">
|
||
|
<img class="edit_column_icon">
|
||
|
</div>
|
||
|
<span id="unSelectedItemsLabel" class="a-grid-title"></span>
|
||
|
<button id="unselect_grid_close_btn" class="a-grid-close-button"></button>
|
||
|
<button id="unDeselectAllBtn" class="a-grid-button"></button>
|
||
|
<button id="unselect_all_btn" class="a-grid-button"></button>
|
||
|
<button id="un_clear_btn" class="a-grid-button"></button>
|
||
|
<span id="show_all_check_box_label" class="a-grid-checkbox-label"></span>
|
||
|
<input id="show_all_check_box" type="checkbox" class="a-grid-checkbox" value="Show All">
|
||
|
</div>
|
||
|
<div class="unselect-grid-border-div">
|
||
|
<div class="unselect-grid-search-div"></div>
|
||
|
<table class="a-grid unselect-grid" id="unselect_grid"></table>
|
||
|
</div>
|
||
|
<div class="unselect-grid-bottom-bar">
|
||
|
<div class="left-buttons-div">
|
||
|
<a class="double-left-arrow" title="Start"></a>
|
||
|
<span class="paging-2-span start"></span>
|
||
|
<a class="left-arrow"></a>
|
||
|
<span class="paging-2-span last"></span>
|
||
|
</div>
|
||
|
<span class="total-number-span"></span>
|
||
|
<div class="right-buttons-div">
|
||
|
<span class="paging-2-span next"></span>
|
||
|
<a class="right-arrow"></a>
|
||
|
<span class="paging-2-span end"></span>
|
||
|
<a class="double-right-arrow"></a>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="left-and-right-div">
|
||
|
<div class="right-arrow-div"><img class="a-grid-right-arrow"></div>
|
||
|
<div class="left-arrow-div"><img class="a-grid-left-arrow"></div>
|
||
|
</div>
|
||
|
<div class="select-grid-div">
|
||
|
<div class="select-grid-title-bar">
|
||
|
<span id="selectedItemsLabel" class="a-grid-title"> SELECTED ITEMS</span>
|
||
|
<button id="select_grid_close_btn" class="a-grid-close-button"></button>
|
||
|
<button id="delete_all_btn" class="a-grid-button">Deselect All</button>
|
||
|
<button id="select_all_btn" class="a-grid-button">Select All</button>
|
||
|
<button id="clear_btn" class="a-grid-button">Move All</button>
|
||
|
</div>
|
||
|
<div class="select-grid-border-div">
|
||
|
<div class="select-grid-search-div"></div>
|
||
|
<table class="a-grid select-grid" id="select_grid"></table>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
`;
|
||
|
|
||
|
} )( jQuery );
|