Commit Graph

662 Commits

Author SHA1 Message Date
Aaron Boodman f1d9569e5d Fix wobbly checkmark.
A rendering bug in Chrome was causing some of the checkmarks to
wobble a bit on hover. This works around the issue.

Change-Id: I22ea0117075c8de13507d257ef0d1437f30e20df
2013-12-08 19:06:49 -08:00
Aaron Boodman 933e16ebf1 Replace special-case 'recent' query in web ui with new search.
Realized there was a way more elegant way to implement infinite
scroll. Now it is general to any kind of query (though not yet
to any kind of sorting, as there isn't support for continuing with
arbitrary sorts server-side).

Change-Id: I98dc627e1292524ddd8af8960c134f49ac41f337
2013-12-07 23:34:27 -08:00
Brad Fitzpatrick ccc9b2909e Merge branch 'master' of https://camlistore.googlesource.com/camlistore 2013-12-07 22:23:12 -08:00
Brad Fitzpatrick ffc6c39d40 Live search results via WebSocket.
Works in the debug page now, but not wired up to the main UI.
Leaving that for Boodman.

Change-Id: I0d0acf78cbcd228e95e391d724ea43571d174511
2013-12-07 22:22:45 -08:00
Aaron Boodman eadf181f43 Merge "Fix JS error when scrolling permanode page" 2013-12-08 04:29:12 +00:00
Aaron Boodman 75ac082159 Fix JS error when scrolling permanode page
Change-Id: Ibae861247e083f9aec5b14e428bf086a3631d721
2013-12-07 20:26:33 -08:00
Brad Fitzpatrick b2d221af44 Start of Camlistore WebSocket support, for showing live search queries in the UI.
If the JavaScript UI is open and the query you're looking at changes
due to new data arriving, the server should push the update search
results to you live, without needing to poll.

Change-Id: I00faf7737f9a459de39b21fb5226a8000feeee2b
2013-12-07 20:19:20 -08:00
Brad Fitzpatrick 76171ddb3d Change sorted.KeyValue.Find to take an optional end bound; add tests.
The new package sorted/kvtest provides a generic KeyValue test for all
implementations. Memory, SQLite, and kvfile now use it.

This speeds up the index slurping start-up of my personal Camlistore
server from 30 seconds (when it was doing 17,000+ queries in small
windows) to now just 5 seconds. That 5 seconds can be improved yet
further.

Change-Id: Idd55ba9ccd3ed12a26868a41db1af676aff7b67b
2013-12-07 08:43:18 -08:00
mpl 0af0ddd79f ui/toolbar: fix typo that was commenting out the button creation
Change-Id: I983dd6cfc9bbcf0ae1a9e302476d29ffa918663a
2013-12-06 23:50:58 +01:00
Aaron Boodman 4637b6676f Add a 'clear selection' button per Brad request.
Also clean up dispatch of the related events somewhat.

Change-Id: I6c0e5fe20f2d985463cc434f9efd5796108da869
2013-12-04 20:47:33 -08:00
Aaron Boodman 0e8ed35fe4 Merge "Beginning of infinite scroll for recent permanodes." 2013-12-05 03:49:00 +00:00
Brad Fitzpatrick 11a1745034 Add KeyBytes and ValueBytes accessor to sorted.KeyValue.Iterator.
Goal is to iterate faster (notably: for slurping the index to the in-memory
corpus on start-up), by doing fewer copies and generating less garbage.

Change-Id: I054b0de2b994eb1f2356aa8587a466bafeb6cf82
2013-12-04 14:18:52 +01:00
Brad Fitzpatrick b82b8efe4c Start of new context package and *context.Context type.
Will eventually be plumbed through lots of APIs, especially those requiring or benefiting from
cancelation notification and/or those needing access to the HTTP context (e.g. App Engine).

