vuetify 1.5.7

This commit is contained in:
Andy Bunce 2019-03-27 12:28:53 +00:00
parent 8de2101d99
commit 5fe9b6ab18
23 changed files with 531 additions and 285 deletions

View file

@ -1,4 +1,4 @@
// Mimetype info
// Mimetype info as vue extension. defines $MimeTypes
//
//
const MimeTypes=new function(){

Binary file not shown.

View file

@ -9,7 +9,7 @@
<v-chip v-else color="danger">invalid</v-chip>
<v-btn color="primary" @click="$refs.myForm.validate()">validate</v-btn>
<v-spacer></v-spacer>
<qd-link href="https://github.com/koumoul-dev/vuetify-jsonschema-form/">vuetify-jsonschema-form@0.21.0</qd-link>
<qd-link href="https://github.com/koumoul-dev/vuetify-jsonschema-form/">vuetify-jsonschema-form@0.24.1</qd-link>
</v-toolbar>
<v-card-actions>
<v-layout row wrap>

View file

@ -1,27 +1,36 @@
<!DOCTYPE html>
<template id="home">
<v-card hover raised>
<v-card raised>
<v-card-title>links</v-card-title>
<v-card-text>
<p>
links
</p>
<ul>
<li><router-link :to="{path:'files', query:{url:'/vue-poc/'}}"> <v-icon>developer_mode</v-icon>vue-poc files</router-link></li>
<li><router-link :to="{path:'database', query:{url:'/vue-poc/'}}"> <v-icon>folder</v-icon>vue-poc db</router-link></li>
<li><a href="/doc/#/data/app/vue-poc" target="new">doc</a></li>
<li><a href="/dba" target="new">DBA app</a></li>
<li><a href="/vue-poc/ui/database?url=%2Fvue-poc%2F" target="new">db</a></li>
<li><router-link :to="{path:'files', query:{url:'/vue-poc/features/images/'}}">vue-poc image tasks</router-link></li>
</ul>
<v-btn floating="floating"> <v-icon>add</v-icon>
</v-btn> <qd-link href="/dba">REPLACED</qd-link>
</v-card-text>
<v-card-text>
<v-list dense >
<v-list-tile @click="">
<router-link :to="{path:'files', query:{url:'/vue-poc/'}}"> <v-icon>developer_mode</v-icon>vue-poc files</router-link>
</v-list-tile >
<v-list-tile @click="">
<router-link :to="{path:'database', query:{url:'/vue-poc/'}}"> <v-icon>folder</v-icon>vue-poc db</router-link>
</v-list-tile >
<v-list-tile @click="">
<a href="/doc/#/data/app/vue-poc" target="new">doc</a>
</v-list-tile>
<v-list-tile @click="">
<a href="/dba" target="new">DBA app</a>
</v-list-tile>
<v-list-tile @click="">
<a href="/vue-poc/ui/database?url=%2Fvue-poc%2F" target="new">db</a>
</v-list-tile>
<v-list-tile @click="">
<router-link :to="{path:'files', query:{url:'/vue-poc/features/images/'}}">vue-poc image tasks</router-link>
</v-list-tile>
</v-list>
</v-card-text>
<v-card-actions>
<v-btn floating="floating"> <v-icon>add</v-icon>
</v-btn> <qd-link href="/dba">REPLACED</qd-link>
</v-card-actions>
</v-card>
</template>
<script>

View file

@ -1,3 +1,4 @@
xquery version "3.1";
(:~
: entity rest interface
: defines urls below vue-poc/data/entity/

View file

@ -1,8 +1,12 @@
module namespace j = 'quodatum.test.xqdoc';
xquery version "3.1";
(:~
: job info
:)
module namespace j = 'quodatum.test.xqdoc';
(:~
: job list
: job list (currently dummy list)
:)
declare
%rest:GET %rest:path("/vue-poc/api/xqdocjob")
@ -21,7 +25,7 @@ as element(json)
};
(:~
: job info
: job info (currently dummy item)
:)
declare
%rest:GET %rest:path("/vue-poc/api/xqdocjob/{$job}")

View file

@ -1,8 +1,10 @@
xquery version "3.1";
(:~
: get basex settings default and current
:)
module namespace set = 'quodatum.test.basexsettings';
(:~
: basex settings default and current
:)
declare
%rest:GET %rest:path("/vue-poc/api/server/basexsettings")
%rest:produces("application/json")

View file

@ -1,9 +1,13 @@
xquery version "3.1";
(:~
: Simple server performance test
:)
module namespace ping = 'quodatum.test.ping';
declare variable $ping:db as xs:string:="vue-poc";
declare %basex:lazy variable $ping:state as element(state):=db:open($ping:db,"/state.xml")/state;
(:~
: ping incr counter
: incr counter
:)
declare %updating
%rest:POST %rest:path("/vue-poc/api/ping")
@ -15,7 +19,7 @@ function ping:dopost()
};
(:~
: ping incr counter
: read counter
:)
declare
%output:method("text")
@ -26,7 +30,7 @@ function ping:dostate()
};
(:~
: ping fastest no work
: return simple constant
:)
declare
%output:method("text")

