label-studio
Version:
Data Labeling Tool that is backend agnostic and can be embedded into your applications
93 lines (81 loc) • 2.43 kB
JavaScript
import React from "react";
import { Button } from "antd";
import { observer, inject } from "mobx-react";
import Hint from "../Hint/Hint";
import styles from "./Controls.module.scss";
export default inject("store")(
observer(({ item, store }) => {
/**
* Buttons of Controls
*/
let buttons = {
skip: "",
update: "",
submit: "",
};
const { userGenerate, sentUserGenerate } = item;
const { enableHotkeys, enableTooltips } = store.settings;
/**
* Task information
*/
let taskInformation;
if (store.task) {
taskInformation = <h4 className={styles.task + " ls-task-info"}>Task ID: {store.task.id}</h4>;
}
/**
* Hotkeys
*/
if (enableHotkeys && enableTooltips) {
buttons.submit = <Hint> [ Ctrl+Enter ]</Hint>;
buttons.skip = <Hint> [ Ctrl+Space ]</Hint>;
buttons.update = <Hint> [ Alt+Enter] </Hint>;
}
let skipButton;
let updateButton;
let submitButton;
/**
* Check for Predict Menu
*/
if (!store.completionStore.predictSelect || store.explore) {
if (store.hasInterface("skip")) {
skipButton = (
<Button type="ghost" onClick={store.skipTask} className={styles.skip + " ls-skip-btn"}>
Skip {buttons.skip}
</Button>
);
}
if ((userGenerate && !sentUserGenerate) || (store.explore && !userGenerate && store.hasInterface("submit"))) {
submitButton = (
<Button
type="primary"
icon="check"
onClick={store.submitCompletion}
className={styles.submit + " ls-submit-btn"}
>
Submit {buttons.submit}
</Button>
);
}
if ((userGenerate && sentUserGenerate) || (!userGenerate && store.hasInterface("update"))) {
updateButton = (
<Button type="primary" icon="rollback" onClick={store.updateCompletion} className="ls-update-btn">
Update {buttons.update}
</Button>
);
}
}
let content = (
<div className={styles.block}>
<div className={styles.wrapper}>
<div className={styles.container}>
{skipButton}
{updateButton}
{submitButton}
</div>
{taskInformation}
</div>
</div>
);
return (item.type === "completion" || store.explore) && content;
}),
);