+
-
- {{ t('firstrunwizard', 'A collaboration platform that puts you in control') }}
+
+ {{ 'A researchdata platform that puts you in control' }}
-
+
+
+
+
+
+
+ Discover the power of TethysCloud, the cutting-edge web backend solution that revolutionizes the way you
+ handle
+ research
+ data. At the heart of Tethys lies our meticulously developed research data repository, which
+ leverages
+ state-of-the-art
+ CI/CD techniques to deliver a seamless and efficient experience.
+
+
+
-
+
@@ -26,21 +40,18 @@
-
diff --git a/resources/js/Components/FirstrunWizard/components/Page3.vue b/resources/js/Components/FirstrunWizard/components/Page3.vue
new file mode 100644
index 0000000..52c00d6
--- /dev/null
+++ b/resources/js/Components/FirstrunWizard/components/Page3.vue
@@ -0,0 +1,68 @@
+
+
+
+
+ {{ 'More about TethysCloud' }}
+
+
+
+
+
+
+
+
+ {{ versionNumber }}
+
+
+
+
+
+
+
+
diff --git a/resources/js/Components/Icons/DotsHorizontal.vue b/resources/js/Components/Icons/DotsHorizontal.vue
new file mode 100644
index 0000000..d9a8b1b
--- /dev/null
+++ b/resources/js/Components/Icons/DotsHorizontal.vue
@@ -0,0 +1,31 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/js/Components/Icons/Pause.vue b/resources/js/Components/Icons/Pause.vue
new file mode 100644
index 0000000..016cf00
--- /dev/null
+++ b/resources/js/Components/Icons/Pause.vue
@@ -0,0 +1,30 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/js/Components/Icons/Play.vue b/resources/js/Components/Icons/Play.vue
new file mode 100644
index 0000000..4d1e00a
--- /dev/null
+++ b/resources/js/Components/Icons/Play.vue
@@ -0,0 +1,30 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/js/Components/NavBar.vue b/resources/js/Components/NavBar.vue
index dce8a4d..277a33f 100644
--- a/resources/js/Components/NavBar.vue
+++ b/resources/js/Components/NavBar.vue
@@ -27,7 +27,8 @@ import {
mdiGithub,
mdiThemeLightDark,
mdiViewDashboard,
- mdiMapSearch
+ mdiMapSearch,
+ mdiInformationVariant,
} from '@mdi/js';
import NavBarItem from '@/Components/NavBarItem.vue';
import NavBarItemLabel from '@/Components/NavBarItemLabel.vue';
@@ -38,8 +39,8 @@ import BaseIcon from '@/Components/BaseIcon.vue';
// import NavBarSearch from '@/Components/NavBarSearch.vue';
import { stardust } from '@eidellev/adonis-stardust/client';
import type { User } from '@/Dataset';
-// import FirstrunWizard from '@/Components/FirstrunWizard/FirstrunWizard.vue'
-import Lock from 'vue-material-design-icons/Lock.vue'
+import FirstrunWizard from '@/Components/FirstrunWizard/FirstrunWizard.vue'
+// import Lock from 'vue-material-design-icons/Lock.vue'
// import BriefcaseCheck from 'vue-material-design-icons/BriefcaseCheck.vue'
// import SwapHorizontal from 'vue-material-design-icons/SwapHorizontal.vue'
// import AccountGroup from 'vue-material-design-icons/AccountGroup.vue'
@@ -89,11 +90,20 @@ const logout = async () => {
await router.post(stardust.route('logout'));
};
+const about = ref();
+const showAbout = async () => {
+ // router.post(route('logout'));
+ about.value.open();
+};
+
+
+
+
@@ -165,6 +175,9 @@ const logout = async () => {
+
+
+
@@ -178,9 +191,12 @@ const logout = async () => {
+
+
+
-
+
diff --git a/resources/js/Components/NcActions.vue b/resources/js/Components/NcActions.vue
new file mode 100644
index 0000000..43e23e4
--- /dev/null
+++ b/resources/js/Components/NcActions.vue
@@ -0,0 +1,774 @@
+
+
+
+
+
diff --git a/resources/js/Components/NcButton.vue b/resources/js/Components/NcButton.vue
new file mode 100644
index 0000000..6d608b3
--- /dev/null
+++ b/resources/js/Components/NcButton.vue
@@ -0,0 +1,544 @@
+
+
+
+
+
+
+
+
+ {{
+ label }}
+
+
+
+
+
+
diff --git a/resources/js/Components/NcModal.vue b/resources/js/Components/NcModal.vue
new file mode 100644
index 0000000..76df2b6
--- /dev/null
+++ b/resources/js/Components/NcModal.vue
@@ -0,0 +1,901 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/js/Pages/Dashboard.vue b/resources/js/Pages/Dashboard.vue
index fdd0f5a..29a34cf 100644
--- a/resources/js/Pages/Dashboard.vue
+++ b/resources/js/Pages/Dashboard.vue
@@ -146,7 +146,7 @@ const datasets = computed(() => mainService.datasets);
-
+
diff --git a/resources/js/styles.js b/resources/js/styles.js
index 3704e4a..b8b3b1d 100644
--- a/resources/js/styles.js
+++ b/resources/js/styles.js
@@ -6,8 +6,10 @@ export const basic = {
asideMenuItemActive: 'font-bold text-cyan-300',
asideMenuDropdown: 'bg-gray-700/50',
navBarItemLabel: 'text-black',
- navBarItemLabelHover: 'hover:text-blue-500',
- navBarItemLabelActiveColor: 'text-blue-600',
+ // navBarItemLabelHover: 'hover:text-blue-500',
+ navBarItemLabelHover: 'hover:text-lime-dark',
+ // navBarItemLabelActiveColor: 'text-blue-600',
+ navBarItemLabelActiveColor: 'text-lime-dark',
overlay: 'from-gray-700 via-gray-900 to-gray-700',
};
diff --git a/resources/js/utils/GenRandomId.js b/resources/js/utils/GenRandomId.js
new file mode 100644
index 0000000..9dae874
--- /dev/null
+++ b/resources/js/utils/GenRandomId.js
@@ -0,0 +1,8 @@
+const GenRandomId = (length) => {
+ return Math.random()
+ .toString(36)
+ .replace(/[^a-z]+/g, '')
+ .slice(0, length || 5)
+}
+
+export default GenRandomId
\ No newline at end of file
diff --git a/resources/js/utils/Timer.js b/resources/js/utils/Timer.js
new file mode 100644
index 0000000..56b020b
--- /dev/null
+++ b/resources/js/utils/Timer.js
@@ -0,0 +1,43 @@
+/**
+ * @param {Function} callback The function to call
+ * @param {number} delay The time to wait
+ */
+export default function timer(callback, delay) {
+ let id;
+ let started;
+ let remaining = delay;
+ let running;
+
+ this.start = function () {
+ running = true;
+ started = new Date();
+ id = setTimeout(callback, remaining);
+ };
+
+ this.pause = function () {
+ running = false;
+ clearTimeout(id);
+ remaining -= new Date() - started;
+ };
+
+ this.clear = function () {
+ running = false;
+ clearTimeout(id);
+ remaining = 0;
+ };
+
+ this.getTimeLeft = function () {
+ if (running) {
+ this.pause();
+ this.start();
+ }
+
+ return remaining;
+ };
+
+ this.getStateRunning = function () {
+ return running;
+ };
+
+ this.start();
+}
diff --git a/resources/js/utils/focusTrap.js b/resources/js/utils/focusTrap.js
new file mode 100644
index 0000000..65c7c38
--- /dev/null
+++ b/resources/js/utils/focusTrap.js
@@ -0,0 +1,11 @@
+/**
+ * Return the default global focus trap stack
+ *
+ * @return {import('focus-trap').FocusTrap[]}
+ */
+export const getTrapStack = function() {
+ // Create global stack if undefined
+ Object.assign(window, { _nc_focus_trap: window._nc_focus_trap || [] })
+
+ return window._nc_focus_trap
+}
\ No newline at end of file
diff --git a/resources/js/utils/initialState.ts b/resources/js/utils/initialState.ts
new file mode 100644
index 0000000..27c79e6
--- /dev/null
+++ b/resources/js/utils/initialState.ts
@@ -0,0 +1,16 @@
+export function loadState(app: string, key: string, fallback?: T): T {
+ const elem = document.querySelector(`#initial-state-${app}-${key}`);
+ if (elem === null) {
+ if (fallback !== undefined) {
+ return fallback;
+ }
+ throw new Error(`Could not find initial state ${key} of ${app}`);
+ }
+
+ try {
+ const value = atob(elem.value);
+ return JSON.parse(value);
+ } catch (e) {
+ throw new Error(`Could not parse initial state ${key} of ${app}`);
+ }
+}
diff --git a/resources/views/app.edge b/resources/views/app.edge
index e43e90f..c4feee4 100644
--- a/resources/views/app.edge
+++ b/resources/views/app.edge
@@ -1,20 +1,27 @@
+
- {{-- --}}
-
- {{-- --}}
+ {{--
+ --}}
+
+ {{--
+ --}}
+
@routes
@entryPointStyles('app')
@entryPointScripts('app')
- {{-- myapp --}}
-
+ {{-- myapp --}}
+
+
@inertia()
-
+
+