Various frontend improvements (#137)

* Various frontend improvements

* Clean up import
pull/138/head
Thomas 3 years ago committed by GitHub
parent e7fbcd4fa0
commit 34303163bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -136,6 +136,7 @@
<hr class="m-0" /> <hr class="m-0" />
</ng-container> </ng-container>
<a <a
*ngIf="user?.settings?.viewMode === 'DEFAULT'"
class="d-block d-sm-none" class="d-block d-sm-none"
i18n i18n
mat-menu-item mat-menu-item

@ -25,6 +25,11 @@
Valid until {{ user.subscription.expiresAt | date: Valid until {{ user.subscription.expiresAt | date:
defaultDateFormat }} defaultDateFormat }}
</div> </div>
<div *ngIf="!user.subscription.expiresAt">
<button color="primary" disabled i18n mat-flat-button>
Upgrade
</button>
</div>
</div> </div>
</div> </div>
<div class="d-flex mt-4 py-1"> <div class="d-flex mt-4 py-1">

@ -1,6 +1,7 @@
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card'; import { MatCardModule } from '@angular/material/card';
import { MatFormFieldModule } from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select'; import { MatSelectModule } from '@angular/material/select';
@ -17,6 +18,7 @@ import { AccountPageComponent } from './account-page.component';
CommonModule, CommonModule,
FormsModule, FormsModule,
GfPortfolioAccessTableModule, GfPortfolioAccessTableModule,
MatButtonModule,
MatCardModule, MatCardModule,
MatFormFieldModule, MatFormFieldModule,
MatSelectModule, MatSelectModule,

@ -5,7 +5,7 @@ import { DataService } from '@ghostfolio/client/services/data.service';
import { UserService } from '@ghostfolio/client/services/user/user.service'; import { UserService } from '@ghostfolio/client/services/user/user.service';
import { DEFAULT_DATE_FORMAT } from '@ghostfolio/common/config'; import { DEFAULT_DATE_FORMAT } from '@ghostfolio/common/config';
import { AdminData, User } from '@ghostfolio/common/interfaces'; import { AdminData, User } from '@ghostfolio/common/interfaces';
import { formatDistanceToNowStrict, isValid, parseISO, sub } from 'date-fns'; import { formatDistanceToNowStrict, isValid, parseISO } from 'date-fns';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
@ -76,16 +76,11 @@ export class AdminPageComponent implements OnInit {
public formatDistanceToNow(aDateString: string) { public formatDistanceToNow(aDateString: string) {
if (aDateString) { if (aDateString) {
const distanceString = formatDistanceToNowStrict( const distanceString = formatDistanceToNowStrict(parseISO(aDateString), {
sub(parseISO(aDateString), { seconds: 10 }), addSuffix: true
{ });
addSuffix: true
}
);
return distanceString === 'less than a minute ago' return distanceString === '0 seconds ago' ? 'just now' : distanceString;
? 'just now'
: distanceString;
} }
return ''; return '';

@ -2,17 +2,21 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3 class="d-flex justify-content-center mb-3" i18n>Pricing Plans</h3> <h3 class="d-flex justify-content-center mb-3" i18n>Pricing Plans</h3>
<p> <mat-card class="mb-4">
Our official <mat-card-content>
<strong>Ghostfolio</strong> cloud offering is the easiest way to get <p>
started. Due to the time it saves, this will be the best option for most Our official
people. The revenue is used for covering the hosting costs. <strong>Ghostfolio</strong> cloud offering is the easiest way to get
</p> started. Due to the time it saves, this will be the best option for
<p class="mb-5"> most people. The revenue is used for covering the hosting costs.
If you prefer to run <strong>Ghostfolio</strong> on your own </p>
infrastructure, please find the source code and further instructions on <p>
<a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>. If you prefer to run <strong>Ghostfolio</strong> on your own
</p> infrastructure, please find the source code and further instructions
on <a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>.
</p>
</mat-card-content>
</mat-card>
<div class="row"> <div class="row">
<div class="col-xs-12 col-md-4 mb-3"> <div class="col-xs-12 col-md-4 mb-3">
<mat-card class="d-flex flex-column h-100"> <mat-card class="d-flex flex-column h-100">

@ -126,14 +126,16 @@ ngx-skeleton-loader {
} }
} }
.mat-card-header-text { .mat-card {
margin: 0 !important; &:not([class*='mat-elevation-z']) {
border: 1px solid
rgba(var(--dark-primary-text), var(--palette-foreground-divider-alpha));
box-shadow: none;
}
} }
.mat-card:not([class*='mat-elevation-z']) { .mat-card-header-text {
border: 1px solid margin: 0 !important;
rgba(var(--dark-primary-text), var(--palette-foreground-divider-alpha));
box-shadow: none;
} }
.mat-row { .mat-row {

Loading…
Cancel
Save