bipp-budgetverantwoordelijke: zet Budget verantwoordelijke bij Aanvraag evalueren standaard op de ingelogde gebruiker
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
b69aa3152d
commit
b7fe1e4ef2
@@ -5,6 +5,7 @@
|
|||||||
| **BIPP** | zoekveld in dropdowns met veel opties | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/select-search/select-search.user.js) |
|
| **BIPP** | zoekveld in dropdowns met veel opties | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/select-search/select-search.user.js) |
|
||||||
| **BIPP** | budgetcode kiezen en zien in het winkelmandje | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-budgetcode/bipp-budgetcode.user.js) |
|
| **BIPP** | budgetcode kiezen en zien in het winkelmandje | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-budgetcode/bipp-budgetcode.user.js) |
|
||||||
| **BIPP** | "Inclusief niet-raamcontractartikelen" standaard aan | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-raamcontract/bipp-raamcontract.user.js) |
|
| **BIPP** | "Inclusief niet-raamcontractartikelen" standaard aan | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-raamcontract/bipp-raamcontract.user.js) |
|
||||||
|
| **BIPP** | budgetverantwoordelijke standaard op jezelf | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-budgetverantwoordelijke/bipp-budgetverantwoordelijke.user.js) |
|
||||||
| **iExpense** | alle onkostenrapporten in één doorzoekbare tabel | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/iexpense-search/iexpense-search.user.js) |
|
| **iExpense** | alle onkostenrapporten in één doorzoekbare tabel | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/iexpense-search/iexpense-search.user.js) |
|
||||||
| **PeopleSoft** | werkende knop "Downloaden naar Excel" | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/peoplesoft-excel-download/peoplesoft-excel-download.user.js) |
|
| **PeopleSoft** | werkende knop "Downloaden naar Excel" | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/peoplesoft-excel-download/peoplesoft-excel-download.user.js) |
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
[**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.
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
## Beperkingen
|
||||||
|
|
||||||
|
- Staat je naam niet in de lijst, of heeft de kop een ander formaat, dan doet het script niets en
|
||||||
|
schrijft het een waarschuwing in de console.
|
||||||
|
|
||||||
|
## Licentie
|
||||||
|
|
||||||
|
[GPL-3.0-or-later](../../LICENSE).
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
// ==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.
|
||||||
|
// @author glgoose
|
||||||
|
// @license GPL-3.0-or-later
|
||||||
|
// @homepageURL https://github.com/glgoose/ua-userscripts/tree/main/scripts/bipp-budgetverantwoordelijke
|
||||||
|
// @supportURL https://github.com/glgoose/ua-userscripts/issues
|
||||||
|
// @downloadURL https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-budgetverantwoordelijke/bipp-budgetverantwoordelijke.user.js
|
||||||
|
// @updateURL https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-budgetverantwoordelijke/bipp-budgetverantwoordelijke.user.js
|
||||||
|
// @match https://bipp.biotechpartner.be/web/*
|
||||||
|
// @run-at document-idle
|
||||||
|
// @grant none
|
||||||
|
// ==/UserScript==
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var LABEL = 'budget verantwoordelijke';
|
||||||
|
var FLAG_KEY = 'bippBudgetverantwoordelijkeToegepast';
|
||||||
|
var SEARCH_DELAY_MS = 1500;
|
||||||
|
|
||||||
|
function norm(s) { return (s || '').replace(/\s+/g, ' ').trim().toLowerCase(); }
|
||||||
|
|
||||||
|
// "Glenn Goossens" in de kop en "Goossens Glenn" in de lijst: vergelijk de woorden, niet de volgorde.
|
||||||
|
function words(s) {
|
||||||
|
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);
|
||||||
|
var exact = opts.filter(function (o) {
|
||||||
|
var w = words(o.text);
|
||||||
|
return w.length === me.length && w.every(function (x, i) { return x === me[i]; });
|
||||||
|
})[0];
|
||||||
|
if (exact) return exact;
|
||||||
|
return opts.filter(function (o) {
|
||||||
|
var w = words(o.text);
|
||||||
|
return w.length > 0 && me.every(function (x) { return w.indexOf(x) !== -1; });
|
||||||
|
})[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;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
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 }));
|
||||||
|
|
||||||
|
// De dropdown heeft geen autopostback: druk zelf op Zoeken.
|
||||||
|
setTimeout(function () {
|
||||||
|
var btns = document.querySelectorAll('input[type="submit"], input[type="button"], button');
|
||||||
|
for (var i = 0; i < btns.length; i++) {
|
||||||
|
if (norm(btns[i].value || btns[i].textContent) === 'zoeken') { btns[i].click(); return; }
|
||||||
|
}
|
||||||
|
}, SEARCH_DELAY_MS);
|
||||||
|
})();
|
||||||
Reference in New Issue
Block a user