Skip to content

Commit e63d37a

Browse files
authored
Zip から変換するUIの調整 (#742)
<!-- Close or Related Issues --> Close #0 ### What I did <!-- Please describe the motivation behind this PR and the changes it introduces. --> - ステップ削除 - ズームレベルによる変化の調整 - UIの細かな調整 ### Notes <!-- If manual testing is required, please describe the procedure. -->
2 parents f1b2040 + 117e11b commit e63d37a

File tree

11 files changed

+272
-388
lines changed

11 files changed

+272
-388
lines changed

.github/workflows/test_app.yml renamed to .github/workflows/test.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Test Tauri App
1+
name: Test App & Library
22

33
on:
44
push:
@@ -10,8 +10,13 @@ on:
1010
paths:
1111
- "app/**"
1212
- ".github/**"
13+
- "nusamai/**"
14+
- "nusamai-*/**"
15+
- "demo/**"
16+
- "docs/**"
17+
- "*"
1318

14-
env:
19+
env:
1520
CARGO_TERM_COLOR: always
1621

1722
permissions:
@@ -41,7 +46,7 @@ jobs:
4146
- name: Make Tauri build destination
4247
run: mkdir -p app/build
4348
- name: Test
44-
run: cargo llvm-cov --package app --lcov --output-path lcov.info --all-features
49+
run: cargo llvm-cov --workspace --lcov --output-path lcov.info --all-features
4550
- name: Upload coverage reports to Codecov
4651
uses: codecov/codecov-action@v5
4752
env:

.github/workflows/test_libs.yml

Lines changed: 0 additions & 52 deletions
This file was deleted.

app/src/lib/components/SinkOptions.svelte

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
<div class="flex flex-col gap-2">
1414
{#each sinkOptionKeys as key (key)}
1515
{#if isIntegerParameter(sinkParameters.items[key].parameter)}
16-
<div class="flex gap-2 w-80">
17-
<label for={key} class="w-3/4 pointer-events-none"
16+
<div class="flex w-80 gap-2">
17+
<label for={key} class="pointer-events-none w-3/4"
1818
>{sinkParameters.items[key].label}</label
1919
>
2020
<select
2121
bind:value={sinkParameters.items[key].parameter.Integer.value}
2222
id={key}
23-
class="w-1/4 border-2 border-gray-300 px-2 rounded-md cursor-pointer"
23+
class="w-1/4 cursor-pointer rounded-md border-2 border-gray-300 px-2"
2424
>
2525
{#if sinkParameters.items[key].parameter.Integer.min !== undefined && sinkParameters.items[key].parameter.Integer.max !== undefined}
2626
{#each createRangeArray(sinkParameters.items[key].parameter.Integer.min, sinkParameters.items[key].parameter.Integer.max) as value (value)}
@@ -41,23 +41,23 @@
4141
/>
4242
</div> -->
4343
{:else if isBooleanParameter(sinkParameters.items[key].parameter)}
44-
<div class="flex gap-2 w-80 items-center">
45-
<label for={key} class="w-3/4 pointer-events-none"
44+
<div class="flex w-80 items-center gap-2">
45+
<label for={key} class="pointer-events-none w-3/4"
4646
>{sinkParameters.items[key].label}</label
4747
>
48-
<div class="relative inline-block w-10 h-6 rounded-full cursor-pointer ml-auto">
48+
<div class="relative ml-auto inline-block h-6 w-10 cursor-pointer rounded-full">
4949
<input
5050
bind:checked={sinkParameters.items[key].parameter.Boolean.value}
5151
id={key}
5252
type="checkbox"
53-
class="absolute w-10 h-6 transition-colors duration-300 rounded-full appearance-none cursor-pointer peer bg-gray-200 checked:bg-accent1 peer-checked:before:bg-accent1"
53+
class="peer absolute h-6 w-10 cursor-pointer appearance-none rounded-full bg-gray-200 transition-colors duration-300 peer-checked:before:bg-accent1 checked:bg-accent1"
5454
/>
5555
<label
5656
for={key}
57-
class="before:content[''] absolute top-2/4 -left-1 h-6 w-6 -translate-y-2/4 cursor-pointer rounded-full border border-blue-gray-100 bg-white shadow-md transition-all duration-300 peer-checked:translate-x-full"
57+
class="before:content[''] border-blue-gray-100 absolute top-2/4 -left-1 h-6 w-6 -translate-y-2/4 cursor-pointer rounded-full border bg-white shadow-md transition-all duration-300 peer-checked:translate-x-full"
5858
>
5959
<div
60-
class="inline-block p-5 rounded-full top-2/4 left-2/4 -translate-x-2/4 -translate-y-2/4"
60+
class="top-2/4 left-2/4 inline-block -translate-x-2/4 -translate-y-2/4 rounded-full p-5"
6161
></div>
6262
</label>
6363
</div>

app/src/lib/components/TransformerOptions.svelte

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,33 @@
77
{#if transformerSettings && transformerSettings.configs.length > 0}
88
{#each transformerSettings.configs as config (config.key)}
99
{#if isBooleanConfig(config.parameter)}
10-
<div class="flex gap-2 w-80 items-center">
11-
<label for={config.key} class="w-3/4 pointer-events-none">
10+
<div class="flex w-80 items-center gap-2">
11+
<label for={config.key} class="pointer-events-none w-3/4">
1212
{config.label}
1313
</label>
14-
<div class="relative inline-block w-10 h-6 rounded-full cursor-pointer ml-auto">
14+
<div class="relative ml-auto inline-block h-6 w-10 cursor-pointer rounded-full">
1515
<input
1616
bind:checked={config.parameter.Boolean}
1717
id={config.key}
1818
type="checkbox"
19-
class="absolute w-10 h-6 transition-colors duration-300 rounded-full appearance-none cursor-pointer peer bg-gray-200 checked:bg-accent1 peer-checked:before:bg-accent1"
19+
class="peer absolute h-6 w-10 cursor-pointer appearance-none rounded-full bg-gray-200 transition-colors duration-300 peer-checked:before:bg-accent1 checked:bg-accent1"
2020
/>
2121
<label
2222
for={config.key}
23-
class="before:content[''] absolute top-2/4 -left-1 h-6 w-6 -translate-y-2/4 cursor-pointer rounded-full border border-blue-gray-100 bg-white shadow-md transition-all duration-300 peer-checked:translate-x-full"
23+
class="before:content[''] border-blue-gray-100 absolute top-2/4 -left-1 h-6 w-6 -translate-y-2/4 cursor-pointer rounded-full border bg-white shadow-md transition-all duration-300 peer-checked:translate-x-full"
2424
>
2525
<div
26-
class="inline-block p-5 rounded-full top-2/4 left-2/4 -translate-x-2/4 -translate-y-2/4"
26+
class="top-2/4 left-2/4 inline-block -translate-x-2/4 -translate-y-2/4 rounded-full p-5"
2727
></div>
2828
</label>
2929
</div>
3030
</div>
3131
{:else if isSelectionConfig(config.parameter)}
32-
<div class="flex gap-2 w-80">
33-
<label for={config.key} class="w-2/4 pointer-events-none">{config.label}</label>
32+
<div class="flex w-80 gap-2">
33+
<label for={config.key} class="pointer-events-none w-2/4">{config.label}</label>
3434
<select
3535
id={config.key}
36-
class="w-2/4 border-2 border-gray-300 px-2 rounded-md cursor-pointer"
36+
class="w-2/4 cursor-pointer rounded-md border-2 border-gray-300 px-2"
3737
bind:value={config.parameter.Selection.selected_value}
3838
>
3939
{#each config.parameter.Selection.options as option, index (index)}

app/src/routes/InputSelector.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,14 @@
9999
<button
100100
type="button"
101101
data-active={isFolderMode ? '' : undefined}
102-
class="data-active:pointer-events-none data-active:bg-accent1 relative inline-flex items-center gap-1 rounded-l-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10"
102+
class="relative inline-flex items-center gap-1 rounded-l-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 ring-1 ring-gray-300 ring-inset hover:bg-gray-50 focus:z-10 data-active:pointer-events-none data-active:bg-accent1"
103103
onclick={() => (isFolderMode = true)}
104104
><Icon icon="material-symbols:folder" />フォルダ選択</button
105105
>
106106
<button
107107
type="button"
108108
data-active={!isFolderMode ? '' : undefined}
109-
class="data-active:pointer-events-none data-active:bg-accent1 relative -ml-px inline-flex items-center gap-1 rounded-r-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 focus:z-10"
109+
class="relative -ml-px inline-flex items-center gap-1 rounded-r-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 ring-1 ring-gray-300 ring-inset hover:bg-gray-50 focus:z-10 data-active:pointer-events-none data-active:bg-accent1"
110110
onclick={() => (isFolderMode = false)}><Icon icon="ph:files" />ファイル選択</button
111111
>
112112
</span>
@@ -115,7 +115,7 @@
115115
<div class="flex items-center gap-3">
116116
<button
117117
onclick={isFolderMode ? openDirectoryDialog : openFileDialog}
118-
class="bg-accent1 rounded-sm px-4 py-0.5 font-semibold shadow-sm hover:opacity-75"
118+
class="rounded-sm bg-accent1 px-4 py-0.5 font-semibold shadow-sm hover:opacity-75"
119119
>選択</button
120120
>
121121
<div class="text-sm">

app/src/routes/LoadingAnimation.svelte

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,40 +45,40 @@
4545
});
4646
</script>
4747

48-
<div class="flex flex-col gap-4 p-12 place-items-center">
49-
<p class="text-white text-center font-semibold text-2xl">変換中 &hellip;</p>
50-
<div class="flex justify-center [&>div]:bg-white [&>div]">
51-
<div class="animate-loading-pulse-[-0.24s] bg-white h-4 w-4 rounded-full m-2"></div>
52-
<div class="animate-loading-pulse-[-0.12s] bg-white h-4 w-4 rounded-full m-2"></div>
53-
<div class="animate-loading-pulse-[0s] bg-white h-4 w-4 rounded-full m-2"></div>
48+
<div class="flex flex-col place-items-center gap-4 p-12">
49+
<p class="text-center text-2xl font-semibold text-white">変換中 &hellip;</p>
50+
<div class="[&>div] flex justify-center [&>div]:bg-white">
51+
<div class="m-2 h-4 w-4 rounded-full bg-white animate-loading-pulse-[-0.24s]"></div>
52+
<div class="m-2 h-4 w-4 rounded-full bg-white animate-loading-pulse-[-0.12s]"></div>
53+
<div class="m-2 h-4 w-4 rounded-full bg-white animate-loading-pulse-[0s]"></div>
5454
</div>
5555

5656
<div
57-
class="my-5 w-full h-96 max-h-96 bg-slate-900/70 text-slate-300 text-xs font-mono p-1 rounded-sm"
57+
class="my-5 h-96 max-h-96 w-full rounded-sm bg-slate-900/70 p-1 font-mono text-xs text-slate-300"
5858
>
59-
<div class="w-full h-full">
59+
<div class="h-full w-full">
6060
<VirtualScroll bind:this={logView} data={items} key="id">
6161
{#snippet children({ data }: { data: Item })}
6262
<div>
6363
{#if data.level === 'ERROR'}
6464
<span
65-
class="inline-flex items-center rounded-md bg-red-400/10 px-1 py-0.5 text-xs font-medium text-red-400 ring-1 ring-inset ring-red-400/20"
65+
class="inline-flex items-center rounded-md bg-red-400/10 px-1 py-0.5 text-xs font-medium text-red-400 ring-1 ring-red-400/20 ring-inset"
6666
>ERROR</span
6767
>
6868
{:else if data.level === 'WARN'}
6969
<span
70-
class="inline-flex items-center rounded-md bg-yellow-400/10 px-1 py-0.5 text-xs font-medium text-yellow-500 ring-1 ring-inset ring-yellow-400/20"
70+
class="inline-flex items-center rounded-md bg-yellow-400/10 px-1 py-0.5 text-xs font-medium text-yellow-500 ring-1 ring-yellow-400/20 ring-inset"
7171
>WARN</span
7272
>
7373
{:else if data.level === 'INFO'}
7474
<span
75-
class="inline-flex items-center rounded-md bg-blue-400/10 px-1 py-0.5 text-xs font-medium text-blue-400 ring-1 ring-inset ring-blue-400/30"
75+
class="inline-flex items-center rounded-md bg-blue-400/10 px-1 py-0.5 text-xs font-medium text-blue-400 ring-1 ring-blue-400/30 ring-inset"
7676
>INFO</span
7777
>
7878
{/if}
7979

8080
<span
81-
class="inline-flex items-center rounded-md bg-gray-400/10 px-1 py-0.5 text-xs font-medium text-gray-400 ring-1 ring-inset ring-gray-400/20"
81+
class="inline-flex items-center rounded-md bg-gray-400/10 px-1 py-0.5 text-xs font-medium text-gray-400 ring-1 ring-gray-400/20 ring-inset"
8282
>{data.source}</span
8383
>
8484

@@ -96,7 +96,7 @@
9696
<div>
9797
<button
9898
onclick={cancelConversion}
99-
class="bg-red-300 flex items-center font-bold py-1.5 pl-3 pr-5 rounded-full gap-1 shawdow-2xl hover:bg-red-400"
99+
class="shawdow-2xl flex items-center gap-1 rounded-full bg-red-300 py-1.5 pr-5 pl-3 font-bold hover:bg-red-400"
100100
>
101101
<Icon class="text-lg" icon="ic:baseline-cancel" />
102102
キャンセル

app/src/routes/zip/+page.svelte

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import type { SinkParameters } from '$lib/sinkparams';
55
import type { TransformerSettings } from '$lib/transformer';
66
import type { MeshcodeData } from './utils';
7-
import MeshSelectStepSidePanel from './MeshSelectStepSidePanel.svelte';
87
import FeatureTypeSelectStepSidePanel from './FeatureTypeSelectStepSidePanel.svelte';
98
import ConvertStepSidePanel from './ConvertStepSidePanel.svelte';
109
import MapPanel from './MapPanel.svelte';
@@ -15,7 +14,7 @@
1514
let selectedMeshes: string[] = $state([]);
1615
1716
// New UI flow state
18-
let currentStep: 'meshSelect' | 'featureTypeSelect' | 'convert' = $state('meshSelect');
17+
let currentStep: 'featureTypeSelect' | 'convert' = $state('featureTypeSelect');
1918
let selectedFeatureTypes: string[] = $state([]);
2019
2120
// Conversion settings
@@ -30,7 +29,7 @@
3029
inputPaths = [];
3130
meshcodeData = null;
3231
selectedMeshes = [];
33-
currentStep = 'meshSelect';
32+
currentStep = 'featureTypeSelect';
3433
selectedFeatureTypes = [];
3534
}
3635
</script>
@@ -48,26 +47,13 @@
4847

4948
<TabNavigation />
5049

51-
{#if currentStep === 'meshSelect' || !meshcodeData}
52-
<MeshSelectStepSidePanel
53-
bind:meshcodeData
50+
{#if currentStep === 'featureTypeSelect' || !meshcodeData}
51+
<FeatureTypeSelectStepSidePanel
52+
bind:selectedFeatureTypes
5453
bind:selectedMeshes
5554
bind:inputPaths
55+
bind:meshcodeData
5656
{clearAll}
57-
onClickNext={() => {
58-
if (selectedMeshes.length === 0) return;
59-
currentStep = 'featureTypeSelect';
60-
}}
61-
/>
62-
{:else if currentStep === 'featureTypeSelect'}
63-
<FeatureTypeSelectStepSidePanel
64-
bind:selectedFeatureTypes
65-
{selectedMeshes}
66-
{meshcodeData}
67-
onclickBack={() => {
68-
currentStep = 'meshSelect';
69-
selectedFeatureTypes = [];
70-
}}
7157
onclickNext={() => {
7258
if (selectedFeatureTypes.length === 0) return;
7359
currentStep = 'convert';

0 commit comments

Comments
 (0)