Compare commits
No commits in common. "master" and "workingrouter" have entirely different histories.
master
...
workingrou
@ -10,7 +10,7 @@ const titles = [
|
|||||||
'1x Obstkorb',
|
'1x Obstkorb',
|
||||||
'5€ Rewe Gutschein',
|
'5€ Rewe Gutschein',
|
||||||
'10€ Cafeteria Gutschein',
|
'10€ Cafeteria Gutschein',
|
||||||
'10€ Sodexo Gutschein',
|
'10€ Sodexo Getschein',
|
||||||
'1x Massage im Firmenspa',
|
'1x Massage im Firmenspa',
|
||||||
'1 Tag Sprachkurs English',
|
'1 Tag Sprachkurs English',
|
||||||
'1x Fitnesscenter',
|
'1x Fitnesscenter',
|
||||||
|
@ -14,13 +14,13 @@ const tokens = {
|
|||||||
const users = {
|
const users = {
|
||||||
'admin-token': {
|
'admin-token': {
|
||||||
roles: ['admin'],
|
roles: ['admin'],
|
||||||
introduction: 'Projektmanager bei Styria',
|
introduction: 'Projektmanager bei RedBull',
|
||||||
avatar: 'https://lbsfilm.at/media/pages/about/1056669128-1567191147/square-small.jpg',
|
avatar: 'https://lbsfilm.at/media/pages/about/1056669128-1567191147/square-small.jpg',
|
||||||
name: 'Lukas Bachschwell'
|
name: 'Lukas Bachschwell'
|
||||||
},
|
},
|
||||||
'editor-token': {
|
'editor-token': {
|
||||||
roles: ['editor'],
|
roles: ['editor'],
|
||||||
introduction: 'Manager bei Styria',
|
introduction: 'Backend Developer bei RedBull',
|
||||||
avatar: 'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.mJ3OSG9AD98jJSXYhB89_QAAAA%26pid%3DApi&f=1',
|
avatar: 'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.mJ3OSG9AD98jJSXYhB89_QAAAA%26pid%3DApi&f=1',
|
||||||
name: 'Wolfgang Römer'
|
name: 'Wolfgang Römer'
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
"axios": "0.18.1",
|
"axios": "0.18.1",
|
||||||
"clipboard": "2.0.4",
|
"clipboard": "2.0.4",
|
||||||
"codemirror": "5.45.0",
|
"codemirror": "5.45.0",
|
||||||
"dragula": "^3.7.2",
|
|
||||||
"driver.js": "0.9.5",
|
"driver.js": "0.9.5",
|
||||||
"dropzone": "5.5.1",
|
"dropzone": "5.5.1",
|
||||||
"echarts": "4.2.1",
|
"echarts": "4.2.1",
|
||||||
@ -62,8 +61,7 @@
|
|||||||
"vue-splitpane": "1.0.4",
|
"vue-splitpane": "1.0.4",
|
||||||
"vuedraggable": "2.20.0",
|
"vuedraggable": "2.20.0",
|
||||||
"vuex": "3.1.0",
|
"vuex": "3.1.0",
|
||||||
"xlsx": "0.14.1",
|
"xlsx": "0.14.1"
|
||||||
"xstate": "^4.8.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.0.0",
|
"@babel/core": "7.0.0",
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 210 KiB |
BIN
public/coder.png
BIN
public/coder.png
Binary file not shown.
Before Width: | Height: | Size: 61 KiB |
Binary file not shown.
Before Width: | Height: | Size: 35 KiB |
Binary file not shown.
Before Width: | Height: | Size: 121 KiB |
BIN
public/joe.png
BIN
public/joe.png
Binary file not shown.
Before Width: | Height: | Size: 193 KiB |
Binary file not shown.
Before Width: | Height: | Size: 194 KiB |
@ -1,281 +1,99 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="drag-container">
|
<div class="board-column">
|
||||||
<ul class="drag-list">
|
<div class="board-column-header">
|
||||||
<li
|
{{ headerText }}
|
||||||
v-for="stage in stages"
|
|
||||||
:key="stage.text"
|
|
||||||
class="drag-column"
|
|
||||||
:class="{ ['drag-column-' + stage.text]: true }"
|
|
||||||
>
|
|
||||||
<span class="drag-column-header">
|
|
||||||
<slot :name="stage.text">
|
|
||||||
<h2>{{ stage.text }}</h2>
|
|
||||||
</slot>
|
|
||||||
</span>
|
|
||||||
<img v-if="stage.image" class="personImage" :src="stage.image">
|
|
||||||
<div class="drag-options" />
|
|
||||||
<ul ref="list" class="drag-inner-list" :data-status="stage.text">
|
|
||||||
<li
|
|
||||||
v-for="block in getBlocks(stage.text)"
|
|
||||||
:key="block.id"
|
|
||||||
class="drag-item"
|
|
||||||
:data-block-id="block.id"
|
|
||||||
>
|
|
||||||
<slot :name="block.id">
|
|
||||||
<strong>{{ block.title }}</strong>
|
|
||||||
</slot>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div class="drag-column-footer">
|
|
||||||
<slot :name="`footer-${stage.text}`" />
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
<draggable
|
||||||
</ul>
|
:list="list"
|
||||||
|
v-bind="$attrs"
|
||||||
|
class="board-column-content"
|
||||||
|
:set-data="setData"
|
||||||
|
>
|
||||||
|
<div v-for="element in list" :key="element.id" class="board-item">
|
||||||
|
{{ element.name }} {{ element.id }}
|
||||||
|
</div>
|
||||||
|
</draggable>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import dragula from 'dragula'
|
import draggable from 'vuedraggable'
|
||||||
import { Machine } from 'xstate'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'KanbanBoard',
|
name: 'DragKanbanDemo',
|
||||||
|
components: {
|
||||||
|
draggable
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
stages: {
|
headerText: {
|
||||||
type: Array,
|
type: String,
|
||||||
required: true
|
default: 'Header'
|
||||||
},
|
},
|
||||||
blocks: {
|
options: {
|
||||||
type: Array,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
config: {
|
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({})
|
default() {
|
||||||
},
|
return {}
|
||||||
stateMachineConfig: {
|
|
||||||
type: Object,
|
|
||||||
default: null
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
list: {
|
||||||
data() {
|
type: Array,
|
||||||
return {
|
default() {
|
||||||
machine: null
|
return []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
|
||||||
localBlocks() {
|
|
||||||
return this.blocks
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
updated() {
|
|
||||||
this.drake.containers = this.$refs.list
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
this.config.accepts = this.config.accepts || this.accepts
|
|
||||||
this.drake = dragula(this.$refs.list, this.config)
|
|
||||||
.on('drag', el => {
|
|
||||||
el.classList.add('is-moving')
|
|
||||||
})
|
|
||||||
.on('drop', (block, list, source) => {
|
|
||||||
let index = 0
|
|
||||||
for (index = 0; index < list.children.length; index += 1) {
|
|
||||||
if (list.children[index].classList.contains('is-moving')) break
|
|
||||||
}
|
|
||||||
|
|
||||||
let newState = list.dataset.status
|
|
||||||
|
|
||||||
if (this.machine) {
|
|
||||||
const transition = this.findTransition(list, source)
|
|
||||||
if (!transition) return
|
|
||||||
newState = this.machine.transition(source.dataset.status, transition)
|
|
||||||
.value
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$emit('update-block', block.dataset.blockId, newState, index)
|
|
||||||
})
|
|
||||||
.on('dragend', el => {
|
|
||||||
el.classList.remove('is-moving')
|
|
||||||
|
|
||||||
window.setTimeout(() => {
|
|
||||||
el.classList.add('is-moved')
|
|
||||||
window.setTimeout(() => {
|
|
||||||
el.classList.remove('is-moved')
|
|
||||||
}, 600)
|
|
||||||
}, 100)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
created() {
|
|
||||||
if (!this.stateMachineConfig) return
|
|
||||||
this.machine = Machine(this.stateMachineConfig)
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getBlocks(status) {
|
setData(dataTransfer) {
|
||||||
return this.localBlocks.filter(block => block.status === status)
|
// to avoid Firefox bug
|
||||||
},
|
// Detail see : https://github.com/RubaXa/Sortable/issues/1012
|
||||||
|
dataTransfer.setData('Text', '')
|
||||||
findPossibleTransitions(sourceState) {
|
|
||||||
return this.machine.config.states[sourceState].on || {}
|
|
||||||
},
|
|
||||||
|
|
||||||
findTransition(target, source) {
|
|
||||||
const targetState = target.dataset.status
|
|
||||||
const sourceState = source.dataset.status
|
|
||||||
const possibleTransitions = this.findPossibleTransitions(sourceState)
|
|
||||||
return Object.keys(possibleTransitions).find(
|
|
||||||
transition => possibleTransitions[transition] === targetState
|
|
||||||
)
|
|
||||||
},
|
|
||||||
|
|
||||||
accepts(block, target, source) {
|
|
||||||
if (!this.machine) return true
|
|
||||||
const targetState = target.dataset.status
|
|
||||||
const sourceState = source.dataset.status
|
|
||||||
return Object.values(this.findPossibleTransitions(sourceState)).includes(
|
|
||||||
targetState
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
<style lang="scss">
|
.board-column {
|
||||||
.personImage {
|
min-width: 300px;
|
||||||
height: 100px;
|
min-height: 100px;
|
||||||
}
|
height: auto;
|
||||||
$ease-out: all 0.3s cubic-bezier(0.23, 1, 0.32, 1);
|
|
||||||
|
|
||||||
ul.drag-list,
|
|
||||||
ul.drag-inner-list {
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-container {
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: 20px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-list {
|
|
||||||
display: flex;
|
|
||||||
align-items: flex-start;
|
|
||||||
|
|
||||||
@media (max-width: 690px) {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-column {
|
|
||||||
flex: 1;
|
|
||||||
margin: 0 10px;
|
|
||||||
position: relative;
|
|
||||||
background: rgba(black, 0.2);
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
background: #f0f0f0;
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
@media (max-width: 690px) {
|
.board-column-header {
|
||||||
margin-bottom: 30px;
|
height: 50px;
|
||||||
|
line-height: 50px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #333;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 3px 3px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
.board-column-content {
|
||||||
font-size: 0.8rem;
|
height: auto;
|
||||||
margin: 0;
|
overflow: hidden;
|
||||||
text-transform: uppercase;
|
border: 10px solid transparent;
|
||||||
font-weight: 600;
|
min-height: 60px;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-column-header {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-inner-list {
|
.board-item {
|
||||||
min-height: 50px;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-item {
|
|
||||||
padding: 10px;
|
|
||||||
margin: 10px;
|
|
||||||
//height: 100px;
|
|
||||||
background: rgba(black, 0.4);
|
|
||||||
transition: $ease-out;
|
|
||||||
|
|
||||||
&.is-moving {
|
|
||||||
transform: scale(1.5);
|
|
||||||
background: rgba(black, 0.8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-header-more {
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
|
||||||
|
|
||||||
.drag-options {
|
|
||||||
position: absolute;
|
|
||||||
top: 44px;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 64px;
|
||||||
padding: 10px;
|
margin: 5px 0;
|
||||||
transform: translateX(100%);
|
background-color: #fff;
|
||||||
opacity: 0;
|
text-align: left;
|
||||||
transition: $ease-out;
|
line-height: 54px;
|
||||||
|
padding: 5px 10px;
|
||||||
&.active {
|
box-sizing: border-box;
|
||||||
transform: translateX(0);
|
box-shadow: 0px 1px 3px 0 rgba(0, 0, 0, 0.2);
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-label {
|
|
||||||
display: block;
|
|
||||||
margin: 0 0 5px 0;
|
|
||||||
|
|
||||||
input {
|
|
||||||
opacity: 0.6;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 0.9rem;
|
|
||||||
font-weight: 400;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dragula CSS */
|
|
||||||
|
|
||||||
.gu-mirror {
|
|
||||||
position: fixed !important;
|
|
||||||
margin: 0 !important;
|
|
||||||
z-index: 9999 !important;
|
|
||||||
opacity: 0.8;
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gu-hide {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gu-unselectable {
|
|
||||||
-webkit-user-select: none !important;
|
|
||||||
-moz-user-select: none !important;
|
|
||||||
-ms-user-select: none !important;
|
|
||||||
user-select: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gu-transit {
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-wrapper">
|
|
||||||
<router-view />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
@ -87,18 +87,6 @@ export default {
|
|||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.log('ThaErr', err)
|
console.log('ThaErr', err)
|
||||||
})
|
})
|
||||||
|
|
||||||
request({
|
|
||||||
url: 'https://joinbot.tk/kvs/gameopen',
|
|
||||||
method: 'get',
|
|
||||||
headers: { 'x-api-key': 'PMl`&xWpZ1vE)M]G;{8qIXx4k!ce|n' }
|
|
||||||
}).then((result) => {
|
|
||||||
if (result === 1) {
|
|
||||||
this.openGame()
|
|
||||||
}
|
|
||||||
}).catch((err) => {
|
|
||||||
console.log('ThaErr', err)
|
|
||||||
})
|
|
||||||
}, 1000)
|
}, 1000)
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
@ -112,19 +100,6 @@ export default {
|
|||||||
async logout() {
|
async logout() {
|
||||||
await this.$store.dispatch('user/logout')
|
await this.$store.dispatch('user/logout')
|
||||||
this.$router.push(`/login?redirect=${this.$route.fullPath}`)
|
this.$router.push(`/login?redirect=${this.$route.fullPath}`)
|
||||||
},
|
|
||||||
openGame() {
|
|
||||||
window.open('/#/draggame/index', '', '"width=800,height=900"')
|
|
||||||
request({
|
|
||||||
url: 'https://joinbot.tk/kvs/gameopen',
|
|
||||||
method: 'post',
|
|
||||||
headers: { 'x-api-key': 'PMl`&xWpZ1vE)M]G;{8qIXx4k!ce|n' },
|
|
||||||
data: '0'
|
|
||||||
}).then((result) => {
|
|
||||||
|
|
||||||
}).catch((err) => {
|
|
||||||
console.log('ThaErr', err)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ Vue.use(Router)
|
|||||||
|
|
||||||
/* Layout */
|
/* Layout */
|
||||||
import Layout from '@/layout'
|
import Layout from '@/layout'
|
||||||
import Clean from '@/layout/clean'
|
|
||||||
|
|
||||||
/* Router Modules */
|
/* Router Modules */
|
||||||
import componentsRouter from './modules/components'
|
import componentsRouter from './modules/components'
|
||||||
@ -112,20 +111,6 @@ export const constantRoutes = [
|
|||||||
meta: { title: 'Profil', icon: 'user', noCache: true }
|
meta: { title: 'Profil', icon: 'user', noCache: true }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/draggame',
|
|
||||||
component: Clean,
|
|
||||||
redirect: '/draggame/index',
|
|
||||||
hidden: true,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: 'index',
|
|
||||||
component: () => import('@/views/draggame/index'),
|
|
||||||
name: 'Draggame',
|
|
||||||
meta: { title: 'Draggame', icon: 'user', noCache: true }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="dashboard-container">
|
<div class="dashboard-container">
|
||||||
<button v-if="false" @click="open">Game</button>
|
|
||||||
<component :is="currentRole" />
|
<component :is="currentRole" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -27,11 +26,6 @@ export default {
|
|||||||
if (!this.roles.includes('admin')) {
|
if (!this.roles.includes('admin')) {
|
||||||
this.currentRole = 'editorDashboard'
|
this.currentRole = 'editorDashboard'
|
||||||
}
|
}
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
open() {
|
|
||||||
window.open('/#/draggame/index', '', '"width=800,height=900"')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,183 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="app">
|
|
||||||
<h1>Aufgabe</h1>
|
|
||||||
<p>
|
|
||||||
Sie sind Manager in einem Softwareunternehmen und aktuell stehen wieder
|
|
||||||
einige neue Aufgaben an. <br>Da Sie über ein tolles Team an Spezialisten
|
|
||||||
verfügen, können Sie diese Aufgaben sofort an die richtigen Leute verteilen.
|
|
||||||
<br>Wie würden Sie die Aufgaben am besten unter Ihren Kollegen verteilen
|
|
||||||
? <br><br>
|
|
||||||
Ziehen Sie die Aufgaben dazu einfach von der Spalte <b>Aufgaben</b> in die
|
|
||||||
Spalten der jeweiligen MitarbeiterInnen
|
|
||||||
<br>
|
|
||||||
</p>
|
|
||||||
<KanBan
|
|
||||||
:stages="stages"
|
|
||||||
:blocks="blocks"
|
|
||||||
@update-block="updateBlock"
|
|
||||||
@isDone="isDoneCallback"
|
|
||||||
/>
|
|
||||||
<button v-if="isDone" class="doneButton" @click="returnToBot">
|
|
||||||
Fertig
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
import KanBan from '@/components/Kanban'
|
|
||||||
export default {
|
|
||||||
name: 'App',
|
|
||||||
components: {
|
|
||||||
KanBan
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
isDone: false,
|
|
||||||
stages: [
|
|
||||||
{
|
|
||||||
text: 'Aufgaben'
|
|
||||||
},
|
|
||||||
{ text: 'Frontend Developerin',
|
|
||||||
image: '/frontend.png' },
|
|
||||||
{ text: 'Support Techniker', image: '/support.png' },
|
|
||||||
|
|
||||||
{ text: 'Grafikerin', image: '/grafiks.png' },
|
|
||||||
{
|
|
||||||
text: 'Scrum Master',
|
|
||||||
image: '/bussinesslady.png'
|
|
||||||
},
|
|
||||||
{ text: 'Backend Developer', image: '/coder.png' }
|
|
||||||
],
|
|
||||||
blocks: [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'Landingpage Bugfix',
|
|
||||||
text: '...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'Logo überarbeiten',
|
|
||||||
text: '...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'Neues Datenbankfeld',
|
|
||||||
text: '...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'Sprint 7 planen',
|
|
||||||
text: '...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 5,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'Neues Pitchdeck',
|
|
||||||
text: '...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 6,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'Kunde meldet Datenverlust',
|
|
||||||
text: '...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 7,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'Tippfehler in Produkt Übersetzung',
|
|
||||||
text: '...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 8,
|
|
||||||
status: 'Aufgaben',
|
|
||||||
title: 'API Tests überprüfen',
|
|
||||||
text: '...'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
returnToBot() {
|
|
||||||
request({
|
|
||||||
url: 'https://joinbot.tk/kvs/botmessage',
|
|
||||||
method: 'get',
|
|
||||||
headers: { 'x-api-key': 'PMl`&xWpZ1vE)M]G;{8qIXx4k!ce|n' }
|
|
||||||
}).then((result) => {
|
|
||||||
window.close()
|
|
||||||
}).catch((err) => {
|
|
||||||
console.log('ThaErr', err)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
isDoneCallback(isDone) {
|
|
||||||
this.isDone = isDone
|
|
||||||
},
|
|
||||||
updateBlock(id, status, index) {
|
|
||||||
// Update specified status
|
|
||||||
const currentBlock = this.blocks.find(b => b.id === Number(id))
|
|
||||||
currentBlock.status = status
|
|
||||||
|
|
||||||
// remove currnet block
|
|
||||||
let currentList = this.blocks.filter(b => b.id !== Number(id))
|
|
||||||
const otherLists = currentList.filter(b => b.status !== status)
|
|
||||||
currentList = currentList.filter(b => b.status === status)
|
|
||||||
|
|
||||||
currentList.splice(index, 0, currentBlock)
|
|
||||||
currentList = currentList.concat(otherLists)
|
|
||||||
this.blocks = currentList
|
|
||||||
this.isDone =
|
|
||||||
this.blocks.filter(block => block.status === 'Aufgaben').length === 0
|
|
||||||
// localStorage.setItem("blocks", JSON.stringify(this.blocks));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
#app {
|
|
||||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
text-align: center;
|
|
||||||
color: #2c3e50;
|
|
||||||
margin-top: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.drag-column-Aufgaben {
|
|
||||||
background-color: red;
|
|
||||||
.drag-column-header > h2 {
|
|
||||||
color: white;
|
|
||||||
font-size: 1rem !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.doneButton {
|
|
||||||
box-shadow: 0px 10px 14px -7px #236069;
|
|
||||||
background: linear-gradient(to bottom, #2b84e3 5%, #3f8fcc 100%);
|
|
||||||
background-color: #2b84e3;
|
|
||||||
border-width: 0px;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-block;
|
|
||||||
cursor: pointer;
|
|
||||||
color: #ffffff;
|
|
||||||
font-family: Arial;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 13px 32px;
|
|
||||||
text-decoration: none;
|
|
||||||
text-shadow: 0px 1px 0px #3d768a;
|
|
||||||
}
|
|
||||||
.doneButton:hover {
|
|
||||||
background: linear-gradient(to bottom, #3f8fcc 5%, #2b84e3 100%);
|
|
||||||
background-color: #3f8fcc;
|
|
||||||
}
|
|
||||||
.doneButton:active {
|
|
||||||
position: relative;
|
|
||||||
top: 1px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -11,7 +11,7 @@
|
|||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="skillbars">
|
<el-main class="skillbars">
|
||||||
<div style="position:relative;">
|
<div style="position:relative;">
|
||||||
<div v-for="skill in person.skills" :key="skill.name" class="progress-item">
|
<div v-for="skill in sortSkills(person.skills)" :key="skill.name" class="progress-item">
|
||||||
<span>{{ skill.name }}</span>
|
<span>{{ skill.name }}</span>
|
||||||
<el-progress :percentage="skill.strength" />
|
<el-progress :percentage="skill.strength" />
|
||||||
</div>
|
</div>
|
||||||
@ -64,7 +64,6 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
sortSkills(skills) {
|
sortSkills(skills) {
|
||||||
// Currently not used pls sort manually
|
|
||||||
return skills.sort((a, b) => (a.strength > b.strength) ? -1 : 1)
|
return skills.sort((a, b) => (a.strength > b.strength) ? -1 : 1)
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
<el-row v-if="results.length > 0" :gutter="8">
|
<el-row v-if="results.length > 0" :gutter="8">
|
||||||
<el-col v-for="person in results" :key="person.name" :xs="{span: 24}" style="margin-bottom:30px;">
|
<el-col v-for="person in results" :key="person.name" :xs="{span: 24}" style="margin-bottom:30px;">
|
||||||
<box-card :key="person.name" :person="person" />
|
<box-card v-key="person.name" :person="person" />
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row v-if="value.length > 0 && results.length == 0" style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
|
<el-row v-if="value.length > 0 && results.length == 0" style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
|
||||||
@ -150,8 +150,15 @@ export default {
|
|||||||
label: 'Strateghisches Management'
|
label: 'Strateghisches Management'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
people: [
|
people: [{
|
||||||
{
|
name: 'Franz Fiedler',
|
||||||
|
avatar: 'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.eQ7zUcL1ZRRFwc-V5pXquAAAAA%26pid%3DApi&f=1',
|
||||||
|
skills: [
|
||||||
|
{ name: 'Blockchain', strength: 100 },
|
||||||
|
{ name: 'Projektmanagement', strength: 92 }
|
||||||
|
|
||||||
|
]
|
||||||
|
}, {
|
||||||
name: 'Wolfgang Römer',
|
name: 'Wolfgang Römer',
|
||||||
avatar: 'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.mJ3OSG9AD98jJSXYhB89_QAAAA%26pid%3DApi&f=1',
|
avatar: 'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.mJ3OSG9AD98jJSXYhB89_QAAAA%26pid%3DApi&f=1',
|
||||||
skills: [
|
skills: [
|
||||||
@ -160,15 +167,6 @@ export default {
|
|||||||
{ name: 'Reiseplanung', strength: 55 },
|
{ name: 'Reiseplanung', strength: 55 },
|
||||||
{ name: 'Blumen', strength: 12 }
|
{ name: 'Blumen', strength: 12 }
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Franz Fiedler',
|
|
||||||
avatar: 'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.eQ7zUcL1ZRRFwc-V5pXquAAAAA%26pid%3DApi&f=1',
|
|
||||||
skills: [
|
|
||||||
{ name: 'Blockchain', strength: 100 },
|
|
||||||
{ name: 'Projektmanagement', strength: 92 }
|
|
||||||
|
|
||||||
]
|
|
||||||
}, {
|
}, {
|
||||||
name: 'Lukas Bachschwell',
|
name: 'Lukas Bachschwell',
|
||||||
avatar: 'https://lbsfilm.at/media/pages/about/1056669128-1567191147/square-small.jpg',
|
avatar: 'https://lbsfilm.at/media/pages/about/1056669128-1567191147/square-small.jpg',
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-form-item style="margin-bottom: 40px;" label-width="70px" label="Beschreibung:">
|
<el-form-item style="margin-bottom: 40px;" label-width="70px" label="Summary:">
|
||||||
<el-input v-model="postForm.content_short" :rows="1" type="textarea" class="article-textarea" autosize placeholder="Beschreibung des Incentives" />
|
<el-input v-model="postForm.content_short" :rows="1" type="textarea" class="article-textarea" autosize placeholder="Beschreibung des Incentives" />
|
||||||
<span v-show="contentShortLength" class="word-counter">{{ contentShortLength }}words</span>
|
<span v-show="contentShortLength" class="word-counter">{{ contentShortLength }}words</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -22,24 +22,24 @@ export default {
|
|||||||
{
|
{
|
||||||
timestamp: '2019/4/25',
|
timestamp: '2019/4/25',
|
||||||
title: 'Chat mit Joinbot',
|
title: 'Chat mit Joinbot',
|
||||||
content: 'Sie hatten einen Gespräch mit <b>Chatbot Jo</b>',
|
content: 'Sie hatten einen Gespräch mit <b>Joinbot</b>',
|
||||||
linkText: 'Zum Chatprotokoll',
|
linkText: 'Zum Chatprotokoll',
|
||||||
linkHref: '/'
|
linkHref: '/'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
timestamp: '2019/4/20',
|
timestamp: '2019/4/20',
|
||||||
title: 'Stammdaten aktualisiert',
|
title: 'Stammdaten aktualisiert',
|
||||||
content: 'Sie haben Ihre Email Addresse aktualisiert'
|
content: 'Sie haben ihre Email Addresse aktualisiert'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
timestamp: '2019/2/22',
|
timestamp: '2019/2/22',
|
||||||
title: 'Stammdaten aktualisiert',
|
title: 'Stammdaten aktualisiert',
|
||||||
content: '<b>Julia Kramer</b> hat Ihre <b>Ausbildungsinformationen</b> aktualisiert'
|
content: '<b>Julia Kramer</b> hat ihre <b>Ausbildungsinformationen</b> aktualisiert'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
timestamp: '2019/1/23',
|
timestamp: '2019/1/23',
|
||||||
title: 'Account erstellt',
|
title: 'Account erstellt',
|
||||||
content: 'Willkommen bei Styria, nutzen Sie Join für Karrierechancen und individuelle Benefits!'
|
content: 'Willkommen bei RedBull!, nutzen sie Join für Karrierechancen und indifiduelle Benefits!'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,7 @@
|
|||||||
<div class="user-bio-section-header"><svg-icon icon-class="education" /><span>Ausbildung</span></div>
|
<div class="user-bio-section-header"><svg-icon icon-class="education" /><span>Ausbildung</span></div>
|
||||||
<div class="user-bio-section-body">
|
<div class="user-bio-section-body">
|
||||||
<div class="text-muted">
|
<div class="text-muted">
|
||||||
|
Bachelor of Science der Medientechnik <br>(FH St. Pölten)
|
||||||
1990-1995 Studium der Wirtschaftsinformatik an der TU Wien<br>
|
|
||||||
1999-2001 Universitätslehrgang Kulturmanagement, Universität für Musik und darstellende Kunst Wien<br>
|
|
||||||
Dozent an der Fachhochschule St. Pölten<br>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user