%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/main.ui.grid/templates/tilegrid/js/ |
| Current File : //home/bitrix/www/bitrix/components/bitrix/main.ui.grid/templates/tilegrid/js/useroptions.js |
;(function() {
'use strict';
BX.namespace('BX.Main.TileGrid');
/**
* BX.Main.TileGrid.UserOptions
* @param {BX.Main.TileGrid} parent
* @param {Object} userOptions
* @param {Object} userOptionsActions
* @param {String} url
* @constructor
*/
BX.Main.TileGrid.UserOptions = function(parent, userOptions, userOptionsActions, url)
{
this.options = null;
this.actions = null;
this.parent = null;
this.url = null;
this.init(parent, userOptions, userOptionsActions, url);
};
BX.Main.TileGrid.UserOptions.prototype = {
init: function(parent, userOptions, userOptionsActions, url)
{
this.url = url;
this.parent = parent;
try {
this.options = eval(userOptions);
} catch(err) {
console.warn('BX.Main.TileGrid.UserOptions.init: Failed parse user options json string');
}
try {
this.actions = eval(userOptionsActions);
} catch(err) {
console.warn('BX.Main.TileGrid.UserOptions.init: Failed parse user options actions json string');
}
},
getCurrentViewName: function()
{
var options = this.getOptions();
return 'current_view' in options ? options.current_view : null;
},
getViewsList: function()
{
var options = this.getOptions();
return 'views' in options ? options.views : {};
},
getCurrentOptions: function()
{
var name = this.getCurrentViewName();
var views = this.getViewsList();
var result = null;
if (name in views)
{
result = views[name];
}
if (!BX.type.isPlainObject(result))
{
result = {};
}
return result;
},
getUrl: function(action)
{
return BX.util.add_url_param(this.url, {
GRID_ID: this.parent.getId(),
action: action
});
},
getOptions: function()
{
return this.options || {};
},
getActions: function()
{
return this.actions;
},
getAction: function(name)
{
var action = null;
try {
action = this.getActions()[name];
} catch (err) {
action = null;
}
return action;
},
update: function(newOptions)
{
this.options = newOptions;
},
setColumns: function(columns, callback)
{
var options = this.getCurrentOptions();
if (BX.type.isPlainObject(options))
{
options.columns = columns.join(',');
this.save(this.getAction('GRID_SET_COLUMNS'), {columns: options.columns}, callback);
}
return this;
},
setColumnsNames: function(columns, callback)
{
var options = {view_id: 'default'};
if (BX.type.isPlainObject(options))
{
options.custom_names = columns;
this.save(this.getAction('SET_CUSTOM_NAMES'), options, callback);
}
return this;
},
setColumnSizes: function(sizes, expand)
{
this.save(this.getAction('GRID_SET_COLUMN_SIZES'), {sizes: sizes, expand: expand});
},
reset: function(forAll, callback)
{
var data = {};
if (!!forAll)
{
data = {
view_id: 'default',
set_default_settings: 'Y',
delete_user_settings: 'Y',
view_settings: this.getCurrentOptions()
};
}
this.save(this.getAction('GRID_RESET'), data, callback);
},
setSort: function(by, order, callback)
{
if (by && order)
{
this.save(this.getAction('GRID_SET_SORT'), {by: by, order: order}, callback);
}
return this;
},
setPageSize: function(pageSize, callback)
{
if (BX.type.isNumber(parseInt(pageSize)))
{
this.save(this.getAction('GRID_SET_PAGE_SIZE'), {pageSize: pageSize}, callback);
}
},
setExpandedRows: function(ids, callback)
{
BX.type.isArray(ids) && this.save(this.getAction('GRID_SET_EXPANDED_ROWS'), {ids: ids}, callback);
},
setCollapsedGroups: function(ids, callback)
{
BX.type.isArray(ids) && this.save(this.getAction('GRID_SET_COLLAPSED_GROUPS'), {ids: ids}, callback);
},
resetExpandedRows: function()
{
this.save(this.getAction('GRID_RESET_EXPANDED_ROWS'), {});
},
saveForAll: function(callback)
{
this.save(
this.getAction('GRID_SAVE_SETTINGS'),
{
view_id: 'default',
set_default_settings: 'Y',
delete_user_settings: 'Y',
view_settings: this.getCurrentOptions()
},
callback
);
},
batch: function(data, callback)
{
this.save(this.getAction('GRID_SAVE_BATH'), {bath: data}, callback);
},
save: function(action, data, callback)
{
var self = this;
BX.ajax.post(
this.getUrl(action),
data,
function(res)
{
try {
res = JSON.parse(res);
if (!res.error)
{
self.update(res);
if (BX.type.isFunction(callback))
{
callback(res);
}
}
} catch (err) {}
}
);
}
};
})();