mirror of
https://github.com/jzillmann/pdf-to-markdown.git
synced 2025-06-25 20:11:39 +02:00
Filter for relevant items
* Don’t color Page in change color * Tailwind: expose colors as CSS variables
This commit is contained in:
parent
cd8cdf4df6
commit
e6a18fa0d8
24
ui/src/components/Checkbox.svelte
Normal file
24
ui/src/components/Checkbox.svelte
Normal file
@ -0,0 +1,24 @@
|
||||
<script>
|
||||
export let name: string;
|
||||
export let enabled = true;
|
||||
</script>
|
||||
|
||||
<input id="checkbox-{name}" type="checkbox" class="hidden" bind:checked={enabled} />
|
||||
<label
|
||||
for="checkbox-{name}"
|
||||
class="py-0.5 px-1 border-2 border-transparent cursor-pointer select-none whitespace-nowrap">{name}</label>
|
||||
|
||||
<style>
|
||||
label:hover {
|
||||
color: var(--color-blue-600);
|
||||
}
|
||||
|
||||
input:checked + label {
|
||||
border-top-color: var(--color-blue-600);
|
||||
border-bottom-color: var(--color-blue-600);
|
||||
}
|
||||
|
||||
input + label:hover:not(:active) {
|
||||
@apply border-dotted;
|
||||
}
|
||||
</style>
|
@ -9,6 +9,7 @@
|
||||
|
||||
import Popup from '../components/Popup.svelte';
|
||||
import PageSelectionPopup from './PageSelectionPopup.svelte';
|
||||
import Checkbox from '../components/Checkbox.svelte';
|
||||
import ItemTable from './ItemTable.svelte';
|
||||
import TransformerSelectionPopup from './TransformerSelectionPopup.svelte';
|
||||
|
||||
@ -16,6 +17,7 @@
|
||||
|
||||
const stageNames = debug.stageNames;
|
||||
let pinnedPage: number;
|
||||
let onlyRelevantItems = true;
|
||||
|
||||
let currentStage = 0;
|
||||
$: canNext = currentStage + 1 < stageNames.length;
|
||||
@ -68,7 +70,9 @@
|
||||
<span>
|
||||
<Popup>
|
||||
<span slot="trigger">
|
||||
<div class="cursor-pointer hover:underline">{stageNames[currentStage]}</div>
|
||||
<div class="w-52 cursor-pointer hover:underline whitespace-nowrap">
|
||||
{stageNames[currentStage]}
|
||||
</div>
|
||||
</span>
|
||||
<span slot="content">
|
||||
<TransformerSelectionPopup
|
||||
@ -78,6 +82,9 @@
|
||||
</span>
|
||||
</Popup>
|
||||
</span>
|
||||
<div class="w-full flex flex-row-reverse space-x-2 space-x-reverse text-sm">
|
||||
<Checkbox name="Relevant Items" bind:enabled={onlyRelevantItems} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -96,6 +103,7 @@
|
||||
pages={visiblePages}
|
||||
{maxPage}
|
||||
{pageIsPinned}
|
||||
bind:onlyRelevantItems
|
||||
changes={stageResult.changes} />
|
||||
</div>
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
export let pages: Page[];
|
||||
export let maxPage: number;
|
||||
export let pageIsPinned: boolean;
|
||||
export let onlyRelevantItems: boolean;
|
||||
export let changes: Map<string, Change>;
|
||||
let maxItemsToRenderInOneLoad = 200;
|
||||
let renderedMaxPage = 0;
|
||||
@ -74,7 +75,7 @@
|
||||
{/if}
|
||||
|
||||
<!-- Page items -->
|
||||
{#each page.itemGroups as itemGroup, itemIdx}
|
||||
{#each page.itemGroups.filter((group) => !onlyRelevantItems || changes.has(group.top.uuid)) as itemGroup, itemIdx}
|
||||
<tr
|
||||
class:expandable={itemGroup.hasMany()}
|
||||
class:expanded={expandedItemGroup && isExpanded(page.index, itemIdx)}
|
||||
@ -121,12 +122,23 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{#if !pageIsPinned}
|
||||
{#if renderedMaxPage < pages.length}
|
||||
<span use:inView on:intersect={({ detail }) => detail && calculateNextPageToRenderTo()} />
|
||||
<div class="my-6 text-center text-2xl">...</div>
|
||||
{:else}
|
||||
<div class="my-6 text-center text-2xl">FIN!</div>
|
||||
{#if onlyRelevantItems && changes.size === 0}
|
||||
<div class="flex space-x-1 items-center justify-center text-xl">
|
||||
<div>No changes from the transformation.</div>
|
||||
<div>Want to see</div>
|
||||
<div class="font-bold cursor-pointer hover:underline" on:click={() => (onlyRelevantItems = false)}>
|
||||
all items
|
||||
</div>
|
||||
<div>?</div>
|
||||
</div>
|
||||
{:else}
|
||||
{#if !pageIsPinned}
|
||||
{#if renderedMaxPage < pages.length}
|
||||
<span use:inView on:intersect={({ detail }) => detail && calculateNextPageToRenderTo()} />
|
||||
<div class="my-6 text-center text-2xl">...</div>
|
||||
{:else}
|
||||
<div class="my-6 text-center text-2xl">FIN!</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
@ -174,13 +186,13 @@
|
||||
@apply bg-gray-200;
|
||||
}
|
||||
|
||||
.changePlus {
|
||||
tr.changePlus td:not(#page) {
|
||||
@apply text-green-600;
|
||||
}
|
||||
.changeMinus {
|
||||
tr.changeMinus td:not(#page) {
|
||||
@apply text-red-600;
|
||||
}
|
||||
tr.changeNeutral td:not(#page) {
|
||||
@apply text-yellow-600;
|
||||
}
|
||||
.changeNeutral {
|
||||
@apply text-pink-800;
|
||||
}
|
||||
</style>
|
||||
|
@ -5,12 +5,14 @@
|
||||
import { processUpload, loadExample } from '../store';
|
||||
import type Progress from '@core/Progress';
|
||||
import ProgressRing from '../components/ProgressRing.svelte';
|
||||
import Checkbox from '../components/Checkbox.svelte';
|
||||
|
||||
let specifiedFileName: string;
|
||||
let dragover = false;
|
||||
let upload: Promise<any>;
|
||||
let rejectionError: string;
|
||||
let parseProgress: Progress;
|
||||
let debug = false;
|
||||
|
||||
function handleExampleLoad() {
|
||||
dragover = true;
|
||||
@ -47,7 +49,7 @@
|
||||
<div class="py-0.5 border-2 border-gray-50 hover:underline cursor-pointer" on:click={handleExampleLoad}>
|
||||
Load Example
|
||||
</div>
|
||||
<div class="py-0.5 px-1 border-2 border-gray-50 hover:border-green-600 cursor-pointer">Debug</div>
|
||||
<Checkbox name="Debug" bind:enabled={debug} />
|
||||
</div>
|
||||
|
||||
<!-- Upload Box -->
|
||||
|
@ -12,5 +12,24 @@ module.exports = {
|
||||
variants: {
|
||||
extend: {},
|
||||
},
|
||||
plugins: [],
|
||||
plugins: [
|
||||
function ({ addBase, theme }) {
|
||||
function extractColorVars(colorObj, colorGroup = '') {
|
||||
return Object.keys(colorObj).reduce((vars, colorKey) => {
|
||||
const value = colorObj[colorKey];
|
||||
|
||||
const newVars =
|
||||
typeof value === 'string'
|
||||
? { [`--color${colorGroup}-${colorKey}`]: value }
|
||||
: extractColorVars(value, `-${colorKey}`);
|
||||
|
||||
return { ...vars, ...newVars };
|
||||
}, {});
|
||||
}
|
||||
|
||||
addBase({
|
||||
':root': extractColorVars(theme('colors')),
|
||||
});
|
||||
},
|
||||
],
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user