Commit Graph
28 Commits
Author SHA1 Message Date
Glenn GoossensandClaude Opus 5 f07c4ffb9e dev-stub: zet de stub op een vaste versie en laat ze naar src wijzen
De stub moest tot nu toe mee met elke @version-bump, en dat is net het plakwerk waar het
@require-spoor vanaf moest. Het nummer zei daar ook niets: de code komt bij elke pagina-load van
schijf, dus wat er draait is wat er nú in de repo staat, niet wat er in het meta-blok bleef
staan. De kolom hoeft enkel -dev te tonen, dus staat er voortaan 0.0.0-dev. Opnieuw genereren is
nog nodig als de metadata zelf wijzigt, bij een andere @match, @grant, @run-at of @require.

Heeft een map een src/, dan wijst @require daar rechtstreeks naar. Bij select-search was het
gebouwde bestand niets anders dan de header plus die bron, dus stond build.sh alleen maar tussen
opslaan en herladen in. Die draai je nu pas bij het publiceren, voor de raw-URL en de
bookmarklet. De metadata blijft wel uit het gebouwde script komen, want de bron heeft geen
==UserScript==-blok.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 10:49:36 +00:00
Glenn GoossensandClaude Opus 5 5d4df257b0 select-search: kleine hangende inspring in plaats van afkappen
De lijst hing vast aan de linkerrand van het veld en kon dus alleen naar rechts groeien. Bij een
veld rechts in het formulier bleef er niets over en viel elk label terug op afbreken. Ze kiest nu
eerst haar breedte met het volle venster beschikbaar, en schuift daarna zo ver naar links als
nodig om te passen.

Een label dat dan nog niet op één regel past loopt terug met een hangende inspring van 2.5ch, de
breedte van twee cijfers plus een streepje, dus precies het "10-" waarmee elke budgetcode begint.
Uitlijnen onder de omschrijving lag meer voor de hand, maar die inspring is zo breed als de code
en bij een lange code bleef er nauwelijks tekstbreedte over. De code zelf breekt nooit af, ook
niet op zijn eigen streepjes: daarvoor staat ze in een eigen span met white-space:pre, met de
spatie erbuiten zodat het eerste woord van de omschrijving wel kan terugvallen.

Tussen twee opties staat een haarlijn, want een meerregelige rij loopt anders over in de
volgende. highlight() tekent nu een stuk van het label in plaats van het geheel, zodat een
zoektreffer over de grens tussen code en omschrijving heen blijft kloppen. Het title-attribuut
kan weg: met terugloop staat het volledige label altijd op het scherm.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 10:11:22 +00:00
Glenn GoossensandClaude Opus 5 6e6d6d8fc6 bipp-budgetcode: laat de verborgen select onzichtbaar tijdens bezig
select-search houdt het originele select-element in leven voor de form
submit en verbergt het met opacity 0 onder de wrapper. setState kopieerde
de wrapper-opacity daarnaartoe, dus tijdens bezig stonden beide op 0.5 en
schijnde de select door de wrapper heen: de dropdowntekst stond dubbel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 09:33:30 +00:00
Glenn GoossensandClaude Opus 5 5ea7e78c9b bipp-budgetcode: haal de optielijst via de postback als de GET faalt
AnalyticalFieldSelector.aspx gooit een NullReferenceException in Page_Load
zolang de sessie nog geen huidige regel heeft, dus de kale GET van
loadOptions gaf HTTP 500 en alle dropdowns stonden disabled. Dat viel pas op
toen de cache van zeven dagen verliep.

loadOptions probeert nog steeds eerst die GET en valt bij een fout terug op
de keten van saveCode zonder het opslaan: de SpecifyAF-postback, de lijst uit
het antwoord, en Terug zodat de server weer op het winkelmandje staat en
syncHidden de verse viewstate kan overzetten. Loopt door enqueue, want er mag
er maar een tegelijk aan de huidige regel van de sessie zitten.

