mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-25 17:33:49 +01:00
150 lines
3.2 KiB
TypeScript
150 lines
3.2 KiB
TypeScript
/**
|
|
* EGroupware eTemplate2 - Class which contains a factory method for rows
|
|
*
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @package etemplate
|
|
* @subpackage dataview
|
|
* @link https://www.egroupware.org
|
|
* @author Andreas Stöckel
|
|
* @copyright EGroupware GmbH 2011-2021
|
|
*/
|
|
|
|
/*egw:uses
|
|
/vendor/bower-asset/jquery/dist/jquery.js;
|
|
et2_core_inheritance;
|
|
et2_core_interfaces;
|
|
et2_core_arrayMgr;
|
|
et2_core_widget;
|
|
*/
|
|
|
|
/**
|
|
* The row provider contains prototypes (full clonable dom-trees)
|
|
* for all registered row types.
|
|
*/
|
|
export class et2_dataview_rowProvider
|
|
{
|
|
private _outerId: any;
|
|
private _columnIds: any;
|
|
private _prototypes: {};
|
|
private _template: null;
|
|
private _mgrs: null;
|
|
private _rootWidget: null;
|
|
/**
|
|
*
|
|
* @param _outerId
|
|
* @param _columnIds
|
|
*/
|
|
constructor( _outerId, _columnIds)
|
|
{
|
|
// Copy the given parameters
|
|
this._outerId = _outerId;
|
|
this._columnIds = _columnIds;
|
|
this._prototypes = {};
|
|
|
|
this._template = null;
|
|
this._mgrs = null;
|
|
this._rootWidget = null;
|
|
|
|
// Create the default row "prototypes"
|
|
this._createFullRowPrototype();
|
|
this._createDefaultPrototype();
|
|
this._createEmptyPrototype();
|
|
this._createLoadingPrototype();
|
|
}
|
|
|
|
public destroy()
|
|
{
|
|
this._template = null;
|
|
this._mgrs = null;
|
|
this._rootWidget = null;
|
|
this._prototypes = {};
|
|
this._columnIds = [];
|
|
}
|
|
|
|
public getColumnCount()
|
|
{
|
|
return this._columnIds.length;
|
|
}
|
|
|
|
/**
|
|
* Returns a clone of the prototype with the given name. If the generator
|
|
* callback function is given, this function is called if the prototype
|
|
* does not yet registered.
|
|
*
|
|
* @param {string} _name
|
|
* @param {function} _generator
|
|
* @param {object} _context
|
|
*/
|
|
getPrototype( _name : string, _generator? : Function, _context? : any)
|
|
{
|
|
if (typeof this._prototypes[_name] == "undefined")
|
|
{
|
|
if (typeof _generator != "undefined")
|
|
{
|
|
this._prototypes[_name] = _generator.call(_context, this._outerId,
|
|
this._columnIds);
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return this._prototypes[_name].clone();
|
|
}
|
|
|
|
|
|
/* ---- PRIVATE FUNCTIONS ---- */
|
|
|
|
|
|
_createFullRowPrototype( )
|
|
{
|
|
var tr = jQuery(document.createElement("tr"));
|
|
var td = jQuery(document.createElement("td"))
|
|
.addClass(this._outerId + "_td_fullRow")
|
|
.attr("colspan", this._columnIds.length)
|
|
.appendTo(tr);
|
|
var div = jQuery(document.createElement("div"))
|
|
.addClass(this._outerId + "_div_fullRow")
|
|
.appendTo(td);
|
|
|
|
this._prototypes["fullRow"] = tr;
|
|
}
|
|
|
|
_createDefaultPrototype( )
|
|
{
|
|
var tr = jQuery(document.createElement("tr"));
|
|
|
|
// Append a td for each column
|
|
for (var column of this._columnIds)
|
|
{
|
|
if(!column) continue;
|
|
|
|
var td = jQuery(document.createElement("td"))
|
|
.addClass(this._outerId + "_td_" + column)
|
|
.appendTo(tr);
|
|
var div = jQuery(document.createElement("div"))
|
|
.addClass(this._outerId + "_div_" + column)
|
|
.addClass("innerContainer")
|
|
.appendTo(td);
|
|
}
|
|
|
|
this._prototypes["default"] = tr;
|
|
}
|
|
|
|
_createEmptyPrototype( )
|
|
{
|
|
this._prototypes["empty"] = jQuery(document.createElement("tr"));
|
|
}
|
|
|
|
_createLoadingPrototype( )
|
|
{
|
|
var fullRow = this.getPrototype("fullRow");
|
|
jQuery("div", fullRow).addClass("loading");
|
|
|
|
this._prototypes["loading"] = fullRow;
|
|
}
|
|
|
|
}
|
|
|