diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..2541e89 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,118 @@ +# Create and publish a Docker image on github +name: Create and publish a Docker image + +# Configures this workflow to run every time a change +# is tagged with a '-v' in between (e.g.: metastore-v1.0.0). +on: + push: + # Publish `main` as Docker `latest` image. +# branches: +# - main + + # Publish `v1.2.3` tags as releases. + tags: + # - v* + - '*-v*' + +# Defines two custom environment variables for the workflow. +# These are used for the Container registry domain, and a +# name for the Docker image that this workflow builds. +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +# Two jobs for creating and pushing Docker image +# - build-and-push-image -> triggered by commits on main and tagging with semantic version (e.g.: v1.2.3) +# - build-and-push-image-of-branch -> triggered by tags matching '*-v*' (e.g.: Version_1-v1.2.3) +jobs: + build-and-push-image: + runs-on: ubuntu-latest + if: ${{ contains(github.ref_name, '-') == failure() }} + # Sets the permissions granted to the `GITHUB_TOKEN` + # for the actions in this job. + permissions: + contents: read + packages: write + # + steps: + - name: Checkout repository + uses: actions/checkout@v4 + # Uses the `docker/login-action` action to log in to the Container + # registry using the account and password that will publish the packages. + # Once published, the packages are scoped to the account defined here. + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) + # to extract tags and labels that will be applied to the specified image. + # The `id` "meta" allows the output of this step to be referenced in a + # subsequent step. The `images` value provides the base name for the tags + # and labels. + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. + # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. + # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-and-push-image-of-branch: + runs-on: ubuntu-latest + if: contains(github.ref_name, '-') + # Sets the permissions granted to the `GITHUB_TOKEN` + # for the actions in this job. + permissions: + contents: read + packages: write + # + steps: + - name: Split first part + env: + TAG: ${{ github.ref_name }} + id: split + run: echo "branch=${TAG%-v*}" >> $GITHUB_OUTPUT + - name: Test variable + run: | + echo ${{ steps.split.outputs.branch }} + - name: Checkout repository + uses: actions/checkout@v4 + # Uses the `docker/login-action` action to log in to the Container + # registry using the account and password that will publish the packages. + # Once published, the packages are scoped to the account defined here. + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) + # to extract tags and labels that will be applied to the specified image. + # The `id` "meta" allows the output of this step to be referenced in a + # subsequent step. The `images` value provides the base name for the tags + # and labels. + - name: Extract metadata (tags, labels) for Docker + id: meta-branch + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{steps.split.outputs.branch}} + # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. + # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. + # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ steps.meta-branch.outputs.tags }} + labels: ${{ steps.meta-branch.outputs.labels }} + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0c8b821 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM httpd:2.4 +COPY . /usr/local/apache2/htdocs/ + diff --git a/README.md b/README.md index ab7c0f6..16957c4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This repository contains a collection of generic web frontends for accessing RESTful services from the KIT Data Manager service portfolio. The idea is to have graphical user interfaces available such that certain base services can be directly used for performing basic tasks without the need of integrating them in your own frontends before being able to use them the first time. -However, for some application cases, these generic web frontends might even be sufficient for direct interaction with our services and they might be offered to the end-user. To allow that, all frontends of this collection offer a certain degree of customization to slightly adapt their presentation to specific needs. +However, for some application cases, these generic web frontends might even be sufficient for direct interaction with our services, and they might be offered to the end-user. To allow that, all frontends of this collection offer a certain degree of customization to slightly adapt their presentation to specific needs. ## Installation @@ -10,7 +10,7 @@ Installing the frontend collection is relatively easy, as it is based only on HT If you don't have Python installed, this would be the first step for you. You may either install Python 2.x or 3.x, depending on your preferences. -Afterwards, you have to clone this repository to a directory of your choice, e.g., /home/user/, and change into the 'frontend-collection' subfolder: +Afterwards, you have to clone this repository to a directory of your choice, e.g., /home/user/, and change into the 'frontend-collection' sub folder: ```bash user@hostname:~ git clone https://github.com/kit-data-manager/frontend-collection @@ -34,29 +34,28 @@ user@hostname:~/frontent-collection python -m http.server Serving HTTP on :: port 8000 (http://[::]:8000/) ... ``` -After this, the output should tell you that the content is served at [http://localhost:8000/](http://localhost:8000/). Hostname and/or port might be different depending on your local configuration. +After this, the output should tell you that the content is served at [http://localhost:8000/](http://localhost:8000/). +Hostname and/or port might be different depending on your local configuration. You can now access the HTML pages of the single frontends directly, which are: -| Service | Frontend Location| -|---------------|------------------| -| [base-repo](https://github.com/kit-data-manager/base-repo) | http://localhost:8000/repo-management.html -| [metastore](https://github.com/kit-data-manager/metastore2) | http://localhost:8000/metadata-management.html or http://localhost:8000/schema-management.html +| Service | Frontend Location| +|------------------------------------------------------------------------|------------------| +| [base-repo](https://github.com/kit-data-manager/base-repo) | http://localhost:8000/repo-management.html +| [metastore](https://github.com/kit-data-manager/metastore2) | http://localhost:8000/metadata-management.html or http://localhost:8000/schema-management.html +| [typed-pid-maker](https://github.com/kit-data-manager/pit-service) | http://localhost:8000/typed-pid-maker-ui.html +| [mapping-service](https://github.com/kit-data-manager/mapping-service) | http://localhost:8000/mapping-service-ui.html +| fdo-creator | http://localhost:8000/fdo-creator-ui.html ## Basic Customization -For basic customization please check the .settings.js files in the js subfolder of this repository. For each frontend, you'll find one settings file, e.g., `base-repo.settings.js` for repo-management.html or `metastore.settings.js` for metadata-management.html and schema-management.html. +For basic customization please check the .settings.js files in the `settings` sub folder of this repository. +Settings for the dashboard page can be found in `dashboard.settings.js`. +Settings applied for different frontends the same way can be found in `general.settings.js`. +In addition, for each frontend you'll find a specific settings file, e.g., `base-repo.settings.js` for repo-management.html or +`metastore.settings.js` for metadata-management.html and schema-management.html. -Depending on the service, there might be different settings available depending on the service's capabilities. There are some commons property variables listed in the following table: - -| Variable | Description | -|---------------|------------------| -| ajaxBaseUrl | The base URL for requests to this service, e.g., http://localhost:8080/api/v1/ Be aware, that providing a wrong base URL will result in loading errors in the frontend. -| keycloak | If you want to enable authentication via Keycloak, you have to assign a proper value according to the example to this variable. Otherwise, no user login will be provided. -| showServiceUrl | Setting this variable `true` will allow to change ajaxBaseUrl in the frontend. This setting is meant for developers only. In production environments, only `ajaxBaseUrl` should be used. -| appDescription | Here you can customize the header of your frontend, e.g., by providing a custom logo, title, or subtitle. - -For the base-repo frontend, there is another variable named `tags`. This variable allows to provide a list of tags and their color, which are then presented to the user to tag content elements in the frontend. Please note, that tag colors re only used in the frontend and are not stored at the base-repo service. Browsing a base-repo instance with another instance of the frontend having a different tag coloring scheme will render the tags according to the configuration in the currently used frontend instance. +For more information please refer to the documentation inside the setting files. ## Issues @@ -64,27 +63,29 @@ For the base-repo frontend, there is another variable named `tags`. This variabl **The table showing service entries shows an error and no data is loaded.** :grey_exclamation: -Typically, this is an issue with the ajaxBaseURL, which was either provided in the settings.js file or via the input of the frontend page. At first, you should check the format. The URL should look similar to http://localhost:8080/api/v1/ , i.e., it should contain protocol, hostname and port depending on the addressed service instance followed by api/v1/, which is the base path of the API itself and **must** end with / +Typically, this is an issue with the ajaxBaseURL, which was either provided in the service's settings.js file or via the input of the frontend page. +At first, you should check the format. The URL should look similar to http://localhost:8080/api/v1/ or http://localhost:8090/, i.e., +it should contain protocol, hostname and port depending on the addressed service instance optionally followed by an API base path, e.g., api/v1/, +which is the base path of the API itself. The ajaxBaseURL **must** end with / -If everything looks fine, ensure that no authentication is used by the service you want to address. If Keycloak-based authentication is used, please adapt the settings.js accordingly to gain access. +If everything looks fine, ensure that no authentication is used by the service you want to address. If Keycloak-based +authentication is used by the service, please also adapt the `general.settings.js` accordingly to gain access. -If both checks succeed, please also check by which protocol the server providing your frontend is accessible. If it is `https` you are only allowed to load information from `https` resources. Accessing a service via `http` from a frontend running with `https` is not possible for security reasons. +If both checks succeed, please also check by which protocol the server providing your frontend is accessible. +If it is `https` you are only allowed to load information from `https` resources. Accessing a service via `http` +from a frontend running with `https` is not possible for security reasons. +Finally, if everything looks fine so far there might also be an issue with the service itself. Try to access the service without frontend to ensure +it is up and running. --- :grey_question: -**Applying filters to the tables in `metadata-management.html` and `schema-management.html` results in incomplete pages.** - -:grey_exclamation: -The reason here is, that pagination for the MetaStore frontend is build remotely, whereas filering happens on the client-side. In future this will change in a way, that both is done on the client side. - ---- - -:grey_question: **The tables in `repo-management.html` seem not to contain all resources I have in my system.** +**After applying a filter to the MetaStore and base-repo frontends, no results are shown even when I'm sure that there should be one.** :grey_exclamation: -For the base-repo frontent, pagination is done locally instead of remotely. However, for proper local pagination, the Tabulator library we are using for handling tables requires a certain response format which is not yet provided by base-repo. Therefore, Tabulator-wise only one page with 20 elements is loaded. This will change in future. - +The reason here is, that the tables are loaded page-wise with max. 20 entries at once. New data is only loaded on scrolling. As filtering +happens on the client-side, only the data already loaded is filtered. This may result in an empty table if elements known to match +the filter criteria are not loaded yet. The only solution for this for now is scrolling the table to the end before applying filters. ## License diff --git a/compile.sh b/compile.sh new file mode 100644 index 0000000..57af21c --- /dev/null +++ b/compile.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +for FILE in ./definitions/search/*.handlebars; +do +handlebars $FILE -f "${FILE}.js" +done + +for FILE in ./definitions/base-repo/*.handlebars; +do +handlebars $FILE -f "${FILE}.js" +done + +for FILE in ./definitions/metastore/*.handlebars; +do +handlebars $FILE -f "${FILE}.js" +done diff --git a/dashboard.html b/dashboard.html index 13dd504..0cf3131 100644 --- a/dashboard.html +++ b/dashboard.html @@ -10,8 +10,9 @@ + + href="https://cdn.jsdelivr.net/npm/@kit-data-manager/metadata-editor@0.9.3/deps/opt/fontawesome/css/all.min.css"> + + + + + + + +
+
+ +
+ +
+ +
+ + +
+ + + + + + diff --git a/schema-management.html b/schema-management.html index eb2fcdb..a27a3b6 100644 --- a/schema-management.html +++ b/schema-management.html @@ -15,6 +15,7 @@ integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"> + @@ -23,7 +24,6 @@ - + + @@ -111,7 +113,7 @@