Change-Id: I591496725d620126e09d49eb07cade7707c7fc64
2013-12-02 13:20:51 -08:00
Aaron Boodman a22b12d9e7 Beginning of infinite scroll for recent permanodes.
This doesn't have a progress meter yet.

Change-Id: Iee089c99ff0fef2b2c724ccd5d6087eb4fa3f087
2013-12-01 22:59:39 -08:00
Aaron Boodman 0514b9fd3f Formatting cleanup in blob_item_container.js.
Change-Id: Id6430c205f2d97e9439105ce7498ae9bc8861557
2013-12-01 22:52:53 -08:00
Aaron Boodman 31a6685f1d When updating spinner, don't relayout entire doc
Change-Id: I004e691e015b8a5e64f95702dc1f08ac75c91c0f
2013-12-01 11:32:31 -08:00
Aaron Boodman bffbb0b349 Merge "Adds camlistore.Spinner, a progress meter based on the safe icon." 2013-12-01 18:09:50 +00:00
Aaron Boodman 9104eefb7c Adds camlistore.Spinner, a progress meter based on the safe icon.
This isn't used by anything yet, but will be used in subsequent changes.

Change-Id: I0bd3174b2e16f8cab814ce72425b5fa1fed8d07e
2013-12-01 10:08:47 -08:00
Brad Fitzpatrick 313f8d25cb camlistored: log more version info at start
Change-Id: I3e1e27f6a475e438bb3bf6c06ca3a0941a2944eb
2013-11-28 08:55:53 -08:00
Brad Fitzpatrick eae8a74fc9 serverconfig/genconfig: add kv queues to all sync handlers.
In the future this might be more configurable (e.g. mysql or sqlite or whatever, or different
paths).  But this works for now.

Change-Id: I85853e6bfdd9063fc2eba5922b138d5552b730a9
2013-11-24 15:12:11 -08:00
Brad Fitzpatrick 9e3a9fde51 server/camlistored: add start-up test that tests default production config file
Marked as broken for now. Will fix in subsequent commits.

Change-Id: If41932a72312ce8fbde1d237c3f84fa0acae83ee
2013-11-24 15:03:34 -08:00
Brad Fitzpatrick 1f407edd58 sorted: add Close method to KeyValure; register 'kv' impl type for cznic/kv
Change-Id: Ie4e21450dac9dad3433c65631706f52527502cbc
2013-11-23 21:07:03 -08:00
Brad Fitzpatrick 8cd6084aef Merge "Display a folder icon and make camliPath attributes navigable." 2013-11-23 16:04:57 +00:00
Brad Fitzpatrick 90c1e48afe Rename index.Storage to sorted.KeyValue and move it into a new package.
Having index.Index and index.Storage both in the same package led to
confusing discussions about "an index". Better names now, and smaller
packages.
2013-11-22 23:24:54 -08:00
Aaron Boodman 650bd9b61e Display a folder icon and make camliPath attributes navigable.
Like we do for camliMember.

Change-Id: I2db51d7397e0f8ab86ea71716fe06099ba22005a
2013-11-22 22:49:07 -08:00
Brad Fitzpatrick 70475701d1 Get rid of QueueCreator and all its associated complexity.
Previous TODO entry was:

-- Get rid of QueueCreator entirely. Plan:
     -- sync handler still has a source and dest (one pair) but
        instead of calling CreateQueue on the source, it instead
        has an index.Storage (configured via a RequiredObject
        so it can be a kvfile, leveldb, mysql, postgres etc)
     -- make all the index.Storage types be instantiable
        from a jsonconfig Object, perhaps with constructors keyed
        on a "type" field.
     -- make sync handler support blobserver.Receiver (or StatReceiver)
        like indexes, so it can receive blobs.  but all it needs to
        do to acknowledge the ReceiveBlob is write and flush to its
        index.Storage. the syncing is async by default. (otherwise callers
        could just use "replica" if they wanted sync replication).
        But maybe for ease of configuration switching, we could also
        support a sync mode.  when it needs to replicate a blob,
        it uses the source.
     -- future option: sync mirror to an alternate path on ReceiveBlob
        that can delete. e.g. you're uploading to s3 and google,
        but don't want to upload to both at once, so you use the localdisk
        as a buffer to spread out your upstream bandwidth.
     -- end result: no more hardlinks or queue creator.

