bipp-raamcontract: vink "Inclusief niet-raamcontractartikelen" automatisch aan op de BIPP-zoekpagina
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
8125d53ea5
commit
b69aa3152d
@@ -1,9 +1,10 @@
|
|||||||
# ua-userscripts
|
# ua-userscripts
|
||||||
|
|
||||||
| toepassing | wat het doet | |
|
| toepassing | wat het doet | |
|
||||||
| -------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| -------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| **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** | 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** | "Inclusief niet-raamcontractartikelen" standaard aan | [installeren](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-raamcontract/bipp-raamcontract.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,23 @@
|
|||||||
|
# bipp-raamcontract
|
||||||
|
|
||||||
|
Zet het vinkje *Inclusief niet-raamcontractartikelen* op de zoekpagina van BIPP standaard aan.
|
||||||
|
|
||||||
|
[**Installeren**](https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-raamcontract/bipp-raamcontract.user.js)
|
||||||
|
· gebeurt er niets, zie de [installatie-uitleg](../../README.md).
|
||||||
|
|
||||||
|
## Hoe het werkt
|
||||||
|
|
||||||
|
- Het script zoekt het selectievakje via de tekst van zijn label en klikt erop als het uit staat.
|
||||||
|
Een echte klik (geen `checked = true`) laat de handlers van de app draaien, dus de
|
||||||
|
optielijsten van Leverancier en Fabricaat worden meteen opnieuw opgebouwd.
|
||||||
|
- Bouwt de pagina het formulier later op, dan wacht het script daar maximaal 15 seconden op.
|
||||||
|
- Een vinkje dat je zelf uitzet blijft uit tot de pagina opnieuw laadt.
|
||||||
|
|
||||||
|
## Beperkingen
|
||||||
|
|
||||||
|
- Laadt de app de pagina opnieuw na de klik en staat het vinkje daarna uit, dan klikt het script
|
||||||
|
niet nogmaals binnen 5 seconden, om een herlaadlus te vermijden.
|
||||||
|
|
||||||
|
## Licentie
|
||||||
|
|
||||||
|
[GPL-3.0-or-later](../../LICENSE).
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name BIPP: "Inclusief niet-raamcontractartikelen" standaard aan
|
||||||
|
// @namespace https://github.com/glgoose/ua-userscripts
|
||||||
|
// @version 1.0.0
|
||||||
|
// @description Vinkt "Inclusief niet-raamcontractartikelen" aan zodra de zoekpagina laadt.
|
||||||
|
// @author glgoose
|
||||||
|
// @license GPL-3.0-or-later
|
||||||
|
// @homepageURL https://github.com/glgoose/ua-userscripts/tree/main/scripts/bipp-raamcontract
|
||||||
|
// @supportURL https://github.com/glgoose/ua-userscripts/issues
|
||||||
|
// @downloadURL https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-raamcontract/bipp-raamcontract.user.js
|
||||||
|
// @updateURL https://raw.githubusercontent.com/glgoose/ua-userscripts/main/scripts/bipp-raamcontract/bipp-raamcontract.user.js
|
||||||
|
// @match https://bipp.biotechpartner.be/web/*
|
||||||
|
// @run-at document-idle
|
||||||
|
// @grant none
|
||||||
|
// ==/UserScript==
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var LABEL = 'inclusief niet-raamcontractartikelen';
|
||||||
|
var GUARD_KEY = 'bippRaamcontractLast';
|
||||||
|
var GUARD_MS = 5000;
|
||||||
|
var MAX_WAIT_MS = 15000;
|
||||||
|
|
||||||
|
function norm(s) { return (s || '').replace(/\s+/g, ' ').trim().toLowerCase(); }
|
||||||
|
|
||||||
|
function findBox() {
|
||||||
|
var boxes = document.querySelectorAll('input[type="checkbox"]');
|
||||||
|
for (var i = 0; i < boxes.length; i++) {
|
||||||
|
var box = boxes[i];
|
||||||
|
var label = box.labels && box.labels[0];
|
||||||
|
var t = norm(label ? label.textContent : box.parentNode && box.parentNode.textContent);
|
||||||
|
if (t === LABEL) return box;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Een klik die een postback met paginaherlaad uitlost, start dit script opnieuw.
|
||||||
|
// Staat het vinkje daarna weer uit, dan zou dat eindeloos doorgaan.
|
||||||
|
function recentlyClicked() {
|
||||||
|
try { return Date.now() - Number(sessionStorage.getItem(GUARD_KEY) || 0) < GUARD_MS; }
|
||||||
|
catch (e) { return false; }
|
||||||
|
}
|
||||||
|
function markClicked() {
|
||||||
|
try { sessionStorage.setItem(GUARD_KEY, String(Date.now())); } catch (e) { /* geen opslag */ }
|
||||||
|
}
|
||||||
|
|
||||||
|
var obs;
|
||||||
|
function stop() { if (obs) obs.disconnect(); }
|
||||||
|
|
||||||
|
function check() {
|
||||||
|
var box = findBox();
|
||||||
|
if (!box) return false;
|
||||||
|
if (!box.checked && !recentlyClicked()) {
|
||||||
|
markClicked();
|
||||||
|
box.click(); // click, geen .checked = true, zodat de handlers van de app draaien
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (check()) return;
|
||||||
|
// De pagina bouwt het formulier soms pas later op.
|
||||||
|
obs = new MutationObserver(function () { if (check()) stop(); });
|
||||||
|
obs.observe(document.body, { childList: true, subtree: true });
|
||||||
|
setTimeout(stop, MAX_WAIT_MS);
|
||||||
|
})();
|
||||||
Reference in New Issue
Block a user