mysqlsyncr 1.0.42 → 1.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +44 -44
- package/src/index.js +6 -1
- package/ui/.editorconfig +7 -7
- package/ui/.prettierrc.json +5 -5
- package/ui/README.md +40 -40
- package/ui/dist/spa/assets/{MainLayout-CJQ1jgg8.js → MainLayout-Cft1OeWe.js} +1 -1
- package/ui/dist/spa/assets/axios-CNk6rzlZ.js +1 -0
- package/ui/dist/spa/assets/index-DomDZ6ci.js +30 -0
- package/ui/dist/spa/assets/{index-BvnAI_tZ.css → index-kXpA8n8r.css} +2 -2
- package/ui/dist/spa/index.html +2 -2
- package/ui/eslint.config.js +73 -73
- package/ui/index.html +21 -21
- package/ui/jsconfig.json +2 -2
- package/ui/package.json +42 -42
- package/ui/postcss.config.js +29 -29
- package/ui/quasar.config.js +216 -216
- package/ui/src/App.vue +7 -7
- package/ui/src/assets/quasar-logo-vertical.svg +14 -14
- package/ui/src/boot/axios.js +6 -14
- package/ui/src/components/EssentialLink.vue +44 -44
- package/ui/src/components/FolderBrowser.vue +2 -3
- package/ui/src/css/app.scss +1 -1
- package/ui/src/css/quasar.variables.scss +25 -25
- package/ui/src/layouts/MainLayout.vue +13 -13
- package/ui/src/pages/ApplyChanges.vue +46 -46
- package/ui/src/pages/CompareDatabase.vue +57 -57
- package/ui/src/pages/DatabaseManager.vue +42 -42
- package/ui/src/pages/DumpDatabase.vue +41 -41
- package/ui/src/pages/ErrorNotFound.vue +27 -27
- package/ui/src/pages/MainComponent copy.vue +322 -322
- package/ui/src/pages/MainComponent.vue +36 -23
- package/ui/src/router/index.js +30 -30
- package/ui/src/router/routes.js +20 -20
- package/ui/src/stores/example-store.js +21 -21
- package/ui/src/stores/index.js +20 -20
- package/ui/dist/spa/assets/axios-DrqNXj9v.js +0 -1
- package/ui/dist/spa/assets/index-NGPmhjJD.js +0 -30
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// Quasar SCSS (& Sass) Variables
|
|
2
|
-
// --------------------------------------------------
|
|
3
|
-
// To customize the look and feel of this app, you can override
|
|
4
|
-
// the Sass/SCSS variables found in Quasar's source Sass/SCSS files.
|
|
5
|
-
|
|
6
|
-
// Check documentation for full list of Quasar variables
|
|
7
|
-
|
|
8
|
-
// Your own variables (that are declared here) and Quasar's own
|
|
9
|
-
// ones will be available out of the box in your .vue/.scss/.sass files
|
|
10
|
-
|
|
11
|
-
// It's highly recommended to change the default colors
|
|
12
|
-
// to match your app's branding.
|
|
13
|
-
// Tip: Use the "Theme Builder" on Quasar's documentation website.
|
|
14
|
-
|
|
15
|
-
$primary : #1976D2;
|
|
16
|
-
$secondary : #26A69A;
|
|
17
|
-
$accent : #9C27B0;
|
|
18
|
-
|
|
19
|
-
$dark : #1D1D1D;
|
|
20
|
-
$dark-page : #121212;
|
|
21
|
-
|
|
22
|
-
$positive : #21BA45;
|
|
23
|
-
$negative : #C10015;
|
|
24
|
-
$info : #31CCEC;
|
|
25
|
-
$warning : #F2C037;
|
|
1
|
+
// Quasar SCSS (& Sass) Variables
|
|
2
|
+
// --------------------------------------------------
|
|
3
|
+
// To customize the look and feel of this app, you can override
|
|
4
|
+
// the Sass/SCSS variables found in Quasar's source Sass/SCSS files.
|
|
5
|
+
|
|
6
|
+
// Check documentation for full list of Quasar variables
|
|
7
|
+
|
|
8
|
+
// Your own variables (that are declared here) and Quasar's own
|
|
9
|
+
// ones will be available out of the box in your .vue/.scss/.sass files
|
|
10
|
+
|
|
11
|
+
// It's highly recommended to change the default colors
|
|
12
|
+
// to match your app's branding.
|
|
13
|
+
// Tip: Use the "Theme Builder" on Quasar's documentation website.
|
|
14
|
+
|
|
15
|
+
$primary : #1976D2;
|
|
16
|
+
$secondary : #26A69A;
|
|
17
|
+
$accent : #9C27B0;
|
|
18
|
+
|
|
19
|
+
$dark : #1D1D1D;
|
|
20
|
+
$dark-page : #121212;
|
|
21
|
+
|
|
22
|
+
$positive : #21BA45;
|
|
23
|
+
$negative : #C10015;
|
|
24
|
+
$info : #31CCEC;
|
|
25
|
+
$warning : #F2C037;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-layout view="lHh Lpr lFf">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<q-page-container>
|
|
6
|
-
<router-view />
|
|
7
|
-
</q-page-container>
|
|
8
|
-
</q-layout>
|
|
9
|
-
</template>
|
|
10
|
-
|
|
11
|
-
<script setup>
|
|
12
|
-
|
|
13
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<q-layout view="lHh Lpr lFf">
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
<q-page-container>
|
|
6
|
+
<router-view />
|
|
7
|
+
</q-page-container>
|
|
8
|
+
</q-layout>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script setup>
|
|
12
|
+
|
|
13
|
+
</script>
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-page>
|
|
3
|
-
<q-btn @click="applyChanges" label="Apply Changes" color="primary" />
|
|
4
|
-
<q-spinner v-if="loading" />
|
|
5
|
-
<div v-if="message">{{ message }}</div>
|
|
6
|
-
</q-page>
|
|
7
|
-
</template>
|
|
8
|
-
|
|
9
|
-
<script>
|
|
10
|
-
import axios from 'axios';
|
|
11
|
-
|
|
12
|
-
export default {
|
|
13
|
-
data() {
|
|
14
|
-
return {
|
|
15
|
-
loading: false,
|
|
16
|
-
message: '',
|
|
17
|
-
};
|
|
18
|
-
},
|
|
19
|
-
methods: {
|
|
20
|
-
async applyChanges() {
|
|
21
|
-
this.loading = true;
|
|
22
|
-
try {
|
|
23
|
-
const response = await axios.post('http://localhost:3000/api/apply', {
|
|
24
|
-
config: {
|
|
25
|
-
host: this.$store.state.db.host,
|
|
26
|
-
port: this.$store.state.db.port,
|
|
27
|
-
user: this.$store.state.db.user,
|
|
28
|
-
password: this.$store.state.db.password,
|
|
29
|
-
},
|
|
30
|
-
database: this.$store.state.db.database,
|
|
31
|
-
diffs: this.getSelectedDiffs(), // Get selected differences to apply
|
|
32
|
-
});
|
|
33
|
-
this.message = response.data.message;
|
|
34
|
-
} catch (error) {
|
|
35
|
-
this.message = error.response.data.message;
|
|
36
|
-
} finally {
|
|
37
|
-
this.loading = false;
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
getSelectedDiffs() {
|
|
41
|
-
// Logic to get selected differences from the comparison view
|
|
42
|
-
return []; // Placeholder
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<q-page>
|
|
3
|
+
<q-btn @click="applyChanges" label="Apply Changes" color="primary" />
|
|
4
|
+
<q-spinner v-if="loading" />
|
|
5
|
+
<div v-if="message">{{ message }}</div>
|
|
6
|
+
</q-page>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import axios from 'axios';
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
data() {
|
|
14
|
+
return {
|
|
15
|
+
loading: false,
|
|
16
|
+
message: '',
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
methods: {
|
|
20
|
+
async applyChanges() {
|
|
21
|
+
this.loading = true;
|
|
22
|
+
try {
|
|
23
|
+
const response = await axios.post('http://localhost:3000/api/apply', {
|
|
24
|
+
config: {
|
|
25
|
+
host: this.$store.state.db.host,
|
|
26
|
+
port: this.$store.state.db.port,
|
|
27
|
+
user: this.$store.state.db.user,
|
|
28
|
+
password: this.$store.state.db.password,
|
|
29
|
+
},
|
|
30
|
+
database: this.$store.state.db.database,
|
|
31
|
+
diffs: this.getSelectedDiffs(), // Get selected differences to apply
|
|
32
|
+
});
|
|
33
|
+
this.message = response.data.message;
|
|
34
|
+
} catch (error) {
|
|
35
|
+
this.message = error.response.data.message;
|
|
36
|
+
} finally {
|
|
37
|
+
this.loading = false;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
getSelectedDiffs() {
|
|
41
|
+
// Logic to get selected differences from the comparison view
|
|
42
|
+
return []; // Placeholder
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
</script>
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-page>
|
|
3
|
-
<q-btn @click="compareDatabases" label="Compare Databases" color="primary" />
|
|
4
|
-
<q-table v-if="differences.length" :rows="differences" :columns="columns" />
|
|
5
|
-
<q-spinner v-if="loading" />
|
|
6
|
-
<div v-if="message">{{ message }}</div>
|
|
7
|
-
</q-page>
|
|
8
|
-
</template>
|
|
9
|
-
|
|
10
|
-
<script>
|
|
11
|
-
import axios from 'axios';
|
|
12
|
-
|
|
13
|
-
export default {
|
|
14
|
-
data() {
|
|
15
|
-
return {
|
|
16
|
-
loading: false,
|
|
17
|
-
message: '',
|
|
18
|
-
differences: [],
|
|
19
|
-
columns: [
|
|
20
|
-
{ name: 'table', label: 'Table', align: 'left', field: 'table' },
|
|
21
|
-
{ name: 'difference', label: 'Difference', align: 'left', field: 'difference' },
|
|
22
|
-
{ name: 'action', label: 'Action', align: 'center', field: 'action', sortable: false },
|
|
23
|
-
],
|
|
24
|
-
};
|
|
25
|
-
},
|
|
26
|
-
methods: {
|
|
27
|
-
async compareDatabases() {
|
|
28
|
-
this.loading = true;
|
|
29
|
-
try {
|
|
30
|
-
const response = await axios.post('http://localhost:3000/api/compare', {
|
|
31
|
-
config: {
|
|
32
|
-
host: this.$store.state.db.host,
|
|
33
|
-
port: this.$store.state.db.port,
|
|
34
|
-
user: this.$store.state.db.user,
|
|
35
|
-
password: this.$store.state.db.password,
|
|
36
|
-
},
|
|
37
|
-
database: this.$store.state.db.database,
|
|
38
|
-
output: 'outputDir', // Specify output directory
|
|
39
|
-
});
|
|
40
|
-
this.differences = response.data.map(diff => ({
|
|
41
|
-
table: diff.table,
|
|
42
|
-
difference: diff.difference,
|
|
43
|
-
action: 'Apply', // Placeholder for action
|
|
44
|
-
}));
|
|
45
|
-
} catch (error) {
|
|
46
|
-
this.message = error.response.data.message;
|
|
47
|
-
} finally {
|
|
48
|
-
this.loading = false;
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
applyDifference(difference) {
|
|
52
|
-
// Logic to apply the individual difference
|
|
53
|
-
console.log('Applying difference:', difference);
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<q-page>
|
|
3
|
+
<q-btn @click="compareDatabases" label="Compare Databases" color="primary" />
|
|
4
|
+
<q-table v-if="differences.length" :rows="differences" :columns="columns" />
|
|
5
|
+
<q-spinner v-if="loading" />
|
|
6
|
+
<div v-if="message">{{ message }}</div>
|
|
7
|
+
</q-page>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script>
|
|
11
|
+
import axios from 'axios';
|
|
12
|
+
|
|
13
|
+
export default {
|
|
14
|
+
data() {
|
|
15
|
+
return {
|
|
16
|
+
loading: false,
|
|
17
|
+
message: '',
|
|
18
|
+
differences: [],
|
|
19
|
+
columns: [
|
|
20
|
+
{ name: 'table', label: 'Table', align: 'left', field: 'table' },
|
|
21
|
+
{ name: 'difference', label: 'Difference', align: 'left', field: 'difference' },
|
|
22
|
+
{ name: 'action', label: 'Action', align: 'center', field: 'action', sortable: false },
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
methods: {
|
|
27
|
+
async compareDatabases() {
|
|
28
|
+
this.loading = true;
|
|
29
|
+
try {
|
|
30
|
+
const response = await axios.post('http://localhost:3000/api/compare', {
|
|
31
|
+
config: {
|
|
32
|
+
host: this.$store.state.db.host,
|
|
33
|
+
port: this.$store.state.db.port,
|
|
34
|
+
user: this.$store.state.db.user,
|
|
35
|
+
password: this.$store.state.db.password,
|
|
36
|
+
},
|
|
37
|
+
database: this.$store.state.db.database,
|
|
38
|
+
output: 'outputDir', // Specify output directory
|
|
39
|
+
});
|
|
40
|
+
this.differences = response.data.map(diff => ({
|
|
41
|
+
table: diff.table,
|
|
42
|
+
difference: diff.difference,
|
|
43
|
+
action: 'Apply', // Placeholder for action
|
|
44
|
+
}));
|
|
45
|
+
} catch (error) {
|
|
46
|
+
this.message = error.response.data.message;
|
|
47
|
+
} finally {
|
|
48
|
+
this.loading = false;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
applyDifference(difference) {
|
|
52
|
+
// Logic to apply the individual difference
|
|
53
|
+
console.log('Applying difference:', difference);
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
</script>
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-page>
|
|
3
|
-
<q-form @submit.prevent="connectToDatabase">
|
|
4
|
-
<q-input v-model="host" label="Database Host" required />
|
|
5
|
-
<q-input v-model="port" label="Database Port" type="number" required />
|
|
6
|
-
<q-input v-model="user" label="Database User" required />
|
|
7
|
-
<q-input v-model="password" label="Database Password" type="password" required />
|
|
8
|
-
<q-input v-model="database" label="Database Name" required />
|
|
9
|
-
<q-btn type="submit" label="Connect" color="primary" />
|
|
10
|
-
</q-form>
|
|
11
|
-
|
|
12
|
-
<q-btn @click="goToDump" label="Dump Database" color="secondary" />
|
|
13
|
-
<q-btn @click="goToCompare" label="Compare Database" color="secondary" />
|
|
14
|
-
</q-page>
|
|
15
|
-
</template>
|
|
16
|
-
|
|
17
|
-
<script>
|
|
18
|
-
export default {
|
|
19
|
-
data() {
|
|
20
|
-
return {
|
|
21
|
-
host: '',
|
|
22
|
-
port: 3306,
|
|
23
|
-
user: '',
|
|
24
|
-
password: '',
|
|
25
|
-
database: '',
|
|
26
|
-
};
|
|
27
|
-
},
|
|
28
|
-
methods: {
|
|
29
|
-
connectToDatabase() {
|
|
30
|
-
// Logic to connect to the database using the provided credentials
|
|
31
|
-
console.log('Connecting to database:', this.host, this.port, this.user, this.password, this.database);
|
|
32
|
-
// Emit connection details to the socket server if needed
|
|
33
|
-
},
|
|
34
|
-
goToDump() {
|
|
35
|
-
this.$router.push('/dump');
|
|
36
|
-
},
|
|
37
|
-
goToCompare() {
|
|
38
|
-
this.$router.push('/compare');
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<q-page>
|
|
3
|
+
<q-form @submit.prevent="connectToDatabase">
|
|
4
|
+
<q-input v-model="host" label="Database Host" required />
|
|
5
|
+
<q-input v-model="port" label="Database Port" type="number" required />
|
|
6
|
+
<q-input v-model="user" label="Database User" required />
|
|
7
|
+
<q-input v-model="password" label="Database Password" type="password" required />
|
|
8
|
+
<q-input v-model="database" label="Database Name" required />
|
|
9
|
+
<q-btn type="submit" label="Connect" color="primary" />
|
|
10
|
+
</q-form>
|
|
11
|
+
|
|
12
|
+
<q-btn @click="goToDump" label="Dump Database" color="secondary" />
|
|
13
|
+
<q-btn @click="goToCompare" label="Compare Database" color="secondary" />
|
|
14
|
+
</q-page>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
export default {
|
|
19
|
+
data() {
|
|
20
|
+
return {
|
|
21
|
+
host: '',
|
|
22
|
+
port: 3306,
|
|
23
|
+
user: '',
|
|
24
|
+
password: '',
|
|
25
|
+
database: '',
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
methods: {
|
|
29
|
+
connectToDatabase() {
|
|
30
|
+
// Logic to connect to the database using the provided credentials
|
|
31
|
+
console.log('Connecting to database:', this.host, this.port, this.user, this.password, this.database);
|
|
32
|
+
// Emit connection details to the socket server if needed
|
|
33
|
+
},
|
|
34
|
+
goToDump() {
|
|
35
|
+
this.$router.push('/dump');
|
|
36
|
+
},
|
|
37
|
+
goToCompare() {
|
|
38
|
+
this.$router.push('/compare');
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
</script>
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-page>
|
|
3
|
-
<q-btn @click="dumpDatabase" label="Dump Database" color="primary" />
|
|
4
|
-
<q-spinner v-if="loading" />
|
|
5
|
-
<div v-if="message">{{ message }}</div>
|
|
6
|
-
</q-page>
|
|
7
|
-
</template>
|
|
8
|
-
|
|
9
|
-
<script>
|
|
10
|
-
import axios from 'axios';
|
|
11
|
-
|
|
12
|
-
export default {
|
|
13
|
-
data() {
|
|
14
|
-
return {
|
|
15
|
-
loading: false,
|
|
16
|
-
message: '',
|
|
17
|
-
};
|
|
18
|
-
},
|
|
19
|
-
methods: {
|
|
20
|
-
async dumpDatabase() {
|
|
21
|
-
this.loading = true;
|
|
22
|
-
try {
|
|
23
|
-
const response = await axios.post('http://localhost:3000/api/dump', {
|
|
24
|
-
config: {
|
|
25
|
-
host: this.$store.state.db.host,
|
|
26
|
-
port: this.$store.state.db.port,
|
|
27
|
-
user: this.$store.state.db.user,
|
|
28
|
-
password: this.$store.state.db.password,
|
|
29
|
-
},
|
|
30
|
-
database: this.$store.state.db.database,
|
|
31
|
-
});
|
|
32
|
-
this.message = response.data.message;
|
|
33
|
-
} catch (error) {
|
|
34
|
-
this.message = error.response.data.message;
|
|
35
|
-
} finally {
|
|
36
|
-
this.loading = false;
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<q-page>
|
|
3
|
+
<q-btn @click="dumpDatabase" label="Dump Database" color="primary" />
|
|
4
|
+
<q-spinner v-if="loading" />
|
|
5
|
+
<div v-if="message">{{ message }}</div>
|
|
6
|
+
</q-page>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import axios from 'axios';
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
data() {
|
|
14
|
+
return {
|
|
15
|
+
loading: false,
|
|
16
|
+
message: '',
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
methods: {
|
|
20
|
+
async dumpDatabase() {
|
|
21
|
+
this.loading = true;
|
|
22
|
+
try {
|
|
23
|
+
const response = await axios.post('http://localhost:3000/api/dump', {
|
|
24
|
+
config: {
|
|
25
|
+
host: this.$store.state.db.host,
|
|
26
|
+
port: this.$store.state.db.port,
|
|
27
|
+
user: this.$store.state.db.user,
|
|
28
|
+
password: this.$store.state.db.password,
|
|
29
|
+
},
|
|
30
|
+
database: this.$store.state.db.database,
|
|
31
|
+
});
|
|
32
|
+
this.message = response.data.message;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
this.message = error.response.data.message;
|
|
35
|
+
} finally {
|
|
36
|
+
this.loading = false;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
</script>
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="fullscreen bg-blue text-white text-center q-pa-md flex flex-center">
|
|
3
|
-
<div>
|
|
4
|
-
<div style="font-size: 30vh">
|
|
5
|
-
404
|
|
6
|
-
</div>
|
|
7
|
-
|
|
8
|
-
<div class="text-h2" style="opacity:.4">
|
|
9
|
-
Oops. Nothing here...
|
|
10
|
-
</div>
|
|
11
|
-
|
|
12
|
-
<q-btn
|
|
13
|
-
class="q-mt-xl"
|
|
14
|
-
color="white"
|
|
15
|
-
text-color="blue"
|
|
16
|
-
unelevated
|
|
17
|
-
to="/"
|
|
18
|
-
label="Go Home"
|
|
19
|
-
no-caps
|
|
20
|
-
/>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</template>
|
|
24
|
-
|
|
25
|
-
<script setup>
|
|
26
|
-
//
|
|
27
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="fullscreen bg-blue text-white text-center q-pa-md flex flex-center">
|
|
3
|
+
<div>
|
|
4
|
+
<div style="font-size: 30vh">
|
|
5
|
+
404
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<div class="text-h2" style="opacity:.4">
|
|
9
|
+
Oops. Nothing here...
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<q-btn
|
|
13
|
+
class="q-mt-xl"
|
|
14
|
+
color="white"
|
|
15
|
+
text-color="blue"
|
|
16
|
+
unelevated
|
|
17
|
+
to="/"
|
|
18
|
+
label="Go Home"
|
|
19
|
+
no-caps
|
|
20
|
+
/>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script setup>
|
|
26
|
+
//
|
|
27
|
+
</script>
|