Compare commits

...

7 Commits

Author SHA1 Message Date
01f949ca03 Zwischenspeicher 2023-05-05 12:11:07 +02:00
b35facc343 Fehler korrigiert 2023-05-03 12:53:54 +02:00
b9299e2cdf Zwischenspeicher 2023-05-03 12:49:56 +02:00
43c2f1e841 Schönheitskorrekturen-Zwischenspeicher 2023-05-02 16:19:44 +02:00
35407b034f Komponenten eingebaut und benutzt (erste Schritte) 2023-05-02 16:07:30 +02:00
4edf59fd4c Änderungen von adresses_index 2023-04-20 15:27:45 +02:00
cd8918f21b Header 2023-04-20 13:28:44 +02:00
16 changed files with 175 additions and 245 deletions

105
app.vue
View File

@ -1,104 +1,11 @@
<template>
<div class="main-container">
<div class="header">
<p>
<router-link to="/header/help">
HILFE
</router-link>
<router-link to="/header/info">
INFO
</router-link>
</p>
</div>
<div class="sidenav">
<div class="sidenav-content">
<h1 class="menu-heading">
WebAdmin
</h1>
<p>
<router-link to="/">
Home
</router-link>
<router-link to="/adresses/adresses_index">
Adressverwaltung
</router-link>
</p>
</div>
</div>
<div class="container">
<router-view />
</div>
</div>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</template>
<script></script>
<script setup lang="ts">
<style scoped>
.main-container {
max-width: 70vw;
margin: auto;
}
</script>
/* Navigation */
/* The side navigation menu */
.sidenav {
height: 100%;
width: 250px;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #a5aeb5;
overflow-x: hidden;
padding-top: 20px;
}
.sidenav-content {
padding: 15px;
}
/* The menu title */
.menu-heading {
color: #f1f1f1;
width: 200px;
height: 75px;
font-weight: 600;
font-size: 40px;
}
/* The navigation menu links */
.sidenav a {
text-decoration: none;
font-size: 25px;
color: #e0e2e3;
display: block;
transition: 0.3s;
}
/* When you mouse over the navigation links, change their color */
.sidenav a:hover {
color: #f1f1f1;
}
/* Position and style the close button (top right corner) */
.sidenav .closebtn {
position: absolute;
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
/* Style page content - use this if you want to push the page content to the right when you open the side navigation */
#main {
transition: margin-left .5s;
padding: 20px;
}
/* On smaller screens, where height is less than 450px, change the style of the sidenav (less padding and a smaller font size) */
@media screen and (max-height: 450px) {
.sidenav {padding-top: 15px;}
.sidenav a {font-size: 18px;}
}
</style>
<style src="@/assets/main.css"></style>

View File

