Commit graph

1957 commits

Author SHA1 Message Date
Mihai Varga
906e9e28fc Search scrolls to result if it's out of the viewing area 2015-05-13 12:39:57 +03:00
Mihai Varga
5e4225c860 In fact, it is better not to prefix the url 2015-05-13 12:05:13 +03:00
Mihai Varga
04d2b531a1 Check if file:// is added in the url 2015-05-13 12:01:10 +03:00
Mihai Varga
0a7e20e851 Encode spaces in the URL 2015-05-13 11:54:12 +03:00
Mihai Varga
124de292d1 Updated the text selection handler
And also removed an unnecessary method
2015-05-13 11:17:34 +03:00
Mihai Varga
e4b1624d2b Updated the search bar to send the correct command to the server 2015-05-13 11:17:34 +03:00
Mihai Varga
bc23033537 Fixed tiwps->latlng and backwards conversion 2015-05-13 11:17:33 +03:00
Mihai Varga
d78642806a Removed URL tiles specific methods 2015-05-11 17:55:38 +03:00
Mihai Varga
47e301cc92 Parts command from the server is parsed but not yet interpreted 2015-05-11 17:05:03 +03:00
Mihai Varga
4c6d87231c Parts control for switching between parts 2015-05-11 17:05:03 +03:00
Mihai Varga
90b3b32bbc Renamed method to _parseServerCmd 2015-05-11 17:05:03 +03:00
Mihai Varga
13582c7f04 Fixed typo 2015-05-11 17:05:03 +03:00
Mihai Varga
febaaa1900 Mouse event handlers for selection 2015-05-08 15:24:47 +03:00
Mihai Varga
1858147801 Twips to latlng and reverse methods 2015-05-08 15:24:26 +03:00
Mihai Varga
affdbc6ff1 Added search command (from the server) handler 2015-05-08 13:58:13 +03:00
Mihai Varga
5dabc12660 Search bar buttons are updated based on the current search index 2015-05-08 13:56:28 +03:00
Mihai Varga
c622852514 Removed the Draw plugin interface
We don't actually need this plugin because the server
dictates how the selection will work.
Will remove the whole plugin when I'm sure this won't have other
applications
2015-05-08 11:44:37 +03:00
Mihai Varga
5bde4775f6 Added cancel search button + search bar sends propper events 2015-05-08 11:10:48 +03:00
Tor Lillqvist
d3acdbb225 String::startsWith is Firefox-only it seems 2015-05-06 18:41:09 +03:00
Mihai Varga
15a889db91 Search bar implemented as a leaflet Control
It is not ready yet, buttons' functionality and the search
functionality is to be added
2015-05-06 12:39:03 +03:00
Mihai Varga
57a2663cb9 Search bar bax with prev and next buttons 2015-05-06 10:41:26 +03:00
Mihai Varga
1b5f9b1f22 Readme update that describes how to open a doc 2015-05-06 10:08:56 +03:00
Mihai Varga
bc5bee6751 Smoother scroll without intertia 2015-05-06 09:44:32 +03:00
Mihai Varga
b9351c6fed Forgot to replace evt.data with textMsg 2015-05-06 09:37:44 +03:00
Mihai Varga
6c6f8c29de Document file path and host are encoded in the url
Usage:
http://web-page?file_path=/PATH/TO/DOC&host=ws://localhost:9980
2015-05-06 09:35:22 +03:00
Mihai Varga
22276e7975 Better msg reading method that allows adding new types of msgs 2015-05-04 18:36:47 +03:00
Mihai Varga
4b31303cc0 Let leaflet track window resize 2015-05-04 18:02:32 +03:00
Mihai Varga
55508c6680 Enabled doc. nagivation by keyboard and mousewheel
Scrolling now works from the arrowkeys, pgUp, pgDown
Home and End buttons and also from the mouseWheel
TODO update the compressed file
2015-05-04 16:29:23 +03:00
Mihai Varga
bc29447b86 Removed trailing whitespaces from scrollbar code 2015-05-04 16:26:02 +03:00
Mihai Varga
7d3458eb5e This fixes a bug that's triggered when zooming at document's end 2015-05-04 11:20:36 +03:00
Mihai Varga
a03e9f2e73 Updated readme to reflect the new changes 2015-05-04 11:20:36 +03:00
Mihai Varga
fa15ef1b20 Updated the example document 2015-05-04 11:20:36 +03:00
Mihai Varga
320e094a47 Scroll event handlers + document centering
The document is centered by setting map's maxBounds
There are 2 types of scroll events:
 - one generated during scrolling which actually pan's the map
 - one generated when scrolling stops, this is used to keep track of
    scrolling events
