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
Jennifer Mourek
f6a5f952bb
loader.js: Remove comment
2019-07-18 07:56:09 +02:00
Florian Strohmaier
5fe264be6a
JS: Fix errors
...
refs #3813
2019-07-18 07:56:09 +02:00
Florian Strohmaier
77c8111162
JS: Update jquery to 3.4.1
...
refs #3813
2019-07-18 07:56:09 +02:00
Jennifer Mourek
55d35b9e5b
Remove jquery 1.11 dependency
...
refs #3784
2019-07-18 07:56:09 +02:00
Johannes Meyer
8893db0cbc
js: Drop a StorageAwareMap entirely from storage if all keys expired
2019-07-18 07:43:42 +02:00
Johannes Meyer
cfa3af51db
storage.js: Don't return in `StorageAwareMap.forEach`
2019-07-17 13:12:41 +02:00
Johannes Meyer
5c290e1b68
collapsible.js: Rename event callbacks
...
`onExternalCollapse` => `onCollapse`
`onExternalExpansion` => `onExpand`
2019-07-17 13:12:41 +02:00
Johannes Meyer
c976eb48c9
storage.js: Properly handle invalid values
2019-07-17 13:12:41 +02:00
Johannes Meyer
2280551484
storage.js: Use substring instead of startsWith on strings
...
IE11 doesn't support startsWith..
2019-07-17 13:12:41 +02:00
Johannes Meyer
f11de266f4
storage.js: Avoid to call JSON.parse with an empty string
...
IE11 seems not to like this..
2019-07-17 13:12:41 +02:00
Johannes Meyer
9561057b81
storage.js: Allow to subscribe with multiple handlers to the same key
2019-07-17 13:12:41 +02:00
Johannes Meyer
2bf050f57d
storage.js: Don't use the native event mechanism but a simple callback handling
2019-07-17 13:12:41 +02:00
Johannes Meyer
c05291296a
collapsible.js: Only apply external expansions/collapses if necessary
2019-07-17 13:12:41 +02:00
Johannes Meyer
2fd7ba5aed
storage.js: Utilize a single event listener for all storage events
...
It doesn't make sense to register an event listener for every
created storage instance. They're all using entirely different
keys after all.
2019-07-17 13:12:41 +02:00
Johannes Meyer
2ac848828a
storage.js: Prevent conflicts with other apps accessing the same storage
2019-07-17 13:12:41 +02:00
Johannes Meyer
0f16e20d92
storage.js: Write `null` instead of `undefined` to the storage
...
`undefined` causes the key to be ignored by JSON.stringify
2019-07-17 13:12:41 +02:00
Johannes Meyer
383895fd92
storage.js: Pass the value to event subscribers of StorageAwareMap
2019-07-17 13:12:41 +02:00
Johannes Meyer
8937e11a09
storage.js: Properly handle if keys are entirely removed
2019-07-17 13:12:41 +02:00
Johannes Meyer
363486277b
storage.js: Rename Storage.subscribe to onChange
2019-07-17 13:12:41 +02:00
Johannes Meyer
c5beabf891
storage.js: Cleanup `StorageAwareMap` key corpses after 90 days
2019-07-17 13:12:41 +02:00
Johannes Meyer
cbd1e1bb92
storage.js: Drop `StorageAwareSet` and replace it with `StorageAwareMap`
2019-07-17 13:12:41 +02:00
Johannes Meyer
8377a2d096
storage.js: Don't use .bind() to define a callbacks context
2019-07-17 13:12:41 +02:00
Johannes Meyer
03fc052749
storage.js: Directly use scope `window` to access `localStorage`
2019-07-17 13:12:41 +02:00
Johannes Meyer
95dee43f5b
storage.js: Just use a factory to create behavior storages
2019-07-17 13:12:41 +02:00
Johannes Meyer
3b7a1a5ab4
storage.js: Add method `on` to `StorageAwareSet`
2019-07-17 13:12:41 +02:00
Johannes Meyer
ffec2ebd4c
collapsible.js: Utilize storage.js
2019-07-17 13:12:41 +02:00
Johannes Meyer
e2cddc2d46
js: Introduce storage.js, a localStorage abstraction layer
2019-07-17 13:12:41 +02:00
Johannes Meyer
beae5b5921
collapsible.js: Update collapsible states when the layout changes
2019-07-17 13:12:41 +02:00
Johannes Meyer
0140fdf485
collapsible.js: Use `scrollHeight` to measure a container's actual height
2019-07-17 13:12:41 +02:00
Johannes Meyer
9f858a9073
ui.js: Trigger event `layout-change` when the layout changes
2019-07-17 13:12:41 +02:00
Johannes Meyer
a99f653a63
collapsible.js: Don't process collapsible containers multiple times
2019-07-17 13:12:41 +02:00
Johannes Meyer
fc782b59a9
collapsible.js: Don't collapse containers which are near to the maximum
2019-07-17 13:12:41 +02:00