From 9d4e29e30f5c3d867a1f6e98f057c71527411ee3 Mon Sep 17 00:00:00 2001 From: Janosh Riebesell Date: Sat, 8 Jul 2023 15:34:32 -0700 Subject: [PATCH] Add `Lattice.svelte` (#41) * replace iconify with HTML entities * extract Lattice.svelte from StructureScene * add 2 MP P1 structures * sort JSON structures by MP ID number * /structure demo make grid wider * fix tests + update deps * install-cmd: npm install --force * revert accidental line stage * only render Lattice if available --- .github/workflows/gh-pages.yml | 2 + .github/workflows/test.yml | 2 + package.json | 34 +++++------ src/lib/material/MaterialCard.svelte | 2 +- src/lib/structure/Lattice.svelte | 75 +++++++++++++++++++++++++ src/lib/structure/Structure.svelte | 13 ++--- src/lib/structure/StructureScene.svelte | 50 ++++------------- src/lib/structure/index.ts | 17 +++++- src/routes/(demos)/structure/+page.md | 4 +- src/site/index.ts | 17 ++++-- src/site/structures/mp-1229155.json | 1 + src/site/structures/mp-1229168.json | 1 + tests/unit/structure-utils.test.ts | 49 ++++++++-------- 13 files changed, 170 insertions(+), 97 deletions(-) create mode 100644 src/lib/structure/Lattice.svelte create mode 100644 src/site/structures/mp-1229155.json create mode 100644 src/site/structures/mp-1229168.json diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 5b6fb7a..71c41a3 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -10,3 +10,5 @@ on: jobs: build: uses: janosh/workflows/.github/workflows/nodejs-gh-pages.yml@main + with: + install-cmd: npm install --force diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d54ad54..4aba752 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,3 +12,5 @@ on: jobs: tests: uses: janosh/workflows/.github/workflows/npm-test-release.yml@main + with: + install-cmd: npm install --force diff --git a/package.json b/package.json index db85be3..f5fc460 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@iconify/svelte": "^3.1.4", - "@sveltejs/kit": "^1.20.5", + "@sveltejs/kit": "^1.22.1", "d3": "^7.8.5", "d3-array": "^3.2.4", "d3-color": "^3.1.0", @@ -34,47 +34,47 @@ "d3-scale-chromatic": "^3.0.0", "d3-shape": "^3.2.0", "highlight.js": "^11.8.0", - "svelte": "4.0.0", - "svelte-multiselect": "^9.0.0", - "three": "^0.153.0" + "svelte": "4.0.5", + "svelte-multiselect": "^10.0.0", + "three": "^0.154.0" }, "devDependencies": { "@playwright/test": "^1.35.1", "@sveltejs/adapter-static": "2.0.2", "@sveltejs/package": "^2.1.0", - "@threlte/core": "6.0.0-next.9", - "@threlte/extras": "5.0.0-next.13", + "@threlte/core": "6.0.0-next.11", + "@threlte/extras": "5.0.0-next.16", "@types/d3-array": "^3.0.5", "@types/d3-color": "^3.1.0", "@types/d3-interpolate-path": "^2.0.0", "@types/d3-scale": "^4.0.3", "@types/d3-scale-chromatic": "^3.0.0", "@types/d3-shape": "^3.1.1", - "@types/three": "^0.152.1", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", - "@vitest/coverage-c8": "^0.32.2", - "eslint": "^8.43.0", + "@types/three": "^0.153.0", + "@typescript-eslint/eslint-plugin": "^5.61.0", + "@typescript-eslint/parser": "^5.61.0", + "@vitest/coverage-c8": "^0.33.0", + "eslint": "^8.44.0", "eslint-plugin-svelte": "^2.32.2", "hastscript": "^7.2.0", "jsdom": "^22.1.0", "mdsvex": "^0.11.0", "mdsvexamples": "^0.3.3", - "prettier": "^2.8.8", + "prettier": "^3.0.0", "prettier-plugin-svelte": "^2.10.1", "rehype-autolink-headings": "^6.1.1", "rehype-katex-svelte": "^1.2.0", "rehype-slug": "^5.1.0", "remark-math": "3.0.0", "sharp": "^0.32.1", - "svelte-check": "^3.4.4", + "svelte-check": "^3.4.5", "svelte-preprocess": "^5.0.4", "svelte-toc": "^0.5.5", "svelte-zoo": "^0.4.8", - "svelte2tsx": "^0.6.16", - "typescript": "5.1.5", - "vite": "^4.3.9", - "vitest": "^0.32.2" + "svelte2tsx": "^0.6.19", + "typescript": "5.1.6", + "vite": "^4.4.2", + "vitest": "^0.33.0" }, "keywords": [ "svelte", diff --git a/src/lib/material/MaterialCard.svelte b/src/lib/material/MaterialCard.svelte index 302abdc..ae18098 100644 --- a/src/lib/material/MaterialCard.svelte +++ b/src/lib/material/MaterialCard.svelte @@ -47,7 +47,7 @@ { title: `Database IDs`, value: material.database_IDs.icsd, - condition: material.database_IDs?.icsd?.length, + condition: material.database_IDs?.icsd?.length ?? false, }, ].filter((itm) => itm?.condition ?? true) diff --git a/src/lib/structure/Lattice.svelte b/src/lib/structure/Lattice.svelte new file mode 100644 index 0000000..3f50945 --- /dev/null +++ b/src/lib/structure/Lattice.svelte @@ -0,0 +1,75 @@ + + +{#if show_cell} + new Vector3(...p)))} + > + + +{/if} + +{#if show_vectors} + {#each matrix as vec, idx} + {@const [x, y, z] = vec ?? []} + + + + {/each} +{/if} diff --git a/src/lib/structure/Structure.svelte b/src/lib/structure/Structure.svelte index 600eaaf..60071d6 100644 --- a/src/lib/structure/Structure.svelte +++ b/src/lib/structure/Structure.svelte @@ -1,11 +1,9 @@