Change-Id: I6244fc4f3a655f08470ae3160502659399f468ed
2013-11-22 14:33:31 -08:00
mpl f8b41e236e Merge "server/publish.go: use go html template for publishing" 2013-11-19 22:22:17 +00:00
mpl a6aeff034c server/publish.go: use go html template for publishing
Change-Id: Ic1c55d35e52e407864d339927b453de58a64e03c
2013-11-19 17:50:26 +01:00
Aaron Boodman 3f7543853a Bugfix: incorrect baseURL passed to InstallHandlers
Change-Id: Iaf26a806358cd82ca09c48d83ca86155e27c289d
2013-11-17 00:41:01 -08:00
Aaron Boodman e4f25a2444 First little bit of Flickr importer.
Change-Id: Ia42b07a81b01904f5722d06653c4bf9de2e81c64
2013-10-20 11:18:53 -07:00
Brad Fitzpatrick cf116c6da9 importer: work on infrastructure for third-party import from other sites
Change-Id: Ib4e5e4d543a1b2a913b99fa0a4d92f1a5b94c5dc
2013-10-19 15:48:05 -07:00
Aaron Boodman 02665d5d3c Use pushstate() to give searches URLs and history entries.
Also, remove note about bref support from search instructions since
apparently that isn't supported yet.

Change-Id: I1ccbb8be44aa62ae7191aef913c7a226fd90a775
2013-10-16 23:54:26 -07:00
Aaron Boodman 8418852996 Combine search and index page functionality.
Also:

* Changed favicon to a safe
* Clean up design of toolbar
* SVG support buggy in Chrome, replace SVG checkmark icons with PNG

Screen cap:
http://vault.aaronboodman.com/share/sha1-2dbb2b515fc84f2ef1395ee263cd41c1a6700de2?via=sha1-6eb9c7651ffa8e6f4f95e8fc6800a4672c4e179a&assemble=1

Change-Id: Ic5d2eb30ea1d72022a2b8804cae887319ac32a1b
2013-10-16 01:08:02 -07:00
Aaron Boodman 74eb8e6c3c Further visual refinements to layout of homepage:
* Increase default image size a few settings
* Increase gutter between items
* Remove extraneous padding and whitepsace
* Remove unneeded gigantic heading
* Move build version into statusbar
* Change algorithm for fitting rows -- instead of preferring to clip
  edges of image, instead prefer to adjust height of rows. I find it
  looks more interesting visually when the widths of the images vary
  more.
* Replace folder and file icon with something better looking
* Swap order of + and - buttons in toolbar, they were backward from
  what is typical

Change-Id: Idfe85a813926c2c9eea774a86046df62ecacd45c
2013-10-04 14:04:38 -07:00
Aaron Boodman aac43b56fc Move to "G+-style" selection.
To select an item, click the checkmark that overlays on rollover.
To navigate, just click anywhere else on the item.

Also move selection from additive by default rather than exclusive.

Change-Id: I47e6ca1942fe1fdaaf615f6ab0e0a547f1a51735
2013-10-03 22:06:31 +00:00
Aaron Boodman f322018816 Move the button to create permanode into toolbar.
Also:
* Make the entire BlobItemController a drop target for new files,
  except for when over a set, then the set is the target.
* Minor visual refinements to highlight states during dragging.
* Fix bugs/flicker in dragdrop code.
* Fix bug where there is an empty button in toolbar before the first
  item is selected.

