@tetacom/ng-components 1.1.24 → 1.1.26
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/component/date-picker/date-picker/date-picker.component.d.ts +5 -3
- package/component/date-picker/date-range/date-range.component.d.ts +5 -3
- package/component/three/three-chart/canvas/canvas.component.d.ts +3 -3
- package/component/three/three-chart/service/chart-3d.service.d.ts +1 -1
- package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +21 -13
- package/esm2022/component/date-picker/date-picker/date-picker.component.mjs +21 -17
- package/esm2022/component/date-picker/date-range/date-range.component.mjs +20 -16
- package/esm2022/component/three/three-chart/axes-3d/axes-3d.component.mjs +3 -3
- package/esm2022/component/three/three-chart/canvas/canvas.component.mjs +4 -4
- package/esm2022/component/three/three-chart/scene/scene.component.mjs +3 -3
- package/esm2022/component/three/three-chart/service/chart-3d.service.mjs +4 -4
- package/esm2022/component/three/three-chart/three-chart.component.mjs +10 -4
- package/esm2022/locale/en.mjs +7 -12
- package/esm2022/locale/ru.mjs +7 -12
- package/esm2022/locale/teta-localisation.mjs +1 -1
- package/fesm2022/tetacom-ng-components.mjs +145 -135
- package/fesm2022/tetacom-ng-components.mjs.map +1 -1
- package/locale/teta-localisation.d.ts +5 -18
- package/package.json +1 -1
- package/style/chips.scss +5 -4
- package/style/tag.scss +7 -2
|
@@ -7,16 +7,16 @@ import { HttpClient, HttpClientModule } from '@angular/common/http';
|
|
|
7
7
|
import { map, takeWhile, throttleTime, filter, tap as tap$1, withLatestFrom } from 'rxjs/operators';
|
|
8
8
|
import * as i3 from '@angular/forms';
|
|
9
9
|
import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators, ControlContainer, NgForm, NgModelGroup, FormGroup } from '@angular/forms';
|
|
10
|
-
import * as
|
|
10
|
+
import * as i7 from '@maskito/angular';
|
|
11
11
|
import { MaskitoModule } from '@maskito/angular';
|
|
12
12
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
13
13
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
14
14
|
import dayjs from 'dayjs';
|
|
15
|
-
import { ReplaySubject, BehaviorSubject, combineLatest, takeWhile as takeWhile$1, filter as filter$1, map as map$1, shareReplay, fromEvent, tap, Subject, merge, Observable, pipe, share } from 'rxjs';
|
|
15
|
+
import { ReplaySubject, BehaviorSubject, combineLatest, takeWhile as takeWhile$1, filter as filter$1, map as map$1, lastValueFrom, take, shareReplay, fromEvent, tap, Subject, merge, Observable, pipe, share } from 'rxjs';
|
|
16
16
|
import { maskitoDateTimeOptionsGenerator, maskitoDateOptionsGenerator, maskitoDateRangeOptionsGenerator } from '@maskito/kit';
|
|
17
17
|
import * as i1$2 from '@ngneat/transloco';
|
|
18
18
|
import { TranslocoModule, TRANSLOCO_SCOPE } from '@ngneat/transloco';
|
|
19
|
-
import * as i6
|
|
19
|
+
import * as i6 from '@angular/cdk/scrolling';
|
|
20
20
|
import { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
21
21
|
import objectHash from 'object-hash';
|
|
22
22
|
import * as d3 from 'd3';
|
|
@@ -2979,6 +2979,87 @@ class BasePicker {
|
|
|
2979
2979
|
}
|
|
2980
2980
|
}
|
|
2981
2981
|
|
|
2982
|
+
const enLocale = {
|
|
2983
|
+
apply: 'Apply',
|
|
2984
|
+
cancel: 'Cancel',
|
|
2985
|
+
clear: 'Clear',
|
|
2986
|
+
pin: 'Pin',
|
|
2987
|
+
unpin: 'Unpin',
|
|
2988
|
+
sortAsc: 'Sort asc',
|
|
2989
|
+
sortDesc: 'Sort desc',
|
|
2990
|
+
clearSort: 'Clear sort',
|
|
2991
|
+
clearAllSort: 'Clear all sort',
|
|
2992
|
+
clearFilter: 'Clear filter',
|
|
2993
|
+
clearAllFilters: 'Clear all filters',
|
|
2994
|
+
dateRangeMask: 'dd.mm.yyyy - dd.mm.yyyy',
|
|
2995
|
+
dateMask: 'dd.mm.yyyy',
|
|
2996
|
+
dateTimeMask: 'dd.mm.yyyy, hh:mm',
|
|
2997
|
+
autosizeColumn: 'Autosize column',
|
|
2998
|
+
autosizeAll: 'Autosize all columns',
|
|
2999
|
+
resetColumnsSize: 'Reset columns settings',
|
|
3000
|
+
from: 'From',
|
|
3001
|
+
to: 'To',
|
|
3002
|
+
all: 'All',
|
|
3003
|
+
min: 'Min',
|
|
3004
|
+
max: 'Max',
|
|
3005
|
+
sum: 'Sum',
|
|
3006
|
+
avg: 'Avg',
|
|
3007
|
+
search: 'Search',
|
|
3008
|
+
selected: 'Selected',
|
|
3009
|
+
notSelected: 'Not selected',
|
|
3010
|
+
notFound: 'Not found',
|
|
3011
|
+
yes: 'Yes',
|
|
3012
|
+
no: 'No',
|
|
3013
|
+
months: [
|
|
3014
|
+
'January',
|
|
3015
|
+
'February',
|
|
3016
|
+
'March',
|
|
3017
|
+
'April',
|
|
3018
|
+
'May',
|
|
3019
|
+
'June',
|
|
3020
|
+
'July',
|
|
3021
|
+
'August',
|
|
3022
|
+
'September',
|
|
3023
|
+
'October',
|
|
3024
|
+
'November',
|
|
3025
|
+
'December',
|
|
3026
|
+
],
|
|
3027
|
+
days: [
|
|
3028
|
+
'Sunday',
|
|
3029
|
+
'Monday',
|
|
3030
|
+
'Tuesday',
|
|
3031
|
+
'Wednesday',
|
|
3032
|
+
'Thursday',
|
|
3033
|
+
'Friday',
|
|
3034
|
+
'Saturday',
|
|
3035
|
+
],
|
|
3036
|
+
daysShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
|
3037
|
+
};
|
|
3038
|
+
|
|
3039
|
+
class TetaConfigService {
|
|
3040
|
+
defaultLocale = enLocale;
|
|
3041
|
+
locale$ = new BehaviorSubject(this.defaultLocale);
|
|
3042
|
+
locale = this.locale$.asObservable();
|
|
3043
|
+
constructor() {
|
|
3044
|
+
}
|
|
3045
|
+
setLocale(newLocale) {
|
|
3046
|
+
if (newLocale) {
|
|
3047
|
+
this.locale$.next(newLocale);
|
|
3048
|
+
}
|
|
3049
|
+
else {
|
|
3050
|
+
this.locale$.next(this.defaultLocale);
|
|
3051
|
+
}
|
|
3052
|
+
}
|
|
3053
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TetaConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3054
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TetaConfigService, providedIn: 'root' });
|
|
3055
|
+
}
|
|
3056
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TetaConfigService, decorators: [{
|
|
3057
|
+
type: Injectable,
|
|
3058
|
+
args: [{
|
|
3059
|
+
providedIn: 'root'
|
|
3060
|
+
}]
|
|
3061
|
+
}], ctorParameters: function () { return []; } });
|
|
3062
|
+
|
|
2982
3063
|
const DATE_PICKER_CONTROL_VALUE_ACCESSOR = {
|
|
2983
3064
|
provide: NG_VALUE_ACCESSOR,
|
|
2984
3065
|
useExisting: forwardRef(() => DatePickerComponent),
|
|
@@ -2988,6 +3069,7 @@ class DatePickerComponent extends BasePicker {
|
|
|
2988
3069
|
_elementRef;
|
|
2989
3070
|
_cdr;
|
|
2990
3071
|
datePipe;
|
|
3072
|
+
localeService;
|
|
2991
3073
|
date = null;
|
|
2992
3074
|
locale = 'ru';
|
|
2993
3075
|
showTime = false;
|
|
@@ -3013,11 +3095,12 @@ class DatePickerComponent extends BasePicker {
|
|
|
3013
3095
|
mask = '';
|
|
3014
3096
|
classDatepicker = true;
|
|
3015
3097
|
tabindex = 0;
|
|
3016
|
-
constructor(_elementRef, _cdr, datePipe) {
|
|
3098
|
+
constructor(_elementRef, _cdr, datePipe, localeService) {
|
|
3017
3099
|
super(_elementRef, _cdr, datePipe);
|
|
3018
3100
|
this._elementRef = _elementRef;
|
|
3019
3101
|
this._cdr = _cdr;
|
|
3020
3102
|
this.datePipe = datePipe;
|
|
3103
|
+
this.localeService = localeService;
|
|
3021
3104
|
}
|
|
3022
3105
|
ngOnInit() {
|
|
3023
3106
|
if (!this.date) {
|
|
@@ -3029,7 +3112,8 @@ class DatePickerComponent extends BasePicker {
|
|
|
3029
3112
|
}
|
|
3030
3113
|
this.prepareInput();
|
|
3031
3114
|
}
|
|
3032
|
-
prepareInput() {
|
|
3115
|
+
async prepareInput() {
|
|
3116
|
+
const config = await lastValueFrom(this.localeService.locale.pipe(take(1)));
|
|
3033
3117
|
const str = this.date ? this.getLocaleString(this.date) : '';
|
|
3034
3118
|
let option;
|
|
3035
3119
|
const setMinMax = () => {
|
|
@@ -3041,7 +3125,7 @@ class DatePickerComponent extends BasePicker {
|
|
|
3041
3125
|
}
|
|
3042
3126
|
};
|
|
3043
3127
|
if (this.showTime) {
|
|
3044
|
-
this.mask =
|
|
3128
|
+
this.mask = config.dateTimeMask;
|
|
3045
3129
|
option = {
|
|
3046
3130
|
dateMode: 'dd/mm/yyyy',
|
|
3047
3131
|
timeMode: 'HH:MM',
|
|
@@ -3051,7 +3135,7 @@ class DatePickerComponent extends BasePicker {
|
|
|
3051
3135
|
this.maskitoOptions = maskitoDateTimeOptionsGenerator(option);
|
|
3052
3136
|
}
|
|
3053
3137
|
else {
|
|
3054
|
-
this.mask =
|
|
3138
|
+
this.mask = config.dateMask;
|
|
3055
3139
|
option = {
|
|
3056
3140
|
mode: 'dd/mm/yyyy',
|
|
3057
3141
|
separator: '.',
|
|
@@ -3115,13 +3199,13 @@ class DatePickerComponent extends BasePicker {
|
|
|
3115
3199
|
}
|
|
3116
3200
|
}
|
|
3117
3201
|
}
|
|
3118
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
3119
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: DatePickerComponent, selector: "teta-date-picker", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minYearDate: "minYearDate", maxYearDate: "maxYearDate" }, outputs: { selectDate: "selectDate" }, host: { properties: { "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf='{\n selectedDate:selectedDate | async\n } as data'\n class='row row_auto'\n [appendToBody]='appendToBody'\n [backdrop]='backdrop'\n [open]='open'\n (openChange)='openChange($event)'\n [viewType]='viewType'\n [disabled]='disabled'\n [verticalAlign]='verticalAlign'\n [align]='align'\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class='row row_auto flex'>\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class='row row_auto position-relative font-body-3 align-center'>\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]='disabled' #input style='z-index: 1'\n class='row_auto border-0'\n (keydown)='checkEnter($event)'\n [(ngModel)]='inputText'\n (ngModelChange)='changeInput($event)'\n [maskito]='maskitoOptions'>\n <div (click)='input.focus()' *ngIf='data.selectedDate||allowNull' class='position-absolute color-text-10'\n style='top:-0.3px;cursor: text;user-select: none'>{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent\n (click)='$event.preventDefault()'>\n <!-- <ng-container *ngIf='open'>-->\n <teta-date-calendar [isDateNull]='date===null'\n [open]='open'\n [max]='maxDate'\n [min]='minDate'\n (setDate)='changeSelectedDate($event)'\n [selectedDate]='data.selectedDate'\n [viewType]='viewType' [locale]='locale'></teta-date-calendar>\n <!-- </ng-container>-->\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type:
|
|
3202
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DatePipe }, { token: TetaConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3203
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: DatePickerComponent, selector: "teta-date-picker", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minYearDate: "minYearDate", maxYearDate: "maxYearDate" }, outputs: { selectDate: "selectDate" }, host: { properties: { "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf='{\n selectedDate:selectedDate | async\n } as data'\n class='row row_auto'\n [appendToBody]='appendToBody'\n [backdrop]='backdrop'\n [open]='open'\n (openChange)='openChange($event)'\n [viewType]='viewType'\n [disabled]='disabled'\n [verticalAlign]='verticalAlign'\n [align]='align'\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class='row row_auto flex'>\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class='row row_auto position-relative font-body-3 align-center'>\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]='disabled' #input style='z-index: 1'\n class='row_auto border-0'\n (keydown)='checkEnter($event)'\n [(ngModel)]='inputText'\n (ngModelChange)='changeInput($event)'\n [maskito]='maskitoOptions'>\n <div (click)='input.focus()' *ngIf='data.selectedDate||allowNull' class='position-absolute color-text-10'\n style='top:-0.3px;cursor: text;user-select: none'>{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent\n (click)='$event.preventDefault()'>\n <!-- <ng-container *ngIf='open'>-->\n <teta-date-calendar [isDateNull]='date===null'\n [open]='open'\n [max]='maxDate'\n [min]='minDate'\n (setDate)='changeSelectedDate($event)'\n [selectedDate]='data.selectedDate'\n [viewType]='viewType' [locale]='locale'></teta-date-calendar>\n <!-- </ng-container>-->\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i7.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: InputComponent, selector: "teta-input", inputs: ["label", "hint", "viewType", "horizontal", "required"] }, { kind: "component", type: DateCalendarComponent, selector: "teta-date-calendar", inputs: ["selectedDate", "locale", "open", "viewType", "min", "isDateNull", "max"], outputs: ["setDate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3120
3204
|
}
|
|
3121
3205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
3122
3206
|
type: Component,
|
|
3123
3207
|
args: [{ selector: 'teta-date-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], template: "<teta-dropdown *ngIf='{\n selectedDate:selectedDate | async\n } as data'\n class='row row_auto'\n [appendToBody]='appendToBody'\n [backdrop]='backdrop'\n [open]='open'\n (openChange)='openChange($event)'\n [viewType]='viewType'\n [disabled]='disabled'\n [verticalAlign]='verticalAlign'\n [align]='align'\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class='row row_auto flex'>\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class='row row_auto position-relative font-body-3 align-center'>\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]='disabled' #input style='z-index: 1'\n class='row_auto border-0'\n (keydown)='checkEnter($event)'\n [(ngModel)]='inputText'\n (ngModelChange)='changeInput($event)'\n [maskito]='maskitoOptions'>\n <div (click)='input.focus()' *ngIf='data.selectedDate||allowNull' class='position-absolute color-text-10'\n style='top:-0.3px;cursor: text;user-select: none'>{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent\n (click)='$event.preventDefault()'>\n <!-- <ng-container *ngIf='open'>-->\n <teta-date-calendar [isDateNull]='date===null'\n [open]='open'\n [max]='maxDate'\n [min]='minDate'\n (setDate)='changeSelectedDate($event)'\n [selectedDate]='data.selectedDate'\n [viewType]='viewType' [locale]='locale'></teta-date-calendar>\n <!-- </ng-container>-->\n </div>\n</teta-dropdown>\n" }]
|
|
3124
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DatePipe }]; }, propDecorators: { date: [{
|
|
3208
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DatePipe }, { type: TetaConfigService }]; }, propDecorators: { date: [{
|
|
3125
3209
|
type: Input
|
|
3126
3210
|
}], locale: [{
|
|
3127
3211
|
type: Input
|
|
@@ -3291,6 +3375,7 @@ class DateRangeComponent extends BasePicker {
|
|
|
3291
3375
|
_cdr;
|
|
3292
3376
|
_elementRef;
|
|
3293
3377
|
datePipe;
|
|
3378
|
+
localeService;
|
|
3294
3379
|
date = { from: null, to: null };
|
|
3295
3380
|
locale = 'ru';
|
|
3296
3381
|
showTime = false;
|
|
@@ -3309,11 +3394,12 @@ class DateRangeComponent extends BasePicker {
|
|
|
3309
3394
|
mask = '';
|
|
3310
3395
|
selectedDate = new ReplaySubject(1);
|
|
3311
3396
|
classDaterange = true;
|
|
3312
|
-
constructor(_cdr, _elementRef, datePipe) {
|
|
3397
|
+
constructor(_cdr, _elementRef, datePipe, localeService) {
|
|
3313
3398
|
super(_elementRef, _cdr, datePipe);
|
|
3314
3399
|
this._cdr = _cdr;
|
|
3315
3400
|
this._elementRef = _elementRef;
|
|
3316
3401
|
this.datePipe = datePipe;
|
|
3402
|
+
this.localeService = localeService;
|
|
3317
3403
|
}
|
|
3318
3404
|
changeSelectedDate(date, selectedDate) {
|
|
3319
3405
|
if (selectedDate.from) {
|
|
@@ -3337,7 +3423,8 @@ class DateRangeComponent extends BasePicker {
|
|
|
3337
3423
|
' - ' +
|
|
3338
3424
|
this.datePipe.transform(new Date(), 'dd.MM.yyyy'));
|
|
3339
3425
|
}
|
|
3340
|
-
prepareInput() {
|
|
3426
|
+
async prepareInput() {
|
|
3427
|
+
const config = await lastValueFrom(this.localeService.locale.pipe(take(1)));
|
|
3341
3428
|
let str = this.getLocaleString(this.date.from) +
|
|
3342
3429
|
' - ' +
|
|
3343
3430
|
this.getLocaleString(this.date.to);
|
|
@@ -3352,7 +3439,7 @@ class DateRangeComponent extends BasePicker {
|
|
|
3352
3439
|
mode: 'dd/mm/yyyy',
|
|
3353
3440
|
separator: '.',
|
|
3354
3441
|
};
|
|
3355
|
-
this.mask =
|
|
3442
|
+
this.mask = config.dateRangeMask;
|
|
3356
3443
|
if (this.minDate) {
|
|
3357
3444
|
option.min = dayjs(new Date(this.minDate)).startOf('day');
|
|
3358
3445
|
}
|
|
@@ -3454,13 +3541,13 @@ class DateRangeComponent extends BasePicker {
|
|
|
3454
3541
|
this.prepareInput();
|
|
3455
3542
|
}
|
|
3456
3543
|
onChange(date) { }
|
|
3457
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
3458
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: DateRangeComponent, selector: "teta-date-range", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull" }, outputs: { selectDate: "selectDate" }, host: { properties: { "class.daterange": "this.classDaterange" } }, providers: [DATE_Range_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf=\"{selectedDate:selectedDate|async}as data\" [appendToBody]=\"appendToBody\" [backdrop]=\"backdrop\"\n class='row row_auto'\n [(open)]=\"open\" (openChange)=\"openChange($event)\" [viewType]=\"viewType\"\n [disabled]=\"disabled\" [verticalAlign]=\"verticalAlign\" [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input [ngClass]=\"{'color-text-90':!disabled}\" [disabled]=\"disabled\" #input style=\"z-index: 1\"\n class=\"border-0 color-text-90\" (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\" (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\">\n <div (click)=\"input.focus()\" *ngIf=\"data.selectedDate||allowNull\" class=\"position-absolute color-text-10\"\n style=\"top:-0.3px;cursor: text;user-select: none\">{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"open\">\n <div class=\"row\">\n <teta-range-calendar [isDateNull]=\"date===null||(date?.from===null&&date?.to===null)\" [open]=\"open\"\n [max]=\"maxDate\"\n [allowNull]=\"allowNull\"\n [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event,data.selectedDate)\"\n [selectedDate]=\"data.selectedDate\"\n [date]=\"date\"\n [viewType]=\"viewType\" [locale]=\"locale\"></teta-range-calendar>\n </div>\n </ng-container>\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type:
|
|
3544
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.DatePipe }, { token: TetaConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3545
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: DateRangeComponent, selector: "teta-date-range", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull" }, outputs: { selectDate: "selectDate" }, host: { properties: { "class.daterange": "this.classDaterange" } }, providers: [DATE_Range_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf=\"{selectedDate:selectedDate|async}as data\" [appendToBody]=\"appendToBody\" [backdrop]=\"backdrop\"\n class='row row_auto'\n [(open)]=\"open\" (openChange)=\"openChange($event)\" [viewType]=\"viewType\"\n [disabled]=\"disabled\" [verticalAlign]=\"verticalAlign\" [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input [ngClass]=\"{'color-text-90':!disabled}\" [disabled]=\"disabled\" #input style=\"z-index: 1\"\n class=\"border-0 color-text-90\" (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\" (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\">\n <div (click)=\"input.focus()\" *ngIf=\"data.selectedDate||allowNull\" class=\"position-absolute color-text-10\"\n style=\"top:-0.3px;cursor: text;user-select: none\">{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"open\">\n <div class=\"row\">\n <teta-range-calendar [isDateNull]=\"date===null||(date?.from===null&&date?.to===null)\" [open]=\"open\"\n [max]=\"maxDate\"\n [allowNull]=\"allowNull\"\n [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event,data.selectedDate)\"\n [selectedDate]=\"data.selectedDate\"\n [date]=\"date\"\n [viewType]=\"viewType\" [locale]=\"locale\"></teta-range-calendar>\n </div>\n </ng-container>\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i7.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: InputComponent, selector: "teta-input", inputs: ["label", "hint", "viewType", "horizontal", "required"] }, { kind: "component", type: RangeCalendarComponent, selector: "teta-range-calendar", inputs: ["locale", "open", "date", "viewType", "allowNull", "selectedDate", "min", "isDateNull", "max"], outputs: ["hoveredDateChange", "setDate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3459
3546
|
}
|
|
3460
3547
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: DateRangeComponent, decorators: [{
|
|
3461
3548
|
type: Component,
|
|
3462
3549
|
args: [{ selector: 'teta-date-range', providers: [DATE_Range_CONTROL_VALUE_ACCESSOR, DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown *ngIf=\"{selectedDate:selectedDate|async}as data\" [appendToBody]=\"appendToBody\" [backdrop]=\"backdrop\"\n class='row row_auto'\n [(open)]=\"open\" (openChange)=\"openChange($event)\" [viewType]=\"viewType\"\n [disabled]=\"disabled\" [verticalAlign]=\"verticalAlign\" [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input [ngClass]=\"{'color-text-90':!disabled}\" [disabled]=\"disabled\" #input style=\"z-index: 1\"\n class=\"border-0 color-text-90\" (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\" (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\">\n <div (click)=\"input.focus()\" *ngIf=\"data.selectedDate||allowNull\" class=\"position-absolute color-text-10\"\n style=\"top:-0.3px;cursor: text;user-select: none\">{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"open\">\n <div class=\"row\">\n <teta-range-calendar [isDateNull]=\"date===null||(date?.from===null&&date?.to===null)\" [open]=\"open\"\n [max]=\"maxDate\"\n [allowNull]=\"allowNull\"\n [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event,data.selectedDate)\"\n [selectedDate]=\"data.selectedDate\"\n [date]=\"date\"\n [viewType]=\"viewType\" [locale]=\"locale\"></teta-range-calendar>\n </div>\n </ng-container>\n </div>\n</teta-dropdown>\n" }]
|
|
3463
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.DatePipe }]; }, propDecorators: { date: [{
|
|
3550
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.DatePipe }, { type: TetaConfigService }]; }, propDecorators: { date: [{
|
|
3464
3551
|
type: Input
|
|
3465
3552
|
}], locale: [{
|
|
3466
3553
|
type: Input
|
|
@@ -4079,92 +4166,6 @@ class NumericFilterValue {
|
|
|
4079
4166
|
}
|
|
4080
4167
|
}
|
|
4081
4168
|
|
|
4082
|
-
const enLocale = {
|
|
4083
|
-
apply: 'Apply',
|
|
4084
|
-
cancel: 'Cancel',
|
|
4085
|
-
clear: 'Clear',
|
|
4086
|
-
pin: 'Pin',
|
|
4087
|
-
unpin: 'Unpin',
|
|
4088
|
-
sortAsc: 'Sort asc',
|
|
4089
|
-
sortDesc: 'Sort desc',
|
|
4090
|
-
clearSort: 'Clear sort',
|
|
4091
|
-
clearAllSort: 'Clear all sort',
|
|
4092
|
-
clearFilter: 'Clear filter',
|
|
4093
|
-
clearAllFilters: 'Clear all filters',
|
|
4094
|
-
autosizeColumn: 'Autosize column',
|
|
4095
|
-
autosizeAll: 'Autosize all columns',
|
|
4096
|
-
resetColumnsSize: 'Reset columns settings',
|
|
4097
|
-
from: 'From',
|
|
4098
|
-
to: 'To',
|
|
4099
|
-
all: 'All',
|
|
4100
|
-
min: 'Min',
|
|
4101
|
-
max: 'Max',
|
|
4102
|
-
sum: 'Sum',
|
|
4103
|
-
avg: 'Avg',
|
|
4104
|
-
search: 'Search',
|
|
4105
|
-
selected: 'Selected',
|
|
4106
|
-
notSelected: 'Not selected',
|
|
4107
|
-
notFound: 'Not found',
|
|
4108
|
-
yes: 'Yes',
|
|
4109
|
-
no: 'No',
|
|
4110
|
-
months: [
|
|
4111
|
-
'January',
|
|
4112
|
-
'February',
|
|
4113
|
-
'March',
|
|
4114
|
-
'April',
|
|
4115
|
-
'May',
|
|
4116
|
-
'June',
|
|
4117
|
-
'July',
|
|
4118
|
-
'August',
|
|
4119
|
-
'September',
|
|
4120
|
-
'October',
|
|
4121
|
-
'November',
|
|
4122
|
-
'December'
|
|
4123
|
-
],
|
|
4124
|
-
days: [
|
|
4125
|
-
'Sunday',
|
|
4126
|
-
'Monday',
|
|
4127
|
-
'Tuesday',
|
|
4128
|
-
'Wednesday',
|
|
4129
|
-
'Thursday',
|
|
4130
|
-
'Friday',
|
|
4131
|
-
'Saturday'
|
|
4132
|
-
],
|
|
4133
|
-
daysShort: [
|
|
4134
|
-
'Su',
|
|
4135
|
-
'Mo',
|
|
4136
|
-
'Tu',
|
|
4137
|
-
'We',
|
|
4138
|
-
'Th',
|
|
4139
|
-
'Fr',
|
|
4140
|
-
'Sa'
|
|
4141
|
-
]
|
|
4142
|
-
};
|
|
4143
|
-
|
|
4144
|
-
class TetaConfigService {
|
|
4145
|
-
defaultLocale = enLocale;
|
|
4146
|
-
locale$ = new BehaviorSubject(this.defaultLocale);
|
|
4147
|
-
locale = this.locale$.asObservable();
|
|
4148
|
-
constructor() {
|
|
4149
|
-
}
|
|
4150
|
-
setLocale(newLocale) {
|
|
4151
|
-
if (newLocale) {
|
|
4152
|
-
this.locale$.next(newLocale);
|
|
4153
|
-
}
|
|
4154
|
-
else {
|
|
4155
|
-
this.locale$.next(this.defaultLocale);
|
|
4156
|
-
}
|
|
4157
|
-
}
|
|
4158
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TetaConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4159
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TetaConfigService, providedIn: 'root' });
|
|
4160
|
-
}
|
|
4161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TetaConfigService, decorators: [{
|
|
4162
|
-
type: Injectable,
|
|
4163
|
-
args: [{
|
|
4164
|
-
providedIn: 'root'
|
|
4165
|
-
}]
|
|
4166
|
-
}], ctorParameters: function () { return []; } });
|
|
4167
|
-
|
|
4168
4169
|
class NumericFilterComponent extends FilterComponentBase {
|
|
4169
4170
|
changeDetector;
|
|
4170
4171
|
_config;
|
|
@@ -5423,7 +5424,7 @@ class SelectComponent {
|
|
|
5423
5424
|
useExisting: forwardRef(() => SelectComponent),
|
|
5424
5425
|
multi: true,
|
|
5425
5426
|
},
|
|
5426
|
-
], queries: [{ propertyName: "optionDirective", first: true, predicate: SelectOptionDirective, descendants: true, static: true }, { propertyName: "valueDirective", first: true, predicate: SelectValueDirective, descendants: true, static: true }], ngImport: i0, template: "<ng-container *tetaLet='locale | async as loc'>\n <teta-dropdown [align]='align'\n [verticalAlign]='verticalAlign'\n [autoClose]='autoClose'\n [autoCloseIgnore]='autoCloseIgnore'\n [(open)]='open'\n [appendToBody]='appendToBody'\n [disabled]='disabled'\n [viewType]='viewType'\n class='row row_auto'>\n <div tetaDropdownHead\n [class]=\"'row row_auto select-head select_'+viewType\"\n [class.select-head_invalid]='invalid'>\n <div class='row_auto flex align-center'>\n <teta-icon *ngIf='icon' [name]='icon' [palette]=\"'text'\" class='margin-right-1'></teta-icon>\n <span class='placeholder' *ngIf='(value=== null ||value=== undefined || value?.length === 0)&&!multiple'>\n {{placeholder || loc.notSelected}}\n </span>\n <ng-container\n *ngTemplateOutlet='valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}'></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n <div *ngIf='options?.length'\n tetaDropdownContent\n class='select-body row_auto'\n (click)='$event.preventDefault()'>\n <ng-container *ngIf='searchRef'>\n <div class='select-search padding-h-2'>\n <teta-text-field [ngModel]='searchText'\n [class]=\"'select_'+viewType\"\n (ngModelChange)='search($event)'\n [placeholder]='loc.search'\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n </ng-container>\n <ng-container *ngIf='visibleOptions?.length;else notFound '>\n <ng-container *ngIf='!multiple && allowNull'>\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_'+viewType\"\n (click)='clear()'>\n {{loc.notSelected}}\n </div>\n <div class='list-divider margin-bottom-0'></div>\n </ng-container>\n <teta-scrollable *ngIf='virtual; else default' class='column column_auto padding-h-2'>\n <cdk-virtual-scroll-viewport tetaScrollable\n [itemSize]='40'\n minBufferPx='200'\n maxBufferPx='600'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *cdkVirtualFor='let option of visibleOptions; templateCacheSize: 0;'\n [class.list-item_active]='itemSelected(option)'\n [tetaHighlight]='searchText'\n (click)='clickOption(option, $event)'>\n <div [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </div>\n <teta-icon *ngIf='itemSelected(option)' [name]=\"'tick'\" [palette]=\"'text'\"\n class='margin-left-2'></teta-icon>\n </div>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n <ng-template #default>\n <teta-scrollable class='column column_auto padding-h-2' [contentClass]=\"['column', 'column_auto']\">\n <div class='list'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *ngFor='let option of visibleOptions'\n [class.list-item_active]='itemSelected(option)'\n (click)='clickOption(option, $event)'>\n <span [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </span>\n <teta-icon *ngIf='itemSelected(option) && multiple' [name]=\"'tick'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </div>\n </teta-scrollable>\n </ng-template>\n </ng-container>\n <div class='row row_auto select-chip-field flex-wrap' *ngIf='multiple && value?.length'>\n <div *ngFor='let item of value' class='tag'>\n {{getText(item)}}\n <teta-icon class='cursor-pointer' [palette]=\"'text'\" [name]=\"'closeCircle'\"\n (click)='removeItemClick(item, $event)'></teta-icon>\n </div>\n </div>\n </div>\n </teta-dropdown>\n <ng-template #notFound>\n <p\n class='padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option'>{{notFoundText || loc.notFound}}</p>\n </ng-template>\n <ng-template #optionDefault let-option>\n {{getText(option)}}\n </ng-template>\n <ng-template #valueDefault let-value>\n <div class='row_auto overflow-hidden text-overflow-ellipsis' *ngIf='multiple'>\n {{loc.selected + ' ' + value?.length}}\n </div>\n <ng-container *ngIf='!multiple'>\n <span class='row row_auto overflow-hidden text-overflow-ellipsis'>{{getText(value)}}</span>\n </ng-container>\n </ng-template>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6
|
|
5427
|
+
], queries: [{ propertyName: "optionDirective", first: true, predicate: SelectOptionDirective, descendants: true, static: true }, { propertyName: "valueDirective", first: true, predicate: SelectValueDirective, descendants: true, static: true }], ngImport: i0, template: "<ng-container *tetaLet='locale | async as loc'>\n <teta-dropdown [align]='align'\n [verticalAlign]='verticalAlign'\n [autoClose]='autoClose'\n [autoCloseIgnore]='autoCloseIgnore'\n [(open)]='open'\n [appendToBody]='appendToBody'\n [disabled]='disabled'\n [viewType]='viewType'\n class='row row_auto'>\n <div tetaDropdownHead\n [class]=\"'row row_auto select-head select_'+viewType\"\n [class.select-head_invalid]='invalid'>\n <div class='row_auto flex align-center'>\n <teta-icon *ngIf='icon' [name]='icon' [palette]=\"'text'\" class='margin-right-1'></teta-icon>\n <span class='placeholder' *ngIf='(value=== null ||value=== undefined || value?.length === 0)&&!multiple'>\n {{placeholder || loc.notSelected}}\n </span>\n <ng-container\n *ngTemplateOutlet='valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}'></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n <div *ngIf='options?.length'\n tetaDropdownContent\n class='select-body row_auto'\n (click)='$event.preventDefault()'>\n <ng-container *ngIf='searchRef'>\n <div class='select-search padding-h-2'>\n <teta-text-field [ngModel]='searchText'\n [class]=\"'select_'+viewType\"\n (ngModelChange)='search($event)'\n [placeholder]='loc.search'\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n </ng-container>\n <ng-container *ngIf='visibleOptions?.length;else notFound '>\n <ng-container *ngIf='!multiple && allowNull'>\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_'+viewType\"\n (click)='clear()'>\n {{loc.notSelected}}\n </div>\n <div class='list-divider margin-bottom-0'></div>\n </ng-container>\n <teta-scrollable *ngIf='virtual; else default' class='column column_auto padding-h-2'>\n <cdk-virtual-scroll-viewport tetaScrollable\n [itemSize]='40'\n minBufferPx='200'\n maxBufferPx='600'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *cdkVirtualFor='let option of visibleOptions; templateCacheSize: 0;'\n [class.list-item_active]='itemSelected(option)'\n [tetaHighlight]='searchText'\n (click)='clickOption(option, $event)'>\n <div [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </div>\n <teta-icon *ngIf='itemSelected(option)' [name]=\"'tick'\" [palette]=\"'text'\"\n class='margin-left-2'></teta-icon>\n </div>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n <ng-template #default>\n <teta-scrollable class='column column_auto padding-h-2' [contentClass]=\"['column', 'column_auto']\">\n <div class='list'>\n <div [class]=\"'list-item list-item_interactive justify-content-between select_'+viewType\"\n *ngFor='let option of visibleOptions'\n [class.list-item_active]='itemSelected(option)'\n (click)='clickOption(option, $event)'>\n <span [tetaHighlight]='searchText'>\n <ng-container\n *ngTemplateOutlet='optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}'>\n </ng-container>\n </span>\n <teta-icon *ngIf='itemSelected(option) && multiple' [name]=\"'tick'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </div>\n </teta-scrollable>\n </ng-template>\n </ng-container>\n <div class='row row_auto select-chip-field flex-wrap' *ngIf='multiple && value?.length'>\n <div *ngFor='let item of value' class='tag'>\n {{getText(item)}}\n <teta-icon class='cursor-pointer' [palette]=\"'text'\" [name]=\"'closeCircle'\"\n (click)='removeItemClick(item, $event)'></teta-icon>\n </div>\n </div>\n </div>\n </teta-dropdown>\n <ng-template #notFound>\n <p\n class='padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option'>{{notFoundText || loc.notFound}}</p>\n </ng-template>\n <ng-template #optionDefault let-option>\n {{getText(option)}}\n </ng-template>\n <ng-template #valueDefault let-value>\n <div class='row_auto overflow-hidden text-overflow-ellipsis' *ngIf='multiple'>\n {{loc.selected + ' ' + value?.length}}\n </div>\n <ng-container *ngIf='!multiple'>\n <span class='row row_auto overflow-hidden text-overflow-ellipsis'>{{getText(value)}}</span>\n </ng-container>\n </ng-template>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i6.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i6.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: HighlightDirective, selector: "[tetaHighlight]", inputs: ["tetaHighlight"] }, { kind: "component", type: TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "decimalPart", "invalid"] }, { kind: "directive", type: LetDirective, selector: "[tetaLet]", inputs: ["tetaLet"] }, { kind: "directive", type: ScrollableDirective, selector: "[tetaScrollable]" }, { kind: "component", type: ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5427
5428
|
}
|
|
5428
5429
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SelectComponent, decorators: [{
|
|
5429
5430
|
type: Component,
|
|
@@ -9959,7 +9960,7 @@ class TreeComponent {
|
|
|
9959
9960
|
this._obs.disconnect();
|
|
9960
9961
|
}
|
|
9961
9962
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TreeComponent, deps: [{ token: TreeService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
9962
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: TreeComponent, selector: "teta-tree", inputs: { data: "data", padding: "padding", childNodeName: "childNodeName", virtual: "virtual", height: "height", openItems: "openItems", compareItems: "compareItems" }, outputs: { service: "service", openItemsChange: "openItemsChange" }, host: { properties: { "class.tree": "this.treeClass" } }, providers: [TreeService], queries: [{ propertyName: "template", first: true, predicate: TetaTemplateDirective, descendants: true, static: true }], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<teta-scrollable *ngIf=\"virtual; else default\" class=\"column column_auto\">\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n [itemSize]=\"height\">\n <teta-tree-item *cdkVirtualFor=\"let item of displayData;templateCacheSize: 0; trackBy: trackRow;\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n </cdk-virtual-scroll-viewport>\n</teta-scrollable>\n<ng-template #default>\n <teta-scrollable class=\"column column_auto\" direction=\"column\">\n <teta-tree-item *ngFor=\"let item of displayData; trackBy: trackRow\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n </teta-scrollable>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6
|
|
9963
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: TreeComponent, selector: "teta-tree", inputs: { data: "data", padding: "padding", childNodeName: "childNodeName", virtual: "virtual", height: "height", openItems: "openItems", compareItems: "compareItems" }, outputs: { service: "service", openItemsChange: "openItemsChange" }, host: { properties: { "class.tree": "this.treeClass" } }, providers: [TreeService], queries: [{ propertyName: "template", first: true, predicate: TetaTemplateDirective, descendants: true, static: true }], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<teta-scrollable *ngIf=\"virtual; else default\" class=\"column column_auto\">\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n [itemSize]=\"height\">\n <teta-tree-item *cdkVirtualFor=\"let item of displayData;templateCacheSize: 0; trackBy: trackRow;\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n </cdk-virtual-scroll-viewport>\n</teta-scrollable>\n<ng-template #default>\n <teta-scrollable class=\"column column_auto\" direction=\"column\">\n <teta-tree-item *ngFor=\"let item of displayData; trackBy: trackRow\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n </teta-scrollable>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i6.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i6.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: ScrollableDirective, selector: "[tetaScrollable]" }, { kind: "component", type: ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "component", type: TreeItemComponent, selector: "teta-tree-item", inputs: ["item", "depth", "padding", "childNodeName", "template", "childPadding"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9963
9964
|
}
|
|
9964
9965
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TreeComponent, decorators: [{
|
|
9965
9966
|
type: Component,
|
|
@@ -11184,7 +11185,7 @@ class TableBodyComponent {
|
|
|
11184
11185
|
: current.data[columnName], null);
|
|
11185
11186
|
}
|
|
11186
11187
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TableBodyComponent, deps: [{ token: TableService }, { token: i0.ElementRef }, { token: TetaConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11187
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", selectedRows: "selectedRows", additionalComponent: "additionalComponent", aggregate: "aggregate", selectType: "selectType", rowClass: "rowClass", trackRow: "trackRow", trackColumns: "trackColumns" }, outputs: { scrollChange: "scrollChange" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n showScrollbars=\"true\"\n *ngIf=\"virtual && data.length > 0; else nonVirtual\">\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackTableRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n</teta-scrollable>\n<ng-template #nonVirtual>\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n showScrollbars=\"true\"\n (scroll)=\"emitScroll($event)\">\n <div class=\"table-body-container\">\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackTableRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n </div>\n </teta-scrollable>\n</ng-template>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n ngForm\n (click)=\"setActiveRow(row.data, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row.data, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row.data) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row.data === activeRow ? 2 : 1\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\"\n *ngIf=\"column.aggregate !== aggregationType.none\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\"\n *ngIf=\"column.aggregate !== aggregationType.none\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: i6
|
|
11188
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: TableBodyComponent, selector: "teta-table-body", inputs: { virtual: "virtual", activeRow: "activeRow", selectedRows: "selectedRows", additionalComponent: "additionalComponent", aggregate: "aggregate", selectType: "selectType", rowClass: "rowClass", trackRow: "trackRow", trackColumns: "trackColumns" }, outputs: { scrollChange: "scrollChange" }, host: { properties: { "class.table-body": "this.tableBodyClass" } }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n showScrollbars=\"true\"\n *ngIf=\"virtual && data.length > 0; else nonVirtual\">\n <cdk-virtual-scroll-viewport tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"28\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackTableRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n</teta-scrollable>\n<ng-template #nonVirtual>\n <teta-scrollable class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n showScrollbars=\"true\"\n (scroll)=\"emitScroll($event)\">\n <div class=\"table-body-container\">\n <div class=\"column column_auto\"\n style=\"position: absolute; top:0; bottom:16px;left:0;right:0;\"\n *ngIf=\"!data?.length\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackTableRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"emptyRow;\"></ng-container>\n </div>\n </teta-scrollable>\n</ng-template>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n ngForm\n (click)=\"setActiveRow(row.data, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row.data, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row.data) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row.data === activeRow ? 2 : 1\">\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length\"\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\"\n [row]=\"row.data\"\n style=\"width: 28px;\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict?dict[column.name]:[]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <ng-container *ngIf=\"locale | async as loc\">\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\">\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\"\n *ngIf=\"column.aggregate !== aggregationType.none\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n style=\"width: 28px;\"\n *ngIf=\"selectType === selectTypeEnum.checkBox && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component aggregate-cell\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\">\n <span class=\"cell-text cell-text_numeric font-title-3\"\n *ngIf=\"column.aggregate !== aggregationType.none\">\n {{loc[getAggregateText(column)]}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n </ng-container>\n</ng-template>\n<ng-template #emptyRow>\n <div class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\">\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: i6.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i6.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i6.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: ScrollableDirective, selector: "[tetaScrollable]" }, { kind: "component", type: ScrollableComponent, selector: "teta-scrollable", inputs: ["direction", "showScrollbars", "contentClass"], outputs: ["scroll"] }, { kind: "component", type: CellComponent, selector: "teta-cell", inputs: ["column", "filterOptions", "dict", "row"] }, { kind: "component", type: SelectionCellComponent, selector: "teta-selection-cell", inputs: ["row"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: NumberPipe, name: "tetaNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11188
11189
|
}
|
|
11189
11190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
11190
11191
|
type: Component,
|
|
@@ -12109,11 +12110,11 @@ class Chart3dService {
|
|
|
12109
12110
|
}
|
|
12110
12111
|
getMinMaxRange(minMax, axisMin, axisMax) {
|
|
12111
12112
|
const min = axisMin ||
|
|
12112
|
-
(minMax[0]
|
|
12113
|
+
(Math.abs(minMax[0] - minMax[1]) < 0.0000001
|
|
12113
12114
|
? minMax[0] - Math.abs(minMax[0] - 1) * 0.1
|
|
12114
12115
|
: minMax[0]);
|
|
12115
12116
|
const max = axisMax ||
|
|
12116
|
-
(minMax[0]
|
|
12117
|
+
(Math.abs(minMax[0] - minMax[1]) < 0.0000001
|
|
12117
12118
|
? minMax[1] + Math.abs(minMax[1] + 1) * 0.1
|
|
12118
12119
|
: minMax[1]);
|
|
12119
12120
|
return [min, max];
|
|
@@ -12274,11 +12275,11 @@ class Axes3dComponent {
|
|
|
12274
12275
|
this._alive = false;
|
|
12275
12276
|
}
|
|
12276
12277
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: Axes3dComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12277
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: Axes3dComponent, isStandalone: true, selector: "teta-axes-3d", inputs: { rotation: "rotation" }, ngImport: i0, template: "<ng-container *ngIf
|
|
12278
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: Axes3dComponent, isStandalone: true, selector: "teta-axes-3d", inputs: { rotation: "rotation" }, ngImport: i0, template: "<ng-container *ngIf='{axes:axes|async}as data'>\n <ngts-text *ngFor='let tick of data.axes?.x;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[tick.position, -50, 50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.y;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[0,tick.position,50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.z;let i=index; trackBy: trackBy' [text]='tick.value'\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[25,-50,tick.position]'\n ></ngts-text>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: NgtsText, selector: "ngts-text[text]", inputs: ["textRef", "text", "characters", "font", "anchorX", "anchorY"], outputs: ["sync"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12278
12279
|
}
|
|
12279
12280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: Axes3dComponent, decorators: [{
|
|
12280
12281
|
type: Component,
|
|
12281
|
-
args: [{ selector: 'teta-axes-3d', standalone: true, imports: [CommonModule, NgtsText], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf
|
|
12282
|
+
args: [{ selector: 'teta-axes-3d', standalone: true, imports: [CommonModule, NgtsText], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf='{axes:axes|async}as data'>\n <ngts-text *ngFor='let tick of data.axes?.x;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[tick.position, -50, 50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.y;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[0,tick.position,50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.z;let i=index; trackBy: trackBy' [text]='tick.value'\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[25,-50,tick.position]'\n ></ngts-text>\n</ng-container>\n" }]
|
|
12282
12283
|
}], ctorParameters: function () { return []; }, propDecorators: { rotation: [{
|
|
12283
12284
|
type: Input
|
|
12284
12285
|
}] } });
|
|
@@ -12448,7 +12449,7 @@ class SceneComponent {
|
|
|
12448
12449
|
this.rotation = this.store.get('camera').rotation;
|
|
12449
12450
|
}
|
|
12450
12451
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SceneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12451
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SceneComponent, isStandalone: true, selector: "teta-scene", ngImport: i0, template: "<ng-container *ngIf
|
|
12452
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SceneComponent, isStandalone: true, selector: "teta-scene", ngImport: i0, template: "<ng-container *ngIf='{data:data|async} as config'>\n <ngt-scene>\n <ngts-orbit-controls [minAzimuthAngle]='0'\n [maxAzimuthAngle]='Math.PI/2'\n [maxZoom]='30'\n [minZoom]='2'\n (change)='setRotation()'></ngts-orbit-controls>\n </ngt-scene>\n <teta-area-3d></teta-area-3d>\n <ng-container *ngFor='let s of config.data?.series;'>\n <div teta-series-3d-host [series]='s'></div>\n </ng-container>\n <teta-axes-3d [rotation]='rotation'></teta-axes-3d>\n</ng-container>\n\n\n", dependencies: [{ kind: "component", type: NgtsOrbitControls, selector: "ngts-orbit-controls", inputs: ["controlsRef", "camera", "domElement", "makeDefault", "regress", "target", "enableDamping"], outputs: ["change", "start", "end"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: Area3dComponent, selector: "teta-area-3d" }, { kind: "component", type: Axes3dComponent, selector: "teta-axes-3d", inputs: ["rotation"] }, { kind: "component", type: Series3dHost, selector: "[teta-series-3d-host]", inputs: ["series"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12452
12453
|
}
|
|
12453
12454
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SceneComponent, decorators: [{
|
|
12454
12455
|
type: Component,
|
|
@@ -12460,7 +12461,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
12460
12461
|
Axes3dComponent,
|
|
12461
12462
|
Block3dComponent,
|
|
12462
12463
|
Series3dHost,
|
|
12463
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ng-container *ngIf
|
|
12464
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ng-container *ngIf='{data:data|async} as config'>\n <ngt-scene>\n <ngts-orbit-controls [minAzimuthAngle]='0'\n [maxAzimuthAngle]='Math.PI/2'\n [maxZoom]='30'\n [minZoom]='2'\n (change)='setRotation()'></ngts-orbit-controls>\n </ngt-scene>\n <teta-area-3d></teta-area-3d>\n <ng-container *ngFor='let s of config.data?.series;'>\n <div teta-series-3d-host [series]='s'></div>\n </ng-container>\n <teta-axes-3d [rotation]='rotation'></teta-axes-3d>\n</ng-container>\n\n\n" }]
|
|
12464
12465
|
}], ctorParameters: function () { return []; } });
|
|
12465
12466
|
|
|
12466
12467
|
class CanvasComponent {
|
|
@@ -12552,7 +12553,13 @@ class ThreeChartComponent {
|
|
|
12552
12553
|
}
|
|
12553
12554
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ThreeChartComponent, decorators: [{
|
|
12554
12555
|
type: Component,
|
|
12555
|
-
args: [{ selector: 'teta-three-chart', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, providers: [NgtStore], imports: [
|
|
12556
|
+
args: [{ selector: 'teta-three-chart', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, providers: [NgtStore], imports: [
|
|
12557
|
+
NgtCanvas,
|
|
12558
|
+
SceneComponent,
|
|
12559
|
+
CommonModule,
|
|
12560
|
+
CanvasComponent,
|
|
12561
|
+
Canvas3dHost,
|
|
12562
|
+
], template: "<div class=\"column_auto column justify-content-center align-center\" style=\"height: 100%;width: 100%;\">\n <div teta-canvas-3d-host [camera]=\"camera\" [data]=\"data\" [scene]=\"scene\"></div>\n</div>\n", styles: [":host{width:100%;height:100%}\n"] }]
|
|
12556
12563
|
}], propDecorators: { data: [{
|
|
12557
12564
|
type: Input
|
|
12558
12565
|
}] } });
|
|
@@ -12589,7 +12596,7 @@ class Chart3dComponent {
|
|
|
12589
12596
|
}
|
|
12590
12597
|
ngOnInit() {
|
|
12591
12598
|
this._themeService.theme
|
|
12592
|
-
.pipe(takeWhile(
|
|
12599
|
+
.pipe(takeWhile(_ => this._alive), tap$1(_ => {
|
|
12593
12600
|
this.gridColor = _ ? '#5d6a73' : '#bdbdc6';
|
|
12594
12601
|
this.axesColor = _ ? '#8e8f9d' : '#7d8f9a';
|
|
12595
12602
|
this.init();
|
|
@@ -12618,7 +12625,7 @@ class Chart3dComponent {
|
|
|
12618
12625
|
if (!data.points?.length) {
|
|
12619
12626
|
return;
|
|
12620
12627
|
}
|
|
12621
|
-
const points = data.points.map(
|
|
12628
|
+
const points = data.points.map(_ => new THREE.Vector3(x(_.x), y(_.y), z(_.z)));
|
|
12622
12629
|
const color = d3.scaleOrdinal(d3.schemeTableau10);
|
|
12623
12630
|
const material = new THREE.LineBasicMaterial({
|
|
12624
12631
|
color: data?.color ?? color(idx.toString()),
|
|
@@ -12637,13 +12644,15 @@ class Chart3dComponent {
|
|
|
12637
12644
|
const geometryLines = new THREE.BufferGeometry().setFromPoints(pointsLines);
|
|
12638
12645
|
const line = new THREE.Line(geometryLines, material);
|
|
12639
12646
|
this._scene.add(line);
|
|
12640
|
-
circles.forEach(
|
|
12647
|
+
circles.forEach(r => {
|
|
12641
12648
|
const material = new THREE.LineDashedMaterial({
|
|
12642
12649
|
color: this.gridColor,
|
|
12643
12650
|
dashSize: 1,
|
|
12644
|
-
gapSize: 3
|
|
12651
|
+
gapSize: 3,
|
|
12645
12652
|
});
|
|
12646
|
-
const circleGeometry = new THREE.BufferGeometry().setFromPoints(new THREE.Path()
|
|
12653
|
+
const circleGeometry = new THREE.BufferGeometry().setFromPoints(new THREE.Path()
|
|
12654
|
+
.absarc(0, 0, x(r), 0, Math.PI * 2, false)
|
|
12655
|
+
.getSpacedPoints(100));
|
|
12647
12656
|
const circle = new THREE.LineSegments(circleGeometry, material);
|
|
12648
12657
|
circle.geometry.rotateX(-Math.PI / 2);
|
|
12649
12658
|
this._scene.add(circle);
|
|
@@ -12695,7 +12704,7 @@ class Chart3dComponent {
|
|
|
12695
12704
|
animate();
|
|
12696
12705
|
}
|
|
12697
12706
|
addResizeObserver() {
|
|
12698
|
-
this._obs = new ResizeObserver(
|
|
12707
|
+
this._obs = new ResizeObserver(_ => {
|
|
12699
12708
|
this.setSize(_[0]?.contentRect.width, _[0]?.contentRect.height);
|
|
12700
12709
|
});
|
|
12701
12710
|
this._obs.observe(this._elementRef.nativeElement);
|
|
@@ -12761,7 +12770,7 @@ class Chart3dComponent {
|
|
|
12761
12770
|
this._scene.add(ticks);
|
|
12762
12771
|
}
|
|
12763
12772
|
getScales(series) {
|
|
12764
|
-
const extrems = series.map(
|
|
12773
|
+
const extrems = series.map(_ => ({
|
|
12765
12774
|
x: d3.extent(_.points, (p) => p.x),
|
|
12766
12775
|
y: d3.extent(_.points, (p) => p.y),
|
|
12767
12776
|
z: d3.extent(_.points, (p) => p.z),
|
|
@@ -12774,22 +12783,28 @@ class Chart3dComponent {
|
|
|
12774
12783
|
}, { x: [], y: [], z: [] });
|
|
12775
12784
|
const x = d3
|
|
12776
12785
|
.scaleLinear()
|
|
12777
|
-
.domain([
|
|
12786
|
+
.domain([
|
|
12787
|
+
0,
|
|
12788
|
+
this._config?.axes?.max == null
|
|
12778
12789
|
? parseInt(d3.max(flattenExtrems.x))
|
|
12779
12790
|
: this._config.axes.max,
|
|
12780
12791
|
])
|
|
12781
|
-
.range([0, this.SIDE_SIZE])
|
|
12792
|
+
.range([0, this.SIDE_SIZE])
|
|
12793
|
+
.nice();
|
|
12782
12794
|
const y = d3
|
|
12783
12795
|
.scaleLinear()
|
|
12784
12796
|
.domain([0, parseInt(d3.max(flattenExtrems.y), 10)])
|
|
12785
12797
|
.range([this.SIDE_SIZE, 0]);
|
|
12786
12798
|
const z = d3
|
|
12787
12799
|
.scaleLinear()
|
|
12788
|
-
.domain([
|
|
12800
|
+
.domain([
|
|
12801
|
+
0,
|
|
12789
12802
|
this._config?.axes?.max == null
|
|
12790
12803
|
? parseInt(d3.max(flattenExtrems.z))
|
|
12791
|
-
: this._config.axes.max
|
|
12792
|
-
|
|
12804
|
+
: this._config.axes.max,
|
|
12805
|
+
])
|
|
12806
|
+
.range([0, this.SIDE_SIZE])
|
|
12807
|
+
.nice();
|
|
12793
12808
|
return { x, y, z };
|
|
12794
12809
|
}
|
|
12795
12810
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: Chart3dComponent, deps: [{ token: i0.ElementRef }, { token: ThemeSwitchService }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -14175,6 +14190,9 @@ const ruLocale = {
|
|
|
14175
14190
|
apply: 'Применить',
|
|
14176
14191
|
cancel: 'Отменить',
|
|
14177
14192
|
clear: 'Очистить',
|
|
14193
|
+
dateRangeMask: 'дд.мм.гггг - дд.мм.гггг',
|
|
14194
|
+
dateMask: 'дд.мм.гггг',
|
|
14195
|
+
dateTimeMask: 'дд.мм.гггг, чч:мм',
|
|
14178
14196
|
pin: 'Закрепить',
|
|
14179
14197
|
unpin: 'Открепить',
|
|
14180
14198
|
sortAsc: 'Сортировать по возрастанию',
|
|
@@ -14211,7 +14229,7 @@ const ruLocale = {
|
|
|
14211
14229
|
'Сентябрь',
|
|
14212
14230
|
'Октябрь',
|
|
14213
14231
|
'Ноябрь',
|
|
14214
|
-
'Декабрь'
|
|
14232
|
+
'Декабрь',
|
|
14215
14233
|
],
|
|
14216
14234
|
days: [
|
|
14217
14235
|
'Воскресенье',
|
|
@@ -14220,17 +14238,9 @@ const ruLocale = {
|
|
|
14220
14238
|
'Среда',
|
|
14221
14239
|
'Четверг',
|
|
14222
14240
|
'Пятниуа',
|
|
14223
|
-
'Суббота'
|
|
14241
|
+
'Суббота',
|
|
14224
14242
|
],
|
|
14225
|
-
daysShort: [
|
|
14226
|
-
'Вс',
|
|
14227
|
-
'Пн',
|
|
14228
|
-
'Вт',
|
|
14229
|
-
'Ср',
|
|
14230
|
-
'Чт',
|
|
14231
|
-
'Пт',
|
|
14232
|
-
'Сб'
|
|
14233
|
-
]
|
|
14243
|
+
daysShort: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
|
|
14234
14244
|
};
|
|
14235
14245
|
|
|
14236
14246
|
function tetaZoneFull(ngZone) {
|