-
-
- {{ entry.name }}
-
+
+
+
+
+
+ {{ resource.name }}
+
+
+
+ {{ resource.id }}
+
+
+
-
- {{ entry.id }}
-
-
+
{{ resource.type === "Resource" ? resource.variant : resource.type }}
+
-
- {{ displayDataClass(entry.data_class) }}
+
+ {{ displayVisbility(resource.visibility) }}
-
- Children: {{ entry.stats.count }}
+ Children: {{ resource.count }}
-
- {{ entry.stats.size ? formatBytes(+entry.stats.size) : "N/A Bytes" }}
+
+ {{ resource.content_len ? formatBytes(+resource.content_len) : "N/A Bytes" }}
-
Description
-
- {{ displayDescription(entry.description) }}
+
+ {{ displayDescription(resource.description) }}
-
+
-
+
@@ -93,6 +111,7 @@ function dataClassCss(dataClass: v2DataClass): string {
{{ label.value }}
+
\ No newline at end of file
diff --git a/components/custom-ui/EditableLabel.vue b/components/custom-ui/EditableLabel.vue
new file mode 100644
index 00000000..9cd7dade
--- /dev/null
+++ b/components/custom-ui/EditableLabel.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ text }}
+
+
\ No newline at end of file
diff --git a/components/custom-ui/ResourceCreation.vue b/components/custom-ui/ResourceCreation.vue
new file mode 100644
index 00000000..fd727c64
--- /dev/null
+++ b/components/custom-ui/ResourceCreation.vue
@@ -0,0 +1,804 @@
+
+
+
+
+
+
+ Resource creation
+
+
+
+
+
+
+
+
+
Authors
+
addAuthor(author)"/>
+
+
+
+
+ Name
+ E-Mail
+ External Identifier
+ Actions
+
+
+
+
+
+ {{ author.first_name }} {{ author.last_name }}
+
+ {{ author.email }}
+ {{ author.identifier }}
+
+
+
+
+
+
+
+
+
+
+
+
+ Key-Values
+
+ addKeyValue(keyValue)"/>
+
+ addKeyValue(keyValue)"/>
+
+
+
+
+ Locked
+ Key
+ Value
+ Actions
+
+
+
+
+
+
+
+
+ {{ key }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create Resource
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/SearchDialog.vue b/components/custom-ui/SearchDialog.vue
new file mode 100644
index 00000000..769b92f8
--- /dev/null
+++ b/components/custom-ui/SearchDialog.vue
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+ Search
+
+
+
+
+ queryInput = event.target.value"/>
+
+
+ Fetching results
+
+
+
+ No results found.
+
+
+
+ {{ resource.name }}
+
+
+
+
+ {{ resource.name }}
+
+
+
+
+ {{ resource.name }}
+
+
+
+
+ {{ resource.type + ": " + resource.name }}
+
+
+
+
+ Show all results
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/Dashboard.vue b/components/custom-ui/dashboard/Dashboard.vue
new file mode 100644
index 00000000..d38499a8
--- /dev/null
+++ b/components/custom-ui/dashboard/Dashboard.vue
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Toggle events
+
+
+ {{ unreadEvents }}
+
+
+
+
+
+
+
+
+
+ Overview
+
+
+
+
+ Realms
+
+
+
+
+
+
+ Resources
+
+
+
+
+
+
+ Profile
+
+
+
+
+ Tokens
+
+
+
+
+ Data Proxies
+
+
+
+
+ Licenses
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/DummyAnalytics.vue b/components/custom-ui/dashboard/DummyAnalytics.vue
new file mode 100644
index 00000000..c65a33fa
--- /dev/null
+++ b/components/custom-ui/dashboard/DummyAnalytics.vue
@@ -0,0 +1,5 @@
+
+
+ This is some dummy content for a potential analytics subcomponent.
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/EventDisplay.vue b/components/custom-ui/dashboard/EventDisplay.vue
new file mode 100644
index 00000000..efdfb569
--- /dev/null
+++ b/components/custom-ui/dashboard/EventDisplay.vue
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+
+
+
+
+ Archive
+
+
+ Archive
+
+
+
+
+
+ Move to junk
+
+
+ Move to junk
+
+
+
+
+
+ Move to trash
+
+
+ Move to trash
+
+
+
+
+
+
+
+
+ Reply
+
+
+ Reply
+
+
+
+
+
+ Reply all
+
+
+ Reply all
+
+
+
+
+
+ Forward
+
+
+ Forward
+
+
+
+
+
+
+
+ More
+
+
+
+ Mark as unread
+ Star thread
+ Add label
+ Mute thread
+
+
+
+
+
+
+
+
+
+ {{ eventAbbreviation }}
+
+
+
+
+ {{ eventData.event_id }}
+
+
+
+ {{ eventData.type }}
+
+
+
+
+ Reply-To:
+ {{ 'some-mail.email.com' }}
+
+
+
+
+
+
+
+
+
+
+
{{ JSON.stringify(eventData, null, 2).trim() }}
+
+
+
+
+
+ No message selected
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/EventList.vue b/components/custom-ui/dashboard/EventList.vue
new file mode 100644
index 00000000..8f69a68f
--- /dev/null
+++ b/components/custom-ui/dashboard/EventList.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.type }}
+
+
+
+
+
+
+
+
+ {{ formatDistanceToNow(new Date(decodeTime(item.event_id))) + ' ago' }}
+
+
+ {{ formatDate(new Date(decodeTime(item.event_id)).toString()) }}
+
+
+
+
+
+
+
+ {{ item.event_id }}
+
+
+
+ Here can be a short summary for: {{ item.type }}
+
+
+
+
+ Unregistered
+ User
+ Impersonated
+ OIDC
+ Aruna
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/Events.vue b/components/custom-ui/dashboard/Events.vue
new file mode 100644
index 00000000..8eaa7921
--- /dev/null
+++ b/components/custom-ui/dashboard/Events.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+ Personal Events
+
+
+
+ All mail
+
+
+ Unread
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/FileExplorer.vue b/components/custom-ui/dashboard/FileExplorer.vue
new file mode 100644
index 00000000..2620cbfe
--- /dev/null
+++ b/components/custom-ui/dashboard/FileExplorer.vue
@@ -0,0 +1,968 @@
+
+
+
+
+
+
+
+
+
+ Your Projects
+
+
+
+
+ {{ !resource.deleted ? resource.name : 'DELETED' }}
+
+
+ {{ !resource.deleted ? resource.name : 'DELETED' }}
+
+
+
+
+
+
+
+
+
+ pageSize = parseInt(v)" :default-value="3">
+
+ Page size: {{ pageSize }}
+
+
+
+ Page Size
+ {{ size }}
+
+
+
+
+
+
+ Create
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ resource.title ? resource.title : resource.name }}
+
+
DELETED
+
+ {{ `Size: ${formatBytes(resource.content_len)}` }}
+
+
+ {{ `Children: ${resource.children.length}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Drop your file here
+
+
+
+
+
+
+
+
+
+
+
+ You do not have created any resources yet.
+
+
+ Start your exciting Aruna journey with the creation of your first resource.
+
+
+
+ Create Resource
+
+
+
+
+
+
+
+
+
+
diff --git a/components/custom-ui/dashboard/OverviewStats.vue b/components/custom-ui/dashboard/OverviewStats.vue
new file mode 100644
index 00000000..7d41cf2e
--- /dev/null
+++ b/components/custom-ui/dashboard/OverviewStats.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+ Total number of realms
+
+
+
+
+
+ {{ realms || '-' }}
+
+
+ Nothing changed since last month
+
+
+
+
+
+
+
+ Total storage left in realms
+
+
+
+
+
+ {{ storage ? formatBytes(+storage) : 'N/A' }}
+
+
+ -12.4% from last month
+
+
+
+
+
+
+
+ Total projects in realms
+
+
+
+
+
+ {{ projects || '-' }}
+
+
+ +2 more than last month
+
+
+
+
+
+
+
+ Total resources in realms
+
+
+
+
+
+ {{ resources || '-' }}
+
+
+ +256 more than last month
+
+
+
+
+
+
+ Total users in realms
+
+
+
+
+
+ {{ users || '-' }}
+
+
+ +4 from last month
+
+
+
+
+
+
+
+
+
+
+ Wanna create or join a group? Take a look at your
+
+ profile
+ .
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/RealmSwitcher.vue b/components/custom-ui/dashboard/RealmSwitcher.vue
new file mode 100644
index 00000000..b7c660dd
--- /dev/null
+++ b/components/custom-ui/dashboard/RealmSwitcher.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+ SC
+
+ {{ selectedRealm.name }}
+
+
+
+
+
+
+
+ No realm found.
+
+ {
+ selectedRealm = realm
+ selected = realm
+ open = false
+ emitRealmSwitch()
+ }">
+
+
+ SC
+
+ {{ realm.name }}
+
+
+
+
+
+
+
+
+ {
+ open = false
+ showNewRealmDialog = true
+ }">
+
+ Create Realm
+
+
+
+
+
+
+
+
+
+ Create Realm
+
+ Add a new realm to manage your data products and data endpoints.
+
+
+
+
+
+
+
+ Name
+
+
+
+
+
+
+
+
+
+ Tag
+
+
+
+
+
+
+
+
+
+ Description
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Continue
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/Realms.vue b/components/custom-ui/dashboard/Realms.vue
new file mode 100644
index 00000000..f849ace6
--- /dev/null
+++ b/components/custom-ui/dashboard/Realms.vue
@@ -0,0 +1,578 @@
+
+
+
+
+
+
+
+
+
+
+ A list of your active realms
+
+
+ Realm
+ Description
+ Id
+ Tag
+ Deleted
+ Actions
+
+
+
+
+ {{ realm.name }}
+
+
+
+
+ {{ splitDescriptionAfter(realm.description, 20)[0] }}
+
+ ...
+ {{ splitDescriptionAfter(realm.description, 20)[1] }}
+
+
+
+
+
+
+
+
+ {{ realm.description }}
+
+
+ {{ realm.id }}
+ {{ realm.tag }}
+ {{ realm.deleted }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Realm Components of {{ selectedRealm.name }}
+
+
+
+ Display as Cards
+
+
+
+
+
+
+
+ {{ component.name }}
+
+
+
+
+
+
+
+
+ Aruna Server
+ Aruna DataProxy
+ Compute Cluster
+
+
+
+
+
+ {{ component.id }}
+ {{ component.description }}
+
+
+
+
+
+ {{ Object.keys(endpoint)[0] }}:
+ {{ endpoint[Object.keys(endpoint)[0]] }}
+
+
+
+
+ This component is publicly available: {{ component.public }}
+
+
+
+
+ Get Credentials
+ Create Credentials
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/custom-ui/dashboard/licenses/LicenseDisplay.vue b/components/custom-ui/dashboard/licenses/LicenseDisplay.vue
new file mode 100644
index 00000000..209e6b44
--- /dev/null
+++ b/components/custom-ui/dashboard/licenses/LicenseDisplay.vue
@@ -0,0 +1,23 @@
+
+
+
+
+ {{ selectedLicense.name }}
+
+
+
+ {{ selectedLicense.description }}
+
+
+
+ {{ selectedLicense.terms }}
+
+
+
diff --git a/components/custom-ui/dashboard/licenses/LicenseEditor.vue b/components/custom-ui/dashboard/licenses/LicenseEditor.vue
new file mode 100644
index 00000000..fc2a4479
--- /dev/null
+++ b/components/custom-ui/dashboard/licenses/LicenseEditor.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+ Name
+
+
+
+
+
+
+
+
+
+
+
+
+
Description
+
+
+
+
+
+ A concise description that, at best, explains the core of the licence in one sentence.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
License Terms
+
+
+
+
+
+ Here you can enter the full text of your license.
+ Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create License
+
+
+ Cancel
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/licenses/Licenses.vue b/components/custom-ui/dashboard/licenses/Licenses.vue
new file mode 100644
index 00000000..00cf25d3
--- /dev/null
+++ b/components/custom-ui/dashboard/licenses/Licenses.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ Available Licenses
+
+
+
+
+
+
+
+ Create a new license
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dashboard/licenses/LicensesList.vue b/components/custom-ui/dashboard/licenses/LicensesList.vue
new file mode 100644
index 00000000..a33fc697
--- /dev/null
+++ b/components/custom-ui/dashboard/licenses/LicensesList.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+ {{ license.name }}
+
+
+
+
+
+ {{ license.id }}
+
+
+
+ {{ license.description }}
+
+
+
+
+ CC
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dialog/AuthorDialog.vue b/components/custom-ui/dialog/AuthorDialog.vue
new file mode 100644
index 00000000..68743ac9
--- /dev/null
+++ b/components/custom-ui/dialog/AuthorDialog.vue
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+ {{ buttonLabel || 'Add Author' }}
+
+
+ event.preventDefault()">
+
+ Add Author
+
+ Add an additional author to the resource.
+
+
+
+
+
+
+
+
+
+
+
+
Email
+
+
+
+
+
+ A valid email address that can be used to contact the author.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Identifier
+
+
+
+
+
+ If available, you can enter an external identifier of the author here.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add Author
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dialog/ComponentDialog.vue b/components/custom-ui/dialog/ComponentDialog.vue
new file mode 100644
index 00000000..adbd326a
--- /dev/null
+++ b/components/custom-ui/dialog/ComponentDialog.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ Component Details
+
+
+
+
+ {{ component.name }}
+
+ {{ component.id }}
+
+
+
+
+
+
+
+
Type
+
+ {{ component.component_type }}
+
+
+
+
Is publicly accessible
+
+ {{ component.public}}
+
+
+
+
Endpoints
+
+ {{ Object.keys(endpoint)[0] }}: {{ Object.entries(endpoint)[0][1] }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dialog/GroupDialog.vue b/components/custom-ui/dialog/GroupDialog.vue
new file mode 100644
index 00000000..c555e289
--- /dev/null
+++ b/components/custom-ui/dialog/GroupDialog.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ Create Group
+
+
+ event.preventDefault()">
+
+ Create Group
+ Add an individual key-value to your resource.
+
+
+
+
+
+ Name
+
+
+
+
+
+
+
+
+
+ Description
+
+
+
+
+
+
+
+
+
+ Create Group
+
+
+
+
+
diff --git a/components/custom-ui/dialog/KeyValueDialog.vue b/components/custom-ui/dialog/KeyValueDialog.vue
new file mode 100644
index 00000000..42271a87
--- /dev/null
+++ b/components/custom-ui/dialog/KeyValueDialog.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+ {{ buttonLabel || 'Add Key-Value' }}
+
+
+ event.preventDefault()">
+
+ Add Key-Value
+
+ Add an individual key-value to your resource.
+
+
+
+
+
+
+ Key
+
+
+
+
+
+
+
+
+
+ Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This label is locked/immutable
+
+
+
+
+
+
+
+
+ Add key-value
+
+
+
+
+
diff --git a/components/custom-ui/dialog/LoginDialog.vue b/components/custom-ui/dialog/LoginDialog.vue
index 052f5b3c..51e1b5f6 100644
--- a/components/custom-ui/dialog/LoginDialog.vue
+++ b/components/custom-ui/dialog/LoginDialog.vue
@@ -8,7 +8,6 @@ import {
DialogTrigger,
} from '@/components/ui/dialog'
-console.log(window.location.hostname)
const local = computed(() => window.location.hostname.includes('localhost'))
diff --git a/components/custom-ui/dialog/OntologyDialog.vue b/components/custom-ui/dialog/OntologyDialog.vue
new file mode 100644
index 00000000..be2d15ff
--- /dev/null
+++ b/components/custom-ui/dialog/OntologyDialog.vue
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+ Add Ontology
+
+
+ event.preventDefault()">
+
+ Add Ontology Definition
+
+
+
+
+
+
Currently selected ontology:
+
+ {{ currentSelection ? currentSelection.label : 'None' }}
+
+
+
+
+
+
+
+
+
+
Id
+
+ {{ currentSelection.id }}
+
+
+
+
IRI
+
+
+ {{ currentSelection.iri }}
+
+
+
+
+
+
Description
+
+ {{ currentSelection.description.join(' ') }}
+
+
+
+
More Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ queryInput = event.target.value"/>
+
+
+ Fetching ontologies
+
+
+ No ontologies found.
+
+
+ {{ ontology.label }}
+
+
+
+
+
+
+
+ Add Ontology
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-ui/dialog/RealmComponentDialog.vue b/components/custom-ui/dialog/RealmComponentDialog.vue
new file mode 100644
index 00000000..e164be2f
--- /dev/null
+++ b/components/custom-ui/dialog/RealmComponentDialog.vue
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+ Add Realm Component
+
+
+ event.preventDefault()">
+
+
+ Add Realm Component
+
+
+ Add a new component to your realm.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Type
+
+
+
+
+
+
+
+
+
+ {{ type }}
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+
+
+
+
+
+
+
+ Public Key
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This component is publicly available
+
+
+
+
+
+
+
+
+
+ Create Component
+
+
+
+
+
diff --git a/components/custom-ui/dialog/RegistrationDialog.vue b/components/custom-ui/dialog/RegistrationDialog.vue
index 98aab8e6..d20cae25 100644
--- a/components/custom-ui/dialog/RegistrationDialog.vue
+++ b/components/custom-ui/dialog/RegistrationDialog.vue
@@ -21,13 +21,11 @@ import {
import {Input} from '~/components/ui/input'
import {Popover, PopoverTrigger, PopoverContent} from '~/components/ui/popover'
import {useToast} from '~/components/ui/toast/use-toast'
-import type {v2RegisterUserResponse} from "~/composables/aruna_api_json";
import {useForm} from "vee-validate";
import {toTypedSchema} from '@vee-validate/zod'
import {h} from "vue";
import * as z from 'zod'
-
-const {toast} = useToast()
+import type {RegisterUserResponse} from "~/composables/api_wrapper";
/* ----- PROPERTIES ----- */
const props = defineProps<{
@@ -47,41 +45,53 @@ const emit = defineEmits(['closeRegisterDialog'])
const formSchema = toTypedSchema(z.object({
firstName: z.string({required_error: "First name is required."}).min(2).max(128),
lastName: z.string({required_error: "Last name is required."}).min(2).max(128),
- displayName: z.string({required_error: "Display name is required."}).min(2).max(256),
email: z.string({required_error: "Valid email is required."}).email('Invalid email format.').trim().min(1),
- project: z.string().optional(),
+ identifiers: z.array(z.string()).optional(),
tosAccepted: z.boolean({required_error: "Is not active man."}).default(false).refine(val => val, {message: "You have to accept the ToS"})
}))
const form = useForm({
validationSchema: formSchema,
initialValues: {
+ identifiers: [],
tosAccepted: false,
},
})
+const {toast} = useToast()
const onSubmit = form.handleSubmit(async (values) => {
- await $fetch
('/api/register', {
+ await $fetch('/api/v3/user', {
method: 'POST',
body: {
- displayName: values.displayName,
+ first_name: values.firstName,
+ last_name: values.lastName,
email: values.email,
- project: values.project
+ identifier: '',
}
}).then(response => {
- if (response.userId) {
+ if (response.user) {
toast({
description: h('div',
- {class: 'flex space-x-2 items-center justify-center text-gray-200'},
+ {class: 'flex space-x-2 items-center justify-center text-aruna-text-accent'},
[
- h(IconTrophy, {class: 'flex-shrink-0 size-5 text-yellow-200'}),
+ h(IconTrophy, {class: 'flex-shrink-0 size-6 text-aruna-highlight'}),
h('span',
{class: 'text-fuchsia-50'},
- ['Your registration was successful. Please check your mails for more information.'])
+ [
+ 'Your registration was successful.', h('br'), 'Have fun exploring the Aruna universe. Also check out the ',
+ h('a', {
+ href: 'https://docs.aruna-engine.org/latest',
+ target: '_blank',
+ class: 'font-bold text-aruna-highlight hover:text-aruna-highlight/80'
+ }, ['documentation']),
+ '.'
+ ])
]),
- duration: 10000
+ duration: 60000 // One Minute
})
+ EventBus.emit('updateUser')
emit('closeRegisterDialog')
+ useRouter().push('/user/dashboard')
}
}).catch(error => {
toast({
@@ -135,26 +145,6 @@ const onSubmit = form.handleSubmit(async (values) => {