@ -2,17 +2,59 @@
padding: 0;
margin: 0;
box-sizing: border-box;
font-family: "TimesNewRoman";
font-family: "Helvetica";
}
.heading {
background-color: beige;
.main-content {
margin-left: 275px;
margin-top: 10px;
}
.main-container {
max-width: 45vw;
margin: auto;
padding-top: 60px;
/* On smaller screens, where height is less than 450px, change the style of the sidenav (less padding and a smaller font size) */
@media screen and (max-height: 450px) {
.sidenav {padding-top: 15px;}
.sidenav a {font-size: 18px;}
}
#title {
padding-bottom: 10px;
}
/* Header */
.header {
background-color: #a5aeb5;
width: 100%;
margin-left: 250px;
}
#header-table th {
text-transform: uppercase;
text-align: left;
padding: 8px;
min-width: 20px;
}
#header-table tr {
min-width: 20px;
}
#header-table td {
text-align: left;
padding: 8px;
}
/* The navigation menu links */
.header a {
text-decoration: none;
font-size: 18px;
color: #e0e2e3;
display: block;
transition: 0.3s;
}
/* When you mouse over the navigation links, change their color */
.header a:hover {
color: #f1f1f1;
}
/* The side navigation menu */
@ -39,11 +81,11 @@
height: 75px;
font-weight: 600;
font-size: 40px;
text-align: center;
}
/* The navigation menu links */
.sidenav a {
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #e0e2e3;
@ -56,58 +98,27 @@
color: #f1f1f1;
}
/* Position and style the close button (top right corner) */
.sidenav .closebtn {
position: absolute;
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
/* Address Table */
.address-table {
border-collapse: collapse;
width: 100%;
}
/* Style page content - use this if you want to push the page content to the right when you open the side navigation */
#main {
transition: margin-left .5s;
padding: 20px;
.address-table th,
.address-table td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
/* On smaller screens, where height is less than 450px, change the style of the sidenav (less padding and a smaller font size) */
@media screen and (max-height: 450px) {
.sidenav {padding-top: 15px;}
.sidenav a {font-size: 18px;}
.address-table th {
background-color: #f2f2f2;
color: #333;
}
/* Styling for adresses */
input {
display: block;
width: 350px;
margin: 20px auto;
padding: 10px 45px;
background: white url("assets/search.svg") no-repeat 15px center;
background-size: 15px 15px;
font-size: 16px;
border: none;
border-radius: 5px;
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
}
.item {
width: 350px;
margin: 0 auto 10px auto;
padding: 10px 20px;
color: white;
border-radius: 5px;
box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px,
rgba(0, 0, 0, 0.06) 0px 1px 2px 0px;
}
.adresses {
background-color: #a5aeb5;
cursor: pointer;
}
.error {
background-color: tomato;
}

19
components/HeaderNav.vue Normal file
View File

@ -0,0 +1,19 @@
<template>
<div class="header">
<table id="header-table">
<tr>
<th>
<NuxtLink to="/header/help">
Hilfe
</NuxtLink>
</th>
<th>
<NuxtLink to="/header/info">
Info
</NuxtLink>
</th>
<th> Logout </th>
</tr>
</table>
</div>
</template>

15
components/SideNav.vue Normal file
View File

@ -0,0 +1,15 @@
<template>
<div class="sidenav">
<div class="sidenav-content">
<h1 class="menu-heading">
WebAdmin
</h1>
<NuxtLink to="/">
Home
</NuxtLink>
<NuxtLink to="/address-management/address_index">
Adressverwaltung
</NuxtLink>
</div>
</div>
</template>

36
data/addressData.json Normal file
View File

@ -0,0 +1,36 @@
{
"items":
[
{
"id": 1,
"customernumber": "0000",
"name": "Dieter Hillers",
"company": "Hedemann GmbH",
"street": "Oldenburger Str. 28",
"postalcode": "26639",
"location": "Wiesmoor",
"phone": "04944-1450"
},
{
"id": 2,
"customernumber": "1111",
"name": "Holger Hedemann",
"company": "Hedemann GmbH",
"street": "Oldenburger Str. 28",
"postalcode": "26639",
"location": "Wiesmoor",
"phone": "04944-1450"
},
{
"id": 3,
"customernumber": "2222",
"name": "Hilko Hartmann",
"company": "Hedemann GmbH",
"street": "Oldenburger Str. 28",
"postalcode": "26639",
"location": "Wiesmoor",
"phone": "04944-1450"
}
]
}

7
layouts/default.vue Normal file
View File

@ -0,0 +1,7 @@
<template>
<div>
<HeaderNav />
<SideNav />
<slot />
</div>
</template>

View File

View File

@ -3,6 +3,9 @@ export default defineNuxtConfig({
modules: [
'@huntersofbook/naive-ui-nuxt'
],
css: [
'@/assets/main.css'
],
build: {
transpile: [
'trpc-nuxt'

2
package-lock.json generated
View File

@ -1,5 +1,5 @@
{
"name": "webadmin3.0",
"name": "WebAdmin3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {

View File

@ -0,0 +1,11 @@
<template>
<div class="main-content">
<h1 id="title">
Willkommen in der Adressverwaltung
</h1>
</div>
</template>
<script lang="ts">
</script>

View File

@ -1,33 +0,0 @@
<template>
<div class="main-container">
<div class="heading">
<h1>
Willkommen in der Adressverwaltung
</h1>
</div>
<div class="content">
<input v-model="input" type="text" placeholder="Suche...">
<div v-for="adresses in filteredList()" :key="adresses" class="adresses">
<p>{{ adresses }}</p>
</div>
<div v-if="input&&!filteredList().length" class="item error">
<p>Nicht gefunden</p>
</div>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
const input = ref('')
const adresses = ['Hedemann', 'Nietiedt', 'Schoon']
function filteredList () {
return adresses.filter(adresses =>
adresses.toLowerCase().includes(input.value.toLowerCase())
)
}
</script>
<style scoped src="@/assets/main.css">
</style>

View File

@ -1,14 +0,0 @@
<template>
<div class="main-container">
<div class="heading">
<h1>
Kundenname
</h1>
</div>
<div class="content">
<p>Hier findest einen Kunden</p>
</div>
</div>
</template>
<style scoped src="@/assets/main.css"></style>

View File

@ -1,14 +1,10 @@
<template>
<div class="main-container">
<div class="heading">
<h1>
<div class="main-content">
<h1 id="title">
Hilfe
</h1>
</div>
<div class="content">
<p>Hier findest du Hilfe</p>
</div>
</div>
</template>
<style scoped src="@/assets/main.css"></style>

View File

@ -1,14 +1,11 @@
<template>
<div class="main-container">
<div class="heading">
<h1>
<div class="main-content">
<h1 id="title">
Info
</h1>
</div>
<div class="content">
<p>Hier findest du Infos</p>
</div>
</div>
</template>
<style scoped src="@/assets/main.css"></style>

View File

@ -1,9 +1,7 @@
<template>
<div class="main-container">
<div class="heading">
<h1>Willkommen</h1>
</div>
<div class="main-content">
<h1 id="title">
Willkommen
</h1>
</div>
</template>
<style scoped src="@/assets/main.css"></style>

View File

@ -1,23 +0,0 @@
import { createRouter, createWebHistory } from 'vue-router'
import index from '@/pages/index.vue'
import adresses from '@/pages/adresses/adresses_index.vue'
import help from '@/pages/header/help'
import info from '@/pages/header/info'
const routes = [
{ path: '/', name: 'Home', component: index },
{ path: 'adresses/adresses_index', name: 'Adressverwaltung', component: adresses },
{ path: 'header/help', name: 'Hilfe', component: help },
{ path: 'header/info', name: 'Info', component: info }
]
const router = createRouter({
history: createWebHistory(),
routes
})
const app = createApp({})
app.use(router)
export default router