croissant-editor / views /metadata.py
marcenacp's picture
Reapply "Deploy (see actual commits on https://github.com/mlcommons/croissant)."
8a5a6d8
raw
history blame
3.52 kB
import streamlit as st
from core.state import Metadata
from events.metadata import find_license_index
from events.metadata import handle_metadata_change
from events.metadata import LICENSES
from events.metadata import LICENSES_URL
from events.metadata import MetadataEvent
def render_metadata():
"""Renders the `Metadata` view."""
metadata: Metadata = st.session_state[Metadata]
col1, col2 = st.columns([1, 1])
with col1.expander("**Generic metadata**", expanded=True):
_render_generic_metadata(metadata)
def _render_generic_metadata(metadata: Metadata):
"""Renders all non-RAI generic metadata."""
index = find_license_index(metadata.license)
key = "metadata-url"
st.text_input(
label="URL",
key=key,
value=metadata.url,
placeholder="URL to the dataset.",
on_change=handle_metadata_change,
args=(MetadataEvent.URL, metadata, key),
)
key = "metadata-version"
st.text_input(
label="Version (`MAJOR.MINOR.PATCH`)",
key=key,
help=(
"Refer to https://semver.org/spec/v2.0.0.html for more information on the"
" format."
),
value=metadata.version,
placeholder="1.0.0",
on_change=handle_metadata_change,
args=(MetadataEvent.VERSION, metadata, key),
)
key = "metadata-license"
st.selectbox(
label="License",
help=(
"More information on license names and meaning can be found"
f" [here]({LICENSES_URL})."
),
key=key,
options=LICENSES.keys(),
index=index,
on_change=handle_metadata_change,
args=(MetadataEvent.LICENSE, metadata, key),
)
key = "metadata-cite-as"
st.text_area(
label="Citation",
key=key,
value=metadata.cite_as,
placeholder="@book{\n title={Title}\n}",
on_change=handle_metadata_change,
args=(MetadataEvent.CITE_AS, metadata, key),
)
key = "metadata-date-published"
st.date_input(
label="Date of first broadcast/publication.",
key=key,
value=metadata.date_published,
on_change=handle_metadata_change,
args=(MetadataEvent.DATE_PUBLISHED, metadata, key),
)
if metadata.creators:
creator = metadata.creators[0]
col1, col2, col3 = st.columns([1, 1, 1])
key = "metadata-creator-name"
col1.text_input(
label="Creator name",
key=key,
value=creator.name,
on_change=handle_metadata_change,
placeholder="A person or an organization",
args=(MetadataEvent.CREATOR_NAME, metadata, key),
)
key = "metadata-creator-url"
col2.text_input(
label="Creator URL",
key=key,
value=creator.url,
placeholder="https://mlcommons.org",
on_change=handle_metadata_change,
args=(MetadataEvent.CREATOR_URL, metadata, key),
)
key = "metadata-creator-remove"
col3.button(
"✖️",
key=key,
help="Remove the creator",
on_click=handle_metadata_change,
args=(MetadataEvent.CREATOR_REMOVE, metadata, key),
)
else:
key = "metadata-add-creator"
st.button(
label="✚ Add a creator",
key=key,
on_click=handle_metadata_change,
args=(MetadataEvent.CREATOR_ADD, metadata, key),
)