Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f535443
Make foreach function calls consistent
zaucker Feb 15, 2024
2c7ace5
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Feb 15, 2024
26612ce
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Feb 16, 2024
ea7d2c7
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Feb 20, 2024
d9c2a0e
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Feb 20, 2024
f52e8cf
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Feb 20, 2024
2e2fc0f
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Feb 27, 2024
006c810
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Aug 6, 2024
195a8d9
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Sep 19, 2024
6237ff8
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Nov 8, 2024
59f44c1
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Mar 10, 2025
a04fb1d
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Mar 13, 2025
2a443e9
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Mar 20, 2025
30a3811
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Mar 24, 2025
4bb19ba
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Apr 4, 2025
d95777a
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Apr 9, 2025
93cb8cb
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Jun 13, 2025
6441fec
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Sep 9, 2025
e695156
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Nov 4, 2025
ae339e3
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Nov 4, 2025
ced8242
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Jan 5, 2026
bc57108
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Jun 9, 2026
962502c
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Jun 23, 2026
58975a1
Merge branch 'master' of github.com:oetiker/callbackery
zaucker Aug 19, 2026
0173969
Add noBusyIndicator opt-out for download/display actions
zaucker Aug 19, 2026
5be8922
Merge branch 'master' into no-busy-indicator-for-downloads
oetiker Aug 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@

- New optional actionCfg property "noBusyIndicator" for download and
display actions. When set, the modal busy indicator ("Preparing
Download ...") is not shown while the download is being prepared, so
the gui stays usable for actions which take a long time to produce
their data. Default behaviour is unchanged.

0.58.4 2026-07-31 16:15:51 +0200 Tobias Oetiker <tobi@oetiker.ch>

- Frontend ui.Login: a login could be lost outright. The credentials
Expand Down
13 changes: 13 additions & 0 deletions lib/CallBackery/GuiPlugin/AbstractAction.pm
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,19 @@ has screenOpts => sub {

Returns a list of action buttons to place at the top of the form.

For C<download> and C<display> actions the gui is blocked by a modal busy
indicator while the download is being prepared (for at most 3 seconds).
Actions which take a long time to produce their data can switch this off by
setting C<noBusyIndicator> to true, keeping the gui usable while they run:

{
label => trm('Create Report'),
action => 'download',
key => 'createReport',
noBusyIndicator => true,
actionHandler => sub { ... },
}

=cut

has actionCfg => sub {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -401,12 +401,18 @@ qx.Class.define("callbackery.ui.plugin.Action", {
return;
}
var key = btCfg.key;
if (btCfg.busyMessage) {
busy.manifest(this.xtr(btCfg.busyMessage));
} else {
busy.manifest(this.tr('Preparing Download ...'));
// actions which take a long time to produce their
// data can opt out of the modal busy indicator so
// that the gui stays usable while they run
let showBusy = !btCfg.noBusyIndicator;
if (showBusy) {
if (btCfg.busyMessage) {
busy.manifest(this.xtr(btCfg.busyMessage));
} else {
busy.manifest(this.tr('Preparing Download ...'));
}
setTimeout(() => { busy.vanish(); }, 3 * 1000); // hide the activity indicator after 3 seconds anyway
}
setTimeout(() => { busy.vanish(); }, 3 * 1000); // hide the activity indicator after 3 seconds anyway
callbackery.data.Server.getInstance().callAsyncSmart(function (cookie) {
let url = 'download'
+ '?name=' + cfg.name
Expand All @@ -422,7 +428,9 @@ qx.Class.define("callbackery.ui.plugin.Action", {
height: 100
});
iframe.addListener('load', function (e) {
busy.vanish();
if (showBusy) {
busy.vanish();
}
var response = {
exception: {
message: String(that.tr("No Data")),
Expand Down
Loading