Skip to content

Commit

Permalink
Merge pull request #99 from MyersResearchGroup/design-menu
Browse files Browse the repository at this point in the history
Menu Selectors
  • Loading branch information
Drock54651 authored Feb 27, 2025
2 parents 7aa9e85 + 618d6d0 commit ec8da75
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 43 deletions.
66 changes: 60 additions & 6 deletions src/activities.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,68 @@ import BugReportView from "./components/activities/explorer/BugReportView"
import GitHubView from "./components/activities/explorer/GitHubView";
import { FileIcon, RemoteControlIcon, BugReport } from "./icons"
import { RiGithubFill } from "react-icons/ri";


import { GiThorHammer} from "react-icons/gi";
import { ObjectTypes } from "./objectTypes";
import { FaGraduationCap } from "react-icons/fa";
import { BsGraphUpArrow } from "react-icons/bs";
import { BiSolidFlask } from "react-icons/bi";
import { HiOutlinePuzzlePiece } from "react-icons/hi2";

export const Activities = {
LocalFileExplorer: {
id: "synbio.activity.local-file-explorer",
title: "Local Explorer",
id: "synbio.activity.entire-workflow",
title: "Entire Workflow",
component: ExplorerActivityView,
icon: FileIcon,
objectTypesToList: Object.values(ObjectTypes).map(object => object.id) // Local Explorer should list every object
},
PartsSelection: {
id: "synbio.activity.parts-selection",
title: "Parts Selection",
component: ExplorerActivityView,
icon: HiOutlinePuzzlePiece,
objectTypesToList: [

]
},
Design: {
id: "synbio.activity.design",
title: "Design",
component: ExplorerActivityView,
icon: BsGraphUpArrow,
objectTypesToList: [
ObjectTypes.SBOL.id,
ObjectTypes.SBML.id,
ObjectTypes.OMEX.id,
ObjectTypes.Analysis.id
]
},
Build: {
id: "synbio.activity.build",
title: "Build",
component: ExplorerActivityView,
icon: GiThorHammer,
objectTypesToList: [
ObjectTypes.Plasmids.id
]
},
Test: {
id: "synbio.activity.test",
title: "Test",
component: ExplorerActivityView,
icon: BiSolidFlask,
objectTypesToList: [

]
},
Learn: {
id: "synbio.activity.learn",
title: "Learn",
component: ExplorerActivityView,
icon: FileIcon
icon: FaGraduationCap,
objectTypesToList: [

]
},
// RemoteFileExplorer: {
// id: "synbio.activity.remote-file-explorer",
Expand All @@ -37,4 +90,5 @@ export const Activities = {
}
export function getActivity(id) {
return Object.values(Activities).find(act => act.id == id)
}
}

2 changes: 1 addition & 1 deletion src/components/activities/Activities.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export default function Activities() {
<Text style={{display:"inline"}} size={'xs'} ml={10}>
<SaveIndicatorDisplay/>
</Text>
<activityDef.component {...activityState} />
<activityDef.component {...activityState} objectTypesToList = {activityDef.objectTypesToList} />
</Tabs.Panel>
)
})
Expand Down
4 changes: 2 additions & 2 deletions src/components/activities/explorer/ExplorerActivityView.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { useWorkingDirectory } from '../../../redux/hooks/workingDirectoryHooks'
import { IoRefreshOutline } from "react-icons/io5"
import { useLocalStorage } from '@mantine/hooks'

