Skip to content

Commit

Permalink
Gamify the experience with a percentage of completion.
Browse files Browse the repository at this point in the history
  • Loading branch information
marcenacp committed Dec 1, 2023
1 parent 50864c9 commit 9bb2cc2
Showing 1 changed file with 34 additions and 9 deletions.
43 changes: 34 additions & 9 deletions editor/views/overview.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,21 @@
the export button in the upper right corner."""


def _relevant_fields(class_or_instance: type):
if isinstance(class_or_instance, type):
return [
field.name
for field in dataclasses.fields(class_or_instance)
if field not in _NON_RELEVANT_METADATA
]
else:
return [
field
for field, value in dataclasses.asdict(class_or_instance).items()
if value and field not in _NON_RELEVANT_METADATA
]


def render_overview():
metadata: Metadata = st.session_state[Metadata]
col1, col2 = st.columns([1, 1], gap="medium")
Expand All @@ -52,15 +67,25 @@ def render_overview():
args=(MetadataEvent.DESCRIPTION, metadata, key),
)
st.divider()
left, middle, right = st.columns([1, 1, 1])
fields = [
field
for field, value in dataclasses.asdict(metadata).items()
if value and field not in _NON_RELEVANT_METADATA
]
left.metric("Number of metadata", len(fields))
middle.metric("Number of resources", len(metadata.distribution))
right.metric("Number of RecordSets", len(metadata.record_sets))
col_a, col_b, col_c, col_d = st.columns([1, 1, 1, 1])
fields = len(_relevant_fields(metadata))
metadata_weight = len(_relevant_fields(Metadata))
completion = int(
# Formula for the completion:
# - Resources and RecordSets count as much as Metadata.
# - Metadata is the percentage of filled fields.
(
fields
+ (metadata_weight if metadata.distribution else 0)
+ (metadata_weight if metadata.record_sets else 0)
)
* 100
/ (3 * metadata_weight)
)
col_a.metric("Completion", f"{completion}%")
col_b.metric("Number of metadata", fields)
col_c.metric("Number of resources", len(metadata.distribution))
col_d.metric("Number of RecordSets", len(metadata.record_sets))
with col2:
user_started_editing = metadata.record_sets or metadata.distribution
if user_started_editing:
Expand Down

0 comments on commit 9bb2cc2

Please sign in to comment.