@konce-pt/angular 0.6.1 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +384 -0
- package/README.md +38 -19
- package/fesm2022/konce-pt-angular-charts.mjs +1409 -0
- package/fesm2022/konce-pt-angular-charts.mjs.map +1 -0
- package/fesm2022/konce-pt-angular-grid.mjs +232 -0
- package/{dist/fesm2022 → fesm2022}/konce-pt-angular-grid.mjs.map +1 -1
- package/fesm2022/konce-pt-angular-map.mjs +4568 -0
- package/fesm2022/konce-pt-angular-map.mjs.map +1 -0
- package/fesm2022/konce-pt-angular-roadmap.mjs +1919 -0
- package/fesm2022/konce-pt-angular-roadmap.mjs.map +1 -0
- package/fesm2022/konce-pt-angular.mjs +12307 -0
- package/fesm2022/konce-pt-angular.mjs.map +1 -0
- package/map/src/lib/llms.txt +741 -0
- package/package.json +44 -54
- package/roadmap/src/lib/llms.txt +112 -0
- package/src/lib/app-shell/llms.txt +89 -0
- package/src/lib/breakpoint/llms.txt +45 -0
- package/{dist/src → src}/lib/datepicker/llms.txt +3 -0
- package/src/lib/dialog/llms.txt +68 -0
- package/{dist/src → src}/lib/form-field/llms.txt +24 -1
- package/{dist/src → src}/lib/icon/llms.txt +2 -1
- package/{dist/src → src}/lib/input/llms.txt +14 -4
- package/src/lib/input-number/llms.txt +61 -0
- package/{dist/src → src}/lib/select/llms.txt +9 -0
- package/src/lib/sidenav/llms.txt +29 -0
- package/src/lib/toolbar/llms.txt +31 -0
- package/src/lib/tooltip/llms.txt +33 -0
- package/{dist/types → types}/konce-pt-angular-charts.d.ts +1 -0
- package/types/konce-pt-angular-charts.d.ts.map +1 -0
- package/{dist/types → types}/konce-pt-angular-grid.d.ts +1 -0
- package/types/konce-pt-angular-grid.d.ts.map +1 -0
- package/{dist/types → types}/konce-pt-angular-icons.d.ts +1 -0
- package/types/konce-pt-angular-icons.d.ts.map +1 -0
- package/types/konce-pt-angular-map.d.ts +1585 -0
- package/types/konce-pt-angular-map.d.ts.map +1 -0
- package/types/konce-pt-angular-roadmap.d.ts +649 -0
- package/types/konce-pt-angular-roadmap.d.ts.map +1 -0
- package/{dist/types → types}/konce-pt-angular.d.ts +373 -23
- package/types/konce-pt-angular.d.ts.map +1 -0
- package/dist/LICENSE +0 -21
- package/dist/README.md +0 -316
- package/dist/fesm2022/konce-pt-angular-charts.mjs +0 -957
- package/dist/fesm2022/konce-pt-angular-charts.mjs.map +0 -1
- package/dist/fesm2022/konce-pt-angular-grid.mjs +0 -218
- package/dist/fesm2022/konce-pt-angular.mjs +0 -8462
- package/dist/fesm2022/konce-pt-angular.mjs.map +0 -1
- package/dist/package.json +0 -79
- package/dist/src/lib/app-shell/llms.txt +0 -29
- package/dist/src/lib/dialog/llms.txt +0 -27
- package/dist/src/lib/input-number/llms.txt +0 -17
- package/dist/src/lib/sidenav/llms.txt +0 -20
- package/dist/src/lib/toolbar/llms.txt +0 -23
- package/dist/src/lib/tooltip/llms.txt +0 -19
- /package/{dist/charts → charts}/src/lib/llms.txt +0 -0
- /package/{dist/fesm2022 → fesm2022}/konce-pt-angular-icons.mjs +0 -0
- /package/{dist/fesm2022 → fesm2022}/konce-pt-angular-icons.mjs.map +0 -0
- /package/{dist/grid → grid}/src/lib/llms.txt +0 -0
- /package/{dist/src → src}/lib/accordion/llms.txt +0 -0
- /package/{dist/src → src}/lib/alert/llms.txt +0 -0
- /package/{dist/src → src}/lib/autocomplete/llms.txt +0 -0
- /package/{dist/src → src}/lib/avatar/llms.txt +0 -0
- /package/{dist/src → src}/lib/avatar-group/llms.txt +0 -0
- /package/{dist/src → src}/lib/badge/llms.txt +0 -0
- /package/{dist/src → src}/lib/bottom-sheet/llms.txt +0 -0
- /package/{dist/src → src}/lib/breadcrumb/llms.txt +0 -0
- /package/{dist/src → src}/lib/button/llms.txt +0 -0
- /package/{dist/src → src}/lib/button-group/llms.txt +0 -0
- /package/{dist/src → src}/lib/card/llms.txt +0 -0
- /package/{dist/src → src}/lib/carousel/llms.txt +0 -0
- /package/{dist/src → src}/lib/checkbox/llms.txt +0 -0
- /package/{dist/src → src}/lib/chip/llms.txt +0 -0
- /package/{dist/src → src}/lib/chips-input/llms.txt +0 -0
- /package/{dist/src → src}/lib/color-picker/llms.txt +0 -0
- /package/{dist/src → src}/lib/confirm/llms.txt +0 -0
- /package/{dist/src → src}/lib/context-menu/llms.txt +0 -0
- /package/{dist/src → src}/lib/data-table/llms.txt +0 -0
- /package/{dist/src → src}/lib/data-view/llms.txt +0 -0
- /package/{dist/src → src}/lib/date-range/llms.txt +0 -0
- /package/{dist/src → src}/lib/divider/llms.txt +0 -0
- /package/{dist/src → src}/lib/drawer/llms.txt +0 -0
- /package/{dist/src → src}/lib/empty/llms.txt +0 -0
- /package/{dist/src → src}/lib/fab/llms.txt +0 -0
- /package/{dist/src → src}/lib/fieldset/llms.txt +0 -0
- /package/{dist/src → src}/lib/file-upload/llms.txt +0 -0
- /package/{dist/src → src}/lib/galleria/llms.txt +0 -0
- /package/{dist/src → src}/lib/i18n/llms.txt +0 -0
- /package/{dist/src → src}/lib/icon-button/llms.txt +0 -0
- /package/{dist/src → src}/lib/image/llms.txt +0 -0
- /package/{dist/src → src}/lib/input-mask/llms.txt +0 -0
- /package/{dist/src → src}/lib/input-otp/llms.txt +0 -0
- /package/{dist/src → src}/lib/knob/llms.txt +0 -0
- /package/{dist/src → src}/lib/listbox/llms.txt +0 -0
- /package/{dist/src → src}/lib/megamenu/llms.txt +0 -0
- /package/{dist/src → src}/lib/menu/llms.txt +0 -0
- /package/{dist/src → src}/lib/menubar/llms.txt +0 -0
- /package/{dist/src → src}/lib/meter-group/llms.txt +0 -0
- /package/{dist/src → src}/lib/order-list/llms.txt +0 -0
- /package/{dist/src → src}/lib/paginator/llms.txt +0 -0
- /package/{dist/src → src}/lib/panel/llms.txt +0 -0
- /package/{dist/src → src}/lib/password/llms.txt +0 -0
- /package/{dist/src → src}/lib/pick-list/llms.txt +0 -0
- /package/{dist/src → src}/lib/popover/llms.txt +0 -0
- /package/{dist/src → src}/lib/progress/llms.txt +0 -0
- /package/{dist/src → src}/lib/radio-group/llms.txt +0 -0
- /package/{dist/src → src}/lib/rating/llms.txt +0 -0
- /package/{dist/src → src}/lib/rich-text/llms.txt +0 -0
- /package/{dist/src → src}/lib/scroll-top/llms.txt +0 -0
- /package/{dist/src → src}/lib/skeleton/llms.txt +0 -0
- /package/{dist/src → src}/lib/slider/llms.txt +0 -0
- /package/{dist/src → src}/lib/speed-dial/llms.txt +0 -0
- /package/{dist/src → src}/lib/spinner/llms.txt +0 -0
- /package/{dist/src → src}/lib/split-button/llms.txt +0 -0
- /package/{dist/src → src}/lib/splitter/llms.txt +0 -0
- /package/{dist/src → src}/lib/stepper/llms.txt +0 -0
- /package/{dist/src → src}/lib/switch/llms.txt +0 -0
- /package/{dist/src → src}/lib/switch-group/llms.txt +0 -0
- /package/{dist/src → src}/lib/tabs/llms.txt +0 -0
- /package/{dist/src → src}/lib/textarea/llms.txt +0 -0
- /package/{dist/src → src}/lib/timeline/llms.txt +0 -0
- /package/{dist/src → src}/lib/toast/llms.txt +0 -0
- /package/{dist/src → src}/lib/tree/llms.txt +0 -0
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
import * as _konce_pt_angular_roadmap from '@konce-pt/angular/roadmap';
|
|
2
|
+
import * as _angular_core from '@angular/core';
|
|
3
|
+
import { KptI18n } from '@konce-pt/angular';
|
|
4
|
+
|
|
5
|
+
/** Akceptowane formy daty na wejściu; rdzeń normalizuje je do epoch ms (czas LOKALNY). */
|
|
6
|
+
type KptDateInput = Date | number | string;
|
|
7
|
+
/** Poziom przybliżenia osi czasu. */
|
|
8
|
+
type KptRoadmapZoom = 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour';
|
|
9
|
+
/** Warianty kolorystyczne spójne z resztą biblioteki. */
|
|
10
|
+
type KptRoadmapVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';
|
|
11
|
+
/** Zamknięty przedział czasu w epoch ms. */
|
|
12
|
+
interface KptTimeRange {
|
|
13
|
+
/** Początek włącznie (ms). */
|
|
14
|
+
start: number;
|
|
15
|
+
/** Koniec wyłącznie (ms). */
|
|
16
|
+
end: number;
|
|
17
|
+
}
|
|
18
|
+
/** Punkt w układzie px overlaya SVG. */
|
|
19
|
+
interface KptRoadmapPoint {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
}
|
|
23
|
+
/** Prostokąt w px overlaya SVG. */
|
|
24
|
+
interface KptRoadmapRect {
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
width: number;
|
|
28
|
+
height: number;
|
|
29
|
+
}
|
|
30
|
+
/** Typ zależności wg konwencji zarządzania projektami. */
|
|
31
|
+
type KptRoadmapLinkType = 'FS' | 'SS' | 'FF' | 'SF';
|
|
32
|
+
/** Krawędź grafu zależności między dwoma itemami. */
|
|
33
|
+
interface KptRoadmapLink<TMeta = unknown> {
|
|
34
|
+
/** Stabilny klucz (trackBy); generowany z `from`/`to`/`type`, gdy brak. */
|
|
35
|
+
id?: string;
|
|
36
|
+
/** `id` itemu-poprzednika. */
|
|
37
|
+
from: string;
|
|
38
|
+
/** `id` itemu-następnika. */
|
|
39
|
+
to: string;
|
|
40
|
+
/** Domyślnie 'FS' (finish-to-start). */
|
|
41
|
+
type?: KptRoadmapLinkType;
|
|
42
|
+
/** Wyprzedzenie/opóźnienie w ms (ujemne = lead). Domyślnie 0. */
|
|
43
|
+
lag?: number;
|
|
44
|
+
variant?: KptRoadmapVariant;
|
|
45
|
+
color?: string;
|
|
46
|
+
meta?: TMeta;
|
|
47
|
+
}
|
|
48
|
+
/** Ograniczenia edycyjne — zarezerwowane pod drag&drop (v1 ich nie czyta). */
|
|
49
|
+
interface KptRoadmapConstraints {
|
|
50
|
+
/** Item nie może zacząć się wcześniej niż tu. */
|
|
51
|
+
minStart?: KptDateInput;
|
|
52
|
+
/** Item nie może skończyć się później niż tu. */
|
|
53
|
+
maxEnd?: KptDateInput;
|
|
54
|
+
/** Minimalny czas trwania w ms. */
|
|
55
|
+
minDurationMs?: number;
|
|
56
|
+
/** Przyciąganie do jednostki podczas przeciągania. */
|
|
57
|
+
snap?: KptRoadmapZoom | 'none';
|
|
58
|
+
}
|
|
59
|
+
/** Pojedynczy pasek / kamień milowy roadmapy. */
|
|
60
|
+
interface KptRoadmapItem<TMeta = unknown> {
|
|
61
|
+
/** Unikalny identyfikator (klucz trackBy i cel zależności). */
|
|
62
|
+
id: string;
|
|
63
|
+
/** Etykieta główna (kolumna sticky + wnętrze paska). */
|
|
64
|
+
label: string;
|
|
65
|
+
/** Etykieta pomocnicza (druga linia w kolumnie sticky). */
|
|
66
|
+
sublabel?: string;
|
|
67
|
+
/** Początek (czas lokalny). */
|
|
68
|
+
start: KptDateInput;
|
|
69
|
+
/** Koniec wyłącznie. Brak ⇒ kamień milowy (`end = start`). */
|
|
70
|
+
end?: KptDateInput;
|
|
71
|
+
/** Wymusza render jako romb, nawet gdy `end` podane. */
|
|
72
|
+
milestone?: boolean;
|
|
73
|
+
variant?: KptRoadmapVariant;
|
|
74
|
+
/** Dowolny kolor CSS — nadpisuje `variant`. */
|
|
75
|
+
color?: string;
|
|
76
|
+
/** Postęp 0..1; render jako wypełnienie wewnątrz paska. */
|
|
77
|
+
progress?: number;
|
|
78
|
+
/** Przynależność do grupy/swimlane. Brak ⇒ wiersz na poziomie 0. */
|
|
79
|
+
groupId?: string;
|
|
80
|
+
/** Zależności skrótowo: `string` = FS bez lagu. Scalane z `config.links`. */
|
|
81
|
+
dependsOn?: readonly (string | KptRoadmapLink)[];
|
|
82
|
+
/** Nazwa ikony (KptIconName) renderowana przed etykietą. */
|
|
83
|
+
icon?: string;
|
|
84
|
+
disabled?: boolean;
|
|
85
|
+
draggable?: boolean;
|
|
86
|
+
resizable?: boolean;
|
|
87
|
+
locked?: boolean;
|
|
88
|
+
constraints?: KptRoadmapConstraints;
|
|
89
|
+
/** Dane aplikacyjne przekazywane do szablonów i zdarzeń. */
|
|
90
|
+
meta?: TMeta;
|
|
91
|
+
}
|
|
92
|
+
/** Znormalizowany item — daty jako ms, wyliczone flagi. Wynik rdzenia. */
|
|
93
|
+
interface KptRoadmapNormalizedItem<TMeta = unknown> {
|
|
94
|
+
readonly source: KptRoadmapItem<TMeta>;
|
|
95
|
+
readonly id: string;
|
|
96
|
+
readonly start: number;
|
|
97
|
+
readonly end: number;
|
|
98
|
+
readonly isMilestone: boolean;
|
|
99
|
+
readonly durationMs: number;
|
|
100
|
+
}
|
|
101
|
+
/** Sposób wyliczania paska zbiorczego grupy. */
|
|
102
|
+
type KptRoadmapSummaryMode = 'auto' | 'none';
|
|
103
|
+
/** Grupa / swimlane. Może być zagnieżdżona przez `parentId`. */
|
|
104
|
+
interface KptRoadmapGroup<TMeta = unknown> {
|
|
105
|
+
id: string;
|
|
106
|
+
label: string;
|
|
107
|
+
sublabel?: string;
|
|
108
|
+
/** Grupa nadrzędna — API gotowe na drzewo; `depth` steruje wcięciem. */
|
|
109
|
+
parentId?: string;
|
|
110
|
+
/** Stan początkowy zwinięcia (dalej sterowany sygnałem komponentu). */
|
|
111
|
+
collapsed?: boolean;
|
|
112
|
+
variant?: KptRoadmapVariant;
|
|
113
|
+
color?: string;
|
|
114
|
+
/** 'auto' (domyślnie) = pasek od min(start) do max(end) potomków. */
|
|
115
|
+
summary?: KptRoadmapSummaryMode;
|
|
116
|
+
meta?: TMeta;
|
|
117
|
+
}
|
|
118
|
+
/** Okno godzin roboczych dla zoomu 'hour'. */
|
|
119
|
+
interface KptWorkHours {
|
|
120
|
+
/** Pierwsza godzina robocza włącznie, 0..23 (domyślnie 8). */
|
|
121
|
+
from: number;
|
|
122
|
+
/** Ostatnia godzina wyłącznie, 1..24 (domyślnie 18). */
|
|
123
|
+
to: number;
|
|
124
|
+
/**
|
|
125
|
+
* 'skip' — godziny poza oknem nie mają kolumn (oś się skraca) [domyślne],
|
|
126
|
+
* 'dim' — kolumny istnieją, dostają flagę `isNonWorking`.
|
|
127
|
+
*/
|
|
128
|
+
mode?: 'skip' | 'dim';
|
|
129
|
+
/** Czy pomijać także całe dni weekendowe (domyślnie true przy mode='skip'). */
|
|
130
|
+
skipWeekends?: boolean;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Sposób odwzorowania czasu na pozycję.
|
|
134
|
+
* 'uniform' — każda kolumna ma równą szerokość, wewnątrz interpolacja liniowa po ms.
|
|
135
|
+
* Doba po zmianie czasu (23/25 h) i luty nie są węższe od sąsiadów.
|
|
136
|
+
* 'linear' — czysto liniowo (start..end → 0..1); kolumny wtedy nierówne.
|
|
137
|
+
*/
|
|
138
|
+
type KptRoadmapPositionMode = 'uniform' | 'linear';
|
|
139
|
+
interface KptTimelineOptions {
|
|
140
|
+
/** BCP-47 dla `Intl`. Domyślnie locale z KptI18n. */
|
|
141
|
+
locale?: string;
|
|
142
|
+
/** „Dziś" — wstrzykiwalne dla testów i SSR. Domyślnie `new Date()`. */
|
|
143
|
+
today?: KptDateInput;
|
|
144
|
+
/** Dni weekendu wg `Date#getDay()`. Domyślnie `[0, 6]`. */
|
|
145
|
+
weekendDays?: readonly number[];
|
|
146
|
+
/** Godziny robocze — tylko przy `zoom: 'hour'`. */
|
|
147
|
+
workHours?: KptWorkHours;
|
|
148
|
+
/** Jednostka górnego poziomu nagłówka. Brak ⇒ domyślna dla zoomu. */
|
|
149
|
+
bandUnit?: KptRoadmapZoom | 'none';
|
|
150
|
+
/**
|
|
151
|
+
* Prefiks numeru tygodnia (domyślnie 'W').
|
|
152
|
+
* Rdzeń nie zna warstwy i18n — komponent podaje tu wartość z KptI18n.
|
|
153
|
+
*/
|
|
154
|
+
weekPrefix?: string;
|
|
155
|
+
/** Domyślnie 'uniform'. */
|
|
156
|
+
positionMode?: KptRoadmapPositionMode;
|
|
157
|
+
/** Bezpiecznik przed eksplozją liczby kolumn. Domyślnie 4000. */
|
|
158
|
+
maxCells?: number;
|
|
159
|
+
}
|
|
160
|
+
type KptRoadmapRowMode = 'row-per-item' | 'pack';
|
|
161
|
+
interface KptRoadmapRowOptions {
|
|
162
|
+
/** 'row-per-item' (domyślnie) lub 'pack' (kilka itemów w jednym wierszu). */
|
|
163
|
+
mode?: KptRoadmapRowMode;
|
|
164
|
+
/** Wysokość wiersza itemu w px. Domyślnie 44. */
|
|
165
|
+
itemHeight?: number;
|
|
166
|
+
/** Wysokość wiersza nagłówka grupy w px. Domyślnie 38. */
|
|
167
|
+
groupHeight?: number;
|
|
168
|
+
/** Wysokość jednego pasa w trybie 'pack'. Domyślnie 28. */
|
|
169
|
+
laneHeight?: number;
|
|
170
|
+
/** Minimalny odstęp między itemami w tym samym pasie (ms). Domyślnie 0. */
|
|
171
|
+
packMinGapMs?: number;
|
|
172
|
+
/** Czy pokazywać wiersz nagłówka dla itemów bez `groupId`. Domyślnie false. */
|
|
173
|
+
showUngroupedHeader?: boolean;
|
|
174
|
+
/** Etykieta pseudo-grupy dla itemów bez `groupId`. */
|
|
175
|
+
ungroupedLabel?: string;
|
|
176
|
+
}
|
|
177
|
+
interface KptRoadmapDependencyOptions {
|
|
178
|
+
/** Czy rysować overlay zależności. Domyślnie true. */
|
|
179
|
+
enabled?: boolean;
|
|
180
|
+
/** Długość wąsa wychodzącego z paska w px. Domyślnie 12. */
|
|
181
|
+
stub?: number;
|
|
182
|
+
/** Promień zaokrąglenia narożników łamanej w px. Domyślnie 6. */
|
|
183
|
+
cornerRadius?: number;
|
|
184
|
+
/** Rozmiar grotu strzałki w px. Domyślnie 6. */
|
|
185
|
+
arrowSize?: number;
|
|
186
|
+
/** Podświetlać zależności naruszone (następnik startuje za wcześnie). Domyślnie true. */
|
|
187
|
+
highlightViolations?: boolean;
|
|
188
|
+
}
|
|
189
|
+
/** Zarezerwowane pod v2 (drag&drop, resize, inline edit). W v1 ignorowane. */
|
|
190
|
+
interface KptRoadmapInteractionOptions {
|
|
191
|
+
selectable?: boolean;
|
|
192
|
+
draggable?: boolean;
|
|
193
|
+
resizable?: boolean;
|
|
194
|
+
linkable?: boolean;
|
|
195
|
+
snap?: KptRoadmapZoom | 'none';
|
|
196
|
+
}
|
|
197
|
+
/** Pełna konfiguracja roadmapy — jeden obiekt wejściowy komponentu. */
|
|
198
|
+
interface KptRoadmapConfig<TItem = unknown, TGroup = unknown> {
|
|
199
|
+
items: readonly KptRoadmapItem<TItem>[];
|
|
200
|
+
groups?: readonly KptRoadmapGroup<TGroup>[];
|
|
201
|
+
/** Zależności podane grafowo (alternatywa/uzupełnienie `item.dependsOn`). */
|
|
202
|
+
links?: readonly KptRoadmapLink[];
|
|
203
|
+
/** Domyślnie 'week'. */
|
|
204
|
+
zoom?: KptRoadmapZoom;
|
|
205
|
+
/** Zakres osi. Częściowy ⇒ brakujący kraniec z `autoRange`. Brak ⇒ cały `autoRange`. */
|
|
206
|
+
range?: Partial<KptTimeRange>;
|
|
207
|
+
locale?: string;
|
|
208
|
+
today?: KptDateInput;
|
|
209
|
+
timeline?: KptTimelineOptions;
|
|
210
|
+
rows?: KptRoadmapRowOptions;
|
|
211
|
+
dependencies?: KptRoadmapDependencyOptions;
|
|
212
|
+
interaction?: KptRoadmapInteractionOptions;
|
|
213
|
+
}
|
|
214
|
+
/** Rodzaj zmiany zgłaszanej przez interakcję (zdefiniowany w v1, emitowany od v2). */
|
|
215
|
+
type KptRoadmapChangeKind = 'move' | 'resize-start' | 'resize-end' | 'link-add' | 'link-remove';
|
|
216
|
+
/** Ładunek zdarzenia edycji — stabilny kontrakt na przyszłość. */
|
|
217
|
+
interface KptRoadmapChange<TMeta = unknown> {
|
|
218
|
+
kind: KptRoadmapChangeKind;
|
|
219
|
+
item: KptRoadmapItem<TMeta>;
|
|
220
|
+
/** Poprzednie wartości (ms). */
|
|
221
|
+
previous: KptTimeRange;
|
|
222
|
+
/** Nowe wartości (ms). */
|
|
223
|
+
next: KptTimeRange;
|
|
224
|
+
/** Dla 'link-add' / 'link-remove'. */
|
|
225
|
+
link?: KptRoadmapLink;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
type KptRoadmapRowKind = 'group' | 'item';
|
|
229
|
+
/** Item osadzony w konkretnym wierszu i pasie. */
|
|
230
|
+
interface KptRoadmapPlacedItem<TMeta = unknown> extends KptRoadmapNormalizedItem<TMeta> {
|
|
231
|
+
/** Indeks pasa w obrębie wiersza (0 przy trybie 'row-per-item'). */
|
|
232
|
+
lane: number;
|
|
233
|
+
rowKey: string;
|
|
234
|
+
}
|
|
235
|
+
/** Wyliczony agregat grupy. */
|
|
236
|
+
interface KptRoadmapGroupState {
|
|
237
|
+
collapsed: boolean;
|
|
238
|
+
/** Liczba itemów należących do grupy. */
|
|
239
|
+
itemCount: number;
|
|
240
|
+
/** Zakres zbiorczy (null, gdy grupa pusta). */
|
|
241
|
+
span: KptTimeRange | null;
|
|
242
|
+
/** Postęp ważony czasem trwania, 0..1 (null, gdy żaden item go nie podaje). */
|
|
243
|
+
progress: number | null;
|
|
244
|
+
}
|
|
245
|
+
/** Wiersz renderowalny — jednostka wirtualizacji. */
|
|
246
|
+
interface KptRoadmapRow<TItem = unknown, TGroup = unknown> {
|
|
247
|
+
key: string;
|
|
248
|
+
kind: KptRoadmapRowKind;
|
|
249
|
+
/** Indeks w spłaszczonej liście widocznych wierszy. */
|
|
250
|
+
index: number;
|
|
251
|
+
/** Poziom zagnieżdżenia — wcięcie w kolumnie etykiet. */
|
|
252
|
+
depth: number;
|
|
253
|
+
/** Offset od góry w px (skumulowany). */
|
|
254
|
+
top: number;
|
|
255
|
+
height: number;
|
|
256
|
+
/** Liczba pasów (>1 tylko w trybie 'pack'). */
|
|
257
|
+
laneCount: number;
|
|
258
|
+
/** Wypełnione dla `kind === 'group'`. */
|
|
259
|
+
group?: KptRoadmapGroup<TGroup>;
|
|
260
|
+
groupState?: KptRoadmapGroupState;
|
|
261
|
+
/** Wypełnione dla `kind === 'item'`. */
|
|
262
|
+
items: readonly KptRoadmapPlacedItem<TItem>[];
|
|
263
|
+
}
|
|
264
|
+
/** Wpis odrzucony przy normalizacji — do ostrzeżeń w trybie deweloperskim. */
|
|
265
|
+
interface KptRoadmapInvalidItem {
|
|
266
|
+
id: string;
|
|
267
|
+
reason: string;
|
|
268
|
+
}
|
|
269
|
+
interface KptRoadmapLayout<TItem = unknown, TGroup = unknown> {
|
|
270
|
+
rows: readonly KptRoadmapRow<TItem, TGroup>[];
|
|
271
|
+
/** Łączna wysokość w px. */
|
|
272
|
+
totalHeight: number;
|
|
273
|
+
/** Wszystkie znormalizowane itemy po `id` — także te w zwiniętych grupach. */
|
|
274
|
+
byId: ReadonlyMap<string, KptRoadmapNormalizedItem<TItem>>;
|
|
275
|
+
/** Mapa `itemId → rowKey` dla itemów widocznych. */
|
|
276
|
+
rowOfItem: ReadonlyMap<string, string>;
|
|
277
|
+
/** Itemy odrzucone (zła data, duplikat `id`). */
|
|
278
|
+
invalid: readonly KptRoadmapInvalidItem[];
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Normalizuje itemy: daty na ms, brak `end` oznacza kamień milowy.
|
|
282
|
+
* Odrzuca wpisy z nieparsowalną datą oraz duplikaty `id`.
|
|
283
|
+
*/
|
|
284
|
+
declare function normalizeItems<T>(items: readonly KptRoadmapItem<T>[]): {
|
|
285
|
+
valid: KptRoadmapNormalizedItem<T>[];
|
|
286
|
+
invalid: KptRoadmapInvalidItem[];
|
|
287
|
+
};
|
|
288
|
+
/** Zakres zbiorczy listy itemów: min(start)…max(end). */
|
|
289
|
+
declare function spanOf(items: readonly KptRoadmapNormalizedItem[]): KptTimeRange | null;
|
|
290
|
+
/**
|
|
291
|
+
* Postęp grupy ważony czasem trwania.
|
|
292
|
+
* Kamienie milowe mają zerową długość, więc liczymy je z wagą 1.
|
|
293
|
+
*/
|
|
294
|
+
declare function rollupProgress(items: readonly KptRoadmapNormalizedItem[]): number | null;
|
|
295
|
+
/**
|
|
296
|
+
* Zachłanne przydzielanie pasów (interval partitioning).
|
|
297
|
+
* Itemy sortujemy po czasie startu i wkładamy do pierwszego pasa, w którym
|
|
298
|
+
* poprzednie zadanie zdążyło się skończyć. Zwraca liczbę użytych pasów.
|
|
299
|
+
*/
|
|
300
|
+
declare function packLanes(items: KptRoadmapPlacedItem[], minGapMs?: number): number;
|
|
301
|
+
/**
|
|
302
|
+
* Spłaszcza grupy i itemy do listy wierszy renderowalnych.
|
|
303
|
+
*
|
|
304
|
+
* Kolejność: grupy w kolejności podanej przez użytkownika, wewnątrz itemy
|
|
305
|
+
* posortowane po czasie startu, na końcu itemy bez `groupId`. Zwinięta grupa
|
|
306
|
+
* nie emituje wierszy potomnych, ale jej zakres zbiorczy nadal obejmuje dzieci.
|
|
307
|
+
*
|
|
308
|
+
* @param collapsed zbiór `id` grup zwiniętych (stan trzymany w sygnale komponentu)
|
|
309
|
+
*/
|
|
310
|
+
declare function buildRows<TItem, TGroup>(items: readonly KptRoadmapItem<TItem>[], groups: readonly KptRoadmapGroup<TGroup>[] | undefined, collapsed: ReadonlySet<string>, opts?: KptRoadmapRowOptions): KptRoadmapLayout<TItem, TGroup>;
|
|
311
|
+
/**
|
|
312
|
+
* Wycinek wierszy widocznych w oknie przewijania.
|
|
313
|
+
* Szuka binarnie po skumulowanym `top`, więc działa także dla wierszy
|
|
314
|
+
* o różnej wysokości (tryb 'pack').
|
|
315
|
+
*/
|
|
316
|
+
declare function sliceRows<TItem, TGroup>(layout: KptRoadmapLayout<TItem, TGroup>, scrollTop: number, viewportHeight: number, buffer?: number): {
|
|
317
|
+
rows: readonly KptRoadmapRow<TItem, TGroup>[];
|
|
318
|
+
startIndex: number;
|
|
319
|
+
endIndex: number;
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
/** Pasek w układzie px overlaya wraz z czasem — czas służy do detekcji naruszeń. */
|
|
323
|
+
interface KptLinkEndpoint {
|
|
324
|
+
id: string;
|
|
325
|
+
rect: KptRoadmapRect;
|
|
326
|
+
startTs: number;
|
|
327
|
+
endTs: number;
|
|
328
|
+
}
|
|
329
|
+
interface KptLinkGeom {
|
|
330
|
+
key: string;
|
|
331
|
+
from: string;
|
|
332
|
+
to: string;
|
|
333
|
+
type: KptRoadmapLinkType;
|
|
334
|
+
/** Ścieżka `d` łamanej z zaokrąglonymi narożnikami. */
|
|
335
|
+
path: string;
|
|
336
|
+
/** Ścieżka grotu strzałki (trójkąt domknięty przez `Z`). */
|
|
337
|
+
arrow: string;
|
|
338
|
+
variant?: KptRoadmapVariant;
|
|
339
|
+
color?: string;
|
|
340
|
+
/** Następnik startuje wcześniej, niż pozwala zależność (z uwzględnieniem `lag`). */
|
|
341
|
+
isViolated: boolean;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Scala zależności z `item.dependsOn` (skrót oznacza typ 'FS' bez lagu)
|
|
345
|
+
* z listą `config.links`, odrzuca krawędzie wiszące i wykrywa cykle.
|
|
346
|
+
*/
|
|
347
|
+
declare function resolveLinks(items: readonly KptRoadmapNormalizedItem[], links: readonly KptRoadmapLink[] | undefined): {
|
|
348
|
+
links: KptRoadmapLink[];
|
|
349
|
+
cycles: string[][];
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* Łamana ortogonalna z zaokrąglonymi narożnikami.
|
|
353
|
+
* Narożnik rysujemy krzywą kwadratową — dla kąta prostego wygląda jak łuk,
|
|
354
|
+
* a ścieżka jest o połowę krótsza. Promień przycinamy do połowy krótszego
|
|
355
|
+
* z sąsiednich odcinków, żeby ciasne zakręty nie tworzyły pętli.
|
|
356
|
+
*/
|
|
357
|
+
declare function roundedPolyline(points: readonly KptRoadmapPoint[], radius: number): string;
|
|
358
|
+
/** Grot strzałki w punkcie `point`, skierowany zgodnie z `direction`. */
|
|
359
|
+
declare function arrowHead(point: KptRoadmapPoint, direction: 'left' | 'right', size: number): string;
|
|
360
|
+
/**
|
|
361
|
+
* Geometria pojedynczej zależności.
|
|
362
|
+
* Zwraca `null`, gdy któryś koniec nie jest widoczny (zwinięta grupa albo
|
|
363
|
+
* wiersz poza oknem wirtualizacji).
|
|
364
|
+
*/
|
|
365
|
+
declare function linkGeometry(link: KptRoadmapLink, source: KptLinkEndpoint | undefined, target: KptLinkEndpoint | undefined, opts?: KptRoadmapDependencyOptions): KptLinkGeom | null;
|
|
366
|
+
|
|
367
|
+
/** Pojedyncza kolumna dolnego poziomu nagłówka i linii siatki. */
|
|
368
|
+
interface KptTimelineCell {
|
|
369
|
+
/** Indeks w `cells` (0-based) — podstawa skali 'uniform'. */
|
|
370
|
+
index: number;
|
|
371
|
+
/** Klucz trackBy. */
|
|
372
|
+
key: string;
|
|
373
|
+
/** Początek jednostki (ms, lokalny). */
|
|
374
|
+
start: number;
|
|
375
|
+
/** Początek następnej jednostki (ms, wyłącznie). Uwzględnia doby 23/25 h. */
|
|
376
|
+
end: number;
|
|
377
|
+
/** Etykieta dolnego poziomu, np. '35', '24', '09:00'. */
|
|
378
|
+
label: string;
|
|
379
|
+
/** Podpis pod etykietą, np. '24.08–30.08' albo 'pon'. */
|
|
380
|
+
sublabel?: string;
|
|
381
|
+
/** Pełny opis do atrybutu `title`. */
|
|
382
|
+
title: string;
|
|
383
|
+
/** Lewa krawędź 0..1. */
|
|
384
|
+
ratioStart: number;
|
|
385
|
+
/** Prawa krawędź 0..1. */
|
|
386
|
+
ratioEnd: number;
|
|
387
|
+
isToday: boolean;
|
|
388
|
+
isWeekend: boolean;
|
|
389
|
+
/** Poza oknem godzin roboczych (tylko `workHours.mode === 'dim'`). */
|
|
390
|
+
isNonWorking: boolean;
|
|
391
|
+
isMonthBoundary: boolean;
|
|
392
|
+
isQuarterBoundary: boolean;
|
|
393
|
+
isYearBoundary: boolean;
|
|
394
|
+
/** Przed tą kolumną wycięto zakres (`workHours.mode === 'skip'`). */
|
|
395
|
+
hasGapBefore: boolean;
|
|
396
|
+
}
|
|
397
|
+
/** Grupa kolumn tworząca górny poziom nagłówka (np. miesiąc nad tygodniami). */
|
|
398
|
+
interface KptTimelineBand {
|
|
399
|
+
key: string;
|
|
400
|
+
start: number;
|
|
401
|
+
end: number;
|
|
402
|
+
/** Indeks pierwszej i ostatniej obejmowanej kolumny (włącznie). */
|
|
403
|
+
fromIndex: number;
|
|
404
|
+
toIndex: number;
|
|
405
|
+
/** Liczba obejmowanych kolumn. */
|
|
406
|
+
span: number;
|
|
407
|
+
ratioStart: number;
|
|
408
|
+
ratioEnd: number;
|
|
409
|
+
/** Etykieta główna, np. 'sierpień'. */
|
|
410
|
+
label: string;
|
|
411
|
+
/** Etykieta pomocnicza, np. '2026'. */
|
|
412
|
+
sublabel?: string;
|
|
413
|
+
/** Pierwsze pasmo danego roku — nośnik czarnego znacznika roku. */
|
|
414
|
+
isYearStart: boolean;
|
|
415
|
+
/** Rok do znacznika; ustawiony tylko gdy `isYearStart`. */
|
|
416
|
+
yearBadge?: string;
|
|
417
|
+
}
|
|
418
|
+
/** Geometria paska na osi (wartości 0..1). */
|
|
419
|
+
interface KptSpanGeom {
|
|
420
|
+
left: number;
|
|
421
|
+
width: number;
|
|
422
|
+
/** Item zaczyna się przed lewą krawędzią zakresu. */
|
|
423
|
+
clippedStart: boolean;
|
|
424
|
+
/** Item kończy się za prawą krawędzią zakresu. */
|
|
425
|
+
clippedEnd: boolean;
|
|
426
|
+
/** Czy jakakolwiek część mieści się w zakresie. */
|
|
427
|
+
visible: boolean;
|
|
428
|
+
}
|
|
429
|
+
/** Niemutowalny model osi czasu — wynik `buildTimeline`. */
|
|
430
|
+
interface KptTimelineModel {
|
|
431
|
+
zoom: KptRoadmapZoom;
|
|
432
|
+
range: KptTimeRange;
|
|
433
|
+
positionMode: KptRoadmapPositionMode;
|
|
434
|
+
cells: readonly KptTimelineCell[];
|
|
435
|
+
bands: readonly KptTimelineBand[];
|
|
436
|
+
/** Czy górny poziom nagłówka istnieje. */
|
|
437
|
+
hasBands: boolean;
|
|
438
|
+
/** Pozycja „dziś" 0..1 albo null, gdy poza zakresem. */
|
|
439
|
+
todayRatio: number | null;
|
|
440
|
+
/** Czas → pozycja 0..1 (monotoniczna, clampowana do zakresu). */
|
|
441
|
+
toRatio(timestamp: number): number;
|
|
442
|
+
/** Pozycja 0..1 → czas (odwrotność `toRatio`; podstawa pod drag&drop). */
|
|
443
|
+
fromRatio(ratio: number): number;
|
|
444
|
+
/** Geometria przedziału wraz z informacją o przycięciu. */
|
|
445
|
+
span(startTs: number, endTs: number): KptSpanGeom;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Buduje model osi czasu: kolumny, pasma nagłówka i skalę.
|
|
449
|
+
* Wszystkie obliczenia w czasie LOKALNYM przeglądarki.
|
|
450
|
+
*
|
|
451
|
+
* @param range zakres osi w ms — zwykle wynik `resolveRange`
|
|
452
|
+
* @param zoom poziom przybliżenia
|
|
453
|
+
* @param opts locale, „dziś", weekendy, godziny robocze, tryb pozycjonowania
|
|
454
|
+
*/
|
|
455
|
+
declare function buildTimeline(range: KptTimeRange, zoom: KptRoadmapZoom, opts?: KptTimelineOptions): KptTimelineModel;
|
|
456
|
+
|
|
457
|
+
/** Pasek gotowy do związania w szablonie. */
|
|
458
|
+
interface BarVm<TMeta = unknown> {
|
|
459
|
+
item: KptRoadmapPlacedItem<TMeta>;
|
|
460
|
+
/** Pozycja i szerokość w procentach szerokości toru. */
|
|
461
|
+
left: number;
|
|
462
|
+
width: number;
|
|
463
|
+
/** Offset pionowy wewnątrz wiersza (px). */
|
|
464
|
+
top: number;
|
|
465
|
+
height: number;
|
|
466
|
+
label: string;
|
|
467
|
+
title: string;
|
|
468
|
+
variant: string;
|
|
469
|
+
color?: string;
|
|
470
|
+
progress: number | null;
|
|
471
|
+
isMilestone: boolean;
|
|
472
|
+
clippedStart: boolean;
|
|
473
|
+
clippedEnd: boolean;
|
|
474
|
+
}
|
|
475
|
+
/** Pasek zbiorczy grupy. */
|
|
476
|
+
interface SummaryVm {
|
|
477
|
+
left: number;
|
|
478
|
+
width: number;
|
|
479
|
+
variant: string;
|
|
480
|
+
color?: string;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Roadmapa — wiersze zadań na poziomej osi czasu (widok typu Gantt).
|
|
484
|
+
*
|
|
485
|
+
* Układ opiera się na DOM i `position: sticky` (kolumna etykiet oraz nagłówek),
|
|
486
|
+
* paski są pozycjonowane procentowo w torze, a zależności rysuje warstwa SVG
|
|
487
|
+
* rozpięta nad torami. Cała geometria pochodzi z rdzenia w `../core`.
|
|
488
|
+
*/
|
|
489
|
+
declare class KptRoadmap<TItem = unknown, TGroup = unknown> {
|
|
490
|
+
protected readonly i18n: KptI18n;
|
|
491
|
+
/** Pełna konfiguracja: dane, zoom, zakres i opcje. */
|
|
492
|
+
readonly config: _angular_core.InputSignal<KptRoadmapConfig<TItem, TGroup>>;
|
|
493
|
+
/** Stała wysokość obszaru przewijania (np. '420px'). Włącza przyklejony nagłówek. */
|
|
494
|
+
readonly scrollHeight: _angular_core.InputSignal<string | null>;
|
|
495
|
+
/** Szerokość kolumny etykiet. */
|
|
496
|
+
readonly labelWidth: _angular_core.InputSignal<string>;
|
|
497
|
+
/** Szerokość kolumny osi czasu; brak ⇒ wartość zależna od zoomu. */
|
|
498
|
+
readonly cellWidthPx: _angular_core.InputSignal<number | null>;
|
|
499
|
+
/** Znacznik „dziś". */
|
|
500
|
+
readonly showToday: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
501
|
+
/** Renderowanie tylko widocznych wierszy. Warto włączyć od ~100 wierszy. */
|
|
502
|
+
readonly virtual: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
503
|
+
/** Zwinięte grupy (dwukierunkowe). */
|
|
504
|
+
readonly collapsedGroups: _angular_core.ModelSignal<string[]>;
|
|
505
|
+
/**
|
|
506
|
+
* Grupy zwinięte na starcie przez `group.collapsed`. Trzymamy je osobno od modelu,
|
|
507
|
+
* żeby dwukierunkowe wiązanie pozostało w rękach aplikacji, a zwinięcie zadeklarowane
|
|
508
|
+
* w danych nadal działało. Resetuje się, gdy zmieni się lista grup.
|
|
509
|
+
*/
|
|
510
|
+
private readonly collapsedFromConfig;
|
|
511
|
+
/** Suma obu źródeł — stan faktycznie użyty do budowy wierszy. */
|
|
512
|
+
private readonly collapsedIds;
|
|
513
|
+
readonly itemClick: _angular_core.OutputEmitterRef<KptRoadmapItem<TItem>>;
|
|
514
|
+
/** Emitowane przy każdej zmianie wyliczonego zakresu osi. */
|
|
515
|
+
readonly rangeChange: _angular_core.OutputEmitterRef<KptTimeRange>;
|
|
516
|
+
private readonly scrollEl;
|
|
517
|
+
private readonly laneEl;
|
|
518
|
+
protected readonly scrollTop: _angular_core.WritableSignal<number>;
|
|
519
|
+
protected readonly viewportHeight: _angular_core.WritableSignal<number>;
|
|
520
|
+
/** Szerokość toru w px — potrzebna warstwie SVG, która pracuje w pikselach. */
|
|
521
|
+
protected readonly laneWidth: _angular_core.WritableSignal<number>;
|
|
522
|
+
protected readonly zoom: _angular_core.Signal<KptRoadmapZoom>;
|
|
523
|
+
protected readonly cellWidth: _angular_core.Signal<number>;
|
|
524
|
+
protected readonly range: _angular_core.Signal<KptTimeRange>;
|
|
525
|
+
protected readonly timeline: _angular_core.Signal<KptTimelineModel>;
|
|
526
|
+
protected readonly layout: _angular_core.Signal<_konce_pt_angular_roadmap.KptRoadmapLayout<TItem, TGroup>>;
|
|
527
|
+
/** Wiersze faktycznie renderowane — całość albo okno wirtualizacji. */
|
|
528
|
+
protected readonly visibleRows: _angular_core.Signal<readonly KptRoadmapRow<TItem, TGroup>[]>;
|
|
529
|
+
protected readonly isEmpty: _angular_core.Signal<boolean>;
|
|
530
|
+
private readonly barHeight;
|
|
531
|
+
constructor();
|
|
532
|
+
protected onScroll(event: Event): void;
|
|
533
|
+
/** Wysokość paska wraz z odstępem — wspólna dla widoku i geometrii zależności. */
|
|
534
|
+
private laneStep;
|
|
535
|
+
/** Offset pionowy paska wewnątrz wiersza (px). */
|
|
536
|
+
private barTop;
|
|
537
|
+
/** Paski danego wiersza gotowe do renderu. */
|
|
538
|
+
protected bars(row: KptRoadmapRow<TItem, TGroup>): BarVm<TItem>[];
|
|
539
|
+
/** Pasek zbiorczy wiersza grupy. */
|
|
540
|
+
protected summary(row: KptRoadmapRow<TItem, TGroup>): SummaryVm | null;
|
|
541
|
+
/**
|
|
542
|
+
* Geometria zależności w pikselach.
|
|
543
|
+
* Liczona dopiero po zmierzeniu toru; wiersze poza oknem wirtualizacji
|
|
544
|
+
* nie mają końców, więc ich krawędzie są pomijane.
|
|
545
|
+
*/
|
|
546
|
+
protected readonly links: _angular_core.Signal<readonly KptLinkGeom[]>;
|
|
547
|
+
protected toggleGroup(group: KptRoadmapGroup<TGroup>): void;
|
|
548
|
+
protected onItemClick(item: KptRoadmapPlacedItem<TItem>): void;
|
|
549
|
+
/** Obsługa klawiatury na pasku — Enter/Spacja działają jak kliknięcie. */
|
|
550
|
+
protected onItemKeydown(event: KeyboardEvent, item: KptRoadmapPlacedItem<TItem>): void;
|
|
551
|
+
/**
|
|
552
|
+
* Treść dymka dla kolumny etykiet. Pusta tam, gdzie dymek nie miałby czego
|
|
553
|
+
* uzupełnić — dyrektywa pomija wtedy podpowiedź.
|
|
554
|
+
*/
|
|
555
|
+
protected labelTooltip(row: KptRoadmapRow<TItem, TGroup>): string;
|
|
556
|
+
protected isCollapsed(group: KptRoadmapGroup<TGroup> | undefined): boolean;
|
|
557
|
+
protected trackRow: (_: number, row: KptRoadmapRow<TItem, TGroup>) => string;
|
|
558
|
+
protected trackBar: (_: number, bar: BarVm<TItem>) => string;
|
|
559
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRoadmap<any, any>, never>;
|
|
560
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptRoadmap<any, any>, "kpt-roadmap", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "cellWidthPx": { "alias": "cellWidthPx"; "required": false; "isSignal": true; }; "showToday": { "alias": "showToday"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "collapsedGroups": { "alias": "collapsedGroups"; "required": false; "isSignal": true; }; }, { "collapsedGroups": "collapsedGroupsChange"; "itemClick": "itemClick"; "rangeChange": "rangeChange"; }, never, never, true, never>;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
interface KptAutoRangeOptions {
|
|
564
|
+
zoom: KptRoadmapZoom;
|
|
565
|
+
/** Margines po obu stronach w jednostkach zoomu. */
|
|
566
|
+
padUnits?: number;
|
|
567
|
+
/** Minimalna szerokość osi w jednostkach zoomu. */
|
|
568
|
+
minUnits?: number;
|
|
569
|
+
/** Czy zakres ma zawsze obejmować „dziś". Domyślnie true. */
|
|
570
|
+
includeToday?: boolean;
|
|
571
|
+
today?: number;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Zakres osi wyliczony z danych: min(start)…max(end) powiększony o margines
|
|
575
|
+
* i wyrównany do granic jednostki zoomu.
|
|
576
|
+
* Dla pustej listy zwraca okno wokół „dziś" o szerokości `minUnits`.
|
|
577
|
+
*/
|
|
578
|
+
declare function autoRange(items: readonly KptRoadmapItem[], opts: KptAutoRangeOptions): KptTimeRange;
|
|
579
|
+
/**
|
|
580
|
+
* Ostateczny zakres osi. `config.range` ma priorytet, a brakujący kraniec
|
|
581
|
+
* uzupełniamy z `autoRange`. Wynik zawsze leży na granicach jednostki zoomu.
|
|
582
|
+
*/
|
|
583
|
+
declare function resolveRange(config: Pick<KptRoadmapConfig, 'range' | 'zoom' | 'today' | 'timeline'>, items: readonly (KptRoadmapItem | KptRoadmapNormalizedItem)[]): KptTimeRange;
|
|
584
|
+
|
|
585
|
+
/** Normalizuje dowolne wejście daty do epoch ms. Zwraca NaN dla wartości nieparsowalnych. */
|
|
586
|
+
declare function toTimestamp(value: KptDateInput): number;
|
|
587
|
+
/**
|
|
588
|
+
* Początek lokalnej doby.
|
|
589
|
+
*
|
|
590
|
+
* Guard: w strefach, gdzie przejście DST wypada o północy (np. America/Santiago),
|
|
591
|
+
* `setHours(0, …)` potrafi wylądować w dobie poprzedniej — wtedy korygujemy
|
|
592
|
+
* o jedną dobę w przód.
|
|
593
|
+
*/
|
|
594
|
+
declare function startOfDay(date: Date): Date;
|
|
595
|
+
/** Dodaje `n` dób kalendarzowych, zachowując godzinę ścienną (DST-safe). */
|
|
596
|
+
declare function addDays(date: Date, n: number): Date;
|
|
597
|
+
/** Dodaje `n` godzin ściennych. Godzina nieistniejąca (wiosna) normalizuje się w przód. */
|
|
598
|
+
declare function addHours(date: Date, n: number): Date;
|
|
599
|
+
/** Liczba dni w miesiącu (`month` 0-indeksowany). */
|
|
600
|
+
declare function daysInMonth(year: number, month: number): number;
|
|
601
|
+
/** Dodaje `n` miesięcy z przycięciem dnia (31 stycznia + 1 miesiąc = 28/29 lutego). */
|
|
602
|
+
declare function addMonths(date: Date, n: number): Date;
|
|
603
|
+
/**
|
|
604
|
+
* Różnica w pełnych dobach kalendarzowych.
|
|
605
|
+
* `Math.round` jest konieczny: doba DST ma 23 h (0.958) albo 25 h (1.042),
|
|
606
|
+
* więc `Math.floor` gubiłby jeden dzień dwa razy w roku.
|
|
607
|
+
*/
|
|
608
|
+
declare function diffDays(a: Date, b: Date): number;
|
|
609
|
+
/** Czy obie daty wypadają w tej samej lokalnej dobie? */
|
|
610
|
+
declare function isSameDay(a: Date, b: Date): boolean;
|
|
611
|
+
/**
|
|
612
|
+
* Dzień tygodnia wg ISO 8601: 1 = poniedziałek … 7 = niedziela.
|
|
613
|
+
* `Date#getDay()` zwraca 0 dla niedzieli, stąd przesunięcie.
|
|
614
|
+
*/
|
|
615
|
+
declare function isoWeekday(date: Date): number;
|
|
616
|
+
/** Poniedziałek tygodnia ISO zawierającego `date` (początek doby). */
|
|
617
|
+
declare function startOfIsoWeek(date: Date): Date;
|
|
618
|
+
/**
|
|
619
|
+
* Rok tygodnia ISO 8601 — bywa różny od `getFullYear()` na przełomie roku.
|
|
620
|
+
* Przykłady: 2025-12-29 → 2026 (tydzień 1), 2027-01-03 → 2026 (tydzień 53).
|
|
621
|
+
*/
|
|
622
|
+
declare function isoWeekYear(date: Date): number;
|
|
623
|
+
/**
|
|
624
|
+
* Numer tygodnia ISO 8601 (1..53).
|
|
625
|
+
* Tydzień zaczyna się w poniedziałek, a tydzień 1 to ten, który zawiera pierwszy
|
|
626
|
+
* czwartek roku (równoważnie: zawiera 4 stycznia).
|
|
627
|
+
*
|
|
628
|
+
* `Math.round` jest tu krytyczny: przy DST różnica dwóch północy to 7 dni ±1 h
|
|
629
|
+
* (6.994 / 7.006), więc `Math.floor` zaniżałby numer tygodnia przez pół roku.
|
|
630
|
+
*/
|
|
631
|
+
declare function isoWeekNumber(date: Date): number;
|
|
632
|
+
/** Liczba tygodni ISO w danym roku tygodniowym (52 albo 53). */
|
|
633
|
+
declare function isoWeeksInYear(weekYear: number): number;
|
|
634
|
+
/** Początek jednostki zoomu zawierającej `date` (w dół). */
|
|
635
|
+
declare function floorToUnit(date: Date, zoom: KptRoadmapZoom): Date;
|
|
636
|
+
/** Dodaje `n` jednostek zoomu (DST-safe — po polach daty, nie po ms). */
|
|
637
|
+
declare function addUnits(date: Date, zoom: KptRoadmapZoom, n: number): Date;
|
|
638
|
+
/** Początek następnej jednostki zoomu; bez zmian, gdy `date` już leży na granicy. */
|
|
639
|
+
declare function ceilToUnit(date: Date, zoom: KptRoadmapZoom): Date;
|
|
640
|
+
/**
|
|
641
|
+
* Liczba pełnych jednostek zoomu między dwiema granicami (DST-safe).
|
|
642
|
+
* Dla 'hour' liczymy wprost po ms — doba DST po prostu ma 23 albo 25 godzin
|
|
643
|
+
* i tyle właśnie powinno powstać kolumn.
|
|
644
|
+
*/
|
|
645
|
+
declare function countUnits(start: Date, end: Date, zoom: KptRoadmapZoom): number;
|
|
646
|
+
|
|
647
|
+
export { KptRoadmap, addDays, addHours, addMonths, addUnits, arrowHead, autoRange, buildRows, buildTimeline, ceilToUnit, countUnits, daysInMonth, diffDays, floorToUnit, isSameDay, isoWeekNumber, isoWeekYear, isoWeekday, isoWeeksInYear, linkGeometry, normalizeItems, packLanes, resolveLinks, resolveRange, rollupProgress, roundedPolyline, sliceRows, spanOf, startOfDay, startOfIsoWeek, toTimestamp };
|
|
648
|
+
export type { KptDateInput, KptLinkEndpoint, KptLinkGeom, KptRoadmapChange, KptRoadmapChangeKind, KptRoadmapConfig, KptRoadmapConstraints, KptRoadmapDependencyOptions, KptRoadmapGroup, KptRoadmapGroupState, KptRoadmapInteractionOptions, KptRoadmapItem, KptRoadmapLayout, KptRoadmapLink, KptRoadmapLinkType, KptRoadmapNormalizedItem, KptRoadmapPlacedItem, KptRoadmapPositionMode, KptRoadmapRow, KptRoadmapRowKind, KptRoadmapRowMode, KptRoadmapRowOptions, KptRoadmapSummaryMode, KptRoadmapVariant, KptRoadmapZoom, KptSpanGeom, KptTimeRange, KptTimelineBand, KptTimelineCell, KptTimelineModel, KptTimelineOptions, KptWorkHours };
|
|
649
|
+
//# sourceMappingURL=konce-pt-angular-roadmap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"konce-pt-angular-roadmap.d.ts","sources":["../../roadmap/src/core/types.ts","../../roadmap/src/core/layout.ts","../../roadmap/src/core/links.ts","../../roadmap/src/core/timeline.ts","../../roadmap/src/lib/roadmap.component.ts","../../roadmap/src/core/auto-range.ts","../../roadmap/src/core/calendar.ts"],"mappings":";;;;AAQA;AACM,KAAM,YAAY,GAAG,IAAI;AAE/B;AACM,KAAM,cAAc;AAE1B;AACM,KAAM,iBAAiB;AAE7B;UACiB,YAAY;;;;;AAK5B;AAED;UACiB,eAAe;;;AAG/B;AAED;UACiB,cAAc;;;;;AAK9B;AAID;AACM,KAAM,kBAAkB;AAE9B;AACM,UAAW,cAAc;;;;;;;;WAQtB,kBAAkB;;;cAGf,iBAAiB;;;AAG5B;AAID;UACiB,qBAAqB;;eAEzB,YAAY;;aAEd,YAAY;;;;AAIrB,WAAO,cAAc;AACtB;AAED;AACM,UAAW,cAAc;;;;;;;;WAQtB,YAAY;;UAEb,YAAY;;;cAGR,iBAAiB;;;;;;;;mCAQI,cAAc;;;;;;;kBAS/B,qBAAqB;;;AAIpC;AAED;AACM,UAAW,wBAAwB;AACvC,qBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACD;AAID;KACY,qBAAqB;AAEjC;AACM,UAAW,eAAe;;;;;;;;cAQpB,iBAAiB;;;cAGjB,qBAAqB;;AAEhC;AAID;UACiB,YAAY;;;;;AAK3B;;;AAGG;AACH;;;AAGD;AAED;;;;;AAKG;KACS,sBAAsB;UAEjB,kBAAkB;;;;YAIzB,YAAY;;AAEpB;;gBAEY,YAAY;;AAExB,eAAW,cAAc;AACzB;;;AAGG;;;mBAGY,sBAAsB;;;AAGtC;KAEW,iBAAiB;UAEZ,oBAAoB;;WAE5B,iBAAiB;;;;;;;;;;;;;AAazB;UAEgB,2BAA2B;;;;;;;;;;;AAW3C;AAED;UACiB,4BAA4B;;;;;AAK3C,WAAO,cAAc;AACtB;AAED;AACM,UAAW,gBAAgB;AAC/B,oBAAgB,cAAc;sBACZ,eAAe;;AAEjC,qBAAiB,cAAc;;WAGxB,cAAc;;AAErB,YAAQ,OAAO,CAAC,YAAY;;YAEpB,YAAY;eAET,kBAAkB;WACtB,oBAAoB;mBACZ,2BAA2B;kBAC5B,4BAA4B;AAC3C;AAID;AACM,KAAM,oBAAoB;AAEhC;AACM,UAAW,gBAAgB;UACzB,oBAAoB;AAC1B,UAAM,cAAc;;cAEV,YAAY;;UAEhB,YAAY;;WAEX,cAAc;AACtB;;KCxPW,iBAAiB;AAE7B;AACM,UAAW,oBAAoB,0BAA0B,wBAAwB;;;;AAItF;AAED;UACiB,oBAAoB;;;;;AAKnC,UAAM,YAAY;;AAElB;AACD;AAED;AACM,UAAW,aAAa;;UAEtB,iBAAiB;;;;;;;;;;;AAWvB,YAAQ,eAAe;iBACV,oBAAoB;;AAEjC,oBAAgB,oBAAoB;AACrC;AAED;UACiB,qBAAqB;;;AAGrC;AAEK,UAAW,gBAAgB;mBAChB,aAAa;;;;UAItB,WAAW,SAAS,wBAAwB;;AAElD,eAAW,WAAW;;AAEtB,sBAAkB,qBAAqB;AACxC;AAMD;;;AAGG;AACH,iBAAgB,cAAc,oBAAoB,cAAc;AAC9D,WAAO,wBAAwB;aACtB,qBAAqB;;AA+ChC;AACA,iBAAgB,MAAM,iBAAiB,wBAAwB,KAAK,YAAY;AAWhF;;;AAGG;AACH,iBAAgB,cAAc,iBAAiB,wBAAwB;AAiBvE;;;;AAIG;AACH,iBAAgB,SAAS,QAAQ,oBAAoB;AAiDrD;;;;;;;;AAQG;AACH,iBAAgB,SAAS,gCACP,cAAc,4BACb,eAAe,mCACrB,WAAW,iBACf,oBAAoB,GAC1B,gBAAgB;AAqJnB;;;;AAIG;AACH,iBAAgB,SAAS,wBACf,gBAAgB;mBAIN,aAAa;;;;;ACvXjC;UACiB,eAAe;;UAExB,cAAc;;;AAGrB;UAEgB,WAAW;;;;UAIpB,kBAAkB;;;;;cAKd,iBAAiB;;;;AAI5B;AAWD;;;AAGG;AACH,iBAAgB,YAAY,iBACV,wBAAwB,oBACxB,cAAc;WACpB,cAAc;AAAI;;AAuF9B;;;;;AAKG;AACH,iBAAgB,eAAe,kBAAkB,eAAe;AAsChE;AACA,iBAAgB,SAAS,QAAQ,eAAe;AAsFhD;;;;AAIG;AACH,iBAAgB,YAAY,OACpB,cAAc,UACZ,eAAe,sBACf,eAAe,qBAChB,2BAA2B,GACjC,WAAW;;AChQd;UACiB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4B/B;AAED;UACiB,eAAe;;;;;;;;;;;;;;;;;;;AAmB/B;AAED;UACiB,WAAW;;;;;;;;;AAS3B;AAED;UACiB,gBAAgB;UACzB,cAAc;WACb,YAAY;kBACL,sBAAsB;AACpC,oBAAgB,eAAe;AAC/B,oBAAgB,eAAe;;;;AAI/B;;AAEA;;AAEA;;0CAEsC,WAAW;AAClD;AA6VD;;;;;;;AAOG;AACH,iBAAgB,aAAa,QACpB,YAAY,QACb,cAAc,SACb,kBAAkB,GACxB,gBAAgB;;AC5anB;AACA,UAAU,KAAK;AACb,UAAM,oBAAoB;;;;;;;;;;;AAW1B;;;;AAID;AAED;AACA,UAAU,SAAS;;;;;AAKlB;AAED;;;;;;AAMG;AACH,cAea,UAAU;AACrB,6BAAuB,OAAA;;qBAGR,aAAA,CAAA,WAAA,CAAA,gBAAA;;2BAEM,aAAA,CAAA,WAAA;;yBAEF,aAAA,CAAA,WAAA;;0BAEC,aAAA,CAAA,WAAA;;wBAEF,aAAA,CAAA,wBAAA;;sBAEF,aAAA,CAAA,wBAAA;;8BAGQ,aAAA,CAAA,WAAA;AAExB;;;;AAIG;AACH;;AAMA;wBAEkB,aAAA,CAAA,gBAAA,CAAA,cAAA;;0BAEE,aAAA,CAAA,gBAAA,CAAA,YAAA;AAEpB;AACA;AAEA,kCAA4B,aAAA,CAAA,cAAA;AAC5B,uCAAiC,aAAA,CAAA,cAAA;;AAEjC,kCAA4B,aAAA,CAAA,cAAA;AAE5B,6BAAuB,aAAA,CAAA,MAAA,CAAA,cAAA;AACvB,kCAA4B,aAAA,CAAA,MAAA;AAE5B,8BAAwB,aAAA,CAAA,MAAA,CAAA,YAAA;AAExB,iCAA2B,aAAA,CAAA,MAAA,CAAA,gBAAA;AAU3B,+BAAyB,aAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,gBAAA;;AAMzB,oCAA8B,aAAA,CAAA,MAAA,UAAA,aAAA;AAQ9B,gCAA0B,aAAA,CAAA,MAAA;AAE1B;;AAuCA,8BAA0B,KAAK;;AAM/B;;AAKA;;AAMA,wBAAoB,aAAa,kBAAkB,KAAK;;AA8BxD,2BAAuB,aAAa,kBAAkB,SAAS;AAa/D;;;;AAIG;AACH,8BAAwB,aAAA,CAAA,MAAA,UAAA,WAAA;iCA0CK,eAAe;gCAYhB,oBAAoB;;AAMhD,mCAA+B,aAAa,QAAQ,oBAAoB;AAMxE;;;AAGG;AACH,gCAA4B,aAAa;AASzC,iCAA6B,eAAe;AAI5C,yCAAsC,aAAa;AACnD,yCAAsC,KAAK;oDAvQhC,UAAU;sDAAV,UAAU;AAwQtB;;UCtUgB,mBAAmB;UAC5B,cAAc;;;;;;;;AAQrB;AAcD;;;;AAIG;AACH,iBAAgB,SAAS,iBAAiB,cAAc,UAAU,mBAAmB,GAAG,YAAY;AA6BpG;;;AAGG;AACH,iBAAgB,YAAY,SAClB,IAAI,CAAC,gBAAgB,6DACZ,cAAc,GAAG,wBAAwB,MACzD,YAAY;;AC1Ef;AACA,iBAAgB,WAAW,QAAQ,YAAY;AAW/C;;;;;;AAMG;AACH,iBAAgB,UAAU,OAAO,IAAI,GAAG,IAAI;AAW5C;AACA,iBAAgB,OAAO,OAAO,IAAI,cAAc,IAAI;AAMpD;AACA,iBAAgB,QAAQ,OAAO,IAAI,cAAc,IAAI;AAMrD;AACA,iBAAgB,WAAW;AAI3B;AACA,iBAAgB,SAAS,OAAO,IAAI,cAAc,IAAI;AAStD;;;;AAIG;AACH,iBAAgB,QAAQ,IAAI,IAAI,KAAK,IAAI;AAIzC;AACA,iBAAgB,SAAS,IAAI,IAAI,KAAK,IAAI;AAM1C;;;AAGG;AACH,iBAAgB,UAAU,OAAO,IAAI;AAIrC;AACA,iBAAgB,cAAc,OAAO,IAAI,GAAG,IAAI;AAgBhD;;;AAGG;AACH,iBAAgB,WAAW,OAAO,IAAI;AAItC;;;;;;;AAOG;AACH,iBAAgB,aAAa,OAAO,IAAI;AAOxC;AACA,iBAAgB,cAAc;AAO9B;AACA,iBAAgB,WAAW,OAAO,IAAI,QAAQ,cAAc,GAAG,IAAI;AAsBnE;AACA,iBAAgB,QAAQ,OAAO,IAAI,QAAQ,cAAc,cAAc,IAAI;AAiB3E;AACA,iBAAgB,UAAU,OAAO,IAAI,QAAQ,cAAc,GAAG,IAAI;AAMlE;;;;AAIG;AACH,iBAAgB,UAAU,QAAQ,IAAI,OAAO,IAAI,QAAQ,cAAc;;;;","names":[]}
|