Unverified Commit f646f6ac authored by bugclerk's avatar bugclerk Committed by GitHub
Browse files

NAS-118993: Fix quotas filtering (#7557)

Co-authored-by: default avatarBoris Vasilenko <bvasilenko@ixsystems.com>
Co-authored-by: default avatarEvgeny Stepanovych <undsoft@gmail.com>
parent 4da812aa
Showing with 21 additions and 15 deletions
+21 -15
......@@ -113,8 +113,8 @@ export class DatasetQuotaEditFormComponent {
this.datasetQuota = quotas[0];
this.isFormLoading = false;
this.form.patchValue({
name: this.datasetQuota.name,
data_quota: this.datasetQuota.quota,
name: this.datasetQuota.name || '',
data_quota: this.datasetQuota.quota || null,
obj_quota: this.datasetQuota.obj_quota,
});
this.cdr.markForCheck();
......@@ -140,14 +140,14 @@ export class DatasetQuotaEditFormComponent {
payload.push({
quota_type: this.quotaType,
id: String(this.datasetQuota.id),
quota_value: values.data_quota,
quota_value: values.data_quota || 0,
});
payload.push({
quota_type: this.quotaType === DatasetQuotaType.User
? DatasetQuotaType.UserObj
: DatasetQuotaType.GroupObj,
id: String(this.datasetQuota.id),
quota_value: values.obj_quota,
quota_value: values.obj_quota || 0,
});
this.submit(values, payload);
......@@ -179,7 +179,7 @@ export class DatasetQuotaEditFormComponent {
}
private isUnsettingQuota(values: typeof this.form.value): boolean {
return values.data_quota === 0 && values.obj_quota === 0;
return !values.data_quota && !values.obj_quota;
}
private getConfirmation(name: string): Observable<boolean> {
......
......@@ -91,7 +91,7 @@ describe('DatasetQuotasGrouplistComponent', () => {
it('should show table rows', async () => {
expect(ws.call).toHaveBeenCalledWith(
'pool.dataset.get_quota',
['Test', DatasetQuotaType.Group, [['OR', [['quota', '>', 0], ['obj_quota', '>', 0]]]]],
['Test', DatasetQuotaType.Group, []],
);
expect(ws.call).toHaveBeenCalledWith(
......
......@@ -65,8 +65,6 @@ export class DatasetQuotasGrouplistComponent implements OnInit, AfterViewInit, O
emptyOrErrorConfig: EmptyConfig = this.emptyConfig;
useFullFilter = true;
protected fullFilter: QueryParams<DatasetQuota> = [['OR', [['quota', '>', 0], ['obj_quota', '>', 0]]]];
protected emptyFilter: QueryParams<DatasetQuota> = [];
protected invalidFilter: QueryParams<DatasetQuota> = [['name', '=', null] as QueryFilter<DatasetQuota>] as QueryParams<DatasetQuota>;
constructor(
......@@ -106,6 +104,9 @@ export class DatasetQuotasGrouplistComponent implements OnInit, AfterViewInit, O
};
renderRowValue(row: DatasetQuota, field: string): string | number {
if (row[field as keyof DatasetQuota] === undefined) {
return '';
}
switch (field) {
case 'name':
if (!row[field]) {
......@@ -146,14 +147,16 @@ export class DatasetQuotasGrouplistComponent implements OnInit, AfterViewInit, O
}
getGroupQuotas(): void {
const filterParam = this.useFullFilter ? this.fullFilter : this.emptyFilter;
this.isLoading = true;
this.ws.call(
'pool.dataset.get_quota',
[this.datasetId, DatasetQuotaType.Group, filterParam],
[this.datasetId, DatasetQuotaType.Group, []],
).pipe(untilDestroyed(this)).subscribe({
next: (quotas: DatasetQuota[]) => {
this.isLoading = false;
if (this.useFullFilter) {
quotas = quotas.filter((quota) => quota.quota > 0 || quota.obj_quota > 0);
}
this.createDataSource(quotas);
this.checkInvalidQuotas();
},
......
......@@ -91,7 +91,7 @@ describe('DatasetQuotasUserlistComponent', () => {
it('should show table rows', async () => {
expect(ws.call).toHaveBeenCalledWith(
'pool.dataset.get_quota',
['Test', DatasetQuotaType.User, [['OR', [['quota', '>', 0], ['obj_quota', '>', 0]]]]],
['Test', DatasetQuotaType.User, []],
);
expect(ws.call).toHaveBeenCalledWith(
......
......@@ -68,8 +68,6 @@ export class DatasetQuotasUserlistComponent implements OnInit, AfterViewInit, On
emptyOrErrorConfig: EmptyConfig = this.emptyConfig;
useFullFilter = true;
protected fullFilter: QueryParams<DatasetQuota> = [['OR', [['quota', '>', 0], ['obj_quota', '>', 0]]]];
protected emptyFilter: QueryParams<DatasetQuota> = [];
protected invalidFilter: QueryParams<DatasetQuota> = [['name', '=', null] as QueryFilter<DatasetQuota>] as QueryParams<DatasetQuota>;
constructor(
......@@ -105,6 +103,9 @@ export class DatasetQuotasUserlistComponent implements OnInit, AfterViewInit, On
}
renderRowValue(row: DatasetQuota, field: string): string | number {
if (row[field as keyof DatasetQuota] === undefined) {
return '';
}
switch (field) {
case 'name':
if (!row[field]) {
......@@ -145,14 +146,16 @@ export class DatasetQuotasUserlistComponent implements OnInit, AfterViewInit, On
}
getUserQuotas(): void {
const filterParam = this.useFullFilter ? this.fullFilter : this.emptyFilter;
this.isLoading = true;
this.ws.call(
'pool.dataset.get_quota',
[this.datasetId, DatasetQuotaType.User, filterParam],
[this.datasetId, DatasetQuotaType.User, []],
).pipe(untilDestroyed(this)).subscribe({
next: (quotas: DatasetQuota[]) => {
this.isLoading = false;
if (this.useFullFilter) {
quotas = quotas.filter((quota) => quota.quota > 0 || quota.obj_quota > 0);
}
this.createDataSource(quotas);
this.checkInvalidQuotas();
},
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment