Redmine Dashboards
DashboardsDashboardy zbudowane z zapisanych zapytań, które już Państwo mają — siatka „przeciągnij i upuść” z kafelkami KPI, tabelami i piętnastoma typami wykresów, agregowana w SQL i ograniczona do tego, co oglądająca osoba ma prawo zobaczyć.
Wiele serwerów: $399

- Typy widżetów
- 23
- Warianty wykresów
- 15
- Redmine
- 4 · 5 · 6 · 7
- Bazy danych
- MySQL, MariaDB, PostgreSQL
- Poprawki rdzenia
- Brak
Kreator „przeciągnij i upuść”
Siatka ze zmienną wielkością i kolejnością elementów, która zapisuje się w trakcie pracy. KPI, wykresy i tabele układa się tak długo, aż tablica pokaże to, czego potrzeba — bez pliku układu i bez przeładowania strony.
Piętnaście typów wykresów
Słupkowy, poziomy, skumulowany, liniowy, wieloliniowy, warstwowy, kołowy, pierścieniowy, radarowy, biegunowy, wskaźnik zegarowy, lejek, mapa ciepła, mapa drzewa i pierścień postępu — rysowane przez Apache ECharts, w trybie jasnym i ciemnym.
Zapisane zapytania w formie wizualnej
Widżet wskazujący zapisane zapytanie dziedziczy jego filtr — łącznie z polami niestandardowymi, obserwatorami i podprojektami. Można też jednym kliknięciem zamienić zapytanie w całą tablicę.
Agregacja w SQL
GROUP BY, COUNT, SUM i AVG działają w bazie danych, więc sto tysięcy zgłoszeń jest liczonych, a nie ładowanych jako obiekty. Wyniki są buforowane per użytkownik, widżet i aktywne filtry.
Zakres według oglądającego
Każdy odczyt zaczyna się od Issue.visible(user), TimeEntry.visible(user) i Query.visible(user), więc żaden wykres nie zsumuje projektu, którego czytający nie jest członkiem.
Filtry, odświeżanie i drążenie danych
Jeden pasek filtrów zmienia zakres całej tablicy, interwał ustawiany dla każdego dashboardu utrzymuje aktualność ekranu ściennego, a każdy słupek, wycinek i komórka prowadzi do listy zgłoszeń, która za nim stoi.
Zobacz, jak działa w Redmine
Każdy zrzut ekranu pochodzi ze standardowej instalacji Redmine 6 z wtyczką wrzuconą do plugins/. Dashboardy znajdują się pod nagłówkiem i menu Redmine, bo właśnie tam działają.
Budowa tablicy


Widżety


Udostępnianie i przełączanie


Zapytanie już jest raportem
Nic tu nie wymaga opisywania danych po raz drugi. Listę zgłoszeń filtruje się jak zawsze, zapisuje, a zapisane zapytanie staje się zakresem agregowanym przez widżet — tą samą relacją, której Redmine używa do wyświetlenia samej listy.
| Krok | Co Państwo robią | Co Państwo otrzymują |
|---|---|---|
| 1. Zapisanie zapytania | Filtrowanie listy zgłoszeń — pola niestandardowe, obserwatorzy, podprojekty — i kliknięcie Zapisz | Nazwane zapytanie, udostępnione tym, którym je Państwo udostępnili |
| 2. Wskazanie go w widżecie | Wybór tego zapytania w oknie widżetu | Źródło danych i rozsądne domyślne grupowanie, ustalane automatycznie |
| 3. Albo wygenerowanie całej tablicy | Kliknięcie Z zapytania | Dashboard z kafelkami KPI i wykresami powiązanymi z zapytaniem, w jednym żądaniu |
Konfiguracja z list rozwijanych, nie w SQL
Widżet to źródło, wymiar, miara i agregacja. Zgłoszenia można grupować według statusu, priorytetu, typu zgłoszenia, osoby przypisanej lub dowolnego pola daty z podziałem na dni, tygodnie, miesiące lub lata; można je zliczać, sumować szacowany czas lub uśredniać procent wykonania. Nikt w zespole nie pisze SQL, żeby uzyskać wykres — a skoro nie ma SQL do napisania, nie ma też zapytania, które sięgnęłoby poza uprawnienia osoby oglądającej.

Konfiguracja każdego widżetu w jednym formularzu
Każdy widżet — czy to KPI, słupki, czy wykres pierścieniowy — konfiguruje się w tym samym krótkim formularzu: tytuł i typ, źródło danych, opcjonalne zapisane zapytanie jako filtr, miara oraz grupowanie z Top-N. Po zmianie typu formularz się dostosowuje.




