vuetify 1.1.4

This commit is contained in:
Andy Bunce 2018-07-10 23:16:42 +01:00
parent c5740af450
commit 5506b42789
14 changed files with 222 additions and 54 deletions

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<!--
show a entity link
-->
<template id="vp-entitylink">
<router-link :to="'entity/'+entity">E</router-link>
</template>
<script>{
props: ['entity']
}
</script>

View File

@ -0,0 +1,23 @@
<!DOCTYPE html>
<!--
show a validition report
-->
<template id="vp-validationreport">
<v-card v-if="report" >
<v-toolbar class="orange darken-1">
<v-card-title>Validation</v-card-title>
<span v-for="(value, key) in report.msgcounts">{{ key }}:{{ value }}</span>
</v-toolbar>
<v-card-text>
<pre >*** {{ report }}</pre>
</v-card-text>
</v-card>
</template>
<script>{
props: ['report']
}
</script>

Binary file not shown.

View File

@ -58,7 +58,10 @@ function vue-api:edit-post($url as xs:string,$data)
(:~
: Returns a file content.
:)
declare function vue-api:get-webfile($url as xs:string)
declare
%rest:GET %rest:path("/vue-poc/api/get")
%rest:query-param("url", "{$url}")
function vue-api:get-webfile($url as xs:string?)
as element(json)
{
let $path := ufile:web( $url)=>trace("path ")
@ -74,6 +77,29 @@ as element(json)
error(xs:QName('vue-api:raw'),$url)
};
(:~
: Returns a file content.
:)
declare
%rest:GET %rest:path("/vue-poc/api/get2")
%rest:query-param("url", "{$url}")
%output:method("json")
function vue-api:get-file($url as xs:string?)
as element(json)
{
let $path := $url
return if( file:exists($path))then
let $type:=mt:type($path)
let $fetch:=mt:fetch-fn($type("treat-as"))
return <json type="object" >
<url>{$url}</url>
<mimetype>{$type?type}</mimetype>
<data>{$fetch($path)}</data>
</json>
else
error(xs:QName('vue-api:raw'),$url)
};
(:~
: Returns a file content.
:)

View File

