Etemplate: add disable_autorefresh attribute to nextmatch to be able to disable autorefresh

This commit is contained in:
nathangray 2020-08-05 11:21:18 -06:00 committed by Ralf Becker
parent ab8e5b9aa4
commit 0b804bc507
2 changed files with 137 additions and 87 deletions

View File

@ -68,6 +68,14 @@ var et2_extension_nextmatch_controller_1 = require("./et2_extension_nextmatch_co
var et2_dataview_1 = require("./et2_dataview");
var et2_dataview_model_columns_1 = require("./et2_dataview_model_columns");
var et2_extension_customfields_1 = require("./et2_extension_customfields");
var et2_widget_link_1 = require("./et2_widget_link");
var et2_widget_dialog_1 = require("./et2_widget_dialog");
var et2_widget_grid_1 = require("./et2_widget_grid");
var et2_dataview_view_grid_1 = require("./et2_dataview_view_grid");
var et2_widget_taglist_1 = require("./et2_widget_taglist");
var et2_widget_selectAccount_1 = require("./et2_widget_selectAccount");
var et2_widget_dynheight_1 = require("./et2_widget_dynheight");
var et2_core_arrayMgr_1 = require("./et2_core_arrayMgr");
var et2_INextmatchHeader = "et2_INextmatchHeader";
function implements_et2_INextmatchHeader(obj) {
return implements_methods(obj, ["setNextmatch"]);
@ -134,7 +142,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
}
_this.div = jQuery(document.createElement("div"))
.addClass("et2_nextmatch");
_this.header = et2_createWidget("nextmatch_header_bar", {}, _this);
_this.header = et2_core_widget_1.et2_createWidget("nextmatch_header_bar", {}, _this);
_this.innerDiv = jQuery(document.createElement("div"))
.appendTo(_this.div);
// Create the dynheight component which dynamically scales the inner
@ -651,10 +659,10 @@ var et2_nextmatch = /** @class */ (function (_super) {
// Find the parent container, either a tab or the main container
var tab = this.get_tab_info();
if (!tab) {
return new et2_dynheight(this.getInstanceManager().DOMContainer, this.innerDiv, 100);
return new et2_widget_dynheight_1.et2_dynheight(this.getInstanceManager().DOMContainer, this.innerDiv, 100);
}
else if (tab && tab.contentDiv) {
return new et2_dynheight(tab.contentDiv, this.innerDiv, 100);
return new et2_widget_dynheight_1.et2_dynheight(tab.contentDiv, this.innerDiv, 100);
}
return false;
};
@ -956,7 +964,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
// Make sure there's a widget - cols disabled in template can be missing them, and the header really likes to have a widget
for (var x = 0; x < _row.length; x++) {
if (!_row[x].widget) {
_row[x].widget = et2_createWidget("label", {});
_row[x].widget = et2_core_widget_1.et2_createWidget("label", {});
}
}
// Get column display preference
@ -1121,7 +1129,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
var rowId = _data.content[this.options.settings.row_id];
// Create a new grid with the row as parent and the dataview grid as
// parent grid
var grid = new et2_dataview_grid(_row, this.dataview.grid);
var grid = new et2_dataview_view_grid_1.et2_dataview_grid(_row, this.dataview.grid);
// Create a new controller for the grid
var controller = new et2_extension_nextmatch_controller_1.et2_nextmatch_controller(_controller, this.egw(), this.getInstanceManager().etemplate_exec_id, this, rowId, grid, this.rowProvider, this.options.settings.action_links, _controller.getObjectManager());
controller.update();
@ -1192,7 +1200,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
}
// Build the popup
if (!this.selectPopup) {
var select_1 = et2_createWidget("select", {
var select_1 = et2_core_widget_1.et2_createWidget("select", {
multiple: true,
rows: 8,
empty_label: this.egw().lang("select columns"),
@ -1201,22 +1209,25 @@ var et2_nextmatch = /** @class */ (function (_super) {
}, this);
select_1.set_select_options(columns);
select_1.set_value(columns_selected);
var autoRefresh_1 = et2_createWidget("select", {
"empty_label": "Refresh"
}, this);
autoRefresh_1.set_id("nm_autorefresh");
autoRefresh_1.set_select_options({
// Cause [unknown] problems with mail
//30: "30 seconds",
//60: "1 Minute",
180: "3 Minutes",
300: "5 Minutes",
900: "15 Minutes",
1800: "30 Minutes"
});
autoRefresh_1.set_value(this._get_autorefresh());
autoRefresh_1.set_statustext(egw.lang("Automatically refresh list"));
var defaultCheck = et2_createWidget("select", { "empty_label": "Preference" }, this);
var autoRefresh_1;
if (!this.options.disable_autorefresh) {
autoRefresh_1 = et2_core_widget_1.et2_createWidget("select", {
"empty_label": "Refresh"
}, this);
autoRefresh_1.set_id("nm_autorefresh");
autoRefresh_1.set_select_options({
// Cause [unknown] problems with mail
//30: "30 seconds",
//60: "1 Minute",
180: "3 Minutes",
300: "5 Minutes",
900: "15 Minutes",
1800: "30 Minutes"
});
autoRefresh_1.set_value(this._get_autorefresh());
autoRefresh_1.set_statustext(egw.lang("Automatically refresh list"));
}
var defaultCheck = et2_core_widget_1.et2_createWidget("select", { "empty_label": "Preference" }, this);
defaultCheck.set_id('nm_col_preference');
defaultCheck.set_select_options({
'default': { label: 'Default', title: 'Set these columns as the default' },
@ -1224,7 +1235,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
'force': { label: 'Force', title: 'Force column preference so users cannot change it' }
});
defaultCheck.set_value(this.options.settings.columns_forced ? 'force' : '');
var okButton = et2_createWidget("buttononly", { "background_image": true, image: "check" }, this);
var okButton = et2_core_widget_1.et2_createWidget("buttononly", { "background_image": true, image: "check" }, this);
okButton.set_label(this.egw().lang("ok"));
okButton.onclick = function () {
// Update visibility
@ -1300,7 +1311,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
self.selectPopup.toggle();
self.dataview.updateColumns();
// Auto refresh
self._set_autorefresh(autoRefresh_1.get_value());
self._set_autorefresh(autoRefresh_1 ? autoRefresh_1.get_value() : 0);
// Set default or clear forced
if (show_letters) {
self.activeFilters.selectcols.push('lettersearch');
@ -1308,7 +1319,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
self.getInstanceManager().submit();
self.selectPopup = null;
};
var cancelButton = et2_createWidget("buttononly", { "background_image": true, image: "cancel" }, this);
var cancelButton = et2_core_widget_1.et2_createWidget("buttononly", { "background_image": true, image: "cancel" }, this);
cancelButton.set_label(this.egw().lang("cancel"));
cancelButton.onclick = function () {
self.selectPopup.toggle();
@ -1353,7 +1364,9 @@ var et2_nextmatch = /** @class */ (function (_super) {
.append($footerWrap)
.appendTo(this.innerDiv);
// Add autorefresh
$footerWrap.append(autoRefresh_1.getSurroundings().getDOMNode(autoRefresh_1.getDOMNode()));
if (autoRefresh_1) {
$footerWrap.append(autoRefresh_1.getSurroundings().getDOMNode(autoRefresh_1.getDOMNode()));
}
// Add default checkbox for admins
var apps = this.egw().user('apps');
if (apps['admin']) {
@ -1384,7 +1397,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
// Initialize to false
for (var i = 0; i < columnMgr.columns.length; i++) {
var col = columnMgr.columns[i];
if (col.caption && col.visibility != et2_dataview_grid.ET2_COL_VISIBILITY_ALWAYS_NOSELECT) {
if (col.caption && col.visibility != et2_dataview_view_grid_1.et2_dataview_grid.ET2_COL_VISIBILITY_ALWAYS_NOSELECT) {
visibility[col.id] = { visible: false };
}
}
@ -1471,7 +1484,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
jQuery(this.getInstanceManager().DOMContainer.parentNode).one('show.et2_nextmatch',
// Important to use anonymous function instead of just 'this.refresh' because
// of the parameters passed
jQuery.proxy(function () { this.refresh(); }, this));
jQuery.proxy(function () { this.refresh(null, 'edit'); }, this));
}, this), time * 1000);
}, this));
jQuery(this.getInstanceManager().DOMContainer.parentNode).on('show.et2_nextmatch', jQuery.proxy(function (e) {
@ -1487,6 +1500,9 @@ var et2_nextmatch = /** @class */ (function (_super) {
* @return int Refresh period, in secods
*/
et2_nextmatch.prototype._get_autorefresh = function () {
if (this.options.disable_autorefresh) {
return 0;
}
var refresh_preference = "nextmatch-" + this.options.settings.columnselection_pref + "-autorefresh";
return this.egw().preference(refresh_preference, this._get_appname());
};
@ -1497,7 +1513,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
* @param {string} template_name Full template name in the form app.template[.template]
*/
et2_nextmatch.prototype.set_template = function (template_name) {
var template = et2_createWidget("template", { "id": template_name }, this);
var template = et2_core_widget_1.et2_createWidget("template", { "id": template_name }, this);
if (this.template) {
// Stop early to prevent unneeded processing, and prevent infinite
// loops if the server changes the template in get_rows
@ -1539,7 +1555,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
this.template = template_name;
// Fetch the grid element and parse it
var definitionGrid = template.getChildren()[0];
if (definitionGrid && definitionGrid instanceof et2_grid) {
if (definitionGrid && definitionGrid instanceof et2_widget_grid_1.et2_grid) {
this._parseGrid(definitionGrid);
}
else {
@ -1743,7 +1759,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
to_id: split.join('::')
};
// Create widget and mangle to our needs
var link = et2_createWidget("link-to", { value: link_value }, this);
var link = et2_core_widget_1.et2_createWidget("link-to", { value: link_value }, this);
link.loadingFinished();
link.file_upload.set_drop_target(false);
if (row.row.tr) {
@ -1853,17 +1869,17 @@ var et2_nextmatch = /** @class */ (function (_super) {
var col = columnMgr.columns[i];
var widget = this.columns[i].widget;
var colName = this._getColumnName(widget);
if (col.caption && col.visibility !== et2_dataview_grid.ET2_COL_VISIBILITY_ALWAYS_NOSELECT &&
col.visibility !== et2_dataview_grid.ET2_COL_VISIBILITY_DISABLED) {
if (col.caption && col.visibility !== et2_dataview_view_grid_1.et2_dataview_grid.ET2_COL_VISIBILITY_ALWAYS_NOSELECT &&
col.visibility !== et2_dataview_view_grid_1.et2_dataview_grid.ET2_COL_VISIBILITY_DISABLED) {
columns[colName] = col.caption;
if (col.visibility === et2_dataview_grid.ET2_COL_VISIBILITY_VISIBLE)
if (col.visibility === et2_dataview_view_grid_1.et2_dataview_grid.ET2_COL_VISIBILITY_VISIBLE)
columns_selected.push(colName);
}
// Custom fields get listed separately
if (widget.instanceOf(et2_nextmatch_customfields)) {
delete (columns[colName]);
colName = widget.id;
if (col.visibility === et2_dataview_grid.ET2_COL_VISIBILITY_VISIBLE && !jQuery.isEmptyObject(widget.customfields)) {
if (col.visibility === et2_dataview_view_grid_1.et2_dataview_grid.ET2_COL_VISIBILITY_VISIBLE && !jQuery.isEmptyObject(widget.customfields)) {
columns[colName] = col.caption;
for (var field_name in widget.customfields) {
columns[et2_nextmatch_customfields.PREFIX + field_name] = " - " + widget.customfields[field_name].label;
@ -1879,7 +1895,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
this.set_columns(jQuery.extend([], this.egw().preference(pref, app)));
}
var callback = jQuery.proxy(function (button, value) {
if (button === et2_dialog.CANCEL_BUTTON) {
if (button === et2_widget_dialog_1.et2_dialog.CANCEL_BUTTON) {
// Give dialog a chance to close, or it will be in the print
window.setTimeout(function () {
defer.reject();
@ -1913,7 +1929,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
rows = total;
}
// If they want the whole thing, style it as all
if (button === et2_dialog.OK_BUTTON && rows == this.controller._grid.getTotalCount()) {
if (button === et2_widget_dialog_1.et2_dialog.OK_BUTTON && rows == this.controller._grid.getTotalCount()) {
// Add the class, gives more reliable sizing
this.div.addClass('print');
// Show it all
@ -1925,7 +1941,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
var fetchedCount_1 = 0;
var cancel_1 = false;
var nm_1 = this;
var dialog_1 = et2_dialog.show_dialog(
var dialog_1 = et2_widget_dialog_1.et2_dialog.show_dialog(
// Abort the long task if they canceled the data load
function () {
count_1 = total;
@ -1934,7 +1950,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
defer.reject();
}, 0);
}, egw.lang('Loading'), egw.lang('please wait...'), {}, [
{ "button_id": et2_dialog.CANCEL_BUTTON, "text": 'cancel', id: 'dialog[cancel]', image: 'cancel' }
{ "button_id": et2_widget_dialog_1.et2_dialog.CANCEL_BUTTON, "text": 'cancel', id: 'dialog[cancel]', image: 'cancel' }
]);
// dataFetch() is asynchronous, so all these requests just get fired off...
// 200 rows chosen arbitrarily to reduce requests.
@ -1974,7 +1990,7 @@ var et2_nextmatch = /** @class */ (function (_super) {
dialog_1.destroy();
// Should be OK to print now
defer.resolve();
}, nm_1), et2_dataview_grid.ET2_GRID_INVALIDATE_TIMEOUT);
}, nm_1), et2_dataview_view_grid_1.et2_dataview_grid.ET2_GRID_INVALIDATE_TIMEOUT);
}
}, ctx);
count_1 += 200;
@ -2031,10 +2047,10 @@ var et2_nextmatch = /** @class */ (function (_super) {
var tab = this.get_tab_info();
// Get title for print dialog from settings or tab, if available
var title = this.options.settings.label ? this.options.settings.label : (tab ? tab.label : '');
var dialog = et2_createWidget("dialog", {
var dialog = et2_core_widget_1.et2_createWidget("dialog", {
// If you use a template, the second parameter will be the value of the template, as if it were submitted.
callback: callback,
buttons: et2_dialog.BUTTONS_OK_CANCEL,
buttons: et2_widget_dialog_1.et2_dialog.BUTTONS_OK_CANCEL,
title: this.egw().lang('Print') + ' ' + this.egw().lang(title),
template: this.egw().link(base_url + '/api/templates/default/nm_print_dialog.xet'),
value: value
@ -2120,6 +2136,12 @@ var et2_nextmatch = /** @class */ (function (_super) {
"description": "Hide the second filter",
"default": et2_no_init
},
"disable_autorefresh": {
"name": "Disable autorefresh",
"type": "boolean",
"description": "Disable the ability to autorefresh the nextmatch on a regular interval. ",
"default": false
},
"view": {
"name": "View",
"type": "string",
@ -2238,7 +2260,7 @@ var et2_nextmatch_header_bar = /** @class */ (function (_super) {
fix: !egwIsMobile()
};
// searchbox widget
this.et2_searchbox = et2_createWidget('searchbox', searchbox_options, this);
this.et2_searchbox = et2_core_widget_1.et2_createWidget('searchbox', searchbox_options, this);
// Set activeFilters to current value
this.nextmatch.activeFilters.search = settings.search;
this.et2_searchbox.set_value(settings.search);
@ -2327,7 +2349,7 @@ var et2_nextmatch_header_bar = /** @class */ (function (_super) {
if (settings.csv_fields === true) {
definition_1 = egw.preference('nextmatch-export-definition', this.nextmatch.egw().app_name());
}
var button_1 = et2_createWidget("buttononly", { id: "export", "statustext": "Export", image: "download", "background_image": true }, this);
var button_1 = et2_core_widget_1.et2_createWidget("buttononly", { id: "export", "statustext": "Export", image: "download", "background_image": true }, this);
jQuery(button_1.getDOMNode())
.click(this.nextmatch, function (event) {
// @ts-ignore
@ -2405,7 +2427,7 @@ var et2_nextmatch_header_bar = /** @class */ (function (_super) {
return;
// Load the template
var self = this;
var header = et2_createWidget("template", { "id": template_name }, this);
var header = et2_core_widget_1.et2_createWidget("template", { "id": template_name }, this);
this.headers[id] = header;
var deferred = [];
header.loadingFinished(deferred);
@ -2482,7 +2504,7 @@ var et2_nextmatch_header_bar = /** @class */ (function (_super) {
widget_options.empty_label = this.egw().lang('All categories');
}
// Create widget
var select = et2_createWidget(type, widget_options, this);
var select = et2_core_widget_1.et2_createWidget(type, widget_options, this);
if (options)
select.set_select_options(options);
// Set value
@ -2532,7 +2554,7 @@ var et2_nextmatch_header_bar = /** @class */ (function (_super) {
filters: filters,
sidebox_target: 'favorite_sidebox_' + this.getInstanceManager().app
};
this.favorites = et2_createWidget('favorites', widget_options, this);
this.favorites = et2_core_widget_1.et2_createWidget('favorites', widget_options, this);
// Add into header
jQuery(this.favorites.getDOMNode(this.favorites)).prependTo(egwIsMobile() ? this.search_box.find('.nm_favorites_div').show() : this.right_div);
};
@ -2550,7 +2572,7 @@ var et2_nextmatch_header_bar = /** @class */ (function (_super) {
return;
this.update_in_progress = true;
// Use an array mgr to hande non-simple IDs
var mgr = new et2_arrayMgr(filters);
var mgr = new et2_core_arrayMgr_1.et2_arrayMgr(filters);
this.iterateOver(function (child) {
// Skip favorites, don't want them in the filter
if (typeof child.id != "undefined" && child.id.indexOf("favorite") == 0)
@ -2687,7 +2709,7 @@ var et2_nextmatch_header_bar = /** @class */ (function (_super) {
// Use an array mgr to hande non-simple IDs
var value = {};
value[_widget.id] = _widget._oldValue = _widget.getValue();
var mgr = new et2_arrayMgr(value);
var mgr = new et2_core_arrayMgr_1.et2_arrayMgr(value);
jQuery.extend(true, this.nextmatch.activeFilters, mgr.data);
};
if (sub_header.instanceOf(et2_core_inputWidget_1.et2_inputWidget)) {
@ -2859,21 +2881,21 @@ var et2_nextmatch_customfields = /** @class */ (function (_super) {
if (field.values && typeof field.values[''] !== 'undefined') {
delete (field.values['']);
}
widget = et2_createWidget(field.type == 'select-account' ? 'nextmatch-accountfilter' : "nextmatch-filterheader", {
widget = et2_core_widget_1.et2_createWidget(field.type == 'select-account' ? 'nextmatch-accountfilter' : "nextmatch-filterheader", {
id: cf_id,
empty_label: field.label,
select_options: field.values
}, this);
}
else if (apps[field.type]) {
widget = et2_createWidget("nextmatch-entryheader", {
widget = et2_core_widget_1.et2_createWidget("nextmatch-entryheader", {
id: cf_id,
only_app: field.type,
blur: field.label
}, this);
}
else {
widget = et2_createWidget("nextmatch-sortheader", {
widget = et2_core_widget_1.et2_createWidget("nextmatch-sortheader", {
id: cf_id,
label: field.label
}, this);
@ -3096,7 +3118,7 @@ var et2_nextmatch_accountfilterheader = /** @class */ (function (_super) {
if (!this.options.empty_label && !this.options.select_options[""]) {
this.options.empty_label = this.options.label ? this.options.label : egw.lang("All");
}
_super.prototype.createInputWidget.call(this, this, arguments);
_super.prototype.createInputWidget.call(this);
this.input.change(this, function (event) {
if (typeof event.data.nextmatch == 'undefined') {
// Not fully set up yet
@ -3130,7 +3152,7 @@ var et2_nextmatch_accountfilterheader = /** @class */ (function (_super) {
this.input.css("max-width", max + "px");
};
return et2_nextmatch_accountfilterheader;
}(et2_selectAccount));
}(et2_widget_selectAccount_1.et2_selectAccount));
exports.et2_nextmatch_accountfilterheader = et2_nextmatch_accountfilterheader;
et2_core_widget_1.et2_register_widget(et2_nextmatch_accountfilterheader, ['nextmatch-accountfilter']);
/**
@ -3208,7 +3230,7 @@ var et2_nextmatch_taglistheader = /** @class */ (function (_super) {
class: { default: 'nm_filterheader_taglist' }
};
return et2_nextmatch_taglistheader;
}(et2_taglist));
}(et2_widget_taglist_1.et2_taglist));
et2_core_widget_1.et2_register_widget(et2_nextmatch_taglistheader, ['nextmatch-taglistheader']);
/**
* Nextmatch filter that can filter for a selected entry
@ -3273,7 +3295,7 @@ var et2_nextmatch_entryheader = /** @class */ (function (_super) {
// Fire on lost focus, clear filter if user emptied box
};
return et2_nextmatch_entryheader;
}(et2_link_entry));
}(et2_widget_link_1.et2_link_entry));
et2_core_widget_1.et2_register_widget(et2_nextmatch_entryheader, ['nextmatch-entryheader']);
/**
* @augments et2_nextmatch_filterheader
@ -3305,7 +3327,7 @@ var et2_nextmatch_customfilter = /** @class */ (function (_super) {
jQuery.extend(_attrs.widget_options, { id: _this.id });
_attrs.id = '';
_this = _super.call(this, _parent, _attrs, et2_core_inheritance_1.ClassWithAttributes.extendAttributes(et2_nextmatch_customfilter._attributes, _child || {})) || this;
_this.real_node = et2_createWidget(_attrs.type, _attrs.widget_options, _this.getParent());
_this.real_node = et2_core_widget_1.et2_createWidget(_attrs.type, _attrs.widget_options, _this.getParent());
var select_options = [];
var correct_type = _attrs.type;
_this.real_node['type'] = _attrs.widget_type;

View File

@ -44,7 +44,7 @@
import './et2_core_common';
import './et2_core_interfaces';
import {ClassWithAttributes} from "./et2_core_inheritance";
import {et2_register_widget, et2_widget, WidgetConfig} from "./et2_core_widget";
import {et2_createWidget, et2_register_widget, et2_widget, WidgetConfig} from "./et2_core_widget";
import {et2_DOMWidget} from "./et2_core_DOMWidget";
import {et2_baseWidget} from "./et2_core_baseWidget";
import {et2_inputWidget} from "./et2_core_inputWidget";
@ -54,6 +54,17 @@ import {et2_nextmatch_controller} from "./et2_extension_nextmatch_controller";
import {et2_dataview} from "./et2_dataview";
import {et2_dataview_column} from "./et2_dataview_model_columns";
import {et2_customfields_list} from "./et2_extension_customfields";
import {et2_link_entry, et2_link_to} from "./et2_widget_link";
import {et2_dialog} from "./et2_widget_dialog";
import {et2_grid} from "./et2_widget_grid";
import {et2_dataview_grid} from "./et2_dataview_view_grid";
import {et2_taglist} from "./et2_widget_taglist";
import {et2_selectAccount} from "./et2_widget_selectAccount";
import {et2_dynheight} from "./et2_widget_dynheight";
import {et2_arrayMgr} from "./et2_core_arrayMgr";
import {et2_button} from "./et2_widget_button";
import {et2_searchbox} from "./et2_widget_textbox";
import {et2_template} from "./et2_widget_template";
//import {et2_selectAccount} from "./et2_widget_SelectAccount";
@ -161,6 +172,12 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
"description": "Hide the second filter",
"default": et2_no_init
},
"disable_autorefresh": {
"name": "Disable autorefresh",
"type": "boolean",
"description": "Disable the ability to autorefresh the nextmatch on a regular interval. ",
"default": false
},
"view": {
"name": "View",
"type": "string",
@ -289,7 +306,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
.addClass("et2_nextmatch");
this.header = et2_createWidget("nextmatch_header_bar", {}, this);
this.header = <et2_nextmatch_header_bar> et2_createWidget("nextmatch_header_bar", {}, this);
this.innerDiv = jQuery(document.createElement("div"))
.appendTo(this.div);
@ -844,7 +861,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
*/
protected refresh_add(uid:string, type = "add")
{
let index = 0;
let index : boolean | number = 0;
let appname = this._get_appname();
if(appname && this.egw().window.app[appname] && typeof this.egw().window.app[appname].nm_refresh_index == "function")
{
@ -1668,7 +1685,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
// Build the popup
if(!this.selectPopup)
{
const select = et2_createWidget("select", {
const select = <et2_selectbox> et2_createWidget("select", {
multiple: true,
rows: 8,
empty_label: this.egw().lang("select columns"),
@ -1678,23 +1695,27 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
select.set_select_options(columns);
select.set_value(columns_selected);
const autoRefresh = et2_createWidget("select", {
"empty_label": "Refresh"
}, this);
autoRefresh.set_id("nm_autorefresh");
autoRefresh.set_select_options({
// Cause [unknown] problems with mail
//30: "30 seconds",
//60: "1 Minute",
180: "3 Minutes",
300: "5 Minutes",
900: "15 Minutes",
1800: "30 Minutes"
});
autoRefresh.set_value(this._get_autorefresh());
autoRefresh.set_statustext(egw.lang("Automatically refresh list"));
let autoRefresh;
if(!this.options.disable_autorefresh)
{
autoRefresh = <et2_selectbox> et2_createWidget("select", {
"empty_label": "Refresh"
}, this);
autoRefresh.set_id("nm_autorefresh");
autoRefresh.set_select_options({
// Cause [unknown] problems with mail
//30: "30 seconds",
//60: "1 Minute",
180: "3 Minutes",
300: "5 Minutes",
900: "15 Minutes",
1800: "30 Minutes"
});
autoRefresh.set_value(this._get_autorefresh());
autoRefresh.set_statustext(egw.lang("Automatically refresh list"));
}
const defaultCheck = et2_createWidget("select", {"empty_label": "Preference"}, this);
const defaultCheck = <et2_selectbox> et2_createWidget("select", {"empty_label": "Preference"}, this);
defaultCheck.set_id('nm_col_preference');
defaultCheck.set_select_options({
'default': {label: 'Default',title:'Set these columns as the default'},
@ -1703,7 +1724,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
});
defaultCheck.set_value(this.options.settings.columns_forced ? 'force': '');
const okButton = et2_createWidget("buttononly", {"background_image": true, image: "check"}, this);
const okButton = <et2_button> et2_createWidget("buttononly", {"background_image": true, image: "check"}, this);
okButton.set_label(this.egw().lang("ok"));
okButton.onclick = function() {
// Update visibility
@ -1800,7 +1821,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
self.dataview.updateColumns();
// Auto refresh
self._set_autorefresh(autoRefresh.get_value());
self._set_autorefresh(autoRefresh ? autoRefresh.get_value() : 0);
// Set default or clear forced
if(show_letters)
@ -1812,7 +1833,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
self.selectPopup = null;
};
const cancelButton = et2_createWidget("buttononly", {"background_image": true, image: "cancel"}, this);
const cancelButton = <et2_button> et2_createWidget("buttononly", {"background_image": true, image: "cancel"}, this);
cancelButton.set_label(this.egw().lang("cancel"));
cancelButton.onclick = function() {
self.selectPopup.toggle();
@ -1859,7 +1880,10 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
.appendTo(this.innerDiv);
// Add autorefresh
$footerWrap.append(autoRefresh.getSurroundings().getDOMNode(autoRefresh.getDOMNode()));
if(autoRefresh)
{
$footerWrap.append(autoRefresh.getSurroundings().getDOMNode(autoRefresh.getDOMNode()));
}
// Add default checkbox for admins
const apps = this.egw().user('apps');
@ -2007,7 +2031,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
jQuery(this.getInstanceManager().DOMContainer.parentNode).one('show.et2_nextmatch',
// Important to use anonymous function instead of just 'this.refresh' because
// of the parameters passed
jQuery.proxy(function() {this.refresh();},this)
jQuery.proxy(function() {this.refresh(null, 'edit');},this)
);
},this), time*1000);
},this));
@ -2026,6 +2050,10 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
*/
_get_autorefresh( )
{
if(this.options.disable_autorefresh)
{
return 0;
}
const refresh_preference = "nextmatch-" + this.options.settings.columnselection_pref + "-autorefresh";
return this.egw().preference(refresh_preference,this._get_appname());
}
@ -2349,7 +2377,7 @@ export class et2_nextmatch extends et2_DOMWidget implements et2_IResizeable, et2
to_id: split.join('::')
};
// Create widget and mangle to our needs
const link = et2_createWidget("link-to", {value: link_value}, this);
const link = <et2_link_to> et2_createWidget("link-to", {value: link_value}, this);
link.loadingFinished();
link.file_upload.set_drop_target(false);
@ -2919,7 +2947,7 @@ class et2_nextmatch_header_bar extends et2_DOMWidget implements et2_INextmatchHe
fix: !egwIsMobile()
};
// searchbox widget
this.et2_searchbox = et2_createWidget('searchbox', searchbox_options,this);
this.et2_searchbox = <et2_searchbox> et2_createWidget('searchbox', searchbox_options,this);
// Set activeFilters to current value
this.nextmatch.activeFilters.search = settings.search;
@ -3023,7 +3051,7 @@ class et2_nextmatch_header_bar extends et2_DOMWidget implements et2_INextmatchHe
{
definition = egw.preference('nextmatch-export-definition', this.nextmatch.egw().app_name());
}
let button = et2_createWidget("buttononly", {id: "export", "statustext": "Export", image: "download", "background_image": true}, this);
let button = <et2_button> et2_createWidget("buttononly", {id: "export", "statustext": "Export", image: "download", "background_image": true}, this);
jQuery(button.getDOMNode())
.click(this.nextmatch, function(event) {
// @ts-ignore
@ -3108,7 +3136,7 @@ class et2_nextmatch_header_bar extends et2_DOMWidget implements et2_INextmatchHe
// Load the template
const self = this;
const header = et2_createWidget("template", {"id": template_name}, this);
const header = <et2_template> et2_createWidget("template", {"id": template_name}, this);
this.headers[id] = header;
const deferred = [];
header.loadingFinished(deferred);
@ -3903,7 +3931,7 @@ export class et2_nextmatch_accountfilterheader extends et2_selectAccount impleme
{
this.options.empty_label = this.options.label ? this.options.label : egw.lang("All");
}
super.createInputWidget(this, arguments);
super.createInputWidget();
this.input.change(this, function(event) {
if(typeof event.data.nextmatch == 'undefined')