NamH ec9b5bf682
fix: update new api from cortex to support 0.5.0 (#3221)
* fix: update new api from cortex to support 0.5.0

Signed-off-by: James <namnh0122@gmail.com>

* fix stop button for streaming

Signed-off-by: James <namnh0122@gmail.com>

* fix stop inference for nonstreaming

Signed-off-by: James <namnh0122@gmail.com>

* chore: remove umami prevent tracking call to vercel

Signed-off-by: James <namnh0122@gmail.com>

* add warning modal when running more than 2 model concurrently

Signed-off-by: James <namnh0122@gmail.com>

* fix: skip summarize if abort

Signed-off-by: James <namnh0122@gmail.com>

* 0.5.0-3

* add inference error popup

Signed-off-by: James <namnh0122@gmail.com>

* add back import local model

Signed-off-by: James <namnh0122@gmail.com>

* fix: max token issue (#3225)

Signed-off-by: James <namnh0122@gmail.com>

* format status

Signed-off-by: James <namnh0122@gmail.com>

* fix migration missing instructions

Signed-off-by: James <namnh0122@gmail.com>

* fix: wait for cortex process overlay should be on top (#3224)

* fix: wait for cortex process overlay should be on top

* chore: update cortex.js

* Cortex 0.5.0-5

* add import model to my model screen

Signed-off-by: James <namnh0122@gmail.com>

* fix: should migrate symlink models (#3226)

* fix import on windows (#3229)

Signed-off-by: James <namnh0122@gmail.com>

* fix yarn lint

Signed-off-by: James <namnh0122@gmail.com>

* fix: clean up port before start jan (#3232)

Signed-off-by: James <namnh0122@gmail.com>

---------

Signed-off-by: James <namnh0122@gmail.com>
Co-authored-by: Van Pham <64197333+Van-QA@users.noreply.github.com>
Co-authored-by: Louis <louis@jan.ai>
2024-08-02 09:37:04 +07:00

85 lines
2.3 KiB
TypeScript

import { useCallback } from 'react'
import { Model } from '@janhq/core'
import { Button, Badge } from '@janhq/joi'
import { useAtomValue } from 'jotai'
import useModelStop from '@/hooks/useModelStop'
import {
activeModelsAtom,
downloadedModelsAtom,
} from '@/helpers/atoms/Model.atom'
const Column = ['Name', 'Engine', '']
const TableActiveModel: React.FC = () => {
const stopModelMutation = useModelStop()
const activeModels = useAtomValue(activeModelsAtom)
const downloadedModels = useAtomValue(downloadedModelsAtom)
const models: Model[] = []
activeModels.forEach((m) => {
const model = downloadedModels.find((dm) => dm.model === m.model)
if (model) {
models.push(model)
}
})
const onStopModelClick = useCallback(
(modelId: string) => {
stopModelMutation.mutate(modelId)
},
[stopModelMutation]
)
return (
<div className="m-4 mr-0 w-1/2">
<div className="overflow-hidden rounded-lg border border-[hsla(var(--app-border))]">
<table className="w-full px-8">
<thead className="w-full border-b border-[hsla(var(--app-border))]">
<tr>
{Column.map((col, i) => (
<th
key={i}
className="px-4 py-2 text-left font-normal last:text-center"
>
{col}
</th>
))}
</tr>
</thead>
{models.map((model) => (
<tbody key={model.model}>
<tr>
<td
className="max-w-[200px] px-4 py-2 font-bold"
title={model.name}
>
<p className="line-clamp-2">{model.model}</p>
</td>
<td className="px-4 py-2">
<Badge theme="secondary">
{!model.engine ? '-' : `${model.engine}`}
</Badge>
</td>
<td className="px-4 py-2 text-center">
<Button
theme="destructive"
onClick={() => onStopModelClick(model.model)}
>
Stop
</Button>
</td>
</tr>
</tbody>
))}
</table>
</div>
</div>
)
}
export default TableActiveModel