Daarbij de foutmeldingen concreter: ze noemen nu de link bij naam en zeggen
wat je moet doen, in plaats van "gebruik de link ernaast". De rijen staan
tijdens het laden op bezig, en setState zet het grijs voortaan op zowel de
select als de select-search-wrapper.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 09:04:30 +00:00
Glenn Goossens 3ddac4fa8f README: verplaats dev-stub en naamgeving naar AGENTS.md
README is voor gebruikers; dev-workflow instructies horen daar niet
in. CLAUDE.md verwijst met @AGENTS.md naar het vendor-agnostische
bestand.
2026-09-01 16:59:23 +02:00
Glenn Goossens 6e59f1797c dev-stub: @updateURL none, @downloadURL behouden met juiste update-check 2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 d86d3925e9 bipp-budgetcode: kale code in Interne commentaar, zonder voorwaarde
De regel kwam er alleen als de grootboekrekening al gekozen was, en dat is
net het moment waarop je ze nog niet ziet staan. Die voorwaarde is weg: de
regel volgt enkel de budgetcode.

Er komt nu ook enkel de code in het veld, 8947-2025 in plaats van het hele
dropdownlabel met de omschrijving erachter. Codes zonder omschrijving, zoals
10-AD010000-CFALWERK, blijven ongemoeid. Het aanvullen bij het laden gebeurt
daarom pas nadat de optielijst binnen is, want daar zit het label in.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbSBusH6Gt7iayu83BMQSu
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 e65db45e95 iexpense-search: zoek alleen op Name en Report Number
Report Date, Report Total en Purpose zaten mee in de hooiberg en leverden
vooral toevallige treffers op. Status stond al buiten de zoekopdracht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0157oSYwEWdrcHVPBm3o9PDQ
2026-09-01 16:59:22 +02:00
Glenn Goossens 15a0ce4829 Repo-instellingen: chrome-devtools-mcp en superpowers/caveman scope 2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 b831ab9f1f select-search: recent-blok voor elke dropdown, bipp-budgetcode levert het niet meer zelf
Elke grote dropdown houdt nu zijn eigen vijf laatst gekozen waarden bij,
bovenaan de lijst onder de kopregel recent. Alles zit onder een
localStorage-sleutel, per veld, met een sleutel die uit name of id volgt
zodat rij 3 en rij 4 van hetzelfde veld één lijst delen. Delete haalt een
regel uit recent, en data-ss-recent="manual" plus window.selectSearch.remember()
is er voor wie pas mag onthouden nadat de server bevestigd heeft.

bipp-budgetcode gebruikt die weg en bouwt zijn eigen recent-optgroup dus
niet langer zelf.

Een optie zonder leesbare tekst telt voortaan als "niets gekozen", ook als
ze een waarde draagt, zoals de <option value="0">&nbsp;</option> van een
OAF-scherm. Zo'n regel stond eerst gewoon in de lijst; wie ze koos kreeg
haar daarna permanent als lege blauwe balk onder recent te zien.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 4a9ea34649 iexpense-search: duidelijkere naam, en verwijs naar de dev-stub
De naam "iExpense zoekbalk" dekte de lading niet meer: het script vervangt
de hele rapportentabel, niet enkel de zoekbalk. In de README staat nu ook
hoe je het script tijdens het ontwikkelen laadt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 bf8a829741 Noem peoplesoft-excel-download, en documenteer het dev-spoor
De tabel krijgt de PeopleSoft-rij. Daarnaast een sectie Ontwikkelen: wat er in Tampermonkey
hoort te staan is óf een dev-stub die naar de repo-file wijst, óf een kopie via de raw-URL,
nooit een met de hand geplakte kopie. De grootte in het dashboard verraadt in welk spoor
een rij zit. De naamgeving staat er ook bij, want het dashboard sorteert op naam en zo
staan de scripts van dezelfde toepassing bij elkaar.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 338da6378e bin/dev-stub: genereer een Tampermonkey-loader voor een script uit de repo
Met een geplakte kopie in Tampermonkey zijn er twee waarheden die stil uit elkaar lopen.
Deze stub bevat alleen metadata en haalt de code via @require uit de repo-file, zodat die
file de enige bron blijft en opslaan in je editor genoeg is.

