MessageService + MessageComponent
This commit is contained in:
parent
8d0129f25b
commit
faccb3bbbe
@ -78,4 +78,3 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import {Light} from '../parts/light/Light';
|
|||||||
import {Junction} from '../junction/Junction';
|
import {Junction} from '../junction/Junction';
|
||||||
import {Wire} from '../wire/Wire';
|
import {Wire} from '../wire/Wire';
|
||||||
import {Point} from '../Point';
|
import {Point} from '../Point';
|
||||||
|
import {MessageService} from '../message/message.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-board',
|
selector: 'app-board',
|
||||||
@ -42,6 +43,12 @@ export class BreadboardComponent {
|
|||||||
|
|
||||||
protected wireEndDuplicate: boolean = false;
|
protected wireEndDuplicate: boolean = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
protected readonly messageService: MessageService,
|
||||||
|
) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
asBattery(part: Part): Battery {
|
asBattery(part: Part): Battery {
|
||||||
return part as Battery;
|
return part as Battery;
|
||||||
}
|
}
|
||||||
@ -109,7 +116,7 @@ export class BreadboardComponent {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.wireEndDuplicate) {
|
if (this.wireEndDuplicate) {
|
||||||
console.log("Not connecting duplicate wire.");
|
this.messageService.warn("Diese Verbindung existiert bereits.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const wire = new Wire(start, end);
|
const wire = new Wire(start, end);
|
||||||
|
|||||||
@ -1 +1,3 @@
|
|||||||
<app-board></app-board>
|
<app-board></app-board>
|
||||||
|
|
||||||
|
<app-messages></app-messages>
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
import {Component} from '@angular/core';
|
import {Component} from '@angular/core';
|
||||||
import {BreadboardComponent} from './breadboard/breadboard.component';
|
import {BreadboardComponent} from './breadboard/breadboard.component';
|
||||||
|
import {MessagesComponent} from './message/messages/messages.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-editor',
|
selector: 'app-editor',
|
||||||
imports: [
|
imports: [
|
||||||
BreadboardComponent
|
BreadboardComponent,
|
||||||
|
MessagesComponent
|
||||||
],
|
],
|
||||||
templateUrl: './editor.component.html',
|
templateUrl: './editor.component.html',
|
||||||
styleUrl: './editor.component.less'
|
styleUrl: './editor.component.less'
|
||||||
|
|||||||
12
src/main/angular/src/app/editor/message/Message.ts
Normal file
12
src/main/angular/src/app/editor/message/Message.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import {MessageType} from './MessageType';
|
||||||
|
|
||||||
|
export class Message {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
readonly type: MessageType,
|
||||||
|
readonly text: string,
|
||||||
|
) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
5
src/main/angular/src/app/editor/message/MessageType.ts
Normal file
5
src/main/angular/src/app/editor/message/MessageType.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export enum MessageType {
|
||||||
|
Error = "Error",
|
||||||
|
Warn = "Warn",
|
||||||
|
Info = "Info",
|
||||||
|
}
|
||||||
30
src/main/angular/src/app/editor/message/message.service.ts
Normal file
30
src/main/angular/src/app/editor/message/message.service.ts
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import {Injectable} from '@angular/core';
|
||||||
|
import {Message} from './Message';
|
||||||
|
import {MessageType} from './MessageType';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class MessageService {
|
||||||
|
|
||||||
|
messages: Message[] = [];
|
||||||
|
|
||||||
|
info(text: string, seconds: number = 10) {
|
||||||
|
this.add(MessageType.Info, text, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
warn(text: string, seconds: number = 10) {
|
||||||
|
this.add(MessageType.Warn, text, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
error(text: string, seconds: number = 10) {
|
||||||
|
this.add(MessageType.Error, text, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
add(type: MessageType, text: string, seconds: number = 10) {
|
||||||
|
const message = new Message(type, text);
|
||||||
|
this.messages.push(message);
|
||||||
|
setTimeout(() => this.messages.splice(this.messages.indexOf(message), 1), seconds * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
<div class="messages">
|
||||||
|
<div *ngFor="let message of messageService.messages" class="message message{{message.type}}">
|
||||||
|
{{ message.text }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
.messages {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
|
.message {
|
||||||
|
border-top: 1px solid gray;
|
||||||
|
background-color: lightgray;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.messageError {
|
||||||
|
background-color: #ffcfcf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.messageWarn {
|
||||||
|
background-color: lightyellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.messageInfo {
|
||||||
|
background-color: #d2ffd2;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
import {Component} from '@angular/core';
|
||||||
|
import {NgForOf} from '@angular/common';
|
||||||
|
import {MessageService} from '../message.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-messages',
|
||||||
|
imports: [
|
||||||
|
NgForOf
|
||||||
|
],
|
||||||
|
templateUrl: './messages.component.html',
|
||||||
|
styleUrl: './messages.component.less'
|
||||||
|
})
|
||||||
|
export class MessagesComponent {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
readonly messageService: MessageService,
|
||||||
|
) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user