added functionality for mvt table

This commit is contained in:
2024-02-29 09:31:05 +01:00
parent df60461a53
commit 1e001bb4a1
10 changed files with 374 additions and 82 deletions

View File

@ -1,4 +1,9 @@
<template>
<section v-if="searchable" :class="['mvt-search', darkMode ? 'section-darkmode' : 'section-lightmode']">
<div :class="['clientLabel', darkMode ? 'label-darkmode' : 'label-lightmode']">Template:</div>
<input v-model="mvtSearchFilter" @change="searchMVT()"
:class="['dataInput', 'input', darkMode ? 'data-darkmode' : 'data-lightmode']">
</section>
<div :class="['data', darkMode ? 'div-darkmode' : 'div-lightmode']">
<div :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Last viewed:</div>
<table class="data-table" name="maintenance-visits-template-table">
@ -26,7 +31,11 @@
{{ template.customer }}</td>
<td
:class="['Name', darkMode ? 'td-darkmode' : 'td-lightmode', darkMode ? 'Name-darkmode' : 'Name-lightmode']">
{{ template.name }}</td>
<nuxt-link to="/maintenanceVisits" id="nuxt-link" class="button"
:class="[darkMode ? 'button-darkmode' : 'button-lightmode']"
@click="goToChosenMVT(template.checklistID)">
{{ template.name }}
</nuxt-link></td>
<td
:class="['ID', darkMode ? 'td-darkmode' : 'td-lightmode', darkMode ? 'ID-darkmode' : 'ID-lightmode']">
{{ template.checklistID }}</td>
@ -42,25 +51,75 @@
<script setup>
import { ref, onMounted } from 'vue';
import { ref, onMounted, watch } from 'vue';
import Axios from '../axios.config.js';
import clientsideConfig from '../../clientsideConfig.js';
import { useStore } from 'vuex';
import { computed } from 'vue';
// get accesss to the store
const store = useStore()
const goToChosenMVT = (id) => {
store.commit('setChosenPOT', id);
store.commit('changeToTemplate');
};
const clientFilter = computed(() => store.state.filteredByClient);
const searchable = computed(() => store.state.searchable);
const mvtSearchFilter = ref('');
const darkMode = ref(true)
const maintenanceVisitTemplates = ref([]);
//get all maintenance visit templates
const getMaintenanceVisitTemplates = async () => {
if (!(clientFilter.value === '')) {
await getFilteredMVTByClient();
} else {
try {
const response = await Axios.get(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/getAllMaintenanceVisitTemplates`);
maintenanceVisitTemplates.value = response.data;
} catch (err) {
console.log(err.response.statusText);
}
}
}
//get all maintenance visit templates based on the searched mvt name
const searchMVT = async () => {
if (mvtSearchFilter.value === '') {
await getMaintenanceVisitTemplates();
} else {
try {
const response = await Axios.get(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/getSelectedMVTsByMVT/${mvtSearchFilter.value}`);
maintenanceVisitTemplates.value = response.data;
} catch (err) {
console.log(err.response.statusText);
}
}
}
// update search term
const updateSearchTerm = async () => {
mvtSearchFilter.value = '';
await getMaintenanceVisitTemplates();
}
//get all maintenance visit templates based on the searched client
const getFilteredMVTByClient = async () => {
try {
const response = await Axios.get(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/getAllMaintenanceVisitTemplates`);
const response = await Axios.get(`https://${clientsideConfig.url}:${clientsideConfig.port}/api/getSelectedMVTsByClient/${clientFilter.value}`);
maintenanceVisitTemplates.value = response.data;
} catch (err) {
console.log(err.response.statusText);
}
}
onMounted(() => {
getMaintenanceVisitTemplates();
watch(searchable, updateSearchTerm);
watch(clientFilter, getMaintenanceVisitTemplates);
onMounted(async () => {
await getMaintenanceVisitTemplates();
});
</script>
@ -79,13 +138,30 @@ export default {
align-items: flex-start;
justify-content: center;
align-self: stretch;
width: 100%;
padding: 1.25rem 1.875rem;
gap: 1.25rem;
border-radius: 0.625rem;
box-shadow: 0.25rem 0.25rem 0.25rem 0rem rgba(0, 0, 0, 0.25);
}
.section-darkmode {
background-color: #2c2c2c;
}
.section-lightmode {
background-color: #fff;
}
.data-darkmode {
background-color: #212121;
color: #fff;
}
.data-lightmode {
background-color: #EBEBEB;
color: #000;
}
.div-darkmode {
background-color: #2c2c2c;
}
@ -94,6 +170,37 @@ export default {
background-color: #fff;
}
.input {
border: none;
}
#nuxt-link {
text-decoration: none;
color: white;
}
.dataInput {
display: flex;
flex-direction: row;
align-items: flex-start;
padding: 0 0.625rem;
border-radius: 0.3125rem;
box-shadow: 0.0625rem 0.0625rem 0.25rem 0rem rgba(0, 0, 0, 0.25) inset;
letter-spacing: 5%;
font: 400 0.75rem/250% Overpass, sans-serif;
}
.clientLabel {
width: 5.5625em;
height: 1.875em;
font-family: "Overpass";
font-style: normal;
font-weight: 400;
font-size: 0.875em;
line-height: 1.875;
letter-spacing: 0.05em;
}
.data-table {
width: 100%;
padding: 0 0.625rem;
@ -101,6 +208,18 @@ export default {
border-collapse: collapse;
}
.mvt-search {
display: flex;
align-items: center;
padding: 0.625em 1.875em;
gap: 1.25em;
width: 30.125em;
height: 3.125em;
box-shadow: 0.25em 0.25em 0.25em rgba(0, 0, 0, 0.25);
border-radius: 0.625em;
box-sizing: border-box;
}
.table-row {
display: flex;
flex-direction: row;
@ -220,4 +339,5 @@ th {
.label-lightmode {
color: #000;
}</style>
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<section v-if="searchable" :class="['pot-search', darkMode ? 'section-darkmode' : 'section-lightmode']">
<div :class="['clientLabel', darkMode ? 'label-darkmode' : 'label-lightmode']">Config item</div>
<div :class="['clientLabel', darkMode ? 'label-darkmode' : 'label-lightmode']">Template:</div>
<input v-model="potSearchFilter" @change="searchPOT()"
:class="['dataInput', 'input', darkMode ? 'data-darkmode' : 'data-lightmode']">
</section>

View File

@ -1,6 +1,6 @@
<mxfile host="Electron" modified="2024-02-27T19:18:34.525Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="J7tXErA8jvjjKqEf2HCf" version="22.0.3" type="device" pages="2">
<mxfile host="Electron" modified="2024-02-29T07:41:38.802Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.0.3 Chrome/114.0.5735.289 Electron/25.8.4 Safari/537.36" etag="k45qEewLfutZ-niPY4-k" version="22.0.3" type="device" pages="2">
<diagram name="Seite-1" id="VLuSDTVFFHJCdRpH-1WC">
<mxGraphModel dx="395" dy="2842" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="396" dy="2842" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />

View File

@ -1,12 +1,16 @@
<template>
<aside :class="['actionbar', darkMode ? 'actionbar-darkmode' : 'actionbar-lightmode', isExpanded ? 'is-expanded' : 'is-not-expanded']">
<div :class="['icon', darkMode ? 'indicator-darkmode' : 'indicator-lightmode']" id="indicator-icon" @click="toggleActionbar">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Indicator-Icon-Opened.svg" />
<aside
:class="['actionbar', darkMode ? 'actionbar-darkmode' : 'actionbar-lightmode', isExpanded ? 'is-expanded' : 'is-not-expanded']">
<div :class="['icon', darkMode ? 'indicator-darkmode' : 'indicator-lightmode']" id="indicator-icon"
@click="toggleActionbar">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Indicator-Icon-Opened.svg" />
</div>
<nav class="actions">
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="search" @click="toggleSearched">
<div class="icon" id="search-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Search-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Search-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Search</pre>
@ -14,7 +18,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="filter" @click="toggleFiltered">
<div class="icon" id="filter-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Filter-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Filter-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Filter</pre>
@ -22,7 +27,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="instances">
<div class="icon" id="instances-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Instances-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Instances-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Instances</pre>
@ -30,7 +36,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="attachments">
<div class="icon" id="attachments-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Attachments-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Attachments-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Attachments</pre>
@ -38,7 +45,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="sell">
<div class="icon" id="sell-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Sell-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Sell-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Sell</pre>
@ -46,7 +54,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="archive">
<div class="icon" id="archive-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Archive-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Archive-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Archive</pre>
@ -54,7 +63,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="new" @click="add">
<div class="icon" id="new-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Add-New-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Add-New-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">New</pre>
@ -62,7 +72,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="edit" @click="toggleEditable">
<div class="icon" id="edit-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Edit-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Edit-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Edit</pre>
@ -70,7 +81,8 @@
</button>
<button :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" id="delete" @click="deleteFunc">
<div class="icon" id="delete-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/actionbar-icons/Delete-Icon.svg" />
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy"
src="../icons/actionbar-icons/Delete-Icon.svg" />
</div>
<Transition name="fade">
<pre v-if="isExpanded" :class="['label', darkMode ? 'label-darkmode' : 'label-lightmode']">Delete</pre>
@ -141,17 +153,21 @@ aside.actionbar {
gap: 1.25rem;
overflow: clip;
}
.actionbar-darkmode {
box-shadow: 0.25rem 0.25rem 0.25rem 0rem rgba(0, 0, 0, 0.25);
background-color: #2C2C2C;
}
.actionbar-lightmode {
box-shadow: 0.25rem 0.25rem 0.25rem 0rem rgba(0, 0, 0, 0.25);
background-color: #FFFFFF;
}
aside.is-expanded {
animation: expand 0.5s linear both;
}
aside.is-not-expanded {
animation: contract 0.5s linear both;
}
@ -181,16 +197,30 @@ button {
transition: 0.2s ease-in-out;
overflow: clip;
}
.button-darkmode { background-color: #2C2C2C; }
.button-lightmode { background-color: #FFFFFF; }
.button-darkmode:hover,
.indicator-darkmode:hover { background-color: #444444; }
.button-darkmode {
background-color: #2C2C2C;
}
.button-lightmode:hover,
.indicator-lightmode:hover { background-color: #ACACAC; }
.button-lightmode {
background-color: #FFFFFF;
}
.is-not-expanded>button { align-self: center; }
.button-darkmode:hover,
.indicator-darkmode:hover {
background-color: #444444;
cursor: pointer;
}
.button-lightmode:hover,
.indicator-lightmode:hover {
background-color: #ACACAC;
cursor: pointer;
}
.is-not-expanded>button {
align-self: center;
}
.icon {
@ -202,6 +232,7 @@ button {
justify-content: center;
padding: 0 0.5rem;
}
.is-not-expanded .icon {
align-self: center;
}
@ -211,8 +242,11 @@ button {
height: 1.875rem;
border-radius: 0.3125rem;
transition: 0.2s ease-in-out;
}
.is-not-expanded #indicator-icon { transform: rotate(180deg); }
}
.is-not-expanded #indicator-icon {
transform: rotate(180deg);
}
img {
@ -222,8 +256,14 @@ img {
object-position: center;
overflow: hidden;
}
.img-darkmode { filter: invert(100%); }
#indicator-icon>img { height: 1.25rem; }
.img-darkmode {
filter: invert(100%);
}
#indicator-icon>img {
height: 1.25rem;
}
.label {
@ -234,13 +274,20 @@ img {
letter-spacing: 0.02rem;
white-space: nowrap;
font: 400 0.875rem/1.25rem Overpass, sans-serif;
}
.label-darkmode { color: #FFFFFF; }
.label-lightmode { color: #000000; }
}
.label-darkmode {
color: #FFFFFF;
}
.label-lightmode {
color: #000000;
}
.fade-enter-from, .fade-leave-to {
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
@ -310,5 +357,4 @@ img {
max-width: 0;
max-inline-size: 0;
}
}
</style>
}</style>

View File

@ -20,7 +20,7 @@
</router-link>
</nav>
<nav id="site-menu">
<router-link to="/maintenanceVisits" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" @click="defaultProductionOrderPage()" id="checklists-button">
<router-link to="/maintenanceVisits" class="button" :class="[darkMode ? 'button-darkmode' : 'button-lightmode']" @click="defaultMasterChecklistPage()" id="checklists-button">
<div class="icon" id="checklists-icon">
<img :class="[darkMode ? 'img-darkmode' : 'img-lightmode']" loading="lazy" src="../icons/navbar-icons/Checklists-Icon.svg" />
</div>
@ -81,7 +81,7 @@ const defaultAssetPage = () => {
store.commit('changeToAssetlist');
};
const defaultProductionOrderPage = () => {
const defaultMasterChecklistPage = () => {
store.commit('resetStore');
store.commit('changeToTemplatelist')
}

View File

@ -1,7 +1,8 @@
<template>
<section id="content">
<div id="content-header">
<router-link to="/maintenanceVisits" class="button" id="maintenanceVisits-button">
<router-link to="/maintenanceVisits" class="button" id="maintenanceVisits-button"
@click="defaultMasterChecklistPage()">
<h1 :class="[darkMode ? 'h1-darkmode' : 'h1-lightmode']" id="active-page-name">Maintenance visits</h1>
</router-link>
&nbsp;
@ -20,20 +21,21 @@
&nbsp;
&nbsp;
&nbsp;
<router-link to="/productionOrders" class="button" id="productionOrders-button">
<router-link to="/productionOrders" class="button" id="productionOrders-button"
@click="defaultMasterChecklistPage()">
<h1 :class="[darkMode ? 'h1-darkmode' : 'h1-lightmode']" id="page-name">Production orders</h1>
</router-link>
</div>
<div id="content-body">
<ClientSearch v-if="onTemplatelist || onCustomerTemplatelist"/>
<MaintenanceVisitsTemplateTable v-if="onTemplatelist"/>
<MaintenanceVisitsTemplateTableNoClient v-if="onCustomerTemplatelist"/>
<MaintenanceVisitsTemplate v-if="onTemplate"/>
<TemplateChecklist v-if="onTemplate"/>
<TemplateSearch v-if="onInstancelist"/>
<MaintenanceVisitsInstanceTable v-if="onInstancelist"/>
<MaintenanceVisitsInstance v-if="onInstance"/>
<InstanceChecklist v-if="onInstance"/>
<ClientSearch v-if="onTemplatelist || onCustomerTemplatelist" />
<MaintenanceVisitsTemplateTable v-if="onTemplatelist" />
<MaintenanceVisitsTemplateTableNoClient v-if="onCustomerTemplatelist" />
<MaintenanceVisitsTemplate v-if="onTemplate" />
<TemplateChecklist v-if="onTemplate" />
<TemplateSearch v-if="onInstancelist" />
<MaintenanceVisitsInstanceTable v-if="onInstancelist" />
<MaintenanceVisitsInstance v-if="onInstance" />
<InstanceChecklist v-if="onInstance" />
</div>
</section>
</template>
@ -51,6 +53,15 @@ import TemplateSearch from "../components/TemplateSearch.vue";
import MaintenanceVisitsInstanceTable from "../components/server/MaintenanceVisitsInstanceTable.vue";
import MaintenanceVisitsInstance from "../components/server/MaintenanceVisitsInstance.vue";
import InstanceChecklist from "../components/server/InstanceChecklist.vue";
import { useStore } from 'vuex';
import { computed } from 'vue';
const store = useStore();
const onTemplatelist = computed(() => store.state.onTemplatelist);
const onCustomerTemplatelist = computed(() => store.state.onCustomerTemplatelist);
const onTemplate = computed(() => store.state.onTemplate);
const onInstancelist = computed(() => store.state.onInstancelist);
const onInstance = computed(() => store.state.onInstance);
definePageMeta({
layout: 'default'
@ -58,12 +69,10 @@ definePageMeta({
const darkMode = ref(true)
// to render the right components
const onTemplatelist = ref(true)
const onCustomerTemplatelist = ref(false)
const onTemplate = ref(false)
const onInstancelist = ref(false)
const onInstance = ref(false)
const defaultMasterChecklistPage = () => {
store.commit('resetStore');
store.commit('changeToTemplatelist')
}
</script>
<script>

View File

@ -1,7 +1,8 @@
<template>
<section id="content">
<div id="content-header">
<router-link to="/maintenanceVisits" class="button" id="maintenanceVisits-button">
<router-link to="/maintenanceVisits" class="button" id="maintenanceVisits-button"
@click="defaultMasterChecklistPage">
<h1 :class="[darkMode ? 'h1-darkmode' : 'h1-lightmode']" id="page-name">Maintenance visits</h1>
</router-link>
&nbsp;
@ -21,19 +22,20 @@
&nbsp;
&nbsp;
<router-link to="/productionOrders" class="button" id="productionOrders-button">
<h1 :class="[darkMode ? 'h1-darkmode' : 'h1-lightmode']" id="active-page-name">Production orders</h1>
<h1 :class="[darkMode ? 'h1-darkmode' : 'h1-lightmode']" id="active-page-name"
@click="defaultMasterChecklistPage()">Production orders</h1>
</router-link>
</div>
<div id="content-body">
<ClientSearch v-if="onTemplatelist || onCustomerTemplatelist"/>
<ProductionOrdersTemplateTable v-if="onTemplatelist"/>
<ProductionOrdersTemplateTableNoClient v-if="onCustomerTemplatelist"/>
<ProductionOrdersTemplate v-if="onTemplate"/>
<TemplateChecklist v-if="onTemplate"/>
<TemplateSearch v-if="onInstancelist"/>
<ProductionOrdersInstanceTable v-if="onInstancelist"/>
<ProductionOrdersInstance v-if="onInstance"/>
<InstanceChecklist v-if="onInstance"/>
<ClientSearch v-if="onTemplatelist || onCustomerTemplatelist" />
<ProductionOrdersTemplateTable v-if="onTemplatelist" />
<ProductionOrdersTemplateTableNoClient v-if="onCustomerTemplatelist" />
<ProductionOrdersTemplate v-if="onTemplate" />
<TemplateChecklist v-if="onTemplate" />
<TemplateSearch v-if="onInstancelist" />
<ProductionOrdersInstanceTable v-if="onInstancelist" />
<ProductionOrdersInstance v-if="onInstance" />
<InstanceChecklist v-if="onInstance" />
</div>
</section>
</template>
@ -66,6 +68,11 @@ definePageMeta({
})
const darkMode = ref(true)
const defaultMasterChecklistPage = () => {
store.commit('resetStore');
store.commit('changeToTemplatelist')
}
</script>
<script>

View File

@ -0,0 +1,22 @@
import { selectedMVTsByClient, errorMsg } from "../../middleware/maintenanceVisitTemplates";
import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => {
const headers: Record<string, Parameters<OutgoingMessage['setHeader']>[1]> = {
'Access-Control-Allow-Origin': 'https://tueitapp.tueit.de',
'Access-Control-Allow-Headers': 'authorization, content-type',
'Access-Control-Allow-Methods': 'OPTIONS,GET,HEAD,PUT,PATCH,POST,DELETE',
};
setResponseHeaders(event, headers)
if (!(errorMsg === '')) {
throw createError({
statusCode: 400,
statusMessage: errorMsg,
})
}
setResponseStatus(event, 200)
return selectedMVTsByClient
})

View File

@ -0,0 +1,22 @@
import { selectedMVTsByMVT, errorMsg } from "../../middleware/maintenanceVisitTemplates";
import { OutgoingMessage } from 'http';
export default defineEventHandler(async (event) => {
const headers: Record<string, Parameters<OutgoingMessage['setHeader']>[1]> = {
'Access-Control-Allow-Origin': 'https://tueitapp.tueit.de',
'Access-Control-Allow-Headers': 'authorization, content-type',
'Access-Control-Allow-Methods': 'OPTIONS,GET,HEAD,PUT,PATCH,POST,DELETE',
};
setResponseHeaders(event, headers)
if (!(errorMsg === '')) {
throw createError({
statusCode: 400,
statusMessage: errorMsg,
})
}
setResponseStatus(event, 200)
return selectedMVTsByMVT
})

View File

@ -3,24 +3,26 @@ import serversideConfig from '../../serversideConfig';
import https from 'https';
let maintenanceVisitTemplates = [];
let selectedMVTsByMVT = [];
let selectedMVTsByClient = [];
let errorMsg = '';
export default defineEventHandler(async (event) => {
const agent = new https.Agent({
rejectUnauthorized: false,
});
const axiosInstance = axios.create({
headers: {
'Content-Type': 'application/json',
Accept: "*",
},
httpsAgent: agent
});
if (event.path.startsWith("/api/getAllMaintenanceVisitTemplates")) {
const agent = new https.Agent({
rejectUnauthorized: false,
});
const axiosInstance = axios.create({
headers: {
'Content-Type': 'application/json',
Accept: "*",
},
httpsAgent: agent
});
// get all maintenance visit templates object from backend
try {
let res = await axiosInstance.get(`https://${serversideConfig.url}:${serversideConfig.port}/masterMaintenanceVisits`);
@ -46,6 +48,70 @@ export default defineEventHandler(async (event) => {
}
}
}
if (event.path.startsWith("/api/getSelectedMVTsByMVT")) {
// get selected maintenance visit templates object by pot from backend
let filteredMVt = null;
const path = event._path;
const pathSegments = path.split('/');
filteredMVt = pathSegments[pathSegments.length - 1];
try {
let res = await axiosInstance.get(`https://${serversideConfig.url}:${serversideConfig.port}/selectedMasterMaintenanceVisitsByChecklistname/${filteredMVt}`);
selectedMVTsByMVT = res.data;
} catch (err) {
if (axios.isAxiosError(err)) {
const axiosError = err as AxiosError;
if (axiosError.response) {
// Axios error
console.error(axiosError.response.data.message);
errorMsg = axiosError.response.data.message;
} else if (axiosError.request) {
// If error was caused by the request
console.error(axiosError.request);
} else {
// Other errors
console.error('Error', axiosError.message);
}
} else {
// No AxiosError
console.error('Error', err);
}
}
}
if (event.path.startsWith("/api/getSelectedMVTsByClient")) {
// get selected maintenance visit templates object by client from backend
let filteredClient = null;
const path = event._path;
const pathSegments = path.split('/');
filteredClient = pathSegments[pathSegments.length - 1];
try {
let res = await axiosInstance.get(`https://${serversideConfig.url}:${serversideConfig.port}/selectedMasterMaintenanceVisitsByCustomer/${filteredClient}`);
selectedMVTsByClient = res.data;
} catch (err) {
if (axios.isAxiosError(err)) {
const axiosError = err as AxiosError;
if (axiosError.response) {
// Axios error
console.error(axiosError.response.data.message);
errorMsg = axiosError.response.data.message;
} else if (axiosError.request) {
// If error was caused by the request
console.error(axiosError.request);
} else {
// Other errors
console.error('Error', axiosError.message);
}
} else {
// No AxiosError
console.error('Error', err);
}
}
}
})
export { maintenanceVisitTemplates, errorMsg };
export { maintenanceVisitTemplates, selectedMVTsByMVT, selectedMVTsByClient, errorMsg };