Change-Id: I3c40a476395c885477e1316e6ff168399640e347
2013-10-01 00:16:29 -07:00
Brad Fitzpatrick 128f56887b Handle GET and HEAD the same in more (all?) places.
Change-Id: I486a95f0a6fc127d17dcf0abeb94eab292980156
2013-09-15 20:12:26 +01:00
Andrew Gerrand 4ca346f124 add diskpacked storage system
Change-Id: Ieb16459c06d596ad49bbe78b6e058955fcd6f649
2013-09-02 10:35:32 +10:00
Brad Fitzpatrick ca64e4f508 camlistored: on SIGINT, shut down cleanly, closing the kvfile index db
Change-Id: Ifcb8c22b088586bc72ad98dacc3be2d46e77928b
2013-08-26 21:07:28 -05:00
Brad Fitzpatrick ef6bc9499e Merge branch 'master' of https://camlistore.googlesource.com/camlistore 2013-08-25 12:58:34 -05:00
Brad Fitzpatrick 46020e1551 Make kvfile index the default if SQLite isn't available.
We now work out of the box, with no external dependencies.

Change-Id: I8d0cedb33518e418a7ff28cdb22f9ba9ef400d6f
2013-08-25 12:57:51 -05:00
Brad Fitzpatrick 1e15d7ee89 Merge "camlistored: Adding --openbrowser flag, determines whether start page should be opened in browser. Start page should be / on the initial startup to let the user to config the server, and /<uiPath> on the following starts." 2013-08-25 17:31:35 +00:00
Burcu Dogan d0d5f3a1fa camlistored: Adding --openbrowser flag, determines whether start page should be opened in browser. Start page should be / on the initial startup to let the user to config the server, and /<uiPath> on the following starts.
Change-Id: I3ac055161c5023bd338fccccda83376df7381c64
2013-08-25 12:30:46 +02:00
Brad Fitzpatrick d6a0b34e5f camlistored: link in kvfile
Change-Id: I55f65275b45f7de0efc0c52e84ac61f4baebaa38
2013-08-23 17:14:33 -05:00
Josh Huckabee 8bf1eb8a9b Add postgres setting to default config file.
Change-Id: I45f374e61f17286f5c825ef537d052407ff1bccd
2013-08-22 10:02:58 -07:00
Brad Fitzpatrick ae20a0f7de Ditch App Engine ContextWrapper noise; add test that App Engine always compiles.
I had broken App Engine in my previous commit, since it wasn't part of 'make presubmit'

Change-Id: I32c25efbc7c348ff516128c87b6e817ae0685386
2013-08-21 18:51:10 -05:00
Brad Fitzpatrick b24cad68dd Cleanup: remove BlobHub and time.Duration waits from storage interface
Move up a layer to the HTTP.  Also, start to remove ContextWrapper
stuff.  We've done it differently for App Engine instead, and will do
it differently yet moving forward.

Also add blobserver.Receive and use it in most places, moving checksum
verification up a layer.

Bunch of other cleanup and TODO fixing too.

Much simpler and cleaner.

Change-Id: I12e56c5d4e53bfcf82bdd8fb0b6d57c248ff605c
2013-08-21 13:57:28 -07:00
mpl a41c89a24e devcam appengine: replaces ./dev-appengine
Change-Id: Ic4adcb8898fc3ead801aefd679682bcc646f3573
2013-08-20 00:10:01 +02:00
Brad Fitzpatrick b0d2a8f0e5 Merge "Adding Google Drive as a storage backend experimentally. No cheap-enough way of enumerating Drive files, needs to be fixed once Drive supports range queries. Allows you to sync to /sto-googledrive/, but not from." 2013-08-17 15:51:51 +00:00
Burcu Dogan 6e6e910af1 Adding Google Drive as a storage backend experimentally. No cheap-enough way
of enumerating Drive files, needs to be fixed once Drive supports
range queries. Allows you to sync to /sto-googledrive/, but not from.

Change-Id: I6ac5ef02c5f51a6abdab5c207a3a5693c6bb8581
2013-08-17 15:30:02 +02:00