-
+
@@ -181,7 +183,7 @@

-
+ @@ -238,6 +240,12 @@

+
+ +
+ +
+
@@ -262,82 +270,24 @@

updateSchemaRecord, createSchemaRecord } from './js/metastore-utils.js'; - import {ajaxBaseUrl, keycloak, showServiceUrl, searchEnabled, appDescription} from './js/metastore.settings.js'; - - function userLoggedIn(login) { - if (login) { - $("#login_icon").attr("class", "sign-out icon") - $("#login_button_text").text("Logout"); - addMessage(0, 'User ' + keycloak.idTokenParsed.preferred_username + ' logged in.'); - localStorage.setItem("userLoggedIn", true); - $("#logged_in_as").text("Logged in as " + keycloak.idTokenParsed.preferred_username); + import {keycloak, showServiceUrl} from './settings/general.settings.js'; + import {ajaxBaseUrl, searchEnabled, appDescription} from './settings/metastore.settings.js'; + + applyConfig(keycloak, showServiceUrl,appDescription, config, addMessage, (login, username) => { + if(login){ + $("#logged_in_as").text("Logged in as " + username); $("#editor-create-button").removeAttr("disabled"); - config.token = keycloak.token; - } else { - $("#login_icon").attr("class", "sign-in icon") - $("#login_button_text").text("Login"); - localStorage.removeItem("userLoggedIn", true); + }else{ $("#logged_in_as").text("Not logged in."); $("#editor-create-button").attr("disabled", "disabled"); - config.token = null; } reloadTable(); - } - - if (!showServiceUrl) { - $('#service-url-input').empty(); - } + }); if (!searchEnabled) { $('#search-tab').empty(); } - $('#app-logo').attr("src", appDescription["app-logo"]); - let header = appDescription["app-title"] + - '
' + appDescription["app-subtitle"] + '
'; - - $('#app-title').html(header); - - - //enable keycloak if defined - if (typeof keycloak != typeof undefined) { - keycloak.onAuthSuccess = function () { - userLoggedIn(true); - }; - keycloak.onAuthLogout = function () { - userLoggedIn(false); - }; - - keycloak.onTokenExpired = () => { - addMessage(0, 'Keycloak token expired. Trying to refresh.'); - keycloak.updateToken(30).success(() => { - addMessage(0, 'Successfully got a new token.'); - config.token = keycloak.token; - reloadTable(); - }).catch(() => { - addMessage(1, "Failed to refresh keycloak token."); - config.token = null; - userLoggedIn(false); - reloadTable(); - }); - }; - - - keycloak.init({ - responseMode: 'fragment', - }); - - $("#login_button").click(() => { - if ($("#login_button_text").text() === "Login") { - keycloak.login(); - } else { - keycloak.logout(); - } - }); - } else { - $("#logged_in_as").attr("style", "display:none"); - $("#login_button").attr("style", "display:none"); - } let table = null; let ajaxURL = null; let currentAjaxBaseUrl = null; @@ -496,6 +446,18 @@

return result; } + /** Download the current schema from the monaco editor. + */ + function downloadDocumentFromMonaco() { + if (rightModel != null) { + if (rightModel._languageId === "json") { + download(rightModel.getValue(), "schema.json", "application/json"); + } else { + download(rightModel.getValue(), "schema.xsd", "application/xml"); + } + } + } + function doUpdateSchema() { let schema = getDocumentFromMonaco(); if (!validatedRecord) { @@ -811,6 +773,11 @@

}) }); + //document download handler + $("#schema-download-button").click(() => { + downloadDocumentFromMonaco(); + }); + if (localStorage.getItem("userLoggedIn")) { localStorage.removeItem("userLoggedIn") $("#login_button").click(); diff --git a/settings/base-repo.settings.js b/settings/base-repo.settings.js new file mode 100644 index 0000000..7e8cfdc --- /dev/null +++ b/settings/base-repo.settings.js @@ -0,0 +1,32 @@ +//The backend service URL for the base-repo instance used by the frontend. +export const ajaxBaseUrl = "http://localhost:8081/api/v1/"; +//export const ajaxBaseUrl = "https://demo.datamanager.kit.edu:8443/base-repo/api/v1/"; + +//Supported tags which can be used to tag single files in base-repo. Be aware that while the actual tag (name) will be +//stored in base-repo, the color is just used on the frontend-level and might be different/not available when accessing +//the same base-repo instance with a frontend configured differently. +export const tags = [ + {"name":"rawData", "color":"red"}, + {"name":"analyzedData", "color":"green"}, + {"name":"document", "color":"blue"}, + {"name":"code", "color":"orange"}, + {"name":"deprecated", "color":"black"} +]; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo":"./images/disks.jpg", + "app-title":"Base-Repo Demonstrator", + "app-subtitle":"Data Resource Management" +}; + +//Enable/disable the Elastic search functionality. The availability of the search depends on the configuration of +//the configured base-repo instance. If Elastic search is not configured for the underlying base-repo, it should +//also be disabled here. +export const searchEnabled = true; + + + + + + diff --git a/settings/dashboard.settings.js b/settings/dashboard.settings.js new file mode 100644 index 0000000..86e6138 --- /dev/null +++ b/settings/dashboard.settings.js @@ -0,0 +1,36 @@ +//Show/hide the MetaStore element on the dashboard. +let showMetaStore=true; +//Show/hide the base-repo element on the dashboard. +let showBaseRepo=true; +//Show/hide the MappingService element on the dashboard. +let showMappingService=true; +//Show/hide the TypedPIDMaker element on the dashboard. +let showTypedPIDMaker=false; +//Show/hide the FDOBuilder element on the dashboard. +let showFDOBuilder=true +//Show/hide the FDO Maker element on the dashboard. +let showFDOMaker=true; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +let appDescription = { + "app-logo":"./images/Logo_KIT.png", + "app-title":"Frontend Collection Dashboard", + "app-subtitle":"A collection of web frontends", + "app-description":"

