refactor: Restructure mounting and PCB data into modular files, adding new armpitmfg options and updating data references.
This commit is contained in:
@@ -34,7 +34,7 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
const handleStandCrossbarSupportToggle = (option) => {
|
||||
const currentSupports = config.standCrossbarSupports || [];
|
||||
const isSelected = currentSupports.some((opt) => opt.id === option.id);
|
||||
|
||||
|
||||
if (isSelected) {
|
||||
updateConfig({
|
||||
standCrossbarSupports: currentSupports.filter((opt) => opt.id !== option.id),
|
||||
@@ -62,7 +62,7 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
|
||||
const getSelectedOptionsForSubSection = (mainSectionId, subSectionId, subSection = null) => {
|
||||
const key = `${mainSectionId}.${subSectionId}`;
|
||||
|
||||
|
||||
switch (key) {
|
||||
case 'actuator.mounts':
|
||||
return config.mount ? [config.mount] : [];
|
||||
@@ -88,36 +88,36 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
|
||||
const isMainSectionComplete = (mainSectionId, mainSection) => {
|
||||
const subSections = Object.entries(mainSection.sections || {});
|
||||
|
||||
|
||||
// Check if all sub-sections with options are complete
|
||||
for (const [subSectionId, subSection] of subSections) {
|
||||
// Skip if no options available
|
||||
if (!subSection.options || subSection.options.length === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
const selectedOptions = getSelectedOptionsForSubSection(mainSectionId, subSectionId, subSection);
|
||||
|
||||
|
||||
// All sub-sections (both single-select and multi-select) require at least one selection
|
||||
// Multi-select means you can select multiple items, but you still need at least one
|
||||
if (selectedOptions.length === 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
// Auto-collapse main sections when they become complete
|
||||
useEffect(() => {
|
||||
const mainSections = partsData.options ? Object.entries(partsData.options) : [];
|
||||
|
||||
|
||||
mainSections.forEach(([mainSectionId, mainSection]) => {
|
||||
// Skip toyMounts and remoteControl sections (now in their own steps)
|
||||
if (mainSectionId === 'toyMounts' || mainSectionId === 'remoteControl') {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (isMainSectionComplete(mainSectionId, mainSection)) {
|
||||
setExpandedMainSections((prev) => {
|
||||
// Only auto-collapse if the section is currently expanded (undefined or true)
|
||||
@@ -135,7 +135,7 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
|
||||
const handleOptionClick = (option, mainSectionId, subSectionId) => {
|
||||
const key = `${mainSectionId}.${subSectionId}`;
|
||||
|
||||
|
||||
switch (key) {
|
||||
case 'actuator.mounts':
|
||||
handleMountSelect(option);
|
||||
@@ -167,11 +167,10 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
<button
|
||||
key={option.id}
|
||||
onClick={() => handleOptionClick(option, mainSectionId, subSectionId)}
|
||||
className={`p-4 border-2 rounded-lg text-left transition-all w-full ${
|
||||
isSelected
|
||||
className={`p-4 border-2 rounded-lg text-left transition-all w-full ${isSelected
|
||||
? 'border-blue-600 dark:border-blue-500 bg-blue-50 dark:bg-blue-900/30'
|
||||
: 'border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700/50'
|
||||
}`}
|
||||
}`}
|
||||
>
|
||||
{option.image && (
|
||||
<div className="mb-3 flex justify-center">
|
||||
@@ -274,9 +273,8 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
)}
|
||||
</div>
|
||||
<svg
|
||||
className={`w-4 h-4 text-gray-500 dark:text-gray-400 transition-transform ${
|
||||
isExpanded ? 'transform rotate-180' : ''
|
||||
}`}
|
||||
className={`w-4 h-4 text-gray-500 dark:text-gray-400 transition-transform ${isExpanded ? 'transform rotate-180' : ''
|
||||
}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -308,21 +306,18 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
const isComplete = isMainSectionComplete(mainSectionId, mainSection);
|
||||
|
||||
return (
|
||||
<div key={mainSectionId} className={`border-2 rounded-lg overflow-hidden mb-4 ${
|
||||
isComplete ? 'border-green-500 dark:border-green-600' : 'border-gray-300 dark:border-gray-700'
|
||||
}`}>
|
||||
<div key={mainSectionId} className={`border-2 rounded-lg overflow-hidden mb-4 ${isComplete ? 'border-green-500 dark:border-green-600' : 'border-gray-300 dark:border-gray-700'
|
||||
}`}>
|
||||
<button
|
||||
onClick={() => toggleMainSection(mainSectionId)}
|
||||
className={`w-full px-6 py-4 transition-colors flex items-center justify-between ${
|
||||
isComplete
|
||||
? 'bg-green-50 dark:bg-green-900/30 hover:bg-green-100 dark:hover:bg-green-900/40'
|
||||
className={`w-full px-6 py-4 transition-colors flex items-center justify-between ${isComplete
|
||||
? 'bg-green-50 dark:bg-green-900/30 hover:bg-green-100 dark:hover:bg-green-900/40'
|
||||
: 'bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700'
|
||||
}`}
|
||||
}`}
|
||||
>
|
||||
<div className="flex items-center gap-3">
|
||||
<h3 className={`text-xl font-bold ${
|
||||
isComplete ? 'text-green-900 dark:text-green-300' : 'text-gray-900 dark:text-white'
|
||||
}`}>
|
||||
<h3 className={`text-xl font-bold ${isComplete ? 'text-green-900 dark:text-green-300' : 'text-gray-900 dark:text-white'
|
||||
}`}>
|
||||
{mainSection.title}
|
||||
</h3>
|
||||
{isComplete && (
|
||||
@@ -347,9 +342,8 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
)}
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 transition-transform ${
|
||||
isExpanded ? 'transform rotate-180' : ''
|
||||
} ${isComplete ? 'text-green-600 dark:text-green-400' : 'text-gray-600 dark:text-gray-400'}`}
|
||||
className={`w-6 h-6 transition-transform ${isExpanded ? 'transform rotate-180' : ''
|
||||
} ${isComplete ? 'text-green-600 dark:text-green-400' : 'text-gray-600 dark:text-gray-400'}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -388,9 +382,9 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
const filteredSubSections = {};
|
||||
Object.entries(mainSection.sections || {}).forEach(([subSectionId, subSection]) => {
|
||||
// Check if this sub-section has mod options
|
||||
const hasModOptions = subSection.options?.some(opt => opt.type === 'mod') ||
|
||||
subSection.componentType === 'mod';
|
||||
|
||||
const hasModOptions = subSection.options?.some(opt => opt.type === 'mod') ||
|
||||
subSection.componentType === 'mod';
|
||||
|
||||
if (hasModOptions) {
|
||||
// Filter options to only show mods
|
||||
const modOptions = subSection.options?.filter(opt => opt.type === 'mod') || [];
|
||||
@@ -423,7 +417,7 @@ export default function OptionsStep({ config, updateConfig, buildType }) {
|
||||
{buildType === 'upgrade' ? 'Select Upgrades & Modifications' : 'Select Options'}
|
||||
</h2>
|
||||
<p className="text-gray-600 dark:text-gray-300 mb-6">
|
||||
{buildType === 'upgrade'
|
||||
{buildType === 'upgrade'
|
||||
? 'Choose upgrade components and modifications for your existing build.'
|
||||
: 'Choose your preferred mounting options and accessories.'}
|
||||
</p>
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
"pinned_sha": "52537c0896eaef83fd9771dcc633903c7aa6a8ab",
|
||||
"pinned_raw_url": "https://raw.githubusercontent.com/KinkyMakers/OSSM-hardware/52537c0896eaef83fd9771dcc633903c7aa6a8ab/Printed Parts/Actuator/OSSM - Belt Tensioner.stl",
|
||||
"checksum_sha256": "31c74250c237763b0013ff42cc714ce14c293382a726de363f1686a7559f525f",
|
||||
"last_checked": "2026-01-07T01:21:05.499523+00:00",
|
||||
"last_checked": "2026-01-07T07:29:56.698523+00:00",
|
||||
"status": "up-to-date"
|
||||
}
|
||||
},
|
||||
@@ -161,7 +161,7 @@
|
||||
"required": true,
|
||||
"quantity": 2,
|
||||
"relatedParts": [
|
||||
"ossm-24mm-nut-6-sided"
|
||||
"ossm-24mm-nut-5-sided"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -177,7 +177,7 @@
|
||||
"required": true,
|
||||
"quantity": 7,
|
||||
"relatedParts": [
|
||||
"ossm-24mm-nut-hex"
|
||||
"ossm-24mm-nut-5-sided"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -194,16 +194,15 @@
|
||||
"quantity": 7,
|
||||
"relatedParts": [
|
||||
"ossm-actuator-body-bottom",
|
||||
"ossm-actuator-body-middle",
|
||||
"ossm-actuator-body-middle-pivot"
|
||||
"ossm-actuator-body-middle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hardware-fasteners-m5x35-shcs",
|
||||
"required": true,
|
||||
"quantity": 7,
|
||||
"quantity": 4,
|
||||
"relatedParts": [
|
||||
"ossm-24mm-nut-shcs"
|
||||
"ossm-actuator-body-middle-pivot"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -211,7 +210,7 @@
|
||||
"required": true,
|
||||
"quantity": 7,
|
||||
"relatedParts": [
|
||||
"ossm-24mm-nut-hex"
|
||||
"ossm-24mm-nut-5-sided"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -236,8 +235,8 @@
|
||||
"required": true,
|
||||
"quantity": 1,
|
||||
"relatedParts": [
|
||||
"ossm-gt2-belt-clamp",
|
||||
"ossm-24mm-nut-shcs",
|
||||
"ossm-24mm-clamping-thread-belt-clamp",
|
||||
"ossm-24mm-nut-5-sided",
|
||||
"ossm-actuator-body-bottom"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,240 +0,0 @@
|
||||
{
|
||||
"pitClamp": {
|
||||
"category": "PitClamp",
|
||||
"type": "base",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-lower",
|
||||
"name": "PitClamp Mini Lower",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 49.45,
|
||||
"timeEstimate": "1h55m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - Base - PitClamp Mini - Lower V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/OSSM%20-%20Base%20-%20PitClamp%20Mini%20-%20Lower%20V1.1.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-lower",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/OSSM - Base - PitClamp Mini - Lower V1.1.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-upper",
|
||||
"name": "PitClamp Mini Upper",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 27.36,
|
||||
"timeEstimate": "1h11m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - Base - PitClamp Mini - Upper V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/OSSM%20-%20Base%20-%20PitClamp%20Mini%20-%20Upper%20V1.1.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-upper",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/OSSM - Base - PitClamp Mini - Upper V1.1.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-57AIM30",
|
||||
"name": "PitClamp Mini 57AIM30",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 46.03,
|
||||
"timeEstimate": "2h10m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"Condition": {
|
||||
"motor.id": "57AIM30"
|
||||
},
|
||||
"filePath": "OSSM - Base - PitClamp Mini - 57AIM30 V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/OSSM%20-%20Mounting%20Ring%20-%20PitClamp%20Mini%20-%2057AIM%20V1.1.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-57AIM30",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/OSSM - Mounting Ring - PitClamp Mini - 57AIM V1.1.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-42AIM30",
|
||||
"name": "PitClamp Mini 42AIM30",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 46.03,
|
||||
"timeEstimate": "2h10m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"Condition": {
|
||||
"motor.id": "42AIM30"
|
||||
},
|
||||
"filePath": "OSSM - Base - PitClamp Mini - 42AIM30 V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/Non-standard/OSSM%20-%20Mounting%20Ring%20-%20PitClamp%20Mini%20-%2042AIM%20V1.1.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-42AIM30",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/Non-standard/OSSM - Mounting Ring - PitClamp Mini - 42AIM V1.1.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-iHSV57",
|
||||
"name": "PitClamp Mini iHSV57",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 46.03,
|
||||
"timeEstimate": "2h10m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"Condition": {
|
||||
"motor.id": "iHSV57"
|
||||
},
|
||||
"filePath": "OSSM - Base - PitClamp Mini - iHSV57 V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/Non-standard/OSSM%20-%20Mounting%20Ring%20-%20PitClamp%20Mini%20-%20iHSV57.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-iHSV57",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/Non-standard/OSSM - Mounting Ring - PitClamp Mini - iHSV57.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-handle",
|
||||
"name": "PitClamp Mini Handle",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 9.23,
|
||||
"timeEstimate": "2h10m",
|
||||
"colour": "secondary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - Handle - PitClamp Mini V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/OSSM%20-%20Base%20-%20PitClamp%20Mini%20-%20Handle.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-handle",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/OSSM - Base - PitClamp Mini - Handle.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-dogbone-nuts",
|
||||
"name": "PitClamp Mini Dogbone Nuts",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 4.44,
|
||||
"timeEstimate": "20m49s",
|
||||
"colour": "secondary",
|
||||
"required": true,
|
||||
"quantity": 2,
|
||||
"filePath": "OSSM - Dogbone Nuts - PitClamp Mini V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/OSSM%20-%20Base%20-%20PitClamp%20Mini%20-%20Dogbone%20Nuts.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-dogbone-nuts",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/OSSM - Base - PitClamp Mini - Dogbone Nuts.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pitclamp-mini-dogbone-bolts ",
|
||||
"name": "PitClamp Mini Dogbone Bolts",
|
||||
"description": "PitClamp mounting system",
|
||||
"filamentEstimate": 4.44,
|
||||
"timeEstimate": "20m49s",
|
||||
"colour": "secondary",
|
||||
"required": true,
|
||||
"quantity": 2,
|
||||
"filePath": "OSSM - Dogbone Bolts - PitClamp Mini V1.1.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Mounting/OSSM%20-%20Base%20-%20PitClamp%20Mini%20-%20Dogbone%20Bolts.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pitclamp-mini-dogbone-bolts ",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Mounting/OSSM - Base - PitClamp Mini - Dogbone Bolts.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "pitclamp-hardware",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"middlePivot": {
|
||||
"category": "Middle Pivot",
|
||||
"type": "base",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "ossm-actuator-body-middle-pivot",
|
||||
"name": "Actuator Body Middle Pivot",
|
||||
"description": "Middle Pivot mounting system",
|
||||
"filamentEstimate": 147.19,
|
||||
"timeEstimate": "5h8m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"replaces": [
|
||||
"ossm-actuator-body-middle"
|
||||
],
|
||||
"filePath": "OSSM - Actuator Body Middle Pivot.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Actuator/Non-standard/OSSM%20-%20Actuator%20-%20Body%20-%20Middle%20Pivot.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-actuator-body-middle-pivot",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Actuator/Non-standard/OSSM - Actuator - Body - Middle Pivot.stl",
|
||||
"pinned_sha": "ad39a03b628b8e38549b99036c8dfd4131948545",
|
||||
"pinned_raw_url": "https://raw.githubusercontent.com/KinkyMakers/OSSM-hardware/ad39a03b628b8e38549b99036c8dfd4131948545/Printed Parts/Actuator/Non-standard/OSSM - Actuator - Body - Middle Pivot.stl",
|
||||
"checksum_sha256": "f6403a3c53e0d8c8e63d48bf853ab17c9f283421b1665b5503dbb04d59d0f52d",
|
||||
"last_checked": "2026-01-07T01:21:04.528132+00:00",
|
||||
"status": "up-to-date"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-handle-spacer",
|
||||
"name": "Handle Spacer",
|
||||
"description": "Handle spacer part",
|
||||
"filamentEstimate": 0,
|
||||
"colour": "secondary",
|
||||
"required": true,
|
||||
"quantity": 2,
|
||||
"filePath": "OSSM - Handle Spacer.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Stand/OSSM%20-%20Stand%20-%203030%20Extrusion%20Base%20-%20Handle%20Spacer.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-handle-spacer",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Stand/OSSM - Stand - 3030 Extrusion Base - Handle Spacer.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "middle-pivot-hardware",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
121
website/src/data/components/mounting/armpitmfg.json
Normal file
121
website/src/data/components/mounting/armpitmfg.json
Normal file
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"pitclamp": {
|
||||
"name": "PitClamp Mini",
|
||||
"description": "armpitMFG PitClamp Mini - Modular Quick-Release Mount",
|
||||
"image": "https://raw.githubusercontent.com/armpitMFG/PitClamp-Mini/main/Images/Renders/Primary/Parts%20Only.png",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "pitclamp-mini-base-ossm-v2",
|
||||
"name": "PitClamp Mini Base - OSSM v2",
|
||||
"description": "Modular base for OSSM v2",
|
||||
"filamentEstimate": 65,
|
||||
"timeEstimate": "2h30m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "PitClamp Mini - Base - Modular - OSSM v2.stl",
|
||||
"url": "https://github.com/armpitMFG/PitClamp-Mini/blob/main/Files/Bases/PitClamp%20Mini%20-%20Base%20-%20Modular%20-%20OSSM%20v2.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "pitclamp-mini-base-ossm-v2",
|
||||
"local_path": "vendor/armpitMFG-PitClamp-Mini/Files/Bases/PitClamp Mini - Base - Modular - OSSM v2.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "pitclamp-mini-rail-clamp",
|
||||
"name": "PitClamp Mini Rail Clamp",
|
||||
"description": "Standard rail clamp mod",
|
||||
"filamentEstimate": 25,
|
||||
"timeEstimate": "1h",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "PitClamp Mini - Rail - Standard Mod - Clamp V1.1.stl",
|
||||
"url": "https://github.com/armpitMFG/PitClamp-Mini/blob/main/Files/Rail%20Components/PitClamp%20Mini%20-%20Rail%20-%20Standard%20Mod%20-%20Clamp%20V1.1.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "pitclamp-mini-rail-clamp",
|
||||
"local_path": "vendor/armpitMFG-PitClamp-Mini/Files/Rail Components/PitClamp Mini - Rail - Standard Mod - Clamp V1.1.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "pitclamp-mini-rail-pivot",
|
||||
"name": "PitClamp Mini Rail Pivot",
|
||||
"description": "Standard rail pivot mod",
|
||||
"filamentEstimate": 25,
|
||||
"timeEstimate": "1h",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "PitClamp Mini - Rail - Standard Mod - Pivot V1.1.stl",
|
||||
"url": "https://github.com/armpitMFG/PitClamp-Mini/blob/main/Files/Rail%20Components/PitClamp%20Mini%20-%20Rail%20-%20Standard%20Mod%20-%20Pivot%20V1.1.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "pitclamp-mini-rail-pivot",
|
||||
"local_path": "vendor/armpitMFG-PitClamp-Mini/Files/Rail Components/PitClamp Mini - Rail - Standard Mod - Pivot V1.1.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "pitclamp-mini-ring-57aim",
|
||||
"name": "PitClamp Mini Ring - 57AIM",
|
||||
"description": "Motor ring for 57AIM",
|
||||
"filamentEstimate": 45,
|
||||
"timeEstimate": "1h45m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"Condition": {
|
||||
"motor.id": "57AIM30"
|
||||
},
|
||||
"filePath": "PitClamp Mini - Ring v1.1 - 57AIM - 5mm Offset +Passthru.stl",
|
||||
"url": "https://github.com/armpitMFG/PitClamp-Mini/blob/main/Files/Rings/PitClamp%20Mini%20-%20Ring%20v1.1%20-%2057AIM%20-%205mm%20Offset%20+Passthru.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "pitclamp-mini-ring-57aim",
|
||||
"local_path": "vendor/armpitMFG-PitClamp-Mini/Files/Rings/PitClamp Mini - Ring v1.1 - 57AIM - 5mm Offset +Passthru.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "pitclamp-mini-ring-ihsv57",
|
||||
"name": "PitClamp Mini Ring - iHSV57",
|
||||
"description": "Motor ring for iHSV57",
|
||||
"filamentEstimate": 45,
|
||||
"timeEstimate": "1h45m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"Condition": {
|
||||
"motor.id": "iHSV57"
|
||||
},
|
||||
"filePath": "PitClamp Mini - Ring - iHSV57 - Default - 5mm Offset.stl",
|
||||
"url": "https://github.com/armpitMFG/PitClamp-Mini/blob/main/Files/Rings/PitClamp%20Mini%20-%20Ring%20-%20iHSV57%20-%20Default%20-%205mm%20Offset.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "pitclamp-mini-ring-ihsv57",
|
||||
"local_path": "vendor/armpitMFG-PitClamp-Mini/Files/Rings/PitClamp Mini - Ring - iHSV57 - Default - 5mm Offset.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "pitclamp-hardware",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
13
website/src/data/components/mounting/index.js
Normal file
13
website/src/data/components/mounting/index.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import ossm from './ossm.json';
|
||||
import armpitmfg from './armpitmfg.json';
|
||||
|
||||
export default {
|
||||
"mounting": {
|
||||
"category": "Mounting",
|
||||
"type": "base",
|
||||
"systems": {
|
||||
...ossm,
|
||||
...armpitmfg
|
||||
}
|
||||
}
|
||||
};
|
||||
59
website/src/data/components/mounting/ossm.json
Normal file
59
website/src/data/components/mounting/ossm.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"middle-pivot": {
|
||||
"name": "Middle Pivot",
|
||||
"description": "Standard OSSM Middle Pivot mounting system",
|
||||
"image": "/images/options/middle-pivot.png",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "ossm-actuator-body-middle-pivot",
|
||||
"name": "Actuator Body Middle Pivot",
|
||||
"description": "Middle Pivot mounting system",
|
||||
"filamentEstimate": 147.19,
|
||||
"timeEstimate": "5h8m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"replaces": [
|
||||
"ossm-actuator-body-middle"
|
||||
],
|
||||
"filePath": "OSSM - Actuator Body Middle Pivot.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Actuator/Non-standard/OSSM%20-%20Actuator%20-%20Body%20-%20Middle%20Pivot.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-actuator-body-middle-pivot",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Actuator/Non-standard/OSSM - Actuator - Body - Middle Pivot.stl",
|
||||
"pinned_sha": "ad39a03b628b8e38549b99036c8dfd4131948545",
|
||||
"pinned_raw_url": "https://raw.githubusercontent.com/KinkyMakers/OSSM-hardware/ad39a03b628b8e38549b99036c8dfd4131948545/Printed Parts/Actuator/Non-standard/OSSM - Actuator - Body - Middle Pivot.stl",
|
||||
"checksum_sha256": "f6403a3c53e0d8c8e63d48bf853ab17c9f283421b1665b5503dbb04d59d0f52d",
|
||||
"last_checked": "2026-01-07T01:21:04.528132+00:00",
|
||||
"status": "up-to-date"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-handle-spacer",
|
||||
"name": "Handle Spacer",
|
||||
"description": "Handle spacer part",
|
||||
"filamentEstimate": 10,
|
||||
"colour": "secondary",
|
||||
"required": true,
|
||||
"quantity": 2,
|
||||
"filePath": "OSSM - Handle Spacer.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/Stand/OSSM%20-%20Stand%20-%203030%20Extrusion%20Base%20-%20Handle%20Spacer.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-handle-spacer",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/Stand/OSSM - Stand - 3030 Extrusion Base - Handle Spacer.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "hardware-fasteners-m5x35-shcs",
|
||||
"required": true,
|
||||
"quantity": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
{
|
||||
"3030-mount": {
|
||||
"category": "PCB Mount",
|
||||
"type": "base",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "ossm-pcb-3030-mount",
|
||||
"name": "PCB 3030 Mount",
|
||||
"description": "PCB mount for 3030 extrusion",
|
||||
"filamentEstimate": 15,
|
||||
"timeEstimate": "45m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - PCB - 3030 Mount.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/PCB/OSSM%20-%20PCB%20-%203030%20Mount.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pcb-3030-mount",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/PCB/OSSM - PCB - 3030 Mount.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pcb-3030-mount-cover",
|
||||
"name": "PCB 3030 Mount Cover",
|
||||
"description": "Cover for the 3030 mount",
|
||||
"filamentEstimate": 15,
|
||||
"timeEstimate": "45m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - PCB - 3030 Mount Cover.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/PCB/OSSM%20-%20PCB%20-%203030%20Mount%20Cover.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pcb-3030-mount-cover",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/PCB/OSSM - PCB - 3030 Mount Cover.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "hardware-fasteners-m6x12-shcs",
|
||||
"required": true,
|
||||
"quantity": 4,
|
||||
"relatedParts": [
|
||||
"ossm-pcb-3030-mount"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hardware-fasteners-m6-t-nuts",
|
||||
"required": true,
|
||||
"quantity": 4,
|
||||
"relatedParts": [
|
||||
"ossm-pcb-3030-mount"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"aio-cover-mount": {
|
||||
"category": "PCB Mount",
|
||||
"type": "base",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "ossm-pcb-aio-cover-mount",
|
||||
"name": "PCB AIO Cover Mount",
|
||||
"description": "All-in-one cover mount on the actuator",
|
||||
"filamentEstimate": 20,
|
||||
"timeEstimate": "1h",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - PCB - AIO Cover Mount.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/PCB/OSSM%20-%20PCB%20-%20AIO%20Cover%20Mount.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pcb-aio-cover-mount",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/PCB/OSSM - PCB - AIO Cover Mount.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "error"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "hardware-fasteners-m3x8-shcs",
|
||||
"required": true,
|
||||
"quantity": 4,
|
||||
"relatedParts": [
|
||||
"ossm-pcb-aio-cover-mount"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
56
website/src/data/components/pcb/armpitmfg.json
Normal file
56
website/src/data/components/pcb/armpitmfg.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"aio-cover-mount": {
|
||||
"name": "AIO Cover Mount",
|
||||
"description": "All-in-one cover mount for OSSM v2 AIO PCB",
|
||||
"image": "https://raw.githubusercontent.com/armpitMFG/OSSM-Parts/main/OSSM%20v2%20AIO%20PCB%20Backpack%20Mod/Images/Workspace/AIO%20PCB%20Backpack%20-%20Back%20Right.png",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "ossm-pcb-aio-backpack-base",
|
||||
"name": "AIO PCB Backpack Base",
|
||||
"description": "Base part for AIO PCB Backpack V2.3c",
|
||||
"filamentEstimate": 45,
|
||||
"timeEstimate": "2h",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM Mods - AIO PCB Backpack - Base V2.3c.stl",
|
||||
"url": "https://github.com/armpitMFG/OSSM-Parts/blob/main/OSSM%20v2%20AIO%20PCB%20Backpack%20Mod/Files/OSSM%20Mods%20-%20AIO%20PCB%20Backpack%20-%20Base%20V2.3c.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pcb-aio-backpack-base",
|
||||
"local_path": "vendor/armpitMFG-OSSM-Parts/OSSM v2 AIO PCB Backpack Mod/Files/OSSM Mods - AIO PCB Backpack - Base V2.3c.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pcb-aio-backpack-cap",
|
||||
"name": "AIO PCB Backpack Cap",
|
||||
"description": "Default cap for AIO PCB Backpack",
|
||||
"filamentEstimate": 15,
|
||||
"timeEstimate": "45m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM Mods - AIO PCB Backpack - Cap (Default).stl",
|
||||
"url": "https://github.com/armpitMFG/OSSM-Parts/blob/main/OSSM%20v2%20AIO%20PCB%20Backpack%20Mod/Files/OSSM%20Mods%20-%20AIO%20PCB%20Backpack%20-%20Cap%20(Default).stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pcb-aio-backpack-cap",
|
||||
"local_path": "vendor/armpitMFG-OSSM-Parts/OSSM v2 AIO PCB Backpack Mod/Files/OSSM Mods - AIO PCB Backpack - Cap (Default).stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "hardware-fasteners-m3x8-shcs",
|
||||
"required": true,
|
||||
"quantity": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
13
website/src/data/components/pcb/index.js
Normal file
13
website/src/data/components/pcb/index.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import ossm from './ossm.json';
|
||||
import armpitmfg from './armpitmfg.json';
|
||||
|
||||
export default {
|
||||
"pcbMounts": {
|
||||
"category": "PCB Mount",
|
||||
"type": "base",
|
||||
"systems": {
|
||||
...ossm,
|
||||
...armpitmfg
|
||||
}
|
||||
}
|
||||
};
|
||||
69
website/src/data/components/pcb/ossm.json
Normal file
69
website/src/data/components/pcb/ossm.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"3030-mount": {
|
||||
"name": "3030 Mount",
|
||||
"description": "PCB mount for 3030 extrusion",
|
||||
"image": "/images/options/3030-pcb-mount.png",
|
||||
"category": "PCB Mount",
|
||||
"type": "base",
|
||||
"printedParts": [
|
||||
{
|
||||
"id": "ossm-pcb-3030-mount",
|
||||
"name": "PCB 3030 Mount",
|
||||
"description": "PCB mount for 3030 extrusion",
|
||||
"filamentEstimate": 15,
|
||||
"timeEstimate": "45m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - PCB - 3030 Mount.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/PCB/OSSM%20-%20PCB%20-%203030%20Mount.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pcb-3030-mount",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/PCB/OSSM - PCB - 3030 Mount.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ossm-pcb-3030-mount-cover",
|
||||
"name": "PCB 3030 Mount Cover",
|
||||
"description": "Cover for the 3030 mount",
|
||||
"filamentEstimate": 15,
|
||||
"timeEstimate": "45m",
|
||||
"colour": "primary",
|
||||
"required": true,
|
||||
"filePath": "OSSM - PCB - 3030 Mount Cover.stl",
|
||||
"url": "https://github.com/KinkyMakers/OSSM-hardware/blob/main/Printed%20Parts/PCB/OSSM%20-%20PCB%20-%203030%20Mount%20Cover.stl?raw=true",
|
||||
"vendor": {
|
||||
"manifest_id": "ossm-pcb-3030-mount-cover",
|
||||
"local_path": "vendor/KinkyMakers-OSSM-hardware/Printed Parts/PCB/OSSM - PCB - 3030 Mount Cover.stl",
|
||||
"pinned_sha": null,
|
||||
"pinned_raw_url": null,
|
||||
"checksum_sha256": null,
|
||||
"last_checked": null,
|
||||
"status": "pending"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hardwareParts": [
|
||||
{
|
||||
"id": "hardware-fasteners-m6x12-shcs",
|
||||
"required": true,
|
||||
"quantity": 4,
|
||||
"relatedParts": [
|
||||
"ossm-pcb-3030-mount"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hardware-fasteners-m6-t-nuts",
|
||||
"required": true,
|
||||
"quantity": 4,
|
||||
"relatedParts": [
|
||||
"ossm-pcb-3030-mount"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -4,23 +4,10 @@
|
||||
"sections": {
|
||||
"mounts": {
|
||||
"title": "Mounts",
|
||||
"options": [
|
||||
{
|
||||
"id": "middle-pivot",
|
||||
"name": "Middle Pivot",
|
||||
"description": "Middle Pivot mounting system",
|
||||
"image": "/images/options/middle-pivot.png",
|
||||
"filamentEstimate": "~147g",
|
||||
"type": "base"
|
||||
},
|
||||
{
|
||||
"id": "pitclamp",
|
||||
"name": "PitClamp Mini",
|
||||
"description": "PitClamp Mini mounting system",
|
||||
"image": "/images/options/PitClamp Mini Base.png",
|
||||
"filamentEstimate": "~137g",
|
||||
"type": "base"
|
||||
}
|
||||
"useComponents": "mounting",
|
||||
"componentIds": [
|
||||
"middle-pivot",
|
||||
"pitclamp"
|
||||
],
|
||||
"isMultiSelect": false
|
||||
},
|
||||
@@ -49,23 +36,10 @@
|
||||
},
|
||||
"pcbMount": {
|
||||
"title": "PCB Mount",
|
||||
"options": [
|
||||
{
|
||||
"id": "3030-mount",
|
||||
"name": "3030 Mount",
|
||||
"description": "PCB mount for 3030 extrusion",
|
||||
"image": null,
|
||||
"filamentEstimate": null,
|
||||
"type": "base"
|
||||
},
|
||||
{
|
||||
"id": "aio-cover-mount",
|
||||
"name": "AIO Cover Mount",
|
||||
"description": "All-in-one cover mount on the actuator",
|
||||
"image": null,
|
||||
"filamentEstimate": null,
|
||||
"type": "base"
|
||||
}
|
||||
"useComponents": "pcbMounts",
|
||||
"componentIds": [
|
||||
"3030-mount",
|
||||
"aio-cover-mount"
|
||||
],
|
||||
"isMultiSelect": false
|
||||
}
|
||||
@@ -77,19 +51,28 @@
|
||||
"hinges": {
|
||||
"title": "Hinges",
|
||||
"useComponents": "hinges",
|
||||
"componentIds": ["pivot-plate", "pitclamp-reinforced-3030"],
|
||||
"componentIds": [
|
||||
"pivot-plate",
|
||||
"pitclamp-reinforced-3030"
|
||||
],
|
||||
"isMultiSelect": false
|
||||
},
|
||||
"feet": {
|
||||
"title": "Feet",
|
||||
"useComponents": "feet",
|
||||
"componentIds": ["standard-feet", "suction-feet"],
|
||||
"componentIds": [
|
||||
"standard-feet",
|
||||
"suction-feet"
|
||||
],
|
||||
"isMultiSelect": false
|
||||
},
|
||||
"crossbarSupports": {
|
||||
"title": "Crossbar Supports",
|
||||
"useComponents": "crossbarSupports",
|
||||
"componentIds": ["standard-90-degree-support", "3d-printed-90-degree-support"],
|
||||
"componentIds": [
|
||||
"standard-90-degree-support",
|
||||
"3d-printed-90-degree-support"
|
||||
],
|
||||
"isMultiSelect": false
|
||||
}
|
||||
}
|
||||
@@ -100,24 +83,38 @@
|
||||
"sections": {
|
||||
"vacULock": {
|
||||
"title": "Vac-U-Lock",
|
||||
"componentIds": ["ossm-toy-mount-double-double-24mm-threaded", "ossm-toy-mount-double-double-rail-mounted"],
|
||||
"componentIds": [
|
||||
"ossm-toy-mount-double-double-24mm-threaded",
|
||||
"ossm-toy-mount-double-double-rail-mounted"
|
||||
],
|
||||
"isMultiSelect": true
|
||||
},
|
||||
"flangeMount": {
|
||||
"title": "Flange Mount",
|
||||
"componentIds": ["ossm-toy-mount-flange-base-24mm-threaded", "ossm-toy-mount-flange-base-dildo-ring-2.5in", "ossm-toy-mount-flange-base-dildo-ring-2in"],
|
||||
"componentIds": [
|
||||
"ossm-toy-mount-flange-base-24mm-threaded",
|
||||
"ossm-toy-mount-flange-base-dildo-ring-2.5in",
|
||||
"ossm-toy-mount-flange-base-dildo-ring-2in"
|
||||
],
|
||||
"isMultiSelect": true
|
||||
},
|
||||
"suCSOn": {
|
||||
"title": "SuCSOn",
|
||||
"componentIds": ["ossm-toy-mount-sucson-mount-base-plate-24mm-threaded", "ossm-toy-mount-sucson-mount-ring-insert-55mm", "ossm-toy-mount-sucson-mount-threaded-ring"],
|
||||
"componentIds": [
|
||||
"ossm-toy-mount-sucson-mount-base-plate-24mm-threaded",
|
||||
"ossm-toy-mount-sucson-mount-ring-insert-55mm",
|
||||
"ossm-toy-mount-sucson-mount-threaded-ring"
|
||||
],
|
||||
"isMultiSelect": true
|
||||
},
|
||||
"tieDown": {
|
||||
"title": "TieDown",
|
||||
"componentIds": ["ossm-toy-mount-tie-down-and-suction-plate-110mm", "ossm-toy-mount-tie-down-and-suction-plate-135mm"],
|
||||
"componentIds": [
|
||||
"ossm-toy-mount-tie-down-and-suction-plate-110mm",
|
||||
"ossm-toy-mount-tie-down-and-suction-plate-135mm"
|
||||
],
|
||||
"isMultiSelect": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,10 +5,10 @@ import colors from './common/colors.json';
|
||||
import hardwareData from './common/hardware.json';
|
||||
import actuatorComponents from './components/actuator.json';
|
||||
import standComponents from './components/stand.json';
|
||||
import mountingComponents from './components/mounting.json';
|
||||
import mountingComponents from './components/mounting/index.js';
|
||||
import toyMountsComponents from './components/toyMounts/index.js';
|
||||
import remoteComponents from './components/remote.json';
|
||||
import pcbComponents from './components/pcb.json';
|
||||
import pcbComponents from './components/pcb/index.js';
|
||||
|
||||
// Create a hardware lookup map from hardware.json
|
||||
const hardwareLookup = new Map();
|
||||
|
||||
Reference in New Issue
Block a user