Johannes Meyer
6197d5f0af
form.js: Only track real value changes and reset upon reverts
2021-01-13 17:19:18 +01:00
Johannes Meyer
ca74e14812
ui.js: Don't require jQuery objects in `getUniqueContainerId`
2021-01-13 17:18:55 +01:00
Johannes Meyer
fbf3a1f757
loader.js: Don't add form submits other than `GET`s to the history
...
This has previously not been an issue, as form submits seem to have
never targeted another url than their container's current one.
Though any form that did this, was pushed to history upon submit.
This happens now only for `GET` forms.
2021-01-13 17:17:48 +01:00
Johannes Meyer
e346c1c88c
events.js: Also accept `$autoSubmittedBy` from `event.detail`
2021-01-13 17:17:18 +01:00
Johannes Meyer
3e29fba052
js: Transmit `X-Icinga-Autorefresh=1` with autorefresh requests
2021-01-13 17:16:53 +01:00
Johannes Meyer
2c7b2330a7
loader.js: Support behaviors as well as multipart update targets
2021-01-13 17:16:30 +01:00
Johannes Meyer
f05f905d14
history.js: Set `lastPushUrl` in method `replaceCurrentState()`
...
Without this, any subsequent call to `pushCurrentState()` has
no effect in case the same url is used that was replaced.
2021-01-13 17:15:58 +01:00
Johannes Meyer
5a38977906
js: Add `define.js`
2020-11-18 13:21:33 +01:00
Johannes Meyer
d918d6c86f
Merge pull request #4235 from Icinga/fix/sparkline-js-performance
...
Drop sparkline.js and render inline-pies as SVG
2020-11-18 09:37:31 +01:00
Johannes Meyer
0b94489c7e
loader.js: Introduce new header `X-Icinga-Location-Query`
...
This header is only used in case the response includes
multipart content. It's meant to provide a new query
string that replaces the one of the targeted container
and the resulting change also replaces the current
history entry.
2020-11-06 11:26:05 +01:00
Johannes Meyer
70c3023f3c
loader.js: Also match newlines when interpreting multipart content
2020-11-06 11:21:33 +01:00
Johannes Meyer
e68e8c8e9c
loader.js: Only discard content if a renderHook returns null
...
Previously any false value had this effect, though empty strings
were also discarded due to this. However, in case an empty string
is the content in the first place, the content must be updated.
2020-11-06 11:21:33 +01:00
Johannes Meyer
4ce9165f77
js: Don't force focus in multipart updates if focus isn't affected
2020-11-06 11:20:28 +01:00
Johannes Meyer
37fb455977
js: Drop sparkline lib and behavior
2020-09-28 16:39:54 +02:00
Johannes Meyer
2a64a97302
js: Don't add class `impact` to already finished targets
2020-06-08 10:49:02 +02:00
Johannes Meyer
a59977f181
js: Properly parse/build url query values
...
fixes #4167
2020-06-05 08:57:30 +02:00
Johannes Meyer
74a9a8edf0
modal.js: Request compact content with `showCompact`
2020-06-04 08:50:41 +02:00
Alexander A. Klimov
4232a344b7
Icinga.Loader#onFailure(): treat 5xx response as connection failure
...
... not to break the container with the reverse proxy's response not fitting into our layout.
refs #4133
2020-04-24 08:39:23 +02:00
Johannes Meyer
344598e845
loader.js: Wait for cols being painted prior adding class `impact`
...
Allows for the new loading effect's transition to play correctly
also for columns which get opened the first time.
2020-04-14 10:40:23 +02:00
Johannes Meyer
969c1615c7
history.js: Don't load location bar as if it's an autorefresh
2020-02-28 14:37:46 +01:00
Yonas Habteab
0432b7d50d
Revert "JS: Do not apply 'menu-hovered' on #layout"
...
This reverts commit 5443bfe9fa
.
2020-02-28 11:36:04 +01:00
nmartini
1cf2f767a2
Make sure that class container has its container
2020-02-28 08:30:23 +01:00
Johannes Meyer
fd97e8b056
actiontable.js: Properly handle encoded filter values
2020-01-30 08:31:06 +01:00
Johannes Meyer
5a031bf659
utils.js: Fix method `removeUrlParams()`
2020-01-28 15:23:41 +01:00
Johannes Meyer
3464455021
js: Preserve scroll position if focus is forced to a particular element
2020-01-16 15:54:17 +01:00
Johannes Meyer
8bc84a5f9e
js: Teach the url parsing a final lesson about query strings
...
`utils.parseParams()` now returns an array instead of an object.
This may require some changes in modules using this directly or
by `utils.parseUrl().params`
refs #4056
2020-01-16 13:45:10 +01:00
Eric Lippmann
0355b20da0
JS: Respect container in Icinga.Ui.focusElement()
...
Though IDs should be unique across the whole page, focusElement() must
not fail if there is the same anchor in the left and right column.
focusElement() now also respects the container when searching the
element to focus by ID.
2020-01-16 10:47:28 +01:00
Johannes Meyer
8d4e0126ca
Merge pull request #4055 from Icinga/feature/js-history-replace-state
...
JS: Introduce Icinga.History.replaceCurrentState()
2020-01-16 08:54:49 +01:00
Johannes Meyer
4c39772667
Merge pull request #4053 from Icinga/feature/js-addUrlFlag
...
JS: Introduce Icinga.Utils.addUrlFlag()
2020-01-16 08:14:20 +01:00
Johannes Meyer
477649900c
js: Also adjust `utils.removeUrlParams()`..
...
..and properly handle flags in `utils.addUrlParams()`
refs #4056
2020-01-16 08:13:11 +01:00
Johannes Meyer
fdd14c96b1
js: Only encode new params in `utils.addUrlParams()`
2020-01-15 16:47:30 +01:00
Johannes Meyer
3db65d79c6
js: Fix improper parsing in `utils.parseParams()`
2020-01-15 16:46:46 +01:00
Eric Lippmann
71b8ab9b68
JS: Introuce Icinga.History.replaceCurrentState()
...
Before, we only had pushCurrentState() to add a new URL to the history
stack. But some actions, e.g. "load more" in history views require to
replace the current state instead of pushing. This is what
replaceCurrentState() supports now.
2020-01-15 09:57:30 +01:00
Eric Lippmann
97006973d8
JS: Introduce Icinga.History.getCurrentState()
...
Before, Icinga.History.pushCurrentState() had this functionality
enclosed. Now it is usable from other functions as well.
2020-01-15 09:55:39 +01:00
Johannes Meyer
db69f23c20
modal.js: Don't push form submits to the history
2020-01-15 08:41:34 +01:00
Johannes Meyer
844cb911a4
loader.js: Use `utils.addUrlFlag` instead of the now deprecated one
2020-01-15 08:00:04 +01:00
Johannes Meyer
e45c18c833
utils.js: Use a regex to identify the uri fragment
2020-01-15 07:58:49 +01:00
Eric Lippmann
7f8ee4f94d
JS: Deprecate Icinga.Loader.addUrlFlag() in favor of Icinga.Utils.addUrlFlag()
2020-01-14 14:58:34 +01:00
Eric Lippmann
4d02d8f6d6
JS: Introduce Icinga.Utils.addUrlFlag()
2020-01-14 14:58:34 +01:00
Johannes Meyer
b85360449b
js: Ignore anchors without href in `events.linkClicked()`
2019-12-13 16:13:55 +01:00
Johannes Meyer
63452ba250
js: Enhance scroll location detection in `ui.focusElement()`
2019-12-13 16:13:13 +01:00
Johannes Meyer
f5ce5d42ef
js: Add jQuery plugin `offsetTopRelativeTo($ancestor)`
2019-12-13 16:12:40 +01:00
ValeDaRold
5edd267f2a
Refresh container if X-Icinga-Extra-Updates with length 1 is defined ( #3970 )
...
* Refresh container if X-Icinga-Extra-Updates with length 1 is defined
2019-12-12 13:50:03 +01:00
Johannes Meyer
d6677bfb66
loader.js: Also preserve scroll position of `display:flex` containers
2019-12-11 15:27:03 +01:00
Johannes Meyer
55b9b44be9
js: Fix error when focusing navigation anchors
2019-12-11 09:27:18 +01:00
Johannes Meyer
60dfbcbad9
Remove remaining usages of `#menu-container`
2019-12-06 15:39:14 +01:00
Johannes Meyer
e61eb6f160
ui: Fix sidebar issues in minimal layout
...
Was completely broken even prior the removal of `ui.fixControls()`..
2019-12-06 15:39:14 +01:00
Johannes Meyer
4af48c797d
js: Remove `ui.fixControls()` and `ui.initializeControls()`
...
Hooray!
2019-12-06 15:39:14 +01:00
Johannes Meyer
83d6a258ec
application-state.js: Remove redundant rendered callback
2019-12-06 15:39:14 +01:00
Florian Strohmaier
5443bfe9fa
JS: Do not apply 'menu-hovered' on #layout
...
refs #3904
2019-12-06 15:36:34 +01:00
Florian Strohmaier
7864150054
JS: Fix navigation flyout not fading out after mouseout
...
refs #3904
2019-12-06 15:36:34 +01:00
Florian Strohmaier
c6c77aa411
JS: Remove unused code
2019-12-06 15:36:34 +01:00
Florian Strohmaier
516bbc1ef0
JS: Fix sidebar animating out
2019-12-06 15:36:34 +01:00
Florian Strohmaier
0da89bb977
JS: Reinstate mobile menu
2019-12-06 15:36:34 +01:00
Florian Strohmaier
c06aec0471
Remove unused code
2019-12-06 15:36:34 +01:00
Florian Strohmaier
cfbeb26354
JS: Disable fixControls()
2019-12-06 15:36:34 +01:00
Johannes Meyer
cc065b949b
js: Use custom event `icinga-init` to trigger initial render events
...
The `load` event is not really only fired *after all shared resources are loaded*.
Just Chromium ensures this event is fired only after `ready` and `DOMContentLoaded`.
FF, IE and Safari don't so we need our own post-init event: `icinga-init`
2019-11-26 16:00:21 +01:00
Johannes Meyer
48098a2830
js: Don't initialize modules using a `beforerender` event
...
`beforerender` is already too late. Module initialization
done using an event handler is wrong anyway. It's some
kind of bootstrapping after all and should be performed
by parts of the code which is directly responsible for
DOM content handling of modules. (i.e. loader.js)
This change though introduces a side-effect which was
not the case previously: Nested `.container` elements
trigger `rendered` events now. I've introduced this to
ensure we're also lazy loading modules and let them
handle their `rendered` events right after a redirect
which rerendered the layout. (Only `#layout` got a
`rendered` event then prior to this change)
2019-11-21 09:55:20 +01:00
Johannes Meyer
7f78c1a8a8
js: Properly initialize modules and don't trigger `rendered` events twice
...
Cleans up how our JS initializes module javascript. Previously the `rendered`
event only got fired upon page load if a module got loaded as well. This is
now decoupled and `rendered` events fire for all containers and the entire
layout upon page load.
Notable changes:
* A `load` event initializes modules and triggers `rendered` on `.container` and `#layout` elements
* Module javascript (module.js) is still lazy loaded but with a `beforerender` event, not `rendered`
* Previously `#layout` received a `rendered` event during bootstrapping, this is not the case anymore
* Initial search value preservation now got its own handler `events.onRenderedMenu()`
* Initial dashlet loading now git its own handler `events.loadDashlets()`
2019-11-20 16:22:56 +01:00
Johannes Meyer
47c2a8bdc1
js: Utilize `utils.objectsEqual()` in `actiontable.select()`
2019-11-20 16:22:56 +01:00
Johannes Meyer
2dbf9ca8ab
js: Properly parse/decode query params in `utils.parseParams()`
2019-11-20 16:22:56 +01:00
Johannes Meyer
5f739deea3
loader.js: Enhance __BACK__ handling
2019-11-05 15:04:23 +01:00
Johannes Meyer
da565f4d16
loader.js: Refresh left twice in case right has been closed..
...
..if the redirect target is `__BACK__`
2019-11-04 17:25:05 +01:00
Johannes Meyer
42e596f457
loader.js: Navigate back if redirect target is `__BACK__`
2019-11-04 16:03:54 +01:00
Johannes Meyer
a13d2b1e48
js: Introduce behavior modal.js
2019-11-04 12:46:30 +01:00
Johannes Meyer
c0cac6fe3c
loader.js: Allow to use a separate target for redirections
2019-11-04 12:46:30 +01:00
Johannes Meyer
0e5e046ae5
js: Split event handling and processing of form submits
2019-11-04 12:46:30 +01:00
Johannes Meyer
50bf126d36
js: Move function events.getLinkTargetFor to loader.js
2019-11-04 12:46:30 +01:00
Johannes Meyer
2896cbd781
loader.js: Avoid named capture groups to parse multipart content
...
fixes #3975
2019-10-07 14:35:49 +02:00
Johannes Meyer
a8dc609b62
loader.js: Add support for multipart content
...
refs #3953
2019-09-25 10:34:24 +02:00
Johannes Meyer
dda49b5ff1
loader.js: Drop redundant method `cacheLoadedIcons`
2019-09-25 10:34:24 +02:00
Johannes Meyer
da513a746d
loader.js: Add support for extra updates
...
refs #3953
2019-09-25 10:34:24 +02:00
Johannes Meyer
329f54cc96
ui.js: Don't generate a container id if its parent is #col1
...
refs #3953
2019-09-25 10:34:24 +02:00
Johannes Meyer
b15c012671
loader.js: Only pre-wrap a search response's html with a div
...
It's not required for all responses anymore.
refs #3953
2019-09-25 10:34:24 +02:00
Johannes Meyer
f98f988aff
Remove tristate form element
2019-09-23 08:36:24 +02:00
Johannes Meyer
5333bbf04d
loader.js: Also set title directly if layout is base target
2019-08-02 15:42:58 +02:00
Johannes Meyer
b31dd77812
Merge pull request #3676 from Icinga/feature/form-styling
...
Improve look of our forms
2019-07-30 08:26:08 +02:00
Johannes Meyer
5849c06314
storage.js: Don't try and allow to register events for non-local backends
2019-07-30 08:17:29 +02:00
Eric Lippmann
62d4e73d5a
Use session storage for sidebar state
...
The sidebar state is now maintained per tab/window because users view
different things in different tabs/windows. E.g. users work with a
specific module constantly clicking through the menu while having
other tabs/windows with some important dashboards open.
When the sidebar is closed in one tab/widnow, it should not close
the sidebar in the other tabs/windows.
2019-07-30 08:14:49 +02:00
Eric Lippmann
a1a18feb04
js/storage: Allow to set the storage backend
2019-07-30 08:14:49 +02:00
Johannes Meyer
eb0d808aec
collapsible.js: Enhance height calculations
...
`data-visible-height` now only covers the actual content height
2019-07-29 16:02:48 +02:00
Johannes Meyer
27cd34dd2d
js: Add new jQuery plugin `getData()`
2019-07-29 16:02:48 +02:00
Johannes Meyer
8cd6a46388
collapsible.js: Add support for custom control elements
2019-07-29 10:19:29 +02:00
Johannes Meyer
d0eca387ee
js: Also handle spinner elements which are not direct descendants of an element
2019-07-29 10:17:59 +02:00
Johannes Meyer
23590c5e20
js: Remove redundant vendor libraries
2019-07-29 09:52:52 +02:00
Johannes Meyer
a4848803c8
collapsible.js: Listen on `#layout` for rendered events
2019-07-26 16:23:18 +02:00
Johannes Meyer
91a8bdf786
collapsible.js: Don't collapse until at least twice the visible space is required
2019-07-26 07:36:17 +02:00
Johannes Meyer
74cb0ef3c9
collapsible.js: Don't enforce `data-visible-rows` for tables and lists
2019-07-26 07:36:17 +02:00
Johannes Meyer
2179518904
storage.js: Properly check if we have any keys left before clearing the storage
2019-07-26 07:36:17 +02:00
Johannes Meyer
f1db972cc5
ui.js: Only set tabindex=-1 on elements which are otherwise not focusable
2019-07-22 13:41:52 +02:00
Johannes Meyer
dd4cfaba50
navigation.js: Store and load sidebar collapse state from localStorage
...
resolves #3628
2019-07-18 09:43:22 +02:00
Johannes Meyer
3310bbc680
js: Patch vendor library sparkline to ensure compatibility with jQuery v3
2019-07-18 07:57:14 +02:00
Johannes Meyer
f8d3f43965
js: Drop vendor library tipsy
2019-07-18 07:57:14 +02:00
Johannes Meyer
c100654412
js: Integrate vendor library jquery-migrate
2019-07-18 07:57:14 +02:00
Johannes Meyer
ec3a6b0572
ui.js: Don't use jquery blur shorthand but the element's native method
2019-07-18 07:57:14 +02:00
Johannes Meyer
b168c3d7db
js: Don't use jquery.focus shorthand anymore, but icinga.ui.focusElement
2019-07-18 07:57:14 +02:00
Johannes Meyer
f844094475
ui.js: Don't use deprecated .size() method but property .length
2019-07-18 07:57:14 +02:00
Johannes Meyer
6323a065ea
loader.js: Keep using the promise interface for complete callbacks
2019-07-18 07:57:14 +02:00
Johannes Meyer
5cf71c9bbd
js: Drop iframe-upload fallback for IE
2019-07-18 07:57:14 +02:00
Johannes Meyer
97d5b39662
helpers.js: Drop polyfills for IE8 and IE9
2019-07-18 07:57:14 +02:00