Commit Graph

132 Commits

Author SHA1 Message Date
jahow cd186ada7f Add new tests for View & Interaction w/ fixes 2019-02-22 15:01:30 +01:00
Olivier Guyot a6f65df8c4 View / add a resolveConstraints method to end interactions
This will help making sure that the view will come back to a "rested" state
once the interactions are over.

Interactions no longer need to handle the animation back to a rested state,
they simply call `endInteraction` with the desired duration and direction.
2019-02-22 15:01:30 +01:00
Olivier Guyot 1c5fd62e43 View / refactor how zoom and resolution are computed
This commit aims to simplify the computation of zoom and resolution in the
View class.

Previously zoom levels and resolution computations were mixed in different places,
ie resolution constraints, initial values, etc.

Now the View class only has the `getZoomForResolution` and `getResolutionForZoom`
methods to convert from one system to another.

Other than that, most computations use the resolution system internally.

The `constrainResolution` method also does not exist anymore, and is replaced
by `getValidResolution` and `getValidZoomLevel` public methods.
2019-02-22 15:01:30 +01:00
Olivier Guyot 1f379a06a4 View / add support for viewport extent constraint
This introduces a breaking change:

The `extent` view option now constrains the whole viewport and not just the
view center.
The option `constrainOnlyCenter` was added to keep the previous behaviour.

Constraining the whole viewport and not only the view center means
that the center and resolution constraints must be applied with a knowledge of
the viewport size.
2019-02-22 15:01:30 +01:00
jahow e52fab636c View / apply constraints automatically based on hints
All constraints can now function differently if they are applied during
interaction or animation.
2019-02-22 15:01:30 +01:00
jahow d991dfa54a View / remove constrainCenter method 2019-02-22 15:01:30 +01:00
jahow c2c1aa01d3 View / removed the constrainRotation method 2019-02-22 15:01:30 +01:00
Olivier Guyot e6c4b2ffd1 View / make the constrainResolution function private
Other classes should not need to worry about constraining the resolution
or not, as the View will eventually do this on its own.
2019-02-22 15:01:30 +01:00
Olivier Guyot 3c1e3779e2 View / add a method to compute a valid zoom level
The `getValidZoomLevel` apply the current resolution constraint to return
a value that is guaranteed valid.

This is used for interactions & controls which need a target value to work:
the +/- buttons, the zoom clider, the dragbox zoom and the mouse wheel zoom.
2019-02-22 15:01:30 +01:00
Olivier Guyot 4e1ece16ed View / implemented begin- and endInteraction methods 2019-02-22 15:01:30 +01:00
Olivier Guyot 1cb934dbe3 View / implement intermediate values for center/rot/res
The view now has targetCenter, targetRotation and targetResolution members.