export default function ExplorerActivityView({ }) {
export default function ExplorerActivityView({objectTypesToList }) {

// handle first time visiting
const [firstTime, setFirstTime] = useLocalStorage({ key: 'first-time-visiting', defaultValue: true })
Expand All @@ -24,7 +24,7 @@ export default function ExplorerActivityView({ }) {

return workingDirectory ?
<>
<ExplorerList workDir = {workingDirectory} />
<ExplorerList workDir = {workingDirectory} objectTypesToList = {objectTypesToList} />
<Center mt={20}>
<FolderSelect onSelect={handleDirectorySelection}>
Switch Folder
Expand Down
42 changes: 22 additions & 20 deletions src/components/activities/explorer/ExplorerList.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import ExplorerListItem from './ExplorerListItem'
import SaveIndicatorDisplay from '../../saveIndicatorDisplay'


export default function ExplorerList({workDir}) {
export default function ExplorerList({workDir, objectTypesToList}) {

// grab file handles
const files = useFiles()
Expand Down Expand Up @@ -48,26 +48,28 @@ export default function ExplorerList({workDir}) {
// create AccordionItems by object type
Object.values(ObjectTypes).map((objectType, i) => {
// grab files of current type
const filesOfType = files.filter(file => file.objectType == objectType.id)
if(objectTypesToList.includes(objectType.id)){
const filesOfType = files.filter(file => file.objectType == objectType.id)
return (
<Accordion.Item value={objectType.id} key={i}>
<Accordion.Control>
<Title order={6} sx={titleStyle} >{objectType.listTitle}</Title>
</Accordion.Control>
<Accordion.Panel>
{objectType.createable &&
<CreateNewButton
onCreate={handleCreateObject(objectType)}
suggestedName={`New ${objectType.title}`}
>
New {objectType.title}
</CreateNewButton>
}
{createListItems(filesOfType, objectType.icon)}
</Accordion.Panel>
</Accordion.Item>
)
}

return (
<Accordion.Item value={objectType.id} key={i}>
<Accordion.Control>
<Title order={6} sx={titleStyle} >{objectType.listTitle}</Title>
</Accordion.Control>
<Accordion.Panel>
{objectType.createable &&
<CreateNewButton
onCreate={handleCreateObject(objectType)}
suggestedName={`New ${objectType.title}`}
>
New {objectType.title}
</CreateNewButton>
}
{createListItems(filesOfType, objectType.icon)}
</Accordion.Panel>
</Accordion.Item>
)
})
}
</Accordion>
Expand Down
21 changes: 7 additions & 14 deletions src/objectTypes.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,34 @@
import { BiWorld } from "react-icons/bi"
import { IoAnalyticsSharp } from "react-icons/io5"
import { TbComponents } from "react-icons/tb"
import { GrTestDesktop } from "react-icons/gr";
import { MdAlignVerticalTop } from "react-icons/md";
import { VscOutput } from "react-icons/vsc";

export const ObjectTypes = {
SBOL: {
id: "synbio.object-type.sbol",
title: "SBOL Component",
listTitle: "SBOL Components",
title: "Design",
listTitle: "Designs",
fileMatch: /<sbol:/,
icon: TbComponents,
createable: true,
extension: '.xml',
badgeLabel: "SBOL",
directory: "main"
},
SBML: {
id: "synbio.object-type.sbml",
title: "SBML File",
listTitle: "SBML Files",
title: "Model",
listTitle: "Models",
fileMatch: /<sbml/,
createable: false,
badgeLabel: "SBML",
directory: "main"
},
OMEX: {
id: "synbio.object-type.omex-archive",
title: "OMEX Archive",
listTitle: "OMEX Archives",
title: "Archive",
listTitle: "Archives",
fileNameMatch: /\.omex$/,
icon: BiWorld,
createable: false,
badgeLabel: "OMEX",
directory: "main"
},
Analysis: {
id: "synbio.object-type.analysis",
Expand All @@ -43,7 +38,6 @@ export const ObjectTypes = {
icon: IoAnalyticsSharp,
createable: true,
extension: '.analysis',
directory: "main"
},
Plasmids:{
id: "synbio.object-type.plasmid",
Expand All @@ -52,7 +46,6 @@ export const ObjectTypes = {
createable: true,
extension: '.xml',
icon: TbComponents,
directory: 'Plasmid',
fileNameMatch: /\.xml$/
}
}
Expand Down

0 comments on commit ec8da75

Please sign in to comment.