Solved #15 and #16.

This commit is contained in:
Sockenklaus
2021-10-16 01:10:40 +02:00
parent 82ca721a9f
commit 273d9b3ecb
2 changed files with 6468 additions and 108 deletions

6511
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -34,9 +34,15 @@ AddEmployeeModal(
:key="dIndex" :key="dIndex"
:style="dIndex === 6 ? 'border-right : 2px solid' : ''" :style="dIndex === 6 ? 'border-right : 2px solid' : ''"
:class="{'bg-secondary bg-opacity-10' : row.dates[dIndex] === null, 'selected' : isSelected(mIndex, rIndex, eIndex, dIndex)}" :class="{'bg-secondary bg-opacity-10' : row.dates[dIndex] === null, 'selected' : isSelected(mIndex, rIndex, eIndex, dIndex)}"
tabindex="0"
@click.exact="row.dates[dIndex] !== null ? select(mIndex, rIndex, eIndex, dIndex) : null" @click.exact="row.dates[dIndex] !== null ? select(mIndex, rIndex, eIndex, dIndex) : null"
@click.ctrl.exact="row.dates[dIndex] !== null ? ctrlSelect(mIndex, rIndex, eIndex, dIndex) : null" @click.ctrl.exact="row.dates[dIndex] !== null ? ctrlSelect(mIndex, rIndex, eIndex, dIndex) : null"
@click.shift.exact="row.dates[dIndex] !== null ? shiftSelect(mIndex, rIndex, eIndex, dIndex) : null" @click.shift.exact="row.dates[dIndex] !== null ? shiftSelect(mIndex, rIndex, eIndex, dIndex) : null"
@keydown.esc="onEscape"
@keydown.up.prevent="onUp"
@keydown.down.prevent="onDown"
@keydown.right="onRight"
@keydown.left="onLeft"
) )
tr() tr()
td().text-end td().text-end
@@ -59,7 +65,7 @@ AddEmployeeModal(
<script setup lang="ts"> <script setup lang="ts">
import { watch, computed, ref } from 'vue' import { watch, computed, ref, onMounted } from 'vue'
import type { Ref, ComputedRef } from 'vue' import type { Ref, ComputedRef } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useEmployees } from '../stores/employees' import { useEmployees } from '../stores/employees'
@@ -185,7 +191,7 @@ AddEmployeeModal(
function getDoubleWeekdays() : string[] { function getDoubleWeekdays() : string[] {
let arr = ['Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.', 'So.'] let arr = ['Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.', 'So.']
return arr.concat(arr) return [...arr , ...arr]
} }
function addEmployee(param : Employee){ function addEmployee(param : Employee){
@@ -197,6 +203,7 @@ AddEmployeeModal(
function isSelected(m : number, r : number, e : number, d : number) : boolean { function isSelected(m : number, r : number, e : number, d : number) : boolean {
return selected.value.includes(Coordinates.toString(m,r,e,d)) return selected.value.includes(Coordinates.toString(m,r,e,d))
} }
function removeFromSelected(m : number, r : number, e : number, d : number) : boolean { function removeFromSelected(m : number, r : number, e : number, d : number) : boolean {
if(selected.value.includes(Coordinates.toString(m,r,e,d))){ if(selected.value.includes(Coordinates.toString(m,r,e,d))){
selected.value.splice(selected.value.indexOf(Coordinates.toString(m,r,e,d)),1) selected.value.splice(selected.value.indexOf(Coordinates.toString(m,r,e,d)),1)
@@ -276,6 +283,52 @@ AddEmployeeModal(
} }
} }
function onEscape() : void {
selected.value = []
shiftAnchor.value = undefined
}
function onUp() : void {
let anchor = shiftAnchor.value
if(anchor !== undefined && anchor.eIndex > 0){
let newCoord = new Coordinates(anchor.mIndex, anchor.rIndex, anchor.eIndex - 1, anchor.dIndex)
selected.value = [newCoord.toString()]
shiftAnchor.value = newCoord
}
}
function onRight() : void {
let anchor = shiftAnchor.value
if(anchor !== undefined && anchor.dIndex < scheduleData.value[anchor.mIndex][anchor.rIndex].dates.length - 1) {
let newCoord = new Coordinates(anchor.mIndex, anchor.rIndex, anchor.eIndex, anchor.dIndex + 1)
selected.value = [newCoord.toString()]
shiftAnchor.value = newCoord
}
}
function onDown() : void {
let anchor = shiftAnchor.value
if(anchor !== undefined && anchor.eIndex < scheduleData.value[anchor.mIndex][anchor.rIndex].employees.length - 1) {
let newCoord = new Coordinates(anchor.mIndex, anchor.rIndex, anchor.eIndex + 1, anchor.dIndex)
selected.value = [newCoord.toString()]
shiftAnchor.value = newCoord
}
}
function onLeft() : void {
let anchor = shiftAnchor.value
if(anchor !== undefined && anchor.dIndex > 0 && scheduleData.value[anchor.mIndex][anchor.rIndex].dates[anchor.dIndex - 1] !== null ) {
let newCoord = new Coordinates(anchor.mIndex, anchor.rIndex, anchor.eIndex, anchor.dIndex - 1)
selected.value = [newCoord.toString()]
shiftAnchor.value = newCoord
}
}
/** /**
* Watchers * Watchers
*/ */
@@ -314,7 +367,11 @@ AddEmployeeModal(
} }
.selected { .selected {
border: 2px solid black; /* border: 1px solid var(--bs-body-color) !important; */
/* border: var(--bs-primary); */
background-color: var(--bs-secondary);
opacity: 0.1;
} }
</style> </style>