Completed
Push — master ( e18027...c53994 )
by Dimas
647:15 queued 631:48
created

src/MVC/themes/adminlte/plugins/fullcalendar-daygrid/main.d.ts   F

Complexity

Total Complexity 81
Complexity/F 1

Size

Lines of Code 316
Function Count 81

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 273
dl 0
loc 316
rs 2
c 0
b 0
f 0
wmc 81
mnd 0
bc 0
fnc 81
bpm 0
cpm 1
noi 0

81 Functions

Rating   Name   Duplication   Size   Complexity  
A DayGrid.getIsDayNumbersVisible 0 1 1
A SimpleDayGrid.firstContext 0 1 1
A DayGrid.limitRows 0 1 1
A DayGrid._unrenderEventResize 0 1 1
A AbstractDayGridView.setGridHeight 0 1 1
A DayGrid.getCellRange 0 3 1
A DayGrid.showSegPopover 0 1 1
A DayGrid.buildRowPositions 0 1 1
A DayGrid.buildColPositions 0 1 1
A DayGrid._renderEventDrag 0 1 1
A DayGridView._renderSkeleton 0 1 1
A DayGridEventRenderer.renderSegRows 0 1 1
A DayGrid.limitRow 0 1 1
A SimpleDayGridEventRenderer.renderSegHtml 0 1 1
A DayGrid.getMoreLinkText 0 1 1
A DayGridView._unrenderSkeleton 0 1 1
A DayGrid.getCellSegs 0 1 1
A DayGrid.unlimitRow 0 1 1
A Popover.show 0 1 1
A DayTileEventRenderer.attachSegs 0 1 1
A AbstractDayGridView.updateSize 0 1 1
A AbstractDayGridView._processOptions 0 1 1
A DayTile.render 0 1 1
A DayGrid.renderNumberCellsHtml 0 1 1
A DayGridEventRenderer.computeDisplayEventEnd 0 1 1
A DayGrid.renderNumberCellHtml 0 1 1
A DayGrid.removeSegPopover 0 1 1
A DayTile.queryHit 0 1 1
A DayGrid.buildPositionCaches 0 1 1
A AbstractDayGridView.hasRigidRows 0 1 1
A AbstractDayGridView._unrenderSkeleton 0 1 1
A DayGrid._renderCells 0 1 1
A AbstractDayGridView._renderSkeleton 0 1 1
A SimpleDayGrid.destroy 0 1 1
A DayGrid.destroy 0 1 1
A DayGridEventRenderer.attachSegs 0 1 1
A DayGrid.render 0 1 1
A DayGrid.positionToHit 0 16 1
A Popover.trigger 0 1 1
A SimpleDayGridEventRenderer.computeDisplayEventEnd 0 1 1
A DayGrid._unrenderEventDrag 0 1 1
A SimpleDayGrid.buildPositionCaches 0 1 1
A DayGrid.computeRowLevelLimit 0 1 1
A Popover.destroy 0 1 1
A DayGridSlicer.sliceRange 0 1 1
A DayGrid._unrenderCells 0 1 1
A AbstractDayGridView.renderSkeletonHtml 0 1 1
A DayGrid.getIsNumbersVisible 0 1 1
A DayGrid.resliceDaySegs 0 1 1
A DayTileEventRenderer.detachSegs 0 1 1
A DayGridView.render 0 1 1
A DayTile.destroy 0 1 1
A AbstractDayGridView.computeDateScroll 0 2 1
A AbstractDayGridView.applyDateScroll 0 1 1
A AbstractDayGridView.render 0 1 1
A Popover.hide 0 1 1
A DayGridEventRenderer.detachSegs 0 1 1
A AbstractDayGridView.destroy 0 1 1
A SimpleDayGrid.queryHit 0 1 1
A DayGrid.renderDayRowHtml 0 1 1
A DayBgRow.renderHtml 0 1 1
A DayGridEventRenderer.renderSegRow 0 7 1
A DayGridEventRenderer.buildSegLevels 0 1 1
A AbstractDayGridView.weekNumberStyleAttr 0 1 1
A Popover.position 0 1 1
A SimpleDayGridEventRenderer.computeEventTimeFormat 0 5 1
A DayGrid.updateSize 0 1 1
A DayGrid.renderNumberTrHtml 0 1 1
A AbstractDayGridView.computeScrollerHeight 0 1 1
A AbstractDayGridView.queryDateScroll 0 2 1
A DayGridEventRenderer.groupSegRows 0 1 1
A DayTile._renderFrame 0 1 1
A DayGrid.updateSegPopoverTile 0 1 1
A DayGrid._renderEventResize 0 1 1
A DayTile.firstContext 0 1 1
A DayGrid.getCellEl 0 1 1
A Popover.render 0 1 1
A SimpleDayGrid.render 0 1 1
A AbstractDayGridView.updateBaseSize 0 1 1
A main.d.ts ➔ buildDayTable 0 1 1
A DayGrid.renderMoreLink 0 1 1

