transfer 2 angular

This commit is contained in:
2024-02-13 17:34:08 +01:00
parent 0ec827f8ed
commit e47088a33e
27 changed files with 453 additions and 1247 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
# Landingpage # AngUniversityHttpclient
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.1.0. This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.1.0.
+7 -9
View File
@@ -3,7 +3,7 @@
"version": 1, "version": 1,
"newProjectRoot": "projects", "newProjectRoot": "projects",
"projects": { "projects": {
"landingpage": { "ang-university-httpclient": {
"projectType": "application", "projectType": "application",
"schematics": { "schematics": {
"@schematics/angular:component": { "@schematics/angular:component": {
@@ -23,7 +23,7 @@
"build": { "build": {
"builder": "@angular-devkit/build-angular:application", "builder": "@angular-devkit/build-angular:application",
"options": { "options": {
"outputPath": "dist/landingpage", "outputPath": "dist/ang-university-httpclient",
"index": "src/index.html", "index": "src/index.html",
"browser": "src/main.ts", "browser": "src/main.ts",
"polyfills": [ "polyfills": [
@@ -35,9 +35,8 @@
"src/assets" "src/assets"
], ],
"styles": [ "styles": [
"@angular/material/prebuilt-themes/indigo-pink.css", "src/styles.css",
"node_modules/bootstrap5/src/css/bootstrap.min.css", "node_modules/bootstrap5/src/css/bootstrap.min.css"
"src/styles.css"
], ],
"scripts": [ "scripts": [
"node_modules/bootstrap5/src/js/bootstrap.bundle.min.js" "node_modules/bootstrap5/src/js/bootstrap.bundle.min.js"
@@ -71,10 +70,10 @@
"builder": "@angular-devkit/build-angular:dev-server", "builder": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production": {
"buildTarget": "landingpage:build:production" "buildTarget": "ang-university-httpclient:build:production"
}, },
"development": { "development": {
"buildTarget": "landingpage:build:development" "buildTarget": "ang-university-httpclient:build:development"
} }
}, },
"defaultConfiguration": "development" "defaultConfiguration": "development"
@@ -82,7 +81,7 @@
"extract-i18n": { "extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n", "builder": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"buildTarget": "landingpage:build" "buildTarget": "ang-university-httpclient:build"
} }
}, },
"test": { "test": {
@@ -98,7 +97,6 @@
"src/assets" "src/assets"
], ],
"styles": [ "styles": [
"@angular/material/prebuilt-themes/indigo-pink.css",
"src/styles.css" "src/styles.css"
], ],
"scripts": [] "scripts": []
+309 -1087
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -1,5 +1,5 @@
{ {
"name": "landingpage", "name": "ang-university-httpclient",
"version": "0.0.0", "version": "0.0.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
@@ -11,23 +11,23 @@
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^17.1.0", "@angular/animations": "^17.1.0",
"@angular/cdk": "^17.1.1",
"@angular/common": "^17.1.0", "@angular/common": "^17.1.0",
"@angular/compiler": "^17.1.0", "@angular/compiler": "^17.1.0",
"@angular/core": "^17.1.0", "@angular/core": "^17.1.0",
"@angular/forms": "^17.1.0", "@angular/forms": "^17.1.0",
"@angular/material": "^17.1.1",
"@angular/platform-browser": "^17.1.0", "@angular/platform-browser": "^17.1.0",
"@angular/platform-browser-dynamic": "^17.1.0", "@angular/platform-browser-dynamic": "^17.1.0",
"@angular/router": "^17.1.0", "@angular/router": "^17.1.0",
"@types/lodash": "^4.14.202",
"bootstrap5": "^1.1.9", "bootstrap5": "^1.1.9",
"lodash": "^4.17.21",
"rxjs": "~7.8.0", "rxjs": "~7.8.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"zone.js": "~0.14.3" "zone.js": "~0.14.3"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "^17.1.0", "@angular-devkit/build-angular": "^17.1.0",
"@angular/cli": "^17.1.1", "@angular/cli": "^17.1.0",
"@angular/compiler-cli": "^17.1.0", "@angular/compiler-cli": "^17.1.0",
"@types/jasmine": "~5.1.0", "@types/jasmine": "~5.1.0",
"jasmine-core": "~5.1.0", "jasmine-core": "~5.1.0",
+4 -6
View File
@@ -1,16 +1,14 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { ListLinksComponent } from './list-links/list-links.component'; import { LinksComponent } from './links/links.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'list-links', pathMatch: 'full' }, { path: '', redirectTo: '/list-links', pathMatch: 'full'},
{ path: 'list-links', component:ListLinksComponent }, { path: 'list-links', component:LinksComponent }
{ path: '**', component: PageNotFoundComponent }
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes, { useHash: true })], imports: [RouterModule.forRoot(routes, {useHash: true})],
exports: [RouterModule] exports: [RouterModule]
}) })
export class AppRoutingModule { } export class AppRoutingModule { }
+17 -18
View File
@@ -1,25 +1,24 @@
<nav class="navbar navbar-expand-lg bg-body-tertiary" > <header>
<div class="container-fluid"> <nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="hallo">Navbar</a> <div class="container">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> <a href="#" class="navbar-brand">
<span class="navbar-toggler-icon"></span> <img src="assets/img/net-so.org.logo.png" alt="" width="100" class="d-inline-block align-text-center">
</button> Net-So.Org
<div class="collapse navbar-collapse" id="navbarNavAltMarkup" data-bs-theme="dark"> </a>
<div class="navbar-nav"> </div>
</nav>
<a class="nav-link" routerLink="/list-links" routerLinkActive="active" ariaCurrentWhenActive="page">Internal Links</a> </header>
</div> <div class="container">
</div>
</div>
</nav>
<div class="container-fluid text-center">
<!-- The routed views render in the <router-outlet>-->
<router-outlet></router-outlet> <router-outlet></router-outlet>
</div> </div>
<footer>
<footer class="container-fluid text-center"> <div class="container bg-light text-center">
<p>Footer Text</p> Most of the stuff people worry about aint never gonna happen anyway.
</div>
</footer> </footer>
+3 -3
View File
@@ -20,16 +20,16 @@ describe('AppComponent', () => {
expect(app).toBeTruthy(); expect(app).toBeTruthy();
}); });
it(`should have as title 'landingpage'`, () => { it(`should have as title 'ang-university-httpclient'`, () => {
const fixture = TestBed.createComponent(AppComponent); const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance; const app = fixture.componentInstance;
expect(app.title).toEqual('landingpage'); expect(app.title).toEqual('ang-university-httpclient');
}); });
it('should render title', () => { it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent); const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges(); fixture.detectChanges();
const compiled = fixture.nativeElement as HTMLElement; const compiled = fixture.nativeElement as HTMLElement;
expect(compiled.querySelector('h1')?.textContent).toContain('Hello, landingpage'); expect(compiled.querySelector('h1')?.textContent).toContain('Hello, ang-university-httpclient');
}); });
}); });
+1 -1
View File
@@ -6,5 +6,5 @@ import { Component } from '@angular/core';
styleUrl: './app.component.css' styleUrl: './app.component.css'
}) })
export class AppComponent { export class AppComponent {
title = 'landingpage'; title = 'ang-university-httpclient';
} }
+5 -13
View File
@@ -1,29 +1,21 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser';
import { MatGridListModule } from '@angular/material/grid-list';
import {MatSidenavModule} from '@angular/material/sidenav';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { HttpClientModule } from '@angular/common/http';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component'; import { LinksComponent } from './links/links.component';
import { ListLinksComponent } from './list-links/list-links.component'; import * as _ from 'lodash';
@NgModule({ @NgModule({
declarations: [ declarations: [
AppComponent, AppComponent,
PageNotFoundComponent, LinksComponent
ListLinksComponent,
PageNotFoundComponent,
ListLinksComponent
], ],
imports: [ imports: [
BrowserModule, BrowserModule,
AppRoutingModule, AppRoutingModule,
BrowserAnimationsModule, HttpClientModule
MatGridListModule,
MatSidenavModule
], ],
providers: [], providers: [],
bootstrap: [AppComponent] bootstrap: [AppComponent]
+16
View File
@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { LinksService } from './links.service';
describe('LinksService', () => {
let service: LinksService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(LinksService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
+29
View File
@@ -0,0 +1,29 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Links } from './links';
import { Observable } from 'rxjs';
import * as _ from 'lodash';
@Injectable({
providedIn: 'root'
})
export class LinksService {
constructor(private http: HttpClient) { }
private apiUrl = 'http://10.0.0.104:8055/items/landingpage';
public apiKey = 'KGjpxZ3tesmhEXHS7C7JbKDyW6YJlgQT';
httpOptions = {
headers: new HttpHeaders({
'Authorization': `Bearer ${this.apiKey}`,
}),
};
getLinks(): Observable<Links> {
return this.http
.get<Links>(this.apiUrl, this.httpOptions)
}
}
@@ -1,9 +1,8 @@
export interface Applications { export interface Links {
id: string; id: string;
name: string; name: string;
beschreibung: string; beschreibung: string;
bild: string; bild: string;
link: string; link: string;
link_zu_software: string; link_zu_software: string
status: string
} }
+14
View File
@@ -0,0 +1,14 @@
<div class="card" *ngFor="let link of linkList">
<a href="{{ link.link }}" target="_blank" class="card-link">
<img src="http://10.0.0.104:8055/assets/{{ link.bild }}?access_token={{ apiKey }}&width=200" alt=" {{ link.name }}" style="width:200px" >
</a>
<div class="card-body">
<h5 class="card-title"> {{ link.name }} </h5>
<p class="card-text">{{ link.beschreibung }}</p>
<a href="{{ link.link_zu_software }}" target="_blank" class="card-link">Website: {{ link.name }}</a>
</div>
</div>
@@ -1,18 +1,18 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ListLinksComponent } from './list-links.component'; import { LinksComponent } from './links.component';
describe('ListLinksComponent', () => { describe('LinksComponent', () => {
let component: ListLinksComponent; let component: LinksComponent;
let fixture: ComponentFixture<ListLinksComponent>; let fixture: ComponentFixture<LinksComponent>;
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ListLinksComponent] declarations: [LinksComponent]
}) })
.compileComponents(); .compileComponents();
fixture = TestBed.createComponent(ListLinksComponent); fixture = TestBed.createComponent(LinksComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
fixture.detectChanges(); fixture.detectChanges();
}); });
+30
View File
@@ -0,0 +1,30 @@
import { Component, OnDestroy, OnInit } from '@angular/core';
import { LinksService } from '../links.service';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-links',
templateUrl: './links.component.html',
styleUrl: './links.component.css'
})
export class LinksComponent implements OnInit {
linkList: any = [];
apiKey = this.linkservice.apiKey;
constructor (public linkservice: LinksService) {}
ngOnInit(): void {
this.getLinks();
}
getLinks() {
return this.linkservice.getLinks().subscribe((data: any) => {
this.linkList = data.data;
this.apiKey;
console.log(this.linkList);
});
}
}
@@ -1,3 +0,0 @@
mat-grid-tile {
background: lightblue;
}
@@ -1,2 +0,0 @@
<p>works</p>
@@ -1,10 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-list-links',
templateUrl: './list-links.component.html',
styleUrl: './list-links.component.css'
})
export class ListLinksComponent {
}
@@ -1,7 +0,0 @@
<h1>Seite nicht gefunden</h1>
<div>
<img src="../assets/pics/the_end.jpg" alt="This is the End">
</div>
<div>
You have reached the end of the Internet
</div>
@@ -1,23 +0,0 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PageNotFoundComponent } from './page-not-found.component';
describe('PageNotFoundComponent', () => {
let component: PageNotFoundComponent;
let fixture: ComponentFixture<PageNotFoundComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [PageNotFoundComponent]
})
.compileComponents();
fixture = TestBed.createComponent(PageNotFoundComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -1,10 +0,0 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-page-not-found',
templateUrl: './page-not-found.component.html',
styleUrl: './page-not-found.component.css'
})
export class PageNotFoundComponent {
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 333 B

+3 -5
View File
@@ -1,15 +1,13 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="de">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Landingpage</title> <title>Homenas Landing Page</title>
<base href="/"> <base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico"> <link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head> </head>
<body class="mat-typography"> <body>
<app-root></app-root> <app-root></app-root>
</body> </body>
</html> </html>
-34
View File
@@ -1,35 +1 @@
/* You can add global styles to this file, and also import other style files */ /* You can add global styles to this file, and also import other style files */
html, body { height: 100%; }
body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
/* Remove the navbar's default margin-bottom and rounded borders */
.navbar {
margin-bottom: 0;
border-radius: 0;
}
/* Set height of the grid so .sidenav can be 100% (adjust as needed) */
.row.content {height: 450px}
/* Set gray background color and 100% height */
.sidenav {
padding-top: 20px;
background-color: #f1f1f1;
height: 100%;
}
/* Set black background color, white text and some padding */
footer {
background-color: #555;
color: white;
padding: 15px;
}
/* On small screens, set height to 'auto' for sidenav and grid */
@media screen and (max-width: 767px) {
.sidenav {
height: auto;
padding: 15px;
}
.row.content {height:auto;}
}