RedmineKit

Redmine Dashboards

Dashboards
5.0 (0)·New installaties

Dashboards die je bouwt uit de opgeslagen queries die je al hebt — een raster met sleepbare KPI-tegels, tabellen en vijftien grafiektypen, geaggregeerd in SQL en beperkt tot wat de kijker mag zien.

$199 / één server

Meerdere servers: $399

Terugbetaling binnen 5 werkdagen12 maanden updatesBroncode inbegrepen
Een Redmine Charts-dashboard binnen Redmine 6: een KPI-tegel met 10.000 issues, een ring per project, staven per prioriteit, een statusring en een lijngrafiek met aangemaakte issues per maand.
Een live dashboard KPI-tegels, ringen, staaf- en lijngrafieken op één bord — elk cijfer in SQL geaggregeerd uit Redmines eigen, door rechten begrensde gegevens.
Widgettypen
23
Grafiekvarianten
15
Redmine
4 · 5 · 6 · 7
Databases
MySQL, MariaDB, PostgreSQL
Core-patches
Geen

Bouwen met slepen en neerzetten

Een raster waarvan je tegels van formaat en plaats verandert en dat zichzelf opslaat terwijl je werkt. Schik KPI’s, grafieken en tabellen tot het bord vertelt wat het moet vertellen — zonder layoutbestand, zonder herladen.

Vijftien grafiektypen

Staaf, liggende staaf, gestapelde staaf, lijn, meerdere lijnen, vlak, taart, ring, radar, polair, meter, trechter, heatmap, treemap en voortgangsring — getekend met Apache ECharts, in licht en donker.

Je opgeslagen queries, in beeld

Richt een widget op een opgeslagen query en hij erft dat filter, inclusief aangepaste velden, volgers en subprojecten. Of maak van die query in één klik een compleet dashboard.

Geaggregeerd in SQL

GROUP BY, COUNT, SUM en AVG draaien in de database, dus honderdduizend issues worden geteld in plaats van geïnstantieerd. Resultaten worden gecachet per gebruiker, widget en actieve filters.

Toegesneden op de kijker

Elke leesactie begint bij Issue.visible(user), TimeEntry.visible(user) en Query.visible(user), zodat geen enkele grafiek een project kan optellen waar de lezer geen lid van is.

Filters, verversen en doorklikken

Eén filterbalk herschaalt het hele bord, een interval per dashboard houdt een scherm aan de muur actueel, en elke staaf, punt en cel leidt naar de issuelijst erachter.

Zie het draaien binnen Redmine

Elke schermafbeelding hier komt van een standaardinstallatie van Redmine 6 met het plugin in plugins/ gezet. De dashboards staan onder Redmines eigen kopbalk en menu’s, want daar draaien ze ook.

Een bord bouwen

Bewerkmodus op een dashboard: elke widget toont sleepgrepen en hoeken om te schalen, en de indeling wordt automatisch opgeslagen.
Bewerkmodus Zet de schakelaar Bewerken om en elke widget is te verslepen en te schalen. De indeling slaat zichzelf gaandeweg op.
Het venster Widget toevoegen: widgettype, databron, optionele opgeslagen query, maat en aggregatie, gekozen uit keuzelijsten.
Een widget toevoegen Kies een widgettype, een databron en eventueel een opgeslagen query, en daarna de maat en de aggregatie. Niemand schrijft SQL.

Widgets

De keuzelijst met widgettypen: vijftien ECharts-varianten, KPI en tabel, plus Markdown, notities, HTML, iframe, activiteitenfeed en recente issues.
23 widgettypen Vijftien ECharts-varianten plus KPI, tabel en zes inhoudswidgets — Markdown, notities, HTML, iframe, activiteitenfeed en recente issues.
Het eigen menu van een widget geopend op een dashboard, met acties om te verversen, in te stellen en te verwijderen.
Widgetacties Elke widget laadt zelfstandig en heeft een eigen menu — ververs één grafiek zonder de rest van het bord opnieuw te laden.

Delen en wisselen

Het deelvenster van een dashboard met de zichtbaarheid privé, gedeeld en openbaar, en kiezers voor rollen, groepen en projecten.
Delen Houd een bord privé, deel het met bepaalde rollen, groepen of projecten, of open het voor elke ingelogde gebruiker — afgehandeld via Redmine-lidmaatschappen.
De dashboardwisselaar in de werkbalk met elk zichtbaar bord, en opties om een standaard in te stellen, als JSON te exporteren of een nieuw bord te maken.
Van bord wisselen De wisselaar in de werkbalk toont elk bord dat je mag zien. Zet er een vast als standaard, exporteer het als JSON of begin een nieuw bord.

De query is het rapport al

