Skip to content
Snippets Groups Projects
datatable.component.html 7.71 KiB
Newer Older
  • Learn to ignore specific revisions
  • <accordion *ngIf="dataLength > 0" [isAnimated]="true">
    
        <accordion-group #ag [panelClass]="'custom-accordion'" class="my-2">
    
    François Agneray's avatar
    François Agneray committed
            <button class="btn btn-link btn-block clearfix" accordion-heading>
                <div class="pull-left float-left">
    
                    Display result details
    
    François Agneray's avatar
    François Agneray committed
                    &nbsp;
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                    <span *ngIf="ag.isOpen"><span class="fas fa-chevron-up"></span></span>
                    <span *ngIf="!ag.isOpen"><span class="fas fa-chevron-down"></span></span>
    
    François Agneray's avatar
    François Agneray committed
                </div>
            </button>
    
            <div *ngIf="!dataLength || !outputList || !datasetAttributeList || !searchData" class="text-center">
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                <span class="fas fa-circle-notch fa-spin fa-3x"></span>
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                <span class="sr-only">Loading...</span>
            </div>
    
            <div *ngIf="dataLength && outputList && datasetAttributeList && searchData">
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                <div *ngIf="getDataset().selectable_row" class="mb-2">
    
                    <button [disabled]="noSelectedData() || processWip" (click)="emitProcess('csv')"
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                        class="btn btn-sm btn-outline-primary">
                        To CSV
                    </button>
                    <span *ngIf="processWip" class="float-right mr-2">
                        <span class="fas fa-circle-notch fa-spin fa-2x"></span>
                    </span>
                    <a *ngIf="processDone" href="http://0.0.0.0:8085/{{ processId }}.csv"
                        class="btn btn-sm btn-outline-secondary float-right">
                        Download your CSV
                    </a>
    
    François Agneray's avatar
    François Agneray committed
                </div>
    
    François Agneray's avatar
    François Agneray committed
                <div class="table-responsive">
    
    François Agneray's avatar
    François Agneray committed
                    <table class="table table-bordered table-hover">
    
    François Agneray's avatar
    François Agneray committed
                        <thead>
                            <tr>
    
    François Agneray's avatar
    François Agneray committed
                                <th *ngIf="getDataset().selectable_row"></th>
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                <th *ngFor="let attribute of getOutputList()" scope="col" class="clickable" (click)="sort(attribute.id)">
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                    {{ attribute.label }}
    
                                    <span *ngIf="attribute.id === sortedCol" class="pl-2">
                                        <span [ngClass]="{'active': sortedOrder === 'a', 'inactive': sortedOrder === 'd'}">
                                            <span class="fas fa-sort-amount-down-alt"></span>
                                        </span>
                                        <span [ngClass]="{'active': sortedOrder === 'd', 'inactive': sortedOrder === 'a'}">
                                            <span class="fas fa-sort-amount-up"></span>
                                        </span>
                                    </span>
                                    <span *ngIf="attribute.id !== sortedCol" class="pl-2">
                                        <span class="unsorted">
                                            <span class="fas fa-arrows-alt-v"></span>
                                        </span>
                                        <span class="on-hover">
                                            <span class="fas fa-sort-amount-down-alt"></span>
                                        </span>
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                    </span>
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                </th>
    
    François Agneray's avatar
    François Agneray committed
                            </tr>
                        </thead>
                        <tbody>
                            <tr *ngFor="let datum of searchData">
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                <td *ngIf="getDataset().selectable_row" class="data-selected"
                                    (click)="toggleSelection(datum)">
    
    François Agneray's avatar
    François Agneray committed
                                    <button class="btn btn-block text-left p-0 m-0">
                                        <div *ngIf="!isSelected(datum)">
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                            <span class="far fa-square fa-lg text-secondary"></span>
    
    François Agneray's avatar
    François Agneray committed
                                        </div>
                                        <div *ngIf="isSelected(datum)">
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                            <span class="fas fa-check-square fa-lg theme-color"></span>
    
    François Agneray's avatar
    François Agneray committed
                                        </div>
    
                                    </button>
                                </td>
    
                                <td *ngFor="let attribute of getOutputList()" class="align-middle">
    
    François Agneray's avatar
    François Agneray committed
                                    <div *ngIf="datum[attribute.label]" [ngSwitch]="attribute.renderer">
                                        <div *ngSwitchCase="'detail'">
    
    François Agneray's avatar
    François Agneray committed
                                                [value]="datum[attribute.label]"
    
    François Agneray's avatar
    François Agneray committed
                                                [config]="attribute.renderer_config">
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                        </div>
    
    François Agneray's avatar
    François Agneray committed
                                        <div *ngSwitchCase="'link'">
                                            <app-link
                                                [value]="datum[attribute.label]"
    
    François Agneray's avatar
    François Agneray committed
                                                [config]="attribute.renderer_config">
                                            </app-link>
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                        </div>
    
                                        <div *ngSwitchCase="'download'">
                                            <app-download
                                                [value]="datum[attribute.label]"
                                                [datasetName]="datasetName"
                                                [config]="attribute.renderer_config">
                                            </app-download>
                                        </div>
    
    François Agneray's avatar
    François Agneray committed
                                        <div *ngSwitchCase="'image'">
                                            <app-image
                                                [value]="datum[attribute.label]"
                                                [datasetName]="datasetName"
                                                [config]="attribute.renderer_config">
                                            </app-image>
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                        </div>
    
    François Agneray's avatar
    François Agneray committed
                                        <div *ngSwitchCase="'json'">
                                            <app-json
                                                [value]="datum[attribute.label]"
                                                [attributeLabel]="attribute.label"
                                                [config]="attribute.renderer_config">
                                            </app-json>
    
                                        </div>
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                        <div *ngSwitchDefault>
    
                                            {{ datum[attribute.label] }}
    
    Tifenn Guillas's avatar
    Tifenn Guillas committed
                                        </div>
                                    </div>
                                </td>
    
    François Agneray's avatar
    François Agneray committed
                            </tr>
                        </tbody>
                    </table>
                </div>
    
                <div class="row mt-3">
                    <div class="col">
                        Showing 
                        <select class="custom-select" (change)="changeNbItems($event.target.value)">
                            <option value="10" selected="true">10</option>
                            <option value="20">20</option>
                            <option value="50">50</option>
                            <option value="100">100</option> 
                        </select>
                        of {{ dataLength }} items
                    </div>
                    <div class="col-auto">
                        <pagination
    
                        [totalItems]="dataLength" 
    
                        [boundaryLinks]="true" 
                        [rotate]="true" 
                        [maxSize]="5"
    
                        [itemsPerPage]="nbItems"
                        previousText="&lsaquo;" nextText="&rsaquo;" firstText="&laquo;" lastText="&raquo;"
                        (pageChanged)="changePage($event.page)">
    
                    </pagination>
    
    François Agneray's avatar
    François Agneray committed
                </div>
    
    François Agneray's avatar
    François Agneray committed
            </div>
        </accordion-group>
    
    François Agneray's avatar
    François Agneray committed
    </accordion>