Spaces:
Running
Running
| /** | |
| * | |
| * Copyright 2023-2025 InspectorRAGet Team | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| **/ | |
| 'use client'; | |
| import Link from 'next/link'; | |
| import { | |
| ExpandableTile, | |
| TileAboveTheFoldContent, | |
| TileBelowTheFoldContent, | |
| Tag, | |
| DefinitionTooltip, | |
| Toggletip, | |
| ToggletipButton, | |
| ToggletipContent, | |
| ToggletipActions, | |
| UnorderedList, | |
| ListItem, | |
| } from '@carbon/react'; | |
| import { Microscope, Information } from '@carbon/icons-react'; | |
| import { TileData } from '@/src/types'; | |
| import { | |
| MetricDefinitions, | |
| extractMetricDisplayName, | |
| } from '@/src/utilities/metrics'; | |
| import { calculateDuration } from '@/src/utilities/time'; | |
| import styles from './ExampleTile.module.scss'; | |
| export default function ExampleTile({ | |
| data, | |
| disableNavigation = false, | |
| expanded = true, | |
| }: { | |
| data: TileData; | |
| disableNavigation?: boolean; | |
| expanded?: boolean; | |
| }) { | |
| const [ | |
| durationInDays, | |
| durationInHours, | |
| durationInMinutes, | |
| durationInSeconds, | |
| ] = calculateDuration(data.endTimestamp, data.startTimestamp); | |
| return ( | |
| <ExpandableTile expanded={expanded}> | |
| <TileAboveTheFoldContent> | |
| <div className={styles.heading}> | |
| <Microscope className={styles.icon} /> | |
| {disableNavigation ? ( | |
| <span className={styles.title}>{data.name}</span> | |
| ) : ( | |
| <Link href={`/examples/${data.exampleId}`}> | |
| <span className={styles.title}>{data.name}</span> | |
| </Link> | |
| )} | |
| </div> | |
| </TileAboveTheFoldContent> | |
| <TileBelowTheFoldContent> | |
| <div className={styles.block}> | |
| <div className={styles.information}> | |
| <div className={styles.artifactEvaluations}> | |
| <div className={styles.artifactTitle}> | |
| <span># of tasks</span> | |
| </div> | |
| <div className={styles.artifactValue}> | |
| <span>{data.numTasks}</span> | |
| </div> | |
| </div> | |
| <div className={styles.artifactAnnotators}> | |
| <div className={styles.artifactTitle}> | |
| <span># of annotators</span> | |
| </div> | |
| <div className={styles.artifactValue}> | |
| <span>{data.annotators.length}</span> | |
| </div> | |
| </div> | |
| <div className={styles.artifactMetrics}> | |
| <div className={styles.artifactHeader}> | |
| <div className={styles.artifactTitle}> | |
| <span>Metrics</span> | |
| </div> | |
| <Toggletip> | |
| <ToggletipButton label="Additional information"> | |
| <Information /> | |
| </ToggletipButton> | |
| <ToggletipContent> | |
| <p>Analytics platform supports three kind of metrics</p> | |
| <UnorderedList> | |
| <ListItem className={styles.listItem}> | |
| Go vs No-Go Rubric | |
| </ListItem> | |
| <ListItem className={styles.listItem}> | |
| Intuitive Rubric | |
| </ListItem> | |
| <ListItem className={styles.listItem}> | |
| Detailed Rubric | |
| </ListItem> | |
| </UnorderedList> | |
| <ToggletipActions> | |
| <Link target="_blank" rel="noopener noreferrer" href=""> | |
| Reference | |
| </Link> | |
| </ToggletipActions> | |
| </ToggletipContent> | |
| </Toggletip> | |
| </div> | |
| <div className={styles.artifactValue}> | |
| {[...data.metrics].map((metric) => { | |
| return ( | |
| <Tag type={'cool-gray'} key={'metric-' + metric.name}> | |
| <DefinitionTooltip | |
| definition={ | |
| metric.description || MetricDefinitions[metric.name] | |
| } | |
| align={'bottom'} | |
| openOnHover={true} | |
| > | |
| {extractMetricDisplayName(metric)} | |
| </DefinitionTooltip> | |
| </Tag> | |
| ); | |
| })} | |
| </div> | |
| </div> | |
| <div className={styles.artifactModels}> | |
| <div className={styles.artifactTitle}> | |
| <span>Models</span> | |
| </div> | |
| <div className={styles.artifactValue}> | |
| {[...data.models].map((model) => { | |
| return ( | |
| <Tag type={'cool-gray'} key={'model-' + model.modelId}> | |
| {model.name} | |
| </Tag> | |
| ); | |
| })} | |
| </div> | |
| </div> | |
| {durationInDays || | |
| durationInHours || | |
| durationInMinutes || | |
| durationInSeconds ? ( | |
| <div className={styles.artifactDuration}> | |
| <div className={styles.artifactTitle}> | |
| <span>Duration</span> | |
| </div> | |
| <div className={styles.artifactValue}> | |
| <span> | |
| {durationInDays ? durationInDays + ' days ' : ''} | |
| {durationInHours ? durationInHours + ' hours ' : ''} | |
| {durationInMinutes ? durationInMinutes + ' mins ' : ''} | |
| {durationInSeconds} sec | |
| </span> | |
| </div> | |
| </div> | |
| ) : null} | |
| </div> | |
| </div> | |
| </TileBelowTheFoldContent> | |
| </ExpandableTile> | |
| ); | |
| } | |