From 56d2adcd707d80ff2bddfc0c4a93d2fabf856e4d Mon Sep 17 00:00:00 2001 From: Johannes Millan Date: Mon, 6 Jan 2020 19:53:26 +0100 Subject: [PATCH] refactor: fix code formatting --- src/app/app.component.html | 11 +- src/app/app.component.ts | 22 +- src/app/core-ui/layout/layout.service.ts | 14 +- .../main-header/main-header.component.html | 50 +- .../main-header/main-header.component.scss | 2 +- .../main-header/main-header.component.ts | 2 +- .../core-ui/side-nav/side-nav.component.html | 14 +- .../core/banner/banner/banner.component.ts | 16 +- src/app/core/language/language.service.ts | 10 +- .../core/persistence/persistence.service.ts | 37 +- .../snack-custom/snack-custom.component.scss | 2 +- .../dialog-edit-attachment.component.html | 4 +- .../dialog-edit-attachment.component.scss | 2 +- .../bookmark-bar/bookmark-bar.component.html | 14 +- .../bookmark-bar/bookmark-bar.component.ts | 13 +- .../dialog-edit-bookmark.component.html | 6 +- .../config-section.component.ts | 29 +- src/app/features/google/google-api.service.ts | 4 +- .../google-sync-cfg.component.html | 16 +- src/app/features/google/google.module.ts | 3 +- .../google/store/google-drive-sync.effects.ts | 14 +- .../github-issue-content.component.html | 6 +- .../github-issue/github-issue.service.ts | 5 +- .../store/github-issue.reducer.ts | 2 +- src/app/features/issue/github/github.const.ts | 1 - .../dialog-jira-add-worklog.component.html | 7 +- .../features/issue/jira/jira-api.service.ts | 8 +- .../jira-cfg-stepper.component.html | 4 +- .../jira/jira-cfg/jira-cfg.component.html | 12 +- .../issue/jira/jira-cfg/jira-cfg.component.ts | 99 +- .../jira-issue-content.component.html | 4 +- .../jira/jira-issue/jira-issue-map.util.ts | 2 +- .../jira-issue/store/jira-issue.effects.ts | 47 +- src/app/features/issue/jira/jira.const.ts | 1 - .../evaluation-sheet.component.html | 32 +- .../evaluation-sheet.component.ts | 14 +- .../improvement-banner.component.html | 26 +- .../dialog-add-note-reminder.component.html | 6 +- .../dialog-add-note.component.html | 4 +- .../dialog-add-note.component.scss | 3 +- .../dialog-view-note-reminder.component.html | 16 +- .../features/note/note/note.component.scss | 5 +- .../features/note/notes/notes.component.html | 4 +- .../procrastination.component.html | 15 +- .../dialog-create-project.component.ts | 2 +- ...dialog-edit-task-repeat-cfg.component.scss | 1 + .../add-task-bar/add-task-bar.component.html | 2 +- .../dialog-add-task-reminder.component.html | 4 +- .../dialog-add-task-reminder.component.ts | 1 - ...time-estimate-for-other-day.component.html | 16 +- .../dialog-time-estimate.component.html | 16 +- .../dialog-view-task-reminder.component.html | 36 +- .../dialog-view-task-reminder.component.ts | 10 +- .../select-task/select-task.component.html | 2 +- .../task-additional-info-item.component.html | 8 +- .../task-additional-info-item.component.ts | 9 +- ...ask-additional-info-wrapper.component.html | 4 +- .../task-additional-info.ani.ts | 2 +- .../task-additional-info.component.html | 94 +- .../task-additional-info.component.ts | 19 +- .../task-summary-table.component.html | 10 +- src/app/features/tasks/task.service.ts | 3 +- .../features/tasks/task/task.component.html | 102 +- src/app/features/tasks/task/task.component.ts | 41 +- src/app/features/tasks/tasks.module.ts | 4 +- .../worklog-export.component.html | 18 +- .../features/worklog/worklog.component.html | 16 +- src/app/imex/imex-meta/imex-meta.service.ts | 2 +- .../config-page/config-page.component.html | 8 +- .../daily-summary.component.html | 20 +- .../daily-summary/daily-summary.module.ts | 2 +- .../plan-tasks-tomorrow.component.html | 2 +- .../plan-tasks-tomorrow.component.scss | 2 +- .../metric-page/metric-page.component.ts | 1 + .../project-page/project-page.component.html | 40 +- .../project-settings.module.ts | 1 - .../schedule-page.component.html | 24 +- .../work-view/backlog/backlog.component.html | 4 +- .../work-view/work-view-page.component.html | 4 +- .../work-view/work-view-page.component.ts | 17 +- .../better-drawer-container.component.html | 18 +- .../better-drawer-container.component.spec.ts | 8 +- .../better-drawer-container.component.ts | 62 +- .../ui/better-drawer/better-drawer.module.ts | 10 +- .../chip-list-input.component.html | 12 +- .../chip-list-input.component.ts | 33 +- .../datetime-input.component.html | 4 +- .../datetime-input.component.ts | 8 +- .../input-duration-slider.component.html | 2 +- .../inline-markdown.component.html | 12 +- .../inline-markdown.component.ts | 31 +- src/assets/fonts/MaterialIcons-Regular.svg | 5541 ++++++++++------- src/assets/i18n/it.json | 1866 +++--- src/assets/icons/browserconfig.xml | 12 +- src/assets/icons/drag-handle.svg | 37 +- src/assets/icons/github.svg | 12 +- src/assets/icons/jira.svg | 29 +- src/assets/icons/play.svg | 13 +- src/assets/icons/safari-pinned-tab.svg | 28 +- src/assets/icons/sp.svg | 10 +- src/index.html | 44 +- .../components/_overwrite-material.scss | 2 +- src/styles/page.scss | 1 + src/styles/util.scss | 2 +- 104 files changed, 4966 insertions(+), 3986 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index c539293fa7..12551fba77 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,5 +1,6 @@ - + -
+
-
diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 2611425f15..53468154d7 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,4 +1,4 @@ -import {ChangeDetectionStrategy, Component, HostListener, ViewChild, ViewContainerRef, OnDestroy} from '@angular/core'; +import {ChangeDetectionStrategy, Component, HostListener, OnDestroy, ViewChild, ViewContainerRef} from '@angular/core'; import {ProjectService} from './features/project/project.service'; import {ChromeExtensionInterfaceService} from './core/chrome-extension-interface/chrome-extension-interface.service'; import {ShortcutService} from './core-ui/shortcut/shortcut.service'; @@ -26,7 +26,7 @@ import {TranslateService} from '@ngx-translate/core'; import {GlobalThemeService} from './core/theme/global-theme.service'; import {UiHelperService} from './features/ui-helper/ui-helper.service'; import {TaskService} from './features/tasks/task.service'; -import { LanguageService } from './core/language/language.service'; +import {LanguageService} from './core/language/language.service'; @Component({ @@ -41,7 +41,7 @@ import { LanguageService } from './core/language/language.service'; ], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class AppComponent implements OnDestroy{ +export class AppComponent implements OnDestroy { isAllDataLoadedInitially$: Observable = combineLatest([ this._projectService.isRelatedDataLoadedForCurrentProject$, this._store.select(selectIsTaskDataLoaded), @@ -53,9 +53,8 @@ export class AppComponent implements OnDestroy{ @ViewChild('notesElRef', {read: ViewContainerRef, static: false}) notesElRef: ViewContainerRef; @ViewChild('sideNavElRef', {read: ViewContainerRef, static: false}) sideNavElRef: ViewContainerRef; - - private _subs : Subscription = new Subscription(); - isRTL : boolean; + isRTL: boolean; + private _subs: Subscription = new Subscription(); constructor( private _configService: GlobalConfigService, @@ -70,13 +69,13 @@ export class AppComponent implements OnDestroy{ private _globalThemeService: GlobalThemeService, private _uiHelperService: UiHelperService, private _store: Store, - private _languageService : LanguageService, + private _languageService: LanguageService, public readonly layoutService: LayoutService, public readonly bookmarkService: BookmarkService, public readonly taskService: TaskService, public projectService: ProjectService, ) { - this._subs = this._languageService.isLangRTL.subscribe( (val) => { + this._subs = this._languageService.isLangRTL.subscribe((val) => { this.isRTL = val; document.dir = this.isRTL ? 'rtl' : 'ltr'; }); @@ -187,6 +186,9 @@ export class AppComponent implements OnDestroy{ this.sideNavElRef.element.nativeElement.scrollIntoView({behavior: 'smooth'}); } + ngOnDestroy() { + this._subs.unsubscribe(); + } private _initElectronErrorHandler() { this._electronService.ipcRenderer.on(IPC.ERROR, (ev, data: { @@ -205,8 +207,4 @@ export class AppComponent implements OnDestroy{ console.error(data); }); } - - ngOnDestroy() { - this._subs.unsubscribe(); - } } diff --git a/src/app/core-ui/layout/layout.service.ts b/src/app/core-ui/layout/layout.service.ts index a8ce6bf3ec..3681dadf59 100644 --- a/src/app/core-ui/layout/layout.service.ts +++ b/src/app/core-ui/layout/layout.service.ts @@ -26,11 +26,6 @@ const BOTH_OVER = 780; }) export class LayoutService { isShowAddTaskBar$: Observable = this._store$.pipe(select(selectIsShowAddTaskBar)); - - private _isShowSideNav$: Observable = this._store$.pipe(select(selectIsShowSideNav)); - private _isShowNotes$: Observable = this._store$.pipe(select(selectIsShowNotes)); - - isNavAlwaysVisible$: Observable = this._breakPointObserver.observe([ `(min-width: ${NAV_ALWAYS_VISIBLE}px)`, ]).pipe(map(result => result.matches)); @@ -40,7 +35,9 @@ export class LayoutService { isNotesOver$: Observable = this._breakPointObserver.observe([ `(min-width: ${BOTH_OVER}px)`, ]).pipe(map(result => !result.matches)); - + isNavOver$: Observable = this.isNotesNextNavOver$.pipe(map(v => !v)); + isScrolled$ = new BehaviorSubject(false); + private _isShowSideNav$: Observable = this._store$.pipe(select(selectIsShowSideNav)); isShowSideNav$: Observable = this._isShowSideNav$.pipe( switchMap((isShow) => { return isShow @@ -49,8 +46,6 @@ export class LayoutService { }), ); - isNavOver$: Observable = this.isNotesNextNavOver$.pipe(map(v => !v)); - // isShowNotes$: Observable = this._isShowNotes$.pipe( // switchMap((isShow) => { @@ -59,8 +54,7 @@ export class LayoutService { // : this.isBothAlwaysVisible$; // }), // ); - - isScrolled$ = new BehaviorSubject(false); + private _isShowNotes$: Observable = this._store$.pipe(select(selectIsShowNotes)); constructor( private _store$: Store, diff --git a/src/app/core-ui/main-header/main-header.component.html b/src/app/core-ui/main-header/main-header.component.html index bd7970bae5..e68b145385 100644 --- a/src/app/core-ui/main-header/main-header.component.html +++ b/src/app/core-ui/main-header/main-header.component.html @@ -1,21 +1,21 @@
- -
{{(projectService.currentProject$|async).title}}
- @@ -53,45 +53,45 @@
@@ -81,9 +81,9 @@ {{T.MH.SETTINGS|translate}} - - diff --git a/src/app/features/bookmark/bookmark-bar/bookmark-bar.component.ts b/src/app/features/bookmark/bookmark-bar/bookmark-bar.component.ts index 85dd519cfb..fc4f5a61e0 100644 --- a/src/app/features/bookmark/bookmark-bar/bookmark-bar.component.ts +++ b/src/app/features/bookmark/bookmark-bar/bookmark-bar.component.ts @@ -27,13 +27,6 @@ export class BookmarkBarComponent implements OnDestroy { T = T; isContextMenuDisabled = false; bookmarkBarHeight = 50; - - @ViewChild('bookmarkBar', {read: ElementRef, static: false}) set bookmarkBarEl(content: ElementRef) { - if (content && content.nativeElement) { - this.bookmarkBarHeight = content.nativeElement.offsetHeight; - } - } - private _subs = new Subscription(); constructor( @@ -57,6 +50,12 @@ export class BookmarkBarComponent implements OnDestroy { ); } + @ViewChild('bookmarkBar', {read: ElementRef, static: false}) set bookmarkBarEl(content: ElementRef) { + if (content && content.nativeElement) { + this.bookmarkBarHeight = content.nativeElement.offsetHeight; + } + } + ngOnDestroy() { this._subs.unsubscribe(); } diff --git a/src/app/features/bookmark/dialog-edit-bookmark/dialog-edit-bookmark.component.html b/src/app/features/bookmark/dialog-edit-bookmark/dialog-edit-bookmark.component.html index 871b693a16..a48c53959a 100644 --- a/src/app/features/bookmark/dialog-edit-bookmark/dialog-edit-bookmark.component.html +++ b/src/app/features/bookmark/dialog-edit-bookmark/dialog-edit-bookmark.component.html @@ -9,10 +9,10 @@
@@ -28,8 +28,8 @@ {{bookmarkCopy.icon}} ; - - @Input() set cfg(v: any) { - this._cfg = v; - if (v && this._instance) { - this._instance.cfg = {...v}; - } - } - - get cfg() { - return this._cfg; - } - @Output() save: EventEmitter<{ sectionKey: GlobalConfigSectionKey | ProjectCfgFormKey, config: any }> = new EventEmitter(); - @ViewChild('customForm', {read: ViewContainerRef, static: true}) customFormRef: ViewContainerRef; - isExpanded = false; - private _subs = new Subscription(); - private _cfg: any; private _instance; private _viewDestroyTimeout: number; @@ -62,6 +46,19 @@ export class ConfigSectionComponent implements OnInit, OnDestroy { ) { } + private _cfg: any; + + get cfg() { + return this._cfg; + } + + @Input() set cfg(v: any) { + this._cfg = v; + if (v && this._instance) { + this._instance.cfg = {...v}; + } + } + ngOnInit(): void { if (this.section && this.section.customSection) { this._loadCustomSection(this.section.customSection); diff --git a/src/app/features/google/google-api.service.ts b/src/app/features/google/google-api.service.ts index 3f2bec30b1..1be7ad4c4d 100644 --- a/src/app/features/google/google-api.service.ts +++ b/src/app/features/google/google-api.service.ts @@ -22,8 +22,8 @@ const EXPIRES_SAFETY_MARGIN = 5 * 60 * 1000; providedIn: 'root', }) export class GoogleApiService { + public isLoggedIn: boolean; private _session$: Observable = this._configService.googleSession$; - private _onTokenExpire$: Observable = this._session$.pipe( switchMap((session) => { if (!session.accessToken) { @@ -37,8 +37,6 @@ export class GoogleApiService { : EMPTY; }) ); - - public isLoggedIn: boolean; public isLoggedIn$: Observable = merge( this._session$, this._onTokenExpire$, diff --git a/src/app/features/google/google-sync-cfg/google-sync-cfg.component.html b/src/app/features/google/google-sync-cfg/google-sync-cfg.component.html index 957fa49b97..d4fe2d59a6 100644 --- a/src/app/features/google/google-sync-cfg/google-sync-cfg.component.html +++ b/src/app/features/google/google-sync-cfg/google-sync-cfg.component.html @@ -2,8 +2,8 @@
- {{T.F.GOOGLE.SYNC_CFG.ENABLE|translate}} @@ -54,9 +54,9 @@ class="form-inputs"> file_upload @@ -96,21 +96,21 @@ timer - + href="https://myaccount.google.com/permissions" + mat-button + target="_blank"> remove_circle Revoke permissions diff --git a/src/app/features/google/google.module.ts b/src/app/features/google/google.module.ts index 407176307f..1b9604d047 100644 --- a/src/app/features/google/google.module.ts +++ b/src/app/features/google/google.module.ts @@ -26,8 +26,7 @@ import {GOOGLE_DRIVE_FEATURE_NAME} from './store/google-drive-sync.reducer'; DialogConfirmDriveSyncLoadComponent, DialogConfirmDriveSyncSaveComponent, ], - exports: [ - ], + exports: [], }) export class GoogleModule { } diff --git a/src/app/features/google/store/google-drive-sync.effects.ts b/src/app/features/google/store/google-drive-sync.effects.ts index 3ced213eef..3534ccd78d 100644 --- a/src/app/features/google/store/google-drive-sync.effects.ts +++ b/src/app/features/google/store/google-drive-sync.effects.ts @@ -2,7 +2,19 @@ import {Injectable} from '@angular/core'; import {Actions, Effect, ofType} from '@ngrx/effects'; import {Store} from '@ngrx/store'; import {GlobalConfigActionTypes, UpdateGlobalConfigSection} from '../../config/store/global-config.actions'; -import {catchError, concatMap, distinctUntilChanged, exhaustMap, filter, map, mapTo, switchMap, take, tap, withLatestFrom} from 'rxjs/operators'; +import { + catchError, + concatMap, + distinctUntilChanged, + exhaustMap, + filter, + map, + mapTo, + switchMap, + take, + tap, + withLatestFrom +} from 'rxjs/operators'; import {combineLatest, EMPTY, from, interval, Observable, of, throwError, zip} from 'rxjs'; import {GoogleDriveSyncService} from '../google-drive-sync.service'; import {GoogleApiService} from '../google-api.service'; diff --git a/src/app/features/issue/github/github-issue/github-issue-content/github-issue-content.component.html b/src/app/features/issue/github/github-issue/github-issue-content/github-issue-content.component.html index 45db922754..61c57a921f 100644 --- a/src/app/features/issue/github/github-issue/github-issue-content/github-issue-content.component.html +++ b/src/app/features/issue/github/github-issue/github-issue-content/github-issue-content.component.html @@ -54,9 +54,9 @@
{{comment.user?.login}} {{T.F.GITHUB.ISSUE_CONTENT.AT|translate}} {{comment.created_at|date:'short'}}
-
+
diff --git a/src/app/features/issue/github/github-issue/github-issue.service.ts b/src/app/features/issue/github/github-issue/github-issue.service.ts index 173e26d9d1..a66a0b71c0 100644 --- a/src/app/features/issue/github/github-issue/github-issue.service.ts +++ b/src/app/features/issue/github/github-issue/github-issue.service.ts @@ -21,6 +21,8 @@ export class GithubIssueService { // githubIssues$: Observable = this._store.pipe(select(selectAllGithubIssues)); // githubIssuesEntities$: Observable> = this._store.pipe(select(selectGithubIssueEntities)); + private _fineWithDeletionIssueIds = []; + constructor( private readonly _store: Store, private readonly _persistenceService: PersistenceService, @@ -29,9 +31,8 @@ export class GithubIssueService { ) { } - private _fineWithDeletionIssueIds = []; - // META + // ---- async loadStateForProject(projectId: string) { const lsGithubIssueState = await this._persistenceService.loadIssuesForProject(projectId, GITHUB_TYPE) as GithubIssueState; diff --git a/src/app/features/issue/github/github-issue/store/github-issue.reducer.ts b/src/app/features/issue/github/github-issue/store/github-issue.reducer.ts index 89b72d43fc..96fe133c97 100644 --- a/src/app/features/issue/github/github-issue/store/github-issue.reducer.ts +++ b/src/app/features/issue/github/github-issue/store/github-issue.reducer.ts @@ -89,7 +89,7 @@ export function githubIssueReducer( if (tasksWithGithubIssue && tasksWithGithubIssue.length > 0) { const issueIds = tasksWithGithubIssue.map(task => task.issueId) - // only remove if data is there in the first place + // only remove if data is there in the first place .filter((issueId) => { const ids = state.ids as number[]; const isInState = ids.includes(+issueId); diff --git a/src/app/features/issue/github/github.const.ts b/src/app/features/issue/github/github.const.ts index 21b0fc1699..fabff08c71 100644 --- a/src/app/features/issue/github/github.const.ts +++ b/src/app/features/issue/github/github.const.ts @@ -1,6 +1,5 @@ // TODO use as a checklist import {GithubCfg} from './github'; -import {FormlyFieldConfig} from '@ngx-formly/core'; import {T} from '../../../t.const'; import {ConfigFormSection, LimitedFormlyFieldConfig} from '../../config/global-config.model'; diff --git a/src/app/features/issue/jira/dialog-jira-add-worklog/dialog-jira-add-worklog.component.html b/src/app/features/issue/jira/dialog-jira-add-worklog/dialog-jira-add-worklog.component.html index 3c9ea758e1..865fb6cfcf 100644 --- a/src/app/features/issue/jira/dialog-jira-add-worklog/dialog-jira-add-worklog.component.html +++ b/src/app/features/issue/jira/dialog-jira-add-worklog/dialog-jira-add-worklog.component.html @@ -10,15 +10,16 @@

{{T.F.JIRA.DIALOG_WORKLOG.SUBMIT_WORKLOG_FOR|translate}} {{issue.key}} {{issue.summary}}.

-

{{T.F.JIRA.DIALOG_WORKLOG.CURRENTLY_LOGGED|translate}} {{(issue.timespent * 1000)|msToString}}

+

{{T.F.JIRA.DIALOG_WORKLOG.CURRENTLY_LOGGED|translate}} {{(issue.timespent * 1000)|msToString}} +

@@ -27,9 +28,9 @@ {{T.F.JIRA.DIALOG_WORKLOG.INVALID_DATE|translate}} diff --git a/src/app/features/issue/jira/jira-api.service.ts b/src/app/features/issue/jira/jira-api.service.ts index 6b27148c82..58fa0d015f 100644 --- a/src/app/features/issue/jira/jira-api.service.ts +++ b/src/app/features/issue/jira/jira-api.service.ts @@ -9,7 +9,13 @@ import { JIRA_REQUEST_TIMEOUT_DURATION } from './jira.const'; import {ProjectService} from '../../project/project.service'; -import {mapIssueResponse, mapIssuesResponse, mapResponse, mapToSearchResults, mapTransitionResponse} from './jira-issue/jira-issue-map.util'; +import { + mapIssueResponse, + mapIssuesResponse, + mapResponse, + mapToSearchResults, + mapTransitionResponse +} from './jira-issue/jira-issue-map.util'; import {JiraOriginalStatus, JiraOriginalTransition, JiraOriginalUser} from './jira-api-responses'; import {JiraCfg} from './jira'; import {ElectronService} from 'ngx-electron'; diff --git a/src/app/features/issue/jira/jira-cfg-stepper/jira-cfg-stepper.component.html b/src/app/features/issue/jira/jira-cfg-stepper/jira-cfg-stepper.component.html index 208ac09da9..bc45e210ef 100644 --- a/src/app/features/issue/jira/jira-cfg-stepper/jira-cfg-stepper.component.html +++ b/src/app/features/issue/jira/jira-cfg-stepper/jira-cfg-stepper.component.html @@ -6,8 +6,8 @@ [formGroup]="credentialsFormGroup"> {{T.F.JIRA.STEPPER.CREDENTIALS|translate}} -

+

- {{T.F.JIRA.CFG_CMP.ENABLE|translate}} @@ -36,9 +36,9 @@ + matInput> + matInput> diff --git a/src/app/features/issue/jira/jira-cfg/jira-cfg.component.ts b/src/app/features/issue/jira/jira-cfg/jira-cfg.component.ts index 965a8935d2..8f07f2e5e8 100644 --- a/src/app/features/issue/jira/jira-cfg/jira-cfg.component.ts +++ b/src/app/features/issue/jira/jira-cfg/jira-cfg.component.ts @@ -25,6 +25,52 @@ import {ProjectService} from '../../../project/project.service'; }) export class JiraCfgComponent implements OnInit, OnDestroy { @Input() section: ConfigFormSection; + @Output() save: EventEmitter<{ sectionKey: GlobalConfigSectionKey | ProjectCfgFormKey, config: any }> = new EventEmitter(); + T = T; + HelperClasses = HelperClasses; + issueSuggestionsCtrl: FormControl = new FormControl(); + customFieldSuggestionsCtrl: FormControl = new FormControl(); + customFields: any [] = []; + customFieldsPromise: Promise; + isLoading$ = new BehaviorSubject(false); + fields: FormlyFieldConfig[]; + form = new FormGroup({}); + options: FormlyFormOptions = {}; + filteredIssueSuggestions$: Observable = this.issueSuggestionsCtrl.valueChanges.pipe( + debounceTime(300), + tap(() => this.isLoading$.next(true)), + switchMap((searchTerm) => { + return (searchTerm && searchTerm.length > 1) + ? this._jiraApiService.issuePicker$(searchTerm) + .pipe( + catchError(() => { + return []; + }) + ) + // Note: the outer array signifies the observable stream the other is the value + : [[]]; + }), + tap((suggestions) => { + this.isLoading$.next(false); + }), + ); + filteredCustomFieldSuggestions$: Observable = this.customFieldSuggestionsCtrl.valueChanges.pipe( + map(value => this._filterCustomFieldSuggestions(value)), + ); + private _subs = new Subscription(); + + constructor( + private _jiraApiService: JiraApiService, + private _snackService: SnackService, + private _projectService: ProjectService, + ) { + } + + private _cfg: JiraCfg; + + get cfg() { + return this._cfg; + } // NOTE: this is legit because it might be that there is no issue provider cfg yet @Input() set cfg(cfg: JiraCfg) { @@ -48,59 +94,6 @@ export class JiraCfgComponent implements OnInit, OnDestroy { } } - get cfg() { - return this._cfg; - } - - @Output() save: EventEmitter<{ sectionKey: GlobalConfigSectionKey | ProjectCfgFormKey, config: any }> = new EventEmitter(); - - T = T; - HelperClasses = HelperClasses; - - issueSuggestionsCtrl: FormControl = new FormControl(); - customFieldSuggestionsCtrl: FormControl = new FormControl(); - customFields: any [] = []; - customFieldsPromise: Promise; - - isLoading$ = new BehaviorSubject(false); - - fields: FormlyFieldConfig[]; - form = new FormGroup({}); - options: FormlyFormOptions = {}; - - filteredIssueSuggestions$: Observable = this.issueSuggestionsCtrl.valueChanges.pipe( - debounceTime(300), - tap(() => this.isLoading$.next(true)), - switchMap((searchTerm) => { - return (searchTerm && searchTerm.length > 1) - ? this._jiraApiService.issuePicker$(searchTerm) - .pipe( - catchError(() => { - return []; - }) - ) - // Note: the outer array signifies the observable stream the other is the value - : [[]]; - }), - tap((suggestions) => { - this.isLoading$.next(false); - }), - ); - - filteredCustomFieldSuggestions$: Observable = this.customFieldSuggestionsCtrl.valueChanges.pipe( - map(value => this._filterCustomFieldSuggestions(value)), - ); - - private _subs = new Subscription(); - private _cfg: JiraCfg; - - constructor( - private _jiraApiService: JiraApiService, - private _snackService: SnackService, - private _projectService: ProjectService, - ) { - } - ngOnInit(): void { this.fields = this.section.items; } diff --git a/src/app/features/issue/jira/jira-issue/jira-issue-content/jira-issue-content.component.html b/src/app/features/issue/jira/jira-issue/jira-issue-content/jira-issue-content.component.html index 195a451edc..f595748131 100644 --- a/src/app/features/issue/jira/jira-issue/jira-issue-content/jira-issue-content.component.html +++ b/src/app/features/issue/jira/jira-issue/jira-issue-content/jira-issue-content.component.html @@ -93,8 +93,8 @@ {{comment.created|date:'short'}}
+ [innerHTML]="comment.body|jiraToMarkdown|markdown" + class="markdown"> diff --git a/src/app/features/issue/jira/jira-issue/jira-issue-map.util.ts b/src/app/features/issue/jira/jira-issue/jira-issue-map.util.ts index 87f3705fdd..b1a5e096ae 100644 --- a/src/app/features/issue/jira/jira-issue/jira-issue-map.util.ts +++ b/src/app/features/issue/jira/jira-issue/jira-issue-map.util.ts @@ -1,4 +1,4 @@ -import {JiraAttachment, JiraAuthor, JiraChangelogEntry, JiraComment, JiraIssue, } from './jira-issue.model'; +import {JiraAttachment, JiraAuthor, JiraChangelogEntry, JiraComment, JiraIssue} from './jira-issue.model'; import { JiraIssueOriginal, JiraOriginalAttachment, diff --git a/src/app/features/issue/jira/jira-issue/store/jira-issue.effects.ts b/src/app/features/issue/jira/jira-issue/store/jira-issue.effects.ts index 234658b5e6..f0d654fe18 100644 --- a/src/app/features/issue/jira/jira-issue/store/jira-issue.effects.ts +++ b/src/app/features/issue/jira/jira-issue/store/jira-issue.effects.ts @@ -39,25 +39,6 @@ import {HANDLED_ERROR_PROP_STR} from '../../../../../app.constants'; @Injectable() export class JiraIssueEffects { - @Effect({dispatch: false}) pollIssueChangesAndBacklogUpdates: any = this._actions$ - .pipe( - ofType( - // while load state should be enough this just might fix the error of polling for inactive projects? - ProjectActionTypes.LoadProjectRelatedDataSuccess, - ProjectActionTypes.UpdateProjectIssueProviderCfg, - JiraIssueActionTypes.LoadState, - ), - withLatestFrom( - this._projectService.isJiraEnabled$, - this._projectService.currentJiraCfg$, - ), - switchMap(([a, isEnabled, jiraCfg]) => { - return (isEnabled && jiraCfg.isAutoPollTickets) - ? this._pollChangesForIssues$ - : EMPTY; - }) - ); - @Effect() pollNewIssuesToBacklog$: any = this._actions$ .pipe( ofType( @@ -78,7 +59,6 @@ export class JiraIssueEffects { : EMPTY; }), ); - @Effect({dispatch: false}) syncIssueStateToLs$: any = this._actions$ .pipe( ofType( @@ -99,7 +79,6 @@ export class JiraIssueEffects { ), tap(this._saveToLs.bind(this)) ); - @Effect({dispatch: false}) addOpenIssuesToBacklog$: any = this._actions$ .pipe( ofType( @@ -110,8 +89,6 @@ export class JiraIssueEffects { ), tap(this._importNewIssuesToBacklog.bind(this)) ); - - @Effect({dispatch: false}) addWorklog$: any = this._actions$ .pipe( ofType( @@ -148,7 +125,6 @@ export class JiraIssueEffects { } }) ); - @Effect({dispatch: false}) checkForReassignment: any = this._actions$ .pipe( ofType( @@ -209,7 +185,6 @@ export class JiraIssueEffects { } }) ); - @Effect({dispatch: false}) checkForStartTransition$: Observable = this._actions$ .pipe( ofType( @@ -229,7 +204,6 @@ export class JiraIssueEffects { return this._handleTransitionForIssue('IN_PROGRESS', jiraCfg, issueData); }), ); - @Effect({dispatch: false}) checkForDoneTransition$: Observable = this._actions$ .pipe( @@ -253,7 +227,6 @@ export class JiraIssueEffects { return this._handleTransitionForIssue('DONE', jiraCfg, issueData); }) ); - @Effect({dispatch: false}) loadMissingIssues$: any = this._taskService.tasksWithMissingIssueData$ .pipe( withLatestFrom( @@ -272,7 +245,6 @@ export class JiraIssueEffects { tasks.forEach((task) => this._jiraIssueService.loadMissingIssueData(task.issueId)); }) ); - @Effect() updateTaskTitleIfChanged$: any = this._actions$ .pipe( ofType( @@ -298,7 +270,6 @@ export class JiraIssueEffects { }) ), ); - private _pollChangesForIssues$: Observable = timer(JIRA_INITIAL_POLL_DELAY, JIRA_POLL_INTERVAL).pipe( withLatestFrom( this._store$.pipe(select(selectJiraIssueIds)), @@ -316,6 +287,24 @@ export class JiraIssueEffects { } }), ); + @Effect({dispatch: false}) pollIssueChangesAndBacklogUpdates: any = this._actions$ + .pipe( + ofType( + // while load state should be enough this just might fix the error of polling for inactive projects? + ProjectActionTypes.LoadProjectRelatedDataSuccess, + ProjectActionTypes.UpdateProjectIssueProviderCfg, + JiraIssueActionTypes.LoadState, + ), + withLatestFrom( + this._projectService.isJiraEnabled$, + this._projectService.currentJiraCfg$, + ), + switchMap(([a, isEnabled, jiraCfg]) => { + return (isEnabled && jiraCfg.isAutoPollTickets) + ? this._pollChangesForIssues$ + : EMPTY; + }) + ); constructor(private readonly _actions$: Actions, private readonly _store$: Store, diff --git a/src/app/features/issue/jira/jira.const.ts b/src/app/features/issue/jira/jira.const.ts index e1d89fc5f4..604eb722f8 100644 --- a/src/app/features/issue/jira/jira.const.ts +++ b/src/app/features/issue/jira/jira.const.ts @@ -1,6 +1,5 @@ // TODO use as a checklist import {JiraCfg} from './jira'; -import {FormlyFieldConfig} from '@ngx-formly/core'; import {GITHUB_INITIAL_POLL_DELAY} from '../github/github.const'; import {T} from '../../../t.const'; import {ConfigFormSection, LimitedFormlyFieldConfig} from '../../config/global-config.model'; diff --git a/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.html b/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.html index 34f64219a8..da402b6307 100644 --- a/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.html +++ b/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.html @@ -13,14 +13,14 @@
{{T.F.METRIC.EVAL_FORM.MOOD_HINT|translate}} @@ -31,14 +31,14 @@ {{T.F.METRIC.EVAL_FORM.PRODUCTIVITY_HINT|translate}} @@ -51,34 +51,34 @@ + [suggestions]="(improvementService.improvements$|async)"> + [suggestions]="(obstructionService.obstructions$|async)"> + [toggledItems]="improvementService.repeatedImprovementIds$|async" + additionalActionIcon="repeat">
-
diff --git a/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.ts b/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.ts index c39f277568..f728a2e93c 100644 --- a/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.ts +++ b/src/app/features/metric/evaluation-sheet/evaluation-sheet.component.ts @@ -29,24 +29,16 @@ import {MatDialog} from '@angular/material/dialog'; changeDetection: ChangeDetectionStrategy.OnPush }) export class EvaluationSheetComponent implements OnDestroy, OnInit { - @Input() set day(val: string) { - this.day$.next(val); - } - @Output() save = new EventEmitter(); - T = T; metricForDay: MetricCopy; - day$ = new BehaviorSubject(getWorklogStr()); - // isForToday$: Observable = this.day$.pipe(map(day => day === getWorklogStr())); - private _metricForDay$ = this.day$.pipe( switchMap((day) => this._metricService.getMetricForDayOrDefaultWithCheckedImprovements$(day)), ); + // isForToday$: Observable = this.day$.pipe(map(day => day === getWorklogStr())); private _subs = new Subscription(); - constructor( public obstructionService: ObstructionService, public improvementService: ImprovementService, @@ -58,6 +50,10 @@ export class EvaluationSheetComponent implements OnDestroy, OnInit { ) { } + @Input() set day(val: string) { + this.day$.next(val); + } + ngOnInit(): void { this._subs.add(this._metricForDay$.subscribe(metric => { this.metricForDay = metric; diff --git a/src/app/features/metric/improvement-banner/improvement-banner.component.html b/src/app/features/metric/improvement-banner/improvement-banner.component.html index 0807d1ea3d..abd24963b1 100644 --- a/src/app/features/metric/improvement-banner/improvement-banner.component.html +++ b/src/app/features/metric/improvement-banner/improvement-banner.component.html @@ -1,23 +1,23 @@ -
-
-
{{improvement?.title}}
-
diff --git a/src/app/features/note/dialog-add-note-reminder/dialog-add-note-reminder.component.html b/src/app/features/note/dialog-add-note-reminder/dialog-add-note-reminder.component.html index 8b0eb7bd38..7c926ec129 100644 --- a/src/app/features/note/dialog-add-note-reminder/dialog-add-note-reminder.component.html +++ b/src/app/features/note/dialog-add-note-reminder/dialog-add-note-reminder.component.html @@ -9,9 +9,9 @@ {{T.F.NOTE.D_ADD_REMINDER.E_ENTER_TITLE|translate}} @@ -19,9 +19,9 @@ + name="reminderDate">
diff --git a/src/app/features/note/dialog-add-note/dialog-add-note.component.html b/src/app/features/note/dialog-add-note/dialog-add-note.component.html index f5b7a26665..0995ab9550 100644 --- a/src/app/features/note/dialog-add-note/dialog-add-note.component.html +++ b/src/app/features/note/dialog-add-note/dialog-add-note.component.html @@ -5,15 +5,15 @@ diff --git a/src/app/features/note/dialog-add-note/dialog-add-note.component.scss b/src/app/features/note/dialog-add-note/dialog-add-note.component.scss index d59a91d717..446eb73d82 100644 --- a/src/app/features/note/dialog-add-note/dialog-add-note.component.scss +++ b/src/app/features/note/dialog-add-note/dialog-add-note.component.scss @@ -3,6 +3,7 @@ :host-context([dir=rtl]) { direction: rtl; } + textarea { display: block; width: 100%; @@ -12,7 +13,7 @@ textarea { padding: $s; min-height: $s*5; - @include mq (xs) { + @include mq(xs) { min-height: 220px; width: 500px; } diff --git a/src/app/features/note/dialog-view-note-reminder/dialog-view-note-reminder.component.html b/src/app/features/note/dialog-view-note-reminder/dialog-view-note-reminder.component.html index 8af5955c6c..641e3e7124 100644 --- a/src/app/features/note/dialog-view-note-reminder/dialog-view-note-reminder.component.html +++ b/src/app/features/note/dialog-view-note-reminder/dialog-view-note-reminder.component.html @@ -20,8 +20,8 @@
- - - diff --git a/src/app/features/note/note/note.component.scss b/src/app/features/note/note/note.component.scss index 2a900bb427..e981a41341 100644 --- a/src/app/features/note/note/note.component.scss +++ b/src/app/features/note/note/note.component.scss @@ -6,6 +6,7 @@ $noteFontSize: 12px; :host { display: block; margin-right: $s; + :host-context([dir=rtl]) { margin-left: $s; margin-right: unset; @@ -25,11 +26,12 @@ $noteFontSize: 12px; box-shadow: $whiteframe-shadow-3dp; //outline: 2px dashed $c-accent; } + &.isFocused { z-index: 5; } - &.isImg { + &.isImg { border: 0; } @@ -48,6 +50,7 @@ $noteFontSize: 12px; right: unset; left: -$s*0.75; } + // fixes drag and drop on mobile touch-action: none; diff --git a/src/app/features/note/notes/notes.component.html b/src/app/features/note/notes/notes.component.html index b84149fe09..40c610e768 100644 --- a/src/app/features/note/notes/notes.component.html +++ b/src/app/features/note/notes/notes.component.html @@ -6,8 +6,8 @@ add {{T.F.NOTE.NOTES_CMP.ADD_BTN|translate}} - diff --git a/src/app/features/procrastination/procrastination.component.html b/src/app/features/procrastination/procrastination.component.html index e0c1f6dd62..e531e7760e 100644 --- a/src/app/features/procrastination/procrastination.component.html +++ b/src/app/features/procrastination/procrastination.component.html @@ -66,16 +66,16 @@ flaws.

- + - + - + @@ -88,7 +88,8 @@ -

+

diff --git a/src/app/features/project/dialogs/create-project/dialog-create-project.component.ts b/src/app/features/project/dialogs/create-project/dialog-create-project.component.ts index 3eca593fa4..6ae965779c 100644 --- a/src/app/features/project/dialogs/create-project/dialog-create-project.component.ts +++ b/src/app/features/project/dialogs/create-project/dialog-create-project.component.ts @@ -14,7 +14,7 @@ import {Subscription} from 'rxjs'; import {loadFromSessionStorage, saveToSessionStorage} from '../../../../core/persistence/local-storage'; import {GithubCfg} from '../../../issue/github/github'; import {DialogGithubInitialSetupComponent} from '../../../issue/github/dialog-github-initial-setup/dialog-github-initial-setup.component'; -import {DEFAULT_ISSUE_PROVIDER_CFGS, GITHUB_TYPE, JIRA_TYPE} from '../../../issue/issue.const'; +import {GITHUB_TYPE} from '../../../issue/issue.const'; import {T} from '../../../../t.const'; import {DEFAULT_JIRA_CFG} from '../../../issue/jira/jira.const'; import {DEFAULT_GITHUB_CFG} from '../../../issue/github/github.const'; diff --git a/src/app/features/task-repeat-cfg/dialog-edit-task-repeat-cfg/dialog-edit-task-repeat-cfg.component.scss b/src/app/features/task-repeat-cfg/dialog-edit-task-repeat-cfg/dialog-edit-task-repeat-cfg.component.scss index 76c547611b..db987698c9 100644 --- a/src/app/features/task-repeat-cfg/dialog-edit-task-repeat-cfg/dialog-edit-task-repeat-cfg.component.scss +++ b/src/app/features/task-repeat-cfg/dialog-edit-task-repeat-cfg/dialog-edit-task-repeat-cfg.component.scss @@ -3,6 +3,7 @@ h1, mat-dialog-actions, help-section { direction: rtl; } } + .form-wrapper { min-width: 280px; } diff --git a/src/app/features/tasks/add-task-bar/add-task-bar.component.html b/src/app/features/tasks/add-task-bar/add-task-bar.component.html index 97569287a8..cdbbd5bd4d 100644 --- a/src/app/features/tasks/add-task-bar/add-task-bar.component.html +++ b/src/app/features/tasks/add-task-bar/add-task-bar.component.html @@ -1,6 +1,6 @@
diff --git a/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.html b/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.html index 80b541a5c0..a4fd4bc4c9 100644 --- a/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.html +++ b/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.html @@ -9,9 +9,9 @@
+ name="reminderDate">
diff --git a/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.ts b/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.ts index 38357a52b6..f45b020a3e 100644 --- a/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.ts +++ b/src/app/features/tasks/dialog-add-task-reminder/dialog-add-task-reminder.component.ts @@ -1,6 +1,5 @@ import {ChangeDetectionStrategy, Component, Inject} from '@angular/core'; import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog'; -import {Task} from '../task.model'; import {TaskService} from '../task.service'; import {ReminderCopy} from '../../reminder/reminder.model'; import {ReminderService} from '../../reminder/reminder.service'; diff --git a/src/app/features/tasks/dialog-add-time-estimate-for-other-day/dialog-add-time-estimate-for-other-day.component.html b/src/app/features/tasks/dialog-add-time-estimate-for-other-day/dialog-add-time-estimate-for-other-day.component.html index 5006a4df4b..8f56af9636 100644 --- a/src/app/features/tasks/dialog-add-time-estimate-for-other-day/dialog-add-time-estimate-for-other-day.component.html +++ b/src/app/features/tasks/dialog-add-time-estimate-for-other-day/dialog-add-time-estimate-for-other-day.component.html @@ -6,8 +6,8 @@ -
+
@@ -16,9 +16,9 @@ {{T.V.E_DATETIME|translate}} @@ -39,14 +39,14 @@ - diff --git a/src/app/features/tasks/dialog-time-estimate/dialog-time-estimate.component.html b/src/app/features/tasks/dialog-time-estimate/dialog-time-estimate.component.html index 00e23d3fd4..514b5b68e9 100644 --- a/src/app/features/tasks/dialog-time-estimate/dialog-time-estimate.component.html +++ b/src/app/features/tasks/dialog-time-estimate/dialog-time-estimate.component.html @@ -7,8 +7,8 @@ -
+
@@ -27,18 +27,18 @@ class="other-day"> timer @@ -59,15 +59,15 @@ diff --git a/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.html b/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.html index 70d5c56a78..6cf030f038 100644 --- a/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.html +++ b/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.html @@ -37,9 +37,9 @@ -
- - - - diff --git a/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.ts b/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.ts index 534ac5dd84..1c048c1064 100644 --- a/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.ts +++ b/src/app/features/tasks/dialog-view-task-reminder/dialog-view-task-reminder.component.ts @@ -1,7 +1,7 @@ import {ChangeDetectionStrategy, Component, Inject, OnDestroy} from '@angular/core'; import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog'; import {Reminder} from '../../reminder/reminder.model'; -import {Task, TaskWithReminderData} from '../task.model'; +import {Task} from '../task.model'; import {TaskService} from '../task.service'; import {Observable, Subscription} from 'rxjs'; import {ReminderService} from '../../reminder/reminder.service'; @@ -47,15 +47,15 @@ export class DialogViewTaskReminderComponent implements OnDestroy { })); } - ngOnDestroy(): void { - this._subs.unsubscribe(); - } - get isError() { // just for this dialog we make an exception about using getters return !this.task && this.isForCurrentProject; } + ngOnDestroy(): void { + this._subs.unsubscribe(); + } + play() { this.isDisableControls = true; if (this.isForCurrentProject) { diff --git a/src/app/features/tasks/select-task/select-task.component.html b/src/app/features/tasks/select-task/select-task.component.html index 626a6131b4..4b89435690 100644 --- a/src/app/features/tasks/select-task/select-task.component.html +++ b/src/app/features/tasks/select-task/select-task.component.html @@ -1,8 +1,8 @@ track_changes diff --git a/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.html b/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.html index ceaffb80e0..1185e43715 100644 --- a/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.html +++ b/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.html @@ -1,6 +1,6 @@ -
+
@@ -8,9 +8,9 @@
- diff --git a/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.ts b/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.ts index 9cbe02e039..96a820d899 100644 --- a/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.ts +++ b/src/app/features/tasks/task-additional-info/task-additional-info-item/task-additional-info-item.component.ts @@ -26,6 +26,10 @@ export class TaskAdditionalInfoItemComponent { @HostBinding('tabindex') tabindex = 3; + constructor( + public elementRef: ElementRef + ) { + } @HostListener('keydown', ['$event']) onKeyDown(ev: KeyboardEvent) { const tagName = (ev.target as HTMLElement).tagName.toLowerCase(); @@ -55,11 +59,6 @@ export class TaskAdditionalInfoItemComponent { } } - constructor( - public elementRef: ElementRef - ) { - } - focusEl() { this.elementRef.nativeElement.focus(); } diff --git a/src/app/features/tasks/task-additional-info/task-additional-info-wrapper/task-additional-info-wrapper.component.html b/src/app/features/tasks/task-additional-info/task-additional-info-wrapper/task-additional-info-wrapper.component.html index 3c0bf2ca6c..d84ac891a5 100644 --- a/src/app/features/tasks/task-additional-info/task-additional-info-wrapper/task-additional-info-wrapper.component.html +++ b/src/app/features/tasks/task-additional-info/task-additional-info-wrapper/task-additional-info-wrapper.component.html @@ -1,6 +1,6 @@ - diff --git a/src/app/features/tasks/task-additional-info/task-additional-info.ani.ts b/src/app/features/tasks/task-additional-info/task-additional-info.ani.ts index f1d054e95b..b449a2dd95 100644 --- a/src/app/features/tasks/task-additional-info/task-additional-info.ani.ts +++ b/src/app/features/tasks/task-additional-info/task-additional-info.ani.ts @@ -1,5 +1,5 @@ import {animate, style, transition, trigger} from '@angular/animations'; -import {ANI_ENTER_TIMING, ANI_LEAVE_TIMING} from '../../../ui/animations/animation.const'; +import {ANI_ENTER_TIMING} from '../../../ui/animations/animation.const'; const ANI = [ style({opacity: 0, transform: 'scale(0.9)'}), diff --git a/src/app/features/tasks/task-additional-info/task-additional-info.component.html b/src/app/features/tasks/task-additional-info/task-additional-info.component.html index b298077f76..afda28059f 100644 --- a/src/app/features/tasks/task-additional-info/task-additional-info.component.html +++ b/src/app/features/tasks/task-additional-info/task-additional-info.component.html @@ -1,14 +1,14 @@ -
+
+ *ngIf="task.parentId" + [inputIcon]="'arrow_forward'" + class="input-item --estimate"> subdirectory_arrow_right {{T.F.TASK.ADDITIONAL_INFO.PARENT|translate}} @@ -22,12 +22,12 @@ + *ngIf="!task.subTasks?.length" + [inputIcon]="'edit'" + class="input-item --estimate"> timer {{T.F.TASK.ADDITIONAL_INFO.TIME|translate}} @@ -47,33 +47,33 @@ + *ngIf="!task.repeatCfgId" + [inputIcon]="task.reminderId ? 'edit': 'add'" + class="input-item"> alarm {{T.F.TASK.ADDITIONAL_INFO.REMINDER|translate}} {{T.F.TASK.ADDITIONAL_INFO.SCHEDULE_TASK|translate}} -
+
{{reminderData.remindAt|humanizeTimestamp}}
+ [type]="'panel'"> @@ -87,11 +87,11 @@ + (editActionTriggered)="isFocusNotes=true" + (keyPress)="onItemKeyPress($event)" + [expanded]="task.notes || (!(task.issueId) && !task.attachmentIds?.length)" + [type]="'panel'"> chat chat_bubble_outline @@ -99,24 +99,24 @@ - + [isShowControls]="true" + [model]="task.notes"> + *ngIf="issueAttachments?.length || (localAttachments$|async)?.length" + [expanded]="true" + [type]="'panel'"> attachment {{T.F.TASK.ADDITIONAL_INFO.ATTACHMENTS|translate:{nr: issueAttachments?.length + (localAttachments$|async)?.length} }} @@ -128,8 +128,8 @@ -

{{T.F.TASK.ADDITIONAL_INFO.LOCAL_ATTACHMENTS|translate}}

@@ -137,12 +137,12 @@
+ *ngIf="!issueAttachments?.length && !(localAttachments$|async)?.length" + [inputIcon]="'add'" + class="input-item"> attachment {{T.F.TASK.ADDITIONAL_INFO.ADD_ATTACHMENT|translate}} @@ -153,12 +153,12 @@ + *ngIf="!task.parentId && !task.issueId" + [inputIcon]="task.repeatCfgId ? 'edit': 'add'" + class="input-item"> repeat @@ -166,9 +166,9 @@ {{T.F.TASK.ADDITIONAL_INFO.REPEAT|translate}} -
+
{{repeatCfgDays}}
diff --git a/src/app/features/tasks/task-additional-info/task-additional-info.component.ts b/src/app/features/tasks/task-additional-info/task-additional-info.component.ts index deb048ede6..b6a1d235c1 100644 --- a/src/app/features/tasks/task-additional-info/task-additional-info.component.ts +++ b/src/app/features/tasks/task-additional-info/task-additional-info.component.ts @@ -83,17 +83,14 @@ export class TaskAdditionalInfoComponent implements AfterViewInit, OnDestroy { : of(null) ), ); - - private _attachmentIds$ = new BehaviorSubject([]); - localAttachments$: Observable = this._attachmentIds$.pipe( - switchMap((ids) => this.attachmentService.getByIds$(ids)) - ); - parentId$ = new BehaviorSubject(null); parentTaskData$: Observable = this.parentId$.pipe( switchMap((id) => id ? this.taskService.getByIdWithIssueData$(id) : of(null)) ); - + private _attachmentIds$ = new BehaviorSubject([]); + localAttachments$: Observable = this._attachmentIds$.pipe( + switchMap((ids) => this.attachmentService.getByIds$(ids)) + ); private _taskData: TaskWithSubTasks; private _focusTimeout: number; private _subs = new Subscription(); @@ -109,6 +106,10 @@ export class TaskAdditionalInfoComponent implements AfterViewInit, OnDestroy { ) { } + get task(): TaskWithSubTasks { + return this._taskData; + } + @Input() set task(newVal: TaskWithSubTasks) { const prev = this._taskData; this._taskData = newVal; @@ -123,10 +124,6 @@ export class TaskAdditionalInfoComponent implements AfterViewInit, OnDestroy { } } - get task(): TaskWithSubTasks { - return this._taskData; - } - get progress() { return this._taskData && this._taskData.timeEstimate && (this._taskData.timeSpent / this._taskData.timeEstimate) * 100; } diff --git a/src/app/features/tasks/task-summary-table/task-summary-table.component.html b/src/app/features/tasks/task-summary-table/task-summary-table.component.html index 9e68fc7b36..d8b8dbceb7 100644 --- a/src/app/features/tasks/task-summary-table/task-summary-table.component.html +++ b/src/app/features/tasks/task-summary-table/task-summary-table.component.html @@ -15,9 +15,9 @@ class="repeat-task-icon">repeat - +
@@ -67,10 +67,10 @@ mat-cell>
- @@ -285,8 +285,8 @@ + tabindex="2" + target="_blank"> {{T.F.TASK.CMP.OPEN_ISSUE|translate}} @@ -325,18 +325,18 @@ {{T.F.TASK.CMP.DELETE|translate}} - - @@ -375,11 +375,11 @@ class="sub-tasks"> - @@ -61,9 +61,9 @@
- +
diff --git a/src/app/features/worklog/worklog.component.html b/src/app/features/worklog/worklog.component.html index b112df1ba5..304600a677 100644 --- a/src/app/features/worklog/worklog.component.html +++ b/src/app/features/worklog/worklog.component.html @@ -26,9 +26,9 @@ @@ -53,9 +53,9 @@ (click)="exportData(month.value,year.key, month.key, week.weekNr)" [matTooltip]="week.start+'.-'+week.end+'. Days: '+ week.daysWorked+', Time: '+(week.timeSpent|msToString)" aria-label="export data" + class="mat-elevation-z1" color="" - mat-mini-fab - class="mat-elevation-z1"> + mat-mini-fab> call_made
@@ -94,8 +94,8 @@ repeat + [title]="T.F.WORKLOG.CMP.REPEATING_TASK|translate" + class="repeat-task-icon">repeat {{logEntry.task.title}} @@ -113,10 +113,10 @@ diff --git a/src/app/imex/imex-meta/imex-meta.service.ts b/src/app/imex/imex-meta/imex-meta.service.ts index 49e285ff36..ce1722dc3e 100644 --- a/src/app/imex/imex-meta/imex-meta.service.ts +++ b/src/app/imex/imex-meta/imex-meta.service.ts @@ -5,9 +5,9 @@ import {BehaviorSubject, Observable} from 'rxjs'; providedIn: 'root' }) export class ImexMetaService { + isDataImportInProgress = false; private _isDataImportInProgress$ = new BehaviorSubject(false); isDataImportInProgress$: Observable = this._isDataImportInProgress$.asObservable(); - isDataImportInProgress = false; constructor() { this.isDataImportInProgress$.subscribe((val) => this.isDataImportInProgress = val); diff --git a/src/app/pages/config-page/config-page.component.html b/src/app/pages/config-page/config-page.component.html index 352fb8c4d2..96893b1885 100644 --- a/src/app/pages/config-page/config-page.component.html +++ b/src/app/pages/config-page/config-page.component.html @@ -7,14 +7,14 @@
+ (change)="toggleDarkMode($event)" + [checked]="(configService.misc$|async)?.isDarkMode"> {{T.PS.TOGGLE_DARK_MODE|translate}}
-
+
diff --git a/src/app/pages/daily-summary/daily-summary.component.html b/src/app/pages/daily-summary/daily-summary.component.html index 5007bff4f3..00d4db2253 100644 --- a/src/app/pages/daily-summary/daily-summary.component.html +++ b/src/app/pages/daily-summary/daily-summary.component.html @@ -8,8 +8,8 @@
-
+
timer
{{T.PDS.TIME_SPENT_AND_ESTIMATE_LABEL|translate}}
{{timeWorked$|async|msToClockString}} @@ -80,13 +80,13 @@ - +
@@ -133,8 +133,8 @@ - +
-
+
diff --git a/src/app/pages/daily-summary/plan-tasks-tomorrow/plan-tasks-tomorrow.component.scss b/src/app/pages/daily-summary/plan-tasks-tomorrow/plan-tasks-tomorrow.component.scss index 228365399d..5c3da4ebd3 100644 --- a/src/app/pages/daily-summary/plan-tasks-tomorrow/plan-tasks-tomorrow.component.scss +++ b/src/app/pages/daily-summary/plan-tasks-tomorrow/plan-tasks-tomorrow.component.scss @@ -5,7 +5,7 @@ max-width: 628px; } -:host::ng-deep .hover-controls{ +:host::ng-deep .hover-controls { .task-done-btn, .start-task-btn { display: none !important; diff --git a/src/app/pages/metric-page/metric-page.component.ts b/src/app/pages/metric-page/metric-page.component.ts index 0c887abd67..8589b8641c 100644 --- a/src/app/pages/metric-page/metric-page.component.ts +++ b/src/app/pages/metric-page/metric-page.component.ts @@ -9,6 +9,7 @@ import {T} from '../../t.const'; }) export class MetricPageComponent { T = T; + constructor() { } } diff --git a/src/app/pages/project-page/project-page.component.html b/src/app/pages/project-page/project-page.component.html index 085a7a1c01..0934a26fc2 100644 --- a/src/app/pages/project-page/project-page.component.html +++ b/src/app/pages/project-page/project-page.component.html @@ -21,39 +21,39 @@
+ [title]="T.PP.JIRA_CONFIGURED|translate" + svgIcon="jira"> + [title]="T.PP.GITHUB_CONFIGURED|translate" + svgIcon="github">
@@ -97,25 +97,25 @@
+ [title]="T.PP.JIRA_CONFIGURED|translate" + svgIcon="jira"> + [title]="T.PP.GITHUB_CONFIGURED|translate" + svgIcon="github">
diff --git a/src/app/pages/project-settings/project-settings.module.ts b/src/app/pages/project-settings/project-settings.module.ts index 71e9697422..83a6e300e9 100644 --- a/src/app/pages/project-settings/project-settings.module.ts +++ b/src/app/pages/project-settings/project-settings.module.ts @@ -3,7 +3,6 @@ import {CommonModule} from '@angular/common'; import {ProjectSettingsComponent} from './project-settings.component'; import {UiModule} from '../../ui/ui.module'; import {ConfigModule} from '../../features/config/config.module'; -import {GoogleModule} from '../../features/google/google.module'; import {JiraModule} from '../../features/issue/jira/jira.module'; diff --git a/src/app/pages/schedule-page/schedule-page.component.html b/src/app/pages/schedule-page/schedule-page.component.html index b5f59388bc..6768ddecaf 100644 --- a/src/app/pages/schedule-page/schedule-page.component.html +++ b/src/app/pages/schedule-page/schedule-page.component.html @@ -18,20 +18,20 @@
-
{{task.title}}
+
{{task.title}}
{{project.title}}
-
+ matTooltipPosition="left">
{{task.reminderData.remindAt|humanizeTimestamp}}
diff --git a/src/app/pages/work-view/backlog/backlog.component.html b/src/app/pages/work-view/backlog/backlog.component.html index 1aee556a36..3f37ea709b 100644 --- a/src/app/pages/work-view/backlog/backlog.component.html +++ b/src/app/pages/work-view/backlog/backlog.component.html @@ -1,8 +1,8 @@
- diff --git a/src/app/pages/work-view/work-view-page.component.html b/src/app/pages/work-view/work-view-page.component.html index 41ff5758bf..4238cf021f 100644 --- a/src/app/pages/work-view/work-view-page.component.html +++ b/src/app/pages/work-view/work-view-page.component.html @@ -89,8 +89,8 @@ @expandFade class="planning-mode-content"> + [isAddToBottom]="true" + [isDoubleEnterMode]="true">
diff --git a/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.spec.ts b/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.spec.ts index 30ce4e7c80..49f526fa40 100644 --- a/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.spec.ts +++ b/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.spec.ts @@ -1,6 +1,6 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; -import { BetterDrawerContainerComponent } from './better-drawer-container.component'; +import {BetterDrawerContainerComponent} from './better-drawer-container.component'; describe('BetterDrawerContainerComponent', () => { let component: BetterDrawerContainerComponent; @@ -8,9 +8,9 @@ describe('BetterDrawerContainerComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ BetterDrawerContainerComponent ] + declarations: [BetterDrawerContainerComponent] }) - .compileComponents(); + .compileComponents(); })); beforeEach(() => { diff --git a/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.ts b/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.ts index 444a9057db..f9ac267572 100644 --- a/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.ts +++ b/src/app/ui/better-drawer/better-drawer-container/better-drawer-container.component.ts @@ -14,7 +14,7 @@ import { import {fadeAnimation} from '../../animations/fade.ani'; import {DomSanitizer, SafeStyle} from '@angular/platform-browser'; import {Observable, ReplaySubject, Subscription} from 'rxjs'; -import {distinctUntilChanged, filter, map, share, switchMap, tap} from 'rxjs/operators'; +import {distinctUntilChanged, filter, map, share, switchMap} from 'rxjs/operators'; import {observeWidth} from '../../../util/resize-observer-obs'; import {MainContainerClass} from '../../../app.constants'; @@ -31,35 +31,8 @@ const VERY_SMALL_CONTAINER_WIDTH = 450; }) export class BetterDrawerContainerComponent implements OnInit, AfterContentInit, OnDestroy { @Input() sideWidth: number; - - @Input() set isOpen(v: boolean) { - this._isOpen = v; - this._updateStyle(); - } - - @HostBinding('class.isOpen') get isOpenGet() { - return this._isOpen; - } - - @Input() set isOver(v: boolean) { - this._isOver = v; - this._updateStyle(); - } - - @HostBinding('class.isOver') get isOverGet() { - return this._isOver; - } - @Output() wasClosed = new EventEmitter(); - - @ViewChild('contentElRef', {static: false, read: ElementRef}) set setContentElRef(ref: ElementRef) { - if (ref) { - this.contentEl$.next(ref.nativeElement); - } - } - contentEl$ = new ReplaySubject(1); - containerWidth$: Observable = this.contentEl$.pipe( filter(el => !!el), switchMap((el) => observeWidth(el)), @@ -74,20 +47,43 @@ export class BetterDrawerContainerComponent implements OnInit, AfterContentInit, map(v => v < VERY_SMALL_CONTAINER_WIDTH), distinctUntilChanged(), ); - sideStyle: SafeStyle; - - private _isOpen: boolean; - private _isOver: boolean; private _subs = new Subscription(); - constructor( private _elementRef: ElementRef, private _domSanitizer: DomSanitizer, ) { } + @HostBinding('class.isOpen') get isOpenGet() { + return this._isOpen; + } + + @HostBinding('class.isOver') get isOverGet() { + return this._isOver; + } + + @ViewChild('contentElRef', {static: false, read: ElementRef}) set setContentElRef(ref: ElementRef) { + if (ref) { + this.contentEl$.next(ref.nativeElement); + } + } + + private _isOpen: boolean; + + @Input() set isOpen(v: boolean) { + this._isOpen = v; + this._updateStyle(); + } + + private _isOver: boolean; + + @Input() set isOver(v: boolean) { + this._isOver = v; + this._updateStyle(); + } + ngOnInit(): void { this._updateStyle(); } diff --git a/src/app/ui/better-drawer/better-drawer.module.ts b/src/app/ui/better-drawer/better-drawer.module.ts index 389fa6d6ca..d0115216b9 100644 --- a/src/app/ui/better-drawer/better-drawer.module.ts +++ b/src/app/ui/better-drawer/better-drawer.module.ts @@ -1,7 +1,6 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { BetterDrawerContainerComponent } from './better-drawer-container/better-drawer-container.component'; - +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {BetterDrawerContainerComponent} from './better-drawer-container/better-drawer-container.component'; @NgModule({ @@ -15,4 +14,5 @@ import { BetterDrawerContainerComponent } from './better-drawer-container/better CommonModule ], }) -export class BetterDrawerModule { } +export class BetterDrawerModule { +} diff --git a/src/app/ui/chip-list-input/chip-list-input.component.html b/src/app/ui/chip-list-input/chip-list-input.component.html index 47ed34fe4c..e3ef5f13d9 100644 --- a/src/app/ui/chip-list-input/chip-list-input.component.html +++ b/src/app/ui/chip-list-input/chip-list-input.component.html @@ -7,16 +7,16 @@ {{ modelItem.title}} - cancel + cancel - diff --git a/src/app/ui/chip-list-input/chip-list-input.component.ts b/src/app/ui/chip-list-input/chip-list-input.component.ts index f8cf36ecd1..cdbac3e75c 100644 --- a/src/app/ui/chip-list-input/chip-list-input.component.ts +++ b/src/app/ui/chip-list-input/chip-list-input.component.ts @@ -30,29 +30,17 @@ export class ChipListInputComponent { @Input() additionalActionTooltip: string; @Input() additionalActionTooltipUnToggle: string; @Input() toggledItems: string[]; - - @Input() set suggestions(val) { - this.suggestionsIn = val.sort((a, b) => a.title.localeCompare(b.title)); - this._updateModelItems(this._modelIds); - } - suggestionsIn: Suggestion[]; - - @Input() set model(v: string[]) { - this._modelIds = v; - this._updateModelItems(v); - } - @Output() addItem = new EventEmitter(); @Output() addNewItem = new EventEmitter(); @Output() removeItem = new EventEmitter(); @Output() additionalAction = new EventEmitter(); - modelItems: Suggestion[]; - inputCtrl = new FormControl(); separatorKeysCodes: number[] = [ENTER, COMMA]; - + @ViewChild('inputElRef', {static: true}) inputEl: ElementRef; + @ViewChild('autoElRef', {static: true}) matAutocomplete: MatAutocomplete; + private _modelIds: string[] = []; filteredSuggestions: Observable = this.inputCtrl.valueChanges.pipe( startWith(''), map((val: string | null) => val @@ -60,14 +48,19 @@ export class ChipListInputComponent { : this.suggestionsIn.filter(suggestion => !this._modelIds || !this._modelIds.includes(suggestion.id))) ); - @ViewChild('inputElRef', {static: true}) inputEl: ElementRef; - @ViewChild('autoElRef', {static: true}) matAutocomplete: MatAutocomplete; - - private _modelIds: string[] = []; - constructor() { } + @Input() set suggestions(val) { + this.suggestionsIn = val.sort((a, b) => a.title.localeCompare(b.title)); + this._updateModelItems(this._modelIds); + } + + @Input() set model(v: string[]) { + this._modelIds = v; + this._updateModelItems(v); + } + add(event: MatChipInputEvent): void { if (!this.matAutocomplete.isOpen) { const input = event.input; diff --git a/src/app/ui/datetime-input/datetime-input.component.html b/src/app/ui/datetime-input/datetime-input.component.html index 2e8cec19d9..e4857e47e6 100644 --- a/src/app/ui/datetime-input/datetime-input.component.html +++ b/src/app/ui/datetime-input/datetime-input.component.html @@ -26,7 +26,7 @@ {{T.DATETIME_INPUT.IN|translate:{time: '2h'} }} {{T.DATETIME_INPUT.IN|translate:{time: '5h'} }} {{T.DATETIME_INPUT.TOMORROW|translate:{time: '11:00'} }} - {{lastVal|date:'short'}} + {{lastVal|date:'short'}}
diff --git a/src/app/ui/datetime-input/datetime-input.component.ts b/src/app/ui/datetime-input/datetime-input.component.ts index 025853e34d..609d5109c2 100644 --- a/src/app/ui/datetime-input/datetime-input.component.ts +++ b/src/app/ui/datetime-input/datetime-input.component.ts @@ -26,15 +26,15 @@ export class DatetimeInputComponent { } } + get model() { + return this.nrValue; + } + @Input() set model(v: number) { this._updateValues(v); } - get model() { - return this.nrValue; - } - updateFromInput(v: number) { this._updateValues(v, true); } diff --git a/src/app/ui/duration/input-duration-slider/input-duration-slider.component.html b/src/app/ui/duration/input-duration-slider/input-duration-slider.component.html index 86854f1256..0ff6cf604c 100644 --- a/src/app/ui/duration/input-duration-slider/input-duration-slider.component.html +++ b/src/app/ui/duration/input-duration-slider/input-duration-slider.component.html @@ -16,9 +16,9 @@
diff --git a/src/app/ui/inline-markdown/inline-markdown.component.html b/src/app/ui/inline-markdown/inline-markdown.component.html index fd7bf33357..94364ce288 100644 --- a/src/app/ui/inline-markdown/inline-markdown.component.html +++ b/src/app/ui/inline-markdown/inline-markdown.component.html @@ -5,8 +5,8 @@ (blur)="untoggleShowEdit(); setBlur($event)" (focus)="setFocus($event)" (input)="resizeTextareaToFit()" - (keypress)="keypressHandler($event)" (keydown)="keypressHandler($event)" + (keypress)="keypressHandler($event)" *ngIf="isShowEdit || (isTurnOffMarkdownParsing$|async)" [@fade] [ngModel]="modelCopy" @@ -17,18 +17,18 @@
-
-
diff --git a/src/app/ui/inline-markdown/inline-markdown.component.ts b/src/app/ui/inline-markdown/inline-markdown.component.ts index ab5dcc6f5b..4054f97a72 100644 --- a/src/app/ui/inline-markdown/inline-markdown.component.ts +++ b/src/app/ui/inline-markdown/inline-markdown.component.ts @@ -50,14 +50,27 @@ export class InlineMarkdownComponent implements OnInit, OnDestroy { map(cfg => cfg && cfg.isTurnOffMarkdown), startWith(false), ); + private _hideOverFlowTimeout: number; + + constructor( + private _electronService: ElectronService, + private _cd: ChangeDetectorRef, + private _globalConfigService: GlobalConfigService, + private _matDialog: MatDialog, + ) { + this.resizeParsedToFit(); + } @HostBinding('class.isFocused') get isFocused() { return this.isShowEdit; } - private _hideOverFlowTimeout: number; - private _model: string; + + get model() { + return this._model; + } + @Input() set model(v: string) { this._model = v; this.modelCopy = v; @@ -69,20 +82,6 @@ export class InlineMarkdownComponent implements OnInit, OnDestroy { } } - get model() { - return this._model; - } - - - constructor( - private _electronService: ElectronService, - private _cd: ChangeDetectorRef, - private _globalConfigService: GlobalConfigService, - private _matDialog: MatDialog, - ) { - this.resizeParsedToFit(); - } - @Input() set isFocus(val: boolean) { if (!this.isShowEdit && val) { this.toggleShowEdit(); diff --git a/src/assets/fonts/MaterialIcons-Regular.svg b/src/assets/fonts/MaterialIcons-Regular.svg index 5eff3dddba..a561fd88eb 100644 --- a/src/assets/fonts/MaterialIcons-Regular.svg +++ b/src/assets/fonts/MaterialIcons-Regular.svg @@ -3,2373 +3,3344 @@ - + Created by FontForge 20151118 at Mon Feb 8 11:58:02 2016 By shyndman Copyright 2015 Google, Inc. All Rights Reserved. - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + + + + + - - - - + + + + - - - + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +c0 29 24 54 53 54s53 -25 53 -54v-10z" + glyph-name="vpn_lock" + unicode="vpn_lock" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 38f5ade3ad..11a68c714b 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -1,947 +1,947 @@ { - "APP": { - "B_INSTALL": { - "IGNORE": "Ignora", - "INSTALL": "Installa", - "MSG": "Vuoi installare Super Productivity come PWA?" - }, - "UPDATE_WEB_APP": "Una nuova versione è disponibile. Vuoi caricare la nuova versione?" + "APP": { + "B_INSTALL": { + "IGNORE": "Ignora", + "INSTALL": "Installa", + "MSG": "Vuoi installare Super Productivity come PWA?" }, - "BL": { - "FROM_OTHER_PROJECTS": "Da altri progetti", - "NO_TASKS": "Non ci sono task nel tuo backlog", - "SCHEDULED": "Programmato", - "TITLE": "Backlog" - }, - "DATETIME_INPUT": { - "IN": "in {{time}}", - "TOMORROW": "domani {{time}}" - }, - "F": { - "ATTACHMENT": { - "DIALOG_EDIT": { - "ADD_ATTACHMENT": "Aggiungi allegato", - "EDIT_ATTACHMENT": "Modifica allegato", - "LABELS": { - "FILE": "Percorso del file", - "IMG": "Immagine", - "LINK": "Url" - }, - "SELECT_TYPE": "Seleziona un tipo", - "TYPES": { - "FILE": "File (aperto con l'app predefinita di sistema)", - "IMG": "Immagine (mostrata nella miniatura)", - "LINK": "Link (aperto nel browser)" - } - } + "UPDATE_WEB_APP": "Una nuova versione è disponibile. Vuoi caricare la nuova versione?" + }, + "BL": { + "FROM_OTHER_PROJECTS": "Da altri progetti", + "NO_TASKS": "Non ci sono task nel tuo backlog", + "SCHEDULED": "Programmato", + "TITLE": "Backlog" + }, + "DATETIME_INPUT": { + "IN": "in {{time}}", + "TOMORROW": "domani {{time}}" + }, + "F": { + "ATTACHMENT": { + "DIALOG_EDIT": { + "ADD_ATTACHMENT": "Aggiungi allegato", + "EDIT_ATTACHMENT": "Modifica allegato", + "LABELS": { + "FILE": "Percorso del file", + "IMG": "Immagine", + "LINK": "Url" }, - "BOOKMARK": { - "BAR": { - "DROP": "Trascina qui per aggiungere un segnalibro", - "NO_BOOKMARKS": "Non hai segnalibri nel progetto. Aggiungine uno tramite drag-and-drop oppure cliccando il pulsante 'più'." - }, - "DIALOG_EDIT": { - "ADD_BOOKMARK": "Aggiungi segnalibro", - "EDIT_BOOKMARK": "Modifica segnalibro", - "LABELS": { - "COMMAND": "Comando", - "FILE": "Percorso del file", - "IMG": "Immagine", - "LINK": "Url" - }, - "SELECT_ICON": "Seleziona un'icona", - "SELECT_TYPE": "Seleziona un tipo", - "TYPES": { - "COMMAND": "Comando (comando da shell)", - "FILE": "File (aperto con l'app predefinita di sistema)", - "IMG": "Image (mostrata nella miniatura)", - "LINK": "Link (aperto nel browser)" - } - } - }, - "CONFIG": { - "S": { - "UPDATE_SECTION": "Aggiornate impostazioni per {{sectionKey}}" - } - }, - "GITHUB": { - "DIALOG_INITIAL": { - "TITLE": "Configura Github per il progetto" - }, - "FORM": { - "FILTER_USER": "Username (es. per filtrare le modifiche fatte da te)", - "IS_AUTO_ADD_TO_BACKLOG": "Aggiungi automaticamente gli issue non risolti da Github al backlog", - "IS_AUTO_POLL": "Esegui il polling automatico delle modifiche sugli issue di git importati", - "IS_SEARCH_ISSUES_FROM_GITHUB": "Mostra gli issue di git come suggerimenti quando aggiungi un nuovo task", - "REPO": "\"username/repositoryName\" per il repository git che vuoi tracciare" - }, - "FORM_SECTION": { - "HELP": "

Qui puoi configurare SuperProductivity per aggiungere la lista degli issue di una specifica repository nel pannello di creazione task nella vista pianificazione giornaliera. Saranno mostrati come suggerimenti e forniranno un link all'issue ed alcune informazioni su di esso.

Inoltre puoi aggiungere e sincronizzare automaticamente tutti gli issue aperti al backlog dei task.

", - "TITLE": "Github" - }, - "ISSUE_CONTENT": { - "ASSIGNEE": "Assegnatario", - "AT": "a", - "DESCRIPTION": "Descrizione", - "LABELS": "Etichetta", - "MARK_AS_CHECKED": "Segna gli aggiornamenti come verificati", - "STATUS": "Stato", - "SUMMARY": "Riepilogo", - "WRITE_A_COMMENT": "Scrivi un commento" - }, - "S": { - "ERR_NETWORK": "Github: Richiesta fallita a causa di un erore di rete lato client", - "ERR_NOT_CONFIGURED": "Github: Non è configurato correttamente", - "ERR_REQUEST": "Github: Le API hanno restituito {{statusCode}}. {{errorMsg}}", - "IMPORTED_MULTIPLE_ISSUES": "Github: Importati {{issuesLength}} nuovi issue da git al backlog", - "IMPORTED_SINGLE_ISSUE": "Github: Importati gli issue \"{{issueText}}\" da git al backlog", - "ISSUE_DELETED_OR_CLOSED": "Github: L'issue \"{{issueText}}\" sembra essere stato chiuso o eliminato su git", - "ISSUE_UPDATE": "Github: Aggiornati dati per \"{{issueText}}\"", - "MANUAL_UPDATE_ISSUE_SUCCESS": "Github: Aggiornati dati per \"{{issueText}}\"", - "MISSING_ISSUE_DATA": "Github: Trovati task con dati mancanti. Ricarico.", - "NEW_COMMENT": "Github: Nuovo commento per \"{{issueText}}\"", - "POLLING": "Github: Sto facendo il polling dei cambiamenti per gli issue", - "SHOW_ISSUE_BTN": "Mostra" - } - }, - "GOOGLE": { - "BANNER": { - "AUTH_FAIL": "GoogleApi: Autenticazione fallita, per favore effettua nuovamente il login!" - }, - "DIALOG": { - "CREATE_SYNC_FILE": "Google Drive: Nessun file con nome \"{{fileName}}\" è stato trovato. Vuoi crearlo come un file sincronizzato su Google Drive?", - "USE_EXISTING_SYNC_FILE": "Google Drive: Usare il file esistente \"{{fileName}}\" come file sincronizzato? Se non lo desideri cambia il nome del file sincronizzato, per favore." - }, - "D_CONFIRM_LOAD": { - "LAST_MOD": "ultima modifica:", - "LAST_SYNC": "ultima sincronizzazione", - "LOCAL": "locale", - "LOCAL_REMOTE": "locale <=> remoto", - "OVERWRITE_LOCAL": "Sovrascrivi locale", - "OVERWRITE_REMOTE": "Sovrascrivi remoto", - "REMOTE": "remoto", - "TEXT": "

Aggiorna dal backup Google Drive. Sia i dati locali che remoti risultano modificati. Vuoi sovrascrivere le modifiche non salvate locali? I dati verranno persi per sempre.

", - "TITLE": "Sovrascrivere i dati locale con GDrive Update?" - }, - "D_CONFIRM_SAVE": { - "LAST_MOD": "ultima modifica:", - "LAST_SYNC": "ultima sincronizzazione", - "LOCAL": "locale", - "LOCAL_REMOTE": "locale <=> remoto", - "OVERWRITE_LOCAL": "Sovrascrivi locale", - "OVERWRITE_REMOTE": "Sovrascrivi remoto", - "REMOTE": "remoto", - "TEXT": "

Sembrano esserci modifiche su Google Drive, che non hai in locale. Vuoi comunque sovrascriverle?

", - "TITLE": "Sovrascrivere i dati non salvati su Google Drive?" - }, - "S": { - "DOWNLOADING_UPDATE": "Google Drive: C'è un aggiornamento remoto! Scaricando...", - "ERROR": "Google Drive – Errore: {{errTxt}}", - "ERROR_INITIAL_IMPORT": "Google Drive: Errore durante l'importazione iniziale dei dati", - "LOCAL_UP_TO_DATE": "Google Drive: Dati locali già aggiornati", - "MULTIPLE_SYNC_FILES_WITH_SAME_NAME": "File multipli con il nome \"{{newFileName}}\" trovati. Per favore rimuovili tutti tranne uno o scegli un nome diverso.", - "NO_UPDATE_REQUIRED": "Google Drive: Nessun aggiornamento richiesto", - "REMOTE_UP_TO_DATE": "Google Drive: Dati remoti già aggiornati", - "SUCCESS": "Google Drive: Backup salvato con successo", - "SYNCING": "Google Drive: Sincronizzando" - }, - "SYNC_CFG": { - "AUTO_LOGIN": "Login automatico all'apertura dell'app", - "AUTO_SYNC": "Sincronizzazione automatica a dati remoti", - "BACKUP_NOW": "Esegui il backup ora", - "COMPRESS": "Comprimi i dati", - "ENABLE": "Abilita sincronizzazione tramite Google Drive", - "LOAD_FROM": "Carica da GDrive", - "LOAD_ON_STARTUP": "Carica i dati remoti all'avvio", - "NOTIFY": "Notifica alla sincronizzazione", - "SYNC_FILE_NAME": "Sincronizza nuovo nome file", - "SYNC_INTERVAL": "Sincronizza intervallo", - "UPDATE_SYNC_FILE": "Aggiorna file sincronizzato" - }, - "S_API": { - "ERR": "GoogleApi Errore: {{errStr}}", - "ERR_NO_FILE_ID": "GoogleApi: Nessun id file specificato", - "ERR_NO_FILE_NAME": "GoogleApi: Nessun nome file spiecificato", - "SUCCESS_LOGIN": "GoogleApi: Login avvenuta con successo" - } - }, - "JIRA": { - "BANNER": { - "BLOCK_ACCESS_MSG": "Jira: Per prevenire il blocco dalle api, l'accesso è stato bloccato da Super Productivity. Dovresti controllare le tue impostazioni di jira!", - "BLOCK_ACCESS_UNBLOCK": "Sblocca" - }, - "CFG_CMP": { - "ALWAYS_ASK": "Apri sempre la finestra", - "DONE": "Stato di completamento del task", - "DO_NOT": "Non effettuare la transizione", - "ENABLE": "Abilita l'integrazione con jira", - "ENABLE_TRANSITIONS": "Abilita la gestione delle transizioni", - "IN_PROGRESS": "Stato di inizio del task", - "LOAD_SUGGESTIONS": "Carica suggerimenti", - "MAP_CUSTOM_FIELDS": "Mappa campi custom", - "MAP_CUSTOM_FIELDS_INFO": "Sfortunatamente alcuni dei dati di Jira sono salvati sotto campi custom che sono diversi per ogni installazione. Se vuoi includere questi dati devi selezionare il giusto campo custom.", - "OPEN": "Stato di pausa task", - "SELECT_ISSUE_FOR_TRANSITIONS": "Seleziona issue per caricare le transizioni disponibili", - "STORY_POINTS": "Punti storia" - }, - "DIALOG_CONFIRM_ASSIGNMENT": { - "MSG": "{{summary}} è al momento assegnato a {{assignee}}. Vuoi assegnartelo?", - "OK": "Fallo!" - }, - "DIALOG_INITIAL": { - "TITLE": "Configura Jira per il progetto" - }, - "DIALOG_TRANSITION": { - "CHOOSE_STATUS": "Seleziona lo stato da assegnare", - "CURRENT_ASSIGNEE": "Assegnatario corrente:", - "CURRENT_STATUS": "Stato corrente:", - "TITLE": "Jira: Aggiorna stato", - "UPDATE_STATUS": "Aggiorna stato" - }, - "DIALOG_WORKLOG": { - "CURRENTLY_LOGGED": "Tempo loggato al momento: ", - "INVALID_DATE": "Il valore inserito non è una data!", - "SAVE_WORKLOG": "Salva worklog", - "STARTED": "Iniziato", - "SUBMIT_WORKLOG_FOR": "Sottometti un worklog su Jira per", - "TIME_SPENT": "Tempo impiegato", - "TITLE": "Jira: Sottometti worklog" - }, - "FORM": { - "IS_AUTO_ADD_TO_BACKLOG": "Aggiungi automaticamente gli issue non risolti da git al backlog", - "IS_AUTO_POLL": "Esegui il polling automatico delle modifiche sugli issue di git importati", - "IS_SEARCH_ISSUES_FROM_GITHUB": "Mostra gli issue di git come suggerimenti quando aggiungi un nuovo task", - "REPO": "\"username/repositoryName\" per il repository git che vuoi tracciare" - }, - "FORM_ADV": { - "AUTO_ADD_BACKLOG_JQL_QUERY": "JQL usato per aggiungere task automaticamente al tuo backlog", - "IS_ADD_WORKLOG_ON_SUB_TASK_DONE": "Apri una finestra per sottomettere il worklog su jira quando un sotto-task è completato", - "IS_AUTO_ADD_TO_BACKLOG": "Aggiungi automaticamente gli issue al backlog di Jira", - "IS_AUTO_POLL_TICKETS": "Controlla automaticamente le modifiche sugli issue importati e notificamelo", - "IS_CHECK_TO_RE_ASSIGN_TICKET_ON_TASK_START": "Controlla se l'issue sul quale correntemente si sta lavorando è assegnato all'utente corrente", - "IS_WORKLOG_ENABLED": "Apri una finestra per sottomettere il worklog su jira quando un task è completato", - "SEARCH_JQL_QUERY": "JQL Query per limitare i task della ricerca", - "USER_ASSIGNEE_NAME": "Nome dell'assegnatario che si vuole controllare" - }, - "FORM_CRED": { - "HOST": "Host (e.g.: http://my-host.de:1234)", - "PASSWORD": "Token / Password", - "USER_NAME": "Email / Username" - }, - "FORM_SECTION": { - "ADV_CFG": "Configurazione avanzata", - "CREDENTIALS": "Credenziali", - "HELP_ARR": { - "H1": "Configurazione base", - "H2": "Impostazioni del worklog", - "H3": "Transizioni di default", - "P1_1": "Per favore indica un nome per la login (lo trovi nella tua pagina profilo) e un API token o una password se per qualche motivo non ne puoi generare uno. Per favore nota che le nuove versioni di jira potrebbero funzionare solo con il token. ", - "P1_2": "Devi anche specificare una query JQL che è usata dai suggerimenti per aggiungere task a jira. Se hai bisogno di aiuto vai a questo link
https://confluence.atlassian.com/jirasoftwarecloud/advanced-searching-764478330.html.", - "P1_3": "Puoi anche configurare, se vuoi aggiungere automaticamente (es. ogni volta che visiti la vista di pianificazione) nuovi tasks specificati in una query JQL custom al backlog.", - "P1_4": "Un'altra opzione è di \"Controllare se il ticket corrente è assegnato ad un altro utente\". Se abilitato e stai iniziando, un controllo satà fatto per controllare se sei assegnato a quel ticket su Jira, se non lo sei appparirà una finestra nella quale puoi scegliere di assegnarti quel ticket.", - "P2_1": "Ci sono diverse opzioni per determinare quando e come vuoi sottomettere un worklog. Abilitare 'Apri una finestra per aggiungere un worklog a Jira quando il task è completato' apre una finestra per aggiungere il worklog ogni volta che segni un task Jira come completato. Quindi ricorda che i worklog saranno aggiunti in cima a tutto ciò che è stato tracciato fino a quel momento. Quindi se vuoi segnare un task come completato per la seconda volta, potresti non voler sottomettere il tempo lavorato complessivamente per il task un'altra volta.", - "P2_2": "'Apri una finestra worklog quando un sotto-task è completato e non per task con sotto-task' apre una finestra di worklog ogni volta che segni un sotto-task di un issue Jira come completato. Dal momento che tracci già il tempo tramite i sotto-task, nessuna finestra viene aperta quando segni il task Jira stesso come completato.", - "P2_3": "'Invia automaticamente gli update al worklog senza aprire finestre' fa ciò che dice. Dato che segnare un task come completato spesso porta il tempo totale di lavoro a venir conteggiato due volte, non è consigliato.", - "P3_1": "Qui puoi riconfigurare le tue transizioni di default. Jira rende disponibili molte transizioni, spesso attivate come diverse colonne sulla tua board agile di Jira, non possiamo assumere dove e quando trasportare tuoi task, quindi devi farlo manualmente." - } - }, - "ISSUE_CONTENT": { - "ASSIGNEE": "Assegnatario", - "AT": "a", - "ATTACHMENTS": "Allegati", - "CHANGED": "modificato", - "COMMENTS": "Commenti", - "COMPONENTS": "Componenti", - "DESCRIPTION": "Descrizione", - "LIST_OF_CHANGES": "Lista delle modifiche", - "MARK_AS_CHECKED": "Segna gli aggiornamenti come verificati", - "ON": "su", - "STATUS": "Stato", - "STORY_POINTS": "Punti storia", - "SUMMARY": "Riepilogo", - "WORKLOG": "Worklog", - "WRITE_A_COMMENT": "Scrivi un commento" - }, - "S": { - "ADDED_WORKLOG_FOR": "Jira: Aggiunto worklog per {{issueKey}}", - "EXTENSION_NOT_LOADED": "Estensione Super Productivity non caricata. Prova ad aggiornare la pagina", - "IMPORTED_MULTIPLE_ISSUES": "Jira: Importati {{issuesLength}} nuovi issue da jira al backlog", - "IMPORTED_SINGLE_ISSUE": "Jira: Importati issue \"{{issueText}}\" da jira al backlog", - "INSUFFICIENT_SETTINGS": "Configurazioni insufficienti per Jira", - "ISSUE_NO_UPDATE_REQUIRED": "Jira: \"{{issueText}}\" è già aggiornato", - "ISSUE_UPDATE": "Jira: Aggiornati dati per \"{{issueText}}\"", - "MANUAL_UPDATE_ISSUE_SUCCESS": "Jira: Aggiornati dati per \"{{issueText}}\"", - "MISSING_ISSUE_DATA": "Jira: Trovati task con dati mancanti. Ricaricando.", - "NO_VALID_TRANSITION": "Jira: Non è stata configurata una transizione valida", - "POLLING": "Jira: Eseguendo il polling per i cambiamenti sugli issue", - "TIMED_OUT": "Jira: La richiesta è andata in timeout", - "TRANSITION": "Jira: Impostato l'issue \"{{issueKey}}\" per \"{{name}}\"", - "TRANSITIONS_LOADED": "Jira: Transizioni caricate. Usa i campi select sottostanti per assegnarle", - "TRANSITION_SUCCESS": "Jira: Impostato {{issueKey}} per {{chosenTransition}}", - "UNABLE_TO_REASSIGN": "Jira: Impossibile riassegnare l'issue a te stesso, perché non hai specificato un username. Per favore rivedi le impostazioni." - }, - "STEPPER": { - "CREDENTIALS": "Credenziali", - "DONE": "Ora sei a posto.", - "LOGIN_SUCCESS": "Login eseguita con successo!", - "TEST_CREDENTIALS": "Credenziali di test", - "WELCOME_USER": "Benvenuto {{user}}!" - } - }, - "METRIC": { - "BANNER": { - "CHECK": "Ce l'ho fatta!" - }, - "CMP": { - "AVG_BREAKS_PER_DAY": "Media delle pause per giorno", - "AVG_TASKS_PER_DAY_WORKED": "Media dei task lavorati al giorno", - "AVG_TIME_SPENT_ON_BREAKS": "Tempo medio impiegato nelle pause", - "AVG_TIME_SPENT_PER_DAY": "Tempo medio impiegato al giorno", - "AVG_TIME_SPENT_PER_TASK": "Tempo medio impiegato per task", - "COUNTING_SUBTASKS": "(contando i sotto-task)", - "DAYS_WORKED": "Giorni lavorati", - "IMPROVEMENT_SELECTION_COUNT": "Numero di volte in cui è stato selezionato un fattore di miglioramento", - "MOOD_PRODUCTIVITY_OVER_TIME": "Umore e produttività nel tempo", - "NO_ADDITIONAL_DATA_YET": "Nessun dato aggiuntivo raccolto. Usa il form nel pannello riepilogo giornaliero \"Valutazione\" per aggiungerlo.", - "OBSTRUCTION_SELECTION_COUNT": "Numero di volte in cui è stato selezionato un fattore ostruente", - "TASKS_DONE_CREATED": "Task (completati/creati)", - "TIME_ESTIMATED": "Tempo stimato", - "TIME_SPENT": "Tempo impiegato" - }, - "EVAL_FORM": { - "ADD_NOTE_FOR_TOMORROW": "Aggiungi una nota per domani", - "DISABLE_REPEAT_EVERY_DAY": "Disabilita ripetizione ogni giorno", - "ENABLE_REPEAT_EVERY_DAY": "Ripeti ogni giorno", - "HELP_H1": "Perché dovrebbe importarmi?", - "HELP_LINK_TXT": "Vai alla sezione metriche", - "HELP_P1": "Tempo di fare una piccola autovalutazione! Le tue risposte verranno salvate e ti forniranno alcune statistiche su come lavori, nella sezione metriche. Inoltre i suggerimenti per domani appariranno sopra alla tua lista dei task il giorno seguente.", - "HELP_P2": "Questo intende essere meno riguardante il calcolo delle metriche o diventare efficiente come una macchina in quello che fai, piuttosto riguarda il migliorare come ti senti quando lavori. Può essere utile valutare i punti dolenti della tua routine quotidiana, così come lo è trovare fattori che possono aiutarti. Essere giusto un po' sistematici sperabilmente ti aiuterà ad avere un controllo migliore e migliorare quello che riesci.", - "IMPROVEMENTS": "Cosa ha migliorato la tua produttività?", - "IMPROVEMENTS_TOMORROW": "Cosa potresti fare per migliorare domani?", - "MOOD": "Come ti senti?", - "MOOD_HINT": "1: Molto male – 10: In modo fantastico", - "NOTES": "Note per domani", - "OBSTRUCTIONS": "Cosa ha ostacolato la tua produttività?", - "PRODUCTIVITY": "Quanto efficentemente hai lavorato?", - "PRODUCTIVITY_HINT": "1: Non ho neanche iniziato – 10: Molto efficentemente" - }, - "S": { - "SAVE_METRIC": "Metriche salvate con successo" - } - }, - "NOTE": { - "ADD_REMINDER": "Aggiungi promemoria", - "D_ADD": { - "DATETIME_LABEL": "Data e ora per promemoria (opzionale)", - "NOTE_LABEL": "Scrivi del testo per salvarlo come nota..." - }, - "D_ADD_REMINDER": { - "E_ENTER_TITLE": "Devi inserire un titolo", - "L_DATETIME": "Data e ora per promemoria", - "L_TITLE": "Titolo per la notifica", - "TITLE_ADD": "Aggiungi promemoria per nota", - "TITLE_EDIT": "Modifica promemoria per nota" - }, - "D_VIEW_REMINDER": { - "SNOOZE": "Silenzia", - "TITLE": "Note" - }, - "EDIT_REMINDER": "Modifica promemoria", - "NOTES_CMP": { - "ADD_BTN": "Aggiungi nuova nota", - "DROP_TO_ADD": "Trascina qui per aggiungere una nuova nota" - }, - "NOTE_CMP": { - "DISABLE_PARSE": "Disabilita parsing markdown", - "ENABLE_PARSE": "Abilita parsing markdown" - }, - "REMOVE_REMINDER": "Rimuovi promemoria", - "S": { - "ADDED_REMINDER": "Promemoria aggiunto per nota", - "DELETED_REMINDER": "Promemoria cancellato per nota", - "UPDATED_REMINDER": "Promemoria aggiornato per nota" - }, - "UPDATE_REMINDER": "Aggiornato promemoria" - }, - "POMODORO": { - "BACK_TO_WORK": "Torna al lavoro!", - "BREAK_IS_DONE": "La tua pausa è finita!", - "ENJOY_YOURSELF": "Rilassati, fai un po' di movimento, torna qui:", - "FINISH_SESSION_X": "Hai completato con successo la sessione {{nr}}!", - "NOTIFICATION": { - "BREAK_X_START": "Pomodoro: Pausa {{nr}} iniziata!", - "SESSION_X_START": "Pomodoro: Sessione {{nr}} iniziata!" - }, - "S": { - "SESSION_X_START": "Pomodoro: Sessione {{nr}} iniziata!" - }, - "SKIP_BREAK": "Salta la pausa" - }, - "PROCRASTINATION": { - "BACK_TO_WORK": "Torna al lavoro!", - "COMP": { - "INTRO": "Prenderti cura di te stesso è sempre una buona idea. Migliora la tua autostima, i sentimenti positivi e può aiutarti ad evitare la procastinazione. Prova a fare un po' di esercizio:", - "L1": "Siediti e fai un po' di stretching, se ne hai voglia, rilassati un po'", - "L2": "Prova ad ascoltare i tuoi pensieri e le emozioni che ne scaturiscono", - "L3": "Rispondi a te stesso nello stesso modo in cui risponderesti ad un amico?", - "L4": "Se la risposta è no, immagina un tuo amico nella tua situazione. Cosa gli diresti? Cosa faresti per loro?", - "OUTRO": "Altro esercizi li trovi qui oppure su google.", - "TITLE": "Auto compassione" - }, - "CUR": { - "INTRO": "La procastinazione è interessante, non credi? Non ha senso procastinare. Non nel tuo interesse a lungo termine. Ma tutti continuano a farlo. Divertiti ed esplora!", - "L1": "Che sensazioni ti suscita la tentazione di procastinare?", - "L2": "In che punto del tuo corpo le senti?", - "L3": "Cosa ti fanno venire in mente?", - "L4": "Cosa succede al pensiero di procastinare se lo osservi? Si intensifica? Svanisce? Suscita altre emozioni?", - "L5": "Come mutano le emozioni nel tuo corpo mentre continui a posare la tua consapevolezza su di esse?", - "TITLE": "Curiosità" - }, - "H1": "Ritagliati una pausa!", - "P1": "Prima di tutto rilassati! Tutti ne hanno bisogno ogni tanto. E se non stai facendo quello che dovresti fare, dovresti almeno godertelo! Nelle sezioni sottostanti troverai risorse utili.", - "P2": "Se vuoi sapere di più sulla scienza che sta dietro tutto questo, ti consiglio questo articolo dal quale sono presi alcuni degli esercizi.", - "P3": "Ricorda: La procastinazione è un problema di regolazione delle emozioni, non un problema di gestione del tempo.", - "REFRAME": { - "INTRO": "Pensa a ciò che potrebbe essere positivo riguardo al task, nonostante tutto.", - "TITLE": "Ricontestualizzazione", - "TL1": "Cosa di esso potrebbe essere interessante?", - "TL2": "Cosa ci guadagni a completarlo?", - "TL3": "Come ti sentirai se lo completi?" - }, - "SPLIT_UP": { - "INTRO": "Dividi il task in quanti più piccoli pezzi riesci.", - "OUTRO": "Fatto? Poi pensa. Quale potrebbe essere – teoricamente parlando – la prima cosa che faresti if se dovessi iniziare a lavorare sul task? Pensaci solo...", - "TITLE": "Dividilo in pezzi!" - } - }, - "PROJECT": { - "BANNER": { - "FINISH_DAY": { - "FINISH_DAY": "Termina la giornata", - "MSG": "Ti sei dimenticato di terminare la giornata del {{dayStr}}" - } - }, - "D_CREATE": { - "CREATE": "Crea progetto", - "EDIT": "Modifica progetto", - "SETUP_GIT": "Configura integrazione Githun", - "SETUP_JIRA": "Configura integrazione Jira" - }, - "FORM_BASIC": { - "L_TITLE": "Nome progetto", - "TITLE": "Impostazioni base" - }, - "FORM_THEME": { - "D_IS_DARK_THEME": "Non verrà usato se il sistema supporta la dark mode globalmente.", - "HELP": "Impostazioni sul tema del tuo progetto.", - "L_COLOR_ACCENT": "Colore di accento", - "L_COLOR_PRIMARY": "Colore primario", - "L_COLOR_WARN": "Colore errori/warning", - "L_HUE_ACCENT": "Soglia per il testo scuro su sfondo del colore di accento", - "L_HUE_PRIMARY": "Soglia per il testo scuro su sfondo del colore primario", - "L_HUE_WARN": "Soglia per il testo scuro su sfondo del colore di warning", - "L_IS_AUTO_CONTRAST": "Imposta automaticamente il colore del testo per ottimizzare la leggibilità", - "L_IS_REDUCED_THEME": "Usa UI ridotta (nessuna box intorno ai task)", - "L_THEME_COLOR": "Colore del tema", - "L_TITLE": "Titolo", - "TITLE": "Tema" - }, - "S": { - "ARCHIVED": "Progetto archiviato", - "CREATED": "Creato progetto {{title}}. Puoi selezionarlo dal menu in alto a sinistra.", - "DELETED": "Progetto eliminato", - "E_EXISTS": "Il progetto \"{{title}}\" esiste già", - "E_INVALID_FILE": "Dati non validi per il file di progetto", - "ISSUE_PROVIDER_UPDATED": "Aggiornare le impostazioni di progetto per {{issueProviderKey}}", - "UNARCHIVED": "Progetto non archiviato", - "UPDATED": "Aggiornate impostazioni di progetto" - } - }, - "REMINDER": { - "S_REMINDER_ERR": "Errore per interfaccia promemoria" - }, - "TASK": { - "ADDITIONAL_INFO": { - "ATTACHMENTS": "Allegati {{nr}}", - "ISSUE_TYPE_ATTACHMENTS": "{{issueType}} allegati", - "LOCAL_ATTACHMENTS": "Allegati locali", - "NOTES": "Note" - }, - "ADD_TASK_BAR": { - "ADD_TASK": "Aggiungi task", - "ADD_TASK_TO_BACKLOG": "Aggiungi task al backlog", - "START": "Premi ancora invio per iniziare" - }, - "B": { - "ADD_HALF_HOUR": "Aggiungi mezz'ora", - "ESTIMATE_EXCEEDED": "Tempo stimato superato per \"{{title}}\"" - }, - "CMP": { - "ADD_SUB_TASK": "Aggiungi sotto-task", - "ADVANCED": "Avanzate", - "CONVERT_TO_PARENT_TASK": "Converti a task padre", - "DELETE": "Cancella task", - "DROP_ATTACHMENT": "Trascina qui per allegare a \"{{title}}\"", - "EDIT_REMINDER": "Modifica promemoria", - "MARK_DONE": "Segna come completato", - "MARK_UNDONE": "Segna come non completato", - "MOVE_TO_BACKLOG": "Sposta nel backlog", - "MOVE_TO_OTHER_PROJECT": "Sposta in un altro progetto", - "MOVE_TO_TODAY": "Sposta nella lista di oggi", - "OPEN_ATTACH": "Allega file o link", - "OPEN_ISSUE": "Apri issue in una nuova scheda del browser", - "OPEN_TASK_MENU": "Apri il menu dei task", - "OPEN_TIME": "Stima il tempo/Aggiungi il tempo impiegato", - "REPEAT_EDIT": "Modifica ripetizione configurazione task", - "REPEAT_TASK": "Ripeti task", - "SCHEDULE": "Pianifica task", - "SHOW_UPDATES": "Mostra aggiornamenti", - "TOGGLE_ADDITIONAL": "Mostra/nascondi informazioni aggiuntive", - "TOGGLE_ATTACHMENTS": "Mostra/nascondi allegati", - "TOGGLE_DONE": "Segna come completato/non completato", - "TOGGLE_SUB_TASK_VISIBILITY": "Cambia visibilità sotto-task", - "TRACK_TIME": "Inizia a tracciare il tempo", - "TRACK_TIME_STOP": "Pausa tracciamento del tempo", - "UPDATE_ISSUE_DATA": "Aggiorna dati dell'issue" - }, - "D_REMINDER_ADD": { - "ADD": "Pianifica Task", - "DATETIME_FOR": "Data e ora per promemoria", - "EDIT": "Modifica promemoria", - "MOVE_TO_BACKLOG": "Sposta il task nel backlog fino alla pianificazione", - "SCHEDULE": "Pianifica", - "UNSCHEDULE": "Rimuovi pianificazione" - }, - "D_REMINDER_VIEW": { - "DISMISS": "Rimuovi promemoria", - "ERR_LOST": "Un promemoria era pianificato per il task {{title}}, ma sembra essersi perso.", - "FOR_CURRENT": "Hai un task pianificato. Vuoi iniziare a lavorarci?", - "FOR_OTHER": "Hai un task pianificato. Vuoi iniziare a lavorarci?", - "FROM_PROJECT": "Da progetto", - "SNOOZE": "Silenzia", - "START": "Inizia task", - "SWITCH_PROJECT_START": "Cambia progetto & inizia task", - "TITLE": "Task pianificato" - }, - "D_TIME": { - "ADD_FOR_OTHER_DAY": "Aggiungi il tempo impiegato per un'altro giorno", - "DELETE_FOR": "Cancella la voce dalla giornata", - "ESTIMATE": "Stima", - "TIME_SPENT": "Tempo impiegato", - "TIME_SPENT_ON": "Tempo impiegato {{date}}", - "TITLE": "Tempo impiegato / Stime" - }, - "D_TIME_FOR_DAY": { - "ADD_ENTRY_FOR": "Aggiungi nuova voce per il giorno {{date}}", - "DATE": "Data per la nuova voce", - "HELP": "Esempi:
30m => 30 minuti
2h => 2 ore
2h 30m => 2 ore e 30 minuti", - "TINE_SPENT": "Tempo speso", - "TITLE": "Aggiungi per giorno" - }, - "N": { - "ESTIMATE_EXCEEDED": "Tempo stimato superato!", - "ESTIMATE_EXCEEDED_BODY": "Hai superato il tuo tempo stimato per \"{{title}}\"." - }, - "S": { - "DELETED": "Cancellato task \"{{title}}\"", - "FOUND_MOVE_FROM_BACKLOG": "Spostato task {{title}} dal backlog alla lista dei task di oggi", - "FOUND_RESTORE_FROM_ARCHIVE": "Ripristinato task {{title}} relativo ad issue dall'archivio", - "REMINDER_ADDED": "Pianificato task \"{{title}}\"", - "REMINDER_DELETED": "Cancellato promemoria per task", - "REMINDER_UPDATED": "Aggiornato promemoria per task \"{{title}}\"", - "TASK_CREATED": "Creato task \"{{title}}\"" - }, - "SELECT_OR_CREATE": "Seleziona o crea task", - "SUMMARY_TABLE": { - "ESTIMATE": "Stima", - "SPENT_TODAY": "Tempo impiegato oggi", - "SPENT_TOTAL": "Tempo impiegato totale", - "TASK": "Task", - "TOGGLE_DONE": "Segna come non completato/completato" - } - }, - "TASK_REPEAT": { - "D_CONFIRM_REMOVE": { - "MSG": "Rimuovere la configurazione ripeti convertirà tutte le istanze precedenti di questo task a normali task. Sei sicuro di voler procedere?", - "OK": "Rimuovi completamente" - }, - "D_EDIT": { - "ADD": "Aggiungi configurazione ripeti task", - "EDIT": "Modifica configurazione ripeti task", - "HELP1": "I task ripetuti servono ai doveri quotidiani, es: \"Organizzazione\", \"Meeting giornalieri\", \"Code Review\", \"Controllare email\" o task simili, che è probabile accadano più e più volte.", - "HELP2": "Una volta configurato, un task ripetuto sarà ricreato per ognuno dei giorni selezionati sotto non appena aprirai il progetto, e sarà automaticamente segnato come completato alla fine della giornata. Saranno gestiti come istanze separate, quindi puoi liberamente aggiungere sotto-task etc.", - "HELP3": "I tasks importati da Jira o gli issue di Git non possono essere ripetuti. Su un task ripetuto, saranno anche eliminati tutti i promemoria." - }, - "F": { - "DEFAULT_ESTIMATE": "Stima di default", - "FRIDAY": "Venerdì", - "MONDAY": "Lunedì", - "SATURDAY": "Sabato", - "SUNDAY": "Domenica", - "THURSDAY": "Giovedì", - "TITLE": "Titolo del task", - "TUESDAY": "Martedì", - "WEDNESDAY": "Mercoledì" - } - }, - "TIME_TRACKING": { - "B": { - "ALREADY_DID": "Ho già fatto", - "SNOOZE": "Silenzia {{time}}" - }, - "D_IDLE": { - "BREAK": "Pausa", - "CREATE_AND_TRACK": "Crea e traccia su:", - "IDLE_FOR": "Sei stato fermo per:", - "SKIP": "Salta", - "TASK": "Task", - "TASK_BREAK": "Task+Pausa", - "TRACK_TO": "Traccia su:" - } - }, - "WORKLOG": { - "CMP": { - "DAYS_WORKED": "Giornate lavorate:", - "MONTH_WORKED": "Mesi lavorati:", - "REPEATING_TASK": "Task ripetuti", - "RESTORE_TASK_FROM_ARCHIVE": "Ripristina task dall'archivio", - "TASKS": "Task", - "TOTAL_TIME": "tempo impiegato in totale:", - "TOTAL_TIME_PROJECT": "Tempo impiegato sul progetto", - "WEEK_NR": "Settimana {{nr}}", - "WORKED": "Lavorato" - }, - "D_CONFIRM_RESTORE": "Sei sicuro di voler spostare il task \"{{title}}\" nella tua lista dei task di oggi?", - "D_EXPORT_TITLE": "Esporta worklog {{start}}–{{end}}", - "D_EXPORT_TITLE_SINGLE": "Esporta worklog {{day}}", - "EXPORT": { - "ADD_COL": "Aggiungi colonna", - "COPY_TO_CLIPBOARD": "Copia negli appunti", - "DONT_ROUND": "non arrotondare", - "EDIT_COL": "Modifica colonna", - "GROUP_BY": "Raggruppa per", - "O": { - "DATE": "Data", - "ENDED_WORKING": "Finito di lavorare", - "ESTIMATE_AS_CLOCK": "Stimato in tempo di orologio (es. 5:23)", - "ESTIMATE_AS_MILLISECONDS": "Stimato in millisecondi", - "ESTIMATE_AS_STRING": "Stimato in stringa (es. 5h 23m)", - "FULL_HALF_HOURS": "mezzore piene", - "FULL_HOURS": "ore piene", - "FULL_QUARTERS": "quarti d'ora pieni", - "PARENT_TASK": "Task padre", - "PARENT_TASK_TITLES_ONLY": "Titoli solo dei task padri", - "STARTED_WORKING": "Iniziato a lavorare", - "TASK_SUBTASK": "Task/Sotto-task", - "TIME_AS_CLOCK": "Tempo di orologio (es 5:23)", - "TIME_AS_MILLISECONDS": "Tempo in millisecondi", - "TIME_AS_STRING": "Tempo in stringa (es. 5h 23m)", - "TITLES_AND_SUB_TASK_TITLES": "Titoli e titoli dei sotto-task", - "WORKLOG": "Worklog" - }, - "OPTIONS": "Opzioni", - "ROUND_END_TIME_TO": "Arrotonda il tempo di fine a", - "ROUND_START_TIME_TO": "Arrotonda il tempo d'inizio a", - "ROUND_TIME_WORKED_TO": "Arrotonda il tempo lavorato a", - "SAVE_TO_FILE": "Salva su file", - "SEPARATE_TASKS_BY": "Separa i task con", - "SHOW_AS_TEXT": "Mostra come testo" - }, - "WEEK": { - "EXPORT": "Esporta dati della settimana", - "NO_DATA": "Ancora nessun task questa settimana.", - "TITLE": "Titolo" - } + "SELECT_TYPE": "Seleziona un tipo", + "TYPES": { + "FILE": "File (aperto con l'app predefinita di sistema)", + "IMG": "Immagine (mostrata nella miniatura)", + "LINK": "Link (aperto nel browser)" } + } }, - "FILE_IMEX": { - "EXPORT_DATA": "Esporta dati", - "IMPORT_FROM_FILE": "Importa da file", - "S_ERR_INVALID_DATA": "Importazione fallita: JSON non valido" - }, - "G": { - "CANCEL": "Annulla", - "CLICK_TO_EDIT": "clicca per modificare", - "CLOSE": "Chiudi", - "DELETE": "Cancella", - "DISMISS": "Rimuovi", - "DO_IT": "Fallo!", - "EDIT": "Modifica", - "EXTENSION_INFO": "Per favore scarica l'estensione di chrome per permettere la comunicazione con le api di Jira e la gestione del tempo inattivo. Nota che non funziona su dispositivi mobile.", - "LOGIN": "Login", - "LOGOUT": "Logout", - "MINUTES": "{{m}} minuti", - "NEXT": "Prossimo", - "OK": "Ok", - "PREVIOUS": "Precedente", - "REMOVE": "Rimuovi", - "SAVE": "Salva", - "TITLE": "Titolo", - "UNDO": "Annulla", - "UPDATE": "Aggiorna" - }, - "GCF": { - "AUTO_BACKUPS": { - "HELP": "Salva automaticamente tutti i dati sulla cartella dell'applicazione in modo da averli pronti nel caso succedesse qualcosa.", - "LABEL_IS_ENABLED": "Abilita backup automatici", - "TITLE": "Backup automatici" + "BOOKMARK": { + "BAR": { + "DROP": "Trascina qui per aggiungere un segnalibro", + "NO_BOOKMARKS": "Non hai segnalibri nel progetto. Aggiungine uno tramite drag-and-drop oppure cliccando il pulsante 'più'." + }, + "DIALOG_EDIT": { + "ADD_BOOKMARK": "Aggiungi segnalibro", + "EDIT_BOOKMARK": "Modifica segnalibro", + "LABELS": { + "COMMAND": "Comando", + "FILE": "Percorso del file", + "IMG": "Immagine", + "LINK": "Url" }, - "GOOGLE_DRIVE_SYNC": { - "HELP": "Qui puoi configurare la tua app per sincronizzarsi automaticamente da e su un singolo file di google drive. Tutti i dati saranno salvati non criptati, quindi assicurati di non condividere accidentalmente questo file con qualcunaltro.", - "TITLE": "Sincronizza su Google Drive" - }, - "IDLE": { - "HELP": "

Quando la gestione del tempo di inattività è abilitata, un finestra si aprirà dopo un periodo specifico di tempo per controllare se e su quale task vuoi tracciare il tuo tempo, nel periodo che sei stato inattivo.

", - "IS_ENABLE_IDLE_TIME_TRACKING": "Abilita la gestione del tempo di inattività", - "IS_ONLY_OPEN_IDLE_WHEN_CURRENT_TASK": "Innesca una finestra per il tempo di inattività soltanto quando è selezionato un task corrente", - "IS_UN_TRACKED_IDLE_RESETS_BREAK_TIMER": "Il tempo di inattività non tracciato si ripristina durante un momento di pausa", - "MIN_IDLE_TIME": "Innesca inattività dopo X", - "TITLE": "Gestione inattività" - }, - "IMEX": { - "HELP": "

Qui puoi esportare tutti i tuoi dati in formato JSON per backup, ma anche per usarli in un contesto diverso (es. potresti voler esportare i tuoi progetti dal browser ed importarli nella versione desktop).

Per l'importazione deve essere copiato JSON valido nella text areaNB: Una volta premuto il pulsante di import, tutte le tue impostazioni ed i dati correnti saranno sovrascritti!

", - "TITLE": "Importa/Esporta" - }, - "KEYBOARD": { - "ADD_NEW_NOTE": "Aggiungi nuova nota", - "ADD_NEW_TASK": "Aggiungi nuovo task", - "APP_WIDE_SHORTCUTS": "Scorciatoie globali (a tutta l'applicazione)", - "COLLAPSE_SUB_TASKS": "Collassa i sotto-task", - "EXPAND_SUB_TASKS": "Espandi i sotto-task", - "FOCUS_LAST_ACTIVE_TASK": "Evidenzia l'ultimo task attivo", - "GLOBAL_ADD_NOTE": "Aggiungi nuova nota", - "GLOBAL_ADD_TASK": "Aggiungi nuovo task", - "GLOBAL_SHOW_HIDE": "Mostra/nascondi Super Productivity", - "GLOBAL_TOGGLE_TASK_START": "Abilita/disabilita il tracciamento del tempo per l'ultimo task attivo", - "GO_TO_DAILY_AGENDA": "Vai all'agenda", - "GO_TO_FOCUS_MODE": "Vai alla modalità evidenza", - "GO_TO_SETTINGS": "Vai alle impostazioni", - "GO_TO_WORK_VIEW": "Vai alla vista lavoro", - "HELP": "

Qui puoi configurare tutte le scorciatoie per la tastiera.

Clicca sull'area di testo ed inserisci la combinazione di tasti desiderata. Premi invio per salvare e Esc per annullare.

Ci sono 3 tipi di scorciatoie:

  • Scorciatoie globali:Mentre l'applicazione è attiva, innescheranno l'azione da qualsiasi altra applicazione.
  • Scorciatoie a livello di applicazione:Si innescherà da ogni pagina dell'applicazione, ma non se stai editando un campo di testo.
  • Scorciatoie a livello di task:Si innescheranno solo se hai selezionato un task tramite mouse o tastiera, e solitamente innescheranno un'azione specificatamente relativa a quel task.
", - "MOVE_TASK_DOWN": "Sposta task in basso nella lista", - "MOVE_TASK_UP": "Sposta task in alto nella lista", - "MOVE_TO_BACKLOG": "Sposta task nel backlog dei task", - "MOVE_TO_TODAYS_TASKS": "Sposta task nella lista dei task di oggi", - "OPEN_PROJECT_NOTES": "Mostra/nacondi note di progetto", - "SELECT_NEXT_TASK": "Seleziona task successivo", - "SELECT_PREVIOUS_TASK": "Seleziona task precedente", - "SYSTEM_SHORTCUTS": "Scorciatoie globali (a livello di sistema)", - "TASK_ADD_SUB_TASK": "Aggiungi sotto-task", - "TASK_DELETE": "Cancella task", - "TASK_EDIT_TITLE": "Modifica titolo", - "TASK_OPEN_ESTIMATION_DIALOG": "Modifica stima / tempo impiegato", - "TASK_SCHEDULE": "Pianifica task", - "TASK_SHORTCUTS": "Task", - "TASK_SHORTCUTS_INFO": "Le scorciatoie seguenti si applicato al task correntemente selezionato (tramite mouse o tastiera).", - "TASK_TOGGLE_ADDITIONAL_INFO_OPEN": "Mostra/nascondi informazioni aggiuntive sul task", - "TASK_TOGGLE_DONE": "Segna come completato/non completato", - "TITLE": "Scorciatoie da tastiera", - "TOGGLE_BACKLOG": "Mostra/nascondi backlog dei task", - "TOGGLE_BOOKMARKS": "Mostra/nascondi barra dei segnalibri", - "TOGGLE_PLAY": "Inizia/Interrompi task", - "ZOOM_DEFAULT": "Zoom default (solo Desktop)", - "ZOOM_IN": "Zoom in (solo Desktop)", - "ZOOM_OUT": "Zoom out (solo Desktop)" - }, - "LANG": { - "AR": "Arabo", - "DE": "Tedesco", - "EN": "Inglese", - "ES": "Spagnolo", - "FR": "Francese", - "JA": "Giapponese", - "KO": "Coreano", - "LABEL": "Seleziona la lingua", - "RU": "Russo", - "TITLE": "Lingua", - "TR": "Turco", - "ZH": "Cinese" - }, - "MISC": { - "HELP": "

Non vedi le notifiche desktop?Per Windows controlla Sistema > Notifiche & azioni e controlla se le notifiche richieste sono abilitate.

", - "IS_AUTO_MARK_PARENT_AS_DONE": "Segna il task padre come completato, quando tutti i sotto-task sono completati", - "IS_CONFIRM_BEFORE_EXIT": "Conferma prima di uscire dall'applicazione", - "IS_DARK_MODE": "Tema scuro", - "IS_DISABLE_REMIND_WHEN_FORGOT_TO_FINISH_DAY": "Disabilita promemoria per giorno non terminato", - "IS_HIDE_EVALUATION_SHEET": "Nascondi il foglio di valutazione sul riepilogo giornagliero", - "IS_HIDE_NAV": "Nascondi la navigazione mentre il cursore è sull'header principale (solo Desktop)", - "IS_NOTIFY_WHEN_TIME_ESTIMATE_EXCEEDED": "Notificami quando il tempo stimato viene superato", - "TITLE": "Impostazioni varie" - }, - "POMODORO": { - "BREAK_DURATION": "Durata delle pause brevi", - "CYCLES_BEFORE_LONGER_BREAK": "Inizia pause più lunghe dopo X sessioni di lavoro", - "DURATION": "Durata delle sessioni di lavoro", - "HELP": "

Il timer pomodoro può essere configurato tramite qualche impostazione. La durata di ogni sessione di lavoro, la durata delle pause normali, il numero di sessioni di lavoro che devono trascorrere prima che inizi una pausa più lunga e la durata di questa pausa più lunga.

Puoi anche decidere se mostrare le tue distrazioni durante le pause pomodoro.

Impostare \"Pausa il tracciamento del tempo nelle pause pomodoro\" traccerà anche le tue pause come lavoro impiegato per un task.

Enabling \"Metti in pausa la sessione pomodoro quando non c'è un task attivo\" metterà in pausa anche la sessione pomodoro, quando metti in pausa un task.

", - "IS_ENABLED": "Abilita timer pomodoro", - "IS_MANUAL_CONTINUE": "Conferma manualmente l'inizio della prossima sessione pomodoro", - "IS_PLAY_SOUND": "Emetti un suono quando la sessione è terminata", - "IS_PLAY_SOUND_AFTER_BREAK": "Emetti un suono quando la pausa è terminata", - "IS_PLAY_TICK": "Emetti un suono d'orologio ogni secondo", - "IS_STOP_TRACKING_ON_BREAK": "Interrompi il tracciamento del tempo di un task durante una pausa", - "LONGER_BREAK_DURATION": "Durata delle pause più lunghe", - "TITLE": "Impostazioni del pomodoro" - }, - "TAKE_A_BREAK": { - "HELP": "

Ti permette di configurare un promemoria ricorrente quando hai lavorato per uno specifica quantità di tempo senza prenderti una pausa.

Puoi modificare il messaggio mostrato. ${duration} sarà rimpiazzata con il tempo speso senza una pausa.

", - "IS_ENABLED": "Abilita il promemoria di fare una pausa", - "IS_FOCUS_WINDOW": "Porta in evidenza la finestra dell'app quando il promemoria è attivo(solo Desktop)", - "IS_LOCK_SCREEN": "Blocca lo schermo quando è l'ora di una pausa (solo Desktop)", - "MESSAGE": "Messaggio per prenderti una pausa", - "MIN_WORKING_TIME": "Innesca la notifica di prendersi una pausa dopo X tempo lavorato senza fare pausa", - "TITLE": "Promemoria pausa" + "SELECT_ICON": "Seleziona un'icona", + "SELECT_TYPE": "Seleziona un tipo", + "TYPES": { + "COMMAND": "Comando (comando da shell)", + "FILE": "File (aperto con l'app predefinita di sistema)", + "IMG": "Image (mostrata nella miniatura)", + "LINK": "Link (aperto nel browser)" } + } }, - "GLOBAL_SNACK": { - "COPY_TO_CLIPPBOARD": "Copiato negli appunti", - "ERR_COMPRESSION": "Errore per l'interfaccia di compressione", - "ERR_DB_CLEAR": "Errore durante la pulizia del database", - "ERR_DB_DELETE": "Errore durante la cancellazione dei dati", - "ERR_DB_LOAD": "Errore durante il caricamento dei dati", - "ERR_DB_SAVE": "Errore durante il salvataggio dei dati", - "PERSISTENCE_DISALLOWED": "I dati non saranno salvati permanentemente. Fai attenzione che questo può portare a perdita dei dati!!", - "RUNNING_X": "Eseguendo \"{{str}}\"." + "CONFIG": { + "S": { + "UPDATE_SECTION": "Aggiornate impostazioni per {{sectionKey}}" + } }, - "MH": { - "ADD_NEW_TASK": "Aggiungi nuovo task", - "CREATE_PROJECT": "Crea progetto", - "GO_TO_TASK_LIST": "Vai alla lista dei task", - "MANAGE_PROJECTS": "Gestisci progetti", - "METRICS": "Metriche", - "PROCRASTINATE": "Procastina", - "PROJECTS": "Progetti", - "PROJECT_MENU": "Menu di progetto", - "PROJECT_SETTINGS": "Impostazioni di progetto", - "SCHEDULED": "Pianificati", - "SETTINGS": "Impostazioni", + "GITHUB": { + "DIALOG_INITIAL": { + "TITLE": "Configura Github per il progetto" + }, + "FORM": { + "FILTER_USER": "Username (es. per filtrare le modifiche fatte da te)", + "IS_AUTO_ADD_TO_BACKLOG": "Aggiungi automaticamente gli issue non risolti da Github al backlog", + "IS_AUTO_POLL": "Esegui il polling automatico delle modifiche sugli issue di git importati", + "IS_SEARCH_ISSUES_FROM_GITHUB": "Mostra gli issue di git come suggerimenti quando aggiungi un nuovo task", + "REPO": "\"username/repositoryName\" per il repository git che vuoi tracciare" + }, + "FORM_SECTION": { + "HELP": "

Qui puoi configurare SuperProductivity per aggiungere la lista degli issue di una specifica repository nel pannello di creazione task nella vista pianificazione giornaliera. Saranno mostrati come suggerimenti e forniranno un link all'issue ed alcune informazioni su di esso.

Inoltre puoi aggiungere e sincronizzare automaticamente tutti gli issue aperti al backlog dei task.

", + "TITLE": "Github" + }, + "ISSUE_CONTENT": { + "ASSIGNEE": "Assegnatario", + "AT": "a", + "DESCRIPTION": "Descrizione", + "LABELS": "Etichetta", + "MARK_AS_CHECKED": "Segna gli aggiornamenti come verificati", + "STATUS": "Stato", + "SUMMARY": "Riepilogo", + "WRITE_A_COMMENT": "Scrivi un commento" + }, + "S": { + "ERR_NETWORK": "Github: Richiesta fallita a causa di un erore di rete lato client", + "ERR_NOT_CONFIGURED": "Github: Non è configurato correttamente", + "ERR_REQUEST": "Github: Le API hanno restituito {{statusCode}}. {{errorMsg}}", + "IMPORTED_MULTIPLE_ISSUES": "Github: Importati {{issuesLength}} nuovi issue da git al backlog", + "IMPORTED_SINGLE_ISSUE": "Github: Importati gli issue \"{{issueText}}\" da git al backlog", + "ISSUE_DELETED_OR_CLOSED": "Github: L'issue \"{{issueText}}\" sembra essere stato chiuso o eliminato su git", + "ISSUE_UPDATE": "Github: Aggiornati dati per \"{{issueText}}\"", + "MANUAL_UPDATE_ISSUE_SUCCESS": "Github: Aggiornati dati per \"{{issueText}}\"", + "MISSING_ISSUE_DATA": "Github: Trovati task con dati mancanti. Ricarico.", + "NEW_COMMENT": "Github: Nuovo commento per \"{{issueText}}\"", + "POLLING": "Github: Sto facendo il polling dei cambiamenti per gli issue", + "SHOW_ISSUE_BTN": "Mostra" + } + }, + "GOOGLE": { + "BANNER": { + "AUTH_FAIL": "GoogleApi: Autenticazione fallita, per favore effettua nuovamente il login!" + }, + "DIALOG": { + "CREATE_SYNC_FILE": "Google Drive: Nessun file con nome \"{{fileName}}\" è stato trovato. Vuoi crearlo come un file sincronizzato su Google Drive?", + "USE_EXISTING_SYNC_FILE": "Google Drive: Usare il file esistente \"{{fileName}}\" come file sincronizzato? Se non lo desideri cambia il nome del file sincronizzato, per favore." + }, + "D_CONFIRM_LOAD": { + "LAST_MOD": "ultima modifica:", + "LAST_SYNC": "ultima sincronizzazione", + "LOCAL": "locale", + "LOCAL_REMOTE": "locale <=> remoto", + "OVERWRITE_LOCAL": "Sovrascrivi locale", + "OVERWRITE_REMOTE": "Sovrascrivi remoto", + "REMOTE": "remoto", + "TEXT": "

Aggiorna dal backup Google Drive. Sia i dati locali che remoti risultano modificati. Vuoi sovrascrivere le modifiche non salvate locali? I dati verranno persi per sempre.

", + "TITLE": "Sovrascrivere i dati locale con GDrive Update?" + }, + "D_CONFIRM_SAVE": { + "LAST_MOD": "ultima modifica:", + "LAST_SYNC": "ultima sincronizzazione", + "LOCAL": "locale", + "LOCAL_REMOTE": "locale <=> remoto", + "OVERWRITE_LOCAL": "Sovrascrivi locale", + "OVERWRITE_REMOTE": "Sovrascrivi remoto", + "REMOTE": "remoto", + "TEXT": "

Sembrano esserci modifiche su Google Drive, che non hai in locale. Vuoi comunque sovrascriverle?

", + "TITLE": "Sovrascrivere i dati non salvati su Google Drive?" + }, + "S": { + "DOWNLOADING_UPDATE": "Google Drive: C'è un aggiornamento remoto! Scaricando...", + "ERROR": "Google Drive – Errore: {{errTxt}}", + "ERROR_INITIAL_IMPORT": "Google Drive: Errore durante l'importazione iniziale dei dati", + "LOCAL_UP_TO_DATE": "Google Drive: Dati locali già aggiornati", + "MULTIPLE_SYNC_FILES_WITH_SAME_NAME": "File multipli con il nome \"{{newFileName}}\" trovati. Per favore rimuovili tutti tranne uno o scegli un nome diverso.", + "NO_UPDATE_REQUIRED": "Google Drive: Nessun aggiornamento richiesto", + "REMOTE_UP_TO_DATE": "Google Drive: Dati remoti già aggiornati", + "SUCCESS": "Google Drive: Backup salvato con successo", + "SYNCING": "Google Drive: Sincronizzando" + }, + "SYNC_CFG": { + "AUTO_LOGIN": "Login automatico all'apertura dell'app", + "AUTO_SYNC": "Sincronizzazione automatica a dati remoti", + "BACKUP_NOW": "Esegui il backup ora", + "COMPRESS": "Comprimi i dati", + "ENABLE": "Abilita sincronizzazione tramite Google Drive", + "LOAD_FROM": "Carica da GDrive", + "LOAD_ON_STARTUP": "Carica i dati remoti all'avvio", + "NOTIFY": "Notifica alla sincronizzazione", + "SYNC_FILE_NAME": "Sincronizza nuovo nome file", + "SYNC_INTERVAL": "Sincronizza intervallo", + "UPDATE_SYNC_FILE": "Aggiorna file sincronizzato" + }, + "S_API": { + "ERR": "GoogleApi Errore: {{errStr}}", + "ERR_NO_FILE_ID": "GoogleApi: Nessun id file specificato", + "ERR_NO_FILE_NAME": "GoogleApi: Nessun nome file spiecificato", + "SUCCESS_LOGIN": "GoogleApi: Login avvenuta con successo" + } + }, + "JIRA": { + "BANNER": { + "BLOCK_ACCESS_MSG": "Jira: Per prevenire il blocco dalle api, l'accesso è stato bloccato da Super Productivity. Dovresti controllare le tue impostazioni di jira!", + "BLOCK_ACCESS_UNBLOCK": "Sblocca" + }, + "CFG_CMP": { + "ALWAYS_ASK": "Apri sempre la finestra", + "DONE": "Stato di completamento del task", + "DO_NOT": "Non effettuare la transizione", + "ENABLE": "Abilita l'integrazione con jira", + "ENABLE_TRANSITIONS": "Abilita la gestione delle transizioni", + "IN_PROGRESS": "Stato di inizio del task", + "LOAD_SUGGESTIONS": "Carica suggerimenti", + "MAP_CUSTOM_FIELDS": "Mappa campi custom", + "MAP_CUSTOM_FIELDS_INFO": "Sfortunatamente alcuni dei dati di Jira sono salvati sotto campi custom che sono diversi per ogni installazione. Se vuoi includere questi dati devi selezionare il giusto campo custom.", + "OPEN": "Stato di pausa task", + "SELECT_ISSUE_FOR_TRANSITIONS": "Seleziona issue per caricare le transizioni disponibili", + "STORY_POINTS": "Punti storia" + }, + "DIALOG_CONFIRM_ASSIGNMENT": { + "MSG": "{{summary}} è al momento assegnato a {{assignee}}. Vuoi assegnartelo?", + "OK": "Fallo!" + }, + "DIALOG_INITIAL": { + "TITLE": "Configura Jira per il progetto" + }, + "DIALOG_TRANSITION": { + "CHOOSE_STATUS": "Seleziona lo stato da assegnare", + "CURRENT_ASSIGNEE": "Assegnatario corrente:", + "CURRENT_STATUS": "Stato corrente:", + "TITLE": "Jira: Aggiorna stato", + "UPDATE_STATUS": "Aggiorna stato" + }, + "DIALOG_WORKLOG": { + "CURRENTLY_LOGGED": "Tempo loggato al momento: ", + "INVALID_DATE": "Il valore inserito non è una data!", + "SAVE_WORKLOG": "Salva worklog", + "STARTED": "Iniziato", + "SUBMIT_WORKLOG_FOR": "Sottometti un worklog su Jira per", + "TIME_SPENT": "Tempo impiegato", + "TITLE": "Jira: Sottometti worklog" + }, + "FORM": { + "IS_AUTO_ADD_TO_BACKLOG": "Aggiungi automaticamente gli issue non risolti da git al backlog", + "IS_AUTO_POLL": "Esegui il polling automatico delle modifiche sugli issue di git importati", + "IS_SEARCH_ISSUES_FROM_GITHUB": "Mostra gli issue di git come suggerimenti quando aggiungi un nuovo task", + "REPO": "\"username/repositoryName\" per il repository git che vuoi tracciare" + }, + "FORM_ADV": { + "AUTO_ADD_BACKLOG_JQL_QUERY": "JQL usato per aggiungere task automaticamente al tuo backlog", + "IS_ADD_WORKLOG_ON_SUB_TASK_DONE": "Apri una finestra per sottomettere il worklog su jira quando un sotto-task è completato", + "IS_AUTO_ADD_TO_BACKLOG": "Aggiungi automaticamente gli issue al backlog di Jira", + "IS_AUTO_POLL_TICKETS": "Controlla automaticamente le modifiche sugli issue importati e notificamelo", + "IS_CHECK_TO_RE_ASSIGN_TICKET_ON_TASK_START": "Controlla se l'issue sul quale correntemente si sta lavorando è assegnato all'utente corrente", + "IS_WORKLOG_ENABLED": "Apri una finestra per sottomettere il worklog su jira quando un task è completato", + "SEARCH_JQL_QUERY": "JQL Query per limitare i task della ricerca", + "USER_ASSIGNEE_NAME": "Nome dell'assegnatario che si vuole controllare" + }, + "FORM_CRED": { + "HOST": "Host (e.g.: http://my-host.de:1234)", + "PASSWORD": "Token / Password", + "USER_NAME": "Email / Username" + }, + "FORM_SECTION": { + "ADV_CFG": "Configurazione avanzata", + "CREDENTIALS": "Credenziali", + "HELP_ARR": { + "H1": "Configurazione base", + "H2": "Impostazioni del worklog", + "H3": "Transizioni di default", + "P1_1": "Per favore indica un nome per la login (lo trovi nella tua pagina profilo) e un API token o una password se per qualche motivo non ne puoi generare uno. Per favore nota che le nuove versioni di jira potrebbero funzionare solo con il token. ", + "P1_2": "Devi anche specificare una query JQL che è usata dai suggerimenti per aggiungere task a jira. Se hai bisogno di aiuto vai a questo link https://confluence.atlassian.com/jirasoftwarecloud/advanced-searching-764478330.html.", + "P1_3": "Puoi anche configurare, se vuoi aggiungere automaticamente (es. ogni volta che visiti la vista di pianificazione) nuovi tasks specificati in una query JQL custom al backlog.", + "P1_4": "Un'altra opzione è di \"Controllare se il ticket corrente è assegnato ad un altro utente\". Se abilitato e stai iniziando, un controllo satà fatto per controllare se sei assegnato a quel ticket su Jira, se non lo sei appparirà una finestra nella quale puoi scegliere di assegnarti quel ticket.", + "P2_1": "Ci sono diverse opzioni per determinare quando e come vuoi sottomettere un worklog. Abilitare 'Apri una finestra per aggiungere un worklog a Jira quando il task è completato' apre una finestra per aggiungere il worklog ogni volta che segni un task Jira come completato. Quindi ricorda che i worklog saranno aggiunti in cima a tutto ciò che è stato tracciato fino a quel momento. Quindi se vuoi segnare un task come completato per la seconda volta, potresti non voler sottomettere il tempo lavorato complessivamente per il task un'altra volta.", + "P2_2": "'Apri una finestra worklog quando un sotto-task è completato e non per task con sotto-task' apre una finestra di worklog ogni volta che segni un sotto-task di un issue Jira come completato. Dal momento che tracci già il tempo tramite i sotto-task, nessuna finestra viene aperta quando segni il task Jira stesso come completato.", + "P2_3": "'Invia automaticamente gli update al worklog senza aprire finestre' fa ciò che dice. Dato che segnare un task come completato spesso porta il tempo totale di lavoro a venir conteggiato due volte, non è consigliato.", + "P3_1": "Qui puoi riconfigurare le tue transizioni di default. Jira rende disponibili molte transizioni, spesso attivate come diverse colonne sulla tua board agile di Jira, non possiamo assumere dove e quando trasportare tuoi task, quindi devi farlo manualmente." + } + }, + "ISSUE_CONTENT": { + "ASSIGNEE": "Assegnatario", + "AT": "a", + "ATTACHMENTS": "Allegati", + "CHANGED": "modificato", + "COMMENTS": "Commenti", + "COMPONENTS": "Componenti", + "DESCRIPTION": "Descrizione", + "LIST_OF_CHANGES": "Lista delle modifiche", + "MARK_AS_CHECKED": "Segna gli aggiornamenti come verificati", + "ON": "su", + "STATUS": "Stato", + "STORY_POINTS": "Punti storia", + "SUMMARY": "Riepilogo", + "WORKLOG": "Worklog", + "WRITE_A_COMMENT": "Scrivi un commento" + }, + "S": { + "ADDED_WORKLOG_FOR": "Jira: Aggiunto worklog per {{issueKey}}", + "EXTENSION_NOT_LOADED": "Estensione Super Productivity non caricata. Prova ad aggiornare la pagina", + "IMPORTED_MULTIPLE_ISSUES": "Jira: Importati {{issuesLength}} nuovi issue da jira al backlog", + "IMPORTED_SINGLE_ISSUE": "Jira: Importati issue \"{{issueText}}\" da jira al backlog", + "INSUFFICIENT_SETTINGS": "Configurazioni insufficienti per Jira", + "ISSUE_NO_UPDATE_REQUIRED": "Jira: \"{{issueText}}\" è già aggiornato", + "ISSUE_UPDATE": "Jira: Aggiornati dati per \"{{issueText}}\"", + "MANUAL_UPDATE_ISSUE_SUCCESS": "Jira: Aggiornati dati per \"{{issueText}}\"", + "MISSING_ISSUE_DATA": "Jira: Trovati task con dati mancanti. Ricaricando.", + "NO_VALID_TRANSITION": "Jira: Non è stata configurata una transizione valida", + "POLLING": "Jira: Eseguendo il polling per i cambiamenti sugli issue", + "TIMED_OUT": "Jira: La richiesta è andata in timeout", + "TRANSITION": "Jira: Impostato l'issue \"{{issueKey}}\" per \"{{name}}\"", + "TRANSITIONS_LOADED": "Jira: Transizioni caricate. Usa i campi select sottostanti per assegnarle", + "TRANSITION_SUCCESS": "Jira: Impostato {{issueKey}} per {{chosenTransition}}", + "UNABLE_TO_REASSIGN": "Jira: Impossibile riassegnare l'issue a te stesso, perché non hai specificato un username. Per favore rivedi le impostazioni." + }, + "STEPPER": { + "CREDENTIALS": "Credenziali", + "DONE": "Ora sei a posto.", + "LOGIN_SUCCESS": "Login eseguita con successo!", + "TEST_CREDENTIALS": "Credenziali di test", + "WELCOME_USER": "Benvenuto {{user}}!" + } + }, + "METRIC": { + "BANNER": { + "CHECK": "Ce l'ho fatta!" + }, + "CMP": { + "AVG_BREAKS_PER_DAY": "Media delle pause per giorno", + "AVG_TASKS_PER_DAY_WORKED": "Media dei task lavorati al giorno", + "AVG_TIME_SPENT_ON_BREAKS": "Tempo medio impiegato nelle pause", + "AVG_TIME_SPENT_PER_DAY": "Tempo medio impiegato al giorno", + "AVG_TIME_SPENT_PER_TASK": "Tempo medio impiegato per task", + "COUNTING_SUBTASKS": "(contando i sotto-task)", + "DAYS_WORKED": "Giorni lavorati", + "IMPROVEMENT_SELECTION_COUNT": "Numero di volte in cui è stato selezionato un fattore di miglioramento", + "MOOD_PRODUCTIVITY_OVER_TIME": "Umore e produttività nel tempo", + "NO_ADDITIONAL_DATA_YET": "Nessun dato aggiuntivo raccolto. Usa il form nel pannello riepilogo giornaliero \"Valutazione\" per aggiungerlo.", + "OBSTRUCTION_SELECTION_COUNT": "Numero di volte in cui è stato selezionato un fattore ostruente", + "TASKS_DONE_CREATED": "Task (completati/creati)", + "TIME_ESTIMATED": "Tempo stimato", + "TIME_SPENT": "Tempo impiegato" + }, + "EVAL_FORM": { + "ADD_NOTE_FOR_TOMORROW": "Aggiungi una nota per domani", + "DISABLE_REPEAT_EVERY_DAY": "Disabilita ripetizione ogni giorno", + "ENABLE_REPEAT_EVERY_DAY": "Ripeti ogni giorno", + "HELP_H1": "Perché dovrebbe importarmi?", + "HELP_LINK_TXT": "Vai alla sezione metriche", + "HELP_P1": "Tempo di fare una piccola autovalutazione! Le tue risposte verranno salvate e ti forniranno alcune statistiche su come lavori, nella sezione metriche. Inoltre i suggerimenti per domani appariranno sopra alla tua lista dei task il giorno seguente.", + "HELP_P2": "Questo intende essere meno riguardante il calcolo delle metriche o diventare efficiente come una macchina in quello che fai, piuttosto riguarda il migliorare come ti senti quando lavori. Può essere utile valutare i punti dolenti della tua routine quotidiana, così come lo è trovare fattori che possono aiutarti. Essere giusto un po' sistematici sperabilmente ti aiuterà ad avere un controllo migliore e migliorare quello che riesci.", + "IMPROVEMENTS": "Cosa ha migliorato la tua produttività?", + "IMPROVEMENTS_TOMORROW": "Cosa potresti fare per migliorare domani?", + "MOOD": "Come ti senti?", + "MOOD_HINT": "1: Molto male – 10: In modo fantastico", + "NOTES": "Note per domani", + "OBSTRUCTIONS": "Cosa ha ostacolato la tua produttività?", + "PRODUCTIVITY": "Quanto efficentemente hai lavorato?", + "PRODUCTIVITY_HINT": "1: Non ho neanche iniziato – 10: Molto efficentemente" + }, + "S": { + "SAVE_METRIC": "Metriche salvate con successo" + } + }, + "NOTE": { + "ADD_REMINDER": "Aggiungi promemoria", + "D_ADD": { + "DATETIME_LABEL": "Data e ora per promemoria (opzionale)", + "NOTE_LABEL": "Scrivi del testo per salvarlo come nota..." + }, + "D_ADD_REMINDER": { + "E_ENTER_TITLE": "Devi inserire un titolo", + "L_DATETIME": "Data e ora per promemoria", + "L_TITLE": "Titolo per la notifica", + "TITLE_ADD": "Aggiungi promemoria per nota", + "TITLE_EDIT": "Modifica promemoria per nota" + }, + "D_VIEW_REMINDER": { + "SNOOZE": "Silenzia", + "TITLE": "Note" + }, + "EDIT_REMINDER": "Modifica promemoria", + "NOTES_CMP": { + "ADD_BTN": "Aggiungi nuova nota", + "DROP_TO_ADD": "Trascina qui per aggiungere una nuova nota" + }, + "NOTE_CMP": { + "DISABLE_PARSE": "Disabilita parsing markdown", + "ENABLE_PARSE": "Abilita parsing markdown" + }, + "REMOVE_REMINDER": "Rimuovi promemoria", + "S": { + "ADDED_REMINDER": "Promemoria aggiunto per nota", + "DELETED_REMINDER": "Promemoria cancellato per nota", + "UPDATED_REMINDER": "Promemoria aggiornato per nota" + }, + "UPDATE_REMINDER": "Aggiornato promemoria" + }, + "POMODORO": { + "BACK_TO_WORK": "Torna al lavoro!", + "BREAK_IS_DONE": "La tua pausa è finita!", + "ENJOY_YOURSELF": "Rilassati, fai un po' di movimento, torna qui:", + "FINISH_SESSION_X": "Hai completato con successo la sessione {{nr}}!", + "NOTIFICATION": { + "BREAK_X_START": "Pomodoro: Pausa {{nr}} iniziata!", + "SESSION_X_START": "Pomodoro: Sessione {{nr}} iniziata!" + }, + "S": { + "SESSION_X_START": "Pomodoro: Sessione {{nr}} iniziata!" + }, + "SKIP_BREAK": "Salta la pausa" + }, + "PROCRASTINATION": { + "BACK_TO_WORK": "Torna al lavoro!", + "COMP": { + "INTRO": "Prenderti cura di te stesso è sempre una buona idea. Migliora la tua autostima, i sentimenti positivi e può aiutarti ad evitare la procastinazione. Prova a fare un po' di esercizio:", + "L1": "Siediti e fai un po' di stretching, se ne hai voglia, rilassati un po'", + "L2": "Prova ad ascoltare i tuoi pensieri e le emozioni che ne scaturiscono", + "L3": "Rispondi a te stesso nello stesso modo in cui risponderesti ad un amico?", + "L4": "Se la risposta è no, immagina un tuo amico nella tua situazione. Cosa gli diresti? Cosa faresti per loro?", + "OUTRO": "Altro esercizi li trovi qui oppure su google.", + "TITLE": "Auto compassione" + }, + "CUR": { + "INTRO": "La procastinazione è interessante, non credi? Non ha senso procastinare. Non nel tuo interesse a lungo termine. Ma tutti continuano a farlo. Divertiti ed esplora!", + "L1": "Che sensazioni ti suscita la tentazione di procastinare?", + "L2": "In che punto del tuo corpo le senti?", + "L3": "Cosa ti fanno venire in mente?", + "L4": "Cosa succede al pensiero di procastinare se lo osservi? Si intensifica? Svanisce? Suscita altre emozioni?", + "L5": "Come mutano le emozioni nel tuo corpo mentre continui a posare la tua consapevolezza su di esse?", + "TITLE": "Curiosità" + }, + "H1": "Ritagliati una pausa!", + "P1": "Prima di tutto rilassati! Tutti ne hanno bisogno ogni tanto. E se non stai facendo quello che dovresti fare, dovresti almeno godertelo! Nelle sezioni sottostanti troverai risorse utili.", + "P2": "Se vuoi sapere di più sulla scienza che sta dietro tutto questo, ti consiglio questo articolo dal quale sono presi alcuni degli esercizi.", + "P3": "Ricorda: La procastinazione è un problema di regolazione delle emozioni, non un problema di gestione del tempo.", + "REFRAME": { + "INTRO": "Pensa a ciò che potrebbe essere positivo riguardo al task, nonostante tutto.", + "TITLE": "Ricontestualizzazione", + "TL1": "Cosa di esso potrebbe essere interessante?", + "TL2": "Cosa ci guadagni a completarlo?", + "TL3": "Come ti sentirai se lo completi?" + }, + "SPLIT_UP": { + "INTRO": "Dividi il task in quanti più piccoli pezzi riesci.", + "OUTRO": "Fatto? Poi pensa. Quale potrebbe essere – teoricamente parlando – la prima cosa che faresti if se dovessi iniziare a lavorare sul task? Pensaci solo...", + "TITLE": "Dividilo in pezzi!" + } + }, + "PROJECT": { + "BANNER": { + "FINISH_DAY": { + "FINISH_DAY": "Termina la giornata", + "MSG": "Ti sei dimenticato di terminare la giornata del {{dayStr}}" + } + }, + "D_CREATE": { + "CREATE": "Crea progetto", + "EDIT": "Modifica progetto", + "SETUP_GIT": "Configura integrazione Githun", + "SETUP_JIRA": "Configura integrazione Jira" + }, + "FORM_BASIC": { + "L_TITLE": "Nome progetto", + "TITLE": "Impostazioni base" + }, + "FORM_THEME": { + "D_IS_DARK_THEME": "Non verrà usato se il sistema supporta la dark mode globalmente.", + "HELP": "Impostazioni sul tema del tuo progetto.", + "L_COLOR_ACCENT": "Colore di accento", + "L_COLOR_PRIMARY": "Colore primario", + "L_COLOR_WARN": "Colore errori/warning", + "L_HUE_ACCENT": "Soglia per il testo scuro su sfondo del colore di accento", + "L_HUE_PRIMARY": "Soglia per il testo scuro su sfondo del colore primario", + "L_HUE_WARN": "Soglia per il testo scuro su sfondo del colore di warning", + "L_IS_AUTO_CONTRAST": "Imposta automaticamente il colore del testo per ottimizzare la leggibilità", + "L_IS_REDUCED_THEME": "Usa UI ridotta (nessuna box intorno ai task)", + "L_THEME_COLOR": "Colore del tema", + "L_TITLE": "Titolo", + "TITLE": "Tema" + }, + "S": { + "ARCHIVED": "Progetto archiviato", + "CREATED": "Creato progetto {{title}}. Puoi selezionarlo dal menu in alto a sinistra.", + "DELETED": "Progetto eliminato", + "E_EXISTS": "Il progetto \"{{title}}\" esiste già", + "E_INVALID_FILE": "Dati non validi per il file di progetto", + "ISSUE_PROVIDER_UPDATED": "Aggiornare le impostazioni di progetto per {{issueProviderKey}}", + "UNARCHIVED": "Progetto non archiviato", + "UPDATED": "Aggiornate impostazioni di progetto" + } + }, + "REMINDER": { + "S_REMINDER_ERR": "Errore per interfaccia promemoria" + }, + "TASK": { + "ADDITIONAL_INFO": { + "ATTACHMENTS": "Allegati {{nr}}", + "ISSUE_TYPE_ATTACHMENTS": "{{issueType}} allegati", + "LOCAL_ATTACHMENTS": "Allegati locali", + "NOTES": "Note" + }, + "ADD_TASK_BAR": { + "ADD_TASK": "Aggiungi task", + "ADD_TASK_TO_BACKLOG": "Aggiungi task al backlog", + "START": "Premi ancora invio per iniziare" + }, + "B": { + "ADD_HALF_HOUR": "Aggiungi mezz'ora", + "ESTIMATE_EXCEEDED": "Tempo stimato superato per \"{{title}}\"" + }, + "CMP": { + "ADD_SUB_TASK": "Aggiungi sotto-task", + "ADVANCED": "Avanzate", + "CONVERT_TO_PARENT_TASK": "Converti a task padre", + "DELETE": "Cancella task", + "DROP_ATTACHMENT": "Trascina qui per allegare a \"{{title}}\"", + "EDIT_REMINDER": "Modifica promemoria", + "MARK_DONE": "Segna come completato", + "MARK_UNDONE": "Segna come non completato", + "MOVE_TO_BACKLOG": "Sposta nel backlog", + "MOVE_TO_OTHER_PROJECT": "Sposta in un altro progetto", + "MOVE_TO_TODAY": "Sposta nella lista di oggi", + "OPEN_ATTACH": "Allega file o link", + "OPEN_ISSUE": "Apri issue in una nuova scheda del browser", + "OPEN_TASK_MENU": "Apri il menu dei task", + "OPEN_TIME": "Stima il tempo/Aggiungi il tempo impiegato", + "REPEAT_EDIT": "Modifica ripetizione configurazione task", + "REPEAT_TASK": "Ripeti task", + "SCHEDULE": "Pianifica task", + "SHOW_UPDATES": "Mostra aggiornamenti", + "TOGGLE_ADDITIONAL": "Mostra/nascondi informazioni aggiuntive", + "TOGGLE_ATTACHMENTS": "Mostra/nascondi allegati", + "TOGGLE_DONE": "Segna come completato/non completato", + "TOGGLE_SUB_TASK_VISIBILITY": "Cambia visibilità sotto-task", + "TRACK_TIME": "Inizia a tracciare il tempo", + "TRACK_TIME_STOP": "Pausa tracciamento del tempo", + "UPDATE_ISSUE_DATA": "Aggiorna dati dell'issue" + }, + "D_REMINDER_ADD": { + "ADD": "Pianifica Task", + "DATETIME_FOR": "Data e ora per promemoria", + "EDIT": "Modifica promemoria", + "MOVE_TO_BACKLOG": "Sposta il task nel backlog fino alla pianificazione", + "SCHEDULE": "Pianifica", + "UNSCHEDULE": "Rimuovi pianificazione" + }, + "D_REMINDER_VIEW": { + "DISMISS": "Rimuovi promemoria", + "ERR_LOST": "Un promemoria era pianificato per il task {{title}}, ma sembra essersi perso.", + "FOR_CURRENT": "Hai un task pianificato. Vuoi iniziare a lavorarci?", + "FOR_OTHER": "Hai un task pianificato. Vuoi iniziare a lavorarci?", + "FROM_PROJECT": "Da progetto", + "SNOOZE": "Silenzia", + "START": "Inizia task", + "SWITCH_PROJECT_START": "Cambia progetto & inizia task", + "TITLE": "Task pianificato" + }, + "D_TIME": { + "ADD_FOR_OTHER_DAY": "Aggiungi il tempo impiegato per un'altro giorno", + "DELETE_FOR": "Cancella la voce dalla giornata", + "ESTIMATE": "Stima", + "TIME_SPENT": "Tempo impiegato", + "TIME_SPENT_ON": "Tempo impiegato {{date}}", + "TITLE": "Tempo impiegato / Stime" + }, + "D_TIME_FOR_DAY": { + "ADD_ENTRY_FOR": "Aggiungi nuova voce per il giorno {{date}}", + "DATE": "Data per la nuova voce", + "HELP": "Esempi:
30m => 30 minuti
2h => 2 ore
2h 30m => 2 ore e 30 minuti", + "TINE_SPENT": "Tempo speso", + "TITLE": "Aggiungi per giorno" + }, + "N": { + "ESTIMATE_EXCEEDED": "Tempo stimato superato!", + "ESTIMATE_EXCEEDED_BODY": "Hai superato il tuo tempo stimato per \"{{title}}\"." + }, + "S": { + "DELETED": "Cancellato task \"{{title}}\"", + "FOUND_MOVE_FROM_BACKLOG": "Spostato task {{title}} dal backlog alla lista dei task di oggi", + "FOUND_RESTORE_FROM_ARCHIVE": "Ripristinato task {{title}} relativo ad issue dall'archivio", + "REMINDER_ADDED": "Pianificato task \"{{title}}\"", + "REMINDER_DELETED": "Cancellato promemoria per task", + "REMINDER_UPDATED": "Aggiornato promemoria per task \"{{title}}\"", + "TASK_CREATED": "Creato task \"{{title}}\"" + }, + "SELECT_OR_CREATE": "Seleziona o crea task", + "SUMMARY_TABLE": { + "ESTIMATE": "Stima", + "SPENT_TODAY": "Tempo impiegato oggi", + "SPENT_TOTAL": "Tempo impiegato totale", + "TASK": "Task", + "TOGGLE_DONE": "Segna come non completato/completato" + } + }, + "TASK_REPEAT": { + "D_CONFIRM_REMOVE": { + "MSG": "Rimuovere la configurazione ripeti convertirà tutte le istanze precedenti di questo task a normali task. Sei sicuro di voler procedere?", + "OK": "Rimuovi completamente" + }, + "D_EDIT": { + "ADD": "Aggiungi configurazione ripeti task", + "EDIT": "Modifica configurazione ripeti task", + "HELP1": "I task ripetuti servono ai doveri quotidiani, es: \"Organizzazione\", \"Meeting giornalieri\", \"Code Review\", \"Controllare email\" o task simili, che è probabile accadano più e più volte.", + "HELP2": "Una volta configurato, un task ripetuto sarà ricreato per ognuno dei giorni selezionati sotto non appena aprirai il progetto, e sarà automaticamente segnato come completato alla fine della giornata. Saranno gestiti come istanze separate, quindi puoi liberamente aggiungere sotto-task etc.", + "HELP3": "I tasks importati da Jira o gli issue di Git non possono essere ripetuti. Su un task ripetuto, saranno anche eliminati tutti i promemoria." + }, + "F": { + "DEFAULT_ESTIMATE": "Stima di default", + "FRIDAY": "Venerdì", + "MONDAY": "Lunedì", + "SATURDAY": "Sabato", + "SUNDAY": "Domenica", + "THURSDAY": "Giovedì", + "TITLE": "Titolo del task", + "TUESDAY": "Martedì", + "WEDNESDAY": "Mercoledì" + } + }, + "TIME_TRACKING": { + "B": { + "ALREADY_DID": "Ho già fatto", + "SNOOZE": "Silenzia {{time}}" + }, + "D_IDLE": { + "BREAK": "Pausa", + "CREATE_AND_TRACK": "Crea e traccia su:", + "IDLE_FOR": "Sei stato fermo per:", + "SKIP": "Salta", + "TASK": "Task", + "TASK_BREAK": "Task+Pausa", + "TRACK_TO": "Traccia su:" + } + }, + "WORKLOG": { + "CMP": { + "DAYS_WORKED": "Giornate lavorate:", + "MONTH_WORKED": "Mesi lavorati:", + "REPEATING_TASK": "Task ripetuti", + "RESTORE_TASK_FROM_ARCHIVE": "Ripristina task dall'archivio", "TASKS": "Task", - "TASK_LIST": "Lista dei task", - "TOGGLE_SHOW_BOOKMARKS": "Mostra/nascondi segnalibri", - "TOGGLE_SHOW_NOTES": "Mostra/nascondi note di progetto", - "TOGGLE_TRACK_TIME": "Inizia/smetti di tracciare il tempo", - "WORKLOG": "Worklog" - }, - "PDS": { - "BACK": "Apetta ho dimenticato qualcosa!", - "BREAK_LABEL": "Pause (numero / tempo)", - "CELEBRATE": "Prenditi un attimo per celebrare!", - "CLEAR_ALL_CONTINUE": "Cancella tutti i task fatti e continua", - "D_CONFIRM_APP_CLOSE": { - "CANCEL": "No, cancella solo i task", - "MSG": "Il lavoro è compiuto. Ora di andare a casa!", - "OK": "Agli ordini! Spegnimento!" + "TOTAL_TIME": "tempo impiegato in totale:", + "TOTAL_TIME_PROJECT": "Tempo impiegato sul progetto", + "WEEK_NR": "Settimana {{nr}}", + "WORKED": "Lavorato" + }, + "D_CONFIRM_RESTORE": "Sei sicuro di voler spostare il task \"{{title}}\" nella tua lista dei task di oggi?", + "D_EXPORT_TITLE": "Esporta worklog {{start}}–{{end}}", + "D_EXPORT_TITLE_SINGLE": "Esporta worklog {{day}}", + "EXPORT": { + "ADD_COL": "Aggiungi colonna", + "COPY_TO_CLIPBOARD": "Copia negli appunti", + "DONT_ROUND": "non arrotondare", + "EDIT_COL": "Modifica colonna", + "GROUP_BY": "Raggruppa per", + "O": { + "DATE": "Data", + "ENDED_WORKING": "Finito di lavorare", + "ESTIMATE_AS_CLOCK": "Stimato in tempo di orologio (es. 5:23)", + "ESTIMATE_AS_MILLISECONDS": "Stimato in millisecondi", + "ESTIMATE_AS_STRING": "Stimato in stringa (es. 5h 23m)", + "FULL_HALF_HOURS": "mezzore piene", + "FULL_HOURS": "ore piene", + "FULL_QUARTERS": "quarti d'ora pieni", + "PARENT_TASK": "Task padre", + "PARENT_TASK_TITLES_ONLY": "Titoli solo dei task padri", + "STARTED_WORKING": "Iniziato a lavorare", + "TASK_SUBTASK": "Task/Sotto-task", + "TIME_AS_CLOCK": "Tempo di orologio (es 5:23)", + "TIME_AS_MILLISECONDS": "Tempo in millisecondi", + "TIME_AS_STRING": "Tempo in stringa (es. 5h 23m)", + "TITLES_AND_SUB_TASK_TITLES": "Titoli e titoli dei sotto-task", + "WORKLOG": "Worklog" }, - "EVALUATION": "Valutazione", - "EXPORT_TASK_LIST": "Esporta lista dei task", - "NO_TASKS": "Non ci sono task in questa giornata", - "PLAN": "Pianifica", - "ROUND_15M": "Arrotonda tutti i task a 15 minuti", - "ROUND_30M": "Arrotonda tutti i task a 30 minuti", - "ROUND_5M": "Arrotonda tutti i task a 5 minuti", - "ROUND_TIME_SPENT": "Arrotonda il tempo impiegato", - "ROUND_TIME_SPENT_TITLE": "Arrotonda il tempo impiegato su tutti i task. Attenzione! Non puoi annullare questa azione!", - "ROUND_TIME_WARNING": "!!! Attenzione questa azione non può essere annullata !!!", - "ROUND_UP_15M": "Arrotonda tutti i task a 15 minuti", - "ROUND_UP_30M": "Arrotonda tutti i task a 30 minuti", - "ROUND_UP_5M": "Arrotonda tutti i task a 5 minuti", - "SAVE_AND_GO_HOME": "Salva e vai a casa", - "START_END": "Inizio – File", - "SUMMARY_FOR": "Riepilogo giornaliero per {{dayStr}}", - "TASKS_COMPLETED": "Task completati", - "TASK_LIST": "Lista dei task", - "TIME_SPENT_AND_ESTIMATE_LABEL": "Tempo impiegato / stimato", - "TIME_SPENT_ESTIMATE_TITLE": "Time Spent: Total time spent today. Archived tasks not included. – Time Estimated: Time estimated for tasks worked on today minus the time already spent with them on other days.", - "TODAY": "Oggi", - "WEEK": "Settimana" - }, - "PM": { - "TITLE": "Metriche di progetto" - }, - "PP": { - "ARCHIVED_PROJECTS": "Progetti archiviati", - "ARCHIVE_PROJECT": "Archivia progetto", - "CREATE_NEW": "Crea nuovo", - "DELETE_PROJECT": "Elimina progetto", - "D_CONFIRM_ARCHIVE": { - "MSG": "Sei sicuro di voler archiviare questo progetto? I progetti archiviati non saranno più mostrati nel menu e non potrai accederne ai dati senza prima riabilitarli. E' consigliato fare un backup dei dati prima di eseguire questa operazione.", - "OK": "Archivia" - }, - "D_CONFIRM_DELETE": { - "MSG": "Sei sicuro di voler eliminare questo progetto? E' consigliato fare un backup dei dati prima di eseguire questa operazione.", - "OK": "Elimina" - }, - "D_CONFIRM_UNARCHIVE": { - "MSG": "Sei sicuro che vuoi estrarre il progetto?", - "OK": "Estrai" - }, - "EDIT_PROJECT": "Modifica progetto", - "EXPORT_PROJECT": "Esporta progetto", - "GITHUB_CONFIGURED": "Integrazione Github configurata", - "IMPORT_FROM_FILE": "Importa da file", - "JIRA_CONFIGURED": "Integrazione Jira configurata", - "S_INVALID_JSON": "JSON non valido per file di progetto", - "TITLE": "Panoramica progetto", - "UN_ARCHIVE_PROJECT": "Estrai progetto" - }, - "PS": { - "GLOBAL_SETTINGS": "Impostazioni globali", - "PROJECT_SETTINGS": "Impostazioni specifiche al progetto", - "TOGGLE_DARK_MODE": "Abilita/disabilita tema scuro" - }, - "S": { - "SYNC": { - "ERROR_FALLBACK_TO_BACKUP": "Qualcosa è andato storto durante l'importazione dei dati. Ritorno all'ultimo backup.", - "ERROR_INVALID_DATA": "Errore durante la sincronizzazione. Dati non validi", - "IMPORTING": "Importando i dati", - "SUCCESS": "Dati importati" - } - }, - "SCHEDULE": { - "NO_SCHEDULED": "Non ci sono task pianificati al momento. Puoi pianificare un task scegliendo \"Pianifica task\" nel menu di contesto. Per aprirlo clicca i tre puntini sulla destra dei task.", - "START_TASK": "Inizia il task ora e rimuovi promemoria" - }, - "THEMES": { - "SELECT_THEME": "Seleziona tema", - "amber": "ambra", - "blue": "blu", - "blue-grey": "blu-grigio", - "cyan": "ciano", - "deep-orange": "arancio-intenso", - "deep-purple": "viola-intenso", - "green": "verde", - "indigo": "indaco", - "light-blue": "azzurro", - "light-green": "verde-chiaro", - "lime": "lime", - "pink": "rosa", - "purple": "viola", - "teal": "verde acqua", - "yellow": "giallo" - }, - "V": { - "E_1TO10": "Per favore inserisci un valore da 1 a 10", - "E_DATETIME": "Il valore inserito non è una data ed ora!", - "E_MAX": "Non deve essere maggiore di {{val}}", - "E_MAX_LENGTH": "Deve essere al massimo lungo {{val}} caratteri", - "E_MIN": "Deve essere minore di {{val}}", - "E_MIN_LENGTH": "Deve essere almeno lungo {{val}} caratteri", - "E_PATTERN": "Input non valido", - "E_REQUIRED": "Questo campo è obbligatorio" - }, - "WW": { - "ADD_MORE": "Aggiungi altro", - "ADD_SOME_TASKS": "Aggiungi qualche task per pianificare la tua giornata!", - "COMPLETED_TASKS": "Task completati", - "ESTIMATE_REMAINING": "Stima il rimanente:", - "FINISH_DAY": "Termina giorno", - "HELP_PROCRASTINATION": "Aiuto sto procastinando!", - "NO_COMPLETED_TASKS": "Non ci sono task completati", - "NO_PLANNED_TASKS": "Nessun task pianificato", - "READY_TO_WORK": "Pronto a lavorare!", - "RESET_BREAK_TIMER": "Reset senza interrompere il tempo", - "TIME_ESTIMATED": "Tempo stimato:", - "WITHOUT_BREAK": "Senza pausa:", - "WORKING_TODAY": "Lavorate oggi:" + "OPTIONS": "Opzioni", + "ROUND_END_TIME_TO": "Arrotonda il tempo di fine a", + "ROUND_START_TIME_TO": "Arrotonda il tempo d'inizio a", + "ROUND_TIME_WORKED_TO": "Arrotonda il tempo lavorato a", + "SAVE_TO_FILE": "Salva su file", + "SEPARATE_TASKS_BY": "Separa i task con", + "SHOW_AS_TEXT": "Mostra come testo" + }, + "WEEK": { + "EXPORT": "Esporta dati della settimana", + "NO_DATA": "Ancora nessun task questa settimana.", + "TITLE": "Titolo" + } } + }, + "FILE_IMEX": { + "EXPORT_DATA": "Esporta dati", + "IMPORT_FROM_FILE": "Importa da file", + "S_ERR_INVALID_DATA": "Importazione fallita: JSON non valido" + }, + "G": { + "CANCEL": "Annulla", + "CLICK_TO_EDIT": "clicca per modificare", + "CLOSE": "Chiudi", + "DELETE": "Cancella", + "DISMISS": "Rimuovi", + "DO_IT": "Fallo!", + "EDIT": "Modifica", + "EXTENSION_INFO": "Per favore scarica l'estensione di chrome per permettere la comunicazione con le api di Jira e la gestione del tempo inattivo. Nota che non funziona su dispositivi mobile.", + "LOGIN": "Login", + "LOGOUT": "Logout", + "MINUTES": "{{m}} minuti", + "NEXT": "Prossimo", + "OK": "Ok", + "PREVIOUS": "Precedente", + "REMOVE": "Rimuovi", + "SAVE": "Salva", + "TITLE": "Titolo", + "UNDO": "Annulla", + "UPDATE": "Aggiorna" + }, + "GCF": { + "AUTO_BACKUPS": { + "HELP": "Salva automaticamente tutti i dati sulla cartella dell'applicazione in modo da averli pronti nel caso succedesse qualcosa.", + "LABEL_IS_ENABLED": "Abilita backup automatici", + "TITLE": "Backup automatici" + }, + "GOOGLE_DRIVE_SYNC": { + "HELP": "Qui puoi configurare la tua app per sincronizzarsi automaticamente da e su un singolo file di google drive. Tutti i dati saranno salvati non criptati, quindi assicurati di non condividere accidentalmente questo file con qualcunaltro.", + "TITLE": "Sincronizza su Google Drive" + }, + "IDLE": { + "HELP": "

Quando la gestione del tempo di inattività è abilitata, un finestra si aprirà dopo un periodo specifico di tempo per controllare se e su quale task vuoi tracciare il tuo tempo, nel periodo che sei stato inattivo.

", + "IS_ENABLE_IDLE_TIME_TRACKING": "Abilita la gestione del tempo di inattività", + "IS_ONLY_OPEN_IDLE_WHEN_CURRENT_TASK": "Innesca una finestra per il tempo di inattività soltanto quando è selezionato un task corrente", + "IS_UN_TRACKED_IDLE_RESETS_BREAK_TIMER": "Il tempo di inattività non tracciato si ripristina durante un momento di pausa", + "MIN_IDLE_TIME": "Innesca inattività dopo X", + "TITLE": "Gestione inattività" + }, + "IMEX": { + "HELP": "

Qui puoi esportare tutti i tuoi dati in formato JSON per backup, ma anche per usarli in un contesto diverso (es. potresti voler esportare i tuoi progetti dal browser ed importarli nella versione desktop).

Per l'importazione deve essere copiato JSON valido nella text areaNB: Una volta premuto il pulsante di import, tutte le tue impostazioni ed i dati correnti saranno sovrascritti!

", + "TITLE": "Importa/Esporta" + }, + "KEYBOARD": { + "ADD_NEW_NOTE": "Aggiungi nuova nota", + "ADD_NEW_TASK": "Aggiungi nuovo task", + "APP_WIDE_SHORTCUTS": "Scorciatoie globali (a tutta l'applicazione)", + "COLLAPSE_SUB_TASKS": "Collassa i sotto-task", + "EXPAND_SUB_TASKS": "Espandi i sotto-task", + "FOCUS_LAST_ACTIVE_TASK": "Evidenzia l'ultimo task attivo", + "GLOBAL_ADD_NOTE": "Aggiungi nuova nota", + "GLOBAL_ADD_TASK": "Aggiungi nuovo task", + "GLOBAL_SHOW_HIDE": "Mostra/nascondi Super Productivity", + "GLOBAL_TOGGLE_TASK_START": "Abilita/disabilita il tracciamento del tempo per l'ultimo task attivo", + "GO_TO_DAILY_AGENDA": "Vai all'agenda", + "GO_TO_FOCUS_MODE": "Vai alla modalità evidenza", + "GO_TO_SETTINGS": "Vai alle impostazioni", + "GO_TO_WORK_VIEW": "Vai alla vista lavoro", + "HELP": "

Qui puoi configurare tutte le scorciatoie per la tastiera.

Clicca sull'area di testo ed inserisci la combinazione di tasti desiderata. Premi invio per salvare e Esc per annullare.

Ci sono 3 tipi di scorciatoie:

  • Scorciatoie globali:Mentre l'applicazione è attiva, innescheranno l'azione da qualsiasi altra applicazione.
  • Scorciatoie a livello di applicazione:Si innescherà da ogni pagina dell'applicazione, ma non se stai editando un campo di testo.
  • Scorciatoie a livello di task:Si innescheranno solo se hai selezionato un task tramite mouse o tastiera, e solitamente innescheranno un'azione specificatamente relativa a quel task.
", + "MOVE_TASK_DOWN": "Sposta task in basso nella lista", + "MOVE_TASK_UP": "Sposta task in alto nella lista", + "MOVE_TO_BACKLOG": "Sposta task nel backlog dei task", + "MOVE_TO_TODAYS_TASKS": "Sposta task nella lista dei task di oggi", + "OPEN_PROJECT_NOTES": "Mostra/nacondi note di progetto", + "SELECT_NEXT_TASK": "Seleziona task successivo", + "SELECT_PREVIOUS_TASK": "Seleziona task precedente", + "SYSTEM_SHORTCUTS": "Scorciatoie globali (a livello di sistema)", + "TASK_ADD_SUB_TASK": "Aggiungi sotto-task", + "TASK_DELETE": "Cancella task", + "TASK_EDIT_TITLE": "Modifica titolo", + "TASK_OPEN_ESTIMATION_DIALOG": "Modifica stima / tempo impiegato", + "TASK_SCHEDULE": "Pianifica task", + "TASK_SHORTCUTS": "Task", + "TASK_SHORTCUTS_INFO": "Le scorciatoie seguenti si applicato al task correntemente selezionato (tramite mouse o tastiera).", + "TASK_TOGGLE_ADDITIONAL_INFO_OPEN": "Mostra/nascondi informazioni aggiuntive sul task", + "TASK_TOGGLE_DONE": "Segna come completato/non completato", + "TITLE": "Scorciatoie da tastiera", + "TOGGLE_BACKLOG": "Mostra/nascondi backlog dei task", + "TOGGLE_BOOKMARKS": "Mostra/nascondi barra dei segnalibri", + "TOGGLE_PLAY": "Inizia/Interrompi task", + "ZOOM_DEFAULT": "Zoom default (solo Desktop)", + "ZOOM_IN": "Zoom in (solo Desktop)", + "ZOOM_OUT": "Zoom out (solo Desktop)" + }, + "LANG": { + "AR": "Arabo", + "DE": "Tedesco", + "EN": "Inglese", + "ES": "Spagnolo", + "FR": "Francese", + "JA": "Giapponese", + "KO": "Coreano", + "LABEL": "Seleziona la lingua", + "RU": "Russo", + "TITLE": "Lingua", + "TR": "Turco", + "ZH": "Cinese" + }, + "MISC": { + "HELP": "

Non vedi le notifiche desktop?Per Windows controlla Sistema > Notifiche & azioni e controlla se le notifiche richieste sono abilitate.

", + "IS_AUTO_MARK_PARENT_AS_DONE": "Segna il task padre come completato, quando tutti i sotto-task sono completati", + "IS_CONFIRM_BEFORE_EXIT": "Conferma prima di uscire dall'applicazione", + "IS_DARK_MODE": "Tema scuro", + "IS_DISABLE_REMIND_WHEN_FORGOT_TO_FINISH_DAY": "Disabilita promemoria per giorno non terminato", + "IS_HIDE_EVALUATION_SHEET": "Nascondi il foglio di valutazione sul riepilogo giornagliero", + "IS_HIDE_NAV": "Nascondi la navigazione mentre il cursore è sull'header principale (solo Desktop)", + "IS_NOTIFY_WHEN_TIME_ESTIMATE_EXCEEDED": "Notificami quando il tempo stimato viene superato", + "TITLE": "Impostazioni varie" + }, + "POMODORO": { + "BREAK_DURATION": "Durata delle pause brevi", + "CYCLES_BEFORE_LONGER_BREAK": "Inizia pause più lunghe dopo X sessioni di lavoro", + "DURATION": "Durata delle sessioni di lavoro", + "HELP": "

Il timer pomodoro può essere configurato tramite qualche impostazione. La durata di ogni sessione di lavoro, la durata delle pause normali, il numero di sessioni di lavoro che devono trascorrere prima che inizi una pausa più lunga e la durata di questa pausa più lunga.

Puoi anche decidere se mostrare le tue distrazioni durante le pause pomodoro.

Impostare \"Pausa il tracciamento del tempo nelle pause pomodoro\" traccerà anche le tue pause come lavoro impiegato per un task.

Enabling \"Metti in pausa la sessione pomodoro quando non c'è un task attivo\" metterà in pausa anche la sessione pomodoro, quando metti in pausa un task.

", + "IS_ENABLED": "Abilita timer pomodoro", + "IS_MANUAL_CONTINUE": "Conferma manualmente l'inizio della prossima sessione pomodoro", + "IS_PLAY_SOUND": "Emetti un suono quando la sessione è terminata", + "IS_PLAY_SOUND_AFTER_BREAK": "Emetti un suono quando la pausa è terminata", + "IS_PLAY_TICK": "Emetti un suono d'orologio ogni secondo", + "IS_STOP_TRACKING_ON_BREAK": "Interrompi il tracciamento del tempo di un task durante una pausa", + "LONGER_BREAK_DURATION": "Durata delle pause più lunghe", + "TITLE": "Impostazioni del pomodoro" + }, + "TAKE_A_BREAK": { + "HELP": "

Ti permette di configurare un promemoria ricorrente quando hai lavorato per uno specifica quantità di tempo senza prenderti una pausa.

Puoi modificare il messaggio mostrato. ${duration} sarà rimpiazzata con il tempo speso senza una pausa.

", + "IS_ENABLED": "Abilita il promemoria di fare una pausa", + "IS_FOCUS_WINDOW": "Porta in evidenza la finestra dell'app quando il promemoria è attivo(solo Desktop)", + "IS_LOCK_SCREEN": "Blocca lo schermo quando è l'ora di una pausa (solo Desktop)", + "MESSAGE": "Messaggio per prenderti una pausa", + "MIN_WORKING_TIME": "Innesca la notifica di prendersi una pausa dopo X tempo lavorato senza fare pausa", + "TITLE": "Promemoria pausa" + } + }, + "GLOBAL_SNACK": { + "COPY_TO_CLIPPBOARD": "Copiato negli appunti", + "ERR_COMPRESSION": "Errore per l'interfaccia di compressione", + "ERR_DB_CLEAR": "Errore durante la pulizia del database", + "ERR_DB_DELETE": "Errore durante la cancellazione dei dati", + "ERR_DB_LOAD": "Errore durante il caricamento dei dati", + "ERR_DB_SAVE": "Errore durante il salvataggio dei dati", + "PERSISTENCE_DISALLOWED": "I dati non saranno salvati permanentemente. Fai attenzione che questo può portare a perdita dei dati!!", + "RUNNING_X": "Eseguendo \"{{str}}\"." + }, + "MH": { + "ADD_NEW_TASK": "Aggiungi nuovo task", + "CREATE_PROJECT": "Crea progetto", + "GO_TO_TASK_LIST": "Vai alla lista dei task", + "MANAGE_PROJECTS": "Gestisci progetti", + "METRICS": "Metriche", + "PROCRASTINATE": "Procastina", + "PROJECTS": "Progetti", + "PROJECT_MENU": "Menu di progetto", + "PROJECT_SETTINGS": "Impostazioni di progetto", + "SCHEDULED": "Pianificati", + "SETTINGS": "Impostazioni", + "TASKS": "Task", + "TASK_LIST": "Lista dei task", + "TOGGLE_SHOW_BOOKMARKS": "Mostra/nascondi segnalibri", + "TOGGLE_SHOW_NOTES": "Mostra/nascondi note di progetto", + "TOGGLE_TRACK_TIME": "Inizia/smetti di tracciare il tempo", + "WORKLOG": "Worklog" + }, + "PDS": { + "BACK": "Apetta ho dimenticato qualcosa!", + "BREAK_LABEL": "Pause (numero / tempo)", + "CELEBRATE": "Prenditi un attimo per celebrare!", + "CLEAR_ALL_CONTINUE": "Cancella tutti i task fatti e continua", + "D_CONFIRM_APP_CLOSE": { + "CANCEL": "No, cancella solo i task", + "MSG": "Il lavoro è compiuto. Ora di andare a casa!", + "OK": "Agli ordini! Spegnimento!" + }, + "EVALUATION": "Valutazione", + "EXPORT_TASK_LIST": "Esporta lista dei task", + "NO_TASKS": "Non ci sono task in questa giornata", + "PLAN": "Pianifica", + "ROUND_15M": "Arrotonda tutti i task a 15 minuti", + "ROUND_30M": "Arrotonda tutti i task a 30 minuti", + "ROUND_5M": "Arrotonda tutti i task a 5 minuti", + "ROUND_TIME_SPENT": "Arrotonda il tempo impiegato", + "ROUND_TIME_SPENT_TITLE": "Arrotonda il tempo impiegato su tutti i task. Attenzione! Non puoi annullare questa azione!", + "ROUND_TIME_WARNING": "!!! Attenzione questa azione non può essere annullata !!!", + "ROUND_UP_15M": "Arrotonda tutti i task a 15 minuti", + "ROUND_UP_30M": "Arrotonda tutti i task a 30 minuti", + "ROUND_UP_5M": "Arrotonda tutti i task a 5 minuti", + "SAVE_AND_GO_HOME": "Salva e vai a casa", + "START_END": "Inizio – File", + "SUMMARY_FOR": "Riepilogo giornaliero per {{dayStr}}", + "TASKS_COMPLETED": "Task completati", + "TASK_LIST": "Lista dei task", + "TIME_SPENT_AND_ESTIMATE_LABEL": "Tempo impiegato / stimato", + "TIME_SPENT_ESTIMATE_TITLE": "Time Spent: Total time spent today. Archived tasks not included. – Time Estimated: Time estimated for tasks worked on today minus the time already spent with them on other days.", + "TODAY": "Oggi", + "WEEK": "Settimana" + }, + "PM": { + "TITLE": "Metriche di progetto" + }, + "PP": { + "ARCHIVED_PROJECTS": "Progetti archiviati", + "ARCHIVE_PROJECT": "Archivia progetto", + "CREATE_NEW": "Crea nuovo", + "DELETE_PROJECT": "Elimina progetto", + "D_CONFIRM_ARCHIVE": { + "MSG": "Sei sicuro di voler archiviare questo progetto? I progetti archiviati non saranno più mostrati nel menu e non potrai accederne ai dati senza prima riabilitarli. E' consigliato fare un backup dei dati prima di eseguire questa operazione.", + "OK": "Archivia" + }, + "D_CONFIRM_DELETE": { + "MSG": "Sei sicuro di voler eliminare questo progetto? E' consigliato fare un backup dei dati prima di eseguire questa operazione.", + "OK": "Elimina" + }, + "D_CONFIRM_UNARCHIVE": { + "MSG": "Sei sicuro che vuoi estrarre il progetto?", + "OK": "Estrai" + }, + "EDIT_PROJECT": "Modifica progetto", + "EXPORT_PROJECT": "Esporta progetto", + "GITHUB_CONFIGURED": "Integrazione Github configurata", + "IMPORT_FROM_FILE": "Importa da file", + "JIRA_CONFIGURED": "Integrazione Jira configurata", + "S_INVALID_JSON": "JSON non valido per file di progetto", + "TITLE": "Panoramica progetto", + "UN_ARCHIVE_PROJECT": "Estrai progetto" + }, + "PS": { + "GLOBAL_SETTINGS": "Impostazioni globali", + "PROJECT_SETTINGS": "Impostazioni specifiche al progetto", + "TOGGLE_DARK_MODE": "Abilita/disabilita tema scuro" + }, + "S": { + "SYNC": { + "ERROR_FALLBACK_TO_BACKUP": "Qualcosa è andato storto durante l'importazione dei dati. Ritorno all'ultimo backup.", + "ERROR_INVALID_DATA": "Errore durante la sincronizzazione. Dati non validi", + "IMPORTING": "Importando i dati", + "SUCCESS": "Dati importati" + } + }, + "SCHEDULE": { + "NO_SCHEDULED": "Non ci sono task pianificati al momento. Puoi pianificare un task scegliendo \"Pianifica task\" nel menu di contesto. Per aprirlo clicca i tre puntini sulla destra dei task.", + "START_TASK": "Inizia il task ora e rimuovi promemoria" + }, + "THEMES": { + "SELECT_THEME": "Seleziona tema", + "amber": "ambra", + "blue": "blu", + "blue-grey": "blu-grigio", + "cyan": "ciano", + "deep-orange": "arancio-intenso", + "deep-purple": "viola-intenso", + "green": "verde", + "indigo": "indaco", + "light-blue": "azzurro", + "light-green": "verde-chiaro", + "lime": "lime", + "pink": "rosa", + "purple": "viola", + "teal": "verde acqua", + "yellow": "giallo" + }, + "V": { + "E_1TO10": "Per favore inserisci un valore da 1 a 10", + "E_DATETIME": "Il valore inserito non è una data ed ora!", + "E_MAX": "Non deve essere maggiore di {{val}}", + "E_MAX_LENGTH": "Deve essere al massimo lungo {{val}} caratteri", + "E_MIN": "Deve essere minore di {{val}}", + "E_MIN_LENGTH": "Deve essere almeno lungo {{val}} caratteri", + "E_PATTERN": "Input non valido", + "E_REQUIRED": "Questo campo è obbligatorio" + }, + "WW": { + "ADD_MORE": "Aggiungi altro", + "ADD_SOME_TASKS": "Aggiungi qualche task per pianificare la tua giornata!", + "COMPLETED_TASKS": "Task completati", + "ESTIMATE_REMAINING": "Stima il rimanente:", + "FINISH_DAY": "Termina giorno", + "HELP_PROCRASTINATION": "Aiuto sto procastinando!", + "NO_COMPLETED_TASKS": "Non ci sono task completati", + "NO_PLANNED_TASKS": "Nessun task pianificato", + "READY_TO_WORK": "Pronto a lavorare!", + "RESET_BREAK_TIMER": "Reset senza interrompere il tempo", + "TIME_ESTIMATED": "Tempo stimato:", + "WITHOUT_BREAK": "Senza pausa:", + "WORKING_TODAY": "Lavorate oggi:" + } } diff --git a/src/assets/icons/browserconfig.xml b/src/assets/icons/browserconfig.xml index f9c2e67fe6..29c6ff5812 100644 --- a/src/assets/icons/browserconfig.xml +++ b/src/assets/icons/browserconfig.xml @@ -1,9 +1,9 @@ - - - - #2b5797 - - + + + + #2b5797 + + diff --git a/src/assets/icons/drag-handle.svg b/src/assets/icons/drag-handle.svg index 2f2b5e1255..4de0557729 100644 --- a/src/assets/icons/drag-handle.svg +++ b/src/assets/icons/drag-handle.svg @@ -1,9 +1,30 @@ - - - - - - - + + + + + + + diff --git a/src/assets/icons/github.svg b/src/assets/icons/github.svg index a906d5eb1d..b16122938f 100644 --- a/src/assets/icons/github.svg +++ b/src/assets/icons/github.svg @@ -1,5 +1,11 @@ - - + + fill="currentColor" + fill-rule="evenodd" + transform="scale(64)" /> diff --git a/src/assets/icons/jira.svg b/src/assets/icons/jira.svg index 3177af5f50..7df6af0051 100644 --- a/src/assets/icons/jira.svg +++ b/src/assets/icons/jira.svg @@ -1,20 +1,27 @@ - - - + + + + fill="currentColor" + id="path25" /> + fill="currentColor" + id="path31" /> @@ -22,22 +29,26 @@ + fill="currentColor" + id="path37" /> + fill="currentColor" + id="path41" /> + fill="currentColor" + id="path45" /> + fill="currentColor" + id="path47" /> diff --git a/src/assets/icons/play.svg b/src/assets/icons/play.svg index 566784e9c7..ad61642361 100644 --- a/src/assets/icons/play.svg +++ b/src/assets/icons/play.svg @@ -1,8 +1,11 @@ - - + viewBox="0 0 24 24" + xmlns="http://www.w3.org/2000/svg"> + diff --git a/src/assets/icons/safari-pinned-tab.svg b/src/assets/icons/safari-pinned-tab.svg index cc22f8e551..f05b3cc7a5 100644 --- a/src/assets/icons/safari-pinned-tab.svg +++ b/src/assets/icons/safari-pinned-tab.svg @@ -1,21 +1,25 @@ - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - + + + Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + - +330 -172 19 -666 27 -835 15z" /> + diff --git a/src/assets/icons/sp.svg b/src/assets/icons/sp.svg index 2c17dd8ba5..e7eb2d2b5a 100644 --- a/src/assets/icons/sp.svg +++ b/src/assets/icons/sp.svg @@ -1,7 +1,7 @@ - + - + diff --git a/src/index.html b/src/index.html index 944d2b13fd..0734582f29 100644 --- a/src/index.html +++ b/src/index.html @@ -9,29 +9,29 @@ - - - + + @@ -39,10 +39,10 @@ name="theme-color"> - - + +