This collection of generic web frontends provides access to RESTful services of the KIT Data Manager\n" + + " service portfolio.\n" + + " The idea is to have graphical user interfaces available such that certain base services can be\n" + + " directly\n" + + " used for performing\n" + + " basic tasks without the need of integrating them in your own frontends before being able to use them\n" + + " the\n" + + " first time.\n" + + "

\n" + + "\n" + + "

\n" + + " However, for some application cases, these generic web frontends might even be sufficient for direct\n" + + " interaction with our\n" + + " services, and they might be offered to the end-user. To allow that, all frontends of this collection\n" + + " offer a certain degree\n" + + " of customization to slightly adapt their presentation to specific needs.\n" + + "

" +}; diff --git a/settings/elastic-search-base-repo.settings.js b/settings/elastic-search-base-repo.settings.js new file mode 100644 index 0000000..484f9e8 --- /dev/null +++ b/settings/elastic-search-base-repo.settings.js @@ -0,0 +1,16 @@ +//The backend service URL for the base-repo instance used by the frontend. +export const ajaxBaseUrl = "http://localhost:8081/api/v1/"; +//export let ajaxBaseUrl = "https://demo.datamanager.kit.edu:8443/base-repo/api/v1/"; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo":"./images/search.jpg", + "app-title":"Repository Search Demonstrator", + "app-subtitle":"Data Resource Search" +}; + +//The max. number of elements obtained in a single search request. +export const page_size = 5; + + + diff --git a/settings/elastic-search-fdo.settings.js b/settings/elastic-search-fdo.settings.js new file mode 100644 index 0000000..f1756b1 --- /dev/null +++ b/settings/elastic-search-fdo.settings.js @@ -0,0 +1,12 @@ +//The backend service URL for the Typed PID Maker instance used by the frontend. +export const ajaxBaseUrl = "http://localhost:8090/api/v1/"; +//export let ajaxBaseUrl = "https://demo.datamanager.kit.edu:8443/typed-pid-maker/api/v1/"; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo":"./images/search.jpg", + "app-title":"FDO Search Demonstrator", + "app-subtitle":"FAIR Digital Object Search" +}; + + diff --git a/settings/elastic-search-metastore.settings.js b/settings/elastic-search-metastore.settings.js new file mode 100644 index 0000000..acc179b --- /dev/null +++ b/settings/elastic-search-metastore.settings.js @@ -0,0 +1,15 @@ +//The backend service URL for the MetaStore instance used by the frontend. +export const ajaxBaseUrl = "http://localhost:8041/api/v1/"; +//export const ajaxBaseUrl = "https://demo.datamanager.kit.edu:8443/metastore/api/v1/"; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo":"./images/search.jpg", + "app-title":"MetaStore Search Demonstrator", + "app-subtitle":"Metadata Search" +}; + + + + + diff --git a/settings/fdo-builder.settings.js b/settings/fdo-builder.settings.js new file mode 100644 index 0000000..d73ef98 --- /dev/null +++ b/settings/fdo-builder.settings.js @@ -0,0 +1,10 @@ +//The backend service URL for the Typed PID Maker instance used by the frontend. +export let ajaxBaseUrl = "http://localhost:8090"; +//export let ajaxBaseUrl = "https://demo.datamanager.kit.edu:8090/"; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo":"./images/typed-pid-maker-logo.svg", + "app-title":"FAIR-DO Builder", + "app-subtitle":"Interactively create your FAIR-DOs." +}; diff --git a/settings/general.settings.js b/settings/general.settings.js new file mode 100644 index 0000000..b4d4fdb --- /dev/null +++ b/settings/general.settings.js @@ -0,0 +1,13 @@ +//Keycloak configuration to use Keycloak as identity provider for single sign-on. +export const keycloak = undefined; +/*= Keycloak({ + url: 'https://gateway.datamanager.kit.edu:8443/', + realm: 'dem_testing', + clientId: 'kitdm-services' +});*/ + +//Show the input for the backend service URL. This property should only be enabled for debugging. +export const showServiceUrl = false; + +//The max. number of elements obtained in a single search request. +export const page_size = 5; diff --git a/settings/mapping-service.settings.js b/settings/mapping-service.settings.js new file mode 100644 index 0000000..64fee41 --- /dev/null +++ b/settings/mapping-service.settings.js @@ -0,0 +1,9 @@ +//The backend service URL for the MappingService instance used by the frontend. +export const ajaxBaseUrl = "http://localhost:8090"; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo": "./images/mapping_service.jpg", + "app-title": "Mapping Service UI", + "app-subtitle": "Extract metadata and map it to json." +}; diff --git a/settings/metastore.settings.js b/settings/metastore.settings.js new file mode 100644 index 0000000..000b6b6 --- /dev/null +++ b/settings/metastore.settings.js @@ -0,0 +1,18 @@ +//The backend service URL for the MetaStore instance used by the frontend. +export const ajaxBaseUrl = "http://localhost:8041/api/v1/"; +//export const ajaxBaseUrl = "https://demo.datamanager.kit.edu:8443/metastore/api/v1/"; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo":"./images/metadata.jpg", + "app-title":"MetaStore Frontend", + "app-subtitle":"Schema and Metadata Management" +}; + +//Enable/disable the Elastic search functionality. The availability of the search depends on the configuration of +//the configured MetaStore instance. If Elastic search is not configured for the underlying MetaStore, it should +//also be disabled here. +export const searchEnabled = false; + + + diff --git a/settings/typed-pid-maker.settings.js b/settings/typed-pid-maker.settings.js new file mode 100644 index 0000000..630a0b5 --- /dev/null +++ b/settings/typed-pid-maker.settings.js @@ -0,0 +1,10 @@ +//The backend service URL for the Typed PID Maker instance used by the frontend. +export const ajaxBaseUrl = "http://localhost:8090"; +//export const ajaxBaseUrl = "https://demo.datamanager.kit.edu:8090/"; + +//The app description used to customize the frontend, e.g., for a specific project with a custom title and subtitle. +export const appDescription = { + "app-logo":"./images/typed-pid-maker-logo.svg", + "app-title":"Typed PID Maker UI", + "app-subtitle":"Validate, create, and maintain PIDs." +}; diff --git a/test.html b/test.html deleted file mode 100644 index 93f78dd..0000000 --- a/test.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - -
-
-

Simulation activity

-
-
-
-

Shifts the view, so the graph is centered at this location.

- - -
- -
-

Attracts (+) or repels (-) nodes to/from each other.

- - - -
- -
-

Prevents nodes from overlapping

- - - -
- -
-

Acts like gravity. Pulls all points towards an X location.

- - -
- -
-

Acts like gravity. Pulls all points towards a Y location.

- - -
- -
-

Sets link length

- - -
-
- - - - - diff --git a/typed-pid-maker-ui.html b/typed-pid-maker-ui.html index ca361fe..83ccd41 100644 --- a/typed-pid-maker-ui.html +++ b/typed-pid-maker-ui.html @@ -14,6 +14,7 @@ +

@@ -55,18 +56,20 @@

+

+ Use this field to connect to an instance of the Typed PID Maker. +

-

- Use this field to connect to an instance of the Typed PID Maker. -

- - + + - \ No newline at end of file +