De metadata komt uit de stub en niet uit de required file, dus @match, @grant en @run-at
worden overgenomen uit het echte script. @downloadURL en @updateURL blijven weg, anders
overschrijft Tampermonkey de stub bij de eerste update-check met de volledige raw-versie.
De stub gaat meteen naar het klembord.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 785ce600da peoplesoft-excel-download: bouw de Excel-export zelf uit de grid
De knop "Downloaden naar Excel" in de PeopleSoft-grids levert een bestand op dat Excel
niet of niet goed leest. Dit script vangt de klik op en schrijft zelf een xlsx uit wat er
in de tabel staat, dus zonder de server.

De klik wordt in de capture-fase op document opgevangen, want PeopleSoft hertekent de
pagina constant met AJAX en een handler op de knop zelf overleeft dat niet. De knop-id
verraadt bij welke grid hij hoort. Een flex-grid staat soms in twee tabellen, een
vastgezet en een scrollend deel met dezelfde rijen, en die kolommen worden per rij-index
weer aan elkaar geplakt.

Getallen komen als getal binnen volgens de nl-BE-notatie, met haakjes en een min achteraan
als negatief. Schrijven gebeurt met SheetJS via @require; is die niet geladen, dan valt
het terug op een CSV met puntkomma's en een BOM, wat Excel hier zonder importwizard opent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 216a0d432f Herstel het woord winkelmandje in de tabelrij
De cel eindigde op "in het": bij het uitlijnen van de kolom sneuvelde het laatste woord.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 657452a3c6 Noem bipp-budgetcode in de installatietabel
De twee BIPP-scripts staan onder elkaar, zodat wie het mandje gebruikt beide rijen in
één oogopslag ziet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 854c0b0b72 bipp-budgetcode: budgetcode als dropdown in de winkelmandjerij zelf
BIPP zet de analytische velden op een aparte pagina, dus je moest het mandje verlaten om
een budgetcode te kiezen en je zag achteraf niet welke er stond. Dit script zet de code
als dropdown onder de grootboekrekening in de rij zelf, slaat op via een
achtergrond-postback en vult de code aan in Interne commentaar.

De 5553 codes staan onder "alle budgetcodes", met bovenaan een groep "recent" met de
laatste 8 keuzes uit localStorage. Die groep is data-removable, dus een code die je één
keer per ongeluk koos haal je er met Delete weer uit; select-search stuurt het event, dit
script wist de code uit de MRU en bouwt de groepen opnieuw op.

Status staat als icoontje van 12px in een vak dat er altijd is, op de regel van de link
Bekijk, zodat er nooit iets verschuift. Zandloper met grijze tekst zolang de keten loopt,
en daarna gewoon weer zwart: geen vinkje, want de zwarte tekst is de bevestiging al. Bij
een fout een rood uitroepteken met rode rand en de waarde teruggedraaid, zodat de
oorspronkelijke pagina bereikbaar blijft.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn GoossensandClaude Opus 5 05a37f31ce select-search: muis verzet de selectie, en Delete haalt een regel uit haar groep
De blauwe balk werd alleen door de pijltjes verzet: er was een li.active-stijl maar
geen enkele hover- of mousemove-handler, dus wie met de muis over de lijst ging stond
nergens op. Nu verzet mousemove dezelfde active-regel als het toetsenbord. Bewust geen
mouseover, want een stilliggende muis boven de lijst zou dan de pijltjes blijven
tegenwerken.

Daarbovenop een generiek haakje om suggesties op te ruimen, zoals de adresbalk van een
browser dat doet. Een optie of optgroup met data-removable is met Delete te wissen: het
script haalt zelf niets weg maar stuurt een select-search:remove-event met value, label
en index, en wie de lijst bezit past de opties aan. Geen kruisje per regel: dat neemt
plek in en wie met de muis op een regel staat wil die kiezen, niet weggooien.

Delete vuurt alleen zolang er niets getypt is, anders blijft het een gewone teksttoets.
Die vraag werd eerst met input.value beantwoord, en dat is niet de zoekterm: bij een
open lijst zonder typwerk staat daar het gekozen label in, geselecteerd en klaar om over
te typen. Delete deed dus niets in precies de gewone situatie. De zoekterm zit nu in een
eigen variabele, en die lost hetzelfde stille probleem op in resync, die de open lijst
zou dichtfilteren op een label dat de gebruiker nooit intypte.