View file

@ -23,6 +23,12 @@
<description>XQdoc.2..</description>
</task>
<task name="xqdoc3" url="xqdoc/tx-xqdoc3.xq">
<title>XQdoc to static</title>
<description>Generate xquery documentation for folder to static folder
</description>
</task>
<task name="vuecompile">
<title>vue compile</title>
<description>compile</description>

View file

@ -12,7 +12,7 @@ declare namespace c="http://www.w3.org/ns/xproc-step";
declare variable $efolder as xs:anyURI external :=
xs:anyURI("C:/Users/andy/git/vue-poc/src/vue-poc");
(:~ URL of the schema to use
(:~ file URL root folder for saving results
: @default C:/tmp/xqdoc/
:)
declare variable $target as xs:anyURI external :=

View file

@ -0,0 +1,73 @@
(:~
: Generate html for for XQuery sources
: @return info about the run (json format)
:)
import module namespace xqd = 'quodatum:build.xqdoc' at "../../../lib/xqdoc/xqdoc-proj.xqm";
import module namespace store = 'quodatum.store' at "../../../lib/store.xqm";
declare namespace c="http://www.w3.org/ns/xproc-step";
declare namespace xqdoc="http://www.xqdoc.org/1.0";
(:~ URL of the root folder to document
: @default C:/Users/andy/git/vue-poc/src/vue-poc
:)
declare variable $efolder as xs:anyURI external := xs:anyURI("C:/Users/andy/git/vue-poc/src/vue-poc");
declare variable $id as element(last-id):=db:open("vue-poc","/state.xml")/state/last-id;
let $target:="file:///" || db:option("webpath") || "/static/xqdoc/" || $id || "/"
let $project:=tokenize($efolder,"[/\\]")[last()]
let $opts:=map{
"src-folder": $efolder,
"project": $project,
"ext-id": $id/string()
}
let $state:=xqd:read($efolder)=>trace("READ: ")
let $imports:= xqd:imports($state)?xqdoc=>head()
let $modmap:=for $file at $pos in $state?files
let $params:=map:merge((map{
"source": "** source**",
"filename": "**FILE**",
"cache": $xqd:cache,
"show-private": true(),
"root": "../",
"resources": "resources/"},
$opts))
return (
map{
"uri": ``[f`{ $pos}`/xqdoc.xml]``,
"document": $file?xqdoc,
"opts": $xqd:XML
},
map{
"uri": ``[f`{ $pos}`/xqparse.xml]``,
"document": $file?xqparse,
"opts": $xqd:XML
},
map{
"uri": ``[f`{ $pos}`/index.html]``,
"document": xqd:xqdoc-html($file?xqdoc,$params),
"opts": $xqd:HTML5
}
)
let $indexmap:=
map{
"uri": ``[index.html]``,
"document": <html><title>todo</title></html>,
"opts": $xqd:HTML5
}
return (
store:store(($indexmap,$modmap),$target),
xqd:export-resources2($target),
replace value of node $id with 1+$id,
update:output(
<json type="object">
<extra>XQdoc generated</extra>
<msg> {$target}, {count($state?files)} files processed.</msg>
<id>{$id/string()}</id>
</json>
)
)

View file

@ -1,88 +0,0 @@
(:~
: XQDoc: generate restxq.html from resources located at $target
:)
import module namespace xqd = 'quodatum:build.xqdoc' at "../../../lib/xqdoc/xqdoc-proj.xqm";
import module namespace store = 'quodatum.store' at "../../../lib/store.xqm";
declare namespace c="http://www.w3.org/ns/xproc-step";
declare namespace xqdoc="http://www.xqdoc.org/1.0";
(:~ URL of the doc source
: @default file:///C:/tmp/xqdoc/
:)
declare variable $target as xs:anyURI external :=
"file:///C:/tmp/xqdoc/" cast as xs:anyURI;
declare variable $nsRESTXQ:='http://exquery.org/ns/restxq';
declare variable $files :=doc(resolve-uri("files.xml",$target));
declare function local:xqdoc-url($key as item())
as xs:anyURI
{
resolve-uri(``[F`{ string($key) }`/xqdoc.xml]``,$target)
};
declare function local:item($doc as item()*,$key as item())
as map(*)?
{
if($doc) then map{"key":$key,"value":$doc} else ()
};
let $base:=$files/*/@xml:base/string()
let $files:= $files//c:file
let $names:= $files!string-join(ancestor-or-self::*/@name,"/")
let $xqdocs:=$files!doc(local:xqdoc-url(position()))
let $paths:= $xqdocs!local:item(xqd:annotations(*, $nsRESTXQ,"path"),position())
let $items:=
for $annots in $paths
let $uri:=$annots?d/string()
group by $uri
order by $uri
return <li>
<h3>{ $uri }</h3>
<ol>{
for $annot in $annots
let $fun:=$annot?doc/../..
let $funname:=concat($fun/xqdoc:name/string(),'#',$fun/@arity/string())
let $href:="F12/index.html#field-list"
return <li><a href="{$href}">{$funname}</a>{$annot?key}</li>
}</ol>
<a>{ $uri }</a>
</li>
let $op:= <div>
<nav id="toc">
<div>
<a href="index.html">
Index
</a>
</div>
<h2>
<a id="contents"></a>
<span class="namespace">
RestXQ
</span>
</h2>
<ol class="toc">
<li>
<a href="#main">
<span class="secno">1 </span>
<span class="content">Introduction</span>
</a>
</li>
</ol>
</nav>
<a href="index.html">index: { $base }</a>
<ul>{ $items }</ul>
</div>
=>xqd:page(map{"resources":"resources/"})
=>xqd:store2(resolve-uri("restxq.html",$target),$xqd:HTML5)
let $result:=<json type="object">
<extra>hello</extra>
<msg> {$target}, {count($files//c:file)} files processed.</msg>
<id>none</id>
</json>
return (
store:store($op,$target),update:output($result)
)

View file

@ -2,6 +2,7 @@
: XQDoc: generate restxq.html from resources located at $target
:)
import module namespace xqd = 'quodatum:build.xqdoc' at "../../../lib/xqdoc/xqdoc-proj.xqm";
import module namespace xqhtml = 'quodatum:build.xqdoc-html' at "../../../lib/xqdoc/xqdoc-html.xqm";
import module namespace store = 'quodatum.store' at "../../../lib/store.xqm";
import module namespace tree = 'quodatum.data.tree' at "../../../lib/tree.xqm";
@ -15,9 +16,8 @@ declare namespace xqdoc="http://www.xqdoc.org/1.0";
declare variable $target as xs:anyURI external :=
"file:///C:/tmp/xqdoc/" cast as xs:anyURI;
declare variable $nsRESTXQ:= 'http://exquery.org/ns/restxq';
(:~ map for each restxq:path
(:~ sequence of maps for each restxq:path
: @param
:)
declare function local:import($path,
@ -27,7 +27,7 @@ as map(*)*
{
let $uri:=``[modules/F`{ string($id) }`/]``
let $doc:=doc(resolve-uri($uri || "xqdoc.xml",$folder))
let $annots:=xqd:annotations($doc/*, $nsRESTXQ,"path")
let $annots:=xqd:annotations($doc/*, $xqd:nsRESTXQ,"path")
return $annots!map{
"id": $id,
"uri": $uri,
@ -82,7 +82,7 @@ let $op:= <div>
<ul>{$reps!local:path-to-html(.)}</ul>
</div>
return xqd:page($op,map{"resources": "resources/"})
return xqhtml:page($op,map{"resources": "resources/"})
};
(:~ tree to list :)
@ -143,7 +143,7 @@ let $data:=map:merge(for $report in $reports
let $methods:= map:merge(
for $annot in $report
let $hits:=for $method in $xqd:methods
let $hit:= xqd:methods($annot?annot/.., $nsRESTXQ, $method)
let $hit:= xqd:methods($annot?annot/.., $xqd:nsRESTXQ, $method)
return if(empty($hit)) then () else map{$method: $annot}
return if(exists($hits))then $hits else map{"ALL":$annot}

View file

@ -10,18 +10,12 @@ module namespace store = 'quodatum.store';
declare %updating
function store:store($docs as map(*)*,$base as xs:string)
{
let $base:=if(contains($base,"\"))then file:path-to-uri($base) else $base
return $docs!store:store1(.,trace($base,">>>>>"))
};
declare %updating
function store:store1($doc as map(*),$base as xs:string)
{
let $uri:=resolve-uri($doc?uri,$base)
let $opts:=if($doc?uri instance of map(*)) then $doc?uri else map{}
return switch (substring-before($uri,":"))
case "file" return store:file($doc?document,$uri,$opts)
case "xmldb" return store:xmldb($doc?document,$uri,$opts)
for $doc in $docs
let $uri:=resolve-uri($doc?uri,$base)
let $opts:=if(map:contains($doc,"opts")) then $doc?opts else map{}
return switch (substring-before($uri,":"))
case "file" return store:file($doc?document,substring-after($uri,"file:///"),$opts)
case "xmldb" return store:xmldb($doc?document,uri,$opts)
default return error("unknown protocol:" || $uri)
};
@ -31,10 +25,10 @@ function store:store1($doc as map(*),$base as xs:string)
declare %updating
function store:file($data,$uri as xs:string,$params as map(*))
{
let $p:=file:parent($uri)
let $p:=file:parent($uri=>trace("****"))
return (
if(file:is-dir($p)) then () else file:create-dir($p),
file:write($uri,$data,$params)
file:write($uri,$data=>trace("**ddd**"),$params)
)
};

View file

@ -4,15 +4,17 @@
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:qd="http://www.quodatum.com/ns/xsl" exclude-result-prefixes="xs doc fn"
version="3.0">
<xsl:import href="xqdoc.xsl"/>
<xsl:import href="xqdoc.xsl" />
<!-- Standalone xqdoc:xqdoc transform mode"restxq" -->
<xsl:param name="project" as="xs:string" select="'unknown'"/>
<xsl:param name="source" as="xs:string" >Source not available</xsl:param>
<xsl:param name="project" as="xs:string" select="'unknown'" />
<xsl:param name="source" as="xs:string">
Source not available
</xsl:param>
<xsl:param name="filename" as="xs:string" select="'?file'" />
<xsl:param name="ext-id" as="xs:string"></xsl:param>
<xsl:param name="show-private" as="xs:boolean" select="false()" />
<xsl:param name="resources" as="xs:string" select="'resources/'" />
<xsl:param name="root" as="xs:string" select="'../../'" />
<xsl:param name="root" as="xs:string" select="'../../'" />
<xsl:variable name="index" select="concat($root,'index.html')" />
<xsl:variable name="vars"
select="//doc:variable[$show-private or not(doc:annotations/doc:annotation/@name='private')]" />
@ -37,14 +39,15 @@
<xsl:value-of select="$ext-id" />
</title>
<xsl:call-template name="resources">
<xsl:with-param name="path" select="concat($root,$resources)"/>
</xsl:call-template>
<xsl:with-param name="path" select="concat($root,$resources)" />
</xsl:call-template>
</head>
<body class="home" id="top">
<div id="main">
<xsl:apply-templates select="doc:module" />
<xsl:call-template name="toc" />
<xsl:apply-templates select="doc:imports" />
<xsl:apply-templates select="doc:variables" />
<xsl:apply-templates select="doc:functions" />
@ -53,8 +56,10 @@
mode="restxq" />
<div>
<h3 id="source">Original Source Code</h3>
<pre >
<code class="language-xquery"><xsl:value-of select="$source" /></code>
<pre>
<code class="language-xquery">
<xsl:value-of select="$source" />
</code>
</pre>
</div>
<br />
@ -83,13 +88,15 @@
<xsl:template match="doc:module">
<h1>
<span class="tag tag-success">
<xsl:value-of select="doc:uri" />
</span>
<small>&#160;
<xsl:value-of select="@type" /> module
<span class="tag tag-success">
<xsl:value-of select="doc:uri" />
</span>
<small>
&#160;
<xsl:value-of select="@type" />
module
</small>
</h1>
<dl>
<xsl:apply-templates select="doc:comment/doc:description" />
@ -104,6 +111,35 @@
</dl>
</xsl:template>
<xsl:template match="doc:imports[doc:import]">
<div id="imports">
<h3>
<a href="#imports">Imports</a>
</h3>
<table class="data" style="float:none">
<thead>
<tr>
<th>Type</th>
<th>Uri</th>
</tr>
</thead>
<tbody>
<xsl:for-each select="doc:import">
<xsl:sort select="lower-case(doc:uri)" />
<tr>
<td>
<xsl:value-of select="string(@type)" />
</td>
<td>
<xsl:value-of select="string(doc:uri)" />
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</div>
</xsl:template>
<xsl:template match="doc:namespaces[doc:namespace]">
<div id="namespaces">
<h3>
@ -163,7 +199,7 @@
<xsl:value-of select="doc:type/@occurrence" />
</dd>
</dl>
<xsl:apply-templates select="doc:annotations" />
</div>
</xsl:template>
@ -332,26 +368,28 @@
</xsl:template>
<xsl:template match="doc:annotations">
<table class="data">
<caption style="text-align: left;">Annotations</caption>
<tbody>
<xsl:for-each select="doc:annotation">
<tr>
<td>
<code class="function">
<xsl:text>%</xsl:text>
<xsl:value-of select="@name" />
</code>
</td>
<td>
<code class="arg">
<xsl:value-of select="doc:literal" />
</code>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
<details>
<summary>Annotations</summary>
<table class="data">
<tbody>
<xsl:for-each select="doc:annotation">
<tr>
<td>
<code class="function">
<xsl:text>%</xsl:text>
<xsl:value-of select="@name" />
</code>
</td>
<td>
<code class="arg">
<xsl:value-of select="doc:literal" />
</code>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</details>
</xsl:template>
<xsl:template match="doc:comment">
@ -423,7 +461,9 @@
<div>
<a href="{$index}">
&#8624;
<xsl:value-of select="$project" /> :id= <xsl:value-of select="$ext-id" />
<xsl:value-of select="$project" />
:id=
<xsl:value-of select="$ext-id" />
</a>
</div>
<h2>
@ -557,12 +597,12 @@
select="$fun/doc:annotations/doc:annotation[@name='updating']" />
<xsl:sequence select="not(empty($found))" />
</xsl:function>
<!-- generate span with method name eg GET -->
<xsl:template match="method" mode="name">
<xsl:variable name="name" select="string(@name)" />
<span>
<xsl:attribute name="class">
<xsl:template match="method" mode="name">
<xsl:variable name="name" select="string(@name)" />
<span>
<xsl:attribute name="class">
<xsl:text>wadl-method label </xsl:text>
<xsl:choose>
<xsl:when test="$name='GET'">
@ -579,37 +619,37 @@
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="if($name = '')then '(ALL)' else $name" />
</span>
</xsl:template>
<xsl:template match="representation" mode="mediaType">
<xsl:variable name="mediaType" select="@mediaType" />
<span class="label label-default label-pill pull-xs-right" title="{$mediaType}">
<xsl:choose>
<xsl:when test="$mediaType='text/html'">
<xsl:text>H</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='application/octet-stream'">
<xsl:text>B</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='application/xml'">
<xsl:text>X</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='text/plain'">
<xsl:text>T</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='application/json'">
<xsl:text>J</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='image/svg+xml'">
<xsl:text>S</xsl:text>
</xsl:when>
<xsl:value-of select="if($name = '')then '(ALL)' else $name" />
</span>
</xsl:template>
<xsl:otherwise>
?
</xsl:otherwise>
</xsl:choose>
</span>
</xsl:template>
<xsl:template match="representation" mode="mediaType">
<xsl:variable name="mediaType" select="@mediaType" />
<span class="label label-default label-pill pull-xs-right" title="{$mediaType}">
<xsl:choose>
<xsl:when test="$mediaType='text/html'">
<xsl:text>H</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='application/octet-stream'">
<xsl:text>B</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='application/xml'">
<xsl:text>X</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='text/plain'">
<xsl:text>T</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='application/json'">
<xsl:text>J</xsl:text>
</xsl:when>
<xsl:when test="$mediaType='image/svg+xml'">
<xsl:text>S</xsl:text>
</xsl:when>
<xsl:otherwise>
?
</xsl:otherwise>
</xsl:choose>
</span>
</xsl:template>
</xsl:stylesheet>

Binary file not shown.

View file

@ -988,6 +988,7 @@ Possible extra rowspan handling
.toc > li li li .secno { margin-left: -7rem; }
.toc > li li li li .secno { margin-left: -9rem; }
.toc > li li li li li .secno { margin-left: -11rem; }
.toc > li li li li li .secno { margin-left: -13rem; }
/* Tighten up indentation in narrow ToCs */
@media (max-width: 30em) {
@ -997,6 +998,7 @@ Possible extra rowspan handling
.toc > li li li .secno { margin-left: -5rem; }
.toc > li li li li .secno { margin-left: -6rem; }
.toc > li li li li li .secno { margin-left: -7rem; }
.toc > li li li li li li .secno { margin-left: -8rem; }
}
@media screen and (min-width: 78em) {
body:not(.toc-inline) :not(li) > .toc { margin-left: 4rem; }
@ -1005,6 +1007,7 @@ Possible extra rowspan handling
body:not(.toc-inline) .toc > li li li .secno { margin-left: -5rem; }
body:not(.toc-inline) .toc > li li li li .secno { margin-left: -6rem; }
body:not(.toc-inline) .toc > li li li li li .secno { margin-left: -7rem; }
body:not(.toc-inline) .toc > li li li li li li .secno { margin-left: -8rem; }
}
body.toc-sidebar #toc :not(li) > .toc { margin-left: 4rem; }
body.toc-sidebar #toc .toc .secno { margin-left: -4rem; }
@ -1012,7 +1015,7 @@ Possible extra rowspan handling
body.toc-sidebar #toc .toc > li li li .secno { margin-left: -5rem; }
body.toc-sidebar #toc .toc > li li li li .secno { margin-left: -6rem; }
body.toc-sidebar #toc .toc > li li li li li .secno { margin-left: -7rem; }
body.toc-sidebar #toc .toc > li li li li li li .secno { margin-left: -8rem; }
.toc li {
clear: both;
}

View file

@ -0,0 +1,134 @@
(:~
: Generate XQuery documentation in html
: using file:///C:/Users/andy/workspace/app-doc/src/doc/data/doc/models
: $efolder:="file:///C:/Users/andy/workspace/app-doc/src/doc/data/doc/models"
: $target:="file:///C:/Users/andy/workspace/app-doc/src/doc/generated/models.xqm"
:)
module namespace xqhtml = 'quodatum:build.xqdoc-html';
declare namespace c="http://www.w3.org/ns/xproc-step";
declare namespace xqdoc="http://www.xqdoc.org/1.0";
(:~ transform files to html
: @param $params keys: resources
: "ext-id": "299",
: "src-folder": "C:/Users/andy/git/vue-poc/src/vue-poc",
: "project": "vue-poc"
:)
declare function xqhtml:index-html($files,
$params as map(*)
)
as document-node()
{
let $d:=<div>
<h1>
<span class="tag tag-success">
{ $params?project }
</span>
XQDoc ,id: { $params?ext-id }
</h1>
{ xqhtml:toc($params) }
<a href="restxq.html">RestXQ</a>
<div>src: { $params?src-folder }</div>
<div id="file">
<h1>Files</h1>
<ul>
{ for $file at $pos in $files//c:file
let $ip:= $file/@name/resolve-uri(.,base-uri($file))
let $path:= string-join($file/ancestor-or-self::*/@name,'/')
return <li>
<a href="modules/F{ $pos }/index.html">
{ $file/@name/string() }
</a>
{ $pos }
{ $ip }
</li>
}
</ul>
</div>
<div id="ns">
<h1>Namespace</h1>
<ul>
<for-each select=".//c:file">
<variable name="path" select="resolve-uri(@name,$src-folder)"/>
<variable name="doc" select="doc($path)"/>
<li>
<value-of select="position()"/>
<value-of select="$path"/>
</li>
</for-each>
</ul>
</div>
</div>
let $params:= map:merge(($params,map:entry("resources","resources/")))
return document{ xqhtml:page($d, $params ) }
};
declare function xqhtml:toc($params)
as element()
{
<nav id="toc">
<h2>
<a id="contents"></a>
<span class="tag tag-success">
{ $params?project }
</span>
</h2>
<ol class="toc">
<li>
<a href="#main">
<span class="secno">1 </span>
<span class="content">Introduction</span>
</a>
</li>
<li>
<a href="#ns">
<span class="secno">2 </span>
<span class="content">Namespaces</span>
</a>
</li>
<li>
<a href="#file">
<span class="secno">3 </span>
<span class="content">Files</span>
</a>
</li>
</ol>
</nav>
};
(:~
: generate standard page wrapper
:)
declare function xqhtml:page($body,$opts as map(*))
as element(html)
{
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Generator" content="xqdoc-r - https://github.com/quodatum/xqdoc-r" />
<title>
RestXQ - xqDoc
</title>
<link rel="shortcut icon" type="image/x-icon" href="{$opts?resources}xqdoc.png" />
<link rel="stylesheet" type="text/css" href="{$opts?resources}page.css" />
<link rel="stylesheet" type="text/css" href="{$opts?resources}query.css" />
<link rel="stylesheet" type="text/css" href="{$opts?resources}base.css" />
</head>
<body class="home" id="top">
<div id="main">
{$body}
</div>
<div class="footer">
<p style="text-align:right">generated at {current-dateTime()}</p>
</div>
</body>
</html>
};

View file

@ -7,7 +7,7 @@
module namespace xqd = 'quodatum:build.xqdoc';
import module namespace xp="expkg-zone58:text.parse";
import module namespace store = 'quodatum.store' at '../store.xqm';
import module namespace xqhtml = 'quodatum:build.xqdoc-html' at "xqdoc-html.xqm";
declare namespace c="http://www.w3.org/ns/xproc-step";
declare namespace xqdoc="http://www.xqdoc.org/1.0";
@ -15,7 +15,7 @@ declare variable $xqd:HTML5:=map{"method": "html","version":"5.0"};
declare variable $xqd:XML:=map{"indent": "no"};
declare variable $xqd:mod-xslt external :="html-module.xsl";
declare variable $xqd:index-xslt external :="html-index.xsl";
declare variable $xqd:nsRESTXQ:= 'http://exquery.org/ns/restxq';
declare variable $xqd:cache external :=false();
(:~ @see https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods :)
@ -34,7 +34,7 @@ let $f:= document{$files} transform with { delete node //c:directory[not(.//c:
return (
$files//c:file!xqd:gendoc(.,"modules/F" || position(),$target,$params),
$f=>xqd:store($target || "/files.xml",$xqd:XML),
$f=>xqd:index-html($params)=>xqd:store($target || "/index.html",$xqd:HTML5),
$f=>xqhtml:index-html($params)=>xqd:store($target || "/index.html",$xqd:HTML5),
xqd:export-resources($target)
)
};
@ -74,6 +74,39 @@ declare function xqd:gendoc(
)
};
(:~
: create documentation folder map
: map{"base-uri":.., "files":map(*)*}
:)
declare function xqd:read($efolder as xs:string)
{
let $files:= file:list($efolder,true(),"*.xqm")
let $full:= $files!concat($efolder || "\",.)
return map{
"base-uri": $efolder,
"files": for $file in $files
let $full:=concat($efolder || "\", $file)
return map{
"full":$full,
"xqdoc": xqd:xqdoc($full,map{"_source": $full}),
"xqparse": xqd:parse($full)
}
}
};
declare function xqd:imports($doc)
{
let $keys:=$doc?files?xqdoc!map:entry(generate-id(.),position())=>map:merge()
let $ns:=for $in in $doc?files?xqdoc//xqdoc:import[@type="library"]
group by $ns:=$in/xqdoc:uri
let $id:=$keys?($in/root()/generate-id())
return map:entry($ns,$id)
return map:merge(($doc,map{"keys": $keys,
"imports": $ns}))
};
(:~
: save xqdoc and html for source file $f
: @param $f <c:file/>
@ -143,7 +176,7 @@ as element(xqdoc:xqdoc)
inspect:xqdoc($url)
transform with {
for $tag in map:keys($opts)
return insert node <xqdoc:custom tag="_{ $tag }">{ $opts[$tag] }</xqdoc:custom>
return insert node <xqdoc:custom tag="_{ $tag }">{ $opts?($tag) }</xqdoc:custom>
into xqdoc:module[@type="library"]/xqdoc:comment
}
};
@ -167,8 +200,16 @@ xslt:transform($files,$xqd:index-xslt,$params)
};
(:~ save runtime support files to $target :)
declare function xqd:export-resources($target as xs:string)
{
declare
function xqd:export-resources($target as xs:string)
as empty-sequence(){
archive:extract-to($target, file:read-binary(resolve-uri('resources.zip')))
};
(:~ save runtime support files to $target :)
declare %updating
function xqd:export-resources2($target as xs:string)
as empty-sequence(){
archive:extract-to($target, file:read-binary(resolve-uri('resources.zip')))
};
(:~
@ -198,35 +239,49 @@ as element(xqdoc:annotation)*
};
(:~
: generate standard page wrapper
:)
declare function xqd:page($body,$opts as map(*))
as element(html)
(: @return map of functions and variables having annotations :)
declare function xqd:annotation-map($xqdoc){
let $ns:=map:merge((
map:entry("", "http://www.w3.org/2012/xquery"),
$xqdoc//xqdoc:namespace!map:entry(string(@prefix),string(@uri))
))
let $f:=$xqdoc//xqdoc:function[xqdoc:annotations]!
map:entry(
xqdoc:name || "#" || @arity,
xqd:annots(xqdoc:annotations/xqdoc:annotation,$ns)
)
let $v:=$xqdoc//xqdoc:variable[xqdoc:annotations]!
map:entry(
xqdoc:name ,
xqd:annots(xqdoc:annotations/xqdoc:annotation,$ns)
)
return map:merge(($f,$v))
};
(: return annotation map for a name
: map{ $ns: map{
: $aname: $values
: }
: }
:)
declare function xqd:annots(
$annots as element(xqdoc:annotation)*,
$ns as map(*)
) as map(*)
{
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Generator" content="xqdoc-r - https://github.com/quodatum/xqdoc-r" />
<title>
RestXQ - xqDoc
</title>
<link rel="shortcut icon" type="image/x-icon" href="{$opts?resources}xqdoc.png" />
<link rel="stylesheet" type="text/css" href="{$opts?resources}page.css" />
<link rel="stylesheet" type="text/css" href="{$opts?resources}query.css" />
<link rel="stylesheet" type="text/css" href="{$opts?resources}base.css" />
</head>
<body class="home" id="top">
<div id="main">
{$body}
</div>
<div class="footer">
<p style="text-align:right">generated at {current-dateTime()}</p>
</div>
</body>
</html>
};
map:merge(
for $a in $annots
group by $prefix:=substring-before($a/@name,":")
return for $p in $prefix
return map:entry(
$ns?($p),
map:merge((
for $x in $a
group by $aname:=if(contains($x/@name,":")) then substring-after($x/@name,":") else $x/@name
return map:entry($aname,$x/*/string())
))
)
)};

View file

@ -1,5 +1,5 @@
<entity name="service" xmlns="https://github.com/Quodatum/app-doc/entity">
<description>basex services </description>
<description>basex services a list of all jobs that have been persistently registered as Services.</description>
<fields>
<field name="id" type="xs:string">
<description>job id</description>

View file

@ -3,18 +3,18 @@
"version": "0.1.99",
"description": "A vue test",
"dependencies": {
"ace": "1.4.2",
"vuetify": "1.5.1",
"ace": "1.4.3",
"vuetify": "1.5.6",
"vue": "2.6.7",
"vuex": "3.0.1",
"vue-router": "3.0.2",
"vue-treeselect": "0.0.25",
"google-material": "0.0.0",
"js-beautify": "1.6.12",
"js-beautify": "1.9.0",
"axios": "0.17.1",
"qs": "6.4.0",
"localforage": "1.7.1",
"momentjs": "2.18.1",
"vuetify-jsonschema-form": "0.20.1"
"vuetify-jsonschema-form": "0.24.1"
}
}

View file

@ -1,4 +1,4 @@
// generated 2019-03-01T23:13:01.734Z
// generated 2019-03-16T22:59:26.228Z
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/components/qd-autoheight.vue
Vue.component('qd-autoheight',{template:`
@ -3258,7 +3258,7 @@ const Brutusin=Vue.extend({template:`
<v-chip v-else color="danger">invalid</v-chip>
<v-btn color="primary" @click="$refs.myForm.validate()">validate</v-btn>
<v-spacer></v-spacer>
<qd-link href="https://github.com/koumoul-dev/vuetify-jsonschema-form/">vuetify-jsonschema-form@0.21.0</qd-link>
<qd-link href="https://github.com/koumoul-dev/vuetify-jsonschema-form/">vuetify-jsonschema-form@0.24.1</qd-link>
</v-toolbar>
<v-card-actions>
<v-layout row wrap>
@ -3481,28 +3481,37 @@ const Taskhistory=Vue.extend({template:`
// src: file:///C:/Users/andy/git/vue-poc/src/vue-poc/features/home.vue
const Home=Vue.extend({template:`
<v-card hover raised>
<v-card raised>
<v-card-title>links</v-card-title>
<v-card-text>
<p>
links
</p>
<ul>
<li><router-link :to="{path:'files', query:{url:'/vue-poc/'}}"> <v-icon>developer_mode</v-icon>vue-poc files</router-link></li>
<li><router-link :to="{path:'database', query:{url:'/vue-poc/'}}"> <v-icon>folder</v-icon>vue-poc db</router-link></li>
<li><a href="/doc/#/data/app/vue-poc" target="new">doc</a></li>
<li><a href="/dba" target="new">DBA app</a></li>
<li><a href="/vue-poc/ui/database?url=%2Fvue-poc%2F" target="new">db</a></li>
<li><router-link :to="{path:'files', query:{url:'/vue-poc/features/images/'}}">vue-poc image tasks</router-link></li>
</ul>
<v-btn floating="floating"> <v-icon>add</v-icon>
</v-btn> <qd-link href="/dba">REPLACED</qd-link>
</v-card-text>
</v-card>
<v-card-text>
<v-list dense>
<v-list-tile @click>
<router-link :to="{path:'files', query:{url:'/vue-poc/'}}"> <v-icon>developer_mode</v-icon>vue-poc files</router-link>
</v-list-tile>
<v-list-tile @click>
<router-link :to="{path:'database', query:{url:'/vue-poc/'}}"> <v-icon>folder</v-icon>vue-poc db</router-link>
</v-list-tile>
<v-list-tile @click>
<a href="/doc/#/data/app/vue-poc" target="new">doc</a>
</v-list-tile>
<v-list-tile @click>
<a href="/dba" target="new">DBA app</a>
</v-list-tile>
<v-list-tile @click>
<a href="/vue-poc/ui/database?url=%2Fvue-poc%2F" target="new">db</a>
</v-list-tile>
<v-list-tile @click>
<router-link :to="{path:'files', query:{url:'/vue-poc/features/images/'}}">vue-poc image tasks</router-link>
</v-list-tile>
</v-list>
</v-card-text>
<v-card-actions>
<v-btn floating="floating"> <v-icon>add</v-icon>
</v-btn> <qd-link href="/dba">REPLACED</qd-link>
</v-card-actions>
</v-card-text></v-card>
`,
data: function(){

View file

@ -10,11 +10,11 @@
<link rel="shortcut icon" href="/vue-poc/ui/icon.png"/>
<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="//unpkg.com/vuetify@1.5.4/dist/vuetify.min.css" type="text/css"/>
<link rel="stylesheet" href="//unpkg.com/vuetify@1.5.7/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" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="//unpkg.com/leaflet@1.0.3/dist/leaflet.css"/>
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@koumoul/vuetify-jsonschema-form@0.21.0/dist/main.css" />
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@koumoul/vuetify-jsonschema-form@0.24.1/dist/main.css" />
<link href="/vue-poc/ui/app.css" rel="stylesheet" type="text/css"/>
<link href="/vue-poc/ui/svg/d3-svg.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/vis/4.20.1/vis-timeline-graph2d.min.css" />
@ -39,14 +39,14 @@
<script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/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@1.5.4/dist/vuetify.min.js" crossorigin="anonymous"></script>
<script src="//unpkg.com/vuetify@1.5.7/dist/vuetify.min.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.3/ace.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.3/ext-language_tools.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.4.3/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.6.12/beautify.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/js-beautify/1.6.12/beautify-css.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/js-beautify/1.6.12/beautify-html.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-html.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/localforage/1.7.1/localforage.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/vis/4.20.1/vis-timeline-graph2d.min.js" crossorigin="anonymous"></script>
@ -59,7 +59,7 @@
<script src="//unpkg.com/leaflet@1.0.3/dist/leaflet.js" crossorigin="anonymous"></script>
<script src="//unpkg.com/vue2-leaflet@1.0.2/dist/vue2-leaflet.js" crossorigin="anonymous"></script>
<script src="//cdn.jsdelivr.net/npm/@koumoul/vuetify-jsonschema-form@0.21.0/dist/main.js" crossorigin="anonymous"></script>
<script src="//cdn.jsdelivr.net/npm/@koumoul/vuetify-jsonschema-form@0.24.1/dist/main.js" crossorigin="anonymous"></script>
<script src="//unpkg.com/vue-native-websocket@2.0.8/dist/build.js" crossorigin="anonymous"></script>
<script src="/vue-poc/ui/svg/d3-svg.js"></script>