[MOD] use qd-table
This commit is contained in:
parent
5946f6f76d
commit
5d6aa4e12b
47 changed files with 1429 additions and 1029 deletions
|
|
@ -14,11 +14,8 @@
|
||||||
<vp-notifications :show-notifications.sync="showNotifications"></vp-notifications>
|
<vp-notifications :show-notifications.sync="showNotifications"></vp-notifications>
|
||||||
</v-navigation-drawer>
|
</v-navigation-drawer>
|
||||||
|
|
||||||
<v-navigation-drawer app :mini-variant.sync="mini" v-model="drawer" :clipped="$vuetify.breakpoint.lgAndUp"
|
<v-navigation-drawer app :mini-variant.sync="mini" v-model="drawer" :clipped="$vuetify.breakpoint.lgAndUp">
|
||||||
>
|
<v-list class="pa-0">
|
||||||
|
|
||||||
<v-list class="pa-0">
|
|
||||||
|
|
||||||
<v-list-item tag="div">
|
<v-list-item tag="div">
|
||||||
<v-list-item-avatar >
|
<v-list-item-avatar >
|
||||||
<v-btn icon @click="session">
|
<v-btn icon @click="session">
|
||||||
|
|
@ -46,47 +43,23 @@
|
||||||
color="blue darken-3" dense
|
color="blue darken-3" dense
|
||||||
dark >
|
dark >
|
||||||
<v-app-bar-nav-icon @click.stop="drawer = !drawer" ></v-app-bar-nav-icon>
|
<v-app-bar-nav-icon @click.stop="drawer = !drawer" ></v-app-bar-nav-icon>
|
||||||
<v-toolbar-title class="hidden-sm-and-down" >
|
<v-toolbar-title class="hidden-sm-and-down" >
|
||||||
|
{{$route.meta.title}}</v-toolbar-title>
|
||||||
{{$route.meta.title}}</v-toolbar-title>
|
<vp-favorite :frmfav.sync="frmfav"></vp-favorite>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-toolbar-items>
|
<v-toolbar-items>
|
||||||
<qd-search></qd-search>
|
<qd-search></qd-search>
|
||||||
</v-toolbar-items>
|
</v-toolbar-items>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
|
|
||||||
<v-menu left transition="v-fade-transition">
|
|
||||||
<template v-slot:activator="{ on }">
|
|
||||||
<v-btn dark icon v-on="on">
|
|
||||||
{{$auth.user}}
|
|
||||||
</v-btn>
|
|
||||||
</template >
|
|
||||||
<v-list>
|
|
||||||
<v-list-item to="/session" ripple>
|
|
||||||
<v-list-item-title >Session</v-list-item-title>
|
|
||||||
</v-list-item>
|
|
||||||
<v-list-item @click="logout()">
|
|
||||||
<v-list-item-title >logout</v-list-item-title>
|
|
||||||
</v-list-item>
|
|
||||||
<v-list-item>
|
|
||||||
<v-list-item-title >permission: {{$auth.permission}}</v-list-item-title>
|
|
||||||
</v-list-item>
|
|
||||||
<v-list-item>
|
|
||||||
<v-list-item-title >$route.path: {{$route.path}}</v-list-item-title>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</v-menu>
|
|
||||||
|
|
||||||
<v-btn @click.stop="showNotifications = ! showNotifications" icon text title="Notifications">
|
<v-btn @click.stop="showNotifications = ! showNotifications" icon text title="Notifications">
|
||||||
<v-badge overlap color="orange">
|
<v-badge overlap color="orange">
|
||||||
<span slot="badge" v-if=" $notification.unseen" >{{ $notification.unseen }}</span>
|
<span slot="badge" v-if=" $notification.unseen" >{{ $notification.unseen }}</span>
|
||||||
<v-icon>notifications</v-icon>
|
<v-icon>notifications</v-icon>
|
||||||
</v-badge>
|
</v-badge>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
<vp-favorite :frmfav.sync="frmfav"></vp-favorite>
|
|
||||||
<v-menu bottom left min-width="300px">
|
<v-menu bottom left min-width="300px">
|
||||||
<template v-slot:activator="{ on }">
|
<template v-slot:activator="{ on }">
|
||||||
<v-btn icon v-on="on" >
|
<v-btn icon v-on="on" >
|
||||||
|
|
@ -95,7 +68,8 @@
|
||||||
</template>
|
</template>
|
||||||
<v-list>
|
<v-list>
|
||||||
<v-list-item >
|
<v-list-item >
|
||||||
<v-list-item-title><qd-fullscreen> Full screen</qd-fullscreen></v-list-item-title>
|
<v-list-item-title>Full screen</v-list-item-title>
|
||||||
|
<v-list-item-action ><qd-fullscreen></qd-fullscreen></v-list-item-action>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item >
|
<v-list-item >
|
||||||
<v-list-item-title>Dark theme</v-list-item-title>
|
<v-list-item-title>Dark theme</v-list-item-title>
|
||||||
|
|
@ -108,7 +82,29 @@
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-menu>
|
</v-menu>
|
||||||
|
|
||||||
|
<v-menu left transition="v-fade-transition">
|
||||||
|
<template v-slot:activator="{ on }">
|
||||||
|
<v-btn dark icon v-on="on">
|
||||||
|
{{$auth.user}}
|
||||||
|
</v-btn>
|
||||||
|
</template >
|
||||||
|
<v-list>
|
||||||
|
<v-list-item to="/session" ripple>
|
||||||
|
<v-list-item-title >Session</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item @click="logout()">
|
||||||
|
<v-list-item-title >logout</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-title >permission: {{$auth.permission}}</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-title >$route.path: {{$route.path}}</v-list-item-title>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
</v-menu>
|
||||||
|
|
||||||
</v-app-bar>
|
</v-app-bar>
|
||||||
|
|
||||||
<v-main>
|
<v-main>
|
||||||
|
|
@ -149,26 +145,31 @@
|
||||||
model: false,
|
model: false,
|
||||||
children: [
|
children: [
|
||||||
{href: '/eval',text: 'Query',icon: 'play_circle_outline'},
|
{href: '/eval',text: 'Query',icon: 'play_circle_outline'},
|
||||||
{href: '/tasks',text: 'Tasks',icon: 'update'},
|
|
||||||
{href: '/edit',text: 'Edit',icon: 'mode_edit'},
|
{href: '/edit',text: 'Edit',icon: 'mode_edit'},
|
||||||
{href: '/tabs',text: 'Tabs',icon: 'switch_camera'},
|
{href: '/tabs',text: 'Tabs',icon: 'switch_camera'},
|
||||||
{href: '/validate',text: 'Validate',icon: 'playlist_add_check'},
|
{href: '/validate',text: 'Validate',icon: 'playlist_add_check'},
|
||||||
{href: '/transform',text: 'XSLT Transform',icon: 'forward'},
|
{href: '/transform',text: 'XSLT Transform',icon: 'forward'}
|
||||||
|
|
||||||
{href: '/history/tasks',text: 'history',icon: 'history'}
|
|
||||||
]},
|
]},
|
||||||
|
|
||||||
{
|
{
|
||||||
icon: 'folder_open',
|
icon: 'add_task',
|
||||||
text: 'Collections' ,
|
text: 'Tasks' ,
|
||||||
model: false,
|
model: false,
|
||||||
children: [
|
children: [
|
||||||
{href: '/database', text: 'Databases',icon: 'developer_mode' },
|
{href: '/tasks',text: 'Task list',icon: 'assignment'},
|
||||||
{href: '/files', text: 'File system',icon: 'folder' },
|
{href: '/history/tasks',text: 'History',icon: 'history'}
|
||||||
{href: '/documentation', text: 'Documentation',icon: 'library_books' },
|
|
||||||
|
|
||||||
{href: '/logdate',text: 'XML logs',icon: 'dns'},
|
|
||||||
{href: '/history/files',text: 'history',icon: 'history'}
|
|
||||||
]},
|
]},
|
||||||
|
{
|
||||||
|
icon: 'folder_open',
|
||||||
|
text: 'Collections' ,
|
||||||
|
model: false,
|
||||||
|
children: [
|
||||||
|
{href: '/database', text: 'Databases',icon: 'developer_mode' },
|
||||||
|
{href: '/files', text: 'File system',icon: 'folder' },
|
||||||
|
{href: '/documentation', text: 'Documentation',icon: 'library_books' },
|
||||||
|
{href: '/history/files',text: 'history',icon: 'history'}
|
||||||
|
]},
|
||||||
{
|
{
|
||||||
icon: 'memory',
|
icon: 'memory',
|
||||||
text: 'Models' ,
|
text: 'Models' ,
|
||||||
|
|
@ -190,14 +191,23 @@
|
||||||
{href: '/server/services',text: 'Services',icon: 'dashboard'},
|
{href: '/server/services',text: 'Services',icon: 'dashboard'},
|
||||||
{href: '/server/logs',text: 'Server logs',icon: 'dns'},
|
{href: '/server/logs',text: 'Server logs',icon: 'dns'},
|
||||||
{href: '/server/users',text: 'Users',icon: 'supervisor_account'},
|
{href: '/server/users',text: 'Users',icon: 'supervisor_account'},
|
||||||
{href: '/server/repo',text: 'Server code repository',icon: 'local_library'},
|
{href: '/server/repo',text: 'Package repository',icon: 'local_library'},
|
||||||
|
|
||||||
{href: '/server/upload',text: 'Upload to server',icon: 'file_upload'},
|
{href: '/server/upload',text: 'Upload to server',icon: 'file_upload'},
|
||||||
{href: '/server/ping',text: 'Ping',icon: 'update'},
|
|
||||||
{href: '/server/dicetest',text: 'Dice performance',icon: 'update'},
|
|
||||||
{href: '/server/settings',text: 'Server settings',icon: 'settings_applications'}
|
{href: '/server/settings',text: 'Server settings',icon: 'settings_applications'}
|
||||||
]},
|
]},
|
||||||
|
|
||||||
|
{
|
||||||
|
icon: 'hourglass_empty',
|
||||||
|
text: 'Performance' ,
|
||||||
|
model: false,
|
||||||
|
children: [
|
||||||
|
{href: '/logdate',text: 'XML logs',icon: 'dns'},
|
||||||
|
{href: '/performance/ping',text: 'Ping',icon: 'update'},
|
||||||
|
{href: '/performance/dicetest',text: 'Dice performance',icon: 'update'}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
icon: 'camera_roll',
|
icon: 'camera_roll',
|
||||||
text: 'Images' ,
|
text: 'Images' ,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// Mimetype info as vue extension. defines $MimeTypes
|
// Mimetype info as vue extension. defines $MimeTypes
|
||||||
//
|
// $MimeTypes.mode
|
||||||
//
|
//
|
||||||
const MimeTypes=new function(){
|
const MimeTypes=new function(){
|
||||||
var formatdom= t=>html_beautify(t, { indent_size: 3 ,indent_inner_html:true});
|
var formatdom= t=>html_beautify(t, { indent_size: 3 ,indent_inner_html:true});
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,47 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<!-- card showing table -->
|
<!-- card showing entity data table
|
||||||
|
talks to dataUri, example data-uri="data/basex.repo"
|
||||||
|
all slots passed down from parent
|
||||||
|
slots:actions for selection
|
||||||
|
@see https://stackoverflow.com/questions/50891858/vue-how-to-pass-down-slots-inside-wrapper-component
|
||||||
|
-->
|
||||||
<template id="qd-table">
|
<template id="qd-table">
|
||||||
<v-container fluid>
|
|
||||||
<v-card >
|
<v-card >
|
||||||
<v-toolbar >
|
<v-toolbar color="blue lighten-4">
|
||||||
|
<vp-entitylink v-if="entity" :entity="entity"></vp-entitylink>
|
||||||
|
<v-toolbar-title>{{ title }}</v-toolbar-title>
|
||||||
|
|
||||||
|
<v-spacer></v-spacer>
|
||||||
<v-text-field
|
<v-text-field
|
||||||
prepend-icon="filter_list"
|
prepend-icon="filter_list"
|
||||||
label="Filter items..."
|
label="Filter..."
|
||||||
single-line
|
single-line hide-details
|
||||||
hide-details
|
v-model="query.filter"
|
||||||
v-model="search"
|
|
||||||
clearable
|
clearable
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-btn
|
<v-menu v-if="selected.length" offset-y left>
|
||||||
|
<template v-slot:activator="{ on }">
|
||||||
|
<v-btn icon v-on="on">
|
||||||
|
<v-badge color="orange">
|
||||||
|
<span slot="badge">{{ selected.length }}</span>
|
||||||
|
<v-icon>share</v-icon>
|
||||||
|
</v-badge>
|
||||||
|
</v-btn>
|
||||||
|
</template>
|
||||||
|
<v-card >
|
||||||
|
<v-toolbar color="cyan lighten-2">
|
||||||
|
<v-card-title >Actions</v-card-title>
|
||||||
|
</v-toolbar>
|
||||||
|
|
||||||
|
<v-card-text>
|
||||||
|
<slot name="actions"></slot>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-menu>
|
||||||
|
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn
|
||||||
icon
|
icon
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
:disabled="loading"
|
:disabled="loading"
|
||||||
|
|
@ -21,58 +49,74 @@
|
||||||
>
|
>
|
||||||
<v-icon>refresh</v-icon>
|
<v-icon>refresh</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
<span>{{ entity }}</span>
|
<v-menu offset-y left>
|
||||||
|
<template v-slot:activator="{ on }">
|
||||||
|
<v-btn icon v-on="on"><v-icon>settings</v-icon></v-btn>
|
||||||
|
</template>
|
||||||
|
<v-card >
|
||||||
|
<v-toolbar color="cyan lighten-1">
|
||||||
|
<v-card-title >Table settings</v-card-title>
|
||||||
|
</v-toolbar>
|
||||||
|
|
||||||
|
<v-card-text>
|
||||||
|
<v-list>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-title>Show selection</v-list-item-title>
|
||||||
|
<v-list-item-action ><v-switch v-model="showSelectL"></v-switch> </v-list-item-action>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-title>Multi-sort</v-list-item-title>
|
||||||
|
<v-list-item-action ><v-switch v-model="multiSortL"></v-switch> </v-list-item-action>
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-title>Auto-refresh</v-list-item-title>
|
||||||
|
<v-list-item-action ><v-switch v-model="autoRefreshL"></v-switch> </v-list-item-action>
|
||||||
|
</v-list-item>
|
||||||
|
</v-list>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-menu>
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
|
<v-card-text>
|
||||||
<v-data-table
|
<v-data-table
|
||||||
:headers="headers"
|
:headers="headers" :items="items"
|
||||||
:items="items"
|
v-model="selected" :item-key="itemKey"
|
||||||
:search="search"
|
:search="query.filter"
|
||||||
v-model="selected"
|
:items-per-page="10"
|
||||||
show-select
|
:show-select="showSelectL"
|
||||||
|
:multi-sort="multiSortL"
|
||||||
|
:loading="loading"
|
||||||
class="elevation-1"
|
class="elevation-1"
|
||||||
|
:fixed-header="true"
|
||||||
:no-data-text="noDataMsg"
|
:no-data-text="noDataMsg"
|
||||||
>
|
>
|
||||||
<template slot="items" slot-scope="props">
|
<template v-for="(_, slot) of $scopedSlots" v-slot:[slot]="scope"><slot :name="slot" v-bind="scope"/></template>
|
||||||
<td >
|
|
||||||
<v-checkbox
|
|
||||||
primary
|
|
||||||
hide-details
|
|
||||||
v-model="props.selected"
|
|
||||||
></v-checkbox>
|
|
||||||
</td>
|
|
||||||
<td v-for="col in headers" :key="col.name">{{ foo(props,col) }}</td>
|
|
||||||
</template>
|
|
||||||
</v-data-table>
|
</v-data-table>
|
||||||
|
</v-card-text>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-container>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>{
|
<script>{
|
||||||
props: {
|
props: {
|
||||||
headers: {
|
headers: {default: [ { text: 'Name', value: 'id'} ]},
|
||||||
default: [
|
dataUri:{ default: "data/dice.entity"},
|
||||||
{ text: 'Name', value: 'id'},
|
itemKey:{ default: "id"},
|
||||||
{ text: 'Permission', value: 'state' }
|
noDataMsg:{ default: "No data found."},
|
||||||
]
|
title:{ default: "" },
|
||||||
},
|
entity:{ },
|
||||||
dataUri:{
|
query: {default: function(){return {filter:null}}},
|
||||||
default: "entity"
|
showSelect: { default: false },
|
||||||
},
|
multiSort: { default: false }
|
||||||
noDataMsg:{
|
|
||||||
default: "No data found."
|
|
||||||
},
|
|
||||||
entity:{
|
|
||||||
default: "entity"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
data: function(){
|
data: function(){
|
||||||
return {
|
return {
|
||||||
|
selected: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
items: [],
|
items: [],
|
||||||
search: null,
|
showSelectL: this.showSelect,
|
||||||
selected: [],
|
multiSortL: this.multiSort,
|
||||||
|
autoRefreshL: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
|
@ -81,18 +125,13 @@
|
||||||
HTTP.get(this.dataUri)
|
HTTP.get(this.dataUri)
|
||||||
.then(r=>{
|
.then(r=>{
|
||||||
this.loading=false;
|
this.loading=false;
|
||||||
console.log("items",r.data.items,"headers ",this.headers);
|
console.log("Jobs items",r.data.items,"headers ",this.headers);
|
||||||
this.items=r.data.items;
|
this.items=r.data.items;
|
||||||
|
if(this.autoRefreshL) this.timer=setTimeout(()=>{ this.getItems() }, 10000);
|
||||||
})
|
})
|
||||||
},
|
|
||||||
foo(props,header){
|
|
||||||
//console.log("value ",header)
|
|
||||||
if(header){
|
|
||||||
return props.item[header.value]
|
|
||||||
}
|
|
||||||
return props.selected
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
created:function(){
|
created:function(){
|
||||||
console.log("qd-table");
|
console.log("qd-table");
|
||||||
this.getItems();
|
this.getItems();
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
show a entity link
|
show a entity link
|
||||||
-->
|
-->
|
||||||
<template id="vp-entitylink">
|
<template id="vp-entitylink">
|
||||||
<router-link :to="'/entity/'+entity">E</router-link>
|
<router-link :to="'/model/entity/'+entity" :title="entity">@</router-link>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>{
|
<script>{
|
||||||
|
|
|
||||||
|
|
@ -11,20 +11,20 @@ display button that invokes a save favorite form
|
||||||
>
|
>
|
||||||
<template v-slot:activator="{ on }">
|
<template v-slot:activator="{ on }">
|
||||||
<v-btn v-on="on" text @click.stop="set(!frmfav)" icon title="Bookmark this page">
|
<v-btn v-on="on" text @click.stop="set(!frmfav)" icon title="Bookmark this page">
|
||||||
<v-icon>star_border</v-icon>
|
<v-icon>{{ icon }}</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</template>
|
</template>
|
||||||
<v-card style="width:400px;">
|
<v-card style="width:400px;">
|
||||||
<v-toolbar class="green">
|
<v-toolbar class="green">
|
||||||
<v-card-title>
|
<v-card-title>
|
||||||
Add to favorites
|
Add to bookmarks
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-btn @click="set(false)" icon><v-icon>close</v-icon></v-btn>
|
<v-btn @click="set(false)" icon><v-icon>close</v-icon></v-btn>
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
|
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<h6>{{$route.meta.title}}
|
<h6 :title="this.$route.fullPath">{{$route.meta.title}}
|
||||||
<v-btn v-if="canCopy" @click="setclip" icon title="Copy location"><v-icon>content_copy</v-icon></v-btn>
|
<v-btn v-if="canCopy" @click="setclip" icon title="Copy location"><v-icon>content_copy</v-icon></v-btn>
|
||||||
</h6>
|
</h6>
|
||||||
<v-combobox multiple
|
<v-combobox multiple
|
||||||
|
|
@ -36,11 +36,10 @@ display button that invokes a save favorite form
|
||||||
></v-combobox>
|
></v-combobox>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
|
||||||
<v-card-actions>
|
<v-card-actions class="text-center">
|
||||||
<v-btn color="primary" text @click.stop="favorite(); set(false)">Done</v-btn>
|
<v-btn color="primary" text @click.stop="favorite(); set(false)" >Done</v-btn>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-btn text @click.stop="set(false)">Cancel</v-btn>
|
<v-btn text @click.stop="set(false)" >Cancel</v-btn>
|
||||||
|
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-menu></template>
|
</v-menu></template>
|
||||||
|
|
@ -53,6 +52,7 @@ display button that invokes a save favorite form
|
||||||
canCopy:false,
|
canCopy:false,
|
||||||
tags: [],
|
tags: [],
|
||||||
taglist: [ 'todo', 'find', 'some', 'good', 'tags' ],
|
taglist: [ 'todo', 'find', 'some', 'good', 'tags' ],
|
||||||
|
exists: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
|
@ -61,14 +61,17 @@ display button that invokes a save favorite form
|
||||||
},
|
},
|
||||||
async setclip(){
|
async setclip(){
|
||||||
await navigator.clipboard.writeText(this.$route.fullPath);
|
await navigator.clipboard.writeText(this.$route.fullPath);
|
||||||
alert('Copied!' + this.$route.fullPath);
|
|
||||||
},
|
},
|
||||||
favorite(){
|
favorite(){
|
||||||
this.$store.commit('increment')
|
this.$store.commit('increment')
|
||||||
console.log(this.$store.state.count)
|
console.log(this.$store.state.count)
|
||||||
|
this.exists= !this.exists
|
||||||
alert("save");
|
alert("save");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed:{
|
||||||
|
icon: function(){return this.exists?"star":"star_border" }
|
||||||
|
},
|
||||||
created() {
|
created() {
|
||||||
this.canCopy = !!navigator.clipboard;
|
this.canCopy = !!navigator.clipboard;
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,10 @@
|
||||||
<description>writes</description>
|
<description>writes</description>
|
||||||
<xpath>@writes</xpath>
|
<xpath>@writes</xpath>
|
||||||
</field>
|
</field>
|
||||||
|
<field name="isService" type="xs:boolean">
|
||||||
|
<description>This job is a service</description>
|
||||||
|
<xpath>@id = jobs:services()/@id</xpath>
|
||||||
|
</field>
|
||||||
</fields>
|
</fields>
|
||||||
<views iconclass="code">
|
<views iconclass="code">
|
||||||
<view name="filter">name description</view>
|
<view name="filter">name description</view>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<entity name="favorites" xmlns="https://github.com/Quodatum/app-doc/entity">
|
<entity name="bookmark" xmlns="https://github.com/Quodatum/app-doc/entity">
|
||||||
<description>vue-poc favourites </description>
|
<description>vue-poc bookmark </description>
|
||||||
|
<namespace prefix="bmk" uri="urn:quodatum:vue-poc.favourite" />
|
||||||
<fields>
|
<fields>
|
||||||
<field name="created" type="xs:string">
|
<field name="created" type="xs:string">
|
||||||
<description>time of event</description>
|
<description>time of event</description>
|
||||||
|
|
@ -21,5 +22,5 @@
|
||||||
</field>
|
</field>
|
||||||
</fields>
|
</fields>
|
||||||
<views iconclass="star_border"/>
|
<views iconclass="star_border"/>
|
||||||
<data type="element(favorite)">doc("vue-poc/favorites.xml")/favorites/favorite</data>
|
<data type="element(bmk:favorite)">doc("vue-poc/bookmarks.xml")/bmk:favorites/bmk:favorite</data>
|
||||||
</entity>
|
</entity>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<fields>
|
<fields>
|
||||||
<field name="xmlns" type="xs:string">
|
<field name="xmlns" type="xs:string">
|
||||||
<description>namespace</description>
|
<description>namespace</description>
|
||||||
<xpath>@uri</xpath>
|
<xpath>@xml:id</xpath>
|
||||||
</field>
|
</field>
|
||||||
<field name="prefix" type="xs:string">
|
<field name="prefix" type="xs:string">
|
||||||
<description>commonly used namespace prefixes </description>
|
<description>commonly used namespace prefixes </description>
|
||||||
|
|
|
||||||
|
|
@ -1,129 +1,159 @@
|
||||||
<!-- common namespaces -->
|
<!-- common namespaces -->
|
||||||
<namespaces xmlns="https://github.com/Quodatum/namespaces">
|
<namespaces xmlns="https://github.com/Quodatum/namespaces">
|
||||||
<namespace uri="http://www.w3.org/XML/1998/namespace" prefix="xml">
|
<namespace xml:id="http://www.w3.org/XML/1998/namespace" prefix="xml">
|
||||||
<description>XML core features</description>
|
<role type="spec"/>
|
||||||
|
<description>XML core features
|
||||||
|
<dl>
|
||||||
|
<dt>xml:lang</dt>
|
||||||
|
<dd>Designed for identifying the human language used in the scope of the element to which it's attached.</dd>
|
||||||
|
<dt>xml:space</dt>
|
||||||
|
<dd>Designed to express whether or not the document's creator wishes white space to be considered as significant in the scope of the element to which it's attached.</dd>
|
||||||
|
|
||||||
|
<dt>xml:base</dt>
|
||||||
|
<dd>
|
||||||
|
The XML Base specification (Second edition) describes a facility, similar to that of HTML BASE,
|
||||||
|
for defining base URIs for parts of XML documents.
|
||||||
|
It defines a single attribute, xml:base, and describes in detail the procedure for its use in
|
||||||
|
processing relative URI refeferences.</dd>
|
||||||
|
<dt>xml:id</dt>
|
||||||
|
<dd>
|
||||||
|
The xml:id specification defines a single attribute, xml:id, known to be of type ID independently of any DTD or schema.</dd>
|
||||||
|
</dl>
|
||||||
|
</description>
|
||||||
|
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/1999/xlink" prefix="xlink">
|
<namespace xml:id="http://www.w3.org/1999/xlink" prefix="xlink">
|
||||||
<description>XML Linking Language (XLink) namespace</description>
|
<description>XML Linking Language (XLink) namespace</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2001/XInclude" prefix="xi">
|
<namespace xml:id="http://www.w3.org/2001/XInclude" prefix="xi">
|
||||||
<description>XML Inclusions (XInclude) </description>
|
<description>XML Inclusions (XInclude) </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/1999/XSL/Format" prefix="fo">
|
<namespace xml:id="http://www.w3.org/1999/XSL/Format" prefix="fo">
|
||||||
<description>XSL Formatting Objects namespace </description>
|
<description>XSL Formatting Objects namespace </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/1999/XSL/Transform" prefix="xsl">
|
<namespace xml:id="http://www.w3.org/1999/XSL/Transform" prefix="xsl">
|
||||||
<description>XSL Transformations namespace from the XSLT 1.0
|
<description>XSL Transformations namespace from the XSLT 1.0
|
||||||
Recommendation
|
Recommendation
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2005/xpath-functions/math"
|
<namespace xml:id="http://www.w3.org/2005/xpath-functions/math"
|
||||||
prefix="math">
|
prefix="math">
|
||||||
<description>Xpath math </description>
|
<description>Xpath math </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2005/xpath-functions/map"
|
<namespace xml:id="http://www.w3.org/2005/xpath-functions/map"
|
||||||
prefix="map">
|
prefix="map">
|
||||||
<description>Xpath map </description>
|
<description>Xpath map </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2005/xpath-functions/array"
|
<namespace xml:id="http://www.w3.org/2005/xpath-functions/array"
|
||||||
prefix="array">
|
prefix="array">
|
||||||
<description>Xpath array </description>
|
<description>Xpath array </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2005/xqt-errors" prefix="err">
|
<namespace xml:id="http://www.w3.org/2005/xqt-errors" prefix="err">
|
||||||
<description>Xpath errors </description>
|
<description>Xpath errors </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2010/xslt-xquery-serialization"
|
<namespace xml:id="http://www.w3.org/2010/xslt-xquery-serialization"
|
||||||
prefix="output">
|
prefix="output">
|
||||||
<description>serialization parameters </description>
|
<description>serialization parameters </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2001/XMLSchema" prefix="xsd">
|
<namespace xml:id="http://www.w3.org/2001/XMLSchema" prefix="xsd">
|
||||||
<description>XML Schema Part 1: Structures namespace. </description>
|
<description>XML Schema Part 1: Structures namespace. </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2001/XMLSchema-datatypes"
|
<namespace xml:id="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||||
prefix="xs">
|
prefix="xs">
|
||||||
<description>XML Schema Part 2: Datatypes namespace. </description>
|
<description>XML Schema Part 2: Datatypes namespace. </description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2001/XMLSchema-instance"
|
<namespace xml:id="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
prefix="xsi">
|
prefix="xsi">
|
||||||
<description>Namespace for XML Schema attributes used in XML instances
|
<description>Namespace for XML Schema attributes used in XML instances
|
||||||
(documents), such as xsi:type, xsi:schemaLocation, and xsi:nil.
|
(documents), such as xsi:type, xsi:schemaLocation, and xsi:nil.
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2005/xpath-functions"
|
<namespace xml:id="http://www.w3.org/2005/xpath-functions"
|
||||||
prefix="fn">
|
prefix="fn">
|
||||||
<description>XPath functions
|
<description>XPath functions
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2005/xquery-local-functions"
|
<namespace xml:id="http://www.w3.org/2005/xquery-local-functions"
|
||||||
prefix="local">
|
prefix="local">
|
||||||
<description>Xquery functions
|
<description>Xquery functions
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/2000/svg" prefix="svg">
|
<namespace xml:id="http://www.w3.org/2000/svg" prefix="svg">
|
||||||
<description>Scalable Vector Graphics namespace
|
<description>Scalable Vector Graphics namespace
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://docbook.org/ns/docbook" prefix="d">
|
<namespace xml:id="http://docbook.org/ns/docbook" prefix="d">
|
||||||
<description>Docbook
|
<description>Docbook
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/1998/Math/MathML" prefix="mml">
|
<namespace xml:id="http://www.tei-c.org/ns/1.0" prefix="t">
|
||||||
|
<description>TEI
|
||||||
|
</description>
|
||||||
|
</namespace>
|
||||||
|
<namespace xml:id="http://www.w3.org/1998/Math/MathML" prefix="mml">
|
||||||
<description>Math ML
|
<description>Math ML
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.vraweb.org/vracore4.htm" prefix="vra">
|
<namespace xml:id="http://www.vraweb.org/vracore4.htm" prefix="vra">
|
||||||
<description>Visual Resources Association
|
<description>Visual Resources Association
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://purl.oclc.org/dsdl/schematron" prefix="sch">
|
<namespace xml:id="http://purl.oclc.org/dsdl/schematron" prefix="sch">
|
||||||
<description>Schematron
|
<description>Schematron
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.opengis.net/kml/2.2" prefix="kml">
|
<namespace xml:id="http://www.opengis.net/kml/2.2" prefix="kml">
|
||||||
<description>Geo
|
<description>Geo
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.opengis.net/gml" prefix="gml">
|
<namespace xml:id="http://www.opengis.net/gml" prefix="gml">
|
||||||
<description>GML
|
<description>GML
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://www.w3.org/ns/xproc" prefix="xproc">
|
<namespace xml:id="http://www.w3.org/ns/xproc" prefix="xproc">
|
||||||
<description>XProc
|
<description>XProc
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
<namespace uri="http://www.w3.org/ns/xproc-step" prefix="c">
|
<namespace xml:id="http://www.w3.org/ns/xproc-step" prefix="c">
|
||||||
<description>XProc step
|
<description>XProc step
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
<namespace uri="http://expath.org/ns/pkg" prefix="pkg">
|
<namespace xml:id="http://expath.org/ns/pkg" prefix="pkg">
|
||||||
<description>EXpath packaging
|
<description>EXpath packaging
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
<namespace uri="http://basex.org/modules/perm" prefix="perm">
|
|
||||||
|
<namespace xml:id="http://basex.org/modules/perm" prefix="perm">
|
||||||
<description>Web permissions
|
<description>Web permissions
|
||||||
</description>
|
</description>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
|
||||||
|
<namespace xml:id="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefix="cat">
|
||||||
|
<description>XML catalogs http://xmlcatalogs.org/
|
||||||
|
</description>
|
||||||
|
</namespace>
|
||||||
|
|
||||||
</namespaces>
|
</namespaces>
|
||||||
|
|
@ -31,6 +31,11 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>{
|
<script>{
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
url: "",
|
||||||
|
crumbs: [{ text:'Documentation'}]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<template id="tree">
|
<template id="tree">
|
||||||
<v-container fluid>
|
<v-container fluid>
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-toolbar card color="grey lighten-3">
|
<v-toolbar color="grey lighten-3">
|
||||||
<v-card-title >Taxonomy test</v-card-title>
|
<v-card-title >Taxonomy test</v-card-title>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-btn>todo</v-btn>
|
<v-btn>todo</v-btn>
|
||||||
|
|
@ -11,24 +11,18 @@
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-layout >
|
<v-layout >
|
||||||
|
|
||||||
<v-flex xs6 >
|
<v-flex xs6 >
|
||||||
<v-sheet class="pa-3 primary lighten-2">
|
<v-sheet >
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-model="search"
|
v-model="search"
|
||||||
label="Filter tag"
|
label="Filter tag"
|
||||||
flat
|
|
||||||
solo-inverted
|
|
||||||
hide-details
|
hide-details
|
||||||
clearable
|
clearable
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
<v-checkbox
|
|
||||||
v-model="caseSensitive"
|
|
||||||
dark
|
|
||||||
hide-details
|
|
||||||
label="Case sensitive search"
|
|
||||||
></v-checkbox>
|
|
||||||
</v-sheet>
|
</v-sheet>
|
||||||
<v-treeview :items="items" item-text="label"
|
<div style="height:300px; overflow:auto;">
|
||||||
|
<v-treeview :items="items" item-text="label"
|
||||||
v-model="tree" :search="search"
|
v-model="tree" :search="search"
|
||||||
:open.sync="open" activatable
|
:open.sync="open" activatable
|
||||||
active-class="grey lighten-4 indigo--text"
|
active-class="grey lighten-4 indigo--text"
|
||||||
|
|
@ -44,6 +38,7 @@
|
||||||
</v-icon>
|
</v-icon>
|
||||||
</template>
|
</template>
|
||||||
</v-treeview>
|
</v-treeview>
|
||||||
|
</div>
|
||||||
</v-flex>
|
</v-flex>
|
||||||
<v-divider vertical></v-divider>
|
<v-divider vertical></v-divider>
|
||||||
<v-flex xs6>
|
<v-flex xs6>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import module namespace rest = "http://exquery.org/ns/restxq";
|
||||||
import module namespace session = "http://basex.org/modules/session";
|
import module namespace session = "http://basex.org/modules/session";
|
||||||
import module namespace ufile = 'vue-poc/file' at "../../lib/file.xqm";
|
import module namespace ufile = 'vue-poc/file' at "../../lib/file.xqm";
|
||||||
|
|
||||||
import module namespace mt = 'quodatum.data.mimetype' at "../../lib/mimetype.xqm";
|
import module namespace mt = 'urn:quodatum:data:mimetype' at "../../lib/mimetype.xqm";
|
||||||
declare namespace c="http://www.w3.org/ns/xproc-step";
|
declare namespace c="http://www.w3.org/ns/xproc-step";
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,14 +60,14 @@
|
||||||
|
|
||||||
|
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
|
<v-card-text>
|
||||||
<v-flex xs12 style="height:200px" fill-height>
|
<v-flex xs12 style="height:200px" fill-height>
|
||||||
<vue-ace :content="xq" mode="xquery" wrap="true"
|
<vue-ace :content="xq" mode="xquery" wrap="true"
|
||||||
:settings="aceSettings" v-on:change-content="onChange"
|
:settings="aceSettings" v-on:change-content="onChange"
|
||||||
></vue-ace>
|
></vue-ace>
|
||||||
</v-flex>
|
</v-flex>
|
||||||
</v-card-text>
|
|
||||||
<vp-job v-if="showJob" :job="job" :waiting="waiting" :job-state="jobState" :elapsed="elapsed"></vp-job>
|
<vp-job v-if="showJob" :job="job" :waiting="waiting" :job-state="jobState" :elapsed="elapsed"></vp-job>
|
||||||
|
</v-card-text>
|
||||||
<v-card-text v-if="showError">
|
<v-card-text v-if="showError">
|
||||||
<v-alert color="error" v-model="showError">Error </v-alert>
|
<v-alert color="error" v-model="showError">Error </v-alert>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,11 @@
|
||||||
{{ result }}
|
{{ result }}
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<code>{{ jobstate.text }}</code>
|
<v-flex xs12 style="height:200px" fill-height>
|
||||||
</v-card-text>
|
<vue-ace :content="jobstate.text" mode="xquery" wrap="true"></vue-ace>
|
||||||
|
</v-flex>
|
||||||
|
</v-card-text>
|
||||||
</v-card>
|
</v-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,23 +39,27 @@
|
||||||
class="elevation-1"
|
class="elevation-1"
|
||||||
no-data-text="No Jobs currently running"
|
no-data-text="No Jobs currently running"
|
||||||
>
|
>
|
||||||
<template slot="items" slot-scope="props">
|
<template v-slot:item.id="{ item }">
|
||||||
<td class="vtop">
|
<router-link :to="{name: 'job1', params: {job: item.id }}">{{ item.id }}</router-link>
|
||||||
<v-checkbox
|
</template>
|
||||||
primary
|
|
||||||
hide-details
|
<template v-slot:item.isService="{ item }">
|
||||||
v-model="props.selected"
|
<router-link v-if="item.isService" title="Service"
|
||||||
></v-checkbox>
|
:to="{name: 'service1', params: { service: item.id }}">
|
||||||
</td>
|
<v-avatar color="red" size="24">
|
||||||
<td class="vtop"> <router-link :to="{name: 'jobShow', params: {job: props.item.id }}">{{props.item.id}}</router-link></td>
|
<span class="white--text headline">S</span>
|
||||||
<td class="vtop "><div>{{ props.item.state }}</div><div>{{ props.item.type }}</div> </td>
|
</v-avatar>
|
||||||
<td class="vtop " :title="props.item.registered">{{ props.item.registered | fromNow}}</td>
|
</router-link>
|
||||||
<td class="vtop " :title="props.item.start">{{ props.item.start | fromNow}}</td>
|
</template>
|
||||||
<td class="vtop text-xs-right">{{ props.item.duration }}</td>
|
|
||||||
<td class="vtop text-xs-right">{{ props.item.writes }}</td>
|
<template v-slot:item.registered="{ item }">
|
||||||
<td class="vtop text-xs-right">{{ props.item.reads }}</td>
|
<span>{{ item.registered | formatDate}}</span>
|
||||||
<td class="vtop text-xs-right">{{ props.item.user }}</td>
|
</template>
|
||||||
</template>
|
|
||||||
|
<template v-slot:item.start="{ item }">
|
||||||
|
<span>{{ item.start | fromNow }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
</v-data-table>
|
</v-data-table>
|
||||||
</v-card>
|
</v-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -70,8 +74,10 @@
|
||||||
value: 'id'
|
value: 'id'
|
||||||
},
|
},
|
||||||
{ text: 'State', value: 'state' },
|
{ text: 'State', value: 'state' },
|
||||||
{ text: 'Registered', value: 'registered' },
|
{ text: 'Service?', value: 'isservice' }, // https://stackoverflow.com/a/58034316/3210344
|
||||||
{ text: 'Start', value: 'start' },
|
{ text: 'Start', value: 'start' },
|
||||||
|
{ text: 'Interval', value: 'interval' },
|
||||||
|
{ text: 'Registered', value: 'registered' },
|
||||||
{ text: 'Duration', value: 'duration' },
|
{ text: 'Duration', value: 'duration' },
|
||||||
{ text: 'WriteL', value: 'writes' },
|
{ text: 'WriteL', value: 'writes' },
|
||||||
{ text: 'ReadL', value: 'reads' },
|
{ text: 'ReadL', value: 'reads' },
|
||||||
|
|
@ -92,7 +98,7 @@
|
||||||
HTTP.get("job")
|
HTTP.get("job")
|
||||||
.then(r=>{
|
.then(r=>{
|
||||||
this.loading=false
|
this.loading=false
|
||||||
this.items=r.data
|
this.items=r.data.items
|
||||||
if(this.autorefresh) this.timer=setTimeout(()=>{ this.getJobs() }, 10000);
|
if(this.autorefresh) this.timer=setTimeout(()=>{ this.getJobs() }, 10000);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,21 @@
|
||||||
module namespace j = 'quodatum.test.jobs';
|
module namespace j = 'quodatum.test.jobs';
|
||||||
|
import module namespace entity ='quodatum.models.generated' at "../../models.gen.xqm";
|
||||||
|
import module namespace dice = 'quodatum.web.dice/v4' at "../../lib/dice.xqm";
|
||||||
|
import module namespace web = 'quodatum.web.utils4' at "../../lib/webutils.xqm";
|
||||||
|
|
||||||
(:~
|
(:~
|
||||||
: job list
|
: job list
|
||||||
:)
|
:)
|
||||||
declare
|
declare
|
||||||
%rest:GET %rest:path("/vue-poc/api/job")
|
%rest:GET %rest:path("/vue-poc/api/job")
|
||||||
|
%rest:produces("application/json")
|
||||||
%output:method("json")
|
%output:method("json")
|
||||||
function j:list()
|
function j:list()
|
||||||
as element(json)
|
as element(json)
|
||||||
{
|
{
|
||||||
let $jlist:=jobs:list()[. != jobs:current()] !jobs:list-details(.)
|
let $entity:=$entity:list("basex.job")
|
||||||
return <json type="array">
|
let $items:=$entity?data()
|
||||||
{for $j in reverse($jlist)
|
return dice:response($items,$entity,web:dice())
|
||||||
return <_ type="object">
|
|
||||||
{j:job-json($j)}
|
|
||||||
</_>
|
|
||||||
}</json>
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -26,27 +25,16 @@ as element(json)
|
||||||
:)
|
:)
|
||||||
declare
|
declare
|
||||||
%rest:GET %rest:path("/vue-poc/api/job/{$job}")
|
%rest:GET %rest:path("/vue-poc/api/job/{$job}")
|
||||||
|
%rest:produces("application/json")
|
||||||
%output:method("json")
|
%output:method("json")
|
||||||
function j:job($job)
|
function j:job($job)
|
||||||
as element(json)
|
as element(json)
|
||||||
{
|
{
|
||||||
let $j:=jobs:list-details($job)
|
let $this:=$entity:list("basex.job")
|
||||||
return <json type="object">
|
let $items:=$this?data()
|
||||||
{if($j) then j:job-json($j) else ()}
|
let $fields:=$this?json
|
||||||
</json>
|
let $item:=$items[@id=$job]
|
||||||
|
(: just one :)
|
||||||
|
return <json objects="json">{dice:json-flds($item,$fields)/*}</json>
|
||||||
};
|
};
|
||||||
|
|
||||||
declare function j:job-json($j as element(job))
|
|
||||||
as element(*)*
|
|
||||||
{
|
|
||||||
<id>{$j/@id/string()}</id>
|
|
||||||
,<type>{$j/@type/string()}</type>
|
|
||||||
,<state>{$j/@state/string()}</state>
|
|
||||||
,<user>{$j/@user/string()}</user>
|
|
||||||
,<registered>{$j/@time/string()}</registered>
|
|
||||||
,if($j/@start) then <start>{$j/@start/string()}</start> else ()
|
|
||||||
,<duration>{$j/@duration/string()}</duration>
|
|
||||||
,<text>{$j/string()}</text>
|
|
||||||
,<reads>{$j/@reads/string()}</reads>
|
|
||||||
,<writes>{$j/@writes/string()}</writes>
|
|
||||||
};
|
|
||||||
113
src/vue-poc/features/job/service1.vue
Normal file
113
src/vue-poc/features/job/service1.vue
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<template id="service1">
|
||||||
|
<v-card >
|
||||||
|
<v-toolbar >
|
||||||
|
<v-toolbar-title>Service info</v-toolbar-title>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-text-field
|
||||||
|
prepend-icon="filter_list"
|
||||||
|
label="Filter services"
|
||||||
|
single-line
|
||||||
|
hide-details
|
||||||
|
clearable
|
||||||
|
v-model="search"
|
||||||
|
></v-text-field>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn
|
||||||
|
@click="stop()"
|
||||||
|
:disabled="noSelection"
|
||||||
|
>Stop</v-btn>
|
||||||
|
|
||||||
|
<v-btn icon ><v-icon>add</v-icon></v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
|
||||||
|
<v-btn
|
||||||
|
icon
|
||||||
|
:loading="loading"
|
||||||
|
@click="getJobs()"
|
||||||
|
@dblclick="autorefresh = !autorefresh"
|
||||||
|
:disabled="loading"
|
||||||
|
>
|
||||||
|
<v-icon>{{ autorefresh?'refresh':'arrow_downward' }}</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
<vp-entitylink entity="basex.service"></vp-entitylink>
|
||||||
|
</v-toolbar>
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers"
|
||||||
|
:items="items"
|
||||||
|
:search="search"
|
||||||
|
v-model="selected"
|
||||||
|
show-select
|
||||||
|
class="elevation-1"
|
||||||
|
no-data-text="No Jobs currently running"
|
||||||
|
>
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<td class="vtop">
|
||||||
|
<v-checkbox
|
||||||
|
primary
|
||||||
|
hide-details
|
||||||
|
v-model="props.selected"
|
||||||
|
></v-checkbox>
|
||||||
|
</td>
|
||||||
|
<td class="vtop"> <router-link :to="{name: 'jobShow', params: {job: props.item.id }}">{{props.item.id}}</router-link></td>
|
||||||
|
<td class="vtop "><div>{{ props.item.running }}</div>
|
||||||
|
<td class="vtop " :title="props.item.interval">{{ props.item.interval }}</td>
|
||||||
|
<td class="vtop " :title="props.item.base-uri">{{ props.item['base-uri'] }}</td>
|
||||||
|
<td class="vtop ">{{ props.item.query }}</td>
|
||||||
|
</template>
|
||||||
|
</v-data-table>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>{
|
||||||
|
props: ['service'],
|
||||||
|
data: function(){
|
||||||
|
return {
|
||||||
|
headers: [
|
||||||
|
{ text: 'Job id', left: true, value: 'id'},
|
||||||
|
{ text: 'Running', value: 'running' },
|
||||||
|
{ text: 'Interval', value: 'interval' },
|
||||||
|
{ text: 'Base-uri', value: 'base-uri' },
|
||||||
|
{ text: 'Query', value: 'query' },
|
||||||
|
],
|
||||||
|
items:[],
|
||||||
|
selected: [],
|
||||||
|
search: "",
|
||||||
|
loading: false,
|
||||||
|
autorefresh: true,
|
||||||
|
timer:null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods:{
|
||||||
|
load(){
|
||||||
|
this.loading= true
|
||||||
|
HTTP.get("data/basex.service",{params:{q:this.q}})
|
||||||
|
.then(r=>{
|
||||||
|
this.items= r.data.items
|
||||||
|
this.loading= false
|
||||||
|
if(this.autorefresh) this.timer=setTimeout(()=>{ this.load() }, 10000);
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
stop(){
|
||||||
|
var s=this.selected.map((j)=>{return j.id}).join(",")
|
||||||
|
console.log("AAA",this.selected)
|
||||||
|
alert(s)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
// a computed getter
|
||||||
|
noSelection: function () {
|
||||||
|
// `this` points to the vm instance
|
||||||
|
return this.selected.length==0
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.load()
|
||||||
|
},
|
||||||
|
beforeDestroy(){
|
||||||
|
if(this.timer) clearTimeout(this.timer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
|
|
||||||
<v-container fluid >
|
<v-container fluid >
|
||||||
<v-expansion-panels>
|
<v-expansion-panels v-model="panel" multiple>
|
||||||
<v-expansion-panel expand >
|
<v-expansion-panel expand >
|
||||||
<v-expansion-panel-header>
|
<v-expansion-panel-header>
|
||||||
<v-layout>
|
<v-layout>
|
||||||
|
|
@ -78,7 +78,8 @@
|
||||||
</v-layout>
|
</v-layout>
|
||||||
</v-expansion-panel-header>
|
</v-expansion-panel-header>
|
||||||
<v-expansion-panel-content>
|
<v-expansion-panel-content>
|
||||||
<qd-table :headers="headers" :data-uri='"data/entity/"+entity +"/field"' entity="dice.field" no-data-msg="Nothing found">
|
<qd-table :headers="headers" :data-uri='"data/entity/"+entity +"/field"'
|
||||||
|
entity="dice.field" item-key="name" :show-select="false">
|
||||||
</qd-table>
|
</qd-table>
|
||||||
</v-expansion-panel-content>
|
</v-expansion-panel-content>
|
||||||
</v-expansion-panel>
|
</v-expansion-panel>
|
||||||
|
|
@ -108,7 +109,7 @@
|
||||||
{text: "description", value: "description"},
|
{text: "description", value: "description"},
|
||||||
{text: "xpath", value: "xpath"}
|
{text: "xpath", value: "xpath"}
|
||||||
],
|
],
|
||||||
panel: [true, false, true]
|
panel: [1,2]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
|
|
||||||
|
|
@ -1,44 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<template id="namespace">
|
<template id="namespace">
|
||||||
<v-container fluid>
|
<v-container fluid>
|
||||||
<v-card>
|
<qd-table :headers="headers" data-uri="data/namespace" entity="namespace" item-key="xmlns">
|
||||||
|
<template v-slot:item.xmlns="{ item }" >
|
||||||
<v-toolbar >
|
<td ><router-link :to="{name:'namespace1', query:{ id: item.xmlns}}">
|
||||||
<v-toolbar-title>
|
|
||||||
<v-breadcrumbs :items="crumbs" >
|
|
||||||
<template slot="item" slot-scope="props">
|
|
||||||
<v-breadcrumbs-item :to="props.item.to" :disabled="props.item.disabled" :exact="true">
|
|
||||||
{{ props.item.text }}
|
|
||||||
</v-breadcrumbs-item>
|
|
||||||
</template>
|
|
||||||
</v-breadcrumbs>
|
|
||||||
</v-toolbar-title>
|
|
||||||
<v-btn @click="load" icon :loading="loading"
|
|
||||||
:disabled="loading"
|
|
||||||
><v-icon>refresh</v-icon></v-btn>
|
|
||||||
|
|
||||||
<v-spacer></v-spacer>
|
|
||||||
|
|
||||||
<v-text-field prepend-icon="filter_list" label="Filter..." v-model="q" type="search"
|
|
||||||
hide-details single-line @keyup.enter="setfilter"
|
|
||||||
clearable></v-text-field>
|
|
||||||
|
|
||||||
<v-spacer></v-spacer>
|
|
||||||
<vp-entitylink entity="namespace"></vp-entitylink>
|
|
||||||
</v-toolbar>
|
|
||||||
|
|
||||||
<v-card-text>
|
|
||||||
<v-data-table
|
|
||||||
:headers="headers"
|
|
||||||
:items="items"
|
|
||||||
:loading="loading"
|
|
||||||
hide-default-footer
|
|
||||||
:search="q"
|
|
||||||
class="elevation-1"
|
|
||||||
>
|
|
||||||
|
|
||||||
<template v-slot:item.xmlns="{ item }" >
|
|
||||||
<td ><router-link :to="{path:'namespace/item?xmlns='+ item.xmlns}">
|
|
||||||
{{ item.xmlns }}
|
{{ item.xmlns }}
|
||||||
</router-link></td>
|
</router-link></td>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -50,60 +15,18 @@
|
||||||
<template slot="no-data">
|
<template slot="no-data">
|
||||||
No matching items.
|
No matching items.
|
||||||
</template>
|
</template>
|
||||||
</v-data-table>
|
</qd-table>
|
||||||
</v-card-text>
|
</v-container>
|
||||||
</v-card>
|
</template>
|
||||||
</v-container>
|
<script>{
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>{
|
|
||||||
data: function(){
|
data: function(){
|
||||||
return {
|
return {
|
||||||
items: [],
|
|
||||||
loading: false,
|
|
||||||
q: "",
|
|
||||||
message: 'bad route!',
|
|
||||||
|
|
||||||
selected:[],
|
|
||||||
headers: [
|
headers: [
|
||||||
|
{ text: 'namespace', value: 'xmlns'},
|
||||||
{ text: 'xmlns', value: 'xmlns' },
|
|
||||||
|
|
||||||
{ text: 'Description', value: 'description' },
|
{ text: 'Description', value: 'description' },
|
||||||
{ text: 'Prefix', value: 'prefix' }
|
{ text: 'Prefix', value: 'prefix' }
|
||||||
],
|
]
|
||||||
crumbs:[{to:"/namespace", text:"namespaces"}]
|
|
||||||
}
|
}
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
load(){
|
|
||||||
|
|
||||||
this.loading= true
|
|
||||||
HTTP.get("data/namespace",{params:{q:this.q}})
|
|
||||||
.then(r=>{
|
|
||||||
this.items= r.data.items
|
|
||||||
this.loading= false
|
|
||||||
})
|
|
||||||
|
|
||||||
},
|
|
||||||
setfilter(){
|
|
||||||
console.log("TODO",this.q)
|
|
||||||
this.$router.push({ query: {url:this.url,q:this.q }})
|
|
||||||
},
|
|
||||||
},
|
|
||||||
watch:{
|
|
||||||
$route(vnew,vold){
|
|
||||||
console.log("ROUTE",vnew,vold)
|
|
||||||
var url=this.$route.query.url
|
|
||||||
this.url=url?url:"/";
|
|
||||||
if(vnew.query.url != vold.query.url) this.load()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
created:function(){
|
|
||||||
this.q=this.$route.query.q || this.q;
|
|
||||||
this.load();
|
|
||||||
console.log("namespaces")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<v-toolbar >
|
<v-toolbar >
|
||||||
<v-toolbar-title>
|
<v-toolbar-title>
|
||||||
<v-breadcrumbs >
|
<v-breadcrumbs >
|
||||||
<v-breadcrumbs-item to="/namespace" :exact="true">
|
<v-breadcrumbs-item :to="{name: 'namespace'}" :exact="true">
|
||||||
Namespaces
|
Namespaces
|
||||||
</v-breadcrumbs-item>
|
</v-breadcrumbs-item>
|
||||||
|
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
methods:{
|
methods:{
|
||||||
getItem(){
|
getItem(){
|
||||||
this.loading=true
|
this.loading=true
|
||||||
HTTP.get("data/namespace/item",{id: this.xmlns})
|
HTTP.get("data/namespace/item",{params: {id: this.xmlns}})
|
||||||
.then(r=>{
|
.then(r=>{
|
||||||
this.loading=false;
|
this.loading=false;
|
||||||
console.log(r.data)
|
console.log(r.data)
|
||||||
|
|
@ -53,7 +53,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created:function(){
|
created:function(){
|
||||||
this.xmlns=this.$route.query.xmlns;
|
this.xmlns=this.$route.query.id;
|
||||||
this.getItem()
|
this.getItem()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,6 @@ declare
|
||||||
function _:model-list($id) {
|
function _:model-list($id) {
|
||||||
let $entity:=$entity:list("namespace")
|
let $entity:=$entity:list("namespace")
|
||||||
let $_:=trace($id," ID:")
|
let $_:=trace($id," ID:")
|
||||||
let $item:=$entity?data()[1]
|
let $item:=dice:get($entity,$id,"xmlns")
|
||||||
return dice:one($item,$entity)
|
return dice:one($item,$entity)
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -14,29 +14,25 @@
|
||||||
<v-combobox
|
<v-combobox
|
||||||
v-model="entity"
|
v-model="entity"
|
||||||
:items="entities" item-text="name"
|
:items="entities" item-text="name"
|
||||||
label="Select target" clearable open-on-clear
|
label="Select target" clearable open-on-clear>
|
||||||
></v-combobox>
|
<template v-slot:item="{ parent, item }">
|
||||||
|
<v-icon>{{ item.iconclass }}</v-icon>
|
||||||
|
{{ item.name }}
|
||||||
|
</template>
|
||||||
|
</v-combobox>
|
||||||
|
|
||||||
</v-flex>
|
</v-flex>
|
||||||
|
<v-simple-table>
|
||||||
<table class="v-data-table">
|
<template v-slot:default>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th xs1>url</th>
|
<th v-for="col in columns " class="text-left">
|
||||||
<th xs1>Action</th>
|
{{ col.label }}
|
||||||
<th xs1>Repeat</th>
|
</th>
|
||||||
<th xs1>Last</th>
|
|
||||||
<th xs1>Count</th>
|
|
||||||
<th xs1>Avg</th>
|
|
||||||
<th xs1>min</th>
|
|
||||||
<th xs1>max</th>
|
|
||||||
<th xs1>Median</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>
|
<td>
|
||||||
{{ entity && entity.name }}
|
{{ entity && entity.name }}
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -70,10 +66,11 @@
|
||||||
<span >{{getValues.median}}</span>
|
<span >{{getValues.median}}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</template>
|
||||||
|
</v-simple-table>
|
||||||
|
|
||||||
<h3>Value: <v-chip color="amber" text-color="white">{{counter}}</v-chip></h3>
|
<h3>Value: <v-chip color="amber" text-color="white">{{counter}}</v-chip></h3>
|
||||||
<pre>{{ result | pretty}}</pre>
|
<pre>{{ result | pretty}}</pre>
|
||||||
|
|
@ -91,7 +88,18 @@
|
||||||
entity: null,
|
entity: null,
|
||||||
counter: 0,
|
counter: 0,
|
||||||
result: null,
|
result: null,
|
||||||
entities: null
|
entities: null,
|
||||||
|
columns: [
|
||||||
|
{label:"Entity"},
|
||||||
|
{label:"Action"},
|
||||||
|
{label:"Repeat"},
|
||||||
|
{label:"Last"},
|
||||||
|
{label:"Count"},
|
||||||
|
{label:"Avg"},
|
||||||
|
{label:"min"},
|
||||||
|
{label:"max"},
|
||||||
|
{label:"Median"}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
|
|
@ -13,10 +13,10 @@ declare %updating
|
||||||
%rest:POST %rest:path("/vue-poc/api/ping")
|
%rest:POST %rest:path("/vue-poc/api/ping")
|
||||||
%output:method("text")
|
%output:method("text")
|
||||||
function ping:dopost()
|
function ping:dopost()
|
||||||
{
|
{(
|
||||||
(replace value of node $ping:state/ping with 1+$ping:state/ping,
|
replace value of node $ping:state/ping with 1+$ping:state/ping,
|
||||||
update:output(1+$ping:state/ping))
|
update:output(1+$ping:state/ping)
|
||||||
};
|
)};
|
||||||
|
|
||||||
(:~
|
(:~
|
||||||
: read counter
|
: read counter
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<template id="repo">
|
|
||||||
<v-container fluid>
|
|
||||||
<qd-table :headers="headers" data-uri="data/basex.repo" entity="repo" no-data-msg="Nothing found">
|
|
||||||
<template slot="items" slot-scope="props">
|
|
||||||
<td >
|
|
||||||
<v-checkbox
|
|
||||||
primary
|
|
||||||
hide-details
|
|
||||||
v-model="props.selected"
|
|
||||||
></v-checkbox>
|
|
||||||
</td>
|
|
||||||
<td >{{ props.item.name}}</td>
|
|
||||||
<td >{{ props.item.type }}</td>
|
|
||||||
<td >{{ props.item.version }}</td>
|
|
||||||
</template>
|
|
||||||
</qd-table>
|
|
||||||
</v-container>
|
|
||||||
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>{
|
|
||||||
data: function(){
|
|
||||||
return {
|
|
||||||
loading: false,
|
|
||||||
items: [],
|
|
||||||
search: null,
|
|
||||||
selected: [],
|
|
||||||
headers: [
|
|
||||||
{ text: 'Name', value: 'name'},
|
|
||||||
{ text: 'Type', value: 'type' },
|
|
||||||
{ text: 'Version', value: 'version' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
created:function(){
|
|
||||||
console.log("repo")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
|
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
|
|
||||||
<v-data-table
|
<v-data-table
|
||||||
:headers="headers"
|
:headers="headers"
|
||||||
:items="filtered"
|
:items="filtered"
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,11 @@ function set:values()
|
||||||
{for $name in $names
|
{for $name in $names
|
||||||
let $change:=$dm($name) ne $sm($name)
|
let $change:=$dm($name) ne $sm($name)
|
||||||
return <_ type="object">
|
return <_ type="object">
|
||||||
<name>{$name}</name>
|
<name>{$name}</name>
|
||||||
<default>{$dm($name)}</default>
|
<default>{$dm($name)}</default>
|
||||||
<current>{$sm($name)}</current>
|
<current>{$sm($name)}</current>
|
||||||
<changed type="boolean">{ if ($change) then $change else false() }</changed>
|
<changed type="boolean">{ if ($change) then $change else false() }</changed>
|
||||||
</_>}
|
</_>}
|
||||||
</json>
|
</json>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
44
src/vue-poc/features/server/repository.vue
Normal file
44
src/vue-poc/features/server/repository.vue
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<template id="repo">
|
||||||
|
<v-container fluid>
|
||||||
|
<qd-table :headers="headers" data-uri="data/basex.repo" entity="basex.repo" item-key="name"
|
||||||
|
:show-select="false" :query.sync="query">
|
||||||
|
<template v-slot:item.name="{ item }">
|
||||||
|
<router-link :to="{name: 'repo1', query: {id: item.name }}">{{ item.name }} </router-link>
|
||||||
|
</template>
|
||||||
|
<template v-slot:actions>
|
||||||
|
<v-btn>action here</v-btn>
|
||||||
|
</template>
|
||||||
|
</qd-table>
|
||||||
|
</v-container>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>{
|
||||||
|
data: function(){
|
||||||
|
return {
|
||||||
|
selected: [],
|
||||||
|
query: {filter:null},
|
||||||
|
entity: "basex.repo",
|
||||||
|
headers: [
|
||||||
|
{ text: 'Name', value: 'name'},
|
||||||
|
{ text: 'Type', value: 'type' },
|
||||||
|
{ text: 'Version', value: 'version' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
"query":{
|
||||||
|
handler:function(vnew,vold){
|
||||||
|
//console.log("watch",this.query)
|
||||||
|
this.$router.push({ query: this.query?this.query:null })
|
||||||
|
},
|
||||||
|
deep:true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
console.log("repo")
|
||||||
|
// this.query.filter=this.$route.query.filter || this.query.filter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
77
src/vue-poc/features/server/repository1.vue
Normal file
77
src/vue-poc/features/server/repository1.vue
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- show single item from repository -->
|
||||||
|
<template id="repo1">
|
||||||
|
<v-card >
|
||||||
|
<v-toolbar>
|
||||||
|
<v-toolbar-title>
|
||||||
|
<v-breadcrumbs divider="/">
|
||||||
|
<v-breadcrumbs-item :to="{name: 'repo'}" :exact="true">
|
||||||
|
Repository
|
||||||
|
</v-breadcrumbs-item>
|
||||||
|
<v-breadcrumbs-item >
|
||||||
|
{{ repo }}
|
||||||
|
</v-breadcrumbs-item>
|
||||||
|
</v-breadcrumbs>
|
||||||
|
</v-toolbar-title>
|
||||||
|
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
|
||||||
|
<v-btn icon @click="getItem"
|
||||||
|
:loading="loading"
|
||||||
|
:disabled="loading"
|
||||||
|
><v-icon>refresh</v-icon></v-btn>
|
||||||
|
|
||||||
|
</v-toolbar>
|
||||||
|
|
||||||
|
<v-container fluid >
|
||||||
|
todo
|
||||||
|
</v-container>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>{
|
||||||
|
|
||||||
|
|
||||||
|
data: function(){
|
||||||
|
return {
|
||||||
|
repo:null,
|
||||||
|
loading: false
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
getItem(){
|
||||||
|
this.loading=true
|
||||||
|
HTTP.get("data/entity/"+this.entity)
|
||||||
|
.then(r=>{
|
||||||
|
this.loading=false
|
||||||
|
this.item=Object.assign({}, this.item, r.data)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
code(item){
|
||||||
|
return item.modules + " " + item.namespaces + " " +item.code
|
||||||
|
},
|
||||||
|
getxml(){
|
||||||
|
HTTP.get("data/entity/"+this.entity,{ headers: {Accept: "text/xml"}})
|
||||||
|
.then(r=>{
|
||||||
|
this.xml=r.data;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
todo(){
|
||||||
|
alert("TODO");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
dataurl(){
|
||||||
|
return '/vue-poc/api/data/' + this.entity;
|
||||||
|
},
|
||||||
|
xquery(){
|
||||||
|
return '/vue-poc/api/data/' + this.entity;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
this.repo=this.$route.query.id;
|
||||||
|
//this.getItem()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -53,7 +53,9 @@
|
||||||
snackbar: {show:false,msg:"",context:"success"},
|
snackbar: {show:false,msg:"",context:"success"},
|
||||||
valid: false,
|
valid: false,
|
||||||
id: null,
|
id: null,
|
||||||
crumbs: [{to:"/tasks", text:"Tasks"},{text: this.task, disabled: true}]
|
crumbs: [{to:"/tasks", text:"Tasks"},
|
||||||
|
{to:"/tasks/"+this.task, text: this.task},
|
||||||
|
{text:"run", disabled: true}]
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ declare variable $srcpath as xs:string external :="C:\Users\andy\git\vue-poc\sr
|
||||||
declare variable $targetpath as xs:string external :="/vuepoc-test";
|
declare variable $targetpath as xs:string external :="/vuepoc-test";
|
||||||
|
|
||||||
(:~ delete from database if not if import files list
|
(:~ delete from database if not if import files list
|
||||||
@default false
|
@default true
|
||||||
:)
|
:)
|
||||||
declare variable $deleteMissing as xs:boolean external :=true();
|
declare variable $deleteMissing as xs:boolean external :=true();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,11 @@
|
||||||
<description> Generate <code>model.gen.xqm</code> from files in entity folder
|
<description> Generate <code>model.gen.xqm</code> from files in entity folder
|
||||||
</description>
|
</description>
|
||||||
</task>
|
</task>
|
||||||
|
<task name="model2" url="model.build/tx-model.xq">
|
||||||
|
<title>Generate model.gen.xqm</title>
|
||||||
|
<description> Generate <code>model.gen.xqm</code> from files in entity folder
|
||||||
|
</description>
|
||||||
|
</task>
|
||||||
<task name="import2" url="task/tx-dbimport2.xq">
|
<task name="import2" url="task/tx-dbimport2.xq">
|
||||||
<title>Import files from drive into a database</title>
|
<title>Import files from drive into a database</title>
|
||||||
<description>Load files into database</description>
|
<description>Load files into database</description>
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,7 @@
|
||||||
v-model="view"
|
v-model="view"
|
||||||
borderless
|
borderless
|
||||||
>
|
>
|
||||||
<v-btn value="">
|
|
||||||
<router-link :to="{path: 'run', append:true }"> <v-icon>home</v-icon>Home</router-link>
|
|
||||||
</v-btn>
|
|
||||||
|
|
||||||
<v-btn value="run">
|
<v-btn value="run">
|
||||||
<router-link :to="{path: 'run', append:true }" > <v-icon>play_circle_outline</v-icon>Run</router-link>
|
<router-link :to="{path: 'run', append:true }" > <v-icon>play_circle_outline</v-icon>Run</router-link>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<template id="users">
|
<template id="users">
|
||||||
<v-container fluid>
|
<v-container fluid>
|
||||||
<qd-table :headers="headers" data-uri="data/basex.user" entity="user" no-data-msg="Nothing found">
|
<qd-table :headers="headers" data-uri="data/basex.user" entity="basex.user" item-key="name" no-data-msg="No users found">
|
||||||
<template slot="items" slot-scope="props">
|
|
||||||
<td >
|
|
||||||
<v-checkbox
|
|
||||||
primary
|
|
||||||
hide-details
|
|
||||||
v-model="props.selected"
|
|
||||||
></v-checkbox>
|
|
||||||
</td>
|
|
||||||
<td >{{ props.item.name}}</td>
|
|
||||||
<td >{{ props.item.permission }}</td>
|
|
||||||
</template>
|
|
||||||
</qd-table>
|
</qd-table>
|
||||||
</v-container>
|
</v-container>
|
||||||
|
|
||||||
|
|
@ -21,10 +10,6 @@
|
||||||
<script>{
|
<script>{
|
||||||
data: function(){
|
data: function(){
|
||||||
return {
|
return {
|
||||||
loading: false,
|
|
||||||
items: [],
|
|
||||||
search: null,
|
|
||||||
selected: [],
|
|
||||||
headers: [
|
headers: [
|
||||||
{ text: 'Name', value: 'name'},
|
{ text: 'Name', value: 'name'},
|
||||||
{ text: 'Permission', value: 'permission' }
|
{ text: 'Permission', value: 'permission' }
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ return $zip
|
||||||
};
|
};
|
||||||
|
|
||||||
(:~
|
(:~
|
||||||
: update or create database from file path
|
: update or create database from file path, only *.xml files
|
||||||
: @param $dbname name of database
|
: @param $dbname name of database
|
||||||
: @param $path file path contain files
|
: @param $path file path contain files
|
||||||
:)
|
:)
|
||||||
|
|
@ -40,7 +40,7 @@ declare %updating function dbtools:sync-from-path(
|
||||||
{
|
{
|
||||||
dbtools:sync-from-files($dbname,
|
dbtools:sync-from-files($dbname,
|
||||||
$path,
|
$path,
|
||||||
file:list($path,fn:true()),
|
file:list($path,fn:true(),"*.xml"),
|
||||||
hof:id#1,
|
hof:id#1,
|
||||||
$delete-missing
|
$delete-missing
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -104,10 +104,10 @@ declare function dice:response($items,$entity as map(*))
|
||||||
(:~
|
(:~
|
||||||
: get data for object with key =name
|
: get data for object with key =name
|
||||||
:)
|
:)
|
||||||
declare function dice:get($entity as map(*),$name as xs:string)
|
declare function dice:get($entity as map(*),$key as xs:string, $keyfld as xs:string)
|
||||||
as element(*){
|
as element(*){
|
||||||
let $results:=$entity("data")()
|
let $results:=$entity("data")()
|
||||||
return $results[$name=$entity?access?name(.)]
|
return $results[$key = $entity?access($keyfld)(.)]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -121,6 +121,7 @@ declare function dice:one($item,$entity as map(*))
|
||||||
|
|
||||||
(:~
|
(:~
|
||||||
: @return json for item
|
: @return json for item
|
||||||
|
: @param $opts fields, space delimited fieldnames
|
||||||
:)
|
:)
|
||||||
declare function dice:one($item,$entity as map(*),$opts as map(*))
|
declare function dice:one($item,$entity as map(*),$opts as map(*))
|
||||||
as element(json)
|
as element(json)
|
||||||
|
|
|
||||||
|
|
@ -80,3 +80,11 @@ as map(*)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
(:~ files of type :)
|
||||||
|
declare function ufile:list($ext as xs:string)
|
||||||
|
as xs:string*
|
||||||
|
{
|
||||||
|
let $base:=db:system()/globaloptions/webpath =>concat("/vue-poc/")
|
||||||
|
return file:list($base,true(),$ext)
|
||||||
|
};
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
xquery version "3.1";
|
xquery version "3.1";
|
||||||
|
|
||||||
module namespace mt = 'quodatum.data.mimetype';
|
module namespace mt = 'urn:quodatum:data:mimetype';
|
||||||
declare namespace MediaType='java:org.basex.util.http.MediaType';
|
declare namespace MediaType='java:org.basex.util.http.MediaType';
|
||||||
declare %basex:lazy variable $mt:lines:="media-types.properties"=>fn:unparsed-text-lines();
|
declare %basex:lazy variable $mt:lines:="media-types.properties"=>fn:unparsed-text-lines();
|
||||||
|
|
||||||
(:~
|
(:~
|
||||||
: fetch function for given data type "text","xml","binary"
|
: fetch function for given data type "text","xml","binary"
|
||||||
: @return function()
|
: @return function()
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
(: entity access maps
|
(: entity access maps
|
||||||
: auto generated from xml files in entities folder at: 2020-09-30T17:59:30.342+01:00
|
: auto generated from xml files in entities folder at: 2020-10-13T11:34:00.267+01:00
|
||||||
:)
|
:)
|
||||||
|
|
||||||
module namespace entity = 'quodatum.models.generated';
|
module namespace entity = 'quodatum.models.generated';
|
||||||
import module namespace cfg = "quodatum:media.image.configure" at "features/images/config.xqm";declare namespace ent='https://github.com/Quodatum/app-doc/entity';
|
import module namespace cfg = "quodatum:media.image.configure" at "features/images/config.xqm";declare namespace bmk='urn:quodatum:vue-poc.favourite';
|
||||||
|
declare namespace ent='https://github.com/Quodatum/app-doc/entity';
|
||||||
declare namespace h='urn:quodatum:vue-poc.history';
|
declare namespace h='urn:quodatum:vue-poc.history';
|
||||||
declare namespace xqdoc='http://www.xqdoc.org/1.0';
|
declare namespace xqdoc='http://www.xqdoc.org/1.0';
|
||||||
declare namespace qns='https://github.com/Quodatum/namespaces';
|
declare namespace qns='https://github.com/Quodatum/namespaces';
|
||||||
|
|
@ -17,6 +18,7 @@ declare variable $entity:list:=map {
|
||||||
"duration": function($_ as element()) as xs:string {$_/@duration },
|
"duration": function($_ as element()) as xs:string {$_/@duration },
|
||||||
"id": function($_ as element()) as xs:string {$_/@id },
|
"id": function($_ as element()) as xs:string {$_/@id },
|
||||||
"interval": function($_ as element()) as xs:string {$_/@interval },
|
"interval": function($_ as element()) as xs:string {$_/@interval },
|
||||||
|
"isService": function($_ as element()) as xs:boolean {$_/@id = jobs:services()/@id },
|
||||||
"reads": function($_ as element()) as xs:string {$_/@reads },
|
"reads": function($_ as element()) as xs:string {$_/@reads },
|
||||||
"registered": function($_ as element()) as xs:string {$_/@time },
|
"registered": function($_ as element()) as xs:string {$_/@time },
|
||||||
"start": function($_ as element()) as xs:string {$_/@start },
|
"start": function($_ as element()) as xs:string {$_/@start },
|
||||||
|
|
@ -43,6 +45,10 @@ declare variable $entity:list:=map {
|
||||||
(: xs:string :)
|
(: xs:string :)
|
||||||
fn:data($_/@interval)!element interval { .}
|
fn:data($_/@interval)!element interval { .}
|
||||||
},
|
},
|
||||||
|
"isService": function($_ as element()) as element(isService)? {
|
||||||
|
(: xs:boolean :)
|
||||||
|
fn:data($_/@id = jobs:services()/@id)!element isService { attribute type {'boolean'}, .}
|
||||||
|
},
|
||||||
"reads": function($_ as element()) as element(reads)? {
|
"reads": function($_ as element()) as element(reads)? {
|
||||||
(: xs:string :)
|
(: xs:string :)
|
||||||
fn:data($_/@reads)!element reads { .}
|
fn:data($_/@reads)!element reads { .}
|
||||||
|
|
@ -242,6 +248,44 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
||||||
|
|
||||||
"views": map{
|
"views": map{
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bookmark": map{
|
||||||
|
"name": "bookmark",
|
||||||
|
"description": "vue-poc bookmark ",
|
||||||
|
"access": map{
|
||||||
|
"created": function($_ as element()) as xs:string {$_/@when },
|
||||||
|
"id": function($_ as element()) as xs:string {$_/@id },
|
||||||
|
"url": function($_ as element()) as xs:string {$_/@url },
|
||||||
|
"user": function($_ as element()) as xs:string {$_/@user } },
|
||||||
|
|
||||||
|
"filter": function($item,$q) as xs:boolean{
|
||||||
|
some $e in ( ) satisfies
|
||||||
|
fn:contains($e,$q, 'http://www.w3.org/2005/xpath-functions/collation/html-ascii-case-insensitive')
|
||||||
|
},
|
||||||
|
"json": map{
|
||||||
|
"created": function($_ as element()) as element(created)? {
|
||||||
|
(: xs:string :)
|
||||||
|
fn:data($_/@when)!element created { .}
|
||||||
|
},
|
||||||
|
"id": function($_ as element()) as element(id)? {
|
||||||
|
(: xs:string :)
|
||||||
|
fn:data($_/@id)!element id { .}
|
||||||
|
},
|
||||||
|
"url": function($_ as element()) as element(url)? {
|
||||||
|
(: xs:string :)
|
||||||
|
fn:data($_/@url)!element url { .}
|
||||||
|
},
|
||||||
|
"user": function($_ as element()) as element(user)? {
|
||||||
|
(: xs:string :)
|
||||||
|
fn:data($_/@user)!element user { .}
|
||||||
|
} },
|
||||||
|
|
||||||
|
"data": function() as element(bmk:favorite)*
|
||||||
|
{ doc("vue-poc/bookmarks.xml")/bmk:favorites/bmk:favorite },
|
||||||
|
|
||||||
|
"views": map{
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dice.entity": map{
|
"dice.entity": map{
|
||||||
|
|
@ -368,44 +412,6 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
||||||
|
|
||||||
"views": map{
|
"views": map{
|
||||||
'filter': 'name description'
|
'filter': 'name description'
|
||||||
}
|
|
||||||
},
|
|
||||||
"favorites": map{
|
|
||||||
"name": "favorites",
|
|
||||||
"description": "vue-poc favourites ",
|
|
||||||
"access": map{
|
|
||||||
"created": function($_ as element()) as xs:string {$_/@when },
|
|
||||||
"id": function($_ as element()) as xs:string {$_/@id },
|
|
||||||
"url": function($_ as element()) as xs:string {$_/@url },
|
|
||||||
"user": function($_ as element()) as xs:string {$_/@user } },
|
|
||||||
|
|
||||||
"filter": function($item,$q) as xs:boolean{
|
|
||||||
some $e in ( ) satisfies
|
|
||||||
fn:contains($e,$q, 'http://www.w3.org/2005/xpath-functions/collation/html-ascii-case-insensitive')
|
|
||||||
},
|
|
||||||
"json": map{
|
|
||||||
"created": function($_ as element()) as element(created)? {
|
|
||||||
(: xs:string :)
|
|
||||||
fn:data($_/@when)!element created { .}
|
|
||||||
},
|
|
||||||
"id": function($_ as element()) as element(id)? {
|
|
||||||
(: xs:string :)
|
|
||||||
fn:data($_/@id)!element id { .}
|
|
||||||
},
|
|
||||||
"url": function($_ as element()) as element(url)? {
|
|
||||||
(: xs:string :)
|
|
||||||
fn:data($_/@url)!element url { .}
|
|
||||||
},
|
|
||||||
"user": function($_ as element()) as element(user)? {
|
|
||||||
(: xs:string :)
|
|
||||||
fn:data($_/@user)!element user { .}
|
|
||||||
} },
|
|
||||||
|
|
||||||
"data": function() as element(favorite)*
|
|
||||||
{ doc("vue-poc/favorites.xml")/favorites/favorite },
|
|
||||||
|
|
||||||
"views": map{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"filehistory": map{
|
"filehistory": map{
|
||||||
|
|
@ -566,10 +572,10 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
||||||
"access": map{
|
"access": map{
|
||||||
"description": function($_ as element()) as xs:string {$_/qns:description },
|
"description": function($_ as element()) as xs:string {$_/qns:description },
|
||||||
"prefix": function($_ as element()) as xs:string {$_/@prefix },
|
"prefix": function($_ as element()) as xs:string {$_/@prefix },
|
||||||
"xmlns": function($_ as element()) as xs:string {$_/@uri } },
|
"xmlns": function($_ as element()) as xs:string {$_/@xml:id } },
|
||||||
|
|
||||||
"filter": function($item,$q) as xs:boolean{
|
"filter": function($item,$q) as xs:boolean{
|
||||||
some $e in ( $item/@uri, $item/qns:description) satisfies
|
some $e in ( $item/@xml:id, $item/qns:description) satisfies
|
||||||
fn:contains($e,$q, 'http://www.w3.org/2005/xpath-functions/collation/html-ascii-case-insensitive')
|
fn:contains($e,$q, 'http://www.w3.org/2005/xpath-functions/collation/html-ascii-case-insensitive')
|
||||||
},
|
},
|
||||||
"json": map{
|
"json": map{
|
||||||
|
|
@ -583,7 +589,7 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
||||||
},
|
},
|
||||||
"xmlns": function($_ as element()) as element(xmlns)? {
|
"xmlns": function($_ as element()) as element(xmlns)? {
|
||||||
(: xs:string :)
|
(: xs:string :)
|
||||||
fn:data($_/@uri)!element xmlns { .}
|
fn:data($_/@xml:id)!element xmlns { .}
|
||||||
} },
|
} },
|
||||||
|
|
||||||
"data": function() as element(qns:namespace)*
|
"data": function() as element(qns:namespace)*
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
"name": "vue-poc",
|
"name": "vue-poc",
|
||||||
"version": "0.5.2@2020-09-04",
|
"version": "0.5.3@2020-10-08",
|
||||||
"description": "App framework experiments, Frontend vuetify, backend: basex",
|
"description": "App framework experiments, Frontend vuetify, backend: basex",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ace": "1.4.12",
|
"ace-builds": "1.4.12",
|
||||||
"vuetify": "2.3.10",
|
"vuetify": "2.3.13",
|
||||||
"vue": "2.6.11",
|
"vue": "2.6.11",
|
||||||
"vuex": "3.1.0",
|
"vuex": "3.1.0",
|
||||||
"vue-router": "3.1.6",
|
"vue-router": "3.1.6",
|
||||||
|
|
|
||||||
2
src/vue-poc/readme.md
Normal file
2
src/vue-poc/readme.md
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
Vue-poc
|
||||||
|
|
||||||
|
|
@ -43,8 +43,8 @@ const router = new VueRouter({
|
||||||
{ path: 'schema', name:"schema", component: Schema, meta:{title:"Schemas"} },
|
{ path: 'schema', name:"schema", component: Schema, meta:{title:"Schemas"} },
|
||||||
{ path: 'taxonomy', component: Taxonomy, meta:{title:"Taxonomies"} },
|
{ path: 'taxonomy', component: Taxonomy, meta:{title:"Taxonomies"} },
|
||||||
{ path: 'mimetype', component: Mimetype, meta:{title:"Mimetypes"} },
|
{ path: 'mimetype', component: Mimetype, meta:{title:"Mimetypes"} },
|
||||||
{ path: 'namespace', component: Namespace, meta:{title:"Namespaces"} },
|
{ path: 'namespace', name: "namespace", component: Namespace, meta:{title:"Namespaces"} },
|
||||||
{ path: 'namespace/item', component: Namespace1, meta:{title:"Namespace"} },
|
{ path: 'namespace/item', name: "namespace1", component: Namespace1, meta:{title:"Namespace"} },
|
||||||
{ path: 'entity', component: Entity, meta:{title:"Entities"} },
|
{ path: 'entity', component: Entity, meta:{title:"Entities"} },
|
||||||
{ path: 'entity/:entity', component: { template: '<router-view/>' }
|
{ path: 'entity/:entity', component: { template: '<router-view/>' }
|
||||||
,children: [
|
,children: [
|
||||||
|
|
@ -68,6 +68,7 @@ const router = new VueRouter({
|
||||||
{ path: '/files', component: Files,meta:{title:"File system"},props:{protocol:"webfile"} },
|
{ path: '/files', component: Files,meta:{title:"File system"},props:{protocol:"webfile"} },
|
||||||
{ path: '/database', component: Files,meta:{title:"Databases"},props:{protocol:"xmldb"} },
|
{ path: '/database', component: Files,meta:{title:"Databases"},props:{protocol:"xmldb"} },
|
||||||
{ path: '/login', component: Login,meta:{title:"login"} },
|
{ path: '/login', component: Login,meta:{title:"login"} },
|
||||||
|
|
||||||
{ path: '/settings', component: { template: '<router-view/>' }
|
{ path: '/settings', component: { template: '<router-view/>' }
|
||||||
,children: [
|
,children: [
|
||||||
{
|
{
|
||||||
|
|
@ -87,6 +88,13 @@ const router = new VueRouter({
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ path: '/performance', component: { template: '<router-view/>' }
|
||||||
|
,children: [
|
||||||
|
{ path: 'ping', component: Ping, meta:{title:"Ping"} },
|
||||||
|
{ path: 'dicetest', component: Dicetest, meta:{title: "Dice test"} }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
{ path: '/server', component: { template: '<router-view/>' }
|
{ path: '/server', component: { template: '<router-view/>' }
|
||||||
,children: [
|
,children: [
|
||||||
{
|
{
|
||||||
|
|
@ -106,15 +114,16 @@ const router = new VueRouter({
|
||||||
},
|
},
|
||||||
|
|
||||||
{ path: 'jobs', name:"jobs", component: Jobs, meta:{title:"Jobs running"} },
|
{ path: 'jobs', name:"jobs", component: Jobs, meta:{title:"Jobs running"} },
|
||||||
{ path: 'jobs/:job', name:"jobShow", component: Job, props: true, meta:{title:"Job Status"} },
|
{ path: 'jobs/:job', name:"job1", component: Job, props: true, meta:{title:"Job Status"} },
|
||||||
{ path: 'services', component: Services, meta:{title:"Services"} },
|
{ path: 'services', component: Services, meta:{title:"Services"} },
|
||||||
{ path: 'upload', component: Upload,meta:{title:"Upload"} },
|
{ path: 'services/:service', name:"service1", component: Service1, props: true, meta:{title:"Service info"} },
|
||||||
|
{ path: 'upload', component: Upload, meta:{title:"Upload"} },
|
||||||
|
|
||||||
{ path: 'settings', component: Basexsettings,meta:{title:"BaseX settings"} },
|
{ path: 'settings', component: Basexsettings, meta:{title: "BaseX settings"} },
|
||||||
{ path: 'ping', component: Ping,meta:{title:"Ping"} },
|
|
||||||
{ path: 'dicetest', component: Dicetest,meta:{title:"Dice test"} },
|
{ path: 'users', component: Users, meta:{title: "Users"} },
|
||||||
{ path: 'users', component: Users,meta:{title:"Users"} },
|
{ path: 'repo', name: 'repo', component: Repo, meta:{title: "BaseX Repository"} },
|
||||||
{ path: 'repo', component: Repo,meta:{title:"Repository"} },
|
{ path: 'repo1', name: "repo1", component: Repo1, props: true, meta:{title: "Repository item"} },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{ path: '/history', component: { template: '<router-view/>' }
|
{ path: '/history', component: { template: '<router-view/>' }
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -10,7 +10,7 @@
|
||||||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic"/>
|
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic"/>
|
||||||
<link rel="stylesheet" href="//fonts.googleapis.com/icon?family=Material+Icons"/>
|
<link rel="stylesheet" href="//fonts.googleapis.com/icon?family=Material+Icons"/>
|
||||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" >
|
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" >
|
||||||
<link rel="stylesheet" href="//unpkg.com/vuetify@2.3.10/dist/vuetify.min.css" type="text/css"/>
|
<link rel="stylesheet" href="//unpkg.com/vuetify@2.3.13/dist/vuetify.min.css" type="text/css"/>
|
||||||
<link rel="stylesheet" href="//unpkg.com/@riophae/vue-treeselect@0.0.29/dist/vue-treeselect.min.css"/>
|
<link rel="stylesheet" href="//unpkg.com/@riophae/vue-treeselect@0.0.29/dist/vue-treeselect.min.css"/>
|
||||||
<link rel="stylesheet" href="/vue-poc/ui/prism/prism.css" type="text/css"/>
|
<link rel="stylesheet" href="/vue-poc/ui/prism/prism.css" type="text/css"/>
|
||||||
<link rel="stylesheet" href="//unpkg.com/leaflet@1.6.0/dist/leaflet.css"/>
|
<link rel="stylesheet" href="//unpkg.com/leaflet@1.6.0/dist/leaflet.css"/>
|
||||||
|
|
@ -39,10 +39,10 @@
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.js" crossorigin="anonymous"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.js" crossorigin="anonymous"></script>
|
||||||
<script src="//unpkg.com/vuex@3.1.0/dist/vuex.js" crossorigin="anonymous"></script>
|
<script src="//unpkg.com/vuex@3.1.0/dist/vuex.js" crossorigin="anonymous"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/qs/6.4.0/qs.js" crossorigin="anonymous" ></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/qs/6.4.0/qs.js" crossorigin="anonymous" ></script>
|
||||||
<script src="//unpkg.com/vuetify@2.3.10/dist/vuetify.min.js" crossorigin="anonymous"></script>
|
<script src="//unpkg.com/vuetify@2.3.13/dist/vuetify.min.js" crossorigin="anonymous"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.10/ace.js" crossorigin="anonymous"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js" crossorigin="anonymous"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.10/ext-language_tools.js" crossorigin="anonymous"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-language_tools.js" crossorigin="anonymous"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.10/ext-linking.js" crossorigin="anonymous" charset="utf-8"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-linking.js" crossorigin="anonymous" charset="utf-8"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.js" crossorigin="anonymous"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.js" crossorigin="anonymous"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/js-beautify/1.9.0/beautify.js" crossorigin="anonymous"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/js-beautify/1.9.0/beautify.js" crossorigin="anonymous"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/js-beautify/1.9.0/beautify-css.js" crossorigin="anonymous"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/js-beautify/1.9.0/beautify-css.js" crossorigin="anonymous"></script>
|
||||||
|
|
|
||||||
2
src/vue-poc/static/resources/svg/model.svg
Normal file
2
src/vue-poc/static/resources/svg/model.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 8.3 KiB |
Loading…
Add table
Reference in a new issue