939 Commits

Author SHA1 Message Date
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