You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1 lines
457 KiB

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?9b05","webpack:///./src/assets/img/docker.png","webpack:///./src/assets/img/penguin/penguinfledgling2.png","webpack:///./src/components/manageservices/view-events-dashboard.vue?187d","webpack:///./src/assets/img/code-128.png","webpack:///./src/components/manageservices/join-service.vue?c30c","webpack:///./src/components/manageservices/hybridlab.vue?d9b1","webpack:///./src/components/manageservices/manage-service.vue?39c7","webpack:///./src/App.vue?968f","webpack:///./src/config/index.js","webpack:///./src/store/modules/create_pipelineLLO.js","webpack:///./src/store/index.js","webpack:///./src/components/Card.vue?8a3c","webpack:///src/components/Card.vue","webpack:///./src/components/Card.vue?2e9d","webpack:///./src/components/Card.vue","webpack:///./src/components/myconnect-server.vue?59ae","webpack:///./src/components/manageservices/manage-service.vue?892c","webpack:///src/components/manageservices/manage-service.vue","webpack:///./src/components/manageservices/manage-service.vue?3ae5","webpack:///./src/components/manageservices/manage-service.vue","webpack:///./src/components/manageservices/hybridlab.vue?98d3","webpack:///src/components/manageservices/hybridlab.vue","webpack:///./src/components/manageservices/hybridlab.vue?ce1b","webpack:///./src/components/manageservices/hybridlab.vue","webpack:///./src/components/mynetwork/myconnect-server.vue?8134","webpack:///src/components/mynetwork/myconnect-server.vue","webpack:///./src/components/mynetwork/myconnect-server.vue?d4d0","webpack:///./src/components/mynetwork/myconnect-server.vue","webpack:///src/components/myconnect-server.vue","webpack:///./src/components/myconnect-server.vue?ec3f","webpack:///./src/components/myconnect-server.vue","webpack:///./src/components/manageservices.vue?7f31","webpack:///./src/components/manageservices/join-service.vue?61ae","webpack:///src/components/manageservices/join-service.vue","webpack:///./src/components/manageservices/join-service.vue?ad7a","webpack:///./src/components/manageservices/join-service.vue","webpack:///src/components/manageservices.vue","webpack:///./src/components/manageservices.vue?90e3","webpack:///./src/components/manageservices.vue","webpack:///./src/components/managedeploy.vue?55b8","webpack:///./src/components/manageservices/deploy-bootstrap.vue?d780","webpack:///src/components/manageservices/deploy-bootstrap.vue","webpack:///./src/components/manageservices/deploy-bootstrap.vue?d6b7","webpack:///./src/components/manageservices/deploy-bootstrap.vue","webpack:///./src/components/manageservices/view-service.vue?e0a2","webpack:///./src/components/manageservices/LogView.vue?c31b","webpack:///src/components/manageservices/LogView.vue","webpack:///./src/components/manageservices/LogView.vue?d4f1","webpack:///./src/components/manageservices/LogView.vue","webpack:///src/components/manageservices/view-service.vue","webpack:///./src/components/manageservices/view-service.vue?4cff","webpack:///./src/components/manageservices/view-service.vue","webpack:///./src/components/manageservices/request-service.vue?5105","webpack:///src/components/manageservices/request-service.vue","webpack:///./src/components/manageservices/request-service.vue?a9e5","webpack:///./src/components/manageservices/request-service.vue","webpack:///src/components/managedeploy.vue","webpack:///./src/components/managedeploy.vue?d326","webpack:///./src/components/managedeploy.vue","webpack:///./src/components/dashboard.vue?9e4a","webpack:///./src/components/manageservices/view-events.vue?7b41","webpack:///src/components/manageservices/view-events.vue","webpack:///./src/components/manageservices/view-events.vue?84ce","webpack:///./src/components/manageservices/view-events.vue","webpack:///./src/components/manageservices/view-events-dashboard.vue?9a70","webpack:///src/components/manageservices/view-events-dashboard.vue","webpack:///./src/components/manageservices/view-events-dashboard.vue?ca3e","webpack:///./src/components/manageservices/view-events-dashboard.vue","webpack:///src/components/dashboard.vue","webpack:///./src/components/dashboard.vue?8c84","webpack:///./src/components/dashboard.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/assets/img/elusiven_network64-64.png","webpack:///./src/components/manageservices/view-service.vue?448b","webpack:///./src/assets/img/snowflake_256.png","webpack:///./src/assets/img/library.png","webpack:///./src/assets/img/warning.png","webpack:///./src/components/manageservices/request-service.vue?a1c9","webpack:///./src/components/manageservices/deploy-bootstrap.vue?1455","webpack:///./src/components/mynetwork/myconnect-server.vue?c996","webpack:///./src/assets/loading.gif","webpack:///./src/components/manageservices/view-events.vue?5719","webpack:///./src/components/manageservices/LogView.vue?a582","webpack:///./src/assets/img/hybrid-1.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","warning","staticStyle","_v","on","setWarning","_m","issocket","$event","onAction","sidemenou","directives","rawName","modifiers","class","active","isActive","setActive","hybrid","isActiveSub","onActionMenu","_e","hybridmenou","componentKeyreload","expression","showdiscl","staticRenderFns","ApiConfig","namespaced","state","token","socketStatus","status","statusswarmlab","config","getters","getsocketStatus","container","gettoken","getlog","log","getconfig","getstatus","getstatusswarmlab","mutations","set_socketStatus","set_token","set_status","add_log","add_config","add_statusswarmlab","console","JSON","stringify","actions","addstatusswarmlab","commit","addconfig","addlog","tt","message","tailed_path","date","setsocketStatus","settoken","setstatus","rootGetters","params","action","options","headers","Authorization","sock_server_l","url_80","axios","post","e","test","R","ERROR_str","ERROR","location","href","track","course","chapter","evaluation","error","info","begin","end","save","pipeline","pipelineApi","nodename","nodeip","nodeid","noderole","nodezones","nodedesc","instance","publickey","endpointport","serverip","netmask","peer_ip","allowedips","privatekey","network","networks","defaultnetwork","bootstrapnameid","bootstrapstackname","code","storagename","dir","file","swarmlabname","bootstrapstackid","node","wg","swarmlabservice","deploy","Vue","use","Vuex","BootstrapVue","component","FontAwesomeIcon","library","add","faIcons","faSort","faChevronUp","faChevronDown","faBars","faJs","faVuejs","fab","fas","faFontAwesome","dom","watch","Store","pipelineLLO","$slots","_t","header","title","_s","subTitle","props","String","domProps","type","indexOf","_k","keyCode","setFilter","target","composing","searchFor","resetFilter","ref","scopedSlots","_u","fn","valid","errors","ariaMsg","ariaInput","vuetablekeyc","apiurl","httpOptions","fields","itemActions","sortOrder","multiSort","perpage","paginationComponent","moreParams","css","table","onPaginationData","loadsuccess","onLoadError","rowData","rowIndex","paginationInfo","pagination","onChangePage","components","sortField","titleClass","visible","width","dataClass","url_string","url","URL","searchParams","computed","methods","$refs","setPaginationData","paginationData","vuetable","changePage","page","alert","nodeadmin","nodeadminupdate","provider","validate","then","success","rowdata","swarmlabhybridapi","$set","showinfo","getApi","labservices","$swal","html","showCloseButton","showLoaderOnConfirm","allowOutsideClick","showCancelButton","reverseButtons","focusCancel","confirmButtonText","CONFIG","workerkey","swarmlab_public_wgkey","server_ip","wg_ip","serverstatus","slot","hybridshowdata","onActionHybrid","Replicas","bootstrapimage","bootstrapname","bootstrapdateend","bootstrapnetwork","bootstrapdatebegin","ports","vuetablekey1","testactionrowindex","actionrowindex","callback","index","hybridshowuser","invalid","isDeployValid","image","isValid","showInfo","stackname","model","$$v","timePickerOptions","add_deploy","DatePicker","ValidationProvider","card","isAllValid","isAllDateValid","hybridshowlog","onActionLog","onActionUser","vuetablekeyd","runextenderror","clear","cmOptions","keyMap","infoFilter","onCmCursorActivity","onCmReady","onCmFocus","onCmCodeChange","socketonline","extenderror","tryConsole","ssl","getinfo","editchoice","optionsedit","searchLLOactive","ADOC_html_code","challenge","tryLLO","service","activecount","remove","activeField","bootstrap","firstbootstrap","htmlasciitmp","datafile","datadir","LearningObject","showllo","showlloedit","topwindow","cm","chg","a","b","newCode","selected","myCm","codemirror","icon","cancelButtonText","vuetablekey1a","logsave","store","dispatch","labtext","originalItem","lang","desc","Level","Prerequisites","startDate","endDate","urltype","ViewDashboard","ConnectServer","ManageServices","ManageDeploy","componentKeyreload1","componentKeyreload2","componentKeyreload3","componentKeybuilders","show","SwarmabAsciiLabTemplate","activeItem","menuItem","activeItemSub","menuItemSub","VueSweetalert2","VueWait","socketurl","socket","io","autoConnect","reconnection","reconnectionDelay","maxReconnectionAttempts","Infinity","pingInterval","pingTimeout","transports","secure","rejectUnauthorized","VueSocketIOExt","productionTip","el","wait","h","App"],"mappings":"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","file":"js/app.70ef1e87.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/docker.7b56657d.png\";","module.exports = __webpack_public_path__ + \"img/penguinfledgling2.d4cb3ed7.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events-dashboard.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./join-service.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hybridlab.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manage-service.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\",attrs:{\"id\":\"app\"}},[(_vm.warning===true)?_c('div',[_c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 order-first \"},[_c('br')]),_c('div',{staticClass:\"col-8 order-last\"},[_c('br'),_c('h2',[_vm._v(\" Welcome to Swarmlab-venus! \")]),_c('br'),_vm._v(\" You are now \"),_c('b',[_vm._v(\"connected to the local Swarmlab client.\")]),_c('br'),_vm._v(\" That means that \"),_c('b',[_vm._v(\"at the moment you are offline\")]),_vm._v(\" and can only \"),_c('b',[_vm._v(\"work locally on your PC.\")]),_c('br'),_c('br'),_vm._v(\" To \"),_c('u',[_vm._v(\"connect to the server\")]),_vm._v(\" please \"),_c('i',[_vm._v(\"visit the \\\"Network->Join\\\" Menu and click on \\\"connect\\\".\")]),_c('br'),_c('br'),_c('b',[_vm._v(\"DISCLAMER:\")]),_c('br'),_vm._v(\" When connecting to other \\\"Networks\\\" \"),_c('b',[_vm._v(\"your host is becoming part of a network\")]),_vm._v(\" of multiple other computers that are also connected. \"),_c('br'),_vm._v(\" This means that communication between those hosts is unlimited (no firewall). \"),_c('br'),_c('br'),_vm._v(\" Since docker is a contained virtual environment this is \"),_c('b',[_vm._v(\"VERY SAFE\")]),_c('br'),_c('br'),_c('b',[_vm._v(\"BUT\")]),_c('br'),_vm._v(\" to be absolutely secure, like when connecting to any network: \"),_c('br'),_c('ul',[_c('li',[_vm._v(\" please make sure \"),_c('b',[_vm._v(\"your passwords are strong\")]),_vm._v(\" (and obviously \"),_c('b',[_vm._v(\"change all defaults\")]),_vm._v(\" like the ones provided for the downloadable docker images or our labs, since they are publicly available) \")]),_c('li',[_vm._v(\" don't connect to hosts you don't trust (e.g. when using the hybrid only trust relliable sources) \")]),_c('li',[_vm._v(\" be aware that you are in a public network (like an airport e.g.) and act accordingly \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-5 order-first \"},[_c('b',[_vm._v(\"You can always check your connection status at the top right\")])]),_c('div',{staticClass:\"col-7 order-last\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/warning.png\"),\"alt\":\"...\"}})])]),_c('br'),_c('br'),_c('h4',{staticClass:\"text-warning\"},[_vm._v(\" Please make sure all users on your system have a strong password! \")]),_c('h5',{staticClass:\"text-info\"},[_c('span',{staticClass:\"text-dark\"},[_vm._v(\"Advice:\")]),_vm._v(\" If at all unsure (e.g. \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(\"if your machine has personal data on it\")]),_vm._v(\") you can ofcourse use our image and launch a virtual machine to be absolutely isolated. \")]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 order-first \"},[_c('br')]),_c('div',{staticClass:\"col-8 order-last\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setWarning}},[_vm._v(\" Yes I understad and will be careful\")])])])])])])])])],1):_c('div',[_c('nav',{staticClass:\"navbar navbar-light navbar-expand-md bg-light justify-content-md-center justify-content-start\"},[_c('b-navbar-brand',{staticClass:\"logo simple-text ti-swarmlab text-secondary\"},[_vm._v(\" Swarmlab.io \")]),_c('div',{staticClass:\"navbar-collapse collapse justify-content-between align-items-center w-100\",attrs:{\"id\":\"collapsingNavbar2\"}},[_c('ul',{staticClass:\"navbar-nav mx-auto text-md-center text-left\"},[_c('b-nav-item',{attrs:{\"href\":\"https://git.swarmlab.io:3000\",\"target\":\"_swarmlabgit\"}},[_vm._v(\" Swarmlab_git \")]),_vm._m(0),_vm._m(1),_vm._m(2),_c('b-nav-item',{attrs:{\"href\":\"https://gitter.im/swarmlab-hybrid/community\",\"target\":\"_gitter\"}},[_vm._v(\" Join_us_on_Gitter \")]),_c('b-nav-item',{attrs:{\"href\":\"https://vimeo.com/showcase/7887267\",\"target\":\"_vimeo\"}},[_vm._v(\" Follow_us_on_Vimeo \")])],1),_c('ul',{staticClass:\"nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap\"},[_c('b-nav-item',[_vm._v(\"Agent\")]),(_vm.issocket === 'close')?_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"ti-link nav-link text-danger\",attrs:{\"href\":\"#\",\"title\":\"You are disconnected from hybrid_agent\"}})]):_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"ti-link nav-link text-success\",attrs:{\"href\":\"#\",\"title\":\"You are connected hybrid_agent\"},on:{\"click\":function($event){return _vm.onAction('connect')}}})]),_c('b-nav-item')],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex\",attrs:{\"id\":\"wrapper\"}},[(_vm.sidemenou == 'max')?_c('div',{staticClass:\" bg-light border-right\",staticStyle:{\"width\":\"15rem\"},attrs:{\"id\":\"sidebar-wrapper\"}},[_c('div',{staticClass:\"list-group list-group-flush\"},[_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-dashboard\",modifiers:{\"hybrid-dashboard\":true}}],staticClass:\"ti-dashboard list-group-item list-group-item-action\",class:{ active: _vm.isActive('dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Dashboard\"},on:{\"click\":[function($event){return _vm.setActive('dashboard','')},function($event){return _vm.hybrid('dashboard')}]}},[_vm._v(\" Dashboard\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-dashboard\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('dashboard_dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"dashboard\"},on:{\"click\":function($event){return _vm.setActive('dashboard','dashboard_dashboard')}}},[_vm._v(\" Dashoard\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-hybrid\",modifiers:{\"hybrid-hybrid\":true}}],staticClass:\"ti-loop list-group-item list-group-item-action\",class:{ active: _vm.isActive('hybrid') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','')},function($event){return _vm.hybrid('manage_service')}]}},[_vm._v(\" Network\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-hybrid\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-target m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_instances') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Hybrid\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_instances')},function($event){return _vm.hybrid('manage_service')}]}},[_vm._v(\" Join\")]),_c('b-list-group-item',{staticClass:\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_deploy') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Deploy\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_deploy')},function($event){return _vm.hybrid('manage_deploy')}]}},[_vm._v(\" Deploy\")])],1),_c('b-list-group-item',{staticClass:\"ti-angle-double-left list-group-item list-group-item-action\",class:{ active: _vm.isActive('menou-min') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"menou-min\",\"title\":\"Minimize\"},on:{\"click\":function($event){return _vm.onActionMenu('min')}}})],1)]):_vm._e(),(_vm.sidemenou == 'min')?_c('div',{staticClass:\" bg-light border-right\",attrs:{\"id\":\"sidebar-wrapper1\"}},[_c('div',{staticClass:\"list-group list-group-flush\"},[_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-dashboard1\",modifiers:{\"hybrid-dashboard1\":true}}],staticClass:\"ti-dashboard list-group-item list-group-item-action\",class:{ active: _vm.isActive('dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Dashboard\",\"title\":\"Dashboard\"},on:{\"click\":[function($event){return _vm.setActive('dashboard','')},function($event){return _vm.hybrid('dashboard')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-dashboard1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('dashboard_dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"dashboard\",\"title\":\"Dashboard\"},on:{\"click\":function($event){return _vm.setActive('dashboard','dashboard_dashboard')}}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-hybrid1\",modifiers:{\"hybrid-hybrid1\":true}}],staticClass:\"ti-loop list-group-item list-group-item-action\",class:{ active: _vm.isActive('hybrid') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\",\"title\":\"Hybrid\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','')},function($event){return _vm.hybrid('manage_service')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-hybrid1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-target m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_instances') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Hybrid\",\"title\":\"Zones\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_instances')},function($event){return _vm.hybrid('manage_service')}]}}),_c('b-list-group-item',{staticClass:\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_deploy') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Deploy\",\"title\":\"Deploy\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_deploy')},function($event){return _vm.hybrid('manage_deploy')}]}})],1),_c('b-list-group-item',{staticClass:\"ti-angle-double-right list-group-item list-group-item-action\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"menou-max\",\"title\":\"Maximize\"},on:{\"click\":function($event){return _vm.onActionMenu('max')}}})],1)]):_vm._e(),_c('div',{staticClass:\"w-100 p-3\",staticStyle:{\"background-color\":\"#eee\"}},[(_vm.hybridmenou == 'dashboard')?_c('view-dashboard',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'manage_service')?_c('manage-services',{key:_vm.componentKeyreload,staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'manage_deploy')?_c('manage-deploy',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),_c('connect-server',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'connect-server'),expression:\"hybridmenou == 'connect-server'\"}],staticStyle:{\"background-color\":\"#f8f9fa\"}})],1)])])],1),_c('footer',{staticClass:\"footer\"},[_c('div',{staticClass:\"container\",staticStyle:{\"max-width\":\"75%\"},attrs:{\"id\":\"appfooter\"}},[_vm._m(3),_vm._v(\" | \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://www.gnu.org/licenses/agpl-3.0.html\",\"target\":\"_blank\"}},[_vm._v(\" ©\")]),_vm._v(\" Coded with \"),_c('i',{staticClass:\"ti-heart\"}),_vm._v(\" by \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://git.swarmlab.io:3000/zeus\",\"target\":\"_blank\"}},[_vm._v(\" zeus\")]),_vm._v(\" - Released under the \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://www.gnu.org/licenses/agpl-3.0.html\",\"target\":\"_blank\"}},[_vm._v(\" GNU AGPL License\")]),_vm._v(\" | \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.showdiscl()}}},[_vm._v(\"Disclaimer and Notices\")]),(_vm.hybridmenou == 'llo'||_vm.hybridmenou == 'dashboard')?_c('span',[_vm._v(\" | \")]):_vm._e(),(_vm.hybridmenou == 'llo'||_vm.hybridmenou == 'dashboard')?_c('a',{staticClass:\"external text text-info\",attrs:{\"rel\":\"nofollow\",\"href\":\"https://letsgolarval.wordpress.com/open-art/\",\"target\":\"newl\"}},[_vm._v(\" Linux Penguin \")]):_vm._e(),(_vm.hybridmenou == 'llo'||_vm.hybridmenou == 'dashboard')?_c('span',[_vm._v(\" by Rebekah Yoder / \")]):_vm._e(),(_vm.hybridmenou == 'llo'||_vm.hybridmenou == 'dashboard')?_c('a',{staticClass:\"external text text-info\",attrs:{\"rel\":\"nofollow\",\"href\":\"https://creativecommons.org/licenses/by/2.0/\",\"target\":\"newl\"}},[_vm._v(\"BY-SA \")]):_vm._e()])])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_vm._v(\" - \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item my-auto\"},[_c('a',{staticClass:\"nav-link navbar-brand mx-0 d-none d-md-inline\",attrs:{\"href\":\"\"}},[_vm._v(\"Venus\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_vm._v(\" - \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"jsl10n\",attrs:{\"data-jsl10n\":\"license\"}},[_vm._v(\"Content is available under the \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://creativecommons.org/licenses/by-sa/3.0/\",\"target\":\"_blank\"}},[_vm._v(\"Creative Commons License\")])])}]\n\nexport { render, staticRenderFns }","//var global_config = {\nexport const ApiConfig = {\n\t\t'swarmlab_url_80'\t\t\t: 'https://api.swarmlab.io', \t\t\t\n\t\t'url_80'\t\t\t\t\t\t\t: 'http://localhost:8085', \t\t\t// webclient \t\t\n\t\t'url_443'\t\t\t\t\t\t\t: 'https://localhost:8085' \t\t\t// webclient\n\t\t\t\t\t\t\t\t\t\t\t/* \tconfig for swarmlab ide */\n};\n","import { mapState, mapActions, commit } from 'vuex'\nimport store from '@/store/index'\nimport axios from 'axios'\nimport {ApiConfig} from \"@/config/index\";\n\nexport default {\n namespaced: true,\n state: {\n token: '',\n\t\tsocketStatus:'close',\n status: {},\n statusswarmlab: {},\n config: {}\n },\n getters: {\n\t\tgetsocketStatus (state, container) {\n\t\t\treturn state.socketStatus\n\t\t},\n\t\tgettoken (state, container) {\n\t\t\treturn state.token\n\t\t},\n\t\tgetlog (state, container) {\n\t\t\treturn state.log\n\t\t},\n\t\tgetconfig (state, container) {\n\t\t\treturn state.config\n\t\t},\n\t\tgetstatus (state, container) {\n\t\t\treturn state.status\n\t\t},\n\t\tgetstatusswarmlab (state, container) {\n\t\t\treturn state.statusswarmlab\n\t\t}\n },\n mutations: {\n\t\tset_socketStatus (state, data) {\n\t\t\t\tstate.socketStatus=data;\n\t\t},\n\t\tset_token (state, data) {\n\t\t\t\tstate.token=data;\n\t\t},\n\t\tset_status (state, data) {\n\t\t\t\tstate.status=data;\n\t\t},\n\t\tadd_log (state, data) {\n //console.log(\"js1 set \"+JSON.stringify(data))\n\t\t\t\tstate.log.push(data);\n\t\t},\n\t\tadd_config (state, data) {\n //console.log(\"js1 set \"+JSON.stringify(data))\n\t\t\t\tstate.config = data\n\t\t},\n\t\tadd_statusswarmlab (state, data) {\n console.log(\"status server \"+JSON.stringify(data))\n\t\t\t\tstate.statusswarmlab = data\n\t\t}\n },\n actions: {\n\t\taddstatusswarmlab({commit}, value) {\n\t\t\t commit('add_statusswarmlab', value)\n\t\t},\n\t\taddconfig({commit}, value) {\n\t\t\t commit('add_config', value)\n\t\t},\n\t\taddlog({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n var tt = {}\n tt.message = value.log.log.message\n tt.tailed_path = value.log.log.tailed_path\n tt.date = value.log.date\n\t\t\t commit('add_log', tt)\n\t\t},\n\t\tsetsocketStatus({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_socketStatus', value.status)\n\t\t},\n\t\tsettoken({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_token', value.token)\n\t\t},\n\t\tsetstatus({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_status', value.status)\n\t\t},\n async swarmlabstart({commit,rootGetters}, value) {\n //console.log('from '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n action: value.action,\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/run'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.post('http://localhost:8084/run',params,options);\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async oncompletiontracking({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n track: value.track,\n course: value.course,\n chapter: value.chapter,\n evaluation: value.evaluation\n }\n\t\t\t\t\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/completiontracking',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n //console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getcompletion({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n course: value.course,\n chapter: value.chapter\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getcompletion',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async getevents({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n begin: value.begin,\n end: value.end\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabevents',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n\t\t async swarmlabhybridapi({commit,rootGetters}, value) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tvar token = rootGetters['pipelineLLO/gettoken']\n\t\t\t\t\t\t\t\t\tvar save = value\n\t\t\t\t\t\t\t\t\tvar params = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpipeline: save\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvar options = {\n\t\t\t\t\t\t\t\t\t\t\t\theaders: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n var pipelineApi = await axios.post('https://api.swarmlab.io/swarmlabhybridapi',params,options);\n\t\t\t\t\t\t\t\t\treturn pipelineApi\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\tif(e.error == \"invalid_token\"){\n\t\t\t\t\t\t\t\t\t\t\twindow.location.href = 'https://api-login.swarmlab.io:8089';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t },\n\n async getprogress({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n course: value.course\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getprogress',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async swarmlabhybridadd({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n nodename: value.nodename,\n nodeip: value.nodeip,\n nodeid: value.nodeid,\n noderole: value.noderole,\n nodezones: value.nodezones,\n nodedesc: value.nodedesc\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridadd',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n //console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridrm({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n nodename: value.nodename,\n nodeip: value.nodeip,\n nodeid: value.nodeid,\n noderole: value.noderole,\n nodezones: value.nodezones,\n nodedesc: value.nodedesc\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrm',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n //console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getmountinfo({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getmountinfo'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getservicesinfo({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getservicesinfo'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getnetworks({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getnetworks'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_join_start({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n/*\n var Endpoint = `83.212.78.14:${this.server_wg_port}`\n var peerconfig =`\n[Interface]\n PrivateKey = ${privatekey}\n ListenPort = 51820\n\n[Peer]\n PublicKey = ${publickey}\n Endpoint = ${endpoint}\n AllowedIPs = 10.1.0.0/24\n #AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0\n PersistentKeepalive = 30\n`\n*/\n try {\n var token = value.token\n var params = {\n publickey: value.publickey,\n endpointport: value.endpointport,\n serverip: value.serverip,\n netmask: value.netmask,\n peer_ip: value.peer_ip,\n allowedips: value.allowedips,\n privatekey: value.privatekey\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/hybrid_join_start'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async hybrid_join_connect({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/hybrid_join_connect'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async updatenetworks({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n network: value.networks,\n defaultnetwork: value.defaultnetwork,\n container: value.container\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/updatenetworks'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getlogs({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n container: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getlogs'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getserviceshybridstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n bootstrapstackname: value.bootstrapstackname\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getserviceshybridstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getservicesstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getservicesstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async rmbuildstatus({commit,rootGetters}, value) {\n //console.log('valuei22222222222222222222222222222222 '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/rmbuildstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getbuildstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getbuildstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getstoragestatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getstoragestatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async create_config({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n value: value.value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/create_config'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/create_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async rmswarmlablocal({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n instance: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/rm_swarmlab'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async rmswarmlablocalstorage({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n instance: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/rm_swarmlabstorage'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async save_llo_asciidoctmp({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n code: value\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/save_course_ascii'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getstoragesudoprepare({commit,rootGetters}, value) {\n \n try {\n var token = value.token\n var params = {\n storagename: value\n }\n var options = {\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/check_storage_sudorun'\n var p = await axios.post(sock_server_l,params,options);\n console.log('error '+JSON.stringify(p))\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getstoragesudopreparestop({commit,rootGetters}, value) {\n \n try {\n var token = value.token\n var params = {\n storagename: value\n }\n var options = {\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/check_storage_sudostop'\n var p = await axios.post(sock_server_l,params,options);\n console.log('error '+JSON.stringify(p))\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async get_llo_course_ascii({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n dir: value.dir,\n file: value.file\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/get_course_ascii'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async get_llo_course({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n course: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/get_course'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async get_config({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n value: 'get'\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/get_config'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getswarmlabinfo({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n //console.log('token ' + token)\n var params = {\n swarmlabname: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabhybridservicesinfo',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async getswarmlabstorageinfo({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n //console.log('token ' + token)\n var params = {\n swarmlabname: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabhybridstorageinfo',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async getswarmlabmicroserviceinfo({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n //console.log('token ' + token)\n var params = {\n swarmlabname: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabhybridmicroserviceinfo',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async wg_invite({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabwgadminuserinvite',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_join({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n node: value.node,\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoinstackwg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_leave({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n node: value.node,\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'leave'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoinstack',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridconfig({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: 'add'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridconfiginfo',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_servicerm({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'servicesrm'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrmservice',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async stackrmwg({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n action: 'stackrm'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrmstackwg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\tconsole.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async wg_servicerestart({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestart'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrestartservicewg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async create_vpn ({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n wg: value.wg\n }\n console.log(`params--------${token}------------------ `+JSON.stringify(params))\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/addwghybridiserver',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_servicelog({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestlog'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridlogservice',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async wg_invite_accept({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n wg: value.wg,\n action: value.action\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/wguseraccept',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async wg_servicelog({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestlog'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridlogservicewg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridjoin({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n swarmlabservice: 'ondemand_test_spitifgdfgdfkngkndfkngkdfngkdfk',\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoin',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async adddeploy({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n deploy: value.wg,\n action: 'deploy'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/adddeployhybridwg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n\n\n\n }\n}\n","import Vuex from 'vuex'\nimport Vue from 'vue'\nimport { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'\n// -------------- Playbook----------------\nimport pipelineLLO from './modules/create_pipelineLLO'\nimport { library, dom } from '@fortawesome/fontawesome-svg-core'\n\nimport {faIcons, faSort, faChevronUp, faChevronDown, faBars, fas } from '@fortawesome/free-solid-svg-icons'\nimport { faJs, faVuejs, fab, faFontAwesome} from '@fortawesome/free-brands-svg-icons'\nimport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText } from '@fortawesome/vue-fontawesome'\n\n\n\n\n\nVue.use(Vuex)\nVue.use(BootstrapVue);\n\n\n\nVue.component('font-awesome-icon', FontAwesomeIcon)\nlibrary.add(faIcons, faSort, faChevronUp, faChevronDown, faBars, faJs, faVuejs, fab, fas, faFontAwesome)\ndom.watch() // This will kick of the initial replacement of i to svg tags and configure a MutationObserver\n\n\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\n\n\nexport default new Vuex.Store({\n modules: {\n\t\tpipelineLLO\n },\n state: { // = data\n },\n getters: { // = computed properties\n },\n mutations: {\n }\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[(_vm.$slots.image)?_c('div',{staticClass:\"card-image\"},[_vm._t(\"image\")],2):_vm._e(),(_vm.$slots.header || _vm.title)?_c('div',{staticClass:\"card-header\"},[_vm._t(\"header\",[_c('h4',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.title))]),(_vm.subTitle)?_c('p',{staticClass:\"card-category\"},[_vm._v(_vm._s(_vm.subTitle))]):_vm._e()])],2):_vm._e(),(_vm.$slots.default)?_c('div',{staticClass:\"card-body\"},[_vm._t(\"default\")],2):_vm._e(),_vm._t(\"raw-content\"),(_vm.$slots.footer)?_c('div',{staticClass:\"card-footer\"},[_c('hr'),_vm._t(\"footer\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"card\">\n <div class=\"card-image\" v-if=\"$slots.image\">\n <slot name=\"image\"></slot>\n </div>\n <div class=\"card-header\" v-if=\"$slots.header || title\">\n <slot name=\"header\">\n <h4 class=\"card-title\">{{title}}</h4>\n <p class=\"card-category\" v-if=\"subTitle\">{{subTitle}}</p>\n </slot>\n </div>\n <div class=\"card-body\" v-if=\"$slots.default\">\n <slot></slot>\n </div>\n <slot name=\"raw-content\"></slot>\n <div class=\"card-footer\" v-if=\"$slots.footer\">\n <hr>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n</template>\n<script>\nexport default {\n name: \"card\",\n props: {\n title: String,\n subTitle: String\n }\n};\n</script>\n<style>\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Card.vue?vue&type=template&id=54cb0c34&\"\nimport script from \"./Card.vue?vue&type=script&lang=js&\"\nexport * from \"./Card.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7 order-first \"},[_c('br'),_c('myconnect-server'),(_vm.ishybridlab)?_c('hybrid-lab'):_vm._e()],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('zones-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab hybrid zones config\")])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('add')}}},[_vm._v(\" Add Network Node\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),(_vm.nodeadmin)?_c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 order-first pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodename),expression:\"nodename\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Name\"},domProps:{\"value\":(_vm.nodename)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodename=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[(_vm.nodeadminupdate)?_c('ValidationProvider',{ref:\"provider\",attrs:{\"name\":\"nodeid\",\"rules\":\"required|alpha_num\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nreturn [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodeid),expression:\"nodeid\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"NodeId\",\"disabled\":\"\"},domProps:{\"value\":(_vm.nodeid)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodeid=$event.target.value}}})]}}],null,false,1653130323)}):_c('ValidationProvider',{ref:\"provider\",attrs:{\"name\":\"nodeid\",\"rules\":\"required|alpha_num\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nreturn [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodeid),expression:\"nodeid\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"NodeId\",\"data-vv-as\":\"\\\"Node id\\\"\",\"data-vv-value-path\":\"nodeid\",\"data-vv-name\":\"nodeid\"},domProps:{\"value\":(_vm.nodeid)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodeid=$event.target.value}}}),_c('span',[_vm._v(_vm._s(errors[0]))])]}}],null,false,3037502831)})],1),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodeip),expression:\"nodeip\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"IP\"},domProps:{\"value\":(_vm.nodeip)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodeip=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 order-first pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.noderole),expression:\"noderole\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Role\"},domProps:{\"value\":(_vm.noderole)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.noderole=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodezones),expression:\"nodezones\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Zones\"},domProps:{\"value\":(_vm.nodezones)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodezones=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodedesc),expression:\"nodedesc\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"nodedesc\"},domProps:{\"value\":(_vm.nodedesc)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodedesc=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 pr-md-1\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[(_vm.nodeadminupdate)?_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('update')}}},[_vm._v(\" update\")]):_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('addserver')}}},[_vm._v(\" add\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('cancel')}}},[_vm._v(\" Cancel\")])])])])])]):_vm._e(),_vm._v(\" \"),_c('vuetable',{key:_vm.vuetablekeyc,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actions\",fn:function(props){return [_c('div',{staticClass:\"table-button-container\"},[_c('button',{staticClass:\"ti-pencil btn btn-outline-secondary btn-sm\",on:{\"click\":function($event){return _vm.onAction('edit', props.rowData, props.rowIndex)}}}),_c('button',{staticClass:\"ti-trash btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('rm', props.rowData, props.rowIndex)}}})])]}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/docker.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n\n\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab hybrid zones config</b>\n </div>\n </div>\n\n<br>\n\n\n\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button \n class=\"btn btn-outline-primary\" \n round\n type=\"button\"\n @click=\"onAction('add')\"\n >\n Add Network Node</button>\n </div>\n \n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Search\"\n v-model=\"searchFor\"\n @keyup.enter=\"setFilter\"\n >\n \n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-primary\" \n round\n type=\"button\"\n @click=\"setFilter\">\n Go</button>\n </div>\n \n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" \n round\n type=\"button\"\n @click=\"resetFilter\">\n Reset</button>\n </div>\n </div>\n\n <!-- add newNODE -->\n <card class=\"card-user\" style=\"max-height:100%\"\n v-if=\"nodeadmin\"\n >\n <br>\n <div class=\"white h-20 flex-fixed-width-item\"\n\n <!-- add newROW ---------------------------------------------------- -->\n <div class=\"row\" >\n <div class=\"col-3 order-first pr-md-1\" >\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Name\"\n v-model=\"nodename\"\n >\n </div> <!-- coll -->\n\n <div class=\"col-3 pr-md-1\" >\n\n\n\n <ValidationProvider name=\"nodeid\" rules=\"required|alpha_num\" ref=\"provider\" \n v-slot=\"{ valid, errors, ariaMsg, ariaInput }\"\n v-if=\"nodeadminupdate\"\n >\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"NodeId\"\n disabled\n v-model=\"nodeid\"\n >\n </ValidationProvider>\n <ValidationProvider name=\"nodeid\" rules=\"required|alpha_num\" ref=\"provider\" \n v-slot=\"{ valid, errors, ariaMsg, ariaInput }\"\n v-else\n >\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"NodeId\"\n v-model=\"nodeid\"\n data-vv-as='\"Node id\"'\n data-vv-value-path=\"nodeid\"\n data-vv-name=\"nodeid\"\n >\n <span>{{ errors[0] }}</span>\n </ValidationProvider>\n </div> <!-- coll -->\n\n <div class=\"col-3 pr-md-1\" >\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"IP\"\n v-model=\"nodeip\"\n >\n </div> <!-- coll -->\n </div> <!-- row -->\n\n <!-- add newROW ---------------------------------------------------- -->\n <div class=\"row\" >\n <div class=\"col-3 order-first pr-md-1\" >\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Role\"\n v-model=\"noderole\"\n >\n </div> <!-- coll -->\n\n <div class=\"col-3 pr-md-1\" >\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Zones\"\n v-model=\"nodezones\"\n >\n </div> <!-- coll -->\n\n <div class=\"col-3 pr-md-1\" >\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"nodedesc\"\n v-model=\"nodedesc\"\n >\n </div> <!-- coll -->\n </div> <!-- row -->\n\n <!-- add newROW ---------------------------------------------------- -->\n <div class=\"row\" >\n <div class=\"col-2 pr-md-1\" >\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n\n <button \n class=\"btn btn-outline-primary\" \n round\n type=\"button\"\n v-if=\"nodeadminupdate\"\n @click=\"onAction('update')\">\n update</button>\n <button \n class=\"btn btn-outline-primary\" \n round\n type=\"button\"\n v-else\n @click=\"onAction('addserver')\">\n add</button>\n </div>\n\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" \n round\n type=\"button\"\n @click=\"onAction('cancel')\"\n >\n Cancel</button>\n </div>\n </div>\n </div> <!-- coll -->\n </div> <!-- row -->\n </card> <!-- card -->\n <!-- add newNODE -->\n\n <div class=\"white h-100 flex-fixed-width-item\"\n <vuetable \n ref=\"vuetable\"\n :key=\"vuetablekeyc\"\n :api-url='apiurl'\n :api-mode=\"true\"\n :http-options=\"httpOptions\"\n :fields=\"fields\"\n :item-actions=\"itemActions\"\n :sort-order=\"sortOrder\"\n :show-sort-icons=\"true\"\n :multi-sort=\"multiSort\"\n :per-page=\"perpage\"\n pagination-path=\"links.pagination\"\n :pagination-component=\"paginationComponent\"\n :append-params=\"moreParams\"\n wrapper-class=\"vuetable-wrapper\"\n loading-class=\"loading\"\n detail-row-id=\"id\"\n @vuetable:pagination-data=\"onPaginationData\"\n @vuetable:load-success=\"loadsuccess\"\n @vuetable:load-error=\"onLoadError\"\n :css=\"css.table\"\n >\n <template slot=\"actions\" slot-scope=\"props\">\n <div class=\"table-button-container\">\n <button \n class=\"ti-pencil btn btn-outline-secondary btn-sm\"\n @click=\"onAction('edit', props.rowData, props.rowIndex)\"\n >\n </button>\n <button \n round\n class=\"ti-trash btn btn-outline-secondary btn-sm\"\n @click=\"onAction('rm', props.rowData, props.rowIndex)\"\n >\n </button>\n\n </div>\n </template>\n </vuetable>\n <div class=\"vuetable-pagination ui basic segment grid\">\n <vuetable-pagination-info \n ref=\"paginationInfo\" \n :css=\"css.paginationInfo\"\n >\n </vuetable-pagination-info>\n <vuetable-pagination \n :css=\"css.pagination\"\n ref=\"pagination\"\n @vuetable-pagination:change-page=\"onChangePage\"\n >\n </vuetable-pagination>\n </div>\n\n\n\n\n\n\n\n\n\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport card from '@/components/Card.vue'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport {ApiConfig} from \"@/config/index\";\nimport { extend } from 'vee-validate';\nimport { required, alpha_num } from 'vee-validate/dist/rules';\n\n// No message specified.\nextend('alpha_num', alpha_num);\n\n// Override the default message.\nextend('required', {\n ...required,\n message: 'This field is required'\n});\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n token: '',\n valid:false,\n nodeadmin:false,\n nodeadminupdate:false,\n rowdata:{},\n nodename:'',\n nodeid:'',\n nodeip:'',\n noderole:'',\n nodezones:'',\n nodedesc:'',\n\t playbookInfo: {},\n token: '',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: '',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekeyc:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'name',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'name',\n titleClass: 'text-center aligned',\n visible:true,\n dataClass: \"center aligned\",\n width: '20%'\n },\n {\n name: 'nodeid',\n title: '<span class=\"text-warning\">nodeid</span>',\n titleClass: 'text-center aligned',\n sortField: 'nodeid',\n visible:true,\n width: '20%'\n },\n {\n name: 'ip',\n title: '<span class=\"orange\"></span>IP',\n titleClass: 'text-center aligned',\n sortField: 'swarmlabname',\n visible:true,\n width: '13%'\n },\n {\n name: 'role',\n title: '<span class=\"orange\"></span>Role',\n titleClass: 'text-center aligned',\n sortField: 'role',\n visible:true,\n width: '15%',\n formatter (value) {\n const result = /^ondemand_playground/.test(value);\n if (result) {\n var v = '<p class=\"text-warning\">Playground</p>'\n return v\n }else{\n var v = '<p class=\"text-info\">Lab</p>'\n return v\n }\n }\n\n },\n {\n name: 'zones',\n title: '<span class=\"text-warning\">Zones</span>',\n sortField: 'zones',\n titleClass: 'text-center aligned',\n visible:true,\n width: '20%'\n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n titleClass: 'text-center aligned',\n sortField: 'status',\n visible:true,\n width: '5%'\n },\n {\n name: '__slot:actions',\n title: 'Actions',\n titleClass: 'text-center aligned',\n dataClass: \"text-center aligned\",\n width: '10%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n }\n\t\t],\n\t\t//apiurl:ApiConfig.url_80+\"/swarmlabservices\",\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/getswarmlabhybrid\",\n\t\tcss: CssConfig,\n perpage: 9,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'pipelinename',\n\t\t\t\tdirection: 'asc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'hybrid'\n\t\t\t},\n\t\t}\n },\n\tmounted() {\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n var log1 = await store.dispatch(\"pipelineLLO/swarmlabhybridjoin\",{\n token:this.token,\n action:'join'\n })\n //console.log(JSON.stringify(log1))\n\n\t\t\tif(action == 'edit' ){\n this.nodeadmin = true \n this.nodeadminupdate = true \n this.nodeid = data.nodeid\n this.nodeip = data.ip\n this.nodename = data.name\n this.noderole = data.role\n this.nodezones = data.zones\n this.nodedesc = data.description\n //console.log(JSON.stringify(data))\n //console.log(JSON.stringify(index))\n\t\t\t}else if(action == 'update' ){\n await this.$refs.provider.validate().then(success => {\n if (success.valid) {\n this.valid = true\n //console.log('valid '+JSON.stringify(success))\n }else{\n this.valid = false\n //console.log('no valid'+JSON.stringify(success))\n }\n });\n if (this.valid) {\n var log = await store.dispatch(\"pipelineLLO/swarmlabhybridadd\",{\n token:this.token,\n action:'add',\n nodeid: this.nodeid,\n nodeip: this.nodeip,\n nodename: this.nodename,\n noderole: this.noderole,\n nodezones: this.nodezones,\n nodedesc: this.nodedesc\n })\n //console.log(this.nodename)\n //console.log(this.nodeid)\n //console.log(this.nodeip)\n //console.log(this.noderole)\n //console.log(this.nodezones)\n //console.log(this.nodedesc)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n\t\t\t}else if(action == 'rm' ){\n this.rowdata = data\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: 'info',\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t}).then((result)=> {\n this.rmAndClose(result);\n })\n\n\t\t\t}else if(action == 'add' ){\n this.nodeadmin = true \n this.nodeadminupdate = false \n\t\t\t}else if(action == 'addserver' ){\n await this.$refs.provider.validate().then(success => {\n if (success.valid) {\n this.valid = true\n //console.log('valid '+JSON.stringify(success))\n }else{\n this.valid = false\n //console.log('no valid'+JSON.stringify(success))\n }\n });\n\n if (this.valid) {\n this.nodeadmin = false\n this.nodeadminupdate = false \n var log = await store.dispatch(\"pipelineLLO/swarmlabhybridadd\",{\n token:this.token,\n action:'add',\n nodeid: this.nodeid,\n nodeip: this.nodeip,\n nodename: this.nodename,\n noderole: this.noderole,\n nodezones: this.nodezones,\n nodedesc: this.nodedesc\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n //console.log(JSON.stringify(log))\n }\n\t\t\t}else if(action == 'cancel' ){\n this.nodeadmin = false\n this.nodeadminupdate = false \n }\n },\n async rmAndClose(result) {\n var log = await store.dispatch(\"pipelineLLO/getswarmlabhybridinfo\",{\n token:this.token,\n nodezones: this.rowdata.zones\n })\n if(result.value){\n var log = await store.dispatch(\"pipelineLLO/swarmlabhybridrm\",{\n token:this.token,\n action:'rm',\n nodeid: this.rowdata.nodeid,\n nodeip: this.rowdata.ip,\n nodename: this.rowdata.name,\n noderole: this.rowdata.role,\n nodezones: this.rowdata.zones,\n nodedesc: this.rowdata.description\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n //console.log(JSON.stringify(result))\n //console.log('rowdara '+JSON.stringify(this.rowdata))\n\n }\n },\n async addAndClose(result) {\n\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeyc += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manage-service.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manage-service.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manage-service.vue?vue&type=template&id=519e2d5c&\"\nimport script from \"./manage-service.vue?vue&type=script&lang=js&\"\nexport * from \"./manage-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./manage-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-header\",staticStyle:{\"max-height\":\"100%\"},attrs:{\"title\":\"Hybrid API Request\"}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('table',{staticClass:\"table table-bordered\"},[_c('tbody',[_c('tr',[_c('th',{staticClass:\"text-center\",attrs:{\"scope\":\"row\"}},[_vm._v(\" Project \")]),_c('td',[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.swarmlabhybridapi.project),expression:\"swarmlabhybridapi.project\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Project Name (Alphanumeric characters, dashes and underscores, NOT spaces)\"},domProps:{\"value\":(_vm.swarmlabhybridapi.project)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.swarmlabhybridapi, \"project\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showinfo('Project')}}})])])])]),_c('tr',[_c('th',{staticClass:\"text-center\",attrs:{\"scope\":\"row\"}},[_vm._v(\" Category \")]),_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.swarmlabhybridapi.faculty),expression:\"swarmlabhybridapi.faculty\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Project Category\"},domProps:{\"value\":(_vm.swarmlabhybridapi.faculty)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.swarmlabhybridapi, \"faculty\", $event.target.value)}}})])]),_c('tr',[_c('th',{staticClass:\"text-center\",attrs:{\"scope\":\"row\"}},[_vm._v(\" Description \")]),_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.swarmlabhybridapi.desc),expression:\"swarmlabhybridapi.desc\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"What is the purpose of the project?\"},domProps:{\"value\":(_vm.swarmlabhybridapi.desc)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.swarmlabhybridapi, \"desc\", $event.target.value)}}})])])])])])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.getApi}},[_vm._v(\" Request hybrid API \")])])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-header\" title=\"Hybrid API Request\" style=\"max-height:100%\">\n <b-row>\n <b-col cols=\"12\" > \n\n\n <table class=\"table table-bordered\">\n <tbody>\n <tr>\n <th scope=\"row\"\n class=\"text-center\" \n >\n Project\n </th>\n <td>\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Project Name (Alphanumeric characters, dashes and underscores, NOT spaces)\"\n v-model=\"swarmlabhybridapi.project\"\n >\n <div class=\"input-group-append\">\n <button\n class=\"ti-info btn btn-outline-primary\"\n round\n type=\"button\"\n @click=\"showinfo('Project')\">\n </button>\n </div>\n </div>\n\n </td>\n </tr>\n <tr>\n <th scope=\"row\"\n class=\"text-center\" \n>\n Category\n </th>\n <td>\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Project Category\"\n v-model=\"swarmlabhybridapi.faculty\"\n >\n </td>\n </tr>\n <tr>\n <th scope=\"row\"\n class=\"text-center\" \n>\n Description\n </th>\n <td>\n <input type=\"text\" \n class=\"form-control\" \n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"What is the purpose of the project?\"\n v-model=\"swarmlabhybridapi.desc\"\n >\n </td>\n </tr>\n </tbody>\n</table>\n\n </b-col> \n </b-row>\n <b-row>\n <b-col cols=\"12\" > \n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-success\" \n round\n type=\"button\"\n @click=\"getApi\"\n > Request hybrid API \n </button>\n </div>\n\n </b-col> \n </b-row>\n\t\t\t\t\t\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n\t},\n props: {\n },\n data() {\n return{\n\t\t\tswarmlabhybridapi:{\n labservices:'services'\n }\n\t\t}\n },\n\tmounted() {\n\t},\n beforeDestroy () {\n },\n\n computed: {\n\n\t},\n\n methods: {\n showinfo(value) {\n if(value == 'Project'){\n //var info='The ProjectName can only contain alphanumeric characters, dashes or underscores <br> We use that \"Name\" to retrieve the corresponding key values <br> Name assigned here will need it to connect you to Swarmlab Server.'\n var info='We use that \"Name\" to retrieve the corresponding key values <br> The name assigned here will be needed to connect you to Swarmlab Server. <br> The ProjectName can only contain alphanumeric characters, dashes or underscores.'\n this.$swal({\n type: 'info',\n html: info,\n showCloseButton: false,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n // cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: false,\n confirmButtonText: 'Ok!'\n })\n }\n },\n async getApi() {\n console.log('getApi')\n\n\t\t\t\t\tvar bootstrap = await store.dispatch(\"pipelineLLO/swarmlabhybridapi\",{\n lab: this.swarmlabhybridapi\n\t\t\t\t\t})\n console.log(JSON.stringify(bootstrap))\n if(bootstrap.data.action == 'ok'){\n var info='<h5>OK</h5>'\n this.$swal({\n type: 'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n focusCancel: true\n })\n }else{\n var info='<h5>Error</h5>'\n this.$swal({\n type: 'error',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n focusCancel: true\n })\n }\n\n\n }\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n border: 1px solid blue;\n //white-space: pre-line;\n text-align: left;\n\t\t\t}\n.codeblock {\n text-align: left;\n}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hybridlab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hybridlab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./hybridlab.vue?vue&type=template&id=6eb78c2a&\"\nimport script from \"./hybridlab.vue?vue&type=script&lang=js&\"\nexport * from \"./hybridlab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./hybridlab.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab hybrid-agent config\")])])]),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('br')])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_c('b',[_vm._v(\"Node ID\")])]),_c('div',{staticClass:\"col-9\"},[_c('i',[_vm._v(_vm._s(_vm.CONFIG.nodeid))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_c('b',[_vm._v(\"Swarmlab key\")])]),_c('div',{staticClass:\"col-9\"},[_c('i',[_vm._v(_vm._s(_vm.CONFIG.workerkey))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_c('b',[_vm._v(\"Swarmlab PublicKey\")])]),_c('div',{staticClass:\"col-9\"},[_c('i',[_vm._v(_vm._s(_vm.CONFIG.swarmlab_public_wgkey))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_c('b',[_vm._v(\"Swarmlab ip\")])]),_c('div',{staticClass:\"col-3\"},[_c('i',[_vm._v(_vm._s(_vm.CONFIG.server_ip))])]),_c('div',{staticClass:\"col-2\"},[_c('b',[_vm._v(\"Local IP\")])]),_c('div',{staticClass:\"col-4\"},[_c('i',[_vm._v(_vm._s(_vm.CONFIG.wg_ip))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_c('b',[_vm._v(\"Private key\")])]),_c('div',{staticClass:\"col-3\"},[_c('i',[_vm._v(_vm._s(_vm.CONFIG.privatekey))])]),_c('div',{staticClass:\"col-2\"},[_c('b',[_vm._v(\"Public key\")])]),_c('div',{staticClass:\"col-4\"},[_c('i',[_vm._v(_vm._s(_vm.CONFIG.publickey))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('br')])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-4\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-settings btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Load config\"},on:{\"click\":function($event){return _vm.onAction('load')}}},[_vm._v(\" Load Settings \")])]),_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-widget btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Save config\"},on:{\"click\":function($event){return _vm.onAction('vpn')}}},[_vm._v(\" Create vpn \")])])])]),_c('div',{staticClass:\"col-1\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"})]),_vm._v(\" \"),_c('div',{staticClass:\"col-7 text-right\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3 text-right\"},[_c('div',{staticClass:\"input-group-append text-right\"},[_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"},on:{\"click\":function($event){return _vm.onAction('connect')}}},[_vm._v(\" Connect \")]),_c('button',{staticClass:\"ti-unlink btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"},on:{\"click\":function($event){return _vm.onAction('disconnect')}}},[_vm._v(\" Disconnect \")]),(_vm.isconnect)?_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"}},[_vm._v(\" Status online \")]):_c('button',{staticClass:\"ti-unlink btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"}},[_vm._v(\" Status offline \")])])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.ishybridlab)?_c('button',{staticClass:\"ti-key btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Api keys\"},on:{\"click\":function($event){return _vm.onAction('apikeyopen')}}},[_vm._v(\" Enable the Swarmlab hybrid API \")]):_c('button',{staticClass:\"ti-layout-media-overlay-alt btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Api keys\"},on:{\"click\":function($event){return _vm.onAction('apikeyclose')}}},[_vm._v(\" Enable the Swarmlab hybrid API \")]),_c('button',{staticClass:\"ti-info btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"HowTo\"},on:{\"click\":function($event){return _vm.onAction('register')}}})])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/docker.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab hybrid-agent config</b>\n </div>\n </div>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <br>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Node ID</b></div>\n <div class=\"col-9\"><i>{{ CONFIG.nodeid }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Swarmlab key</b></div>\n <div class=\"col-9\"><i>{{ CONFIG.workerkey }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Swarmlab PublicKey</b></div>\n <div class=\"col-9\"><i>{{ CONFIG.swarmlab_public_wgkey }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Swarmlab ip</b></div>\n <div class=\"col-3\"><i>{{ CONFIG.server_ip }}</i></div>\n <div class=\"col-2\"><b>Local IP</b></div>\n <div class=\"col-4\"><i>{{ CONFIG.wg_ip }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Private key</b></div>\n <div class=\"col-3\"><i>{{ CONFIG.privatekey }}</i></div>\n <div class=\"col-2\"><b>Public key</b></div>\n <div class=\"col-4\"><i>{{ CONFIG.publickey }}</i></div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <br>\n </div>\n </div>\n\n\n <div class=\"row\">\n <div class=\"col-4\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button\n class=\"ti-settings btn btn-outline-info\"\n round\n type=\"button\"\n title=\"Load config\"\n @click=\"onAction('load')\"\n > Load Settings\n </button>\n </div>\n \n <div class=\"input-group-prepend\">\n <button\n class=\"ti-widget btn btn-outline-info\"\n round\n type=\"button\"\n title=\"Save config\"\n @click=\"onAction('vpn')\"\n > Create vpn\n </button>\n </div>\n \n </div>\n </div>\n <div class=\"col-1\">\n <div class=\"input-group input-group-sm sm-3\">\n </div>\n </div> <!-- coll -->\n\n <div class=\"col-7 text-right\">\n <div class=\"input-group input-group-sm sm-3 text-right\">\n <div class=\"input-group-append text-right\">\n <button\n class=\"ti-link btn btn-outline-success\"\n round\n type=\"button\"\n title=\"Connect\"\n @click=\"onAction('connect')\"\n > Connect\n </button>\n <button\n class=\"ti-unlink btn btn-outline-warning\"\n round\n type=\"button\"\n title=\"Connect\"\n @click=\"onAction('disconnect')\"\n > Disconnect\n </button>\n <button\n v-if=\"isconnect\"\n class=\"ti-link btn btn-outline-success\"\n round\n type=\"button\"\n title=\"Connect\"\n > Status online\n </button>\n <button\n v-else\n class=\"ti-unlink btn btn-outline-warning\"\n round\n type=\"button\"\n title=\"Connect\"\n > Status offline\n </button>\n </div>\n </div>\n </div> <!-- coll -->\n\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button\n v-if=\"ishybridlab\"\n class=\"ti-key btn btn-outline-info\"\n round\n type=\"button\"\n title=\"Api keys\"\n @click=\"onAction('apikeyopen')\"\n > Enable the Swarmlab hybrid API\n </button>\n <button\n v-else\n class=\"ti-layout-media-overlay-alt btn btn-outline-warning\"\n round\n type=\"button\"\n title=\"Api keys\"\n @click=\"onAction('apikeyclose')\"\n > Enable the Swarmlab hybrid API\n </button>\n <button\n class=\"ti-info btn btn-outline-success\"\n round\n type=\"button\"\n title=\"HowTo\"\n @click=\"onAction('register')\"\n > \n </button>\n </div>\n </div>\n </div>\n </div>\n\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n isconnect:false,\n ishybridlab:true,\n isstatus:false,\n CONFIG:{\n 'status':'',\n 'privatekey':'',\n 'publickey':'',\n 'server_ip':'',\n 'nodeid':'',\n 'workerkey':'',\n 'allowed_ips':'',\n\t\t\t 'swarmlab_public_wgkey':'',\n 'wg_ip':'',\n 'swarm_ip':'',\n 'wg_port':''\n },\n token: ''\n\t\t}\n },\n\tmounted() {\n // from mytable.vue and socket\n\t\tthis.$root.$on('hybrid_connect_server_view', (value) => {\n //console.log('from mytable' + JSON.stringify(value)) \n this.CONFIG.status = value.status\n this.CONFIG.workerkey = value.workerkey\n this.CONFIG.swarmlab_public_wgkey = value.swarmlab_public_wgkey\n this.CONFIG.server_ip = value.server_ip \n this.CONFIG.allowed_ips = value.allowed_ips \n this.CONFIG.wg_port = value.wg_port \n this.CONFIG.wg_ip = value.wg_ip\n this.CONFIG.swarm_ip = value.swarm_ip\n this.CONFIG.privatekey = value.privatekey\n this.CONFIG.publickey = value.publickey\n if(this.CONFIG.status == 'on'){\n this.isstatus = true\n }else if(this.CONFIG.status == 'off'){\n this.isstatus = false\n }\n\t\t}),\n\t\tthis.$root.$on('hybrid_server_status', (value) => {\n this.serverstatus()\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_connect_server_view')\n\t\tthis.$root.$off('hybrid_server_status')\n },\n computed: {\n\n\t},\n\n methods: {\n\t\t\tasync serverstatus(action){\n var log = store.getters['pipelineLLO/getstatus']\n //console.log('status log ' + JSON.stringify(log))\t\n //{\"data\":{\"swarmlab\":\"active\",\"hybrid\":\"Online\"}}\n if(log.data.swarmlab == 'active' && log.data.hybrid == 'Online'){\n this.isstatus=true\n this.isconnect=true\n this.CONFIG.nodeid = log.data.swarmlabid\n }else{\n this.isstatus=false\n this.isconnect=false\n this.CONFIG.nodeid = 'null'\n }\n\n },\n\t\t\tasync onAction(action){\n if(action == 'load'){\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/swarmlabhybridconfig\",{\n\t\t\t\t\t\ttoken:this.token\n\t\t\t\t\t})\n //console.log('settings ' + JSON.stringify(log))\t\n\n\n\n this.CONFIG.status = log.data.data.status\n this.CONFIG.workerkey = log.data.data.workerkey\n this.CONFIG.swarmlab_public_wgkey = log.data.data.wg_public\n this.CONFIG.server_ip = log.data.data.endpoint // 83.212.77.133:51820\n this.CONFIG.allowed_ips = log.data.data.allowed_ip // 10.13.13.0/16, 0.0.0.0/0, ::/0\n this.CONFIG.wg_port = log.data.data.wg_port // 10.13.13.0/16, 0.0.0.0/0, ::/0\n this.CONFIG.wg_ip = log.data.data.wg_ip \n this.CONFIG.swarm_ip = log.data.data.swarm_ip \n this.CONFIG.privatekey = log.data.data.privatekey\n this.CONFIG.publickey = log.data.data.publickey\n if(this.CONFIG.status == 'on'){\n this.isstatus = true\n }else if(this.CONFIG.status == 'off'){\n this.isstatus = false\n }\n //console.log('swarm ' + JSON.stringify(log.data.data.workerkey))\t\n\n //console.log('start ' + JSON.stringify('load'))\t\n this.onAction('save')\n }else if(action == 'apikeyopen'){\n this.ishybridlab=false\n\t\t\t\t this.$root.$emit('hybrid_lab_keyview','open')\n }else if(action == 'apikeyclose'){\n this.ishybridlab=true\n\t\t\t\t this.$root.$emit('hybrid_lab_keyview','close')\n }else if(action == 'connect'){\n //console.log('start ' + JSON.stringify('connect'))\t\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/get_config\",{\n\t\t\t\t\t\ttoken:this.token\n\t\t\t\t\t})\n //console.log('pwd ' + JSON.stringify(log))\t\n this.isconnect = true\n \n var winfopath = log.data.data\n if(log.data.error_msg = 'ok'){\n var winfo='<span class=\"text-success\">sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/hybrid/connect/join.sh </span>'\n }else{\n var winfo='no exec file'\n }\n var info='<h4>Swarmlab Connect</h4> <h6 class=\"text-warning\"> You are about to connect with others. Be Careful </h6> <h5><i>Copy-and-run-command </i></h5> <br>'\n this.$swal({\n type: 'info',\n html: info+winfo,\n icon:'info',\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n }else if(action == 'vpn'){\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/create_vpn\",{\n\t\t\t\t\t\tvalue:this.CONFIG\n\t\t\t\t\t})\n console.log('start vpn ' + JSON.stringify(log))\t\n }else if(action == 'save'){\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/create_config\",{\n\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\tvalue:this.CONFIG\n\t\t\t\t\t})\n //console.log('start ' + JSON.stringify(log))\t\n //console.log('start ' + JSON.stringify('createkey'))\t\n }else if(action == 'disconnect'){\n //console.log('start ' + JSON.stringify('disconnect'))\t\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/get_config\",{\n\t\t\t\t\t\ttoken:this.token\n\t\t\t\t\t})\n //console.log('pwd ' + JSON.stringify(log))\t\n \n var winfopath = log.data.data\n if(log.data.error_msg = 'ok'){\n var winfo='<span class=\"text-success\">sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/hybrid/connect/leave.sh </span>'\n }else{\n var winfo='no exec file'\n }\n var info='<h4>Swarmlab Disconnect</h4> <h5><i>Copy-and-run-command </i></h5> <br>'\n this.$swal({\n type: 'info',\n icon:'info',\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n } else if(action == 'register'){\n //console.log('start ' + JSON.stringify('register'))\t\n\t\t\t\t\t//var log = await store.dispatch(\"pipelineLLO/get_config\",{\n\t\t\t\t\t//\ttoken:this.token\n\t\t\t\t\t//})\n //console.log('pwd ' + JSON.stringify(log))\t\n \n // var winfopath = log.data.data\n var winfo=`Before you begin\n <br>\n Before you start using the Swarmlab Hybrid API, you need a hybrid enabled account and the Swarmlab API enabled. \n <br>\n To learn more, see Get Started with Hybrid Platform. \n `\n var info=\"<h5>Get API Key's</h5><br>\"\n this.$swal({\n type: 'info',\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n }\n }\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myconnect-server.vue?vue&type=template&id=ed9c0bf8&\"\nimport script from \"./myconnect-server.vue?vue&type=script&lang=js&\"\nexport * from \"./myconnect-server.vue?vue&type=script&lang=js&\"\nimport style0 from \"./myconnect-server.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-7 order-first \" >\n <br>\n <myconnect-server>\n\n </myconnect-server>\n <hybrid-lab\n v-if=\"ishybridlab\"\n >\n\n </hybrid-lab>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <!--\n <adhoc-view>\n\n </adhoc-view>\n -->\n <zones-view>\n\n </zones-view>\n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\n//import ViewNetwork from \"./mynetwork/mytable.vue\";\n//import AdhocView from \"./mynetwork/AdhocView.vue\";\nimport ZonesView from \"./manageservices/manage-service.vue\";\nimport card from '@/components/Card.vue'\nimport HybridLab from \"./manageservices/hybridlab.vue\";\nimport MyconnectServer from \"./mynetwork/myconnect-server.vue\";\nexport default {\n components: {\n HybridLab,\n ZonesView,\n card,\n MyconnectServer\n },\n data () {\n return {\n loading: false,\n ishybridlab: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_lab_keyview', (v) => {\n if(v == 'open'){\n this.ishybridlab=true\n }else if(v == 'close'){\n this.ishybridlab=false\n }\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_lab_keyview')\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myconnect-server.vue?vue&type=template&id=375cff34&\"\nimport script from \"./myconnect-server.vue?vue&type=script&lang=js&\"\nexport * from \"./myconnect-server.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 order-first \"},[_c('br'),_c('myconnect-manage-server')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/hybrid-1.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunwg\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Network... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab venus - Join Network\")])])]),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackid && _vm.hybridshowdata.status)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-start')}}},[_vm._v(\" Start Network \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackid && _vm.hybridshowdata.status)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-stop')}}},[_vm._v(\" Leave Network \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackid && _vm.hybridshowdata.status !== true)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-invite')}}},[_vm._v(\" Request Access \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-info')}}},[_vm._v(\" Service Info \")]):_vm._e()])])]),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Instances \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Replicas)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Image \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapimage)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Names \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapname)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" EndAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdateend)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Networks \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapnetwork)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" BeginAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdatebegin)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Status \")]),(_vm.hybridshowdata.status)?_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span',{staticClass:\"ti-check text-success\"})]):_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span')]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Ports \")]),(_vm.hybridshowdata.ports!=0)?_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.ports)+\" \")]):_c('div',{staticClass:\"col-4 text-secondary\"})]):_vm._e()]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search By StackName\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),_c('vuetable',{key:_vm.vuetablekey1,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.bootstrapnameid])?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Remove Stack\",\"disabled\":\"\",\"round\":\"\"}}):_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Remove Stack\",\"disabled\":\"\",\"round\":\"\"}})])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.actionrowindex == props.rowIndex)?_c('button',{staticClass:\"ti-more-alt btn btn-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-more btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}})])])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/hybrid-1.png\" alt=\"...\">\n </div>\n\n <v-wait for=\"myRunwg\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Network...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab venus - Join Network</b>\n </div>\n </div>\n\n<br>\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-start')\"\n v-if=\"hybridshowdata.bootstrapstackid && hybridshowdata.status\"\n >\n Start Network\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-stop')\"\n v-if=\"hybridshowdata.bootstrapstackid && hybridshowdata.status\"\n >\n Leave Network\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n \n <button\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-invite')\"\n v-if=\"hybridshowdata.bootstrapstackid && hybridshowdata.status !== true\"\n >\n Request Access\n </button>\n <!--\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n -->\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n v-if=\"hybridshowdata.bootstrapstackname\"\n @click=\"onActionHybrid('service-info')\"\n >\n Service Info\n </button>\n </div>\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" \n >\n Instances\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Replicas }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapimage }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapname }}\n </div>\n <div class=\"col-2 text-info\" >\n EndAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdateend }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Networks\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapnetwork }}\n </div>\n <div class=\"col-2 text-info\" >\n BeginAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdatebegin }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" \n v-if=\"hybridshowdata.status\"\n >\n <span class=\"ti-check text-success\"> </span>\n </div>\n <div class=\"col-3 text-secondary\" \n v-else\n >\n <span> </span>\n </div>\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" \n v-if=\"hybridshowdata.ports!=0\"\n >\n {{ hybridshowdata.ports }}\n </div>\n <div class=\"col-4 text-secondary\" \n v-else\n >\n \n </div>\n </div> <!-- row -->\n </b-container>\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search By StackName\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey1\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n\t\t\t\t@vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.bootstrapnameid]\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Remove Stack\"\n disabled\n round\n >\n </button>\n <button\n v-else\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Remove Stack\"\n disabled\n round\n >\n </button>\n </div>\n </div>\n <div slot=\"actions\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n </div>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n testactionrowindex:[], // joined \n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n server_wg_public:'',\n server_wg_port:'',\n server_wg_userprivate:'',\n token: '',\n\t CONFIG: {},\n isstatus:'',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey1:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'bootstrapname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'bootstrapname',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '20%'\n },\n {\n name: 'bootstrapstackname',\n title: '<span class=\"orange\"></span>StackName',\n sortField: 'bootstrapstackname',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '15%'\n\n },\n {\n name: 'bootstrapstackid',\n title: '<span class=\"orange\"></span>StackID',\n sortField: 'bootstrapstackid',\n visible:false,\n dataClass: 'left aligned w-25',\n width: '15%',\n callback: value => {\n //console.log(this)\n //console.log(this.fielddata)\n for(var i = 0; i < this.fielddata.length; i++) {\n //call function here\n var servicename = this.fielddata[i].bootstrapstackid\n //console.log(JSON.stringify(servicename))\n if(servicename == value){\n var obj = {}\n obj.bootstrapnameid = this.fielddata[i].bootstrapnameid\n obj.bootstrapstackname = this.fielddata[i].bootstrapstackname\n\t\t this.checkactionrowindex(obj)\n //console.log(JSON.stringify('status '+JSON.stringify(this.fielddata[i])))\n\n }\n }\n return value\n }\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n },\n {\n name: 'bootstrapdateend',\n title: '<span class=\"orange\"></span>End',\n sortField: 'bootstrapdateend',\n titleClass: 'center aligned',\n visible:true,\n width: '15%'\n },\n {\n name: 'userstatus',\n title: '<span class=\"orange\"></span>Accept',\n sortField: 'userstatus',\n titleClass: 'center aligned',\n visible:true,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n \n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'status',\n titleClass: 'center aligned',\n visible:true,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n \n {\n name: '__slot:actionslocal', // <----\n title: ' Join',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%',\n callback: 'getstatus'\n },\n \n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridbootstrapservicesallwg\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 10,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'bootstrapdatebegin5',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_bootstrap_view', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_bootstrap_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\tasync checkactionrowindex(data){\n var obj = {}\n obj.token = this.token\n obj.bootstrapnameid = data.bootstrapnameid\n obj.bootstrapstackname = data.bootstrapstackname\n var res1 = await store.dispatch('pipelineLLO/getserviceshybridstatus', obj)\n var index = data.bootstrapnameid\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.bootstrapnameid, index)\n //console.log('res8 YES '+JSON.stringify(res1.data))\n }else{\n //console.log('res8 NO '+JSON.stringify(res1.data))\n Vue.delete(this.testactionrowindex, data.bootstrapnameid)\n }\n //console.log('res8 all '+JSON.stringify(this.testactionrowindex))\n },\n\n\n async onActionHybrid(action) {\n //var logconfig = await store.getters['pipelineLLO/getconfig'];\n this.CONFIG = await store.getters['pipelineLLO/getstatusswarmlab'];\n if(this.CONFIG.hybrid == 'Online'){\n this.isstatus = true\n }else{\n this.isstatus = false\n }\n //console.log('stack-start1 ' + JSON.stringify(this.CONFIG))\n //console.log('stack-start3 ' + JSON.stringify(logconfig1))\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will leave the stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'stack-start' ){\n //console.log('stack-start')\n //if(this.isstatus == '1'){\n //console.log(this.isstatus)\n console.log('stack-start ' + JSON.stringify(this.hybridshowdata))\n \n var log = await store.dispatch(\"pipelineLLO/hybrid_join\",{\n token:this.token,\n node:this.hybridshowdata.bootstrapstackid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.server_wg_public = log.data.data.data.server_public\n this.server_wg_port = log.data.data.data.server_port\n this.server_wg_userprivate = log.data.data.data.user_private\n\n this.server_wg_usernetmask = log.data.data.data.user_netmask\n this.server_wg_userip = log.data.data.data.user_ip\n this.server_wg_usernetwork = log.data.data.data.user_network\n\n\n // run local\nthis.$wait.start('myRunwg');\n var logsave = await store.dispatch(\"pipelineLLO/hybrid_join_start\",{\n publickey:this.server_wg_public,\n endpointport:this.server_wg_port,\n netmask:this.server_wg_usernetmask,\n peer_ip: this.server_wg_userip,\n serverip: '83.212.78.14',\n allowedips: `${this.server_wg_usernetwork}/${this.server_wg_usernetmask}`,\n privatekey:this.server_wg_userprivate\n\n })\nthis.$wait.end('myRunwg');\n // run local\n if(logsave.data.action == \"ok\"){\nthis.$wait.start('myRunwg');\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"connect\"\n })\n\n console.log('stack-start-----1---------- ' + JSON.stringify(logsave))\n console.log('stack-start-----2---------- ' + JSON.stringify(logsaverun))\nthis.$wait.end('myRunwg');\n }\n\n /*\nsose ta parakato kai trexto \ndes prota ean exei idio ip netwrok kapou\nean oci nai na tou to peis\n\no server den trexei akomi aftomata to wg server preepi na do pos einai kalitera na ginei\nisos me tou pou sikonete\nmesso mpi_bootstrap\n\n[Interface]\n PrivateKey = QJBr5JPQ44XpoSbcIyU25nGrTZ9u+pVCU32L0lTkTV0=\n ListenPort = 51820\n\n[Peer]\n #PublicKey = WAuzcpIf1obckeLP94owls31j58LP2k+yIAasx9VFU8=\n PublicKey = KerkcAshneFZxNeSVsP00Wad+KNqhU/ZxJa/F3Ol5ns=\n #Endpoint = 83.212.77.133:51820\n #Endpoint = 83.212.78.14:51820\n Endpoint = 83.212.78.14:35886\n AllowedIPs = 10.1.0.0/24\n #AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0\n PersistentKeepalive = 30\n*/\n //}else{\n //}\n \n }else if(action == 'service-invite' ){\n console.log('status '+this.isstatus)\n console.log(this.hybridshowdata.bootstrapstackid)\n var log = await store.dispatch(\"pipelineLLO/wg_invite\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-info' ){\n //console.log(JSON.stringify(action))\n //console.log('CONFIG '+JSON.stringify(this.hybridshowdata))\n var url = this.hybridshowdata.bootstrapurl\n var info=`<h5>You will be redirected to the README page of the repository (OUTSIDE Swarmlab-Hybrid)<br> \n<a href=\"${url}\" target=\"new\">click here to continue</a>\n</h5>\n<br>\n`\n this.$swal({\n type: 'Info',\n title: 'README',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n\n },\n async onActionHybrid_stackrm(action) {\n console.log(JSON.stringify(action))\n if(action.isConfirmed){\nthis.$wait.start('myRunwg');\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"disconnect\"\n })\n console.log('--------------------------'+JSON.stringify(logsaverun))\n\nthis.$wait.end('myRunwg');\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'run-more' ){\n this.hybridshowdata = data\n //console.log('hybrid '+JSON.stringify(data))\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey1 += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n //console.log('data1 '+JSON.stringify(response))\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n console.log('error2 '+JSON.stringify(payload.response.data.error))\n console.log('error2 '+JSON.stringify(payload.response.data.error_description))\n console.log('error2 '+JSON.stringify(payload.response.statusText))\n console.log('error2 '+JSON.stringify(payload.response.status))\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./join-service.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./join-service.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./join-service.vue?vue&type=template&id=506e9788&\"\nimport script from \"./join-service.vue?vue&type=script&lang=js&\"\nexport * from \"./join-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./join-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-12 order-first \" >\n <br>\n <myconnect-manage-server>\n\n </myconnect-manage-server>\n </div>\n\n <!--\n <div class=\"col-1 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-view>\n </div>\n -->\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\n//import ViewNetwork from \"./mynetwork/mytable.vue\";\n//import AdhocView from \"./mynetwork/AdhocView.vue\";\nimport card from '@/components/Card.vue'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\nimport MyconnectManageServer from \"./manageservices/join-service.vue\";\nexport default {\n components: {\n //AdhocView,\n card,\n MyconnectManageServer\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n },\n beforeDestroy () {\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manageservices.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manageservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manageservices.vue?vue&type=template&id=448d9a38&\"\nimport script from \"./manageservices.vue?vue&type=script&lang=js&\"\nexport * from \"./manageservices.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 order-first \"},[_c('br'),_c('mydeploy-manage-bootstrap')],1),_c('div',{staticClass:\"col-6 order-last\"},[_c('br'),_c('mydeploy-manage-view')],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowuser===true),expression:\"hybridshowuser===true\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12 order-first \"},[_c('request-network')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/elusiven_network64-64.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab Venus - Build Your Network\")])])]),_c('br'),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('ValidationProvider',{ref:\"hybrid_image\",attrs:{\"name\":\"Image\",\"rules\":\"required|alpha_num_image\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.image),expression:\"deploy.image\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.image == 1, 'is-invalid': _vm.isDeployValid.image == 2},attrs:{\"type\":\"text\",\"name\":\"Image\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Virtual Private Network Name\"},domProps:{\"value\":(_vm.deploy.image)},on:{\"keyup\":function($event){return _vm.isValid('image')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"image\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('image')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('ValidationProvider',{ref:\"hybrid_stackname\",attrs:{\"name\":\"StackName\",\"rules\":\"required|alpha_num_name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.stackname),expression:\"deploy.stackname\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.stackname == 1, 'is-invalid': _vm.isDeployValid.stackname == 2},attrs:{\"type\":\"text\",\"name\":\"StackName\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"VPN StackName\"},domProps:{\"value\":(_vm.deploy.stackname)},on:{\"keyup\":function($event){return _vm.isValid('stackname')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"stackname\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('stackname')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"Start date \")])]),_c('date-picker',{attrs:{\"type\":\"date\",\"autocomplete\":\"off\",\"format\":\"YYYY-MM-DD\",\"lang\":\"en\"},model:{value:(_vm.deploy.startdate),callback:function ($$v) {_vm.$set(_vm.deploy, \"startdate\", $$v)},expression:\"deploy.startdate\"}})],1)]),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"Start time\")])]),_c('date-picker',{attrs:{\"type\":\"time\",\"format\":'HH:mm',\"show-hour\":\"\",\"show-minute\":\"\",\"time-picker-options\":_vm.timePickerOptions,\"lang\":\"en\"},model:{value:(_vm.deploy.starttime),callback:function ($$v) {_vm.$set(_vm.deploy, \"starttime\", $$v)},expression:\"deploy.starttime\"}})],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"End date \")])]),_c('date-picker',{attrs:{\"type\":\"date\",\"autocomplete\":\"off\",\"format\":\"YYYY-MM-DD\",\"lang\":\"en\"},model:{value:(_vm.deploy.enddate),callback:function ($$v) {_vm.$set(_vm.deploy, \"enddate\", $$v)},expression:\"deploy.enddate\"}})],1)]),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"End time\")])]),_c('date-picker',{attrs:{\"type\":\"time\",\"format\":'HH:mm',\"show-hour\":\"\",\"show-minute\":\"\",\"time-picker-options\":_vm.timePickerOptions,\"lang\":\"en\"},model:{value:(_vm.deploy.endtime),callback:function ($$v) {_vm.$set(_vm.deploy, \"endtime\", $$v)},expression:\"deploy.endtime\"}})],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-cloud-up btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Deploy\"},on:{\"click\":function($event){return _vm.add_deploy()}}},[_vm._v(\" Create Network \")])])])]),_c('b-col',{attrs:{\"cols\":\"2\"}}),_c('b-col',{attrs:{\"cols\":\"4\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/elusiven_network64-64.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab Venus - Build Your Network</b>\n </div>\n </div>\n\n<br>\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_image\"\n\t\t\t\t\t\tname=\"Image\"\n\t\t\t\t\t\trules=\"required|alpha_num_image\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.image == 1, 'is-invalid': isDeployValid.image == 2}\"\n\t\t\t\t\t\t name=\"Image\"\n aria-label=\"Small\" \n\t\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Virtual Private Network Name\"\n v-model=\"deploy.image\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('image')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('image')\"\n\t\t\t\t\t\t\t\t\t >\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n\n <b-col cols=\"6\">\n\t\t\t\t\t<ValidationProvider\n ref=\"hybrid_stackname\"\n\t\t\t\t\t\tname=\"StackName\"\n\t\t\t\t\t\trules=\"required|alpha_num_name\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n\t\t\t\t\t\t name=\"StackName\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.stackname == 1, 'is-invalid': isDeployValid.stackname == 2}\"\n aria-label=\"Small\" \n\t\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"VPN StackName\"\n v-model=\"deploy.stackname\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('stackname')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('stackname')\">\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n\n </b-row>\n\n\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab startdate ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>Start date </button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.startdate\"\n\t\t\t\t\t\t\t\t\t\t\t\tformat=\"YYYY-MM-DD\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t\t<!-- -------- lab starttime ----------------------------------- -->\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>Start time</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\t\t\t\t:format=\"'HH:mm'\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.starttime\"\n\t\t\t\t\t\t\t\t\t\t\t\tshow-hour\n\t\t\t\t\t\t\t\t\t\t\t\tshow-minute\n\t\t\t\t\t\t\t\t\t\t\t\t:time-picker-options=\"timePickerOptions\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n </b-row>\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab enddate ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>End date </button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.enddate\"\n\t\t\t\t\t\t\t\t\t\t\t\tformat=\"YYYY-MM-DD\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t\t<!-- -------- lab endtime ----------------------------------- -->\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>End time</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\t\t\t\t:format=\"'HH:mm'\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.endtime\"\n\t\t\t\t\t\t\t\t\t\t\t\tshow-hour\n\t\t\t\t\t\t\t\t\t\t\t\tshow-minute\n\t\t\t\t\t\t\t\t\t\t\t\t:time-picker-options=\"timePickerOptions\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n </b-row>\n\n\n\n <b-row>\n <b-col cols=\"6\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-cloud-up btn btn-outline-success\"\n\t\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Deploy\"\n \t\t\t\t\t\t\t\t\t\t\t@click=\"add_deploy()\"\n\t\t\t\t\t\t\t\t\t\t\t> Create Network\n\t\t\t\t\t\t\t\t\t\t\t</button>\n </div>\n </div>\n </b-col>\n\n <b-col cols=\"2\">\n </b-col>\n\n <b-col cols=\"4\">\n </b-col>\n </b-row>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport DatePicker from 'vue2-datepicker'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nimport { ValidationObserver, ValidationProvider, extend } from 'vee-validate';\nimport { required, alpha_num, between} from 'vee-validate/dist/rules';\nimport 'vue2-datepicker/index.css';\n\n// No message specified.\nextend('alpha_num', alpha_num);\n\nextend('mybetween', between);\nextend('mybetween', {\n message: 'The {_field_} field must be a number: 1-65535'\n});\n\n//extend('alpha_num_image', alpha_num);\nextend('alpha_num_image', value => {\n var regex = new RegExp(/^[A-Za-z0-9\\:\\.\\-\\_\\/]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores'\n});\n\nextend('alpha_num_name', value => {\n var regex = new RegExp(/^[A-Za-z0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain alphabetic characters and numbers'\n});\n\nextend('alpha_num_cpu', value => {\n //var regex = new RegExp(/^(?:\\d{1})?(?:\\.\\d{1})?$/); \n var regex = new RegExp(/^(?!0\\d)\\d+(?:\\.\\d{1})?$/); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain numbers and dots e.g 0.5'\n});\n\n\nextend('alpha_num_memory', value => {\n var regex = new RegExp(/^[0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain numbers e.g 500'\n});\n\nextend('alpha_url', value => {\n var regex = new RegExp(/https?:\\/\\/(git\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/,'i');\n //var regex = new RegExp(/^[0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain url'\n});\n\n// Override the default message.\nextend('required', {\n ...required,\n message: 'This field is required'\n});\nexport default {\n components: {\n DatePicker,\n ValidationProvider,\n card\n\t},\n props: {\n },\n data() {\n return{\n\t isHybridError: false,\n\t isHybridSuccess: false,\n token: '',\n\t\ttimePickerOptions:{\n\t\t\t\tstart: '00:00',\n\t\t\t\tstep: '00:30',\n\t\t\t\tend: '23:30'\n\t\t},\n deploy:{\n \t\t\"usersjoin\":true,\n \"startdate\":3, \n \"enddate\" :3,\n \"starttime\":3,\n \"endtime\":3\n\t },\n isDeployValid:{\n \t\t\"image\":3,\n \t\t//\"name\":3,\n \t\t\"stackname\":3\n \t\t//\"network\":3\n \t\t//\"networkport\":3,\n \t\t//\"url\":3,\n \t\t//\"cpu\":3,\n \t\t//\"memory\":3\n\t },\n wgserverup:'',\n wgserversettings:'',\n isDeployError:{\n\t }\n\t\t}\n },\n\tmounted() {\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n },\n computed: {\n\t},\n\n methods: {\n \tasync add_deploy(){\n \n\t\t\tvar o = Object.entries(this.deploy)\n\t\t\tvar pvalid = new Promise((resolve, reject) => {\n\t\t\t\to.forEach((value, index, array) => {\n\t\t\t\t\t\tthis.isValid(array[index][0])\n\t\t\t\t\t\tif (index === array.length -1) resolve();\n\t\t\t\t});\n\t\t\t});\n\n\t\tpvalid.then(() => {\n (async () => {\n var isAllValid = true\n var isAllDateValid = true\n\t\t\t\t\tfor (const [key, value] of Object.entries(this.isDeployValid)) {\n\t\t\t\t\t\tconsole.log(`${key}: ${value}`);\n\t\t\t\t\t\tif(value != 1){\n isAllValid = false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfor (const [key, value] of Object.entries(this.deploy)) {\n\t\t\t\t\t\t console.log(`deploy ${key}: ${value}`);\n if( key == \"startdate\" || key == \"enddate\" || key == \"starttime\" || key == \"endtime\" ){ \n\t\t\t\t\t\t console.log(`${key}: ${value}`);\n if ( value == 3) { // d.valueOf() could also work\n isAllDateValid = false \n\t\t\t\t\t\t //console.log(`yesvalid ${key}: ${value}`);\n // date is not valid\n } \n }\n \n\t\t\t\t\t\t}\n\t\t\t\t\tif(isAllValid && isAllDateValid){ \n \n var myvpn = {}\n myvpn.name = this.deploy.image\n myvpn.stackname = this.deploy.stackname\n myvpn.startdate = this.deploy.startdate\n myvpn.enddate = this.deploy.enddate\n myvpn.starttime = this.deploy.starttime\n myvpn.endtime = this.deploy.endtime\n \n\t\t\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/create_vpn\",{\n\t\t\t\t\t\t\t\twg:myvpn\n\t\t\t\t\t\t\t})\n //console.log('from server '+JSON.stringify(log))\n console.log('from server '+JSON.stringify(log.data.data.wgpublic))\n //console.log('from server '+JSON.stringify(log.data.pipeline))\n\t\t\t\t\t\t\tvar logdeploynet = await store.dispatch(\"pipelineLLO/adddeploy\",{\n\t\t\t\t\t\t\t\twg:myvpn\n\t\t\t\t\t\t\t})\n if(logdeploynet.data.data.error){ // error\n console.log('from server '+JSON.stringify(logdeploynet))\n }else{ // ok\n this.wgserverup = logdeploynet.data.data.data\n this.wgserversettings = logdeploynet.data.data.data\n \n console.log('from server '+JSON.stringify(logdeploynet))\n }\n\t\t\t\t\t\t\tthis.$root.$emit('wg_refresh_bootstrap_view')\n console.log('ok')\n\t\t\t\t\t\t\tvar info = '<h5>The deploy process is started</h5> Please wait for it to finish before trying again! <br><br>See also in \"Manage your Networks\" table'\n\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\ttitle: 'Info!',\n\t\t\t\t\t\t\t\ticon:'info',\n\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\tcancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}else{\n\t\t\t\t\t\t\tvar info = \"Missing required fields\"\n\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\ttitle: 'Info!',\n\t\t\t\t\t\t\t\ticon:'info',\n\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\tcancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t})\n\n\t\t\t\t }\n })();\n\t\t});\n\t\t\t\n\t\t},\n \tasync showInfo(action){\n\t\t\tif(action == 'image' ){\n var info=`<h5>To start, we need to have a <b>docker image </b> <br>\n<br> We have built some. You can find it here: Menu \"Images\"</h5>\n<h6>More Info here: <a href=\"https://en.wikipedia.org/wiki/Docker_(software)\" target=\"new\">Wikipedia</a> , <a href=\"https://www.docker.com/resources/what-container\" target=\"new\">Docker</a> </h6>\n<br>\n<br>\n The field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores\n`\n\t\t }else if(action == 'stackname'){\n var info=`<h5>To start, we need to have a <b>Stack Name </b> <br>\n<br> This will bring up all the services, volumes, networks and everything else <br> in an isolated environment.\n</h6>\n<br>\n<br>\n The field may contain alphabetic characters and numbers\n`\n\t\t }else if(action == 'network'){\n var info=`<h5>To start, we need to have a <b>Network </b> <br>\n<br> This will bring up all the services, volumes, networks and everything else <br> in an isolated network environment.\n<br>\n<br>\nServices running inside any of this networks containers have access (not limited by any firewall) to all other services.\n<br>\n</h5>\n<br>\n<br>\n The field may contain alphabetic characters and numbers\n\n`\n\t\t }else if(action == 'url'){\n var info=`<h5><b>Git Repo url </b></h5>\n<br> The location of the file describing your service. (most comonly README)</br> \n<br>\n</br>\n</h5>\n<br>\n<br>\n The field may contain any valid url BUT it must be under https://git.swarmlab.io\n`\n\t\t }else if(action == 'networkport'){\n var info=`<h5><b>Network Port </b></h5>\n<br> \n<h5>\nBy default, when you create a container, <b>it does not publish any of its ports to the outside world. </b>\n<br>\nTo make a port available to Services which are not connected to the Stack network, we use this port. \n</h5>\n<br>\n<h5>\n<u>\nTo make a service available we have to know the port number used by these service inside the container.\n</u>\n<br>\n<b>Please insert that here.</b>\n</h5>\n<br>\n<br>\n(The port for outside connections is automatically generated and you dont have to worry about it!)\n<br>\n<br>\n The field may contain numbers\n`\n\t\t }else if(action == 'cpu'){\n var info=`<h5>To start, we need to have a <b>CPU </b> Limit <br>\n<br> Limit the specific CPUs or cores a container can use\n</h6>\n<br>\n<br>\nThe field may contain numbers and dots e.g 0.5\n`\n\t\t }else if(action == 'memory'){\n var info=`<h5>To start, we need to have a <b>Memory </b> Limit \n<br> <br> Limit the specific Memoty a container can use <br> \ne.g 200\n<br> \n(MB)\n</h6>\n<br>\n<br>\n<h6>\n<i>\nIt is important <b>not</b> to allow a running container to consume too much of the host machine’s memory.\n</i>\n</h6>\n<br>\n<br>\n The field may contain numbers\n`\n\t\t }else if(action == 'name'){\n var info=`<h5>To start, we need to have a <b>Name </b><br> \nThis name is only for your own use. The system completely disregards it!\n</h5>\n<br>\n<br>\n The field may contain alphabetic characters and numbers\n`\n\t\t\t}\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\t\t},\n \tasync isValid(f){\n\n // ------------\n // validate\n // ------------\n if(f == 'image'){\n \t//console.log(this.deploy.image)\n\t\t\t\tvar field \t= await this.$refs.hybrid_image.validate();\n if(field.valid == true){\n \tthis.isDeployValid.image = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.image = 2\n\t\t\t\t}\n \t//console.log(JSON.stringify(f_image))\n \t//console.log(this.isDeployValid.image)\n }else if(f == 'stackname'){\n\t\t\t var field = await this.$refs.hybrid_stackname.validate();\n if(field.valid == true){\n \tthis.isDeployValid.stackname = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.stackname = 2\n\t\t\t\t}\n }else if(f == 'network'){\n\t\t\t var field = await this.$refs.hybrid_network.validate();\n if(field.valid == true){\n \tthis.isDeployValid.network = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.network = 2\n\t\t\t\t}\n }else if(f == 'url'){\n\t\t\t var field = await this.$refs.hybrid_url.validate();\n if(field.valid == true){\n \tthis.isDeployValid.url = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.url = 2\n\t\t\t\t}\n }else if(f == 'networkport'){\n\t\t\t var field = await this.$refs.hybrid_networkport.validate();\n //console.log('port '+JSON.stringify(field))\n if(field.valid == true){\n \tthis.isDeployValid.networkport = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.networkport = 2\n\t\t\t\t}\n }else if(f == 'cpu'){\n\t\t\t var field = await this.$refs.hybrid_cpu.validate();\n if(field.valid == true){\n \tthis.isDeployValid.cpu = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.cpu = 2\n\t\t\t\t}\n }else if(f == 'memory'){\n\t\t\t var field = await this.$refs.hybrid_memory.validate();\n if(field.valid == true){\n \tthis.isDeployValid.memory = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.memory = 2\n\t\t\t\t}\n }else if(f == 'name'){\n\t\t\t var field = await this.$refs.hybrid_name.validate();\n if(field.valid == true){\n \tthis.isDeployValid.name = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.name = 2\n\t\t\t\t}\n }\n }\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n.hybrid-field-error {\n color: red;\n}\n\n.hybrid-error {\n color: red;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deploy-bootstrap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deploy-bootstrap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./deploy-bootstrap.vue?vue&type=template&id=17e69829&\"\nimport script from \"./deploy-bootstrap.vue?vue&type=script&lang=js&\"\nexport * from \"./deploy-bootstrap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./deploy-bootstrap.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==false),expression:\"hybridshowlog==false\"}],staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/hybrid-1.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==false),expression:\"hybridshowlog==false\"}],staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Manage your Networks\")])])]),_c('br'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog),expression:\"hybridshowlog\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('log-view')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowlog==false)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionLog(1)}}},[_vm._v(\" Show logs \")]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowlog==true)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionLog(2)}}},[_vm._v(\" Close logs \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowuser==false)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionUser(1)}}},[_vm._v(\" Show users \")]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowuser==true)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionUser(2)}}},[_vm._v(\" Close users \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-stop')}}},[_vm._v(\" Remove Network \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapnameid && _vm.hybridshowdata.status)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-restart')}}},[_vm._v(\" Restart Network \")]):_vm._e()])])]),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Instances \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Replicas)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Image \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapimage)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Names \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapname)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" EndAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdateend)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Networks \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapnetwork)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" BeginAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdatebegin)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Status \")]),(_vm.hybridshowdata.status)?_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span',{staticClass:\"ti-check text-success\"})]):_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span')]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Ports \")]),(_vm.hybridshowdata.ports!=0)?_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.ports)+\" \")]):_c('div',{staticClass:\"col-4 text-secondary\"})]):_vm._e()]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search By StackName\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),_c('vuetable',{key:_vm.vuetablekeyd,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actions\",fn:function(props){return _c('div',{},[(_vm.actionrowindex == props.rowIndex)?_c('button',{staticClass:\"ti-more-alt btn btn-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-more btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}})])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/code-128.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\" col text-center\"},[_c('v-wait',{attrs:{\"for\":\"myRunInstance1\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\"),\"width\":\"50\",\"height\":\"50\"}}),_vm._v(\" Lab_Instance... \")])])],2),(_vm.extenderror)?_c('button',{staticClass:\"btn btn-outline-danger btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":function($event){return _vm.runextenderror()}}},[_vm._v(\" Error: max depth exceeded\")]):_vm._e(),(_vm.tryConsole)?_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":function($event){return _vm.clear()}}},[_vm._v(\" Clear\")]):_vm._e(),_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\",\"disabled\":\"\"}},[_vm._v(\" Console\")]),(_vm.cmOptions.keyMap == 'sublime')?_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":_vm.infoFilter}},[_vm._v(\" i\")]):_vm._e()],1),_c('div',{staticClass:\"codemirror\"},[_c('codemirror',{ref:\"myCm\",attrs:{\"value\":_vm.code,\"options\":_vm.cmOptions},on:{\"cursorActivity\":_vm.onCmCursorActivity,\"ready\":_vm.onCmReady,\"focus\":_vm.onCmFocus,\"input\":_vm.onCmCodeChange}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/code-128.png\" alt=\"...\">\n </div>\n <b-container fluid class=\"bv-example-row\">\n <div class=\" col text-center\">\n\t\t<v-wait for=\"myRunInstance1\">\n\t\t\t<template slot=\"waiting\">\n\t\t\t\t<div>\n\t\t\t\t\t<img src=\"@/assets/loading.gif\" width=\"50\" height=\"50\" />\n\t\t\t\t\tLab_Instance...\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</v-wait>\n <button type=\"button\"\n round\n class=\"btn btn-outline-danger btn-sm\"\n v-if=\"extenderror\"\n @click=\"runextenderror()\">\n Error: max depth exceeded</button>\n <button type=\"button\"\n round\n class=\"btn btn-outline-warning btn-sm\"\n v-if=\"tryConsole\"\n @click=\"clear()\">\n Clear</button>\n <button type=\"button\"\n round\n class=\"btn btn-outline-info btn-sm\"\n disabled\n >\n Console</button>\n <button type=\"button\"\n round\n class=\"btn btn-outline-info btn-sm\"\n v-if=\"cmOptions.keyMap == 'sublime'\"\n @click=\"infoFilter\">\n i</button>\n \n </div>\n <div class=\"codemirror\" >\n <codemirror\n ref=\"myCm\"\n :value=\"code\"\n :options=\"cmOptions\"\n @cursorActivity=\"onCmCursorActivity\"\n @ready=\"onCmReady\"\n @focus=\"onCmFocus\"\n @input=\"onCmCodeChange\"\n ></codemirror>\n </div>\n </b-col>\n </b-row>\n</b-container>\n\n\n\t</card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport store from '@/store/index' \n\n\nimport { codemirror } from 'vue-codemirror'\nimport JSZip from 'jszip';\nimport FileSaver from 'file-saver';\nimport 'codemirror/lib/codemirror.css'\nimport 'codemirror/theme/mdn-like.css'\nimport card from '@/components/Card.vue'\n import 'codemirror/theme/idea.css'\nimport'codemirror/addon/selection/active-line.js'\n\nimport'codemirror/addon/hint/show-hint.js'\nimport'codemirror/addon/hint/show-hint.css'\nimport'codemirror/addon/hint/javascript-hint.js'\nimport'codemirror/addon/selection/active-line.js'\nimport'codemirror/addon/scroll/annotatescrollbar.js'\nimport'codemirror/addon/search/matchesonscrollbar.js'\nimport'codemirror/addon/search/searchcursor.js'\nimport'codemirror/addon/search/match-highlighter.js'\n\nimport'codemirror/mode/shell/shell.js'\nimport'codemirror/addon/edit/matchbrackets.js'\nimport'codemirror/addon/comment/comment.js'\nimport'codemirror/addon/dialog/dialog.js'\nimport'codemirror/addon/dialog/dialog.css'\nimport'codemirror/addon/search/searchcursor.js'\nimport'codemirror/addon/search/search.js'\nimport'codemirror/keymap/sublime.js'\nimport'codemirror/keymap/vim.js'\n\nimport'codemirror/addon/fold/foldgutter.css'\nimport'codemirror/addon/fold/brace-fold.js'\nimport'codemirror/addon/fold/comment-fold.js'\nimport'codemirror/addon/fold/foldcode.js'\nimport'codemirror/addon/fold/foldgutter.js'\nimport'codemirror/addon/fold/indent-fold.js'\nimport'codemirror/addon/fold/markdown-fold.js'\nimport'codemirror/addon/fold/xml-fold.js'\nimport 'codemirror/lib/codemirror';\nimport 'codemirror/addon/display/placeholder';\n\nexport default {\n components: {\n card,\n\t\t\tcodemirror\n },\n data () {\n return {\n socketonline:false,\n extenderror:false,\n tryConsole:false,\n ssl:{},\n getinfo:'',\n token:'',\n swarmlabname:'',\n\n code: '',\n editchoice: '',\n optionsedit: [\n { text: 'code', value: 'code' },\n { text: 'text', value: 'text' }\n ],\n llodesc:[{\n llo_url : '',\n llo_name : '',\n llo_author : '',\n llo_intro : ''\n }],\n llo:[{\n id : 0,\n rm : false,\n data_info : 'Asciidoc \\n',\n data_code : '#Your source code',\n data_service : '',\n code_datafile : 'url',\n code_name : '',\n code_exec : '',\n code_options : '',\n code_mime : '',\n code_info : '',\n code_code : '',\n code_codeout : '',\n code_codeoutput : 'console',\n points : '',\n challenge_question : '',\n code_challenge_question : '',\n challenge_answer : '',\n challenge_answer_hint : '',\n code_challenge_answer_hint : '',\n challenge_answer_source : '',\n challenge_answer_code_out : '',\n challenge_answer_code : '',\n code_challenge_answer_code : ''\n }],\n\t\t searchLLO: [],\n searchLLOactive : false,\n ADOC_html_code:'',\n challenge:[],\n action:'',\n tryLLO:[],\n service:'os2',\n active:0,\n activecount:0,\n remove:'',\n activeField:'',\n bootstrap:false,\n firstbootstrap:0,\n htmlasciitmp:'',\n datafile: 'https://git.swarmlab.io:3000/labs/examples-mpi2/raw/branch/master/0_netstat/data',\n datadir: '0_netstat/data',\n LearningObject:'',\n showllo:true,\n showlloedit:true,\n \t\tselected: 'sublime',\n options: [\n { text: 'vim', value: 'vim' },\n { text: 'sublime', value: 'sublime' }\n ],\n optionsmime: [\n { text: 'sh', value: 'bash' },\n { text: 'javascript', value: 'javascript' },\n { text: 'python', value: 'python' },\n { text: 'php', value: 'php' },\n { text: 'sql', value: 'sq;' },\n { text: 'xml', value: 'xml' },\n { text: 'c', value: 'c' }\n ],\n pValidate: false,\n cmOptions: {\n tabSize: 2,\n styleActiveLine: true,\n lineNumbers: false,\n lineSeparator:'\\n',\n line: true,\n foldGutter: true,\n gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n highlightSelectionMatches: { showToken: /\\w/, annotateScrollbar: true },\n styleSelectedText: true,\n mode: 'shell',\n hintOptions:{\n completeSingle: false\n },\n keyMap: \"sublime\",\n //keyMap: \"vim\",\n matchBrackets: true,\n showCursorWhenSelecting: true,\n indentUnit:this.ADOC_html_code,\n lineWrapping: true,\n theme: 'idea',\n //theme: 'mdn-like',\n refresh:true,\n readOnly: true,\n autofocus: false,\n extraKeys: { \"Ctrl\": \"autocomplete\" }\n },\n ADOC_html:[]\n }\n },\n methods: {\n\n clear () {\n this.tryConsole = false\n this.code = ''\n },\n async getdata () {\n\n var field = this.getinfo\n var log = await store.dispatch(\"pipelineLLO/get_data\",{\n code:field \n })\n\n },\n\n async showactive(index) {\n this.topwindow(index)\n\t\t},\n onCmReady(cm) {\n cm.on('change', (cm, chg) => {\n }),\n cm.on('keypress', () => {\n cm.showHint({completeSingle:false})\n })\n },\n onCmCursorActivity(a, b, c) {\n },\n onCmFocus(cm) {\n },\n onCmCodeChange(newCode) {\n this.code = newCode\n //this.$root.$emit('socket_add',this.code)\n },\n handleChange() {\n },\n setKeymap () {\n this.cmOptions.keyMap = this.selected\n },\n\t\tinfoFilter() {\n\t\t\t\tvar title1='<h3>Playbook Images</h3>'\n\t\t\t\t\tvar winfop='<table class=\"table table-striped table-sm \">'+\n '<tr><td class=\"text-left\">Shift-Tab</td> <td class=\"text-left\">indentLess</td></tr>'+\n '<tr><td class=\"text-left\">Alt-Q</td> <td class=\"text-left\">wrapLines</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Up</td> <td class=\"text-left\">scrollLineUp</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Down</td> <td class=\"text-left\">scrollLineDown</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-L</td> <td class=\"text-left\">selectLine</td></tr>'+\n '<tr><td class=\"text-left\">Esc</td> <td class=\"text-left\">singleSelectionTop</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Enter</td> <td class=\"text-left\">insertLineAfter</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-D</td> <td class=\"text-left\">selectNextOccurrence</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-Space</td> <td class=\"text-left\">selectScope</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-M</td> <td class=\"text-left\">selectBetweenBrackets</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-M</td> <td class=\"text-left\">goToBracket</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-Y</td> <td class=\"text-left\">sublimeYank</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-C</td> <td class=\"text-left\">showInCenter</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-G</td> <td class=\"text-left\">clearBookmarks</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-Backspace</td> <td class=\"text-left\">delLineLeft</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-0</td> <td class=\"text-left\">unfoldAll</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-J</td> <td class=\"text-left\">unfoldAll</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Alt-Up</td> <td class=\"text-left\">addCursorToPrevLine</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Alt-Down</td> <td class=\"text-left\">addCursorToNextLine</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-F3</td> <td class=\"text-left\">findUnder</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-F3</td> <td class=\"text-left\">findUnderPrevious</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-[</td> <td class=\"text-left\">fold</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-]</td> <td class=\"text-left\">unfold</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-F</td> <td class=\"text-left\">find</td></tr>'+\n'</table>'\n\t\t\t\t\t\n\t\t\t\t\tvar title1=''\n\t\t\t\t\tvar winfo=''\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttitle: '<strong>Key bindings</strong>',\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: winfop+title1+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false\n\t\t\t\t})\n\t\t}\n\n },\n computed: {\n codemirror() {\n return this.$refs.myCm.codemirror\n }\n\n\t},\n\tmounted() {\n // from runLLO\n\t\tthis.$root.$on('hybrid_server_log_status', (v) => {\n\t\t\tthis.$nextTick(function () {\n if(v == 'off'){\n this.socketonline = false\n }else if(v == 'on'){\n this.socketonline = true\n }\n\t\t\t})\n\t\t})\n // from runLLO\n\t\tthis.$root.$on('hybrid_server_log_in', (log) => {\n console.log('logsemiton '+JSON.stringify(log))\n this.code += log\n this.code += \"\\n\"\n this.tryConsole=true\n\t\t})\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_server_log_status')\n\t\tthis.$root.$off('hybrid_server_log_in')\n },\n\n\t\tcreated () {\n this.token = new URL(location.href).searchParams.get('token');\n this.swarmlabname = new URL(location.href).searchParams.get('pipelinename');\n\t\t}\n};\n</script>\n\n<style>\n.CodeMirror {\n\n\n font-family: monospace;\n height: 350px;\n}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LogView.vue?vue&type=template&id=9ee2b160&\"\nimport script from \"./LogView.vue?vue&type=script&lang=js&\"\nexport * from \"./LogView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LogView.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n v-show=\"hybridshowlog==false\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/hybrid-1.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n <div class=\"row text-center\"\n v-show=\"hybridshowlog==false\"\n >\n <div class=\"col-12\">\n <b>Manage your Networks</b>\n </div>\n </div>\n\n<br>\n <div class=\"row\" \n v-show=\"hybridshowlog\"\n >\n <div class=\"col-12\" >\n <log-view>\n </log-view>\n </div>\n </div>\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"onActionLog(1)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowlog==false\"\n >\n Show logs\n </button>\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionLog(2)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowlog==true\"\n >\n Close logs\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"onActionUser(1)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowuser==false\"\n >\n Show users\n </button>\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionUser(2)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowuser==true\"\n >\n Close users\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-stop')\"\n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n Remove Network\n </button>\n <!--\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-stop')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n Remove Service\n </button>\n -->\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-restart')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n >\n Restart Network\n </button>\n </div>\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" \n >\n Instances\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Replicas }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapimage }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapname }}\n </div>\n <div class=\"col-2 text-info\" >\n EndAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdateend }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Networks\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapnetwork }}\n </div>\n <div class=\"col-2 text-info\" >\n BeginAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdatebegin }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" \n v-if=\"hybridshowdata.status\"\n >\n <span class=\"ti-check text-success\"> </span>\n </div>\n <div class=\"col-3 text-secondary\" \n v-else\n >\n <span> </span>\n </div>\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" \n v-if=\"hybridshowdata.ports!=0\"\n >\n {{ hybridshowdata.ports }}\n </div>\n <div class=\"col-4 text-secondary\" \n v-else\n >\n \n </div>\n </div> <!-- row -->\n </b-container>\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search By StackName\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekeyd\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n @vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n\n <div slot=\"actions\" slot-scope=\"props\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport LogView from \"./LogView.vue\";\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown,\n LogView\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n hybridshowuser:false,\n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n token: '',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekeyd:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'bootstrapname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'bootstrapname',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '15%'\n },\n {\n name: 'bootstrapstackname',\n title: '<span class=\"orange\"></span>StackName',\n sortField: 'bootstrapstackname',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '15%'\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n },\n {\n name: 'bootstrapdateend',\n title: '<span class=\"orange\"></span>End',\n sortField: 'bootstrapdateend',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n /*\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n */\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridbootstrapserviceswg\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'bootstrapdatebegin5',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('wg_refresh_bootstrap_view', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n /*\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table', (v) => {\n\t\t\t this.$nextTick(function () {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.viewhybridoptions = false\n\t\t\t })\n\t\t})\n */\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('wg_refresh_bootstrap_view')\n\t\t//this.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n async onActionUser(action) {\n if(action == 1){\n this.hybridshowuser=true\n var data = {}\n data.hybridshowuser = this.hybridshowuser\n data.data = this.hybridshowdata\n this.$root.$emit('hybrid_wg_showuser',data)\n }else if(action == 2 ){\n this.hybridshowuser=false\n var data = {}\n data.hybridshowuser = this.hybridshowuser\n data.data = this.hybridshowdata\n this.$root.$emit('hybrid_wg_showuser',data)\n }\n },\n async onActionLog(action) {\n if(action == 1){\n var log = await store.dispatch(\"pipelineLLO/wg_servicelog\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n // console.log('logs1 '+JSON.stringify(log))\n var data = log.data.data.data\n if(log.data.data.errorexec_msg == 'ok' && log.data.data.data){\n this.hybridshowlog=true\n this.$root.$emit('hybrid_server_log_in',data)\n //console.log('logsdata '+JSON.stringify(log.data.data.data))\n }else{\n var info = 'No logs are available'\n this.$swal({\n type: 'Info',\n title: 'LOG',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n }else if(action == 2 ){\n this.hybridshowlog=false\n }\n },\n async onActionHybrid(action) {\n\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will remove the network with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> <br><br> Users, networks, and secrets associated with the stack will be removed. </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n //console.log(JSON.stringify(result))\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'service-stop' ){\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/hybrid_servicerm\",{\n\t\t\t\t\ttoken:this.token,\n\t\t\t\t\tbootstrapstackid:this.hybridshowdata.bootstrapstackid,\n\t\t\t\t\tbootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-restart' ){\n\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/wg_servicerestart\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n var info =''\n if(log.data.data.errorexec_msg == 'ok'){\n info ='<h5>Update existing service: ok!</h5>'\n }else{\n info ='<h5>Update existing service: error!</h5>'\n }\n this.$swal({\n type: 'Info',\n title: 'INFO',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\n//console.log('stackid '+this.hybridshowdata.bootstrapnameid)\n }\n },\n async onActionHybrid_stackrm(action) {\n if(action.isConfirmed){\n var log = await store.dispatch(\"pipelineLLO/stackrmwg\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'run-more' ){\n this.hybridshowdata = data\n //console.log('hybrid '+JSON.stringify(data))\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeyd += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-service.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-service.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-service.vue?vue&type=template&id=441c9f22&\"\nimport script from \"./view-service.vue?vue&type=script&lang=js&\"\nexport * from \"./view-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Network - \"+_vm._s(_vm.bootstrapname))])])]),_c('br'),_c('vuetable',{key:_vm.vuetablekey1a,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.bootstrapnameid])?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Disable user\",\"disabled\":\"\",\"round\":\"\"}}):_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Enable user\",\"disabled\":\"\",\"round\":\"\"}})])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.actionrowindex == props.rowIndex)?_c('button',{staticClass:\" ti-widget-alt btn btn-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\" ti-widget-alt btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}})])])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Network - {{ bootstrapname }}</b>\n </div>\n </div>\n\n<br>\n\n\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey1a\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n\t\t\t\t@vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.bootstrapnameid]\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Disable user\"\n disabled\n round\n >\n </button>\n <button\n v-else\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Enable user\"\n disabled\n round\n >\n </button>\n </div>\n </div>\n <div slot=\"actions\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\" ti-widget-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\" ti-widget-alt btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n </div>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n testactionrowindex:[], // joined \n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n bootstrapname:'',\n server_wg_public:'',\n server_wg_port:'',\n server_wg_userprivate:'',\n token: '',\n\t CONFIG: {},\n isstatus:'',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey1a:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'user',\n title: '<span class=\"orange\"></span>User',\n sortField: 'user',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '90%'\n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'status',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '5%',\n callback: value => {\n if(value == 'yes'){\n var valuenew = `\n <button\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Disable user\"\n disabled\n round\n >\n </button>`\n return valuenew\n }else{\n var valuenew = `\n <button\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Disable user\"\n disabled\n round\n >\n </button>`\n return valuenew\n }\n }\n },\n {\n name: 'bootstrapstackid',\n title: '<span class=\"orange\"></span>StackID',\n sortField: 'bootstrapstackid',\n visible:false,\n dataClass: 'left aligned w-25',\n width: '5%',\n callback: value => {\n //console.log(this.fielddata)\n for(var i = 0; i < this.fielddata.length; i++) {\n //call function here\n var servicename = this.fielddata[i].bootstrapstackid\n //console.log(JSON.stringify(servicename))\n if(servicename == value){\n var obj = {}\n obj.bootstrapnameid = this.fielddata[i].bootstrapnameid\n obj.bootstrapstackname = this.fielddata[i].bootstrapstackname\n\t\t this.checkactionrowindex(obj)\n //console.log(JSON.stringify('status '+JSON.stringify(this.fielddata[i])))\n\n }\n }\n return value\n }\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:false,\n width: '10%'\n },\n {\n name: 'bootstrapdateend',\n title: '<span class=\"orange\"></span>End',\n sortField: 'bootstrapdateend',\n titleClass: 'center aligned',\n visible:false,\n width: '95%'\n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'status',\n titleClass: 'center aligned',\n visible:false,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n /* \n {\n name: '__slot:actionslocal', // <----\n title: ' Join',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%',\n callback: 'getstatus'\n },\n */\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridgetinvite\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 10,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'user',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'wg',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_wg_showuser', (data) => {\n console.log('-----table--- '+JSON.stringify(data.data))\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': data.data.bootstrapstackid,\n\t\t\t\t\t\t'type': 'wg'\n\t\t\t\t}\n this.bootstrapname = data.data.bootstrapstackname\n this.refreshVuetable();\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_wg_showuser')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\tasync checkactionrowindex(data){\n var obj = {}\n obj.token = this.token\n obj.bootstrapnameid = data.bootstrapnameid\n obj.bootstrapstackname = data.bootstrapstackname\n var res1 = await store.dispatch('pipelineLLO/getserviceshybridstatus', obj)\n var index = data.bootstrapnameid\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.bootstrapnameid, index)\n //console.log('res8 YES '+JSON.stringify(res1.data))\n }else{\n //console.log('res8 NO '+JSON.stringify(res1.data))\n Vue.delete(this.testactionrowindex, data.bootstrapnameid)\n }\n //console.log('res8 all '+JSON.stringify(this.testactionrowindex))\n },\n\n\n async onActionHybrid(action) {\n //var logconfig = await store.getters['pipelineLLO/getconfig'];\n this.CONFIG = await store.getters['pipelineLLO/getstatusswarmlab'];\n if(this.CONFIG.hybrid == 'Online'){\n this.isstatus = true\n }else{\n this.isstatus = false\n }\n //console.log('stack-start1 ' + JSON.stringify(this.CONFIG))\n //console.log('stack-start3 ' + JSON.stringify(logconfig1))\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will leave the stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'stack-start' ){\n //console.log('stack-start')\n //if(this.isstatus == '1'){\n //console.log(this.isstatus)\n console.log('stack-start ' + JSON.stringify(this.hybridshowdata))\n \n var log = await store.dispatch(\"pipelineLLO/hybrid_join\",{\n token:this.token,\n node:this.hybridshowdata.bootstrapstackid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.server_wg_public = log.data.data.data.server_public\n this.server_wg_port = log.data.data.data.server_port\n this.server_wg_userprivate = log.data.data.data.user_private\n\n this.server_wg_usernetmask = log.data.data.data.user_netmask\n this.server_wg_userip = log.data.data.data.user_ip\n this.server_wg_usernetwork = log.data.data.data.user_network\n\n\n var logsave = await store.dispatch(\"pipelineLLO/hybrid_join_start\",{\n publickey:this.server_wg_public,\n endpointport:this.server_wg_port,\n netmask:this.server_wg_usernetmask,\n peer_ip: this.server_wg_userip,\n serverip: '83.212.78.14',\n allowedips: `${this.server_wg_usernetwork}/${this.server_wg_usernetmask}`,\n privatekey:this.server_wg_userprivate\n\n })\n if(logsave.data.action == \"ok\"){\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"connect\"\n })\n\n }\n console.log('stack-start ' + JSON.stringify(logsave))\n\n console.log(JSON.stringify(log))\n /*\nsose ta parakato kai trexto \ndes prota ean exei idio ip netwrok kapou\nean oci nai na tou to peis\n\no server den trexei akomi aftomata to wg server preepi na do pos einai kalitera na ginei\nisos me tou pou sikonete\nmesso mpi_bootstrap\n\n[Interface]\n PrivateKey = QJBr5JPQ44XpoSbcIyU25nGrTZ9u+pVCU32L0lTkTV0=\n ListenPort = 51820\n\n[Peer]\n #PublicKey = WAuzcpIf1obckeLP94owls31j58LP2k+yIAasx9VFU8=\n PublicKey = KerkcAshneFZxNeSVsP00Wad+KNqhU/ZxJa/F3Ol5ns=\n #Endpoint = 83.212.77.133:51820\n #Endpoint = 83.212.78.14:51820\n Endpoint = 83.212.78.14:35886\n AllowedIPs = 10.1.0.0/24\n #AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0\n PersistentKeepalive = 30\n*/\n //}else{\n //}\n \n }else if(action == 'service-invite' ){\n console.log('status '+this.isstatus)\n console.log(this.hybridshowdata.bootstrapstackid)\n var log = await store.dispatch(\"pipelineLLO/wg_invite\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-info' ){\n //console.log(JSON.stringify(action))\n //console.log('CONFIG '+JSON.stringify(this.hybridshowdata))\n var url = this.hybridshowdata.bootstrapurl\n var info=`<h5>You will be redirected to the README page of the repository (OUTSIDE Swarmlab-Hybrid)<br> \n<a href=\"${url}\" target=\"new\">click here to continue</a>\n</h5>\n<br>\n`\n this.$swal({\n type: 'Info',\n title: 'README',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n\n },\n async onActionHybrid_stackrm(action) {\n //console.log(JSON.stringify(action))\n if(action.isConfirmed){\n if(this.isstatus == '1'){\n var log = await store.dispatch(\"pipelineLLO/hybrid_leave\",{\n token:this.token,\n node:this.CONFIG.swarmlabid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else{\n }\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'run-more' ){\n this.hybridshowdata = data\n console.log('-------hybrid invite------- '+JSON.stringify(this.hybridshowdata))\n var log = await store.dispatch(\"pipelineLLO/wg_invite_accept\",{\n token:this.token,\n action:'add',\n wg:this.hybridshowdata\n })\n console.log('-------hybrid invite action ------- '+JSON.stringify(log))\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey1a += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n //console.log('data1 '+JSON.stringify(response))\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-service.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-service.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./request-service.vue?vue&type=template&id=fc93dc68&\"\nimport script from \"./request-service.vue?vue&type=script&lang=js&\"\nexport * from \"./request-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./request-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-6 order-first \" >\n <br>\n <mydeploy-manage-bootstrap>\n\n </mydeploy-manage-bootstrap>\n </div>\n\n <div class=\"col-6 order-last\" >\n <br>\n \n <mydeploy-manage-view>\n\n </mydeploy-manage-view>\n \n </div>\n </div>\n\n\n\n <div class=\"row\" \n v-show=\"hybridshowuser===true\"\n >\n <div class=\"col-12 order-first \" >\n <request-network>\n\n </request-network>\n </div>\n </div>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\nimport MydeployManageBootstrap from \"./manageservices/deploy-bootstrap.vue\";\nimport MydeployManageView from \"./manageservices/view-service.vue\";\nimport RequestNetwork from \"./manageservices/request-service.vue\";\nexport default {\n components: {\n card,\n MydeployManageBootstrap,\n RequestNetwork,\n MydeployManageView\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n hybridshowuser: false,\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_wg_showuser', (data) => {\n this.hybridshowuser = data.hybridshowuser\n console.log(\"view \"+ this.hybridshowuser);\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_wg_showuser')\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managedeploy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managedeploy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./managedeploy.vue?vue&type=template&id=83b079f0&\"\nimport script from \"./managedeploy.vue?vue&type=script&lang=js&\"\nexport * from \"./managedeploy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8 order-first \"},[_c('br'),_c('calendar-view-events-dashboard')],1),_c('div',{staticClass:\"col-4 order-last\"},[_c('br'),_c('b-container',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==1),expression:\"hybridshowlog==1\"}],attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('img',{staticClass:\"border-white\",attrs:{\"src\":require(\"@/assets/img/penguin/penguinfledgling2.png\"),\"alt\":\"...\"}})])])]),_c('calendar-view-events',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==2),expression:\"hybridshowlog==2\"}]})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==true),expression:\"hybridshowlog==true\"}],staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/library.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==true),expression:\"hybridshowlog==true\"}],staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('table',{staticClass:\"table table-hover\"},[_c('tbody',[_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Title\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.title)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Type\")]),_c('td',[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.type)+\" \")]),_c('td',[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.lang)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Description\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.desc)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"More info\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.url)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Level\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.Level)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Prerequisites\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.Prerequisites)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"startDate\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.startDate)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"endDate\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.endDate)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"url\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.urltype)+\" \")])])])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n v-show=\"hybridshowlog==true\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/library.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n <div class=\"row text-center\"\n v-show=\"hybridshowlog==true\"\n >\n <div class=\"col-12\">\n\n\t\t\t\t\t\t\t\t<table class=\"table table-hover\">\n\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Title</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.title }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Type</th>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.type }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.lang }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Description</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.desc }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">More info</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.url }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Level</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.Level }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Prerequisites</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.Prerequisites }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">startDate</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.startDate }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">endDate</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.endDate }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">url</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.urltype }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t</table>\n\n </div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n labtext:{\n originalItem:{}\n },\n token: ''\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_labobject_view', (v) => {\n this.hybridshowlog=true\n this.labtext = v\n //console.log('object ' +JSON.stringify(this.labtext))\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_labobject_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n methods: {\n },\n actions: {\n\t}\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-events.vue?vue&type=template&id=0e870d6a&\"\nimport script from \"./view-events.vue?vue&type=script&lang=js&\"\nexport * from \"./view-events.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-events.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/snowflake_256.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(\"Swarmlab-venus \"),_c('u',[_vm._v(\"Network Virtualization\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(\"on-demand network environments\")]),_c('p',[_c('b',[_vm._v(\"private - public - hybrid \")])])])]),_vm._v(\" \"),_c('br'),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-3\"}),_vm._v(\" \"),_c('div',{staticClass:\"col-6\"},[_c('h5',[_c('b',[_vm._v(\"on-demand sandbox environments\")])]),_c('ul',{staticClass:\"list-group list-group-flush \"},[_c('li',{staticClass:\"list-group-item list-group-item list-group-item-action list-group-item-light\"},[_vm._v(\"Virtual Labroom \")]),_c('li',{staticClass:\"list-group-item list-group-item list-group-item-action list-group-item-light\"},[_vm._v(\" Virtual Classroom \")]),_c('li',{staticClass:\"list-group-item list-group-item list-group-item-action list-group-item-light\"},[_vm._v(\"Proof-of-Concept (POC)\")])])]),_vm._v(\" \"),_c('div',{staticClass:\"col-3\"})])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/snowflake_256.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid> \n\n <div class=\"row text-center\" >\n <div class=\"col-12\">\n <h5>Swarmlab-venus <u>Network Virtualization</u> </h5>\n </div> <!-- col -->\n </div> <!-- row -->\n\n <div class=\"row text-center\" >\n <div class=\"col-12\">\n <h5>on-demand network environments</h5>\n <p> <b>private - public - hybrid </b></p>\n </div> <!-- col --> \n </div> <!-- /row -->\n\n <br>\n\n <div class=\"row text-center\" >\n <div class=\"col-3\">\n </div> <!-- col --> \n <div class=\"col-6\">\n <h5><b>on-demand sandbox environments</b></h5>\n <ul class=\"list-group list-group-flush \">\n <li class=\"list-group-item list-group-item list-group-item-action list-group-item-light\">Virtual Labroom </li>\n <li class=\"list-group-item list-group-item list-group-item-action list-group-item-light\"> Virtual Classroom </li>\n <li class=\"list-group-item list-group-item list-group-item-action list-group-item-light\">Proof-of-Concept (POC)</li>\n </ul>\n </div> <!-- col --> \n <div class=\"col-3\">\n </div> <!-- col --> \n </div> <!-- /row -->\n\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n labtext:{\n originalItem:{}\n },\n token: ''\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_labobject_view', (v) => {\n this.hybridshowlog=true\n this.labtext = v\n //console.log('object ' +JSON.stringify(this.labtext))\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_labobject_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n methods: {\n },\n actions: {\n\t}\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events-dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events-dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-events-dashboard.vue?vue&type=template&id=3af1999d&\"\nimport script from \"./view-events-dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./view-events-dashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-events-dashboard.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-8 order-first \" >\n <br>\n \n <calendar-view-events-dashboard>\n\n </calendar-view-events-dashboard>\n \n </div>\n\n <div class=\"col-4 order-last\" >\n <br>\n\n <b-container fluid\n v-show=\"hybridshowlog==1\"\n >\n <div class=\"row text-center\"\n >\n <div class=\"col-12\">\n <img class=\"border-white\" src=\"@/assets/img/penguin/penguinfledgling2.png\" alt=\"...\">\n </div>\n </div>\n </b-container>\n \n <calendar-view-events\n v-show=\"hybridshowlog==2\"\n >\n\n </calendar-view-events>\n \n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\n//import CalendarView from \"./manageservices/calendarview.vue\";\n//import CalendarView from \"./manageservices/view-service.vue\";\nimport CalendarViewEvents from \"./manageservices/view-events.vue\";\nimport CalendarViewEventsDashboard from \"./manageservices/view-events-dashboard.vue\";\nexport default {\n components: {\n card,\n// CalendarView,\n CalendarViewEvents,\n CalendarViewEventsDashboard\n },\n data () {\n return {\n hybridshowlog:1,\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_labobject_view', (v) => {\n this.hybridshowlog=2\n\t\t})\n },\n beforeDestroy () {\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dashboard.vue?vue&type=template&id=7537a9b2&\"\nimport script from \"./dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./dashboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <div id=\"app\" class=\"container-fluid\">\n\n\t\t\t\t\t<!-- ------ if warning --------------- -->\n<div \n\tv-if=\"warning===true\"\n>\n \t\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-3 order-first \" >\n <br>\n </div>\n\n <div class=\"col-8 order-last\" >\n <br>\n\n\n\t\t\t\t\t\t<h2> Welcome to Swarmlab-venus! </h2>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\tYou are now <b>connected to the local Swarmlab client.</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tThat means that <b>at the moment you are offline</b> and can only <b>work locally on your PC.</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\tTo <u>connect to the server</u> please <i>visit the \"Network->Join\" Menu and click on \"connect\".</i>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\t<b>DISCLAMER:</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tWhen connecting to other \"Networks\" <b>your host is becoming part of a network</b> of multiple other computers that are also connected.\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tThis means that communication between those hosts is unlimited (no firewall).\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\tSince docker is a contained virtual environment this is <b>VERY SAFE</b> \n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<b>BUT</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tto be absolutely secure, like when connecting to any network:\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t <li>\n\t\t\t\t\t\t\t\tplease make sure <b>your passwords are strong</b> (and obviously <b>change all defaults</b> like the ones provided for the downloadable docker images or our labs, since they are publicly available)\n\n\t\t\t\t\t\t\t </li>\n\t\t\t\t\t\t\t <li>\n\t\t\t\t\t\t\t\tdon't connect to hosts you don't trust (e.g. when using the hybrid only trust relliable sources)\n\t\t\t\t\t\t\t </li>\n\t\t\t\t\t\t\t <li>\n\t\t\t\t\t\t\t\tbe aware that you are in a public network (like an airport e.g.) and act accordingly\n\t\t\t\t\t\t\t </li>\n\t\t\t\t\t\t\t</ul>\n\n\t\t\t\t\t\t <div class=\"row\" >\n\t\t\t\t\t\t\t\t\t<div class=\"col-5 order-first \" >\n \t\t\t\t\t\t\t\t\t<b>You can always check your connection status at the top right</b>\n\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t <div class=\"col-7 order-last\" >\n \t\t\t\t\t\t<img src=\"@/assets/img/warning.png\" alt=\"...\" >\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t </div>\n \t\t\t\t\t<br>\n \t\t\t\t\t<br>\n <h4 class=\"text-warning\"> \n Please make sure all users on your system have a strong password!\n </h4>\n <h5 class=\"text-info\"> \n <span class=\"text-dark\">Advice:</span> If at all unsure (e.g. <span class=\"text-primary\">if your machine has personal data on it</span>) you can ofcourse use our image and launch a virtual machine to be absolutely isolated.\n </h5>\n\n\t\t\t\t\t\t <div class=\"row\" >\n\t\t\t\t\t\t\t\t\t<div class=\"col-3 order-first \" >\n\t\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\t\t</div>\n\n <div class=\"col-8 order-last\" >\n\n\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\tclass=\"btn btn-outline-danger\" \n\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t@click=\"setWarning\">\n\t\t\t\t\t\t\t\t\tYes I understad and will be careful</button>\n\t\t\t\t\t\t\t</div>\n </div>\n </div>\n\n \t\t\t\t\t </div>\n \t\t\t\t </div>\n </div>\n\n\n </card>\n\n</div>\n\n\t\t\t\t\t<!-- ------ else warning --------------- -->\n<div \n\tv-else\n>\n\n<nav class=\"navbar navbar-light navbar-expand-md bg-light justify-content-md-center justify-content-start\">\n <b-navbar-brand class=\"logo simple-text ti-swarmlab text-secondary\">\n Swarmlab.io\n </b-navbar-brand>\n <div class=\"navbar-collapse collapse justify-content-between align-items-center w-100\" id=\"collapsingNavbar2\">\n\n\n <ul class=\"navbar-nav mx-auto text-md-center text-left\">\n\n\n\n <b-nav-item href=\"https://git.swarmlab.io:3000\" target=\"_swarmlabgit\"> Swarmlab_git </b-nav-item>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"#\">\n -\n </a>\n </li>\n <li class=\"nav-item my-auto\">\n <a class=\"nav-link navbar-brand mx-0 d-none d-md-inline\" href=\"\">Venus</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"#\">\n -\n </a>\n </li>\n <b-nav-item href=\"https://gitter.im/swarmlab-hybrid/community\" target=\"_gitter\"> Join_us_on_Gitter </b-nav-item>\n <b-nav-item href=\"https://vimeo.com/showcase/7887267\" target=\"_vimeo\"> Follow_us_on_Vimeo </b-nav-item>\n </ul>\n\n <ul class=\"nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap\">\n\t\t\t<!-- --------------- socket connection -->\n <!--\n <b-nav-item \n @click=\"onAction('check')\"\n\t\t\t\t\t\t\t>Check Connection Status:</b-nav-item>\n -->\n <b-nav-item >Agent</b-nav-item>\n<!--\n v-if=\"$socket.disconnected\"\n-->\n <li class=\"nav-item\"\n v-if=\"issocket === 'close'\"\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-danger\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are disconnected from hybrid_agent\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n <li class=\"nav-item\"\n v-else\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-success\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are connected hybrid_agent\"\n @click=\"onAction('connect')\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n\t\t\t<!-- --------------- socket connection -->\n\t\t\t<!-- --------------- wg connection -->\n <!--\n <b-nav-item >Server</b-nav-item>\n <li class=\"nav-item\"\n v-if=\"isconnect!==true\"\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-danger\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are disconnected from hybrid_server\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n <li class=\"nav-item\"\n v-else\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-success\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are connected hybrid_server\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n -->\n\t\t\t<!-- --------------- wg connection -->\n <b-nav-item > </b-nav-item>\n </ul>\n </div>\n</nav>\n\n\n <!-- ***************** container items ****************** -->\n <b-row >\n <b-col cols=\"12\" >\n\n\n\n<div class=\"d-flex\" id=\"wrapper\">\n\n <!-- Sidebar max -------------------------------- -->\n <div class=\" bg-light border-right\" id=\"sidebar-wrapper\"\n style=\"width: 15rem;\"\n\t\t\t\tv-if=\"sidemenou == 'max'\"\n\t\t>\n <div class=\"list-group list-group-flush\"\n\t\t\t>\n\n <!-- Menou Dashboard -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-dashboard variant=\"light\" name=\"Dashboard\" class=\"ti-dashboard list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('dashboard') }\" @click=\"hybrid('dashboard')\" > Dashboard</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-dashboard\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"dashboard\" class=\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_dashboard')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_dashboard') }\"> Dashoard</b-list-group-item>\n<!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Profile\" class=\"m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_profile')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_profile') }\"> Profile</b-list-group-item>\n-->\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou Settings -->\n<!-- enableprofilehere\n\t\t\t <b-list-group-item v-b-toggle.hybrid-profile variant=\"light\" name=\"Local\" class=\"ti-user list-group-item list-group-item-action\" v-on:click=\"setActive('profile','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('profile') }\" @click=\"hybrid('connect-server')\" > Profile</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-profile\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n-->\n<!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"profile\" class=\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('profile','profile_profile')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('profile_profile') } \" > Local</b-list-group-item>\n -->\n<!-- enableprofilehere\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Settings\" class=\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('settings','profile_settings')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('profile_settings') }\" @click=\"hybrid('connect-server')\"> Settings</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou container -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-container variant=\"light\" name=\"Local\" class=\"ti-package list-group-item list-group-item-action\" v-on:click=\"setActive('container','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('container') }\" @click=\"hybrid('bootstrap')\" > Instances</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-container\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('container','hybrid_container')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_container') }\" @click=\"hybrid('bootstrap')\"> Container</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n <!-- Menou hybrid -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-hybrid variant=\"light\" name=\"Local\" class=\"ti-loop list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('hybrid') }\" @click=\"hybrid('manage_service')\" > Network</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-hybrid\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Hybrid\" class=\"ti-target m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_instances')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_instances') }\" @click=\"hybrid('manage_service')\"> Join</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_deploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_deploy') }\" @click=\"hybrid('manage_deploy')\"> Deploy</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n\n\n <!-- Menou private -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-private variant=\"light\" name=\"Private\" class=\"ti-home list-group-item list-group-item-action\" v-on:click=\"setActive('private','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('private') }\" @click=\"hybrid('services')\" > Private/Local</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-private\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_private')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_private') }\" @click=\"hybrid('services')\"> LabRoom</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Storage\" class=\"ti-server m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_storage')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_storage') }\" @click=\"hybrid('storage')\"> Storage</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Microservice\" class=\"ti-cloud m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_microservice')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_microservice') }\" @click=\"hybrid('microservice')\"> MicroServices</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n\n <!-- Menou builders -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-builders variant=\"light\" name=\"Private\" class=\"ti-layers-alt list-group-item list-group-item-action\" v-on:click=\"setActive('builders','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('builders') }\" @click=\"hybrid('builders')\" > Builders</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-builders\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"build_vmware\" class=\" ti-folder m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('builders','hybrid_builders')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_builders') }\" @click=\"hybrid('builders')\"> VM</b-list-group-item>\n <!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"build_docker\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('builders','hybrid_docker')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_docker') }\" @click=\"hybrid('build_docker')\"> Docker</b-list-group-item>\n \n\t\t\t\t\t</b-collapse>\n-->\n\n\n\n\n <!-- Menou llo -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" > LearningObjects</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-llo\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('llo','hybrid_llo')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_llo') }\" @click=\"hybrid('llo')\"> Courses</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou close -->\n\t\t\t <b-list-group-item variant=\"light\" name=\"menou-min\" class=\"ti-angle-double-left list-group-item list-group-item-action\" v-on:click=\"onActionMenu('min')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('menou-min') }\" title=\"Minimize\"></b-list-group-item>\n\n\n\n\n </div>\n </div>\n <!-- /Sidebar max ------------------------------------ -->\n <!-- Sidebar min -------------------------------- -->\n\t\t\t<div class=\" bg-light border-right\" id=\"sidebar-wrapper1\"\n\t\t\t\t\tv-if=\"sidemenou == 'min'\"\n\t\t\t>\n\t\t\t\t<div class=\"list-group list-group-flush\"\n\t\t\t\t>\n\n <!-- Menou Dashboard -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-dashboard1 variant=\"light\" name=\"Dashboard\" class=\"ti-dashboard list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('dashboard') }\" @click=\"hybrid('dashboard')\" title=\"Dashboard\"></b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-dashboard1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"dashboard\" class=\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_dashboard')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_dashboard') }\" title=\"Dashboard\"></b-list-group-item>\n<!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Profile\" class=\"m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_profile')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_profile') }\"> Profile</b-list-group-item>\n-->\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou Settings -->\n<!-- enableprofilehere\n\t\t\t <b-list-group-item v-b-toggle.hybrid-profile1 variant=\"light\" name=\"Local\" class=\"ti-user list-group-item list-group-item-action\" v-on:click=\"setActive('profile','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('profile') }\" @click=\"hybrid('connect-server')\" title=\"Profile\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-profile1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Settings\" class=\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('settings','profile_settings')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('profile_settings') }\" @click=\"hybrid('connect-server')\" title=\"Profile\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou container -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-container1 variant=\"light\" name=\"Local\" class=\"ti-package list-group-item list-group-item-action\" v-on:click=\"setActive('container','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('container') }\" @click=\"hybrid('bootstrap')\" title=\"Instances\"> </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-container1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('container','hybrid_container')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_container') }\" @click=\"hybrid('bootstrap')\" title=\"Show all containers\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou hybrid -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-hybrid1 variant=\"light\" name=\"Local\" class=\"ti-loop list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('hybrid') }\" @click=\"hybrid('manage_service')\" title=\"Hybrid\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-hybrid1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Hybrid\" class=\"ti-target m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_instances')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_instances') }\" @click=\"hybrid('manage_service')\" title=\"Zones\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_deploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_deploy') }\" @click=\"hybrid('manage_deploy')\" title=\"Deploy\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n\n <!-- Menou private -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-private1 variant=\"light\" name=\"Private\" class=\"ti-home list-group-item list-group-item-action\" v-on:click=\"setActive('private','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('private') }\" @click=\"hybrid('services')\" title=\"Private\"> </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-private1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_private')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_private') }\" @click=\"hybrid('services')\" title=\"LabRoom\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Storage\" class=\"ti-server m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_storage')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_storage') }\" @click=\"hybrid('storage')\" title=\"Storage\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Microservice\" class=\"ti-cloud m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_microservice')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_microservice') }\" @click=\"hybrid('microservice')\" title=\"Microservices\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n\n <!-- Menou builders -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-builders variant=\"light\" name=\"Private\" class=\"ti-layers-alt list-group-item list-group-item-action\" v-on:click=\"setActive('builders','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('builders') }\" @click=\"hybrid('builders')\" title=\"Builders\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-builders1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"build_vmware\" class=\" ti-folder m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('builders','hybrid_builders')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_builders') }\" @click=\"hybrid('builders')\" title=\"Build VM\"> </b-list-group-item>\n <!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"build_docker\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('builders','hybrid_docker')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_docker') }\" @click=\"hybrid('build_docker')\" title=\"Build Docker\"> </b-list-group-item>\n \n\t\t\t\t\t</b-collapse>\n-->\n\n\n\n\n\n\n\n\n <!-- Menou llo -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo1 variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" title=\"LearningObjects\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-llo1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('llo','hybrid_llo')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_llo') }\" @click=\"hybrid('llo')\" title=\"Courses\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\t\t\t<!-- Menou close -->\n\t\t\t\t <b-list-group-item variant=\"light\" name=\"menou-max\" class=\"ti-angle-double-right list-group-item list-group-item-action\" v-on:click=\"onActionMenu('max')\" style=\"cursor: pointer;\" title=\"Maximize\"></b-list-group-item>\n\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- /Sidebar max ------------------------------------ -->\n\n\t\t\t<!-- /#sidebar-wrapper -->\n\n <!-- Page Content -->\n\n\n \t\t<!-- content----------------------------------- -->\n\n\t\t\t\t<div class=\"w-100 p-3\" style=\"background-color: #eee;\">\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid dashboard WG DASHBOARD --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <view-dashboard\n v-if=\"hybridmenou == 'dashboard'\"\n style=\"background-color: #f8f9fa\"\n >\n </view-dashboard>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid dashboard --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage WG JOIN --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-services\n :key=\"componentKeyreload\"\n v-if=\"hybridmenou == 'manage_service'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-services>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage services --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private deploy WG DEPLOY --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-deploy\n v-if=\"hybridmenou == 'manage_deploy'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-deploy>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private deploy --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid settings RM SETTINGS --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n \n\t\t\t\t\t\t <connect-server\n\t\t\t\t\t\t\t\tstyle=\"background-color: #f8f9fa\"\n\t\t\t\t\t\t\t\t\tv-show=\"hybridmenou == 'connect-server'\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t </connect-server>\n \n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid settings --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage llo --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <manage-llo\n v-if=\"hybridmenou == 'RMllo'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-llo>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage llo --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid container --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <network-table\n :key=\"componentKeyreload1\"\n v-show=\"hybridmenou == 'RMbootstrap'\"\n style=\"background-color: #f8f9fa\"\n >\n </network-table>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid container --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private bootstrap --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <services-table\n v-show=\"hybridmenou == 'RMservices'\"\n style=\"background-color: #f8f9fa\"\n >\n </services-table>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private bootstrap --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage storage --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <manage-storage\n :key=\"componentKeyreload2\"\n v-show=\"hybridmenou == 'RMstorage'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-storage>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage storage --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage microservices --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <manage-microservices\n :key=\"componentKeyreload3\"\n v-show=\"hybridmenou == 'RMmicroservice'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-microservices>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage microservices --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage builders --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <manage-builders\n :key=\"componentKeybuilders\"\n v-show=\"hybridmenou == 'RMbuilders'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-builders>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage builders --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t</div>\n\n <!-- Page Content -->\n\n <!-- /#page-content-wrapper -->\n\n </div>\n <!-- /#wrapper -->\n\n\n </b-col>\n </b-row>\n\n\n\n\n\n<footer class=\"footer\">\n <div id=\"appfooter\" class=\"container\" style=\"max-width:75%\">\n\n\t<span data-jsl10n=\"license\" class=\"jsl10n\">Content is available under the \n\t\t\t\t<a class=\"text-info\" href=\"https://creativecommons.org/licenses/by-sa/3.0/\" target=\"_blank\">Creative Commons License</a></span>\n\t\t\t\t&nbsp; | &nbsp; \n <a class=\"text-info\" href=\"https://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"> ©</a>\n\t\t\t\t&nbsp; Coded with &nbsp;\n <i class=\"ti-heart\"></i> &nbsp; by\n <a class=\"text-info\" href=\"https://git.swarmlab.io:3000/zeus\" target=\"_blank\"> &nbsp; zeus</a>&nbsp;\n\t\t\t\t- Released under the\n <a class=\"text-info\" href=\"https://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"> &nbsp; GNU AGPL License</a> &nbsp;|&nbsp;\n\t\t\t\t<a class=\"text-info\"\n\t\t\t\t\t\thref=\"#\"\n \t \t@click=\"showdiscl()\"\n >Disclaimer and Notices</a>\n\n\t\t\t\t<span \n v-if=\"hybridmenou == 'llo'||hybridmenou == 'dashboard'\"\n\t\t\t\t>\n\t\t\t\t&nbsp; | &nbsp; \n\t\t\t\t</span>\n\t\t\t<a \n v-if=\"hybridmenou == 'llo'||hybridmenou == 'dashboard'\"\n\t\t\t\trel=\"nofollow\" class=\"external text text-info\" href=\"https://letsgolarval.wordpress.com/open-art/\" target=\"newl\">\n\t\t\t\tLinux Penguin\n\t\t\t</a> \n\t\t\t\t<span \n v-if=\"hybridmenou == 'llo'||hybridmenou == 'dashboard'\"\n\t\t\t\t>\n\t\t\t\t\tby Rebekah Yoder / \n\t\t\t\t</span>\n\t\t\t<a \n v-if=\"hybridmenou == 'llo'||hybridmenou == 'dashboard'\"\n\t\t\t\trel=\"nofollow\" class=\"external text text-info\" href=\"https://creativecommons.org/licenses/by/2.0/\" target=\"newl\">BY-SA\n\t\t\t</a>\n\n </div>\n\n</footer>\n\n\n\n\n\t\t\t\t\t<!-- ------ /warning --------------- -->\n </div> \n\n </div>\n</template>\n\n<script>\nimport \"@/assets/css/themify-icons.css\";\n\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport ConnectServer from \"./components/myconnect-server.vue\";\n//import NetworkTable from \"./components/mynetwork.vue\";\n//import ServicesTable from \"./components/myservices.vue\";\nimport ManageServices from \"./components/manageservices.vue\";\n//import ManageStorage from \"./components/mystorage.vue\";\n//import ManageMicroservices from \"./components/mymicroservices.vue\";\n//import ManageBuilders from \"./components/mybuild.vue\";\nimport ManageDeploy from \"./components/managedeploy.vue\";\n//import ManageLlo from \"./components/managello.vue\";\nimport ViewDashboard from \"./components/dashboard.vue\";\n\nexport default {\n name: 'app',\n components: {\n card,\n// NetworkTable,\n ViewDashboard,\n// ServicesTable,\n ConnectServer,\n ManageServices,\n// ManageStorage,\n// ManageMicroservices,\n// ManageBuilders,\n ManageDeploy\n// ManageLlo\n },\n data() {\n return {\n warning: true,\n componentKeyreload:1,\n componentKeyreload1:1,\n componentKeyreload2:1,\n componentKeyreload3:1,\n componentKeybuilders:1,\n\t\t\tsetStatusAgent:'',\n issocket:false, //socket server\n\t\t\tisconnect:false, // dockerswarm wg\n \t\t\tactiveItem: '', // menou\n \t\t\tactiveItemSub: '', //submenou\n sidemenou:'max',\n hybridmenou:'dashboard',\n show: true,\n token: '',\n SwarmabAsciiLabTemplate:''\n }\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_server_status', (value) => {\n this.serverstatus()\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_server_status')\n },\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n var log = store.dispatch(\"pipelineLLO/settoken\",{\n token:this.token\n })\n },\n methods: {\n\t\t\tsetWarning(){\n\t\t\t\tthis.warning = false\n\t\t\t},\n\t\t\tasync onAction(action){\n if(action == 'check'){\n if(this.$socket.disconnected){\n \t\tvar socketStatus = 'close'\n }else if(this.$socket.connected){\n \t\tvar socketStatus = 'open'\n\t\t\t\t\t\t}\n\n if(this.isconnect){\n \t\tvar serverStatus = 'open'\n }else{\n \t\tvar serverStatus = 'close'\n\t\t\t\t\t\t}\n\n var info=\"Status<br>\"\n info+=\"Agent is \" + socketStatus+\"<br>\"\n info+=\"Server is \" + serverStatus\n\n this.$swal({\n type: 'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n //cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n //reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Yes, Reconnect!'\n\t\t\t\t\t }).then((result)=> {\n this.reconnenting(result);\n })\n }\n },\n async reconnenting(result) {\n if(result.value){\n //console.log(JSON.stringify(result))\n //window.location.reload()\n this.componentKeyreload += 1\n this.componentKeyreload1 += 1\n this.componentKeyreload2 += 1\n this.componentKeyreload3 += 1\n this.componentKeybuilders += 1\n }\n },\n\t\t\tasync serverstatus(action){\n var log = store.getters['pipelineLLO/getstatus']\n //console.log('status log ' + JSON.stringify(log))\t\n if(log.data.swarmlab == 'active' && log.data.hybrid == 'Online'){\n this.isconnect=true\n }else{\n this.isconnect=false\n }\n\n },\n onActionMenu(action){\n if(action == 'max'){\n \t\t\tthis.sidemenou = 'max'\n }else if(action == 'min'){\n \t\t\tthis.sidemenou = 'min'\n\t\t\t\t\t}\n\t\t\t\t//console.log(action)\n\t },\n hybrid(action) {\n this.hybridmenou = action\n //console.log(action)\n if(action == 'bootstrap'){\n\t\t this.$root.$emit('hybrid_refresh_dockerservices')\n }else if(action == 'dashboard'){\n console.log('dashboard '+action)\n }else if(action == 'connect-server'){\n\t\t this.$root.$emit('hybrid_connect_server')\n }else if(action == 'llo'){\n console.log('llo '+action)\n\t\t //this.$root.$emit('hybrid_manage_llo')\n }else if(action == 'services'){\n\t\t this.$root.$emit('hybrid_refresh_availableservices')\n }else if(action == 'manage_service'){\n\t\t //this.$root.$emit('hybrid_manage_service')\n }else if(action == 'storage'){\n\t\t //this.$root.$emit('hybrid_manage_service')\n }else if(action == 'microservice'){\n\t\t //this.$root.$emit('hybrid_manage_service')\n }else if(action == 'manage_deploy'){\n }\n },\n isActive: function (menuItem) {\n //console.log('active ' + menuItem);\n return this.activeItem === menuItem\n },\n isActiveSub: function (menuItem) {\n //console.log('activesub ' + menuItem);\n return this.activeItemSub === menuItem\n },\n setActive: function (menuItem,menuItemSub) {\n //console.log('set ' + menuItem);\n this.activeItem = menuItem // no need for Vue.set()\n this.activeItemSub = menuItemSub // no need for Vue.set()\n },\n showdiscl() {\n var winfo='<code class=\"precode text-info\" >Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '3. Neither the name of Swarmlab.io nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += 'THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</code>';\n\nlet info = '<div class=\"text-left\" style=\"height: 550px; overflow-y: scroll;\"><b><p>'+winfo+'</p></b></div>'\n this.$swal({\n type: 'Info',\n title: 'Legal Disclaimer and Notices',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n}\n\n\n }, \n computed: {\n socketStatus() {\n return store.getters['pipelineLLO/getsocketStatus']\n }\n },\n watch: {\n \tsocketStatus(status) {\n\t\t\t\t//console.log('watchok '+status)\n\t\t\t\tthis.issocket = status\n }\n }\n}\n</script>\n\n<style>\n.active {\n background-color: #e7e7e7 !important;\n color: #0c5460 !important;\n}\n\n @import url('https://fonts.googleapis.com/css?family=Lato:400,700');\n\n\n body {\n background: #EEF1F4 !important;\n }\n\n .nav-background {\n background: #353535;\n }\n\n .ti-swarmlab:before {\n position: relative;\n top:-5px;\n right:-8px;\n font-size: 1.5em;\n font-weight: 300;\n content: \"\\e606\";\n color: #222;\n color: #74B3C8;\n border-color: #c60000;\n}\n\n.ti-themify-logo:before {\n content: \"\\e6d1\";\n}\n\n .menoutext {\n font-family: 'Lato', sans-serif !important;\n }\n\n.mycontainer {\n padding-right: 20px !important;\n padding-left: 5px !important;\n margin-right:auto;\n margin-left:auto\n}\n\n\n .m-subm {\n width: 100%;\n border-left: 4px solid #4b4ba3;;\n background-color: #f0f0f0;\n border-top: none;\n border-bottom: none;\n border-right: none;\n\n }\n .m-subm-card {\n padding-left: 0px;\n padding-right: 0px;\n padding-top: 0px;\n padding-bottom: 0px;\n background-color: #f0f0f0;\n border-top: none;\n border-bottom: none;\n border-left: none;\n border-right: none;\n margin-bottom: 0px;\n margin-top: 0px;\n }\n .m-subm-listgroup {\n width: 100%;\n //border-left: 4px solid #4b4ba3;\n background-color: #f0f0f0;\n border-top: none;\n border-bottom: none;\n border-right: none;\n border-left: none;\n padding-left: 2.25rem;\n }\n\n .m-subm-listgroup:hover {\n background-color: #e7e7e7;\n font-weight: 580;\n }\n .m-subm-listgroup:focus {\n background-color: #e7e7e7;\n color:#393982;\n font-weight: 580;\n }\n\n\n/*!\n * Start Bootstrap - Simple Sidebar (https://startbootstrap.com/template/simple-sidebar)\n * Copyright 2013-2020 Start Bootstrap\n * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-simple-sidebar/blob/master/LICENSE)\n */\n\n#sidebar-wrapper .list-group {\n margin:0;\n line-height:30px;\n font-size:12px;\n font-weight:600;\n}\n/*\n#sidebar-wrapper .list-group {\n width: 15rem;\n}\n #wrapper {\n overflow-x: hidden;\n }\n#sidebar-wrapper {\n min-height: 100vh;\n margin-left: -15rem;\n -webkit-transition: margin .25s ease-out;\n -moz-transition: margin .25s ease-out;\n -o-transition: margin .25s ease-out;\n transition: margin .25s ease-out;\n}\n\n#sidebar-wrapper .sidebar-heading {\n padding: 0.875rem 1.25rem;\n font-size: 1.2rem;\n}\n\n#sidebar-wrapper .list-group {\n width: 15rem;\n}\n\n\n#wrapper.toggled #sidebar-wrapper {\n margin-left: 0;\n}\n\n@media (min-width: 768px) {\n #sidebar-wrapper {\n margin-left: 0;\n }\n\n #page-content-wrapper {\n min-width: 0;\n width: 100%;\n }\n\n #wrapper.toggled #sidebar-wrapper {\n margin-left: -15rem;\n }\n}\n#page-content-wrapper {\n min-width: 100vh;\n}\n\n\n\n#sidebar-wrapper1 .list-group {\n margin:0;\n line-height:30px;\n font-size:12px;\n font-weight:600;\n}\n/*\n#sidebar-wrapper1 .list-group {\n width: 15rem;\n}\n #wrapper {\n overflow-x: hidden;\n }\n#sidebar-wrapper1 {\n min-height: 100vh;\n margin-left: -15rem;\n -webkit-transition: margin .25s ease-out;\n -moz-transition: margin .25s ease-out;\n -o-transition: margin .25s ease-out;\n transition: margin .25s ease-out;\n}\n\n#sidebar-wrapper1 .sidebar-heading {\n padding: 0.875rem 1.25rem;\n font-size: 1.2rem;\n}\n\n#sidebar-wrapper1 .list-group {\n width: 15rem;\n}\n\n\n#wrapper.toggled #sidebar-wrapper1 {\n margin-left: 0;\n}\n\n@media (min-width: 768px) {\n #sidebar-wrapper1 {\n margin-left: 0;\n }\n\n #page-content-wrapper {\n min-width: 0;\n width: 100%;\n }\n\n #wrapper.toggled #sidebar-wrapper1 {\n margin-left: -15rem;\n }\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n*/\n\nprecode {\n overflow: auto;\n word-wrap: normal;\n text-align: left;\n white-space: pre;\n}\n\n\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5cd69786&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport store from '@/store/index'\nimport {ApiConfig} from \"@/config/index\";\nimport BootstrapVue from 'bootstrap-vue'\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\nimport VueSweetalert2 from 'vue-sweetalert2';\nimport 'sweetalert2/dist/sweetalert2.min.css';\nVue.use(VueSweetalert2);\nimport VueWait from 'vue-wait'\nimport { ValidationProvider } from 'vee-validate';\nVue.use(VueWait)\n\n\nimport \"@/assets/css/_cards.scss\";\n\n\nimport VueSocketIOExt from 'vue-socket.io-extended';\n//import io from 'socket.io-client';\nimport { io } from 'socket.io-client';\n\n\n//const socket = io('https://factory.swarmlab.io:55527', {\n//const socket = io('https://localhost:3080', {\nvar socketurl = ApiConfig.url_80;\nconst socket = io(socketurl, {\n autoConnect: false,\n reconnection: true,\n reconnectionDelay: 500,\n maxReconnectionAttempts: Infinity,\n pingInterval: 25000,\n pingTimeout: 60000,\n transports: [ 'websocket', 'polling' ],\n secure: true,\n rejectUnauthorized: false\n});\n\n\n//const socket = io('http://localhost:3000', { autoConnect: false });\n\n\nVue.use(VueSocketIOExt, socket);\n\n//Vue.use(VueSocketIOExt, socket);\n\nVue.use(BootstrapVue);\n\n\nconst config = {\n aria: true,\n classNames: {\n valid: \"is-valid\",\n invalid: \"is-invalid\"\n },\n classes: true,\n delay: 0,\n dictionary: null,\n errorBagName: 'vErrors', // change if property conflicts\n events: 'input|blur',\n fieldsBagName: 'vFields',\n i18n: null, // the vue-i18n plugin instance\n i18nRootKey: 'validations', // the nested key under which the validation messages will be located\n inject: true,\n locale: 'en',\n validity: false,\n useConstraintAttrs: true\n};\n//Vue.use(ValidationProvider,config);\nVue.component('ValidationProvider', ValidationProvider);\n\n\n\n\nVue.config.productionTip = false\nnew Vue({\n el: '#app',\n store,\n wait: new VueWait(),\n render: h => h(App)\n})\n\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAB3RJTUUH5QQbCzgJmtO9cQAAAiFJREFUeNrlWlu2wyAIDNRddT9dVPfTZfX0/ubk+kBlAGN+W4VhkJfSYfA93p9f75rv60kWuvGx+ZcQTCPYO3uR5v6EcvGzkr1H4AqwtF7DEMn6bEfzOLYA36OglH0tItJqrLtmATT4EfbNDNCrzCqewlZgWnFAm33peo7ApAb43BrJPowEf13/fT3JqsSVYkgezNeMgJD7eH9+JZmhegGk0Ut7M1KRHnfXBi+VzRHAe3rY9u0w37nMlXgB7wK09BvvxH74NOhmgAjse1WIjAAyCsYjdXIE4BpGGF1Hs0egJViyd24PqU4l+dL1hLq0mJ0ES/bQMD6NMoSo6XvYlOrU0odyPbtnJydplTUJmQpaXjMDTT0pEmiUEWqeQ5EAe9QHFAWklyFoxSZI9XZ41S5QKxPQym2wRiHEEWd36NSXzQJ3iAUj5Td7tqIRjMfe/bgX+8V5wA6ecMZoekfnzX6OXK61m3fyhhKWf6XwzHQmIvstErNpcHbMFB38+bo8tf6Q2xBliBrAmad2NaM1CyGrxwy98aZ3TFaafKk9SUVOlmuyRnQrpkHNAensWBvZD1TrgAiKIxuhq97T0T6KIUaJU0130Z7ASfSDRnhtgyACLaEEWqW+WTns5dJWx6UlJx3Gn/fVW9cR0BI+yzYyKMNufUcKJq0pT4/B3XK4VUMVzgDRbpRpddCzMYZWBKwZYGlF0Jp1xFIeALkej37+0RXjH+Ju1ERSh/vYAAAAAElFTkSuQmCC\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-service.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAySSURBVHhe7Z0/bBtHHoXdubzyypQpU6Z0mdJIZMNdXAYIQqk5wBYNnDuXKl2qdKk/h8BNrBUQi7rO1wlXHFy6dOk2N7/lW/mJeo+7I5Ia0p4P+BAEeTP7OEMuuasAe6dSqVQqlUqlUqlUKpVKpVKpVCqVSqVSqVQqlUpl1Ryenv7t8M3k/uHJ5Hl43Jy/OGomjXE/Mkcnb58cnr691zTNXUyzUuJYh2/e7kz7TV6KXp173es4ejN59Pvp6d8xRaUjFiUWJxbr6GTyLv3zr4U8OXt/1JwdtBt0+u9vcJgbM31Dnj1Oc+8vqd9F+ud+zLmMfhtJLOrRm7NfsBh6oZblyeQ8jpXz6fu86WcHcs5lGm/YdAb7Ks4O/zqdfNueMk8mH+VirN7XcfpGnWvEJzJl9mfG3JrHzdmr4z/+/AF1vhziO739JIoXXciG3wiHp2ff3cqnfahxZkxnLdTbXPCJen3tBa6P6YfaGm38rOk3x/Hp2++xnJtD/Bqf/jqffJIvrJrrXvwuwfKuN/Eddis/7r42TyYf4moJy7wePNp58s2D0dOdB9u7+w+2x00oy+caLzZ+sNE1vhTX4u1pvL38E3OtwoL9unXeGo1f/bS9++Thzvg7bMftMd308UUyCl1Rle41fVXEL+BFb5Z0N5HSnHHNvrwrjTXqp9b8wWj8fmu0+/z+zvPVfk389Nvu/TiYLAFVaW/6ZKRFXdUdvMvFlsce4vr1U2veubU9/pBc/tXDzz//8+6D0e5LddBZVenrnh3EpRemXzn51/fr20+tufBgaWeDmCh9x5+Lg0hVaTZuBmHqWwcLLXt1rns/tebGi/iNhqlvRvvJz9j8UJVmMXUxVCcWsWKoTqxac2v6ul7oTIBf93pyoyrNYupiqE4sYsVQnVi15j02mDqPtPmPxGS9qtIspi+G6sQiVgzViVVr3mu6asP0w4hTf/yilJPNOtr92J4p0kG2dp7dU6VZHMLyn//+769FxDQW1YlFzKKOmSOmsahObKxxd+9l6B5tbe9+evjrP4ZfvuI6X042YzM7sSrNImZRi5YjprGoTixiFnXMHDGNRXViEWvBD/RBX9Nb28/2MKyfvmv91tH4BeJXUKVZxCxq0XLENBbViUXMoo6ZI6axqE4sYldo78+oPSLjLBBndgzxpMm+VRPMaH9YqNIsYha1aDliGovqxCJmUcfMEdNYVCcWsWsMuk8zetr//xrELUU5uDN958/7PlGlWcQsatFyxDQW1YlFzKKOmSOmsahOLGLXmN6s6ztz7+4j7knBg+sDP9v3XaJKs4hZ1KLliGksqhOLmEUdM0dMY1GdWMQk8cchtWed6cP9DlFPepfMvfHz8LfxY0QlqjSLmEUtWo6YxqI6sYhZ1DFzxDQW1YlFTBKneLVnnXHVgKin7zTS9+dHVZpFzKIWLUdMY1GdWMQs6pg5YhqL6sQiJpleFeh960TUowaxiFlUaRaxYqhOLGLFUJ1YxCxqz1jEPGoQi5hFlWYRK4bqxCJWDNWJRcyi9oxFzKMGsYhZVGkWsWKoTixixVCdWMQsas9YxDxqEIuYRZVmESuG6sQiVgzViUXMovaMRcyjBrGIWVRpFrFiqE4sYsVQnVjELGrPWMQ8ahCLmEWVZhErhurEIlYM1YlFzKL2jEXMowaxiFlUaRaxYqhOLGLFUJ1YxCxqz1jEPGoQi5hFlWYRK4bqxCJWDNWJRcyi9oxFzKMGsYhZVGkWMYu6eZIjprGoTixiFnXMHDGNRXViEbOoPWMR86hBLGIWVZpFzKIWLUdMY1GdWMQs6pg5YhqL6sQiZlF7xiLmUYNYxCyqNIuYRS1ajpjGojqxiFnUMXPENBbViUXMovaMRcyjBrGIWVRpFjGLWrQcMY1FdWIRs6hj5ohpLKoTi5hF7RmLmEcNYhGzqNIsYha1aDliGovqxCJmUcfMEdNYVCcWMYvaMxYxjxrEImZRpVnELGrRcsQ0FtWJRcyijpkjprGoTixiFrVnLGIeNYhFzKJKs4hZ1KLliGksqhOLmEUdM0dMY1GdWMQsas9YxDxqEIuYRZVmEbOoRcsR01hUJxYxizpmjpjGojqxiFnUnrGIedQgFjGLKs0iVgzViUWsGKoTi5hF7RmLmEcNYhGzqNIsYsVQnVjEiqE6sYhZ1J6xiHnUIBYxiyrNIlYM1YlFrBiqE4uYRe0Zi5hHDWIRs6jSLGLFUJ1YxIqhOrGIWdSesYh51CAWMYsqzSJWDNWJRawYqhOLmEXtGYuYRw1iEbOo0ixixVCdWMSKoTqxiFnUnrGIedQgFjGLKs0iVgzViUWsGKoTi5hF7RmLmEcNYhGzqNIsYsVQnVjEiqE6sYhZ1J6xiHnUIBYxiyrNImZRN09yxDQW1YlFzKKOmSOmsahOLGIWtWcsYh41iEXMokqziFnUouWIaSyqE4uYRR0zR0xjUZ1YxCxqz1jEPGoQi5hFlWYRs6hFyxHTWFQnFjGLOmaOmMaiOrGIWdSesYh51CAWMYsqzSJmUYuWI6axqE4sYhZ1zBwxjUV1YhGzqD1jEfOoQSxiFlWaRcyiFi1HTGNRnVjELOqYOWIai+rEImZRe8Yi5lGDWMQsqjSLmEUtWo6YxqI6sYhZ1DFzxDQW1YlFzKL2jEXMowaxiFlUaRYxi1q0HDGNRXViEbOoY+aIaSyqE4uYRe0Zi5hHDWIRs6jSLGIWtWg5YhqL6sQiZlHHzBHTWFQnFjGL2jMWMY8axCJmUaVZxIqhOrGIFUN1YhGzqD1jEfOoQSxiFlWaRawYqhOLWDFUJxYxi9ozFjGPGsQiZlGlWcSKoTqxiBVDdWIRs6g9YxHzqEEsYhZVmkWsGKoTi1gxVCcWMYvaMxYxjxrEImZRpVnEiqE6sYgVQ3ViEbOoPWMR86hBLGIWVZpFrBiqE4tYMVQnFjGL2jMWMY8axCJmUaVZxIqhOrGIFUN1YhGzqD1jEfOoQSxiFlWaRawYqhOLWDFUJxYxi9ozFjGPGsQiZlGlWcTmEs/t6Z69F8/QjWfvhe2j2+KBTvj36SPiu+f0DXvIk+rEIjaXde6n9oxFzKMGsYhZVGkWsUviQUmfn8+/hIcrts/jS5uQFl89AEqOIRG7ZN37zaL2jEXMowaxiFlUaXbpC9rnyeTD9KGPZ7/EgssMue79sMwWtWcsYh41iEXMokpXlyeW2aL2jEXMowaxiFlU6eryxDJb1J6xiHnUIBYxiypdXZ5YZovaMxYxjxrEImZRpavLE8tsUXvGIuZRg1jELKp0dXlimS1qz1jEPH3Pout7Hq0qfWNPzi74uvr4jz9/aK+pu+vsZMrtJZv0a/rTlbGrt0nucZfo13bs/j1+3Z9M3s2MW0gss2T6qF+9b52IeuK5MmpgZzyiDFHJQpdO08Xai8eqx7P2MeVg4hKu3YTm/MVSF376mvbiUfLq2n0I8cZFr/Nr8w81vckxneTH0fh7tWeXjnY/IupJZ4DXcnCneV5gx/RumCivTAt73ExexsL+fno6/MmWA4k3RFxfp2PFp1V3cKY3UHyKb7rh82ia5m68ydNx9qZnOXF87dznAA944OcFop54KpgYyF7MewBhu+jzT8eNuwu2Stpe7YLHnTjZq3N/6G3bZUFv1NczXa4YZxEMkfR+eLfHB4h6+p481dpzFsAdLfrUxa3Ps8c3Oa0vm+gQb8D0Rvhw2W/6pthbxVkol+gXZ0T8fph+kNLXRny1ISKJp7nJvSL7nvjWMn0AYTwQWk/SGd83GLKxxGKvw6YvSvwwH7Jngx8gPeQxpPEs2nhQIYZUCtF+8gdsfrL/9N8R75TYYDGJcPc8SvQ9T7CyPGKtY80HfOdfmr0/vc8Q3lDx8ixqzOY74JnBs0xvKsx/jOwmipdnUWM22tH4fTxRFC8vj/hx0XdncNPES7OoMZtqfI0v/NUcEwz8kbER4mVZ1JhNtP0Nly7p8bIWoz0T9Nwi3hTn/S1jyL30jTCd9pf+ozwWZ8Bdwg1w9xFe0jW2dp7d02M2x63R+NWNv/OH0N50SNeUswfeGNOnw93KTv+9uZbfHJtbvTkX9wpw+/EgFnWmzLp7EZ92vJT2r2g519TrYPw4bzuPnu7M+1r76ojT36quXJb+vVpZDQP+LJptfLdi+sq6M/3BuryzQHs9PfQPKZX1IP7PpeF/z5hv/aPXhhI3QhZ9E8TfRDBdZRNZ5E1QP/lfCNM/b2fdxDqov/i/QKZ/3GrfCM2VH4nTv3U08T/C1I2vVCqVSqVSqVQqlUqlUqlUKpVKpVKpVCqVSqWy2dy583/z2anbdD5tZgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"img/warning.f9cebb9b.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-service.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deploy-bootstrap.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/loading.f4404720.gif\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogView.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/hybrid-1.852eef88.png\";"],"sourceRoot":""}