How to fix   Complexity   

Complexity

Complex classes like src/MVC/themes/adminlte/plugins/fullcalendar-daygrid/main.d.ts often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
// Generated by dts-bundle v0.7.3-fork.1
2
// Dependencies for this module:
3
//   ../../../../../@fullcalendar/core
4
5
declare module '@fullcalendar/daygrid' {
6
    export { default as SimpleDayGrid, DayGridSlicer } from '@fullcalendar/daygrid/SimpleDayGrid';
7
    export { default as DayGrid, DayGridSeg } from '@fullcalendar/daygrid/DayGrid';
8
    export { default as AbstractDayGridView } from '@fullcalendar/daygrid/AbstractDayGridView';
9
    export { default as DayGridView, buildDayTable as buildBasicDayTable } from '@fullcalendar/daygrid/DayGridView';
10
    export { default as DayBgRow } from '@fullcalendar/daygrid/DayBgRow';
11
    const _default: import("@fullcalendar/core").PluginDef;
12
    export default _default;
13
}
14
15
declare module '@fullcalendar/daygrid/SimpleDayGrid' {
16
    import { DateProfile, EventStore, EventUiHash, DateSpan, EventInteractionState, DayTable, Duration, DateComponent, DateRange, Slicer, Hit, ComponentContext } from '@fullcalendar/core';
17
    import { default as DayGrid, DayGridSeg } from '@fullcalendar/daygrid/DayGrid';
18
    export interface SimpleDayGridProps {
19
        dateProfile: DateProfile | null;
20
        dayTable: DayTable;
21
        nextDayThreshold: Duration;
22
        businessHours: EventStore;
23
        eventStore: EventStore;
24
        eventUiBases: EventUiHash;
25
        dateSelection: DateSpan | null;
26
        eventSelection: string;
27
        eventDrag: EventInteractionState | null;
28
        eventResize: EventInteractionState | null;
29
        isRigid: boolean;
30
    }
31
    export { SimpleDayGrid as default, SimpleDayGrid };
32
    class SimpleDayGrid extends DateComponent<SimpleDayGridProps> {
33
        dayGrid: DayGrid;
34
        constructor(dayGrid: DayGrid);
35
        firstContext(context: ComponentContext): void;
36
        destroy(): void;
37
        render(props: SimpleDayGridProps, context: ComponentContext): void;
38
        buildPositionCaches(): void;
39
        queryHit(positionLeft: number, positionTop: number): Hit;
40
    }
41
    export class DayGridSlicer extends Slicer<DayGridSeg, [DayTable]> {
42
        sliceRange(dateRange: DateRange, dayTable: DayTable): DayGridSeg[];
43
    }
44
}
45
46
declare module '@fullcalendar/daygrid/DayGrid' {
47
    import { PositionCache, DateMarker, DateComponent, EventSegUiInteractionState, Seg, DateProfile, ComponentContext } from '@fullcalendar/core';
48
    import Popover from '@fullcalendar/daygrid/Popover';
49
    import DayGridEventRenderer from '@fullcalendar/daygrid/DayGridEventRenderer';
50
    import DayTile from '@fullcalendar/daygrid/DayTile';
51
    export interface RenderProps {
52
        renderNumberIntroHtml: (row: number, dayGrid: DayGrid) => string;
53
        renderBgIntroHtml: () => string;
54
        renderIntroHtml: () => string;
55
        colWeekNumbersVisible: boolean;
56
        cellWeekNumbersVisible: boolean;
57
    }
58
    export interface DayGridSeg extends Seg {
59
        row: number;
60
        firstCol: number;
61
        lastCol: number;
62
    }
63
    export interface DayGridCell {
64
        date: DateMarker;
65
        htmlAttrs?: string;
66
    }
67
    export interface DayGridProps {
68
        dateProfile: DateProfile;
69
        cells: DayGridCell[][];
70
        businessHourSegs: DayGridSeg[];
71
        bgEventSegs: DayGridSeg[];
72
        fgEventSegs: DayGridSeg[];
73
        dateSelectionSegs: DayGridSeg[];
74
        eventSelection: string;
75
        eventDrag: EventSegUiInteractionState | null;
76
        eventResize: EventSegUiInteractionState | null;
77
        isRigid: boolean;
78
    }
79
    export { DayGrid as default, DayGrid };
80
    class DayGrid extends DateComponent<DayGridProps> {
81
        eventRenderer: DayGridEventRenderer;
82
        renderProps: RenderProps;
83
        rowCnt: number;
84
        colCnt: number;
85
        bottomCoordPadding: number;
86
        rowEls: HTMLElement[];
87
        cellEls: HTMLElement[];
88
        isCellSizesDirty: boolean;
89
        rowPositions: PositionCache;
90
        colPositions: PositionCache;
91
        segPopover: Popover;
92
        segPopoverTile: DayTile;
93
        constructor(el: any, renderProps: RenderProps);
94
        render(props: DayGridProps, context: ComponentContext): void;
95
        destroy(): void;
96
        getCellRange(row: any, col: any): {
97
            start: Date;
98
            end: Date;
99
        };
100
        updateSegPopoverTile(date?: any, segs?: any): void;
101
        _renderCells(cells: DayGridCell[][], isRigid: boolean): void;
102
        _unrenderCells(): void;
103
        renderDayRowHtml(row: any, isRigid: any): string;
104
        getIsNumbersVisible(): boolean;
105
        getIsDayNumbersVisible(): boolean;
106
        renderNumberTrHtml(row: number): string;
107
        renderNumberCellsHtml(row: any): string;
108
        renderNumberCellHtml(date: any): string;
109
        updateSize(isResize: boolean): void;
110
        buildPositionCaches(): void;
111
        buildColPositions(): void;
112
        buildRowPositions(): void;
113
        positionToHit(leftPosition: any, topPosition: any): {
114
            row: any;
115
            col: any;
116
            dateSpan: {
117
                range: {
118
                    start: Date;
119
                    end: Date;
120
                };
121
                allDay: boolean;
122
            };
123
            dayEl: HTMLElement;
124
            relativeRect: {
125
                left: any;
126
                right: any;
127
                top: any;
128
                bottom: any;
129
            };
130
        };
131
        getCellEl(row: any, col: any): HTMLElement;
132
        _renderEventDrag(state: EventSegUiInteractionState): void;
133
        _unrenderEventDrag(state: EventSegUiInteractionState): void;
134
        _renderEventResize(state: EventSegUiInteractionState): void;
135
        _unrenderEventResize(state: EventSegUiInteractionState): void;
136
        removeSegPopover(): void;
137
        limitRows(levelLimit: any): void;
138
        computeRowLevelLimit(row: any): (number | false);
139
        limitRow(row: any, levelLimit: any): void;
140
        unlimitRow(row: any): void;
141
        renderMoreLink(row: any, col: any, hiddenSegs: any): HTMLElement;
142
        showSegPopover(row: any, col: any, moreLink: HTMLElement, segs: any): void;
143
        resliceDaySegs(segs: any, dayDate: any): any[];
144
        getMoreLinkText(num: any): any;
145
        getCellSegs(row: any, col: any, startLevel?: any): any[];
146
    }
147
}
148
149
declare module '@fullcalendar/daygrid/AbstractDayGridView' {
150
    import { ScrollComponent, View, Duration, ComponentContext, ViewProps } from '@fullcalendar/core';
151
    import DayGrid from '@fullcalendar/daygrid/DayGrid';
152
    export { AbstractDayGridView as default, AbstractDayGridView };
153
    abstract class AbstractDayGridView extends View {
154
        scroller: ScrollComponent;
155
        dayGrid: DayGrid;
156
        colWeekNumbersVisible: boolean;
157
        cellWeekNumbersVisible: boolean;
158
        weekNumberWidth: number;
159
        _processOptions(options: any): void;
160
        render(props: ViewProps, context: ComponentContext): void;
161
        destroy(): void;
162
        _renderSkeleton(context: ComponentContext): void;
163
        _unrenderSkeleton(): void;
164
        renderSkeletonHtml(): string;
165
        weekNumberStyleAttr(): string;
166
        hasRigidRows(): boolean;
167
        updateSize(isResize: boolean, viewHeight: number, isAuto: boolean): void;
168
        updateBaseSize(isResize: boolean, viewHeight: number, isAuto: boolean): void;
169
        computeScrollerHeight(viewHeight: any): number;
170
        setGridHeight(height: any, isAuto: any): void;
171
        computeDateScroll(duration: Duration): {
172
            top: number;
173
        };
174
        queryDateScroll(): {
175
            top: number;
176
        };
177
        applyDateScroll(scroll: any): void;
178
        renderHeadIntroHtml: () => string;
179
        renderDayGridNumberIntroHtml: (row: number, dayGrid: DayGrid) => string;
180
        renderDayGridBgIntroHtml: () => string;
181
        renderDayGridIntroHtml: () => string;
182
    }
183
}
184
185
declare module '@fullcalendar/daygrid/DayGridView' {
186
    import { DayHeader, ComponentContext, DateProfileGenerator, DateProfile, ViewProps, DayTable } from '@fullcalendar/core';
187
    import AbstractDayGridView from '@fullcalendar/daygrid/AbstractDayGridView';
188
    import SimpleDayGrid from '@fullcalendar/daygrid/SimpleDayGrid';
189
    export { DayGridView as default, DayGridView };
190
    class DayGridView extends AbstractDayGridView {
191
        header: DayHeader;
192
        simpleDayGrid: SimpleDayGrid;
193
        dayTable: DayTable;
194
        render(props: ViewProps, context: ComponentContext): void;
195
        _renderSkeleton(context: ComponentContext): void;
196
        _unrenderSkeleton(): void;
197
    }
198
    export function buildDayTable(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator): DayTable;
199
}
200
201
declare module '@fullcalendar/daygrid/DayBgRow' {
202
    import { ComponentContext, DateMarker, DateProfile } from '@fullcalendar/core';
203
    export interface DayBgCell {
204
        date: DateMarker;
205
        htmlAttrs?: string;
206
    }
207
    export interface DayBgRowProps {
208
        cells: DayBgCell[];
209
        dateProfile: DateProfile;
210
        renderIntroHtml?: () => string;
211
    }
212
    export { DayBgRow as default, DayBgRow };
213
    class DayBgRow {
214
        context: ComponentContext;
215
        constructor(context: ComponentContext);
216
        renderHtml(props: DayBgRowProps): string;
217
    }
218
}
219
220
declare module '@fullcalendar/daygrid/Popover' {
221
    export interface PopoverOptions {
222
        className?: string;
223
        content?: (el: HTMLElement) => void;
224
        parentEl: HTMLElement;
225
        autoHide?: boolean;
226
        top?: number;
227
        left?: number;
228
        right?: number;
229
        viewportConstrain?: boolean;
230
    }
231
    export { Popover as default, Popover };
232
    class Popover {
233
        isHidden: boolean;
234
        options: PopoverOptions;
235
        el: HTMLElement;
236
        margin: number;
237
        constructor(options: PopoverOptions);
238
        show(): void;
239
        hide(): void;
240
        render(): void;
241
        documentMousedown: (ev: any) => void;
242
        destroy(): void;
243
        position(): void;
244
        trigger(name: any): void;
245
    }
246
}
247
248
declare module '@fullcalendar/daygrid/DayGridEventRenderer' {
249
    import { Seg } from '@fullcalendar/core';
250
    import DayGrid from '@fullcalendar/daygrid/DayGrid';
251
    import SimpleDayGridEventRenderer from '@fullcalendar/daygrid/SimpleDayGridEventRenderer';
252
    export { DayGridEventRenderer as default, DayGridEventRenderer };
253
    class DayGridEventRenderer extends SimpleDayGridEventRenderer {
254
        dayGrid: DayGrid;
255
        rowStructs: any;
256
        constructor(dayGrid: DayGrid);
257
        attachSegs(segs: Seg[], mirrorInfo: any): void;
258
        detachSegs(): void;
259
        renderSegRows(segs: Seg[]): any[];
260
        renderSegRow(row: any, rowSegs: any): {
261
            row: any;
262
            tbodyEl: HTMLTableSectionElement;
263
            cellMatrix: any[];
264
            segMatrix: any[];
265
            segLevels: any[];
266
            segs: any;
267
        };
268
        buildSegLevels(segs: Seg[]): any[];
269
        groupSegRows(segs: Seg[]): any[];
270
        computeDisplayEventEnd(): boolean;
271
    }
272
}
273
274
declare module '@fullcalendar/daygrid/DayTile' {
275
    import { DateComponent, Seg, Hit, DateMarker, ComponentContext, EventInstanceHash } from '@fullcalendar/core';
276
    import SimpleDayGridEventRenderer from '@fullcalendar/daygrid/SimpleDayGridEventRenderer';
277
    export interface DayTileProps {
278
        date: DateMarker;
279
        fgSegs: Seg[];
280
        eventSelection: string;
281
        eventDragInstances: EventInstanceHash;
282
        eventResizeInstances: EventInstanceHash;
283
    }
284
    export { DayTile as default, DayTile };
285
    class DayTile extends DateComponent<DayTileProps> {
286
        segContainerEl: HTMLElement;
287
        constructor(el: HTMLElement);
288
        firstContext(context: ComponentContext): void;
289
        render(props: DayTileProps, context: ComponentContext): void;
290
        destroy(): void;
291
        _renderFrame(date: DateMarker): void;
292
        queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit | null;
293
    }
294
    export class DayTileEventRenderer extends SimpleDayGridEventRenderer {
295
        dayTile: DayTile;
296
        constructor(dayTile: any);
297
        attachSegs(segs: Seg[]): void;
298
        detachSegs(segs: Seg[]): void;
299
    }
300
}
301
302
declare module '@fullcalendar/daygrid/SimpleDayGridEventRenderer' {
303
    import { FgEventRenderer, Seg } from '@fullcalendar/core';
304
    export { SimpleDayGridEventRenderer as default, SimpleDayGridEventRenderer };
305
    abstract class SimpleDayGridEventRenderer extends FgEventRenderer {
306
        renderSegHtml(seg: Seg, mirrorInfo: any): string;
307
        computeEventTimeFormat(): {
308
            hour: string;
309
            minute: string;
310
            omitZeroMinute: boolean;
311
            meridiem: string;
312
        };
313
        computeDisplayEventEnd(): boolean;
314
    }
315
}
316
317