When the document is zoomed, the scrollbars are placed at the right
offset as the document's dimension changes and this is done with
the scrollTo method after temporarily disabling the event listener.
2015-05-04 11:20:36 +03:00
Mihai Varga
f0502879b4 New containers + restored some methods implementations to their original
Added scrollContainer - the div that will get scrollbars
mockDoc - a mock document div of size equal to the document's, which
    will cause the appearance of scrollbars

The size of the map now equals the visible area, so I've restored
the methods to work on this new size
2015-05-04 11:20:36 +03:00
Mihai Varga
c788ab8886 Event handlers for the new scrollbars 2015-05-04 11:20:36 +03:00
Mihai Varga
bee74de059 CSS updates for the new div elements 2015-05-04 11:20:36 +03:00
Mihai Varga
43c68037ec Custom scrollbars for document navigation
jQuery scrollbars, they should be easy to replace if we find something
better, maybe something written in vanilla javascript
Github project: https://github.com/malihu/malihu-custom-scrollbar-plugin
MIT license available at:
https://github.com/malihu/malihu-custom-scrollbar-plugin/blob/master/LICENSE.txt
2015-05-04 11:20:36 +03:00
Mihai Varga
dd8a9f8145 Leaflet small fixes 2015-05-04 11:20:36 +03:00
Tor Lillqvist
1b06290d2b Add a part parameter to the tile messages
The JS code always passes in 0 for now. The server parses the parameter and
calls LibreOfficeKitDocument::setPart() before calling paintTile().

