2022-12-14 15:03:50 +00:00
|
|
|
import { useState, useEffect } from 'react'
|
|
|
|
import Head from 'next/head'
|
2023-01-19 11:18:02 +00:00
|
|
|
import Workspace from '../components/Workspace'
|
2022-12-14 15:03:50 +00:00
|
|
|
import styles from '../styles/Home.module.css'
|
|
|
|
|
|
|
|
export default function Home({ searchText }) {
|
|
|
|
|
2023-01-19 11:18:02 +00:00
|
|
|
const [workspaces, setWorkspaces] = useState(null)
|
2022-12-14 15:03:50 +00:00
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
fetch('list.json')
|
|
|
|
.then((res) => res.json())
|
2023-01-19 11:18:02 +00:00
|
|
|
.then((workspaces) => {
|
|
|
|
setWorkspaces(workspaces)
|
2022-12-14 15:03:50 +00:00
|
|
|
})
|
|
|
|
}, [])
|
|
|
|
|
2023-01-19 11:18:02 +00:00
|
|
|
let filteredworkspaces = workspaces && workspaces.workspaces && workspaces.workspaces.length > 0 ? [...workspaces.workspaces] : [];
|
2022-12-14 15:03:50 +00:00
|
|
|
const lowerSearch = searchText && searchText.toLowerCase();
|
|
|
|
if (searchText && searchText !== "") {
|
2023-01-19 11:18:02 +00:00
|
|
|
filteredworkspaces = filteredworkspaces.filter((i) => {
|
2023-01-04 09:19:51 +00:00
|
|
|
const category = (i.categories && i.categories.length > 0) ? i.categories.filter((i) =>
|
2022-12-14 15:03:50 +00:00
|
|
|
i.toLowerCase().includes(lowerSearch)
|
2023-01-04 09:19:51 +00:00
|
|
|
) : [];
|
2022-12-14 15:03:50 +00:00
|
|
|
return (
|
|
|
|
i.name.toLowerCase().includes(lowerSearch) ||
|
|
|
|
category.length > 0
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="">
|
|
|
|
<Head>
|
2023-01-19 11:18:02 +00:00
|
|
|
<title>Kasm Workspaces</title>
|
|
|
|
<meta name="description" content="List of workspaces for Kasm Webspaces" />
|
2022-12-14 15:03:50 +00:00
|
|
|
<link rel="icon" href="/favicon.ico" />
|
|
|
|
</Head>
|
|
|
|
|
|
|
|
|
2023-02-15 10:24:54 +00:00
|
|
|
<main className="p-8 py-10 xl:px-20">
|
|
|
|
<h1 className='flex uppercase tracking-widest justify-center mb-10'><span className='flex items-center text-lg bg-slate-100/90 rounded overflow-hidden shadow'><span className='flex px-3 text-xs opacity-100'>Workspaces</span> <span className='text-white p-3 py-1 flex bg-[#2980b9]'>{workspaces && workspaces.workspacecount}</span></span></h1>
|
2022-12-14 15:03:50 +00:00
|
|
|
<div className="flex flex-wrap gap-1 justify-center">
|
2023-01-19 11:18:02 +00:00
|
|
|
{filteredworkspaces && filteredworkspaces.length > 0 && filteredworkspaces.map(function (workspace, i) {
|
|
|
|
return <Workspace key={workspace.sha} workspace={workspace} />
|
2022-12-14 15:03:50 +00:00
|
|
|
})}
|
2023-01-19 11:18:02 +00:00
|
|
|
{filteredworkspaces && filteredworkspaces.length === 0 && (
|
|
|
|
<p>No workspaces found {searchText !== '' && ('matching "' + searchText + '"')}</p>
|
2022-12-14 15:03:50 +00:00
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div className={styles.grid}>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</main>
|
|
|
|
</div >
|
|
|
|
)
|
|
|
|
}
|