bipp-budgetverantwoordelijke: zet ook Aanvrager bij Aanvragen standaard op de ingelogde gebruiker
Filters nu op vaste id (qBudgetOwner, qRequestor): op Aanvragen deelt Aanvrager een rij met Status aanvraag, dus de eerste select naast het label was de verkeerde. Versie 1.1.0. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
4da5eac49b
commit
22990b0aa4
@@ -1,18 +1,18 @@
|
||||
# bipp-budgetverantwoordelijke
|
||||
|
||||
Zet het filter *Budget verantwoordelijke* op de pagina *Aanvraag evalueren* van BIPP standaard op jezelf in plaats van *Alle*, en start de zoekopdracht.
|
||||
Zet in BIPP het filter *Budget verantwoordelijke* op *Aanvraag evalueren* en het filter *Aanvrager* op *Aanvragen* standaard op jezelf in plaats van *Alle*, en start de zoekopdracht.
|
||||
|
||||
[**Installeren**](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-budgetverantwoordelijke/bipp-budgetverantwoordelijke.user.js)
|
||||
· gebeurt er niets, zie de [installatie-uitleg](../../README.md).
|
||||
|
||||
## Hoe het werkt
|
||||
|
||||
- Het script zoekt de dropdown via het label *Budget verantwoordelijke* in dezelfde rij.
|
||||
- Het script zoekt de dropdown via vaste id's: `qBudgetOwner` (*Aanvraag evalueren*) en `qRequestor` (*Aanvragen*). Een label is daar geen betrouwbare ingang, want *Aanvrager* deelt een rij met *Status aanvraag*.
|
||||
- Je naam komt uit de kop (`Welkom Glenn Goossens - ...`). De lijst heeft de omgekeerde volgorde
|
||||
(`Goossens Glenn`), dus het script vergelijkt de woorden en niet de volgorde.
|
||||
- Na de keuze drukt het script na 1,5 seconde zelf op *Zoeken*, want de dropdown doet dat niet.
|
||||
- Kies je zelf weer *Alle*, dan blijft dat staan. Een vlag in `sessionStorage` onthoudt dat het
|
||||
script al gewerkt heeft en wordt gewist zodra je een BIPP-pagina zonder dit filter opent.
|
||||
- Kies je zelf weer *Alle*, dan blijft dat staan. Per filter onthoudt een vlag in `sessionStorage` dat het
|
||||
script al gewerkt heeft. Die vlag wordt gewist zodra je een BIPP-pagina zonder dat filter opent.
|
||||
|
||||
## Beperkingen
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// ==UserScript==
|
||||
// @name BIPP: budgetverantwoordelijke standaard op de ingelogde gebruiker
|
||||
// @namespace https://github.com/glgoose/ua-userscripts
|
||||
// @version 1.0.0
|
||||
// @description Zet "Budget verantwoordelijke" bij Aanvraag evalueren op jezelf in plaats van "Alle" en start de zoekopdracht.
|
||||
// @version 1.1.0
|
||||
// @description Zet "Budget verantwoordelijke" bij Aanvraag evalueren en "Aanvrager" bij Aanvragen op jezelf in plaats van "Alle" en start de zoekopdracht.
|
||||
// @author glgoose
|
||||
// @license GPL-3.0-or-later
|
||||
// @homepageURL https://github.com/glgoose/ua-userscripts/tree/main/scripts/bipp-budgetverantwoordelijke
|
||||
@@ -16,8 +16,13 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var LABEL = 'budget verantwoordelijke';
|
||||
var FLAG_KEY = 'bippBudgetverantwoordelijkeToegepast';
|
||||
// Eén filter per scherm. De id's staan vast: op Aanvragen deelt "Aanvrager" een rij met "Status
|
||||
// aanvraag", dus de eerste select naast een label is daar de verkeerde.
|
||||
var FILTERS = [
|
||||
{ id: 'qBudgetOwner', name: 'budget verantwoordelijke' }, // Aanvraag evalueren
|
||||
{ id: 'qRequestor', name: 'aanvrager' } // Aanvragen
|
||||
];
|
||||
var FLAG_PREFIX = 'bippFilterToegepast:';
|
||||
var SEARCH_DELAY_MS = 1500;
|
||||
|
||||
function norm(s) { return (s || '').replace(/\s+/g, ' ').trim().toLowerCase(); }
|
||||
@@ -27,18 +32,6 @@
|
||||
return norm(s.replace(/[^A-Za-zÀ-ÿ\s-]/g, ' ')).split(' ').filter(Boolean).sort();
|
||||
}
|
||||
|
||||
function findSelect() {
|
||||
var cells = document.querySelectorAll('td, th, label, span, div');
|
||||
for (var i = 0; i < cells.length; i++) {
|
||||
if (cells[i].children.length === 0 && norm(cells[i].textContent) === LABEL) {
|
||||
var row = cells[i].closest('tr') || cells[i].parentNode;
|
||||
var sel = row && row.querySelector('select');
|
||||
if (sel) return sel;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function findOption(select, name) {
|
||||
var me = words(name);
|
||||
var opts = Array.prototype.slice.call(select.options);
|
||||
@@ -53,28 +46,45 @@
|
||||
})[0];
|
||||
}
|
||||
|
||||
var select = findSelect();
|
||||
|
||||
// Een pagina zonder dit veld wist de vlag, zodat het volgende bezoek weer de standaard zet.
|
||||
if (!select) {
|
||||
try { sessionStorage.removeItem(FLAG_KEY); } catch (e) { /* geen opslag */ }
|
||||
return;
|
||||
function flagged(id) {
|
||||
try { return !!sessionStorage.getItem(FLAG_PREFIX + id); } catch (e) { return false; }
|
||||
}
|
||||
function setFlag(id, on) {
|
||||
try {
|
||||
if (on) sessionStorage.setItem(FLAG_PREFIX + id, '1');
|
||||
else sessionStorage.removeItem(FLAG_PREFIX + id);
|
||||
} catch (e) { /* geen opslag */ }
|
||||
}
|
||||
|
||||
// Na de zoekopdracht laadt dezelfde pagina opnieuw: een bewuste keuze van "Alle" blijft dan staan.
|
||||
try { if (sessionStorage.getItem(FLAG_KEY)) return; } catch (e) { /* geen opslag */ }
|
||||
|
||||
var current = select.options[select.selectedIndex];
|
||||
if (!current || norm(current.text) !== 'alle') return;
|
||||
// Een pagina zonder dit veld wist de vlag, zodat het volgende bezoek weer de standaard zet.
|
||||
var present = FILTERS.filter(function (f) {
|
||||
var there = !!document.getElementById(f.id);
|
||||
if (!there) setFlag(f.id, false);
|
||||
return there;
|
||||
});
|
||||
if (!present.length) return;
|
||||
|
||||
var m = document.body.innerText.match(/Welkom\s+(.+?)\s+-\s/);
|
||||
if (!m) { console.warn('[bipp-budgetverantwoordelijke] geen "Welkom <naam> -" in de kop'); return; }
|
||||
var option = findOption(select, m[1]);
|
||||
if (!option) { console.warn('[bipp-budgetverantwoordelijke] geen optie voor', m[1]); return; }
|
||||
|
||||
try { sessionStorage.setItem(FLAG_KEY, '1'); } catch (e) { /* geen opslag */ }
|
||||
select.value = option.value;
|
||||
select.dispatchEvent(new Event('change', { bubbles: true }));
|
||||
var changed = false;
|
||||
present.forEach(function (f) {
|
||||
// Na de zoekopdracht laadt dezelfde pagina opnieuw: een bewuste keuze van "Alle" blijft dan staan.
|
||||
if (flagged(f.id)) return;
|
||||
|
||||
var select = document.getElementById(f.id);
|
||||
var current = select.options[select.selectedIndex];
|
||||
if (!current || norm(current.text) !== 'alle') return;
|
||||
|
||||
var option = findOption(select, m[1]);
|
||||
if (!option) { console.warn('[bipp-budgetverantwoordelijke] geen optie voor', m[1], 'bij', f.name); return; }
|
||||
|
||||
setFlag(f.id, true);
|
||||
select.value = option.value;
|
||||
select.dispatchEvent(new Event('change', { bubbles: true }));
|
||||
changed = true;
|
||||
});
|
||||
if (!changed) return;
|
||||
|
||||
// De dropdown heeft geen autopostback: druk zelf op Zoeken.
|
||||
setTimeout(function () {
|
||||
|
||||
Reference in New Issue
Block a user