mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
				 9 changed files with 334 additions and 240 deletions
			
			
		@ -1,108 +1,134 @@ | 
				
			|||||
<ng-container *ngIf="hasPositions || !historicalDataItems"> | 
					<mat-tab-group | 
				
			||||
  <div class="container overview position-relative"> | 
					  animationDuration="0ms" | 
				
			||||
    <div class="row"> | 
					  class="position-absolute" | 
				
			||||
      <a | 
					  headerPosition="below" | 
				
			||||
        class="chart-container col mr-3" | 
					  mat-align-tabs="center" | 
				
			||||
        [routerLink]="[]" | 
					> | 
				
			||||
        [queryParams]="{performanceChartDialog: true}" | 
					  <mat-tab> | 
				
			||||
      > | 
					    <ng-template mat-tab-label> | 
				
			||||
        <gf-line-chart | 
					      <ion-icon name="analytics-outline" size="large"></ion-icon> | 
				
			||||
          symbol="Performance" | 
					    </ng-template> | 
				
			||||
          [historicalDataItems]="historicalDataItems" | 
					    <div | 
				
			||||
          [showLoader]="false" | 
					      class=" | 
				
			||||
          [showXAxis]="false" | 
					        align-items-center | 
				
			||||
          [showYAxis]="false" | 
					        container | 
				
			||||
        ></gf-line-chart> | 
					        d-flex | 
				
			||||
      </a> | 
					        flex-column | 
				
			||||
    </div> | 
					        h-100 | 
				
			||||
    <div class="overview-container row mb-5 mt-1"> | 
					        justify-content-center | 
				
			||||
      <div class="col"> | 
					        overview | 
				
			||||
        <gf-portfolio-performance-summary | 
					        p-3 | 
				
			||||
          class="pb-4" | 
					        position-relative | 
				
			||||
          [baseCurrency]="user?.settings?.baseCurrency" | 
					      " | 
				
			||||
          [isLoading]="isLoadingPerformance" | 
					    > | 
				
			||||
          [locale]="user?.settings?.locale" | 
					      <div class="row w-100"> | 
				
			||||
          [performance]="performance" | 
					        <a | 
				
			||||
          [showDetails]="!hasImpersonationId || hasPermissionToReadForeignPortfolio" | 
					          class="chart-container col" | 
				
			||||
        ></gf-portfolio-performance-summary> | 
					          [routerLink]="[]" | 
				
			||||
        <div class="text-center"> | 
					          [queryParams]="{performanceChartDialog: true}" | 
				
			||||
          <gf-toggle | 
					        > | 
				
			||||
            [defaultValue]="dateRange" | 
					          <gf-line-chart | 
				
			||||
 | 
					            class="mr-3" | 
				
			||||
 | 
					            symbol="Performance" | 
				
			||||
 | 
					            [historicalDataItems]="historicalDataItems" | 
				
			||||
 | 
					            [showLoader]="false" | 
				
			||||
 | 
					            [showXAxis]="false" | 
				
			||||
 | 
					            [showYAxis]="false" | 
				
			||||
 | 
					          ></gf-line-chart> | 
				
			||||
 | 
					        </a> | 
				
			||||
 | 
					        <div *ngIf="historicalDataItems?.length === 0" class="chart-container"> | 
				
			||||
 | 
					          <div class="d-flex justify-content-center"> | 
				
			||||
 | 
					            <gf-no-transactions-info-indicator></gf-no-transactions-info-indicator> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div class="overview-container row mt-1"> | 
				
			||||
 | 
					        <div class="col"> | 
				
			||||
 | 
					          <gf-portfolio-performance-summary | 
				
			||||
 | 
					            class="pb-4" | 
				
			||||
 | 
					            [baseCurrency]="user?.settings?.baseCurrency" | 
				
			||||
            [isLoading]="isLoadingPerformance" | 
					            [isLoading]="isLoadingPerformance" | 
				
			||||
            [options]="dateRangeOptions" | 
					            [locale]="user?.settings?.locale" | 
				
			||||
            (change)="onChangeDateRange($event.value)" | 
					            [performance]="performance" | 
				
			||||
          ></gf-toggle> | 
					            [showDetails]="!hasImpersonationId || hasPermissionToReadForeignPortfolio" | 
				
			||||
 | 
					          ></gf-portfolio-performance-summary> | 
				
			||||
 | 
					          <div class="text-center"> | 
				
			||||
 | 
					            <gf-toggle | 
				
			||||
 | 
					              [defaultValue]="dateRange" | 
				
			||||
 | 
					              [isLoading]="isLoadingPerformance" | 
				
			||||
 | 
					              [options]="dateRangeOptions" | 
				
			||||
 | 
					              (change)="onChangeDateRange($event.value)" | 
				
			||||
 | 
					            ></gf-toggle> | 
				
			||||
 | 
					          </div> | 
				
			||||
        </div> | 
					        </div> | 
				
			||||
      </div> | 
					      </div> | 
				
			||||
    </div> | 
					    </div> | 
				
			||||
    <div | 
					  </mat-tab> | 
				
			||||
      class="button-container d-flex justify-content-center position-absolute" | 
					  <mat-tab> | 
				
			||||
    > | 
					    <ng-template mat-tab-label> | 
				
			||||
      <a | 
					      <ion-icon name="wallet-outline" size="large"></ion-icon> | 
				
			||||
        *ngIf="showPositionsButton" | 
					    </ng-template> | 
				
			||||
        [routerLink]="['/home']" | 
					    <div class="container justify-content-center p-3 positions"> | 
				
			||||
        fragment="positions-container" | 
					      <div class="row"> | 
				
			||||
        i18n | 
					        <div class="align-items-center col"> | 
				
			||||
        mat-flat-button | 
					          <mat-card *ngIf="hasPositions === true" class="p-0"> | 
				
			||||
        (click)="showPositionsButton = false" | 
					            <mat-card-content> | 
				
			||||
        >Positions</a | 
					              <gf-positions | 
				
			||||
      > | 
					                [baseCurrency]="user?.settings?.baseCurrency" | 
				
			||||
    </div> | 
					                [deviceType]="deviceType" | 
				
			||||
  </div> | 
					                [locale]="user?.settings?.locale" | 
				
			||||
 | 
					                [positions]="positions" | 
				
			||||
  <div id="positions-container" class="container positions"> | 
					                [range]="dateRange" | 
				
			||||
    <div class="row mb-3"> | 
					              ></gf-positions> | 
				
			||||
      <div class="col"> | 
					            </mat-card-content> | 
				
			||||
        <mat-card class="p-0"> | 
					          </mat-card> | 
				
			||||
          <mat-card-content> | 
					          <div | 
				
			||||
            <gf-positions | 
					            *ngIf="hasPositions === false" | 
				
			||||
              [baseCurrency]="user?.settings?.baseCurrency" | 
					            class="d-flex justify-content-center" | 
				
			||||
              [deviceType]="deviceType" | 
					          > | 
				
			||||
              [locale]="user?.settings?.locale" | 
					            <gf-no-transactions-info-indicator></gf-no-transactions-info-indicator> | 
				
			||||
              [positions]="positions" | 
					          </div> | 
				
			||||
              [range]="dateRange" | 
					        </div> | 
				
			||||
            ></gf-positions> | 
					 | 
				
			||||
          </mat-card-content> | 
					 | 
				
			||||
        </mat-card> | 
					 | 
				
			||||
      </div> | 
					      </div> | 
				
			||||
    </div> | 
					    </div> | 
				
			||||
    <div class="row"> | 
					  </mat-tab> | 
				
			||||
      <div class="col-xs-12 col-md-6 mb-3"> | 
					  <mat-tab> | 
				
			||||
        <mat-card class="h-100"> | 
					    <ng-template mat-tab-label> | 
				
			||||
          <mat-card-header> | 
					      <ion-icon name="reader-outline" size="large"></ion-icon> | 
				
			||||
            <mat-card-title i18n>Performance</mat-card-title> | 
					    </ng-template> | 
				
			||||
          </mat-card-header> | 
					    <div class="container p-3 positions"> | 
				
			||||
          <mat-card-content> | 
					      <div class="row"> | 
				
			||||
            <gf-portfolio-performance | 
					        <div class="col-xs-12 col-md-6 mb-3"> | 
				
			||||
              [baseCurrency]="user?.settings?.baseCurrency" | 
					          <mat-card class="h-100"> | 
				
			||||
              [isLoading]="isLoadingPerformance" | 
					            <mat-card-header> | 
				
			||||
              [locale]="user?.settings?.locale" | 
					              <mat-card-title i18n>Performance</mat-card-title> | 
				
			||||
              [performance]="performance" | 
					            </mat-card-header> | 
				
			||||
            ></gf-portfolio-performance> | 
					            <mat-card-content> | 
				
			||||
          </mat-card-content> | 
					              <gf-portfolio-performance | 
				
			||||
        </mat-card> | 
					                [baseCurrency]="user?.settings?.baseCurrency" | 
				
			||||
      </div> | 
					                [isLoading]="isLoadingPerformance" | 
				
			||||
      <div class="col-xs-12 col-md-6 mb-3"> | 
					                [locale]="user?.settings?.locale" | 
				
			||||
        <mat-card class="h-100"> | 
					                [performance]="performance" | 
				
			||||
          <mat-card-header> | 
					              ></gf-portfolio-performance> | 
				
			||||
            <mat-card-title i18n>Summary</mat-card-title> | 
					            </mat-card-content> | 
				
			||||
          </mat-card-header> | 
					          </mat-card> | 
				
			||||
          <mat-card-content> | 
					        </div> | 
				
			||||
            <gf-portfolio-overview | 
					        <div class="col-xs-12 col-md-6"> | 
				
			||||
              [baseCurrency]="user?.settings?.baseCurrency" | 
					          <mat-card class="h-100"> | 
				
			||||
              [isLoading]="isLoadingOverview" | 
					            <mat-card-header> | 
				
			||||
              [locale]="user?.settings?.locale" | 
					              <mat-card-title i18n>Summary</mat-card-title> | 
				
			||||
              [overview]="overview" | 
					            </mat-card-header> | 
				
			||||
            ></gf-portfolio-overview> | 
					            <mat-card-content> | 
				
			||||
          </mat-card-content> | 
					              <gf-portfolio-overview | 
				
			||||
        </mat-card> | 
					                [baseCurrency]="user?.settings?.baseCurrency" | 
				
			||||
 | 
					                [isLoading]="isLoadingOverview" | 
				
			||||
 | 
					                [locale]="user?.settings?.locale" | 
				
			||||
 | 
					                [overview]="overview" | 
				
			||||
 | 
					              ></gf-portfolio-overview> | 
				
			||||
 | 
					            </mat-card-content> | 
				
			||||
 | 
					          </mat-card> | 
				
			||||
 | 
					        </div> | 
				
			||||
      </div> | 
					      </div> | 
				
			||||
    </div> | 
					    </div> | 
				
			||||
  </div> | 
					  </mat-tab> | 
				
			||||