Jedna strona ustawień dla administratorów
W Administracja › Wtyczki › Redmine Charts ustawia się buforowanie wyników per użytkownik, TTL bufora (5–86 400 sekund, domyślnie 300), domyślny motyw jasny lub ciemny oraz domyślny interwał automatycznego odświeżania, gdzie 0 je wyłącza. To standardowy ekran ustawień wtyczek Redmine.
23 typy widżetów i miejsce na Państwa własne
Każdy typ to metadane z rejestru, więc interfejs konfiguracji buduje się sam z deklaracji widżetu, a nie z ręcznie pisanego formularza dla każdego wykresu.
| Rodzina | Typy | Konfiguracja |
|---|---|---|
| Wykresy | Słupkowy, słupkowy poziomy, słupkowy skumulowany, liniowy, wieloliniowy, warstwowy, kołowy, pierścieniowy, radarowy, biegunowy, wskaźnik zegarowy, lejek, mapa ciepła, mapa drzewa, pierścień postępu | Źródło, wymiar, miara, agregacja |
| KPI / liczba | Pojedyncza zagregowana wartość z własnym filtrem | count · sum · avg · min · max |
| Tabela | Stronicowana siatka na tych samych danych ograniczonych uprawnieniami | Wybór kolumn i filtry |
| Treść | Markdown, notatki, HTML, iframe, strumień aktywności, ostatnie zgłoszenia | Dowolny tekst lub jeden ze strumieni Redmine |
Rysowane przez Apache ECharts
Piętnaście wariantów, z motywami jasnym i ciemnym, przerysowywane przy zmianie rozmiaru i czytelne nawet na ekranie ściennym. Gotowy pakiet frontendu jest w paczce, więc instalacja wtyczki nie wymaga Node ani kroku budowania.
Każdy segment można drążyć
Kliknięcie słupka, wycinka lub komórki mapy ciepła otwiera listę zgłoszeń Redmine przefiltrowaną dokładnie do tych zgłoszeń. Liczby pozostają weryfikowalne, bo zawsze można dotrzeć do wierszy, które za nimi stoją.
Filtry globalne i automatyczne odświeżanie
Jeden pasek filtrów zmienia jednocześnie zakres wszystkich widżetów na tablicy, a interwał odświeżania ustawiany dla każdego dashboardu utrzymuje aktualność ekranu na korytarzu. Zero wyłącza odświeżanie.
Szablony i blueprinty
Tablicę można zapisać jako reużywalny szablon, powielić dla każdego zespołu lub wyeksportować jako blueprint JSON i zaimportować do innej instancji — ze stagingu na produkcję bez ręcznego odtwarzania.
Jedna wtyczka, tablica dla każdego zespołu
Kierownik dostaw, dział wsparcia i pojedynczy programista zbudowali te tablice w kilka minut z zapisanych zapytań, które już mieli.