Niets hier vraagt je om je gegevens een tweede keer te beschrijven. Filter een issuelijst zoals je altijd doet, sla hem op, en die opgeslagen query wordt het bereik waarover een widget aggregeert — precies de relatie waarmee Redmine de lijst zelf tekent.

Eén opgeslagen query, drie wegen naar een dashboard
StapWat je doetWat je krijgt
1. Query opslaanDe issuelijst filteren — aangepaste velden, volgers, subprojecten — en op Opslaan klikkenEen query met een naam, zichtbaar voor wie je hem deelde
2. Er een widget op richtenDie query kiezen in het widgetvensterDatabron en een verstandige standaardgroepering, voor je afgeleid
3. Of meteen het hele bordOp «Vanuit query» klikkenEen dashboard met KPI-tegels en grafieken die eraan hangen, in één verzoek

Ingesteld met keuzelijsten, niet met SQL

Een widget is een bron, een dimensie, een maat en een aggregatie. Groepeer issues op status, prioriteit, tracker, toegewezene of elk datumveld in dagen, weken, maanden of jaren; tel ze, tel geschatte uren op of neem het gemiddelde van het percentage gereed. Niemand in het team schrijft SQL voor een grafiek — en omdat er geen SQL te schrijven valt, bestaat er ook geen query die voorbij de rechten van de lezer kan reiken.

Het venster Vanuit query: kies een opgeslagen Redmine-query om een dashboard met KPI’s en grafieken te genereren die aan de filters ervan hangen.
Vanuit een opgeslagen query Kies een opgeslagen query en krijg een kant-en-klaar bord met KPI’s en grafieken — status, prioriteit, toegewezene, trend en een tabel — gekoppeld aan de filters ervan.

Elke widget ingesteld vanuit één formulier

Elke widget, of het nu een KPI, een staaf of een ring is, stel je in met hetzelfde korte formulier: een titel en een type, een databron, eventueel een opgeslagen query voor de filters, een maat, en een groepering met Top-N. Verander het type en het formulier past zich aan.

Formulier Widget instellen voor een KPI: titel Totaal issues, databron Issues, opgeslagen query, maat Aantal issues, functie count.
KPI-tegel Eén getal: een maat en een aggregatie over een opgeslagen query.
Formulier Widget instellen voor een staafgrafiek: Issues per prioriteit, gegroepeerd op Prioriteit, Top N 20.
Staafgrafiek Groepeer op elke dimensie, zoals prioriteit, en kap de lange staart af met Top-N.
Formulier Widget instellen voor een ringgrafiek: Issues per status, gegroepeerd op Status.
Ringgrafiek Dezelfde velden met een ander type. Van grafiek wisselen laat je data-instellingen intact.
Instellingen van het plugin Redmine Charts: caching aan, cacheduur 300 seconden, standaardthema Licht, interval voor automatisch verversen 0.
Plugininstellingen Caching, cache-TTL, standaardthema en automatisch verversen, op Redmines eigen instellingenscherm.

Eén instellingenpagina voor beheerders

Onder Administratie › Plugins › Redmine Charts stel je caching van resultaten per gebruiker in, de cache-TTL (5–86400 seconden, standaard 300), het standaardthema licht of donker, en een standaardinterval voor automatisch verversen, waarbij 0 het uitzet. De pagina is Redmines eigen scherm voor plugininstellingen.

23 widgettypen, en ruimte voor die van jou

Elk type is metadata in een register, dus het configuratiescherm bouwt zichzelf op uit de declaratie van de widget in plaats van uit een handgeschreven formulier per grafiek.

De catalogus die meekomt
FamilieTypenIngesteld met
GrafiekenStaaf, liggende staaf, gestapelde staaf, lijn, meerdere lijnen, vlak, taart, ring, radar, polair, meter, trechter, heatmap, treemap, voortgangsringBron, dimensie, maat, aggregatie
KPI / getalEén geaggregeerd cijfer, met een eigen filtercount · sum · avg · min · max
TabelEen gepagineerd raster over dezelfde, door rechten begrensde gegevensKolomkiezer en filters
InhoudMarkdown, notities, HTML, iframe, activiteitenfeed, recente issuesVrije tekst, of een van Redmines eigen feeds

Getekend met Apache ECharts

Vijftien varianten, gemaakt voor licht en donker, opnieuw getekend bij schalen en ook op een wandscherm nog leesbaar. De bundle zit kant-en-klaar in het pakket, dus installeren vraagt geen Node en geen buildstap.

Elk segment klikt door

Klik op een staaf, een taartpunt of een heatmapcel en de Redmine-issuelijst opent, precies op die issues gefilterd. De cijfers blijven controleerbaar, want je kunt altijd op de regels erachter uitkomen.

