• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ipfs-shipyard/ipfs-iiif-db: IIIF annotations JS client on top of IPFS

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

ipfs-shipyard/ipfs-iiif-db

开源软件地址:

https://github.com/ipfs-shipyard/ipfs-iiif-db

开源编程语言:

JavaScript 100.0%

开源软件介绍:

ipfs-iiif-db

IIIF annotations JS client over IPFS

CLI

You can run a node from the command line, and it will keep track of all the recors inside a partition.

$ ipfs-iiif-db-track [partition]

partition defaults to "iiif".

The tracker will save all the changes into a local leveldb database.

JavaScript API

Install

$ npm install ipfs-iiif-db --save

Import

In thr browser environment, you can either use this library by including it and bundling your app together with it (using browserify or webpack, for instance), or you can

in Node.js or in a browser with a bundler:

const DB = require('ipfs-iiif-db')

Using a script tag in a browser

<!-- loading the minified version -->
<script src="https://unpkg.com/ipfs-iiif-db/dist/browser.min.js"></script>

<!-- loading the human-readable (not minified) version -->
<script src="https://unpkg.com/ipfs-iiif-db/dist/browser.js"></script>

Now you can access this library using the IpfsIiifDb on the global namespace. (In this case, replace DB on the examples below with IpfsIiifDb).

Instantiate

const db = DB([options])

Arguments:

  • options (object):
    • ipfs: a js-ipfs options object
    • store (string, defaults to "memory"): a local store, represented by a string. Can either be:
      • "indexeddb": for in-browser persistence
      • "leveldb": for Node.js persistence
    • partition (string, defaults to iiif): the partition this data belongs to. It's used to broadcast new record ids (so trackers can follow (and pin) the global partition state)

Annotation list

Get an annotations object:

const annotationList = db.annotationList([originalAnnotationList])

Arguments:

  • originalAnnotationList (object): the annotation list. Must contain an '@id' attribute.

If a string is given as first argument, it's assumed as the '@id' attriubute of the annotation list.

annotationList API:

annotationList.set (key, value)

Set a annotation list attribute key to a given value

annotationList.set('@context', 'http://iiif.io/api/search/0/context.json')

annotationList.pushResource (resource)

Insert a resource at the end of the resources array.

annotationList.pushResource({
  "@id": "https://wellcomelibrary.org/iiif/b18035723/annos/searchResults/a2h0r885,2553,282,46",
  "@type": "oa:Annotation",
  "motivation": "sc:painting",
  "resource": {
    "@type": "cnt:ContentAsText",
    "chars": "gediegenen"
  },
  "on": "https://wellcomelibrary.org/iiif/b18035723/canvas/c2#xywh=885,2553,282,46"
})

putResource (index, resource)

Insert a resource at the given position inside the resources array.

annotationList.putResource(3, {
  "@id": "https://wellcomelibrary.org/iiif/b18035723/annos/searchResults/a2h0r885,2553,282,46",
  "@type": "oa:Annotation",
  "motivation": "sc:painting",
  "resource": {
    "@type": "cnt:ContentAsText",
    "chars": "gediegenen"
  },
  "on": "https://wellcomelibrary.org/iiif/b18035723/canvas/c2#xywh=885,2553,282,46"
})

deleteResourceAt (index)

Delete the resource at the given index position.

annotationList.deleteResourceAt(3)

getResources ()

Return the resources array.

annotationList.getResources()

pushHit (hit)

Insert a hit at the end of the hits array.

annotationList.pushHit({
  "@id": "https://wellcomelibrary.org/iiif/b18035723/annos/searchResults/a2h0r885,2553,282,46",
  "@type": "oa:Annotation",
  "motivation": "sc:painting",
  "resource": {
    "@type": "cnt:ContentAsText",
    "chars": "gediegenen"
  },
  "on": "https://wellcomelibrary.org/iiif/b18035723/canvas/c2#xywh=885,2553,282,46"
})

putHit (index, hit)

Insert a hit at the given position inside the hits array.

annotationList.putHit(3, {
  "@id": "https://wellcomelibrary.org/iiif/b18035723/annos/searchResults/a2h0r885,2553,282,46",
  "@type": "oa:Annotation",
  "motivation": "sc:painting",
  "resource": {
    "@type": "cnt:ContentAsText",
    "chars": "gediegenen"
  },
  "on": "https://wellcomelibrary.org/iiif/b18035723/canvas/c2#xywh=885,2553,282,46"
})

deleteHitAt (index)

Delete the hit at the given index position.

annotationList.deleteHit(3)

getHits ()

Return the hits array.

annotationList.getHits()

toJSON ()

Returns an object representation of the annotation list.

console.log('current annotation list is: %j', annotationList.toJSON())

AnnotationList Events

"started" (event)

Once the AnnotationList CRDT has finished the bootstrap process. You can take this opportunity to do an initial render of the list.

"mutation" (event)

Emitted whenever anything in the annotation list changes.

annotationList.on('mutation', (event) => {
  console.log('new mutation', event)
  console.log('annotation list now is:', annotationList.toJSON())
})

Callback arguments:

  • event (object):
    • type (string): can either be:
      • 'add' - for when a direct attribute is added
      • 'update' - for when a direct attribute value is updated
      • 'delete' - for when a direct attribute is deleted
      • 'resource inserted' - for when an item is inserted in the resources array
      • 'resource deleted' - for when an item is deleted from the resources array
      • 'hit inserted' - for when an item is inserted in the hits array
      • 'hit deleted' - for when an item is deleted from the resources array
    • name (string): the attribute name
    • value (object): the new value, if applicable
    • oldValue (object): the previous value, if applicable
    • index (integer): index of the insertion or deletion

"add" (event)

annotationList.on('add', (event) => {
  console.log('added attribute', event.name)
  console.log('with value:', event.value)
})

Callback arguments:

  • event (object):
    • name (string): the attribute name
    • value (object): the value of the attribute

"update" (event)

annotationList.on('update', (event) => {
  console.log('updated attribute', event.name)
  console.log('old value:', event.oldValue)
  console.log('new value:', event.value)
})

Callback arguments:

  • event (object):
    • name (string): the attribute name
    • value (object): the new value of the attribute
    • oldValue (object): the old value of the attribute

"delete" (event)

annotationList.on('delete', (event) => {
  console.log('deleted attribute', event.name)
  console.log('old value:', event.oldValue)
})

Callback arguments:

  • event (object):
    • name (string): the attribute name
    • oldValue (object): the old value of the attribute

"resource inserted" (event)

annotationList.on('resource inserted', (event) => {
  console.log('inserted resource at pos', event.index)
  console.log('with value:', event.value)
})

Callback arguments:

  • event (object):
    • index (interger >= 0): the array index the insertion was done on
    • value (object): the value that was inserted

"resource deleted" (event)

Callback arguments:

  • event (object):
    • index (interger >= 0): the array index that was removed

"hit inserted" (event)

Callback arguments:

  • event (object):
    • index (interger >= 0): the array index the insertion was done on
    • value (object): the value that was inserted

"hit deleted" (event)

Callback arguments:

  • event (object):
    • index (interger >= 0): the array index that was removed

License

MIT

Contribute

Feel free to join in. All welcome. Open an issue!

This repository falls under the IPFS Code of Conduct.

License

MIT




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap