@spicainternational/ngx-sds-components 5.30.1 → 5.31.0
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/esm2020/public-api.mjs +2 -1
- package/esm2020/src/lib/number-box/number-box.component.mjs +3 -1
- package/esm2020/src/lib/timeline/components/timeline.component.mjs +254 -0
- package/esm2020/src/lib/timeline/models/timeline.model.mjs +2 -0
- package/esm2020/src/lib/timeline/public-api.mjs +3 -0
- package/esm2020/src/lib/timeline/services/timeline.service.mjs +115 -0
- package/esm2020/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.mjs +5 -0
- package/esm2020/src/lib/timeline/timeline.module.mjs +26 -0
- package/esm2020/src/lib/timeline/types/timeline.types.mjs +2 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-number-box.mjs +2 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-number-box.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs +401 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -0
- package/fesm2015/spicainternational-ngx-sds-components.mjs +1 -0
- package/fesm2015/spicainternational-ngx-sds-components.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-number-box.mjs +2 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-number-box.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs +398 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -0
- package/fesm2020/spicainternational-ngx-sds-components.mjs +1 -0
- package/fesm2020/spicainternational-ngx-sds-components.mjs.map +1 -1
- package/package.json +9 -1
- package/public-api.d.ts +1 -0
- package/src/lib/timeline/components/timeline.component.d.ts +116 -0
- package/src/lib/timeline/models/timeline.model.d.ts +21 -0
- package/src/lib/timeline/package.json +10 -0
- package/src/lib/timeline/public-api.d.ts +2 -0
- package/src/lib/timeline/services/timeline.service.d.ts +22 -0
- package/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.d.ts +5 -0
- package/src/lib/timeline/timeline.module.d.ts +8 -0
- package/src/lib/timeline/types/timeline.types.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-number-box.mjs","sources":["../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.ts","../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.html","../../../projects/ngx-sds-components/src/lib/number-box/number-box.module.ts","../../../projects/ngx-sds-components/src/lib/number-box/spicainternational-ngx-sds-components-src-lib-number-box.ts"],"sourcesContent":["import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { faChevronLeft, faChevronRight, faMinus, faPlus } from '@fortawesome/pro-regular-svg-icons';\r\nimport { Subject, debounceTime, fromEvent, interval, map, takeUntil, throttleTime } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sds-number-box',\r\n templateUrl: './number-box.component.html',\r\n styleUrls: ['./number-box.component.scss'],\r\n})\r\nexport class SdsNumberBoxComponent implements OnInit, OnDestroy {\r\n @Input() value: number = 0;\r\n @Output() valueChange = new EventEmitter<number>();\r\n\r\n /**\r\n * Width of component. By default 8rem.\r\n *\r\n * @type {string}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() width: string = '8rem';\r\n\r\n /**\r\n * Specifies whether the UI component responds to user interaction.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * The maximum value accepted by the duration box.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() max?: number;\r\n\r\n /**\r\n * The minimum value accepted by the duration box.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() min?: number;\r\n\r\n /**\r\n * The increment by which the value is increased or decreased.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() step: number = 1;\r\n\r\n /**\r\n * The icon set to use for the increment and decrement buttons.\r\n * Icons used are from the FrontAwesome library, so you must include them in the project to use them. \r\n * You can add them to FA library on the module/component level.\r\n * Icons: regular, minus/plus, chevron-left/right\r\n *\r\n * @type {('plus-minus' | 'left-right')}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() iconSet: 'plus-minus' | 'left-right' = 'plus-minus';\r\n\r\n /**\r\n * Interval between value changes when the increment or decrement button is held down.\r\n *\r\n * @type {number}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() burstInterval: number = 120;\r\n\r\n /**\r\n * Interval in which new value is emitted to the parent component.\r\n * It should be higher than burstInterval to prevent multiple value changes in burst mode.\r\n * \r\n * @type {number}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() debounceTime: number = 150;\r\n\r\n public ICON_MINUS = faMinus;\r\n public ICON_PLUS = faPlus;\r\n public ICON_LEFT = faChevronLeft;\r\n public ICON_RIGHT = faChevronRight;\r\n\r\n private destroy$: Subject<void> = new Subject<void>();\r\n private newValue$: Subject<number> = new Subject<number>();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.newValue$.pipe(\r\n debounceTime(this.debounceTime)\r\n ).subscribe(() => {\r\n this.valueChange.emit(this.value);\r\n });\r\n }\r\n\r\n public increment() {\r\n const newValue = this.value + this.step;\r\n if (typeof this.max !== 'undefined' && newValue > this.max) {\r\n return;\r\n }\r\n this.value = newValue;\r\n this.newValue$.next(this.value);\r\n }\r\n\r\n public decrement() {\r\n const newValue = this.value - this.step;\r\n if (typeof this.min !== 'undefined' && newValue < this.min) {\r\n return;\r\n }\r\n this.value = newValue;\r\n this.newValue$.next(this.value);\r\n }\r\n\r\n startIncrement() {\r\n this.increment();\r\n interval(this.burstInterval)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.increment();\r\n });\r\n }\r\n\r\n stopIncrement() {\r\n this.destroy$.next();\r\n }\r\n\r\n startDecrement() {\r\n this.decrement();\r\n interval(this.burstInterval)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.decrement();\r\n });\r\n }\r\n\r\n stopDecrement() {\r\n this.destroy$.next();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.complete();\r\n this.newValue$.complete();\r\n }\r\n}\r\n","<div \r\n class=\"input-group\"\r\n [style.width]=\"width\"\r\n>\r\n\r\n <button \r\n class=\"btn btn-secondary btn-sm border\" \r\n type=\"button\"\r\n (mousedown)=\"startDecrement()\" \r\n (mouseup)=\"stopDecrement()\"\r\n (mouseleave)=\"stopDecrement()\"\r\n [disabled]=\"disabled\"\r\n > \r\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_MINUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_LEFT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n </button>\r\n \r\n <input \r\n type=\"text\" \r\n class=\"form-control text-center bg-white text-monospace\" \r\n [class.text-muted]=\"disabled\"\r\n [style.padding-top.rem]=\"0.31\"\r\n [style.padding-bottom.rem]=\"0.31\"\r\n placeholder=\"\"\r\n [value]=\"value\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n \r\n <button \r\n #incrementButton\r\n class=\"btn btn-secondary btn-sm border\" \r\n type=\"button\"\r\n (mousedown)=\"startIncrement()\" \r\n (mouseup)=\"stopIncrement()\"\r\n (mouseleave)=\"stopIncrement()\"\r\n [disabled]=\"disabled\"\r\n >\r\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_PLUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_RIGHT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n </button>\r\n\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsNumberBoxComponent } from './number-box.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsNumberBoxComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule\r\n ],\r\n exports: [\r\n SdsNumberBoxComponent\r\n ]\r\n})\r\nexport class SdsNumberBoxModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-number-box.mjs","sources":["../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.ts","../../../projects/ngx-sds-components/src/lib/number-box/number-box.component.html","../../../projects/ngx-sds-components/src/lib/number-box/number-box.module.ts","../../../projects/ngx-sds-components/src/lib/number-box/spicainternational-ngx-sds-components-src-lib-number-box.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { faChevronLeft, faChevronRight, faMinus, faPlus } from '@fortawesome/pro-regular-svg-icons';\r\nimport { Subject, debounceTime, fromEvent, interval, map, takeUntil, throttleTime } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sds-number-box',\r\n templateUrl: './number-box.component.html',\r\n styleUrls: ['./number-box.component.scss'],\r\n})\r\nexport class SdsNumberBoxComponent implements OnInit, OnDestroy {\r\n @Input() value: number = 0;\r\n @Output() valueChange = new EventEmitter<number>();\r\n\r\n /**\r\n * Width of component. By default 8rem.\r\n *\r\n * @type {string}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() width: string = '8rem';\r\n\r\n /**\r\n * Specifies whether the UI component responds to user interaction.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() disabled: boolean = false;\r\n\r\n /**\r\n * The maximum value accepted by the duration box.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() max?: number;\r\n\r\n /**\r\n * The minimum value accepted by the duration box.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() min?: number;\r\n\r\n /**\r\n * The increment by which the value is increased or decreased.\r\n *\r\n * @type {number}\r\n * @memberof SdsDurationBoxComponent\r\n */\r\n @Input() step: number = 1;\r\n\r\n /**\r\n * The icon set to use for the increment and decrement buttons.\r\n * Icons used are from the FrontAwesome library, so you must include them in the project to use them. \r\n * You can add them to FA library on the module/component level.\r\n * Icons: regular, minus/plus, chevron-left/right\r\n *\r\n * @type {('plus-minus' | 'left-right')}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() iconSet: 'plus-minus' | 'left-right' = 'plus-minus';\r\n\r\n /**\r\n * Interval between value changes when the increment or decrement button is held down.\r\n *\r\n * @type {number}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() burstInterval: number = 120;\r\n\r\n /**\r\n * Interval in which new value is emitted to the parent component.\r\n * It should be higher than burstInterval to prevent multiple value changes in burst mode.\r\n * \r\n * @type {number}\r\n * @memberof SdsNumberBoxComponent\r\n */\r\n @Input() debounceTime: number = 150;\r\n\r\n public ICON_MINUS = faMinus;\r\n public ICON_PLUS = faPlus;\r\n public ICON_LEFT = faChevronLeft;\r\n public ICON_RIGHT = faChevronRight;\r\n\r\n private destroy$: Subject<void> = new Subject<void>();\r\n private newValue$: Subject<number> = new Subject<number>();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.newValue$.pipe(\r\n debounceTime(this.debounceTime)\r\n ).subscribe(() => {\r\n this.valueChange.emit(this.value);\r\n });\r\n }\r\n\r\n public increment() {\r\n const newValue = this.value + this.step;\r\n if (typeof this.max !== 'undefined' && newValue > this.max) {\r\n return;\r\n }\r\n this.value = newValue;\r\n this.newValue$.next(this.value);\r\n }\r\n\r\n public decrement() {\r\n const newValue = this.value - this.step;\r\n if (typeof this.min !== 'undefined' && newValue < this.min) {\r\n return;\r\n }\r\n this.value = newValue;\r\n this.newValue$.next(this.value);\r\n }\r\n\r\n startIncrement() {\r\n this.increment();\r\n console.log('startIncrement');\r\n interval(this.burstInterval)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.increment();\r\n });\r\n }\r\n\r\n stopIncrement() {\r\n console.log('stopIncrement');\r\n this.destroy$.next();\r\n }\r\n\r\n startDecrement() {\r\n this.decrement();\r\n interval(this.burstInterval)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.decrement();\r\n });\r\n }\r\n\r\n stopDecrement() {\r\n this.destroy$.next();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.complete();\r\n this.newValue$.complete();\r\n }\r\n}\r\n","<div \r\n class=\"input-group\"\r\n [style.width]=\"width\"\r\n>\r\n\r\n <button \r\n class=\"btn btn-secondary btn-sm border\" \r\n type=\"button\"\r\n (mousedown)=\"startDecrement()\" \r\n (mouseup)=\"stopDecrement()\"\r\n (mouseleave)=\"stopDecrement()\"\r\n [disabled]=\"disabled\"\r\n > \r\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_MINUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_LEFT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n </button>\r\n \r\n <input \r\n type=\"text\" \r\n class=\"form-control text-center bg-white text-monospace\" \r\n [class.text-muted]=\"disabled\"\r\n [style.padding-top.rem]=\"0.31\"\r\n [style.padding-bottom.rem]=\"0.31\"\r\n placeholder=\"\"\r\n [value]=\"value\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n \r\n <button \r\n #incrementButton\r\n class=\"btn btn-secondary btn-sm border\" \r\n type=\"button\"\r\n (mousedown)=\"startIncrement()\" \r\n (mouseup)=\"stopIncrement()\"\r\n (mouseleave)=\"stopIncrement()\"\r\n [disabled]=\"disabled\"\r\n >\r\n <fa-icon *ngIf=\"iconSet === 'plus-minus'\" [icon]=\"ICON_PLUS\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n <fa-icon *ngIf=\"iconSet === 'left-right'\" [icon]=\"ICON_RIGHT\" [fixedWidth]=\"true\" [size]=\"'sm'\"></fa-icon>\r\n </button>\r\n\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsNumberBoxComponent } from './number-box.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsNumberBoxComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule\r\n ],\r\n exports: [\r\n SdsNumberBoxComponent\r\n ]\r\n})\r\nexport class SdsNumberBoxModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAkBa,qBAAqB,CAAA;AAgF9B,IAAA,WAAA,GAAA;QA/ES,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;AACjB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAEnD;;;;;AAKG;QACM,IAAK,CAAA,KAAA,GAAW,MAAM,CAAC;AAEhC;;;;;AAKG;QACM,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAkBnC;;;;;AAKG;QACM,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;AAE1B;;;;;;;;AAQG;QACM,IAAO,CAAA,OAAA,GAAgC,YAAY,CAAC;AAE7D;;;;;AAKG;QACM,IAAa,CAAA,aAAA,GAAW,GAAG,CAAC;AAErC;;;;;;AAMG;QACM,IAAY,CAAA,YAAA,GAAW,GAAG,CAAC;QAE7B,IAAU,CAAA,UAAA,GAAG,OAAO,CAAC;QACrB,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;QACnB,IAAS,CAAA,SAAA,GAAG,aAAa,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAG,cAAc,CAAC;AAE3B,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAoB,IAAI,OAAO,EAAU,CAAC;KAE3C;IAEhB,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACf,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAClC,CAAC,SAAS,CAAC,MAAK;YACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;IAEM,SAAS,GAAA;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,WAAW,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;YACxD,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;IAEM,SAAS,GAAA;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,WAAW,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;YACxD,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;IAED,cAAc,GAAA;QACV,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC9B,QAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AACvB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;KACV;IAED,aAAa,GAAA;AACT,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IAED,cAAc,GAAA;QACV,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AACvB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;KACV;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B;;kHA3IQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,yRClBlC,8jDA2CM,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDzBO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,8jDAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,CAAA;0EAKjB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAQE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAQG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAQG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAQG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAQG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAWG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAQG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBASG,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MErEG,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAV3B,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAGrB,YAAY;AACZ,QAAA,iBAAiB,aAGjB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGZ,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EARpB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,iBAAiB;AAClB,SAAA,CAAA,EAAA,CAAA,CAAA;2FAKU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;;AClBD;;AAEG;;;;"}
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, Input, ViewChild, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class SdsTimelineService {
|
|
7
|
+
constructor(start, end, offSetMinutes) {
|
|
8
|
+
this.start = new Date();
|
|
9
|
+
this.end = new Date();
|
|
10
|
+
this.hourTicks = [];
|
|
11
|
+
this.dayLabels = [];
|
|
12
|
+
this.hourLabels = [];
|
|
13
|
+
this.start = new Date(start);
|
|
14
|
+
this.start.setMinutes(this.start.getMinutes() - offSetMinutes);
|
|
15
|
+
this.end = new Date(end);
|
|
16
|
+
this.end.setMinutes(this.end.getMinutes() + offSetMinutes);
|
|
17
|
+
this.widthPercentPerMinute = (100 / this.diffInMinutes(start, end));
|
|
18
|
+
this.initHourTicks();
|
|
19
|
+
this.initDayLabels();
|
|
20
|
+
this.initHourLabels();
|
|
21
|
+
}
|
|
22
|
+
getX(time) {
|
|
23
|
+
return this.diffInMinutes(this.start, time) * this.widthPercentPerMinute;
|
|
24
|
+
}
|
|
25
|
+
getWidthFromMinutes(minutes) {
|
|
26
|
+
return minutes * this.widthPercentPerMinute;
|
|
27
|
+
}
|
|
28
|
+
getWidthFromTime(start, end) {
|
|
29
|
+
return this.getWidthFromMinutes(this.diffInMinutes(start, end));
|
|
30
|
+
}
|
|
31
|
+
getTick(time) {
|
|
32
|
+
return {
|
|
33
|
+
date: new Date(time),
|
|
34
|
+
x: this.getX(time),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
getHourTicks(frequency = 'hourly') {
|
|
38
|
+
if (frequency == 'hourly') {
|
|
39
|
+
return this.hourTicks;
|
|
40
|
+
}
|
|
41
|
+
else if (frequency == '3hrs') {
|
|
42
|
+
return this.hourTicks.filter((tick, index) => index % 3 == 0);
|
|
43
|
+
}
|
|
44
|
+
else if (frequency == '6hrs') {
|
|
45
|
+
return this.hourTicks.filter((tick, index) => index % 6 == 0);
|
|
46
|
+
}
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
//#region Private Methods
|
|
50
|
+
diffInMinutes(start, end) {
|
|
51
|
+
return (end.getTime() - start.getTime()) / (1000 * 60);
|
|
52
|
+
}
|
|
53
|
+
roundHoursUp(time) {
|
|
54
|
+
let newTime = new Date(time);
|
|
55
|
+
if (newTime.getMinutes() > 0 || newTime.getSeconds() > 0 || newTime.getMilliseconds() > 0) {
|
|
56
|
+
newTime.setHours(newTime.getHours() + 1);
|
|
57
|
+
}
|
|
58
|
+
newTime.setMinutes(0, 0, 0);
|
|
59
|
+
return newTime;
|
|
60
|
+
}
|
|
61
|
+
roundHoursDown(time) {
|
|
62
|
+
let newTime = new Date(time);
|
|
63
|
+
newTime.setMinutes(0, 0, 0);
|
|
64
|
+
return newTime;
|
|
65
|
+
}
|
|
66
|
+
initHourTicks() {
|
|
67
|
+
this.hourTicks = [];
|
|
68
|
+
// get first whole hour from start date
|
|
69
|
+
let startHour = this.roundHoursUp(this.start);
|
|
70
|
+
// get last whole hour from end date
|
|
71
|
+
let endHour = this.roundHoursDown(this.end);
|
|
72
|
+
let currentHour = new Date(startHour);
|
|
73
|
+
while (currentHour <= endHour) {
|
|
74
|
+
this.hourTicks.push(this.getTick(currentHour));
|
|
75
|
+
currentHour.setHours(currentHour.getHours() + 1);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
initDayLabels() {
|
|
79
|
+
this.dayLabels = [];
|
|
80
|
+
// get start date at the beginning of the day
|
|
81
|
+
let startDate = new Date(this.start);
|
|
82
|
+
startDate.setHours(0, 0, 0, 0);
|
|
83
|
+
// get end date at the end of the day
|
|
84
|
+
let endDate = new Date(this.end);
|
|
85
|
+
endDate.setHours(23, 59, 59, 999);
|
|
86
|
+
let currentDate = new Date(startDate);
|
|
87
|
+
while (currentDate <= endDate) {
|
|
88
|
+
let endOfCurrentDay = new Date(currentDate);
|
|
89
|
+
endOfCurrentDay.setHours(23, 59, 59, 999);
|
|
90
|
+
this.dayLabels.push({
|
|
91
|
+
// date: new Date(currentDate),
|
|
92
|
+
x: this.getX(new Date(currentDate)),
|
|
93
|
+
width: this.getWidthFromTime(currentDate, endOfCurrentDay),
|
|
94
|
+
label: currentDate.toLocaleDateString([], { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' })
|
|
95
|
+
});
|
|
96
|
+
currentDate.setDate(currentDate.getDate() + 1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
initHourLabels() {
|
|
100
|
+
// get first whole hour from start date
|
|
101
|
+
let startHour = this.roundHoursUp(this.start);
|
|
102
|
+
// get last whole hour from end date
|
|
103
|
+
let endHour = this.roundHoursDown(this.end);
|
|
104
|
+
let currentHour = new Date(startHour);
|
|
105
|
+
while (currentHour <= endHour) {
|
|
106
|
+
if (currentHour.getHours() % 3 === 0) {
|
|
107
|
+
let labelStartTime = new Date(currentHour);
|
|
108
|
+
labelStartTime.setMinutes(-30);
|
|
109
|
+
this.hourLabels.push({
|
|
110
|
+
x: this.getX(labelStartTime),
|
|
111
|
+
width: this.getWidthFromMinutes(60),
|
|
112
|
+
label: currentHour.getHours().toString() //currentHour.toLocaleTimeString([], { hour: 'numeric'})
|
|
113
|
+
});
|
|
114
|
+
currentHour.setHours(currentHour.getHours() + 2);
|
|
115
|
+
}
|
|
116
|
+
currentHour.setHours(currentHour.getHours() + 1);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
class SdsTimelineComponent {
|
|
122
|
+
constructor() {
|
|
123
|
+
/**
|
|
124
|
+
* The start date and time for the timeline.
|
|
125
|
+
*
|
|
126
|
+
* @type {Date}
|
|
127
|
+
* @memberof SdsTimelineComponent
|
|
128
|
+
*/
|
|
129
|
+
this.start = new Date();
|
|
130
|
+
/**
|
|
131
|
+
* The end date and time for the timeline.
|
|
132
|
+
*
|
|
133
|
+
* @type {Date}
|
|
134
|
+
* @memberof SdsTimelineComponent
|
|
135
|
+
*/
|
|
136
|
+
this.end = new Date();
|
|
137
|
+
/**
|
|
138
|
+
* The items to be displayed on the timeline. Specify data if you need
|
|
139
|
+
* additional data for custom rendering of the items.
|
|
140
|
+
*
|
|
141
|
+
* @type {TimelineItem[]}
|
|
142
|
+
* @memberof SdsTimelineComponent
|
|
143
|
+
*/
|
|
144
|
+
this.items = [];
|
|
145
|
+
/**
|
|
146
|
+
* The template to be used for custom rendering of the items.
|
|
147
|
+
*
|
|
148
|
+
* @type {(TemplateRef<any> | undefined)}
|
|
149
|
+
* @memberof SdsTimelineComponent
|
|
150
|
+
*/
|
|
151
|
+
this.itemTemplate = undefined;
|
|
152
|
+
/**
|
|
153
|
+
* The frequency of the ticks on the timeline.
|
|
154
|
+
*
|
|
155
|
+
* @type {TimelineTickFrequency}
|
|
156
|
+
* @memberof SdsTimelineComponent
|
|
157
|
+
*/
|
|
158
|
+
this.tickFrequency = 'hourly';
|
|
159
|
+
/**
|
|
160
|
+
* The current zoom level of the timeline. In percent.
|
|
161
|
+
*
|
|
162
|
+
* @type {number}
|
|
163
|
+
* @memberof SdsTimelineComponent
|
|
164
|
+
*/
|
|
165
|
+
this.zoomPercent = 100;
|
|
166
|
+
/**
|
|
167
|
+
* The maximum allowed zoom level of the timeline. In percent.
|
|
168
|
+
*
|
|
169
|
+
* @type {number}
|
|
170
|
+
* @memberof SdsTimelineComponent
|
|
171
|
+
*/
|
|
172
|
+
this.maxZoomPercent = 500;
|
|
173
|
+
/**
|
|
174
|
+
* Whether to show hour labels.
|
|
175
|
+
*
|
|
176
|
+
* @type {boolean}
|
|
177
|
+
* @memberof SdsTimelineComponent
|
|
178
|
+
*/
|
|
179
|
+
this.showHourLabels = true;
|
|
180
|
+
/**
|
|
181
|
+
* Whether to show day labels.
|
|
182
|
+
*
|
|
183
|
+
* @type {boolean}
|
|
184
|
+
* @memberof SdsTimelineComponent
|
|
185
|
+
*/
|
|
186
|
+
this.showDayLabels = false;
|
|
187
|
+
/**
|
|
188
|
+
* The height of the timeline. Default is 2rem.
|
|
189
|
+
*
|
|
190
|
+
* @type {string}
|
|
191
|
+
* @memberof SdsTimelineComponent
|
|
192
|
+
*/
|
|
193
|
+
this.timelineHeight = '2rem';
|
|
194
|
+
/**
|
|
195
|
+
* Whether to enable zoom and drag functionality.
|
|
196
|
+
*
|
|
197
|
+
* @type {boolean}
|
|
198
|
+
* @memberof SdsTimelineComponent
|
|
199
|
+
*/
|
|
200
|
+
this.enableZoomAndDrag = true;
|
|
201
|
+
/**
|
|
202
|
+
* Number of minutes added to start and stop to fit the data on the edges
|
|
203
|
+
*
|
|
204
|
+
* @type {number}
|
|
205
|
+
* @memberof SdsTimelineComponent
|
|
206
|
+
*/
|
|
207
|
+
this.offSetMinutes = 15;
|
|
208
|
+
// protected
|
|
209
|
+
this.hourTicks = [];
|
|
210
|
+
this.hourLabels = [];
|
|
211
|
+
this.dayLabels = [];
|
|
212
|
+
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes);
|
|
213
|
+
this.presentationItems = [];
|
|
214
|
+
this.viewOffsetPercent = 0;
|
|
215
|
+
this.isDragging = false;
|
|
216
|
+
this.initialDragX = 0;
|
|
217
|
+
this.viewOffsetPercentDragStart = 0;
|
|
218
|
+
}
|
|
219
|
+
ngAfterViewInit() {
|
|
220
|
+
this.generateTicks();
|
|
221
|
+
}
|
|
222
|
+
ngOnChanges(changes) {
|
|
223
|
+
if (this.start && this.end) {
|
|
224
|
+
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes);
|
|
225
|
+
this.generateTicks();
|
|
226
|
+
this.generateInternalTimelineItems();
|
|
227
|
+
}
|
|
228
|
+
if (changes['start'] || changes['end']) {
|
|
229
|
+
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes);
|
|
230
|
+
}
|
|
231
|
+
if (changes['items']) {
|
|
232
|
+
this.generateInternalTimelineItems();
|
|
233
|
+
}
|
|
234
|
+
if (changes['zoomPercent']) {
|
|
235
|
+
this.viewOffsetPercent = (this.zoomPercent - 100) / -2;
|
|
236
|
+
}
|
|
237
|
+
if (changes['showDayLabels'] || changes['showHourLabels']) {
|
|
238
|
+
this.generateTicks();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
ngOnInit() { }
|
|
242
|
+
//#region mouse wheel zoom
|
|
243
|
+
onScroll(event) {
|
|
244
|
+
if (this.enableZoomAndDrag) {
|
|
245
|
+
event.preventDefault();
|
|
246
|
+
const delta = Math.sign(event.deltaY);
|
|
247
|
+
const newZoomPercent = Math.min(Math.max(this.zoomPercent + -delta * 20, 100), this.maxZoomPercent);
|
|
248
|
+
const deltaZoomPercent = newZoomPercent - this.zoomPercent;
|
|
249
|
+
this.zoomPercent = newZoomPercent;
|
|
250
|
+
// get the relative position of the cursor on the viewport so we can zoom in into this position
|
|
251
|
+
const x = event.clientX - this._viewport?.nativeElement.getBoundingClientRect().left;
|
|
252
|
+
const cursorRelativePosition = x / this._viewport?.nativeElement.getBoundingClientRect().width;
|
|
253
|
+
this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;
|
|
254
|
+
this.constrainOffset();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//#endregion
|
|
258
|
+
//#region dragging
|
|
259
|
+
onDragStart(event) {
|
|
260
|
+
if (this.enableZoomAndDrag) {
|
|
261
|
+
event.preventDefault();
|
|
262
|
+
this.isDragging = true;
|
|
263
|
+
this.viewOffsetPercentDragStart = this.viewOffsetPercent;
|
|
264
|
+
if (event instanceof MouseEvent) {
|
|
265
|
+
this.initialDragX = event.clientX;
|
|
266
|
+
}
|
|
267
|
+
else if (event instanceof TouchEvent) {
|
|
268
|
+
this.initialDragX = event.touches[0].clientX;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
onDragMove(event) {
|
|
273
|
+
if (this.enableZoomAndDrag) {
|
|
274
|
+
if (this.isDragging) {
|
|
275
|
+
const currentX = event.clientX;
|
|
276
|
+
this.moveElement(currentX);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
onDragMoveTouch(event) {
|
|
281
|
+
if (this.enableZoomAndDrag) {
|
|
282
|
+
if (this.isDragging) {
|
|
283
|
+
const currentX = event.touches[0].clientX;
|
|
284
|
+
this.moveElement(currentX);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
onDragEnd(event) {
|
|
289
|
+
if (this.enableZoomAndDrag) {
|
|
290
|
+
this.isDragging = false;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
moveElement(currentX) {
|
|
294
|
+
const diff = currentX - this.initialDragX;
|
|
295
|
+
if (this._viewport && this._viewport.nativeElement) {
|
|
296
|
+
const diffInPercent = (diff / this._viewport?.nativeElement.getBoundingClientRect().width) * 100;
|
|
297
|
+
this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;
|
|
298
|
+
this.constrainOffset();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
//#endregion
|
|
302
|
+
constrainOffset() {
|
|
303
|
+
if (this.zoomPercent + this.viewOffsetPercent < 100) {
|
|
304
|
+
this.viewOffsetPercent = -this.zoomPercent + 100;
|
|
305
|
+
}
|
|
306
|
+
this.viewOffsetPercent = Math.min(0, this.viewOffsetPercent);
|
|
307
|
+
}
|
|
308
|
+
generateTicks() {
|
|
309
|
+
this.hourTicks = this._timelineService.getHourTicks(this.tickFrequency);
|
|
310
|
+
this.dayLabels = this._timelineService.dayLabels;
|
|
311
|
+
this.hourLabels = this._timelineService.hourLabels;
|
|
312
|
+
}
|
|
313
|
+
generateInternalTimelineItems() {
|
|
314
|
+
this.presentationItems = this.items.map((item) => {
|
|
315
|
+
const startTime = new Date(item.start).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });
|
|
316
|
+
const endTime = new Date(item.end).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });
|
|
317
|
+
const timeRange = `${startTime} - ${endTime}`;
|
|
318
|
+
return {
|
|
319
|
+
data: item.data,
|
|
320
|
+
x: this._timelineService.getX(item.start),
|
|
321
|
+
width: this._timelineService.getWidthFromTime(item.start, item.end),
|
|
322
|
+
hint: item.hint ?? timeRange
|
|
323
|
+
};
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
SdsTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
328
|
+
SdsTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsTimelineComponent, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", itemTemplate: "itemTemplate", tickFrequency: "tickFrequency", zoomPercent: "zoomPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", showDayLabels: "showDayLabels", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngStyle]=\"{'width': 'max(' + item.width +'%, 1px)'}\"\r\n [style.left.%]=\"item.x\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid #bbbbbb;height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;top:20%;height:60%;width:100%;background-color:#4a8399}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimelineComponent, decorators: [{
|
|
330
|
+
type: Component,
|
|
331
|
+
args: [{ selector: 'sds-timeline', template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngStyle]=\"{'width': 'max(' + item.width +'%, 1px)'}\"\r\n [style.left.%]=\"item.x\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid #bbbbbb;height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;top:20%;height:60%;width:100%;background-color:#4a8399}\n"] }]
|
|
332
|
+
}], ctorParameters: function () { return []; }, propDecorators: { start: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], end: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], items: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], itemTemplate: [{
|
|
339
|
+
type: Input
|
|
340
|
+
}], tickFrequency: [{
|
|
341
|
+
type: Input
|
|
342
|
+
}], zoomPercent: [{
|
|
343
|
+
type: Input
|
|
344
|
+
}], maxZoomPercent: [{
|
|
345
|
+
type: Input
|
|
346
|
+
}], showHourLabels: [{
|
|
347
|
+
type: Input
|
|
348
|
+
}], showDayLabels: [{
|
|
349
|
+
type: Input
|
|
350
|
+
}], timelineHeight: [{
|
|
351
|
+
type: Input
|
|
352
|
+
}], enableZoomAndDrag: [{
|
|
353
|
+
type: Input
|
|
354
|
+
}], _viewport: [{
|
|
355
|
+
type: ViewChild,
|
|
356
|
+
args: ['viewport', { static: true }]
|
|
357
|
+
}], onDragMove: [{
|
|
358
|
+
type: HostListener,
|
|
359
|
+
args: ['window:mousemove', ['$event']]
|
|
360
|
+
}], onDragMoveTouch: [{
|
|
361
|
+
type: HostListener,
|
|
362
|
+
args: ['window:touchmove', ['$event']]
|
|
363
|
+
}], onDragEnd: [{
|
|
364
|
+
type: HostListener,
|
|
365
|
+
args: ['window:mouseup', ['$event']]
|
|
366
|
+
}, {
|
|
367
|
+
type: HostListener,
|
|
368
|
+
args: ['window:touchend', ['$event']]
|
|
369
|
+
}] } });
|
|
370
|
+
|
|
371
|
+
class SdsTimelineModule {
|
|
372
|
+
}
|
|
373
|
+
SdsTimelineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
374
|
+
SdsTimelineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimelineModule, declarations: [SdsTimelineComponent], imports: [CommonModule], exports: [SdsTimelineComponent] });
|
|
375
|
+
SdsTimelineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimelineModule, imports: [[
|
|
376
|
+
CommonModule
|
|
377
|
+
]] });
|
|
378
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimelineModule, decorators: [{
|
|
379
|
+
type: NgModule,
|
|
380
|
+
args: [{
|
|
381
|
+
declarations: [
|
|
382
|
+
SdsTimelineComponent
|
|
383
|
+
],
|
|
384
|
+
imports: [
|
|
385
|
+
CommonModule
|
|
386
|
+
],
|
|
387
|
+
exports: [
|
|
388
|
+
SdsTimelineComponent
|
|
389
|
+
],
|
|
390
|
+
}]
|
|
391
|
+
}] });
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Generated bundle index. Do not edit.
|
|
395
|
+
*/
|
|
396
|
+
|
|
397
|
+
export { SdsTimelineComponent, SdsTimelineModule };
|
|
398
|
+
//# sourceMappingURL=spicainternational-ngx-sds-components-src-lib-timeline.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-timeline.mjs","sources":["../../../projects/ngx-sds-components/src/lib/timeline/services/timeline.service.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.html","../../../projects/ngx-sds-components/src/lib/timeline/timeline.module.ts","../../../projects/ngx-sds-components/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { TimelineIntervalLabel, TimelineTick } from '../models/timeline.model';\r\nimport { TimelineTickFrequency } from '../types/timeline.types';\r\n\r\nexport class SdsTimelineService {\r\n\r\n private start: Date = new Date();\r\n private end: Date = new Date();\r\n\r\n private widthPercentPerMinute: number;\r\n\r\n private hourTicks: TimelineTick[] = [];\r\n public dayLabels: TimelineIntervalLabel[] = [];\r\n public hourLabels: TimelineIntervalLabel[] = [];\r\n \r\n constructor(start: Date, end: Date, offSetMinutes: number) {\r\n this.start = new Date(start);\r\n this.start.setMinutes(this.start.getMinutes() - offSetMinutes);\r\n this.end = new Date(end); \r\n this.end.setMinutes(this.end.getMinutes() + offSetMinutes);\r\n this.widthPercentPerMinute = (100 / this.diffInMinutes(start, end));\r\n\r\n this.initHourTicks();\r\n this.initDayLabels();\r\n this.initHourLabels();\r\n }\r\n\r\n public getX(time: Date): number {\r\n return this.diffInMinutes(this.start, time) * this.widthPercentPerMinute; \r\n }\r\n\r\n public getWidthFromMinutes(minutes: number): number {\r\n return minutes * this.widthPercentPerMinute;\r\n }\r\n\r\n public getWidthFromTime(start: Date, end: Date): number {\r\n return this.getWidthFromMinutes(this.diffInMinutes(start, end));\r\n }\r\n\r\n public getTick(time: Date): TimelineTick {\r\n return {\r\n date: new Date(time),\r\n x: this.getX(time),\r\n } \r\n }\r\n \r\n public getHourTicks(frequency: TimelineTickFrequency = 'hourly'): TimelineTick[] {\r\n if (frequency == 'hourly') {\r\n return this.hourTicks;\r\n } else if (frequency == '3hrs') {\r\n return this.hourTicks.filter((tick, index) => index % 3 == 0)\r\n } else if (frequency == '6hrs') {\r\n return this.hourTicks.filter((tick, index) => index % 6 == 0)\r\n }\r\n return []\r\n }\r\n\r\n\r\n //#region Private Methods\r\n\r\n private diffInMinutes(start: Date, end: Date): number {\r\n return (end.getTime() - start.getTime()) / (1000 * 60);\r\n }\r\n\r\n private roundHoursUp(time: Date): Date {\r\n \r\n let newTime = new Date(time);\r\n \r\n if (newTime.getMinutes() > 0 || newTime.getSeconds() > 0 || newTime.getMilliseconds() > 0) {\r\n newTime.setHours(newTime.getHours() + 1);\r\n }\r\n newTime.setMinutes(0, 0, 0);\r\n return newTime;\r\n }\r\n\r\n\r\n private roundHoursDown(time: Date) {\r\n let newTime = new Date(time);\r\n newTime.setMinutes(0, 0, 0);\r\n return newTime;\r\n }\r\n \r\n\r\n private initHourTicks(): void {\r\n this.hourTicks = [];\r\n\r\n // get first whole hour from start date\r\n let startHour = this.roundHoursUp(this.start);\r\n\r\n // get last whole hour from end date\r\n let endHour = this.roundHoursDown(this.end);\r\n\r\n let currentHour = new Date(startHour)\r\n while (currentHour <= endHour) {\r\n this.hourTicks.push(this.getTick(currentHour));\r\n currentHour.setHours(currentHour.getHours() + 1);\r\n }\r\n }\r\n\r\n private initDayLabels(): void {\r\n this.dayLabels = [];\r\n\r\n // get start date at the beginning of the day\r\n let startDate = new Date(this.start);\r\n startDate.setHours(0, 0, 0, 0);\r\n\r\n // get end date at the end of the day\r\n let endDate = new Date(this.end);\r\n endDate.setHours(23, 59, 59, 999);\r\n\r\n let currentDate = new Date(startDate);\r\n while (currentDate <= endDate) {\r\n let endOfCurrentDay = new Date(currentDate);\r\n endOfCurrentDay.setHours(23, 59, 59, 999);\r\n\r\n this.dayLabels.push({\r\n // date: new Date(currentDate),\r\n x: this.getX(new Date(currentDate)),\r\n width: this.getWidthFromTime(currentDate, endOfCurrentDay),\r\n label: currentDate.toLocaleDateString([], { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' })\r\n });\r\n currentDate.setDate(currentDate.getDate() + 1); \r\n }\r\n } \r\n \r\n private initHourLabels(): void {\r\n\r\n // get first whole hour from start date\r\n let startHour = this.roundHoursUp(this.start);\r\n // get last whole hour from end date\r\n let endHour = this.roundHoursDown(this.end);\r\n\r\n let currentHour = new Date(startHour)\r\n while (currentHour <= endHour) {\r\n if (currentHour.getHours() % 3 === 0) {\r\n let labelStartTime = new Date(currentHour);\r\n labelStartTime.setMinutes(-30);\r\n this.hourLabels.push(\r\n {\r\n x: this.getX(labelStartTime),\r\n width: this.getWidthFromMinutes(60),\r\n label: currentHour.getHours().toString() //currentHour.toLocaleTimeString([], { hour: 'numeric'})\r\n }\r\n );\r\n currentHour.setHours(currentHour.getHours() + 2);\r\n }\r\n currentHour.setHours(currentHour.getHours() + 1);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { TimelineTickFrequency } from '../types/timeline.types';\r\nimport { SdsTimelineService } from '../services/timeline.service';\r\nimport {\r\n TimelineIntervalLabel,\r\n TimelineItem,\r\n TimelineItemPresentation,\r\n TimelineTick,\r\n} from '../models/timeline.model';\r\n\r\n@Component({\r\n selector: 'sds-timeline',\r\n templateUrl: './timeline.component.html',\r\n styleUrls: ['./timeline.component.scss'],\r\n})\r\nexport class SdsTimelineComponent implements OnInit, OnChanges, AfterViewInit {\r\n /**\r\n * The start date and time for the timeline.\r\n *\r\n * @type {Date}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() start: Date = new Date();\r\n\r\n /**\r\n * The end date and time for the timeline.\r\n *\r\n * @type {Date}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() end: Date = new Date();\r\n\r\n /**\r\n * The items to be displayed on the timeline. Specify data if you need \r\n * additional data for custom rendering of the items.\r\n *\r\n * @type {TimelineItem[]}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() items: TimelineItem[] = [];\r\n\r\n /**\r\n * The template to be used for custom rendering of the items.\r\n *\r\n * @type {(TemplateRef<any> | undefined)}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() itemTemplate: TemplateRef<any> | undefined = undefined;\r\n\r\n /**\r\n * The frequency of the ticks on the timeline.\r\n *\r\n * @type {TimelineTickFrequency}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() tickFrequency: TimelineTickFrequency = 'hourly';\r\n /**\r\n * The current zoom level of the timeline. In percent.\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() zoomPercent: number = 100;\r\n\r\n /**\r\n * The maximum allowed zoom level of the timeline. In percent.\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() maxZoomPercent: number = 500;\r\n\r\n /**\r\n * Whether to show hour labels.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() showHourLabels: boolean = true;\r\n\r\n /**\r\n * Whether to show day labels. \r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() showDayLabels: boolean = false;\r\n\r\n /**\r\n * The height of the timeline. Default is 2rem.\r\n *\r\n * @type {string}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() timelineHeight: string = '2rem';\r\n\r\n /**\r\n * Whether to enable zoom and drag functionality.\r\n *\r\n * @type {boolean}\r\n * @memberof SdsTimelineComponent\r\n */\r\n @Input() enableZoomAndDrag: boolean = true;\r\n\r\n /**\r\n * Number of minutes added to start and stop to fit the data on the edges\r\n *\r\n * @type {number}\r\n * @memberof SdsTimelineComponent\r\n */\r\n offSetMinutes: number = 15;\r\n\r\n // protected\r\n hourTicks: TimelineTick[] = [];\r\n hourLabels: TimelineIntervalLabel[] = [];\r\n dayLabels: TimelineIntervalLabel[] = [];\r\n\r\n private _timelineService: SdsTimelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n\r\n public presentationItems: TimelineItemPresentation[] = [];\r\n\r\n public viewOffsetPercent = 0;\r\n\r\n public isDragging = false;\r\n public initialDragX = 0;\r\n\r\n private viewOffsetPercentDragStart = 0;\r\n\r\n @ViewChild('viewport', { static: true }) _viewport: ElementRef | undefined;\r\n\r\n constructor() {}\r\n\r\n ngAfterViewInit(): void {\r\n this.generateTicks();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.start && this.end) {\r\n this._timelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n this.generateTicks();\r\n this.generateInternalTimelineItems();\r\n }\r\n\r\n if (changes['start'] || changes['end']) {\r\n this._timelineService = new SdsTimelineService(\r\n this.start,\r\n this.end,\r\n this.offSetMinutes\r\n );\r\n }\r\n\r\n if (changes['items']) {\r\n this.generateInternalTimelineItems();\r\n }\r\n\r\n if (changes['zoomPercent']) {\r\n this.viewOffsetPercent = (this.zoomPercent - 100) / -2;\r\n }\r\n\r\n if (changes['showDayLabels'] || changes['showHourLabels']) {\r\n this.generateTicks();\r\n } \r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n //#region mouse wheel zoom\r\n onScroll(event: WheelEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n\r\n event.preventDefault();\r\n\r\n const delta = Math.sign(event.deltaY);\r\n const newZoomPercent = Math.min(\r\n Math.max(this.zoomPercent + -delta * 20, 100),\r\n this.maxZoomPercent\r\n );\r\n const deltaZoomPercent = newZoomPercent - this.zoomPercent;\r\n this.zoomPercent = newZoomPercent;\r\n \r\n // get the relative position of the cursor on the viewport so we can zoom in into this position\r\n const x = event.clientX - this._viewport?.nativeElement.getBoundingClientRect().left;\r\n const cursorRelativePosition = x / this._viewport?.nativeElement.getBoundingClientRect().width;\r\n this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;\r\n\r\n this.constrainOffset();\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region dragging\r\n \r\n public onDragStart(event: MouseEvent | TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n event.preventDefault();\r\n this.isDragging = true;\r\n this.viewOffsetPercentDragStart = this.viewOffsetPercent;\r\n\r\n if (event instanceof MouseEvent) {\r\n this.initialDragX = event.clientX;\r\n } else if (event instanceof TouchEvent) {\r\n this.initialDragX = event.touches[0].clientX;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:mousemove', ['$event'])\r\n public onDragMove(event: MouseEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n if (this.isDragging) {\r\n const currentX = event.clientX;\r\n this.moveElement(currentX);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:touchmove', ['$event'])\r\n onDragMoveTouch(event: TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n if (this.isDragging) {\r\n const currentX = event.touches[0].clientX;\r\n this.moveElement(currentX);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:mouseup', ['$event'])\r\n @HostListener('window:touchend', ['$event'])\r\n public onDragEnd(event: MouseEvent | TouchEvent): void {\r\n if (this.enableZoomAndDrag) {\r\n this.isDragging = false;\r\n }\r\n }\r\n\r\n private moveElement(currentX: number): void {\r\n const diff = currentX - this.initialDragX;\r\n if (this._viewport && this._viewport.nativeElement) {\r\n const diffInPercent = (diff / this._viewport?.nativeElement.getBoundingClientRect().width) * 100;\r\n this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;\r\n this.constrainOffset();\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n private constrainOffset(): void {\r\n if (this.zoomPercent + this.viewOffsetPercent < 100) {\r\n this.viewOffsetPercent = -this.zoomPercent + 100;\r\n }\r\n this.viewOffsetPercent = Math.min(0, this.viewOffsetPercent);\r\n }\r\n\r\n private generateTicks(): void {\r\n this.hourTicks = this._timelineService.getHourTicks(this.tickFrequency);\r\n this.dayLabels = this._timelineService.dayLabels;\r\n this.hourLabels = this._timelineService.hourLabels;\r\n }\r\n\r\n private generateInternalTimelineItems(): void {\r\n this.presentationItems = this.items.map((item) => {\r\n\r\n const startTime = new Date(item.start).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\r\n const endTime = new Date(item.end).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\r\n const timeRange = `${startTime} - ${endTime}`;\r\n \r\n return {\r\n data: item.data,\r\n x: this._timelineService.getX(item.start),\r\n width: this._timelineService.getWidthFromTime(\r\n item.start,\r\n item.end\r\n ),\r\n hint: item.hint ?? timeRange\r\n };\r\n });\r\n }\r\n}\r\n","<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label font-monospace\" \r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <small>\r\n {{label.label}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngStyle]=\"{'width': 'max(' + item.width +'%, 1px)'}\"\r\n [style.left.%]=\"item.x\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsTimelineComponent } from './components/timeline.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsTimelineComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n SdsTimelineComponent\r\n ],\r\n})\r\nexport class SdsTimelineModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export * from '@spicainternational/ngx-sds-components/src/lib/quick-info';
|
|
|
23
23
|
export * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';
|
|
24
24
|
export * from '@spicainternational/ngx-sds-components/src/lib/side-bar';
|
|
25
25
|
export * from '@spicainternational/ngx-sds-components/src/lib/static-value';
|
|
26
|
+
export * from '@spicainternational/ngx-sds-components/src/lib/timeline';
|
|
26
27
|
export * from '@spicainternational/ngx-sds-components/src/lib/timer';
|
|
27
28
|
export * from '@spicainternational/ngx-sds-components/src/lib/tooltip';
|
|
28
29
|
export * from '@spicainternational/ngx-sds-components/src/lib/table-actions';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components.mjs","sources":["../../../projects/ngx-sds-components/src/public-api.ts","../../../projects/ngx-sds-components/src/spicainternational-ngx-sds-components.ts"],"sourcesContent":["/*\r\n * Public API Surface of ngx-sds-components\r\n */\r\n\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/avatar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/badge';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/callout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/color-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/ellipsis';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/expansion-panel';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-pipes';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-pipe';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/highlight-text';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/intersection';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/keyboard-shortcut';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/layout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/message';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/modal';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/navigation';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/number-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/page-header';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/pane';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/quick-info';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/side-bar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/static-value';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/timer';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/tooltip';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/table-actions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components.mjs","sources":["../../../projects/ngx-sds-components/src/public-api.ts","../../../projects/ngx-sds-components/src/spicainternational-ngx-sds-components.ts"],"sourcesContent":["/*\r\n * Public API Surface of ngx-sds-components\r\n */\r\n\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/app-switcher';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/avatar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/badge';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/callout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/color-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/ellipsis';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/expansion-panel';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-picker';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/date-pipes';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-pipe';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/duration-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/highlight-text';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/intersection';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/keyboard-shortcut';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/layout';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/message';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/modal';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/navigation';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/number-box';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/page-header';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/pane';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/quick-info';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/side-bar';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/static-value';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/timeline';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/timer';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/tooltip';\r\nexport * from '@spicainternational/ngx-sds-components/src/lib/table-actions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spicainternational/ngx-sds-components",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.31.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Spica design system angular components.",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -247,6 +247,14 @@
|
|
|
247
247
|
"node": "./fesm2015/spicainternational-ngx-sds-components-src-lib-table-actions.mjs",
|
|
248
248
|
"default": "./fesm2020/spicainternational-ngx-sds-components-src-lib-table-actions.mjs"
|
|
249
249
|
},
|
|
250
|
+
"./src/lib/timeline": {
|
|
251
|
+
"types": "./src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.d.ts",
|
|
252
|
+
"esm2020": "./esm2020/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.mjs",
|
|
253
|
+
"es2020": "./fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs",
|
|
254
|
+
"es2015": "./fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs",
|
|
255
|
+
"node": "./fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs",
|
|
256
|
+
"default": "./fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs"
|
|
257
|
+
},
|
|
250
258
|
"./src/lib/timer": {
|
|
251
259
|
"types": "./src/lib/timer/spicainternational-ngx-sds-components-src-lib-timer.d.ts",
|
|
252
260
|
"esm2020": "./esm2020/src/lib/timer/spicainternational-ngx-sds-components-src-lib-timer.mjs",
|
package/public-api.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export * from '@spicainternational/ngx-sds-components/src/lib/quick-info';
|
|
|
23
23
|
export * from '@spicainternational/ngx-sds-components/src/lib/segmented-control';
|
|
24
24
|
export * from '@spicainternational/ngx-sds-components/src/lib/side-bar';
|
|
25
25
|
export * from '@spicainternational/ngx-sds-components/src/lib/static-value';
|
|
26
|
+
export * from '@spicainternational/ngx-sds-components/src/lib/timeline';
|
|
26
27
|
export * from '@spicainternational/ngx-sds-components/src/lib/timer';
|
|
27
28
|
export * from '@spicainternational/ngx-sds-components/src/lib/tooltip';
|
|
28
29
|
export * from '@spicainternational/ngx-sds-components/src/lib/table-actions';
|