Na een herbouw van de opties blijft de balk staan waar hij stond, geklemd op de laatste
regel, zodat je meerdere regels achter elkaar kan wissen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:59:22 +02:00
Glenn Goossens 6b473c6261 README: installatietabel herwerkt
Kolomvolgorde, toepassing vooraan, installeren-link, aantal stappen,
uitzonderingen, broncodelinks en meerdere-toestellen-uitleg in de
tabel op elkaar afgestemd.
2026-09-01 16:59:22 +02:00
Glenn Goossens 4ba63a2738 Van MIT naar GPL-3.0-or-later
Een aangepaste versie die iemand verspreidt moet voortaan zijn broncode meegeven.
Bij client-side JavaScript telt het uitserveren naar een browser als verspreiden,
dus dit dekt ook het geval dat iemand de code in zijn eigen webapp bouwt.

Beide scripts krijgen een hogere @version, anders komt de nieuwe licentieregel
nooit bij wie het al geinstalleerd heeft. Wat al onder MIT gepubliceerd is blijft
onder MIT beschikbaar; dit geldt vanaf deze versies.
2026-09-01 16:59:22 +02:00
Glenn Goossens 5389a7326d README: installatielinks bovenaan, toestemming inschakelen uitgelegd 2026-09-01 16:59:22 +02:00
Glenn Goossens 6cac22e496 iexpense-search toevoegen
Verhuist uit ~/dotfiles/userscripts/, zodat er maar één bron is. Het metadatablok
krijgt de velden die het nodig heeft om zichzelf bij te werken: namespace, licentie,
homepage, support en de twee URLs naar het raw-bestand.
2026-08-29 13:36:13 +02:00
Glenn Goossens 07d4039480 select-search: naar scripts/, uitvoer naast de bron, URLs naar ua-userscripts
De build schreef naar dist/. In deze repo is het installeerbare bestand altijd
scripts/<naam>/<naam>.user.js, zodat elke installatielink af te leiden valt zonder
in de repo te kijken. @version naar 1.1.0 zodat bestaande installaties die via de
doorverwijzing in de oude repo binnenkomen, hierna nog een stap omhoog doen.
De installatie-uitleg staat voortaan een niveau hoger in de hoofd-README.
2026-08-29 13:35:43 +02:00
Glenn Goossens 702f8b876f Add 'scripts/select-search/' from commit '98095f3fc6f9a86e3b64b7c7ba14d299259fc7e2'
git-subtree-dir: scripts/select-search
git-subtree-mainline: e5bd11259f
git-subtree-split: 98095f3fc6
2026-08-29 13:34:58 +02:00
Glenn Goossens e5bd11259f Repo aanmaken: MIT-licentie en gitignore 2026-08-29 13:34:53 +02:00
Glenn GoossensandClaude Opus 5 98095f3fc6 README: simplify and add Firefox install
Instructions were prose; now steps and tables. Firefox was missing and
needs no "Allow user scripts" toggle, so that step is split out as
Chromium-only. Bookmarklet moved to its own section at the end.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 15:46:37 +02:00
Glenn GoossensandClaude Opus 5 ac63e0be43 README: unify Chrome and Edge install steps, note "Allow user scripts"
Both browsers follow the same flow, so a single numbered list is clearer
than a Chrome section plus an Edge exception. Adds the Edge Add-ons link
and the one-time "Allow user scripts" toggle, without which no userscript
runs at all.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 12:57:45 +02:00
Glenn GoossensandClaude Opus 5 8084cbc9f0 Add select-search userscript and bookmarklet
Makes any <select> with many options searchable, for web apps whose
dropdowns have no search. The original <select> stays in the DOM and
remains the source of truth: choosing an option sets selectedIndex and
fires native input/change events, so the host application and its form
submission are unaffected.

Handles option lists that the app repopulates at runtime via a per-select
MutationObserver, and new selects appearing after AJAX via a document-level
one. Filtering is substring-based, accent-insensitive and multi-token.

Built into both a Tampermonkey userscript and a bookmarklet from one source.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 11:26:54 +02:00