Parteroma - Eksempler

Pagetool 0.1.1

Et sideværktøj ligger i en .pagetool-fil og indsættes i Pages med typen pagetool. Værktøjet kan følge en artikel, arbejde med en tabel, dele en oplysning eller lade læseren beregne og gemme lokale indstillinger. Pages 0.4.2 indeholder rendereren, så statiske sites og standalone-CLI bruger samme HTML og browserkode.

Kom i gang

  1. Åbn Pagetool fra Ele-menuen eller kommandoen Opret pagetool.
  2. Vælg funktion og filsti. Opret filen.
  3. Angiv eventuelt en .page under Side til forhåndsvisning. Vælg kildens navngivne element i Mål, og vælg et felt, når kilden er en record.
  4. Ret indstillingerne. Tryk Gem fil. Versionstjek forhindrer overskrivning af en fil, der er ændret af en anden editor siden indlæsningen.
  5. Indsæt et Pagetool-element i Pages og vælg filen under Pagetool-fil.
{"type":"pagetool","body":{"src":"tools/laeseguide.pagetool"}}

Samme fil kan bruges med en anden kilde og et nyt værktøjs-id:

{"type":"pagetool","body":{"src":"tools/laeseguide.pagetool","target":"anden-artikel","toolId":"anden-guide"}}

Angiv et stabilt id på den valgte sektion, gruppe, tabel, søgesamling eller record. contentId understøttes også. Navnet kan ændres uden at bryde bindingen. Eksempel: {"type":"group","id":"artikel","parts":[...]}. Et pagetool kan også gemmes som genbrugt .site-element; relative filreferencer følger elementfilens placering. field kan tilsidesættes ved indsættelsen.

Format

{
  "schema": "ele.pagetool/v1",
  "id": "laeseguide",
  "title": "På denne side",
  "function": "reading",
  "source": {"kind":"content","target":"artikel"},
  "placement": {"mode":"sticky","top":20,"mobile":"compact"},
  "options": {
    "wpm":220,"levels":[2,3],"numbered":false,"exclude":[],
    "parts":["time","remaining","progress","toc","previous","next","top"],
    "progress":"bar"
  },
  "storage": {"enabled":false},
  "preview": {"page":"../artikel.page"}
}

preview er kun for editoren og kommer ikke med i den publicerede konfiguration. Selve .pagetool-kilden kopieres heller ikke automatisk til eksporten. Værktøjets HTML, nødvendig konfiguration og runtime er indbygget i siden.

Kilder

kind Felter Anvendelse
content target main eller et stabilt element-id
data target Interaktiv Pages-tabel eller søgesamling
field target, field Et tekst- eller talfelt i en record, også produkt.sku
url Offentlig URL fra site-modellens props.url og prefix
section target Offentlig URL med afsnittets stabile id
value value Fast tekst eller tal
input value, label Besøgendes tekst eller tal

Feltkilden publicerer den valgte værdi i værktøjet. Resten af recorden føjes ikke til værktøjets konfiguration. Pages' almindelige eksport af en recordfil er uændret. Brug kun publicerbare data i sidens records. URL-kilder kræver en offentlig HTTP(S)-adresse; localhost afvises. I den native editor findes adressen i nærmeste entydige site-model. Et preview.publicUrl kan angive en præcis adresse ved særlige routes. Pages' egen preview og eksport bruger altid sidens faktiske beregnede URL.

Funktioner og options

function Centrale indstillinger
reading wpm, levels, exclude, parts, numbered, progress: bar/ring/percent
context notes: [{target, text, url?, label?}]
qr size (80-800 px), correction: L/M/Q/H, caption, downloads
copy / share label
download format: csv/json/text, filename, label
print label; target main eller bestemt sektion
filter search, fields, ranges, sort (feltnavne)
summary field til sum og gennemsnit; antal vises altid
compare fields, max (standard 4)
random vælger blandt de filtrerede poster
calculator inputs, formula, label, suffix, digits
convert units: [{id,label,factor,offset?}], digits
checklist items: [{id,label}]
reading-settings tekststørrelse, linjeafstand, læsebredde
view-switch liste/kort for Pages-søgesamlinger

