zeus
4 years ago
25 changed files with 17675 additions and 1 deletions
@ -0,0 +1,27 @@ |
|||||
|
.DS_Store |
||||
|
node_modules |
||||
|
vimsession |
||||
|
/dist |
||||
|
|
||||
|
swarmlabdoc.js |
||||
|
swarmlabdoc.asciidoc_config |
||||
|
|
||||
|
|
||||
|
# local env files |
||||
|
.env.local |
||||
|
.env.*.local |
||||
|
|
||||
|
# Log files |
||||
|
npm-debug.log* |
||||
|
yarn-debug.log* |
||||
|
yarn-error.log* |
||||
|
pnpm-debug.log* |
||||
|
|
||||
|
# Editor directories and files |
||||
|
.idea |
||||
|
.vscode |
||||
|
*.suo |
||||
|
*.ntvs* |
||||
|
*.njsproj |
||||
|
*.sln |
||||
|
*.sw? |
@ -1,2 +1,21 @@ |
|||||
# swarmlab-playground-client |
# bootstrap-vue-example |
||||
|
|
||||
|
## Project setup |
||||
|
``` |
||||
|
npm install |
||||
|
``` |
||||
|
|
||||
|
### Compiles and hot-reloads for development |
||||
|
``` |
||||
|
npm run serve |
||||
|
``` |
||||
|
|
||||
|
### Compiles and minifies for production |
||||
|
``` |
||||
|
npm run build |
||||
|
``` |
||||
|
|
||||
|
### Lints and fixes files |
||||
|
``` |
||||
|
npm run lint |
||||
|
``` |
||||
|
@ -0,0 +1,5 @@ |
|||||
|
module.exports = { |
||||
|
presets: [ |
||||
|
'@vue/app' |
||||
|
] |
||||
|
} |
File diff suppressed because it is too large
@ -0,0 +1,62 @@ |
|||||
|
{ |
||||
|
"name": "bootstrap-vue-example", |
||||
|
"version": "0.1.0", |
||||
|
"private": true, |
||||
|
"scripts": { |
||||
|
"docs:build": "documentation build src/** -f html -o public/docs", |
||||
|
"docs:serve": "documentation build src/** -c jsdoc.conf.json -f html -o public/docs", |
||||
|
"serve": "vue-cli-service serve", |
||||
|
"build": "vue-cli-service build", |
||||
|
"lint": "vue-cli-service lint" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"@fortawesome/fontawesome-svg-core": "^1.2.32", |
||||
|
"@fortawesome/free-brands-svg-icons": "^5.15.1", |
||||
|
"@fortawesome/free-solid-svg-icons": "^5.15.1", |
||||
|
"@fortawesome/vue-fontawesome": "^2.0.0", |
||||
|
"@vue/compiler-sfc": "^3.0.1", |
||||
|
"asciidoctor": "^2.2.0", |
||||
|
"axios": "^0.20.0", |
||||
|
"bootstrap-vue": "^2.17.3", |
||||
|
"file-saver": "^2.0.2", |
||||
|
"jszip": "^3.5.0", |
||||
|
"mkdirp": "^1.0.4", |
||||
|
"multilang-extract-comments": "^0.3.3", |
||||
|
"socket.io-client": "^2.3.1", |
||||
|
"vue": "^2.6.12", |
||||
|
"vue-codemirror": "^4.0.6", |
||||
|
"vue-socket.io-extended": "^4.0.5", |
||||
|
"vue-sweetalert2": "^3.0.8", |
||||
|
"vuex": "^3.5.1" |
||||
|
}, |
||||
|
"devDependencies": { |
||||
|
"@vue/cli-plugin-babel": "^4.5.7", |
||||
|
"@vue/cli-plugin-eslint": "^3.0.0", |
||||
|
"@vue/cli-service": "^4.5.7", |
||||
|
"vue-template-compiler": "^2.6.12" |
||||
|
}, |
||||
|
"eslintConfig": { |
||||
|
"root": true, |
||||
|
"env": { |
||||
|
"node": true |
||||
|
}, |
||||
|
"extends": [ |
||||
|
"plugin:vue/essential", |
||||
|
"eslint:recommended" |
||||
|
], |
||||
|
"rules": {}, |
||||
|
"parserOptions": { |
||||
|
"parser": "babel-eslint" |
||||
|
} |
||||
|
}, |
||||
|
"postcss": { |
||||
|
"plugins": { |
||||
|
"autoprefixer": {} |
||||
|
} |
||||
|
}, |
||||
|
"browserslist": [ |
||||
|
"> 1%", |
||||
|
"last 2 versions", |
||||
|
"not ie <= 8" |
||||
|
] |
||||
|
} |
@ -0,0 +1,273 @@ |
|||||
|
:description: IoT Example |
||||
|
:keywords: iot, swarmlab |
||||
|
:data-uri: |
||||
|
:toc: right |
||||
|
:toc-title: Table of contents |
||||
|
:toclevels: 4 |
||||
|
:source-highlighter: highlight |
||||
|
:icons: font |
||||
|
:sectnums: |
||||
|
|
||||
|
{empty} + |
||||
|
|
||||
|
|
||||
|
== Connect to socket Server |
||||
|
|
||||
|
Does something asynchronously and executes the EventBus on completion. |
||||
|
|
||||
|
[source,javascript] |
||||
|
---- |
||||
|
this.SwarmabAsciiLabTemplate = { |
||||
|
"iot5": { |
||||
|
"id": 5, |
||||
|
"name": "auto5", |
||||
|
"img": "rinse.png", |
||||
|
"Servicios": [ |
||||
|
{ |
||||
|
"model":"Sentra", |
||||
|
"doors":4 |
||||
|
}, |
||||
|
{ |
||||
|
"model":"Maxima", |
||||
|
"doors":4 |
||||
|
}, |
||||
|
{ |
||||
|
"model":"Skyline", |
||||
|
"doors":2 |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
this.$root.$emit('iot_add', this.SwarmabAsciiLabTemplate) // <1> |
||||
|
---- |
||||
|
<1> EventBus is used for parent/child component communication. |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/App.vue |
||||
|
- *Line:* 131 |
||||
|
- *Code:* async connect_to_iot(iot) { |
||||
|
==== |
||||
|
|
||||
|
== socketclose() |
||||
|
|
||||
|
[source,javascript] |
||||
|
---- |
||||
|
this.$socket.client.close(); |
||||
|
---- |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 101 |
||||
|
- *Code:* async socketclose () { |
||||
|
==== |
||||
|
|
||||
|
== Socket subscribe |
||||
|
|
||||
|
[source,javascript] |
||||
|
---- |
||||
|
this.$root.$on('iot_add', (v) => { // <1> |
||||
|
... |
||||
|
}) |
||||
|
sdfsf |
||||
|
den to perni sdfsf |
||||
|
---- |
||||
|
<1> EventBus is used for parent/child component communication. |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 123 |
||||
|
- *Code:* mounted() { |
||||
|
==== |
||||
|
|
||||
|
== Destroy EventBus |
||||
|
|
||||
|
See |
||||
|
https://www.digitalocean.com/community/tutorials/vuejs-component-lifecycle[Vue.js Lifecycle Hooks^]. |
||||
|
|
||||
|
*beforeDestroy* |
||||
|
|
||||
|
- beforeDestroy is fired right before teardown. Your component will still be fully present and functional. |
||||
|
|
||||
|
[source,javascript] |
||||
|
---- |
||||
|
this.$root.$off('iot_add') // <1> |
||||
|
---- |
||||
|
<1> EventBus is used for parent/child component communication. |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 157 |
||||
|
- *Code:* beforeDestroy () { |
||||
|
==== |
||||
|
|
||||
|
== Open a socket |
||||
|
|
||||
|
See |
||||
|
https://www.digitalocean.com/community/tutorials/vuejs-component-lifecycle[ Vue.js Lifecycle Hooks^] |
||||
|
|
||||
|
*Created* |
||||
|
|
||||
|
- You are able to access reactive data and events that are active with the created hook. Templates and Virtual DOM have not yet been mounted or rendered: |
||||
|
|
||||
|
[source,javascript] |
||||
|
---- |
||||
|
this.socketopen() |
||||
|
---- |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 179 |
||||
|
- *Code:* created () { |
||||
|
==== |
||||
|
|
||||
|
== Socket events |
||||
|
|
||||
|
[source,javascript] |
||||
|
---- |
||||
|
this.$socket.client.emit('authenticate', 'logintoken'); |
||||
|
---- |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 192 |
||||
|
- *Code:* sockets: { |
||||
|
==== |
||||
|
|
||||
|
=== onError |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 205 |
||||
|
- *Code:* error(error) { |
||||
|
==== |
||||
|
|
||||
|
=== connect_error |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 214 |
||||
|
- *Code:* connect_error(error) { |
||||
|
==== |
||||
|
|
||||
|
=== connect_error |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 223 |
||||
|
- *Code:* disconnect(reason) { |
||||
|
==== |
||||
|
|
||||
|
=== Socket connect_timeout |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 232 |
||||
|
- *Code:* connect_timeout(reason) { |
||||
|
==== |
||||
|
|
||||
|
=== Socket reconnect |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 241 |
||||
|
- *Code:* reconnect(attemptNumber) { |
||||
|
==== |
||||
|
|
||||
|
=== connect_attempt |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 249 |
||||
|
- *Code:* reconnect_attempt(attemptNumber) { |
||||
|
==== |
||||
|
|
||||
|
=== Socket reconnecting |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 257 |
||||
|
- *Code:* reconnecting(attemptNumber) { |
||||
|
==== |
||||
|
|
||||
|
=== reconnect_error |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 265 |
||||
|
- *Code:* reconnect_error(error) { |
||||
|
==== |
||||
|
|
||||
|
=== unauthorized |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 274 |
||||
|
- *Code:* unauthorized(val) { |
||||
|
==== |
||||
|
|
||||
|
=== connected |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 283 |
||||
|
- *Code:* socket_id_emit(val) { |
||||
|
==== |
||||
|
|
||||
|
=== Socket onMessage |
||||
|
|
||||
|
|
||||
|
|
||||
|
[TIP] |
||||
|
==== |
||||
|
- *File:* /data/appl/ok/swarmlab-iot-example/browser-client/src/components/doclive/runLlo.vue |
||||
|
- *Line:* 293 |
||||
|
- *Code:* async adhocEmit(val) { |
||||
|
==== |
||||
|
|
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,17 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
||||
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
||||
|
<title>bootstrap-vue-example</title> |
||||
|
</head> |
||||
|
<body> |
||||
|
<noscript> |
||||
|
<strong>We're sorry but bootstrap-vue-example doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
||||
|
</noscript> |
||||
|
<div id="app"></div> |
||||
|
<!-- built files will be auto injected --> |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,153 @@ |
|||||
|
<template> |
||||
|
<div id="app"> |
||||
|
|
||||
|
<!-- ***************** nav items ****************** --> |
||||
|
<b-navbar toggleable="md" class="navbar-secondary" > |
||||
|
<b-navbar-toggle target="nav_collapse"> </b-navbar-toggle> |
||||
|
<b-navbar-brand class="logo simple-text ti-swarmlab text-secondary"> |
||||
|
Swarmlab.io Playground |
||||
|
</b-navbar-brand> |
||||
|
<b-collapse is-nav id="nav_collapse"> |
||||
|
<b-navbar-nav> |
||||
|
|
||||
|
|
||||
|
</b-navbar-nav> |
||||
|
|
||||
|
<!-- Right aligned nav items --> |
||||
|
<b-navbar-nav class="ml-auto"> |
||||
|
<b-nav-item href="https://git.swarmlab.io:3000" target="_swarmlabgit"> Swarmlab_git </b-nav-item> |
||||
|
<b-nav-item > | </b-nav-item> |
||||
|
<b-nav-item href="https://api-client.swarmlab.io:8088/#/signin?redirect=%2Fdashboard" target="_swarmlab"> Lab_onDemand </b-nav-item> |
||||
|
<b-nav-item > | </b-nav-item> |
||||
|
<!-- |
||||
|
<b-nav-form> |
||||
|
<b-form-input size="sm" class="mr-sm-2" type="text" placeholder="Search"/> |
||||
|
<b-button size="sm" class="my-2 my-sm-0" type="submit">Search</b-button> |
||||
|
</b-nav-form> |
||||
|
--> |
||||
|
<b-nav-item-dropdown right> |
||||
|
|
||||
|
<!-- Using template slot --> |
||||
|
<template slot="button-content"> |
||||
|
<em>Template</em> |
||||
|
</template> |
||||
|
|
||||
|
<b-dropdown-item > |
||||
|
<button type="button" |
||||
|
round |
||||
|
class="btn btn-outline-info btn-sm" |
||||
|
@click="connect_to_iot('mesh')"> |
||||
|
add</button> |
||||
|
</b-dropdown-item> |
||||
|
|
||||
|
</b-nav-item-dropdown> |
||||
|
|
||||
|
<b-nav-item > </b-nav-item> |
||||
|
|
||||
|
<button type="button" |
||||
|
round |
||||
|
class="btn btn-outline-info btn-sm" |
||||
|
@click="saveDocLive"> |
||||
|
Save As Zip</button> |
||||
|
|
||||
|
</b-navbar-nav> |
||||
|
|
||||
|
</b-collapse> |
||||
|
</b-navbar> |
||||
|
|
||||
|
<!-- ***************** container items ****************** --> |
||||
|
<b-row> |
||||
|
<b-col cols="12"> |
||||
|
|
||||
|
<doc-live |
||||
|
style="background-color: #f8f9fa" |
||||
|
> |
||||
|
</doc-live> |
||||
|
|
||||
|
</b-col> |
||||
|
</b-row> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import DocLive from './components/DocLive.vue' |
||||
|
import "@/assets/css/themify-icons.css"; |
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
name: 'app', |
||||
|
components: { |
||||
|
DocLive |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
show: true, |
||||
|
SwarmabAsciiLabTemplate:'' |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
}, |
||||
|
methods: { |
||||
|
saveDocLive() { |
||||
|
this.$root.$emit('asciilive_save','save') |
||||
|
}, |
||||
|
async connect_to_iot(iot) { |
||||
|
|
||||
|
if( iot == 'mesh' ){ |
||||
|
|
||||
|
this.SwarmabAsciiLabTemplate = { |
||||
|
"iot5": { |
||||
|
"id": 5, |
||||
|
"name": "auto5", |
||||
|
"img": "rinse.png", |
||||
|
"Servicios": [ |
||||
|
{"model":"Sentra", "doors":4}, |
||||
|
{"model":"Maxima", "doors":4}, |
||||
|
{"model":"Skyline", "doors":2} |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
@import url('https://fonts.googleapis.com/css?family=Lato:400,700'); |
||||
|
|
||||
|
body { |
||||
|
background: #EEF1F4 !important; |
||||
|
} |
||||
|
|
||||
|
.nav-background { |
||||
|
background: #353535; |
||||
|
} |
||||
|
|
||||
|
.ti-swarmlab:before { |
||||
|
position: relative; |
||||
|
top:-5px; |
||||
|
right:-8px; |
||||
|
font-size: 1.5em; |
||||
|
font-weight: 300; |
||||
|
content: "\e606"; |
||||
|
color: #222; |
||||
|
color: #74B3C8; |
||||
|
border-color: #c60000; |
||||
|
} |
||||
|
|
||||
|
.ti-themify-logo:before { |
||||
|
content: "\e6d1"; |
||||
|
} |
||||
|
|
||||
|
.menoutext { |
||||
|
font-family: 'Lato', sans-serif !important; |
||||
|
} |
||||
|
|
||||
|
</style> |
File diff suppressed because it is too large
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 229 KiB |
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
@ -0,0 +1,162 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
|
||||
|
<!-- menou --> |
||||
|
<div class="row" |
||||
|
v-show="showmenou == 1" |
||||
|
> |
||||
|
|
||||
|
<div class="col-3"> |
||||
|
<div class="input-group-append"> |
||||
|
<button type="button" |
||||
|
round |
||||
|
v-if="columnviewdefault == '0'" |
||||
|
class="ti-layout-sidebar-none btn btn-outline-info btn-sm" |
||||
|
@click="fullscreen('max')"> |
||||
|
Max-Notebook View </button> |
||||
|
|
||||
|
<button type="button" |
||||
|
round |
||||
|
v-if="columnviewdefault == '1'" |
||||
|
class="ti-layout-sidebar-right btn btn-outline-info btn-sm" |
||||
|
@click="fullscreen('min')"> |
||||
|
Min-Notebook View</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-6"> |
||||
|
<span></span> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-3"> |
||||
|
<div class="input-group-prepend"> |
||||
|
<button type="button" |
||||
|
round |
||||
|
v-if="columncodedefault == '0'" |
||||
|
class="ti-layout-sidebar-none btn btn-outline-info btn-sm" |
||||
|
style="float: right;" |
||||
|
@click="fullscreen('codemax')"> |
||||
|
Max-Code View </button> |
||||
|
|
||||
|
<button type="button" |
||||
|
round |
||||
|
v-if="columncodedefault == '1'" |
||||
|
style="float: right;" |
||||
|
class="ti-layout-sidebar-left btn btn-outline-info btn-sm" |
||||
|
@click="fullscreen('codemin')"> |
||||
|
Min-Code View</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- menou --> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div class="row" > |
||||
|
|
||||
|
<div :class="columnview"> |
||||
|
<ad-hoc |
||||
|
style="background-color: #f8f9fa" |
||||
|
> |
||||
|
</ad-hoc> |
||||
|
</div> |
||||
|
|
||||
|
<div :class="columncode"> |
||||
|
<run-llo |
||||
|
style="background-color: #f8f9fa" |
||||
|
> |
||||
|
</run-llo> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import RunLlo from "./doclive/runLlo.vue"; |
||||
|
import AdHoc from "./doclive/AdhocView.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: 'DocLive', |
||||
|
props: { |
||||
|
}, |
||||
|
components: { |
||||
|
RunLlo, |
||||
|
AdHoc |
||||
|
}, |
||||
|
data () { |
||||
|
return { |
||||
|
loading: false, |
||||
|
showhistory : 0, |
||||
|
productIndex: 1, |
||||
|
showmenou: 1, |
||||
|
columnviewdefault : 0, |
||||
|
columncodedefault : 0, |
||||
|
columnview : 'col-7 order-first', |
||||
|
columncode : 'col-5 order-last', |
||||
|
tutorMenou: 'student' |
||||
|
} |
||||
|
}, |
||||
|
created: function () { |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.$root.$on('LLOshowmenounotebooks', () => { |
||||
|
this.showmenou = 1 |
||||
|
}), |
||||
|
this.$root.$on('lloshowchallengehistory', (llo,active) => { |
||||
|
this.showhistory = 1 |
||||
|
}) |
||||
|
}, |
||||
|
beforeDestroy () { |
||||
|
this.$root.$off('LLOshowmenounotebooks'), |
||||
|
this.$root.$off('lloshowchallengehistory') // working |
||||
|
}, |
||||
|
methods: { |
||||
|
fullscreen(action){ |
||||
|
if(action == 'max'){ |
||||
|
this.columnview = 'col-11 order-first' |
||||
|
this.columncode = 'col-1 order-last' |
||||
|
this.columnviewdefault = 1 |
||||
|
this.columncodedefault = 0 |
||||
|
//set height iframe |
||||
|
this.$root.$emit('LLOresizemenounotebooks','max') |
||||
|
console.log(this.columnview) |
||||
|
} |
||||
|
else if(action == 'min'){ |
||||
|
this.columnview = 'col-7 order-first' |
||||
|
this.columncode = 'col-5 order-last' |
||||
|
this.columnviewdefault = 0 |
||||
|
this.columncodedefault = 1 |
||||
|
//set height iframe |
||||
|
this.$root.$emit('LLOresizemenounotebooks','min') |
||||
|
console.log(this.columnview) |
||||
|
} |
||||
|
else if(action == 'codemax'){ |
||||
|
this.columnview = 'col-1 order-first' |
||||
|
this.columncode = 'col-11 order-last' |
||||
|
this.columnviewdefault = 0 |
||||
|
this.columncodedefault = 1 |
||||
|
console.log(this.columnview) |
||||
|
} |
||||
|
else if(action == 'codemin'){ |
||||
|
this.columnview = 'col-7 order-first' |
||||
|
this.columncode = 'col-5 order-last' |
||||
|
this.columnviewdefault = 1 |
||||
|
this.columncodedefault = 0 |
||||
|
this.$root.$emit('LLOresizemenounotebooks','min') |
||||
|
console.log(this.columnview) |
||||
|
} |
||||
|
}, |
||||
|
async onAction (action) { |
||||
|
this.tutorMenou='tutor' |
||||
|
//this.tutorMenou='student' |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<!-- Add "scoped" attribute to limit CSS to this component only --> |
||||
|
<style scoped> |
||||
|
</style> |
@ -0,0 +1,361 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
|
||||
|
<b-row no-gutters w-100 h-100 |
||||
|
v-if="showlloedit" |
||||
|
> |
||||
|
<b-col cols="12" sm="12" md="12" > |
||||
|
|
||||
|
<b-row > |
||||
|
<b-col cols="5"> |
||||
|
<div class="input-group input-group-sm sm-3"> |
||||
|
<!-- |
||||
|
<select |
||||
|
class="custom-select custom-select-sm " |
||||
|
@change="setKeymap" |
||||
|
v-model="selected"> |
||||
|
<option |
||||
|
v-for="option in options" |
||||
|
v-bind:value="option.value"> |
||||
|
{{ option.text }} |
||||
|
</option> |
||||
|
</select> |
||||
|
<div class="input-group-append"> |
||||
|
<button type="button" |
||||
|
round |
||||
|
class="btn btn-outline-info btn-sm" |
||||
|
v-if="cmOptions.keyMap == 'sublime'" |
||||
|
@click="infoFilter"> |
||||
|
i</button> |
||||
|
</div> |
||||
|
--> |
||||
|
</div> |
||||
|
</b-col> |
||||
|
<b-col cols="7" > |
||||
|
<div class="input-group input-group-sm d-flex justify-content-end"> |
||||
|
</div> |
||||
|
<div class="input-group input-group-sm d-flex justify-content-end"> |
||||
|
<div class="input-group-append"> |
||||
|
<button type="button" |
||||
|
round |
||||
|
class="btn btn-outline-warning btn-sm" |
||||
|
v-if="tryConsole" |
||||
|
@click="clear()"> |
||||
|
Clear</button> |
||||
|
</div> |
||||
|
<div class="input-group-append"> |
||||
|
<button type="button" |
||||
|
round |
||||
|
class="btn btn-outline-info btn-sm" |
||||
|
v-if="cmOptions.keyMap == 'sublime'" |
||||
|
@click="infoFilter"> |
||||
|
i</button> |
||||
|
</div> |
||||
|
<!-- |
||||
|
<div class="input-group-append"> |
||||
|
<button |
||||
|
type="button" |
||||
|
class="btn btn-outline-dark btn-sm" |
||||
|
v-if="tryLLO[active]" |
||||
|
@click="addlloasciisource" |
||||
|
>Create task!</button> |
||||
|
</div> |
||||
|
--> |
||||
|
</div> |
||||
|
</b-col> |
||||
|
</b-row> |
||||
|
|
||||
|
<div class="codemirror" > |
||||
|
<codemirror |
||||
|
ref="myCm" |
||||
|
:value="code" |
||||
|
:options="cmOptions" |
||||
|
@cursorActivity="onCmCursorActivity" |
||||
|
@ready="onCmReady" |
||||
|
@focus="onCmFocus" |
||||
|
@input="onCmCodeChange" |
||||
|
></codemirror> |
||||
|
</div> |
||||
|
</b-col> |
||||
|
</b-row> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import {mapState, mapGetters, mapActions,dispatch} from 'vuex' |
||||
|
import Vue from 'vue' |
||||
|
import store from '@/store/index' |
||||
|
|
||||
|
|
||||
|
import { codemirror } from 'vue-codemirror' |
||||
|
import JSZip from 'jszip'; |
||||
|
import FileSaver from 'file-saver'; |
||||
|
import 'codemirror/lib/codemirror.css' |
||||
|
import 'codemirror/theme/neat.css' |
||||
|
import 'codemirror/theme/paraiso-light.css' |
||||
|
import'codemirror/addon/selection/active-line.js' |
||||
|
|
||||
|
import'codemirror/addon/hint/show-hint.js' |
||||
|
import'codemirror/addon/hint/show-hint.css' |
||||
|
import'codemirror/addon/hint/javascript-hint.js' |
||||
|
import'codemirror/addon/selection/active-line.js' |
||||
|
import'codemirror/addon/scroll/annotatescrollbar.js' |
||||
|
import'codemirror/addon/search/matchesonscrollbar.js' |
||||
|
import'codemirror/addon/search/searchcursor.js' |
||||
|
import'codemirror/addon/search/match-highlighter.js' |
||||
|
|
||||
|
import'codemirror/mode/shell/shell.js' |
||||
|
import'codemirror/addon/edit/matchbrackets.js' |
||||
|
import'codemirror/addon/comment/comment.js' |
||||
|
import'codemirror/addon/dialog/dialog.js' |
||||
|
import'codemirror/addon/dialog/dialog.css' |
||||
|
import'codemirror/addon/search/searchcursor.js' |
||||
|
import'codemirror/addon/search/search.js' |
||||
|
import'codemirror/keymap/sublime.js' |
||||
|
import'codemirror/keymap/vim.js' |
||||
|
|
||||
|
import'codemirror/addon/fold/foldgutter.css' |
||||
|
import'codemirror/addon/fold/brace-fold.js' |
||||
|
import'codemirror/addon/fold/comment-fold.js' |
||||
|
import'codemirror/addon/fold/foldcode.js' |
||||
|
import'codemirror/addon/fold/foldgutter.js' |
||||
|
import'codemirror/addon/fold/indent-fold.js' |
||||
|
import'codemirror/addon/fold/markdown-fold.js' |
||||
|
import'codemirror/addon/fold/xml-fold.js' |
||||
|
import 'codemirror/lib/codemirror'; |
||||
|
import 'codemirror/addon/display/placeholder'; |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
codemirror |
||||
|
}, |
||||
|
data () { |
||||
|
return { |
||||
|
tryConsole:false, |
||||
|
ssl:{}, |
||||
|
getinfo:'', |
||||
|
|
||||
|
code: '', |
||||
|
editchoice: '', |
||||
|
optionsedit: [ |
||||
|
{ text: 'code', value: 'code' }, |
||||
|
{ text: 'text', value: 'text' } |
||||
|
], |
||||
|
llodesc:[{ |
||||
|
llo_url : '', |
||||
|
llo_name : '', |
||||
|
llo_author : '', |
||||
|
llo_intro : '' |
||||
|
}], |
||||
|
llo:[{ |
||||
|
id : 0, |
||||
|
rm : false, |
||||
|
data_info : 'Asciidoc \n', |
||||
|
data_code : '#Your source code', |
||||
|
data_service : '', |
||||
|
code_datafile : 'url', |
||||
|
code_name : '', |
||||
|
code_exec : '', |
||||
|
code_options : '', |
||||
|
code_mime : '', |
||||
|
code_info : '', |
||||
|
code_code : '', |
||||
|
code_codeout : '', |
||||
|
code_codeoutput : 'console', |
||||
|
points : '', |
||||
|
challenge_question : '', |
||||
|
code_challenge_question : '', |
||||
|
challenge_answer : '', |
||||
|
challenge_answer_hint : '', |
||||
|
code_challenge_answer_hint : '', |
||||
|
challenge_answer_source : '', |
||||
|
challenge_answer_code_out : '', |
||||
|
challenge_answer_code : '', |
||||
|
code_challenge_answer_code : '' |
||||
|
}], |
||||
|
searchLLO: [], |
||||
|
searchLLOactive : false, |
||||
|
ADOC_html_code:'', |
||||
|
challenge:[], |
||||
|
action:'', |
||||
|
tryLLO:[], |
||||
|
service:'os2', |
||||
|
active:0, |
||||
|
activecount:0, |
||||
|
remove:'', |
||||
|
activeField:'', |
||||
|
bootstrap:false, |
||||
|
firstbootstrap:0, |
||||
|
htmlasciitmp:'', |
||||
|
datafile: 'https://git.swarmlab.io:3000/labs/examples-mpi2/raw/branch/master/0_netstat/data', |
||||
|
datadir: '0_netstat/data', |
||||
|
LearningObject:'', |
||||
|
showllo:true, |
||||
|
showlloedit:true, |
||||
|
selected: 'sublime', |
||||
|
options: [ |
||||
|
{ text: 'vim', value: 'vim' }, |
||||
|
{ text: 'sublime', value: 'sublime' } |
||||
|
], |
||||
|
optionsmime: [ |
||||
|
{ text: 'sh', value: 'bash' }, |
||||
|
{ text: 'javascript', value: 'javascript' }, |
||||
|
{ text: 'python', value: 'python' }, |
||||
|
{ text: 'php', value: 'php' }, |
||||
|
{ text: 'sql', value: 'sq;' }, |
||||
|
{ text: 'xml', value: 'xml' }, |
||||
|
{ text: 'c', value: 'c' } |
||||
|
], |
||||
|
pValidate: false, |
||||
|
cmOptions: { |
||||
|
tabSize: 2, |
||||
|
styleActiveLine: true, |
||||
|
lineNumbers: true, |
||||
|
lineSeparator:'\n', |
||||
|
line: true, |
||||
|
foldGutter: true, |
||||
|
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"], |
||||
|
highlightSelectionMatches: { showToken: /\w/, annotateScrollbar: true }, |
||||
|
styleSelectedText: true, |
||||
|
mode: 'shell', |
||||
|
hintOptions:{ |
||||
|
completeSingle: false |
||||
|
}, |
||||
|
keyMap: "sublime", |
||||
|
//keyMap: "vim", |
||||
|
matchBrackets: true, |
||||
|
showCursorWhenSelecting: true, |
||||
|
indentUnit:this.ADOC_html_code, |
||||
|
lineWrapping: true, |
||||
|
//theme: 'neat', |
||||
|
theme: 'paraiso-light', |
||||
|
refresh:true, |
||||
|
readOnly: true, |
||||
|
autofocus: false, |
||||
|
extraKeys: { "Ctrl": "autocomplete" } |
||||
|
}, |
||||
|
ADOC_html:[] |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
clear () { |
||||
|
this.tryConsole = false |
||||
|
this.code = '' |
||||
|
}, |
||||
|
async getdata () { |
||||
|
|
||||
|
var field = this.getinfo |
||||
|
var log = await store.dispatch("pipelineLLO/get_data",{ |
||||
|
code:field |
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async showactive(index) { |
||||
|
this.topwindow(index) |
||||
|
}, |
||||
|
onCmReady(cm) { |
||||
|
cm.on('change', (cm, chg) => { |
||||
|
}), |
||||
|
cm.on('keypress', () => { |
||||
|
cm.showHint({completeSingle:false}) |
||||
|
}) |
||||
|
}, |
||||
|
onCmCursorActivity(a, b, c) { |
||||
|
}, |
||||
|
onCmFocus(cm) { |
||||
|
}, |
||||
|
onCmCodeChange(newCode) { |
||||
|
this.code = newCode |
||||
|
//this.$root.$emit('socket_add',this.code) |
||||
|
}, |
||||
|
handleChange() { |
||||
|
}, |
||||
|
setKeymap () { |
||||
|
this.cmOptions.keyMap = this.selected |
||||
|
}, |
||||
|
infoFilter() { |
||||
|
var title1='<h3>Playbook Images</h3>' |
||||
|
var winfop='<table class="table table-striped table-sm ">'+ |
||||
|
'<tr><td class="text-left">Shift-Tab</td> <td class="text-left">indentLess</td></tr>'+ |
||||
|
'<tr><td class="text-left">Alt-Q</td> <td class="text-left">wrapLines</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-Up</td> <td class="text-left">scrollLineUp</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-Down</td> <td class="text-left">scrollLineDown</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-L</td> <td class="text-left">selectLine</td></tr>'+ |
||||
|
'<tr><td class="text-left">Esc</td> <td class="text-left">singleSelectionTop</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-Enter</td> <td class="text-left">insertLineAfter</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-D</td> <td class="text-left">selectNextOccurrence</td></tr>'+ |
||||
|
'<tr><td class="text-left">Shift-Ctrl-Space</td> <td class="text-left">selectScope</td></tr>'+ |
||||
|
'<tr><td class="text-left">Shift-Ctrl-M</td> <td class="text-left">selectBetweenBrackets</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-M</td> <td class="text-left">goToBracket</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-K Ctrl-Y</td> <td class="text-left">sublimeYank</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-K Ctrl-C</td> <td class="text-left">showInCenter</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-K Ctrl-G</td> <td class="text-left">clearBookmarks</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-K Ctrl-Backspace</td> <td class="text-left">delLineLeft</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-K Ctrl-0</td> <td class="text-left">unfoldAll</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-K Ctrl-J</td> <td class="text-left">unfoldAll</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-Alt-Up</td> <td class="text-left">addCursorToPrevLine</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-Alt-Down</td> <td class="text-left">addCursorToNextLine</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-F3</td> <td class="text-left">findUnder</td></tr>'+ |
||||
|
'<tr><td class="text-left">Shift-Ctrl-F3</td> <td class="text-left">findUnderPrevious</td></tr>'+ |
||||
|
'<tr><td class="text-left">Shift-Ctrl-[</td> <td class="text-left">fold</td></tr>'+ |
||||
|
'<tr><td class="text-left">Shift-Ctrl-]</td> <td class="text-left">unfold</td></tr>'+ |
||||
|
'<tr><td class="text-left">Ctrl-F</td> <td class="text-left">find</td></tr>'+ |
||||
|
'</table>' |
||||
|
|
||||
|
var title1='' |
||||
|
var winfo='' |
||||
|
this.$swal({ |
||||
|
title: '<strong>Key bindings</strong>', |
||||
|
type: 'info', |
||||
|
html: winfop+title1+winfo, |
||||
|
showCloseButton: true, |
||||
|
showLoaderOnConfirm: false, |
||||
|
allowOutsideClick: false |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
computed: { |
||||
|
codemirror() { |
||||
|
return this.$refs.myCm.codemirror |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
mounted() { |
||||
|
// this.$root.$on('asciilive_template_add', (v) => { |
||||
|
// this.$nextTick(function () { |
||||
|
// this.code = v |
||||
|
// }) |
||||
|
// }) |
||||
|
this.$root.$on('playground_log_in', (v) => { |
||||
|
this.$nextTick(function () { |
||||
|
this.code += v |
||||
|
this.code += "\n" |
||||
|
this.$refs.myCm.codemirror.setCursor(this.$refs.myCm.codemirror.lineCount(), 0); |
||||
|
this.tryConsole=true |
||||
|
}) |
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
beforeDestroy () { |
||||
|
this.$root.$off('playground_log_in') |
||||
|
}, |
||||
|
|
||||
|
created () { |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
.CodeMirror { |
||||
|
|
||||
|
|
||||
|
font-family: monospace; |
||||
|
height: 550px; |
||||
|
} |
||||
|
|
||||
|
</style> |
@ -0,0 +1,353 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 d-flex justify-content-center text-center"> |
||||
|
<h4 class="text-info"> Search </h4> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="row"> |
||||
|
<div class="col-6"> |
||||
|
|
||||
|
<div class="input-group input-group-sm sm-6"> |
||||
|
<input type="text" |
||||
|
class="form-control" |
||||
|
aria-label="Small" aria-describedby="inputGroup-sizing-sm" |
||||
|
placeholder="Filter your LOG searches by tags" |
||||
|
v-model="search.tag" |
||||
|
@keyup.enter="setFilter" |
||||
|
> |
||||
|
</div> |
||||
|
|
||||
|
</div> <!-- col --> |
||||
|
<div class="col-6"> |
||||
|
|
||||
|
<div class="input-group input-group-sm sm-6"> |
||||
|
<input type="text" |
||||
|
class="form-control" |
||||
|
aria-label="Small" aria-describedby="inputGroup-sizing-sm" |
||||
|
placeholder="Filter your LOG searches by files" |
||||
|
v-model="search.file" |
||||
|
@keyup.enter="setFilter" |
||||
|
> |
||||
|
</div> |
||||
|
|
||||
|
</div> <!-- col --> |
||||
|
</div> <!-- row --> |
||||
|
|
||||
|
|
||||
|
<div class="row"> |
||||
|
<div class="col-12"> |
||||
|
|
||||
|
<div class="input-group input-group-sm sm-6"> |
||||
|
<div class="input-group-prepend"> |
||||
|
<button |
||||
|
class="btn btn-outline-secondary" |
||||
|
round |
||||
|
type="button" |
||||
|
> |
||||
|
Search |
||||
|
</button> |
||||
|
</div> |
||||
|
|
||||
|
<input type="text" |
||||
|
class="form-control" |
||||
|
aria-label="Small" aria-describedby="inputGroup-sizing-sm" |
||||
|
placeholder="Search" |
||||
|
v-model="search.app" |
||||
|
@keyup.enter="setFilter" |
||||
|
> |
||||
|
|
||||
|
<div class="input-group-append"> |
||||
|
<button |
||||
|
class="btn btn-outline-primary" |
||||
|
round |
||||
|
type="button" |
||||
|
@click="setFilter"> |
||||
|
Go</button> |
||||
|
</div> |
||||
|
|
||||
|
<div class="input-group-append"> |
||||
|
<button class="btn btn-outline-secondary" |
||||
|
round |
||||
|
type="button" |
||||
|
@click="resetFilter"> |
||||
|
Reset</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> <!-- col --> |
||||
|
</div> <!-- row --> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import Vue from 'vue' |
||||
|
import JSZip from 'jszip'; |
||||
|
import FileSaver from 'file-saver'; |
||||
|
export default { |
||||
|
components: { |
||||
|
}, |
||||
|
data () { |
||||
|
return { |
||||
|
search: { |
||||
|
tag: "", |
||||
|
file: "", |
||||
|
app: "" |
||||
|
}, |
||||
|
showlloedit:true, |
||||
|
issocket:'close', |
||||
|
socketdata:'', |
||||
|
code:[], |
||||
|
logdata: [] |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
async setFilter() { |
||||
|
console.log(JSON.stringify(this.logdata)) |
||||
|
}, |
||||
|
async resetFilter() { |
||||
|
console.log(JSON.stringify(this.logdata)) |
||||
|
}, |
||||
|
async socketopen () { |
||||
|
this.$socket.client.open(); |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* == socketclose() |
||||
|
* |
||||
|
* [source,javascript] |
||||
|
* ---- |
||||
|
* this.$socket.client.close(); |
||||
|
* ---- |
||||
|
* |
||||
|
*/ |
||||
|
async socketclose () { |
||||
|
this.$socket.client.close(); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
computed: { |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* == Socket subscribe |
||||
|
* |
||||
|
* [source,javascript] |
||||
|
* ---- |
||||
|
* ... |
||||
|
* }) |
||||
|
* sdfsf |
||||
|
den to perni sdfsf |
||||
|
* ---- |
||||
|
* <1> EventBus is used for parent/child component communication. |
||||
|
* |
||||
|
*/ |
||||
|
mounted() { |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* == Destroy EventBus |
||||
|
* |
||||
|
* See |
||||
|
* https://www.digitalocean.com/community/tutorials/vuejs-component-lifecycle[Vue.js Lifecycle Hooks^]. |
||||
|
* |
||||
|
* *beforeDestroy* |
||||
|
* |
||||
|
* - beforeDestroy is fired right before teardown. Your component will still be fully present and functional. |
||||
|
* |
||||
|
* [source,javascript] |
||||
|
* ---- |
||||
|
* ---- |
||||
|
* <1> EventBus is used for parent/child component communication. |
||||
|
* |
||||
|
*/ |
||||
|
beforeDestroy () { |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* == Open a socket |
||||
|
* |
||||
|
* See |
||||
|
* https://www.digitalocean.com/community/tutorials/vuejs-component-lifecycle[ Vue.js Lifecycle Hooks^] |
||||
|
* |
||||
|
* *Created* |
||||
|
* |
||||
|
* - You are able to access reactive data and events that are active with the created hook. Templates and Virtual DOM have not yet been mounted or rendered: |
||||
|
* |
||||
|
* [source,javascript] |
||||
|
* ---- |
||||
|
* this.socketopen() |
||||
|
* ---- |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
created () { |
||||
|
this.socketopen() |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* == Socket events |
||||
|
* |
||||
|
* [source,javascript] |
||||
|
* ---- |
||||
|
* this.$socket.client.emit('authenticate', 'logintoken'); |
||||
|
* ---- |
||||
|
* |
||||
|
*/ |
||||
|
sockets: { |
||||
|
connect() { |
||||
|
this.$socket.client.emit('authenticate', 'logintoken'); |
||||
|
|
||||
|
this.$socket.client.emit('socket_id_get', 'socketdatasend'); |
||||
|
console.log('socket connected '+ 'socketdatasend' ) |
||||
|
this.issocket = 'open' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === onError |
||||
|
* |
||||
|
*/ |
||||
|
error(error) { |
||||
|
console.log("socket error "+JSON.stringify(error)) |
||||
|
this.issocket = 'close' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === connect_error |
||||
|
* |
||||
|
*/ |
||||
|
connect_error(error) { |
||||
|
console.log("socket connect_error "+JSON.stringify(error)) |
||||
|
this.issocket = 'close' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === connect_error |
||||
|
* |
||||
|
*/ |
||||
|
disconnect(reason) { |
||||
|
console.log("socket disconnect "+JSON.stringify(reason)) |
||||
|
this.issocket = 'close' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === Socket connect_timeout |
||||
|
* |
||||
|
*/ |
||||
|
connect_timeout(reason) { |
||||
|
console.log("socket timeout "+JSON.stringify(reason)) |
||||
|
this.issocket = 'close' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === Socket reconnect |
||||
|
* |
||||
|
*/ |
||||
|
reconnect(attemptNumber) { |
||||
|
console.log("socket reconnect attemptNumber "+JSON.stringify(attemptNumber)) |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === connect_attempt |
||||
|
* |
||||
|
*/ |
||||
|
reconnect_attempt(attemptNumber) { |
||||
|
console.log("socket reconnect_attempt "+JSON.stringify(attemptNumber)) |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === Socket reconnecting |
||||
|
* |
||||
|
*/ |
||||
|
reconnecting(attemptNumber) { |
||||
|
console.log("socket reconnecting "+JSON.stringify(attemptNumber)) |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === reconnect_error |
||||
|
* |
||||
|
*/ |
||||
|
reconnect_error(error) { |
||||
|
console.log("socket reconnect_error "+JSON.stringify(error)) |
||||
|
this.issocket = 'close' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === unauthorized |
||||
|
* |
||||
|
*/ |
||||
|
unauthorized(val) { |
||||
|
console.log("socket unauthorized "+JSON.stringify(val)) |
||||
|
this.issocket = 'close' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === connected |
||||
|
* |
||||
|
*/ |
||||
|
socket_id_emit(val) { |
||||
|
console.log("socket id from server "+JSON.stringify(val)) |
||||
|
console.log("socket id from serveri saved "+JSON.stringify(socketsave)) |
||||
|
this.issocket = 'open' |
||||
|
}, |
||||
|
/** |
||||
|
* |
||||
|
* === Socket onMessage |
||||
|
* |
||||
|
*/ |
||||
|
async adhocEmit(val) { |
||||
|
console.log("socket from server "+JSON.stringify(val)) |
||||
|
this.issocket = 'open' |
||||
|
this.$wait.start('myRunInstance1'); |
||||
|
// render begin |
||||
|
this.tryLLO = 'on' |
||||
|
if(this.firstbootstrap === 0 ){ |
||||
|
await this.bootsrapllo(); |
||||
|
this.firstbootstrap = 1 |
||||
|
} |
||||
|
var output = log.data.out |
||||
|
var mydinfunction = ` |
||||
|
<div class="row"> |
||||
|
<b-col class="" cols="12" sm="12" md="12" > |
||||
|
${output} |
||||
|
</b-col> |
||||
|
</div>` |
||||
|
|
||||
|
try { |
||||
|
let divascii = document.createElement('div'); |
||||
|
divascii.setAttribute("class", "container-fluid w-100 p-3 llotry") |
||||
|
divascii.innerHTML = mydinfunction |
||||
|
this.addtask(divascii); |
||||
|
}catch (ex) { |
||||
|
console.log(" logi error1 "+JSON.stringify(ex)) |
||||
|
return |
||||
|
} |
||||
|
this.$wait.end('myRunInstance1'); |
||||
|
}, |
||||
|
async logdata(val) { |
||||
|
console.log(" socket from logdata "+JSON.stringify(val)) |
||||
|
if(val.key == 'message'){ |
||||
|
this.$root.$emit('playground_log_in',val.value) |
||||
|
} |
||||
|
}, |
||||
|
async message(val) { |
||||
|
console.log(" socket message "+JSON.stringify(val)) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
.CodeMirror { |
||||
|
|
||||
|
|
||||
|
font-family: monospace; |
||||
|
height: 750px; |
||||
|
} |
||||
|
|
||||
|
</style> |
@ -0,0 +1,32 @@ |
|||||
|
import Vue from 'vue' |
||||
|
import App from './App.vue' |
||||
|
import store from '@/store/index' |
||||
|
import BootstrapVue from 'bootstrap-vue' |
||||
|
import 'bootstrap/dist/css/bootstrap.css' |
||||
|
import 'bootstrap-vue/dist/bootstrap-vue.css' |
||||
|
import VueSweetalert2 from 'vue-sweetalert2'; |
||||
|
Vue.use(VueSweetalert2); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
import VueSocketIOExt from 'vue-socket.io-extended'; |
||||
|
import io from 'socket.io-client'; |
||||
|
|
||||
|
const socket = io('https://factory.swarmlab.io:55527', { |
||||
|
autoConnect: false |
||||
|
}); |
||||
|
|
||||
|
Vue.use(VueSocketIOExt, socket); |
||||
|
|
||||
|
|
||||
|
|
||||
|
Vue.use(BootstrapVue); |
||||
|
|
||||
|
Vue.config.productionTip = false |
||||
|
new Vue({ |
||||
|
el: '#app', |
||||
|
store, |
||||
|
render: h => h(App) |
||||
|
}) |
||||
|
|
@ -0,0 +1,40 @@ |
|||||
|
import Vuex from 'vuex' |
||||
|
import Vue from 'vue' |
||||
|
import { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue' |
||||
|
// -------------- Playbook----------------
|
||||
|
import pipelineLLO from './modules/create_pipelineLLO' |
||||
|
import { library, dom } from '@fortawesome/fontawesome-svg-core' |
||||
|
|
||||
|
import {faIcons, faSort, faChevronUp, faChevronDown, faBars, fas } from '@fortawesome/free-solid-svg-icons' |
||||
|
import { faJs, faVuejs, fab, faFontAwesome} from '@fortawesome/free-brands-svg-icons' |
||||
|
import { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText } from '@fortawesome/vue-fontawesome' |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
Vue.use(Vuex) |
||||
|
Vue.use(BootstrapVue); |
||||
|
|
||||
|
|
||||
|
|
||||
|
Vue.component('font-awesome-icon', FontAwesomeIcon) |
||||
|
library.add(faIcons, faSort, faChevronUp, faChevronDown, faBars, faJs, faVuejs, fab, fas, faFontAwesome) |
||||
|
dom.watch() // This will kick of the initial replacement of i to svg tags and configure a MutationObserver
|
||||
|
|
||||
|
|
||||
|
import 'bootstrap/dist/css/bootstrap.css' |
||||
|
import 'bootstrap-vue/dist/bootstrap-vue.css' |
||||
|
|
||||
|
|
||||
|
export default new Vuex.Store({ |
||||
|
modules: { |
||||
|
pipelineLLO |
||||
|
}, |
||||
|
state: { // = data
|
||||
|
}, |
||||
|
getters: { // = computed properties
|
||||
|
}, |
||||
|
mutations: { |
||||
|
} |
||||
|
}) |
@ -0,0 +1,72 @@ |
|||||
|
import { mapState, mapActions, commit } from 'vuex' |
||||
|
import store from '@/store/index' |
||||
|
import axios from 'axios' |
||||
|
|
||||
|
export default { |
||||
|
namespaced: true, |
||||
|
state: { |
||||
|
llo: {}, |
||||
|
socketid:'' |
||||
|
}, |
||||
|
getters: { |
||||
|
getllosrc (state, container) { |
||||
|
//console.log("js1 get "+JSON.stringify(state.llo))
|
||||
|
return state.llo |
||||
|
}, |
||||
|
getsocketid (state, container) { |
||||
|
//console.log("js1 get "+JSON.stringify(state.llo))
|
||||
|
return state.socketid |
||||
|
} |
||||
|
}, |
||||
|
mutations: { |
||||
|
setllo (state, data) { |
||||
|
//console.log("js1 set "+JSON.stringify(data))
|
||||
|
state.llo=data; |
||||
|
}, |
||||
|
setsocketid (state, data) { |
||||
|
//console.log("js1 set "+JSON.stringify(data))
|
||||
|
state.socketid = data; |
||||
|
} |
||||
|
}, |
||||
|
actions: { |
||||
|
async get_data({commit,rootGetters}, value) { |
||||
|
try { |
||||
|
|
||||
|
let p = await axios.get("https://factory.swarmlab.io:55527/run", { |
||||
|
timeout: 45000, |
||||
|
params: { |
||||
|
code: value.code |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
//var p = value.code
|
||||
|
console.log("paramp "+JSON.stringify(p)) |
||||
|
store.dispatch('pipelineLLO/setScriptllo', p) |
||||
|
return p; |
||||
|
|
||||
|
} catch (e) { |
||||
|
if(e.error == "invalid_token"){ |
||||
|
window.location.href = 'https://api-login.swarmlab.io:8089'; |
||||
|
}else{ |
||||
|
var R = { |
||||
|
ERROR_str: e, |
||||
|
ERROR: 'yes' |
||||
|
} |
||||
|
return R; |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
setScriptllo({commit}, value) { |
||||
|
//console.log("container "+value)
|
||||
|
commit('setllo', value) |
||||
|
}, |
||||
|
setsocketllo({commit}, value) { |
||||
|
//console.log("container "+value)
|
||||
|
commit('setsocketid', value) |
||||
|
}, |
||||
|
setScriptCodlogAction({commit}, value) { |
||||
|
//console.log("container "+value)
|
||||
|
commit('setScriptCodelog', value) |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue