1.0.0-beta.88 • Published 9 months ago

@discoveryjs/discovery v1.0.0-beta.88

Weekly downloads
77
License
MIT
Repository
github
Last release
9 months ago

Discovery

NPM version Twitter

Hackable JSON discovery tool

Documentation in progress...

Articles

Examples of usage

Related projects

  • Discovery CLI – CLI tools to serve & build projects based on Discovery.js
  • JsonDiscovery – Chrome/Firefox browser extension built on Discovery which allows to discover a JSON document and make reports
  • Jora – data query language
  • Jora CLI – a tool to process JSON data using Jora in command line interface

Plugins

Install

> npm install @discoveryjs/discovery

Base concepts

Model goes through data->prepare->render chain. Data can be modified with prepare function and rendered by various views and its combinations.

View is a function(el, config, data, context) where:

  • el - DOM-element in which view will be rendered
  • config - configuration of view
  • data - data to render
  • context - contains of model data, metaifo (createdAt, etc), router (optional), any user defined or view defined additional data

Page is a root view function(el, data, context). Similar to view it has all of its arguments except config.

Page

To define a page you should call discovery.page.define(pageId, render(el, data, context), options) where:

  • pageId - unique page identifier
  • render - page render function described above
  • options - object with options:
    • reuseEl - do not clear container before render page (skiped for first render or pageId change)
    • init - invokes on first page render or pageId change
    • keepScrollOffset - dont scroll to page top if pageId didn't changed since last page render
    • encodeParams
    • decodeParams

Other handy methods for working with page:

  • discovery.renderPage()
  • discovery.setPage(pageId, pageRef, renderParam), discovery.setPageParams(renderParams) triggers renderPage()
  • discovery.getPageContext() gets context of page

Special pages

There are some built-in special pages:

  • default
  • report
  • not-found

You can override this pages with page.define() method

View

To define new view just call discovery.view.define(viewId, render, options) where:

  • viewId - unique view identifier
  • render - function(el, config, data, context) or view definition object
  • options - object with following fields:
    • tag - a tag name for a view container element. When value is false or null then DocumentFragment is used as a container

You can render your view with discovery.view.render(el, view, data, context) where:

  • view can be string viewId, ViewDefinition or Array<ViewDefinition> viewId will expand to { view: viewId }.

    Also you can specify view as viewId:query, that will give you handy shortcut to { view: viewId, data: query }

  • viewDefinition object with view definition settings:
    • view: string viewId
    • when: query, will be coerced to Boolean (but empty arrays and objects will coerce to false)
    • data: query (will be described later)
    • Also there can be view specific additional fields

Special views

Also special built-in sidebar view is available you can override this view with view.define

Queries

As a query you can specify string which will be processed by Jora so your data will be a result of following flow:

jora(value) -> function(data, context) -> data

Or you can use function(data, context) as query as well. Also you can use any data as query right away.

License

MIT

1.0.0-beta.88

9 months ago

1.0.0-beta.87

9 months ago

1.0.0-beta.86

10 months ago

1.0.0-beta.84

10 months ago

1.0.0-beta.85

10 months ago

1.0.0-beta.83

1 year ago

1.0.0-beta.82

1 year ago

1.0.0-beta.81

1 year ago

1.0.0-beta.80

1 year ago

1.0.0-beta.77

2 years ago

1.0.0-beta.78

2 years ago

1.0.0-beta.76

2 years ago

1.0.0-beta.79

2 years ago

1.0.0-beta.75

2 years ago

1.0.0-beta.73

2 years ago

1.0.0-beta.74

2 years ago

1.0.0-beta.72

2 years ago

1.0.0-beta.71

2 years ago

1.0.0-beta.70

3 years ago

1.0.0-beta.68

3 years ago

1.0.0-beta.69

3 years ago

1.0.0-beta.66

3 years ago

1.0.0-beta.67

3 years ago

1.0.0-beta.65

3 years ago

1.0.0-beta.64

3 years ago

1.0.0-beta.63

3 years ago

1.0.0-beta.62

4 years ago

1.0.0-beta.61

4 years ago

1.0.0-beta.60

4 years ago

1.0.0-beta.59

4 years ago

1.0.0-beta.58

4 years ago

1.0.0-beta.57

4 years ago

1.0.0-beta.56

4 years ago

1.0.0-beta.55

4 years ago

1.0.0-beta.54

4 years ago

1.0.0-beta.53

4 years ago

1.0.0-beta.52

5 years ago

1.0.0-beta.51

5 years ago

1.0.0-beta.50

5 years ago

1.0.0-beta.49

5 years ago

1.0.0-beta.48

5 years ago

1.0.0-beta.47

5 years ago

1.0.0-beta.46

5 years ago

1.0.0-beta.44

5 years ago

1.0.0-beta.45

5 years ago

1.0.0-beta.43

5 years ago

1.0.0-beta.42

5 years ago

1.0.0-beta.41

5 years ago

1.0.0-beta.40

5 years ago

1.0.0-beta.39

5 years ago

1.0.0-beta.38

5 years ago

1.0.0-beta.37

5 years ago

1.0.0-beta.36

5 years ago

1.0.0-beta.35

5 years ago

1.0.0-beta.34

5 years ago

1.0.0-beta.33

5 years ago

1.0.0-beta.32

5 years ago

1.0.0-beta.31

5 years ago

1.0.0-beta.30

5 years ago

1.0.0-beta.29

5 years ago

1.0.0-beta.28

5 years ago

1.0.0-beta.27

6 years ago

1.0.0-beta.26

6 years ago

1.0.0-beta.25

6 years ago

1.0.0-beta.24

6 years ago

1.0.0-beta.22

6 years ago

1.0.0-beta.23

6 years ago

1.0.0-beta.21

6 years ago

1.0.0-beta.20

6 years ago

1.0.0-beta.19

6 years ago

1.0.0-beta.18

6 years ago

1.0.0-beta.17

6 years ago

1.0.0-beta.16

6 years ago

1.0.0-beta.15

6 years ago

1.0.0-beta.14

6 years ago

1.0.0-beta.13

6 years ago

1.0.0-beta.12

6 years ago

1.0.0-beta.11

6 years ago

1.0.0-beta.10

6 years ago

1.0.0-beta.9

6 years ago

1.0.0-beta.8

6 years ago

1.0.0-beta.7

6 years ago

1.0.0-beta.6

7 years ago

1.0.0-beta.5

7 years ago

1.0.0-beta.4

7 years ago

1.0.0-beta.3

7 years ago

1.0.0-beta.2

7 years ago

1.0.0-beta.1

7 years ago