refactor: add singleAttributePerLine rule for prettier (finally!)
This commit is contained in:
parent
bbde3f9a28
commit
9ac68ff394
|
@ -6,6 +6,7 @@
|
|||
"quoteProps": "as-needed",
|
||||
"trailingComma": "all",
|
||||
"bracketSpacing": true,
|
||||
"singleAttributePerLine": true,
|
||||
"arrowParens": "always",
|
||||
"endOfLine": "auto",
|
||||
"printWidth": 90,
|
||||
|
|
|
@ -8187,9 +8187,9 @@
|
|||
}
|
||||
},
|
||||
"eslint-config-prettier": {
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
|
||||
"integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
|
||||
"integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"eslint-import-resolver-node": {
|
||||
|
@ -16251,9 +16251,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"prettier": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz",
|
||||
"integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==",
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz",
|
||||
"integrity": "sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==",
|
||||
"dev": true
|
||||
},
|
||||
"prettier-linter-helpers": {
|
||||
|
|
|
@ -177,7 +177,7 @@
|
|||
"electron-builder-notarize": "^1.2.0",
|
||||
"electron-notarize": "^1.0.0",
|
||||
"eslint": "^8.10.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-import": "^2.25.3",
|
||||
"eslint-plugin-jsdoc": "37.1.0",
|
||||
"eslint-plugin-prefer-arrow": "1.2.3",
|
||||
|
@ -214,7 +214,7 @@
|
|||
"nightwatch": "^1.7.11",
|
||||
"object-path": "^0.11.8",
|
||||
"p-throttle": "^3.1.0",
|
||||
"prettier": "^2.4.1",
|
||||
"prettier": "^2.6.0",
|
||||
"pretty-quick": "^3.1.3",
|
||||
"query-string": "^7.0.0",
|
||||
"rxjs": "^6.6.7",
|
||||
|
|
|
@ -12,12 +12,20 @@
|
|||
[isElevated]="true"
|
||||
class="global"
|
||||
></add-task-bar>
|
||||
<div *ngIf="(layoutService.isShowAddTaskBar$|async)" @fade class="backdrop"></div>
|
||||
<div
|
||||
*ngIf="(layoutService.isShowAddTaskBar$|async)"
|
||||
@fade
|
||||
class="backdrop"
|
||||
></div>
|
||||
<search-bar
|
||||
(blurred)="layoutService.hideSearchBar()"
|
||||
*ngIf="layoutService.isShowSearchBar$|async"
|
||||
></search-bar>
|
||||
<div *ngIf="(layoutService.isShowSearchBar$|async)" @fade class="backdrop"></div>
|
||||
<div
|
||||
*ngIf="(layoutService.isShowSearchBar$|async)"
|
||||
@fade
|
||||
class="backdrop"
|
||||
></div>
|
||||
<mat-sidenav-container [dir]="isRTL ? 'rtl' : 'ltr'">
|
||||
<mat-sidenav
|
||||
(closedStart)="layoutService.hideSideNav()"
|
||||
|
@ -42,7 +50,11 @@
|
|||
<banner></banner>
|
||||
</header>
|
||||
|
||||
<div #routeWrapper [@warpRoute]="getPage(o)" class="route-wrapper">
|
||||
<div
|
||||
#routeWrapper
|
||||
[@warpRoute]="getPage(o)"
|
||||
class="route-wrapper"
|
||||
>
|
||||
<router-outlet #o="outlet"></router-outlet>
|
||||
</div>
|
||||
<global-progress-bar></global-progress-bar>
|
||||
|
@ -67,7 +79,10 @@
|
|||
<div class="double-bounce2"></div>
|
||||
</div>
|
||||
|
||||
<svg class="logo" viewBox="0 0 64 64">
|
||||
<svg
|
||||
class="logo"
|
||||
viewBox="0 0 64 64"
|
||||
>
|
||||
<path
|
||||
d="M 0.65537046,34.582787 32.452267,63.855301 63.791548,0.94356422 30.222644,47.722023 Z"
|
||||
id="path3395"
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
<div *ngIf="(globalProgressBarService.label$|async) as label" [@fadeOut] class="badge">
|
||||
<div
|
||||
*ngIf="(globalProgressBarService.label$|async) as label"
|
||||
[@fadeOut]
|
||||
class="badge"
|
||||
>
|
||||
{{label|translate}}
|
||||
</div>
|
||||
|
||||
<div *ngIf="(globalProgressBarService.isShowGlobalProgressBar$|async)" [@fadeInOutBottom]>
|
||||
<div
|
||||
*ngIf="(globalProgressBarService.isShowGlobalProgressBar$|async)"
|
||||
[@fadeInOutBottom]
|
||||
>
|
||||
<mat-progress-bar mode="indeterminate"></mat-progress-bar>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -129,7 +129,12 @@
|
|||
<mat-icon *ngIf="(taskService.currentTaskId$|async)">pause</mat-icon>
|
||||
</ng-container>
|
||||
|
||||
<svg class="circle-svg" focusable="false" height="40" width="40">
|
||||
<svg
|
||||
class="circle-svg"
|
||||
focusable="false"
|
||||
height="40"
|
||||
width="40"
|
||||
>
|
||||
<circle
|
||||
#circleSvg
|
||||
cx="50%"
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
[class.isActiveContext]="mainContext.id===activeWorkContextId"
|
||||
class="tag"
|
||||
>
|
||||
<div [style.background]="mainContext.theme.primary" class="tag-color"></div>
|
||||
<div
|
||||
[style.background]="mainContext.theme.primary"
|
||||
class="tag-color"
|
||||
></div>
|
||||
<button
|
||||
#menuEntry
|
||||
[routerLink]="['tag', mainContext.id, 'tasks']"
|
||||
|
@ -59,7 +62,10 @@
|
|||
</button>
|
||||
</section>
|
||||
|
||||
<section *ngIf="projectList$|async as projectList" class="projects">
|
||||
<section
|
||||
*ngIf="projectList$|async as projectList"
|
||||
class="projects"
|
||||
>
|
||||
<button
|
||||
#menuEntry
|
||||
#projectExpandBtn
|
||||
|
@ -90,11 +96,19 @@
|
|||
[ngStyle]="getThemeColor(project.theme?.primary || project.themeColor)"
|
||||
class="project-color"
|
||||
></div>
|
||||
<button #menuEntry [routerLink]="['project', project.id, 'tasks']" mat-menu-item>
|
||||
<button
|
||||
#menuEntry
|
||||
[routerLink]="['project', project.id, 'tasks']"
|
||||
mat-menu-item
|
||||
>
|
||||
<span class="badge"
|
||||
>{{project.taskIds.length}}/{{project.backlogTaskIds.length}}</span
|
||||
>
|
||||
<mat-icon class="drag-handle" drag-handle>list</mat-icon>
|
||||
<mat-icon
|
||||
class="drag-handle"
|
||||
drag-handle
|
||||
>list</mat-icon
|
||||
>
|
||||
<span class="text">{{project.title}}</span>
|
||||
</button>
|
||||
|
||||
|
@ -129,13 +143,21 @@
|
|||
<span class="text">{{T.MH.MANAGE_PROJECTS|translate}}</span>
|
||||
</button>
|
||||
|
||||
<button #menuEntry (click)="addProject()" *ngIf="isProjectsExpanded" mat-menu-item>
|
||||
<button
|
||||
#menuEntry
|
||||
(click)="addProject()"
|
||||
*ngIf="isProjectsExpanded"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
<span class="text">{{T.MH.CREATE_PROJECT|translate}}</span>
|
||||
</button>
|
||||
</section>
|
||||
|
||||
<section *ngIf="(tagList$|async) as tagList" class="tags">
|
||||
<section
|
||||
*ngIf="(tagList$|async) as tagList"
|
||||
class="tags"
|
||||
>
|
||||
<button
|
||||
#menuEntry
|
||||
#tagExpandBtn
|
||||
|
@ -161,10 +183,21 @@
|
|||
[class.isActiveContext]="tag.id===activeWorkContextId"
|
||||
class="tag"
|
||||
>
|
||||
<div [style.background]="tag?.theme.primary" class="tag-color"></div>
|
||||
<button #menuEntry [routerLink]="['tag', tag.id, 'tasks']" mat-menu-item>
|
||||
<div
|
||||
[style.background]="tag?.theme.primary"
|
||||
class="tag-color"
|
||||
></div>
|
||||
<button
|
||||
#menuEntry
|
||||
[routerLink]="['tag', tag.id, 'tasks']"
|
||||
mat-menu-item
|
||||
>
|
||||
<span class="badge">{{tag.taskIds.length}}</span>
|
||||
<mat-icon class="drag-handle" drag-handle>style</mat-icon>
|
||||
<mat-icon
|
||||
class="drag-handle"
|
||||
drag-handle
|
||||
>style</mat-icon
|
||||
>
|
||||
<span class="text">{{tag.title}}</span>
|
||||
</button>
|
||||
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
<button [routerLink]="[base,contextId,'quick-history']" mat-menu-item>
|
||||
<button
|
||||
[routerLink]="[base,contextId,'quick-history']"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>history</mat-icon>
|
||||
<span class="text">{{T.MH.QUICK_HISTORY|translate}}</span>
|
||||
</button>
|
||||
|
||||
<button [routerLink]="[base,contextId,'worklog']" mat-menu-item>
|
||||
<button
|
||||
[routerLink]="[base,contextId,'worklog']"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>date_range</mat-icon>
|
||||
<span class="text">{{T.MH.WORKLOG|translate}}</span>
|
||||
</button>
|
||||
|
@ -17,7 +23,10 @@
|
|||
<span class="text">{{T.MH.METRICS|translate}}</span>
|
||||
</button>
|
||||
|
||||
<button [routerLink]="[base,contextId,'settings']" mat-menu-item>
|
||||
<button
|
||||
[routerLink]="[base,contextId,'settings']"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>settings</mat-icon>
|
||||
<span class="text">{{T.MH.SETTINGS|translate}}</span>
|
||||
</button>
|
||||
|
|
|
@ -5,13 +5,19 @@
|
|||
class="content-wrapper"
|
||||
>
|
||||
<div class="inner-content-wrapper">
|
||||
<div *ngIf="banner.img" class="motivational-img-wrapper">
|
||||
<div
|
||||
*ngIf="banner.img"
|
||||
class="motivational-img-wrapper"
|
||||
>
|
||||
<img [src]="banner.img" />
|
||||
</div>
|
||||
|
||||
<div class="message-wrapper">
|
||||
<mat-icon *ngIf="banner.ico">{{banner.ico}}</mat-icon>
|
||||
<mat-icon *ngIf="banner.svgIco" [svgIcon]="banner.svgIco"></mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="banner.svgIco"
|
||||
[svgIcon]="banner.svgIco"
|
||||
></mat-icon>
|
||||
|
||||
<div
|
||||
[innerHTML]="banner.msg|translate:banner.translateParams"
|
||||
|
|
|
@ -5,13 +5,32 @@
|
|||
class="wrapper"
|
||||
>
|
||||
<ng-container *ngIf="!data.ico">
|
||||
<mat-icon *ngIf="data.type==='SUCCESS'" class="snack-icon">check_circle </mat-icon>
|
||||
<mat-icon *ngIf="data.type==='ERROR'" class="snack-icon">error </mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="data.type==='SUCCESS'"
|
||||
class="snack-icon"
|
||||
>check_circle
|
||||
</mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="data.type==='ERROR'"
|
||||
class="snack-icon"
|
||||
>error
|
||||
</mat-icon>
|
||||
</ng-container>
|
||||
<mat-icon *ngIf="data.ico" class="snack-icon">{{data.ico}}</mat-icon>
|
||||
<mat-icon *ngIf="data.svgIco" [svgIcon]="data.svgIco" class="snack-icon"></mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="data.ico"
|
||||
class="snack-icon"
|
||||
>{{data.ico}}</mat-icon
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="data.svgIco"
|
||||
[svgIcon]="data.svgIco"
|
||||
class="snack-icon"
|
||||
></mat-icon>
|
||||
|
||||
<span [innerHtml]="data.msg" class="message"></span>
|
||||
<span
|
||||
[innerHtml]="data.msg"
|
||||
class="message"
|
||||
></span>
|
||||
|
||||
<div class="button-wrapper">
|
||||
<button
|
||||
|
@ -25,7 +44,11 @@
|
|||
</button>
|
||||
</div>
|
||||
|
||||
<button *ngIf="!data.actionStr" class="close-btn" mat-icon-button>
|
||||
<button
|
||||
*ngIf="!data.actionStr"
|
||||
class="close-btn"
|
||||
mat-icon-button
|
||||
>
|
||||
<mat-icon>close</mat-icon>
|
||||
</button>
|
||||
|
||||
|
|
|
@ -4,7 +4,11 @@
|
|||
[@slide]="{value:'*',params:{elHeight:(bookmarkBarHeight)}}"
|
||||
class="global-bookmark-list-outer"
|
||||
>
|
||||
<div *ngIf="isDragOver" @fade class="bgc-accent drag-over-msg">
|
||||
<div
|
||||
*ngIf="isDragOver"
|
||||
@fade
|
||||
class="bgc-accent drag-over-msg"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.BOOKMARK.BAR.DROP|translate}}
|
||||
</div>
|
||||
|
@ -31,11 +35,19 @@
|
|||
|
||||
<mat-menu #menu="matMenu">
|
||||
<ng-template matMenuContent>
|
||||
<button (click)="openEditDialog()" color="" mat-menu-item>
|
||||
<button
|
||||
(click)="openEditDialog()"
|
||||
color=""
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.BOOKMARK.BAR.ADD|translate}}
|
||||
</button>
|
||||
<button (click)="isEditMode=!isEditMode" color="" mat-menu-item>
|
||||
<button
|
||||
(click)="isEditMode=!isEditMode"
|
||||
color=""
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>edit</mat-icon>
|
||||
{{T.F.BOOKMARK.BAR.EDIT|translate}}
|
||||
</button>
|
||||
|
@ -49,7 +61,10 @@
|
|||
[dragula]="LIST_ID"
|
||||
class="global-bookmark-list-inner"
|
||||
>
|
||||
<div *ngIf="!(bookmarkService.bookmarks$|async)?.length" class="msg">
|
||||
<div
|
||||
*ngIf="!(bookmarkService.bookmarks$|async)?.length"
|
||||
class="msg"
|
||||
>
|
||||
{{T.F.BOOKMARK.BAR.NO_BOOKMARKS|translate}}
|
||||
</div>
|
||||
|
||||
|
@ -75,7 +90,10 @@
|
|||
{{bookmark.title}}
|
||||
</a>
|
||||
|
||||
<div *ngIf="isEditMode" class="controls">
|
||||
<div
|
||||
*ngIf="isEditMode"
|
||||
class="controls"
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="isEditMode"
|
||||
@fade
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
<form #form="ngForm" (submit)="submit()" *ngIf="bookmarkCopy">
|
||||
<form
|
||||
#form="ngForm"
|
||||
(submit)="submit()"
|
||||
*ngIf="bookmarkCopy"
|
||||
>
|
||||
<h1 mat-dialog-title>
|
||||
{{ (bookmarkCopy.id ? (T.F.BOOKMARK.DIALOG_EDIT.EDIT_BOOKMARK) :
|
||||
(T.F.BOOKMARK.DIALOG_EDIT.ADD_BOOKMARK)) |translate }}
|
||||
|
@ -54,7 +58,10 @@
|
|||
type="text"
|
||||
/>
|
||||
<mat-icon matPrefix="">{{bookmarkCopy.icon}}</mat-icon>
|
||||
<mat-autocomplete #auto="matAutocomplete" [autoActiveFirstOption]="true">
|
||||
<mat-autocomplete
|
||||
#auto="matAutocomplete"
|
||||
[autoActiveFirstOption]="true"
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let icon of (filteredIcons$|async); trackBy: trackByIndex"
|
||||
[value]="icon"
|
||||
|
@ -69,11 +76,21 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
<button [disabled]="!form.valid" color="primary" mat-stroked-button type="submit">
|
||||
<button
|
||||
[disabled]="!form.valid"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="submit"
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.G.SAVE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<form (ngSubmit)="submit()" [formGroup]="form">
|
||||
<form
|
||||
(ngSubmit)="submit()"
|
||||
[formGroup]="form"
|
||||
>
|
||||
<formly-form
|
||||
(modelChange)="config=$event"
|
||||
[fields]="fields"
|
||||
|
|
|
@ -6,14 +6,34 @@
|
|||
<!--[icon]="section?.icon"-->
|
||||
|
||||
<help-section *ngIf="section?.help||section?.helpArr">
|
||||
<div *ngIf="section?.help" [innerHtml]="section?.help|translate"></div>
|
||||
<div
|
||||
*ngIf="section?.help"
|
||||
[innerHtml]="section?.help|translate"
|
||||
></div>
|
||||
<ng-container *ngIf="section?.helpArr">
|
||||
<ng-container *ngFor="let helpSection of section?.helpArr; trackBy: trackByIndex">
|
||||
<div *ngIf="helpSection.h" class="mat-caption">{{helpSection.h|translate}}</div>
|
||||
<p *ngIf="helpSection.p" [innerHTML]="helpSection.p|translate"></p>
|
||||
<p *ngIf="helpSection.p2" [innerHTML]="helpSection.p2|translate"></p>
|
||||
<p *ngIf="helpSection.p3" [innerHTML]="helpSection.p3|translate"></p>
|
||||
<p *ngIf="helpSection.p4" [innerHTML]="helpSection.p4|translate"></p>
|
||||
<div
|
||||
*ngIf="helpSection.h"
|
||||
class="mat-caption"
|
||||
>
|
||||
{{helpSection.h|translate}}
|
||||
</div>
|
||||
<p
|
||||
*ngIf="helpSection.p"
|
||||
[innerHTML]="helpSection.p|translate"
|
||||
></p>
|
||||
<p
|
||||
*ngIf="helpSection.p2"
|
||||
[innerHTML]="helpSection.p2|translate"
|
||||
></p>
|
||||
<p
|
||||
*ngIf="helpSection.p3"
|
||||
[innerHTML]="helpSection.p3|translate"
|
||||
></p>
|
||||
<p
|
||||
*ngIf="helpSection.p4"
|
||||
[innerHTML]="helpSection.p4|translate"
|
||||
></p>
|
||||
</ng-container>
|
||||
</ng-container>
|
||||
</help-section>
|
||||
|
@ -26,6 +46,9 @@
|
|||
[sectionKey]="section?.key"
|
||||
></config-form>
|
||||
|
||||
<ng-template #customForm class="custom-form"></ng-template>
|
||||
<ng-template
|
||||
#customForm
|
||||
class="custom-form"
|
||||
></ng-template>
|
||||
</div>
|
||||
</collapsible>
|
||||
|
|
|
@ -9,7 +9,10 @@
|
|||
type="text"
|
||||
/>
|
||||
|
||||
<mat-autocomplete #auto="matAutocomplete" [autoActiveFirstOption]="false">
|
||||
<mat-autocomplete
|
||||
#auto="matAutocomplete"
|
||||
[autoActiveFirstOption]="false"
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let icon of (filteredIcons$|async); trackBy: trackByIndex"
|
||||
[value]="icon"
|
||||
|
|
|
@ -1,18 +1,33 @@
|
|||
<div [@standardList]="field.fieldGroup?.length" class="list-wrapper">
|
||||
<div
|
||||
[@standardList]="field.fieldGroup?.length"
|
||||
class="list-wrapper"
|
||||
>
|
||||
<div
|
||||
*ngFor="let innerField of field.fieldGroup; let i = index; trackBy: trackByFn;"
|
||||
class="row"
|
||||
>
|
||||
<formly-field [field]="innerField" class="field"></formly-field>
|
||||
<formly-field
|
||||
[field]="innerField"
|
||||
class="field"
|
||||
></formly-field>
|
||||
|
||||
<button (click)="removeItem(i)" color="warn" mat-mini-fab type="button">
|
||||
<button
|
||||
(click)="removeItem(i)"
|
||||
color="warn"
|
||||
mat-mini-fab
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>delete_forever</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<button (click)="addItem()" mat-button type="button">
|
||||
<button
|
||||
(click)="addItem()"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{ to.addText | translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
<div class="dialog-content" mat-dialog-content>
|
||||
<div
|
||||
class="dialog-content"
|
||||
mat-dialog-content
|
||||
>
|
||||
<p>{{T.F.TIME_TRACKING.D_IDLE.IDLE_FOR|translate}}</p>
|
||||
<div class="time">{{idleTime$|async|msToString:true}}</div>
|
||||
|
||||
<div class="track-to-items">
|
||||
<div class="track-to-item" *ngFor="let item of trackItems">
|
||||
<div
|
||||
class="track-to-item"
|
||||
*ngFor="let item of trackItems"
|
||||
>
|
||||
<div class="first-block">
|
||||
<mat-button-toggle-group [(ngModel)]="item.type">
|
||||
<mat-button-toggle value="BREAK">
|
||||
|
@ -60,7 +66,10 @@
|
|||
</div>
|
||||
|
||||
<div style="text-align: center; margin-top: 8px">
|
||||
<button mat-button (click)="addTrackItem()">
|
||||
<button
|
||||
mat-button
|
||||
(click)="addTrackItem()"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.TIME_TRACKING.D_IDLE.ADD_ENTRY|translate}}
|
||||
</button>
|
||||
|
@ -68,12 +77,25 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div align="end" mat-dialog-actions>
|
||||
<button (click)="cancel()" color="primary" mat-button type="button">
|
||||
<div
|
||||
align="end"
|
||||
mat-dialog-actions
|
||||
>
|
||||
<button
|
||||
(click)="cancel()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="save()" color="primary" mat-stroked-button type="submit">
|
||||
<button
|
||||
(click)="save()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="submit"
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.G.SAVE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,9 +1,18 @@
|
|||
<form (submit)="track()" *ngIf="isTaskDataLoadedIfNeeded">
|
||||
<div class="dialog-content" mat-dialog-content>
|
||||
<form
|
||||
(submit)="track()"
|
||||
*ngIf="isTaskDataLoadedIfNeeded"
|
||||
>
|
||||
<div
|
||||
class="dialog-content"
|
||||
mat-dialog-content
|
||||
>
|
||||
<p>{{T.F.TIME_TRACKING.D_IDLE.IDLE_FOR|translate}}</p>
|
||||
<div class="time">{{idleTime$|async|msToString:true}}</div>
|
||||
|
||||
<div class="split-btn" style="text-align: center">
|
||||
<div
|
||||
class="split-btn"
|
||||
style="text-align: center"
|
||||
>
|
||||
<button
|
||||
mat-icon-button
|
||||
[matTooltip]="T.F.TIME_TRACKING.D_IDLE.SPLIT_TIME|translate"
|
||||
|
@ -42,13 +51,26 @@
|
|||
</section>
|
||||
</div>
|
||||
|
||||
<div align="center" mat-dialog-actions>
|
||||
<button (click)="skipTrack()" color="" mat-button type="button">
|
||||
<div
|
||||
align="center"
|
||||
mat-dialog-actions
|
||||
>
|
||||
<button
|
||||
(click)="skipTrack()"
|
||||
color=""
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>skip_next</mat-icon>
|
||||
{{T.F.TIME_TRACKING.D_IDLE.SKIP|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="trackAsBreak()" color="primary" mat-stroked-button type="button">
|
||||
<button
|
||||
(click)="trackAsBreak()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>free_breakfast</mat-icon>
|
||||
{{T.F.TIME_TRACKING.D_IDLE.BREAK|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,17 +1,29 @@
|
|||
<ng-container *ngIf="task?.issueType===JIRA_TYPE">
|
||||
<jira-issue-content [issue]="issueData" [task]="task"></jira-issue-content>
|
||||
<jira-issue-content
|
||||
[issue]="issueData"
|
||||
[task]="task"
|
||||
></jira-issue-content>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="task?.issueType===GITHUB_TYPE">
|
||||
<github-issue-content [issue]="issueData" [task]="task"></github-issue-content>
|
||||
<github-issue-content
|
||||
[issue]="issueData"
|
||||
[task]="task"
|
||||
></github-issue-content>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="task?.issueType===GITLAB_TYPE">
|
||||
<gitlab-issue-content [issue]="issueData" [task]="task"></gitlab-issue-content>
|
||||
<gitlab-issue-content
|
||||
[issue]="issueData"
|
||||
[task]="task"
|
||||
></gitlab-issue-content>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="task?.issueType===CALDAV_TYPE">
|
||||
<caldav-issue-content [issue]="issueData" [task]="task"></caldav-issue-content>
|
||||
<caldav-issue-content
|
||||
[issue]="issueData"
|
||||
[task]="task"
|
||||
></caldav-issue-content>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="task?.issueType===OPEN_PROJECT_TYPE">
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
<ng-container>
|
||||
<div *ngIf="task?.issueWasUpdated" @expand style="text-align: center">
|
||||
<button (click)="hideUpdates()" color="accent" mat-raised-button>
|
||||
<div
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
@expand
|
||||
style="text-align: center"
|
||||
>
|
||||
<button
|
||||
(click)="hideUpdates()"
|
||||
color="accent"
|
||||
mat-raised-button
|
||||
>
|
||||
{{T.F.CALDAV.ISSUE_CONTENT.MARK_AS_CHECKED|translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -19,7 +27,9 @@
|
|||
<th>{{T.F.CALDAV.ISSUE_CONTENT.LABELS|translate}}</th>
|
||||
<td>
|
||||
<mat-chip-list>
|
||||
<mat-chip *ngFor="let label of issue?.labels" [title]="label"
|
||||
<mat-chip
|
||||
*ngFor="let label of issue?.labels"
|
||||
[title]="label"
|
||||
>{{label}}
|
||||
</mat-chip>
|
||||
</mat-chip-list>
|
||||
|
@ -28,7 +38,11 @@
|
|||
<tr *ngIf="issue?.note">
|
||||
<th>{{T.F.CALDAV.ISSUE_CONTENT.DESCRIPTION|translate}}</th>
|
||||
<td class="issue-description">
|
||||
<div [data]="issue?.note" class="description markdown" markdown></div>
|
||||
<div
|
||||
[data]="issue?.note"
|
||||
class="description markdown"
|
||||
markdown
|
||||
></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
<mat-icon *ngIf="task?.issueWasUpdated" color="accent" style="margin-right: 8px"
|
||||
<mat-icon
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
color="accent"
|
||||
style="margin-right: 8px"
|
||||
>update
|
||||
</mat-icon>
|
||||
<mat-icon *ngIf="!task?.issueWasUpdated" style="margin-right: 8px" svgIcon="caldav">
|
||||
<mat-icon
|
||||
*ngIf="!task?.issueWasUpdated"
|
||||
style="margin-right: 8px"
|
||||
svgIcon="caldav"
|
||||
>
|
||||
</mat-icon>
|
||||
<span class="tab-label-text">Caldav</span>
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="caldav"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="caldav"
|
||||
></mat-icon>
|
||||
<span>{{T.F.CALDAV.DIALOG_INITIAL.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
<form (submit)="saveCaldavCfg(caldavCfg)" [formGroup]="formGroup">
|
||||
<form
|
||||
(submit)="saveCaldavCfg(caldavCfg)"
|
||||
[formGroup]="formGroup"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<formly-form
|
||||
(modelChange)="caldavCfg=$event"
|
||||
|
@ -15,7 +21,12 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
<ng-container>
|
||||
<div *ngIf="task?.issueWasUpdated" @expand style="text-align: center">
|
||||
<button (click)="hideUpdates()" color="accent" mat-raised-button>
|
||||
<div
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
@expand
|
||||
style="text-align: center"
|
||||
>
|
||||
<button
|
||||
(click)="hideUpdates()"
|
||||
color="accent"
|
||||
mat-raised-button
|
||||
>
|
||||
{{T.F.GITHUB.ISSUE_CONTENT.MARK_AS_CHECKED|translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -10,7 +18,9 @@
|
|||
<tr>
|
||||
<th>{{T.F.GITHUB.ISSUE_CONTENT.SUMMARY|translate}}</th>
|
||||
<td>
|
||||
<a [href]="issue?.html_url" target="_blank"
|
||||
<a
|
||||
[href]="issue?.html_url"
|
||||
target="_blank"
|
||||
><strong>{{issue?.title}} #{{issue?.number}}</strong></a
|
||||
>
|
||||
</td>
|
||||
|
@ -22,7 +32,9 @@
|
|||
<tr *ngIf="issue?.assignee?.html_url">
|
||||
<th>{{T.F.GITHUB.ISSUE_CONTENT.ASSIGNEE|translate}}</th>
|
||||
<td>
|
||||
<a [href]="issue?.assignee?.html_url" target="_blank"
|
||||
<a
|
||||
[href]="issue?.assignee?.html_url"
|
||||
target="_blank"
|
||||
>{{issue?.assignee?.login}}</a
|
||||
>
|
||||
</td>
|
||||
|
@ -42,7 +54,11 @@
|
|||
<tr *ngIf="issue?.body">
|
||||
<th>{{T.F.GITHUB.ISSUE_CONTENT.DESCRIPTION|translate}}</th>
|
||||
<td class="issue-description">
|
||||
<div [data]="issue?.body" class="description markdown" markdown></div>
|
||||
<div
|
||||
[data]="issue?.body"
|
||||
class="description markdown"
|
||||
markdown
|
||||
></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
<mat-icon *ngIf="task?.issueWasUpdated" color="accent" style="margin-right: 8px"
|
||||
<mat-icon
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
color="accent"
|
||||
style="margin-right: 8px"
|
||||
>update
|
||||
</mat-icon>
|
||||
<mat-icon *ngIf="!task?.issueWasUpdated" style="margin-right: 8px" svgIcon="github">
|
||||
<mat-icon
|
||||
*ngIf="!task?.issueWasUpdated"
|
||||
style="margin-right: 8px"
|
||||
svgIcon="github"
|
||||
>
|
||||
</mat-icon>
|
||||
<span class="tab-label-text">Github</span>
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="github"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="github"
|
||||
></mat-icon>
|
||||
<span>{{T.F.GITHUB.DIALOG_INITIAL.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
<form (submit)="saveGithubCfg(githubCfg)" [formGroup]="formGroup">
|
||||
<form
|
||||
(submit)="saveGithubCfg(githubCfg)"
|
||||
[formGroup]="formGroup"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<formly-form
|
||||
(modelChange)="githubCfg=$event"
|
||||
|
@ -15,7 +21,12 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="gitlab"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="gitlab"
|
||||
></mat-icon>
|
||||
<span>{{T.F.GITLAB.DIALOG_INITIAL.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
<form (submit)="saveGitlabCfg(gitlabCfg)" [formGroup]="formGroup">
|
||||
<form
|
||||
(submit)="saveGitlabCfg(gitlabCfg)"
|
||||
[formGroup]="formGroup"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<formly-form
|
||||
(modelChange)="gitlabCfg=$event"
|
||||
|
@ -15,7 +21,12 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
<ng-container>
|
||||
<div *ngIf="task?.issueWasUpdated" @expand style="text-align: center">
|
||||
<button (click)="hideUpdates()" color="accent" mat-raised-button>
|
||||
<div
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
@expand
|
||||
style="text-align: center"
|
||||
>
|
||||
<button
|
||||
(click)="hideUpdates()"
|
||||
color="accent"
|
||||
mat-raised-button
|
||||
>
|
||||
{{T.F.GITLAB.ISSUE_CONTENT.MARK_AS_CHECKED|translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -10,7 +18,9 @@
|
|||
<tr>
|
||||
<th>{{T.F.GITLAB.ISSUE_CONTENT.SUMMARY|translate}}</th>
|
||||
<td>
|
||||
<a [href]="issue?.html_url" target="_blank"
|
||||
<a
|
||||
[href]="issue?.html_url"
|
||||
target="_blank"
|
||||
><strong>{{issue?.title}} #{{issue?.number}}</strong></a
|
||||
>
|
||||
</td>
|
||||
|
@ -26,7 +36,9 @@
|
|||
<tr *ngIf="issue?.assignee?.web_url">
|
||||
<th>{{T.F.GITLAB.ISSUE_CONTENT.ASSIGNEE|translate}}</th>
|
||||
<td>
|
||||
<a [href]="issue?.assignee?.web_url" target="_blank"
|
||||
<a
|
||||
[href]="issue?.assignee?.web_url"
|
||||
target="_blank"
|
||||
>{{issue?.assignee?.username}}</a
|
||||
>
|
||||
</td>
|
||||
|
@ -35,7 +47,9 @@
|
|||
<th>{{T.F.GITLAB.ISSUE_CONTENT.LABELS|translate}}</th>
|
||||
<td>
|
||||
<mat-chip-list>
|
||||
<mat-chip *ngFor="let label of issue?.labels" [title]="label"
|
||||
<mat-chip
|
||||
*ngFor="let label of issue?.labels"
|
||||
[title]="label"
|
||||
>{{label}}
|
||||
</mat-chip>
|
||||
</mat-chip-list>
|
||||
|
@ -44,7 +58,11 @@
|
|||
<tr *ngIf="issue?.body">
|
||||
<th>{{T.F.GITLAB.ISSUE_CONTENT.DESCRIPTION|translate}}</th>
|
||||
<td class="issue-description">
|
||||
<div [data]="issue?.body" class="description markdown" markdown></div>
|
||||
<div
|
||||
[data]="issue?.body"
|
||||
class="description markdown"
|
||||
markdown
|
||||
></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
<mat-icon *ngIf="task?.issueWasUpdated" color="accent" style="margin-right: 8px"
|
||||
<mat-icon
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
color="accent"
|
||||
style="margin-right: 8px"
|
||||
>update
|
||||
</mat-icon>
|
||||
<mat-icon *ngIf="!task?.issueWasUpdated" style="margin-right: 8px" svgIcon="gitlab">
|
||||
<mat-icon
|
||||
*ngIf="!task?.issueWasUpdated"
|
||||
style="margin-right: 8px"
|
||||
svgIcon="gitlab"
|
||||
>
|
||||
</mat-icon>
|
||||
<span class="tab-label-text">Gitlab</span>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<div class="wrapper">
|
||||
<div *ngIf="task?.issueWasUpdated" [@expand] class="updates">
|
||||
<div
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
[@expand]
|
||||
class="updates"
|
||||
>
|
||||
<div>
|
||||
<button (click)="hideUpdates()" color="accent" mat-raised-button>
|
||||
<button
|
||||
(click)="hideUpdates()"
|
||||
color="accent"
|
||||
mat-raised-button
|
||||
>
|
||||
{{T.F.JIRA.ISSUE_CONTENT.MARK_AS_CHECKED|translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -22,7 +30,9 @@
|
|||
<th>{{T.F.JIRA.ISSUE_CONTENT.SUMMARY|translate}}</th>
|
||||
<td class="summary">
|
||||
<strong
|
||||
><a [href]="issueUrl$|async" target="_blank"
|
||||
><a
|
||||
[href]="issueUrl$|async"
|
||||
target="_blank"
|
||||
>{{issue?.key}} {{issue?.summary}}</a
|
||||
></strong
|
||||
>
|
||||
|
@ -56,7 +66,12 @@
|
|||
<td>
|
||||
<ul class="subtask-list">
|
||||
<li *ngFor="let st of jiraSubTasks;">
|
||||
<a target="_blank" [href]="st.href"> {{st.key}} {{st.summary}}</a>
|
||||
<a
|
||||
target="_blank"
|
||||
[href]="st.href"
|
||||
>
|
||||
{{st.key}} {{st.summary}}</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
@ -68,7 +83,11 @@
|
|||
<ul class="related-issue-list">
|
||||
<li *ngFor="let ri of relatedIssues;">
|
||||
<i>{{ri.relatedHow}} => </i>
|
||||
<a target="_blank" [href]="ri.href">{{ri.key}} {{ri.summary}}</a>
|
||||
<a
|
||||
target="_blank"
|
||||
[href]="ri.href"
|
||||
>{{ri.key}} {{ri.summary}}</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
@ -86,7 +105,10 @@
|
|||
</mat-chip-list>
|
||||
</td>
|
||||
</tr>
|
||||
<tr *ngIf="issue?.description" class="description-row">
|
||||
<tr
|
||||
*ngIf="issue?.description"
|
||||
class="description-row"
|
||||
>
|
||||
<th>{{T.F.JIRA.ISSUE_CONTENT.DESCRIPTION|translate}}</th>
|
||||
<td>
|
||||
<div
|
||||
|
@ -114,7 +136,10 @@
|
|||
*ngFor="let comment of (issue?.comments|sort:'created'); trackBy: trackByIndex"
|
||||
class="comment"
|
||||
>
|
||||
<img [src]="comment.author.avatarUrl" class="author-avatar" />
|
||||
<img
|
||||
[src]="comment.author.avatarUrl"
|
||||
class="author-avatar"
|
||||
/>
|
||||
<div class="name-and-comment-content">
|
||||
<div>
|
||||
<span class="author-name">{{comment.author.displayName}}</span>
|
||||
|
@ -131,7 +156,11 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<a [href]="issueUrl$|async" mat-stroked-button target="_blank">
|
||||
<a
|
||||
[href]="issueUrl$|async"
|
||||
mat-stroked-button
|
||||
target="_blank"
|
||||
>
|
||||
<mat-icon>textsms</mat-icon>
|
||||
{{T.F.JIRA.ISSUE_CONTENT.WRITE_A_COMMENT|translate}}</a
|
||||
>
|
||||
|
|
|
@ -1,12 +1,23 @@
|
|||
<ng-container *ngIf="(isOnline$|async) else offline">
|
||||
<mat-icon *ngIf="task?.issueWasUpdated" color="accent" style="margin-right: 8px"
|
||||
<mat-icon
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
color="accent"
|
||||
style="margin-right: 8px"
|
||||
>update
|
||||
</mat-icon>
|
||||
<mat-icon *ngIf="!task?.issueWasUpdated" style="margin-right: 8px" svgIcon="jira">
|
||||
<mat-icon
|
||||
*ngIf="!task?.issueWasUpdated"
|
||||
style="margin-right: 8px"
|
||||
svgIcon="jira"
|
||||
>
|
||||
</mat-icon>
|
||||
</ng-container>
|
||||
<span class="tab-label-text">Jira</span>
|
||||
|
||||
<ng-template #offline>
|
||||
<mat-icon [matTooltip]="'No internet!'" style="margin-right: 8px">cloud_off </mat-icon>
|
||||
<mat-icon
|
||||
[matTooltip]="'No internet!'"
|
||||
style="margin-right: 8px"
|
||||
>cloud_off
|
||||
</mat-icon>
|
||||
</ng-template>
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
<form (submit)="submitWorklog()" class="mat-body" name="time-estimate-form">
|
||||
<form
|
||||
(submit)="submitWorklog()"
|
||||
class="mat-body"
|
||||
name="time-estimate-form"
|
||||
>
|
||||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="jira"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="jira"
|
||||
></mat-icon>
|
||||
<span>{{T.F.JIRA.DIALOG_WORKLOG.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
|
@ -32,10 +39,16 @@
|
|||
[matMenuTriggerFor]="contextMenu"
|
||||
[matTooltip]="T.F.JIRA.DIALOG_WORKLOG.TIME_SPENT_TOOLTIP|translate"
|
||||
>
|
||||
<button mat-icon-button type="button">
|
||||
<button
|
||||
mat-icon-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon style="font-size: 24px">add</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button type="button">
|
||||
<button
|
||||
mat-icon-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon style="font-size: 24px">timer</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="jira"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="jira"
|
||||
></mat-icon>
|
||||
<span>{{T.F.JIRA.DIALOG_INITIAL.TITLE|translate}}</span>
|
||||
</h1>
|
||||
<mat-dialog-content>
|
||||
<jira-cfg-stepper (saveCfg)="saveJiraCfg($event)" [cfg]="jiraCfg"></jira-cfg-stepper>
|
||||
<jira-cfg-stepper
|
||||
(saveCfg)="saveJiraCfg($event)"
|
||||
[cfg]="jiraCfg"
|
||||
></jira-cfg-stepper>
|
||||
</mat-dialog-content>
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="jira"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="jira"
|
||||
></mat-icon>
|
||||
<span>{{T.F.JIRA.DIALOG_TRANSITION.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
<div class="wrapper">
|
||||
<mat-horizontal-stepper [linear]="true" dynamicHeight>
|
||||
<mat-horizontal-stepper
|
||||
[linear]="true"
|
||||
dynamicHeight
|
||||
>
|
||||
<mat-step [stepControl]="credentialsFormGroup">
|
||||
<form (submit)="saveStepForm(jiraCfg)" [formGroup]="credentialsFormGroup">
|
||||
<form
|
||||
(submit)="saveStepForm(jiraCfg)"
|
||||
[formGroup]="credentialsFormGroup"
|
||||
>
|
||||
<ng-template matStepLabel>{{T.F.JIRA.STEPPER.CREDENTIALS|translate}}</ng-template>
|
||||
|
||||
<p
|
||||
|
@ -15,7 +21,11 @@
|
|||
[form]="credentialsFormGroup"
|
||||
[model]="jiraCfg"
|
||||
>
|
||||
<div *ngIf="user" [@expand] class="welcome">
|
||||
<div
|
||||
*ngIf="user"
|
||||
[@expand]
|
||||
class="welcome"
|
||||
>
|
||||
<img
|
||||
[src]="user.avatarUrls && user.avatarUrls['48x48']"
|
||||
alt="User Avatar"
|
||||
|
@ -53,7 +63,10 @@
|
|||
</mat-step>
|
||||
|
||||
<mat-step [stepControl]="advancedSettingsFormGroup">
|
||||
<form (submit)="saveStepForm(jiraCfg)" [formGroup]="advancedSettingsFormGroup">
|
||||
<form
|
||||
(submit)="saveStepForm(jiraCfg)"
|
||||
[formGroup]="advancedSettingsFormGroup"
|
||||
>
|
||||
<ng-template matStepLabel>Advanced</ng-template>
|
||||
<formly-form
|
||||
(modelChange)="jiraCfg=$event"
|
||||
|
@ -62,7 +75,10 @@
|
|||
[model]="jiraCfg"
|
||||
>
|
||||
<div class="center-wrapper">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<button
|
||||
mat-raised-button
|
||||
matStepperPrevious
|
||||
>
|
||||
<mat-icon>arrow_backward</mat-icon>
|
||||
{{T.G.PREVIOUS|translate}}
|
||||
</button>
|
||||
|
@ -85,11 +101,19 @@
|
|||
<ng-template matStepLabel>Done</ng-template>
|
||||
{{T.F.JIRA.STEPPER.DONE|translate}}
|
||||
<div class="center-wrapper">
|
||||
<button mat-raised-button matStepperPrevious>
|
||||
<button
|
||||
mat-raised-button
|
||||
matStepperPrevious
|
||||
>
|
||||
<mat-icon>arrow_backward</mat-icon>
|
||||
{{T.G.PREVIOUS|translate}}
|
||||
</button>
|
||||
<button (click)="saveConfig()" color="primary" mat-raised-button type="button">
|
||||
<button
|
||||
(click)="saveConfig()"
|
||||
color="primary"
|
||||
mat-raised-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.G.SAVE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -37,7 +37,10 @@
|
|||
{{T.F.JIRA.CFG_CMP.ENABLE_TRANSITIONS|translate}}
|
||||
</mat-slide-toggle>
|
||||
|
||||
<section *ngIf="cfg.isTransitionIssuesEnabled" @expand>
|
||||
<section
|
||||
*ngIf="cfg.isTransitionIssuesEnabled"
|
||||
@expand
|
||||
>
|
||||
<mat-form-field>
|
||||
<input
|
||||
[formControl]="issueSuggestionsCtrl"
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
<ng-container>
|
||||
<div *ngIf="task?.issueWasUpdated" @expand style="text-align: center">
|
||||
<button (click)="hideUpdates()" color="accent" mat-raised-button>
|
||||
<div
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
@expand
|
||||
style="text-align: center"
|
||||
>
|
||||
<button
|
||||
(click)="hideUpdates()"
|
||||
color="accent"
|
||||
mat-raised-button
|
||||
>
|
||||
{{T.F.OPEN_PROJECT.ISSUE_CONTENT.MARK_AS_CHECKED|translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
@ -10,7 +18,9 @@
|
|||
<tr>
|
||||
<th>{{T.F.OPEN_PROJECT.ISSUE_CONTENT.SUMMARY|translate}}</th>
|
||||
<td>
|
||||
<a [href]="issue?.url" target="_blank"
|
||||
<a
|
||||
[href]="issue?.url"
|
||||
target="_blank"
|
||||
><strong>{{issue?.subject}} #{{issue?.id}}</strong></a
|
||||
>
|
||||
</td>
|
||||
|
@ -24,7 +34,10 @@
|
|||
<tr *ngIf="issue?._embedded.status">
|
||||
<th>{{T.F.OPEN_PROJECT.ISSUE_CONTENT.STATUS|translate}}</th>
|
||||
<td>
|
||||
<span class="dot" [style.backgroud-color]="issue?._embedded.status.color"></span
|
||||
<span
|
||||
class="dot"
|
||||
[style.backgroud-color]="issue?._embedded.status.color"
|
||||
></span
|
||||
>{{issue?._embedded.status.name}}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
<mat-icon *ngIf="task?.issueWasUpdated" color="accent" style="margin-right: 8px"
|
||||
<mat-icon
|
||||
*ngIf="task?.issueWasUpdated"
|
||||
color="accent"
|
||||
style="margin-right: 8px"
|
||||
>update
|
||||
</mat-icon>
|
||||
<mat-icon *ngIf="!task?.issueWasUpdated" style="margin-right: 8px" svgIcon="open_project">
|
||||
<mat-icon
|
||||
*ngIf="!task?.issueWasUpdated"
|
||||
style="margin-right: 8px"
|
||||
svgIcon="open_project"
|
||||
>
|
||||
</mat-icon>
|
||||
<span class="tab-label-text">OpenProject</span>
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="open_project"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="open_project"
|
||||
></mat-icon>
|
||||
<span>{{T.F.OPEN_PROJECT.DIALOG_INITIAL.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
<form (submit)="saveOpenProjectCfg(openProjectCfg)" [formGroup]="formGroup">
|
||||
<form
|
||||
(submit)="saveOpenProjectCfg(openProjectCfg)"
|
||||
[formGroup]="formGroup"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<formly-form
|
||||
(modelChange)="openProjectCfg=$event"
|
||||
|
@ -15,7 +21,12 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
<form (submit)="postTime()" class="mat-body" name="time-estimate-form">
|
||||
<form
|
||||
(submit)="postTime()"
|
||||
class="mat-body"
|
||||
name="time-estimate-form"
|
||||
>
|
||||
<h1 mat-dialog-title>
|
||||
<mat-icon class="dialog-header-icon" svgIcon="open_project"></mat-icon>
|
||||
<mat-icon
|
||||
class="dialog-header-icon"
|
||||
svgIcon="open_project"
|
||||
></mat-icon>
|
||||
<span>{{T.F.OPEN_PROJECT.DIALOG_TRACK_TIME.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
|
@ -8,7 +15,10 @@
|
|||
<p>
|
||||
{{T.F.OPEN_PROJECT.DIALOG_TRACK_TIME.SUBMIT_TIME_FOR|translate}}<br />
|
||||
<strong>
|
||||
<a [href]="workPackage?.url" target="_blank">
|
||||
<a
|
||||
[href]="workPackage?.url"
|
||||
target="_blank"
|
||||
>
|
||||
{{workPackage.id}} {{workPackage.subject}}</a
|
||||
></strong
|
||||
>.
|
||||
|
@ -37,10 +47,16 @@
|
|||
[matMenuTriggerFor]="contextMenu"
|
||||
[matTooltip]="T.F.JIRA.DIALOG_WORKLOG.TIME_SPENT_TOOLTIP|translate"
|
||||
>
|
||||
<button mat-icon-button type="button">
|
||||
<button
|
||||
mat-icon-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon style="font-size: 24px">add</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button type="button">
|
||||
<button
|
||||
mat-icon-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon style="font-size: 24px">timer</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -88,7 +104,10 @@
|
|||
name="activity"
|
||||
[placeholder]="T.F.OPEN_PROJECT.DIALOG_TRACK_TIME.ACTIVITY|translate"
|
||||
>
|
||||
<mat-option *ngFor="let activity of (activities$|async);" [value]="activity.id">
|
||||
<mat-option
|
||||
*ngFor="let activity of (activities$|async);"
|
||||
[value]="activity.id"
|
||||
>
|
||||
{{activity.name}}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
|
@ -110,10 +129,19 @@
|
|||
|
||||
<mat-dialog-actions align="end">
|
||||
<div class="wrap-buttons">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
<button color="primary" mat-stroked-button type="submit">
|
||||
<button
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="submit"
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.F.OPEN_PROJECT.DIALOG_TRACK_TIME.POST_TIME|translate}}
|
||||
</button>
|
||||
|
|
|
@ -7,7 +7,12 @@
|
|||
<p>{{T.F.METRIC.EVAL_FORM.HELP_P2|translate}}</p>
|
||||
</help-section>
|
||||
|
||||
<form #f="ngForm" *ngIf="metricForDay" name="form" novalidate>
|
||||
<form
|
||||
#f="ngForm"
|
||||
*ngIf="metricForDay"
|
||||
name="form"
|
||||
novalidate
|
||||
>
|
||||
<div class="row">
|
||||
<mat-form-field>
|
||||
<input
|
||||
|
@ -89,7 +94,10 @@
|
|||
*ngIf="(workContextService.isActiveWorkContextProject$|async)"
|
||||
style="text-align: center; margin-top: 8px; margin-bottom: 16px"
|
||||
>
|
||||
<button (click)="addNote()" mat-button>
|
||||
<button
|
||||
(click)="addNote()"
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.METRIC.EVAL_FORM.ADD_NOTE_FOR_TOMORROW|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<div [@improvementBanner]="improvements.length" class="improvements">
|
||||
<div
|
||||
[@improvementBanner]="improvements.length"
|
||||
class="improvements"
|
||||
>
|
||||
<div
|
||||
*ngFor="let improvement of improvements; trackBy: trackById"
|
||||
class="improvement"
|
||||
|
|
|
@ -4,7 +4,12 @@
|
|||
*ngIf="projectMetricsService.simpleMetrics$|async as sm"
|
||||
[@fade]
|
||||
>
|
||||
<h1 class="mat-h1" style="text-align: center">{{T.PM.TITLE|translate}}</h1>
|
||||
<h1
|
||||
class="mat-h1"
|
||||
style="text-align: center"
|
||||
>
|
||||
{{T.PM.TITLE|translate}}
|
||||
</h1>
|
||||
|
||||
<!-- <h2>Basic Metrics</h2>-->
|
||||
<p><i>{{sm.start}} – {{sm.end}}</i></p>
|
||||
|
@ -57,11 +62,17 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<p *ngIf="!(metricService.hasData$|async)" style="margin-top: 32px">
|
||||
<p
|
||||
*ngIf="!(metricService.hasData$|async)"
|
||||
style="margin-top: 32px"
|
||||
>
|
||||
{{T.F.METRIC.CMP.NO_ADDITIONAL_DATA_YET|translate}}
|
||||
</p>
|
||||
|
||||
<section *ngIf="(metricService.hasData$|async)" class="metric-metrics">
|
||||
<section
|
||||
*ngIf="(metricService.hasData$|async)"
|
||||
class="metric-metrics"
|
||||
>
|
||||
<h1>{{T.F.METRIC.CMP.GLOBAL_METRICS|translate}}</h1>
|
||||
<section class="pie-charts">
|
||||
<section
|
||||
|
@ -119,7 +130,10 @@
|
|||
</section>
|
||||
</section>
|
||||
|
||||
<section *ngIf="(metricService.hasData$|async)" class="metric-metrics">
|
||||
<section
|
||||
*ngIf="(metricService.hasData$|async)"
|
||||
class="metric-metrics"
|
||||
>
|
||||
<h2>{{T.F.METRIC.CMP.SIMPLE_COUNTERS|translate}}</h2>
|
||||
<section class="line-charts">
|
||||
<section *ngIf="(simpleClickCounterData$|async) as simpleCounterClickData">
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
<div *ngIf="note" [class.isFocused]="isFocus" [class.isImg]="note.imgUrl" class="note">
|
||||
<div
|
||||
*ngIf="note"
|
||||
[class.isFocused]="isFocus"
|
||||
[class.isImg]="note.imgUrl"
|
||||
class="note"
|
||||
>
|
||||
<img
|
||||
*ngIf="note.imgUrl"
|
||||
[enlargeImg]="note.imgUrl"
|
||||
|
@ -7,7 +12,10 @@
|
|||
class="note-img"
|
||||
/>
|
||||
|
||||
<div *ngIf="!note.imgUrl" class="content">
|
||||
<div
|
||||
*ngIf="!note.imgUrl"
|
||||
class="content"
|
||||
>
|
||||
<div
|
||||
(click)="editFullscreen($event)"
|
||||
markdown
|
||||
|
@ -16,19 +24,35 @@
|
|||
></div>
|
||||
</div>
|
||||
|
||||
<div class="bottom-controls handle-drag" [class.isOver]="note.imgUrl">
|
||||
<button mat-icon-button (click)="togglePinToToday()" *ngIf="note.projectId">
|
||||
<div
|
||||
class="bottom-controls handle-drag"
|
||||
[class.isOver]="note.imgUrl"
|
||||
>
|
||||
<button
|
||||
mat-icon-button
|
||||
(click)="togglePinToToday()"
|
||||
*ngIf="note.projectId"
|
||||
>
|
||||
<mat-icon *ngIf="!note.isPinnedToToday">wb_sunny</mat-icon>
|
||||
<mat-icon *ngIf="note.isPinnedToToday" svgIcon="remove_today"></mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="note.isPinnedToToday"
|
||||
svgIcon="remove_today"
|
||||
></mat-icon>
|
||||
</button>
|
||||
|
||||
<tag *ngIf="projectTag$|async as projectTag" [tag]="projectTag"></tag>
|
||||
<tag
|
||||
*ngIf="projectTag$|async as projectTag"
|
||||
[tag]="projectTag"
|
||||
></tag>
|
||||
|
||||
<!-- <button mat-icon-button>-->
|
||||
<!-- <mat-icon class="drag-handle-ico" svgIcon="drag_handle"></mat-icon>-->
|
||||
<!-- </button>-->
|
||||
|
||||
<button [matMenuTriggerFor]="menu" mat-icon-button>
|
||||
<button
|
||||
[matMenuTriggerFor]="menu"
|
||||
mat-icon-button
|
||||
>
|
||||
<mat-icon>more_vert</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -36,7 +60,11 @@
|
|||
|
||||
<mat-menu #menu="matMenu">
|
||||
<ng-template matMenuContent>
|
||||
<button (click)="toggleLock()" *ngIf="!note.imgUrl" mat-menu-item>
|
||||
<button
|
||||
(click)="toggleLock()"
|
||||
*ngIf="!note.imgUrl"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon *ngIf="note.isLock">lock</mat-icon>
|
||||
<mat-icon *ngIf="!note.isLock">lock_open</mat-icon>
|
||||
|
||||
|
@ -44,7 +72,10 @@
|
|||
(T.F.NOTE.NOTE_CMP.DISABLE_PARSE|translate)}}
|
||||
</button>
|
||||
|
||||
<button (click)="removeNote()" mat-menu-item>
|
||||
<button
|
||||
(click)="removeNote()"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon style="color: #e15d63">delete_forever</mat-icon>
|
||||
{{T.G.DELETE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,11 +1,20 @@
|
|||
<header>
|
||||
<button #buttonEl (click)="addNote()" id="add-note-btn" mat-button>
|
||||
<button
|
||||
#buttonEl
|
||||
(click)="addNote()"
|
||||
id="add-note-btn"
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.NOTE.NOTES_CMP.ADD_BTN|translate}}
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<div *ngIf="isDragOver" @fade class="bgc-accent drag-over-msg">
|
||||
<div
|
||||
*ngIf="isDragOver"
|
||||
@fade
|
||||
class="bgc-accent drag-over-msg"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.NOTE.NOTES_CMP.DROP_TO_ADD|translate}}
|
||||
</div>
|
||||
|
@ -23,7 +32,10 @@
|
|||
[note]="note"
|
||||
></note>
|
||||
|
||||
<div class="no-notes-info" *ngIf="notes.length ===0">
|
||||
<div
|
||||
class="no-notes-info"
|
||||
*ngIf="notes.length ===0"
|
||||
>
|
||||
{{T.F.NOTE.NOTES_CMP.NO_NOTES|translate}}
|
||||
</div>
|
||||
</ng-container>
|
||||
|
|
|
@ -13,8 +13,17 @@
|
|||
<div class="timer">{{currentTime$|async|msToMinuteClockString}}</div>
|
||||
</div>
|
||||
|
||||
<div align="center" mat-dialog-actions>
|
||||
<button (click)="close()" color="primary" mat-button>{{T.G.CLOSE|translate}}</button>
|
||||
<div
|
||||
align="center"
|
||||
mat-dialog-actions
|
||||
>
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
>
|
||||
{{T.G.CLOSE|translate}}
|
||||
</button>
|
||||
|
||||
<button
|
||||
(click)="nextSession(true)"
|
||||
|
@ -27,7 +36,11 @@
|
|||
</button>
|
||||
|
||||
<ng-container *ngIf="(isBreakDone$|async)">
|
||||
<button (click)="nextSession()" color="primary" mat-stroked-button>
|
||||
<button
|
||||
(click)="nextSession()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
>
|
||||
<mat-icon>play_arrow</mat-icon>
|
||||
{{T.F.POMODORO.BACK_TO_WORK|translate}}
|
||||
</button>
|
||||
|
|
|
@ -102,7 +102,11 @@
|
|||
</mat-tab-group>
|
||||
|
||||
<div style="text-align: center; margin-top: 32px">
|
||||
<button color="primary" mat-flat-button routerLink="/work-view">
|
||||
<button
|
||||
color="primary"
|
||||
mat-flat-button
|
||||
routerLink="/work-view"
|
||||
>
|
||||
{{T.F.PROCRASTINATION.BACK_TO_WORK|translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,10 @@
|
|||
<span *ngIf="!projectData.id">{{T.F.PROJECT.D_CREATE.CREATE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
<form (ngSubmit)="submit()" [formGroup]="formTheme">
|
||||
<form
|
||||
(ngSubmit)="submit()"
|
||||
[formGroup]="formTheme"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<formly-form
|
||||
(modelChange)="projectData = $event"
|
||||
|
@ -16,8 +19,16 @@
|
|||
|
||||
<div class="issue-provider-cfg">
|
||||
<div class="item">
|
||||
<button (click)="openJiraCfg()" color="primary" mat-button type="button">
|
||||
<mat-icon *ngIf="!jiraCfg?.isEnabled" svgIcon="jira"></mat-icon>
|
||||
<button
|
||||
(click)="openJiraCfg()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="!jiraCfg?.isEnabled"
|
||||
svgIcon="jira"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="jiraCfg?.isEnabled">checkmark</mat-icon>
|
||||
<span style="padding-left: 8px"
|
||||
>{{T.F.PROJECT.D_CREATE.SETUP_JIRA|translate}}</span
|
||||
|
@ -25,8 +36,16 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="item">
|
||||
<button (click)="openGithubCfg()" color="primary" mat-button type="button">
|
||||
<mat-icon *ngIf="!githubCfg?.isEnabled" svgIcon="github"></mat-icon>
|
||||
<button
|
||||
(click)="openGithubCfg()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="!githubCfg?.isEnabled"
|
||||
svgIcon="github"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="githubCfg?.isEnabled">checkmark</mat-icon>
|
||||
<span style="padding-left: 8px"
|
||||
>{{T.F.PROJECT.D_CREATE.SETUP_GIT|translate}}</span
|
||||
|
@ -34,8 +53,16 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="item">
|
||||
<button (click)="openGitlabCfg()" color="primary" mat-button type="button">
|
||||
<mat-icon *ngIf="!gitlabCfg?.isEnabled" svgIcon="gitlab"></mat-icon>
|
||||
<button
|
||||
(click)="openGitlabCfg()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="!gitlabCfg?.isEnabled"
|
||||
svgIcon="gitlab"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="gitlabCfg?.isEnabled">checkmark</mat-icon>
|
||||
<span style="padding-left: 8px"
|
||||
>{{T.F.PROJECT.D_CREATE.SETUP_GITLAB|translate}}</span
|
||||
|
@ -43,8 +70,16 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="item">
|
||||
<button (click)="openCaldavCfg()" color="primary" mat-button type="button">
|
||||
<mat-icon *ngIf="!caldavCfg?.isEnabled" svgIcon="caldav"></mat-icon>
|
||||
<button
|
||||
(click)="openCaldavCfg()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="!caldavCfg?.isEnabled"
|
||||
svgIcon="caldav"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="caldavCfg?.isEnabled">checkmark</mat-icon>
|
||||
<span style="padding-left: 8px"
|
||||
>{{T.F.PROJECT.D_CREATE.SETUP_CALDAV|translate}}</span
|
||||
|
@ -52,8 +87,16 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="item">
|
||||
<button (click)="openOpenProjectCfg()" color="primary" mat-button type="button">
|
||||
<mat-icon *ngIf="!openProjectCfg?.isEnabled" svgIcon="open_project"></mat-icon>
|
||||
<button
|
||||
(click)="openOpenProjectCfg()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="!openProjectCfg?.isEnabled"
|
||||
svgIcon="open_project"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="openProjectCfg?.isEnabled">checkmark</mat-icon>
|
||||
<span style="padding-left: 8px"
|
||||
>{{T.F.PROJECT.D_CREATE.SETUP_OPEN_PROJECT|translate}}</span
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
<h1>{{T.F.QUICK_HISTORY.PAGE_TITLE|translate}}</h1>
|
||||
|
||||
<div *ngIf="(worklogService.quickHistoryWeeks$|async) as weeks else spinner" [@fade]>
|
||||
<div class="no-data" *ngIf="weeks?.length===0">
|
||||
<div
|
||||
*ngIf="(worklogService.quickHistoryWeeks$|async) as weeks else spinner"
|
||||
[@fade]
|
||||
>
|
||||
<div
|
||||
class="no-data"
|
||||
*ngIf="weeks?.length===0"
|
||||
>
|
||||
{{T.F.QUICK_HISTORY.NO_DATA|translate}}
|
||||
</div>
|
||||
|
||||
|
@ -23,7 +29,9 @@
|
|||
mat-ripple
|
||||
>
|
||||
<div>
|
||||
<span *ngIf="visibility[i+(j*100)]" [@fade]
|
||||
<span
|
||||
*ngIf="visibility[i+(j*100)]"
|
||||
[@fade]
|
||||
>{{T.F.WORKLOG.WEEK.TITLE|translate}}</span
|
||||
>
|
||||
</div>
|
||||
|
@ -51,10 +59,16 @@
|
|||
class="simple-counter-item"
|
||||
>
|
||||
<mat-icon inline="true">{{sc.iconOn || sc.icon}}</mat-icon>
|
||||
<div *ngIf="sc.type==='ClickCounter'" class="count">
|
||||
<div
|
||||
*ngIf="sc.type==='ClickCounter'"
|
||||
class="count"
|
||||
>
|
||||
{{sc.countOnDay[day.value.dateStr] || 0}}
|
||||
</div>
|
||||
<div *ngIf="sc.type==='StopWatch'" class="count">
|
||||
<div
|
||||
*ngIf="sc.type==='StopWatch'"
|
||||
class="count"
|
||||
>
|
||||
{{sc.countOnDay[day.value.dateStr] || 0|msToMinuteClockString}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -63,13 +77,25 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="with-icon">
|
||||
<mat-icon *ngIf="visibility[i+(j*100)]" [@fade]>timer </mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="visibility[i+(j*100)]"
|
||||
[@fade]
|
||||
>timer
|
||||
</mat-icon>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table *ngIf="visibility[i+(j*100)]" [@expandFade] class="task-summary-table">
|
||||
<table
|
||||
*ngIf="visibility[i+(j*100)]"
|
||||
[@expandFade]
|
||||
class="task-summary-table"
|
||||
>
|
||||
<tr *ngFor="let logEntry of day.value.logEntries; trackBy: trackByLogEntry;">
|
||||
<td [class.isSubTask]="logEntry.task.parentId" class="title" colspan>
|
||||
<td
|
||||
[class.isSubTask]="logEntry.task.parentId"
|
||||
class="title"
|
||||
colspan
|
||||
>
|
||||
<span class="task-title">{{logEntry.task.title}}</span>
|
||||
</td>
|
||||
<td class="worked">
|
||||
|
|
|
@ -10,7 +10,10 @@
|
|||
|
||||
<ng-container better-drawer-side>
|
||||
<div class="right-panel">
|
||||
<notes *ngIf="!(selectedTaskWithDelayForNone$|async) " [@slideInFromRight]></notes>
|
||||
<notes
|
||||
*ngIf="!(selectedTaskWithDelayForNone$|async) "
|
||||
[@slideInFromRight]
|
||||
></notes>
|
||||
<task-additional-info
|
||||
[isOver]="isAlwaysOver || (layoutService.isRightPanelOver$|async)"
|
||||
[@taskAdditionalInfoTaskChange]=" selectedTaskWithDelayForNone?.id"
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
class="search-form mat-elevation-z4"
|
||||
>
|
||||
<div class="input-wrapper">
|
||||
<div *ngIf="(isLoading$|async)" class="spinner">
|
||||
<div
|
||||
*ngIf="(isLoading$|async)"
|
||||
class="spinner"
|
||||
>
|
||||
<mat-spinner diameter="50"></mat-spinner>
|
||||
</div>
|
||||
<mat-icon class="search-icon">search</mat-icon>
|
||||
|
@ -47,9 +50,15 @@
|
|||
*ngFor="let item of (filteredIssueSuggestions$|async); trackBy:trackByFn"
|
||||
[value]="item"
|
||||
>
|
||||
<tag *ngIf="item.ctx" [tag]="item.ctx"></tag>
|
||||
<tag
|
||||
*ngIf="item.ctx"
|
||||
[tag]="item.ctx"
|
||||
></tag>
|
||||
<span>{{item?.titleHighlighted || item?.title}}</span>
|
||||
<mat-icon *ngIf="item.issueType" [svgIcon]="item.issueType|issueIcon"></mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="item.issueType"
|
||||
[svgIcon]="item.issueType|issueIcon"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="!item.isNonArchiveTask">archive</mat-icon>
|
||||
</mat-option>
|
||||
</mat-autocomplete>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<div *ngIf="simpleCounter" class="wrapper">
|
||||
<div
|
||||
*ngIf="simpleCounter"
|
||||
class="wrapper"
|
||||
>
|
||||
<ng-container *ngIf="simpleCounter.type===SimpleCounterType.StopWatch">
|
||||
<button
|
||||
(click)="toggleStopwatch()"
|
||||
|
@ -13,7 +16,10 @@
|
|||
>{{simpleCounter.iconOn||simpleCounter.icon}}</mat-icon
|
||||
>
|
||||
</button>
|
||||
<div *ngIf="simpleCounter.countOnDay[todayStr]" class="label">
|
||||
<div
|
||||
*ngIf="simpleCounter.countOnDay[todayStr]"
|
||||
class="label"
|
||||
>
|
||||
{{simpleCounter.countOnDay[todayStr]|msToMinuteClockString}}
|
||||
</div>
|
||||
</ng-container>
|
||||
|
@ -29,7 +35,10 @@
|
|||
>
|
||||
<mat-icon>{{simpleCounter.icon}}</mat-icon>
|
||||
</button>
|
||||
<div *ngIf="simpleCounter.countOnDay[todayStr]" class="label">
|
||||
<div
|
||||
*ngIf="simpleCounter.countOnDay[todayStr]"
|
||||
class="label"
|
||||
>
|
||||
{{simpleCounter.countOnDay[todayStr]}}
|
||||
</div>
|
||||
</ng-container>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<form (ngSubmit)="submit()" [formGroup]="form">
|
||||
<form
|
||||
(ngSubmit)="submit()"
|
||||
[formGroup]="form"
|
||||
>
|
||||
<formly-form
|
||||
(modelChange)="onModelChange($event)"
|
||||
[fields]="section?.items"
|
||||
|
|
|
@ -21,7 +21,12 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-stroked-button type="submit">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="submit"
|
||||
>
|
||||
<mat-icon>close</mat-icon>
|
||||
{{T.G.CLOSE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -4,7 +4,11 @@
|
|||
class="tags-container"
|
||||
>
|
||||
<div class="tags">
|
||||
<tag (click)="editTags()" *ngIf=" projectTag" [tag]="projectTag"></tag>
|
||||
<tag
|
||||
(click)="editTags()"
|
||||
*ngIf=" projectTag"
|
||||
[tag]="projectTag"
|
||||
></tag>
|
||||
<tag
|
||||
(click)="editTags()"
|
||||
*ngFor="let tag of tags; trackBy: trackByFn"
|
||||
|
|
|
@ -1,2 +1,6 @@
|
|||
<mat-icon [style.background]="color" class="tag-ico">{{tag?.icon}}</mat-icon>
|
||||
<mat-icon
|
||||
[style.background]="color"
|
||||
class="tag-ico"
|
||||
>{{tag?.icon}}</mat-icon
|
||||
>
|
||||
<span class="tag-title">{{tag?.title}}</span>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<form (submit)="save()" class="dialog-help-wrapper">
|
||||
<form
|
||||
(submit)="save()"
|
||||
class="dialog-help-wrapper"
|
||||
>
|
||||
<h1 mat-dialog-title>
|
||||
{{isEdit ? (T.F.TASK_REPEAT.D_EDIT.EDIT|translate) :
|
||||
(T.F.TASK_REPEAT.D_EDIT.ADD|translate)}}
|
||||
|
@ -41,7 +44,12 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
|
|
|
@ -7,7 +7,10 @@
|
|||
class="add-task-form"
|
||||
>
|
||||
<div class="input-wrapper">
|
||||
<div *ngIf="(isLoading$|async)" class="spinner">
|
||||
<div
|
||||
*ngIf="(isLoading$|async)"
|
||||
class="spinner"
|
||||
>
|
||||
<mat-spinner diameter="50"></mat-spinner>
|
||||
</div>
|
||||
|
||||
|
@ -53,17 +56,26 @@
|
|||
|
||||
<div class="info-bar">
|
||||
<ng-container *ngIf="inputVal.length > 0">
|
||||
<div *ngIf="!activatedIssueTask && !shortSyntaxTags.length" class="info-text">
|
||||
<div
|
||||
*ngIf="!activatedIssueTask && !shortSyntaxTags.length"
|
||||
class="info-text"
|
||||
>
|
||||
{{T.F.TASK.ADD_TASK_BAR.CREATE_TASK|translate}}
|
||||
</div>
|
||||
|
||||
<ng-container *ngIf="activatedIssueTask">
|
||||
<div *ngIf="activatedIssueTask.issueType" class="info-text">
|
||||
<div
|
||||
*ngIf="activatedIssueTask.issueType"
|
||||
class="info-text"
|
||||
>
|
||||
{{T.F.TASK.ADD_TASK_BAR.ADD_ISSUE_TASK|translate:{ issueType:
|
||||
activatedIssueTask.issueType, issueNr: activatedIssueTask.taskIssueId ||
|
||||
activatedIssueTask.issueData?.id } }}
|
||||
</div>
|
||||
<div *ngIf="activatedIssueTask.issueType=== undefined" class="info-text">
|
||||
<div
|
||||
*ngIf="activatedIssueTask.issueType=== undefined"
|
||||
class="info-text"
|
||||
>
|
||||
{{T.F.TASK.ADD_TASK_BAR.ADD_EXISTING_TASK|translate: { taskTitle:
|
||||
activatedIssueTask.title } }}
|
||||
</div>
|
||||
|
@ -94,9 +106,15 @@
|
|||
*ngFor="let item of (filteredIssueSuggestions$|async); trackBy:trackByFn"
|
||||
[value]="item"
|
||||
>
|
||||
<mat-icon *ngIf="item.issueType" [svgIcon]="item.issueType|issueIcon"></mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="item.issueType"
|
||||
[svgIcon]="item.issueType|issueIcon"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="!item.issueType && !item.ctx">library_books</mat-icon>
|
||||
<tag *ngIf="item.ctx" [tag]="item.ctx"></tag>
|
||||
<tag
|
||||
*ngIf="item.ctx"
|
||||
[tag]="item.ctx"
|
||||
></tag>
|
||||
<span [innerHTML]="item?.titleHighlighted||item?.title"></span>
|
||||
</mat-option>
|
||||
</mat-autocomplete>
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<mat-dialog-content>
|
||||
<div class="form-wrapper">
|
||||
<owl-wrapper (triggerSubmit)="save()" [(dateTime)]="dateTime"></owl-wrapper>
|
||||
<owl-wrapper
|
||||
(triggerSubmit)="save()"
|
||||
[(dateTime)]="dateTime"
|
||||
></owl-wrapper>
|
||||
|
||||
<div class="additional-controls">
|
||||
<mat-form-field>
|
||||
|
@ -19,9 +22,18 @@
|
|||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<div *ngIf="isShowMoveToBacklog" class="move-to-backlog-wrapper">
|
||||
<mat-checkbox [(ngModel)]="isMoveToBacklog" name="isListSubTasks">
|
||||
<div class="text-wrap" style="max-width: 280px">
|
||||
<div
|
||||
*ngIf="isShowMoveToBacklog"
|
||||
class="move-to-backlog-wrapper"
|
||||
>
|
||||
<mat-checkbox
|
||||
[(ngModel)]="isMoveToBacklog"
|
||||
name="isListSubTasks"
|
||||
>
|
||||
<div
|
||||
class="text-wrap"
|
||||
style="max-width: 280px"
|
||||
>
|
||||
{{T.F.TASK.D_REMINDER_ADD.MOVE_TO_BACKLOG|translate}}
|
||||
</div>
|
||||
</mat-checkbox>
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
<div class="dialog-help-wrapper">
|
||||
<h1 mat-dialog-title>{{T.F.TASK.D_TIME_FOR_DAY.TITLE|translate}}</h1>
|
||||
|
||||
<form (submit)="submit()" name="addForAnotherDayForm">
|
||||
<form
|
||||
(submit)="submit()"
|
||||
name="addForAnotherDayForm"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<help-section>
|
||||
<div [innerHTML]="T.F.TASK.D_TIME_FOR_DAY.HELP|translate" class="side-info"></div>
|
||||
<div
|
||||
[innerHTML]="T.F.TASK.D_TIME_FOR_DAY.HELP|translate"
|
||||
class="side-info"
|
||||
></div>
|
||||
</help-section>
|
||||
|
||||
<h3 class="mat-caption">
|
||||
|
@ -22,7 +28,10 @@
|
|||
type="text"
|
||||
/>
|
||||
<mat-error>{{T.V.E_DATETIME|translate}}</mat-error>
|
||||
<mat-datepicker-toggle [for]="myDatepicker" matPrefix></mat-datepicker-toggle>
|
||||
<mat-datepicker-toggle
|
||||
[for]="myDatepicker"
|
||||
matPrefix
|
||||
></mat-datepicker-toggle>
|
||||
<mat-datepicker #myDatepicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
|
@ -36,11 +45,20 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button [mat-dialog-close]="true" color="primary" mat-button type="button">
|
||||
<button
|
||||
[mat-dialog-close]="true"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
<button color="primary" mat-stroked-button type="submit">
|
||||
<button
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="submit"
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.G.SAVE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,10 +1,17 @@
|
|||
<div class="dialog-help-wrapper">
|
||||
<h1 mat-dialog-title>{{T.F.TASK.D_TIME.TITLE|translate}}</h1>
|
||||
|
||||
<form (submit)="submit()" class="mat-body" name="time-estimate-form">
|
||||
<form
|
||||
(submit)="submit()"
|
||||
class="mat-body"
|
||||
name="time-estimate-form"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<help-section>
|
||||
<div [innerHTML]="T.F.TASK.D_TIME_FOR_DAY.HELP|translate" class="side-info"></div>
|
||||
<div
|
||||
[innerHTML]="T.F.TASK.D_TIME_FOR_DAY.HELP|translate"
|
||||
class="side-info"
|
||||
></div>
|
||||
</help-section>
|
||||
|
||||
<div class="wrap-time">
|
||||
|
@ -61,11 +68,21 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button [mat-dialog-close]="true" color="primary" mat-button type="button">
|
||||
<button
|
||||
[mat-dialog-close]="true"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="submit()" color="primary" mat-stroked-button type="submit">
|
||||
<button
|
||||
(click)="submit()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="submit"
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.G.SAVE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -8,8 +8,14 @@
|
|||
</h1>
|
||||
|
||||
<mat-dialog-content>
|
||||
<div [@standardList]="tasks.length" class="tasks">
|
||||
<div *ngFor="let task of tasks; trackBy:trackById " class="task">
|
||||
<div
|
||||
[@standardList]="tasks.length"
|
||||
class="tasks"
|
||||
>
|
||||
<div
|
||||
*ngFor="let task of tasks; trackBy:trackById "
|
||||
class="task"
|
||||
>
|
||||
<div class="title-wrapper">
|
||||
<div class="title">{{task.title}}</div>
|
||||
<tag-list
|
||||
|
@ -18,7 +24,10 @@
|
|||
[task]="task"
|
||||
></tag-list>
|
||||
</div>
|
||||
<div *ngIf="isMultiple" class="actions">
|
||||
<div
|
||||
*ngIf="isMultiple"
|
||||
class="actions"
|
||||
>
|
||||
<button
|
||||
(click)="dismiss(task)"
|
||||
[title]="T.G.DISMISS|translate"
|
||||
|
@ -52,15 +61,24 @@
|
|||
</button>
|
||||
|
||||
<mat-menu #snoozeMenu="matMenu">
|
||||
<button (click)="snooze(task,10)" mat-menu-item>
|
||||
<button
|
||||
(click)="snooze(task,10)"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>snooze</mat-icon>
|
||||
{{T.G.MINUTES|translate:{m: 10} }}
|
||||
</button>
|
||||
<button (click)="snooze(task,30)" mat-menu-item>
|
||||
<button
|
||||
(click)="snooze(task,30)"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>snooze</mat-icon>
|
||||
{{T.G.MINUTES|translate:{m: 30} }}
|
||||
</button>
|
||||
<button (click)="snooze(task,60)" mat-menu-item>
|
||||
<button
|
||||
(click)="snooze(task,60)"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>snooze</mat-icon>
|
||||
{{T.G.MINUTES|translate:{m: 60} }}
|
||||
</button>
|
||||
|
@ -72,11 +90,17 @@
|
|||
<mat-icon>schedule</mat-icon>
|
||||
{{T.F.TASK.D_REMINDER_VIEW.RESCHEDULE_UNTIL_TOMORROW|translate}}
|
||||
</button>
|
||||
<button (click)="dismiss(task)" mat-menu-item>
|
||||
<button
|
||||
(click)="dismiss(task)"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>alarm_off</mat-icon>
|
||||
{{T.G.DISMISS|translate}}
|
||||
</button>
|
||||
<button (click)="editReminder(task)" mat-menu-item>
|
||||
<button
|
||||
(click)="editReminder(task)"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>edit</mat-icon>
|
||||
{{T.G.EDIT|translate}}
|
||||
</button>
|
||||
|
@ -141,15 +165,27 @@
|
|||
</mat-dialog-actions>
|
||||
|
||||
<mat-menu #snoozeAllMenu="matMenu">
|
||||
<button (click)="snoozeAll(10)" [disabled]="isDisableControls" mat-menu-item>
|
||||
<button
|
||||
(click)="snoozeAll(10)"
|
||||
[disabled]="isDisableControls"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>snooze</mat-icon>
|
||||
{{T.G.MINUTES|translate:{m: 10} }}
|
||||
</button>
|
||||
<button (click)="snoozeAll(30)" [disabled]="isDisableControls" mat-menu-item>
|
||||
<button
|
||||
(click)="snoozeAll(30)"
|
||||
[disabled]="isDisableControls"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>snooze</mat-icon>
|
||||
{{T.G.MINUTES|translate:{m: 30} }}
|
||||
</button>
|
||||
<button (click)="snoozeAll(60)" [disabled]="isDisableControls" mat-menu-item>
|
||||
<button
|
||||
(click)="snoozeAll(60)"
|
||||
[disabled]="isDisableControls"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>snooze</mat-icon>
|
||||
{{T.G.MINUTES|translate:{m: 60} }}
|
||||
</button>
|
||||
|
@ -161,11 +197,19 @@
|
|||
<mat-icon>schedule</mat-icon>
|
||||
{{T.F.TASK.D_REMINDER_VIEW.RESCHEDULE_UNTIL_TOMORROW|translate}}
|
||||
</button>
|
||||
<button (click)="editReminder(tasks[0], true)" *ngIf="!isMultiple" mat-menu-item>
|
||||
<button
|
||||
(click)="editReminder(tasks[0], true)"
|
||||
*ngIf="!isMultiple"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>edit</mat-icon>
|
||||
{{T.F.TASK.D_REMINDER_VIEW.RESCHEDULE_EDIT|translate}}
|
||||
</button>
|
||||
<button (click)="dismissAll()" [disabled]="isDisableControls" mat-menu-item>
|
||||
<button
|
||||
(click)="dismissAll()"
|
||||
[disabled]="isDisableControls"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>alarm_off</mat-icon>
|
||||
{{(isMultiple ? T.F.TASK.D_REMINDER_VIEW.DISMISS_ALL : T.G.DISMISS)|translate}}
|
||||
</button>
|
||||
|
|
|
@ -7,20 +7,37 @@
|
|||
matInput
|
||||
required
|
||||
/>
|
||||
<mat-icon *ngIf="!isCreate" matSuffix="">track_changes </mat-icon>
|
||||
<mat-icon *ngIf="isCreate" matSuffix="">add </mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="!isCreate"
|
||||
matSuffix=""
|
||||
>track_changes
|
||||
</mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="isCreate"
|
||||
matSuffix=""
|
||||
>add
|
||||
</mat-icon>
|
||||
|
||||
<mat-autocomplete
|
||||
#auto="matAutocomplete"
|
||||
[autoActiveFirstOption]="true"
|
||||
[displayWith]="displayWith"
|
||||
>
|
||||
<mat-option *ngFor="let task of filteredTasks; trackBy:trackById" [value]="task">
|
||||
<mat-icon *ngIf="task.issueType" [svgIcon]="task.issueType|issueIcon"></mat-icon>
|
||||
<mat-option
|
||||
*ngFor="let task of filteredTasks; trackBy:trackById"
|
||||
[value]="task"
|
||||
>
|
||||
<mat-icon
|
||||
*ngIf="task.issueType"
|
||||
[svgIcon]="task.issueType|issueIcon"
|
||||
></mat-icon>
|
||||
<mat-icon *ngIf="!task.issueType && !projectMap[task.projectId]"
|
||||
>library_books
|
||||
</mat-icon>
|
||||
<tag *ngIf="projectMap[task.projectId]" [tag]="projectMap[task.projectId]"></tag>
|
||||
<tag
|
||||
*ngIf="projectMap[task.projectId]"
|
||||
[tag]="projectMap[task.projectId]"
|
||||
></tag>
|
||||
<span [innerHTML]="task.title"></span>
|
||||
</mat-option>
|
||||
</mat-autocomplete>
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
<ng-container *ngIf="type==='input'">
|
||||
<section (click)="onInputItemClick()" class="input-item" mat-ripple>
|
||||
<section
|
||||
(click)="onInputItemClick()"
|
||||
class="input-item"
|
||||
mat-ripple
|
||||
>
|
||||
<div class="input-item__title">
|
||||
<ng-content select="[input-title]"></ng-content>
|
||||
</div>
|
||||
|
@ -7,7 +11,11 @@
|
|||
<ng-content select="[input-value]"></ng-content>
|
||||
</div>
|
||||
|
||||
<button class="input-item__edit-btn" color="accent" mat-icon-button>
|
||||
<button
|
||||
class="input-item__edit-btn"
|
||||
color="accent"
|
||||
mat-icon-button
|
||||
>
|
||||
<mat-icon>{{inputIcon}}</mat-icon>
|
||||
</button>
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
<div class="wrapper">
|
||||
<header *ngIf="isOver|| IS_TOUCH_ONLY" class="task-title-wrapper">
|
||||
<header
|
||||
*ngIf="isOver|| IS_TOUCH_ONLY"
|
||||
class="task-title-wrapper"
|
||||
>
|
||||
<h2
|
||||
(editFinished)="updateTaskTitleIfChanged($event.isChanged, $event.newVal)"
|
||||
[isResetAfterEdit]="true"
|
||||
|
@ -30,7 +33,10 @@
|
|||
</ng-container>
|
||||
|
||||
<ng-container panel-content>
|
||||
<div *ngIf="task.subTasks && task.subTasks.length" class="sub-tasks">
|
||||
<div
|
||||
*ngIf="task.subTasks && task.subTasks.length"
|
||||
class="sub-tasks"
|
||||
>
|
||||
<task-list
|
||||
*ngIf="task.subTasks?.length"
|
||||
[@expand]
|
||||
|
@ -43,7 +49,10 @@
|
|||
></task-list>
|
||||
</div>
|
||||
<div style="text-align: center">
|
||||
<button (click)="addSubTask()" mat-button>
|
||||
<button
|
||||
(click)="addSubTask()"
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
<span>{{T.F.TASK.ADDITIONAL_INFO.ADD_SUB_TASK|translate}}</span>
|
||||
</button>
|
||||
|
@ -89,7 +98,10 @@
|
|||
<span [innerHTML]="task.timeSpent|msToString"></span>
|
||||
</span>
|
||||
<span class="separator">/</span>
|
||||
<span [innerHTML]="task.timeEstimate|msToString" class="time-val"></span>
|
||||
<span
|
||||
[innerHTML]="task.timeEstimate|msToString"
|
||||
class="time-val"
|
||||
></span>
|
||||
|
||||
<ng-container input-additional>
|
||||
<progress-bar [progress]="progress"></progress-bar>
|
||||
|
@ -217,7 +229,10 @@
|
|||
></task-attachment-list>
|
||||
|
||||
<div style="text-align: center">
|
||||
<button (click)="addAttachment()" mat-button>
|
||||
<button
|
||||
(click)="addAttachment()"
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
<span>{{T.F.TASK.ADDITIONAL_INFO.ADD_ATTACHMENT|translate}}</span>
|
||||
</button>
|
||||
|
@ -267,7 +282,10 @@
|
|||
<div class="created">Created on {{task?.created|date:'short'}}</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="isDragOver" class="bgc-accent drag-over-msg">
|
||||
<div
|
||||
*ngIf="isDragOver"
|
||||
class="bgc-accent drag-over-msg"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.TASK.CMP.DROP_ATTACHMENT|translate:{title: task?.title} }}
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<form #form="ngForm" (submit)="submit()">
|
||||
<form
|
||||
#form="ngForm"
|
||||
(submit)="submit()"
|
||||
>
|
||||
<h1 mat-dialog-title>
|
||||
{{ (attachmentCopy.id ? (T.F.ATTACHMENT.DIALOG_EDIT.EDIT_ATTACHMENT) :
|
||||
(T.F.ATTACHMENT.DIALOG_EDIT.ADD_ATTACHMENT)) |translate }}
|
||||
|
@ -46,11 +49,21 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
<button [disabled]="!form.valid" color="primary" mat-stroked-button type="submit">
|
||||
<button
|
||||
[disabled]="!form.valid"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="submit"
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.G.SAVE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<ul [@standardList]="attachments?.length" class="attachments">
|
||||
<ul
|
||||
[@standardList]="attachments?.length"
|
||||
class="attachments"
|
||||
>
|
||||
<li
|
||||
*ngFor="let attachment of attachments; let i = index; trackBy: trackByFn;"
|
||||
class="attachment"
|
||||
|
@ -27,7 +30,10 @@
|
|||
</ng-container>
|
||||
</a>
|
||||
|
||||
<div *ngIf="!isDisableControls" class="controls border-color-primary">
|
||||
<div
|
||||
*ngIf="!isDisableControls"
|
||||
class="controls border-color-primary"
|
||||
>
|
||||
<a
|
||||
class="view-btn"
|
||||
mat-flat-button
|
||||
|
@ -50,10 +56,18 @@
|
|||
<mat-icon>content_copy</mat-icon>
|
||||
</button>
|
||||
|
||||
<button (click)="openEditDialog(attachment)" class="edit-btn" mat-flat-button>
|
||||
<button
|
||||
(click)="openEditDialog(attachment)"
|
||||
class="edit-btn"
|
||||
mat-flat-button
|
||||
>
|
||||
<mat-icon>edit</mat-icon>
|
||||
</button>
|
||||
<button (click)="remove(attachment?.id)" class="trash-btn" mat-flat-button>
|
||||
<button
|
||||
(click)="remove(attachment?.id)"
|
||||
class="trash-btn"
|
||||
mat-flat-button
|
||||
>
|
||||
<mat-icon color="warn">delete_forever</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
<div *ngIf="isHideDoneIN || isHideAllIN" @expandFadeFast class="done-task-box">
|
||||
<button (click)="expandDoneTasks()" class="expand-tasks-btn" mat-button>
|
||||
<div
|
||||
*ngIf="isHideDoneIN || isHideAllIN"
|
||||
@expandFadeFast
|
||||
class="done-task-box"
|
||||
>
|
||||
<button
|
||||
(click)="expandDoneTasks()"
|
||||
class="expand-tasks-btn"
|
||||
mat-button
|
||||
>
|
||||
<!--TODO translate -->
|
||||
<em>+ {{isHideDoneIN ? doneTasksLength + ' done ' : allTasksLength}} sub tasks</em>
|
||||
<mat-icon>expand_more</mat-icon>
|
||||
|
@ -22,4 +30,9 @@
|
|||
</task>
|
||||
</div>
|
||||
|
||||
<div *ngIf="noTasksMsg && !allTasksLength" class="no-tasks">{{noTasksMsg}}</div>
|
||||
<div
|
||||
*ngIf="noTasksMsg && !allTasksLength"
|
||||
class="no-tasks"
|
||||
>
|
||||
{{noTasksMsg}}
|
||||
</div>
|
||||
|
|
|
@ -1,14 +1,30 @@
|
|||
<div class="table-wrapper mat-elevation-z1">
|
||||
<table [dataSource]="flatTasks" class="summary-table" mat-table>
|
||||
<table
|
||||
[dataSource]="flatTasks"
|
||||
class="summary-table"
|
||||
mat-table
|
||||
>
|
||||
<ng-container matColumnDef="title">
|
||||
<th *matHeaderCellDef mat-header-cell>{{T.F.TASK.SUMMARY_TABLE.TASK|translate}}</th>
|
||||
<td *matCellDef="let task" mat-cell>
|
||||
<th
|
||||
*matHeaderCellDef
|
||||
mat-header-cell
|
||||
>
|
||||
{{T.F.TASK.SUMMARY_TABLE.TASK|translate}}
|
||||
</th>
|
||||
<td
|
||||
*matCellDef="let task"
|
||||
mat-cell
|
||||
>
|
||||
<div
|
||||
[class.isDone]="task.isDone"
|
||||
[class.isSubTask]="task.parentId"
|
||||
class="task-title"
|
||||
>
|
||||
<mat-icon *ngIf="task.repeatCfgId" class="repeat-task-icon">repeat </mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="task.repeatCfgId"
|
||||
class="repeat-task-icon"
|
||||
>repeat
|
||||
</mat-icon>
|
||||
<span *ngIf="task.parentId">–</span>
|
||||
<inline-input
|
||||
(changed)="updateTaskTitle(task, $event)"
|
||||
|
@ -21,10 +37,16 @@
|
|||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="timeSpentToday">
|
||||
<th *matHeaderCellDef mat-header-cell>
|
||||
<th
|
||||
*matHeaderCellDef
|
||||
mat-header-cell
|
||||
>
|
||||
{{T.F.TASK.SUMMARY_TABLE.SPENT_TODAY|translate}}
|
||||
</th>
|
||||
<td *matCellDef="let task" mat-cell>
|
||||
<td
|
||||
*matCellDef="let task"
|
||||
mat-cell
|
||||
>
|
||||
<inline-input
|
||||
(changed)="updateTimeSpentTodayForTask(task, $event)"
|
||||
*ngIf="!task.subTaskIds?.length"
|
||||
|
@ -40,22 +62,44 @@
|
|||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="timeSpentTotal">
|
||||
<th *matHeaderCellDef mat-header-cell>
|
||||
<th
|
||||
*matHeaderCellDef
|
||||
mat-header-cell
|
||||
>
|
||||
{{T.F.TASK.SUMMARY_TABLE.SPENT_TOTAL|translate}}
|
||||
</th>
|
||||
<td *matCellDef="let task" mat-cell>{{task.timeSpent|msToClockString}}</td>
|
||||
<td
|
||||
*matCellDef="let task"
|
||||
mat-cell
|
||||
>
|
||||
{{task.timeSpent|msToClockString}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="timeEstimate">
|
||||
<th *matHeaderCellDef mat-header-cell>
|
||||
<th
|
||||
*matHeaderCellDef
|
||||
mat-header-cell
|
||||
>
|
||||
{{T.F.TASK.SUMMARY_TABLE.ESTIMATE|translate}}
|
||||
</th>
|
||||
<td *matCellDef="let task" mat-cell>{{task.timeEstimate|msToClockString}}</td>
|
||||
<td
|
||||
*matCellDef="let task"
|
||||
mat-cell
|
||||
>
|
||||
{{task.timeEstimate|msToClockString}}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="done">
|
||||
<th *matHeaderCellDef mat-header-cell></th>
|
||||
<td *matCellDef="let task" mat-cell>
|
||||
<th
|
||||
*matHeaderCellDef
|
||||
mat-header-cell
|
||||
></th>
|
||||
<td
|
||||
*matCellDef="let task"
|
||||
mat-cell
|
||||
>
|
||||
<button
|
||||
(click)="toggleTaskDone(task)"
|
||||
[class.isDone]="task.isDone"
|
||||
|
@ -63,8 +107,16 @@
|
|||
class="check-done"
|
||||
mat-icon-button
|
||||
>
|
||||
<mat-icon aria-label="Mark as undone" class="undo">undo </mat-icon>
|
||||
<mat-icon aria-label="Mark as done" class="check">check </mat-icon>
|
||||
<mat-icon
|
||||
aria-label="Mark as undone"
|
||||
class="undo"
|
||||
>undo
|
||||
</mat-icon>
|
||||
<mat-icon
|
||||
aria-label="Mark as done"
|
||||
class="check"
|
||||
>check
|
||||
</mat-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
|
|
@ -34,32 +34,57 @@
|
|||
<mat-icon>restore</mat-icon>
|
||||
{{T.PDS.ROUND_TIME_SPENT|translate}}
|
||||
</button>
|
||||
<button (click)="showExportModal(project.id)" *ngIf="isForToday" mat-button>
|
||||
<button
|
||||
(click)="showExportModal(project.id)"
|
||||
*ngIf="isForToday"
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>call_made</mat-icon>
|
||||
{{T.PDS.EXPORT_TASK_LIST|translate}}
|
||||
</button>
|
||||
|
||||
<mat-menu #roundTimeActions="matMenu">
|
||||
<ng-template matMenuContent>
|
||||
<button mat-menu-item style="color: red">
|
||||
<button
|
||||
mat-menu-item
|
||||
style="color: red"
|
||||
>
|
||||
{{T.PDS.ROUND_TIME_WARNING|translate}}
|
||||
</button>
|
||||
<button (click)="roundTimeForTasks(project.id,'5M')" mat-menu-item>
|
||||
<button
|
||||
(click)="roundTimeForTasks(project.id,'5M')"
|
||||
mat-menu-item
|
||||
>
|
||||
{{T.PDS.ROUND_5M|translate}}
|
||||
</button>
|
||||
<button (click)="roundTimeForTasks(project.id,'5M', true)" mat-menu-item>
|
||||
<button
|
||||
(click)="roundTimeForTasks(project.id,'5M', true)"
|
||||
mat-menu-item
|
||||
>
|
||||
{{T.PDS.ROUND_UP_5M|translate}}
|
||||
</button>
|
||||
<button (click)="roundTimeForTasks(project.id,'QUARTER')" mat-menu-item>
|
||||
<button
|
||||
(click)="roundTimeForTasks(project.id,'QUARTER')"
|
||||
mat-menu-item
|
||||
>
|
||||
{{T.PDS.ROUND_15M|translate}}
|
||||
</button>
|
||||
<button (click)="roundTimeForTasks(project.id,'QUARTER', true)" mat-menu-item>
|
||||
<button
|
||||
(click)="roundTimeForTasks(project.id,'QUARTER', true)"
|
||||
mat-menu-item
|
||||
>
|
||||
{{T.PDS.ROUND_UP_15M|translate}}
|
||||
</button>
|
||||
<button (click)="roundTimeForTasks(project.id,'HALF')" mat-menu-item>
|
||||
<button
|
||||
(click)="roundTimeForTasks(project.id,'HALF')"
|
||||
mat-menu-item
|
||||
>
|
||||
{{T.PDS.ROUND_30M|translate}}
|
||||
</button>
|
||||
<button (click)="roundTimeForTasks(project.id,'HALF', true)" mat-menu-item>
|
||||
<button
|
||||
(click)="roundTimeForTasks(project.id,'HALF', true)"
|
||||
mat-menu-item
|
||||
>
|
||||
{{T.PDS.ROUND_UP_30M|translate}}
|
||||
</button>
|
||||
</ng-template>
|
||||
|
|
|
@ -1,14 +1,23 @@
|
|||
<ng-container *ngIf="IS_TOUCH_ONLY">
|
||||
<div #blockLeftEl class="block-left bg-400">
|
||||
<div
|
||||
#blockLeftEl
|
||||
class="block-left bg-400"
|
||||
>
|
||||
<mat-icon *ngIf="!task.isDone">check</mat-icon>
|
||||
<mat-icon *ngIf="task.isDone">undo</mat-icon>
|
||||
</div>
|
||||
|
||||
<div #blockRightEl class="block-right bg-400">
|
||||
<div
|
||||
#blockRightEl
|
||||
class="block-right bg-400"
|
||||
>
|
||||
<!--NOTE: non observable should be enough as we only need the initial value-->
|
||||
<ng-container *ngIf="workContextService.isToday">
|
||||
<mat-icon *ngIf="!(task.repeatCfgId)">alarm</mat-icon>
|
||||
<mat-icon *ngIf="(task.repeatCfgId)" svgIcon="repeat"></mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="(task.repeatCfgId)"
|
||||
svgIcon="repeat"
|
||||
></mat-icon>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="!workContextService.isToday">
|
||||
<mat-icon *ngIf="!task.tagIds.includes(TODAY_TAG_ID)">wb_sunny</mat-icon>
|
||||
|
@ -20,7 +29,10 @@
|
|||
</div>
|
||||
</ng-container>
|
||||
|
||||
<div #innerWrapperEl class="inner-wrapper">
|
||||
<div
|
||||
#innerWrapperEl
|
||||
class="inner-wrapper"
|
||||
>
|
||||
<div
|
||||
#contextMenuTriggerEl
|
||||
[matMenuTriggerFor]="contextMenu"
|
||||
|
@ -57,8 +69,16 @@
|
|||
class="check-done"
|
||||
mat-icon-button
|
||||
>
|
||||
<mat-icon @swirl class="undo">undo </mat-icon>
|
||||
<mat-icon @swirl class="check">check </mat-icon>
|
||||
<mat-icon
|
||||
@swirl
|
||||
class="undo"
|
||||
>undo
|
||||
</mat-icon>
|
||||
<mat-icon
|
||||
@swirl
|
||||
class="check"
|
||||
>check
|
||||
</mat-icon>
|
||||
</button>
|
||||
|
||||
<div class="title-and-left-btns-wrapper">
|
||||
|
@ -67,8 +87,15 @@
|
|||
[class.handle-sub]="task.parentId"
|
||||
class="drag-handle"
|
||||
>
|
||||
<mat-icon class="drag-handle-ico" svgIcon="drag_handle"></mat-icon>
|
||||
<mat-icon *ngIf="isCurrent" class="play-icon-indicator">play_arrow </mat-icon>
|
||||
<mat-icon
|
||||
class="drag-handle-ico"
|
||||
svgIcon="drag_handle"
|
||||
></mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="isCurrent"
|
||||
class="play-icon-indicator"
|
||||
>play_arrow
|
||||
</mat-icon>
|
||||
|
||||
<div class="type-ico-wrapper">
|
||||
<mat-icon
|
||||
|
@ -79,8 +106,14 @@
|
|||
>
|
||||
</mat-icon>
|
||||
|
||||
<div *ngIf="task.issueId" class="task-type-ico">
|
||||
<div *ngIf="task.issuePoints" class="mini-badge bgc-primary">
|
||||
<div
|
||||
*ngIf="task.issueId"
|
||||
class="task-type-ico"
|
||||
>
|
||||
<div
|
||||
*ngIf="task.issuePoints"
|
||||
class="mini-badge bgc-primary"
|
||||
>
|
||||
{{task.issuePoints}}
|
||||
</div>
|
||||
<mat-icon [svgIcon]="task.issueType|issueIcon"></mat-icon>
|
||||
|
@ -92,7 +125,10 @@
|
|||
(click)="IS_TOUCH_ONLY && toggleShowAdditionalInfoOpen($event)"
|
||||
class="title-and-tags-wrapper"
|
||||
>
|
||||
<div class="parent-title" *ngIf="isShowParentTitle && task.parentId">
|
||||
<div
|
||||
class="parent-title"
|
||||
*ngIf="isShowParentTitle && task.parentId"
|
||||
>
|
||||
<div
|
||||
class="dot"
|
||||
*ngIf="(projectColor$|async) as projectColor"
|
||||
|
@ -113,7 +149,10 @@
|
|||
|
||||
<div class="task-title show-only-on-touch-only">{{task.title}}</div>
|
||||
|
||||
<tag-list *ngIf="!task.parentId || isDev" [task]="task"></tag-list>
|
||||
<tag-list
|
||||
*ngIf="!task.parentId || isDev"
|
||||
[task]="task"
|
||||
></tag-list>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -124,15 +163,24 @@
|
|||
[class.isEditable]="!task.subTasks?.length"
|
||||
class="time-wrapper"
|
||||
>
|
||||
<div *ngIf="!task.subTasks?.length" class="time">
|
||||
<div
|
||||
*ngIf="!task.subTasks?.length"
|
||||
class="time"
|
||||
>
|
||||
<div class="time-val">
|
||||
<span [innerHTML]="task.timeSpent|msToString"></span>
|
||||
</div>
|
||||
<div class="separator">/</div>
|
||||
<div [innerHTML]="task.timeEstimate|msToString" class="time-val"></div>
|
||||
<div
|
||||
[innerHTML]="task.timeEstimate|msToString"
|
||||
class="time-val"
|
||||
></div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="task.subTasks?.length" class="time">
|
||||
<div
|
||||
*ngIf="task.subTasks?.length"
|
||||
class="time"
|
||||
>
|
||||
<div class="time-val">
|
||||
<span>∑</span>
|
||||
<span [innerHTML]="task.subTasks|subTaskTotalTimeSpent|msToString"></span>
|
||||
|
@ -146,7 +194,10 @@
|
|||
</div>
|
||||
|
||||
<div class="controls">
|
||||
<div *ngIf="isFirstLineHover && !IS_TOUCH_ONLY" class="hover-controls">
|
||||
<div
|
||||
*ngIf="isFirstLineHover && !IS_TOUCH_ONLY"
|
||||
class="hover-controls"
|
||||
>
|
||||
<button
|
||||
(click)="startTask()"
|
||||
*ngIf="!task.isDone && !isCurrent && !task.subTasks?.length"
|
||||
|
@ -155,7 +206,10 @@
|
|||
color=""
|
||||
mat-icon-button
|
||||
>
|
||||
<mat-icon class="play-icon" svgIcon="play"></mat-icon>
|
||||
<mat-icon
|
||||
class="play-icon"
|
||||
svgIcon="play"
|
||||
></mat-icon>
|
||||
</button>
|
||||
|
||||
<button
|
||||
|
@ -213,7 +267,11 @@
|
|||
<mat-icon *ngIf="!task.issueWasUpdated"></mat-icon>
|
||||
<!-- <mat-icon *ngIf="!task.issueWasUpdated">toc</mat-icon>-->
|
||||
<!-- <mat-icon *ngIf="!task.issueWasUpdated">chevron_right</mat-icon>-->
|
||||
<mat-icon *ngIf="task.issueWasUpdated" color="accent">update </mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="task.issueWasUpdated"
|
||||
color="accent"
|
||||
>update
|
||||
</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
@ -251,20 +309,29 @@
|
|||
>
|
||||
<mat-icon *ngIf="!task.issueWasUpdated && !isSelected">chat</mat-icon>
|
||||
<mat-icon *ngIf="!task.issueWasUpdated && isSelected">close</mat-icon>
|
||||
<mat-icon *ngIf="task.issueWasUpdated" class="updated-icon" color="accent"
|
||||
<mat-icon
|
||||
*ngIf="task.issueWasUpdated"
|
||||
class="updated-icon"
|
||||
color="accent"
|
||||
>update
|
||||
</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-menu #contextMenu="matMenu" (close)="focusSelf()">
|
||||
<mat-menu
|
||||
#contextMenu="matMenu"
|
||||
(close)="focusSelf()"
|
||||
>
|
||||
<ng-template matMenuContent>
|
||||
<button
|
||||
(click)="startTask()"
|
||||
*ngIf="IS_TOUCH_ONLY && !task.isDone && !isCurrent && !task.subTasks?.length"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon class="play-icon" svgIcon="play"></mat-icon>
|
||||
<mat-icon
|
||||
class="play-icon"
|
||||
svgIcon="play"
|
||||
></mat-icon>
|
||||
{{T.F.TASK.CMP.TRACK_TIME|translate}}
|
||||
</button>
|
||||
<button
|
||||
|
@ -295,7 +362,10 @@
|
|||
{{T.F.TASK.CMP.OPEN_TIME|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="editReminder()" mat-menu-item>
|
||||
<button
|
||||
(click)="editReminder()"
|
||||
mat-menu-item
|
||||
>
|
||||
<ng-container *ngIf="!task.reminderId">
|
||||
<mat-icon>alarm_add</mat-icon>
|
||||
{{T.F.TASK.CMP.SCHEDULE|translate}}
|
||||
|
@ -315,7 +385,11 @@
|
|||
{{T.F.TASK.CMP.ADD_SUB_TASK|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="addAttachment();" class="hide-xs" mat-menu-item>
|
||||
<button
|
||||
(click)="addAttachment();"
|
||||
class="hide-xs"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>attachment</mat-icon>
|
||||
{{T.F.TASK.CMP.OPEN_ATTACH|translate}}
|
||||
</button>
|
||||
|
@ -332,7 +406,11 @@
|
|||
{{T.F.TASK.CMP.OPEN_ISSUE|translate}}
|
||||
</a>
|
||||
|
||||
<button (click)="updateIssueData()" *ngIf="task.issueId" mat-menu-item>
|
||||
<button
|
||||
(click)="updateIssueData()"
|
||||
*ngIf="task.issueId"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon [svgIcon]="task.issueType|issueIcon"></mat-icon>
|
||||
{{T.F.TASK.CMP.UPDATE_ISSUE_DATA|translate}}
|
||||
</button>
|
||||
|
@ -355,7 +433,11 @@
|
|||
{{T.F.TASK.CMP.MOVE_TO_TODAY|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="editTags();" *ngIf="!task.parentId" mat-menu-item>
|
||||
<button
|
||||
(click)="editTags();"
|
||||
*ngIf="!task.parentId"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>style</mat-icon>
|
||||
{{T.F.TASK.CMP.EDIT_TAGS|translate}}
|
||||
</button>
|
||||
|
@ -370,12 +452,20 @@
|
|||
T.F.TASK.CMP.ADD_TO_PROJECT)|translate}}
|
||||
</button>
|
||||
|
||||
<button *ngIf="task.parentId" (click)="convertToMainTask()" mat-menu-item>
|
||||
<button
|
||||
*ngIf="task.parentId"
|
||||
(click)="convertToMainTask()"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon>subdirectory_arrow_left</mat-icon>
|
||||
{{(T.F.TASK.CMP.CONVERT_TO_PARENT_TASK)|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="deleteTask(true)" class="color-warn" mat-menu-item>
|
||||
<button
|
||||
(click)="deleteTask(true)"
|
||||
class="color-warn"
|
||||
mat-menu-item
|
||||
>
|
||||
<mat-icon class="color-warn-i">delete_forever</mat-icon>
|
||||
{{(task.repeatCfgId ? T.F.TASK.CMP.DELETE_REPEAT_INSTANCE :
|
||||
T.F.TASK.CMP.DELETE)|translate}}
|
||||
|
@ -383,7 +473,10 @@
|
|||
</ng-template>
|
||||
</mat-menu>
|
||||
|
||||
<mat-menu #projectMenu="matMenu" (closed)="focusSelf()">
|
||||
<mat-menu
|
||||
#projectMenu="matMenu"
|
||||
(closed)="focusSelf()"
|
||||
>
|
||||
<ng-template matMenuContent>
|
||||
<button
|
||||
(click)="moveTaskToProject(project.id)"
|
||||
|
@ -404,7 +497,10 @@
|
|||
[progress]="progress"
|
||||
></progress-bar>
|
||||
|
||||
<div *ngIf="task.subTasks?.length" class="sub-tasks">
|
||||
<div
|
||||
*ngIf="task.subTasks?.length"
|
||||
class="sub-tasks"
|
||||
>
|
||||
<button
|
||||
(click)="toggleSubTaskMode()"
|
||||
*ngIf="task.subTasks?.length"
|
||||
|
@ -434,7 +530,10 @@
|
|||
></task-list>
|
||||
</div>
|
||||
|
||||
<div *ngIf="isDragOver" class="bgc-accent drag-over-msg">
|
||||
<div
|
||||
*ngIf="isDragOver"
|
||||
class="bgc-accent drag-over-msg"
|
||||
>
|
||||
<mat-icon>add</mat-icon>
|
||||
{{T.F.TASK.CMP.DROP_ATTACHMENT|translate:{title: task.title} }}
|
||||
</div>
|
||||
|
|
|
@ -3,9 +3,15 @@
|
|||
<span style="margin-left: 8px">{{T.F.TIMELINE.D_INITIAL.TITLE|translate}}</span>
|
||||
</h1>
|
||||
|
||||
<form (submit)="saveAndClose()" [formGroup]="formGroup">
|
||||
<form
|
||||
(submit)="saveAndClose()"
|
||||
[formGroup]="formGroup"
|
||||
>
|
||||
<mat-dialog-content>
|
||||
<div class="text" [innerHTML]="T.F.TIMELINE.D_INITIAL.TEXT|translate"></div>
|
||||
<div
|
||||
class="text"
|
||||
[innerHTML]="T.F.TIMELINE.D_INITIAL.TEXT|translate"
|
||||
></div>
|
||||
|
||||
<formly-form
|
||||
(modelChange)="timelineCfg=$event"
|
||||
|
@ -17,7 +23,12 @@
|
|||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button (click)="close()" color="primary" mat-button type="button">
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
<div *ngIf="repeatCfg" class="repeat-task-projection" (click)="editTaskRepeatCfg()">
|
||||
<div
|
||||
*ngIf="repeatCfg"
|
||||
class="repeat-task-projection"
|
||||
(click)="editTaskRepeatCfg()"
|
||||
>
|
||||
<mat-icon svgIcon="repeat"></mat-icon>
|
||||
<div class="title">
|
||||
{{repeatCfg.title}}
|
||||
|
|
|
@ -1,12 +1,24 @@
|
|||
<right-panel *ngIf="timelineEntries$|async as timelineEntries">
|
||||
<div class="wrapper">
|
||||
<div class="inner-wrapper" [@standardList]="timelineEntries.length">
|
||||
<div *ngIf="!timelineEntries.length" class="no-tasks-msg">
|
||||
<div
|
||||
class="inner-wrapper"
|
||||
[@standardList]="timelineEntries.length"
|
||||
>
|
||||
<div
|
||||
*ngIf="!timelineEntries.length"
|
||||
class="no-tasks-msg"
|
||||
>
|
||||
{{T.F.TIMELINE.NO_TASKS|translate}}
|
||||
</div>
|
||||
|
||||
<div class="row" *ngFor="let row of timelineEntries; trackBy: trackByFn">
|
||||
<div class="col time" [class.hasTime]="!row.isHideTime">
|
||||
<div
|
||||
class="row"
|
||||
*ngFor="let row of timelineEntries; trackBy: trackByFn"
|
||||
>
|
||||
<div
|
||||
class="col time"
|
||||
[class.hasTime]="!row.isHideTime"
|
||||
>
|
||||
<div *ngIf="!row.isHideTime">
|
||||
<div>
|
||||
{{ row.start <= now ? (T.F.TIMELINE.NOW|translate) :
|
||||
|
@ -21,10 +33,16 @@
|
|||
*ngIf="(row.type ===TimelineViewEntryType.Task || row.type ===TimelineViewEntryType.SplitTask) && row.data.id !== (taskService.currentTaskId$|async)"
|
||||
class="up-down"
|
||||
>
|
||||
<button mat-icon-button (click)="moveUp(row.data)">
|
||||
<button
|
||||
mat-icon-button
|
||||
(click)="moveUp(row.data)"
|
||||
>
|
||||
<mat-icon>arrow_upward</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button (click)="moveDown(row.data)">
|
||||
<button
|
||||
mat-icon-button
|
||||
(click)="moveDown(row.data)"
|
||||
>
|
||||
<mat-icon>arrow_downward</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -33,12 +51,19 @@
|
|||
*ngIf="(row.type ===TimelineViewEntryType.ScheduledTask)"
|
||||
class="scheduled-extra-btn"
|
||||
>
|
||||
<button mat-mini-fab (click)="editTaskReminder(row.data)" color="primary">
|
||||
<button
|
||||
mat-mini-fab
|
||||
(click)="editTaskReminder(row.data)"
|
||||
color="primary"
|
||||
>
|
||||
<mat-icon>alarm</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col right" [ngSwitch]="row.type">
|
||||
<div
|
||||
class="col right"
|
||||
[ngSwitch]="row.type"
|
||||
>
|
||||
<task
|
||||
*ngSwitchCase="TimelineViewEntryType.Task"
|
||||
showParentTitle="yes"
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
<form (submit)="track()">
|
||||
<div class="dialog-content" mat-dialog-content>
|
||||
<div
|
||||
class="dialog-content"
|
||||
mat-dialog-content
|
||||
>
|
||||
<p>{{T.F.TIME_TRACKING.D_TRACKING_REMINDER.UNTRACKED_TIME|translate}}</p>
|
||||
<div class="time">{{data.remindCounter$|async|msToString:true}}</div>
|
||||
|
||||
|
@ -20,8 +23,16 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div align="center" mat-dialog-actions>
|
||||
<button (click)="cancel()" color="" mat-button type="button">
|
||||
<div
|
||||
align="center"
|
||||
mat-dialog-actions
|
||||
>
|
||||
<button
|
||||
(click)="cancel()"
|
||||
color=""
|
||||
mat-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>close</mat-icon>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
|
|
|
@ -3,7 +3,10 @@
|
|||
<mat-dialog-content>
|
||||
<p>{{T.F.WELCOME.D_WELCOME.T1|translate}}</p>
|
||||
|
||||
<p *ngIf="IS_TOUCH_ONLY" [innerHTML]="T.F.WELCOME.D_WELCOME.MOBILE_INFO|translate"></p>
|
||||
<p
|
||||
*ngIf="IS_TOUCH_ONLY"
|
||||
[innerHTML]="T.F.WELCOME.D_WELCOME.MOBILE_INFO|translate"
|
||||
></p>
|
||||
|
||||
<p>{{T.F.WELCOME.D_WELCOME.T2|translate}}</p>
|
||||
<ul>
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
<div class="wrapper">
|
||||
<div class="task-list-wrapper" *ngIf="(ready$|async) else spinner">
|
||||
<div
|
||||
class="task-list-wrapper"
|
||||
*ngIf="(ready$|async) else spinner"
|
||||
>
|
||||
<task-list
|
||||
[isBacklog]="true"
|
||||
[noTasksMsg]="T.BL.NO_TASKS|translate"
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<div [class.isHideShadow]="pos>10" class="handle bgc-600">
|
||||
<div
|
||||
[class.isHideShadow]="pos>10"
|
||||
class="handle bgc-600"
|
||||
>
|
||||
<button
|
||||
#buttonEl
|
||||
(dblclick)="toggle()"
|
||||
|
@ -8,7 +11,11 @@
|
|||
color="primary"
|
||||
mat-fab
|
||||
>
|
||||
<span *ngIf="counter" class="counter">{{counter}}</span>
|
||||
<span
|
||||
*ngIf="counter"
|
||||
class="counter"
|
||||
>{{counter}}</span
|
||||
>
|
||||
<mat-icon>library_books</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -2,8 +2,14 @@
|
|||
*ngIf="!(workContextService.isContextChangingWithDelay$|async)"
|
||||
@projectChange
|
||||
>
|
||||
<div #containerEl class="wrapper">
|
||||
<div #splitTopEl class="today">
|
||||
<div
|
||||
#containerEl
|
||||
class="wrapper"
|
||||
>
|
||||
<div
|
||||
#splitTopEl
|
||||
class="today"
|
||||
>
|
||||
<header class="work-view-header">
|
||||
<div
|
||||
*ngIf="!(planningModeService.isPlanningMode$|async)"
|
||||
|
@ -16,7 +22,10 @@
|
|||
~<strong class="time-val"
|
||||
>{{workContextService.estimateRemainingToday$|async|msToString}}</strong
|
||||
>
|
||||
<mat-icon style="margin-left: 2px" svgIcon="estimate_remaining"></mat-icon>
|
||||
<mat-icon
|
||||
style="margin-left: 2px"
|
||||
svgIcon="estimate_remaining"
|
||||
></mat-icon>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
@ -30,7 +39,10 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="isShowTimeWorkedWithoutBreak" class="item">
|
||||
<div
|
||||
*ngIf="isShowTimeWorkedWithoutBreak"
|
||||
class="item"
|
||||
>
|
||||
<span class="label">{{T.WW.WITHOUT_BREAK|translate}} </span>
|
||||
<span class="no-wrap">
|
||||
<strong class="time-val"
|
||||
|
@ -41,7 +53,11 @@
|
|||
[matTooltip]="T.WW.RESET_BREAK_TIMER|translate"
|
||||
class="take-a-break-reset-btn"
|
||||
>
|
||||
<button (click)="resetBreakTimer()" color="lighter" mat-mini-fab>
|
||||
<button
|
||||
(click)="resetBreakTimer()"
|
||||
color="lighter"
|
||||
mat-mini-fab
|
||||
>
|
||||
<mat-icon>timer_off</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -52,10 +68,16 @@
|
|||
*ngIf="(planningModeService.isPlanningMode$|async)"
|
||||
class="planning-mode-header"
|
||||
>
|
||||
<h3 *ngIf="!(undoneTasks?.length)" class="planning-mode-header mat-h3">
|
||||
<h3
|
||||
*ngIf="!(undoneTasks?.length)"
|
||||
class="planning-mode-header mat-h3"
|
||||
>
|
||||
{{T.WW.ADD_SOME_TASKS|translate}}
|
||||
</h3>
|
||||
<div *ngIf="undoneTasks?.length" class="status-bar">
|
||||
<div
|
||||
*ngIf="undoneTasks?.length"
|
||||
class="status-bar"
|
||||
>
|
||||
<div class="item">
|
||||
<span class="label">{{T.WW.TIME_ESTIMATED|translate}}</span>
|
||||
<span class="no-wrap">
|
||||
|
@ -83,7 +105,12 @@
|
|||
<h2>{{T.WW.NO_PLANNED_TASKS|translate}}</h2>
|
||||
|
||||
<div class="btn-wrapper">
|
||||
<button (click)="planMore()" color="" mat-flat-button tabindex="1">
|
||||
<button
|
||||
(click)="planMore()"
|
||||
color=""
|
||||
mat-flat-button
|
||||
tabindex="1"
|
||||
>
|
||||
<mat-icon>playlist_add</mat-icon>
|
||||
{{T.WW.ADD_MORE|translate}}
|
||||
</button>
|
||||
|
@ -186,7 +213,11 @@
|
|||
{{T.WW.READY_TO_WORK|translate}}
|
||||
</button>
|
||||
</div>
|
||||
<task-list [tasks]="undoneTasks" listId="PARENT" listModelId="UNDONE"></task-list>
|
||||
<task-list
|
||||
[tasks]="undoneTasks"
|
||||
listId="PARENT"
|
||||
listModelId="UNDONE"
|
||||
></task-list>
|
||||
|
||||
<div
|
||||
*ngIf="!(planningModeService.isPlanningMode$|async) || (doneTasks)?.length"
|
||||
|
@ -258,7 +289,11 @@
|
|||
[splitPos]="splitInputPos"
|
||||
[splitTopEl]="splitTopEl"
|
||||
></split>
|
||||
<div *ngIf="splitInputPos!==100" class="inner-wrapper" style="user-select: none">
|
||||
<div
|
||||
*ngIf="splitInputPos!==100"
|
||||
class="inner-wrapper"
|
||||
style="user-select: none"
|
||||
>
|
||||
<backlog
|
||||
(closeBacklog)="splitInputPos=100"
|
||||
[backlogTasks]="backlogTasks"
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<div class="dialog-content" mat-dialog-content>
|
||||
<div
|
||||
class="dialog-content"
|
||||
mat-dialog-content
|
||||
>
|
||||
<textarea
|
||||
[(ngModel)]="txt"
|
||||
[hidden]="!isShowAsText"
|
||||
|
@ -45,7 +48,10 @@
|
|||
matTooltipPosition="above"
|
||||
>
|
||||
<mat-option><em>remove</em></mat-option>
|
||||
<mat-option *ngFor="let colOpt of colOpts" [value]="colOpt.id">
|
||||
<mat-option
|
||||
*ngFor="let colOpt of colOpts"
|
||||
[value]="colOpt.id"
|
||||
>
|
||||
{{colOpt.title|translate}}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
|
@ -89,7 +95,10 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<mat-form-field *ngIf="(isWorklogExport)" class="md-block">
|
||||
<mat-form-field
|
||||
*ngIf="(isWorklogExport)"
|
||||
class="md-block"
|
||||
>
|
||||
<label>{{T.F.WORKLOG.EXPORT.SEPARATE_TASKS_BY|translate}}</label>
|
||||
<input
|
||||
(change)="onOptionsChange()"
|
||||
|
@ -178,7 +187,10 @@
|
|||
</collapsible>
|
||||
</div>
|
||||
|
||||
<div align="end" mat-dialog-actions>
|
||||
<div
|
||||
align="end"
|
||||
mat-dialog-actions
|
||||
>
|
||||
<button
|
||||
*ngIf="isShowAsText"
|
||||
color="primary"
|
||||
|
@ -191,7 +203,12 @@
|
|||
{{T.F.WORKLOG.EXPORT.COPY_TO_CLIPBOARD|translate}}
|
||||
</button>
|
||||
|
||||
<a [simpleDownloadData]="txt" [simpleDownload]="fileName" color="primary" mat-button>
|
||||
<a
|
||||
[simpleDownloadData]="txt"
|
||||
[simpleDownload]="fileName"
|
||||
color="primary"
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>file_download</mat-icon>
|
||||
{{T.F.WORKLOG.EXPORT.SAVE_TO_FILE|translate}}
|
||||
</a>
|
||||
|
|
|
@ -7,16 +7,26 @@
|
|||
class="day"
|
||||
>
|
||||
<div class="material-table">
|
||||
<div (click)="visibility[i]=!visibility[i];" class="caption" mat-ripple>
|
||||
<div
|
||||
(click)="visibility[i]=!visibility[i];"
|
||||
class="caption"
|
||||
mat-ripple
|
||||
>
|
||||
<div>
|
||||
<span *ngIf="visibility[i]" [@fade]
|
||||
<span
|
||||
*ngIf="visibility[i]"
|
||||
[@fade]
|
||||
>{{T.F.WORKLOG.WEEK.TITLE|translate}}</span
|
||||
>
|
||||
</div>
|
||||
<div class="center-box">
|
||||
<div class="title">
|
||||
<h3 class="mat-h3">{{day.value.dayStr}} {{day.key}}.</h3>
|
||||
<div *ngIf="!visibility[i]" [@expandFade] class="icon-indicator-bar">
|
||||
<div
|
||||
*ngIf="!visibility[i]"
|
||||
[@expandFade]
|
||||
class="icon-indicator-bar"
|
||||
>
|
||||
<strong>∑ {{day.value.timeSpent|msToClockString}}</strong>
|
||||
|
||||
<mat-icon>list</mat-icon>
|
||||
|
@ -33,10 +43,16 @@
|
|||
class="simple-counter-item"
|
||||
>
|
||||
<mat-icon inline="true">{{sc.iconOn || sc.icon}}</mat-icon>
|
||||
<div *ngIf="sc.type==='ClickCounter'" class="count">
|
||||
<div
|
||||
*ngIf="sc.type==='ClickCounter'"
|
||||
class="count"
|
||||
>
|
||||
{{sc.countOnDay[day.value.dateStr] || 0}}
|
||||
</div>
|
||||
<div *ngIf="sc.type==='StopWatch'" class="count">
|
||||
<div
|
||||
*ngIf="sc.type==='StopWatch'"
|
||||
class="count"
|
||||
>
|
||||
{{sc.countOnDay[day.value.dateStr] || 0|msToMinuteClockString}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -45,13 +61,25 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="with-icon">
|
||||
<mat-icon *ngIf="visibility[i]" [@fade]>timer </mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="visibility[i]"
|
||||
[@fade]
|
||||
>timer
|
||||
</mat-icon>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table *ngIf="visibility[i]" [@expandFade] class="task-summary-table">
|
||||
<table
|
||||
*ngIf="visibility[i]"
|
||||
[@expandFade]
|
||||
class="task-summary-table"
|
||||
>
|
||||
<tr *ngFor="let logEntry of day.value.logEntries; trackBy: trackByLogEntry;">
|
||||
<td [class.isSubTask]="logEntry.task.parentId" class="title" colspan>
|
||||
<td
|
||||
[class.isSubTask]="logEntry.task.parentId"
|
||||
class="title"
|
||||
colspan
|
||||
>
|
||||
<span class="task-title">{{logEntry.task.title}}</span>
|
||||
</td>
|
||||
<td class="worked">
|
||||
|
@ -86,7 +114,11 @@
|
|||
</div>
|
||||
|
||||
<div style="text-align: center; margin-top: 12px">
|
||||
<button (click)="exportData()" color="" mat-button>
|
||||
<button
|
||||
(click)="exportData()"
|
||||
color=""
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>call_made</mat-icon>
|
||||
{{T.F.WORKLOG.WEEK.EXPORT|translate}}
|
||||
</button>
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
<full-page-spinner></full-page-spinner>
|
||||
</ng-template>
|
||||
|
||||
<div *ngIf="worklogService.worklogData$|async as wData; else spinner" [@fade]>
|
||||
<div
|
||||
*ngIf="worklogService.worklogData$|async as wData; else spinner"
|
||||
[@fade]
|
||||
>
|
||||
<h1 class="mat-headline total-time">
|
||||
{{T.F.WORKLOG.CMP.TOTAL_TIME|translate }} <br /><strong
|
||||
>{{wData.totalTimeSpent|msToString}}</strong
|
||||
|
@ -14,7 +17,10 @@
|
|||
*ngFor="let year of (wData.worklog|keyvalue:sortWorklogItems); trackBy: trackByKey;"
|
||||
class="year"
|
||||
>
|
||||
<h1 [innerHtml]="year.key" class="year-title mat-headline"></h1>
|
||||
<h1
|
||||
[innerHtml]="year.key"
|
||||
class="year-title mat-headline"
|
||||
></h1>
|
||||
<div class="year-time-spent">
|
||||
{{T.F.WORKLOG.CMP.MONTH_WORKED|translate}}
|
||||
<strong>{{year.value.monthWorked}}</strong><br />
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
<button (click)="downloadBackup()" color="primary" mat-stroked-button type="button">
|
||||
<button
|
||||
(click)="downloadBackup()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>file_upload</mat-icon>
|
||||
{{T.FILE_IMEX.EXPORT_DATA|translate}}
|
||||
</button>
|
||||
|
@ -13,9 +18,20 @@
|
|||
<mat-icon>code</mat-icon>
|
||||
</button>
|
||||
|
||||
<button (click)="fileInput.click()" color="primary" mat-stroked-button type="button">
|
||||
<button
|
||||
(click)="fileInput.click()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
type="button"
|
||||
>
|
||||
<mat-icon>file_download</mat-icon>
|
||||
{{T.FILE_IMEX.IMPORT_FROM_FILE|translate}}
|
||||
</button>
|
||||
|
||||
<input #fileInput (change)="handleFileInput($event)" hidden id="file" type="file" />
|
||||
<input
|
||||
#fileInput
|
||||
(change)="handleFileInput($event)"
|
||||
hidden
|
||||
id="file"
|
||||
type="file"
|
||||
/>
|
||||
|
|
|
@ -27,12 +27,26 @@
|
|||
|
||||
<mat-dialog-actions align="end">
|
||||
<div class="wrap-buttons">
|
||||
<button (click)="close()" color="primary" mat-button>{{T.G.CANCEL|translate}}</button>
|
||||
<button (click)="close('USE_REMOTE')" color="primary" mat-stroked-button>
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
<button
|
||||
(click)="close('USE_REMOTE')"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
>
|
||||
<mat-icon>file_download</mat-icon>
|
||||
{{T.F.SYNC.D_CONFLICT.USE_REMOTE|translate}}
|
||||
</button>
|
||||
<button (click)="close('USE_LOCAL')" color="primary" mat-stroked-button>
|
||||
<button
|
||||
(click)="close('USE_LOCAL')"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
>
|
||||
<mat-icon>file_upload</mat-icon>
|
||||
{{T.F.SYNC.D_CONFLICT.USE_LOCAL|translate}}
|
||||
</button>
|
||||
|
|
|
@ -4,7 +4,11 @@
|
|||
|
||||
<mat-dialog-content>
|
||||
<p>{{T.F.SYNC.D_AUTH_CODE.FOLLOW_LINK|translate}}</p>
|
||||
<a mat-button target="_blank" mat-stroked-button [href]="data.url"
|
||||
<a
|
||||
mat-button
|
||||
target="_blank"
|
||||
mat-stroked-button
|
||||
[href]="data.url"
|
||||
>{{T.F.SYNC.D_AUTH_CODE.GET_AUTH_CODE|translate}}</a
|
||||
>
|
||||
<br />
|
||||
|
@ -12,14 +16,28 @@
|
|||
<mat-form-field>
|
||||
<mat-label>{{T.F.SYNC.D_AUTH_CODE.L_AUTH_CODE|translate}}</mat-label>
|
||||
<mat-icon matPrefix>vpn_key</mat-icon>
|
||||
<input matInput [(ngModel)]="token" />
|
||||
<input
|
||||
matInput
|
||||
[(ngModel)]="token"
|
||||
/>
|
||||
</mat-form-field>
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<div class="wrap-buttons">
|
||||
<button (click)="close()" color="primary" mat-button>{{T.G.CANCEL|translate}}</button>
|
||||
<button (click)="close(token)" [disabled]="!token" color="primary" mat-stroked-button>
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-button
|
||||
>
|
||||
{{T.G.CANCEL|translate}}
|
||||
</button>
|
||||
<button
|
||||
(click)="close(token)"
|
||||
[disabled]="!token"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{T.G.SAVE|translate}}
|
||||
</button>
|
||||
|
|
|
@ -23,7 +23,10 @@
|
|||
></config-section>
|
||||
</section>
|
||||
|
||||
<h2 class="mat-h2" style="margin-top: 32px">
|
||||
<h2
|
||||
class="mat-h2"
|
||||
style="margin-top: 32px"
|
||||
>
|
||||
{{T.PS.PRODUCTIVITY_HELPER|translate}}
|
||||
</h2>
|
||||
<section
|
||||
|
@ -37,7 +40,12 @@
|
|||
></config-section>
|
||||
</section>
|
||||
|
||||
<h2 class="mat-h2" style="margin-top: 32px">{{T.PS.SYNC_EXPORT|translate}}</h2>
|
||||
<h2
|
||||
class="mat-h2"
|
||||
style="margin-top: 32px"
|
||||
>
|
||||
{{T.PS.SYNC_EXPORT|translate}}
|
||||
</h2>
|
||||
<section
|
||||
*ngFor="let section of globalSyncProviderFormCfg; trackBy:trackBySectionKey;"
|
||||
class="config-section"
|
||||
|
@ -63,7 +71,9 @@
|
|||
>{{appVersion}}</a
|
||||
>
|
||||
–
|
||||
<a href="https://super-productivity.com/private-policy" target="_blank"
|
||||
<a
|
||||
href="https://super-productivity.com/private-policy"
|
||||
target="_blank"
|
||||
>{{T.PS.PRIVACY_POLICY|translate}}</a
|
||||
>
|
||||
–
|
||||
|
|
|
@ -5,8 +5,16 @@
|
|||
|
||||
<right-panel [isAlwaysOver]="true">
|
||||
<div class="page-wrapper">
|
||||
<div *ngIf="isForToday" style="text-align: center">
|
||||
<a class="back-btn" color="primary" mat-button routerLink="/active/tasks">
|
||||
<div
|
||||
*ngIf="isForToday"
|
||||
style="text-align: center"
|
||||
>
|
||||
<a
|
||||
class="back-btn"
|
||||
color="primary"
|
||||
mat-button
|
||||
routerLink="/active/tasks"
|
||||
>
|
||||
<mat-icon>chevron_left</mat-icon>
|
||||
{{T.PDS.BACK|translate}}
|
||||
<!--<mat-icon>playlist_play</mat-icon>-->
|
||||
|
@ -14,7 +22,10 @@
|
|||
</div>
|
||||
|
||||
<h1 class="done-headline mat-headline">
|
||||
<span *ngIf="isForToday" [innerHTML]="T.PDS.CELEBRATE|translate"></span>
|
||||
<span
|
||||
*ngIf="isForToday"
|
||||
[innerHTML]="T.PDS.CELEBRATE|translate"
|
||||
></span>
|
||||
<span *ngIf="!isForToday">{{T.PDS.SUMMARY_FOR|translate:{dayStr: dayStr} }}</span>
|
||||
</h1>
|
||||
<div class="daily-summary-summary">
|
||||
|
@ -49,7 +60,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div [title]="T.PDS.TIME_SPENT_ESTIMATE_TITLE|translate" class="summary-point">
|
||||
<div
|
||||
[title]="T.PDS.TIME_SPENT_ESTIMATE_TITLE|translate"
|
||||
class="summary-point"
|
||||
>
|
||||
<mat-icon>timer</mat-icon>
|
||||
<div class="summary-text">
|
||||
{{T.PDS.TIME_SPENT_AND_ESTIMATE_LABEL|translate}}
|
||||
|
@ -60,7 +74,10 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="(isBreakTrackingSupport$|async)" class="summary-point">
|
||||
<div
|
||||
*ngIf="(isBreakTrackingSupport$|async)"
|
||||
class="summary-point"
|
||||
>
|
||||
<mat-icon>free_breakfast</mat-icon>
|
||||
<div class="summary-text">
|
||||
{{T.PDS.BREAK_LABEL|translate}}
|
||||
|
@ -109,7 +126,10 @@
|
|||
*ngIf="!(configService.evaluation$|async)?.isHideEvaluationSheet"
|
||||
[label]="T.PDS.EVALUATION|translate"
|
||||
>
|
||||
<section class="tab-inner" style="max-width: 600px">
|
||||
<section
|
||||
class="tab-inner"
|
||||
style="max-width: 600px"
|
||||
>
|
||||
<evaluation-sheet
|
||||
(save)="onEvaluationSave()"
|
||||
[day]="(dayStr$|async)"
|
||||
|
@ -117,13 +137,19 @@
|
|||
</section>
|
||||
</mat-tab>
|
||||
|
||||
<mat-tab *ngIf="isForToday" [label]="T.PDS.PLAN|translate">
|
||||
<mat-tab
|
||||
*ngIf="isForToday"
|
||||
[label]="T.PDS.PLAN|translate"
|
||||
>
|
||||
<section class="tab-inner">
|
||||
<plan-tasks-tomorrow></plan-tasks-tomorrow>
|
||||
</section>
|
||||
</mat-tab>
|
||||
|
||||
<mat-tab *ngIf="isForToday" [label]="T.PDS.WEEK|translate">
|
||||
<mat-tab
|
||||
*ngIf="isForToday"
|
||||
[label]="T.PDS.WEEK|translate"
|
||||
>
|
||||
<section class="tab-inner full-width">
|
||||
<worklog-week></worklog-week>
|
||||
</section>
|
||||
|
@ -142,7 +168,12 @@
|
|||
<mat-icon>wb_sunny</mat-icon>
|
||||
{{T.PDS.SAVE_AND_GO_HOME|translate}}
|
||||
</button>
|
||||
<button (click)="finishDay()" *ngIf="!isForToday" color="primary" mat-flat-button>
|
||||
<button
|
||||
(click)="finishDay()"
|
||||
*ngIf="!isForToday"
|
||||
color="primary"
|
||||
mat-flat-button
|
||||
>
|
||||
<mat-icon>wb_sunny</mat-icon>
|
||||
{{T.PDS.CLEAR_ALL_CONTINUE|translate}}
|
||||
</button>
|
||||
|
@ -150,10 +181,16 @@
|
|||
</section>
|
||||
</div>
|
||||
|
||||
<div *ngIf="showSuccessAnimation" class="success-animation-wrapper">
|
||||
<div
|
||||
*ngIf="showSuccessAnimation"
|
||||
class="success-animation-wrapper"
|
||||
>
|
||||
<mat-icon>wb_sunny</mat-icon>
|
||||
<div class="unicorn-wrapper">
|
||||
<img class="unicorn" src="assets/unicorn.png" />
|
||||
<img
|
||||
class="unicorn"
|
||||
src="assets/unicorn.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</right-panel>
|
||||
|
|
|
@ -8,7 +8,10 @@
|
|||
<div class="label">{{T.PDS.ESTIMATE_TOTAL|translate}}</div>
|
||||
<div class="no-wrap">
|
||||
~<strong class="time-val">{{estimateTotal|msToString}}</strong>
|
||||
<mat-icon style="margin-left: 2px" svgIcon="estimate_remaining"></mat-icon>
|
||||
<mat-icon
|
||||
style="margin-left: 2px"
|
||||
svgIcon="estimate_remaining"
|
||||
></mat-icon>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -16,7 +16,10 @@
|
|||
[ngStyle]="getThemeColor(project.theme?.primary || project.themeColor)"
|
||||
class="project-color drag-handle"
|
||||
>
|
||||
<mat-icon class="color-contrast" svgIcon="drag_handle"></mat-icon>
|
||||
<mat-icon
|
||||
class="color-contrast"
|
||||
svgIcon="drag_handle"
|
||||
></mat-icon>
|
||||
</div>
|
||||
|
||||
<div
|
||||
|
@ -96,8 +99,14 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="(projectService.archived$|async)?.length" class="component-wrapper">
|
||||
<h2 class="mat-h2" style="text-align: center; margin-top: 32px">
|
||||
<div
|
||||
*ngIf="(projectService.archived$|async)?.length"
|
||||
class="component-wrapper"
|
||||
>
|
||||
<h2
|
||||
class="mat-h2"
|
||||
style="text-align: center; margin-top: 32px"
|
||||
>
|
||||
{{T.PP.ARCHIVED_PROJECTS|translate}}
|
||||
</h2>
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<div class="page-wrapper">
|
||||
<div class="component-wrapper">
|
||||
<h1 class="mat-h1" style="display: flex; align-items: center">
|
||||
<h1
|
||||
class="mat-h1"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<mat-icon style="margin-right: 8px">list</mat-icon>
|
||||
<span>{{T.PS.PROJECT_SETTINGS|translate}}</span>
|
||||
</h1>
|
||||
|
@ -20,7 +23,10 @@
|
|||
></config-section>
|
||||
</section>
|
||||
|
||||
<h2 class="mat-h2" style="margin-top: 24px">
|
||||
<h2
|
||||
class="mat-h2"
|
||||
style="margin-top: 24px"
|
||||
>
|
||||
<span>{{T.PS.ISSUE_INTEGRATION|translate}}</span>
|
||||
</h2>
|
||||
<div *ngFor="let section of issueIntegrationFormCfg; trackBy:trackBySectionKey;">
|
||||
|
|
|
@ -10,11 +10,17 @@
|
|||
>
|
||||
<h2>{{T.SCHEDULE.SCHEDULED_TASKS|translate}}</h2>
|
||||
|
||||
<p *ngIf="!allScheduledTasks?.length" class="no-scheduled-tasks">
|
||||
<p
|
||||
*ngIf="!allScheduledTasks?.length"
|
||||
class="no-scheduled-tasks"
|
||||
>
|
||||
{{T.SCHEDULE.NO_SCHEDULED|translate}}
|
||||
</p>
|
||||
|
||||
<div [@standardList]="allScheduledTasks?.length" class="tasks">
|
||||
<div
|
||||
[@standardList]="allScheduledTasks?.length"
|
||||
class="tasks"
|
||||
>
|
||||
<mat-card
|
||||
*ngFor="let task of allScheduledTasks; trackBy: trackByFn;"
|
||||
class="scheduled-task"
|
||||
|
@ -31,10 +37,17 @@
|
|||
>
|
||||
{{task.title}}
|
||||
</div>
|
||||
<tag-list [isShowProjectTagAlways]="true" [task]="task"></tag-list>
|
||||
<tag-list
|
||||
[isShowProjectTagAlways]="true"
|
||||
[task]="task"
|
||||
></tag-list>
|
||||
</div>
|
||||
|
||||
<div (click)="editReminder(task)" class="due-date" mat-ripple>
|
||||
<div
|
||||
(click)="editReminder(task)"
|
||||
class="due-date"
|
||||
mat-ripple
|
||||
>
|
||||
<div class="date-and-time-left">
|
||||
<div class="date hide-xs">
|
||||
{{task.reminderData.remindAt|date:'EE, d MMM, '}}
|
||||
|
@ -108,11 +121,17 @@
|
|||
>
|
||||
<h2>{{T.SCHEDULE.REPEATED_TASKS|translate}}</h2>
|
||||
|
||||
<p *ngIf="!taskRepeatCfgs?.length" class="no-scheduled-tasks">
|
||||
<p
|
||||
*ngIf="!taskRepeatCfgs?.length"
|
||||
class="no-scheduled-tasks"
|
||||
>
|
||||
{{T.SCHEDULE.NO_REPEATABLE_TASKS|translate}}
|
||||
</p>
|
||||
|
||||
<div [@standardList]="taskRepeatCfgs?.length" class="repeat-task-cfgs">
|
||||
<div
|
||||
[@standardList]="taskRepeatCfgs?.length"
|
||||
class="repeat-task-cfgs"
|
||||
>
|
||||
<mat-card
|
||||
*ngFor="let taskRepeatCfg of taskRepeatCfgs; trackBy: trackByFn;"
|
||||
class="repeat-task-cfg"
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<div class="page-wrapper">
|
||||
<div class="component-wrapper">
|
||||
<h1 class="mat-h1" style="display: flex; align-items: center">
|
||||
<h1
|
||||
class="mat-h1"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<mat-icon style="margin-right: 8px">style</mat-icon>
|
||||
<span>{{T.PS.TAG_SETTINGS|translate}}</span>
|
||||
</h1>
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
<div #contentElRef class="content">
|
||||
<div
|
||||
#contentElRef
|
||||
class="content"
|
||||
>
|
||||
<ng-content select="[better-drawer-content]"></ng-content>
|
||||
</div>
|
||||
|
||||
<div (click)="close()" *ngIf="isOpenGet && isOverGet" @fade class="backdrop"></div>
|
||||
<div
|
||||
(click)="close()"
|
||||
*ngIf="isOpenGet && isOverGet"
|
||||
@fade
|
||||
class="backdrop"
|
||||
></div>
|
||||
|
||||
<div
|
||||
(swiperight)="close()"
|
||||
|
@ -10,7 +18,12 @@
|
|||
class="side"
|
||||
(transitionend)="updateStyleAfterTransition()"
|
||||
>
|
||||
<button (click)="close()" class="close-btn">×</button>
|
||||
<button
|
||||
(click)="close()"
|
||||
class="close-btn"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
<div class="side-inner">
|
||||
<ng-content select="[better-drawer-side]"></ng-content>
|
||||
</div>
|
||||
|
|
|
@ -7,7 +7,11 @@
|
|||
>
|
||||
{{ modelItem.title}}
|
||||
|
||||
<mat-icon [matTooltip]="T.G.REMOVE|translate" matChipRemove>cancel </mat-icon>
|
||||
<mat-icon
|
||||
[matTooltip]="T.G.REMOVE|translate"
|
||||
matChipRemove
|
||||
>cancel
|
||||
</mat-icon>
|
||||
|
||||
<button
|
||||
(click)="additionalAction.emit(modelItem.id)"
|
||||
|
@ -34,7 +38,10 @@
|
|||
(keydown)="triggerCtrlEnterSubmit($event)"
|
||||
/>
|
||||
</mat-chip-list>
|
||||
<mat-autocomplete #autoElRef="matAutocomplete" (optionSelected)="selected($event)">
|
||||
<mat-autocomplete
|
||||
#autoElRef="matAutocomplete"
|
||||
(optionSelected)="selected($event)"
|
||||
>
|
||||
<mat-option
|
||||
*ngFor="let suggestion of (filteredSuggestions | async); trackBy:trackById"
|
||||
[value]="suggestion.id"
|
||||
|
|
|
@ -1,9 +1,16 @@
|
|||
<div (click)="toggleExpand();" class="collapsible-header">
|
||||
<div
|
||||
(click)="toggleExpand();"
|
||||
class="collapsible-header"
|
||||
>
|
||||
<ng-container *ngIf="isIconBefore">
|
||||
<mat-icon class="collapsible-expand-icon">expand_more</mat-icon>
|
||||
</ng-container>
|
||||
|
||||
<mat-icon *ngIf="icon" class="collapsible-additional-icon">{{icon}} </mat-icon>
|
||||
<mat-icon
|
||||
*ngIf="icon"
|
||||
class="collapsible-additional-icon"
|
||||
>{{icon}}
|
||||
</mat-icon>
|
||||
|
||||
<div class="collapsible-title">{{title}}</div>
|
||||
|
||||
|
@ -12,6 +19,10 @@
|
|||
</ng-container>
|
||||
</div>
|
||||
|
||||
<div *ngIf="isExpanded" [@expand] class="collapsible-panel ani-expand-collapse">
|
||||
<div
|
||||
*ngIf="isExpanded"
|
||||
[@expand]
|
||||
class="collapsible-panel ani-expand-collapse"
|
||||
>
|
||||
<ng-content></ng-content>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<div class="wrapper" style="position: relative">
|
||||
<div
|
||||
class="wrapper"
|
||||
style="position: relative"
|
||||
>
|
||||
<mat-form-field>
|
||||
<input
|
||||
(ngModelChange)="updateFromInput($event)"
|
||||
|
@ -9,7 +12,11 @@
|
|||
matInput
|
||||
type="datetime-local"
|
||||
/>
|
||||
<input (ngModelChange)="updateFromInput($event)" [ngModel]="strValue" class="fake" />
|
||||
<input
|
||||
(ngModelChange)="updateFromInput($event)"
|
||||
[ngModel]="strValue"
|
||||
class="fake"
|
||||
/>
|
||||
<mat-error>{{T.V.E_DATETIME|translate}}</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
|
@ -29,6 +36,10 @@
|
|||
<mat-chip (click)="setCommonVal('TOMORROW_11')"
|
||||
>{{T.DATETIME_INPUT.TOMORROW|translate:{time: '11:00'} }}</mat-chip
|
||||
>
|
||||
<mat-chip (click)="setLastVal()" *ngIf="lastVal">{{lastVal|date:'short'}}</mat-chip>
|
||||
<mat-chip
|
||||
(click)="setLastVal()"
|
||||
*ngIf="lastVal"
|
||||
>{{lastVal|date:'short'}}</mat-chip
|
||||
>
|
||||
</mat-chip-list>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
<mat-dialog-content>
|
||||
<div [innerHtml]="data.message|translate:data.translateParams" class="content"></div>
|
||||
<div
|
||||
[innerHtml]="data.message|translate:data.translateParams"
|
||||
class="content"
|
||||
></div>
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<div class="content" [class.split-view]="viewMode==='SPLIT'">
|
||||
<div
|
||||
class="content"
|
||||
[class.split-view]="viewMode==='SPLIT'"
|
||||
>
|
||||
<textarea
|
||||
#textareaEl
|
||||
[(ngModel)]="data.content"
|
||||
|
@ -16,7 +19,10 @@
|
|||
|
||||
<div class="controls">
|
||||
<div class="left-buttons">
|
||||
<mat-button-toggle-group [(ngModel)]="viewMode" (change)="onViewModeChange()">
|
||||
<mat-button-toggle-group
|
||||
[(ngModel)]="viewMode"
|
||||
(change)="onViewModeChange()"
|
||||
>
|
||||
<mat-button-toggle
|
||||
value="TEXT_ONLY"
|
||||
[matTooltip]="T.F.NOTE.D_FULLSCREEN.VIEW_TEXT_ONLY|translate"
|
||||
|
@ -36,12 +42,19 @@
|
|||
</mat-button-toggle-group>
|
||||
</div>
|
||||
|
||||
<button (click)="close(true)" mat-button>
|
||||
<button
|
||||
(click)="close(true)"
|
||||
mat-button
|
||||
>
|
||||
<mat-icon>close</mat-icon>
|
||||
{{(T.G.CANCEL)|translate}}
|
||||
</button>
|
||||
|
||||
<button (click)="close()" color="primary" mat-stroked-button>
|
||||
<button
|
||||
(click)="close()"
|
||||
color="primary"
|
||||
mat-stroked-button
|
||||
>
|
||||
<mat-icon>save</mat-icon>
|
||||
{{(T.G.SAVE)|translate}}
|
||||
</button>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<mat-dialog-content>
|
||||
<div [innerHtml]="data.message|translate:data.translateParams" class="content"></div>
|
||||
<div
|
||||
[innerHtml]="data.message|translate:data.translateParams"
|
||||
class="content"
|
||||
></div>
|
||||
<mat-form-field>
|
||||
<input [(ngModel)]="txtVal" [placeholder]="data.placeholder" matInput type="text" />
|
||||
<input
|
||||
[(ngModel)]="txtVal"
|
||||
[placeholder]="data.placeholder"
|
||||
matInput
|
||||
type="text"
|
||||
/>
|
||||
</mat-form-field>
|
||||
</mat-dialog-content>
|
||||
|
||||
|
|
|
@ -1,13 +1,24 @@
|
|||
<div class="circle bg-primary">
|
||||
<div class="inner-circle"></div>
|
||||
<div class="dots">
|
||||
<div *ngFor="let hour of dots; trackBy: trackByIndex" @dot class="dot bg-100"></div>
|
||||
<div
|
||||
*ngFor="let hour of dots; trackBy: trackByIndex"
|
||||
@dot
|
||||
class="dot bg-100"
|
||||
></div>
|
||||
</div>
|
||||
<div #circleEl class="handle-wrapper">
|
||||
<div
|
||||
#circleEl
|
||||
class="handle-wrapper"
|
||||
>
|
||||
<div class="handle"></div>
|
||||
</div>
|
||||
<div class="value-wrapper">
|
||||
<label *ngIf="label" [for]="uid" [innerHtml]="label"></label>
|
||||
<label
|
||||
*ngIf="label"
|
||||
[for]="uid"
|
||||
[innerHtml]="label"
|
||||
></label>
|
||||
<input
|
||||
(ngModelChange)="onInputChange($event)"
|
||||
[id]="uid"
|
||||
|
|
|
@ -9,7 +9,11 @@
|
|||
<mat-icon>{{isShowHelp ? 'close' : 'help_outline'}}</mat-icon>
|
||||
</button>
|
||||
|
||||
<div *ngIf="isShowHelp" [@expandFade] class="help-text border-color-primary">
|
||||
<div
|
||||
*ngIf="isShowHelp"
|
||||
[@expandFade]
|
||||
class="help-text border-color-primary"
|
||||
>
|
||||
<div class="help-icon-wrapper color-primary">
|
||||
<mat-icon>help_outline</mat-icon>
|
||||
</div>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue