nbui updates

This commit is contained in:
Jonathan Shook 2020-09-03 12:12:00 -05:00
parent fc0f1c8dfe
commit a4b417545f
32 changed files with 2685 additions and 5714 deletions

View File

@ -2,5 +2,6 @@ local/**
node_modules node_modules
npm-debug.log npm-debug.log
.nuxt .nuxt
_nuxt/**
dist dist
.idea .idea

View File

@ -15,7 +15,6 @@
export default { export default {
getCategory(route, categories) { getCategory(route, categories) {
let active_category = categories[0]; let active_category = categories[0];
if (!route.path) { if (!route.path) {
@ -26,12 +25,9 @@ export default {
throw "invalid path for docs: '" + route.path + "' parts[0]=" + parts[0] + " parts=" + JSON.stringify(parts,null,2) throw "invalid path for docs: '" + route.path + "' parts[0]=" + parts[0] + " parts=" + JSON.stringify(parts,null,2)
} }
if (parts.length>2) { if (parts.length>2) {
let active_category_name = parts[2]; let found = categories.find(x => x.name === parts[2]);
active_category = categories.find(x => x.name === active_category_name); if (found) {
if (active_category === undefined) { active_category = found;
console.error("unable to find category named '" + active_category_name + "', resetting to root")
// console.log("categories:" + JSON.stringify(categories, null, 2))
active_category = categories[0];
} }
} }
} }

View File

@ -0,0 +1,42 @@
/**
* Path scheme:
* /docs/cat1/t1/t2/t3.md
* _____ docs prefix
* / delimiter
* ____ category name
* / delimiter
* ___________ topic path, including separators
* ________ topic name, without extension
*
* /docs/cat1/index.md summary doc for cat1
* ______________________ topic path
* __________ category path
*/
export default {
url(document, context, path) {
console.log("isDev=" + context.isDev)
console.log("document.location=" + JSON.stringify(document.location, null, 2))
let origin = document.location.origin;
let base = origin;
if (origin.includes(":3003")) {
base = origin.replace(":3003", ":12345")
}
console.log("base=" + base);
let url = base + path;
console.log("url=" + url);
return url;
},
localize(body, baseurl) {
// console.log("localize([body],baseurl='" + baseurl + "'")
// const regex = /\[([^/][^]]+)]/;
// let remaining = body;
//
// while (remaining.)
//
return body;
}
}

View File

@ -1,52 +1,52 @@
// asyncData in multiple mixins seems to be broken, or worse, working as designed // // asyncData in multiple mixins seems to be broken, or worse, working as designed
export default { // export default {
async asyncData(context) { // async asyncData(context) {
//
// if (context.req) { // // if (context.req) {
// console.log("avoiding server-side async"); // // console.log("avoiding server-side async");
// return; // // return;
// } // // }
//
let baseurl = document.location.href.split('/').slice(0,3).join('/'); // let baseurl = document.location.href.split('/').slice(0,3).join('/');
//
if (context.isDev && baseurl.includes(":3000")) { // if (context.isDev && baseurl.includes(":3000")) {
console.log("Dev mode: remapping 3000 to 12345 for split dev environment."); // console.log("Dev mode: remapping 3000 to 12345 for split dev environment.");
baseurl = baseurl.replace("3000","12345"); // baseurl = baseurl.replace("3000","12345");
} // }
//
let services = baseurl + "/services"; // let services = baseurl + "/services";
//
// console.log("async loading get_categories data: context: " + context); // // console.log("async loading get_categories data: context: " + context);
var fm = require('front-matter'); // var fm = require('front-matter');
//
let namespaces_endpoint = services + "/docs/namespaces"; // let namespaces_endpoint = services + "/docs/namespaces";
//
let namespaces = await context.$axios.$get(namespaces_endpoint); // let namespaces = await context.$axios.$get(namespaces_endpoint);
// let namespaces = await fetch(services+"/docs/namespaces") // // let namespaces = await fetch(services+"/docs/namespaces")
// .then(response => { // // .then(response => {
// return response.json() // // return response.json()
// }) // // })
// .catch(err => { // // .catch(err => {
// console.log("error:" + err) // // console.log("error:" + err)
// }); // // });
//
const collated = Array(); // const collated = Array();
for (let ena in namespaces) { // for (let ena in namespaces) {
for (let ns in namespaces[ena]) { // for (let ns in namespaces[ena]) {
collated.push({ // collated.push({
namespace: ns, // namespace: ns,
show: (ena==="enabled"), // show: (ena==="enabled"),
paths: namespaces[ena] // paths: namespaces[ena]
}); // });
console.log ("ns:"+ ns + ", ena: " + ena); // console.log ("ns:"+ ns + ", ena: " + ena);
} // }
// namespaces[ena].forEach(e => {e.isEnabled = (ena === "enabled")}); // // namespaces[ena].forEach(e => {e.isEnabled = (ena === "enabled")});
// collated=collated.concat(namespaces[ena]) // // collated=collated.concat(namespaces[ena])
} // }
//
let result={namespaces: collated}; // let result={namespaces: collated};
// console.log("namespaces result:"+JSON.stringify(result)); // // console.log("namespaces result:"+JSON.stringify(result));
return result; // return result;
} // }
//
} // }

View File

@ -47,7 +47,8 @@ export default {
], ],
axios: { axios: {
port: 12345, port: 12345,
browserBaseURL: 'http://localhost:12345/services/', __browserBaseURL: 'http://localhost:12345/services/',
baseUrl: '/services/',
progress: true progress: true
}, },
/* /*

View File

@ -1,7 +1,7 @@
import colors from 'vuetify/es5/util/colors' import colors from 'vuetify/es5/util/colors'
var glob = require('glob'); // var glob = require('glob');
var path = require('path'); // var path = require('path');
export default { export default {
// target: 'static', // target: 'static',
@ -47,8 +47,10 @@ export default {
'@nuxtjs/axios' '@nuxtjs/axios'
], ],
axios: { axios: {
port: 12345, // port: 12345,
browserBaseURL: 'http://localhost:12345/services/', // browserBaseURL: 'http://localhost:12345/services/',
// baseURL: '/services/',
// browserBaseURL: '/services/',
progress: true progress: true
}, },
/* /*
@ -130,8 +132,8 @@ export default {
test: /.g4/, loader: 'antlr4-webpack-loader' test: /.g4/, loader: 'antlr4-webpack-loader'
}) })
config.module.rules.push({ config.module.rules.push({
test: /\.ya?ml$/, test: /\.ya?ml$/,
use: 'js-yaml-loader', use: 'js-yaml-loader',
}) })
config.node = { config.node = {
fs: 'empty' fs: 'empty'
@ -139,24 +141,23 @@ export default {
config.optimization.minimize = false; config.optimization.minimize = false;
} }
} }
, generate: {
routes: dynamicRoutes
}
} }
// , generate: {
// routes: dynamicRoutes
// }
var dynamicRoutes = getDynamicPaths({ // var dynamicRoutes = getDynamicPaths({
'/docs': 'docs/*.md', // '/docs': 'docs/*.md',
'/#/docs': '/#/docs/*.md' // '/#/docs': '/#/docs/*.md'
}); // });
//
function getDynamicPaths(urlFilepathTable) { // function getDynamicPaths(urlFilepathTable) {
return [].concat( // return [].concat(
...Object.keys(urlFilepathTable).map(url => { // ...Object.keys(urlFilepathTable).map(url => {
var filepathGlob = urlFilepathTable[url]; // var filepathGlob = urlFilepathTable[url];
return glob // return glob
.sync(filepathGlob, {cwd: 'content'}) // .sync(filepathGlob, {cwd: 'content'})
.map(filepath => `${url}/${path.basename(filepath, '.md')}`); // .map(filepath => `${url}/${path.basename(filepath, '.md')}`);
}) // })
); // );
} // }

File diff suppressed because it is too large Load Diff

View File

@ -5,32 +5,37 @@
"author": "Sebastian Estevez & Jonathan Shook", "author": "Sebastian Estevez & Jonathan Shook",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "nuxt -c nuxt.config.dev.js --port 3003", "olddev": "nuxt -c nuxt.config.dev.js --port 3003",
"dev": "nuxt --port 3003",
"build": "nuxt build", "build": "nuxt build",
"start": "nuxt start", "start": "nuxt start",
"generate": "nuxt generate", "generate": "nuxt generate",
"antlr": "cd antlr && node ../node_modules/antlr4-cli/bin/antlr4.js -Dlanguage=JavaScript -Werror -visitor -listener CQL3.g4" "antlr": "cd antlr && node ../node_modules/antlr4-cli/bin/antlr4.js -Dlanguage=JavaScript -Werror -visitor -listener CQL3.g4"
}, },
"dependencies": { "dependencies": {
"@nuxtjs/axios": "^5.12.1", "@nuxtjs/axios": "^5.12.2",
"@nuxtjs/vuetify": "^2.0.0-beta.2", "@nuxtjs/vuetify": "^2.0.0-beta.2",
"vue": "^2.6.11", "@nuxt/webpack": "^2.14.4",
"front-matter": "^4.0.1", "@nuxtjs/babel-preset-app": "^0.8.0",
"vue": "^2.6.12",
"vue-template-compiler": "^2.6.12",
"front-matter": "^4.0.2",
"antlr4": "^4.8.0", "antlr4": "^4.8.0",
"antlr4-cli": "^4.5.3", "antlr4-cli": "^4.5.3",
"file-saver": "^2.0.2", "file-saver": "^2.0.2",
"js-yaml": "^3.14.0", "js-yaml": "^3.14.0",
"js-yaml-loader": "^1.2.2", "js-yaml-loader": "^1.2.2",
"node-fetch": "^2.6.0",
"source-map-resolve": "^0.6.0",
"eslint": "^7.7.0",
"chokidar": "^3.4.2",
"npm": "^6.14.8",
"nuxt": "^2.14.4",
"webpack": "^4.44.1",
"markdown-it-vue": "^1.1.3",
"markdown-it-smartarrows": "^1.0.1", "markdown-it-smartarrows": "^1.0.1",
"markdown-it-relativelink": "^0.2.0", "markdown-it-relativelink": "^0.2.0",
"markdown-it-replace-link": "^1.1.0", "markdown-it-replace-link": "^1.1.0",
"markdown-it-vue": "^1.1.3",
"node-fetch": "^2.6.0",
"npm": "^6.14.7",
"nuxt": "^2.14.3",
"vue-template-compiler": "^2.6.11",
"webpack": "^4.44.1",
"markdown-it-highlightjs": "^3.2.0" "markdown-it-highlightjs": "^3.2.0"
} }
} }

View File

@ -32,11 +32,11 @@
</template> </template>
<script> <script>
import get_namespaces from '@/mixins/get_namespaces.js'; // import get_namespaces from '@/mixins/get_namespaces.js';
export default { export default {
name: "namespaces", name: "namespaces",
mixins: [get_namespaces], // mixins: [get_namespaces],
data(context) { data(context) {
// return { // return {
// namespaces: [] // namespaces: []

View File

@ -101,6 +101,9 @@ export default {
workspace: function () { workspace: function () {
return this.$store.getters["workspaces/getWorkspace"] return this.$store.getters["workspaces/getWorkspace"]
}, },
enabled: function () {
return this.$store.getters["service_status/getEndpoints"]
}
}, },
methods: { methods: {
async parseStatement() { async parseStatement() {
@ -270,18 +273,9 @@ export default {
}) })
} }
}, },
async asyncData({$axios, store}) { created() {
let enabled = await $axios.$get("/status") this.$store.dispatch('service_status/loadEndpoints')
.then(res => { }
return res
})
.catch((e) => {
console.log("back-end not found");
})
return {
enabled: enabled,
}
},
} }
</script> </script>
<style> <style>

View File

@ -284,7 +284,7 @@ export default {
commands commands
} }
console.log("submitting:" + JSON.stringify(erq)); console.log("submitting:" + JSON.stringify(erq));
this.$axios.$post("/executor/cli", erq); this.$store.dispatch("scenarios/runScenario", erq);
} }
} }
} }

View File

@ -1,9 +1,11 @@
import endpoints from "@/js/endpoints";
// https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store // https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store
/** /**
categories: [ categories: [
{ {
name, name,
title, title,
topics, topics,
@ -108,27 +110,37 @@ export const actions = {
async setIsDrawerOpen({commit, state, dispatch}, isDrawerOpen) { async setIsDrawerOpen({commit, state, dispatch}, isDrawerOpen) {
await commit("setIsDrawerOpen", isDrawerOpen) await commit("setIsDrawerOpen", isDrawerOpen)
}, },
async setCategories({commit, state, dispatch}, categories) { async setCategories({commit, state, dispatch, context}, categories) {
await commit("setCategories", categories) await commit("setCategories", categories)
}, },
async loadCategories({commit, state, dispatch}) { async loadCategories(context) {
// let location = document.location;
// console.log("location:" + location);
let commit = context.commit;
let state = context.state;
let dispatch = context.dispatch;
if (state.categories === null || state.categories.length === 0) { if (state.categories === null || state.categories.length === 0) {
let fm = require('front-matter'); let fm = require('front-matter');
const category_data = await this.$axios.get("/docs/markdown.csv") const category_data = await this.$axios.get(endpoints.url(document, context, "/services/docs/markdown.csv"))
.then(manifest => { .then(manifest => {
// console.log("typeof(manifest):" + typeof (manifest)) // console.log("typeof(manifest):" + typeof (manifest))
// console.log("manifest:" + JSON.stringify(manifest, null, 2)) // console.log("manifest:" + JSON.stringify(manifest, null, 2))
return manifest.data.split("\n").filter(x => { return manifest.data.split("\n").filter(x => {
return x!==null && x.length>0 return x !== null && x.length > 0
}) })
}) })
.catch((e) => {
console.log("error getting data:" + e);
throw e;
})
.then(async lines => { .then(async lines => {
let val = await Promise.all(lines.map(line => { let val = await Promise.all(lines.map(line => {
let url = "/docs" + "/" + line; let url = "/docs" + "/" + line;
// console.log("url:"+url) // console.log("url:"+url)
return this.$axios.get("/docs/" + line) return this.$axios.get(endpoints.url(document, context, "/services/docs/" + line))
.then(res => { .then(res => {
// console.log("typeof(res):" + typeof(res)) // console.log("typeof(res):" + typeof(res))
return { return {
@ -145,8 +157,14 @@ export const actions = {
// console.log("mapof:" + JSON.stringify(mapof, null, 2)) // console.log("mapof:" + JSON.stringify(mapof, null, 2))
// return mapof; // return mapof;
}) })
.catch((e) => {
console.log("error getting entries:" + e);
throw e;
})
.then(fetched => { .then(fetched => {
return fetched.map(entry => { return fetched.map(entry => {
// console.log("entry:" + JSON.stringify(entry,null,2))
let [, name] = entry.path.match(/(.+)\.md$/); let [, name] = entry.path.match(/(.+)\.md$/);
let basename = entry.path.split("/").find(x => x.includes(".md")) let basename = entry.path.split("/").find(x => x.includes(".md"))
let categories = entry.path.split("/").filter(x => !x.includes(".")) let categories = entry.path.split("/").filter(x => !x.includes("."))
@ -156,7 +174,9 @@ export const actions = {
let weight = ((mdMeta.attributes.weight) ? mdMeta.attributes.weight : 0) let weight = ((mdMeta.attributes.weight) ? mdMeta.attributes.weight : 0)
let title = ((mdMeta.attributes.title) ? mdMeta.attributes.title : basename) let title = ((mdMeta.attributes.title) ? mdMeta.attributes.title : basename)
let path = "/docs/" + entry.path let path = "/docs/" + entry.path
let baseurl = endpoints.url(document, context, "/services/docs/" + path);
console.log("baseurl for doc:" + baseurl);
let body = endpoints.localize(mdMeta.body, baseurl)
// console.log("path:" + entry.path) // console.log("path:" + entry.path)
return { return {
name, name,
@ -170,6 +190,10 @@ export const actions = {
}) })
} }
) )
.catch((e) => {
console.log("error parsing entries:" + e);
throw e;
})
.then(alltopics => { .then(alltopics => {
// console.log("input:" + JSON.stringify(input, null, 2)) // console.log("input:" + JSON.stringify(input, null, 2))
let categorySet = new Set(); let categorySet = new Set();
@ -226,6 +250,5 @@ export const actions = {
// console.log("result:" + JSON.stringify(docinfo, null, 2)) // console.log("result:" + JSON.stringify(docinfo, null, 2))
} }
} }

View File

@ -1,5 +1,6 @@
// https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store // https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store
import {mapGetters} from "vuex"; import {mapGetters} from "vuex";
import endpoints from "@/js/endpoints";
export const state = () => ({ export const state = () => ({
scenarios: [] scenarios: []
@ -18,32 +19,43 @@ export const mutations = {
} }
export const actions = { export const actions = {
async loadScenarios({commit, state, dispatch}, reason) { async loadScenarios(context, reason) {
console.log("loading scenarios because '" + reason + "'") console.log("loading scenarios because '" + reason + "'")
await this.$axios.$get("/executor/scenarios/") await this.$axios.$get(endpoints.url(document, context, "/services/executor/scenarios/"))
.then(res => { .then(res => {
// console.log("axios/vuex scenarios async get:" + JSON.stringify(res)); // console.log("axios/vuex scenarios async get:" + JSON.stringify(res));
// console.log("committing setScenarios:" + JSON.stringify(res)); // console.log("committing setScenarios:" + JSON.stringify(res));
commit('setScenarios', res) context.commit('setScenarios', res)
}) })
.catch((e) => { .catch((e) => {
console.error("axios/nuxt scenarios async error:", e); console.error("axios/nuxt scenarios async error:", e);
}) })
}, },
async stopScenario({commit, state, dispatch}, scenario_name) { async runScenario(context, scenario_config) {
await this.$axios.$post("/executor/stop/" + scenario_name) await this.$axios.post(endpoints.url(document, context, "/services/executor/cli"), scenario_config)
.then() .then(res => {
console.log("execute scenarios response:" + res)
}
)
.catch((e) => { .catch((e) => {
console.error("axios/nuxt scenario stop error:", e); console.error("axios/nuxt cli error: " + e)
}) })
await dispatch("loadScenarios")
}, },
async deleteScenario({commit, state, dispatch}, scenario_name) { async stopScenario(context, scenario_name) {
await this.$axios.$delete("/executor/scenario/" + scenario_name) await this.$axios.$post(endpoints.url(document, context, "/services/executor/stop/" + scenario_name))
.then() .then()
.catch((e) => { .catch((e) => {
console.error("axios/nuxt scenario stop error:", e); console.error("axios/nuxt scenario stop error:", e);
}) })
await dispatch("loadScenarios") await context.dispatch("loadScenarios")
},
async deleteScenario(context, scenario_name) {
await this.$axios.$delete(endpoints.url(document, context, "/services/executor/scenario/" + scenario_name))
.then()
.catch((e) => {
console.error("axios/nuxt scenario stop error:", e);
})
await context.dispatch("loadScenarios")
} }
}; };

View File

@ -0,0 +1,33 @@
// https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store
import {mapGetters} from "vuex";
import endpoints from "@/js/endpoints";
export const state = () => ({
endpoints: {},
enabled: false
});
export const getters = {
getEndpoints: (state, getters) => {
return state.endpoints;
}
}
export const mutations = {
setEndpoints(state, endpoints) {
state.endpoints = endpoints;
}
}
export const actions = {
async loadEndpoints(context, reason) {
console.log("loading endpoint status because '" + reason + "'")
await this.$axios.get(endpoints.url(document, context, "/services/status"))
.then(res => {
context.commit('setEndpoints', res)
})
.catch((e) => {
console.error("axios/nuxt status async error:" + e);
})
}
};

View File

@ -1,5 +1,6 @@
// https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store // https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store
import {mapGetters} from "vuex"; import {mapGetters} from "vuex";
import endpoints from "@/js/endpoints";
export const state = () => ({ export const state = () => ({
workloads: [], workloads: [],
@ -32,19 +33,19 @@ export const mutations = {
}; };
export const actions = { export const actions = {
async setWorkloads({commit, state, dispatch}, val) { async setWorkloads(context, val) {
// console.log("committing setWorkloads:" + JSON.stringify(val)); // console.log("committing setWorkloads:" + JSON.stringify(val));
commit('setWorkloads', val); context.commit('setWorkloads', val);
}, },
async setTemplates({commit, state, dispatch}, val) { async setTemplates(context, val) {
// console.log("commiting setTemplates:" + JSON.stringify(val)); // console.log("commiting setTemplates:" + JSON.stringify(val));
commit("setTemplates", val); context.commit("setTemplates", val);
}, },
async setSearchin({commit, state, dispatch}, val) { async setSearchin(context, val) {
// console.log("committing setsearchin:" + JSON.stringify(val)); // console.log("committing setsearchin:" + JSON.stringify(val));
commit('setSearchin', val); context.commit('setSearchin', val);
}, },
async fetchWorkloads({commit, state, dispatch}, params) { async fetchWorkloads(context, params) {
let reason = params.reason; let reason = params.reason;
let searchin = params.searchin; let searchin = params.searchin;
if (reason === undefined || searchin === undefined) { if (reason === undefined || searchin === undefined) {
@ -52,17 +53,17 @@ export const actions = {
} }
// console.log("fetching workloads because '" + reason + "'") // console.log("fetching workloads because '" + reason + "'")
commit("setTemplates", undefined); context.commit("setTemplates", undefined);
this.$axios.$get("/workloads/?searchin=" + searchin) this.$axios.$get(endpoints.url(document, context, "/services/workloads/?searchin=" + searchin))
.then(res => { .then(res => {
// console.log("axios/vuex workloads async get:" + JSON.stringify(res)); // console.log("axios/vuex workloads async get:" + JSON.stringify(res));
commit("setWorkloads", res); context.commit("setWorkloads", res);
}) })
.catch((e) => { .catch((e) => {
console.error("axios/nuxt workloads async error:", e); console.error("axios/nuxt workloads async error:", e);
}) })
}, },
fetchTemplates({commit, state, dispatch}, params) { async fetchTemplates(context, params) {
let reason = params.reason; let reason = params.reason;
let workload = params.workload; let workload = params.workload;
let searchin = params.searchin; let searchin = params.searchin;
@ -71,15 +72,17 @@ export const actions = {
} }
console.log("fetching templates for '" + workload + "' because '" + reason + "'") console.log("fetching templates for '" + workload + "' because '" + reason + "'")
this.$axios.$get("/workloads/parameters?workloadName=" + workload + "&" + "searchin=" + searchin) this.$axios.$get(endpoints.url(document, context, "/services/workloads/parameters?workloadName=" + workload + "&" + "searchin=" + searchin))
.then(res => { .then(res => {
// console.log("axios/vuex templates async get:" + JSON.stringify(res)); // console.log("axios/vuex templates async get:" + JSON.stringify(res));
dispatch("setTemplates", res); context.dispatch("setTemplates", res)
.then(r => {
console.log("setTemplates result:" + JSON.stringify(r, null, 2))
});
}) })
.catch((e) => { .catch((e) => {
console.error("axios/nuxt templates async error:", e); console.error("axios/nuxt templates async error:", e);
}) })
} }
}; };

View File

@ -1,5 +1,6 @@
// https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store // https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store
import {mapGetters} from "vuex"; import {mapGetters} from "vuex";
import endpoints from "@/js/endpoints";
export const state = () => ({ export const state = () => ({
workspace: 'default', workspace: 'default',
@ -34,34 +35,34 @@ export const mutations = {
}; };
export const actions = { export const actions = {
async setWorkspace({commit, state, dispatch}, val) { async setWorkspace(context, val) {
// console.log("committing setWorkspace:" + JSON.stringify(val)); // console.log("committing setWorkspace:" + JSON.stringify(val));
commit('setWorkspace', val); context.commit('setWorkspace', val);
}, },
async setWorkspaces({commit, state, dispatch}, val) { async setWorkspaces(context, val) {
// console.log("committing setWorkspaces:" + JSON.stringify(val)); // console.log("committing setWorkspaces:" + JSON.stringify(val));
commit('setWorkspaces', val); context.commit('setWorkspaces', val);
}, },
async initWorkspaces({commit, state, dispatch}, reason) { async initWorkspaces(context, reason) {
// console.log("initializing workspaces because '" + reason + "'") // console.log("initializing workspaces because '" + reason + "'")
this.$axios.$get("/workspaces/") this.$axios.$get(endpoints.url(document, context, "/services/workspaces/"))
.then(res => { .then(res => {
// console.log("axios/vuex workspaces async get:" + JSON.stringify(res)); // console.log("axios/vuex workspaces async get:" + JSON.stringify(res));
// console.log("committing setWorkspaces:" + JSON.stringify(res)); // console.log("committing setWorkspaces:" + JSON.stringify(res));
commit('setWorkspaces', res) context.commit('setWorkspaces', res)
}) })
.catch((e) => { .catch((e) => {
console.error("axios/nuxt workspaces async error:", e); console.error("axios/nuxt workspaces async error:", e);
}) })
}, },
async putFile({commit, state, dispatch}, params) { async putFile(context, params) {
let to_workspace = params.workspace; let to_workspace = params.workspace;
let to_filename = params.filename; let to_filename = params.filename;
let to_content = params.content; let to_content = params.content;
if (!to_workspace || !to_filename || !to_content) { if (!to_workspace || !to_filename || !to_content) {
throw("Unable to save file to workspace without params having workspace, filename, content"); throw("Unable to save file to workspace without params having workspace, filename, content");
} }
const result = await this.$axios.$post("/workspaces/" + to_workspace + "/" + to_filename, to_content) const result = await this.$axios.$post(endpoints.url(document, context, "/services/workspaces/" + to_workspace + "/" + to_filename, to_content))
.then(res => { .then(res => {
console.log("axios/vuex workspace put:" + JSON.stringify(res)); console.log("axios/vuex workspace put:" + JSON.stringify(res));
return res; return res;
@ -70,8 +71,8 @@ export const actions = {
console.error("axios/vuex workspace put:", e) console.error("axios/vuex workspace put:", e)
}); });
}, },
async activateWorkspace({commit, state, dispatch}, workspace) { async activateWorkspace(context, workspace) {
const fresh_workspace = await this.$axios.$get("/workspaces/" + workspace) const fresh_workspace = await this.$axios.$get(endpoints.url(document, context, "/services/workspaces/" + workspace))
.then(res => { .then(res => {
// console.log("axios/vuex workspace async get:" + JSON.stringify(res)) // console.log("axios/vuex workspace async get:" + JSON.stringify(res))
return res; return res;
@ -79,15 +80,15 @@ export const actions = {
.catch((e) => { .catch((e) => {
console.error("axios/nuxt getWorkspace async error:", e) console.error("axios/nuxt getWorkspace async error:", e)
}) })
await dispatch('initWorkspaces', "workspace '" + workspace + "' added"); await context.dispatch('initWorkspaces', "workspace '" + workspace + "' added");
// await dispatch.initWorkspaces({commit, state, dispatch}, "workspace '" + workspace + "' added") // await dispatch.initWorkspaces({commit, state, dispatch}, "workspace '" + workspace + "' added")
// await this.$store.dispatch("workspaces/initWorkspaces", "workspace '" + workspace + "' added") // await this.$store.dispatch("workspaces/initWorkspaces", "workspace '" + workspace + "' added")
// await this.initWorkspaces({commit}, "workspace added"); // await this.initWorkspaces({commit}, "workspace added");
commit('setWorkspace', fresh_workspace.name) context.commit('setWorkspace', fresh_workspace.name)
return workspace; return workspace;
}, },
async purgeWorkspace({commit, state, dispatch}, workspace) { async purgeWorkspace(context, workspace) {
await this.$axios.$delete("/workspaces/" + workspace) await this.$axios.$delete(endpoints.url(document, context, "/services/workspaces/" + workspace))
.then(res => { .then(res => {
console.log("purged workspace:" + res) console.log("purged workspace:" + res)
return res; return res;
@ -98,8 +99,8 @@ export const actions = {
const found = this.state.workspaces.workspaces.find(w => w.name === workspace); const found = this.state.workspaces.workspaces.find(w => w.name === workspace);
if (!found) { if (!found) {
console.log("setting active workspace to 'default' since the previous workspace '" + workspace + "' is not found") console.log("setting active workspace to 'default' since the previous workspace '" + workspace + "' is not found")
await dispatch('activateWorkspace', "default"); await context.dispatch('activateWorkspace', "default");
} }
await dispatch('initWorkspaces', "workspace '" + workspace + "' purged"); await context.dispatch('initWorkspaces', "workspace '" + workspace + "' purged");
} }
}; };

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,135 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>NoSQLBench</title><meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="description" name="description" content="Docs App for NoSQLBench"><link data-n-head="1" rel="icon" type="image/x-icon" href="/favicon.ico"><link data-n-head="1" rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900&amp;display=swap"><link data-n-head="1" rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css"><link rel="preload" href="/_nuxt/runtime.b4a6781.js" as="script"><link rel="preload" href="/_nuxt/node_modules/commons.f448a43.js" as="script"><link rel="preload" href="/_nuxt/app.dfe1a1f.js" as="script"> <title>NoSQLBench</title>
<meta data-n-head="1" charset="utf-8">
<meta data-n-head="1" name="viewport"
content="width=device-width,initial-scale=1">
<meta data-n-head="1" data-hid="description" name="description"
content="Docs App for NoSQLBench">
<link data-n-head="1" rel="icon" type="image/x-icon"
href="/favicon.ico">
<link data-n-head="1" rel="stylesheet" type="text/css"
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900&amp;display=swap">
<link data-n-head="1" rel="stylesheet" type="text/css"
href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css">
<link rel="preload" href="/_nuxt/runtime.c50e81a.js" as="script">
<link rel="preload" href="/_nuxt/vendors/commons.0d00bcd.js"
as="script">
<link rel="preload" href="/_nuxt/app.4c18aa8.js" as="script">
</head> </head>
<body> <body>
<div id="__nuxt"><style>#nuxt-loading { background: white; visibility: hidden; opacity: 0; position: absolute; left: 0; right: 0; top: 0; bottom: 0; display: flex; justify-content: center; align-items: center; flex-direction: column; animation: nuxtLoadingIn 10s ease; -webkit-animation: nuxtLoadingIn 10s ease; animation-fill-mode: forwards; overflow: hidden;}@keyframes nuxtLoadingIn { 0% {visibility: hidden;opacity: 0; } 20% {visibility: visible;opacity: 0; } 100% {visibility: visible;opacity: 1; }}@-webkit-keyframes nuxtLoadingIn { 0% {visibility: hidden;opacity: 0; } 20% {visibility: visible;opacity: 0; } 100% {visibility: visible;opacity: 1; }}#nuxt-loading>div,#nuxt-loading>div:after { border-radius: 50%; width: 5rem; height: 5rem;}#nuxt-loading>div { font-size: 10px; position: relative; text-indent: -9999em; border: .5rem solid #F5F5F5; border-left: .5rem solid #fff; -webkit-transform: translateZ(0); -ms-transform: translateZ(0); transform: translateZ(0); -webkit-animation: nuxtLoading 1.1s infinite linear; animation: nuxtLoading 1.1s infinite linear;}#nuxt-loading.error>div { border-left: .5rem solid #ff4500; animation-duration: 5s;}@-webkit-keyframes nuxtLoading { 0% {-webkit-transform: rotate(0deg);transform: rotate(0deg); } 100% {-webkit-transform: rotate(360deg);transform: rotate(360deg); }}@keyframes nuxtLoading { 0% {-webkit-transform: rotate(0deg);transform: rotate(0deg); } 100% {-webkit-transform: rotate(360deg);transform: rotate(360deg); }}</style><script>window.addEventListener('error', function () { var e = document.getElementById('nuxt-loading'); if (e) {e.className += ' error'; }});</script><div id="nuxt-loading" aria-live="polite" role="status"><div>Loading...</div></div></div><script>window.__NUXT__={config:{},staticAssetsBase:void 0}</script> <div id="__nuxt">
<script src="/_nuxt/runtime.b4a6781.js"></script><script src="/_nuxt/node_modules/commons.f448a43.js"></script><script src="/_nuxt/app.dfe1a1f.js"></script></body> <style>#nuxt-loading {
background: white;
visibility: hidden;
opacity: 0;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
animation: nuxtLoadingIn 10s ease;
-webkit-animation: nuxtLoadingIn 10s ease;
animation-fill-mode: forwards;
overflow: hidden;
}
@keyframes nuxtLoadingIn {
0% {
visibility: hidden;
opacity: 0;
}
20% {
visibility: visible;
opacity: 0;
}
100% {
visibility: visible;
opacity: 1;
}
}
@-webkit-keyframes nuxtLoadingIn {
0% {
visibility: hidden;
opacity: 0;
}
20% {
visibility: visible;
opacity: 0;
}
100% {
visibility: visible;
opacity: 1;
}
}
#nuxt-loading > div, #nuxt-loading > div:after {
border-radius: 50%;
width: 5rem;
height: 5rem;
}
#nuxt-loading > div {
font-size: 10px;
position: relative;
text-indent: -9999em;
border: .5rem solid #F5F5F5;
border-left: .5rem solid #fff;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: nuxtLoading 1.1s infinite linear;
animation: nuxtLoading 1.1s infinite linear;
}
#nuxt-loading.error > div {
border-left: .5rem solid #ff4500;
animation-duration: 5s;
}
@-webkit-keyframes nuxtLoading {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes nuxtLoading {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}</style>
<script>window.addEventListener('error', function () {
var e = document.getElementById('nuxt-loading');
if (e) {
e.className += ' error';
}
});</script>
<div id="nuxt-loading" aria-live="polite" role="status">
<div>Loading...</div>
</div>
</div>
<script>window.__NUXT__ = {
config: {},
staticAssetsBase: void 0
}</script>
<script src="/_nuxt/runtime.c50e81a.js"></script>
<script src="/_nuxt/vendors/commons.0d00bcd.js"></script>
<script src="/_nuxt/app.4c18aa8.js"></script>
</body>
</html> </html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,223 +0,0 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var executeModules = data[2];
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ };
/******/ function checkDeferredModules() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/
/******/ return result;
/******/ }
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ 11: 0
/******/ };
/******/
/******/ var deferredModules = [];
/******/
/******/ // script path function
/******/ function jsonpScriptSrc(chunkId) {
/******/ return __webpack_require__.p + "" + ({"1":"node_modules/6626c48a","2":"node_modules/4ba6caf4","3":"node_modules/9893b386","5":"pages/docs/_","6":"pages/docs/index","7":"pages/docs/namespaces","8":"pages/index","9":"pages/ui/build/index","10":"pages/ui/run/index"}[chunkId]||chunkId) + "." + {"1":"b0e7baf","2":"98fa9a5","3":"f49b8ee","5":"fd88497","6":"2075297","7":"6005d1e","8":"ebae4f4","9":"0f4585a","10":"e0a568d"}[chunkId] + ".js"
/******/ }
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // This file contains only the entry chunk.
/******/ // The chunk loading function for additional chunks
/******/ __webpack_require__.e = function requireEnsure(chunkId) {
/******/ var promises = [];
/******/
/******/
/******/ // JSONP chunk loading for javascript
/******/
/******/ var installedChunkData = installedChunks[chunkId];
/******/ if(installedChunkData !== 0) { // 0 means "already installed".
/******/
/******/ // a Promise means "currently loading".
/******/ if(installedChunkData) {
/******/ promises.push(installedChunkData[2]);
/******/ } else {
/******/ // setup Promise in chunk cache
/******/ var promise = new Promise(function(resolve, reject) {
/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
/******/ });
/******/ promises.push(installedChunkData[2] = promise);
/******/
/******/ // start chunk loading
/******/ var script = document.createElement('script');
/******/ var onScriptComplete;
/******/
/******/ script.charset = 'utf-8';
/******/ script.timeout = 120;
/******/ if (__webpack_require__.nc) {
/******/ script.setAttribute("nonce", __webpack_require__.nc);
/******/ }
/******/ script.src = jsonpScriptSrc(chunkId);
/******/
/******/ // create error before stack unwound to get useful stacktrace later
/******/ var error = new Error();
/******/ onScriptComplete = function (event) {
/******/ // avoid mem leaks in IE.
/******/ script.onerror = script.onload = null;
/******/ clearTimeout(timeout);
/******/ var chunk = installedChunks[chunkId];
/******/ if(chunk !== 0) {
/******/ if(chunk) {
/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
/******/ var realSrc = event && event.target && event.target.src;
/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
/******/ error.name = 'ChunkLoadError';
/******/ error.type = errorType;
/******/ error.request = realSrc;
/******/ chunk[1](error);
/******/ }
/******/ installedChunks[chunkId] = undefined;
/******/ }
/******/ };
/******/ var timeout = setTimeout(function(){
/******/ onScriptComplete({ type: 'timeout', target: script });
/******/ }, 120000);
/******/ script.onerror = script.onload = onScriptComplete;
/******/ document.head.appendChild(script);
/******/ }
/******/ }
/******/ return Promise.all(promises);
/******/ };
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/_nuxt/";
/******/
/******/ // on error function for async loading
/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
/******/
/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // run deferred modules from other chunks
/******/ checkDeferredModules();
/******/ })
/************************************************************************/
/******/ ([]);

