mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-22 15:37:02 +00:00
refactor: add better solution for T type
This commit is contained in:
parent
f69f8fab64
commit
4e1f34bc51
79 changed files with 79 additions and 158 deletions
|
|
@ -24,8 +24,7 @@ import { SimpleCounter } from '../../features/simple-counter/simple-counter.mode
|
|||
animations: [fadeAnimation, expandFadeHorizontalAnimation]
|
||||
})
|
||||
export class MainHeaderComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
progressCircleRadius: number = 10;
|
||||
circumference: number = this.progressCircleRadius * Math.PI * 2;
|
||||
|
||||
|
|
|
|||
|
|
@ -53,8 +53,7 @@ export class SideNavComponent implements OnDestroy {
|
|||
)
|
||||
);
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
readonly PROJECTS_SIDE_NAV: string = 'PROJECTS_SIDE_NAV';
|
||||
readonly TAG_SIDE_NAV: string = 'TAG_SIDE_NAV';
|
||||
activeWorkContextId?: string | null;
|
||||
|
|
|
|||
|
|
@ -19,8 +19,7 @@ import { Router } from '@angular/router';
|
|||
})
|
||||
export class WorkContextMenuComponent implements OnDestroy {
|
||||
@Input() contextId?: string;
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
TODAY_TAG_ID: string = TODAY_TAG.id as string;
|
||||
isForProject: boolean = true;
|
||||
base: string = 'project';
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ import { T } from '../../../t.const';
|
|||
animations: [slideAnimation]
|
||||
})
|
||||
export class BannerComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
height: number = 120;
|
||||
private _dirtyReference?: string | null;
|
||||
// TODO maybe improve if initial delay is annoying
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ export class BookmarkBarComponent implements OnDestroy {
|
|||
isEditMode: boolean = false;
|
||||
dragEnterTarget?: HTMLElement;
|
||||
LIST_ID: string = 'BOOKMARKS';
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isContextMenuDisabled: boolean = false;
|
||||
bookmarkBarHeight: number = 50;
|
||||
private _subs: Subscription = new Subscription();
|
||||
|
|
|
|||
|
|
@ -20,8 +20,7 @@ interface BookmarkSelectType {
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogEditBookmarkComponent implements OnInit {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
types?: BookmarkSelectType[];
|
||||
bookmarkCopy?: BookmarkCopy;
|
||||
customIcons: string[] = MATERIAL_ICONS;
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ import { exists } from '../../../util/exists';
|
|||
})
|
||||
export class ConfigFormComponent {
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
config?: {};
|
||||
@Input() sectionKey?: GlobalConfigSectionKey | ProjectCfgFormKey;
|
||||
@Output() save: EventEmitter<{ sectionKey: GlobalConfigSectionKey | ProjectCfgFormKey, config: unknown }> = new EventEmitter();
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { standardListAnimation } from '../../../ui/animations/standard-list.ani'
|
|||
animations: [standardListAnimation],
|
||||
})
|
||||
export class RepeatSectionTypeComponent extends FieldArrayType {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { T } from 'src/app/t.const';
|
|||
export class SelectProjectComponent extends FieldType {
|
||||
// @ViewChild(MatInput) formFieldControl: MatInput;
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
public projectService: ProjectService,
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@ import { DropboxConflictResolution } from '../dropbox.model';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogDbxSyncConflictComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
remote: string = this._formatDate(this.data.remote);
|
||||
local: string = this._formatDate(this.data.local);
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { T } from '../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogConfirmDriveSyncLoadComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private _matDialogRef: MatDialogRef<DialogConfirmDriveSyncLoadComponent>,
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { T } from '../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogConfirmDriveSyncSaveComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private _matDialogRef: MatDialogRef<DialogConfirmDriveSyncSaveComponent>,
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@ import { T } from '../../../t.const';
|
|||
animations: [expandFadeAnimation]
|
||||
})
|
||||
export class GoogleSyncCfgComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
tmpSyncFile: any;
|
||||
cfg?: GoogleDriveSyncConfig;
|
||||
loginPromise?: Promise<any>;
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@ import { version } from '../../../../../package.json';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogInitialComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
version: string = version;
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@ export class GithubIssueContentComponent {
|
|||
@Input() issue?: GithubIssue;
|
||||
@Input() task?: TaskWithSubTasks;
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private readonly _taskService: TaskService,
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { T } from '../../../../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class GithubIssueHeaderComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
@Input() task?: TaskWithSubTasks;
|
||||
|
||||
constructor() {
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { T } from '../../../../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogGithubInitialSetupComponent implements OnInit {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
githubCfg: GithubCfg;
|
||||
formGroup: FormGroup = new FormGroup({});
|
||||
formConfig: FormlyFieldConfig[] = GITHUB_CONFIG_FORM;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { DEFAULT_GITLAB_CFG, GITLAB_CONFIG_FORM } from '../gitlab.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogGitlabInitialSetupComponent implements OnInit {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
gitlabCfg: GitlabCfg;
|
||||
formGroup: FormGroup = new FormGroup({});
|
||||
formConfig: FormlyFieldConfig[] = GITLAB_CONFIG_FORM;
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@ export class GitlabIssueContentComponent {
|
|||
@Input() issue?: GitlabIssue;
|
||||
@Input() task?: TaskWithSubTasks;
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private readonly _taskService: TaskService,
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { TaskWithSubTasks } from 'src/app/features/tasks/task.model';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class GitlabIssueHeaderComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
@Input() public task?: TaskWithSubTasks;
|
||||
|
||||
constructor() {
|
||||
|
|
|
|||
|
|
@ -21,8 +21,7 @@ import { switchMap } from 'rxjs/operators';
|
|||
export class JiraIssueContentComponent {
|
||||
description?: string;
|
||||
attachments?: TaskAttachment[];
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
issue?: JiraIssue;
|
||||
task?: TaskWithSubTasks;
|
||||
private _task$: ReplaySubject<TaskWithSubTasks> = new ReplaySubject(1);
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@ import { first } from 'rxjs/operators';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogJiraAddWorklogComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
timeSpent: number;
|
||||
started: string;
|
||||
comment: string;
|
||||
|
|
|
|||
|
|
@ -10,8 +10,7 @@ import { T } from '../../../../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogJiraInitialSetupComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
jiraCfg: JiraCfg;
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -20,8 +20,7 @@ import { JiraCfg } from '../../jira.model';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogJiraTransitionComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
_jiraCfg$: Observable<JiraCfg> = this._projectService.getJiraCfgForProject$(this.data.task.projectId as string);
|
||||
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ import { HANDLED_ERROR_PROP_STR, HelperClasses } from '../../../../../../app.con
|
|||
animations: [expandAnimation]
|
||||
})
|
||||
export class JiraCfgStepperComponent implements OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
HelperClasses: typeof HelperClasses = HelperClasses;
|
||||
credentialsFormGroup: FormGroup = new FormGroup({});
|
||||
credentialsFormConfig: FormlyFieldConfig[] = [];
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@ import { JIRA_TYPE } from '../../../../issue.const';
|
|||
export class JiraCfgComponent implements OnInit, OnDestroy {
|
||||
@Input() section?: ConfigFormSection<JiraCfg>;
|
||||
@Output() save: EventEmitter<{ sectionKey: GlobalConfigSectionKey | ProjectCfgFormKey, config: any }> = new EventEmitter();
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
HelperClasses: typeof HelperClasses = HelperClasses;
|
||||
issueSuggestionsCtrl: FormControl = new FormControl();
|
||||
customFieldSuggestionsCtrl: FormControl = new FormControl();
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ import { MatDialog } from '@angular/material/dialog';
|
|||
})
|
||||
export class EvaluationSheetComponent implements OnDestroy, OnInit {
|
||||
@Output() save: EventEmitter<any> = new EventEmitter();
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
metricForDay?: MetricCopy;
|
||||
day$: BehaviorSubject<string> = new BehaviorSubject(getWorklogStr());
|
||||
private _metricForDay$: Observable<MetricCopy> = this.day$.pipe(
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ import { T } from '../../../t.const';
|
|||
animations: [improvementBannerAnimation]
|
||||
})
|
||||
export class ImprovementBannerComponent implements OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
improvements: Improvement[] = [];
|
||||
|
||||
private _subs: Subscription = new Subscription();
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@ import { T } from '../../t.const';
|
|||
animations: [fadeAnimation],
|
||||
})
|
||||
export class MetricComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
productivityHappiness$: Observable<LineChartData> = this.metricService.getProductivityHappinessChartData$();
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ import { throttle } from 'helpful-decorators';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogAddNoteReminderComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
dateTime?: number;
|
||||
title: string;
|
||||
isEdit: boolean;
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@ import { map } from 'rxjs/operators';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogAddNoteComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
noteContent: string;
|
||||
reminderDate?: number;
|
||||
isSubmitted: boolean = false;
|
||||
|
|
|
|||
|
|
@ -20,8 +20,7 @@ import { TagService } from '../../tag/tag.service';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogViewNoteReminderComponent implements OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
note$: Observable<Note> = this._noteService.getById$(this.data.reminder.relatedId);
|
||||
reminder: Reminder = this.data.reminder;
|
||||
isForCurrentContext: boolean = (this.reminder.workContextId === this._workContextService.activeWorkContextId);
|
||||
|
|
|
|||
|
|
@ -18,8 +18,7 @@ export class NoteComponent {
|
|||
|
||||
@ViewChild('markdownEl') markdownEl?: HTMLElement;
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private readonly _matDialog: MatDialog,
|
||||
|
|
|
|||
|
|
@ -31,8 +31,7 @@ import { Task } from '../../tasks/task.model';
|
|||
export class NotesComponent implements OnInit, OnDestroy {
|
||||
@Output() scrollToSidenav: EventEmitter<void> = new EventEmitter();
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isElementWasAdded: boolean = false;
|
||||
isDragOver: boolean = false;
|
||||
dragEnterTarget?: HTMLElement;
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ import { T } from '../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogPomodoroBreakComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isStopCurrentTime$: Subject<boolean> = new Subject();
|
||||
currentTime$: Observable<number> = this.pomodoroService.currentSessionTime$.pipe(
|
||||
takeUntil(this.isStopCurrentTime$),
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { T } from '../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class ProcrastinationComponent implements OnInit {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
public taskService: TaskService,
|
||||
|
|
|
|||
|
|
@ -31,8 +31,7 @@ import { DialogGitlabInitialSetupComponent } from 'src/app/features/issue/provid
|
|||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DialogCreateProjectComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
projectData: ProjectCopy | Partial<ProjectCopy> = DEFAULT_PROJECT;
|
||||
jiraCfg?: JiraCfg;
|
||||
githubCfg?: GithubCfg;
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ import { getWorklogStr } from '../../../util/get-work-log-str';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogSimpleCounterEditComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
SimpleCounterType: typeof SimpleCounterType = SimpleCounterType;
|
||||
|
||||
todayStr: string = getWorklogStr();
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { getWorklogStr } from '../../../util/get-work-log-str';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class SimpleCounterButtonComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
SimpleCounterType: typeof SimpleCounterType = SimpleCounterType;
|
||||
todayStr: string = getWorklogStr();
|
||||
|
||||
|
|
|
|||
|
|
@ -22,8 +22,7 @@ export class SimpleCounterCfgComponent implements OnDestroy {
|
|||
@Input() cfg?: SimpleCounterConfig;
|
||||
@Output() save: EventEmitter<{ sectionKey: GlobalConfigSectionKey | ProjectCfgFormKey, config: any }> = new EventEmitter();
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
form: FormGroup = new FormGroup({});
|
||||
options: FormlyFormOptions = {};
|
||||
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@ import { Tag } from '../tag.model';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogEditTagsForTaskComponent implements OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
title: string = truncate(this.data.task.title, 20);
|
||||
task$: Observable<Task> = this._taskService.getByIdLive$(this.data.task.id);
|
||||
task: Task = this.data.task;
|
||||
|
|
|
|||
|
|
@ -21,8 +21,7 @@ import { exists } from '../../../util/exists';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogEditTaskRepeatCfgComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
task: Task = this.data.task;
|
||||
|
||||
taskRepeatCfg: Omit<TaskRepeatCfgCopy, 'id'> = {
|
||||
|
|
|
|||
|
|
@ -50,8 +50,7 @@ export class AddTaskBarComponent implements AfterViewInit, OnDestroy {
|
|||
|
||||
@ViewChild('inputEl', {static: true}) inputEl?: ElementRef;
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isLoading$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
|
||||
doubleEnterCount: number = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@ import { Task } from '../task.model';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogAddTaskReminderComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
task: Task = this.data.task;
|
||||
reminder?: ReminderCopy = this.task.reminderId
|
||||
? this._reminderService.getById(this.task.reminderId) || undefined
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ interface NewTimeEntry {
|
|||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DialogAddTimeEstimateForOtherDayComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
newEntry: NewTimeEntry;
|
||||
|
||||
constructor(private _matDialogRef: MatDialogRef<DialogAddTimeEstimateForOtherDayComponent>) {
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@ import { T } from '../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DialogTimeEstimateComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
todayStr: string;
|
||||
task: Task;
|
||||
taskCopy: TaskCopy;
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ const M = 1000 * 60;
|
|||
animations: [standardListAnimation],
|
||||
})
|
||||
export class DialogViewTaskRemindersComponent implements OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isDisableControls: boolean = false;
|
||||
reminders$: BehaviorSubject<Reminder[]> = new BehaviorSubject(this.data.reminders);
|
||||
tasks$: Observable<TaskWithReminderData[]> = this.reminders$.pipe(
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { WorkContextService } from '../../work-context/work-context.service';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class SelectTaskComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
taskSelectCtrl: FormControl = new FormControl();
|
||||
filteredTasks: Task[] = [];
|
||||
isCreate: boolean = false;
|
||||
|
|
|
|||
|
|
@ -70,8 +70,7 @@ export class TaskAdditionalInfoComponent implements AfterViewInit, OnDestroy {
|
|||
ShowSubTasksMode: typeof ShowSubTasksMode = ShowSubTasksMode;
|
||||
selectedItemIndex: number = 0;
|
||||
isFocusNotes: boolean = false;
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
issueAttachments: TaskAttachment[] = [];
|
||||
reminderId$: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);
|
||||
reminderData$: Observable<ReminderCopy | null> = this.reminderId$.pipe(
|
||||
|
|
|
|||
|
|
@ -18,8 +18,7 @@ interface TaskAttachmentSelectType {
|
|||
export class DialogEditTaskAttachmentComponent {
|
||||
types: TaskAttachmentSelectType[];
|
||||
attachmentCopy: TaskAttachmentCopy;
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private _matDialogRef: MatDialogRef<DialogEditTaskAttachmentComponent>,
|
||||
|
|
|
|||
|
|
@ -18,8 +18,7 @@ export class TaskAttachmentListComponent {
|
|||
@Input() attachments?: TaskAttachment[];
|
||||
@Input() isDisableControls: boolean = false;
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isError: boolean[] = [];
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ import { T } from '../../../t.const';
|
|||
|
||||
})
|
||||
export class TaskListComponent implements OnDestroy, OnInit {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
tasksIN: TaskWithSubTasks[] = [];
|
||||
tasks$: ReplaySubject<TaskWithSubTasks[]> = new ReplaySubject(1);
|
||||
isHideDoneIN: boolean = false;
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@ export class TaskSummaryTableComponent {
|
|||
@Input() day: string = getWorklogStr();
|
||||
@Output() updated: EventEmitter<void> = new EventEmitter();
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private _taskService: TaskService,
|
||||
|
|
|
|||
|
|
@ -22,8 +22,7 @@ import { mapToProjectWithTasks, ProjectWithTasks } from './map-to-project-with-t
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class TaskSummaryTablesComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
@Input() dayStr: string = getWorklogStr();
|
||||
|
||||
|
|
|
|||
|
|
@ -49,8 +49,7 @@ import { environment } from '../../../../environments/environment';
|
|||
export class TaskComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||
task?: TaskWithSubTasks;
|
||||
@Input() isBacklog: boolean = false;
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isTouchOnly: boolean = IS_TOUCH_ONLY;
|
||||
isDragOver: boolean = false;
|
||||
isLockPanLeft: boolean = false;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { T } from '../../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogIdleComponent implements OnInit {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
lastCurrentTask$: Observable<Task> = this._taskService.getByIdOnce$(this.data.lastCurrentTaskId);
|
||||
selectedTask: Task | null = null;
|
||||
newTaskTitle?: string;
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@ export class BacklogComponent {
|
|||
|
||||
@Output() closeBacklog: EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
// we do it here to have the tasks in memory all the time
|
||||
// backlogTasks$: Observable<TaskWithSubTasks[]> = this._projectService.isProjectChanging$.pipe(
|
||||
|
|
|
|||
|
|
@ -43,8 +43,7 @@ export class WorkViewComponent implements OnInit, OnDestroy, AfterContentInit {
|
|||
isShowTimeWorkedWithoutBreak: boolean = true;
|
||||
splitInputPos: number = 100;
|
||||
isPreloadBacklog: boolean = false;
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
// NOTE: not perfect but good enough for now
|
||||
isTriggerBacklogIconAni$: Observable<boolean> = this.workContextService.onMoveToBacklog$.pipe(
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ import { WORKLOG_EXPORT_DEFAULTS } from '../../work-context/work-context.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogWorklogExportComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
options: WorklogExportSettingsCopy = WORKLOG_EXPORT_DEFAULTS;
|
||||
strStart: string;
|
||||
strEnd: string;
|
||||
|
|
|
|||
|
|
@ -63,8 +63,7 @@ export class WorklogExportComponent implements OnInit, OnDestroy {
|
|||
|
||||
@Output() cancel: EventEmitter<void> = new EventEmitter();
|
||||
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
isShowAsText: boolean = false;
|
||||
headlineCols: string[] = [];
|
||||
formattedRows?: (string | number | undefined)[][];
|
||||
|
|
|
|||
|
|
@ -21,8 +21,7 @@ import { SimpleCounterService } from '../../simple-counter/simple-counter.servic
|
|||
})
|
||||
export class WorklogWeekComponent {
|
||||
visibility: boolean[] = [];
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
keys: (o: object) => string[] = Object.keys;
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ import { WorkContextService } from '../work-context/work-context.service';
|
|||
animations: [expandFadeAnimation, standardListAnimation, fadeAnimation]
|
||||
})
|
||||
export class WorklogComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
expanded: { [key: string]: boolean } = {};
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -13,8 +13,7 @@ import { T } from '../../t.const';
|
|||
})
|
||||
export class FileImexComponent {
|
||||
@ViewChild('fileInput', {static: true}) fileInputRef?: ElementRef;
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private _dataImportService: DataImportService,
|
||||
|
|
|
|||
|
|
@ -26,8 +26,7 @@ import { MatSlideToggleChange } from '@angular/material/slide-toggle';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class ConfigPageComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
globalConfigFormCfg: ConfigFormConfig;
|
||||
globalSyncProviderFormCfg: ConfigFormConfig;
|
||||
globalProductivityConfigFormCfg: ConfigFormConfig;
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ const SUCCESS_ANIMATION_DURATION = 500;
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DailySummaryComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
cfg: any = {
|
||||
isBlockFinishDayUntilTimeTimeTracked: false
|
||||
|
|
|
|||
|
|
@ -8,8 +8,7 @@ import { T } from '../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class MetricPageComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor() {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ import { ExportedProject } from '../../features/project/project-archive.model';
|
|||
animations: [standardListAnimation],
|
||||
})
|
||||
export class ProjectOverviewPageComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
private _subs: Subscription = new Subscription();
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -23,8 +23,7 @@ import { DEFAULT_GITLAB_CFG } from 'src/app/features/issue/providers/gitlab/gitl
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class ProjectSettingsPageComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
projectThemeSettingsFormCfg: ConfigFormSection<WorkContextThemeCfg>;
|
||||
issueIntegrationFormCfg: ConfigFormConfig;
|
||||
globalConfigFormCfg: ConfigFormConfig;
|
||||
|
|
|
|||
|
|
@ -22,8 +22,7 @@ import { Tag } from '../../features/tag/tag.model';
|
|||
animations: [standardListAnimation]
|
||||
})
|
||||
export class SchedulePageComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
TODAY_TAG: Tag = TODAY_TAG;
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -23,8 +23,7 @@ import { BASIC_TAG_CONFIG_FORM_CONFIG } from '../../features/tag/tag-form-cfg.co
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class TagSettingsPageComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
tagThemeSettingsFormCfg: ConfigFormSection<WorkContextThemeCfg>;
|
||||
globalConfigFormCfg: ConfigFormConfig;
|
||||
basicFormCfg: ConfigFormSection<Tag>;
|
||||
|
|
|
|||
|
|
@ -8,8 +8,7 @@ import { T } from '../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class WorklogPageComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor() {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,8 +21,7 @@ interface Suggestion {
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class ChipListInputComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
@Input() label?: string;
|
||||
@Input() additionalActionIcon?: string;
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@ export class DatetimeInputComponent {
|
|||
nrValue: number | undefined;
|
||||
strValue: string | undefined | null;
|
||||
lastVal: number | undefined;
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor() {
|
||||
const lastVal = localStorage.getItem(LS_LAST_REMINDER_DATE);
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { T } from '../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogConfirmComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
constructor(
|
||||
private _matDialogRef: MatDialogRef<DialogConfirmComponent>,
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@ import { ESCAPE } from '@angular/cdk/keycodes';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogFullscreenMarkdownComponent implements OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
|
||||
private _subs: Subscription = new Subscription();
|
||||
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { T } from '../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class DialogPromptComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
txtVal: string = '';
|
||||
|
||||
constructor(
|
||||
|
|
|
|||
|
|
@ -23,8 +23,7 @@ import { T } from '../../../t.const';
|
|||
animations: [dotAnimation],
|
||||
})
|
||||
export class InputDurationSliderComponent implements OnInit, OnDestroy {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
minutesBefore: number = 0;
|
||||
dots: any[] = [];
|
||||
uid: string = 'duration-input-slider' + shortid();
|
||||
|
|
|
|||
|
|
@ -19,8 +19,7 @@ export class OwlWrapperComponent {
|
|||
|
||||
@Output()
|
||||
triggerSubmit: EventEmitter<number> = new EventEmitter();
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
date: Date = new Date();
|
||||
laterTodaySlots: string[] = [
|
||||
'9:00',
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import { T } from '../../t.const';
|
|||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class ThemeSelectComponent {
|
||||
// tslint:disable-next-line:typedef
|
||||
T = T;
|
||||
T: typeof T = T;
|
||||
themes: string[] = ALL_THEMES;
|
||||
|
||||
trackBy(i: number, theme: string) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue