mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
Widgets: modify remove functions for refreshing widgets
renamed parameter from "temp" to "refreshing" & updated docs
This commit is contained in:
parent
b9e028d8ed
commit
f1961efe8f
@ -139,7 +139,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li>The <code>remove</code> block (added v2.4):
|
<li>The <code>remove</code> block (added v2.4):
|
||||||
<ul>
|
<ul>
|
||||||
<li>In <span class="version">v2.18.5</span> the <code>temp</code> parameter was added:
|
<li>In <span class="version">v2.18.5</span> the <code>refreshing</code> parameter was added:
|
||||||
<ul>
|
<ul>
|
||||||
<li>It is a parameter used to indicate that the <a href="index.html#refreshwidgets"><code>refreshWidgets</code></a> method was triggered.</li>
|
<li>It is a parameter used to indicate that the <a href="index.html#refreshwidgets"><code>refreshWidgets</code></a> method was triggered.</li>
|
||||||
<li>When widgets are refreshed, the <code>remove</code> method is called, then the widget <code>init</code> function is immediately called to reapply the widget.</li>
|
<li>When widgets are refreshed, the <code>remove</code> method is called, then the widget <code>init</code> function is immediately called to reapply the widget.</li>
|
||||||
@ -187,10 +187,10 @@ $.tablesorter.addWidget({
|
|||||||
// function above otherwise initFlag is undefined
|
// function above otherwise initFlag is undefined
|
||||||
// * see the saveSort widget for a full example *
|
// * see the saveSort widget for a full example *
|
||||||
},
|
},
|
||||||
remove: function(table, config, widgetOptions, temp){
|
remove: function(table, config, widgetOptions, refreshing){
|
||||||
// do what ever needs to be done to remove stuff added by your widget
|
// do what ever needs to be done to remove stuff added by your widget
|
||||||
// unbind events, restore hidden content, etc.
|
// unbind events, restore hidden content, etc.
|
||||||
// temp flag is true when the refreshWidgets method is triggered, meaning
|
// refreshing flag is true when the refreshWidgets method is triggered, meaning
|
||||||
// the widget will be removed, then immediately reapplied
|
// the widget will be removed, then immediately reapplied
|
||||||
}
|
}
|
||||||
});</pre>
|
});</pre>
|
||||||
|
@ -4568,7 +4568,7 @@ $("table").trigger("destroy", [false, callback]);</pre></div>
|
|||||||
|
|
||||||
<tr id="refreshwidgets">
|
<tr id="refreshwidgets">
|
||||||
<td><a href="#" class="permalink">refreshWidgets</a></td>
|
<td><a href="#" class="permalink">refreshWidgets</a></td>
|
||||||
<td>Refresh the currently applied widgets. Depending on the options, it will completely remove all widgets, then re-initialize the current widgets or just remove all non-current widgets (v2.4).
|
<td>Refresh the currently applied widgets. Depending on the options, it will completely remove all widgets, then re-initialize the current widgets or just remove all non-current widgets (v2.4; <span class="verison updated">v2.18.5</span>).
|
||||||
<div class="collapsible"><br>
|
<div class="collapsible"><br>
|
||||||
Trigger this method using either of the following methods (they are equivalent):
|
Trigger this method using either of the following methods (they are equivalent):
|
||||||
<pre class="prettyprint lang-js">// trigger a refresh widget event
|
<pre class="prettyprint lang-js">// trigger a refresh widget event
|
||||||
@ -5946,7 +5946,7 @@ $.tablesorter.isValueInArray(2, sortList);</pre>
|
|||||||
<td>This function allows the adding of custom widget scripts to the tablesorter core (<span class="version updated">v2.18.5</span>).
|
<td>This function allows the adding of custom widget scripts to the tablesorter core (<span class="version updated">v2.18.5</span>).
|
||||||
<div class="collapsible">
|
<div class="collapsible">
|
||||||
<br>
|
<br>
|
||||||
In <span class="version updated">v2.18.5</span>, a <code>"temp"</code> parameter was added to the <code>remove</code> widget function to indicate that the widget will be refreshed so it will only be temporarily removed (see <a href="example-widgets.html">this demo</a> for more details).<br>
|
In <span class="version updated">v2.18.5</span>, a <code>"refreshing"</code> parameter was added to the <code>remove</code> widget function to indicate that the widget will be refreshed so it will only be temporarily removed (see <a href="example-widgets.html">this demo</a> for more details).<br>
|
||||||
<br>
|
<br>
|
||||||
Access it as follows:
|
Access it as follows:
|
||||||
<pre class="prettyprint lang-js">$.tablesorter.addWidget(myWidget);</pre>
|
<pre class="prettyprint lang-js">$.tablesorter.addWidget(myWidget);</pre>
|
||||||
@ -6002,7 +6002,7 @@ widget.format( table, table.config, table.config.widgetOptions );</pre>
|
|||||||
<td>This function removes, then reapplies all currently selected widgets on a table (v2.4; <span class="version updated">v2.18.5</span>).
|
<td>This function removes, then reapplies all currently selected widgets on a table (v2.4; <span class="version updated">v2.18.5</span>).
|
||||||
<div class="collapsible">
|
<div class="collapsible">
|
||||||
<br>
|
<br>
|
||||||
In <span class="version updated">v2.18.5</span>, this function was modified to internally use the <a href="#function-removewidget">removeWidget</a> function & a <a href="#refreshcomplete"><code>"refreshComplete"</code></a> event is now triggered after the refresh is complete.<br>
|
In <span class="version updated">v2.18.5</span>, this function was modified to internally use the <a href="#function-removewidget">removeWidget</a> function & a <a href="#refreshcomplete"><code>"refreshComplete"</code></a> event is now triggered upon completion.<br>
|
||||||
<br>
|
<br>
|
||||||
Use it as follows:
|
Use it as follows:
|
||||||
<pre class="prettyprint lang-js">$.tablesorter.refreshWidgets( table, doAll, dontapply );</pre>
|
<pre class="prettyprint lang-js">$.tablesorter.refreshWidgets( table, doAll, dontapply );</pre>
|
||||||
@ -6012,6 +6012,7 @@ widget.format( table, table.config, table.config.widgetOptions );</pre>
|
|||||||
<li><code>dontapply</code> - optional, boolean flag.</li>
|
<li><code>dontapply</code> - optional, boolean flag.</li>
|
||||||
</ul>
|
</ul>
|
||||||
The <code>doAll</code> flag is set to <code>true</code> if all widgets contained with the global <a href="#variable-widgets"><code>$.tablesorter.widgets</code></a> array are to be removed.<br>
|
The <code>doAll</code> flag is set to <code>true</code> if all widgets contained with the global <a href="#variable-widgets"><code>$.tablesorter.widgets</code></a> array are to be removed.<br>
|
||||||
|
When <code>doAll</code> is <code>false</code>, only widgets <em>not contained</em> within the <code>config.widget</code> option are removed; then if the <code>dontapply</code> flag is <code>false</code>, the widgets named in that option are reapplied (without removing them).<br>
|
||||||
<br>
|
<br>
|
||||||
This function is called when the <a href="#refreshwidgets">refreshWidgets</a> method is triggered.
|
This function is called when the <a href="#refreshwidgets">refreshWidgets</a> method is triggered.
|
||||||
</div>
|
</div>
|
||||||
@ -6023,12 +6024,13 @@ widget.format( table, table.config, table.config.widgetOptions );</pre>
|
|||||||
<td>This function removes selected widgets (<span class="version">v2.18.5</span>).
|
<td>This function removes selected widgets (<span class="version">v2.18.5</span>).
|
||||||
<div class="collapsible"><br>
|
<div class="collapsible"><br>
|
||||||
Use it as follows:
|
Use it as follows:
|
||||||
<pre class="prettyprint lang-js">$.tablesorter.removeWidget( table, names );</pre>
|
<pre class="prettyprint lang-js">$.tablesorter.removeWidget( table, names, refreshing );</pre>
|
||||||
<ul>
|
<ul>
|
||||||
<li><code>table</code> - table DOM element (or jQuery object) of table.</li>
|
<li><code>table</code> - table DOM element (or jQuery object) of table.</li>
|
||||||
<li><code>names</code> - string (space or comma separated widget names) or an array of widget names.</li>
|
<li><code>names</code> - string (space or comma separated widget names), an array of widget names, or if <code>true</code> all installed widgets are removed.</li>
|
||||||
|
<li><code>refreshing</code> - if <code>true</code>, the widget name will not be removed from the <a href="#widgets"><code>widgets</code></a> option; any other setting and the name will be removed.</li>
|
||||||
</ul>
|
</ul>
|
||||||
This function is used by the <a href="#function-refreshwidgets">refreshWidgets</a> function.
|
This function is used by the <a href="#function-refreshwidgets">refreshWidgets</a> function (<span class="version">v2.18.5</span>).
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -862,7 +862,7 @@
|
|||||||
.bind("updateAll" + c.namespace, function(e, resort, callback){
|
.bind("updateAll" + c.namespace, function(e, resort, callback){
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
table.isUpdating = true;
|
table.isUpdating = true;
|
||||||
ts.refreshWidgets(table, true, true, true);
|
ts.refreshWidgets(table, true, true);
|
||||||
ts.restoreHeaders(table);
|
ts.restoreHeaders(table);
|
||||||
buildHeaders(table);
|
buildHeaders(table);
|
||||||
ts.bindEvents(table, c.$headers, true);
|
ts.bindEvents(table, c.$headers, true);
|
||||||
@ -1008,9 +1008,9 @@
|
|||||||
// apply widgets
|
// apply widgets
|
||||||
ts.applyWidget(table, init);
|
ts.applyWidget(table, init);
|
||||||
})
|
})
|
||||||
.bind("refreshWidgets" + c.namespace, function(e, all, dontapply, temp){
|
.bind("refreshWidgets" + c.namespace, function(e, all, dontapply){
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
ts.refreshWidgets(table, all, dontapply, temp);
|
ts.refreshWidgets(table, all, dontapply);
|
||||||
})
|
})
|
||||||
.bind("destroy" + c.namespace, function(e, c, cb){
|
.bind("destroy" + c.namespace, function(e, c, cb){
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@ -1018,7 +1018,7 @@
|
|||||||
})
|
})
|
||||||
.bind("resetToLoadState" + c.namespace, function(){
|
.bind("resetToLoadState" + c.namespace, function(){
|
||||||
// remove all widgets
|
// remove all widgets
|
||||||
ts.refreshWidgets(table, true, true);
|
ts.removeWidget(table, true, false);
|
||||||
// restore original settings; this clears out current settings, but does not clear
|
// restore original settings; this clears out current settings, but does not clear
|
||||||
// values saved to storage.
|
// values saved to storage.
|
||||||
c = $.extend(true, ts.defaults, c.originalSettings);
|
c = $.extend(true, ts.defaults, c.originalSettings);
|
||||||
@ -1366,7 +1366,7 @@
|
|||||||
table = $(table)[0];
|
table = $(table)[0];
|
||||||
if (!table.hasInitialized) { return; }
|
if (!table.hasInitialized) { return; }
|
||||||
// remove all widgets
|
// remove all widgets
|
||||||
ts.refreshWidgets(table, true, true);
|
ts.removeWidget(table, true, false);
|
||||||
var $t = $(table), c = table.config,
|
var $t = $(table), c = table.config,
|
||||||
$h = $t.find('thead:first'),
|
$h = $t.find('thead:first'),
|
||||||
$r = $h.find('tr.' + ts.css.headerRow).removeClass(ts.css.headerRow + ' ' + c.cssHeaderRow),
|
$r = $h.find('tr.' + ts.css.headerRow).removeClass(ts.css.headerRow + ' ' + c.cssHeaderRow),
|
||||||
@ -1675,11 +1675,21 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ts.removeWidget = function(table, name, refresh, temp){
|
ts.removeWidget = function(table, name, refreshing){
|
||||||
table = $(table)[0];
|
table = $(table)[0];
|
||||||
|
// if name === true, add all widgets from $.tablesorter.widgets
|
||||||
|
if (name === true) {
|
||||||
|
name = [];
|
||||||
|
$.each( ts.widgets, function(i, w){
|
||||||
|
if (w && w.id) {
|
||||||
|
name.push( w.id );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
// name can be either an array of widgets names,
|
// name can be either an array of widgets names,
|
||||||
// or a space/comma separated list of widget names
|
// or a space/comma separated list of widget names
|
||||||
name = ( $.isArray(name) ? name.join(',') : name || '' ).toLowerCase().split( /[\s,]+/ );
|
name = ( $.isArray(name) ? name.join(',') : name || '' ).toLowerCase().split( /[\s,]+/ );
|
||||||
|
}
|
||||||
var i, widget, indx,
|
var i, widget, indx,
|
||||||
c = table.config,
|
c = table.config,
|
||||||
len = name.length;
|
len = name.length;
|
||||||
@ -1688,17 +1698,17 @@
|
|||||||
indx = $.inArray( name[i], c.widgets );
|
indx = $.inArray( name[i], c.widgets );
|
||||||
if ( widget && 'remove' in widget ) {
|
if ( widget && 'remove' in widget ) {
|
||||||
if (c.debug && indx >= 0) { log( 'Removing "' + name[i] + '" widget' ); }
|
if (c.debug && indx >= 0) { log( 'Removing "' + name[i] + '" widget' ); }
|
||||||
widget.remove(table, c, c.widgetOptions, temp);
|
widget.remove(table, c, c.widgetOptions, refreshing);
|
||||||
c.widgetInit[name[i]] = false;
|
c.widgetInit[name[i]] = false;
|
||||||
}
|
}
|
||||||
// don't remove the widget from config.widget if refreshing
|
// don't remove the widget from config.widget if refreshing
|
||||||
if (indx >= 0 && refresh !== true) {
|
if (indx >= 0 && refreshing !== true) {
|
||||||
c.widgets.splice( indx, 1 );
|
c.widgets.splice( indx, 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ts.refreshWidgets = function(table, doAll, dontapply, temp) {
|
ts.refreshWidgets = function(table, doAll, dontapply) {
|
||||||
table = $(table)[0]; // see issue #243
|
table = $(table)[0]; // see issue #243
|
||||||
var c = table.config,
|
var c = table.config,
|
||||||
cw = c.widgets,
|
cw = c.widgets,
|
||||||
@ -1712,7 +1722,7 @@
|
|||||||
list.push( w.id );
|
list.push( w.id );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ts.removeWidget( table, list.join(','), true, temp );
|
ts.removeWidget( table, list.join(','), true );
|
||||||
if (dontapply !== true) {
|
if (dontapply !== true) {
|
||||||
// call widget init if
|
// call widget init if
|
||||||
ts.applyWidget(table, doAll || false, callback );
|
ts.applyWidget(table, doAll || false, callback );
|
||||||
@ -1981,7 +1991,8 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
remove: function(table, c, wo){
|
remove: function(table, c, wo, refreshing){
|
||||||
|
if (refreshing) { return; }
|
||||||
var k, $tb,
|
var k, $tb,
|
||||||
b = c.$tbodies,
|
b = c.$tbodies,
|
||||||
rmv = (wo.zebra || [ "even", "odd" ]).join(' ');
|
rmv = (wo.zebra || [ "even", "odd" ]).join(' ');
|
||||||
|
@ -288,15 +288,17 @@ ts.addWidget({
|
|||||||
ts.benchmark("Applying " + theme + " theme", time);
|
ts.benchmark("Applying " + theme + " theme", time);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
remove: function(table, c, wo, temp) {
|
remove: function(table, c, wo, refreshing) {
|
||||||
|
if (!wo.uitheme_applied) { return; }
|
||||||
var $table = c.$table,
|
var $table = c.$table,
|
||||||
theme = c.theme || 'jui',
|
theme = c.appliedTheme || 'jui',
|
||||||
themes = ts.themes[ theme ] || ts.themes.jui,
|
themes = ts.themes[ theme ] || ts.themes.jui,
|
||||||
$headers = $table.children('thead').children(),
|
$headers = $table.children('thead').children(),
|
||||||
remove = themes.sortNone + ' ' + themes.sortDesc + ' ' + themes.sortAsc,
|
remove = themes.sortNone + ' ' + themes.sortDesc + ' ' + themes.sortAsc,
|
||||||
iconRmv = themes.iconSortNone + ' ' + themes.iconSortDesc + ' ' + themes.iconSortAsc;
|
iconRmv = themes.iconSortNone + ' ' + themes.iconSortDesc + ' ' + themes.iconSortAsc;
|
||||||
$table.removeClass('tablesorter-' + theme + ' ' + themes.table);
|
$table.removeClass('tablesorter-' + theme + ' ' + themes.table);
|
||||||
if (temp) { return; }
|
wo.uitheme_applied = false;
|
||||||
|
if (refreshing) { return; }
|
||||||
$table.find(ts.css.header).removeClass(themes.header);
|
$table.find(ts.css.header).removeClass(themes.header);
|
||||||
$headers
|
$headers
|
||||||
.unbind('mouseenter.tsuitheme mouseleave.tsuitheme') // remove hover
|
.unbind('mouseenter.tsuitheme mouseleave.tsuitheme') // remove hover
|
||||||
@ -421,7 +423,7 @@ ts.addWidget({
|
|||||||
ts.filter.init(table, c, wo);
|
ts.filter.init(table, c, wo);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
remove: function(table, c, wo, temp) {
|
remove: function(table, c, wo, refreshing) {
|
||||||
var tbodyIndex, $tbody,
|
var tbodyIndex, $tbody,
|
||||||
$table = c.$table,
|
$table = c.$table,
|
||||||
$tbodies = c.$tbodies;
|
$tbodies = c.$tbodies;
|
||||||
@ -429,8 +431,9 @@ ts.addWidget({
|
|||||||
.removeClass('hasFilters')
|
.removeClass('hasFilters')
|
||||||
// add .tsfilter namespace to all BUT search
|
// add .tsfilter namespace to all BUT search
|
||||||
.unbind('addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '.split(' ').join(c.namespace + 'filter '))
|
.unbind('addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search '.split(' ').join(c.namespace + 'filter '))
|
||||||
|
// remove the filter row even if refreshing, because the column might have been moved
|
||||||
.find('.' + ts.css.filterRow).remove();
|
.find('.' + ts.css.filterRow).remove();
|
||||||
if (temp) { return; }
|
if (refreshing) { return; }
|
||||||
for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {
|
||||||
$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // remove tbody
|
$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // remove tbody
|
||||||
$tbody.children().removeClass(wo.filter_filteredRow).show();
|
$tbody.children().removeClass(wo.filter_filteredRow).show();
|
||||||
|
Loading…
Reference in New Issue
Block a user