View File

@ -1,9 +1,135 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>NoSQLBench</title><meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="description" name="description" content="Docs App for NoSQLBench"><link data-n-head="1" rel="icon" type="image/x-icon" href="/favicon.ico"><link data-n-head="1" rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900&amp;display=swap"><link data-n-head="1" rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css"><link rel="preload" href="/_nuxt/runtime.b4a6781.js" as="script"><link rel="preload" href="/_nuxt/node_modules/commons.f448a43.js" as="script"><link rel="preload" href="/_nuxt/app.dfe1a1f.js" as="script"> <title>NoSQLBench</title>
<meta data-n-head="1" charset="utf-8">
<meta data-n-head="1" name="viewport"
content="width=device-width,initial-scale=1">
<meta data-n-head="1" data-hid="description" name="description"
content="Docs App for NoSQLBench">
<link data-n-head="1" rel="icon" type="image/x-icon"
href="/favicon.ico">
<link data-n-head="1" rel="stylesheet" type="text/css"
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900&amp;display=swap">
<link data-n-head="1" rel="stylesheet" type="text/css"
href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css">
<link rel="preload" href="/_nuxt/runtime.c50e81a.js" as="script">
<link rel="preload" href="/_nuxt/vendors/commons.0d00bcd.js"
as="script">
<link rel="preload" href="/_nuxt/app.4c18aa8.js" as="script">
</head> </head>
<body> <body>
<div id="__nuxt"><style>#nuxt-loading { background: white; visibility: hidden; opacity: 0; position: absolute; left: 0; right: 0; top: 0; bottom: 0; display: flex; justify-content: center; align-items: center; flex-direction: column; animation: nuxtLoadingIn 10s ease; -webkit-animation: nuxtLoadingIn 10s ease; animation-fill-mode: forwards; overflow: hidden;}@keyframes nuxtLoadingIn { 0% {visibility: hidden;opacity: 0; } 20% {visibility: visible;opacity: 0; } 100% {visibility: visible;opacity: 1; }}@-webkit-keyframes nuxtLoadingIn { 0% {visibility: hidden;opacity: 0; } 20% {visibility: visible;opacity: 0; } 100% {visibility: visible;opacity: 1; }}#nuxt-loading>div,#nuxt-loading>div:after { border-radius: 50%; width: 5rem; height: 5rem;}#nuxt-loading>div { font-size: 10px; position: relative; text-indent: -9999em; border: .5rem solid #F5F5F5; border-left: .5rem solid #fff; -webkit-transform: translateZ(0); -ms-transform: translateZ(0); transform: translateZ(0); -webkit-animation: nuxtLoading 1.1s infinite linear; animation: nuxtLoading 1.1s infinite linear;}#nuxt-loading.error>div { border-left: .5rem solid #ff4500; animation-duration: 5s;}@-webkit-keyframes nuxtLoading { 0% {-webkit-transform: rotate(0deg);transform: rotate(0deg); } 100% {-webkit-transform: rotate(360deg);transform: rotate(360deg); }}@keyframes nuxtLoading { 0% {-webkit-transform: rotate(0deg);transform: rotate(0deg); } 100% {-webkit-transform: rotate(360deg);transform: rotate(360deg); }}</style><script>window.addEventListener('error', function () { var e = document.getElementById('nuxt-loading'); if (e) {e.className += ' error'; }});</script><div id="nuxt-loading" aria-live="polite" role="status"><div>Loading...</div></div></div><script>window.__NUXT__={config:{},staticAssetsBase:void 0}</script> <div id="__nuxt">
<script src="/_nuxt/runtime.b4a6781.js"></script><script src="/_nuxt/node_modules/commons.f448a43.js"></script><script src="/_nuxt/app.dfe1a1f.js"></script></body> <style>#nuxt-loading {
background: white;
visibility: hidden;
opacity: 0;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
animation: nuxtLoadingIn 10s ease;
-webkit-animation: nuxtLoadingIn 10s ease;
animation-fill-mode: forwards;
overflow: hidden;
}
@keyframes nuxtLoadingIn {
0% {
visibility: hidden;
opacity: 0;
}
20% {
visibility: visible;
opacity: 0;
}
100% {
visibility: visible;
opacity: 1;
}
}
@-webkit-keyframes nuxtLoadingIn {
0% {
visibility: hidden;
opacity: 0;
}
20% {
visibility: visible;
opacity: 0;
}
100% {
visibility: visible;
opacity: 1;
}
}
#nuxt-loading > div, #nuxt-loading > div:after {
border-radius: 50%;
width: 5rem;
height: 5rem;
}
#nuxt-loading > div {
font-size: 10px;
position: relative;
text-indent: -9999em;
border: .5rem solid #F5F5F5;
border-left: .5rem solid #fff;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation: nuxtLoading 1.1s infinite linear;
animation: nuxtLoading 1.1s infinite linear;
}
#nuxt-loading.error > div {
border-left: .5rem solid #ff4500;
animation-duration: 5s;
}
@-webkit-keyframes nuxtLoading {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes nuxtLoading {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}</style>
<script>window.addEventListener('error', function () {
var e = document.getElementById('nuxt-loading');
if (e) {
e.className += ' error';
}
});</script>
<div id="nuxt-loading" aria-live="polite" role="status">
<div>Loading...</div>
</div>
</div>
<script>window.__NUXT__ = {
config: {},
staticAssetsBase: void 0
}</script>
<script src="/_nuxt/runtime.c50e81a.js"></script>
<script src="/_nuxt/vendors/commons.0d00bcd.js"></script>
<script src="/_nuxt/app.4c18aa8.js"></script>
</body>
</html> </html>

View File

@ -1,3 +1,4 @@
name: doc1
description: a quintessential description description: a quintessential description
scenarios: scenarios:
@ -6,22 +7,29 @@ scenarios:
- run driver=stdout alias=step2 - run driver=stdout alias=step2
schema-only: schema-only:
- run driver=blah tags=phase:schema - run driver=blah tags=phase:schema
tags: tags:
atagname: atagvalue atagname: atagvalue
name: doc1
statements: statements:
- s1 - s1
- s2 - s2
bindings: bindings:
b1: b1d b1: b1d
b2: b2d b2: b2d
params: params:
param1: value1 param1: value1
--- ---
name: doc2 name: doc2
tags: tags:
root1: val1 root1: val1
root2: val2 root2: val2
blocks: blocks:
- name: block1 - name: block1
tags: tags:
@ -41,8 +49,10 @@ blocks:
statements: statements:
s13: statement thirteen s13: statement thirteen
s14: statement fourteen s14: statement fourteen
params: params:
foobar: beez foobar: beez
bindings: bindings:
b11: b11d b11: b11d
b12: b12d b12: b12d