diff --git a/README.md b/README.md index 2632b60..cee15c9 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,14 @@ Password: **any** https://botpress.io/docs/tutorials/webchat-embedding + +## TODO: +Adminpage: + +Display grouping of skills ?! + +Seperate skill select ? + +Add a ADD button to team members + +Implement Chatbot Logic \ No newline at end of file diff --git a/package.json b/package.json index 0b04bcd..be6ec0d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "driver.js": "0.9.5", "dropzone": "5.5.1", "echarts": "4.2.1", - "element-ui": "2.7.0", + "element-ui": "2.13.0", "file-saver": "2.0.1", "fuse.js": "3.4.4", "js-cookie": "2.2.0", diff --git a/src/components/PanThumb/index.vue b/src/components/PanThumb/index.vue index 1bcf417..d890f92 100644 --- a/src/components/PanThumb/index.vue +++ b/src/components/PanThumb/index.vue @@ -130,7 +130,7 @@ export default { .pan-info p a:hover { background: rgba(255, 255, 255, 0.5); } - +/* .pan-item:hover .pan-thumb { transform: rotate(-110deg); } @@ -139,4 +139,5 @@ export default { opacity: 1; transform: translateX(0px) rotate(0deg); } +*/ diff --git a/src/main.js b/src/main.js index ef07f38..8a144bf 100644 --- a/src/main.js +++ b/src/main.js @@ -28,9 +28,10 @@ import * as filters from './filters' // global filters * please remove it before going online! ! ! */ import { mockXHR } from '../mock' -if (process.env.NODE_ENV === 'production') { - mockXHR() -} +// LB Workaroud for method not allowed issue +// if (process.env.NODE_ENV === 'production') { +mockXHR() +// } Vue.use(Element, { size: Cookies.get('size') || 'medium' // set element-ui default size @@ -43,7 +44,7 @@ Object.keys(filters).forEach(key => { Vue.config.productionTip = false -new Vue({ +window.vinstance = new Vue({ el: '#app', router, store, diff --git a/src/router/index.js b/src/router/index.js index 2957627..6f81131 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -71,31 +71,6 @@ export const constantRoutes = [ component: () => import('@/views/error-page/401'), hidden: true }, - { - path: '/', - component: Layout, - redirect: '/dashboard', - children: [ - { - path: 'dashboard', - component: () => import('@/views/dashboard/index'), - name: 'Dashboard', - meta: { title: 'Dashboard', icon: 'dashboard', affix: true } - } - ] - }, - { - path: '/chatbot', - component: Layout, - children: [ - { - path: 'index', - component: () => import('@/views/chatbot/index'), - name: 'Chatbot Joe', - meta: { title: 'Chatbot Joe', icon: 'message', affix: true } - } - ] - }, { path: '/documentation', hidden: !settings.developmentSidebar, @@ -144,6 +119,48 @@ export const constantRoutes = [ * the routes that need to be dynamically loaded based on user roles */ export const asyncRoutes = [ + { + path: '/find', + component: Layout, + alwaysShow: false, + children: [ + { + path: 'index', + component: () => import('@/views/find/index'), + name: 'Personen finden', + meta: { + roles: ['admin'], + title: 'Personen finden', + icon: 'search' + } + } + ] + }, + { + path: '/', + component: Layout, + redirect: '/dashboard', + children: [ + { + path: 'dashboard', + component: () => import('@/views/dashboard/index'), + name: 'Dashboard', + meta: { title: 'Dashboard', icon: 'dashboard', affix: true } + } + ] + }, + { + path: '/chatbot', + component: Layout, + children: [ + { + path: 'index', + component: () => import('@/views/chatbot/index'), + name: 'Chatbot Joe', + meta: { title: 'Chatbot Joe', icon: 'message', affix: true } + } + ] + }, { path: '/permission', component: Layout, diff --git a/src/views/chatbot/index.vue b/src/views/chatbot/index.vue index 3740919..da7eb8b 100644 --- a/src/views/chatbot/index.vue +++ b/src/views/chatbot/index.vue @@ -23,8 +23,7 @@ export default { enableTranscriptDownload: false, hideWidget: true, extraStylesheet: stylesheetdir, - botName: 'Jo', - botAvatarUrl: 'https://joinbot.tk/bot/api/v1/bots/joinbot/media/0ricefe6x9gwuvh72p0j-joe%20head.png' + botName: 'Jo' }) setTimeout(() => { window.botpressWebChat.sendEvent({ diff --git a/src/views/dashboard/admin/components/PanelGroup.vue b/src/views/dashboard/admin/components/PanelGroup.vue index 589236e..81e66c1 100644 --- a/src/views/dashboard/admin/components/PanelGroup.vue +++ b/src/views/dashboard/admin/components/PanelGroup.vue @@ -7,9 +7,9 @@
- New Visits + Eingetragene User
- +
@@ -20,35 +20,9 @@
- Messages + Chats
- -
- - - -
-
- -
-
-
- Purchases -
- -
-
-
- -
-
- -
-
-
- Shoppings -
- +
diff --git a/src/views/find-classic/index.vue b/src/views/find-classic/index.vue new file mode 100644 index 0000000..d35bf18 --- /dev/null +++ b/src/views/find-classic/index.vue @@ -0,0 +1,389 @@ + + + diff --git a/src/views/find/components/BarChart.vue b/src/views/find/components/BarChart.vue new file mode 100644 index 0000000..be0af34 --- /dev/null +++ b/src/views/find/components/BarChart.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/views/find/components/BoxCard.vue b/src/views/find/components/BoxCard.vue new file mode 100644 index 0000000..6c3061f --- /dev/null +++ b/src/views/find/components/BoxCard.vue @@ -0,0 +1,111 @@ + + + + + + + diff --git a/src/views/find/components/LineChart.vue b/src/views/find/components/LineChart.vue new file mode 100644 index 0000000..e654168 --- /dev/null +++ b/src/views/find/components/LineChart.vue @@ -0,0 +1,135 @@ + + + diff --git a/src/views/find/components/PanelGroup.vue b/src/views/find/components/PanelGroup.vue new file mode 100644 index 0000000..589236e --- /dev/null +++ b/src/views/find/components/PanelGroup.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/src/views/find/components/PieChart.vue b/src/views/find/components/PieChart.vue new file mode 100644 index 0000000..4d2ef32 --- /dev/null +++ b/src/views/find/components/PieChart.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/views/find/components/RaddarChart.vue b/src/views/find/components/RaddarChart.vue new file mode 100644 index 0000000..6823af3 --- /dev/null +++ b/src/views/find/components/RaddarChart.vue @@ -0,0 +1,116 @@ + + + diff --git a/src/views/find/components/TodoList/Todo.vue b/src/views/find/components/TodoList/Todo.vue new file mode 100644 index 0000000..c4b3cae --- /dev/null +++ b/src/views/find/components/TodoList/Todo.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/views/find/components/TodoList/index.scss b/src/views/find/components/TodoList/index.scss new file mode 100644 index 0000000..74ce0d5 --- /dev/null +++ b/src/views/find/components/TodoList/index.scss @@ -0,0 +1,320 @@ +.todoapp { + font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 1.4em; + color: #4d4d4d; + min-width: 230px; + max-width: 550px; + margin: 0 auto ; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; + background: #fff; + z-index: 1; + position: relative; + button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + :focus { + outline: 0; + } + .hidden { + display: none; + } + .todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); + } + .todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; + } + .todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; + } + .todoapp input::input-placeholder { + font-style: italic; + font-weight: 300; + color: #e6e6e6; + } + .todoapp h1 { + position: absolute; + top: -155px; + width: 100%; + font-size: 100px; + font-weight: 100; + text-align: center; + color: rgba(175, 47, 47, 0.15); + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; + } + .new-todo, + .edit { + position: relative; + margin: 0; + width: 100%; + font-size: 18px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + border: 0; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + .new-todo { + padding: 10px 16px 16px 60px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03); + } + .main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; + } + .toggle-all { + text-align: center; + border: none; + /* Mobile Safari */ + opacity: 0; + position: absolute; + } + .toggle-all+label { + width: 60px; + height: 34px; + font-size: 0; + position: absolute; + top: -52px; + left: -13px; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + } + .toggle-all+label:before { + content: '❯'; + font-size: 22px; + color: #e6e6e6; + padding: 10px 27px 10px 27px; + } + .toggle-all:checked+label:before { + color: #737373; + } + .todo-list { + margin: 0; + padding: 0; + list-style: none; + } + .todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; + } + .todo-list li:last-child { + border-bottom: none; + } + .todo-list li.editing { + border-bottom: none; + padding: 0; + } + .todo-list li.editing .edit { + display: block; + width: 506px; + padding: 12px 16px; + margin: 0 0 0 43px; + } + .todo-list li.editing .view { + display: none; + } + .todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; + /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; + } + .todo-list li .toggle { + opacity: 0; + } + .todo-list li .toggle+label { + /* + Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 + IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ + */ + background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E'); + background-repeat: no-repeat; + background-position: center left; + background-size: 36px; + } + .todo-list li .toggle:checked+label { + background-size: 36px; + background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E'); + } + .todo-list li label { + word-break: break-all; + padding: 15px 15px 15px 50px; + display: block; + line-height: 1.0; + font-size: 14px; + transition: color 0.4s; + } + .todo-list li.completed label { + color: #d9d9d9; + text-decoration: line-through; + } + .todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #cc9a9a; + transition: color 0.2s ease-out; + cursor: pointer; + } + .todo-list li .destroy:hover { + color: #af5b5e; + } + .todo-list li .destroy:after { + content: '×'; + } + .todo-list li:hover .destroy { + display: block; + } + .todo-list li .edit { + display: none; + } + .todo-list li.editing:last-child { + margin-bottom: -1px; + } + .footer { + color: #777; + position: relative; + padding: 10px 15px; + height: 40px; + text-align: center; + border-top: 1px solid #e6e6e6; + } + .footer:before { + content: ''; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 40px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); + } + .todo-count { + float: left; + text-align: left; + } + .todo-count strong { + font-weight: 300; + } + .filters { + margin: 0; + padding: 0; + position: relative; + z-index: 1; + list-style: none; + } + .filters li { + display: inline; + } + .filters li a { + color: inherit; + font-size: 12px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; + } + .filters li a:hover { + border-color: rgba(175, 47, 47, 0.1); + } + .filters li a.selected { + border-color: rgba(175, 47, 47, 0.2); + } + .clear-completed, + html .clear-completed:active { + float: right; + position: relative; + line-height: 20px; + text-decoration: none; + cursor: pointer; + } + .clear-completed:hover { + text-decoration: underline; + } + .info { + margin: 65px auto 0; + color: #bfbfbf; + font-size: 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; + } + .info p { + line-height: 1; + } + .info a { + color: inherit; + text-decoration: none; + font-weight: 400; + } + .info a:hover { + text-decoration: underline; + } + /* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ + @media screen and (-webkit-min-device-pixel-ratio:0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + .todo-list li .toggle { + height: 40px; + } + } + @media (max-width: 430px) { + .footer { + height: 50px; + } + .filters { + bottom: 10px; + } + } +} diff --git a/src/views/find/components/TodoList/index.vue b/src/views/find/components/TodoList/index.vue new file mode 100644 index 0000000..8000d41 --- /dev/null +++ b/src/views/find/components/TodoList/index.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/find/components/TransactionTable.vue b/src/views/find/components/TransactionTable.vue new file mode 100644 index 0000000..d07b0ed --- /dev/null +++ b/src/views/find/components/TransactionTable.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/views/find/components/mixins/resize.js b/src/views/find/components/mixins/resize.js new file mode 100644 index 0000000..234953b --- /dev/null +++ b/src/views/find/components/mixins/resize.js @@ -0,0 +1,55 @@ +import { debounce } from '@/utils' + +export default { + data() { + return { + $_sidebarElm: null, + $_resizeHandler: null + } + }, + mounted() { + this.$_resizeHandler = debounce(() => { + if (this.chart) { + this.chart.resize() + } + }, 100) + this.$_initResizeEvent() + this.$_initSidebarResizeEvent() + }, + beforeDestroy() { + this.$_destroyResizeEvent() + this.$_destroySidebarResizeEvent() + }, + // to fixed bug when cached by keep-alive + // https://github.com/PanJiaChen/vue-element-admin/issues/2116 + activated() { + this.$_initResizeEvent() + this.$_initSidebarResizeEvent() + }, + deactivated() { + this.$_destroyResizeEvent() + this.$_destroySidebarResizeEvent() + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_initResizeEvent() { + window.addEventListener('resize', this.$_resizeHandler) + }, + $_destroyResizeEvent() { + window.removeEventListener('resize', this.$_resizeHandler) + }, + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + $_initSidebarResizeEvent() { + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + $_destroySidebarResizeEvent() { + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + } + } +} diff --git a/src/views/find/index.vue b/src/views/find/index.vue new file mode 100644 index 0000000..23b244d --- /dev/null +++ b/src/views/find/index.vue @@ -0,0 +1,240 @@ + + + + +