# [annotator-dev] Trouble setting up local storage

Gareth Highnam gareth862 at gmail.com
Tue Mar 10 03:50:58 UTC 2015

Yes! This was the finishing touch. It looks like there are some issues with
the MathJax equations I am testing on, but that is a problem for another
topic :) Thanks Shauna and Randall,

Gareth

On Mon, Mar 9, 2015 at 9:17 PM, Randall Leeds <tilgovi at hypothes.is> wrote:

> It looks like you're setup is working fine, except you need to put that
> Array into the rows key of a result object and add a total count.
>
> On Mon, Mar 9, 2015 at 7:17 PM, Randall Leeds <tilgovi at hypothes.is> wrote:
>
>> You said you were using MongoDB + Node.js for your server. Did you write
>> this yourself? Have you looked at this one:
>> https://github.com/hyperstudio/MIT-Annotation-Data-Store ?
>>
>> You need to return the totals and rows in your response to the search on
>> the server.
>>
>> On Mon, Mar 9, 2015 at 7:11 PM, Gareth Highnam <gareth862 at gmail.com>
>> wrote:
>>
>>> Do you see anything wrong with this post? If I look at the response (as
>>> suggested by Shauna), this is what is returned by the loadFromSearch, but
>>> nothing appears on the page itself.
>>>
>>> Also worth noting - there is no "totals" or "rows" object returned by
>>> search, but the docs say they should be expected.
>>>
>>> [ { _id: 54fe3df73cd83186094364ad,
>>>     quote: 'are two solu',
>>>     uri: 'http://www.example.com/anno/anno.html',
>>>     id: 54fdd3ce6c8417cd71810cf9,
>>>     __v: 0,
>>>     permissions: [],
>>>     tags: [],
>>>     ranges:
>>>      [ { start: '/p[2]',
>>>          startOffset: 22,
>>>          end: '/p[2]',
>>>          endOffset: 35,
>>>          _id: 54fe3df73cd83186094364ae } ],
>>>     text: 'do this',
>>>     updated: Mon Mar 09 2015 20:42:31 GMT-0400 (EDT),
>>>     created: Mon Mar 09 2015 20:42:31 GMT-0400 (EDT) } ]
>>>
>>> On Mon, Mar 9, 2015 at 9:02 PM, Randall Leeds <tilgovi at hypothes.is>
>>> wrote:
>>>
>>>> No. Annotator will use the "id" field for substitution in the URL,
>>>> though. It's important that it be accurate. Annotator will completely
>>>> ignore _id.
>>>>
>>>> On Mon, Mar 9, 2015 at 6:47 PM, Gareth Highnam <gareth862 at gmail.com>
>>>> wrote:
>>>>
>>>>> One more question - will it break things if there is both an "_id"
>>>>> field and a "id" field for each entry (and they are identical)?
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Mar 9, 2015 at 6:04 PM, Gareth Highnam <gareth862 at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I did create a new "id" field that copied "_id", although now that I
>>>>>> look at it I ended up copying _id from ranges and not the main one, which
>>>>>> may be an issue. I'll see what happens if I fix that.
>>>>>>
>>>>>> As for the URI, it actually does match, but I changed it by hand in
>>>>>> the email (because my friend is paranoid). Sorry for the confusion there,
>>>>>> good catch though!
>>>>>>
>>>>>> On Mon, Mar 9, 2015 at 5:40 PM, Randall Leeds <tilgovi at hypothes.is>
>>>>>> wrote:
>>>>>>
>>>>>>> Looking good. Annotator Store expects the id key to be named "id".
>>>>>>> You may need to rewrite that key in your API routes.
>>>>>>> On Mar 9, 2015 3:13 PM, "Gareth Highnam" <gareth862 at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> This time it gave 200 and gave me some JSON about my existing
>>>>>>>> entries, which are a bunch data like so:
>>>>>>>>
>>>>>>>> {"_id":"54fdf51f18eb23d57f4a8ca6","quote":"are two solut","uri":"
>>>>>>>> http://localhost.com/inline/anno.html
>>>>>>>>
>>>>>>>> I'm not really sure if these posts are created correctly in first
>>>>>>>> place, which could be a big issue but there are no explicit errors from
>>>>>>>> Annotator about it.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Gareth
>>>>>>>>
>>>>>>>> On Mon, Mar 9, 2015 at 5:00 PM, Shauna Gordon-McKeon <
>>>>>>>> shaunagm at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> I missed that Annotator is successfully POSTing entries.  That
>>>>>>>>> narrows things down.
>>>>>>>>>
>>>>>>>>> What url is it GETing from?  When it returns 200 or 304, can you
>>>>>>>>> use the "Network -> Response" element of the developer console to inspect
>>>>>>>>> what it's returning?
>>>>>>>>>
>>>>>>>>> On Mon, Mar 9, 2015 at 5:55 PM, Gareth Highnam <
>>>>>>>>> gareth862 at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Thanks Shauna,
>>>>>>>>>>
>>>>>>>>>> When the loadFromSearch runs, it returns either a 304 or 200 type
>>>>>>>>>> error. Because of this, it does not report anything to the developer
>>>>>>>>>> console. Why it does one or the other I still don't know...  You may be
>>>>>>>>>> onto something with the port issues though.
>>>>>>>>>>
>>>>>>>>>> The confusing part is the lack of obvious errors. Store seems to
>>>>>>>>>> POST fine, but does not GET from search even with a 200 error.
>>>>>>>>>>
>>>>>>>>>> Gareth
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Mar 9, 2015 at 4:40 PM, Shauna Gordon-McKeon <
>>>>>>>>>> shaunagm at gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> I'm an Annotator newb too, but a few things I notice:
>>>>>>>>>>>
>>>>>>>>>>> - You've given a full path when specifying the endpoint.  In my
>>>>>>>>>>> (working) version I just specify the prefix, in my case '/api'
>>>>>>>>>>>
>>>>>>>>>>> - You've specified :3000 for the api endpoint but not for the
>>>>>>>>>>> URIs.  If the whole app is accessed via port 3000 this may cause problems.
>>>>>>>>>>>
>>>>>>>>>>> - You've got a term search:  '/search' here which I don't
>>>>>>>>>>> have.  This could totally be a working different implementation from mine,
>>>>>>>>>>> but I thought I'd flag it as a potential problem.  I've put my
>>>>>>>>>>> code here in case it's helpful to look through:
>>>>>>>>>>> https://pastebin.mozilla.org/8824977
>>>>>>>>>>>
>>>>>>>>>>> Maybe try switching the above things around and see if it starts
>>>>>>>>>>> working?
>>>>>>>>>>>
>>>>>>>>>>> When debugging problems, I use the developer console that
>>>>>>>>>>> Chrome/Firefox provide.  You can see network requests there.  Annotator
>>>>>>>>>>> should be making a request to the API store -- what is the response from
>>>>>>>>>>> the API?  404 (not found)?  403 (forbidden)?  Or is it breaking before it
>>>>>>>>>>> even makes a request?
>>>>>>>>>>>
>>>>>>>>>>> best
>>>>>>>>>>> Shauna
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Mar 9, 2015 at 5:09 PM, Gareth Highnam <
>>>>>>>>>>> gareth862 at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> I've been tying to set up local storage with the storage
>>>>>>>>>>>> plugin, using Node.js+MongoDB. My end goal is for anyone visiting my page
>>>>>>>>>>>> to be able to annotate it and view any existing annotations previously
>>>>>>>>>>>> made, when the page loads. I don't need any authentication for this
>>>>>>>>>>>> purpose.
>>>>>>>>>>>>
>>>>>>>>>>>> Disclaimer: (I am a noob)
>>>>>>>>>>>>
>>>>>>>>>>>> Here is where I am:
>>>>>>>>>>>> 1. Page loads, annotator can highlight, create, edit, delete
>>>>>>>>>>>> comments on front end.
>>>>>>>>>>>> 2. Annotator POST can create entries in back end.
>>>>>>>>>>>>
>>>>>>>>>>>> When I reload page, no stored annotations are brought up,
>>>>>>>>>>>> despite existing in backend. Here is the code for the storage set up:
>>>>>>>>>>>>
>>>>>>>>>>>> var content = \$('div').annotator();
>>>>>>>>>>>>
>>>>>>>>>>>> content.annotator('addPlugin', 'Store', {
>>>>>>>>>>>>
>>>>>>>>>>>>         // The endpoint of the store on your server.
>>>>>>>>>>>>                                                      prefix: '
>>>>>>>>>>>> http://www.nofeveryone.com:3000/inline',
>>>>>>>>>>>>
>>>>>>>>>>>>             // Attach the uri of the current page to all
>>>>>>>>>>>> annotations to allow search.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>             annotationData: {
>>>>>>>>>>>>
>>>>>>>>>>>>             'uri': 'http://www.nofeveryone.com/anno/anno.html'
>>>>>>>>>>>>
>>>>>>>>>>>>                 },
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>             // This will perform a "search" action when the
>>>>>>>>>>>> plugin loads. Will
>>>>>>>>>>>>
>>>>>>>>>>>>             // request the last 20 annotations for the current
>>>>>>>>>>>> url.                                                  // eg.
>>>>>>>>>>>> /store/endpoint/search?limit=20&uri=http://this/document/only
>>>>>>>>>>>>
>>>>>>>>>>>>             'limit': 20,
>>>>>>>>>>>>
>>>>>>>>>>>>                 'uri': '
>>>>>>>>>>>> http://www.nofeveryone.com/anno/anno.html'
>>>>>>>>>>>>
>>>>>>>>>>>>                 },
>>>>>>>>>>>>
>>>>>>>>>>>>             urls: {
>>>>>>>>>>>>
>>>>>>>>>>>>                  search:  '/search'
>>>>>>>>>>>>
>>>>>>>>>>>>                 }
>>>>>>>>>>>>
>>>>>>>>>>>>     });
>>>>>>>>>>>>
>>>>>>>>>>>> The API endpoints appear fully functional. When I test the same
>>>>>>>>>>>> http requests from my URI using curl, I get my posts back in JSON.
>>>>>>>>>>>>
>>>>>>>>>>>> I've been pretty stumped for why it's not loading them with
>>>>>>>>>>>> "loadFromSearch", so if anyone thinks they can help I would greatly
>>>>>>>>>>>> appreciate it. I'm happy to give any other info about my code.
>>>>>>>>>>>>
>>>>>>>>>>>> Gareth
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> annotator-dev mailing list
>>>>>>>>>>>> annotator-dev at lists.okfn.org
>>>>>>>>>>>> https://lists.okfn.org/mailman/listinfo/annotator-dev
>>>>>>>>>>>> Unsubscribe:
>>>>>>>>>>>> https://lists.okfn.org/mailman/options/annotator-dev
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> annotator-dev mailing list
>>>>>>>> annotator-dev at lists.okfn.org
>>>>>>>> https://lists.okfn.org/mailman/listinfo/annotator-dev
>>>>>>>> Unsubscribe: https://lists.okfn.org/mailman/options/annotator-dev
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/annotator-dev/attachments/20150309/5cdaa234/attachment-0003.html>