feat: Add BetaTag to Copilot resume chat label in SettingsOther component
This commit is contained in:
parent
3104409558
commit
014565a14e
@ -10,7 +10,6 @@ import { useTranslation } from "react-i18next"
|
|||||||
import { Link, useLocation } from "react-router-dom"
|
import { Link, useLocation } from "react-router-dom"
|
||||||
import { OllamaIcon } from "../Icons/Ollama"
|
import { OllamaIcon } from "../Icons/Ollama"
|
||||||
import { Tag } from "antd"
|
import { Tag } from "antd"
|
||||||
import { BetaTag } from "../Common/Beta"
|
|
||||||
|
|
||||||
function classNames(...classes: string[]) {
|
function classNames(...classes: string[]) {
|
||||||
return classes.filter(Boolean).join(" ")
|
return classes.filter(Boolean).join(" ")
|
||||||
@ -82,7 +81,6 @@ export const SettingsLayout = ({ children }: { children: React.ReactNode }) => {
|
|||||||
name={
|
name={
|
||||||
<div className="inline-flex items-center gap-2">
|
<div className="inline-flex items-center gap-2">
|
||||||
{t("manageKnowledge.title")}
|
{t("manageKnowledge.title")}
|
||||||
<BetaTag />
|
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
icon={BlocksIcon}
|
icon={BlocksIcon}
|
||||||
|
@ -91,125 +91,123 @@ export const ModelsBody = () => {
|
|||||||
{status === "pending" && <Skeleton paragraph={{ rows: 8 }} />}
|
{status === "pending" && <Skeleton paragraph={{ rows: 8 }} />}
|
||||||
|
|
||||||
{status === "success" && (
|
{status === "success" && (
|
||||||
<div
|
<div className="overflow-x-auto">
|
||||||
className="overflow-x-auto"
|
|
||||||
>
|
|
||||||
<Table
|
<Table
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
title: t("manageModels.columns.name"),
|
title: t("manageModels.columns.name"),
|
||||||
dataIndex: "name",
|
dataIndex: "name",
|
||||||
key: "name"
|
key: "name"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t("manageModels.columns.digest"),
|
title: t("manageModels.columns.digest"),
|
||||||
dataIndex: "digest",
|
dataIndex: "digest",
|
||||||
key: "digest",
|
key: "digest",
|
||||||
render: (text: string) => (
|
render: (text: string) => (
|
||||||
<Tooltip title={text}>
|
<Tooltip title={text}>
|
||||||
<Tag
|
<Tag
|
||||||
className="cursor-pointer"
|
className="cursor-pointer"
|
||||||
color="blue">{`${text?.slice(0, 5)}...${text?.slice(-4)}`}</Tag>
|
color="blue">{`${text?.slice(0, 5)}...${text?.slice(-4)}`}</Tag>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t("manageModels.columns.modifiedAt"),
|
title: t("manageModels.columns.modifiedAt"),
|
||||||
dataIndex: "modified_at",
|
dataIndex: "modified_at",
|
||||||
key: "modified_at",
|
key: "modified_at",
|
||||||
render: (text: string) => dayjs(text).fromNow(true)
|
render: (text: string) => dayjs(text).fromNow(true)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t("manageModels.columns.size"),
|
title: t("manageModels.columns.size"),
|
||||||
dataIndex: "size",
|
dataIndex: "size",
|
||||||
key: "size",
|
key: "size",
|
||||||
render: (text: number) => bytePerSecondFormatter(text)
|
render: (text: number) => bytePerSecondFormatter(text)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t("manageModels.columns.actions"),
|
title: t("manageModels.columns.actions"),
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<div className="flex gap-4">
|
<div className="flex gap-4">
|
||||||
<Tooltip title={t("manageModels.tooltip.delete")}>
|
<Tooltip title={t("manageModels.tooltip.delete")}>
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (
|
|
||||||
window.confirm(t("manageModels.confirm.delete"))
|
|
||||||
) {
|
|
||||||
deleteOllamaModel(record.model)
|
|
||||||
if (
|
if (
|
||||||
selectedModel &&
|
window.confirm(t("manageModels.confirm.delete"))
|
||||||
selectedModel === record.model
|
|
||||||
) {
|
) {
|
||||||
setSelectedModel(null)
|
deleteOllamaModel(record.model)
|
||||||
|
if (
|
||||||
|
selectedModel &&
|
||||||
|
selectedModel === record.model
|
||||||
|
) {
|
||||||
|
setSelectedModel(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}}
|
||||||
}}
|
className="text-red-500 dark:text-red-400">
|
||||||
className="text-red-500 dark:text-red-400">
|
<Trash2 className="w-5 h-5" />
|
||||||
<Trash2 className="w-5 h-5" />
|
</button>
|
||||||
</button>
|
</Tooltip>
|
||||||
</Tooltip>
|
<Tooltip title={t("manageModels.tooltip.repull")}>
|
||||||
<Tooltip title={t("manageModels.tooltip.repull")}>
|
<button
|
||||||
<button
|
onClick={() => {
|
||||||
onClick={() => {
|
if (
|
||||||
if (
|
window.confirm(t("manageModels.confirm.repull"))
|
||||||
window.confirm(t("manageModels.confirm.repull"))
|
) {
|
||||||
) {
|
pullOllamaModel(record.model)
|
||||||
pullOllamaModel(record.model)
|
}
|
||||||
}
|
}}
|
||||||
}}
|
className="text-gray-500 dark:text-gray-400">
|
||||||
className="text-gray-500 dark:text-gray-400">
|
<RotateCcw className="w-5 h-5" />
|
||||||
<RotateCcw className="w-5 h-5" />
|
</button>
|
||||||
</button>
|
</Tooltip>
|
||||||
</Tooltip>
|
</div>
|
||||||
</div>
|
)
|
||||||
)
|
}
|
||||||
}
|
]}
|
||||||
]}
|
expandable={{
|
||||||
expandable={{
|
expandedRowRender: (record) => (
|
||||||
expandedRowRender: (record) => (
|
<Table
|
||||||
<Table
|
pagination={false}
|
||||||
pagination={false}
|
columns={[
|
||||||
columns={[
|
{
|
||||||
{
|
title: t("manageModels.expandedColumns.parentModel"),
|
||||||
title: t("manageModels.expandedColumns.parentModel"),
|
key: "parent_model",
|
||||||
key: "parent_model",
|
dataIndex: "parent_model"
|
||||||
dataIndex: "parent_model"
|
},
|
||||||
},
|
{
|
||||||
{
|
title: t("manageModels.expandedColumns.format"),
|
||||||
title: t("manageModels.expandedColumns.format"),
|
key: "format",
|
||||||
key: "format",
|
dataIndex: "format"
|
||||||
dataIndex: "format"
|
},
|
||||||
},
|
{
|
||||||
{
|
title: t("manageModels.expandedColumns.family"),
|
||||||
title: t("manageModels.expandedColumns.family"),
|
key: "family",
|
||||||
key: "family",
|
dataIndex: "family"
|
||||||
dataIndex: "family"
|
},
|
||||||
},
|
{
|
||||||
{
|
title: t("manageModels.expandedColumns.parameterSize"),
|
||||||
title: t("manageModels.expandedColumns.parameterSize"),
|
key: "parameter_size",
|
||||||
key: "parameter_size",
|
dataIndex: "parameter_size"
|
||||||
dataIndex: "parameter_size"
|
},
|
||||||
},
|
{
|
||||||
{
|
title: t(
|
||||||
title: t(
|
"manageModels.expandedColumns.quantizationLevel"
|
||||||
"manageModels.expandedColumns.quantizationLevel"
|
),
|
||||||
),
|
key: "quantization_level",
|
||||||
key: "quantization_level",
|
dataIndex: "quantization_level"
|
||||||
dataIndex: "quantization_level"
|
}
|
||||||
}
|
]}
|
||||||
]}
|
dataSource={[record.details]}
|
||||||
dataSource={[record.details]}
|
locale={{
|
||||||
locale={{
|
emptyText: t("common:noData")
|
||||||
emptyText: t("common:noData")
|
}}
|
||||||
}}
|
/>
|
||||||
/>
|
),
|
||||||
),
|
defaultExpandAllRows: false
|
||||||
defaultExpandAllRows: false
|
}}
|
||||||
}}
|
bordered
|
||||||
bordered
|
dataSource={data}
|
||||||
dataSource={data}
|
rowKey={(record) => `${record.model}-${record.digest}`}
|
||||||
rowKey={(record) => `${record.model}-${record.digest}`}
|
/>
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@ -223,6 +221,7 @@ export const ModelsBody = () => {
|
|||||||
onSubmit={form.onSubmit((values) => pullOllamaModel(values.model))}>
|
onSubmit={form.onSubmit((values) => pullOllamaModel(values.model))}>
|
||||||
<Input
|
<Input
|
||||||
{...form.getInputProps("model")}
|
{...form.getInputProps("model")}
|
||||||
|
required
|
||||||
placeholder={t("manageModels.modal.placeholder")}
|
placeholder={t("manageModels.modal.placeholder")}
|
||||||
size="large"
|
size="large"
|
||||||
/>
|
/>
|
||||||
|
@ -86,10 +86,12 @@ export const SettingOther = () => {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-row justify-between">
|
<div className="flex flex-row justify-between">
|
||||||
<span className="text-gray-500 dark:text-neutral-50">
|
<div className="inline-flex items-center gap-2">
|
||||||
{t("generalSettings.settings.copilotResumeLastChat.label")}
|
<BetaTag />
|
||||||
</span>
|
<span className="text-gray-500 dark:text-neutral-50">
|
||||||
|
{t("generalSettings.settings.copilotResumeLastChat.label")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<Switch
|
<Switch
|
||||||
checked={copilotResumeLastChat}
|
checked={copilotResumeLastChat}
|
||||||
onChange={(checked) => setCopilotResumeLastChat(checked)}
|
onChange={(checked) => setCopilotResumeLastChat(checked)}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user