Browse Source

Do not show folder icon in normal view.

pull/965/head
Sebastian 3 years ago
parent
commit
cd82223d92
  1. 9
      frontend/src/app/features/assets/pages/assets-page.component.html
  2. 4
      frontend/src/app/shared/components/assets/asset.component.html
  3. 3
      frontend/src/app/shared/components/assets/asset.component.ts
  4. 7
      frontend/src/app/shared/components/assets/assets-list.component.html
  5. 3
      frontend/src/app/shared/components/assets/assets-list.component.ts
  6. 37
      frontend/src/app/shared/state/assets.state.ts

9
frontend/src/app/features/assets/pages/assets-page.component.html

@ -54,8 +54,13 @@
<sqx-asset-path [path]="assetsState.path | async" (navigate)="assetsState.navigate($event.id)"></sqx-asset-path>
</ng-container>
<div>
<sqx-assets-list [assetsState]="assetsState" [showPager]="false" [isListView]="isListView"></sqx-assets-list>
<div *ngIf="assetsState.path | async; let path">
<sqx-assets-list
[assetsState]="assetsState"
[showPager]="false"
[showFolderIcon]="path.length === 0"
[isListView]="isListView">
</sqx-assets-list>
</div>
<ng-container footer>

4
frontend/src/app/shared/components/assets/asset.component.html

@ -34,7 +34,7 @@
<i class="icon-download"></i>
</a>
<a class="file-folder ms-2" (click)="selectFolder.emit(asset.parentId)">
<a class="file-folder ms-2" *ngIf="folderIcon" (click)="selectFolder.emit(asset.parentId)">
<i class="icon-folder"></i>
</a>
@ -143,7 +143,7 @@
<i class="icon-download"></i>
</a>
<button type="button" class="btn btn-text-secondary" (click)="selectFolder.emit(asset.parentId)">
<button type="button" class="btn btn-text-secondary" *ngIf="folderIcon" (click)="selectFolder.emit(asset.parentId)">
<i class="icon-folder"></i>
</button>
</td>

3
frontend/src/app/shared/components/assets/asset.component.ts

@ -50,6 +50,9 @@ export class AssetComponent extends StatefulComponent<State> implements OnInit {
@Input()
public folderId?: string;
@Input()
public folderIcon?: boolean | null | undefined;
@Input()
public removeMode?: boolean | null;

7
frontend/src/app/shared/components/assets/assets-list.component.html

@ -16,8 +16,8 @@
<sqx-list-view [isLoading]="(assetsState.isLoading | async) && indicateLoading" [overflow]="true">
<ng-container topHeader>
<div cdkDropListGroup>
<div class="folders" *ngIf="assetsState.pathAvailable | async">
<div cdkDropListGroup *ngIf="assetsState.path | async; let path">
<div class="folders" *ngIf="path.length > 0">
<ng-container *ngIf="(assetsState.hasFolders | async) || (assetsState.parentFolder | async)">
<h5>{{ 'common.folders' | sqxTranslate }}</h5>
</ng-container>
@ -72,13 +72,14 @@
cdkDrag
[cdkDragData]="asset"
[cdkDragDisabled]="isDisabled || !asset.canMove"
[allTags]="tags"
[asset]="asset"
[assetsState]="assetsState"
[isListView]="isListView"
[isDisabled]="isDisabled"
[isSelectable]="!!selectedIds"
[isSelected]="isSelected(asset)"
[allTags]="tags"
[folderIcon]="showFolderIcon && path.length === 0"
(select)="select.emit(asset)" (delete)="deleteAsset(asset)"
(selectFolder)="selectFolder(asset)">
</sqx-asset>

3
frontend/src/app/shared/components/assets/assets-list.component.ts

@ -39,6 +39,9 @@ export class AssetsListComponent extends StatefulComponent<State> {
@Input()
public selectedIds?: {};
@Input()
public showFolderIcon?: boolean | null = true;
@Input()
public showPager?: boolean | null = true;

37
frontend/src/app/shared/state/assets.state.ts

@ -66,7 +66,7 @@ export abstract class AssetsStateBase extends State<Snapshot> {
this.project(x => x.tagsSelected);
public tags =
this.projectFrom(this.tagsUnsorted, getSortedTags);
this.projectFrom(this.tagsUnsorted, getTagsSorted);
public tagsNames =
this.projectFrom(this.tagsUnsorted, getTagNames);
@ -98,9 +98,6 @@ export abstract class AssetsStateBase extends State<Snapshot> {
public path =
this.project(x => x.path);
public pathAvailable =
this.project(x => x.path.length > 0);
public parentFolder =
this.project(x => getParent(x.path));
@ -432,6 +429,10 @@ function getTagNames(tags: object): ReadonlyArray<string> {
return Object.keys(tags);
}
function getTagsSorted(tags: { [name: string]: number }) {
return Object.keys(tags).sort(compareStrings).map(name => ({ name, count: tags[name] }));
}
function isReferrerError(error?: ErrorDto) {
return error?.errorCode === 'OBJECT_REFERENCED';
}
@ -480,20 +481,24 @@ function createQuery(snapshot: Snapshot, noSlowTotal: boolean) {
const result: any = { take: pageSize, skip: pageSize * page, noSlowTotal };
const tags = Object.keys(tagsSelected);
if (Types.isString(ref)) {
result.ref = ref;
} else if (Types.isString(query?.fullText) || tags.length > 0) {
if (query) {
result.query = query;
}
} else {
const tags = getTagNames(tagsSelected);
const hasTags = tags.length > 0;
const hasQuery = Types.isString(query?.fullText) && query?.fullText;
if (tags.length > 0) {
result.tags = tags;
if (hasQuery || hasTags) {
if (hasQuery) {
result.query = query;
}
if (hasTags) {
result.tags = tags;
}
} else {
result.parentId = snapshot.parentId;
}
} else {
result.parentId = snapshot.parentId;
}
if (page > 0 && total > 0) {
@ -511,10 +516,6 @@ function getParent(path: ReadonlyArray<AssetPathItem>) {
}
}
function getSortedTags(tags: { [name: string]: number }) {
return Object.keys(tags).sort(compareStrings).map(name => ({ name, count: tags[name] }));
}
@Injectable()
export class AssetsState extends AssetsStateBase {
constructor(

Loading…
Cancel
Save