@ -263,11 +263,15 @@
},
loadItem(url){
HTTP.get("get",{params: {url:url}})
HTTP.get("get2",{params: {url:url}})
.then(r=>{
//console.log(r)
alert("go")
//alert(mode)
console.log(r)
var tab={
text: ""+ r.data.data,
location: url,
name: url.split(/.*[\/|\\]/)[1]
};
this.addItem(tab);
})
.catch(error=> {
console.log(error);

View File

@ -1,18 +1,29 @@
<!DOCTYPE html>
<template id="namespace">
<v-container fluid grid-list-md>
<v-toolbar >
<v-toolbar-title>Namespaces</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn @click="load"
<v-btn @click="load"
:loading="loading"
:disabled="loading"
>Refresh</v-btn>
Text
><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"
:append-icon="this.q?'clear':''" :append-icon-cb="e=>this.q=''"></v-text-field>
<v-spacer></v-spacer>
<vp-entitylink entity="namespace"></vp-entitylink>
</v-toolbar>
<v-data-table
:headers="headers"
:items="items"
:items="filtered"
hide-actions
class="elevation-1"
>
@ -25,8 +36,8 @@
</template>
<template slot="no-data">
<v-alert :value="true" color="error" icon="warning">
Sorry, nothing to display here :(
<v-alert :value="true" icon="warning">
No matching items.
</v-alert>
</template>
</v-data-table>
@ -71,8 +82,25 @@
});
},
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()
}
},
computed: {
filtered(){
var regex = new RegExp( this.q, "i");
return this.items.filter(item=>{return ((!this.q) || regex.test(item.description))})
}
},
created:function(){
this.q=this.$route.query.q || this.q;
this.load();

View File

@ -52,7 +52,7 @@
data: function(){
return {
params:{
efolder:"C:/Users/andy/git/vue-poc/src/vue-poc/models",
efolder:"C:/Users/andy/git/vue-poc/src/vue-poc/models/entities",
target:"C:/Users/andy/git/vue-poc/src/vue-poc/models.gen.xqm"
},
waiting:false,

View File

@ -64,12 +64,12 @@
<script>{
data(){
return {
image:"https://cdn.pixabay.com/photo/2017/10/31/07/49/horses-2904536_960_720.jpg",
image:"https://upload.wikimedia.org/wikipedia/commons/c/c1/Lycidae-Kadavoor-2017-05-22-001.jpg",
step: 0,
taskxml:"<task></task>",
items:[
{
src: 'https://cdn.pixabay.com/photo/2017/10/31/07/49/horses-2904536_960_720.jpg'
src: 'https://upload.wikimedia.org/wikipedia/commons/c/c1/Lycidae-Kadavoor-2017-05-22-001.jpg'
}]
}
},

View File

@ -32,15 +32,18 @@
<v-card-text v-resize="onResize" style="height:100px" ref="auto">
<v-container fluid>
<v-layout row wrap>
<v-flex xs8>
<v-text-field v-for="field in fields" :key="field.model"
v-model="params[field.model]" :label="field.label" clearable :rules="[rules.required]" box
></v-text-field>
<v-layout row wrap>
<v-flex xs8>
<v-flex v-for="field in fields" :key="field.model" >
<v-text-field xs10
v-model="params[field.model]" :label="field.label"
clearable :rules="[rules.required]" box
append-outer-icon="send" @click:append-outer="source(field)"
></v-text-field>
</v-flex>
</v-flex>
<v-flex xs4 fill-height style="overflow:scroll">
<pre >Result: {{ result }}</pre>
<v-flex xs4 green fill-height style="height:100%;overflow:scroll">
<vp-validationreport :report="result"></vp-validationreport>
</v-flex>
</v-layout>
</v-container>
@ -66,7 +69,7 @@
required: value => !!value || 'Required.'
},
params:{
doc: "C:/Users/andy/git/vue-poc/src/vue-poc/models/adminlog.xml",
doc: "C:/Users/andy/git/vue-poc/src/vue-poc/models/entities/adminlog.xml",
schema: "C:/Users/andy/git/vue-poc/src/vue-poc/models/schemas/entity.xsd"
},
snackbar:{show:false,msg:"",context:"success"}
@ -82,6 +85,11 @@
el.style.height=h +"px";
},
source(field){
console.log("field: ",field);
router.push({ path: 'tabs', query: { url:this.params[field.model]}})
},
validate(){
this.loading=true
this.start = performance.now();

View File

@ -1,5 +1,5 @@
(: entity access maps
: auto generated from xml files in entities folder at: 2018-06-27T22:03:58.364+01:00
: auto generated from xml files in entities folder at: 2018-07-07T11:46:28.985+01:00
:)
module namespace entity = 'quodatum.models.generated';
@ -108,7 +108,7 @@ declare variable $entity:list:=map {
"code": function($_ as element()) as xs:string? {$_/ent:data },
"description": function($_ as element()) as xs:string {$_/ent:description },
"fieldslink": function($_ as element()) as xs:string {$_/fn:concat("/data/entity/",@name,"/field") },
"iconclass": function($_ as element()) as xs:string {$_/ent:iconclass },
"iconclass": function($_ as element()) as xs:string {$_/ent:views/@iconclass },
"modules": function($_ as element()) as xs:string? {$_/ent:module/concat("import module namespace ",@prefix,"='",@namespace,"';
")=>string-join() },
"name": function($_ as element()) as xs:string {$_/@name },
@ -138,7 +138,7 @@ declare variable $entity:list:=map {
},
"iconclass": function($_ as element()) as element(iconclass)? {
(: xs:string :)
fn:data($_/ent:iconclass)!element iconclass { .}
fn:data($_/ent:views/@iconclass)!element iconclass { .}
},
"modules": function($_ as element()) as element(modules)? {
(: xs:string? :)
@ -446,7 +446,7 @@ declare variable $entity:list:=map {
},
"user": map{
"name": "user",
"description": "users ",
"description": "A BaseX user ",
"access": map{
"name": function($_ as element()) as xs:string {$_/@name },
"permission": function($_ as element()) as xs:string {$_/@permission } },

View File

@ -1,9 +1,8 @@
<entity name="entity.field" xmlns="https://github.com/Quodatum/app-doc/entity">
<has-a name="entity" />
<description>About an entity field. </description>
<namespace prefix="ent"
uri="https://github.com/Quodatum/app-doc/entity" />
<fields>
<fields parent="entity">
<field name="name" type="xs:string">
<description>name</description>
<xpath>@name</xpath>

View File

@ -27,6 +27,7 @@
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="parent" use="optional"/>
</xs:complexType>
</xs:element>

View File

@ -1,4 +1,4 @@
// generated 2018-07-06T22:33:10.411+01:00
// generated 2018-07-10T23:15:53.605+01:00
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/components/qd-autoheight.vue
Vue.component('qd-autoheight',{template:`
@ -327,6 +327,16 @@ Vue.component('vis-time-line',{template:`
}
);
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/components/vp-entitylink.vue
Vue.component('vp-entitylink',{template:`
<router-link :to="'entity/'+entity">E</router-link>
`,
props: ['entity']
}
);
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/components/vp-favorite.vue
Vue.component('vp-favorite',{template:`
<v-menu :close-on-click="false" offset-x="" :close-on-content-click="false" :nudge-width="200" v-model="frmfav">
@ -609,6 +619,27 @@ Vue.component('vp-selectpath',{template:`
}
);
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/components/vp-validationreport.vue
Vue.component('vp-validationreport',{template:`
<v-card v-if="report">
<v-toolbar class="orange darken-1">
<v-card-title>Validation</v-card-title>
<span v-for="(value, key) in report.msgcounts">{{ key }}:{{ value }}</span>
</v-toolbar>
<v-card-text>
<pre>*** {{ report }}</pre>
</v-card-text>
</v-card>
`,
props: ['report']
}
);
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/components/vue-ace.vue
Vue.component('vue-ace',{template:`
<div style="width: 100%; height: 100%;"></div>
@ -2418,11 +2449,15 @@ const Tabs=Vue.extend({template:`
},
loadItem(url){
HTTP.get("get",{params: {url:url}})
HTTP.get("get2",{params: {url:url}})
.then(r=>{
//console.log(r)
alert("go")
//alert(mode)
console.log(r)
var tab={
text: ""+ r.data.data,
location: url,
name: url.split(/.*[\/|\\]/)[1]
};
this.addItem(tab);
})
.catch(error=> {
console.log(error);
@ -4052,13 +4087,22 @@ const Entity1=Vue.extend({template:`
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/features/model/namespace.vue
const Namespace=Vue.extend({template:`
<v-container fluid="" grid-list-md="">
<v-toolbar>
<v-toolbar-title>Namespaces</v-toolbar-title>
<v-btn @click="load" :loading="loading" :disabled="loading"><v-icon>refresh</v-icon></v-btn>
<v-spacer></v-spacer>
<v-btn @click="load" :loading="loading" :disabled="loading">Refresh</v-btn>
Text
<v-text-field prepend-icon="filter_list" label="Filter..." v-model="q" type="search" hide-details="" single-line="" @keyup.enter="setfilter" :append-icon="this.q?'clear':''" :append-icon-cb="e=>this.q=''"></v-text-field>
<v-spacer></v-spacer>
<vp-entitylink entity="namespace"></vp-entitylink>
</v-toolbar>
<v-data-table :headers="headers" :items="items" hide-actions="" class="elevation-1">
<v-data-table :headers="headers" :items="filtered" hide-actions="" class="elevation-1">
<template slot="items" slot-scope="props">
<td><router-link :to="{path:'namespace/item?xmlns='+ props.item.xmlns}">
{{ props.item.xmlns }}
@ -4068,8 +4112,8 @@ const Namespace=Vue.extend({template:`
</template>
<template slot="no-data">
<v-alert :value="true" color="error" icon="warning">
Sorry, nothing to display here :(
<v-alert :value="true" icon="warning">
No matching items.
</v-alert>
</template>
</v-data-table>
@ -4113,8 +4157,25 @@ const Namespace=Vue.extend({template:`
});
},
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()
}
},
computed: {
filtered(){
var regex = new RegExp( this.q, "i");
return this.items.filter(item=>{return ((!this.q) || regex.test(item.description))})
}
},
created:function(){
this.q=this.$route.query.q || this.q;
this.load();
@ -4987,7 +5048,7 @@ const Model=Vue.extend({template:`
data: function(){
return {
params:{
efolder:"C:/Users/andy/git/vue-poc/src/vue-poc/models",
efolder:"C:/Users/andy/git/vue-poc/src/vue-poc/models/entities",
target:"C:/Users/andy/git/vue-poc/src/vue-poc/models.gen.xqm"
},
waiting:false,
@ -5354,12 +5415,12 @@ const Thumbnail=Vue.extend({template:`
data(){
return {
image:"https://cdn.pixabay.com/photo/2017/10/31/07/49/horses-2904536_960_720.jpg",
image:"https://upload.wikimedia.org/wikipedia/commons/c/c1/Lycidae-Kadavoor-2017-05-22-001.jpg",
step: 0,
taskxml:"<task></task>",
items:[
{
src: 'https://cdn.pixabay.com/photo/2017/10/31/07/49/horses-2904536_960_720.jpg'
src: 'https://upload.wikimedia.org/wikipedia/commons/c/c1/Lycidae-Kadavoor-2017-05-22-001.jpg'
}]
}
},
@ -5470,13 +5531,14 @@ const Validate=Vue.extend({template:`
<v-card-text v-resize="onResize" style="height:100px" ref="auto">
<v-container fluid="">
<v-layout row="" wrap="">
<v-flex xs8="">
<v-text-field v-for="field in fields" :key="field.model" v-model="params[field.model]" :label="field.label" clearable="" :rules="[rules.required]" box=""></v-text-field>
<v-layout row="" wrap="">
<v-flex xs8="">
<v-flex v-for="field in fields" :key="field.model">
<v-text-field xs10="" v-model="params[field.model]" :label="field.label" clearable="" :rules="[rules.required]" box="" append-outer-icon="send" @click:append-outer="source(field)"></v-text-field>
</v-flex>
</v-flex>
<v-flex xs4="" fill-height="" style="overflow:scroll">
<pre>Result: {{ result }}</pre>
<v-flex xs4="" green="" fill-height="" style="height:100%;overflow:scroll">
<vp-validationreport :report="result"></vp-validationreport>
</v-flex>
</v-layout>
</v-container>
@ -5501,7 +5563,7 @@ const Validate=Vue.extend({template:`
required: value => !!value || 'Required.'
},
params:{
doc: "C:/Users/andy/git/vue-poc/src/vue-poc/models/adminlog.xml",
doc: "C:/Users/andy/git/vue-poc/src/vue-poc/models/entities/adminlog.xml",
schema: "C:/Users/andy/git/vue-poc/src/vue-poc/models/schemas/entity.xsd"
},
snackbar:{show:false,msg:"",context:"success"}
@ -5517,6 +5579,11 @@ const Validate=Vue.extend({template:`
el.style.height=h +"px";
},
source(field){
console.log("field: ",field);
router.push({ path: 'tabs', query: { url:this.params[field.model]}})
},
validate(){
this.loading=true
this.start = performance.now();

View File

@ -11,7 +11,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 href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>
<link href="//unpkg.com/vuetify@1.1.1/dist/vuetify.min.css" rel="stylesheet" type="text/css"/>
<link href="//unpkg.com/vuetify@1.1.4/dist/vuetify.min.css" rel="stylesheet" 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/vue-form-generator@2.2.2/dist/vfg-core.css"/>
<link href="/vue-poc/ui/app.css" rel="stylesheet" type="text/css"/>
@ -38,7 +38,7 @@
<script src="//cdnjs.cloudflare.com/ajax/libs/vue-router/3.0.1/vue-router.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.17.1/axios.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@1.1.1/dist/vuetify.min.js" crossorigin="anonymous"></script>
<script src="//unpkg.com/vuetify@1.1.4/dist/vuetify.min.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ext-language_tools.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ext-linking.js" type="text/javascript" charset="utf-8"></script>