Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/mkdocs/mkdocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ nav:
- backendconfig/index.md
- backendconfig/authorization/index.md
- backendconfig/dois.md
- frontendconfig/index.md


- About:
Expand Down
36 changes: 36 additions & 0 deletions docs/backendconfig/jobs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# SciCat jobs - how to use them

If you want to post a jobs, check the structure of the job's body. From swagger endpoints we see that there are 4 fields:

* types (mandatory)
* jobsParams (mandatory)
* ownerUser
* ownerGroup


## **jobTypes**

Possible values can be seen from the [example config file](https://github.com/SciCatProject/scicat-backend-next/blob/master/jobConfig.example.yaml):

1. jobType: template_job
2. jobType: archive
3. jobType: retrieve
4. jobType: public
5. jobType: email_demo
6. jobType: url_demo
7. jobType: rabbitmq_demo
8. jobType: switch_demo
9. jobType: validate_demo


## **actionTypes**

Per job one can execute several actions. There are these actionTypes:

1. actionType: log
2. actionType: validate
3. actionType: rabbitmq
4. actionType: url
5. actionType: switch
6. actionType: email
7. actionType: error
64 changes: 64 additions & 0 deletions docs/frontendconfig/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Frontend configuration

In only two json files SciCat's frontend configuration is managed, both as part of the backend configuration:

1. [frontend.config.json](https://github.com/SciCatProject/scicat-backend-next/blob/master/src/config/frontend.config.json) and
2. [frontend.theme.json](https://github.com/SciCatProject/scicat-backend-next/blob/master/src/config/frontend.theme.json)

Please write about
- Why the frontend config is in the backend config?
- What the scope is of these two files?
- Please provide code snippets examples for enabling/disabling buttons. Add ideally screenshots.

# Default List & Filter Configuration Pattern - Frontend Configuration Guide

## Overview

This guide explains how to configure the List & Side-Panel Configuration Pattern used on the frontend.
It allows customizing how list-based components (e.g., datasets, proposals) display table columns, side-panel filters, and optional query conditions.

The configuration should be defined or mounted at the location specified by the environment variable `FRONTEND_CONFIG_FILE` (default: `src/config/frontend.config.json`).

## Configuration Details

### **Columns**

Defines how each field is displayed in the list table.

| **Property** | **Type** | **Description** | **Example / Notes** |
| ------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| `name` | `string` | Object key whose value will be displayed in the column. | `"datasetName"` |
| `order` | `number` | Position of the column in the table. | `2` |
| `type` | `string` | How the value is rendered:<br>• `standard` – plain text (default)<br>• `hoverContent` – shows icon with popup/modal when mouseover (for long text)<br>• `date` – formats ISO date strings; can include a `format` (e.g. `yyyy-MM-dd`) | `"date"` |
| `width` | `number` | Default width of the column. | `200` |
| `format` | `string` | Optional property used **only** when `type` is set to `date`. Defines how ISO date strings are displayed (e.g. `yyyy-MM-dd`). <br> it fallsback to `dateFormat` or `yyyy-MM-dd HH:mm` for dataset and `yyyy-MM-dd` for proposal | `"yyyy-MM-dd"` |
| `enabled` | `boolean` | Whether the column is displayed by default. | `true` |

---

### **Filters**

Defines which filters appear in the side panel and how they behave.

| **Property** | **Type** | **Description** | **Example / Notes** |
| ------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| `key` | `string` | Object key used for filtering. | `"creationTime"` |
| `label` | `string` | Custom label for the filter. If not provided, it falls back to `labelLocalization` or `key`. | `"Creation Time"` |
| `type` | `string` | Filter input type:<br>• `text` – _deprecated_ (use search box)<br>• `multiSelect` – dropdown with multiple options; supports `checkBoxFilterClickTrigger` for auto-apply<br>• `dateRange` – calendar or manual from–to input<br>• `checkbox` – pre-populated list; supports `checkBoxFilterClickTrigger` for auto-apply | `"multiSelect"` |
| `description` | `string` | Tooltip text for the filter. | `"Filter by dataset type"` |
| `enabled` | `boolean` | Whether the filter is active by default. | `true` |

---

### **Conditions**

Defines predefined condition filter in the side panel (currently supported only for the dataset table)

| **Property** | **Type** | **Description** | **Example / Notes** |
| ------------ | -------- | ------------------------------------------------- | ------------------- |
| _–_ | _–_ | Currently supported **only for dataset filters**. | — |
| `lhs` | `string` | Metadata key to filter on | `"outgassing_values_after_1h"` |
| `relation` | `string` | Comparison operator:<br>• `GREATER_THAN`<br>• `GREATER_THAN_OR_EQUAL`<br>• `LESS_THAN`<br>• `LESS_THAN_OR_EQUAL`<br>• `EQUAL_TO`<br>• `RANGE` | `"EQUAL_TO"` |
| `rhs` | `string` | Value to compare against | `"3.1e4"` |
| `unit` | `string` | **Optional** unit for the value | `"mbar l/s/cm^2"` |
| `unitsOptions`| `string[]`| **Optional** A list of allowed units for this condition. When provided, the unit dropdown will be restricted to only these options | `["mbar l/s/cm^2", "Pa m^3/s/m^2"]`
17 changes: 15 additions & 2 deletions docs/operator-guide/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,13 @@ SciCat covers these core aspects in a flexible way:
1. Searchable metadata fields, most common and highly specific ones. SciCat was developed by the PaNoSc community and has been successfully used more widely. This is because SciCat is highly configurable.
2. Provision of unique persistent identifiers not only for the internal catalogue, but also connecting to the global DOI system through e.g. ready pathway to publication via [DataCite](https://datacite.org/).

SciCat is an open source project can can be developed in accordance with our (license)[https://github.com/SciCatProject/scicat-backend-next?tab=BSD-3-Clause-1-ov-file#readme].
SciCat is an open source project can can be developed in accordance with our [license](https://github.com/SciCatProject/scicat-backend-next?tab=BSD-3-Clause-1-ov-file#readme).

## Dataset ingestion
You find here a pythonic way of metadata ingestion using SciCats API based on the PySciCat client:
See this [how-to-ingest doc](https://www.scicatproject.org/pyscicat/howto/ingest.html) to get started.

Another example that uses Jupyter Notebook in SciCatLive (see below) can be found [here]([https://github.com/SciCatProject/scicatlive/blob/main/services/jupyter/config/notebooks/pyscicat.ipynb) which includes how to authenticate, create a dataset, add datablocks and upload an attachement.

## Up-to-date operator's information
Generally, the [**scicatlive**](https://www.scicatproject.org/scicatlive/latest/) documentation contains an up-to-date information how to set up and run the system ```SciCat``` interfacing it with various external, site-specific services. For troublshooting issues, please refer [the User's Guide](../troubleshoot/index.md).
Expand All @@ -30,6 +35,11 @@ These two components together comprise the "backend" of the architecture.
### Configuration of the backend
There is one central place where one has a handle on how the backend is configured in SciCat: the [dotenv](../backendconfig/index.md) file.


### Example: How to connect your scicat to an external service
One useful feature of SciCat is to be able to connect your scicat to some external service via "SciCat jobs". Traditionally there were three fixed types, a job to archive, to retrieve and to publish, visible from the GUI through the respective buttons. Since recently (summer 2025) there are in total 9 types available. How to use them for your site, start with this documentation [here](../backendconfig/jobs.md) for admins. For now, stick to the developers documentation directly in the [code repo](https://github.com/SciCatProject/documentation/blob/master/Development/v4.x/backend/configuration/jobconfig.md).


### Example: How to integrate to OIDC using keycloak

Integration with an identity provider, Keycloak, can be done using Open ID Connect, a protocol for authentication.
Expand All @@ -41,10 +51,13 @@ To the REST server an arbitrary number of "clients" (frontends) can be connected

In addition to the GUI other clients exist, such as command line (CLI) clients (example exist written in GO and Python) or desktop based GUI applications based on Qt. The CLI tools are especially useful for automated workflows, e.g. to get the data into the data catalog. This process is termed "ingestion" of the data. But they can also be used to add the data manually, especially for derived data, since this part of the workflow is often not possible to automate, in particular in truly experimental setups.

### Configuration of the frontend
### Start up a frontend client

To start a local instance of the frontend follow the recipe: install requirements, esp. angular, git clone the [code](https://github.com/SciCatProject/frontend), go the the directory and run "npm run start". Then you can launch it by entering "localhost:4200".

### Configuration of the frontend
[Jays Link](https://github.com/SciCatProject/scicat-backend-next/pull/2306/files) Find [here](../frontendconfig/index.md) a guide of the frontend configuration.

### How to include site-specific logos
See [here](https://github.com/SciCatProject/frontend/blob/master/SITE-LOGO-CONFIGURATION.md) for example procedure how to include your logo.

Expand Down
4 changes: 2 additions & 2 deletions docs/user-guide/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Welcome to SciCat Users Guide

Scicat, a scientific metadata catalogue, allows your to explore your datasets through their metadata. SciCat has mechanisms to interact with the related datasets through its flexible integration with most storage systems.
Scicat, a scientific metadata catalogue, allows you to explore your datasets through their metadata. SciCat has mechanisms to interact with the related datasets through its flexible integration with most storage systems.

SciCat is a data management tool accompanying some critical steps during the entire data life cycle which are: getting an overview of datasets for data analysis, for re-analysis, for publishing datasets, and in particular for publication.

Expand All @@ -10,7 +10,7 @@ Advantages of SciCat:
* The Data Model of SciCat forsees a schemaless fields for quite different use cases. This concept has been implemented for the main class, Datasets, but is extended to function in the same way for the other classes e.g. Proposlas, Samples, Intstruments and Published Data.
* Its components are based on OpenSource software projects and state of the art technologies using MongoDB as backbone database, nestjs as backend basis.

In the past 5 years SciCat has undergone major improvements in key areas for better user experience and re-structuring to meet the various different needs of photon science labs. The collaboration has grown and governance will be soon established.
In the past 5 years (since about 2020) SciCat has undergone major improvements in key areas for better user experience and re-structuring to meet the various different needs of photon science labs. The collaboration has grown and governance will be soon established.

## How to run SciCat
More detailed information on how to run scicat, see [scicatlive documentation](https://www.scicatproject.org/scicatlive/latest/). For more details on how to ingest, setup and deploy information from SciCat, see the [operator's guide](../operator-guide/index.md).
Expand Down