Globale filters en automatisch verversen

Eén filterbalk herschaalt alle widgets van een bord tegelijk, en een ververstijd per dashboard houdt het scherm op de gang actueel. Nul zet verversen uit.

Sjablonen en blauwdrukken

Bewaar een bord als herbruikbaar sjabloon, dupliceer het per team, of exporteer het als JSON-blauwdruk en importeer het in een andere instantie — van test naar productie zonder het opnieuw te bouwen.

Eén plugin, een bord voor elk team

Een delivery lead, een supportdesk en één ontwikkelaar bouwden deze elk in een paar minuten, uit opgeslagen queries die ze al hadden.

Dashboard over de volle lengte: KPI, ringen, staven per prioriteit, maandtrend, werklast per toegewezene en een gepagineerde issuetabel.
Portfolio-overzicht KPI, ringen, trend, werklast per toegewezene en een gepagineerde issuetabel.
Dashboard Aan mij toegewezen issues met een KPI, een vlakgrafiek en een statusring.
Aan mij toegewezen issues Een persoonlijk bord met een vlakgrafiek en een statusring.
Dashboard Aangemaakte issues met een KPI, een ring per tracker en staven per prioriteit.
Aangemaakte issues Trackermix, verdeling per prioriteit en status in één oogopslag.
Supportdashboard: KPI-tegels voor het totaal aantal issues en de bestede tijd, een statusring, staven per prioriteit, subtracker en module, en een lijngrafiek met aangemaakte issues per maand.
Supportoverzicht Issues, bestede tijd, prioriteit, subtracker en werklast per module voor één supportperiode.
Supportdashboard over een heel jaar: KPI-tegels voor het totaal aantal issues en de bestede tijd, een statusring, staven per prioriteit, module en subtracker, en een lijngrafiek met aangemaakte issues per maand.
Het supportjaar in cijfers Aantal issues, bestede tijd en verdeling per prioriteit en module, met het verloop van maand tot maand.

Twee bronnen ingebouwd, en die van jou ernaast

Issues en bestede tijd komen met hun dimensies en maten al aangemeld, allebei achter Redmines eigen zichtbaarheidsbereiken. Een bron die een ander plugin toevoegt, krijgt exact dezelfde behandeling.

BronDimensiesMaten
IssuesStatus, prioriteit, tracker, project, toegewezene, auteur, categorie, versie, aangemaakt, bijgewerkt, einddatumAantal issues, geschatte uren, percentage gereed
Bestede tijdProject, gebruiker, activiteit, datumUren, aantal registraties
Je eigenWat je aanmeldtWat je aanmeldt

Uitbreiden is aanmelden, niet patchen

Een databron is een klasse met een naam, zijn dimensies, zijn maten en een base_scope die op rechten filtert; een widgettype is een hash. Meld een van beide aan vanuit de init.rb van je eigen plugin met RedmineCharts.register_data_source of register_widget_type en het verschijnt meteen in het configuratiescherm — inclusief filtering, caching en doorklikken. Er wordt niets in dit plugin voor gewijzigd.

Niemand aggregeert wat hij niet mag lezen

Een dashboard is een snelle manier om een getal te laten weglekken, dus elke leesactie begint bij het bereik van de kijker in plaats van te eindigen met een controle daarop.

Eerst zichtbaarheid, dan groeperen

Issue.visible(user), TimeEntry.visible(user) en Query.visible(user) beperken de relatie voordat er ook maar één rij geteld is. Een totaal uit een project waar je geen lid van bent, kan in geen enkele widget opduiken, want die rijen zaten nooit in de verzameling.

Vier fijnmazige rechten

Dashboards bekijken, aanmaken, ze allemaal beheren en sjablonen beheren — elk per rol toe te kennen. En alles blijft uit tot iemand de module Dashboards voor dat project inschakelt.

Delen via lidmaatschappen

Geef een bord vrij aan gebruikers, groepen, rollen of hele projecten. Elk verzoek berekent viewable_by? en editable_by? opnieuw via Redmines eigen lidmaatschappen, en niet via een parallelle toegangslijst die uit de pas gaat lopen.

Er verlaat niets de server

De frontend praat alleen met de JSON-API van dit plugin op je eigen Redmine, via de sessie en het CSRF-token die er al zijn. Geen externe dienst, geen licentiecontrole op afstand, geen telemetrie.

Gebouwd voor een grote instantie

Honderdduizend issues tellen zou niet moeten betekenen dat je honderdduizend objecten laadt. Hier betekent het dat niet.

