Skip to content

Commit d94a34f

Browse files
committed
user isn't creator should not have permistion to operation
1 parent 9824072 commit d94a34f

File tree

2 files changed

+47
-52
lines changed

2 files changed

+47
-52
lines changed

annotation-app/src/app/component/projects/labeling-task-list/task-datagrid/task-datagrid.component.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,20 @@
5858
dataset.totalCase == 0 ||
5959
!dataset.disableReview ||
6060
dataset.projectCompleteCase == 0 ||
61-
!dataset.allowOwnerReview
61+
!dataset.allowOwnerReview
6262
"
6363
(click)="toAnalyze(dataset, 'review')"
6464
>
6565
Review
6666
</button>
6767
<button
6868
class="action-item"
69-
[disabled]="dataset.totalCase == 0 || user.role === 'Annotator'"
69+
[disabled]="dataset.showButByShare || dataset.totalCase == 0 || user.role === 'Annotator'"
7070
(click)="editProjectDialog = true; deleteDatasetDialog = false; showProjectEdit(dataset)"
7171
>
7272
Edit
7373
</button>
74-
<button class="action-item" (click)="share(dataset)" [disabled]="user.role === 'Annotator'">
74+
<button class="action-item" (click)="share(dataset)" [disabled]="user.role === 'Annotator' || dataset.showButByShare">
7575
{{ dataset.shareStatus ? 'Unshare' : 'Share' }}
7676
</button>
7777
<button
@@ -96,7 +96,7 @@
9696
>
9797
Download
9898
</button>
99-
<button class="action-item" (click)="delete(dataset)" [disabled]="user.role === 'Annotator'">Delete</button>
99+
<button class="action-item" (click)="delete(dataset)" [disabled]="user.role === 'Annotator' || dataset.showButByShare">Delete</button>
100100
</clr-dg-action-overflow>
101101
<clr-dg-cell class="ellipsis-datagrid cellWordBreak" title="{{ dataset.projectName }}">
102102
<a (click)="toAnalyze(dataset, 'annotate')" [ngClass]="dataset.totalCase == 0 ? 'pnameLink' : ''">{{

annotation-app/src/app/component/projects/labeling-task-list/task-datagrid/task-datagrid.component.ts

Lines changed: 43 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { UserAuthService } from 'src/app/services/user-auth.service';
1414
import { Buffer } from 'buffer';
1515
import { WebAnalyticsService } from 'src/app/services/web-analytics.service';
1616
import { ClrDatagridStringFilterInterface } from '@clr/angular';
17+
import { forEach } from 'lodash';
1718
declare function dateTransfer(time: any): any;
1819

1920
export class CreateTimeFilter implements ClrDatagridStringFilterInterface<any> {
@@ -54,7 +55,7 @@ export class TaskDatagridComponent implements OnInit {
5455
showGenerateDatasets = false;
5556
editProjectDialog = false;
5657
msgEdit: any;
57-
createDateFilter = new CreateTimeFilter();
58+
createDateFilter = new CreateTimeFilter()
5859

5960
constructor(
6061
private router: Router,
@@ -80,53 +81,25 @@ export class TaskDatagridComponent implements OnInit {
8081
this.apiService.getProjects(param).subscribe(
8182
(res) => {
8283
this.loading = false;
83-
for (let i = 0; i < res.length; i++) {
84-
if (res[i].creator.indexOf(this.user.email) > -1) {
85-
res[i].allowOwnerReview = true;
86-
}
87-
if (res[i].annotator.indexOf(this.user.email) > -1) {
88-
res[i].allowStart = true;
89-
}
90-
for (let j = 0; j < res[i].userCompleteCase.length; j++) {
91-
if (res[i].userCompleteCase[j].completeCase > 0) {
92-
res[i].disableReview = true;
93-
break;
94-
}
95-
}
96-
// res[i].isExtend = true;
97-
//start to array annotators's first letter
98-
let firstLetter = [];
99-
for (let j = 0; j < res[i].annotator.length; j++) {
100-
firstLetter.push(res[i].annotator[j].slice(0, 1).toUpperCase());
101-
}
102-
res[i].firstLetter = firstLetter;
103-
//start to array creator's first letter
104-
let firstLetterOwner = [];
105-
for (let z = 0; z < res[i].creator.length; z++) {
106-
firstLetterOwner.push(res[i].creator[z].slice(0, 1).toUpperCase());
107-
}
108-
res[i].firstLetterOwner = firstLetterOwner;
109-
}
110-
this.projects = res;
111-
this.projects.forEach((item) => {
112-
if (item.labelType == 'numericLabel' && item.isMultipleLabel) {
113-
const categoryList = JSON.parse(item.categoryList);
114-
const itemKeys = [];
115-
categoryList.forEach((element) => {
116-
const labels = Object.keys(element);
117-
itemKeys.push(labels[0]);
118-
});
119-
item.mutilNumbericLabels = itemKeys.toString();
120-
}
121-
if (item.labelType === 'HTL') {
122-
item.categoryList = JSON.parse(item.categoryList);
123-
}
124-
// calculate the progress
125-
item.progress =
126-
item.projectCompleteCase === item.totalCase
127-
? 100
128-
: Math.round((item.projectCompleteCase / item.totalCase) * 100);
84+
this.projects = res.map((item) => {
85+
return {
86+
...item,
87+
allowOwnerReview: item.creator.includes(this.user.email),
88+
allowStart: item.annotator.includes(this.user.email),
89+
userCompleteCase: this.dealDisableReview(item?.userCompleteCase),
90+
firstLetter: this.dealFirstLetter(item?.annotator),
91+
firstLetterOwner: this.dealFirstLetter(item?.creator),
92+
mutilNumbericLabels: this.dealMutilNumbericLabels(item),
93+
categoryList: item.labelType === 'HTL' ? JSON.parse(item.categoryList) : item.categoryList,
94+
progress:
95+
item.projectCompleteCase === item.totalCase
96+
? 100
97+
: Math.round((item.projectCompleteCase / item.totalCase) * 100),
98+
showButByShare: !item.creator.includes(this.user.email)
99+
};
129100
});
101+
102+
console.log('table数据', this.projects);
130103
this.totalItems = res.length;
131104
},
132105
(error: any) => {
@@ -135,7 +108,29 @@ export class TaskDatagridComponent implements OnInit {
135108
},
136109
);
137110
}
138-
111+
dealMutilNumbericLabels(item) {
112+
if (item?.labelType === 'numericLabel' && item?.isMultipleLabel) {
113+
const categoryList = JSON.parse(item.categoryList);
114+
const itemKeys = [];
115+
categoryList.forEach((element) => {
116+
const labels = Object.keys(element);
117+
itemKeys.push(labels[0]);
118+
});
119+
return itemKeys.toString();
120+
}
121+
}
122+
dealFirstLetter(data) {
123+
let firstLetter = [];
124+
data.map((item) => {
125+
firstLetter.push(item.slice(0, 1).toUpperCase());
126+
});
127+
return firstLetter;
128+
}
129+
dealDisableReview(data) {
130+
data.forEach((item) => {
131+
item.disableReview = item.completeCase > 0;
132+
});
133+
}
139134
getChildren = (folder) => folder.children;
140135

141136
clickTreeView(data) {

0 commit comments

Comments
 (0)