Probably also the status, key, mouse and selection messages will need a part
number. The intent is after all that the protocol is as stateless as
possible. (So maybe we should also pass the document URL in each message?)
2015-04-27 21:30:26 +03:00
Mihai Varga
9cd120f7ab Restore scrollbar offset 2015-04-27 16:03:50 +03:00
Mihai Varga
b6671341a7 The map handles keypress events but no panning keys 2015-04-27 10:18:13 +03:00
Mihai Varga
7fa1ae861d The map should not yet handle keyboard events 2015-04-27 09:57:06 +03:00
Mihai Varga
caf7c2e6c6 The map should not trace a resize event
The container div should handle the resize by updating the scrollbars
This fixes the map crash during window resize.
2015-04-24 17:21:38 +03:00
Mihai Varga
497a50c76d Tiles are added again in batch
This gives us smoother and faster tile loading
and a tile is requested just once
2015-04-22 20:49:20 +03:00
Mihai Varga
d0f77df767 Removed image link 2015-04-22 20:15:42 +03:00
Mihai Varga
caf1773e54 The map no longer moves when zooming == smoother zooming
The zoomed tiles now perfectly match the new ones that are about
to be received from the server.
The zooming factor is again exponentail (1.2) instead of linear.
TODO: when the window size modifies the gets paned out of the bounds
2015-04-22 17:49:06 +03:00
Jan Holesovsky
0214f331e7 test document: Make it clear the white area is deliberate. 2015-04-22 08:41:09 +02:00
Jan Holesovsky
ff81959c7b Updated the loleaflet README. 2015-04-21 16:03:48 +02:00
Mihai Varga
37dfad0672 Removed pop that displays pixel location 2015-04-15 14:02:33 +03:00
Mihai Varga
3bf5939f8c We no longer need the timeout
Another commit must have fixed the thing that caused the crash
2015-04-15 10:16:47 +03:00
Mihai Varga
62c394f5bd This does not work well yet 2015-04-15 10:13:57 +03:00
Mihai Varga
57a0050421 Selection handler in leaflet 2015-04-13 20:46:09 +03:00
Mihai Varga
b666dc7d47 This better handles the scroll percentage after zooming 2015-04-13 10:39:12 +03:00
Mihai Varga
54d0af6fb8 How zoom works 2015-04-10 16:29:01 +03:00
Mihai Varga
144c9ab1df Fixed some js lint errors 2015-04-10 16:23:23 +03:00
Mihai Varga
2aa7f55ea8 Zooming now works properly
The initial zoom level is 10 and it goes to:
1, which is 10% and 20, which is 200%
2015-04-10 16:15:55 +03:00
Mihai Varga
9ecc37d433 Method for adding map controls to the toolbar div 2015-04-10 14:23:46 +03:00
Mihai Varga
565ac27cb6 Readme instruction on how to use archived modules 2015-04-10 10:33:19 +03:00
Mihai Varga
225bbbc24a Added essential node modules to avoid npm install 2015-04-10 10:29:58 +03:00
Mihai Varga
94f8076332 Map initial maxBounds are set in the constructor 2015-04-08 11:38:45 +03:00
Mihai Varga
4d8028613b Document is placed in the middle of the screen 2015-04-08 11:01:45 +03:00
Mihai Varga
e0da2747cc RemoveAll method for removing all selections 2015-04-07 20:21:32 +03:00
Mihai Varga
d8c221b9c2 Renamed tooltips to resemble selection and removed surface area 2015-04-07 20:20:27 +03:00
Mihai Varga
0120711974 Place toolbar items next to each other 2015-04-07 18:01:43 +03:00
Mihai Varga
a212001512 Workaround for drawing shapes bug.
Without this shapes cannot be shrunken when they are being drawn.
If draw a shape and then move the mouse inside it (to reduce its size)
the wrong type of event is fired and the shape is not updated.
2015-04-06 17:20:43 +03:00
Mihai Varga
e2d5e35597 README update 2015-04-06 17:14:21 +03:00
Mihai Varga
4b7362ac08 Ignore resulting js files in dist 2015-04-06 17:09:27 +03:00
Mihai Varga
a7f9b427d6 This is generated by the build 2015-04-06 17:06:50 +03:00
Mihai Varga
98e9b6ecb0 Added draw control to the example html doc 2015-04-06 17:02:43 +03:00
Mihai Varga
20195a3f43 Fixed js lint errors 2015-04-06 16:30:09 +03:00
Mihai Varga
f76216071e Use node modules from leaflet 2015-04-06 16:20:46 +03:00
Mihai Varga
c88e7260a4 This file is generated by the build, no for it to be on git 2015-04-06 12:39:11 +03:00
Mihai Varga
ff700ae813 Added Leaflet.Draw-0.2.4
Draw is a plugin that adds support for drawing and editing vectors and
markers on Leaflet maps. This will be used to create selections on the
document.
Source code: https://github.com/Leaflet/Leaflet.draw
Licence: MIT
2015-04-06 12:23:19 +03:00
Mihai Varga
206a2538d6 Container's background color is the same as document's #F0F0F0 2015-04-06 10:09:16 +03:00
Mihai Varga
3fc926348d Zooming is animated again 2015-04-06 09:55:12 +03:00
Mihai Varga
4d66d025fa Center restore after zoom 2015-04-03 17:22:19 +03:00
Mihai Varga
f870f78e1d Prefetch 1 tile wide border around current visible area
If the user scrolls slowly he won't notice the loading tiles.
2015-04-03 14:04:01 +03:00
Mihai Varga
54cf584a35 Only load tiles from the visible area (outer container)
Previous to this, the whole documnet was loaded because of the way
scrollbars have been added.
Now the visible area is determined by the current scrollbar position
and the outer container's size.
2015-04-03 14:00:59 +03:00
Mihai Varga
67e183105f This places the controls above the map (in another div)
I have no experience with css but this works
TODO: needs proper fixing
2015-04-03 12:01:02 +03:00
Mihai Varga
61210a92a3 Initialize the outer div (container) in map's constructor
This will be later used to get the center of the viewspace
2015-04-02 19:36:22 +03:00
Mihai Varga
48c92dd555 Document is no longer dragable and scrollable
Mouse scrolling is now actualy scrolling instead of zooming
2015-04-01 13:10:17 +03:00
Mihai Varga
3da367096d Don't request invalid tiles 2015-04-01 11:24:31 +03:00
Mihai Varga
0811e2eb99 Use L.DomUtil instead of direct element access 2015-04-01 11:12:45 +03:00
Mihai Varga
d1fe237992 Update document info only if given status is different
Document info = height and width
2015-03-31 19:55:37 +03:00
Mihai Varga
283b35ab6e This fixes the loading problem
The document now loads and zooms smoothly
2015-03-31 19:51:42 +03:00
Mihai Varga
c22280f47c Removed unnecessary map._update() call 2015-03-30 19:22:17 +03:00
Mihai Varga
04403ff782 Update div dimension when zooming for the scrollbar 2015-03-30 19:21:21 +03:00
Mihai Varga
4944fcc57d Detached controls from the map and added scrollbars
The "controls" div holds map controls suchs as the Zoom button and
it's separated from the map in order to have the controls on the top
of the page all the time.

