diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 076453d9e..c6e1bbc8e 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -212,7 +212,7 @@ jobs:
report_name: Coverage Frontend
type: lcov
result_path: ./coverage/lcov.info
- min_coverage: 21
+ min_coverage: 28
token: ${{ github.token }}
##############################################################################
diff --git a/frontend/src/assets/scss/core/badges/_badge-circle.scss b/frontend/src/assets/scss/core/badges/_badge-circle.scss
deleted file mode 100644
index 88a5d5e5d..000000000
--- a/frontend/src/assets/scss/core/badges/_badge-circle.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// Circle badge
-//
-
-
-// General styles
-
-.badge-circle {
- text-align: center;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- border-radius: 50%;
- width: 2rem;
- height: 2rem;
- font-size: .875rem;
-}
diff --git a/frontend/src/assets/scss/core/badges/_badge-dot.scss b/frontend/src/assets/scss/core/badges/_badge-dot.scss
deleted file mode 100644
index 1ed6ffa86..000000000
--- a/frontend/src/assets/scss/core/badges/_badge-dot.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// Dot badge
-//
-
-
-// General styles
-
-.badge-dot {
- padding-left: 0;
- padding-right: 0;
- background: transparent;
- font-weight: $font-weight-normal;
- font-size: $font-size-sm;
- text-transform: none;
-
- strong {
- color: $gray-800;
- }
-
- i {
- display: inline-block;
- vertical-align: middle;
- width: .375rem;
- height: .375rem;
- border-radius: 50%;
- margin-right: .375rem;
- }
-
- &.badge-md {
- i {
- width: .5rem;
- height: .5rem;
- }
- }
-
- &.badge-lg {
- i {
- width: .625rem;
- height: .625rem;
- }
- }
-}
diff --git a/frontend/src/assets/scss/core/badges/_badge.scss b/frontend/src/assets/scss/core/badges/_badge.scss
deleted file mode 100644
index b0d626a1e..000000000
--- a/frontend/src/assets/scss/core/badges/_badge.scss
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// Badge
-//
-
-
-// General styles
-
-.badge {
- text-transform: $badge-text-transfom;
-
- a {
- color: $white;
- }
-}
-
-
-// Size variations
-
-.badge-md {
- padding: .65em 1em;
-}
-
-.badge-lg {
- padding: .85em 1.375em;
-}
-
-
-// Multiple inline badges
-
-.badge-inline {
- margin-right: .625rem;
-
- + span {
- top: 2px;
- position: relative;
-
- > a {
- text-decoration: underline;
- }
- }
-}
-
-
-// Badge spacing inside a btn with some text
-
-.btn {
- .badge {
- &:not(:first-child) {
- margin-left: .5rem;
- }
- &:not(:last-child) {
- margin-right: .5rem;
- }
- }
-}
diff --git a/frontend/src/assets/scss/custom/_components.scss b/frontend/src/assets/scss/custom/_components.scss
index 8a71d41f6..8a18e63be 100644
--- a/frontend/src/assets/scss/custom/_components.scss
+++ b/frontend/src/assets/scss/custom/_components.scss
@@ -4,7 +4,6 @@
@import "custom/alert";
@import "custom/avatar";
-@import "custom/badge";
@import "custom/buttons";
@import "custom/card";
@import "custom/chart";
diff --git a/frontend/src/components/Badge.vue b/frontend/src/components/Badge.vue
deleted file mode 100644
index d3cbf543d..000000000
--- a/frontend/src/components/Badge.vue
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/BaseAlert.vue b/frontend/src/components/BaseAlert.vue
deleted file mode 100644
index fe17428a2..000000000
--- a/frontend/src/components/BaseAlert.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/BaseButton.vue b/frontend/src/components/BaseButton.vue
deleted file mode 100644
index 009add59b..000000000
--- a/frontend/src/components/BaseButton.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/BaseDropdown.vue b/frontend/src/components/BaseDropdown.vue
deleted file mode 100644
index 8db496992..000000000
--- a/frontend/src/components/BaseDropdown.vue
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
-
- {{ title }}
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/BaseHeader.vue b/frontend/src/components/BaseHeader.vue
deleted file mode 100644
index 90e8a1a5a..000000000
--- a/frontend/src/components/BaseHeader.vue
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
diff --git a/frontend/src/components/BasePagination.vue b/frontend/src/components/BasePagination.vue
deleted file mode 100755
index 9fc633481..000000000
--- a/frontend/src/components/BasePagination.vue
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
$emit('change', val)"
- :align="align"
- :total-rows="total"
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/BaseProgress.vue b/frontend/src/components/BaseProgress.vue
deleted file mode 100755
index c2f44bf2c..000000000
--- a/frontend/src/components/BaseProgress.vue
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
- {{ label }}
-
-
-
-
- {{ value }}%
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/BaseSlider.vue b/frontend/src/components/BaseSlider.vue
deleted file mode 100644
index 14180674a..000000000
--- a/frontend/src/components/BaseSlider.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-
diff --git a/frontend/src/components/BaseTable.vue b/frontend/src/components/BaseTable.vue
deleted file mode 100644
index 38ecc6039..000000000
--- a/frontend/src/components/BaseTable.vue
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
- | {{ column }} |
-
-
-
-
-
-
- |
- {{ itemValue(item, column) }}
- |
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Breadcrumb/Breadcrumb.vue b/frontend/src/components/Breadcrumb/Breadcrumb.vue
deleted file mode 100644
index 795816884..000000000
--- a/frontend/src/components/Breadcrumb/Breadcrumb.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
diff --git a/frontend/src/components/Breadcrumb/BreadcrumbItem.vue b/frontend/src/components/Breadcrumb/BreadcrumbItem.vue
deleted file mode 100644
index 2bf5a8c6c..000000000
--- a/frontend/src/components/Breadcrumb/BreadcrumbItem.vue
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Breadcrumb/RouteBreadcrumb.vue b/frontend/src/components/Breadcrumb/RouteBreadcrumb.vue
deleted file mode 100644
index bd378f312..000000000
--- a/frontend/src/components/Breadcrumb/RouteBreadcrumb.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{ route.name }}
-
- {{ route.name }}
-
-
-
-
-
-
-
diff --git a/frontend/src/components/ButtonCheckbox.vue b/frontend/src/components/ButtonCheckbox.vue
deleted file mode 100644
index e408c69a2..000000000
--- a/frontend/src/components/ButtonCheckbox.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
diff --git a/frontend/src/components/ButtonRadioGroup.vue b/frontend/src/components/ButtonRadioGroup.vue
deleted file mode 100644
index c757a50d8..000000000
--- a/frontend/src/components/ButtonRadioGroup.vue
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Cards/Card.vue b/frontend/src/components/Cards/Card.vue
deleted file mode 100644
index 5ae76922a..000000000
--- a/frontend/src/components/Cards/Card.vue
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Cards/StatsCard.vue b/frontend/src/components/Cards/StatsCard.vue
deleted file mode 100644
index 8c5c364d0..000000000
--- a/frontend/src/components/Cards/StatsCard.vue
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
- {{ title }}
-
-
- {{ subTitle }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Charts/BarChart.js b/frontend/src/components/Charts/BarChart.js
deleted file mode 100644
index 057c31163..000000000
--- a/frontend/src/components/Charts/BarChart.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Bar, mixins } from 'vue-chartjs'
-import globalOptionsMixin from '@/components/Charts/globalOptionsMixin'
-
-export default {
- name: 'bar-chart',
- extends: Bar,
- mixins: [mixins.reactiveProp, globalOptionsMixin],
- props: {
- extraOptions: {
- type: Object,
- default: () => ({}),
- },
- },
- data() {
- return {
- ctx: null,
- }
- },
- mounted() {
- this.$watch(
- 'chartData',
- (newVal, oldVal) => {
- if (!oldVal) {
- this.renderChart(this.chartData, this.extraOptions)
- }
- },
- { immediate: true },
- )
- },
-}
diff --git a/frontend/src/components/Charts/LineChart.js b/frontend/src/components/Charts/LineChart.js
deleted file mode 100644
index 81452f14d..000000000
--- a/frontend/src/components/Charts/LineChart.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Line, mixins } from 'vue-chartjs'
-import globalOptionsMixin from '@/components/Charts/globalOptionsMixin'
-export default {
- name: 'line-chart',
- extends: Line,
- mixins: [mixins.reactiveProp, globalOptionsMixin],
- props: {
- extraOptions: {
- type: Object,
- default: () => ({}),
- },
- },
- data() {
- return {
- ctx: null,
- }
- },
- mounted() {
- this.$watch(
- 'chartData',
- (newVal, oldVal) => {
- if (!oldVal) {
- this.renderChart(this.chartData, this.extraOptions)
- }
- },
- { immediate: true },
- )
- },
-}
diff --git a/frontend/src/components/Charts/config.js b/frontend/src/components/Charts/config.js
deleted file mode 100644
index 694a036b5..000000000
--- a/frontend/src/components/Charts/config.js
+++ /dev/null
@@ -1,234 +0,0 @@
-import { parseOptions } from '@/components/Charts/optionHelpers'
-import Chart from 'chart.js'
-
-export const Charts = {
- mode: 'light', // (themeMode) ? themeMode : 'light';
- fonts: {
- base: 'Open Sans',
- },
- colors: {
- gray: {
- 100: '#f6f9fc',
- 200: '#e9ecef',
- 300: '#dee2e6',
- 400: '#ced4da',
- 500: '#adb5bd',
- 600: '#8898aa',
- 700: '#525f7f',
- 800: '#32325d',
- 900: '#212529',
- },
- theme: {
- default: '#172b4d',
- primary: '#5e72e4',
- secondary: '#f4f5f7',
- info: '#11cdef',
- success: '#2dce89',
- danger: '#f5365c',
- warning: '#fb6340',
- },
- black: '#12263F',
- white: '#FFFFFF',
- transparent: 'transparent',
- },
-}
-
-function chartOptions() {
- const { colors, mode, fonts } = Charts
- // Options
- const options = {
- defaults: {
- global: {
- responsive: true,
- maintainAspectRatio: false,
- defaultColor: mode === 'dark' ? colors.gray[700] : colors.gray[600],
- defaultFontColor: mode === 'dark' ? colors.gray[700] : colors.gray[600],
- defaultFontFamily: fonts.base,
- defaultFontSize: 13,
- layout: {
- padding: 0,
- },
- legend: {
- display: false,
- position: 'bottom',
- labels: {
- usePointStyle: true,
- padding: 16,
- },
- },
- elements: {
- point: {
- radius: 0,
- backgroundColor: colors.theme.primary,
- },
- line: {
- tension: 0.4,
- borderWidth: 4,
- borderColor: colors.theme.primary,
- backgroundColor: colors.transparent,
- borderCapStyle: 'rounded',
- },
- rectangle: {
- backgroundColor: colors.theme.warning,
- },
- arc: {
- backgroundColor: colors.theme.primary,
- borderColor: mode === 'dark' ? colors.gray[800] : colors.white,
- borderWidth: 4,
- },
- },
- tooltips: {
- enabled: true,
- mode: 'index',
- intersect: false,
- },
- },
- pie: {
- tooltips: {
- mode: 'point',
- },
- },
- doughnut: {
- tooltips: {
- mode: 'point',
- },
- cutoutPercentage: 83,
- legendCallback: function (chart) {
- const data = chart.data
- let content = ''
-
- data.labels.forEach(function (label, index) {
- const bgColor = data.datasets[0].backgroundColor[index]
-
- content += ''
- content +=
- ''
- content += label
- content += ''
- })
-
- return content
- },
- },
- },
- }
-
- // yAxes
- Chart.scaleService.updateScaleDefaults('linear', {
- gridLines: {
- borderDash: [2],
- borderDashOffset: [2],
- color: mode === 'dark' ? colors.gray[900] : colors.gray[200],
- drawBorder: false,
- drawTicks: true,
- zeroLineWidth: 1,
- zeroLineColor: mode === 'dark' ? colors.gray[900] : colors.gray[200],
- zeroLineBorderDash: [2],
- zeroLineBorderDashOffset: [2],
- },
- ticks: {
- beginAtZero: true,
- padding: 10,
- callback: function (value) {
- if (!(value % 10)) {
- return value
- }
- },
- },
- })
-
- // xAxes
- Chart.scaleService.updateScaleDefaults('category', {
- gridLines: {
- drawBorder: false,
- drawOnChartArea: false,
- drawTicks: false,
- lineWidth: 1,
- zeroLineWidth: 1,
- },
- ticks: {
- padding: 20,
- },
- maxBarThickness: 10,
- })
-
- return options
-}
-
-let initialized = false
-
-export function initGlobalOptions() {
- if (initialized) {
- return
- }
- parseOptions(Chart, chartOptions())
- initialized = true
-}
-
-export const basicOptions = {
- maintainAspectRatio: false,
- legend: {
- display: false,
- },
- responsive: true,
-}
-export const blueChartOptions = {
- scales: {
- yAxes: [
- {
- gridLines: {
- color: Charts.colors.gray[700],
- zeroLineColor: Charts.colors.gray[700],
- },
- },
- ],
- },
-}
-
-export const lineChartOptionsBlue = {
- ...basicOptions,
- tooltips: {
- backgroundColor: '#f5f5f5',
- titleFontColor: '#333',
- bodyFontColor: '#666',
- bodySpacing: 4,
- xPadding: 12,
- mode: 'nearest',
- intersect: 0,
- position: 'nearest',
- },
- responsive: true,
- scales: {
- yAxes: [
- {
- barPercentage: 1.6,
- gridLines: {
- drawBorder: false,
- color: 'rgba(29,140,248,0.0)',
- zeroLineColor: 'transparent',
- },
- ticks: {
- suggestedMin: 60,
- suggestedMax: 125,
- padding: 20,
- fontColor: '#9e9e9e',
- },
- },
- ],
-
- xAxes: [
- {
- barPercentage: 1.6,
- gridLines: {
- drawBorder: false,
- color: 'rgba(29,140,248,0.1)',
- zeroLineColor: 'transparent',
- },
- ticks: {
- padding: 20,
- fontColor: '#9e9e9e',
- },
- },
- ],
- },
-}
diff --git a/frontend/src/components/Charts/globalOptionsMixin.js b/frontend/src/components/Charts/globalOptionsMixin.js
deleted file mode 100644
index 323ac94e4..000000000
--- a/frontend/src/components/Charts/globalOptionsMixin.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import { initGlobalOptions } from '@/components/Charts/config'
-import './roundedCornersExtension'
-export default {
- mounted() {
- initGlobalOptions()
- },
-}
diff --git a/frontend/src/components/Charts/optionHelpers.js b/frontend/src/components/Charts/optionHelpers.js
deleted file mode 100644
index 5b4630b73..000000000
--- a/frontend/src/components/Charts/optionHelpers.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// Parse global options
-export function parseOptions(parent, options) {
- for (const item in options) {
- if (typeof options[item] !== 'object') {
- parent[item] = options[item]
- } else {
- parseOptions(parent[item], options[item])
- }
- }
-}
diff --git a/frontend/src/components/Charts/roundedCornersExtension.js b/frontend/src/components/Charts/roundedCornersExtension.js
deleted file mode 100644
index 2ef8fd1d2..000000000
--- a/frontend/src/components/Charts/roundedCornersExtension.js
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// Chart extension for making the bars rounded
-// Code from: https://codepen.io/jedtrow/full/ygRYgo
-//
-import Chart from 'chart.js'
-Chart.elements.Rectangle.prototype.draw = function () {
- const ctx = this._chart.ctx
- const vm = this._view
- let left, right, top, bottom, signX, signY, borderSkipped
- let borderWidth = vm.borderWidth
- // Set Radius Here
- // If radius is large enough to cause drawing errors a max radius is imposed
- const cornerRadius = 6
-
- if (!vm.horizontal) {
- // bar
- left = vm.x - vm.width / 2
- right = vm.x + vm.width / 2
- top = vm.y
- bottom = vm.base
- signX = 1
- signY = bottom > top ? 1 : -1
- borderSkipped = vm.borderSkipped || 'bottom'
- } else {
- // horizontal bar
- left = vm.base
- right = vm.x
- top = vm.y - vm.height / 2
- bottom = vm.y + vm.height / 2
- signX = right > left ? 1 : -1
- signY = 1
- borderSkipped = vm.borderSkipped || 'left'
- }
-
- // Canvas doesn't allow us to stroke inside the width so we can
- // adjust the sizes to fit if we're setting a stroke on the line
- if (borderWidth) {
- // borderWidth shold be less than bar width and bar height.
- const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom))
- borderWidth = borderWidth > barSize ? barSize : borderWidth
- const halfStroke = borderWidth / 2
- // Adjust borderWidth when bar top position is near vm.base(zero).
- const borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0)
- const borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0)
- const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0)
- const borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0)
- // not become a vertical line?
- if (borderLeft !== borderRight) {
- top = borderTop
- bottom = borderBottom
- }
- // not become a horizontal line?
- if (borderTop !== borderBottom) {
- left = borderLeft
- right = borderRight
- }
- }
-
- ctx.beginPath()
- ctx.fillStyle = vm.backgroundColor
- ctx.strokeStyle = vm.borderColor
- ctx.lineWidth = borderWidth
-
- // Corner points, from bottom-left to bottom-right clockwise
- // | 1 2 |
- // | 0 3 |
- const corners = [
- [left, bottom],
- [left, top],
- [right, top],
- [right, bottom],
- ]
-
- // Find first (starting) corner with fallback to 'bottom'
- const borders = ['bottom', 'left', 'top', 'right']
- let startCorner = borders.indexOf(borderSkipped, 0)
- if (startCorner === -1) {
- startCorner = 0
- }
-
- function cornerAt(index) {
- return corners[(startCorner + index) % 4]
- }
-
- // Draw rectangle from 'startCorner'
- let corner = cornerAt(0)
- ctx.moveTo(corner[0], corner[1])
-
- for (let i = 1; i < 4; i++) {
- corner = cornerAt(i)
- let nextCornerId = i + 1
- if (nextCornerId === 4) {
- nextCornerId = 0
- }
-
- const width = corners[2][0] - corners[1][0]
- const height = corners[0][1] - corners[1][1]
- const x = corners[1][0]
- const y = corners[1][1]
-
- let radius = cornerRadius
-
- // Fix radius being too large
- if (radius > height / 2) {
- radius = height / 2
- }
- if (radius > width / 2) {
- radius = width / 2
- }
-
- ctx.moveTo(x + radius, y)
- ctx.lineTo(x + width - radius, y)
- ctx.quadraticCurveTo(x + width, y, x + width, y + radius)
- ctx.lineTo(x + width, y + height - radius)
- ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height)
- ctx.lineTo(x + radius, y + height)
- ctx.quadraticCurveTo(x, y + height, x, y + height - radius)
- ctx.lineTo(x, y + radius)
- ctx.quadraticCurveTo(x, y, x + radius, y)
- }
-
- ctx.fill()
- if (borderWidth) {
- ctx.stroke()
- }
-}
diff --git a/frontend/src/components/CloseButton.spec.js b/frontend/src/components/CloseButton.spec.js
deleted file mode 100644
index b92422df8..000000000
--- a/frontend/src/components/CloseButton.spec.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import { mount } from '@vue/test-utils'
-
-import CloseButton from './CloseButton'
-
-const localVue = global.localVue
-
-describe('CloseButton', () => {
- let wrapper
- const propsData = {
- target: 'Target',
- expanded: false,
- }
-
- const Wrapper = () => {
- return mount(CloseButton, { localVue, propsData })
- }
-
- describe('mount', () => {
- beforeEach(() => {
- wrapper = Wrapper()
- })
-
- it('emmits click event', () => {
- wrapper.find('.navbar-toggler').trigger('click')
- expect(wrapper.emitted('click')).toBeTruthy()
- })
- })
-})
diff --git a/frontend/src/components/CloseButton.vue b/frontend/src/components/CloseButton.vue
deleted file mode 100755
index 8c61f4f60..000000000
--- a/frontend/src/components/CloseButton.vue
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
diff --git a/frontend/src/components/Inputs/BaseCheckbox.vue b/frontend/src/components/Inputs/BaseCheckbox.vue
deleted file mode 100755
index 2aaa06fba..000000000
--- a/frontend/src/components/Inputs/BaseCheckbox.vue
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Inputs/BaseInput.vue b/frontend/src/components/Inputs/BaseInput.vue
deleted file mode 100644
index c43e0a265..000000000
--- a/frontend/src/components/Inputs/BaseInput.vue
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ successMessage }}
-
-
-
-
- {{ errors[0] }}
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Inputs/BaseRadio.vue b/frontend/src/components/Inputs/BaseRadio.vue
deleted file mode 100755
index 697812698..000000000
--- a/frontend/src/components/Inputs/BaseRadio.vue
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Modal-OLD.vue b/frontend/src/components/Modal-OLD.vue
deleted file mode 100644
index 515b510a0..000000000
--- a/frontend/src/components/Modal-OLD.vue
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Modal.vue b/frontend/src/components/Modal.vue
deleted file mode 100644
index c43bf6c67..000000000
--- a/frontend/src/components/Modal.vue
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
- Your attention is required
-
-
-
-
-
-
- Ok
-
- abbrechen
-
-
-
-
-
-
-
diff --git a/frontend/src/components/Navbar/BaseNav.vue b/frontend/src/components/Navbar/BaseNav.vue
deleted file mode 100644
index 778f550fc..000000000
--- a/frontend/src/components/Navbar/BaseNav.vue
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/NotificationPlugin/Notification.vue b/frontend/src/components/NotificationPlugin/Notification.vue
deleted file mode 100644
index e36985036..000000000
--- a/frontend/src/components/NotificationPlugin/Notification.vue
+++ /dev/null
@@ -1,194 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/NotificationPlugin/Notifications.vue b/frontend/src/components/NotificationPlugin/Notifications.vue
deleted file mode 100644
index f180a7f37..000000000
--- a/frontend/src/components/NotificationPlugin/Notifications.vue
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/frontend/src/components/NotificationPlugin/index.js b/frontend/src/components/NotificationPlugin/index.js
deleted file mode 100644
index 5b6bbe67b..000000000
--- a/frontend/src/components/NotificationPlugin/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import Notifications from './Notifications.vue'
-
-const NotificationStore = {
- state: [], // here the notifications will be added
- settings: {
- overlap: false,
- verticalAlign: 'top',
- horizontalAlign: 'right',
- type: 'info',
- timeout: 5000,
- closeOnClick: true,
- showClose: true,
- },
- setOptions(options) {
- this.settings = Object.assign(this.settings, options)
- },
- removeNotification(timestamp) {
- const indexToDelete = this.state.findIndex((n) => n.timestamp === timestamp)
- if (indexToDelete !== -1) {
- this.state.splice(indexToDelete, 1)
- }
- },
- addNotification(notification) {
- if (typeof notification === 'string' || notification instanceof String) {
- notification = { message: notification }
- }
- notification.timestamp = new Date()
- notification.timestamp.setMilliseconds(
- notification.timestamp.getMilliseconds() + this.state.length,
- )
- notification = Object.assign({}, this.settings, notification)
- this.state.push(notification)
- },
- notify(notification) {
- if (Array.isArray(notification)) {
- notification.forEach((notificationInstance) => {
- this.addNotification(notificationInstance)
- })
- } else {
- this.addNotification(notification)
- }
- },
-}
-
-const NotificationsPlugin = {
- install(Vue, options) {
- const app = new Vue({
- data: {
- notificationStore: NotificationStore,
- },
- methods: {
- notify(notification) {
- this.notificationStore.notify(notification)
- },
- },
- })
- Vue.prototype.$notify = app.notify
- Vue.prototype.$notifications = app.notificationStore
- Vue.component('Notifications', Notifications)
- if (options) {
- NotificationStore.setOptions(options)
- }
- },
-}
-
-export default NotificationsPlugin
diff --git a/frontend/src/components/SearchUser.vue b/frontend/src/components/SearchUser.vue
deleted file mode 100644
index dd3fe34a6..000000000
--- a/frontend/src/components/SearchUser.vue
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
diff --git a/frontend/src/components/SidebarPlugin/SideBar.spec.js b/frontend/src/components/SidebarPlugin/SideBar.spec.js
index 9f9ce8a8f..58405f38f 100644
--- a/frontend/src/components/SidebarPlugin/SideBar.spec.js
+++ b/frontend/src/components/SidebarPlugin/SideBar.spec.js
@@ -41,6 +41,19 @@ describe('SideBar', () => {
expect(wrapper.find('#sidenav-main').exists()).toBeTruthy()
})
+ describe('navbar button', () => {
+ it('has a navbar button', () => {
+ expect(wrapper.find('button.navbar-toggler').exists()).toBeTruthy()
+ })
+
+ it('calls showSidebar when clicked', async () => {
+ const spy = jest.spyOn(wrapper.vm.$sidebar, 'displaySidebar')
+ wrapper.find('button.navbar-toggler').trigger('click')
+ await wrapper.vm.$nextTick()
+ expect(spy).toHaveBeenCalledWith(true)
+ })
+ })
+
describe('balance', () => {
it('shows em-dash as balance while loading', () => {
expect(wrapper.find('div.row.text-center').text()).toBe('— GDD')
@@ -55,19 +68,6 @@ describe('SideBar', () => {
})
})
- describe('navbar button', () => {
- it('has a navbar button', () => {
- expect(wrapper.find('button.navbar-toggler').exists()).toBeTruthy()
- })
-
- it('calls showSidebar when clicked', async () => {
- const spy = jest.spyOn(wrapper.vm.$sidebar, 'displaySidebar')
- wrapper.find('button.navbar-toggler').trigger('click')
- await wrapper.vm.$nextTick()
- expect(spy).toHaveBeenCalledWith(true)
- })
- })
-
describe('close siedbar', () => {
it('calls closeSidebar when clicked', async () => {
const spy = jest.spyOn(wrapper.vm.$sidebar, 'displaySidebar')
diff --git a/frontend/src/components/SidebarPlugin/SideBar.vue b/frontend/src/components/SidebarPlugin/SideBar.vue
index 60d835a1a..756e72d2a 100755
--- a/frontend/src/components/SidebarPlugin/SideBar.vue
+++ b/frontend/src/components/SidebarPlugin/SideBar.vue
@@ -14,13 +14,11 @@
@@ -71,15 +69,15 @@
-
diff --git a/frontend/src/components/Tabs/Tabs.vue b/frontend/src/components/Tabs/Tabs.vue
deleted file mode 100644
index 211c8d0cd..000000000
--- a/frontend/src/components/Tabs/Tabs.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
diff --git a/frontend/src/components/index.js b/frontend/src/components/index.js
index c75b2a8fa..155b060de 100755
--- a/frontend/src/components/index.js
+++ b/frontend/src/components/index.js
@@ -1,50 +1,8 @@
-import BaseCheckbox from './Inputs/BaseCheckbox.vue'
-import BaseAlert from './BaseAlert.vue'
-import BaseRadio from './Inputs/BaseRadio.vue'
-import BaseInput from './Inputs/BaseInput.vue'
-import Badge from './Badge'
-import BaseProgress from './BaseProgress.vue'
-import BaseButton from './BaseButton.vue'
-
-import BaseDropdown from './BaseDropdown.vue'
-import BaseTable from './BaseTable.vue'
-
-import Card from './Cards/Card.vue'
-import StatsCard from './Cards/StatsCard.vue'
-import BaseNav from './Navbar/BaseNav'
import NavbarToggleButton from './Navbar/NavbarToggleButton'
-import TabPane from './Tabs/Tab.vue'
-import Tabs from './Tabs/Tabs.vue'
import Collapse from './Collapse/Collapse.vue'
import CollapseItem from './Collapse/CollapseItem.vue'
-import Modal from './Modal.vue'
-import BaseSlider from './BaseSlider.vue'
-
-import BasePagination from './BasePagination.vue'
import SidebarPlugin from './SidebarPlugin'
-export {
- BaseCheckbox,
- Badge,
- BaseAlert,
- BaseProgress,
- BasePagination,
- BaseRadio,
- BaseInput,
- Card,
- StatsCard,
- BaseTable,
- BaseDropdown,
- SidebarPlugin,
- BaseNav,
- NavbarToggleButton,
- TabPane,
- Tabs,
- Modal,
- BaseSlider,
- BaseButton,
- Collapse,
- CollapseItem,
-}
+export { SidebarPlugin, NavbarToggleButton, Collapse, CollapseItem }
diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json
index f358d3169..6536a143b 100644
--- a/frontend/src/locales/de.json
+++ b/frontend/src/locales/de.json
@@ -34,7 +34,7 @@
"email":"E-Mail",
"email_repeat":"eMail wiederholen",
"password":"Passwort",
- "password_repeat":"Passwort wiederholen",
+ "passwordRepeat":"Passwort wiederholen",
"password_old":"altes Passwort",
"password_new":"neues Passwort",
"password_new_repeat":"neues Passwort wiederholen",
@@ -106,7 +106,6 @@
},
"profil": {
"activity": {
- "chart":"Gemeinschaftsstunden Chart",
"new":"Neue Gemeinschaftsstunden eintragen",
"list":"Meine Gemeinschaftsstunden Liste"
},
diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json
index edee8c8c3..f611e4b91 100644
--- a/frontend/src/locales/en.json
+++ b/frontend/src/locales/en.json
@@ -34,7 +34,7 @@
"email":"Email",
"email_repeat":"Repeat Email",
"password":"Password",
- "password_repeat":"Repeat password",
+ "passwordRepeat":"Repeat password",
"password_old":"Old password",
"password_new":"New password",
"password_new_repeat":"Repeat new password",
@@ -107,7 +107,6 @@
"profil": {
"transactions":"transactions",
"activity": {
- "chart":"Community Hours Chart",
"new":"Register new community hours",
"list":"My Community Hours List"
},
diff --git a/frontend/src/plugins/dashboard-plugin.js b/frontend/src/plugins/dashboard-plugin.js
index 013ded702..2edac0995 100755
--- a/frontend/src/plugins/dashboard-plugin.js
+++ b/frontend/src/plugins/dashboard-plugin.js
@@ -1,14 +1,7 @@
-// Polyfills for js features used in the Dashboard but not supported in some browsers (mainly IE)
import '@/polyfills'
-// Notifications plugin. Used on Notifications page
-import Notifications from '@/components/NotificationPlugin'
-// Validation plugin used to validate forms
import { configure, extend } from 'vee-validate'
-// A plugin file where you could register global components used across the app
import GlobalComponents from './globalComponents'
-// A plugin file where you could register global directives
import GlobalDirectives from './globalDirectives'
-// Sidebar on the right. Used as a local plugin in DashboardLayout.vue
import SideBar from '@/components/SidebarPlugin'
import PortalVue from 'portal-vue'
@@ -27,16 +20,12 @@ import { messages } from 'vee-validate/dist/locale/en.json'
import VueQrcodeReader from 'vue-qrcode-reader'
import VueQrcode from 'vue-qrcode'
-import VueFlatPickr from 'vue-flatpickr-component'
-
-import VueGoodTablePlugin from 'vue-good-table'
-// import the styles
-import 'vue-good-table/dist/vue-good-table.css'
+import FlatPickr from 'vue-flatpickr-component'
+import 'flatpickr/dist/flatpickr.css'
import VueMoment from 'vue-moment'
import Loading from 'vue-loading-overlay'
-// import the styles
import 'vue-loading-overlay/dist/vue-loading.css'
Object.keys(rules).forEach((rule) => {
@@ -45,21 +34,20 @@ Object.keys(rules).forEach((rule) => {
message: messages[rule], // assign message
})
})
+
export default {
install(Vue) {
Vue.use(GlobalComponents)
Vue.use(GlobalDirectives)
Vue.use(SideBar)
- Vue.use(Notifications)
Vue.use(PortalVue)
Vue.use(BootstrapVue)
Vue.use(IconsPlugin)
Vue.use(VueBootstrapToasts)
- Vue.use(VueGoodTablePlugin)
Vue.use(VueMoment)
Vue.use(VueQrcodeReader)
Vue.use(VueQrcode)
- Vue.use(VueFlatPickr)
+ Vue.use(FlatPickr)
Vue.use(Loading)
configure({
classes: {
diff --git a/frontend/src/plugins/globalComponents.js b/frontend/src/plugins/globalComponents.js
index 312f19296..b358e274c 100755
--- a/frontend/src/plugins/globalComponents.js
+++ b/frontend/src/plugins/globalComponents.js
@@ -1,38 +1,7 @@
-import BaseInput from '@/components/Inputs/BaseInput.vue'
-import BaseDropdown from '@/components/BaseDropdown.vue'
-import Card from '@/components/Cards/Card.vue'
-import Modal from '@/components/Modal.vue'
-import StatsCard from '@/components/Cards/StatsCard.vue'
-import BaseButton from '@/components/BaseButton.vue'
-import Badge from '@/components/Badge.vue'
-import BaseCheckbox from '@/components/Inputs/BaseCheckbox.vue'
-import BaseRadio from '@/components/Inputs/BaseRadio'
-import BaseProgress from '@/components/BaseProgress'
-import BasePagination from '@/components/BasePagination'
-import BaseAlert from '@/components/BaseAlert'
-import BaseNav from '@/components/Navbar/BaseNav'
-import BaseHeader from '@/components/BaseHeader'
import { ValidationProvider, ValidationObserver } from 'vee-validate'
-/**
- * You can register global components here and use them as a plugin in your main Vue instance
- */
const GlobalComponents = {
install(Vue) {
- Vue.component(Badge.name, Badge)
- Vue.component(BaseAlert.name, BaseAlert)
- Vue.component(BaseButton.name, BaseButton)
- Vue.component(BaseCheckbox.name, BaseCheckbox)
- Vue.component(BaseHeader.name, BaseHeader)
- Vue.component(BaseInput.name, BaseInput)
- Vue.component(BaseDropdown.name, BaseDropdown)
- Vue.component(BaseNav.name, BaseNav)
- Vue.component(BasePagination.name, BasePagination)
- Vue.component(BaseProgress.name, BaseProgress)
- Vue.component(BaseRadio.name, BaseRadio)
- Vue.component(Card.name, Card)
- Vue.component(Modal.name, Modal)
- Vue.component(StatsCard.name, StatsCard)
Vue.component('validation-provider', ValidationProvider)
Vue.component('validation-observer', ValidationObserver)
},
diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js
index 4c7e10a87..9b98645bd 100644
--- a/frontend/src/store/store.js
+++ b/frontend/src/store/store.js
@@ -58,7 +58,6 @@ export const store = new Vuex.Store({
sessionId: null,
email: '',
language: null,
- modals: false,
firstName: '',
lastName: '',
username: '',
diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue
index 66814b733..4d65aed70 100755
--- a/frontend/src/views/Layout/DashboardLayout_gdd.vue
+++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue
@@ -24,7 +24,25 @@
-
+
+
+
+
+
+
+ {{ $store.state.email }}
+
+
+
+
+
+
+
+
+
+
+
+
@@ -48,11 +66,11 @@ import PerfectScrollbar from 'perfect-scrollbar'
import 'perfect-scrollbar/css/perfect-scrollbar.css'
import loginAPI from '../../apis/loginAPI'
-import DashboardNavbar from './DashboardNavbar.vue'
import ContentFooter from './ContentFooter.vue'
// import DashboardContent from './Content.vue';
import { FadeTransition } from 'vue2-transitions'
import communityAPI from '../../apis/communityAPI'
+import VueQrcode from 'vue-qrcode'
function hasElement(className) {
return document.getElementsByClassName(className).length > 0
@@ -72,9 +90,8 @@ function initScrollbar(className) {
export default {
components: {
- DashboardNavbar,
ContentFooter,
- // DashboardContent,
+ VueQrcode,
FadeTransition,
},
data() {
@@ -132,4 +149,9 @@ export default {
},
}
-
+
diff --git a/frontend/src/views/Layout/DashboardNavbar.vue b/frontend/src/views/Layout/DashboardNavbar.vue
deleted file mode 100755
index 4cbcb3ca5..000000000
--- a/frontend/src/views/Layout/DashboardNavbar.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ $store.state.email }}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/views/Pages/AccountOverview/GddAddWork2.vue b/frontend/src/views/Pages/AccountOverview/GddAddWork2.vue
index 419742874..70f56f0e6 100644
--- a/frontend/src/views/Pages/AccountOverview/GddAddWork2.vue
+++ b/frontend/src/views/Pages/AccountOverview/GddAddWork2.vue
@@ -4,32 +4,32 @@
-
+
-
-
+
+
-
+
-
+
-
+
@@ -57,12 +57,8 @@