</ng-container> | 
					</mat-tab-group> | 
				
			||||
 | 
					 | 
				
			||||
<ng-container *ngIf="!hasPositions && historicalDataItems"> | 
					 | 
				
			||||
  <div class="d-flex justify-content-center my-5"> | 
					 | 
				
			||||
    <gf-no-transactions-info-indicator></gf-no-transactions-info-indicator> | 
					 | 
				
			||||
  </div> | 
					 | 
				
			||||
</ng-container> | 
					 | 
				
			||||
 | 
				
			|||||
@ -1,65 +1,88 @@ | 
				
			|||||
<ng-container *ngIf="hasPositions || !historicalDataItems"> | 
					<mat-tab-group | 
				
			||||
  <div class="container overview position-relative"> | 
					  animationDuration="0ms" | 
				
			||||
    <div class="row"> | 
					  class="position-absolute" | 
				
			||||
      <div class="chart-container col mr-3"> | 
					  headerPosition="below" | 
				
			||||
        <gf-line-chart | 
					  mat-align-tabs="center" | 
				
			||||
          symbol="Performance" | 
					> | 
				
			||||
          [historicalDataItems]="historicalDataItems" | 
					  <mat-tab> | 
				
			||||
          [showLoader]="false" | 
					    <ng-template mat-tab-label> | 
				
			||||
          [showXAxis]="false" | 
					      <ion-icon name="analytics-outline" size="large"></ion-icon> | 
				
			||||
          [showYAxis]="false" | 
					    </ng-template> | 
				
			||||
        ></gf-line-chart> | 
					 | 
				
			||||
      </div> | 
					 | 
				
			||||
    </div> | 
					 | 
				
			||||
    <div class="overview-container row mb-5 mt-1"> | 
					 | 
				
			||||
      <div class="col"> | 
					 | 
				
			||||
        <gf-portfolio-performance-summary | 
					 | 
				
			||||
          class="pb-4" | 
					 | 
				
			||||
          [baseCurrency]="user?.settings?.baseCurrency" | 
					 | 
				
			||||
          [isLoading]="isLoadingPerformance" | 
					 | 
				
			||||
          [locale]="user?.settings?.locale" | 
					 | 
				
			||||
          [performance]="performance" | 
					 | 
				
			||||
          [showDetails]="!hasImpersonationId || hasPermissionToReadForeignPortfolio" | 
					 | 
				
			||||
        ></gf-portfolio-performance-summary> | 
					 | 
				
			||||
      </div> | 
					 | 
				
			||||
    </div> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    <div | 
					    <div | 
				
			||||
      class="button-container d-flex justify-content-center position-absolute" | 
					      class=" | 
				
			||||
 | 
					        container | 
				
			||||
 | 
					        d-flex | 
				
			||||
 | 
					        flex-column | 
				
			||||
 | 
					        h-100 | 
				
			||||
 | 
					        justify-content-center | 
				
			||||
 | 
					        overview | 
				
			||||
 | 
					        p-3 | 
				
			||||
 | 
					        position-relative | 
				
			||||
 | 
					      " | 
				
			||||
    > | 
					    > | 
				
			||||
      <a | 
					      <div class="row"> | 
				
			||||
        *ngIf="showPositionsButton" | 
					        <div | 
				
			||||
        [routerLink]="['/zen']" | 
					          class="chart-container d-flex flex-column col justify-content-center" | 
				
			||||
        fragment="positions-container" | 
					        > | 
				
			||||
        i18n | 
					          <gf-line-chart | 
				
			||||
        mat-flat-button | 
					            class="mr-3" | 
				
			||||
        (click)="showPositionsButton = false" | 
					            symbol="Performance" | 
				
			||||
        >Positions</a | 
					            [historicalDataItems]="historicalDataItems" | 
				
			||||
      > | 
					            [showLoader]="false" | 
				
			||||
 | 
					            [showXAxis]="false" | 
				
			||||
 | 
					            [showYAxis]="false" | 
				
			||||
 | 
					          ></gf-line-chart> | 
				
			||||
 | 
					          <div | 
				
			||||
 | 
					            *ngIf="historicalDataItems?.length === 0" | 
				
			||||
 | 
					            class="d-flex justify-content-center" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            <gf-no-transactions-info-indicator></gf-no-transactions-info-indicator> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div class="overview-container row mb-5 mt-1"> | 
				
			||||
 | 
					        <div class="col"> | 
				
			||||
 | 
					          <gf-portfolio-performance-summary | 
				
			||||
 | 
					            class="pb-4" | 
				
			||||
 | 
					            [baseCurrency]="user?.settings?.baseCurrency" | 
				
			||||
 | 
					            [isLoading]="isLoadingPerformance" | 
				
			||||
 | 
					            [locale]="user?.settings?.locale" | 
				
			||||
 | 
					            [performance]="performance" | 
				
			||||
 | 
					            [showDetails]="!hasImpersonationId || hasPermissionToReadForeignPortfolio" | 
				
			||||
 | 
					          ></gf-portfolio-performance-summary> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
    </div> | 
					    </div> | 
				
			||||
  </div> | 
					  </mat-tab> | 
				
			||||
 | 
					
 | 
				
			||||
  <div id="positions-container" class="container positions"> | 
					  <mat-tab> | 
				
			||||
    <div class="row mb-3"> | 
					    <ng-template mat-tab-label> | 
				
			||||
      <div class="col"> | 
					      <ion-icon name="list-outline" size="large"></ion-icon> | 
				
			||||
        <mat-card class="p-0"> | 
					    </ng-template> | 
				
			||||
          <mat-card-content> | 
					    <div class="container h-100 justify-content-center p-3 positions"> | 
				
			||||
            <gf-positions | 
					      <div class="h-100 row"> | 
				
			||||
              [baseCurrency]="user?.settings?.baseCurrency" | 
					        <div class="align-items-center col"> | 
				
			||||
              [deviceType]="deviceType" | 
					          <mat-card *ngIf="hasPositions === true" class="p-0"> | 
				
			||||
              [locale]="user?.settings?.locale" | 
					            <mat-card-content> | 
				
			||||
              [positions]="positions" | 
					              <gf-positions | 
				
			||||
              [range]="dateRange" | 
					                [baseCurrency]="user?.settings?.baseCurrency" | 
				
			||||
            ></gf-positions> | 
					                [deviceType]="deviceType" | 
				
			||||
          </mat-card-content> | 
					                [locale]="user?.settings?.locale" | 
				
			||||
        </mat-card> | 
					                [positions]="positions" | 
				
			||||
 | 
					                [range]="dateRange" | 
				
			||||
 | 
					              ></gf-positions> | 
				
			||||
 | 
					            </mat-card-content> | 
				
			||||
 | 
					          </mat-card> | 
				
			||||
 | 
					          <div | 
				
			||||
 | 
					            *ngIf="hasPositions === false" | 
				
			||||
 | 
					            class="align-items-center d-flex h-100 justify-content-center" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					              <gf-no-transactions-info-indicator></gf-no-transactions-info-indicator> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
      </div> | 
					      </div> | 
				
			||||
    </div> | 
					    </div> | 
				
			||||
  </div> | 
					  </mat-tab> | 
				
			||||
</ng-container> | 
					</mat-tab-group> | 
				
			||||
 | 
					 | 
				
			||||
<ng-container *ngIf="!hasPositions && historicalDataItems"> | 
					 | 
				
			||||
  <div class="d-flex justify-content-center my-5"> | 
					 | 
				
			||||
    <gf-no-transactions-info-indicator></gf-no-transactions-info-indicator> | 
					 | 
				
			||||
  </div> | 
					 | 
				
			||||
</ng-container> | 
					 | 
				
			||||
 | 
				
			|||||
					Loading…
					
					
				
		Reference in new issue