From 6d3028131f30dc43a85f9c9b1281c2169be4052f Mon Sep 17 00:00:00 2001 From: Derick Sayavong Date: Wed, 12 Feb 2025 20:30:26 -0700 Subject: [PATCH 1/3] Activities can filter objects --- src/activities.js | 49 +++++++++++++++++-- src/components/activities/Activities.jsx | 2 +- .../explorer/ExplorerActivityView.jsx | 4 +- .../activities/explorer/ExplorerList.jsx | 42 ++++++++-------- 4 files changed, 70 insertions(+), 27 deletions(-) diff --git a/src/activities.js b/src/activities.js index 053489d..059c1b1 100644 --- a/src/activities.js +++ b/src/activities.js @@ -3,15 +3,55 @@ 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"; export const Activities = { LocalFileExplorer: { id: "synbio.activity.local-file-explorer", title: "Local Explorer", component: ExplorerActivityView, - icon: FileIcon + icon: FileIcon, + objectTypesToList: Object.values(ObjectTypes).map(object => object.id) // Local Explorer should list every object + }, + Model: { + id: "synbio.activity.model", + title: "Model", + component: ExplorerActivityView, + icon: BsGraphUpArrow, + objectTypesToList: [ + + ] + }, + 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: FaGraduationCap, + objectTypesToList: [ + + ] }, // RemoteFileExplorer: { // id: "synbio.activity.remote-file-explorer", @@ -37,4 +77,5 @@ export const Activities = { } export function getActivity(id) { return Object.values(Activities).find(act => act.id == id) -} \ No newline at end of file +} + diff --git a/src/components/activities/Activities.jsx b/src/components/activities/Activities.jsx index d2c0df2..faa27dd 100644 --- a/src/components/activities/Activities.jsx +++ b/src/components/activities/Activities.jsx @@ -40,7 +40,7 @@ export default function Activities() { - + ) }) diff --git a/src/components/activities/explorer/ExplorerActivityView.jsx b/src/components/activities/explorer/ExplorerActivityView.jsx index 25285d1..a6459ee 100644 --- a/src/components/activities/explorer/ExplorerActivityView.jsx +++ b/src/components/activities/explorer/ExplorerActivityView.jsx @@ -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 }) @@ -24,7 +24,7 @@ export default function ExplorerActivityView({ }) { return workingDirectory ? <> - +
Switch Folder diff --git a/src/components/activities/explorer/ExplorerList.jsx b/src/components/activities/explorer/ExplorerList.jsx index acfa46b..62dcb49 100644 --- a/src/components/activities/explorer/ExplorerList.jsx +++ b/src/components/activities/explorer/ExplorerList.jsx @@ -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() @@ -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 ( + + + {objectType.listTitle} + + + {objectType.createable && + + New {objectType.title} + + } + {createListItems(filesOfType, objectType.icon)} + + + ) + } - return ( - - - {objectType.listTitle} - - - {objectType.createable && - - New {objectType.title} - - } - {createListItems(filesOfType, objectType.icon)} - - - ) }) } From 5d5f815121f73d74ad7099d954c737821d70f729 Mon Sep 17 00:00:00 2001 From: Derick Sayavong Date: Wed, 26 Feb 2025 17:46:12 -0700 Subject: [PATCH 2/3] Parts selection added --- src/activities.js | 20 +++++++++++++++----- src/objectTypes.js | 9 +-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/activities.js b/src/activities.js index 059c1b1..2a42809 100644 --- a/src/activities.js +++ b/src/activities.js @@ -8,18 +8,28 @@ 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 }, - Model: { - id: "synbio.activity.model", - title: "Model", + 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: [ diff --git a/src/objectTypes.js b/src/objectTypes.js index 05cc12f..f00f566 100644 --- a/src/objectTypes.js +++ b/src/objectTypes.js @@ -1,9 +1,7 @@ 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", @@ -14,7 +12,6 @@ export const ObjectTypes = { createable: true, extension: '.xml', badgeLabel: "SBOL", - directory: "main" }, SBML: { id: "synbio.object-type.sbml", @@ -23,7 +20,6 @@ export const ObjectTypes = { fileMatch: / Date: Wed, 26 Feb 2025 18:01:35 -0700 Subject: [PATCH 3/3] Added objects to design tab --- src/activities.js | 5 ++++- src/objectTypes.js | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/activities.js b/src/activities.js index 2a42809..e82bd35 100644 --- a/src/activities.js +++ b/src/activities.js @@ -33,7 +33,10 @@ export const Activities = { component: ExplorerActivityView, icon: BsGraphUpArrow, objectTypesToList: [ - + ObjectTypes.SBOL.id, + ObjectTypes.SBML.id, + ObjectTypes.OMEX.id, + ObjectTypes.Analysis.id ] }, Build: { diff --git a/src/objectTypes.js b/src/objectTypes.js index f00f566..b5ffdcb 100644 --- a/src/objectTypes.js +++ b/src/objectTypes.js @@ -5,8 +5,8 @@ import { TbComponents } from "react-icons/tb" export const ObjectTypes = { SBOL: { id: "synbio.object-type.sbol", - title: "SBOL Component", - listTitle: "SBOL Components", + title: "Design", + listTitle: "Designs", fileMatch: /