Wat er gebeurt als een bord wordt geopend
OnderwerpHoe het is opgelost
AggregatieGROUP BY, COUNT, SUM en AVG draaien in SQL — rijen worden nooit geïnstantieerd alleen om geteld te worden
Zeer brede dimensiesTop-N-vouwing houdt het antwoord klein als een dimensie duizenden waarden heeft
Herhaald bekijkenResultaten gecachet per gebruiker, wijzigingsmoment van de widget en actieve filters via Rails.cache; de TTL is een instelling en Redis werkt zoals hij is
Eén trage widgetWidgets laden onafhankelijk, dus een zware query houdt nooit het hele bord op
Ontbrekende JS-bundleRails rendert de gegevens van elke widget serverzijdig als terugval, dus de pagina degradeert in plaats van leeg te blijven

Bewust overdraagbaar, niet toevallig

Ondersteuning voor meerdere versies en databases is ontworpen, niet achteraf gevonden — migraties, JSON-opslag en datumindeling zijn allemaal geschreven om de verschillen te overleven.

OnderwerpOndersteundHoe
Redmine4.x, 5.x, 6.x, 7.xDeclareert requires_redmine version_or_higher 4.0.0, zonder core-overrides die kunnen verouderen
Rails5.2 → 8.0Migraties mikken op de basis 5.2 die elke release tot en met 8.0 begrijpt
Ruby2.5+Gelijk aan de minimumeis van Redmine 4
DatabasesMySQL, MariaDB, PostgreSQLJSON staat in gewone text-kolommen — overal identiek DDL — met een serializer die per Rails-versie de juiste vorm kiest
Groeperen op datumDag, week, maand, jaarGroepeert op een overdraagbare CAST(col AS DATE) en vouwt daarna in Ruby tot periodes — geen leverancierspecifieke SQL
Migraties opnieuw draaienVeiligDefensief geschreven, dus een afgebroken upgrade kan opnieuw worden gedraaid

Vanaf dag één scriptbaar

Elk endpoint zit onder /redmine_charts/api, geeft JSON terug en handhaaft precies de rechten van de interface — een bord kan dus vanuit CI worden uitgerold of per team worden gegenereerd.

MethodePadWat het doet
GET/dashboardsElk dashboard dat de aanroeper mag zien
POST/dashboardsEr een aanmaken
GET/dashboards/:idEen dashboard met zijn widgets ophalen
PATCH/dashboards/:idNaam, indeling of instellingen wijzigen
POST/dashboards/:id/duplicateHet klonen, widgets inbegrepen
GET/dashboards/:id/exportEen JSON-blauwdruk exporteren
POST/dashboards/importEen bord maken uit een blauwdruk
POST/dashboards/:id/widgetsEen widget toevoegen
GET/widgets/:id/dataGeaggregeerde widgetgegevens, begrensd door rechten
GET/meta/data_sourcesBronnen, dimensies, maten en de bruikbare opgeslagen queries

Wat er vandaag in zit, en wat er komt

De roadmap is bewust aanvullend — nieuwe databronnen, widgettypen en exportdiensten — dus niets ervan zal je vragen iets te migreren. Het staat er als roadmap, niet als feature, zodat je koopt op wat er vandaag in de doos zit.

MogelijkheidStatus
Dashboards: aanmaken, dupliceren, als standaard instellen, exporteren en importerenBeschikbaar
Schaalbaar raster met slepen en neerzetten en automatisch opslaanBeschikbaar
KPI, tabel en de volledige set ECharts-grafiekenBeschikbaar
Visuele widgetconfiguratie zonder SQLBeschikbaar
Hergebruik van opgeslagen queries en een bord genereren met één klikBeschikbaar
Globale filters die het hele bord verversenBeschikbaar
Doorklikken van grafiek naar issuelijstBeschikbaar
SQL-aggregatie en caching per gebruiker, begrensd door rechtenBeschikbaar
Delen, sjablonen, lichte en donkere thema’sBeschikbaar
Meerdere versies, meerdere databases, serverzijdige terugvalBeschikbaar
Export naar PDF, PNG en ExcelGepland
Achtergrondtaken voor heel zware rapportenGepland
Live bijwerken via WebSocketGepland
Geplande momentopnamen, ook per e-mailGepland
Kiosk- / wandschermmodusGepland
AI-rapportbouwer in natuurlijke taalGepland
Widgets voor kalender, burndown en gantt-samenvattingGepland

Prijzen

Eén server

$199

Eén Redmine-installatie · onbeperkt aantal gebruikers · 12 maanden updates.

Unlimited users12 months of updatesPriority email support
Licentie kopen

Meerdere servers

$399

Onbeperkt aantal Redmine-servers · onbeperkt aantal gebruikers · 12 maanden updates.

Unlimited users12 months of updatesPriority email support
Licentie kopen
Kopen