These hold the new values given by set* methods. The actual view parameters are then changed by
calling `applyParameters_`.
2019-02-22 15:01:30 +01:00
Frederic Junod b1602877d9 Remove type cast in ol.View 2018-12-12 12:54:41 +01:00
Niklas Alt 4bc9216e41 Add ': void' to non returning functions (error TS7014) 2018-12-06 19:57:45 +01:00
ahocevar 9163558511 Replace instanceof checks with other logic 2018-10-12 20:35:59 +02:00
Frederic Junod 9c52e0d6d9 Remove extra imports in jsdoc
The symbols are already imported (es6 import)
2018-09-19 14:52:58 +02:00
Tim Schaub f6e6878909 Brackets for optional properties 2018-09-06 11:01:59 -06:00
Tim Schaub 895bfcea8e Optional properties for animation 2018-09-06 09:21:17 -06:00
Tim Schaub ccfacc5ee6 Transformed types
Using the [ts.js codemod](https://gist.github.com/tschaub/1ea498c9d1e5268cf36d212b3949be4e):

    jscodeshift --transform ts.js src
2018-09-05 08:05:29 -06:00
ahocevar f3cd1d8dfd Round center in viewState 2018-08-09 18:16:58 +02:00
ahocevar fc19e3e12e Avoid block scope issues in transpiled code 2018-08-09 10:22:42 +02:00
Tim Schaub 6cfa2b22a7 Explicit void 2018-07-26 10:46:39 -06:00
Tim Schaub affbf59b77 Use Object<Foo, Bar> instead of Object.<Foo, Bar> 2018-07-25 18:33:49 -07:00
Tim Schaub d12ef20b12 Use Array<Foo> instead of Array.<Foo> 2018-07-25 18:32:43 -07:00
Tim Schaub e5493d1288 Add ol/pixel module for Pixel type 2018-07-19 10:17:00 -06:00
Frederic Junod 5d2cf66380 Add missing 'targetRotation' property in Animation typedef 2018-07-19 16:02:58 +02:00
ahocevar 4f26f145ae Use extends and super for View 2018-07-17 14:20:48 +02:00
Frederic Junod f2d0b11d24 Move jsdoc constructor comments 2018-07-17 09:59:00 +02:00
Tim Schaub f78d0d4cfa Manual class transform 2018-07-16 17:09:50 -06:00
ahocevar 28409486a5 Make classes in ol/ available as named exports from ol 2018-06-21 18:08:17 +02:00
Frederic Junod 90ce02941a Better code indentation 2018-05-14 14:58:36 +02:00
Frederic Junod af1f6836af Shorter module paths for default exports 2018-05-09 11:24:43 +02:00
Tim Schaub 5b65336328 Remove remaining ol.foo notation from the source 2018-05-07 21:21:50 -06:00
Frederic Junod c4dba00c54 Add minZoom to the createResolutionConstraint function return type 2018-04-27 16:21:59 +02:00
ahocevar 440d1ad3e1 Shorter module paths for default exports 2018-04-25 17:25:39 +02:00
ahocevar 417dd85f83 Fix some jsdoc path types 2018-04-21 10:17:53 +02:00
Frederic Junod 29b37b179c Move olx.ViewState to ol/View 2018-03-23 11:42:46 +01:00
Frederic Junod 218ca38f1d Use path type instead of ol.Coordinate 2018-03-19 08:29:50 +01:00
Frederic Junod bde23826e2 Use 'module:ol/View~FitOptions' instead of 'olx.view.FitOptions' 2018-03-13 16:24:43 +01:00
Frederic Junod bb3072153b Remove undefined type when the property is optional 2018-03-13 12:33:35 +01:00
Frédéric Junod 92d864ee92 Merge pull request #7975 from fredj/jsdoc_default
Mark optional property with square brackets
2018-03-13 11:15:35 +01:00
Frederic Junod 813b72251a Mark optional property with square brackets 2018-03-12 15:58:44 +01:00
Frederic Junod 35158efbf0 Fix spelling 2018-03-12 15:18:58 +01:00
Tim Schaub 57d135e9f6 Move AnimationOptions to ol/View 2018-03-11 10:37:57 -06:00
Tim Schaub a69a1f3ff4 Coordinate type typo 2018-03-11 08:36:54 -06:00
Andreas Hocevar 95d6251dbb Get rid of olx.js and typedef.js typedefs for ol 2018-03-08 18:57:24 +01:00
Frederic Junod 500a017faf Better code indentation 2018-03-05 15:36:40 +01:00
Frederic Junod b50a47114e Move the nullFunction to ol/functions
And rename it to `UNDEFINED`.
2018-03-01 14:41:18 +01:00
Frederic Junod 73b15ef8d7 Better code indentation 2018-02-28 16:46:45 +01:00
Frederic Junod f1d32e71cd Named exports from ol/View 2018-02-21 09:05:40 +01:00
Frederic Junod a8f4348add Fix parens grouping in typecasts 2018-02-15 08:44:35 +01:00