Skip to content
Snippets Groups Projects
README.md 2.39 KiB
Newer Older
Bekerle, Patrizio's avatar
Bekerle, Patrizio committed
# App Shell Component
Reiter, Christoph's avatar
Reiter, Christoph committed

A web component for building SPAs consisting of one topic with multiple
activities. Handles login, language selection, activity switching, menus etc.

You can install these component via npm:

```bash
npm i @dbp-toolkit/app-shell
```

Reiter, Christoph's avatar
Reiter, Christoph committed
## Usage

```html
<dbp-app-shell src="/example.topic.metadata.json"></dbp-app-shell>
<script type="module" src="node_modules/@dbp-toolkit/app-shell/dist/dbp-app-shell.js"></script>
Reiter, Christoph's avatar
Reiter, Christoph committed
```

## Attributes

- `lang` (optional, default: `de`): set to `de` or `en` for German or English
    - example `<dbp-app-shell lang="de" </dbp-app-shell>`
Reiter, Christoph's avatar
Reiter, Christoph committed
- `src`: The path to a topic metadata file (json)
- `base-path` (optional, default: `/`): An absolute base path for routing
Reiter, Christoph's avatar
Reiter, Christoph committed
- `entry-point-url`: Entry point URL to access the API
- `keycloak-config`: An object with the following keys: url, realm, clientId, silentCheckSsoRedirectUri, scope
- `matomo-url` (optional): set to your *Matomo* server (required only for tracking)
    - example `<dbp-app-shell matomo-url="https://my-matomo.tld"></dbp-app-shell>`
- `matomo-site-id` (optional): set to your site id (required only for tracking)
    - example `<dbp-app-shell matomo-site-id="456789"></dbp-app-shell>`
Reiter, Christoph's avatar
Reiter, Christoph committed

## Topic Metadata

```json
{
  "name": {
    "de": "Beispiel",
    "en": "Example"
  },
  "short_name": {
    "de": "Beispiel",
    "en": "Example"
  },
  "description": {
    "de": "Ich bin eine Beschreibung der Applikation",
    "en": "I am a description of this application"
  },
  "routing_name": "example",
  "activities": [
    {"path": "example.metadata.json", "visible": true}
Reiter, Christoph's avatar
Reiter, Christoph committed
  ],
  "attributes": []
}
```

## Activity Metadata
Reiter, Christoph's avatar
Reiter, Christoph committed

```json
{
  "element": "dbp-activity-example",
  "module_src": "dbp-activity-example.js",
Reiter, Christoph's avatar
Reiter, Christoph committed
  "routing_name": "activity-example",
  "name": {
    "de": "Beispielaktivität",
    "en": "Example Activity"
  },
  "short_name": {
    "de": "Beispielaktivität",
    "en": "Example Activity"
  },
  "description": {
    "de": "Eine Beschreibung",
    "en": "A Description"
  }
}
```

## Local development

```bash
# get the source
git clone git@gitlab.tugraz.at:dbp/web-components/toolkit.git
cd toolkit/packages/app-shell
# install dependencies
yarn install
# constantly build dist/bundle.js and run a local web-server on port 8002 
yarn run watch

# run tests
yarn test

# build local packages in dist directory
yarn run build
Reiter, Christoph's avatar
Reiter, Christoph committed
```

Jump to <http://localhost:8002> and you should get a Single Sign On login page.