From 634304dfce4998a59f55db678518dee49cff19df Mon Sep 17 00:00:00 2001 From: Frank Johnson Date: Sun, 19 Sep 2021 11:06:45 -0400 Subject: [PATCH] Added cadPackage to ProjectsOfUser, other cleanup/linting --- .../src/components/CadPackage/CadPackage.tsx | 9 +-- .../ProjectsOfUserCell/ProjectsOfUserCell.tsx | 1 + app/web/src/globals.d.ts | 8 +-- app/web/src/helpers/cadPackages/index.ts | 22 +++++++ .../cadPackages/jsCad/initialCode.jscad.js | 50 +++++++++------ app/web/src/helpers/hooks/useIdeState.ts | 63 +++++++------------ 6 files changed, 83 insertions(+), 70 deletions(-) diff --git a/app/web/src/components/CadPackage/CadPackage.tsx b/app/web/src/components/CadPackage/CadPackage.tsx index e339995..e8f95ed 100644 --- a/app/web/src/components/CadPackage/CadPackage.tsx +++ b/app/web/src/components/CadPackage/CadPackage.tsx @@ -49,14 +49,15 @@ const CadPackage = ({ ) } diff --git a/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx b/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx index 07959ec..e77725c 100644 --- a/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx +++ b/app/web/src/components/ProjectsOfUserCell/ProjectsOfUserCell.tsx @@ -8,6 +8,7 @@ export const QUERY = gql` id title mainImage + cadPackage createdAt updatedAt user { diff --git a/app/web/src/globals.d.ts b/app/web/src/globals.d.ts index e07147d..e35b1e2 100644 --- a/app/web/src/globals.d.ts +++ b/app/web/src/globals.d.ts @@ -1,7 +1,7 @@ // While the raw-loader Webpack plugin actually makes these imports work, this // eliminates noisy TypeScript errors by registering these file endings as types. // Learned this method of registering modules from https://stackoverflow.com/a/57444766 -declare module "*.md"; -declare module "*.scad"; -declare module "*.py"; -declare module "*.jscad.js"; +declare module '*.md' +declare module '*.scad' +declare module '*.py' +declare module '*.jscad.js' diff --git a/app/web/src/helpers/cadPackages/index.ts b/app/web/src/helpers/cadPackages/index.ts index 372a39a..f1d3053 100644 --- a/app/web/src/helpers/cadPackages/index.ts +++ b/app/web/src/helpers/cadPackages/index.ts @@ -2,11 +2,33 @@ import { DefaultKernelExport } from './common' import type { CadPackageType } from 'src/components/CadPackage/CadPackage' import openscad from './openScad/openScadController' +import openScadGuide from 'src/helpers/cadPackages/openScad/userGuide.md' +import openScadInitialCode from 'src/helpers/cadPackages/openScad/initialCode.scad' + import cadquery from './cadQueryController' +import cadQueryGuide from 'src/helpers/cadPackages/cadQuery/userGuide.md' +import cadQueryInitialCode from 'src/helpers/cadPackages/cadQuery/initialCode.py' + import jscad from './jsCad/jsCadController' +import jsCadGuide from 'src/helpers/cadPackages/jsCad/userGuide.md' +import jsCadInitialCode from 'src/helpers/cadPackages/jsCad/initialCode.jscad.js' export const cadPackages: { [key in CadPackageType]: DefaultKernelExport } = { openscad, cadquery, jscad, } + +export const initGuideMap: { [key in CadPackageType]: string } = { + openscad: openScadGuide, + cadquery: cadQueryGuide, + jscad: jsCadGuide, + INIT: '', +} + +export const initCodeMap: { [key in CadPackageType]: string } = { + openscad: openScadInitialCode, + cadquery: cadQueryInitialCode, + jscad: jsCadInitialCode, + INIT: '', +} diff --git a/app/web/src/helpers/cadPackages/jsCad/initialCode.jscad.js b/app/web/src/helpers/cadPackages/jsCad/initialCode.jscad.js index 2396717..bd470fe 100644 --- a/app/web/src/helpers/cadPackages/jsCad/initialCode.jscad.js +++ b/app/web/src/helpers/cadPackages/jsCad/initialCode.jscad.js @@ -7,27 +7,37 @@ const { degToRad } = jscad.utils // because jscad uses radians for rotations // https://openjscad.xyz/docs/module-modeling_booleans.html const { subtract } = jscad.booleans -function main({//@jscad-params - // Box example - width=40, // Width - length=20, // Length - height=10, // Height - hole=3,// Hole for cables diameter (0=no hole) - wall=1, // wall {min:0.5, step:0.5} - flip=0, // print orientation {type: 'choice', values: [0, 90, 180]} -}){ - - let wallOffset = wall * 2 - let model = subtract( - cuboid({size:[width, length, height]}), - translate([0,0,wall], cuboid({size:[width-wallOffset, length-wallOffset, height+wall]})), +function main({ + //@jscad-params + // Box example + width = 40, // Width + length = 20, // Length + height = 10, // Height + hole = 3, // Hole for cables diameter (0=no hole) + wall = 1, // wall {min:0.5, step:0.5} + flip = 0, // print orientation {type: 'choice', values: [0, 90, 180]} +}) { + let wallOffset = wall * 2 + let model = subtract( + cuboid({ size: [width, length, height] }), + translate( + [0, 0, wall], + cuboid({ size: [width - wallOffset, length - wallOffset, height + wall] }) ) - if(hole){ - model = subtract( model, - translate([width/2-wall/2], rotate([0, degToRad(90), 0 ], cylinder({radius:hole/2, height:wall}))) + ) + if (hole) { + model = subtract( + model, + translate( + [width / 2 - wall / 2], + rotate( + [0, degToRad(90), 0], + cylinder({ radius: hole / 2, height: wall }) ) - } - return rotate([degToRad(flip), 0, degToRad(90)], model) + ) + ) + } + return rotate([degToRad(flip), 0, degToRad(90)], model) } -module.exports = {main} \ No newline at end of file +module.exports = { main } diff --git a/app/web/src/helpers/hooks/useIdeState.ts b/app/web/src/helpers/hooks/useIdeState.ts index c5b8af4..cd76908 100644 --- a/app/web/src/helpers/hooks/useIdeState.ts +++ b/app/web/src/helpers/hooks/useIdeState.ts @@ -1,18 +1,12 @@ import { useReducer } from 'react' -import { cadPackages } from 'src/helpers/cadPackages' +import { cadPackages, initCodeMap, initGuideMap } from 'src/helpers/cadPackages' import type { RootState } from '@react-three/fiber' import type { RawCustomizerParams, ArtifactTypes, } from 'src/helpers/cadPackages/common' import { CadhubParams } from 'src/components/Customizer/customizerConverter' -import openScadGuide from 'src/helpers/cadPackages/openScad/userGuide.md' -import openScadInitialCode from 'src/helpers/cadPackages/openScad/initialCode.scad' -import cadQueryGuide from 'src/helpers/cadPackages/cadQuery/userGuide.md' -import cadQueryInitialCode from 'src/helpers/cadPackages/cadQuery/initialCode.py' -import jsCadGuide from 'src/helpers/cadPackages/jsCad/userGuide.md' -import jsCadInitialCode from 'src/helpers/cadPackages/jsCad/initialCode.jscad.js' - +import { CadPackageType } from 'src/components/CadPackage/CadPackage' function withThunk(dispatch, getState) { return (actionOrThunk) => @@ -20,21 +14,6 @@ function withThunk(dispatch, getState) { ? actionOrThunk(dispatch, getState) : dispatch(actionOrThunk) } -import { CadPackageType } from 'src/components/CadPackage/CadPackage' - -const initGuideMap: { [key in CadPackageType]: string } = { - openscad: openScadGuide, - cadquery: cadQueryGuide, - jscad: jsCadGuide, - INIT: '', -} - -const initCodeMap: { [key in CadPackageType]: string } = { - openscad: openScadInitialCode, - cadquery: cadQueryInitialCode, - jscad: jsCadInitialCode, - INIT: '', -} const codeStorageKey = 'Last-editor-code' export const makeCodeStoreKey = (ideType) => `${codeStorageKey}-${ideType}` @@ -251,25 +230,25 @@ const reducer = (state: State, { type, payload }): State => { ], currentModel: payload === 0 ? 0 : payload - 1, } - case 'updateEditorModel': { - const newModels = [...state.models] - newModels[state.currentModel].content = payload - return { - ...state, - models: newModels, - } - } - case 'reorderEditorModels': { - const newModels = [ - ...state.models.slice(0, state.currentModel), - ...state.models.slice(state.currentModel + 1), - ].splice(payload, 0, state.models[state.currentModel]) - return { - ...state, - models: newModels, - currentModel: payload, - } - } + // case 'updateEditorModel': { + // const newModels = [...state.models] + // newModels[state.currentModel].content = payload + // return { + // ...state, + // models: newModels, + // } + // } + // case 'reorderEditorModels': { + // const newModels = [ + // ...state.models.slice(0, state.currentModel), + // ...state.models.slice(state.currentModel + 1), + // ].splice(payload, 0, state.models[state.currentModel]) + // return { + // ...state, + // models: newModels, + // currentModel: payload, + // } + // } default: return state }