The "document-container" div is the actual display of the document, is
what the user sees and it should be no larger than the screen size.

The "map" div is the actual document and it has the document's size
and width, this being inside the smaller "document-container" will
cause the content to overflow, creating scrollbars
2015-03-30 19:20:04 +03:00
Mihai Varga
5d6cbc4ed8 Switched the order in which docPixelLimits is created 2015-03-30 19:18:58 +03:00
Mihai Varga
c6ecfeaf8a Adapt document loading command to new protocol 2015-03-30 19:16:50 +03:00
Mihai Varga
b138c2431d Tiles are cached on the client side
Updated the removeTile method to just mark the tile as
not current and the set _update method not to 'hide'
(set opacity to 0) tiles from the current zoom level
2015-03-24 16:26:40 +02:00
Tor Lillqvist
32de8661bc Mention how to run npm without root 2015-03-24 13:15:43 +02:00
Mihai Varga
3b2c3a69df Mentioned about 'jake lint' in README 2015-03-23 19:37:42 +02:00
Mihai Varga
dc97c7eabd Fixed some lintjs coding style errors 2015-03-23 19:36:01 +02:00
Mihai Varga
624873cf47 Added instructions on how to use loleaflet + an example 2015-03-23 19:24:39 +02:00
Mihai Varga
31f5141c46 Added zoom functionality
The document can be zoomed in an out. Each zoom level corresponds
to a 20% increase or decrease in tile dimmension (in twips).
Zooming doesn't work well yet. Tiles are removed and readded to
many times and it looks bad. Also the zooming center has to be fixed.
2015-03-23 19:05:25 +02:00
Mihai Varga
5db22c1962 Temporary dded zoom control back 2015-03-23 18:57:23 +02:00
Mihai Varga
3921903e8e MaxBounds are set automatically based on the size specified by loolwsd 2015-03-20 10:05:22 +02:00
Mihai Varga
fe757bfc12 Workaround for Leaflet issue #3320 2015-03-20 10:02:58 +02:00
Mihai Varga
aa5d7c9ccc Fixed tiles interleaving problem + allowed static layers to be added
Tiles are now correctly displayed.
Layers that request tiles from a socket connection need to specify
the 'useSocket: true' option. This way layers that do not require an
internet connection can be added (like a grid, ruler, etc.).
I've also fixed some coding style problems suggested by lintjs
2015-03-19 19:08:29 +02:00
Mihai Varga
0c5b654194 Tiles are now loaded from a loolwsd server
the '_addTile' method now also handles tiles comming from a websocket.
Tiles are no longer added in one batch as they are added when received.
Added twip to pixel and pixel to twip convertor methods.
1 twip = 15 px
2015-03-16 17:46:20 +02:00
Mihai Varga
a8075b8250 Added websockets to the Map object
'onopen' and 'onmessage' events are handled
in src/layer/tile/TileLayer.js
Tile data is received as an ArrayBuffer which contains a string message
followed by a new line and then by the actual PNG data. The PNG data
is encoded in base-64 in order to be displayed.
2015-03-16 17:38:19 +02:00
Mihai Varga
2213e76a32 Removed zoom control and attribution display 2015-03-16 17:33:07 +02:00
Mihai Varga
87dc6f5b8f Set LF line terminator 2015-03-09 15:58:37 +02:00
Mihai Varga
3d64e7764f Readme that explains how to build and states code convetions 2015-03-09 15:54:27 +02:00
Mihai Varga
699cab4ced Removed initial README and contributing guide 2015-03-09 15:54:01 +02:00
Mihai Varga
bb6fd2206a Unmodified Leaflet
Checkout date: 09/03/2015
HEAD: a92c8a3c21f8d580de2dfd1e937ea90db76787b6
2015-03-09 12:16:17 +02:00