1.0.0-beta.83 • Published 1 month ago

@discoveryjs/discovery v1.0.0-beta.83

Weekly downloads
77
License
MIT
Repository
github
Last release
1 month 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.83

1 month ago

1.0.0-beta.82

2 months ago

1.0.0-beta.81

2 months ago

1.0.0-beta.80

3 months ago

1.0.0-beta.77

9 months ago

1.0.0-beta.78

8 months ago

1.0.0-beta.76

10 months ago

1.0.0-beta.79

6 months ago

1.0.0-beta.75

11 months ago

1.0.0-beta.73

1 year ago

1.0.0-beta.74

1 year ago

1.0.0-beta.72

1 year ago

1.0.0-beta.71

1 year ago

1.0.0-beta.70

2 years ago

1.0.0-beta.68

2 years ago

1.0.0-beta.69

2 years ago

1.0.0-beta.66

2 years ago

1.0.0-beta.67

2 years ago

1.0.0-beta.65

2 years ago

1.0.0-beta.64

2 years ago

1.0.0-beta.63

2 years ago

1.0.0-beta.62

3 years ago

1.0.0-beta.61

3 years ago

1.0.0-beta.60

3 years ago

1.0.0-beta.59

3 years ago

1.0.0-beta.58

3 years ago

1.0.0-beta.57

3 years ago

1.0.0-beta.56

3 years ago

1.0.0-beta.55

3 years ago

1.0.0-beta.54

3 years ago

1.0.0-beta.53

3 years ago

1.0.0-beta.52

3 years ago

1.0.0-beta.51

3 years ago

1.0.0-beta.50

3 years ago

1.0.0-beta.49

3 years ago

1.0.0-beta.48

4 years ago

1.0.0-beta.47

4 years ago

1.0.0-beta.46

4 years ago

1.0.0-beta.44

4 years ago

1.0.0-beta.45

4 years ago

1.0.0-beta.43

4 years ago

1.0.0-beta.42

4 years ago

1.0.0-beta.41

4 years ago

1.0.0-beta.40

4 years ago

1.0.0-beta.39

4 years ago

1.0.0-beta.38

4 years ago

1.0.0-beta.37

4 years ago

1.0.0-beta.36

4 years ago

1.0.0-beta.35

4 years ago

1.0.0-beta.34

4 years ago

1.0.0-beta.33

4 years ago

1.0.0-beta.32

4 years ago

1.0.0-beta.31

4 years ago

1.0.0-beta.30

4 years ago

1.0.0-beta.29

4 years ago

1.0.0-beta.28

4 years ago

1.0.0-beta.27

4 years ago

1.0.0-beta.26

4 years ago

1.0.0-beta.25

4 years ago

1.0.0-beta.24

4 years ago

1.0.0-beta.22

4 years ago

1.0.0-beta.23

4 years ago

1.0.0-beta.21

5 years ago

1.0.0-beta.20

5 years ago

1.0.0-beta.19

5 years ago

1.0.0-beta.18

5 years ago

1.0.0-beta.17

5 years ago

1.0.0-beta.16

5 years ago

1.0.0-beta.15

5 years ago

1.0.0-beta.14

5 years ago

1.0.0-beta.13

5 years ago

1.0.0-beta.12

5 years ago

1.0.0-beta.11

5 years ago

1.0.0-beta.10

5 years ago

1.0.0-beta.9

5 years ago

1.0.0-beta.8

5 years ago

1.0.0-beta.7

5 years ago

1.0.0-beta.6

5 years ago

1.0.0-beta.5

5 years ago

1.0.0-beta.4

5 years ago

1.0.0-beta.3

5 years ago

1.0.0-beta.2

5 years ago

1.0.0-beta.1

5 years ago