Input til beregneren har id, label, value, min, max, step. Regneudtryk tillader tal, variabelnavne, parenteser, + - * / % og funktionerne min, max, round, floor, ceil, abs, sqrt. Der køres ingen eval eller brugerdefineret JavaScript. Division med nul og uendelige resultater giver en synlig fejl. Enhedsomregning bruger (værdi * fra.factor + fra.offset - til.offset) / til.factor; den kan derfor også bruges til temperatur.

Tabelfelter svarer til CSV-kolonnenavnene. Søgesamlinger bruger posternes feltnavne. Filtre på arrays virker som tagfiltre; øvrige kategorier matches præcist. Søgningen følger målets eksisterende søgning. Summer og downloads omfatter alle filtrerede rækker, også dem uden for den aktuelle tabelside. CSV-download beskytter tekst, der ellers kan fortolkes som regnearksformler.

Placering og adgang

placement.mode: block, sticky eller bar. Venstre/højre placering vælges med Pages-regioner og områder. Områdernes bredder kan sættes i sidens layout. top er afstanden fra skærmens top og kan tilpasses en fast header. En høj boks får egen scroll. Flere værktøjer i et område, som alene indeholder værktøjer, samles i én sticky-stak, når mindst ét af dem er sticky.

Mobil: block, compact eller hide. Sidstnævnte kræver placement.supplement:true. Sticky ophører på smalle skærme. Indholdet bliver stående. Tastaturfokus er synligt, labels følger felterne, og reduceret bevægelse respekteres. Fremdrift beskriver position gennem indhold, ikke dokumenteret læsning. Uden JavaScript findes artikel, statiske QR-koder, læsetid og afsnitslinks stadig.

Lokal lagring og fælles data

Kun læseposition, tjekliste og læseindstillinger gemmes, når storage.enabled er slået til. Nøglen er ele.pagetool.v1:<offentlig URL>:<værktøjs-id>. Nulstilling sker i værktøjet eller gennem Pages-elementet local-reset. Blokeret eller fyldt storage giver en besked og forhindrer ikke brug af siden. Værktøjerne sender ingen læsepositioner, input eller indstillinger til en server.

En broker pr. dokument deler scroll/resize/input-hændelser. Hvert mål har én ResizeObserver og én MutationObserver. Målinger deles, ordtælling caches og invalideres ved indholdsændring. Tabeller og søgesamlinger stiller deres eksisterende udvalg til rådighed via eleDataset. Pagetool henter ikke datasættet igen. Afmontering og genrendering fjerner abonnementerne. window.elePages.pagetools har mount, unmount, reset, dispose og en lille debug()-optælling.

Eksempler

examples/model.site-model bygger 11 sider. Her er læseguide, kontekstnoter, varenummer/QR/kopi, offentlig adresse/deling, CSV-filter/sum/download, sammenligning/tilfældig udvælgelse, prisberegner/enheder, tjekliste/nulstilling, læseindstillinger/print og søgesamling med liste/kort. Alle tal og produkter er demo.

Afgrænsninger i 0.1.1

Udvikling, test og udgivelse

Kør python3 build.py før pakning. Det bygger den selvstændige browserkode, synkroniserer renderer/runtime til Pages og kopierer Pages' tabelmotor til editoren. Native preview starter importerede moduler og kræver ingen ændring af Eles CSP. Statiske sider indeholder den samme motor som almindelig JavaScript. development/bin/publish udfører synkroniseringen for begge pakker.

Pages-tests omfatter bindingsfejl og rendererparitet. Den udvidede DOM-test i development/fixtures/pagetool/test-runner/acceptance.mjs kræver jsdom 26.1.0 og jsqr 1.4.0; den afprøver filtrering, oprydning, beregninger, storage, fallback og uafhængig QR-aflæsning. QR-generator: qrcode-generator 2.0.4, MIT, Kazuhiko Arase. Original kilde og licens ligger under vendor/.