|
1 | 1 | import { useQuery } from '@tanstack/vue-query';
|
2 |
| -import { useOnshapeUrl } from './useOnshapeUrl'; |
3 |
| -import { type Project, getBoardLayouts, type Config } from '@aklinker1/cutlist'; |
| 2 | +import { generateBoardLayouts } from '@aklinker1/cutlist'; |
4 | 3 |
|
5 | 4 | export default function () {
|
6 |
| - const onshape = useOnshapeApi(); |
| 5 | + const loader = useOnshapeLoader(); |
7 | 6 | const url = useAssemblyUrl();
|
8 |
| - const onshapeUrl = useOnshapeUrl(url); |
9 |
| - const bladeWidth = useBladeWidth(); |
10 |
| - const optimize = useOptimizeFor(); |
| 7 | + const config = useCutlistConfig(); |
11 | 8 | const stock = useStock();
|
12 | 9 |
|
13 |
| - return useQuery({ |
14 |
| - queryKey: ['board-layouts', url, bladeWidth, optimize, stock], |
15 |
| - queryFn: async () => { |
16 |
| - if (onshapeUrl.value == null) return undefined; |
| 10 | + const partsQuery = useQuery({ |
| 11 | + queryKey: ['onshape', 'board-layouts', url], |
| 12 | + queryFn: () => loader.getParts(url.value), |
| 13 | + }); |
17 | 14 |
|
18 |
| - const project: Project = { |
19 |
| - source: { |
20 |
| - type: 'onshape', |
21 |
| - id: onshapeUrl.value.did, |
22 |
| - assemblyId: onshapeUrl.value.eid, |
23 |
| - }, |
24 |
| - }; |
25 |
| - const config: Config = { |
26 |
| - bladeWidth: bladeWidth.value, |
27 |
| - optimize: optimize.value, |
28 |
| - }; |
29 |
| - return await getBoardLayouts(onshape, project, stock.value, config); |
30 |
| - }, |
31 |
| - staleTime: 5 * 60e3, // 5 minutes, will refrech latest document |
| 15 | + const layouts = computed(() => { |
| 16 | + const parts = partsQuery.data.value; |
| 17 | + if (parts == null) return undefined; |
| 18 | + return generateBoardLayouts(parts, stock.value, config.value); |
32 | 19 | });
|
| 20 | + |
| 21 | + return { |
| 22 | + ...partsQuery, |
| 23 | + data: layouts, |
| 24 | + }; |
33 | 25 | }
|
0 commit comments