Dwa wbudowane źródła i obok nich Państwa własne
Zgłoszenia i wpisy czasu pracy są dostarczane z zarejestrowanymi z góry wymiarami i miarami, oba za standardowymi zakresami widoczności Redmine. Źródło dodane przez inną wtyczkę jest traktowane identycznie.
| Źródło | Wymiary | Miary |
|---|---|---|
| Zgłoszenia | Status, priorytet, typ zgłoszenia, projekt, osoba przypisana, autor, kategoria, wersja, data utworzenia, data aktualizacji, termin | Liczba zgłoszeń, szacowany czas, procent wykonania |
| Wpisy czasu pracy | Projekt, użytkownik, aktywność, data | Godziny, liczba wpisów |
| Państwa własne | To, co Państwo zarejestrują | To, co Państwo zarejestrują |
Rozszerzanie to rejestracja, a nie łatanie
Źródło danych to klasa z nazwą, wymiarami, miarami i ograniczonym uprawnieniami base_scope; typ widżetu to hash. Każde z nich rejestruje się w init.rb własnej wtyczki za pomocą RedmineCharts.register_data_source lub register_widget_type i od razu pojawia się w interfejsie konfiguracji — dziedzicząc filtrowanie, buforowanie i drążenie danych. W tej wtyczce nie trzeba niczego edytować, żeby to zadziałało.
Nikt nie agreguje tego, czego nie może przeczytać
Dashboard to szybki sposób na wyciek liczby, dlatego każdy odczyt zaczyna się od zakresu oglądającego, a nie kończy sprawdzeniem względem niego.
Najpierw widoczność, potem grupowanie
Issue.visible(user), TimeEntry.visible(user) i Query.visible(user) zawężają relację, zanim zostanie policzony choćby jeden wiersz. Suma z projektu, którego nie są Państwo członkiem, nie może pojawić się w żadnym widżecie, bo tych wierszy nigdy nie było w zbiorze.
Cztery szczegółowe uprawnienia
Przeglądanie dashboardów, tworzenie ich, zarządzanie wszystkimi, zarządzanie szablonami — każde przypisywane według roli. Wszystko pozostaje wyłączone, dopóki ktoś nie włączy modułu Charts & Dashboards w danym projekcie.
Udostępnianie przez członkostwa
Tablicę można przyznać użytkownikom, grupom, rolom lub całym projektom. Każde żądanie ponownie rozstrzyga viewable_by? i editable_by? przez członkostwa Redmine, a nie przez równoległą listę dostępu, która z czasem się rozjeżdża.
Nic nie opuszcza serwera
Frontend komunikuje się wyłącznie z API JSON tej wtyczki na Państwa własnym Redmine, przez już istniejącą sesję i token CSRF. Żadnej usługi zewnętrznej, żadnego sprawdzania licencji przez internet, żadnej telemetrii.
Zbudowane, by przetrwać dużą instancję
Policzenie stu tysięcy zgłoszeń nie powinno oznaczać załadowania stu tysięcy obiektów. Tutaj nie oznacza.
| Kwestia | Jak jest obsłużona |
|---|---|
| Agregacja | GROUP BY, COUNT, SUM i AVG działają w SQL — wiersze nigdy nie są ładowane jako obiekty tylko po to, by je policzyć |
| Szerokie wymiary | Zwijanie Top-N utrzymuje mały rozmiar odpowiedzi, gdy wymiar ma tysiące wartości |
| Powtórne wyświetlenia | Wyniki buforowane per użytkownik, czas modyfikacji widżetu i aktywne filtry przez Rails.cache; TTL jest ustawieniem, a Redis działa bez zmian |
| Jeden wolny widżet | Widżety ładują się niezależnie, więc jedno ciężkie zapytanie nigdy nie blokuje całej tablicy |
| Brak pakietu JS | Rails renderuje dane każdego widżetu po stronie serwera jako rozwiązanie awaryjne, więc strona działa w ograniczonym zakresie, zamiast pozostać pusta |
Przenośne z założenia, a nie przypadkiem
Obsługa wielu wersji i baz danych jest zaprojektowana od początku — migracje, przechowywanie JSON i grupowanie dat zostały napisane tak, by przetrwać różnice.
| Kwestia | Obsługiwane | Jak |
|---|---|---|
| Redmine | 4.x, 5.x, 6.x, 7.x | Deklaruje requires_redmine version_or_higher 4.0.0, bez nadpisań rdzenia, które mogłyby się zdezaktualizować |
| Rails | 5.2 → 8.0 | Migracje są pisane pod bazową wersję 5.2, którą rozumie każde wydanie aż do 8.0 |
| Ruby | 2.5+ | Odpowiada minimalnym wymaganiom Redmine 4 |
| Bazy danych | MySQL, MariaDB, PostgreSQL | JSON przechowywany w zwykłych kolumnach tekstowych — identyczny DDL wszędzie — z serializatorem dobierającym właściwą formę do wersji Rails |
| Grupowanie dat | Dzień, tydzień, miesiąc, rok | Grupuje po przenośnym CAST(col AS DATE), a następnie zwija w przedziały w Ruby — bez SQL specyficznego dla dostawcy bazy |
| Ponowne uruchamianie migracji | Bezpieczne | Napisane defensywnie, więc przerwaną aktualizację można powtórzyć |
Skryptowalne od pierwszego dnia
Każdy endpoint znajduje się pod /redmine_charts/api, zwraca JSON i egzekwuje dokładnie te same uprawnienia co interfejs — tablice można więc tworzyć z CI lub generować po jednej dla każdego zespołu.
| Metoda | Ścieżka | Co robi |
|---|---|---|
| GET | /dashboards | Wszystkie dashboardy widoczne dla wywołującego |
| POST | /dashboards | Tworzy dashboard |
| GET | /dashboards/:id | Pobiera dashboard z widżetami |
| PATCH | /dashboards/:id | Aktualizuje nazwę, układ lub ustawienia |
| POST | /dashboards/:id/duplicate | Klonuje go wraz z widżetami |
| GET | /dashboards/:id/export | Eksportuje blueprint JSON |
| POST | /dashboards/import | Tworzy tablicę z blueprintu |
| POST | /dashboards/:id/widgets | Dodaje widżet |
| GET | /widgets/:id/data | Zagregowane dane widżetu ograniczone uprawnieniami |
| GET | /meta/data_sources | Źródła, wymiary, miary i zapisane zapytania, z których można korzystać |
Co jest dostępne dziś, a co dalej
Pozycje z planu rozwoju są z założenia addytywne — nowe źródła danych, typy widżetów i usługi eksportu — więc żadna z nich nie będzie wymagać migracji. Są wymienione jako plan rozwoju, a nie jako funkcje, by mogli Państwo kupować na podstawie tego, co jest w pakiecie dziś.
| Możliwość | Status |
|---|---|
| Dashboardy: tworzenie, powielanie, ustawianie domyślnego, eksport i import | Dostępne |
| Siatka „przeciągnij i upuść” ze zmianą rozmiaru i automatycznym zapisem | Dostępne |
| KPI, tabela i pełny zestaw wykresów ECharts | Dostępne |
| Wizualna konfiguracja widżetów bez SQL | Dostępne |
| Ponowne użycie zapisanych zapytań i generowanie tablicy jednym kliknięciem | Dostępne |
| Filtry globalne odświeżające całą tablicę | Dostępne |
| Drążenie z wykresu do listy zgłoszeń | Dostępne |
| Agregacja SQL i buforowanie per użytkownik, ograniczone uprawnieniami | Dostępne |
| Udostępnianie, szablony, motywy jasny i ciemny | Dostępne |
| Wiele wersji, wiele baz danych, awaryjne renderowanie po stronie serwera | Dostępne |
| Eksport do PDF, PNG i Excela | Planowane |
| Zadania w tle dla bardzo ciężkich raportów | Planowane |
| Aktualizacje na żywo przez WebSocket | Planowane |
| Zaplanowane migawki wysyłane e-mailem | Planowane |
| Tryb kiosku / ekranu ściennego | Planowane |
| Kreator raportów AI w języku naturalnym | Planowane |
| Widżety kalendarza, burndown i podsumowania Gantta | Planowane |
Instalacja w trzech krokach
Wymaga dostępu do powłoki i możliwości uruchamiania zadań rake. Przed instalacją wtyczki zawsze należy wykonać kopię zapasową.
cd /path/to/redmine # unzip the package from your email or download link unzip redmine_charts-1.0.0.zip -d plugins/ bundle install
bundle exec rake redmine:plugins:migrate NAME=redmine_charts RAILS_ENV=production # optional: the built-in dashboard templates bundle exec rake redmine_charts:seed_templates RAILS_ENV=production touch tmp/restart.txt
# Project → Settings → Modules → Charts & Dashboards # then grant the dashboard permissions to the roles that need them # a Dashboards entry appears in the top menu for anyone who holds one
Czy wtyczka łata lub nadpisuje pliki rdzenia Redmine?
Czy do instalacji potrzebny jest Node.js lub krok budowania?
Czy moje istniejące zapisane zapytania zadziałają, także te skomplikowane?
Czy ktoś może zobaczyć liczby z projektu, do którego nie ma dostępu?
Które bazy danych są obsługiwane?
Na jakich wersjach Redmine i Rails działa?
Czy możemy dodać własne źródła danych lub typy wykresów?
Czego celowo nie ma w wersji 1.0?
Cennik
Jeden serwer
Jedna instancja Redmine · nielimitowana liczba użytkowników · 12 miesięcy aktualizacji.
Wiele serwerów
Nielimitowana liczba serwerów Redmine · nielimitowana liczba użytkowników · 12 miesięcy aktualizacji.
Potrzebują Państwo rozwiązania Redmine na zamówienie?
Szukają Państwo funkcji, której nie ma w naszych istniejących wtyczkach?
RedmineKit oferuje tworzenie wtyczek Redmine na zamówienie, dostosowywanie wtyczek, automatyzację procesów, integracje z systemami zewnętrznymi i rozwiązania dopasowane do Państwa firmy.
Prosimy opisać swoje potrzeby. Przeanalizujemy wymagania i zaproponujemy odpowiednie rozwiązanie wraz z szacunkowym kosztem i harmonogramem.