Created
November 23, 2016 14:57
-
-
Save level420/1ca8f4d5b40c9c11c4088965eae57375 to your computer and use it in GitHub Desktop.
Optimizing header updates in qx.ui.table.Table. See http://stackoverflow.com/questions/40679293/qooxdoo-table-tooltips-performance/40716856
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
qx.Class.define("qx.ui.table.pane.OptimizedHeader", | |
{ | |
extend : qx.ui.table.pane.Header, | |
members : { | |
// overridden | |
_updateContent : function(completeUpdate) { | |
var children = this._getChildren(); | |
var table = this.getTable(); | |
if(completeUpdate && children.length > 0 && table.getBlockHeaderUpdate && table.getBlockHeaderUpdate()) { | |
// this.error("_updateContent: BLOCKED"); | |
return; | |
} | |
this.base(arguments, completeUpdate); | |
} | |
} | |
}); | |
qx.Class.define("qx.ui.table.OptimizedTable", | |
{ | |
extend : qx.ui.table.Table, | |
construct : function(tableModel, custom) { | |
if(!custom) { | |
custom = {}; | |
} | |
if(!qx.lang.Type.isFunction(custom.tablePaneHeader)) { | |
custom.tablePaneHeader = function(obj) { return new qx.ui.table.pane.OptimizedHeader(obj); }; | |
} | |
this.base(arguments, tableModel, custom) | |
}, | |
properties : | |
{ | |
/** | |
* block pane header updates | |
*/ | |
blockHeaderUpdate : { | |
check : "Boolean", | |
init : false, | |
apply : "_applyBlockHeaderUpdate" | |
} | |
}, | |
members : | |
{ | |
//applyer | |
_applyBlockHeaderUpdate : function(value, old) { | |
if(value === false) { | |
this.getTableColumnModel().fireDataEvent("orderChanged"); | |
} | |
}, | |
} | |
}); | |
var tableHeaders = [ | |
"R-Nr", "Rech-Dat", "Sammelr", "Kunden-Nr", "R-Empf", "Art", "Auf-Nr", "Auf-Dat", "Anz-Pos.", "Wert Brutto", | |
"Wert netto", "Zu/Ab", "R-Zuschl.", "Nebenkosten", "Skonto", "Storniert", "Ihre Zeichen", "Unsere Zeichen", | |
"Zahlart", "Sofort", "Stat-Upd", "Bonus", "MwSt-frei", "MwSt-Betrag", "Brutto-Pr", "Rabatt-Dr", "Rech-Addr-Nr", | |
"Rechnungsadresse", "Zahlungsfreigabe", "Ertrag", "IBAN", "BIC", "Lief-Bed", "Lief-Text", "Lief-Termin", | |
"Lief-Addr-Nr", "Lieferadresse", "Zahl-Bed", "Zahl-Text", "Filiale", "Filiale Name", "Rech-KZ", "Rech-Bez", | |
"Sachb-Nr", "Sachb-Kurzz", "Sachb-Name", "Vertr-Weg", "Vertr-Bez", "Form-Nr", "Form-Bez" | |
]; | |
var tableIDs = [ | |
"j_rnr", "rk_dat", "rk_sammel", "j_kunr", "rk_rekunr", "rk_aufart", "j_aufnr", "rk_akdat", "rk_anzpos", | |
"rk_wertBrutto", "rk_wertNetto", "rk_srabatt", "rk_klrzu", "rk_fakost", "rk_skbetrag", "rk_storno", | |
"rk_izei", "rk_uzei", "rk_zart", "rk_sofort", "rk_update", "rk_bonus", "rk_mwstfrei", "z_stbetrag", | |
"rk_brunet", "rk_rabdr", "rk_jrlfdnr", "rech_name", "j_gsnr", "z_angwert", "j_kto", "j_blz", | |
"j_lbnr", "lb_text", "rk_ltermin", "rk_jllfdnr", "lief_name", "j_zab", "zb_text", "j_filial", "fa1_name", | |
"j_sammelkz", "skz_bez", "j_minr", "mi_kurz", "ad_name1", "j_vwnr", "vw_bez", "j_fonr", "fo_bez" | |
]; | |
var toolTips = [ | |
"Rechnungsnummer", "Rechnungsdatum", "Sammelrechnung", "Kundennummer", "Rechnungsempfänger", "Auftragsart", | |
"Auftragsnummer", "Auftragsdatum", "Anzahl Positionen", "Rechnungswert brutto", "Rechnungswert netto", | |
"Zu- und Abschlag in %", "Rechnungs- bzw. Kleinrechnungszuschlag", "", "Skontobetrag", "Rechnung storniert", | |
"", "", "", "Sofortrechnung", "Statistikupdate", "Bonusfähig", "Mehrwertsteuerfrei", "Mehrwertsteuerbetrag", | |
"Bruttopreise", "Rabattdruck", "Rechnungsadresse", "Rechnungsadresse", "Zahlungsfreigabe", "", "", "", | |
"Lieferbedingung Schlüssel", "Lieferbedingung Text", "Liefertermin", "Lieferadresse", "Lieferadresse", | |
"Zahlungsbedingung Schlüssel", "Zahlungsbedingung Text", "Filialnummer", "Filialname", "Rechnungskennzeichen", | |
"Rechnungskennzeichen Bezeichnung", "Sachbearbeiter Mitarbeiternummer", "Sachbearbeiter Kurzzeichen", | |
"Sachbearbeiter Name 1", "Vertriebsweg", "Vertriebsweg Bezeichnung", "Formularnummer", "Formularbezeichnung" | |
]; | |
var tableModel = new qx.ui.table.model.Simple(); | |
tableModel.setColumns(tableHeaders, tableIDs); | |
var table = new qx.ui.table.OptimizedTable(tableModel); | |
var tableColumnModel = table.getTableColumnModel(); | |
table.setBlockHeaderUpdate(true); | |
// Setzen der Spalteneigenschaften | |
for (var i = 0; i < toolTips["length"]; i++) { | |
var cellHeader = new qx.ui.table.headerrenderer.Default(); | |
cellHeader.setToolTip(toolTips[i]); | |
tableColumnModel.setHeaderCellRenderer( | |
i, | |
cellHeader | |
); | |
} | |
table.setBlockHeaderUpdate(false); | |
var doc = this.getRoot(); | |
doc.add(table, | |
{ | |
left : 10, | |
top : 10 | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment