[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>
|
||||
</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-item tag="div">
|
||||
<v-list-item-avatar >
|
||||
<v-btn icon @click="session">
|
||||
|
|
@ -47,17 +44,45 @@
|
|||
dark >
|
||||
<v-app-bar-nav-icon @click.stop="drawer = !drawer" ></v-app-bar-nav-icon>
|
||||
<v-toolbar-title class="hidden-sm-and-down" >
|
||||
|
||||
{{$route.meta.title}}</v-toolbar-title>
|
||||
|
||||
|
||||
|
||||
<vp-favorite :frmfav.sync="frmfav"></vp-favorite>
|
||||
<v-spacer></v-spacer>
|
||||
<v-toolbar-items>
|
||||
<qd-search></qd-search>
|
||||
</v-toolbar-items>
|
||||
<v-spacer></v-spacer>
|
||||
|
||||
|
||||
<v-btn @click.stop="showNotifications = ! showNotifications" icon text title="Notifications">
|
||||
<v-badge overlap color="orange">
|
||||
<span slot="badge" v-if=" $notification.unseen" >{{ $notification.unseen }}</span>
|
||||
<v-icon>notifications</v-icon>
|
||||
</v-badge>
|
||||
</v-btn>
|
||||
|
||||
<v-menu bottom left min-width="300px">
|
||||
<template v-slot:activator="{ on }">
|
||||
<v-btn icon v-on="on" >
|
||||
<v-icon>more_vert</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item >
|
||||
<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-title>Dark theme</v-list-item-title>
|
||||
<v-list-item-action ><v-switch v-model="$vuetify.theme.dark"></v-switch> </v-list-item-action>
|
||||
</v-list-item>
|
||||
<v-divider ></v-divider>
|
||||
<v-list-item >
|
||||
<v-list-item-title>Server hot load:</v-list-item-title>
|
||||
<v-list-item-action ><v-btn @click="init">.init</v-btn></v-list-item-action>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
|
||||
<v-menu left transition="v-fade-transition">
|
||||
<template v-slot:activator="{ on }">
|
||||
<v-btn dark icon v-on="on">
|
||||
|
|
@ -80,35 +105,6 @@
|
|||
</v-list>
|
||||
</v-menu>
|
||||
|
||||
<v-btn @click.stop="showNotifications = ! showNotifications" icon text title="Notifications">
|
||||
<v-badge overlap color="orange">
|
||||
<span slot="badge" v-if=" $notification.unseen" >{{ $notification.unseen }}</span>
|
||||
<v-icon>notifications</v-icon>
|
||||
</v-badge>
|
||||
</v-btn>
|
||||
<vp-favorite :frmfav.sync="frmfav"></vp-favorite>
|
||||
<v-menu bottom left min-width="300px">
|
||||
<template v-slot:activator="{ on }">
|
||||
<v-btn icon v-on="on" >
|
||||
<v-icon>more_vert</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item >
|
||||
<v-list-item-title><qd-fullscreen> Full screen</qd-fullscreen></v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item >
|
||||
<v-list-item-title>Dark theme</v-list-item-title>
|
||||
<v-list-item-action ><v-switch v-model="$vuetify.theme.dark"></v-switch> </v-list-item-action>
|
||||
</v-list-item>
|
||||
<v-divider ></v-divider>
|
||||
<v-list-item >
|
||||
<v-list-item-title>Server hot load:</v-list-item-title>
|
||||
<v-list-item-action ><v-btn @click="init">.init</v-btn></v-list-item-action>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
|
||||
</v-app-bar>
|
||||
|
||||
<v-main>
|
||||
|
|
@ -149,13 +145,20 @@
|
|||
model: false,
|
||||
children: [
|
||||
{href: '/eval',text: 'Query',icon: 'play_circle_outline'},
|
||||
{href: '/tasks',text: 'Tasks',icon: 'update'},
|
||||
|
||||
{href: '/edit',text: 'Edit',icon: 'mode_edit'},
|
||||
{href: '/tabs',text: 'Tabs',icon: 'switch_camera'},
|
||||
{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: 'add_task',
|
||||
text: 'Tasks' ,
|
||||
model: false,
|
||||
children: [
|
||||
{href: '/tasks',text: 'Task list',icon: 'assignment'},
|
||||
{href: '/history/tasks',text: 'History',icon: 'history'}
|
||||
]},
|
||||
{
|
||||
icon: 'folder_open',
|
||||
|
|
@ -165,8 +168,6 @@
|
|||
{href: '/database', text: 'Databases',icon: 'developer_mode' },
|
||||
{href: '/files', text: 'File system',icon: 'folder' },
|
||||
{href: '/documentation', text: 'Documentation',icon: 'library_books' },
|
||||
|
||||
{href: '/logdate',text: 'XML logs',icon: 'dns'},
|
||||
{href: '/history/files',text: 'history',icon: 'history'}
|
||||
]},
|
||||
{
|
||||
|
|
@ -190,14 +191,23 @@
|
|||
{href: '/server/services',text: 'Services',icon: 'dashboard'},
|
||||
{href: '/server/logs',text: 'Server logs',icon: 'dns'},
|
||||
{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/ping',text: 'Ping',icon: 'update'},
|
||||
{href: '/server/dicetest',text: 'Dice performance',icon: 'update'},
|
||||
|
||||
{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',
|
||||
text: 'Images' ,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Mimetype info as vue extension. defines $MimeTypes
|
||||
//
|
||||
// $MimeTypes.mode
|
||||
//
|
||||
const MimeTypes=new function(){
|
||||
var formatdom= t=>html_beautify(t, { indent_size: 3 ,indent_inner_html:true});
|
||||
|
|
|
|||
|
|
@ -1,17 +1,45 @@
|
|||
<!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">
|
||||
<v-container fluid>
|
||||
<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
|
||||
prepend-icon="filter_list"
|
||||
label="Filter items..."
|
||||
single-line
|
||||
hide-details
|
||||
v-model="search"
|
||||
label="Filter..."
|
||||
single-line hide-details
|
||||
v-model="query.filter"
|
||||
clearable
|
||||
></v-text-field>
|
||||
<v-spacer></v-spacer>
|
||||
<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
|
||||
|
|
@ -21,58 +49,74 @@
|
|||
>
|
||||
<v-icon>refresh</v-icon>
|
||||
</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-card-text>
|
||||
<v-data-table
|
||||
:headers="headers"
|
||||
:items="items"
|
||||
:search="search"
|
||||
v-model="selected"
|
||||
show-select
|
||||
:headers="headers" :items="items"
|
||||
v-model="selected" :item-key="itemKey"
|
||||
:search="query.filter"
|
||||
:items-per-page="10"
|
||||
:show-select="showSelectL"
|
||||
:multi-sort="multiSortL"
|
||||
:loading="loading"
|
||||
class="elevation-1"
|
||||
:fixed-header="true"
|
||||
:no-data-text="noDataMsg"
|
||||
>
|
||||
<template slot="items" slot-scope="props">
|
||||
<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>
|
||||
<template v-for="(_, slot) of $scopedSlots" v-slot:[slot]="scope"><slot :name="slot" v-bind="scope"/></template>
|
||||
|
||||
</v-data-table>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-container>
|
||||
</template>
|
||||
|
||||
<script>{
|
||||
props: {
|
||||
headers: {
|
||||
default: [
|
||||
{ text: 'Name', value: 'id'},
|
||||
{ text: 'Permission', value: 'state' }
|
||||
]
|
||||
},
|
||||
dataUri:{
|
||||
default: "entity"
|
||||
},
|
||||
noDataMsg:{
|
||||
default: "No data found."
|
||||
},
|
||||
entity:{
|
||||
default: "entity"
|
||||
}
|
||||
headers: {default: [ { text: 'Name', value: 'id'} ]},
|
||||
dataUri:{ default: "data/dice.entity"},
|
||||
itemKey:{ default: "id"},
|
||||
noDataMsg:{ default: "No data found."},
|
||||
title:{ default: "" },
|
||||
entity:{ },
|
||||
query: {default: function(){return {filter:null}}},
|
||||
showSelect: { default: false },
|
||||
multiSort: { default: false }
|
||||
},
|
||||
data: function(){
|
||||
return {
|
||||
selected: [],
|
||||
loading: false,
|
||||
items: [],
|
||||
search: null,
|
||||
selected: [],
|
||||
|
||||
showSelectL: this.showSelect,
|
||||
multiSortL: this.multiSort,
|
||||
autoRefreshL: false
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
|
|
@ -81,18 +125,13 @@
|
|||
HTTP.get(this.dataUri)
|
||||
.then(r=>{
|
||||
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;
|
||||
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(){
|
||||
console.log("qd-table");
|
||||
this.getItems();
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
show a entity link
|
||||
-->
|
||||
<template id="vp-entitylink">
|
||||
<router-link :to="'/entity/'+entity">E</router-link>
|
||||
<router-link :to="'/model/entity/'+entity" :title="entity">@</router-link>
|
||||
</template>
|
||||
|
||||
<script>{
|
||||
|
|
|
|||
|
|
@ -11,20 +11,20 @@ display button that invokes a save favorite form
|
|||
>
|
||||
<template v-slot:activator="{ on }">
|
||||
<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>
|
||||
</template>
|
||||
<v-card style="width:400px;">
|
||||
<v-toolbar class="green">
|
||||
<v-card-title>
|
||||
Add to favorites
|
||||
Add to bookmarks
|
||||
</v-card-title>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn @click="set(false)" icon><v-icon>close</v-icon></v-btn>
|
||||
</v-toolbar>
|
||||
|
||||
<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>
|
||||
</h6>
|
||||
<v-combobox multiple
|
||||
|
|
@ -36,11 +36,10 @@ display button that invokes a save favorite form
|
|||
></v-combobox>
|
||||
</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-spacer></v-spacer>
|
||||
<v-btn text @click.stop="set(false)" >Cancel</v-btn>
|
||||
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-menu></template>
|
||||
|
|
@ -53,6 +52,7 @@ display button that invokes a save favorite form
|
|||
canCopy:false,
|
||||
tags: [],
|
||||
taglist: [ 'todo', 'find', 'some', 'good', 'tags' ],
|
||||
exists: false
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
|
|
@ -61,14 +61,17 @@ display button that invokes a save favorite form
|
|||
},
|
||||
async setclip(){
|
||||
await navigator.clipboard.writeText(this.$route.fullPath);
|
||||
alert('Copied!' + this.$route.fullPath);
|
||||
},
|
||||
favorite(){
|
||||
this.$store.commit('increment')
|
||||
console.log(this.$store.state.count)
|
||||
this.exists= !this.exists
|
||||
alert("save");
|
||||
}
|
||||
},
|
||||
computed:{
|
||||
icon: function(){return this.exists?"star":"star_border" }
|
||||
},
|
||||
created() {
|
||||
this.canCopy = !!navigator.clipboard;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -45,6 +45,10 @@
|
|||
<description>writes</description>
|
||||
<xpath>@writes</xpath>
|
||||
</field>
|
||||
<field name="isService" type="xs:boolean">
|
||||
<description>This job is a service</description>
|
||||
<xpath>@id = jobs:services()/@id</xpath>
|
||||
</field>
|
||||
</fields>
|
||||
<views iconclass="code">
|
||||
<view name="filter">name description</view>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<entity name="favorites" xmlns="https://github.com/Quodatum/app-doc/entity">
|
||||
<description>vue-poc favourites </description>
|
||||
<entity name="bookmark" xmlns="https://github.com/Quodatum/app-doc/entity">
|
||||
<description>vue-poc bookmark </description>
|
||||
<namespace prefix="bmk" uri="urn:quodatum:vue-poc.favourite" />
|
||||
<fields>
|
||||
<field name="created" type="xs:string">
|
||||
<description>time of event</description>
|
||||
|
|
@ -21,5 +22,5 @@
|
|||
</field>
|
||||
</fields>
|
||||
<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>
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
<fields>
|
||||
<field name="xmlns" type="xs:string">
|
||||
<description>namespace</description>
|
||||
<xpath>@uri</xpath>
|
||||
<xpath>@xml:id</xpath>
|
||||
</field>
|
||||
<field name="prefix" type="xs:string">
|
||||
<description>commonly used namespace prefixes </description>
|
||||
|
|
|
|||
|
|
@ -1,129 +1,159 @@
|
|||
<!-- common namespaces -->
|
||||
<namespaces xmlns="https://github.com/Quodatum/namespaces">
|
||||
<namespace uri="http://www.w3.org/XML/1998/namespace" prefix="xml">
|
||||
<description>XML core features</description>
|
||||
<namespace xml:id="http://www.w3.org/XML/1998/namespace" prefix="xml">
|
||||
<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 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>
|
||||
</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>
|
||||
</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>
|
||||
</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
|
||||
Recommendation
|
||||
</description>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2005/xpath-functions/math"
|
||||
<namespace xml:id="http://www.w3.org/2005/xpath-functions/math"
|
||||
prefix="math">
|
||||
<description>Xpath math </description>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2005/xpath-functions/map"
|
||||
<namespace xml:id="http://www.w3.org/2005/xpath-functions/map"
|
||||
prefix="map">
|
||||
<description>Xpath map </description>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2005/xpath-functions/array"
|
||||
<namespace xml:id="http://www.w3.org/2005/xpath-functions/array"
|
||||
prefix="array">
|
||||
<description>Xpath array </description>
|
||||
</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>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2010/xslt-xquery-serialization"
|
||||
<namespace xml:id="http://www.w3.org/2010/xslt-xquery-serialization"
|
||||
prefix="output">
|
||||
<description>serialization parameters </description>
|
||||
</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>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||
<namespace xml:id="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||
prefix="xs">
|
||||
<description>XML Schema Part 2: Datatypes namespace. </description>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<namespace xml:id="http://www.w3.org/2001/XMLSchema-instance"
|
||||
prefix="xsi">
|
||||
<description>Namespace for XML Schema attributes used in XML instances
|
||||
(documents), such as xsi:type, xsi:schemaLocation, and xsi:nil.
|
||||
</description>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2005/xpath-functions"
|
||||
<namespace xml:id="http://www.w3.org/2005/xpath-functions"
|
||||
prefix="fn">
|
||||
<description>XPath functions
|
||||
</description>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.w3.org/2005/xquery-local-functions"
|
||||
<namespace xml:id="http://www.w3.org/2005/xquery-local-functions"
|
||||
prefix="local">
|
||||
<description>Xquery functions
|
||||
</description>
|
||||
</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>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://docbook.org/ns/docbook" prefix="d">
|
||||
<namespace xml:id="http://docbook.org/ns/docbook" prefix="d">
|
||||
<description>Docbook
|
||||
</description>
|
||||
</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>
|
||||
</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>
|
||||
</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>
|
||||
</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>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://www.opengis.net/gml" prefix="gml">
|
||||
<namespace xml:id="http://www.opengis.net/gml" prefix="gml">
|
||||
<description>GML
|
||||
</description>
|
||||
</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>
|
||||
</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>
|
||||
</namespace>
|
||||
|
||||
<namespace uri="http://expath.org/ns/pkg" prefix="pkg">
|
||||
<namespace xml:id="http://expath.org/ns/pkg" prefix="pkg">
|
||||
<description>EXpath packaging
|
||||
</description>
|
||||
</namespace>
|
||||
<namespace uri="http://basex.org/modules/perm" prefix="perm">
|
||||
|
||||
<namespace xml:id="http://basex.org/modules/perm" prefix="perm">
|
||||
<description>Web permissions
|
||||
</description>
|
||||
</namespace>
|
||||
|
||||
<namespace xml:id="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefix="cat">
|
||||
<description>XML catalogs http://xmlcatalogs.org/
|
||||
</description>
|
||||
</namespace>
|
||||
|
||||
</namespaces>
|
||||
|
|
@ -31,6 +31,11 @@
|
|||
</template>
|
||||
|
||||
<script>{
|
||||
|
||||
data(){
|
||||
return {
|
||||
url: "",
|
||||
crumbs: [{ text:'Documentation'}]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<template id="tree">
|
||||
<v-container fluid>
|
||||
<v-card>
|
||||
<v-toolbar card color="grey lighten-3">
|
||||
<v-toolbar color="grey lighten-3">
|
||||
<v-card-title >Taxonomy test</v-card-title>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn>todo</v-btn>
|
||||
|
|
@ -12,22 +12,16 @@
|
|||
<v-layout >
|
||||
|
||||
<v-flex xs6 >
|
||||
<v-sheet class="pa-3 primary lighten-2">
|
||||
<v-sheet >
|
||||
<v-text-field
|
||||
v-model="search"
|
||||
label="Filter tag"
|
||||
flat
|
||||
solo-inverted
|
||||
hide-details
|
||||
clearable
|
||||
></v-text-field>
|
||||
<v-checkbox
|
||||
v-model="caseSensitive"
|
||||
dark
|
||||
hide-details
|
||||
label="Case sensitive search"
|
||||
></v-checkbox>
|
||||
|
||||
</v-sheet>
|
||||
<div style="height:300px; overflow:auto;">
|
||||
<v-treeview :items="items" item-text="label"
|
||||
v-model="tree" :search="search"
|
||||
:open.sync="open" activatable
|
||||
|
|
@ -44,6 +38,7 @@
|
|||
</v-icon>
|
||||
</template>
|
||||
</v-treeview>
|
||||
</div>
|
||||
</v-flex>
|
||||
<v-divider vertical></v-divider>
|
||||
<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 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";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -60,14 +60,14 @@
|
|||
|
||||
|
||||
</v-toolbar>
|
||||
|
||||
<v-card-text>
|
||||
<v-flex xs12 style="height:200px" fill-height>
|
||||
<vue-ace :content="xq" mode="xquery" wrap="true"
|
||||
:settings="aceSettings" v-on:change-content="onChange"
|
||||
></vue-ace>
|
||||
</v-flex>
|
||||
</v-card-text>
|
||||
<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-alert color="error" v-model="showError">Error </v-alert>
|
||||
</v-card-text>
|
||||
|
|
|
|||
|
|
@ -35,9 +35,10 @@
|
|||
</v-card-text>
|
||||
|
||||
<v-card-text>
|
||||
<code>{{ jobstate.text }}</code>
|
||||
<v-flex xs12 style="height:200px" fill-height>
|
||||
<vue-ace :content="jobstate.text" mode="xquery" wrap="true"></vue-ace>
|
||||
</v-flex>
|
||||
</v-card-text>
|
||||
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -39,23 +39,27 @@
|
|||
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.state }}</div><div>{{ props.item.type }}</div> </td>
|
||||
<td class="vtop " :title="props.item.registered">{{ props.item.registered | fromNow}}</td>
|
||||
<td class="vtop " :title="props.item.start">{{ props.item.start | fromNow}}</td>
|
||||
<td class="vtop text-xs-right">{{ props.item.duration }}</td>
|
||||
<td class="vtop text-xs-right">{{ props.item.writes }}</td>
|
||||
<td class="vtop text-xs-right">{{ props.item.reads }}</td>
|
||||
<td class="vtop text-xs-right">{{ props.item.user }}</td>
|
||||
<template v-slot:item.id="{ item }">
|
||||
<router-link :to="{name: 'job1', params: {job: item.id }}">{{ item.id }}</router-link>
|
||||
</template>
|
||||
|
||||
<template v-slot:item.isService="{ item }">
|
||||
<router-link v-if="item.isService" title="Service"
|
||||
:to="{name: 'service1', params: { service: item.id }}">
|
||||
<v-avatar color="red" size="24">
|
||||
<span class="white--text headline">S</span>
|
||||
</v-avatar>
|
||||
</router-link>
|
||||
</template>
|
||||
|
||||
<template v-slot:item.registered="{ item }">
|
||||
<span>{{ item.registered | formatDate}}</span>
|
||||
</template>
|
||||
|
||||
<template v-slot:item.start="{ item }">
|
||||
<span>{{ item.start | fromNow }}</span>
|
||||
</template>
|
||||
|
||||
</v-data-table>
|
||||
</v-card>
|
||||
</template>
|
||||
|
|
@ -70,8 +74,10 @@
|
|||
value: 'id'
|
||||
},
|
||||
{ text: 'State', value: 'state' },
|
||||
{ text: 'Registered', value: 'registered' },
|
||||
{ text: 'Service?', value: 'isservice' }, // https://stackoverflow.com/a/58034316/3210344
|
||||
{ text: 'Start', value: 'start' },
|
||||
{ text: 'Interval', value: 'interval' },
|
||||
{ text: 'Registered', value: 'registered' },
|
||||
{ text: 'Duration', value: 'duration' },
|
||||
{ text: 'WriteL', value: 'writes' },
|
||||
{ text: 'ReadL', value: 'reads' },
|
||||
|
|
@ -92,7 +98,7 @@
|
|||
HTTP.get("job")
|
||||
.then(r=>{
|
||||
this.loading=false
|
||||
this.items=r.data
|
||||
this.items=r.data.items
|
||||
if(this.autorefresh) this.timer=setTimeout(()=>{ this.getJobs() }, 10000);
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -1,22 +1,21 @@
|
|||
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
|
||||
:)
|
||||
declare
|
||||
%rest:GET %rest:path("/vue-poc/api/job")
|
||||
%rest:produces("application/json")
|
||||
%output:method("json")
|
||||
function j:list()
|
||||
as element(json)
|
||||
{
|
||||
let $jlist:=jobs:list()[. != jobs:current()] !jobs:list-details(.)
|
||||
return <json type="array">
|
||||
{for $j in reverse($jlist)
|
||||
return <_ type="object">
|
||||
{j:job-json($j)}
|
||||
</_>
|
||||
}</json>
|
||||
let $entity:=$entity:list("basex.job")
|
||||
let $items:=$entity?data()
|
||||
return dice:response($items,$entity,web:dice())
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -26,27 +25,16 @@ as element(json)
|
|||
:)
|
||||
declare
|
||||
%rest:GET %rest:path("/vue-poc/api/job/{$job}")
|
||||
%rest:produces("application/json")
|
||||
%output:method("json")
|
||||
function j:job($job)
|
||||
as element(json)
|
||||
{
|
||||
let $j:=jobs:list-details($job)
|
||||
return <json type="object">
|
||||
{if($j) then j:job-json($j) else ()}
|
||||
</json>
|
||||
let $this:=$entity:list("basex.job")
|
||||
let $items:=$this?data()
|
||||
let $fields:=$this?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-container fluid >
|
||||
<v-expansion-panels>
|
||||
<v-expansion-panels v-model="panel" multiple>
|
||||
<v-expansion-panel expand >
|
||||
<v-expansion-panel-header>
|
||||
<v-layout>
|
||||
|
|
@ -78,7 +78,8 @@
|
|||
</v-layout>
|
||||
</v-expansion-panel-header>
|
||||
<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>
|
||||
</v-expansion-panel-content>
|
||||
</v-expansion-panel>
|
||||
|
|
@ -108,7 +109,7 @@
|
|||
{text: "description", value: "description"},
|
||||
{text: "xpath", value: "xpath"}
|
||||
],
|
||||
panel: [true, false, true]
|
||||
panel: [1,2]
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
|
|
|
|||
|
|
@ -1,44 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<template id="namespace">
|
||||
<v-container fluid>
|
||||
<v-card>
|
||||
|
||||
<v-toolbar >
|
||||
<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"
|
||||
>
|
||||
|
||||
<qd-table :headers="headers" data-uri="data/namespace" entity="namespace" item-key="xmlns">
|
||||
<template v-slot:item.xmlns="{ item }" >
|
||||
<td ><router-link :to="{path:'namespace/item?xmlns='+ item.xmlns}">
|
||||
<td ><router-link :to="{name:'namespace1', query:{ id: item.xmlns}}">
|
||||
{{ item.xmlns }}
|
||||
</router-link></td>
|
||||
</template>
|
||||
|
|
@ -50,60 +15,18 @@
|
|||
<template slot="no-data">
|
||||
No matching items.
|
||||
</template>
|
||||
</v-data-table>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</qd-table>
|
||||
</v-container>
|
||||
</template>
|
||||
|
||||
<script>{
|
||||
data: function(){
|
||||
return {
|
||||
items: [],
|
||||
loading: false,
|
||||
q: "",
|
||||
message: 'bad route!',
|
||||
|
||||
selected:[],
|
||||
headers: [
|
||||
|
||||
{ text: 'xmlns', value: 'xmlns' },
|
||||
|
||||
{ text: 'namespace', value: 'xmlns'},
|
||||
{ text: 'Description', value: 'description' },
|
||||
{ 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>
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
<v-toolbar >
|
||||
<v-toolbar-title>
|
||||
<v-breadcrumbs >
|
||||
<v-breadcrumbs-item to="/namespace" :exact="true">
|
||||
<v-breadcrumbs-item :to="{name: 'namespace'}" :exact="true">
|
||||
Namespaces
|
||||
</v-breadcrumbs-item>
|
||||
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
methods:{
|
||||
getItem(){
|
||||
this.loading=true
|
||||
HTTP.get("data/namespace/item",{id: this.xmlns})
|
||||
HTTP.get("data/namespace/item",{params: {id: this.xmlns}})
|
||||
.then(r=>{
|
||||
this.loading=false;
|
||||
console.log(r.data)
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
}
|
||||
},
|
||||
created:function(){
|
||||
this.xmlns=this.$route.query.xmlns;
|
||||
this.xmlns=this.$route.query.id;
|
||||
this.getItem()
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,6 @@ declare
|
|||
function _:model-list($id) {
|
||||
let $entity:=$entity:list("namespace")
|
||||
let $_:=trace($id," ID:")
|
||||
let $item:=$entity?data()[1]
|
||||
let $item:=dice:get($entity,$id,"xmlns")
|
||||
return dice:one($item,$entity)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,28 +14,24 @@
|
|||
<v-combobox
|
||||
v-model="entity"
|
||||
:items="entities" item-text="name"
|
||||
label="Select target" clearable open-on-clear
|
||||
></v-combobox>
|
||||
label="Select target" clearable open-on-clear>
|
||||
<template v-slot:item="{ parent, item }">
|
||||
<v-icon>{{ item.iconclass }}</v-icon>
|
||||
{{ item.name }}
|
||||
</template>
|
||||
</v-combobox>
|
||||
|
||||
</v-flex>
|
||||
|
||||
<table class="v-data-table">
|
||||
<v-simple-table>
|
||||
<template v-slot:default>
|
||||
<thead>
|
||||
<tr>
|
||||
<th xs1>url</th>
|
||||
<th xs1>Action</th>
|
||||
<th xs1>Repeat</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>
|
||||
<th v-for="col in columns " class="text-left">
|
||||
{{ col.label }}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
{{ entity && entity.name }}
|
||||
|
|
@ -73,7 +69,8 @@
|
|||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</template>
|
||||
</v-simple-table>
|
||||
|
||||
<h3>Value: <v-chip color="amber" text-color="white">{{counter}}</v-chip></h3>
|
||||
<pre>{{ result | pretty}}</pre>
|
||||
|
|
@ -91,7 +88,18 @@
|
|||
entity: null,
|
||||
counter: 0,
|
||||
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:{
|
||||
|
|
@ -13,10 +13,10 @@ declare %updating
|
|||
%rest:POST %rest:path("/vue-poc/api/ping")
|
||||
%output:method("text")
|
||||
function ping:dopost()
|
||||
{
|
||||
(replace value of node $ping:state/ping with 1+$ping:state/ping,
|
||||
update:output(1+$ping:state/ping))
|
||||
};
|
||||
{(
|
||||
replace value of node $ping:state/ping with 1+$ping:state/ping,
|
||||
update:output(1+$ping:state/ping)
|
||||
)};
|
||||
|
||||
(:~
|
||||
: 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-card-text>
|
||||
|
||||
<v-data-table
|
||||
:headers="headers"
|
||||
:items="filtered"
|
||||
|
|
|
|||
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"},
|
||||
valid: false,
|
||||
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";
|
||||
|
||||
(:~ delete from database if not if import files list
|
||||
@default false
|
||||
@default 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>
|
||||
</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">
|
||||
<title>Import files from drive into a database</title>
|
||||
<description>Load files into database</description>
|
||||
|
|
|
|||
|
|
@ -14,9 +14,6 @@
|
|||
v-model="view"
|
||||
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">
|
||||
<router-link :to="{path: 'run', append:true }" > <v-icon>play_circle_outline</v-icon>Run</router-link>
|
||||
|
|
|
|||
|
|
@ -1,18 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<template id="users">
|
||||
<v-container fluid>
|
||||
<qd-table :headers="headers" data-uri="data/basex.user" entity="user" 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.permission }}</td>
|
||||
</template>
|
||||
<qd-table :headers="headers" data-uri="data/basex.user" entity="basex.user" item-key="name" no-data-msg="No users found">
|
||||
</qd-table>
|
||||
</v-container>
|
||||
|
||||
|
|
@ -21,10 +10,6 @@
|
|||
<script>{
|
||||
data: function(){
|
||||
return {
|
||||
loading: false,
|
||||
items: [],
|
||||
search: null,
|
||||
selected: [],
|
||||
headers: [
|
||||
{ text: 'Name', value: 'name'},
|
||||
{ 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 $path file path contain files
|
||||
:)
|
||||
|
|
@ -40,7 +40,7 @@ declare %updating function dbtools:sync-from-path(
|
|||
{
|
||||
dbtools:sync-from-files($dbname,
|
||||
$path,
|
||||
file:list($path,fn:true()),
|
||||
file:list($path,fn:true(),"*.xml"),
|
||||
hof:id#1,
|
||||
$delete-missing
|
||||
)
|
||||
|
|
|
|||
|
|
@ -104,10 +104,10 @@ declare function dice:response($items,$entity as map(*))
|
|||
(:~
|
||||
: 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(*){
|
||||
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
|
||||
: @param $opts fields, space delimited fieldnames
|
||||
:)
|
||||
declare function dice:one($item,$entity as map(*),$opts as map(*))
|
||||
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";
|
||||
|
||||
module namespace mt = 'quodatum.data.mimetype';
|
||||
module namespace mt = 'urn:quodatum:data:mimetype';
|
||||
declare namespace MediaType='java:org.basex.util.http.MediaType';
|
||||
declare %basex:lazy variable $mt:lines:="media-types.properties"=>fn:unparsed-text-lines();
|
||||
|
||||
(:~
|
||||
: fetch function for given data type "text","xml","binary"
|
||||
: @return function()
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
(: 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';
|
||||
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 xqdoc='http://www.xqdoc.org/1.0';
|
||||
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 },
|
||||
"id": function($_ as element()) as xs:string {$_/@id },
|
||||
"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 },
|
||||
"registered": function($_ as element()) as xs:string {$_/@time },
|
||||
"start": function($_ as element()) as xs:string {$_/@start },
|
||||
|
|
@ -43,6 +45,10 @@ declare variable $entity:list:=map {
|
|||
(: xs:string :)
|
||||
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)? {
|
||||
(: xs:string :)
|
||||
fn:data($_/@reads)!element reads { .}
|
||||
|
|
@ -242,6 +248,44 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
|||
|
||||
"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{
|
||||
|
|
@ -368,44 +412,6 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
|||
|
||||
"views": map{
|
||||
'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{
|
||||
|
|
@ -566,10 +572,10 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
|||
"access": map{
|
||||
"description": function($_ as element()) as xs:string {$_/qns:description },
|
||||
"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{
|
||||
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')
|
||||
},
|
||||
"json": map{
|
||||
|
|
@ -583,7 +589,7 @@ hof:top-k-by(admin:logs(), string#1, 2)
|
|||
},
|
||||
"xmlns": function($_ as element()) as element(xmlns)? {
|
||||
(: xs:string :)
|
||||
fn:data($_/@uri)!element xmlns { .}
|
||||
fn:data($_/@xml:id)!element xmlns { .}
|
||||
} },
|
||||
|
||||
"data": function() as element(qns:namespace)*
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"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",
|
||||
"dependencies": {
|
||||
"ace": "1.4.12",
|
||||
"vuetify": "2.3.10",
|
||||
"ace-builds": "1.4.12",
|
||||
"vuetify": "2.3.13",
|
||||
"vue": "2.6.11",
|
||||
"vuex": "3.1.0",
|
||||
"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: 'taxonomy', component: Taxonomy, meta:{title:"Taxonomies"} },
|
||||
{ path: 'mimetype', component: Mimetype, meta:{title:"Mimetypes"} },
|
||||
{ path: 'namespace', component: Namespace, meta:{title:"Namespaces"} },
|
||||
{ path: 'namespace/item', component: Namespace1, meta:{title:"Namespace"} },
|
||||
{ path: 'namespace', name: "namespace", component: Namespace, meta:{title:"Namespaces"} },
|
||||
{ path: 'namespace/item', name: "namespace1", component: Namespace1, meta:{title:"Namespace"} },
|
||||
{ path: 'entity', component: Entity, meta:{title:"Entities"} },
|
||||
{ path: 'entity/:entity', component: { template: '<router-view/>' }
|
||||
,children: [
|
||||
|
|
@ -68,6 +68,7 @@ const router = new VueRouter({
|
|||
{ path: '/files', component: Files,meta:{title:"File system"},props:{protocol:"webfile"} },
|
||||
{ path: '/database', component: Files,meta:{title:"Databases"},props:{protocol:"xmldb"} },
|
||||
{ path: '/login', component: Login,meta:{title:"login"} },
|
||||
|
||||
{ path: '/settings', component: { template: '<router-view/>' }
|
||||
,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/>' }
|
||||
,children: [
|
||||
{
|
||||
|
|
@ -106,15 +114,16 @@ const router = new VueRouter({
|
|||
},
|
||||
|
||||
{ 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/: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: 'ping', component: Ping,meta:{title:"Ping"} },
|
||||
{ path: 'dicetest', component: Dicetest,meta:{title:"Dice test"} },
|
||||
|
||||
{ path: 'users', component: Users, meta:{title: "Users"} },
|
||||
{ path: 'repo', component: Repo,meta:{title:"Repository"} },
|
||||
{ path: 'repo', name: 'repo', component: Repo, meta:{title: "BaseX Repository"} },
|
||||
{ path: 'repo1', name: "repo1", component: Repo1, props: true, meta:{title: "Repository item"} },
|
||||
]
|
||||
},
|
||||
{ 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/icon?family=Material+Icons"/>
|
||||
<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="/vue-poc/ui/prism/prism.css" type="text/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="//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="//unpkg.com/vuetify@2.3.10/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.10/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="//unpkg.com/vuetify@2.3.13/dist/vuetify.min.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.12/ext-language_tools.js" crossorigin="anonymous"></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/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>
|
||||
|
|
|
|||
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