import React, {FC} from 'react'; import { createTableColumn, DataGrid, DataGridBody, DataGridCell, DataGridHeader, DataGridHeaderCell, DataGridRow, TableCellLayout, TableColumnDefinition, Text, Textarea } from '@fluentui/react-components'; import {ToolTipButton} from '../components/ToolTipButton'; import {ArrowClockwise20Regular, ArrowDownload20Regular, Open20Regular} from '@fluentui/react-icons'; import {observer} from 'mobx-react-lite'; import commonStore, {ModelSourceItem} from '../stores/commonStore'; import {BrowserOpenURL} from '../../wailsjs/runtime'; import {DownloadFile} from '../../wailsjs/go/backend_golang/App'; const columns: TableColumnDefinition[] = [ createTableColumn({ columnId: 'file', compare: (a, b) => { return a.name.localeCompare(b.name); }, renderHeaderCell: () => { return 'File'; }, renderCell: (item) => { return ( {item.name} ); } }), createTableColumn({ columnId: 'desc', compare: (a, b) => { return a.desc['en'].localeCompare(b.desc['en']); }, renderHeaderCell: () => { return 'Desc'; }, renderCell: (item) => { return ( {item.desc['en']} ); } }), createTableColumn({ columnId: 'size', compare: (a, b) => { return a.size - b.size; }, renderHeaderCell: () => { return 'Size'; }, renderCell: (item) => { return ( {(item.size / (1024 * 1024 * 1024)).toFixed(2) + 'GB'} ); } }), createTableColumn({ columnId: 'lastUpdated', compare: (a, b) => { if (!a.lastUpdatedMs) a.lastUpdatedMs = Date.parse(a.lastUpdated); if (!b.lastUpdatedMs) b.lastUpdatedMs = Date.parse(b.lastUpdated); return a.lastUpdatedMs - b.lastUpdatedMs; }, renderHeaderCell: () => { return 'Last updated'; }, renderCell: (item) => { return new Date(item.lastUpdated).toLocaleString(); } }), createTableColumn({ columnId: 'actions', compare: (a, b) => { return a.isDownloading ? 0 : a.isLocal ? 1 : 2; }, renderHeaderCell: () => { return 'Actions'; }, renderCell: (item) => { return (
} onClick={() => { DownloadFile(`./models/${item.name}`, item.downloadUrl); }}/> } onClick={() => { BrowserOpenURL(item.url); }}/>
); } }) ]; export const Models: FC = observer(() => { return (
Models
Model Source Manifest List }/>
Provide JSON file URLs for the models manifest. Separate URLs with semicolons. The "models" field in JSON files will be parsed into the following table.