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
976 KiB
1 lines
976 KiB
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?9b05","webpack:///./src/components/mynetwork/dockerservices.vue?4fbe","webpack:///./src/assets/img/dockernetwork.png","webpack:///./src/components/mynetwork/AdhocView.vue?a8e6","webpack:///./src/assets/img/docker.png","webpack:///./src/assets/img/penguin/penguinfledgling2.png","webpack:///./src/assets/img/video1.png","webpack:///./src/assets/img/code-128.png","webpack:///./src/assets/img/book.png","webpack:///./src/components/mynetwork/availablemicroservices.vue?a60b","webpack:///./src/components/manageservices/join-service.vue?c30c","webpack:///./src/components/mynetwork/availableservices.vue?f5a7","webpack:///./src/components/manageservices/llo-view.vue?1d94","webpack:///./src/assets/img/penguin21a.png","webpack:///./src/components/mynetwork/mytable.vue?e698","webpack:///./src/components/mynetwork/availablestorage.vue?505c","webpack:///./src/components/mynetwork/mybuilder.vue?2a41","webpack:///./src/components/manageservices/hybridlab.vue?d9b1","webpack:///./src/components/manageservices/manage-service.vue?39c7","webpack:///./src/App.vue?cbbb","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?8695","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/mynetwork.vue?9d75","webpack:///./src/components/mynetwork/mytable.vue?4777","webpack:///./src/config/index-gui.js","webpack:///./src/config/index-web.js","webpack:///./src/config/index-editor.js","webpack:///src/components/mynetwork/mytable.vue","webpack:///./src/components/mynetwork/mytable.vue?d75f","webpack:///./src/components/mynetwork/mytable.vue","webpack:///./src/components/mynetwork/AdhocView.vue?bb74","webpack:///src/components/mynetwork/AdhocView.vue","webpack:///./src/components/mynetwork/AdhocView.vue?4e74","webpack:///./src/components/mynetwork/AdhocView.vue","webpack:///./src/components/mynetwork/dockerservices.vue?9de7","webpack:///src/components/mynetwork/dockerservices.vue","webpack:///./src/components/mynetwork/dockerservices.vue?a364","webpack:///./src/components/mynetwork/dockerservices.vue","webpack:///./src/components/mynetwork/images.vue?bae7","webpack:///src/components/mynetwork/images.vue","webpack:///./src/components/mynetwork/images.vue?6942","webpack:///./src/components/mynetwork/images.vue","webpack:///./src/components/mynetwork/networks.vue?e2b9","webpack:///src/components/mynetwork/networks.vue","webpack:///./src/components/mynetwork/networks.vue?8b1d","webpack:///./src/components/mynetwork/networks.vue","webpack:///src/components/mynetwork.vue","webpack:///./src/components/mynetwork.vue?0608","webpack:///./src/components/mynetwork.vue","webpack:///./src/components/myservices.vue?0dd5","webpack:///./src/components/mynetwork/availableservices.vue?60e8","webpack:///src/components/mynetwork/availableservices.vue","webpack:///./src/components/mynetwork/availableservices.vue?4b33","webpack:///./src/components/mynetwork/availableservices.vue","webpack:///src/components/myservices.vue","webpack:///./src/components/myservices.vue?48ae","webpack:///./src/components/myservices.vue","webpack:///./src/components/manageservices.vue?7f31","webpack:///./src/components/manageservices/join-service.vue?5925","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/mystorage.vue?f204","webpack:///./src/components/mynetwork/availablestorage.vue?f726","webpack:///src/components/mynetwork/availablestorage.vue","webpack:///./src/components/mynetwork/availablestorage.vue?ce03","webpack:///./src/components/mynetwork/availablestorage.vue","webpack:///src/components/mystorage.vue","webpack:///./src/components/mystorage.vue?50c8","webpack:///./src/components/mystorage.vue","webpack:///./src/components/mymicroservices.vue?66f1","webpack:///./src/components/mynetwork/availablemicroservices.vue?dff1","webpack:///src/components/mynetwork/availablemicroservices.vue","webpack:///./src/components/mynetwork/availablemicroservices.vue?89d6","webpack:///./src/components/mynetwork/availablemicroservices.vue","webpack:///src/components/mymicroservices.vue","webpack:///./src/components/mymicroservices.vue?2b67","webpack:///./src/components/mymicroservices.vue","webpack:///./src/components/proofofconcept.vue?860e","webpack:///./src/components/mynetwork/availablepoc.vue?adf0","webpack:///src/components/mynetwork/availablepoc.vue","webpack:///./src/components/mynetwork/availablepoc.vue?cc98","webpack:///./src/components/mynetwork/availablepoc.vue","webpack:///src/components/proofofconcept.vue","webpack:///./src/components/proofofconcept.vue?1a03","webpack:///./src/components/proofofconcept.vue","webpack:///./src/components/mybuild.vue?ef57","webpack:///./src/components/mynetwork/mybuilder.vue?8a1f","webpack:///src/components/mynetwork/mybuilder.vue","webpack:///./src/components/mynetwork/mybuilder.vue?9018","webpack:///./src/components/mynetwork/mybuilder.vue","webpack:///./src/components/mynetwork/builderservices.vue?b76f","webpack:///src/components/mynetwork/builderservices.vue","webpack:///./src/components/mynetwork/builderservices.vue?c12c","webpack:///./src/components/mynetwork/builderservices.vue","webpack:///src/components/mybuild.vue","webpack:///./src/components/mybuild.vue?392c","webpack:///./src/components/mybuild.vue","webpack:///./src/components/managedeploy.vue?3946","webpack:///./src/components/manageservices/deploy-bootstrap.vue?ddc3","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?17b5","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/managedeploy.vue","webpack:///./src/components/managedeploy.vue?d326","webpack:///./src/components/managedeploy.vue","webpack:///./src/components/managello.vue?0578","webpack:///./src/components/manageservices/llo-search.vue?b7d3","webpack:///src/components/manageservices/llo-search.vue","webpack:///./src/components/manageservices/llo-search.vue?7e74","webpack:///./src/components/manageservices/llo-search.vue","webpack:///./src/components/manageservices/llo-view.vue?5596","webpack:///./src/components/asciiplayer.vue?a01f","webpack:///src/components/asciiplayer.vue","webpack:///./src/components/asciiplayer.vue?9de9","webpack:///./src/components/asciiplayer.vue","webpack:///src/components/manageservices/llo-view.vue","webpack:///./src/components/manageservices/llo-view.vue?105f","webpack:///./src/components/manageservices/llo-view.vue","webpack:///src/components/managello.vue","webpack:///./src/components/managello.vue?ff75","webpack:///./src/components/managello.vue","webpack:///./src/components/dashboard.vue?6b0c","webpack:///./src/components/manageservices/calendarview.vue?2437","webpack:///src/components/manageservices/calendarview.vue","webpack:///./src/components/manageservices/calendarview.vue?809f","webpack:///./src/components/manageservices/calendarview.vue","webpack:///./src/components/manageservices/view-events.vue?d255","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/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/components/manageservices/view-service.vue?448b","webpack:///./src/assets/img/penguinfledgling.png","webpack:///./src/components/mynetwork/builderservices.vue?38a9","webpack:///./src/assets/img/library.png","webpack:///./src/assets/img/warning.png","webpack:///./src/components/manageservices/deploy-bootstrap.vue?1455","webpack:///./src/assets/img/academy.png","webpack:///./src/components/manageservices/calendarview.vue?aa18","webpack:///./src/components/manageservices/llo-search.vue?f8b4","webpack:///./src/components/mynetwork/myconnect-server.vue?c996","webpack:///./src/assets/loading.gif","webpack:///./src/components/mynetwork/images.vue?f749","webpack:///./src/components/manageservices/view-events.vue?5719","webpack:///./src/components/mynetwork/availablepoc.vue?7f5f","webpack:///./src/components/mynetwork/networks.vue?fd0f","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","$event","onAction","issocket","sidemenou","directives","rawName","modifiers","class","active","isActive","setActive","hybrid","isActiveSub","onActionMenu","_e","hybridmenou","expression","componentKeyreload","componentKeyreload1","componentKeyreload2","componentKeyreload3","componentKeyreload4","componentKeybuilders","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","network","networks","defaultnetwork","bootstrapnameid","bootstrapstackname","code","storagename","dir","file","swarmlabname","node","bootstrapstackid","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","privatekey","publickey","serverstatus","slot","$socket","webinterfacegeneric","hybridshowdata","Names","webinterfacegenericedit","ID","Image","RunningFor","Status","CreatedAt","Networks","addNetworkMenou","addNetwork","Ports","localNetworkoptions","model","callback","$$v","selectedNetworks","updateNetwork","ApiConfigGUI","ApiConfigWEB","ApiConfigEDIT","obGUIEDIT","obGUI","swarmlabname_size","size","swarmlabname_port","port","swarmlabname_git","git","client","emit","icon","cancelButtonText","openuerlju","obWEB","val","errorrun","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","index","cm","chg","a","b","newCode","selected","myCm","codemirror","$wait","start","setRefresh","vuetablekeyb","actionrowindex","$root","$emit","rmall_i","vuetablekeybimages","image2rm","vuetablekeybnetworks1","componentKeyreloadservice","hybridoptions","setHybridoptions","vuetablekeya","testactionrowindex","checkactionrowindex","refreshVuetable","swarmlab1info","componentKeyreloadstorage","checkHybridoptions","vuetablekeystorage","password","componentKeyreloadservice5","up_name","vuetablekeyg","_id","vuetablekeygslot","currentpagepaginationData","currentpage","componentKeyreloadpoc","vuetablekeypoc","buildpid","pid","vuetablekeyl","checkbuildrowindex","v","homefile","rmbox","invalid","isDeployValid","image","isValid","showInfo","stackname","cpu","memory","networkport","timePickerOptions","add_deploy","Array","isArray","usersjoin","_i","$$a","$$el","$$c","checked","$$i","concat","DatePicker","ValidationProvider","card","isAllValid","hybridshowlog","onActionLog","onActionHybrid","Replicas","bootstrapimage","bootstrapname","bootstrapdateend","bootstrapnetwork","bootstrapdatebegin","ports","vuetablekeyd","datatitle","_l","exercise_file","activeItem","subtitle","desc","viewllo","style","progress","$$selectedVal","filter","map","_value","searchcourselang","multiple","searchcourselevel","vuetablekeyf","courses","courseshow","getprogress","llo","coursesnew1","level","lang","license","hybridshow","asciinemasource","sourcevimeo","dofin","asciidocurl","completiontracking","oncompletiontracking","courseread","height","source","timeFormatOptions","begindate","bd_y","bd_m","bd_d","enddate","ed_y","ed_m","ed_d","getevents","labtext","originalItem","Level","Prerequisites","startDate","endDate","urltype","NetworkTable","ViewDashboard","ServicesTable","ConnectServer","ManageServices","ManageStorage","ManageMicroservices","ManageProofofconcept","ManageBuilders","ManageDeploy","ManageLlo","show","SwarmabAsciiLabTemplate","menuItem","activeItemSub","menuItemSub","store","VueSweetalert2","VueWait","socketurl","socket","io","autoConnect","reconnection","reconnectionDelay","reconnectionDelayMax","maxReconnectionAttempts","Infinity","pingInterval","pingTimeout","timeout","transports","secure","rejectUnauthorized","VueSocketIOExt","productionTip","el","wait","h","App"],"mappings":"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","file":"js/app.183d7804.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&\"","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!./dockerservices.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/dockernetwork.f3bb6fa3.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!./AdhocView.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\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATWSURBVHhe7Z0tsNw2FIUfKwwMDCwMLAwsDAwsLAzJTGFYYWBhYGBgYGFRJrAwExTYKSpt79mMMhv1eG1p5bv28/fNHOK1Ze31saQr/90BAAAAAAAAAAAAAAAAAAAAAAAAAAAAwH3nu9DT0MvQu9DvaFJvQ4qT4rV7dOB/Df0T+hc166+Q4qc47o4fQn+G3B9DbVIcFc9dUM5690dQv9SK/hLaPL+F3B9AY6TxwWZ5EnKVLtIgR3/gWUjrom/1U0jxUZxc/CS1BJvsDh6EPoZcpXfVh22EH0OfQ1Px3NzA8HXIVVbLdzmK3QA6qZQ2u7hqnLUZHoZcJTfp1J2h2LqWQF3BFmIrk576rrqCEs3+GDRmcvHV8lsh8ykr0VzFafaqrtybEIzjj1AdY2Vct+Dn0HmrZEetahVgHDrb6hhrfJCJpqfd5J4d/SutgXEo+HWMdeJloGPpWqAia4DvQzAOHYQ6xmsbQMfQde+1rAEehWAcmQZQ5jGV1jthgAQyDKCUrufqLQZIYE0DnKd09T6WCAMksJYBlK1NTTmfS63C1FVeDJDAaANMpXROGg9oXCDc7xgggVEGUDnari7LSRlAnc259TBAAtcaYGlKJ6lc7c/h1scACfQaQE330pt01CXM3YzqtsMACbQaoCWl0yBw6dS92x4DJLDUAErpnoeWpHRaR+lfy2VlVw4GSGCJAVpTutO1/EZceRgggUsGUL/9IVT/7nSe0vXgysQACTgDvA/JBPVyJ5fS9eDKxgAJOAMskQyibUfh9oEBEmg1wJKUrge3LwyQwItQHWOnlpSuB7dPDJDA1IWYop6Urge3bwyQwJQBrknpenB1wAAJOAPo4F+T0vVQ10HCAAk4A5zuyU+mroOEARLAAAcHAxwcDHBwMMDBwQAHBwMcHAxwcDDAwcEABwcDHBwMcHAwwMHBAAcHAxwcDHBwnAH+DmVT10HCAAk4A0i67TvzhZyuDhgggSkDFI168GMOt28MkMCcAYr0KPia9wm6fWKABFoeDFnzTmG3PwyQQM+jYcoS9Kj4yGcF3H4wQALOAJ9Co18AMYcrHwMk4AygDKDlFTB6hPza5wVduRgggSkDFFpfAtWbOrryMEACcwYoaD0tr9d16kkdXTkYIIGlBii0vAiyJXV022OABFoNUBj93iC3LQZIoNcAouVl0HOpo9sGAyRwjQEKI94d6NbFAAmMMEBB/f3SD0LUqaNbBwMkMNIAhZ7U0f2GARJYwwAFlX3po1BzwgAJrGmAQkvqeC4MkECGAQr1hyHnhAESyDSAaEkdrQH4bvBY9Dn5OsZrGqCg1PFV6FLqaAcQa7yl8sioWa5jnGGAwqXU8VSReqEmHGAc+hh3HWMdkGweh+rU8e5ltUDSICLr5YX3HY2nXBOsPvpWnKeOJ1fUlZNu4dD7iGthpS0MtL929VMfLHgWgn50YcbFNbP/X4RG/VMjRbUEdAdtKF5Tgy7FOeMZgGbcWKBIYwKNZNe8Z/0+oGZdZ/2liZhb9v0X0eTB0m/XoD5trumvUdPUM5+M5qW47mKGVS3BVP+F+qR5lam7dDaLpi9bLiqg/0tn/a6n1TWa1a1FmslacisS+hInxUsp9O7OegAAAAAAAAAAAAAAAAAAAAAAAAAAAADYEXd3/wFf5K8vCdtHPAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAURSURBVHhe7ZgtsBRHFEafQyKRSCQSiYxEIpFIJDIOiYyMRCKRkUgkMhKJxCb3UNVVt296l519O5vp2fNVnaoVs9N/p//mzhhjjDHGGGMW51nwPPEm+P0AL4L8LJiNhwFm4BjAP4O/gq/BPyvwI+D9lEN5CPI4mDkPA9rxOsiT4VNAWzNfglG/ZP4O8n8+Bu2dTL42sSh3UR4E/PFt8CFYa5DP5XNAvWgoQi5u4Mp5GvwWUL82URB61JZr0oR5H1C3/8jBgPPA6M9bByloFKvUtUOZ74JTZu0WQQxWj58/Rg/MxveAFeJV8Ci4dHgn76YMyhrVYUZ2I0CFmcnqdp+tgmV95ll+CrsVoME+zJ78JDg17OUc0kbv2xu7FyDDWedlMAqHYJb4rR1+12axABy86EiWRg5g7WRZoUNz6veCdmLO8N5rCEkZbXsAyv4WjJ5dg3bdrbST+jHq9fG+N42jHc7e1+6W1752USYzkkbT0DXEoPPWuKq1AWawqD+y0Z41byvtGg/tYxxb36/67egDvGBLoZF8A/gjWEOIc6Eu3A742LPkrHGNIMKozo2pBKjhKyGdzn12jZl8CM4J9A0r1Na/VO5agBrOFawOa9zTGXSW1jW+MayZmxKghfMKK8N9T/SIhFBbW9aX5CYFyGFVYH8ete8Q3AjouGsffNfIzQvQwl7N1fXY9sA5gmW+XmFnjgKUcD0btRXoi71FAUoUoEcBEgpQUID5owAlCtCjAAkFKCjA/FGAEgXoUYCEAhQUYP4oQIkC9ChAQgEKCjB/FKBEAXoUIKEABQWYPwpQogA9CpBQgIICzB8FKFGAHgVIKEBBAeaPApQoQI8CJBSgoADzRwFKFKBHARIKUFCA+aMAJQrQowAJBSgowPxRgBIF6FGAhAIUFGD+KECJAvQoQEIBCgowfxSgRAF6FCChAAUFmD8KUKIAPQqQUICCAswfBShRgB4FSChAQQHmjwKUKECPAiQUoKAA80cBShSgRwESClBQgPmjACUK0KMACQUoKMD8UYASBehRgIQCFBRg/ihAiQL0KEBCAQoKMH8UoEQBehQgoQAFBZg/ClCiAD0KkFCAggLMHwUoUYAeBUgoQEEB5o8ClChAjwIkFKCgAPNHAUoUoEcBEgpQUID5owAlCtCjAAkFKCjA/FGAEgXoUYCEAhSOCfAgeJ54GVDYKeT/NR4F14gC9BwV4FPA4LwJ3gV03udg9Oyl4P0fAyqOVJSPbJfKtQV4GNCGNkGYVNSh8j0Y1WkEfZT/+yFok6v12eOA3EuALUEH0VgaRAPPDe8YvR/uI8DTIE+UL8GojK0xjQCVHwEr1NuAzj81lxKgDTir1ZLZuzWmFaDCIDAYr4JjW8a5AnBG2cOAV3YjQIbVgb12tFUsEQCR2FNZaUbP74FdCpChfZwb2qHoFAGeBQi0p5l+iN0LkGHwj7WXleOW+gMWN5hOhHbteBGw1MIphzFmV3u+8TrgXeyvvJuBGJW9F74GtLNdd5dSr5KjMk7loAC8+H3AoYpBuuRd/NQgC4JxtVr7+8MlQWD6j3q3/qMta4eDaptUTRbqcazvfgpw7pXq/wiNo57Udwt7NHWgLnQ2srazxhaDhO2DFGJ8CzY/4L8K9WeluubezRJOmchoNpQ1ZWAZ5TvAk8BMELaJ0UCeA0ummSwcvkaDeQ4KMGEU4MajADceBbjxKMCNhyshA3cJvO8bY4wxxpi95O7uX6RC0MISi/00AAAAAElFTkSuQmCC\"","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!./availablemicroservices.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!./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!./availableservices.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!./llo-view.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/penguin21a.a2b45b3f.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mytable.vue?vue&type=style&index=0&lang=scss&\"","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!./availablestorage.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mybuilder.vue?vue&type=style&index=0&lang=scss&\"","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-hybrid! \")]),_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(\" and built on-demand network environments \"),_c('i',[_vm._v(\"visit the \\\"https://git.swarmlab.io:3000/swarmlab/venus-client\\\" and install \\\"Venus\\\".\")]),_c('br'),_c('br'),_c('b',[_vm._v(\"DISCLAMER:\")]),_c('br'),_vm._v(\" When connecting to the server \"),_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. \"),_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\":\"http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs\",\"target\":\"_swarmlabgit\"}},[_vm._v(\" Docs \")]),_vm._m(0),_vm._m(1),_vm._m(2),_c('b-nav-item',{attrs:{\"href\":\"https://vimeo.com/showcase/9022099\",\"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',{on:{\"click\":function($event){return _vm.onAction('check')}}},[_vm._v(\"Check Connection Status:\")]),_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-container\",modifiers:{\"hybrid-container\":true}}],staticClass:\"ti-package list-group-item list-group-item-action\",class:{ active: _vm.isActive('container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\"},on:{\"click\":[function($event){return _vm.setActive('container','')},function($event){return _vm.hybrid('bootstrap')}]}},[_vm._v(\" Instances\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-container\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\"},on:{\"click\":[function($event){return _vm.setActive('container','hybrid_container')},function($event){return _vm.hybrid('bootstrap')}]}},[_vm._v(\" Container\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-hybrid\",modifiers:{\"hybrid-hybrid\":true}}],staticClass:\"ti-share 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(\" Share\")]),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-private\",modifiers:{\"hybrid-private\":true}}],staticClass:\"ti-home list-group-item list-group-item-action\",class:{ active: _vm.isActive('private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Private\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_microservice')},function($event){return _vm.hybrid('microservice')}]}},[_vm._v(\" Private/Local\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-private\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_private')},function($event){return _vm.hybrid('services')}]}},[_vm._v(\" LabRoom\")]),_c('b-list-group-item',{staticClass:\"ti-server m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_storage') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Storage\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_storage')},function($event){return _vm.hybrid('storage')}]}},[_vm._v(\" Storage\")]),_c('b-list-group-item',{staticClass:\"ti-cloud m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_microservice') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Microservice\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_microservice')},function($event){return _vm.hybrid('microservice')}]}},[_vm._v(\" MicroServices\")]),_c('b-list-group-item',{staticClass:\" ti-light-bulb m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_proofofconcept') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Proof_of_concept\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_proofofconcept')},function($event){return _vm.hybrid('proofofconcept')}]}},[_vm._v(\" Proof_of_concept\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-builders\",modifiers:{\"hybrid-builders\":true}}],staticClass:\"ti-settings list-group-item list-group-item-action\",class:{ active: _vm.isActive('builders') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Private\"},on:{\"click\":[function($event){return _vm.setActive('builders','')},function($event){return _vm.hybrid('builders')}]}},[_vm._v(\" Builders\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-builders\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\" ti-folder m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_builders') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"build_vmware\"},on:{\"click\":[function($event){return _vm.setActive('builders','hybrid_builders')},function($event){return _vm.hybrid('builders')}]}},[_vm._v(\" VM\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-llo\",modifiers:{\"hybrid-llo\":true}}],staticClass:\"ti-book list-group-item list-group-item-action\",class:{ active: _vm.isActive('llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Llo\"},on:{\"click\":[function($event){return _vm.setActive('llo','')},function($event){return _vm.hybrid('llo')}]}},[_vm._v(\" LearningObjects\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-llo\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\"},on:{\"click\":[function($event){return _vm.setActive('llo','hybrid_llo')},function($event){return _vm.hybrid('llo')}]}},[_vm._v(\" Courses\")])],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-container1\",modifiers:{\"hybrid-container1\":true}}],staticClass:\"ti-package list-group-item list-group-item-action\",class:{ active: _vm.isActive('container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\",\"title\":\"Instances\"},on:{\"click\":[function($event){return _vm.setActive('container','')},function($event){return _vm.hybrid('bootstrap')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-container1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\",\"title\":\"Show all containers\"},on:{\"click\":[function($event){return _vm.setActive('container','hybrid_container')},function($event){return _vm.hybrid('bootstrap')}]}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-hybrid1\",modifiers:{\"hybrid-hybrid1\":true}}],staticClass:\"ti-share list-group-item list-group-item-action\",class:{ active: _vm.isActive('hybrid') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\",\"title\":\"Share\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','')},function($event){return _vm.hybrid('manage_service')}]}}),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-private1\",modifiers:{\"hybrid-private1\":true}}],staticClass:\"ti-home list-group-item list-group-item-action\",class:{ active: _vm.isActive('private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Private\",\"title\":\"Private\"},on:{\"click\":[function($event){return _vm.setActive('private','')},function($event){return _vm.hybrid('services')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-private1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\",\"title\":\"LabRoom\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_private')},function($event){return _vm.hybrid('services')}]}}),_c('b-list-group-item',{staticClass:\"ti-server m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_storage') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Storage\",\"title\":\"Storage\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_storage')},function($event){return _vm.hybrid('storage')}]}}),_c('b-list-group-item',{staticClass:\"ti-cloud m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_microservice') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Microservice\",\"title\":\"Microservices\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_microservice')},function($event){return _vm.hybrid('microservice')}]}}),_c('b-list-group-item',{staticClass:\"ti-light-bulb m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_proofofconcept') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Proof_of_concept\",\"title\":\"Proof_of_concept\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_proofofconcept')},function($event){return _vm.hybrid('proofofconcept')}]}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-builders\",modifiers:{\"hybrid-builders\":true}}],staticClass:\"ti-settings list-group-item list-group-item-action\",class:{ active: _vm.isActive('builders') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Private\",\"title\":\"Builders\"},on:{\"click\":[function($event){return _vm.setActive('builders','')},function($event){return _vm.hybrid('builders')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-builders1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\" ti-folder m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_builders') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"build_vmware\",\"title\":\"Build VM\"},on:{\"click\":[function($event){return _vm.setActive('builders','hybrid_builders')},function($event){return _vm.hybrid('builders')}]}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-llo1\",modifiers:{\"hybrid-llo1\":true}}],staticClass:\"ti-book list-group-item list-group-item-action\",class:{ active: _vm.isActive('llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Llo\",\"title\":\"LearningObjects\"},on:{\"click\":[function($event){return _vm.setActive('llo','')},function($event){return _vm.hybrid('llo')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-llo1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\",\"title\":\"Courses\"},on:{\"click\":[function($event){return _vm.setActive('llo','hybrid_llo')},function($event){return _vm.hybrid('llo')}]}})],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(),_c('connect-server',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'connect-server'),expression:\"hybridmenou == 'connect-server'\"}],staticStyle:{\"background-color\":\"#f8f9fa\"}}),(_vm.hybridmenou == 'manage_service')?_c('manage-services',{key:_vm.componentKeyreload,staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'llo')?_c('manage-llo',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),_c('network-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'bootstrap'),expression:\"hybridmenou == 'bootstrap'\"}],key:_vm.componentKeyreload1,staticStyle:{\"background-color\":\"#f8f9fa\"}}),_c('services-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'services'),expression:\"hybridmenou == 'services'\"}],staticStyle:{\"background-color\":\"#f8f9fa\"}}),_c('manage-storage',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'storage'),expression:\"hybridmenou == 'storage'\"}],key:_vm.componentKeyreload2,staticStyle:{\"background-color\":\"#f8f9fa\"}}),_c('manage-microservices',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'microservice'),expression:\"hybridmenou == 'microservice'\"}],key:_vm.componentKeyreload3,staticStyle:{\"background-color\":\"#f8f9fa\"}}),_c('manage-proofofconcept',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'proofofconcept'),expression:\"hybridmenou == 'proofofconcept'\"}],key:_vm.componentKeyreload4,staticStyle:{\"background-color\":\"#f8f9fa\"}}),_c('manage-builders',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'builders'),expression:\"hybridmenou == 'builders'\"}],key:_vm.componentKeybuilders,staticStyle:{\"background-color\":\"#f8f9fa\"}}),(_vm.hybridmenou == 'manage_deploy')?_c('manage-deploy',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e()],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(\"Hybrid\")])])},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:3080', \t\t\t// webclient \t\t\n\t\t'url_443'\t\t\t\t\t\t\t: 'https://localhost:3080' \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 getjupyterinfo({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+'/getjupyterinfo'\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 rungui({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+'/rungui'\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 runeditor({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+'/runeditor'\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 chown({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+'/chown'\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 checkowner({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+'/checkowner'\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 runbackup({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+'/runbackup'\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_rmimage({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+'/hybrid_rmimage'\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_rmnetworks({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+'/hybrid_rmnetworks'\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_inspectnetworks({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+'/hybrid_inspectnetworks'\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_inspectimages({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+'/hybrid_inspectimages'\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_inspectcontainer({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+'/hybrid_inspectcontainer'\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_rmall({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(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/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/hybrid_rmall'\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 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 getshareinfo({commit,rootGetters}, 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+'/getshareinfo'\n var p = await axios.get(sock_server_l,options);\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 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 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 getpocstatus({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+'/getpocstatus'\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 rmswarmlablocalpoc({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_swarmlabpoc'\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 getswarmlabpocinfo({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/getswarmlabhybridpocinfo',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 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/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 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 stackrm({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/swarmlabhybridrmstack',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 hybrid_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/swarmlabhybridrestartservice',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 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 = value.token\n var params = {\n deploy: value.deploy,\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/adddeployhybrid',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('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 </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 == '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=6cf79742&\"\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-7 order-first \"},[_c('br'),_c('view-network'),_c('docker-services'),_c('br'),_c('br'),_c('hr'),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"View and Manage your local system\")])])]),_c('hr'),_c('br'),_c('docker-images'),_c('br'),_c('br'),_c('br'),_c('hr'),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"View and Manage your local networks\")])])]),_c('hr'),_c('docker-networks')],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-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('v-wait',{attrs:{\"for\":\"myRunInstanceeditor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Editor... \")])])],2),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"View and Manage your running Containers\")])])]),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-5\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.$socket.disconnected)?_c('button',{staticClass:\"ti-unlink btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"You are disconnected from Swarmlab-hybrid\",\"disabled\":\"\"}}):_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"You are connected swarmlab-hybrid\"},on:{\"click\":function($event){return _vm.onAction('shareinfo')}}})]),_c('div',{staticClass:\"input-group-prepend\"},[(_vm.webinterface)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('startweb')}}},[_vm._v(\" Web\")]):_vm._e(),(_vm.webinterfacegeneric && _vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('startwebgeneric')}}},[_vm._v(\" openGui\")]):_vm._e()]),_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-connect')}}},[_vm._v(\" Connect\")]):_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\" Connect\")]),(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-stop')}}},[_vm._v(\" Stop\")]):_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\" stop\")])]),_c('div',{staticClass:\"input-group-append\"},[(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-logs')}}},[_vm._v(\" Logs\")]):_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\" Logs\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col-1\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend float-center\"},[(_vm.webinterfacegenericedit && _vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('basedireditor')}}},[_vm._v(\" Editor\")]):_vm._e()])])]),_vm._v(\" \"),_c('div',{staticClass:\"col-1\"}),_vm._v(\" \"),_c('div',{staticClass:\"col-5\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend float-right\"},[(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('basedir')}}},[_vm._v(\" Persistent Data\")]):_vm._e()]),_c('div',{staticClass:\"input-group-prepend float-right\"},[(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('basebackup')}}},[_vm._v(\" Backup\")]):_vm._e()]),_c('div',{staticClass:\"input-group-prepend float-right\"},[(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('basebackupview')}}},[_vm._v(\" BrowseBackups\")]):_vm._e()])])])])]),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" ID \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.ID)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Image \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Image)+\" \")])]),_vm._v(\" \"),_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.Names)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" RunningFor \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.RunningFor)+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Status \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Status)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" CreatedAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.CreatedAt)+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[(_vm.hybridshowdata.Networks&&_vm.addNetworkMenou==false)?_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.addNetwork(_vm.hybridshowdata,'on')}}},[_vm._v(\" Networks\")]):_vm._e(),(_vm.hybridshowdata.Networks&&_vm.addNetworkMenou==true)?_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.addNetwork(_vm.hybridshowdata,'off')}}},[_vm._v(\" Networks\")]):_vm._e()]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Networks)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Ports \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Ports)+\" \")])])]),(_vm.addNetworkMenou==true)?_c('div',{staticClass:\"card border-success bg-light mb-3\",staticStyle:{\"max-width\":\"100%\"}},[_c('div',{staticClass:\"card-header\"}),_c('div',{staticClass:\"card-body text-info\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 text-info\"},[_c('h5',{staticClass:\"card-title\"},[_vm._v(\"Select network\")])]),_c('div',{staticClass:\"col-6 text-info\"},[_vm._v(\" Connect a running container to multiple networks \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 text-info\"},[_c('b-form-select',{attrs:{\"options\":_vm.localNetworkoptions,\"multiple\":\"\",\"select-size\":4},model:{value:(_vm.selectedNetworks),callback:function ($$v) {_vm.selectedNetworks=$$v},expression:\"selectedNetworks\"}}),_c('div',{staticClass:\"mt-3\"},[_vm._v(\"Selected: \"),_c('strong',[_vm._v(_vm._s(_vm.selectedNetworks))])])],1),_c('div',{staticClass:\"col-6 text-info\"},[_c('img',{staticClass:\"border-white img-thumbnail\",attrs:{\"src\":require(\"@/assets/img/dockernetwork.png\"),\"alt\":\"...\"}})])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 text-info\"},[_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.updateNetwork(_vm.hybridshowdata,'update')}}},[_vm._v(\" Update\")])])])])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nexport const ApiConfigGUI = [\n {\n \"name\": \"microservice-firefox\",\n \"automated\": true,\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-xelatexthesis\",\n \"automated\": true,\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-wireshark\",\n \"automated\": true,\n \"version\": 0,\n \"port\": 0\n }\n];\n","\n\nexport const ApiConfigWEB = [\n {\n \"name\": \"microservice-etherpad\",\n \"app\": true,\n \"url\": 'http',\n \"port\": '9001/tcp',\n \"ttyd\": false,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"jitsiweb\",\n \"app\": true,\n \"url\": 'https',\n \"port\": \"443/tcp\",\n \"ttyd\": false,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-novncfull\",\n \"app\": true,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": false,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-novnclite\",\n \"app\": true,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": false,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-mongoexpress\",\n \"app\": true,\n \"url\": 'http',\n \"port\": \"8081/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-gns3\",\n \"app\": true,\n \"url\": 'http',\n \"port\": \"8001/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-ubuntu\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"8001/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-ubuntugui\",\n \"app\": true,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": false,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-numpylite\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-nodejs\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-nginx\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-ipterm\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-firefox\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-haproxy\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-snmpsim\",\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n }\n];\n","\n\nexport const ApiConfigEDIT = [\n {\n \"name\": \"microservice-xelatexthesis\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-ansible\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-nodejs\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-numpylite\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n }\n];\n","<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 <v-wait for=\"myRunInstanceeditor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Editor...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>View and Manage your running Containers</b>\n </div>\n </div>\n\n<br>\n <div class=\"row\">\n <div class=\"col-5\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button\n v-if=\"$socket.disconnected\"\n class=\"ti-unlink btn btn-outline-danger\"\n round\n type=\"button\"\n title=\"You are disconnected from Swarmlab-hybrid\"\n disabled\n >\n </button>\n <button\n v-else\n class=\"ti-link btn btn-outline-success\"\n round\n type=\"button\"\n title=\"You are connected swarmlab-hybrid\"\n @click=\"onAction('shareinfo')\"\n >\n </button>\n </div>\n <div class=\"input-group-prepend\">\n <button\n v-if=\"webinterface\"\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('startweb')\"\n >\n Web</button>\n <button\n v-if=\"webinterfacegeneric && hybridshowdata.Names\"\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"onAction('startwebgeneric')\"\n >\n openGui</button>\n </div>\n <div class=\"input-group-prepend\">\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('container-connect')\"\n >\n Connect</button>\n <button\n v-else\n class=\"btn btn-outline-secondary\"\n round\n type=\"button\"\n \t\t\t\t\t\t\t\t\t\t\t\tdisabled\n >\n Connect</button>\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onAction('container-stop')\"\n >\n Stop</button>\n <button\n v-else\n class=\"btn btn-outline-secondary\"\n round\n type=\"button\"\n \t\t\t\t\t\t\t\t\t\t\t\tdisabled\n >\n stop</button>\n </div>\n\n <div class=\"input-group-append\">\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onAction('container-logs')\"\n >\n Logs</button>\n <button\n v-else\n class=\"btn btn-outline-secondary\"\n round\n type=\"button\"\n \t\t\t\t\t\t\t\t\t\t\t\tdisabled\n >\n Logs</button>\n </div>\n </div>\n\n </div> <!-- col -->\n <div class=\"col-1\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend float-center\">\n <button\n v-if=\"webinterfacegenericedit && hybridshowdata.Names\"\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('basedireditor')\"\n >\n Editor</button>\n </div>\n </div>\n </div> <!-- col -->\n <div class=\"col-1\">\n </div> <!-- col -->\n <div class=\"col-5\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend float-right\">\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"onAction('basedir')\"\n >\n Persistent Data</button>\n </div>\n <div class=\"input-group-prepend float-right\">\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onAction('basebackup')\"\n >\n Backup</button>\n </div>\n <div class=\"input-group-prepend float-right\">\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('basebackupview')\"\n >\n BrowseBackups</button>\n </div>\n </div>\n </div> <!-- col -->\n\n </div> <!-- row -->\n\n\n\n </b-container>\n <b-container fluid>\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n ID\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.ID }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.Image }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Names }}\n </div>\n <div class=\"col-2 text-info\" >\n RunningFor\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.RunningFor }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Status }}\n </div>\n\n <div class=\"col-2 text-info\" >\n CreatedAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.CreatedAt }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n\n <div class=\"col-2 text-info\" >\n <button\n v-if=\"hybridshowdata.Networks&&addNetworkMenou==false\"\n class=\"btn btn-outline-info btn-sm\"\n round\n type=\"button\"\n @click=\"addNetwork(hybridshowdata,'on')\"\n >\n Networks</button>\n <button\n v-if=\"hybridshowdata.Networks&&addNetworkMenou==true\"\n class=\"btn btn-outline-warning btn-sm\"\n round\n type=\"button\"\n @click=\"addNetwork(hybridshowdata,'off')\"\n >\n Networks</button>\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Networks }}\n </div>\n\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.Ports }}\n </div>\n </div> <!-- row -->\n<!--\n'{\"ID\":\"{{ .ID }}\", \"Image\": \"{{ .Image }}\", \"Names\":\"{{ .Names }}\", \"Ports\":\"{{.Ports}}\", \n\"Networks\":\"{{.Networks}}\", \"Status\":\"{{.Status}}\",\"RunningFor\":\"{{.RunningFor}}\",\"CreatedAt\":\"{{.CreatedAt}}\"}'\n-->\n </b-container>\n\n <!-- Networks -->\n\n<div class=\"card border-success bg-light mb-3\" style=\"max-width: 100%;\"\n\tv-if=\"addNetworkMenou==true\"\n>\n <div class=\"card-header\"></div>\n <div class=\"card-body text-info\">\n <div class=\"row\">\n <div class=\"col-6 text-info\">\n \t\t\t\t<h5 class=\"card-title\">Select network</h5>\n </div>\n <div class=\"col-6 text-info\">\n\t\t\t\t\t\tConnect a running container to multiple networks\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-6 text-info\">\n\t\t\t\t\t\t<b-form-select v-model=\"selectedNetworks\" :options=\"localNetworkoptions\" multiple :select-size=\"4\"></b-form-select>\n\t\t\t\t\t\t<div class=\"mt-3\">Selected: <strong>{{ selectedNetworks }}</strong></div>\n </div>\n <div class=\"col-6 text-info\">\n \t\t\t<img class=\"border-white img-thumbnail\" src=\"@/assets/img/dockernetwork.png\" alt=\"...\">\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-6 text-info\">\n <button\n class=\"btn btn-outline-warning btn-sm\"\n round\n type=\"button\"\n @click=\"updateNetwork(hybridshowdata,'update')\"\n >\n Update</button>\n </div>\n </div>\n\n\n </div>\n</div>\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 card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nimport {ApiConfigGUI} from \"@/config/index-gui\";\nimport {ApiConfigWEB} from \"@/config/index-web\";\nimport {ApiConfigEDIT} from \"@/config/index-editor\";\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});\n\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n addNetworkMenou:false,\n localNetworks:[],\n selectedNetworks:[],\n localNetworkoptions:[],\n localNetworkdefault:'',\n\t\t webinterface: false,\n\t\t webinterfacegeneric: false,\n\t\t webinterfacegenericedit: false,\n\t\t webinterface_port: '',\n STATUS:{},\n editor_instance:{\n 'start':'',\n 'port':''\n },\n CONFIG:{\n 'status':'',\n 'workerkey':'',\n 'swarmlab_public_wgkey':'',\n 'server_ip':'',\n 'allowed_ips':'',\n 'wg_port':'',\n 'wg_ip':'',\n 'swarm_ip':'',\n 'privatekey':'',\n 'publickey':'',\n 'workerkey':'',\n 'privatekey':'',\n 'publickey':'',\n 'server_ip':''\n },\n CONFIGallowed_ips:'',\n swarmlabname:'swarmlab-sec',\n swarmlabname_port:'',\n swarmlabname_size:3,\n swarmlabname_git:'',\n // run on \n hybridshowdata:{},\n hybridshowdatashare:{},\n issocket:'close',\n setFilter: {},\n searchFor: {},\n resetFilter: {}\n\t \n\t\t}\n },\n beforeMount () {\n this.socketopen();\n this.socketauthenticate()\n //console.log('send')\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_show_info', (data) => {\n\t\t\tthis.webinterface = false\n\t\t\tthis.webinterfacegeneric = false\n\t\t\tthis.webinterfacegenericedit = false\n\t\t\tthis.$nextTick(function () {\n this.hybridshowdata = data\n\n var filterju = `microservice-jupyter`\n var grepju = new RegExp(filterju);\n\n\t\t\t\t\t\tif(grepju.test(data.Networks) && grepju.test(data.Names)){\n\t\t\t\t\t\t\tthis.webinterface = true\n\t\t\t\t\t\t\tthis.webinterface_port = data.Ports\n //console.log(JSON.stringify(this.webinterface_port))\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.webinterface = false\n\t\t\t\t\t\t\tthis.webinterface_port = ''\n\t\t\t\t\t\t}\n var urlgeniGUIEDITOR = this.hybridshowdata.Names.split('_');\n // EDITOR \n for(var i = 0; i < ApiConfigEDIT.length; i++) {\n var obGUIEDIT = ApiConfigEDIT[i];\n\t\t\t\t\t\tif(obGUIEDIT.name == urlgeniGUIEDITOR[0]){\n\t\t\t\t\t\t\tthis.webinterfacegenericedit = true\n\t\t\t\t\t\t}\n }\n var urlgeniGUI = this.hybridshowdata.Names.split('_');\n // GUI firefox \n for(var i = 0; i < ApiConfigGUI.length; i++) {\n var obGUI = ApiConfigGUI[i];\n\t\t\t\t\t\tif(obGUI.name == urlgeniGUI[0]){\n\t\t\t\t\t\t\tthis.webinterfacegeneric = true\n //console.log(obGUI.name);\n\t\t\t\t\t\t}\n }\n/*\n var filterjugeneric = `microservice-firefox`\n var grepju1 = new RegExp(filterjugeneric);\n\n\t\t\t\t\t\tif(grepju1.test(data.Networks) && grepju1.test(data.Names)){\n\t\t\t\t\t\t\tthis.webinterfacegeneric = true\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.webinterfacegeneric = false\n\t\t\t\t\t\t}\n*/\n this.addNetworkMenou = false\n this.localNetworks = []\n this.selectedNetworks = []\n this.localNetworkoptions = []\n this.localNetworkdefault = ''\n //console.log(JSON.stringify(this.hybridshowdata))\n\t\t\t})\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_start_instance', (data) => {\n this.swarmlabname = data.swarmlabname\n if(data.size){\n this.swarmlabname_size = data.size\n }\n if(data.port){\n this.swarmlabname_port = data.port\n }\n //console.log('RUN exec '+JSON.stringify(this.swarmlabname))\n\t\t\t\tthis.onAction('start')\n\t\t})\n\t\tthis.$root.$on('hybrid_start_instance_storage', (data) => {\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = data.swarmlabname\n obj.password = data.password\n this.$socket.client.open();\n this.$socket.client.emit('start_storage', obj);\n\t\t})\n\t\tthis.$root.$on('hybrid_start_instance_poc', (data) => {\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = data.swarmlabname\n obj.password = data.password\n this.$socket.client.open();\n this.$socket.client.emit('start_poc', obj);\n\t\t})\n // build\n\t\tthis.$root.$on('SERVER_build_image', (obj) => {\n this.$socket.client.open();\n this.$socket.client.emit('build_image', obj);\n\t\t})\n\t\tthis.$root.$on('SERVER_build_vmlist', (data) => {\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.kill = 2\n this.$socket.client.open();\n this.$socket.client.emit('build_vmlist', obj);\n\t\t})\n\t\tthis.$root.$on('SERVER_build_kill', (data) => {\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.kill = data.pid\n this.$socket.client.open();\n this.$socket.client.emit('build_kill', obj);\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_install_instance', (data) => {\n this.swarmlabname = data.swarmlabname\n this.swarmlabname_git = data.git\n //this.swarmlabname_port = data.port\n\t\t\tthis.onAction('install')\n\t\t})\n// from available storage socket run here\n\t\tthis.$root.$on('hybrid_install_instance_storage', (data) => {\n //this.swarmlabname = data.swarmlabname\n //this.swarmlabname_git = data.git\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = data.swarmlabname\n obj.git = data.git\n this.$socket.client.open();\n this.$socket.client.emit('installstorage', obj);\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_connect_server', (data) => {\n\t\t\t//this.onAction('create-wirequard')\n this.$socket.client.emit('get-serverconfig');\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_stop_instance', (data) => {\n this.swarmlabname = data\n //console.log('RUN exec '+JSON.stringify(this.swarmlabname))\n\t\t\t\tthis.onAction('stop')\n\t\t})\n// from available storage socket run here\n\t\tthis.$root.$on('hybrid_stop_instance_storage', (data) => {\n //this.swarmlabname = data\n //console.log('RUN exec '+JSON.stringify(this.swarmlabname))\n\t\t\t\t//this.onAction('stop')\n this.$socket.client.emit('stop_storage', data);\n\t\t})\n// from available poc socket run here\n\t\tthis.$root.$on('hybrid_stop_instance_poc', (data) => {\n //this.swarmlabname = data\n //console.log('RUN exec '+JSON.stringify(this.swarmlabname))\n\t\t\t\t//this.onAction('stop')\n this.$socket.client.emit('stop_poc', data);\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 var log = store.dispatch(\"pipelineLLO/settoken\",{\n token:this.token\n })\n this.socketopen();\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_show_info')\n\t\tthis.$root.$off('hybrid_start_instance')\n\t\tthis.$root.$off('hybrid_stop_instance')\n\t\tthis.$root.$off('hybrid_connect_server')\n\t\tthis.$root.$off('hybrid_install_instance')\n\t\tthis.$root.$off('hybrid_install_instance_storage')\n\t\tthis.$root.$off('SERVER_build_vmlist')\n\t\tthis.$root.$off('SERVER_build_kill')\n\t\tthis.$root.$off('SERVER_build_image')\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\t\tasync updateNetwork(container,action){\n // console.log(JSON.stringify(container));\n // console.log(JSON.stringify('selected :' + this.selectedNetworks));\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/updatenetworks\",{\n\t\t\t\t\t\tnetworks:this.selectedNetworks,\n\t\t\t\t\t\tdefaultnetwork:this.localNetworkdefault,\n\t\t\t\t\t\tcontainer:container.ID\n\t\t\t\t\t})\n this.$root.$emit('hybrid_refresh_networktable')\n\t\t\t\t\t this.hybridshowdata = {}\n\t\t\t\t\t this.addNetworkMenou = false\n\t\t\t\t\t this.localNetworks = []\n\t\t\t\t\t this.selectedNetworks = []\n\t\t\t\t\t this.localNetworkoptions = []\n\t\t\t\t\t this.localNetworkdefault = ''\n // console.log(JSON.stringify(log.data.data));\n\t\t\t},\n\t\t\tasync addNetwork(container,action){\n if(action == 'on'){\n \tthis.addNetworkMenou = true\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/getnetworks\",{\n\t\t\t\t\t\tinstance:container.ID\n\t\t\t\t\t})\n this.localNetworks = log.data.data\n\t\t\t\t\tvar searchnet = ''\n this.localNetworkoptions = []\n\t\t\t\t\t\t\tfor(var i = 0; i < this.localNetworks.length; i++) {\n this.localNetworkdefault = this.localNetworks[i].NetworkMode[0]\n var NET = {}\n\t\t\t\t\t\t\t\t NET.text = this.localNetworks[i].Name\n NET.value = this.localNetworks[i].Name\n\n\t\t\t\t\t searchnet = new RegExp(this.localNetworks[i].NetworkMode[0]); \n //console.log(this.localNetworks[i].NetworkMode[0] +' - ' + this.localNetworks[i].Name );\n\t\t\t\t\t\t\t\t\t if(searchnet.test(this.localNetworks[i].Name)){\n \tNET.disabled = true\n\t\t\t\t\t\t\t\t\t\t}else{\n \tNET.disabled = false\n\t\t\t\t\t\t\t\t\t\t}\n\n this.localNetworkoptions.push(NET)\n\t\t\t\t\t\t\t}\n // console.log(JSON.stringify(this.localNetworks));\n\t\t\t\t}else if(action == 'off'){\n \tthis.addNetworkMenou = false\n\t\t\t\t}\n // console.log(container);\n },\n\t\tasync backupAndClose(result){\n \t\tif (result.isConfirmed) {\n var log = await store.dispatch(\"pipelineLLO/runbackup\",{\n instance: this.hybridshowdata.Names\n })\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n\t },\n\t\t\tasync onAction(action){\n if(action == 'start'){\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = this.swarmlabname\n obj.swarmlabname_size = this.swarmlabname_size\n obj.swarmlabname_port = this.swarmlabname_port\n //this.$socket.client.emit('action', obj);\n //this.$socket.client.emit('actionstart', obj);\n this.$socket.client.open();\n //this.$socket.client.emit('start', this.swarmlabname);\n this.$socket.client.emit('start', obj);\n //console.log('start ' + JSON.stringify(log))\t\n //console.log('startobj ' + JSON.stringify(obj))\t\n ////console.log(this.$socket.client.connect())\n }else if(action == 'basedireditor'){\n this.$wait.start('myRunInstanceeditor');\n var log = await store.dispatch(\"pipelineLLO/runeditor\",{\n token:this.token,\n instance:this.hybridshowdata.Names\n })\n //console.log('start editor-------- ' + JSON.stringify(this.hybridshowdata.Names))\t\n //console.log('start token-------- ' + JSON.stringify(log.data.port))\t\n // console.log('start editor-------- ' + JSON.stringify(log))\t\n this.$root.$emit('SERVER_hybrid_table_stop')\n\n\n }else if(action == 'basebackupview'){\n var info=`<h5><b>Backups</b><br> \n <br>\n `\n info +='<p class=\"text-secondary\">'\ninfo +=' <b>Click on hyperlink opens Directory in new tab</b></p>'\n info +='<b> <a class=\"text-info\" href=\"http://127.0.0.1:3383/\" target=\"_blank\">View Backups</a></b>'\n info +='<br>'\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 }else if(action == 'basebackup'){\n var info = \"Create a full backup of persistent data: <br><br> <p><b>\" + this.hybridshowdata.Names\n info += \"</b></p><br>\"\n this.$swal({\n type: 'info',\n html: info,\n icon:'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: false,\n confirmButtonText: 'Yes!'\n }).then((result)=> {\n this.backupAndClose(result);\n })\n }else if(action == 'basedir'){\n var log = await store.dispatch(\"pipelineLLO/getmountinfo\",{\n instance:this.hybridshowdata.Names\n })\n var pocmypathtmp1 = log.data.mypath\n var myNetwork1 = this.hybridshowdata.Networks.split('_')\n var pocmypath1 = pocmypathtmp1 + myNetwork1[0]\nvar pocmypathinfo1 = ''\nif(pocmypath1 != ''){\n pocmypathinfo1 += '<b>Project BaseDir:</b> '+pocmypath1\n}\n var info=`<h5><b>Base Directory - Persistent data</b><br> \n <br>\n `\n var myNetworkiservices = this.hybridshowdata.Networks.split('_')\n info +='<p class=\"text-primary\">'\ninfo +=' <b>Click on hyperlink opens Directory in new tab</b></p>'\ninfo +=' <table>'\ninfo +='<tr><td><b>Local</b></td><td><i>Container</i></td></tr>'\n var datajson = log.data.test[0]\n var extendsearch = new RegExp(myNetworkiservices[0]);\n var extendsearch1 = new RegExp('sec_bootstrap');\n for(var i = 0; i < datajson.length; i++) {\n if(datajson[i].Type == 'bind'){\n\t\t\t\t\t\t\t if(extendsearch.test(datajson[i].Source) && !extendsearch1.test(datajson[i].Source) ){\n var basedir1 = datajson[i].Source.indexOf(myNetworkiservices[0]);\n info +='<tr style=\"outline: thin solid\"><td><b> <a class=\"text-info\" href=\"http://127.0.0.1:3382/'+datajson[i].Source.slice(basedir1)+'\" target=\"_blank\">'+datajson[i].Source+'</a></b></td><td><i>' + datajson[i].Destination+' </i></td></tr>'\n }\n }\n }\ninfo +=' </table>'\ninfo += '<br><p>'\ninfo += pocmypathinfo1\ninfo += '</p>'\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 }else if(action == 'shareinfo'){\n var openuerlju = 'no'\n var search = 'microservice-jupyter'\n var extenderror = new RegExp(search);\n\t\t\t\t\t\t\tif(extenderror.test(this.hybridshowdata.Names)){\n\t\t\t\t\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/getjupyterinfo\",{\n\t\t\t\t\t\t\t\t\t\tinstance:this.hybridshowdata.Names\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tif(log.data.test){\n\t\t\t\t\t\t\t\t\t\t\t//get token\n\t\t\t\t\t\t\t\t\t\t\tvar splitted = log.data.test.split('?token='); \n\t\t\t\t\t\t\t\t\t\t\tvar jutoken = splitted[1];\n\t\t\t\t\t\t\t\t\t\t\t//cut from home dir\n\t\t\t\t\t\t\t\t\t\t\tvar splitted1 = jutoken.split(' '); \n\t\t\t\t\t\t\t\t\t\t\tvar jutokenok = splitted1[0];\n\t\t\t\t\t\t\t\t\t\t\tvar juurl = this.webinterface_port.split('->'); \n\t\t\t\t\t\t\t\t\t\t\t// trim it\n\t\t\t\t\t\t\t\t\t\t\tvar juurlok = juurl[0].trim();\n\t\t\t\t\t\t\t\t\t\t\t//build url\n\t\t\t\t\t\t\t\t\t\t\topenuerlju = `http://${juurlok}/?token=${jutokenok}`\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t}\n var log = await store.dispatch(\"pipelineLLO/getshareinfo\",{\n instance:this.hybridshowdata.Names\n })\n //console.log('logsserver1---------- ' + JSON.stringify(log.data.network))\t\n this.hybridshowdatashare = log.data.network\n var IP = this.hybridshowdatashare.IPv4Address.split('/');\n var search1 = '->'\n var search3 = ','\n var extenderror1 = new RegExp(search1);\n var extenderror3 = new RegExp(search3);\n var info = ''\n // url port einai polla\n\t\t\t\t\t\tif(extenderror1.test(this.hybridshowdata.Ports) ){ \n try {\n if(extenderror3.test(this.hybridshowdata.Ports)){\n var PORTSport = this.hybridshowdata.Ports.split(',');\n for(var iaa = 0; iaa < PORTSport.length; iaa++){\n var PORTStmp = PORTSport[iaa].split('->');\n var PORTS = PORTSport[iaa].split('/');\n if( openuerlju == 'no'){\n info += `<h5>URL: ${IP[0]}:${PORTS[0]}</h5>`\n }else{\n info += `<h5>URL: ${IP[0]}:${PORTS[0]}/?token=${jutokenok}</h5>`\n }\n }\n }else{\n var PORTStmp = this.hybridshowdata.Ports.split('->');\n var PORTS = PORTStmp[1].split('/');\n var info = ''\n if( openuerlju == 'no'){\n info = `<h5>URL: ${IP[0]}:${PORTS[0]}</h5>`\n }else{\n info = `<h5>URL: ${IP[0]}:${PORTS[0]}/?token=${jutokenok}</h5>`\n }\n }\n } catch (e) {\n }\n\t\t\t\t\t }\n\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\ttitle: '<strong>Share info</strong>',\n\t\t\t\t\t\t\t\ttype: '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})\n }else if(action == 'container-logs'){\n\t\t\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/getlogs\",{\n\t\t\t\t\t\t\t\tcontainer:this.hybridshowdata.ID\n\t\t\t\t\t\t\t})\n }else if(action == 'startwebgeneric'){\n var urlgen = this.hybridshowdata.Names.split('_');\n //console.log('logs---------- ' + JSON.stringify(this.hybridshowdata))\t\n //console.log('logs---------- ' + JSON.stringify(urlgen[0]))\t\n var log = await store.dispatch(\"pipelineLLO/rungui\",{\n instance:urlgen[0]\n })\n }else if(action == 'startweb'){\n var log = await store.dispatch(\"pipelineLLO/getjupyterinfo\",{\n instance:this.hybridshowdata.Names\n })\n if(log.data.test){\n //get token\n var splitted = log.data.test.split('?token='); \n var jutoken = splitted[1];\n //cut from home dir\n var splitted1 = jutoken.split(' '); \n var jutokenok = splitted1[0];\n var juurl = this.webinterface_port.split('->'); \n // trim it\n var juurlok = juurl[0].trim();\n //build url\n var openuerlju = `http://${juurlok}/?token=${jutokenok}`\n //var info=`<h5>You can connect to the same contained process multiple times simultaneously, from different sessions.<br> \n var info=`<h5> \n <br>\n <b>Click \n <a class=\"text-info\" href=\"${openuerlju}\" target=\"_blank\">here to open</a></span>\n </b>\n <br>\n <br>\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\n }else if(action == 'container-connect'){\n var log = await store.dispatch(\"pipelineLLO/getmountinfo\",{\n instance:this.hybridshowdata.Names\n })\n var pocmypathtmp = log.data.mypath\n var container_bash = '/bin/sh'\n var container_user = false\n var swarmlabinstance = new RegExp(\"^(hybrid-|HYBRID-)\"); \n if(swarmlabinstance.test(this.hybridshowdata.Names)){\n container_user = true\n container_bash = '/bin/bash'\n var container_user_swarmlab = 'docker'\n }\n// -----\n var swarmlabinstance1c = new RegExp(\"(/poc-|/POC-)\"); \n var pocurl = 'no'\n\n var myNetwork = this.hybridshowdata.Networks.split('_')\n var pocmypath = pocmypathtmp + myNetwork[0]\n if(swarmlabinstance1c.test(this.hybridshowdata.Image)){\n var swarmlabinstance1cd = new RegExp(\"(->)\"); \n if(swarmlabinstance1cd.test(this.hybridshowdata.Ports)){\n var splitcd = this.hybridshowdata.Ports.split(':')\n var splitcd1 = splitcd[1].split('-')\n var swarmlabinstance1ce = new RegExp(\"^(web)\"); \n if(swarmlabinstance1ce.test(this.hybridshowdata.Names)){\n pocurl = 'http://localhost:'+splitcd1[0]+'/?token='+this.token\n }\n }\n }\n// -----\n var swarmlabinstance1ca = new RegExp(\"(microservice-codeserver)\"); \n var pocurlcodeserver = 'no'\n if(swarmlabinstance1ca.test(this.hybridshowdata.Names)){\n var swarmlabinstance1cda = new RegExp(\"(->)\"); \n if(swarmlabinstance1cda.test(this.hybridshowdata.Ports)){\n var splitcda = this.hybridshowdata.Ports.split(':')\n var splitcd1a = splitcda[1].split('-')\n pocurlcodeserver = 'http://localhost:'+splitcd1a[0]+'/?token='+this.token\n }\n }\n //console.log('stringify--------- ' + JSON.stringify(pocurlcodeserver));\n \n// -----\n var swarmlabinstance = new RegExp(\"^(hybrid-|HYBRID-)\"); \n if(swarmlabinstance.test(this.hybridshowdata.Names)){\n container_user = true\n container_bash = '/bin/bash'\n var container_user_swarmlab = 'docker'\n }\n\n //var Localpath = JSON.parse(log.data.test)\n var info=`<h5> \n <hr>\n <b>Open a terminal and Run*:</b>\n <br>\n <br>\n`\nif(container_user){\n info +='<p class=\"text-success\">'\n info += 'docker exec -it -u'+container_user_swarmlab+' '+this.hybridshowdata.Names+' ' + container_bash\n info +='</p>'\n}else{\n info +='<p class=\"text-success\">'\n info += 'docker exec -it '+this.hybridshowdata.Names+' ' + container_bash\n info +='</p>'\n}\n\nif(pocurl != 'no'){\n info +='<p class=\"text-info\">'\n info += '<a href=\"'+pocurl+'\" target=\"_blank\">Click here to open the Web_App</a>'\n info +='</p>'\n}\n\n\nif(pocurlcodeserver != 'no'){\n info +='<p class=\"text-info\">'\n info += '<a href=\"'+pocurlcodeserver+'\" target=\"_blank\">Click here to open the Web_App</a>'\n info +='</p>'\n}\n\n // find web url \n // ipv4\n // ApiConfigWEB.port = port\n var urlgenWEB = this.hybridshowdata.Names.split('_');\n var pocurletherpadserver = 'no'\n var pocurletherpadserverttyd = 'no'\n for(var i = 0; i < ApiConfigWEB.length; i++) {\n var obWEB = ApiConfigWEB[i];\n\t\t\t\t\t\tif(obWEB.name == urlgenWEB[0]){\n var swarmlabinstance1cda1 = new RegExp(\"(->)\"); \n if(swarmlabinstance1cda1.test(this.hybridshowdata.Ports)){\n var splitcda1split = this.hybridshowdata.Ports.split(',')\n for(var i1 = 0; i1 < splitcda1split.length; i1++) { \n\n var swarmlabinstance1cda1s = new RegExp(\"(0.0.0.0)\"); \n if(swarmlabinstance1cda1s.test(splitcda1split[i1])){\n \n if(obWEB.app){\n var swarmlabinstance1cda1s1 = new RegExp(obWEB.port); \n if(swarmlabinstance1cda1s1.test(splitcda1split[i1])){\n var splitcda1 = splitcda1split[i1].split(':')\n var splitcd1a1 = splitcda1[1].split('-')\n pocurletherpadserver = obWEB.url+'://localhost:'+splitcd1a1[0]+'/?token='+this.token\n }\n }\n \n if(obWEB.ttyd){\n var swarmlabinstance1cda1s1b = new RegExp(obWEB.ttydport); \n if(swarmlabinstance1cda1s1b.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bc = splitcda1split[i1].split(':')\n var splitcd1a1bc = splitcda1bc[1].split('-')\n pocurletherpadserverttyd = obWEB.ttydurl+'://localhost:'+splitcd1a1bc[0]+'/?token='+this.token\n }\n }\n\n }\n }\n }\n\t\t\t\t\t\t}\n }\n// -----\n/*\n var swarmlabinstance1ca1 = new RegExp(\"(microservice-etherpad)\"); \n var pocurletherpadserver = 'no'\n if(swarmlabinstance1ca1.test(this.hybridshowdata.Names)){\n var swarmlabinstance1cda1 = new RegExp(\"(->)\"); \n if(swarmlabinstance1cda1.test(this.hybridshowdata.Ports)){\n var splitcda1 = this.hybridshowdata.Ports.split(':')\n var splitcd1a1 = splitcda1[1].split('-')\n pocurletherpadserver = 'http://localhost:'+splitcd1a1[0]+'/?token='+this.token\n }\n }\n*/\n\nif(pocurletherpadserverttyd != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadserverttyd+'\" target=\"_blank\"> - OR -<br>Click to open Terminal emulator</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadserver != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-secondary\" href=\"'+pocurletherpadserver+'\" target=\"_blank\">Click here to open Web App</a>'\n info +='</p>'\n info += '<hr>'\n}\n// -----\n\nvar pocmypathinfo = ''\nif(pocmypath != ''){\n \n pocmypathinfo += '<b>Project BaseDir:</b> '+pocmypath\n}\n\n/*\n info +='<p class=\"text-secondary\">'\ninfo +=' <b>Directory Maps</b>'\ninfo +='<br>'\ninfo +=' <table>'\ninfo +='<tr><td><b>Local</b></td><td><i>Container</i></td></tr>'\n var datajson = log.data.test[0]\n for(var i = 0; i < datajson.length; i++) {\n\n//console.log('test1 '+JSON.stringify(datajson[i]))\n if(datajson[i].Type == 'bind'){\n info +='<tr style=\"outline: thin solid\"><td><b>'+datajson[i].Source+' </b></td><td><i>' + datajson[i].Destination+' </i></td></tr>'\n }\n }\ninfo +=' </table>'\n info +='</p>'\ninfo += pocmypathinfo\ninfo +='</h5><br>'\ninfo +='<br>'\ninfo +='<b>*</b> App with GUI: xhost +local:docker <br>'\ninfo +='<br>'\ninfo +='This permits the docker user on the local machine to connect to X windows display.<br>'\n//console.log('test1 '+JSON.stringify(this.hybridshowdata))\n*/\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 }else if(action == 'install'){\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = this.swarmlabname\n obj.git = this.swarmlabname_git\n this.$socket.client.open();\n this.$socket.client.emit('install', obj);\n }else if(action == 'container-stop'){\n\t\t\t\t // refresh adhocview.vue on console await \n this.$root.$emit('SERVER_hybrid_table_start')\n this.$socket.client.emit('container-stop', this.swarmlabname, this.hybridshowdata.ID);\n //console.log('socket instance container-stop '+ this.swarmlabname +' '+ this.hybridshowdata.ID )\n }else if(action == 'create-wirequard'){\n //this.CONFIGprivatekey = value.privatekey\n //this.CONFIGpublickey = value.publickey\n //this.CONFIGserver_ip = value.server_ip // 83.212.77.133:51820\n //this.CONFIGallowed_ips = value.allowed_ips // 10.13.13.0/16, 0.0.0.0/0, ::/0\n this.$socket.client.emit('create-wirequard', this.token);\n }else if(action == 'stop'){\n this.$socket.client.emit('stop', this.swarmlabname);\n //console.log('socket instance container-stop passed from services '+ this.swarmlabname )\n }\n\t\t\t},\n async socketopen () {\n this.$socket.client.open();\n this.$socket.client.connect();\n },\n async socketauthenticate () {\n this.$socket.client.emit('authenticate', this.token);\n },\n async socketreconnect () {\n var log = await this.socketopen() \n this.socketauthenticate()\n },\n async socketclose () {\n this.$socket.client.close();\n }\n\n },\n /**\n *\n * == Socket events\n * \n * [source,javascript]\n * ---- \n * this.$socket.client.emit('authenticate', 'logintoken');\n * ---- \n *\n */\n sockets: {\n connect() {\n //this.$socket.client.emit('authenticate', this.token);\n //console.log('socket connected '+ 'socketdatasend' )\n this.issocket = 'open';\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'open'\n\t\t\t\t\t})\n },\n /**\n *\n * === onError\n *\n */\n error(error) {\n //console.log(\"socket error \"+JSON.stringify(error))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n },\n /**\n *\n * === connect_error\n * \n */\n connect_error(error) {\n //console.log(\"socket connect_error \"+JSON.stringify(error))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketopen() \n this.socketreconnect() \n },\n /**\n *\n * === connect_error\n *\n */\n disconnect(reason) {\n //console.log(\"socket disconnect \"+JSON.stringify(reason))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketreconnect() \n },\n /**\n * \n * === Socket connect_timeout\n * \n */\n connect_timeout(reason) {\n //console.log(\"socket timeout \"+JSON.stringify(reason))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketreconnect() \n },\n /**\n * \n * === Socket reconnect\n * \n */\n reconnect(attemptNumber) {\n //console.log(\"socket reconnect attemptNumber \"+JSON.stringify(attemptNumber))\n this.socketreconnect() \n },\n /**\n * \n * === connect_attempt\n * \n */\n reconnect_attempt(attemptNumber) {\n //console.log(\"socket reconnect_attempt \"+JSON.stringify(attemptNumber))\n this.socketreconnect() \n },\n /**\n *\n * === Socket reconnecting\n *\n */\n reconnecting(attemptNumber) {\n //console.log(\"socket reconnecting \"+JSON.stringify(attemptNumber))\n this.socketreconnect() \n },\n /**\n *\n * === reconnect_error\n *\n */\n reconnect_error(error) {\n //console.log(\"socket reconnect_error \"+JSON.stringify(error))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketreconnect() \n },\n /**\n *\n * === unauthorized\n *\n */\n unauthorized(val) {\n //console.log(\"socket unauthorized \"+JSON.stringify(val))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n },\n /**\n *\n * === connected \n *\n */\n socket_id_emit(val) {\n //console.log(\"socket id from server \"+JSON.stringify(val))\n this.issocket = 'open'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'open'\n\t\t\t\t\t})\n },\n /**\n *\n * === Socket onMessage\n *\n */\n /*\n async adhocEmit(val) {\n //console.log(\"socket from server \"+JSON.stringify(val))\n this.issocket = 'open'\n //this.$wait.start('myRunInstance1');\n // render begin\n this.tryLLO = 'on'\n if(this.firstbootstrap === 0 ){\n await this.bootsrapllo();\n this.firstbootstrap = 1\n }\n var output = log.data.out\n var mydinfunction = `\n <div class=\"row\">\n <b-col class=\"\" cols=\"12\" sm=\"12\" md=\"12\" >\n ${output}\n </b-col>\n </div>`\n\n try {\n let divascii = document.createElement('div');\n divascii.setAttribute(\"class\", \"container-fluid w-100 p-3 llotry\")\n divascii.innerHTML = mydinfunction\n this.addtask(divascii);\n }catch (ex) {\n //console.log(\" logi error1 \"+JSON.stringify(ex))\n return\n }\n //this.$wait.end('myRunInstance1');\n },\n */\n async logdata(val) {\n //console.log(\" socket from logdata \"+JSON.stringify(val))\n // -------------------------------------\n // Save store\n // -------------------------------------\n var log = store.dispatch(\"pipelineLLO/addlog\",{\n log:val\n })\n\n var ltmp = store.getters['pipelineLLO/getlog'];\n this.log_path = [...new Set(ltmp.map(item => item.tailed_path))];\n var loglenght = ''\n for (let item of this.log_path) {\n //console.log('l1find '+ JSON.stringify(item))\n loglenght = ltmp.filter(item1 => item1.tailed_path === item).length;\n Vue.set(this.log_path_lenght, item, loglenght);\n if(loglenght > this.loglenghttotal){\n // -------------------------------------\n // Save store\n // -------------------------------------\n var ltotal1 = store.dispatch(\"pipelineLLO/taillog\",{\n path:item\n })\n }\n }\n \n },\n async message(val) {\n //console.log(\" socket message \"+JSON.stringify(val))\n },\n async message_config(value) {\n value.data = JSON.parse(value.data); \n if(value.file == 'ok'){\n //console.log('server-value-file-ok ' + JSON.stringify(value.data.status))\n this.CONFIG.status = value.data.status\n this.CONFIG.workerkey = value.data.workerkey\n this.CONFIG.swarmlab_public_wgkey = value.data.swarmlab_public_wgkey\n this.CONFIG.server_ip = value.data.server_ip \n this.CONFIG.allowed_ips = value.data.allowed_ips \n this.CONFIG.wg_port = value.data.wg_port \n this.CONFIG.wg_ip = value.data.wg_ip\n this.CONFIG.swarm_ip = value.data.swarm_ip\n this.CONFIG.privatekey = value.data.privatekey\n this.CONFIG.publickey = value.data.publickey\n\n }else if(value.file == 'nodata'){\n this.CONFIG.status = ''\n this.CONFIG.workerkey = ''\n this.CONFIG.swarmlab_public_wgkey = ''\n this.CONFIG.server_ip = ''\n this.CONFIG.allowed_ips = ''\n this.CONFIG.wg_port = ''\n this.CONFIG.wg_ip = ''\n this.CONFIG.swarm_ip = ''\n this.CONFIG.privatekey = ''\n this.CONFIG.publickey = ''\n }\n // send to myconnect-server.vue\n //console.log('server-config ' + JSON.stringify(this.CONFIG))\n\t\t\t\t store.dispatch(\"pipelineLLO/addconfig\",this.CONFIG)\n\t\t this.$root.$emit('hybrid_connect_server_view', this.CONFIG)\n },\n async message_log(val) {\n //console.log(\" socket out \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n\t\t\t\t// refresh adhocview.vue on console await \n //this.$root.$emit('SERVER_hybrid_table_start')\n // clear container info here sockert end\n //this.hybridshowdata = {}\n },\n async message_out(val) {\n //console.log(\" socket out \"+JSON.stringify(val))\n //search for error in mongoserver must run sudo chown\n this.$root.$emit('hybrid_log_in',val)\n\t\t\t\t// refresh adhocview.vue on console await \n this.$root.$emit('SERVER_hybrid_table_start')\n // clear container info here sockert end\n this.hybridshowdata = {}\n },\n async message_err(val) {\n //console.log(\" socket err \"+JSON.stringify(val))\n\t\t\t\tvar extenderror = new RegExp('error checking context'); \n\t\t\t\tif(extenderror.test(val.data)){\n var cwdpath = val.cwdpath\n var cwdservice = val.service\n //console.log(\" path \"+JSON.stringify(cwdpath))\n //console.log(\" path-------- \"+JSON.stringify(val))\n var errorrun = \"<b>error checking context:</b> 'no permission to read from ...\"\n var info=`<h5><b>You might see an error message:</b></h5><br>\n <samp> ${errorrun} </samp>\n <br>\n <br>\n <b>In this case open Open a terminal and Run:</b>\n <br>\n <br> `\n info +='<p class=\"text-success\">'\n info += 'sudo chown -R $USER.$USER '+cwdpath + '/instance/'+cwdservice+'/'+cwdservice\n info +='</p>'\n info +='<br> <br> <b>and try again</b> <br>'\n\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info,\n icon:'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: false,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n })\n }\n this.$root.$emit('hybrid_log_in',val)\n },\n async message_close(val) {\n //console.log(\" socket close \"+JSON.stringify(val))\n // Error in event handler for \"hybrid_log_in\": \"TypeError: child is undefined\"\n // data: 0 gia na doume ean ine afto\n // to lathos exafanistike\n if(val.data != 0){ \n this.$root.$emit('hybrid_log_in',val)\n }\n // refresh table availableservices\n this.$root.$emit('hybrid_refresh_table')\n\t\t\t\t// refresh adhocview.vue on console await console\n this.$root.$emit('SERVER_hybrid_table_stop')\n },\n async message_err_storage(val) {\n //console.log(\" socket err \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n },\n async message_out_storage(val) {\n // console.log(\" socket out storage \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n //this.hybridshowdata = {}\n },\n async message_close_storage(val) {\n // refresh table hybrid storage\n this.$root.$emit('hybrid_log_in',val)\n this.$root.$emit('hybrid_refresh_table_storage')\n },\n // poc \n async message_err_poc(val) {\n //console.log(\" socket err \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n },\n async message_out_poc(val) {\n // console.log(\" socket out storage \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n //this.hybridshowdata = {}\n },\n async message_close_poc(val) {\n // refresh table hybrid storage\n this.$root.$emit('hybrid_log_in',val)\n this.$root.$emit('hybrid_refresh_table_poc')\n },\n async message_close_build(val) {\n // refresh table hybrid storage\n this.$root.$emit('SERVER_build_closebuild',val)\n //this.$root.$emit('hybrid_refresh_table_storage')\n },\n async message_exec_editor(val) {\n // refresh table hybrid storage\n //console.log(\" socket out editor \"+JSON.stringify(val))\n if(val.start){\n this.$root.$emit('SERVER_hybrid_table_stop')\n this.editor_instance.start=val.start\n this.editor_instance.start=val.port\n var info=`<h5><b>Editor</b><br> \n <br>\n `\n info +='<p class=\"text-secondary\">'\ninfo +=' <b>Click on hyperlink opens Editor in new tab</b></p>'\n info +='<b> <a class=\"text-info\" href=\"http://127.0.0.1:'+val.port+'\" target=\"_blank\">Open Editor</a></b>'\n info +='<br>'\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\t // this.webinterfacegenericedit = false\n this.$wait.end('myRunInstanceeditor');\n }\n\n //this.$root.$emit('hybrid_refresh_table_storage')\n },\n async build_set_sshpid(val) {\n // console.log(\" socket pid \"+JSON.stringify(val))\n this.$root.$emit('SERVER_build_set_sshpid',val)\n },\n async build_set_buildpid(val) {\n // console.log(\" socket pid \"+JSON.stringify(val))\n this.$root.$emit('SERVER_build_set_buildpid',val)\n },\n async message_hybrid_status(val) {\n var obj = {}\n obj.status = val\n var res1 = store.dispatch('pipelineLLO/setstatus', obj)\n this.$root.$emit('hybrid_server_status',val)\n //message_hybrid_status {\"data\":{\"swarmlab\":\"active\",\"hybrid\":\"Online\",\"swarmlabid\":\"z3abo50tks76alp7ubjos4ngz\"}}\n this.STATUS.swarmlabid = val.data.swarmlabid\n this.STATUS.hybrid = val.data.hybrid\n this.STATUS.swarmlab = val.data.swarmlab\n\t\t\t\t store.dispatch(\"pipelineLLO/addstatusswarmlab\",this.STATUS)\n }\n },\n\n\n actions: {\n\n\t}\n\n};\n</script>\n\n<style lang=\"scss\">\n\n\n\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\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!./mytable.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!./mytable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mytable.vue?vue&type=template&id=39ad301c&\"\nimport script from \"./mytable.vue?vue&type=script&lang=js&\"\nexport * from \"./mytable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./mytable.vue?vue&type=style&index=0&lang=scss&\"\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/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:\"row\"},[_c('div',{staticClass:\"col-12\"},[_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 \t<div class=\" col text-center\">\n\t\t\t\t\t\t<v-wait for=\"myRunInstance1\">\n\t\t\t\t\t\t\t<template slot=\"waiting\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<img src=\"@/assets/loading.gif\" width=\"50\" height=\"50\" />\n\t\t\t\t\t\t\t\t\tLab_Instance...\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</v-wait>\n\n\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\tclass=\"btn btn-outline-danger btn-sm\"\n\t\t\t\t\t\t\tv-if=\"extenderror\"\n\t\t\t\t\t\t\t@click=\"runextenderror()\">\n\t\t\t\t\t\t\tError: max depth exceeded</button>\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\tclass=\"btn btn-outline-warning btn-sm\"\n\t\t\t\t\t\t\tv-if=\"tryConsole\"\n\t\t\t\t\t\t\t@click=\"clear()\">\n\t\t\t\t\t\t\tClear</button>\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\tclass=\"btn btn-outline-info btn-sm\"\n\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\tConsole</button>\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\tclass=\"btn btn-outline-info btn-sm\"\n\t\t\t\t\t\t\tv-if=\"cmOptions.keyMap == 'sublime'\"\n\t\t\t\t\t\t\t@click=\"infoFilter\">\n\t\t\t\t\t\t\ti</button>\n \n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\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 </div>\n </div>\n\n</b-container>\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: true,\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 socketconnect () {\n // send to runLLO\n this.$root.$emit('SERVER_socket_connect')\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 async hotreload() {\n var field = this.getinfo\n var log = await store.dispatch(\"pipelineLLO/hotreload\",{\n token:this.token,\n swarmlabname:this.swarmlabname \n })\n },\n\trunextenderror\t() {\n var html1 = ` <div style=\"overflow-x: auto;\">\n <p>\n It's the total amount of layers; \n </p>\n <p class=\"text-left\">\n <b>The current limit of 125 layers is due to the kernel's ARG_MAX</b>, which limits the number of arguments / length of arguments that can be passed when mounting the layers \n \n<br> <i> (this limit can be raised in kernels, but is not something that could be relied on as it would make those images non-interoperable on systems that don't have the custom configuration)</i>\n </p>\n <p class=\"text-left\">\n Note that not every step in a Dockerfile creates a new layer, <b>only (RUN) steps that modify the filesystem will introduce a new layer</b>.\n </p>\n\n <p class=\"text-center\">\n <h5> <b>Solution</b> </h5>\n </p>\n <p class=\"text-left\">\n Delete all local docker images related to your dockerfile using the following:\n <br>\n <br>\n <i><b>docker rmi -f $(docker images -a -q)</b></i>\n </p>\n\n <p class=\"text-left\">\n <h5> <b>Description</b> </h5>\n <br>\n Remove unused image <br>\n - all images not referenced by any container -\n </p>\n <p class=\"text-left\">\n <h5> <b>Filtering</b> </h5>\n <br>\n <i><b>docker rmi -f $(docker images -a | grep \"IMAGE_NAME\" | awk '{ print $3 }')</b></i>\n </p>\n\n</div>`\n\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttitle: '<strong>Info</strong>',\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: html1,\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('SERVER_socket_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_log_in', (log) => {\n //this.code += log.data\n //this.code += \"\\n\"\n //console.log(\" form socket log \"+JSON.stringify(this.code))\n var doc = this.$refs.myCm.codemirror.getDoc();\n var cursor = doc.getCursor(); // gets the line number in the cursor position\n var line = doc.getLine(cursor.line); // get the line contents\n var pos = { // create a new object to avoid mutation of the original selection\n line: cursor.line,\n ch: line.length - 1 // set the character position to the end of the line\n }\n doc.replaceRange(log.data, pos); // adds a new line\n doc.replaceRange(\"\\n\", pos); // adds a new line\n this.$refs.myCm.codemirror.setCursor(this.$refs.myCm.codemirror.lineCount(), 0);\n var extenderror = new RegExp('max depth exceeded'); \n if(extenderror.test(log.data)){\n this.extenderror = true\n }else{\n console.log('not find');\n }\n this.tryConsole=true\n\t\t})\n\n // from mytable.vue and socket\n\t\tthis.$root.$on('SERVER_hybrid_table_start', (v) => {\n\t\t\tthis.$nextTick(function () {\n this.$wait.start('myRunInstance1');\n\t\t\t})\n\t\t})\n // from mytable.vue and socket\n\t\tthis.$root.$on('SERVER_hybrid_table_stop', (v) => {\n\t\t\tthis.$nextTick(function () {\n this.$wait.end('myRunInstance1');\n\t\t\t})\n\t\t})\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('SERVER_socket_status')\n\t\tthis.$root.$off('hybrid_log_in')\n\t\tthis.$root.$off('SERVER_hybrid_table_start')\n\t\tthis.$root.$off('SERVER_hybrid_table_stop')\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 font-family: monospace;\n height: 550px;\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!./AdhocView.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!./AdhocView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AdhocView.vue?vue&type=template&id=24d170ca&\"\nimport script from \"./AdhocView.vue?vue&type=script&lang=js&\"\nexport * from \"./AdhocView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdhocView.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',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setRefresh}},[_vm._v(\" Refresh running instances\")])]),_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 Name\"},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.vuetablekeyb,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('button',{staticClass:\"ti-info btn btn-outline-info btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('view-item', 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 class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-success\" \n round\n type=\"button\"\n @click=\"setRefresh\">\n Refresh running instances</button>\n </div>\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 Name\"\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=\"vuetablekeyb\"\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 <button\n class=\"ti-info btn btn-outline-info btn-sm\"\n round\n @click=\"onAction('view-item', 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 {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 actionrowindex:'',\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: '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\tvuetablekeyb:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'Names',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'Names',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '50%'\n },\n {\n name: 'Image',\n title: '<span class=\"orange\"></span>Image',\n //sortField: 'Image',\n visible:true,\n dataClass: 'left aligned w-25',\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: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'Status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'Status',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\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: '10%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/dockerservices\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'Names',\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': '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_networktable', () => {\n //this.setFilter()\n //this.$refs.vuetable.refresh()\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\n\t\tthis.$root.$on('hybrid_refresh_dockerservices', () => {\n //this.setFilter()\n //this.$refs.vuetable.refresh()\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\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\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_networktable')\n\t\tthis.$root.$off('hybrid_refresh_dockerservices')\n\t\tthis.$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 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\tsetRefresh () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\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\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 '+JSON.stringify(data))\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n var log = await store.dispatch(\"pipelineLLO/hybrid_inspectcontainer\",{\n token:this.token,\n instance:data.ID\n })\n //console.log('index '+JSON.stringify(log.data.test[0]))\n var info='<h5>Instance Info <b> '+ data.Names +'</b> <br> id: ' + data.ID+ '<br></h5>'\n info += '<div class=\"overflow-auto\" style=\"width:100%;height:450px;\"><samp>'+ JSON.stringify(log.data.test[0]) +'</samp></div>'\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: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\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.vuetablekeyb += 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 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!./dockerservices.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!./dockerservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dockerservices.vue?vue&type=template&id=6bdf0951&\"\nimport script from \"./dockerservices.vue?vue&type=script&lang=js&\"\nexport * from \"./dockerservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./dockerservices.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\":\"myRunInstancedockerimages\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Clear ... \")])])],2),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setRefresh}},[_vm._v(\" Refresh images\")])]),_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 Name\"},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('div',{staticClass:\"input-group-append\"},[_c('div',{staticClass:\"mx-auto\",staticStyle:{\"width\":\"85px\"}}),_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\" Clear All: \")]),_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.rmall_i('images')}}},[_vm._v(\" Images\")]),_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.rmall_i('containers')}}},[_vm._v(\" Containers\")]),_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.rmall_i('volumes')}}},[_vm._v(\" Volumes\")])])]),_c('vuetable',{key:_vm.vuetablekeybimages,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',{},[_c('button',{staticClass:\"ti-trash btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('rm-item', props.rowData, props.rowIndex)}}}),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('info-item', 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=\"myRunInstancedockerimages\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Clear ...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-success\" \n round\n type=\"button\"\n @click=\"setRefresh\">\n Refresh images</button>\n </div>\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 Name\"\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\n <div class=\"input-group-append\">\n\t\t\t<div class=\"mx-auto\" style=\"width: 85px;\">\n\t\t\t</div>\n <button \n class=\"btn btn-secondary\" \n round\n type=\"button\"\n disabled\n >\n Clear All: </button>\n <button \n class=\"btn btn-outline-danger\" \n round\n type=\"button\"\n @click=\"rmall_i('images')\">\n Images</button>\n <button \n class=\"btn btn-outline-danger\" \n round\n type=\"button\"\n @click=\"rmall_i('containers')\">\n Containers</button>\n <button \n class=\"btn btn-outline-danger\" \n round\n type=\"button\"\n @click=\"rmall_i('volumes')\">\n Volumes</button>\n </div>\n\t\t\t\t\t\n </div>\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=\"vuetablekeybimages\"\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 class=\"ti-trash btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('rm-item', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('info-item', 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 {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 actionrowindex:'',\n\t playbookInfo: {},\n rmactionclear: '',\n\t image2rm: {},\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\tvuetablekeybimages:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'ID',\n title: '<span class=\"orange\"></span>Image id',\n //sortField: 'ID',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '15%'\n },\n {\n name: 'Repository',\n title: '<span class=\"orange\"></span>Repository',\n sortField: 'Repository',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '30%'\n\n },\n {\n name: 'Tag',\n //sortField: 'Tag',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:true,\n width: '5%'\n },\n {\n name: 'CreatedSince',\n sortField: 'CreatedSince',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-20',\n visible:true,\n width: '10%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'Size',\n title: '<span class=\"orange\"></span>Size',\n sortField: 'Size',\n titleClass: 'center aligned',\n visible:true,\n width: '5%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '10%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/dockerimages\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'Names',\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': '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_networktable', () => {\n //this.setFilter()\n //this.$refs.vuetable.refresh()\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\n\t\tthis.$root.$on('hybrid_refresh_dockerservices', () => {\n //this.setFilter()\n //this.$refs.vuetable.refresh()\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\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\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_networktable')\n\t\tthis.$root.$off('hybrid_refresh_dockerservices')\n\t\tthis.$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 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\tsetRefresh () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\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\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 // **************************************************************\n // ************ rm all ***********************************\n // **************************************************************\n async rmall_i (action) {\n this.rmactionclear = action\n var info='<h5>This will remove all unused ' + action +' from system. </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_containerrmall(result);\n })\n\t\t},\n async onActionHybrid_containerrmall(action) {\n // myRunInstancedockerimages\n var rmimages = this.rmactionclear\n if(action.isConfirmed){\n this.$wait.start('myRunInstancedockerimages');\n\t\t\t\t\t\t\t var log = await store.dispatch(\"pipelineLLO/hybrid_rmall\",{\n\t\t\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\t\t\taction:rmimages\n\t\t\t\t\t\t\t\t\t})\n this.$wait.end('myRunInstancedockerimages');\n //console.log(JSON.stringify(log))\n\t\t\t\t\t\t\tif(log.data.error == 'no'){\n if(rmimages != 'images'){\n\t\t\t\t\t\t var info='<h5> <div class=\"overflow-auto\">' + log.data.out + '</div></h5>'\n\t\t\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\t\t\ttitle: 'Info!',\n\t\t\t\t\t\t\t\t\t\ticon:'info',\n\t\t\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\t\t\t//cancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\t\t\tfocusCancel: false,\n\t\t\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}else{\n \t\t\t\t\t Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t var info='<h5> ' + log.data.error_msg + '</h5>'\n\t\t\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\t\t\ttitle: 'Error!',\n\t\t\t\t\t\t\t\t\t\ticon:'error',\n\t\t\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\t\t\t//cancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\t\t\tfocusCancel: false,\n\t\t\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n this.image2rm = data\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('rm '+JSON.stringify(data))\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'info-item' ){\n\t\t\t\t\t\t\t var log = await store.dispatch(\"pipelineLLO/hybrid_inspectimages\",{\n\t\t\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\t\t\tinstance:this.image2rm.ID\n\t\t\t\t\t\t\t\t\t})\n //console.log('index '+JSON.stringify(log.data.test[0]))\n var info='<h5>Image Info <b> '+ data.Repository +'</b> <br> id: ' + data.ID+ '<br></h5>'\n info += '<samp class=\"overflow-auto\">'+ JSON.stringify(log.data.test[0]) +'</samp>'\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: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\t\t\t}else if(action == 'rm-item' ){\n var info = 'test'\n/*\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})\n*/\n var info='<h5>This will remove the image <b> '+ data.Repository +'</b> <br></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_imagerm(result);\n })\n\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n async onActionHybrid_imagerm(action) {\n if(action.isConfirmed){\n\t\t\t\t\t\t\t var log = await store.dispatch(\"pipelineLLO/hybrid_rmimage\",{\n\t\t\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\t\t\tinstance:this.image2rm.ID\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\tif(log.data.test != 'ok'){\n \t//console.log('-------' + JSON.stringify(log.data.test))\n var info='<h5> ' + log.data.test + '</h5>'\n\t\t\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\t\t\ttitle: 'Error!',\n\t\t\t\t\t\t\t\t\t\ticon:'error',\n\t\t\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\t\t\t//cancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\t\t\tfocusCancel: false,\n\t\t\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t }\n\n //console.log(JSON.stringify(this.image2rm))\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n },\n\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeybimages += 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 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!./images.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!./images.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./images.vue?vue&type=template&id=70c74154&\"\nimport script from \"./images.vue?vue&type=script&lang=js&\"\nexport * from \"./images.vue?vue&type=script&lang=js&\"\nimport style0 from \"./images.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\":\"myRunInstancedockerimages1a\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Clear ... \")])])],2),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setRefresh}},[_vm._v(\" Refresh networks\")])]),_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 Name\"},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.vuetablekeybnetworks1,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',{},[_c('button',{staticClass:\"ti-trash btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('rm-item', props.rowData, props.rowIndex)}}}),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('info-item', 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=\"myRunInstancedockerimages1a\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Clear ...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-success\" \n round\n type=\"button\"\n @click=\"setRefresh\">\n Refresh networks</button>\n </div>\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 Name\"\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\n\t\t\t\t\t\n </div>\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=\"vuetablekeybnetworks1\"\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 class=\"ti-trash btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('rm-item', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('info-item', 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 {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 actionrowindex:'',\n\t playbookInfo: {},\n rmactionclear: '',\n\t image2rm: {},\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\tvuetablekeybnetworks1:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'ID',\n title: '<span class=\"orange\"></span>Network id',\n //sortField: 'ID',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '15%'\n },\n {\n name: 'Name',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'Name',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '30%'\n\n },\n {\n name: 'Driver',\n //sortField: 'Tag',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-20',\n visible:true,\n width: '5%'\n },\n {\n name: 'CreatedAt',\n sortField: 'CreatedAt',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:true,\n width: '10%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'Scope',\n title: '<span class=\"orange\"></span>Scope',\n sortField: 'Scope',\n titleClass: 'center aligned',\n visible:true,\n width: '5%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '10%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/dockernetworks\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'Names',\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': '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_networktable', () => {\n //this.setFilter()\n //this.$refs.vuetable.refresh()\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\n\t\tthis.$root.$on('hybrid_refresh_dockerservices', () => {\n //this.setFilter()\n //this.$refs.vuetable.refresh()\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\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\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_networktable')\n\t\tthis.$root.$off('hybrid_refresh_dockerservices')\n\t\tthis.$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 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\tsetRefresh () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\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\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 // **************************************************************\n // ************ rm all ***********************************\n // **************************************************************\n async rmall_i (action) {\n this.rmactionclear = action\n var info='<h5>This will remove all unused ' + action +' from system. </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_containerrmall(result);\n })\n\t\t},\n async onActionHybrid_containerrmall(action) {\n // myRunInstancedockerimages1a\n var rmimages = this.rmactionclear\n if(action.isConfirmed){\n this.$wait.start('myRunInstancedockerimages1a');\n\t\t\t\t\t\t\t var log = await store.dispatch(\"pipelineLLO/hybrid_rmall\",{\n\t\t\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\t\t\taction:rmimages\n\t\t\t\t\t\t\t\t\t})\n this.$wait.end('myRunInstancedockerimages1a');\n //console.log(JSON.stringify(log))\n\t\t\t\t\t\t\tif(log.data.error == 'no'){\n if(rmimages != 'images'){\n\t\t\t\t\t\t var info='<h5> <div class=\"overflow-auto\">' + log.data.out + '</div></h5>'\n\t\t\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\t\t\ttitle: 'Info!',\n\t\t\t\t\t\t\t\t\t\ticon:'info',\n\t\t\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\t\t\t//cancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\t\t\tfocusCancel: false,\n\t\t\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}else{\n \t\t\t\t\t Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t var info='<h5> ' + log.data.error_msg + '</h5>'\n\t\t\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\t\t\ttitle: 'Error!',\n\t\t\t\t\t\t\t\t\t\ticon:'error',\n\t\t\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\t\t\t//cancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\t\t\tfocusCancel: false,\n\t\t\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n this.image2rm = data\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('rm '+JSON.stringify(data))\n\t\t\tif(action == 'info-item' ){\n\t\t\t\t\t\t\t var log = await store.dispatch(\"pipelineLLO/hybrid_inspectnetworks\",{\n\t\t\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\t\t\tinstance:this.image2rm.ID\n\t\t\t\t\t\t\t\t\t})\n //console.log('index '+JSON.stringify(log.data.test[0]))\n var info='<h5>Network Info <b> '+ data.Name +'</b> <br> id: ' + data.ID+ '<br></h5>'\n info += '<samp class=\"overflow-auto\">'+ JSON.stringify(log.data.test[0]) +'</samp>'\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: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\t\t\t}else if(action == 'rm-item' ){\n var info = 'test'\n/*\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})\n*/\n var info='<h5>This will remove network <b> '+ data.Name +'</b> <br> id: ' + data.ID+ '<br></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_imagerm(result);\n })\n\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n async onActionHybrid_imagerm(action) {\n if(action.isConfirmed){\n\t\t\t\t\t\t\t var log = await store.dispatch(\"pipelineLLO/hybrid_rmnetworks\",{\n\t\t\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\t\t\tinstance:this.image2rm.ID\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\tif(log.data.test != 'ok'){\n \t//console.log('-------' + JSON.stringify(log.data.test))\n var info='<h5> ' + log.data.test + '</h5>'\n\t\t\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\t\t\ttitle: 'Error!',\n\t\t\t\t\t\t\t\t\t\ticon:'error',\n\t\t\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\t\t\t//cancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\t\t\tfocusCancel: false,\n\t\t\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t }\n\n //console.log(JSON.stringify(this.image2rm))\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n },\n\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeybnetworks1 += 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 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!./networks.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!./networks.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./networks.vue?vue&type=template&id=4b191f4e&\"\nimport script from \"./networks.vue?vue&type=script&lang=js&\"\nexport * from \"./networks.vue?vue&type=script&lang=js&\"\nimport style0 from \"./networks.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 <view-network>\n\n </view-network>\n <docker-services>\n\n </docker-services>\n <br> \n <br> \n <hr>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>View and Manage your local system</b>\n </div>\n </div>\n <hr>\n <br> \n <docker-images>\n\n </docker-images>\n <br> \n <br> \n <br> \n <hr>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>View and Manage your local networks</b>\n </div>\n </div>\n <hr>\n <docker-networks>\n\n </docker-networks>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-view>\n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport ViewNetwork from \"./mynetwork/mytable.vue\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport DockerServices from \"./mynetwork/dockerservices.vue\";\nimport DockerImages from \"./mynetwork/images.vue\";\nimport DockerNetworks from \"./mynetwork/networks.vue\";\nimport card from '@/components/Card.vue'\n//import AvailableServices from \"./mynetwork/availableservices.vue\";\nexport default {\n components: {\n ViewNetwork,\n AdhocView,\n card,\n DockerServices,\n DockerImages,\n DockerNetworks\n // AvailableServices\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!./mynetwork.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!./mynetwork.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mynetwork.vue?vue&type=template&id=4e32b6e7&\"\nimport script from \"./mynetwork.vue?vue&type=script&lang=js&\"\nexport * from \"./mynetwork.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('available-services',{key:_vm.componentKeyreloadservice})],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-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('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('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\"LabRoom\")]),_vm._v(\" Deploy - Local \")])])]),_c('br'),_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\"},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.viewhybridoptions)?_c('div',{staticClass:\"row\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('span',[_c('b',[_vm._v(\"Lab Service Options\")])])])],1):_vm._e(),(_vm.viewhybridoptions)?_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\" Instances \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.hybridoptions.size),expression:\"hybridoptions.size\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Number of Instances\"},domProps:{\"value\":(_vm.hybridoptions.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.hybridoptions, \"size\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\" Port\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.hybridoptions.port),expression:\"hybridoptions.port\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Expose Port\"},domProps:{\"value\":(_vm.hybridoptions.port)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.hybridoptions, \"port\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setHybridoptions}},[_vm._v(\" Up\")])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekeya,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:\"actionsenabled\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.swarmlabname] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Stop Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('down-item', props.rowData, props.rowIndex)}}}):_vm._e(),(_vm.testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && _vm.testactionrowindex[props.rowIndex] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Start Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-item', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowIndex] == props.rowIndex && _vm.testactionrowindex[props.rowData.swarmlabname] != props.rowIndex)?_c('button',{staticClass:\"ti-trash btn btn-info btn-sm\",attrs:{\"title\":\"Remove Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('rm-install', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.checkactionrowindex(props.rowData,props.rowIndex))?_c('button',{staticClass:\"ti-cloud-down btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Download Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-install', props.rowData, props.rowIndex)}}}):_vm._e(),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Lab_Instance Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('view-item', 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 <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 <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab <span class=\"text-info\">LabRoom</span> Deploy - Local </b>\n </div>\n </div>\n\n<br>\n\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\"\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\n <div class=\"row\"\n v-if=\"viewhybridoptions\"\n >\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <span>\n <b>Lab Service Options</b>\n </span>\n </b-col>\n </div>\n\n\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions\"\n >\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 >\n\t\t\t\tInstances </button>\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=\"Number of Instances\"\n\t\t\t\tv-model=\"hybridoptions.size\"\n\t\t\t\t>\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 >\n\t\t\t\tPort</button>\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=\"Expose Port\"\n\t\t\t\tv-model=\"hybridoptions.port\"\n\t\t\t\t>\n\t\t\t\t<button class=\"btn btn-outline-success\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setHybridoptions\"\n >\n\t\t\t\tUp</button>\n </div>\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=\"vuetablekeya\"\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=\"actionsenabled\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] == props.rowIndex\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Stop Lab_Instance\"\n round\n @click=\"onAction('down-item', props.rowData, props.rowIndex)\"\n >\n </button>\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && testactionrowindex[props.rowIndex] == props.rowIndex\"\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Start Lab_Instance\"\n round\n @click=\"onAction('run-item', props.rowData, props.rowIndex)\"\n >\n </button>\n </div>\n </div>\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowIndex] == props.rowIndex && testactionrowindex[props.rowData.swarmlabname] != props.rowIndex\"\n class=\"ti-trash btn btn-info btn-sm\"\n title=\"Remove Lab_Instance\"\n @click=\"onAction('rm-install', props.rowData, props.rowIndex)\"\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=\"checkactionrowindex(props.rowData,props.rowIndex)\"\n class=\"ti-cloud-down btn btn-outline-secondary btn-sm\"\n title=\"Download Lab_Instance\"\n round\n @click=\"onAction('run-install', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Lab_Instance Info\"\n round\n @click=\"onAction('view-item', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t </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 </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\";\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 testactionrowindex:[], // downloaded used in installed\n teststatusindex:[], // status stop run used in status\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'size':'', \n 'port':'' \n },\n viewhybridoptions: false,\n swarmlab:{},\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: '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\tvuetablekeya:0,\n\t\tfielddata:{},\n fields: [\n {\n name: 'swarmlabname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'swarmlabname',\n visible:true,\n dataClass: 'left aligned col-3',\n width: '68%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'description',\n sortField: 'gitrepoCloneUrl',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: 'gitrepoFullName',\n sortField: 'gitrepoFullName',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actionsenabled', // <----\n title: 'Status',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actionslocal', // <----\n title: 'Installed',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Download',\n titleClass: 'col text-center',\n dataClass: 'center aligned',\n width: '10%'\n },\n ],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\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': 'scripts'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_availableservices', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\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\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_availableservices')\n\t\tthis.$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 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\t\tasync checkactionrowindex(data,index){\n if(this.testactionrowindex[index] == index){\n \n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res1 = await store.dispatch('pipelineLLO/getservicesstatus', obj)\n //console.log('res8 all '+JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, 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.swarmlabname)\n }\n \n //console.log('is set '+index)\n }else{\n //console.log('not set '+index)\n\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res = await store.dispatch('pipelineLLO/getservicesinfo', obj)\n if(res.data.data == 'yes'){\n //console.log('resi YES '+JSON.stringify(res))\n Vue.set(this.testactionrowindex, index, index)\n var res1 = await store.dispatch('pipelineLLO/getservicesstatus', obj)\n //console.log('res8 all '+JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, 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.swarmlabname)\n }\n //console.log('resiiiiiiii yes '+JSON.stringify(this.testactionrowindex[index]))\n }else{\n //Vue.delete(this.testactionrowindex, index)\n console.log('resi NO data '+JSON.stringify(res))\n }\n }\n\t\t},\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\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\n\t\t\t\t\t\t'type': 'scripts'\n\t\t\t\t}\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\t\t\tif(action == 'view-item' ){\n this.swarmlab=data\n var container=this.swarmlab\n var res = await store.dispatch('pipelineLLO/getswarmlabinfo', container.swarmlabname)\n\n var swarmlab1=JSON.stringify(res.data.swarmlab, null ,2)\n var swarmlab1info=JSON.stringify(res.data.swarmlabinfo, null ,2)\n var swarmlab1info=res.data.swarmlabinfo\n var description='<div style=\"height: 250px; overflow-y: scroll;\"><p><pre><code class=\"codeblock\">'+swarmlab1+'</code></pre></p></div>'\n if(res.data.error25==\"ok\"){\n var winfo=''\n var info='<h5>Swarmlab Service <a href=\"'+swarmlab1info+'\" target=\"_blank\" >Info</a></h5>(Open page in new window)'\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\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 //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t\t}else if(action == 'rm-install' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.$wait.start('myRunInstancetutor');\n var res = await store.dispatch('pipelineLLO/rmswarmlablocal', this.hybridoptions.swarmlabname)\n this.$wait.end('myRunInstancetutor');\n\n\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n //check if exists\n var res2 = await store.dispatch('pipelineLLO/getservicesinfo', obj)\n if(res2.data.data == 'yes'){\n if(res2.data.data == 'yes'){\n var winfo='<h6 class=\"text-warning\"> swarmlab encountered a problem while deleting your labroom files. <br> This propably means that you have created some files while operating the labroom. <br> To remove those files please run the following command as root. </h6> <h5><i>Copy-and-run-command </i></h5><br> ' \n winfo += '<span class=\"text-success\">sudo rm -rf '+res.data.path+'/instance/'+data.swarmlabname+' </span><br><br>'\n winfo += '<span class=\"text-secondary\"> You can back up content using: </span><br>'\n winfo += '<span class=\"text-warning\">sudo tar -zcvf /home/\\$USER/swarmlabbackup_'+data.swarmlabname+'.tar.gz '+res.data.path+'/instance/'+data.swarmlabname+' </span>'\n var info='<h5>Labroom remove</h5>'\n this.$swal({\n type: 'info',\n html: info+winfo,\n icon: '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 console.log('inf res11111111111 '+ JSON.stringify(res.data.path))\n }\n }\n\n\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n this.refreshVuetable()\n this.$root.$emit('hybrid_refresh_info_deploy_local')\n\t\t\t}else if(action == 'run-install' ){\n this.$wait.start('myRunInstancetutor');\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n var res = await store.dispatch('pipelineLLO/getswarmlabinfo', value.swarmlabname)\n var swarmlab1info=res.data.swarmlabinfo\n value.git = swarmlab1info\n //console.log('inf git 1 '+ JSON.stringify(swarmlab1info))\n //console.log('inf '+ JSON.stringify(value))\n \tthis.$root.$emit('hybrid_install_instance', value)\n this.$wait.end('myRunInstancetutor');\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\n\t\t\t}else if(action == 'run-item' ){\n this.viewhybridoptions = true\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n /*\n console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n \tthis.$root.$emit('hybrid_start_instance', data.swarmlabname)\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n */\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t\t}else if(action == 'down-item' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n var info = \"Stop and remove containers, networks, images, and volumes\"\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: false,\n confirmButtonText: 'Yes!'\n }).then((result)=> {\n this.rmAndClose(result);\n })\n\n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t}\n },\n\t\tasync rmAndClose(result){\n //console.log('value 1 '+ JSON.stringify(result))\n //console.log('value 1 '+ JSON.stringify(this.hybridoptions))\n \t\tif (result.isConfirmed) {\n\t\t\t\t\t//console.log('yes') \n // run on mytable.vue\n var value = this.hybridoptions.swarmlabname\n \t this.$root.$emit('hybrid_stop_instance', value)\n Vue.delete(this.testactionrowindex, this.hybridoptions.index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n this.refreshVuetable()\n\t },\n\t\tasync setHybridoptions(){\n //console.log(JSON.stringify(this.hybridoptions))\n \n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n \tthis.$root.$emit('hybrid_start_instance', value)\n Vue.set(this.testactionrowindex, value.swarmlabname, value.index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\n\t\t},\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeya += 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 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!./availableservices.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!./availableservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./availableservices.vue?vue&type=template&id=093bccce&\"\nimport script from \"./availableservices.vue?vue&type=script&lang=js&\"\nexport * from \"./availableservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./availableservices.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 <!--\n <view-network>\n\n </view-network>\n -->\n <available-services\n :key=\"componentKeyreloadservice\" \n >\n\n </available-services>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-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\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport card from '@/components/Card.vue'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\nimport AvailableServices from \"./mynetwork/availableservices.vue\";\nexport default {\n components: {\n // ViewNetwork,\n AdhocView,\n card,\n // DockerServices,\n AvailableServices\n },\n data () {\n return {\n componentKeyreloadservice:1,\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_refresh_info_deploy_local', () => {\n this.componentKeyreloadservice += 1\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_info_deploy_local')\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!./myservices.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!./myservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myservices.vue?vue&type=template&id=0cf9b391&\"\nimport script from \"./myservices.vue?vue&type=script&lang=js&\"\nexport * from \"./myservices.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('div',{staticClass:\"card text-center\"},[_c('div',{staticClass:\"card-header\"}),_c('div',{staticClass:\"card-body\"},[_c('h2',{staticClass:\"card-title\"},[_vm._v(\" share with your friends or clients \")]),_c('br'),_c('p',{staticClass:\"card-text\"}),_c('h4',[_vm._v(\"Swarmlab uses VENUS to create virtual networks and ensure your data safety. \"),_c('br'),_vm._v(\"If you choose to proceed VENUS will have to be installed on your PC.\")]),_c('p'),_c('a',{staticClass:\"btn btn-primary\",attrs:{\"href\":\"https://git.swarmlab.io:3000/swarmlab/venus-client\",\"target\":\"newwindow\"}},[_vm._v(\"Get VENUS here\")])]),_c('div',{staticClass:\"card-footer text-muted\"},[_c('b',[_vm._v(\"VENUS is an open source service developed and maintained by the swarmlab team. \")]),_c('br'),_c('br'),_c('h5',[_vm._v(\" Safety is ensured using wireguard. \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-1 text-secondary\"}),_c('div',{staticClass:\"col-10 text-secondary\"},[_c('br')]),_c('div',{staticClass:\"col-1 text-secondary\"})])])}\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\n\n\n\n\n\n\n\n\n\n\n<div class=\"card text-center\">\n <div class=\"card-header\">\n </div>\n <div class=\"card-body\">\n <h2 class=\"card-title\">\n share with your friends or clients\n </h2>\n<br>\n <p class=\"card-text\">\n <h4>Swarmlab uses VENUS to create virtual networks and ensure your data safety. <br>If you choose to proceed VENUS will have to be installed on your PC.</h4>\n </p>\n <a href=\"https://git.swarmlab.io:3000/swarmlab/venus-client\" target=\"newwindow\" class=\"btn btn-primary\">Get VENUS here</a>\n </div>\n <div class=\"card-footer text-muted\">\n <b>VENUS is an open source service developed and maintained by the swarmlab team.\n </b>\n <br>\n <br>\n <h5>\n Safety is ensured using wireguard.\n </h5>\n\n </div>\n\n\n</div>\n\n <div class=\"row\" >\n <div class=\"col-1 text-secondary\" >\n </div>\n <div class=\"col-10 text-secondary\" >\n <br>\n\n\n\n\n\n </div>\n <div class=\"col-1 text-secondary\" >\n </div>\n </div> <!-- row -->\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 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 testactionrowindex:[], // joined \n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\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\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey1:0,\n\t\tfielddata:{},\n perpage: 10,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'pipelinename',\n\t\t\t\tdirection: 'asc'\n\t\t}],\n multiSort: true,\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\n\t},\n\n methods: {\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=28f85025&\"\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-7 order-first \"},[_c('br'),_c('available-storage',{key:_vm.componentKeyreloadstorage})],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-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('v-wait',{attrs:{\"for\":\"myRunInstancetutorstorage\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room storage... \")])])],2),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\"Storage\")]),_vm._v(\" Deploy - Local \")])])]),_c('br'),_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\"},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.viewhybridoptions)?_c('div',{staticClass:\"row\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('span',[_c('b',[_vm._v(\"Storage Service Options\")])])])],1):_vm._e(),(_vm.viewhybridoptions)?_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\" Admin \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.hybridoptions.password),expression:\"hybridoptions.password\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"New Password\"},domProps:{\"value\":(_vm.hybridoptions.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.hybridoptions, \"password\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.checkHybridoptions}},[_vm._v(\" Up\")])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekeystorage,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:\"actionsenabled\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.swarmlabname] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Stop Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('down-item', props.rowData, props.rowIndex)}}}):_vm._e(),(_vm.testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && _vm.testactionrowindex[props.rowIndex] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Start Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-item', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowIndex] == props.rowIndex && _vm.testactionrowindex[props.rowData.swarmlabname] != props.rowIndex)?_c('button',{staticClass:\"ti-trash btn btn-info btn-sm\",attrs:{\"title\":\"Remove Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('delete-item', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.checkactionrowindex(props.rowData,props.rowIndex))?_c('button',{staticClass:\"ti-cloud-down btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Download Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-install', props.rowData, props.rowIndex)}}}):_vm._e(),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Lab_Instance Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('view-item', 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 <v-wait for=\"myRunInstancetutorstorage\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room storage...\n </div>\n </template>\n </v-wait>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab <span class=\"text-info\">Storage</span> Deploy - Local </b>\n </div>\n </div>\n\n<br>\n\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\"\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\n <div class=\"row\"\n v-if=\"viewhybridoptions\"\n >\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <span>\n <b>Storage Service Options</b>\n </span>\n </b-col>\n </div>\n\n\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions\"\n >\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 >\n\t\t\t\tAdmin </button>\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=\"New Password\"\n\t\t\t\tv-model=\"hybridoptions.password\"\n\t\t\t\t>\n\t\t\t\t<button class=\"btn btn-outline-success\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"checkHybridoptions\"\n >\n\t\t\t\tUp</button>\n </div>\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=\"vuetablekeystorage\"\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=\"actionsenabled\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] == props.rowIndex\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Stop Lab_Instance\"\n round\n @click=\"onAction('down-item', props.rowData, props.rowIndex)\"\n >\n </button>\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && testactionrowindex[props.rowIndex] == props.rowIndex\"\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Start Lab_Instance\"\n round\n @click=\"onAction('run-item', props.rowData, props.rowIndex)\"\n >\n </button>\n </div>\n </div>\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowIndex] == props.rowIndex && testactionrowindex[props.rowData.swarmlabname] != props.rowIndex\"\n class=\"ti-trash btn btn-info btn-sm\"\n title=\"Remove Lab_Instance\"\n @click=\"onAction('delete-item', props.rowData, props.rowIndex)\"\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=\"checkactionrowindex(props.rowData,props.rowIndex)\"\n class=\"ti-cloud-down btn btn-outline-secondary btn-sm\"\n title=\"Download Lab_Instance\"\n round\n @click=\"onAction('run-install', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Lab_Instance Info\"\n round\n @click=\"onAction('view-item', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t </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 </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\";\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 testactionrowindex:[], // downloaded used in installed\n teststatusindex:[], // status stop run used in status\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'password':'', \n 'port':'' \n },\n viewhybridoptions: false,\n swarmlab:{},\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: '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\tvuetablekeystorage:0,\n\t\tfielddata:{},\n fields: [\n {\n name: 'swarmlabname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'swarmlabname',\n visible:true,\n dataClass: 'left aligned col-3',\n width: '68%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'description',\n sortField: 'gitrepoCloneUrl',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: 'gitrepoFullName',\n sortField: 'gitrepoFullName',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actionsenabled', // <----\n title: 'Status',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actionslocal', // <----\n title: 'Installed',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Download',\n titleClass: 'col text-center',\n dataClass: 'center aligned',\n width: '10%'\n },\n ],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridstorage\",\n\t\tcss: CssConfig,\n perpage: 5,\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': 'scripts'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_availableservices_storage', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table_storage', (v) => {\n\t\t\t this.$nextTick(function () {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.viewhybridoptions = false\n this.$wait.end('myRunInstancetutorstorage');\n\t\t\t })\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_availableservices_storage')\n\t\tthis.$root.$off('hybrid_refresh_table_storage')\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\t\tasync checkactionrowindex(data,index){\n if(this.testactionrowindex[index] == index){\n \n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res1 = await store.dispatch('pipelineLLO/getstoragestatus', obj)\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n }else{\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n }\n }else{\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res = await store.dispatch('pipelineLLO/getservicesinfo', obj)\n if(res.data.data == 'yes'){\n Vue.set(this.testactionrowindex, index, index)\n var res1 = await store.dispatch('pipelineLLO/getstoragestatus', obj)\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n }else{\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n }\n }else{\n console.log('resi NO1 '+JSON.stringify(res))\n }\n }\n\t\t},\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\t\t\tif(action == 'view-item' ){\n this.swarmlab=data\n var container=this.swarmlab\n var res = await store.dispatch('pipelineLLO/getswarmlabstorageinfo', container.swarmlabname)\n\n var swarmlab1=JSON.stringify(res.data.swarmlab, null ,2)\n var swarmlab1info=JSON.stringify(res.data.swarmlabinfo, null ,2)\n var swarmlab1info=res.data.swarmlabinfo\n var description='<div style=\"height: 250px; overflow-y: scroll;\"><p><pre><code class=\"codeblock\">'+swarmlab1+'</code></pre></p></div>'\n if(res.data.error25==\"ok\"){\n var winfo=''\n var info='<h5>Swarmlab Service <a href=\"'+swarmlab1info+'\" target=\"_blank\" >Info</a></h5>(Open page in new window)'\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\t\t\t}else if(action == 'delete-item' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n var info='<h5>This will remove the storage with the name<b> '+ data.swarmlabname +'</b> </h5><br>'\n\n var storage = this.hybridoptions.swarmlabname\n var winfo=''\n var res1 = await store.dispatch('pipelineLLO/getstoragesudopreparestop', storage)\n if(res1.data.data == 'yes' && res1.data.error == 'no'){\n var winfopath = res1.data.path\n winfo='<span class=\"text-danger\">Before continuing RUN the following command </span><br><br>'\n winfo +='<span class=\"text-success\">sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/sudorun-storage-stop </span>'\n }\n\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n icon:'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 }).then((result)=> {\n this.rmStorageAndClose(result);\n })\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t\t}else if(action == 'run-install' ){\n this.$wait.start('myRunInstancetutorstorage');\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n var res = await store.dispatch('pipelineLLO/getswarmlabstorageinfo', value.swarmlabname)\n var swarmlab1info=res.data.swarmlabinfo\n value.git = swarmlab1info\n \tthis.$root.$emit('hybrid_install_instance_storage', value)\n this.$wait.end('myRunInstancetutorstorage');\n this.refreshVuetable()\n\n\t\t\t}else if(action == 'run-item' ){\n this.viewhybridoptions = true\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n /*\n console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n \tthis.$root.$emit('hybrid_start_instance', data.swarmlabname)\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n */\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t}else if(action == 'down-item' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n var info = \"Stop and remove storage: containers, networks, images, and volumes\"\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: false,\n confirmButtonText: 'Yes!'\n }).then((result)=> {\n this.rmAndClose(result);\n })\n\n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t}\n },\n\t\tasync rmStorageAndClose(action){\n if(action.isConfirmed){\n //this.hybridoptions.swarmlabname = data.swarmlabname\n this.$wait.start('myRunInstancetutorstorage');\n var res = await store.dispatch('pipelineLLO/rmswarmlablocalstorage', this.hybridoptions.swarmlabname)\n this.$wait.end('myRunInstancetutorstorage');\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.delete(this.testactionrowindex, this.hybridoptions.swarmlabname)\n this.refreshVuetable()\n this.$root.$emit('hybrid_refresh_info_deploy_local')\n //console.log('inf res '+ JSON.stringify(res))\n }\n\n },\n\n\t\tasync rmAndClose(result){\n \t\tif (result.isConfirmed) {\n this.$wait.start('myRunInstancetutorstorage');\n var value = this.hybridoptions.swarmlabname\n \t this.$root.$emit('hybrid_stop_instance_storage', value)\n Vue.delete(this.testactionrowindex, this.hybridoptions.index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n this.refreshVuetable()\n\t },\n\t\tasync checkHybridoptions(){\n var storage = this.hybridoptions.swarmlabname\n var res1 = await store.dispatch('pipelineLLO/getstoragesudoprepare', storage)\n if(res1.data.data == 'yes' && res1.data.error == 'no'){\n var info='<h4>Storage prepare2start</h4> <h5><i>Copy-and-run-command </i></h5> <br>'\n var winfopath = res1.data.path\n var winfo='<span class=\"text-success\">sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/sudorun-storage-run </span>'\n this.$swal({\n type: 'info',\n html: info+winfo,\n icon:'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, Run it!'\n }).then((result)=> {\n this.setHybridoptions(result);\n })\n }else if(res1.data.data == 'yes' && res1.data.error == 'yes'){\n var info='<h4>Storage prepare2start</h4> <h5><i>Copy-and-run-command </i></h5> <br>'\n var winfopath = res1.data.path\n var winfo=\"<span class='text-success'>Can't write to file \"\n winfo += winfopath.trim()\n winfo += '/sudorun-storage-run </span>'\n this.$swal({\n type: 'info',\n html: info+winfo,\n icon:'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 }else if(res1.data.data == 'nosudo'){ // nosudo file exec without\n var myaction = {}\n myaction.isConfirmed = 'true'\n\t\t this.setHybridoptions(myaction)\n }else if(res1.data.data == 'error' && res1.data.error == 'yes'){ // nosudufile exec \n var myaction = {}\n myaction.isConfirmed = 'true'\n\t\t this.setHybridoptions(myaction)\n }else{ // no files exec without\n var myaction = {}\n myaction.isConfirmed = 'true'\n\t\t this.setHybridoptions(myaction)\n }\n\t },\n\t\tasync setHybridoptions(action){\n console.log(JSON.stringify(action))\n if(action.isConfirmed){\n this.$wait.start('myRunInstancetutorstorage');\n \n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.password = this.hybridoptions.password\n value.port = this.hybridoptions.port\n \tthis.$root.$emit('hybrid_start_instance_storage', value)\n Vue.set(this.testactionrowindex, value.swarmlabname, value.index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n\n\t\t},\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeystorage += 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 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!./availablestorage.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!./availablestorage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./availablestorage.vue?vue&type=template&id=e56c476a&\"\nimport script from \"./availablestorage.vue?vue&type=script&lang=js&\"\nexport * from \"./availablestorage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./availablestorage.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 <!--\n <view-network>\n\n </view-network>\n -->\n <available-storage\n :key=\"componentKeyreloadstorage\" \n >\n\n </available-storage>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-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\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport card from '@/components/Card.vue'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\n//import AvailableServices from \"./mynetwork/availableservices.vue\";\nimport AvailableStorage from \"./mynetwork/availablestorage.vue\";\nexport default {\n components: {\n // ViewNetwork,\n AdhocView,\n card,\n // DockerServices,\n AvailableStorage\n },\n data () {\n return {\n componentKeyreloadstorage:1,\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_refresh_info_deploy_local', () => {\n this.componentKeyreloadstorage += 1\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_info_deploy_local')\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!./mystorage.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!./mystorage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mystorage.vue?vue&type=template&id=9e34caa6&\"\nimport script from \"./mystorage.vue?vue&type=script&lang=js&\"\nexport * from \"./mystorage.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('available-microservices',{key:_vm.componentKeyreloadservice5})],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-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('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('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\"MicroServices\")]),_vm._v(\" Deploy - Local \")])])]),_c('br'),_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\"},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.viewhybridoptions)?_c('div',{staticClass:\"row\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('span',[_c('b',[_vm._v(\"Lab Service Options\")])])])],1):_vm._e(),(_vm.viewhybridoptions)?_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\" Instances \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.hybridoptions.size),expression:\"hybridoptions.size\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Number of Instances\",\"disabled\":\"\"},domProps:{\"value\":(_vm.hybridoptions.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.hybridoptions, \"size\", $event.target.value)}}}),_c('div',{staticClass:\"text-info\"},[_vm._v(_vm._s(_vm.up_name))]),_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setHybridoptions}},[_vm._v(\" Up\")])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekeyg,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:\"actionsenabled\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.swarmlabname] == props.rowData._id)?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Stop Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('down-item', props.rowData, props.rowData._id)}}}):_vm._e(),(_vm.testactionrowindex[props.rowData.swarmlabname] != props.rowData._id && _vm.testactionrowindex[props.rowData._id] == props.rowData._id)?_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Start Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-item', props.rowData, props.rowData._id)}}}):_vm._e()])])}},{key:\"actionslocal\",fn:function(props){return _c('div',{key:_vm.vuetablekeygslot,attrs:{\"actionslocal\":\"\"}},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData._id] == props.rowData._id && _vm.testactionrowindex[props.rowData.swarmlabname] != props.rowData._id)?_c('button',{staticClass:\"ti-trash btn btn-info btn-sm\",attrs:{\"title\":\"Remove Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('rm-install', props.rowData, props.rowData._id)}}}):_vm._e()])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.checkactionrowindex(props.rowData,props.rowData._id))?_c('button',{staticClass:\"ti-cloud-down btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Download Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-install', props.rowData, props.rowData._id)}}}):_vm._e(),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Lab_Instance Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('view-item', props.rowData, props.rowData._id)}}})])])}}])}),_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 <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 <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab <span class=\"text-info\">MicroServices</span> Deploy - Local </b>\n </div>\n </div>\n\n<br>\n\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\"\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\n <div class=\"row\"\n v-if=\"viewhybridoptions\"\n >\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <span>\n <b>Lab Service Options</b>\n </span>\n </b-col>\n </div>\n\n\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions\"\n >\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 >\n\t\t\t\tInstances </button>\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=\"Number of Instances\"\n disabled\n\t\t\t\tv-model=\"hybridoptions.size\"\n\t\t\t\t>\n <!--\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 >\n\t\t\t\tPort</button>\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=\"Expose Port\"\n disabled\n\t\t\t\tv-model=\"hybridoptions.port\"\n\t\t\t\t>\n -->\n <div class=\"text-info\">{{ up_name }}</div>\n\t\t\t\t<button class=\"btn btn-outline-success\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setHybridoptions\"\n >\n\t\t\t\tUp</button>\n </div>\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=\"vuetablekeyg\"\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<!--\nEDO\nprops.rowData._id gia to pagination problem\npass props.rowData._id as index\nallagi tou vuetablerefresh\n-->\n <div slot=\"actionsenabled\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] == props.rowData._id\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Stop Lab_Instance\"\n round\n @click=\"onAction('down-item', props.rowData, props.rowData._id)\"\n >\n </button>\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] != props.rowData._id && testactionrowindex[props.rowData._id] == props.rowData._id\"\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Start Lab_Instance\"\n round\n @click=\"onAction('run-item', props.rowData, props.rowData._id)\"\n >\n </button>\n </div>\n </div>\n <div slot=\"actionslocal\" slot-scope=\"props\" actionslocal\n\t\t\t\t:key=\"vuetablekeygslot\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData._id] == props.rowData._id && testactionrowindex[props.rowData.swarmlabname] != props.rowData._id\"\n class=\"ti-trash btn btn-info btn-sm\"\n title=\"Remove Lab_Instance\"\n @click=\"onAction('rm-install', props.rowData, props.rowData._id)\"\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=\"checkactionrowindex(props.rowData,props.rowData._id)\"\n class=\"ti-cloud-down btn btn-outline-secondary btn-sm\"\n title=\"Download Lab_Instance\"\n round\n @click=\"onAction('run-install', props.rowData, props.rowData._id)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Lab_Instance Info\"\n round\n @click=\"onAction('view-item', props.rowData, props.rowData._id)\">\n </button>\n\t\t\t\t </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 </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\";\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 testactionrowindex:[], // downloaded used in installed\n teststatusindex:[], // status stop run used in status\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'size':'', \n 'port':'' \n },\n viewhybridoptions: false,\n up_name:'',\n swarmlab:{},\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: '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\tvuetablekeyg:0,\n\t\tvuetablekeygslot:0,\n\t\tfielddata:{},\n fields: [\n {\n name: 'swarmlabname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'swarmlabname',\n visible:true,\n dataClass: 'left aligned col-3',\n width: '68%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'description',\n sortField: 'gitrepoCloneUrl',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: 'gitrepoFullName',\n sortField: 'gitrepoFullName',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actionsenabled', // <----\n title: 'Status',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actionslocal', // <----\n title: 'Installed',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Download',\n titleClass: 'col text-center',\n dataClass: 'center aligned',\n width: '10%'\n },\n ],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridmicroservices\",\n\t\tcss: CssConfig,\n perpage: 5,\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 currentpage:'1',\n currentpagepaginationData: {},\n dataselect:'',\n indexselect:'',\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},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_availableservices', () => {\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.nextTick( () => this.refreshVuetable())\n\t\t})\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.refreshVuetable()\n this.viewhybridoptions = false\n\t\t\t })\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_availableservices')\n\t\tthis.$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 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\t\tasync checkactionrowindex(data,index){\n if(data._id == index) {\n this.dataselect=data\n this.indexselect=index\n //console.log('res8--- all---- '+JSON.stringify(data._id))\n //console.log('res8--- all---- '+JSON.stringify(index))\n }\n if(this.testactionrowindex[index] == index){\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res1 = await store.dispatch('pipelineLLO/getservicesstatus', obj)\n //console.log('res8 all '+JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n //EDO\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n //Vue.set(this.testactionrowindex, data.swarmlabname, data.swarmlabname)\n }else{\n //console.log('res8 NO '+JSON.stringify(res1.data))\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n }\n }else{\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res = await store.dispatch('pipelineLLO/getservicesinfo', obj)\n //console.log('resi YES '+JSON.stringify(res))\n if(res.data.data == 'yes'){\n //EDO\n Vue.set(this.testactionrowindex, index, index)\n var res1 = await store.dispatch('pipelineLLO/getservicesstatus', obj)\n //console.log('res8 all '+JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n //EDO\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n //Vue.set(this.testactionrowindex, data.swarmlabname, data.swarmlabname)\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.swarmlabname)\n }\n //console.log('resiiiiiiii yes '+JSON.stringify(this.testactionrowindex[index]))\n }else{\n //Vue.delete(this.testactionrowindex, index)\n //console.log('resi NO2 '+JSON.stringify(res))\n }\n }\n //console.log('string YES '+JSON.stringify(this.testactionrowindex))\n\t\t},\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 //Vue.nextTick( () => this.refreshVuetable())\n //this.refreshVuetable()\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\n\t\t\t\t\t\t'type': 'scripts'\n\t\t\t\t}\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.nextTick( () => this.refreshVuetableall())\n //this.refreshVuetable()\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n this.currentpagepaginationData = paginationData\n },\n onChangePage (page) {\n this.currentpage = 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\t\t\tif(action == 'view-item' ){\n this.swarmlab=data\n var container=this.swarmlab\n var res = await store.dispatch('pipelineLLO/getswarmlabmicroserviceinfo', container.swarmlabname)\n\n var swarmlab1=JSON.stringify(res.data.swarmlab, null ,2)\n var swarmlab1info=JSON.stringify(res.data.swarmlabinfo, null ,2)\n var swarmlab1info=res.data.swarmlabinfo\n var description='<div style=\"height: 250px; overflow-y: scroll;\"><p><pre><code class=\"codeblock\">'+swarmlab1+'</code></pre></p></div>'\n if(res.data.error25==\"ok\"){\n var winfo=''\n var info='<h5>Swarmlab Service <a href=\"'+swarmlab1info+'\" target=\"_blank\" >Info</a></h5>(Open page in new window)'\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\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 //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.nextTick( () => this.refreshVuetable())\n //this.refreshVuetable()\n\t\t\t}else if(action == 'rm-install' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.$wait.start('myRunInstancetutor');\n var res = await store.dispatch('pipelineLLO/rmswarmlablocal', this.hybridoptions.swarmlabname)\n this.$wait.end('myRunInstancetutor');\n\n\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n //check if exists\n var res2 = await store.dispatch('pipelineLLO/getservicesinfo', obj)\n if(res2.data.data == 'yes'){\n if(res2.data.data == 'yes'){\n var winfo='<h6 class=\"text-warning\"> swarmlab encountered a problem while deleting your labroom files. <br> This propably means that you have created some files while operating the labroom. <br> To remove those files please run the following command as root. </h6> <h5><i>Copy-and-run-command </i></h5><br> ' \n winfo += '<span class=\"text-success\">sudo rm -rf '+res.data.path+'/instance/'+data.swarmlabname+' </span><br><br>'\n winfo += '<span class=\"text-secondary\"> You can back up content using: </span><br>'\n winfo += '<span class=\"text-warning\">sudo tar -zcvf /home/\\$USER/swarmlabbackup_'+data.swarmlabname+'.tar.gz '+res.data.path+'/instance/'+data.swarmlabname+' </span>'\n var info='<h5>Labroom remove</h5>'\n this.$swal({\n type: 'info',\n html: info+winfo,\n icon: '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 //console.log('inf res11111111111 '+ JSON.stringify(res.data.path))\n }\n }\n\n\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n this.refreshVuetable()\n this.$root.$emit('hybrid_refresh_info_deploy_local')\n\t\t\t}else if(action == 'run-install' ){\n this.$wait.start('myRunInstancetutor');\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n var res = await store.dispatch('pipelineLLO/getswarmlabmicroserviceinfo', value.swarmlabname)\n var swarmlab1info=res.data.swarmlabinfo\n value.git = swarmlab1info\n //console.log('inf git 1 '+ JSON.stringify(swarmlab1info))\n //console.log('inf '+ JSON.stringify(value))\n var log = await store.dispatch(\"pipelineLLO/checkowner\",{\n token:this.token,\n instance:this.hybridoptions.swarmlabname\n })\n \tthis.$root.$emit('hybrid_install_instance', value)\n this.$wait.end('myRunInstancetutor');\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\n\t\t\t}else if(action == 'run-item' ){\n\n this.up_name = data.swarmlabname\n \t\t\tvar filterju = `microservice-jupyter`\n var grepju = new RegExp(filterju);\n\t\t\t\t\t\tif(grepju.test(data.swarmlabname)){\n this.viewhybridoptions = false\n let value = {}\n value.swarmlabname = data.swarmlabname\n value.index = index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n this.$root.$emit('hybrid_start_instance', value)\n Vue.set(this.testactionrowindex, value.swarmlabname, value.index)\n\t\t\t\t\t\t}else{\n this.viewhybridoptions = true\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n //console.log(this.$refs.pagination)\n /*\n console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n \tthis.$root.$emit('hybrid_start_instance', data.swarmlabname)\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n */\n\t\t\t\t}\n //Vue.nextTick( () => this.$refs.vuetable.reload())\n //EDO\n this.refreshVuetable()\n\t\t\t}else if(action == 'down-item' ){\n this.up_name = ''\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n var info = \"Stop and remove containers, networks, images, and volumes\"\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: false,\n confirmButtonText: 'Yes!'\n }).then((result)=> {\n this.rmAndClose(result);\n })\n\n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n //this.refreshVuetable()\n\t\t\t}\n },\n\t\tasync rmAndClose(result){\n //console.log('value 1 '+ JSON.stringify(result))\n //console.log('value 1 '+ JSON.stringify(this.hybridoptions))\n \t\tif (result.isConfirmed) {\n\t\t\t\t\t//console.log('yes') \n // run on mytable.vue\n var value = this.hybridoptions.swarmlabname\n \t await this.$root.$emit('hybrid_stop_instance', value)\n Vue.delete(this.testactionrowindex, this.hybridoptions.index)\n //console.log('down service '+ JSON.stringify(this.hybridoptions.index))\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n\t },\n\t\tasync setHybridoptions(){\n //console.log(JSON.stringify(this.hybridoptions))\n \n // run on mytable.vue\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n var log = await store.dispatch(\"pipelineLLO/chown\",{\n token:this.token,\n instance:this.hybridoptions.swarmlabname\n })\n //console.log('chown '+ JSON.stringify(this.hybridoptions.swarmlabname))\n //console.log('chownlog '+ JSON.stringify(log))\n \tthis.$root.$emit('hybrid_start_instance', value)\n Vue.set(this.testactionrowindex, value.swarmlabname, value.index)\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\n //console.log('RUN 1 '+ JSON.stringify(this.hybridoptions))\n\n\t\t},\n async refreshVuetableall() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeyg += 1\n\t\t\t\t})\n\t\t},\n async refreshVuetable() {\n\t\t\t\t//this.vuetablekeyg += 1\n // EDO\n // echo ta data pou exei epilexei o user\n // kai etsi alazo se afta tin katastassi\n // afero ta $nextTick\n // kai allazo apo refresh edo se afto to action\n // refresh only status\n // ********* refresh slot einai i lissi ***\n //this.dataselect=data\n //this.indexselect=index\n //console.log('error2a '+JSON.stringify(this.dataselect))\n //console.log('error2b '+JSON.stringify(this.indexselect))\n\t\t await this.checkactionrowindex(this.dataselect, this.indexselect)\n\t\t\t\t\tthis.vuetablekeygslot += 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 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!./availablemicroservices.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!./availablemicroservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./availablemicroservices.vue?vue&type=template&id=5cab417a&\"\nimport script from \"./availablemicroservices.vue?vue&type=script&lang=js&\"\nexport * from \"./availablemicroservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./availablemicroservices.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 <!--\n <view-network>\n\n </view-network>\n -->\n <available-microservices\n :key=\"componentKeyreloadservice5\" \n >\n\n </available-microservices>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-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\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport card from '@/components/Card.vue'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\nimport AvailableMicroservices from \"./mynetwork/availablemicroservices.vue\";\nexport default {\n components: {\n // ViewNetwork,\n AdhocView,\n card,\n // DockerServices,\n AvailableMicroservices\n },\n data () {\n return {\n componentKeyreloadservice5:1,\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_refresh_info_deploy_local', () => {\n this.componentKeyreloadservice5 += 1\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_info_deploy_local')\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!./mymicroservices.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!./mymicroservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mymicroservices.vue?vue&type=template&id=42d2face&\"\nimport script from \"./mymicroservices.vue?vue&type=script&lang=js&\"\nexport * from \"./mymicroservices.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('available-poc',{key:_vm.componentKeyreloadpoc})],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-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('v-wait',{attrs:{\"for\":\"myRunInstancetutorpoc\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room poc... \")])])],2),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\"Proof_of_concept\")]),_vm._v(\" Deploy - Local \")])])]),_c('br'),_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\"},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.viewhybridoptions)?_c('div',{staticClass:\"row\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('span',[_c('b',[_vm._v(\"POC Service Options\")])])])],1):_vm._e(),(_vm.viewhybridoptions)?_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\" Admin \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.hybridoptions.password),expression:\"hybridoptions.password\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"New Password\"},domProps:{\"value\":(_vm.hybridoptions.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.hybridoptions, \"password\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.checkHybridoptions}},[_vm._v(\" Up\")])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekeypoc,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:\"actionsenabled\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.swarmlabname] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Stop Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('down-item', props.rowData, props.rowIndex)}}}):_vm._e(),(_vm.testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && _vm.testactionrowindex[props.rowIndex] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Start Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-item', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowIndex] == props.rowIndex && _vm.testactionrowindex[props.rowData.swarmlabname] != props.rowIndex)?_c('button',{staticClass:\"ti-trash btn btn-info btn-sm\",attrs:{\"title\":\"Remove Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('delete-item', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.checkactionrowindex(props.rowData,props.rowIndex))?_c('button',{staticClass:\"ti-cloud-down btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Download Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-install', props.rowData, props.rowIndex)}}}):_vm._e(),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Lab_Instance Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('view-item', 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 <v-wait for=\"myRunInstancetutorpoc\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room poc...\n </div>\n </template>\n </v-wait>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab <span class=\"text-info\">Proof_of_concept</span> Deploy - Local </b>\n </div>\n </div>\n\n<br>\n\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\"\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\n <div class=\"row\"\n v-if=\"viewhybridoptions\"\n >\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <span>\n <b>POC Service Options</b>\n </span>\n </b-col>\n </div>\n\n\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions\"\n >\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 >\n\t\t\t\tAdmin </button>\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=\"New Password\"\n\t\t\t\tv-model=\"hybridoptions.password\"\n\t\t\t\t>\n\t\t\t\t<button class=\"btn btn-outline-success\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"checkHybridoptions\"\n >\n\t\t\t\tUp</button>\n </div>\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=\"vuetablekeypoc\"\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=\"actionsenabled\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] == props.rowIndex\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Stop Lab_Instance\"\n round\n @click=\"onAction('down-item', props.rowData, props.rowIndex)\"\n >\n </button>\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && testactionrowindex[props.rowIndex] == props.rowIndex\"\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Start Lab_Instance\"\n round\n @click=\"onAction('run-item', props.rowData, props.rowIndex)\"\n >\n </button>\n </div>\n </div>\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowIndex] == props.rowIndex && testactionrowindex[props.rowData.swarmlabname] != props.rowIndex\"\n class=\"ti-trash btn btn-info btn-sm\"\n title=\"Remove Lab_Instance\"\n @click=\"onAction('delete-item', props.rowData, props.rowIndex)\"\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=\"checkactionrowindex(props.rowData,props.rowIndex)\"\n class=\"ti-cloud-down btn btn-outline-secondary btn-sm\"\n title=\"Download Lab_Instance\"\n round\n @click=\"onAction('run-install', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Lab_Instance Info\"\n round\n @click=\"onAction('view-item', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t </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 </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\";\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 testactionrowindex:[], // downloaded used in installed\n teststatusindex:[], // status stop run used in status\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'password':'', \n 'port':'' \n },\n viewhybridoptions: false,\n swarmlab:{},\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: '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\tvuetablekeypoc:0,\n\t\tfielddata:{},\n fields: [\n {\n name: 'swarmlabname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'swarmlabname',\n visible:true,\n dataClass: 'left aligned col-3',\n width: '68%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'description',\n sortField: 'gitrepoCloneUrl',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: 'gitrepoFullName',\n sortField: 'gitrepoFullName',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actionsenabled', // <----\n title: 'Status',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actionslocal', // <----\n title: 'Installed',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Download',\n titleClass: 'col text-center',\n dataClass: 'center aligned',\n width: '10%'\n },\n ],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridpoc\",\n\t\tcss: CssConfig,\n perpage: 5,\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': 'scripts'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_availableservices_poc', () => {\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table_poc', (v) => {\n\t\t\t this.$nextTick(function () {\n // Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n this.viewhybridoptions = false\n this.$wait.end('myRunInstancetutorpoc');\n\t\t\t })\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_availableservices_poc')\n\t\tthis.$root.$off('hybrid_refresh_table_poc')\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\t\tasync checkactionrowindex(data,index){\n if(this.testactionrowindex[index] == index){\n \n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res1 = await store.dispatch('pipelineLLO/getpocstatus', obj)\n //console.log('check --- '+JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n }else{\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n }\n }else{\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res = await store.dispatch('pipelineLLO/getservicesinfo', obj)\n if(res.data.data == 'yes'){\n Vue.set(this.testactionrowindex, index, index)\n var res1 = await store.dispatch('pipelineLLO/getpocstatus', obj)\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n }else{\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n }\n }else{\n console.log('resi NO1 '+JSON.stringify(res))\n }\n }\n\t\t},\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 this.refreshVuetable()\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\n\t\t\t\t\t\t'type': 'scripts'\n\t\t\t\t}\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\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\t\t\tif(action == 'view-item' ){\n this.swarmlab=data\n var container=this.swarmlab\n\n var swarmlab1info='https://git.swarmlab.io:3000/docs/Documentation'\n var swarmlab1 = 'info '\n var description='<div style=\"height: 250px; overflow-y: scroll;\"><p><pre><code class=\"codeblock\">'+swarmlab1+'</code></pre></p></div>'\n var winfo=''\n var info='<h5>Swarmlab Service <a href=\"'+swarmlab1info+'\" target=\"_blank\" >Info</a></h5>(Open page in new window)'\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\t\t\t}else if(action == 'delete-item' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n var info='<h5>This will remove the storage with the name<b> '+ data.swarmlabname +'</b> </h5><br>'\n\n var storage = this.hybridoptions.swarmlabname\n var winfo=''\n\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n icon:'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 }).then((result)=> {\n this.rmStorageAndClose(result);\n })\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t\t}else if(action == 'run-install' ){\n this.$wait.start('myRunInstancetutorpoc');\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n var res = await store.dispatch('pipelineLLO/getswarmlabpocinfo', value.swarmlabname)\n var swarmlab1info=res.data.swarmlabinfo\n value.git = swarmlab1info\n \tthis.$root.$emit('hybrid_install_instance_storage', value)\n this.$wait.end('myRunInstancetutorpoc');\n this.refreshVuetable()\n\n\t\t\t}else if(action == 'run-item' ){\n this.viewhybridoptions = true\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n /*\n console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n \tthis.$root.$emit('hybrid_start_instance', data.swarmlabname)\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n */\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t}else if(action == 'down-item' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n var info = \"Stop and remove storage: containers, networks, images, and volumes\"\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: false,\n confirmButtonText: 'Yes!'\n }).then((result)=> {\n this.rmAndClose(result);\n })\n\n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t\t}\n },\n\t\tasync rmStorageAndClose(action){\n if(action.isConfirmed){\n //this.hybridoptions.swarmlabname = data.swarmlabname\n this.$wait.start('myRunInstancetutorpoc');\n var res = await store.dispatch('pipelineLLO/rmswarmlablocalpoc', this.hybridoptions.swarmlabname)\n this.$wait.end('myRunInstancetutorpoc');\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.delete(this.testactionrowindex, this.hybridoptions.swarmlabname)\n this.refreshVuetable()\n this.$root.$emit('hybrid_refresh_info_deploy_local')\n //console.log('inf res '+ JSON.stringify(res))\n }\n\n },\n\n\t\tasync rmAndClose(result){\n \t\tif (result.isConfirmed) {\n this.$wait.start('myRunInstancetutorpoc');\n var value = this.hybridoptions.swarmlabname\n \t this.$root.$emit('hybrid_stop_instance_poc', value)\n Vue.delete(this.testactionrowindex, this.hybridoptions.index)\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n\t },\n\t\tasync checkHybridoptions(){\n var storage = this.hybridoptions.swarmlabname\n var myaction = {}\n myaction.isConfirmed = 'true'\n\t\t this.setHybridoptions(myaction)\n\t },\n\t\tasync setHybridoptions(action){\n this.$wait.start('myRunInstancetutorpoc');\n \n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.password = this.hybridoptions.password\n value.port = this.hybridoptions.port\n \tthis.$root.$emit('hybrid_start_instance_poc', value)\n Vue.set(this.testactionrowindex, value.swarmlabname, value.index)\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\n\t\t},\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeypoc += 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 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!./availablepoc.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!./availablepoc.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./availablepoc.vue?vue&type=template&id=12846354&\"\nimport script from \"./availablepoc.vue?vue&type=script&lang=js&\"\nexport * from \"./availablepoc.vue?vue&type=script&lang=js&\"\nimport style0 from \"./availablepoc.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 <!--\n <view-network>\n\n </view-network>\n -->\n <available-poc\n :key=\"componentKeyreloadpoc\" \n >\n\n </available-poc>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-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\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport card from '@/components/Card.vue'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\n//import AvailableServices from \"./mynetwork/availableservices.vue\";\nimport AvailablePoc from \"./mynetwork/availablepoc.vue\";\nexport default {\n components: {\n // ViewNetwork,\n AdhocView,\n card,\n // DockerServices,\n AvailablePoc\n },\n data () {\n return {\n componentKeyreloadpoc:1,\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_refresh_info_deploy_local', () => {\n this.componentKeyreloadpoc += 1\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_info_deploy_local')\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!./proofofconcept.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!./proofofconcept.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./proofofconcept.vue?vue&type=template&id=292bb397&\"\nimport script from \"./proofofconcept.vue?vue&type=script&lang=js&\"\nexport * from \"./proofofconcept.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('view-network'),_c('builder-services')],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-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(\"View and Manage your builds\")])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.$socket.disconnected)?_c('button',{staticClass:\"ti-unlink btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"You are disconnected from Swarmlab-hybrid\",\"disabled\":\"\"}}):_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"You are connected swarmlab-hybrid\",\"disabled\":\"\"}})]),_c('div',{staticClass:\"input-group-prepend\"}),_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.name)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-build')}}},[_vm._v(\" Build\")]):_vm._e(),(_vm.hybridshowdata.name)?_c('button',{staticClass:\"btn btn-outline-secondary ti-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-build-info')}}}):_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\" Connect\")]),_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-stop')}}},[_vm._v(\" Stop\")])]),_c('div',{staticClass:\"input-group-append\"})])]),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" ID \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.ID)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Image \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Image)+\" \")])]),_vm._v(\" \"),_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.name)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" RunningFor \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.RunningFor)+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Status \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Status)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" CreatedAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.CreatedAt)+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[(_vm.hybridshowdata.Networks&&_vm.addNetworkMenou==false)?_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.addNetwork(_vm.hybridshowdata,'on')}}},[_vm._v(\" Networks\")]):_vm._e(),(_vm.hybridshowdata.Networks&&_vm.addNetworkMenou==true)?_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.addNetwork(_vm.hybridshowdata,'off')}}},[_vm._v(\" Networks\")]):_vm._e()]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Networks)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Ports \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Ports)+\" \")])])]),(_vm.addNetworkMenou==true)?_c('div',{staticClass:\"card border-success bg-light mb-3\",staticStyle:{\"max-width\":\"100%\"}},[_c('div',{staticClass:\"card-header\"}),_c('div',{staticClass:\"card-body text-info\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 text-info\"},[_c('h5',{staticClass:\"card-title\"},[_vm._v(\"Select network\")])]),_c('div',{staticClass:\"col-6 text-info\"},[_vm._v(\" Connect a running container to multiple networks \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 text-info\"},[_c('b-form-select',{attrs:{\"options\":_vm.localNetworkoptions,\"multiple\":\"\",\"select-size\":4},model:{value:(_vm.selectedNetworks),callback:function ($$v) {_vm.selectedNetworks=$$v},expression:\"selectedNetworks\"}}),_c('div',{staticClass:\"mt-3\"},[_vm._v(\"Selected: \"),_c('strong',[_vm._v(_vm._s(_vm.selectedNetworks))])])],1),_c('div',{staticClass:\"col-6 text-info\"},[_c('img',{staticClass:\"border-white img-thumbnail\",attrs:{\"src\":require(\"@/assets/img/dockernetwork.png\"),\"alt\":\"...\"}})])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 text-info\"},[_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.updateNetwork(_vm.hybridshowdata,'update')}}},[_vm._v(\" Update\")])])])])]):_vm._e()],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>View and Manage your builds</b>\n </div>\n </div>\n\n<br>\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button\n v-if=\"$socket.disconnected\"\n class=\"ti-unlink btn btn-outline-danger\"\n round\n type=\"button\"\n title=\"You are disconnected from Swarmlab-hybrid\"\n disabled\n >\n </button>\n <button\n v-else\n class=\"ti-link btn btn-outline-success\"\n round\n type=\"button\"\n title=\"You are connected swarmlab-hybrid\"\n disabled\n >\n </button>\n </div>\n <div class=\"input-group-prepend\">\n<!--\n <button\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('start')\"\n >\n Start</button>\n-->\n </div>\n <div class=\"input-group-prepend\">\n <button\n v-if=\"hybridshowdata.name\"\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('container-build')\"\n >\n Build</button>\n <button\n v-if=\"hybridshowdata.name\"\n class=\"btn btn-outline-secondary ti-info\"\n round\n type=\"button\"\n @click=\"onAction('container-build-info')\"\n >\n </button>\n <button\n v-else\n class=\"btn btn-outline-secondary\"\n round\n type=\"button\"\n \t\t\t\t\t\t\t\t\t\t\t\tdisabled\n >\n Connect</button>\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onAction('container-stop')\"\n >\n Stop</button>\n </div>\n\n <div class=\"input-group-append\">\n </div>\n\n </div>\n </b-container>\n <b-container fluid>\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n ID\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.ID }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.Image }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.name }}\n </div>\n <div class=\"col-2 text-info\" >\n RunningFor\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.RunningFor }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Status }}\n </div>\n\n <div class=\"col-2 text-info\" >\n CreatedAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.CreatedAt }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n\n <div class=\"col-2 text-info\" >\n <button\n v-if=\"hybridshowdata.Networks&&addNetworkMenou==false\"\n class=\"btn btn-outline-info btn-sm\"\n round\n type=\"button\"\n @click=\"addNetwork(hybridshowdata,'on')\"\n >\n Networks</button>\n <button\n v-if=\"hybridshowdata.Networks&&addNetworkMenou==true\"\n class=\"btn btn-outline-warning btn-sm\"\n round\n type=\"button\"\n @click=\"addNetwork(hybridshowdata,'off')\"\n >\n Networks</button>\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Networks }}\n </div>\n\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.Ports }}\n </div>\n </div> <!-- row -->\n<!--\n'{\"ID\":\"{{ .ID }}\", \"Image\": \"{{ .Image }}\", \"Names\":\"{{ .Names }}\", \"Ports\":\"{{.Ports}}\", \n\"Networks\":\"{{.Networks}}\", \"Status\":\"{{.Status}}\",\"RunningFor\":\"{{.RunningFor}}\",\"CreatedAt\":\"{{.CreatedAt}}\"}'\n-->\n </b-container>\n\n <!-- Networks -->\n\n<div class=\"card border-success bg-light mb-3\" style=\"max-width: 100%;\"\n\tv-if=\"addNetworkMenou==true\"\n>\n <div class=\"card-header\"></div>\n <div class=\"card-body text-info\">\n <div class=\"row\">\n <div class=\"col-6 text-info\">\n \t\t\t\t<h5 class=\"card-title\">Select network</h5>\n </div>\n <div class=\"col-6 text-info\">\n\t\t\t\t\t\tConnect a running container to multiple networks\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-6 text-info\">\n\t\t\t\t\t\t<b-form-select v-model=\"selectedNetworks\" :options=\"localNetworkoptions\" multiple :select-size=\"4\"></b-form-select>\n\t\t\t\t\t\t<div class=\"mt-3\">Selected: <strong>{{ selectedNetworks }}</strong></div>\n </div>\n <div class=\"col-6 text-info\">\n \t\t\t<img class=\"border-white img-thumbnail\" src=\"@/assets/img/dockernetwork.png\" alt=\"...\">\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-6 text-info\">\n <button\n class=\"btn btn-outline-warning btn-sm\"\n round\n type=\"button\"\n @click=\"updateNetwork(hybridshowdata,'update')\"\n >\n Update</button>\n </div>\n </div>\n\n\n </div>\n</div>\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 card from '@/components/Card.vue'\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});\n\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n addNetworkMenou:false,\n selectedNetworks:[],\n localNetworkoptions:[],\n localNetworkdefault:'',\n STATUS:{},\n CONFIG:{\n 'status':'',\n 'workerkey':'',\n 'swarmlab_public_wgkey':'',\n 'server_ip':'',\n 'allowed_ips':'',\n 'wg_port':'',\n 'wg_ip':'',\n 'swarm_ip':'',\n 'privatekey':'',\n 'publickey':'',\n 'workerkey':'',\n 'privatekey':'',\n 'publickey':'',\n 'server_ip':''\n },\n sshpid:0,\n buildpid:0,\n CONFIGallowed_ips:'',\n swarmlabname:'swarmlab-sec',\n swarmlabname_port:'',\n swarmlabname_size:3,\n swarmlabname_git:'',\n // run on \n hybridshowdata:{},\n issocket:'close',\n setFilter: {},\n searchFor: {},\n resetFilter: {}\n\t \n\t\t}\n },\n beforeMount () {\n //console.log('send')\n },\n\tmounted() {\n\t//\tthis.$root.$on('SERVER_build_set_sshpid', (data) => {\n // this.sshpid = data.pid\n\t//\t})\n\t\tthis.$root.$on('SERVER_build_set_buildpid', (data) => {\n this.buildpid = data.pid\n\t\t})\n\t\tthis.$root.$on('BUILD_hybrid_show_info', (data) => {\n\t\t\tthis.$nextTick(function () {\n this.hybridshowdata = data\n this.addNetworkMenou = false\n this.selectedNetworks = []\n this.localNetworkoptions = []\n this.localNetworkdefault = ''\n //console.log(JSON.stringify(this.hybridshowdata))\n\t\t\t})\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 var log = store.dispatch(\"pipelineLLO/settoken\",{\n token:this.token\n })\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('BUILD_hybrid_show_info')\n\t\tthis.$root.$off('SERVER_build_set_buildpid')\n\t\t//this.$root.$off('SERVER_build_set_sshpid')\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\t\tasync onAction(action){\n if(action == 'container-logs'){\n //this.$socket.client.open();\n //this.$socket.client.emit('build-vmlist', 'test');\n //this.$root.$emit('SERVER_build_vmlist')\n console.log('logs---------- ' + JSON.stringify(this.hybridshowdata))\t\n }else if(action == 'container-build-info'){\n var info = `\n <b-container fluid>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <h4><b>Tips and caveats</b></h4>\n\n <div class=\"list-group\">\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\"><b>Install software</b></h5>\n </div>\n <p class=\"mb-1 list-group-item list-group-item-info\">\n <b>Vagrant, Packer</b> and <b>VirtualBox</b> must be installed\n </p>\n <p class=\"mb-1 list-group-item list-group-item-info\">\n You can find installation instructions <a href=\"https://git.swarmlab.io:3000/swarmlab/swarmlab-build-install\" target=\"new\">here</a>\n </p>\n\n\n </div> <!-- list -->\n\n </div> <!-- col -->\n </div> <!-- row -->\n </b-container fluid>\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: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: false,\n confirmButtonText: 'ok! '\n })\n }else if(action == 'container-build'){\n var info = `\n <b-container fluid>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <h4><b>Tips and caveats</b></h4>\n\n <div class=\"list-group\">\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\"><b>Disk space</b></h5>\n </div>\n <p class=\"mb-1 list-group-item list-group-item-info\">\n You need to run Builder on a machine with a <b>lot of free disk space</b> (sometimes 50 GB or more). <br> The installation media, VM(s) and box(es) take considerable amounts of space, at least temporarily.\n </p>\n </div> <!-- list -->\n\n <div class=\"list-group\">\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\"><b>Time</b></h5>\n </div>\n <p class=\"mb-1 list-group-item list-group-item-info\">\n Building a box <b>can easily take several hours</b>, most notably because installing OS updates is time-consuming.\n </p>\n </div> <!-- list -->\n \n <div class=\"list-group\">\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\"><b>Incompatibilities</b></h5>\n </div>\n <p class=\"mb-1 list-group-item list-group-item-info\">\n Beware of version incompatibilities of hypervisors.\n <small class=\"text-left list-group-item list-group-item-info\">\n For example a box built with VirtualBox 6.0 refusing to run on VirtualBox 5.<br>\n </small>\n If in doubt, deliberately use older hypervisor versions on the build machine.\n </p>\n </div> <!-- list -->\n\n <div class=\"list-group\">\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\"><b>Output</b></h5>\n </div>\n <p class=\"mb-1 list-group-item list-group-item-success\">\n The output of a successful build is a .box file.\n </p>\n </div> <!-- list -->\n \n <div class=\"list-group\">\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\"><b>Install software</b></h5>\n </div>\n <p class=\"mb-1 list-group-item list-group-item-success\">\n With ansible you can install additional software into the box,\n </p>\n </div> <!-- list -->\n \n\n </div> <!-- col -->\n </div> <!-- row -->\n </b-container fluid>\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: false,\n confirmButtonText: 'Create the box! '\n }).then((result)=> {\n this.buildAndClose(result);\n })\n\n }else if(action == 'container-stop'){\n var obj = {}\n obj.pid = this.buildpid\n console.log('PID '+ this.buildpid)\n this.$root.$emit('SERVER_build_kill',obj)\n }else if(action == 'stop'){\n this.$socket.client.emit('stop', this.swarmlabname);\n }\n\t\t\t},\n async buildAndClose(result){\n var obj = {}\n obj.name = this.hybridshowdata.name\n obj.dir = this.hybridshowdata.dir\n obj.config = this.hybridshowdata.config\n console.log('value result '+ JSON.stringify(result))\n console.log('value obj '+ JSON.stringify(obj))\n if (result.isConfirmed) {\n console.log('yes') \n this.$root.$emit('SERVER_build_image',obj)\n // run on mytable.vue\n //refresh table\n //this.$root.$emit('hybrid_stop_instance', value)\n var info = `\n <b-container fluid>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n\n <p class=\"mb-1 list-group-item list-group-item-success\">\n You can track the pending box creation from the embeded console or the graphical interface that will open.\n </p>\n\n <p class=\"mb-1 list-group-item list-group-item-info\">\n There will also be a spinny wheel above the console indicating work in proccess.\n </p>\n\n <p class=\"mb-1 list-group-item list-group-item-success\">\n Please note that closing the window(graphical) WILL NOT terminate the process.\n </p>\n\n <p class=\"mb-1 list-group-item list-group-item-info\">\n If you wish to forcefully stop you should use the STOP button.\n </p>\n\n <p class=\"mb-1 list-group-item list-group-item-success\">\n Note that the stop operation itself may take a little time.\n </p>\n\n <p class=\"mb-1 list-group-item list-group-item-light\">\n When the proccess is done you should see something like this:\n\n <br>\n ==> Builds finished. The artifacts of successful builds are:\n <br>\n --> virtualbox-iso: 'virtualbox' provider box: ../../builds/ubuntu-18.04.virtualbox.box\n <br>\n Build 'virtualbox-iso' finished after 1 hour 30 minutes 28 seconds\n </p>\n\n\n </div> <!-- col -->\n </div> <!-- row -->\n </b-container fluid>\n `\n this.$swal({\n type: 'info',\n html: info,\n icon: '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: false,\n confirmButtonText: 'ok! '\n })\n }else {\n console.log('no') \n }\n },\n },\n\n\n actions: {\n\n\t}\n\n};\n</script>\n\n<style lang=\"scss\">\n\n\n\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\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!./mybuilder.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!./mybuilder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mybuilder.vue?vue&type=template&id=ba17f154&\"\nimport script from \"./mybuilder.vue?vue&type=script&lang=js&\"\nexport * from \"./mybuilder.vue?vue&type=script&lang=js&\"\nimport style0 from \"./mybuilder.vue?vue&type=style&index=0&lang=scss&\"\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',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setRefresh}},[_vm._v(\" Refresh table\")])]),_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 Name\"},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.vuetablekeyl,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)}}})])}},{key:\"actionslocal\",fn:function(props){return _c('div',{},[(_vm.checkbuildrowindex(props.rowData,props.rowIndex))?_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.name] == props.rowIndex)?_c('button',{staticClass:\"ti-trash btn btn-info btn-sm\",attrs:{\"title\":\"Remove Box_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('delete-item', props.rowData, props.rowIndex)}}}):_vm._e()]):_vm._e()])}}])}),_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 class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-info\" \n round\n type=\"button\"\n @click=\"setRefresh\">\n Refresh table</button>\n </div>\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 Name\"\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=\"vuetablekeyl\"\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\n\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\"\n v-if=\"checkbuildrowindex(props.rowData,props.rowIndex)\"\n >\n <button\n v-if=\"testactionrowindex[props.rowData.name] == props.rowIndex\"\n class=\"ti-trash btn btn-info btn-sm\"\n title=\"Remove Box_Instance\"\n round\n @click=\"onAction('delete-item', props.rowData, props.rowIndex)\"\n >\n </button>\n </div>\n </div>\n\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 {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 actionrowindex:'',\n\t playbookInfo: {},\n token: '',\n build_file :{},\n testactionrowindex:[], // downloaded used in installed\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 \trmbox:{},\n\t\tvuetablekeyl:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'name',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'name',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '65%'\n },\n {\n name: 'Image',\n title: '<span class=\"orange\"></span>Image',\n //sortField: 'Image',\n visible:false,\n dataClass: 'left aligned w-25',\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: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'Status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'Status',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\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:actionslocal', // <----\n title: 'Box',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\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.url_80+\"/buildservices\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'name',\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': '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('SERVER_build_closebuild', (v) => {\n console.log('build from server '+JSON.stringify(v))\n if(v.build == \"ok\" && v.file !== 'false'){\n Vue.set(this.build_file, v.name, v.name)\n // this.$set(this.user, 'last_name', 'Doe')\n console.log('build ok '+JSON.stringify(this.build_file))\n }else{\n Vue.delete(this.build_file, v.name)\n console.log('build no '+JSON.stringify(this.build_file))\n }\n if( v.homefile_exist == 'yes'){\n console.log('build no '+JSON.stringify(v.homefile))\n var info = `\n <b-container fluid>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n \n <h5> <b>File exists</b> </h5>\n <h5> Error: You cannot Create a VM that already exists.</h5>\n <h5> Please rename or remove the file and Retry </h5>\n <p class=\"mb-1 list-group-item list-group-item-success\">\n ${v.homefile}\n </p>\n </div> <!-- col -->\n </div> <!-- row -->\n </b-container fluid>\n `\n this.$swal({\n type: 'info',\n html: info,\n icon: '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: false,\n confirmButtonText: 'ok! '\n })\n }\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\t this.$root.$off('SERVER_build_closebuild')\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\tsetRefresh () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\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\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.rmbox = data\n\t\t\tvar obj = {}\n\t\t\tobj.name = data.name\n\t\t\tobj.dir = data.dir\n\t\t\tobj.config = data.config\n this.$root.$emit('BUILD_hybrid_show_info',data)\n console.log('index '+this.actionrowindex)\n console.log('data '+JSON.stringify(obj))\n\t\t\tif(action == 'view-item' ){\n console.log('data' + JSON.stringify(data))\n console.log('index '+JSON.stringify(index))\n console.log('build info '+JSON.stringify(this.build_file))\n\t\t\t}else if(action == 'delete-item' ){\n var info = `\n <b-container fluid>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <p class=\"mb-1 list-group-item list-group-item-success\">\n Remove\n </p>\n </div> <!-- col -->\n </div> <!-- row -->\n </b-container fluid>\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: false,\n confirmButtonText: 'Remove the box! '\n }).then((result)=> {\n this.removeAndClose(result);\n })\n console.log('data da1 '+JSON.stringify(data))\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n async removeAndClose(result){\n var obj = {}\n obj.instance = this.rmbox.name\n obj.dir = this.rmbox.dir\n obj.config = this.rmbox.config\n if (result.isConfirmed) {\n //console.log('value obj11111111111111111111111 '+ JSON.stringify(result))\n var res1 = await store.dispatch('pipelineLLO/rmbuildstatus', obj)\n console.log('value objdata111111111111111111 '+ JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n Vue.delete(this.testactionrowindex, data.name)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n }else {\n console.log('no') \n }\n },\n\t\tasync checkbuildrowindex(data,index){\n if(this.testactionrowindex[index] == index){\n var obj = {}\n obj.token = this.token\n obj.instance = data.name\n var res1 = await store.dispatch('pipelineLLO/getbuildstatus', obj)\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.name, index)\n }else{\n Vue.delete(this.testactionrowindex, data.name)\n }\n console.log('resi NO3 '+JSON.stringify(this.testactionrowindex))\n }else{\n var obj = {}\n obj.token = this.token\n obj.instance = data.name\n var res = await store.dispatch('pipelineLLO/getbuildstatus', obj)\n if(res.data.data == 'yes'){\n Vue.set(this.testactionrowindex, index, index)\n }else{\n Vue.delete(this.testactionrowindex, data.name)\n }\n console.log('resi NO2 '+JSON.stringify(this.testactionrowindex))\n }\n\t\t},\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeyl += 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 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!./builderservices.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!./builderservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./builderservices.vue?vue&type=template&id=0eabb7b6&\"\nimport script from \"./builderservices.vue?vue&type=script&lang=js&\"\nexport * from \"./builderservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./builderservices.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 <view-network>\n\n </view-network>\n\n <builder-services>\n\n </builder-services>\n\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-view>\n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport ViewNetwork from \"./mynetwork/mybuilder.vue\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport BuilderServices from \"./mynetwork/builderservices.vue\";\nimport card from '@/components/Card.vue'\n//import AvailableServices from \"./mynetwork/availableservices.vue\";\nexport default {\n components: {\n ViewNetwork,\n AdhocView,\n card,\n BuilderServices\n // AvailableServices\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!./mybuild.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!./mybuild.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mybuild.vue?vue&type=template&id=361dff8c&\"\nimport script from \"./mybuild.vue?vue&type=script&lang=js&\"\nexport * from \"./mybuild.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)])])}\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 Deploy\")])])]),_c('br'),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"8\"}},[_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\":\"Image\"},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\":\"4\"}},[_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\":\"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\":\"8\"}},[_c('ValidationProvider',{ref:\"hybrid_name\",attrs:{\"name\":\"Name\",\"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.name),expression:\"deploy.name\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.name == 1, 'is-invalid': _vm.isDeployValid.name == 2},attrs:{\"type\":\"HybridError\",\"name\":\"Name\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Name\"},domProps:{\"value\":(_vm.deploy.name)},on:{\"keyup\":function($event){return _vm.isValid('name')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"name\", $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('name')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_network\",attrs:{\"name\":\"Network\",\"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.network),expression:\"deploy.network\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.network == 1, 'is-invalid': _vm.isDeployValid.network == 2},attrs:{\"type\":\"text\",\"name\":\"Network\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Network Name\"},domProps:{\"value\":(_vm.deploy.network)},on:{\"keyup\":function($event){return _vm.isValid('network')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"network\", $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('network')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_cpu\",attrs:{\"name\":\"Cpu\",\"rules\":\"required|alpha_num_cpu\"},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.cpu),expression:\"deploy.cpu\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.cpu == 1, 'is-invalid': _vm.isDeployValid.cpu == 2},attrs:{\"type\":\"text\",\"name\":\"Cpu\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Limit CPU e.g. 0.50\"},domProps:{\"value\":(_vm.deploy.cpu)},on:{\"keyup\":function($event){return _vm.isValid('cpu')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"cpu\", $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('cpu')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_memory\",attrs:{\"name\":\"Memory\",\"rules\":\"required|alpha_num_memory\"},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.memory),expression:\"deploy.memory\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.memory == 1, 'is-invalid': _vm.isDeployValid.memory == 2},attrs:{\"type\":\"text\",\"name\":\"Memory\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Limit Memory e.g. 500\"},domProps:{\"value\":(_vm.deploy.memory)},on:{\"keyup\":function($event){return _vm.isValid('memory')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"memory\", $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('memory')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_networkport\",attrs:{\"name\":\"Networkport\",\"rules\":\"mybetween:1,65535\"},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.networkport),expression:\"deploy.networkport\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.networkport == 1, 'is-invalid': _vm.isDeployValid.networkport == 2},attrs:{\"type\":\"text\",\"name\":\"Networkport\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Net Port (inside the container)\"},domProps:{\"value\":(_vm.deploy.networkport)},on:{\"keyup\":function($event){return _vm.isValid('networkport')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"networkport\", $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('networkport')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('ValidationProvider',{ref:\"hybrid_url\",attrs:{\"name\":\"Url\",\"rules\":\"required|alpha_url\"},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.url),expression:\"deploy.url\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.url == 1, 'is-invalid': _vm.isDeployValid.url == 2},attrs:{\"type\":\"text\",\"name\":\"Url\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"link to README file (see info button for more)\"},domProps:{\"value\":(_vm.deploy.url)},on:{\"keyup\":function($event){return _vm.isValid('url')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"url\", $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('url')}}})])]),_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(\" Deploy \")])])])]),_c('b-col',{attrs:{\"cols\":\"2\"}}),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"custom-control custom-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.usersjoin),expression:\"deploy.usersjoin\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":\"customStack\",\"value\":\"true\",\"unchecked-value\":\"false\"},domProps:{\"checked\":Array.isArray(_vm.deploy.usersjoin)?_vm._i(_vm.deploy.usersjoin,\"true\")>-1:(_vm.deploy.usersjoin)},on:{\"change\":function($event){var $$a=_vm.deploy.usersjoin,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=\"true\",$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.deploy, \"usersjoin\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.deploy, \"usersjoin\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.deploy, \"usersjoin\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"customStack\"}},[_vm._v(\"Users can join the lab instance\")])])])],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 <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab hybrid Deploy</b>\n </div>\n </div>\n\n<br>\n <b-row>\n <b-col cols=\"8\">\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=\"Image\"\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=\"4\">\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=\"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 <b-row>\n <b-col cols=\"8\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_name\"\n\t\t\t\t\t\tname=\"Name\"\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=HybridError \n\t\t\t\t\t\t name=\"Name\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.name == 1, 'is-invalid': isDeployValid.name == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Name\"\n v-model=\"deploy.name\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('name')\"\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('name')\">\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 <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_network\"\n\t\t\t\t\t\tname=\"Network\"\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\t\t\tname=\"Network\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.network == 1, 'is-invalid': isDeployValid.network == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Network Name\"\n v-model=\"deploy.network\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('network')\"\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('network')\">\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 </b-row>\n\n <b-row>\n <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n\t\t\t\t\t\tref=\"hybrid_cpu\"\n\t\t\t\t\t\tname=\"Cpu\"\n\t\t\t\t\t\trules=\"required|alpha_num_cpu\" \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=\"Cpu\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.cpu == 1, 'is-invalid': isDeployValid.cpu == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Limit CPU e.g. 0.50\"\n v-model=\"deploy.cpu\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('cpu')\"\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('cpu')\"\n >\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 <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n\t\t\t\t\t\tref=\"hybrid_memory\"\n\t\t\t\t\t\tname=\"Memory\"\n\t\t\t\t\t\trules=\"required|alpha_num_memory\" \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=\"Memory\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.memory == 1, 'is-invalid': isDeployValid.memory == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Limit Memory e.g. 500\"\n v-model=\"deploy.memory\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('memory')\"\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('memory')\">\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 <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n\t\t\t\t\t\tref=\"hybrid_networkport\"\n\t\t\t\t\t\tname=\"Networkport\"\n\t\t\t\t\t\trules=\"mybetween:1,65535\"\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=\"Networkport\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.networkport == 1, 'is-invalid': isDeployValid.networkport == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Net Port (inside the container)\"\n v-model=\"deploy.networkport\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('networkport')\"\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('networkport')\">\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 </b-row>\n\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab url ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"12\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_url\"\n\t\t\t\t\t\tname=\"Url\"\n\t\t\t\t\t\trules=\"required|alpha_url\" \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.url == 1, 'is-invalid': isDeployValid.url == 2}\"\n\t\t\t\t\t\t name=\"Url\"\n aria-label=\"Small\" \n\t\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"link to README file (see info button for more)\"\n v-model=\"deploy.url\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('url')\"\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('url')\"\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 </b-row>\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> Deploy\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\t\t\t\t\t\t\t\t<div class=\"custom-control custom-switch\">\n\t\t\t\t\t\t\t\t\t<input type=\"checkbox\" class=\"custom-control-input\" id=\"customStack\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.usersjoin\"\n \t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n \t\t\t\t\t\t\t\t\tunchecked-value=\"false\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<label class=\"custom-control-label\" for=\"customStack\">Users can join the lab instance</label>\n\t\t\t\t\t\t\t\t</div>\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\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 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/*\n async isValidate (event) {\n this.$nextTick(() => {\n //await this.isValid(event)\n //console.log(\"keywords value: \" + this.deploy.image);\n });\n },\n*/\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\t\t\t\t\tfor (const [key, value] of Object.entries(this.isDeployValid)) {\n\t\t\t\t\t\t//console.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\tif(isAllValid){ \n\t\t\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/adddeploy\",{\n\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\tdeploy:this.deploy\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tthis.$root.$emit('hybrid_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 deployments\" 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=ea25a184&\"\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 deployments\")])])]),_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)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-stop')}}},[_vm._v(\" Remove Stack \")]):_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-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-stop')}}},[_vm._v(\" Remove Service \")]):_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 Service \")]):_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 deployments</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-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-stop')\"\n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n Remove Stack\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('service-stop')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n >\n Remove Service\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-warning\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-restart')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n >\n Restart Service\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 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: 'bootstrapusersjoin',\n title: '<span class=\"orange\"></span>Public',\n sortField: 'bootstrapusersjoin',\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 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+\"/swarmlabhybridbootstrapservices\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\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': '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 /*\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('hybrid_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 onActionLog(action) {\n if(action == 1){\n var log = await store.dispatch(\"pipelineLLO/hybrid_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 stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> <br><br> Services, 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/hybrid_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/stackrm\",{\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=3476c547&\"\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","<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 </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\";\nexport default {\n components: {\n card,\n MydeployManageBootstrap,\n MydeployManageView\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!./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=741da4ee&\"\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-6 order-first \"},[_c('br'),_c('myllo-search')],1),_c('div',{staticClass:\"col-6 order-last\"},[_c('br'),_c('myllo-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\"},[(_vm.datadir)?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/academy.png\"),\"alt\":\"...\"}}):_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/library.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor1\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.datadir),expression:\"datadir\"}],staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('b-container',{staticClass:\"container\"},[_c('div',{staticClass:\"row justify-content-center myscrool\"},[_c('div',{staticClass:\"col-xl-10 col-12\"},[_c('div',{staticClass:\"timeline timeline-line-solid\"},[_c('span',{staticClass:\"timeline-label\"},[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.datatitle))])]),_vm._l((_vm.coursesview),function(course,i){return _c('div',{staticClass:\"timeline-item\"},[(!course.exercise_file)?_c('div',[_c('div',{staticClass:\"timeline-point timeline-point\"}),_c('div',{staticClass:\"timeline-event shadow p-3 mb-5 bg-white rounded\"},[_c('div',{staticClass:\"widget has-shadow\"},[_c('div',{staticClass:\"widget-header d-flex align-items-center\",class:{ active: i === _vm.activeItem}},[_c('div',{staticClass:\"user-image\"},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":require(\"@/assets/img/penguinfledgling.png\"),\"alt\":\"...\"}})]),_c('div',{staticClass:\"d-flex flex-column mr-auto\"},[_c('div',{staticClass:\"title\"},[_c('span',{staticClass:\"username\"},[_vm._v(_vm._s(course.title)+\" \")])])])]),_c('div',{staticClass:\"widget-body\"},[_c('p',[_vm._v(\" \"+_vm._s(course.subtitle)+\" \")]),_c('small',[_vm._v(_vm._s(course.desc))])]),_c('div',{staticClass:\"widget-footer d-flex align-items-center\"},[_c('div',{staticClass:\"col-12 no-padding d-flex justify-content-end\"},[_c('div',{staticClass:\"meta\"},[_c('ul',{staticClass:\"list-group list-group-horizontal\"},[(course.doc_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'asciidoc',i)}}},[_c('small'),_vm._v(\" \"),_c('span',{staticClass:\"rounded-circle bg-dark text-white ti-book\",attrs:{\"title\":\"doc\"}})])]):_vm._e(),(course.code_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'asciinema',i)}}},[_c('small'),_c('span',{staticClass:\"rounded-circle text-success ti-shortcode\",attrs:{\"title\":\"asciinema\"}})])]):_vm._e(),(course.video_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'video',i)}}},[_c('small'),_c('span',{staticClass:\"text-info ti-video-camera\",attrs:{\"title\":\"video\"}})])]):_vm._e()])])])])])])]):_vm._e()])})],2)]),_c('div',{staticClass:\"col-xl-10 col-12\"},[_c('div',{staticClass:\"timeline timeline-line-solid\"},[_c('span',{staticClass:\"timeline-label\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"Exercises\")])]),_vm._l((_vm.coursesview),function(course,i){return _c('div',{staticClass:\"timeline-item\"},[(course.exercise_file)?_c('div',[_c('div',{staticClass:\"timeline-point timeline-point\"}),_c('div',{staticClass:\"timeline-event shadow p-3 mb-5 bg-white rounded\"},[_c('div',{staticClass:\"widget has-shadow\"},[_c('div',{staticClass:\"widget-header d-flex align-items-center\",class:{ active: i === _vm.activeItem}},[_c('div',{staticClass:\"user-image\"},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":require(\"@/assets/img/penguinfledgling.png\"),\"alt\":\"...\"}})]),_c('div',{staticClass:\"d-flex flex-column mr-auto\"},[_c('div',{staticClass:\"title\"},[_c('span',{staticClass:\"username\"},[_vm._v(_vm._s(course.title)+\" \")])])])]),_c('div',{staticClass:\"widget-body\"},[_c('p',[_vm._v(\" \"+_vm._s(course.subtitle)+\" \")]),_c('small',[_vm._v(_vm._s(course.desc))])]),_c('div',{staticClass:\"widget-footer d-flex align-items-center\"},[_c('div',{staticClass:\"col-12 no-padding d-flex justify-content-end\"},[_c('div',{staticClass:\"meta\"},[_c('ul',{staticClass:\"list-group list-group-horizontal\"},[(course.exercise_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'exercise',i)}}},[_c('small'),_vm._v(\" \"),_c('span',{staticClass:\"rounded-circle bg-dark text-white ti-book\",attrs:{\"title\":\"Challenge\"}})])]):_vm._e(),(course.exercise_answerfile)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'exerciseanswer',i)}}},[_c('small'),_c('span',{staticClass:\"text-info ti-book\",attrs:{\"title\":\"Answer\"}})])]):_vm._e()])])])])])])]):_vm._e()])}),_c('span',{staticClass:\"timeline-label\"},[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.datatitle))])])],2)])])])],1),_c('br'),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.datadir),expression:\"datadir\"}],staticClass:\"progress\"},[_c('div',{staticClass:\"progress-bar progress-bar-striped bg-secondary\",style:({ width: _vm.progress + '%' }),attrs:{\"role\":\"progressbar\",\"aria-valuenow\":\"25\",\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"}},[_vm._v(_vm._s(_vm.progress))])]),_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 Name\"},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-prepend\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchcourselang),expression:\"searchcourselang\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.searchcourselang=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Lang...\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"English\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Ελληνικά\")])])]),_c('div',{staticClass:\"input-group-prepend\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchcourselevel),expression:\"searchcourselevel\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.searchcourselevel=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Level...\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"Elementary\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Intermediate\")]),_c('option',{attrs:{\"value\":\"3\"}},[_vm._v(\"Advanced\")]),_c('option',{attrs:{\"value\":\"4\"}},[_vm._v(\"Expert\")]),_c('option',{attrs:{\"value\":\"5\"}},[_vm._v(\"Guru\")])])]),_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.vuetablekeyf,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:{\"title\":\"View Course Details\",\"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:{\"title\":\"View Course Details\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"View Course Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-info', 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 <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/academy.png\" alt=\"...\"\n v-if=\"datadir\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/library.png\" alt=\"...\"\n v-else\n >\n </div>\n\n <v-wait for=\"myRunInstancetutor1\">\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 class=\"bv-example-row\"\n v-show=\"datadir\"\n>\n\n\n\n<!-- timeline -->\n\n<b-container class=\"container\" >\n <div class=\"row justify-content-center myscrool\">\n <div class=\"col-xl-10 col-12\">\n <div class=\"timeline timeline-line-solid\">\n <span class=\"timeline-label\">\n <span class=\"label\">{{datatitle}}</span>\n </span>\n<!-- timeline -->\n <div class=\"timeline-item\"\n\t\t\t\t\t\t\t\tv-for=\"(course, i) in coursesview\"\n\t\t\t\t\t\t\t\t>\n<div\n v-if=\"!course.exercise_file\"\n>\n <div class=\"timeline-point timeline-point\"></div>\n <div class=\"timeline-event shadow p-3 mb-5 bg-white rounded\">\n <div class=\"widget has-shadow\" >\n <div class=\"widget-header d-flex align-items-center\"\n\t\t\t\t\t\t\t\t:class=\"{ active: i === activeItem}\"\n>\n <div class=\"user-image\">\n <img class=\"rounded-circle\" src=\"@/assets/img/penguinfledgling.png\" alt=\"...\">\n </div>\n <div class=\"d-flex flex-column mr-auto\">\n <div class=\"title\">\n <span class=\"username\">{{ course.title }} </span>\n </div>\n </div>\n<!--\n <div class=\"widget-options\">\n <div class=\"dropdown\">\n <button type=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"dropdown-toggle\">\n <i class=\"la la-ellipsis-h\"></i>\n </button>\n <div class=\"dropdown-menu\">\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-edit\"></i>Edit Post\n </a>\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-trash\"></i>Delete Post\n </a>\n </div>\n </div>\n </div>\n-->\n </div>\n <div class=\"widget-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t{{ course.subtitle}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<small>{{ course.desc}}</small>\n </div>\n <div class=\"widget-footer d-flex align-items-center\">\n <div class=\"col-12 no-padding d-flex justify-content-end\">\n <div class=\"meta\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"list-group list-group-horizontal\">\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.doc_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t <a href=\"#\" \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'asciidoc',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small> <span title=\"doc\" class=\"rounded-circle bg-dark text-white ti-book\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.code_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'asciinema',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small><span title=\"asciinema\" class=\"rounded-circle text-success ti-shortcode\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.video_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'video',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small><span title=\"video\" class=\"text-info ti-video-camera\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n </ul>\n </div>\n </div>\n </div>\n</div>\n </div>\n </div>\n </div>\n<!-- timeline right -->\n\n </div>\n </div>\n\n\n\n\n <div class=\"col-xl-10 col-12\">\n <div class=\"timeline timeline-line-solid\">\n <span class=\"timeline-label\">\n <span class=\"label\">Exercises</span>\n </span>\n<!-- timeline -->\n <div class=\"timeline-item\"\n\t\t\t\t\t\t\t\tv-for=\"(course, i) in coursesview\"\n\t\t\t\t\t\t\t\t>\n\n<div\n v-if=\"course.exercise_file\"\n>\n <div class=\"timeline-point timeline-point\"></div>\n <div class=\"timeline-event shadow p-3 mb-5 bg-white rounded\">\n <div class=\"widget has-shadow\" >\n <div class=\"widget-header d-flex align-items-center\"\n\t\t\t\t\t\t\t\t:class=\"{ active: i === activeItem}\"\n>\n <div class=\"user-image\">\n <img class=\"rounded-circle\" src=\"@/assets/img/penguinfledgling.png\" alt=\"...\">\n </div>\n <div class=\"d-flex flex-column mr-auto\">\n <div class=\"title\">\n <span class=\"username\">{{ course.title }} </span>\n </div>\n </div>\n<!--\n <div class=\"widget-options\">\n <div class=\"dropdown\">\n <button type=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"dropdown-toggle\">\n <i class=\"la la-ellipsis-h\"></i>\n </button>\n <div class=\"dropdown-menu\">\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-edit\"></i>Edit Post\n </a>\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-trash\"></i>Delete Post\n </a>\n </div>\n </div>\n </div>\n-->\n </div>\n <div class=\"widget-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t{{ course.subtitle}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<small>{{ course.desc}}</small>\n </div>\n <div class=\"widget-footer d-flex align-items-center\">\n <div class=\"col-12 no-padding d-flex justify-content-end\">\n <div class=\"meta\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"list-group list-group-horizontal\">\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.exercise_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t <a href=\"#\" \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'exercise',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small> <span title=\"Challenge\" class=\"rounded-circle bg-dark text-white ti-book\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.exercise_answerfile\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'exerciseanswer',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small><span title=\"Answer\" class=\"text-info ti-book\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n </ul>\n </div>\n </div>\n </div>\n\n</div>\n\n </div>\n </div>\n </div>\n<!-- timeline right -->\n <span class=\"timeline-label\">\n <span class=\"label\">{{datatitle}}</span>\n </span>\n\n </div>\n </div>\n\n\n\n </div>\n</b-container>\n\n\n\n\n\n<!--\n<div class=\"list-group myscrool\"\n>\n <a href=\"#\" class=\"list-group-item list-group-item-action flex-column align-items-start\"\nv-for=\"(course, i) in courses\"\n@click=\"viewllo(course,i)\"\n:class=\"{ active: i === activeItem}\"\n>\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\">{{course.title}}</h5>\n\n <small \n :class=\"checkClass(course)\"\n > {{ course.type }}\n \t<small class=\"ti-shortcode\"\n v-if=\"course.type=='asciinema'\"\n\t\t\t\t> </small>\n \t<small class=\"ti-video-camera\"\n v-if=\"course.type=='video'\"\n\t\t\t\t> </small>\n \t<small class=\"ti-book\"\n v-if=\"course.type=='asciidoc'\"\n\t\t\t\t> </small>\n \t<small class=\"ti-help-alt text-exercise\"\n v-if=\"course.type=='exercise'\"\n\t\t\t\t> </small>\n </small>\n\n </div>\n <small>{{ course.desc}}</small>\n </a>\n-->\n\n</div>\n</b-container>\n<br>\n\n\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"progress\"\n v-show=\"datadir\"\n >\n <div class=\"progress-bar progress-bar-striped bg-secondary\" role=\"progressbar\" :style=\"{ width: progress + '%' }\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">{{ progress }}</div>\n </div>\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 Name\"\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-prepend\">\n <select \n\tclass=\"custom-select custom-select-sm\" v-model=\"searchcourselang\">\n <option value=\"0\" selected>Lang...</option>\n <option value=\"1\">English</option>\n <option value=\"2\">Ελληνικά</option>\n </select>\n\t\t\t</div>\n\t\t\t<div class=\"input-group-prepend\">\n <select \n\tclass=\"custom-select custom-select-sm\" v-model=\"searchcourselevel\">\n <option value=\"0\" selected>Level...</option>\n <option value=\"1\">Elementary</option>\n <option value=\"2\">Intermediate</option>\n <option value=\"3\">Advanced</option>\n <option value=\"4\">Expert</option>\n <option value=\"5\">Guru</option>\n </select>\n\t\t\t</div>\n\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=\"vuetablekeyf\"\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 title=\"View Course Details\"\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 title=\"View Course Details\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"View Course Info\"\n round\n @click=\"onAction('run-info', 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 {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 \t coursesview:{},\n actionrowindex:'',\n activeItem: null,\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 datadir:'',\n datatitle:'',\n progress:0,\n searchcourselevel:0,\n searchcourselang:0,\n courses:[],\n courseshow:false,\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\tvuetablekeyf:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'title',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'title',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '20%'\n },\n {\n name: 'subtitle',\n title: '<span class=\"orange\"></span>Course',\n //sortField: 'subtitle',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '25%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'desc',\n title: '<span class=\"orange\"></span>Description',\n //sortField: 'desc',\n titleClass: 'center aligned',\n visible:true,\n width: '30%'\n },\n {\n name: 'lang',\n title: '<span class=\"orange\"></span>Lang',\n sortField: 'lang',\n titleClass: 'center aligned',\n dataClass: 'text-center',\n visible:true,\n width: '10%'\n },\n {\n name: '__slot:actions', // <----\n title: '<span class=\"d-flex justify-content-center\">Actions</span>',\n titleClass: 'center aligned',\n dataClass: 'text-center',\n width: '15%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/get_llo\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'title',\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'level': '',\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_progress_refresh', () => {\n Vue.nextTick( () => this.getprogress(this.datadir))\n\t\t})\n\t\tthis.$root.$on('hybrid_refresh_dockerservices', () => {\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\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\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_progress_refresh')\n\t\tthis.$root.$off('hybrid_refresh_dockerservices')\n\t\tthis.$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 getprogress(course){\n //console.log('course '+course)\n var value1 = {}\n value1.course = this.datadir\n \tvar llo = await store.dispatch('pipelineLLO/getprogress', value1)\n var sprogress = llo.data.data.progress.progress\n var synolochapter = this.courses.length\n //synolochapter--\n var synolo = Math.floor((sprogress/synolochapter)*100)\n this.progress = synolo\n },\n checkClass(course){\n if(course.type == 'video'){\n return 'text-primary'\n } else if(course.type == 'asciidoc'){\n return 'text-success'\n } else if(course.type == 'asciinema'){\n return 'text-info'\n } else if(course.type == 'exercise'){\n return 'text-warning'\n }else{\n return 'text-secondary'\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'level': this.searchcourselevel,\n\t\t\t\t\t\t'lang': this.searchcourselang,\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 viewllo (course,coursetype,i) {\n\n this.courseshow = true\n\t\t\tif(coursetype == 'video' ){\n //console.log(JSON.stringify(course))\n var value = {}\n value.type = coursetype\n value.course = course.video_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'asciidoc' ){\n var value1 = {}\n value1.dir = this.datadir\n value1.file = course.doc_file\n //console.log('asciidoc '+JSON.stringify(value1))\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course_ascii', value1)\n //console.log('asciidoc '+JSON.stringify(llo))\n //this.courses = JSON.parse(llo.data)\n var value = {}\n value.type = coursetype\n value.code = llo.data.data\n value.course = course.doc_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'asciinema' ){\n //console.log(JSON.stringify(course))\n var value = {}\n value.type = coursetype\n value.course = course.code_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'exercise' ){\n var value1 = {}\n value1.dir = this.datadir\n value1.file = course.exercise_file\n //console.log('asciidoc '+JSON.stringify(value1))\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course_ascii', value1)\n //console.log('asciidoc '+JSON.stringify(llo))\n //this.courses = JSON.parse(llo.data)\n var value = {}\n value.type = 'asciidoc'\n value.code = llo.data.data\n value.course = course.exercise_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'exerciseanswer' ){\n var value1 = {}\n value1.dir = this.datadir\n value1.file = course.exercise_answerfile\n //console.log('asciidoc '+JSON.stringify(value1))\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course_ascii', value1)\n //console.log('asciidoc '+JSON.stringify(llo))\n //this.courses = JSON.parse(llo.data)\n var value = {}\n value.type = 'asciidoc'\n value.code = llo.data.data\n value.course = course.exercise_answerfile\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}\n this.activeItem = i;\n this.getprogress(this.datadir)\n },\n async onAction (action, data, index) {\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'run-more' ){\n this.actionrowindex = index\n this.datadir = data.dir\n this.datatitle = data.title\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course', data.dir)\n this.courses = llo.data\n\t\t\t\tvar countchapter = Math.max.apply(Math, this.courses.map(function(o){return o.chapter;}))\n \t\t\t//console.log('countchapter '+ JSON.stringify(countchapter))\n var coursesnew1 = []\n\t\t\t\tfor(var i = 1; i <= countchapter; i++) {\n \t\t\t//console.log('count '+ JSON.stringify(i))\n var coursesnew = {}\n\t\t\t\t\t var coursetmp = this.courses.filter(x => x.chapter === i);\n var countcourse1 = coursetmp.length\n\n\t\t\t\t\t /*\n \t\t\tcoursesnew.video_file \t\t= coursetmp[ii].file\n \t\t\tcoursesnew.video_service \t= coursetmp[ii].service\n \t\t\tcoursesnew.doc_file \t\t\t= coursetmp[ii].file\n \t\t\tcoursesnew.code_file \t\t\t= coursetmp[ii].file\n \t\t\tcoursesnew.exercise_file \t= coursetmp[ii].file\n \t\t\tcoursesnew.exercise_difficulty = coursetmp[ii].difficulty\n\n \t\t\tcoursesnew.chapter \t\t\t\t= i\n \t\t\tcoursesnew.title \t\t\t\t\t= coursetmp[ii].title\n \t\t\tcoursesnew.subtitle \t\t\t= coursetmp[ii].subtitle\n \t\t\tcoursesnew.desc \t\t\t\t\t= coursetmp[ii].desc\n\t\t\t\t\t\t*/\n\n\t\t\t\t for(var ii = 0; ii < countcourse1; ii++) {\n \t\t\t//console.log('for '+ JSON.stringify(coursetmp))\n\t\t\t\t\t\t\tif( coursetmp[ii].type == 'video'){\n \t\t\tcoursesnew.video_file = coursetmp[ii].file\n \t\t\tcoursesnew.video_service = coursetmp[ii].service\n\t\t\t\t\t\t }else if( coursetmp[ii].type == 'asciidoc'){\n \t\t\tcoursesnew.doc_file = coursetmp[ii].file\n\t\t\t\t\t\t }else if( coursetmp[ii].type == 'asciinema'){\n \t\t\tcoursesnew.code_file = coursetmp[ii].file\n\t\t\t\t\t\t }else if( coursetmp[ii].type == 'exercise'){\n \t\t\tcoursesnew.exercise_file = coursetmp[ii].file\n \t\t\tcoursesnew.exercise_answerfile = coursetmp[ii].answerfile\n \t\t\tcoursesnew.exercise_difficulty = coursetmp[ii].difficulty\n\t\t\t\t\t\t }\n\n if(coursesnew.chapter == '' || coursesnew.chapter == undefined){\n \t\t\tcoursesnew.chapter = i\n\t\t\t\t\t\t\t}\n if(coursesnew.title == '' || coursesnew.title == undefined){\n \t\t\tcoursesnew.title = coursetmp[ii].title\n\t\t\t\t\t\t\t}\n if(coursesnew.subtitle == '' || coursesnew.subtitle == undefined){\n \t\t\tcoursesnew.subtitle = coursetmp[ii].subtitle\n\t\t\t\t\t\t\t}\n if(coursesnew.desc == '' || coursesnew.desc == undefined){\n \t\t\tcoursesnew.desc = coursetmp[ii].desc\n\t\t\t\t\t\t\t}\n if(coursesnew.course == '' || coursesnew.course == undefined){\n \t\t\tcoursesnew.course = this.datatitle\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcoursesnew1.push(coursesnew)\n\t\t\t\t}\n \t\t\t\tthis.coursesview = coursesnew1\n //console.log('new '+JSON.stringify(coursesnew1))\n \n //this.courses = JSON.parse(llo.data)\n\t\t\t}else if(action == 'run-info' ){\n //console.log(JSON.stringify(data))\n // {\"title\":\"linux\",\"subtitle\":\"Basics\",\"level\":\"Intermediate\",\"desc\":\"description\",\"dir\":\"hybrid-linux\"}\n var info = `\n<table class=\"table table-hover table-sm text-left\">\n <tbody>\n <tr>\n <th ><b>Title</b></th>\n <td>${data.title}</td>\n </tr>\n <tr>\n <td><b>Subtitle</b></td>\n <td>${data.subtitle}</td>\n </tr>\n <tr>\n <th ><b>Level</b></th>\n <td>${data.level}</td>\n </tr>\n <tr>\n <td ><b>Description</b></td>\n <td>${data.desc}</td>\n </tr>\n <tr>\n <td ><b>Language</b></td>\n <td>${data.lang}</td>\n </tr>\n <tr>\n <td ><b>License</b></td>\n <td>${data.license}</td>\n </tr>\n <tr>\n <td ><b>More Info</b></td>\n <td>${data.url}</td>\n </tr>\n </tbody>\n</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: 'Course 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 this.getprogress(this.datadir)\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeyf += 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\n .myscrool {\n height: 500px; \n max-height: 500px;\n overflow-y: auto;\n //margin-bottom: 10px;\n -webkit-overflow-scrolling: touch;\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\n\n\n\n\n.timeline {\n width: 100%;\n position: relative;\n padding: 1px 0;\n list-style: none;\n font-weight: 500\n}\n\n.timeline .timeline-item {\n padding-left: 0;\n padding-right: 30px\n}\n\n.timeline .timeline-item.timeline-item-right,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left) {\n padding-left: 30px;\n padding-right: 0\n}\n\n.timeline .timeline-item .timeline-event {\n width: 100%\n}\n\n.timeline:before {\n border-right-style: solid\n}\n\n.timeline:before,\n.timeline:after {\n content: \" \";\n display: block\n}\n\n.timeline:after {\n clear: both\n}\n\n.timeline:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 50%;\n height: 100%!important;\n margin-left: 2px;\n border-right-width: 4px;\n border-right-style: solid;\n border-right-color: rgba(52, 40, 104, .1)\n}\n\n.timeline .timeline-label .label {\n background-color: #e76c90;\n border-radius: 35px;\n color: #fff;\n display: inline;\n font-size: .85rem;\n font-weight: 600;\n line-height: 1;\n padding: .65rem 1.4rem;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap\n}\n\n.timeline.timeline-line-solid:before {\n border-right-style: solid\n}\n\n.timeline.timeline-line-dotted:before {\n border-right-style: dotted\n}\n\n.timeline.timeline-line-dashed:before {\n border-right-style: dashed\n}\n\n.timeline .timeline-item {\n position: relative;\n float: left;\n clear: left;\n width: 50%;\n margin-bottom: 20px\n}\n\n.timeline .timeline-item:before,\n.timeline .timeline-item:after {\n content: \"\";\n display: table\n}\n\n.timeline .timeline-item:after {\n clear: both\n}\n\n.timeline .timeline-item:last-child {\n margin-bottom: 0!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event {\n float: right!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event:before,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:before,\n.timeline .timeline-item.timeline-item-right>.timeline-event:after,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:after {\n right: auto!important;\n border-left-width: 0!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event:before,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:before {\n left: -15px!important;\n border-right-width: 15px!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event:after,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:after {\n left: -14px!important;\n border-right-width: 14px!important\n}\n\n.timeline .timeline-item>.timeline-event:before {\n top: 10px;\n right: -15px;\n border-top: 15px solid transparent;\n border-left-width: 15px;\n border-left-style: solid;\n border-right-width: 0;\n border-right-style: solid;\n border-bottom: 15px solid transparent\n}\n\n.timeline .timeline-item>.timeline-event:after {\n top: 11px;\n right: -14px;\n border-top: 14px solid transparent;\n border-left-width: 14px;\n border-left-style: solid;\n border-right-width: 0;\n border-right-style: solid;\n border-bottom: 14px solid transparent\n}\n\n.timeline .timeline-item>.timeline-point {\n top: 25px\n}\n\n.timeline .timeline-item:nth-of-type(2) {\n margin-top: 40px\n}\n\n.timeline .timeline-item.timeline-item-left,\n.timeline .timeline-item.timeline-item-right {\n clear: both!important\n}\n\n.timeline .timeline-item.timeline-item-right,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left) {\n float: right;\n clear: right\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-point,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-point {\n left: -14px\n}\n\n.timeline .timeline-item>.timeline-event {\n position: relative;\n float: left\n}\n\n.timeline .timeline-item>.timeline-event:before {\n border-left-color: rgba(52, 40, 104, .04);\n border-right-color: rgba(52, 40, 104, .04)\n}\n\n.timeline .timeline-item>.timeline-event:after {\n border-left-color: rgba(52, 40, 104, .04);\n border-right-color: rgba(52, 40, 104, .04)\n}\n\n.timeline .timeline-item>.timeline-event:before,\n.timeline .timeline-item>.timeline-event:after {\n content: \"\";\n display: inline-block;\n position: absolute\n}\n\n.timeline .timeline-item>.timeline-point {\n color: #5d5386;\n background: #5d5386;\n right: -14px;\n width: 12px;\n height: 12px;\n margin-top: -6px;\n margin-left: 8px;\n margin-right: 8px;\n position: absolute;\n z-index: 100;\n border-width: 3px;\n border-style: solid;\n border-radius: 100%;\n line-height: 20px;\n text-align: center;\n box-shadow: 0 0 0 5px #f2f3f8\n}\n\n.timeline .timeline-label {\n position: relative;\n float: left;\n clear: left;\n width: 50%;\n margin-bottom: 20px;\n top: 1px;\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n padding: 0;\n text-align: center\n}\n\n.timeline .timeline-label:before,\n.timeline .timeline-label:after {\n content: \"\";\n display: table\n}\n\n.timeline .timeline-label:after {\n clear: both\n}\n\n.timeline .timeline-label:last-child {\n margin-bottom: 0!important\n}\n\n.timeline .timeline-label + .timeline-item {\n margin-top: 0\n}\n\n.timeline .timeline-label + .timeline-item + .timeline-item {\n margin-top: 40px\n}\n\n.timeline .time-right {\n color: rgba(52, 40, 104, .5);\n position: absolute;\n bottom: 0;\n right: 0;\n font-size: .85rem;\n font-weight: 500\n}\n\n.timeline .time-left {\n color: rgba(52, 40, 104, .5);\n position: absolute;\n bottom: 0;\n left: 0;\n font-size: .85rem;\n font-weight: 500\n}\n\n.timeline .widget-header .user-image {\n display: inline-block;\n vertical-align: middle;\n margin-right: 1.07rem\n}\n\n.timeline .widget-header .user-image img {\n width: 50px\n}\n\n.timeline .widget-header .title {\n color: #2c304d;\n font-size: 1rem\n}\n\n.timeline .widget-header .username {\n color: #e76c90\n}\n\n.timeline .widget-header .time {\n font-size: .85rem\n}\n\n.timeline .widget-body {\n padding: 1rem 1.4rem\n}\n\n.timeline .widget-footer {\n border-top: 1px solid #eee;\n margin: 0 1.4rem;\n padding: 1.07rem 0\n}\n\n.timeline .users-like {\n padding: 0\n}\n\n.timeline .users-like a {\n margin: 0 -1.6rem 0 0;\n transition: all 0.4s ease\n}\n\n.timeline .users-like a:hover {\n margin-right: -.3rem\n}\n\n.timeline .users-like img {\n width: 40px;\n border: .25rem solid #fff\n}\n\n.timeline .users-like a.view-more {\n background: #5d5386;\n color: #fff;\n width: 40px;\n height: 40px;\n border: .25rem solid #fff;\n border-radius: 50%;\n vertical-align: middle;\n font-size: .85rem;\n text-align: center;\n line-height: 30px;\n margin-right: 0\n}\n\n.timeline .widget-footer .meta li {\n display: inline-block;\n margin-right: .5rem\n}\n\n.timeline .widget-footer .meta li:last-child {\n margin-right: 0\n}\n\n.timeline .widget-footer .meta li a {\n color: rgba(52, 40, 104, .3)\n}\n\n.timeline .widget-footer .meta li a:hover {\n color: rgba(52, 40, 104, .9)\n}\n\n.timeline .widget-footer .meta li i {\n font-size: 1.8rem;\n vertical-align: middle;\n margin-right: .3rem\n}\n\n.timeline .widget-footer .meta li .numb {\n vertical-align: middle\n}\n\n@media screen and (max-width:768px) {\n .timeline.timeline {\n width: 100%;\n max-width: 100%\n }\n .timeline.timeline .timeline-item {\n padding-left: 72px;\n padding-right: 0\n }\n .timeline.timeline .timeline-item.timeline-item-right,\n .timeline.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left) {\n padding-left: 72px;\n padding-right: 0\n }\n .timeline.timeline .timeline-item .timeline-event {\n width: 100%\n }\n .timeline.timeline:before {\n left: 42px;\n width: 0;\n margin-left: -1px\n }\n .timeline.timeline .timeline-item {\n width: 100%;\n margin-bottom: 20px\n }\n .timeline.timeline .timeline-item:nth-of-type(even) {\n margin-top: 0\n }\n .timeline.timeline .timeline-item>.timeline-event {\n float: right!important\n }\n .timeline.timeline .timeline-item>.timeline-event:before,\n .timeline.timeline .timeline-item>.timeline-event:after {\n right: auto!important;\n border-left-width: 0!important\n }\n .timeline.timeline .timeline-item>.timeline-event:before {\n left: -15px!important;\n border-right-width: 15px!important\n }\n .timeline.timeline .timeline-item>.timeline-event:after {\n left: -14px!important;\n border-right-width: 14px!important\n }\n .timeline.timeline .timeline-item>.timeline-point {\n transform: translateX(-50%);\n left: 42px!important;\n margin-left: 0\n }\n .timeline.timeline .timeline-label {\n transform: translateX(-50%);\n margin: 0 0 20px 42px\n }\n .timeline.timeline .timeline-label + .timeline-item + .timeline-item {\n margin-top: 0\n }\n .timeline .time-right {\n left: 0\n }\n}\n\n\n.rounded-widget .widget {\n border-radius: 4px\n}\n\n.rounded-widget .widget-image {\n border-radius: 4px\n}\n\n.rounded-widget .widget-header {\n border-radius: 4px 4px 0 0\n}\n\n.rounded-widget .widget-footer {\n border-radius: 0 0 4px 4px\n}\n\n.widget {\n background: #fff;\n border-radius: 0;\n border: none;\n margin-bottom: 30px\n}\n\n.widget-image {\n background: #fff;\n border-radius: 0;\n border: none;\n margin-bottom: 30px;\n position: relative\n}\n\n.widget-header {\n background: #fff;\n padding: .85rem 1.4rem;\n position: relative;\n width: 100%\n}\n\n.widget-header.bordered {\n border-bottom: .07rem solid #eee\n}\n\n.widget-header.no-actions {\n padding: 1.49rem\n}\n\n.widget-options .dropdown-toggle {\n color: #98a8b4;\n background: none;\n border: none;\n padding: 0;\n font-size: 1.7rem;\n}\n\n.widget-header h1,\n.widget-header h2,\n.widget-header h3,\n.widget-header h4,\n.widget-header h5,\n.widget-header h6 {\n color: #2c304d;\n margin-bottom: 0\n}\n\n.section-title h1,\n.section-title h2,\n.section-title h3,\n.section-title h4,\n.section-title h5,\n.section-title h6 {\n color: #2c304d;\n font-weight: 600;\n margin-bottom: 0\n}\n\n.widget-header h2 {\n color: #2c304d;\n font-size: 1.2rem;\n display: table-cell;\n vertical-align: middle;\n margin-right: auto\n}\n\n.widget-header h2 i {\n color: #aea9c3;\n font-size: 1.8rem;\n padding-right: .5rem;\n vertical-align: middle\n}\n\n.widget-body {\n padding: 1.4rem\n}\n\n.widget-image-footer {\n background: #fff;\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: 1.2rem 0;\n z-index: 1\n}\n\n.widget-footer {\n background: #fff;\n padding: 1rem 1.07rem;\n position: relative\n}\n\n.widget-footer.big {\n padding: 2.1rem 1.07rem\n}\n\n.no-border {\n border: 0 none!important;\n}\n\n.no-bg {\n background: none!important;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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!./llo-search.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!./llo-search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./llo-search.vue?vue&type=template&id=ec4077ac&\"\nimport script from \"./llo-search.vue?vue&type=script&lang=js&\"\nexport * from \"./llo-search.vue?vue&type=script&lang=js&\"\nimport style0 from \"./llo-search.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\"},[(_vm.hybridshow=='asciidoc')?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/book.png\"),\"alt\":\"...\"}}):_vm._e(),(_vm.hybridshow=='asciinema')?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/code-128.png\"),\"alt\":\"...\"}}):_vm._e(),(_vm.hybridshow=='video')?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/video1.png\"),\"alt\":\"...\"}}):_vm._e()]),_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\":\"\"}},[(_vm.hybridshow=='asciinema')?_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Copy & Paste\")]),_c('br'),_vm._v(\" Any time you see a command you'd like to try in your own terminal just pause the player \"),_c('br'),_vm._v(\" and copy-paste the content you want. \")]),_c('div',{staticClass:\"col-12\"},[_c('iframe',{attrs:{\"id\":\"llo\",\"title\":\"title\",\"width\":\"600\",\"height\":\"700\",\"src\":_vm.asciinemasource,\"allowfullscreen\":\"\",\"frameborder\":\"0\"}})])]):_vm._e(),(_vm.hybridshow=='video')?_c('div',{staticClass:\"row text-center\"},[_c('iframe',{attrs:{\"id\":\"llo\",\"width\":\"740\",\"height\":\"500\",\"src\":_vm.sourcevimeo,\"allowfullscreen\":\"\",\"frameborder\":\"0\"},on:{\"load\":function($event){return _vm.dofin()}}})]):_vm._e(),(_vm.hybridshow=='asciidoc')?_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('iframe',{attrs:{\"id\":\"lloasciiview1\",\"title\":\"title\",\"width\":\"100%\",\"height\":\"700\",\"src\":_vm.asciidocurl,\"frameborder\":\"0\"}})])]):_vm._e(),(_vm.hybridshow=='penguin')?_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/penguin21a.png\"),\"width\":\"400\",\"height\":\"400\"}})])]):_vm._e()]),_c('hr'),(_vm.hybridshow!='penguin')?_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.completiontracking),expression:\"completiontracking\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.completiontracking=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.oncompletiontracking()}]}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Completion tracking\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"Completed\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Almost\")])]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.courseread),expression:\"courseread\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.courseread=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.oncompletiontracking()}]}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Did you find this helpful?\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"No\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Not really/A bit\")]),_c('option',{attrs:{\"value\":\"3\"}},[_vm._v(\"Yes\")])])])])]):_vm._e()],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('iframe',{attrs:{\"id\":\"llo\",\"title\":_vm.title,\"width\":_vm.width,\"height\":_vm.height,\"src\":_vm.source,\"allowfullscreen\":\"\",\"frameborder\":\"0\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<iframe \n\t\tid=\"llo\"\n\t\t:title=\"title\"\n\t\t:width=\"width\"\n\t\t:height=\"height\"\n\t\t:src=\"source\"\n\t\tallowfullscreen\n\t\tframeborder=\"0\"\n\t\t>\n\t</iframe>\n</template>\n\n<script>\n export default {\n props: {\n\t\t\t\t\t'title':'',\n\t\t\t\t\t'course':'',\n 'llo':''\n\t\t\t\t},\n data() {\n return {\n //source:'',\n source: `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`,\n //source: `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`,\n\t\t\t\t\t\t\t\twidth:\"600\",\n\t\t\t\t\t\t\t\theight:\"750\"\n }\n },\n mounted() {\n //this.source = `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`\n //console.log('----------- '+JSON.stringify(this.llo));\n//var a = document.createElement('iframe');\n//a.src = this.source;\n//a.width = \"600\";\n//a.height = \"750\";\n//a.setAttribute('allowFullScreen', 'true')\n//document.getElementById(this.llo).appendChild(a);\n// // Can't use script tags directly apparently\n// let asciiscript = document.createElement('script');\n// asciiscript.setAttribute('src', this.source);\n// asciiscript.setAttribute('id', this.ascid);\n// console.log(this.id);\n// document.getElementById(this.id).appendChild(asciiscript)\n }\n }\n</script>\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!./asciiplayer.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!./asciiplayer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./asciiplayer.vue?vue&type=template&id=938d80c4&\"\nimport script from \"./asciiplayer.vue?vue&type=script&lang=js&\"\nexport * from \"./asciiplayer.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 <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/book.png\" alt=\"...\"\n v-if=\"hybridshow=='asciidoc'\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/code-128.png\" alt=\"...\"\n v-if=\"hybridshow=='asciinema'\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/video1.png\" alt=\"...\"\n v-if=\"hybridshow=='video'\"\n >\n </div>\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-if=\"hybridshow=='asciinema'\"\n >\n\n <div class=\"col-12\">\n <b>Copy & Paste</b> \n <br>\n Any time you see a command you'd like to try in your own terminal just pause the player <br> and copy-paste the content you want.\n </div>\n <div class=\"col-12\">\n\t<iframe \n\t\tid=\"llo\"\n\t\ttitle=\"title\"\n\t\twidth=\"600\"\n\t\theight=\"700\"\n\t\t:src=\"asciinemasource\"\n\t\tallowfullscreen\n\t\tframeborder=\"0\"\n\t\t>\n\t</iframe>\n<!--\n <aplayer\n :llo=\"llo\"\n :course=\"course\"\n >\n </aplayer>\n-->\n </div>\n </div>\n\n <div class=\"row text-center\"\n v-if=\"hybridshow=='video'\"\n >\n <iframe \n @load=\"dofin()\"\n id=\"llo\"\n width=\"740\"\n height=\"500\"\n :src=\"sourcevimeo\"\n allowfullscreen\n frameborder=\"0\"\n >\n </iframe>\n </div>\n\n <div class=\"row text-center\"\n v-if=\"hybridshow=='asciidoc'\"\n >\n <div class=\"col-12\">\n\t<iframe \n\t\tid=\"lloasciiview1\"\n\t\ttitle=\"title\"\n\t\twidth=\"100%\"\n\t\theight=\"700\"\n\t\t:src=\"asciidocurl\"\n\t\tframeborder=\"0\"\n\t\t>\n\t</iframe>\n </div>\n </div>\n\n <div class=\"row text-center\"\n v-if=\"hybridshow=='penguin'\"\n >\n <div class=\"col-12\">\n <img src=\"@/assets/img/penguin21a.png\" width=\"400\" height=\"400\">\n </div>\n </div>\n </b-container>\n<hr>\n <b-container fluid class=\"bv-example-row\"\n v-if=\"hybridshow!='penguin'\"\n >\n <div class=\"row text-center\"\n <div class=\"col-12\">\n\t\t <div class=\"input-group input-group-sm sm-3\">\n <select \n v-on:change=\"oncompletiontracking()\"\n class=\"custom-select custom-select-sm\" v-model=\"completiontracking\">\n <option value=\"0\" selected>Completion tracking</option>\n <option value=\"1\">Completed</option>\n <option value=\"2\">Almost</option>\n </select>\n <select \n v-on:change=\"oncompletiontracking()\"\n class=\"custom-select custom-select-sm\" v-model=\"courseread\">\n <option value=\"0\" selected>Did you find this helpful?</option>\n <option value=\"1\">No</option>\n <option value=\"2\">Not really/A bit</option>\n <option value=\"3\">Yes</option>\n </select>\n </div>\n </div>\n </div>\n </b-container>\n\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 aplayer from '@/components/asciiplayer.vue'\n//import asciidoc from '@/components/asciidoc.vue'\nimport Asciidoctor from 'asciidoctor'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n // asciidoc,\n aplayer,\n card\n\t},\n props: {},\n data() {\n return{\n vtype:'', // tmp save for hybridshow\n completiontracking:0,\n courseread:0,\n hybridshow:'penguin',\n llo:'',\n llocourse:'',\n llochapter:'',\n asciidocurl:'',\n asciidoccode:'',\n course:'',\n asciinemasource:'',\n coursevimeo:'',\n hybridcourse:'',\n token: '',\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_llo_viecourse', (v) => {\n this.completiontracking = 0\n this.courseread = 0\n this.llocourse = v.llo\n this.llochapter = v.course\n if(v.type == 'asciinema'){\n this.hybridshow = v.type\n this.llo = v.llo\n this.course = v.course\n this.asciinemasource = `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`\n this.getcompletion()\n }else if(v.type == 'asciidoc'){\n this.asciidoccode = v.code\n this.vtype = v.type // save for later use after addlloascii finish\n this.addlloascii()\n this.getcompletion()\n }else if(v.type == 'video'){\n this.$wait.start('myRunInstancetutor');\n this.hybridshow = v.type\n this.sourcevimeo=`https://player.vimeo.com/video/${v.course}`\n this.getcompletion()\n }\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_llo_viecourse')\n\t\t//this.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t},\n\n methods: {\n async getcompletion() {\n var value = {}\n value.token = this.token\n value.course = this.llocourse\n value.chapter = this.llochapter\n var res1 = await store.dispatch('pipelineLLO/getcompletion', value)\n console.log('params '+JSON.stringify(res1))\n if(res1.data.action == 'ok'){\n if (res1.data.data){\n this.completiontracking = res1.data.data.track\n this.courseread = res1.data.data.evaluation\n }\n }\n \n },\n async oncompletiontracking() {\n var value = {}\n value.token = this.token\n value.action = 'track'\n value.track = this.completiontracking\n value.evaluation = this.courseread\n value.course = this.llocourse\n value.chapter = this.llochapter\n var res1 = await store.dispatch('pipelineLLO/oncompletiontracking', value)\n this.$root.$emit('hybrid_progress_refresh')\n },\n dofin() {\n //console.log(\" dofin \")\n this.$wait.end('myRunInstancetutor');\n },\n async addlloascii() {\n var value = this.asciidoccode\n //console.log(\" ascii code 2 \"+JSON.stringify(value))\n\n try{\n var asciidoctor1 = Asciidoctor()\n var value_compiled = asciidoctor1.convert(value,\n {\n standalone: true,\n backend: 'html5', \n header_footer: false,\n doctype: 'article',\n safe: 'safe',\n attributes: {\n 'source-highlighter': 'highlightjs',\n //'toc':'right',\n //'sectnumlevels':4,\n //'no-header-footer':true,\n //'last-update-label':true,\n 'sectnums':true,\n 'icons': 'font',\n 'copycss':true,\n 'stylesheet': 'http://cdnjs.cloudflare.com/ajax/libs/asciidoctor.js/1.5.9/css/asciidoctor.min.css',\n 'iconfont-cdn': 'http://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css',\n 'iconfont-name': 'fontawesome-5-14.0',\n 'iconfont-remote':true,\n 'linkcss': true\n }\n }) // (2)\n\n //console.log(\" ascii \"+JSON.stringify(value_compiled))\n\nvar llosave = await store.dispatch('pipelineLLO/save_llo_asciidoctmp', value_compiled)\n\n//console.log('no write permission 1 '+ JSON.stringify(llosave))\nif(llosave.data == 'nofile'){\nconsole.log('no write permission')\n}else{\nthis.asciidocurl = `http://localhost:3080/asciidoc/${llosave.data.data}.html?token=${this.token}`\n//console.log('no write permission 2 '+ JSON.stringify(this.asciidocurl))\nthis.hybridshow = 'no'\nthis.hybridshow = this.vtype\n}\n\n\n }catch (ex) {\n console.log(\" ascerror \"+JSON.stringify(ex))\n return\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\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!./llo-view.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!./llo-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./llo-view.vue?vue&type=template&id=14952149&\"\nimport script from \"./llo-view.vue?vue&type=script&lang=js&\"\nexport * from \"./llo-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./llo-view.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 <myllo-search>\n\n </myllo-search>\n </div>\n\n <div class=\"col-6 order-last\" >\n <br>\n \n <myllo-view>\n\n </myllo-view>\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'\nimport MylloSearch from \"./manageservices/llo-search.vue\";\nimport MylloView from \"./manageservices/llo-view.vue\";\nexport default {\n components: {\n card,\n MylloSearch,\n MylloView\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!./managello.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!./managello.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./managello.vue?vue&type=template&id=01e26349&\"\nimport script from \"./managello.vue?vue&type=script&lang=js&\"\nexport * from \"./managello.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')],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 _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"appcalendar\"}},[_c('div',{staticClass:\"calendar-parent overflow-auto\"},[_c('h1',[_vm._v(\"Welcome to Swarmlab!\")]),_c('h3',[_vm._v(\" An open source work/study-from-home application. \")]),_c('br'),_c('h5',[_vm._v(\" Swarmlab provides you with all the required tools, tools to teach work or try out demos in a completely virtual environment. \")]),_c('br'),_c('div',[_c('p',[_c('b',[_vm._v(\"Swarmlab is a collection of services that aims to:\")]),_c('ul',[_c('li',[_vm._v(\" provide \"),_c('b',[_vm._v(\"teachers and professors\")]),_vm._v(\" with online remote tools to do their lessons\")]),_c('li',[_vm._v(\" give \"),_c('b',[_vm._v(\"students\")]),_vm._v(\" the opportunity to study real life examples in their chosen area of expertise \")]),_c('li',[_vm._v(\" allow \"),_c('b',[_vm._v(\"developers\")]),_vm._v(\" to fully test and debug their applications and provide POC’s\")])])])]),_c('br'),_c('p',[_vm._v(\"Swarmlab, up and running since 2020, is already used for teaching purposes in a university and has proven itself as a powerful tool in the post covid remote-based situation.\")]),_c('br'),_c('h3',[_vm._v(\"As of now the services provided by swarmlab are:\")]),_c('ul',[_c('li',[_c('b',[_vm._v(\"Labrooms\")]),_vm._v(\"(virtual classrooms in the form of model applications to be tweaked at will)\")]),_c('ul',[_c('li',[_vm._v(\" linux → base linux system – designed for use as a base to further develop your app\")]),_c('li',[_vm._v(\" MPI → Instances of Ubuntu Linux with MPICH — portable implementation of Message Passing Interface (MPI) standard. Designed for MPI program development and deployment.\")]),_c('li',[_vm._v(\" Node.js\")]),_c('li',[_vm._v(\" sec → a basic linux-based os with security tools – designed as a template for apps\")])])]),_c('ul',[_c('li',[_c('b',[_vm._v(\"Storage\")]),_vm._v(\" to automatically create a cluster of databases.\")])]),_c('ul',[_c('li',[_c('b',[_vm._v(\"Proof Of Concept\")]),_vm._v(\" (POC) options \")]),_c('ul',[_c('li',[_vm._v(\" datacollector → using provided services a fully developed application may collect data from a swarm and use it for further analysis\")])])]),_c('li',[_c('b',[_vm._v(\"Microservices\")])]),_c('ul',[_c('li',[_vm._v(\" Jupyter \")]),_c('li',[_vm._v(\" numpy\")]),_c('li',[_vm._v(\" scipy\")]),_c('li',[_vm._v(\" nodejs\")]),_c('li',[_vm._v(\" nginx\")]),_c('li',[_vm._v(\" haproxy\")]),_c('li',[_vm._v(\" gns3\")]),_c('li',[_vm._v(\" wireshark\")]),_c('li',[_vm._v(\" snmpsim\")]),_c('li',[_vm._v(\" xelatexthesis\")]),_c('li',[_vm._v(\" ansible\")]),_c('li',[_vm._v(\" etherpad\")]),_c('li',[_vm._v(\" codeserver (vscode)\")]),_c('li',[_vm._v(\" redisserver\")]),_c('li',[_vm._v(\" mongoserver\")]),_c('li',[_vm._v(\" mongoclient (GUI)\")])]),_c('h5',[_c('i',[_vm._v(\"to be continued… \")])]),_c('h5',[_vm._v(\" And all the above using just the command line and a Browser of your system! \")])])])}]\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"appcalendar\" >\n\t\t<div class=\"calendar-parent overflow-auto\">\n\n<h1>Welcome to Swarmlab!</h1>\n\n\n<h3>\nAn open source work/study-from-home application.\n</h3>\n<br>\n<h5>\nSwarmlab provides you with all the required tools, tools to teach work or try out demos in a completely virtual environment.\n</h5>\n<br>\n<div>\n<p><b>Swarmlab is a collection of services that aims to:</b>\n\n<ul>\n<li> provide <b>teachers and professors</b> with online remote tools to do their lessons</li>\n\n<li> give <b>students</b> the opportunity to study real life examples in their chosen area of expertise </li>\n\n<li> allow <b>developers</b> to fully test and debug their applications and provide POC’s</li>\n</ul>\n</p>\n</div>\n<br>\n\n<p>Swarmlab, up and running since 2020, is already used for teaching purposes in a university and has proven itself as a powerful tool in the post covid remote-based situation.</p>\n\n<br>\n\n<h3>As of now the services provided by swarmlab are:</h3>\n\n<ul>\n <li> <b>Labrooms</b>(virtual classrooms in the form of model applications to be tweaked at will)</li>\n <ul>\n <li> linux → base linux system – designed for use as a base to further develop your app</li>\n\n <li> MPI → Instances of Ubuntu Linux with MPICH — portable implementation of Message Passing Interface (MPI) standard. Designed for MPI program development and deployment.</li>\n\n <li> Node.js</li>\n\n <li> sec → a basic linux-based os with security tools – designed as a template for apps</li>\n </ul>\n</ul>\n<ul>\n <li> <b>Storage</b> to automatically create a cluster of databases.</li>\n</ul>\n\n<ul>\n <li> <b>Proof Of Concept</b> (POC) options </li>\n <ul>\n <li> datacollector → using provided services a fully developed application may collect data from a swarm and use it for further analysis</li>\n </ul>\n</ul>\n\n</ul>\n <li> <b>Microservices</b> </li>\n <ul>\n\t\t<li> Jupyter </li> \n\n\t\t<li> numpy</li> \n\n\t\t<li> scipy</li> \n\n\t\t<li> nodejs</li> \n\n\t\t<li> nginx</li> \n\n\t\t<li> haproxy</li> \n\n\t\t<li> gns3</li> \n\n\t\t<li> wireshark</li> \n\n\t\t<li> snmpsim</li> \n\n\t\t<li> xelatexthesis</li> \n\n\t\t<li> ansible</li> \n\n\t\t<li> etherpad</li> \n\n\t\t<li> codeserver (vscode)</li> \n\n\t\t<li> redisserver</li> \n\n\t\t<li> mongoserver</li> \n\n\t\t<li> mongoclient (GUI)</li> \n\n </ul>\n</ul>\n <h5> <i>to be continued… </i></h5>\n\n<h5>\nAnd all the above using just the command line and a Browser of your system!\n</h5>\n\n\n\n\n\n\n\n <!--\n\t\t\t<calendar-view\n\t\t\t\t:items=\"items\"\n\t\t\t\t:show-date=\"showDate\"\n\t\t\t\t:time-format-options=\"{ hour: 'numeric', minute: '2-digit' }\"\n\t\t\t\t:enable-drag-drop=\"false\"\n\t\t\t\t:disable-past=\"disablePast\"\n\t\t\t\t:disable-future=\"disableFuture\"\n\t\t\t\t:show-times=\"showTimes\"\n\t\t\t\t:display-period-uom=\"displayPeriodUom\"\n\t\t\t\t:display-period-count=\"displayPeriodCount\"\n\t\t\t\t:starting-day-of-week=\"startingDayOfWeek\"\n\t\t\t\t:class=\"themeClasses\"\n\t\t\t\t:period-changed-callback=\"periodChanged\"\n\t\t\t\t:current-period-label=\"useTodayIcons ? 'icons' : ''\"\n\t\t\t\t:displayWeekNumbers=\"displayWeekNumbers\"\n\t\t\t\t:enable-date-selection=\"true\"\n\t\t\t\t:selection-start=\"selectionStart\"\n\t\t\t\t:selection-end=\"selectionEnd\"\n\t\t\t\t:timeFormatOptions=\"timeFormatOptions\"\n\t\t\t\t@date-selection-start=\"setSelection\"\n\t\t\t\t@date-selection=\"setSelection\"\n\t\t\t\t@date-selection-finish=\"finishSelection\"\n\t\t\t\t@drop-on-date=\"onDrop\"\n\t\t\t\t@click-date=\"onClickDay\"\n\t\t\t\t@click-item=\"onClickItem\"\n\t\t\t>\n\t\t\t\t<calendar-view-header\n\t\t\t\t\tslot=\"header\"\n\t\t\t\t\tslot-scope=\"{ headerProps }\"\n\t\t\t\t\t:header-props=\"headerProps\"\n\t\t\t\t\t@input=\"setShowDate\"\n\t\t\t\t/>\n\t\t\t</calendar-view>\n-->\n\t\t</div>\n\n\t</div>\n</template>\n<script>\n\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\";\n// Load CSS from the local repo\nrequire(\"vue-simple-calendar/static/css/default.css\")\nrequire(\"vue-simple-calendar/static/css/holidays-us.css\")\n\nimport {\n\tCalendarView,\n\tCalendarViewHeader,\n\tCalendarMathMixin,\n} from \"vue-simple-calendar/src/components/bundle.js\" // local repo\n\nexport default {\n\tcomponents: {\n card,\n\t\tCalendarView,\n\t\tCalendarViewHeader,\n\t},\n\tmixins: [CalendarMathMixin],\n\tdata() {\n\t\treturn {\n\t\t\tshowDate: this.thisMonth(1),\n\t\t\tmessage: \"\",\n\t\t\tstartingDayOfWeek: 1,\n\t\t\tdisablePast: false,\n\t\t\tdisableFuture: false,\n\t\t\tdisplayPeriodUom: \"month\",\n\t\t\tdisplayPeriodCount: 1,\n\t\t\tdisplayWeekNumbers: true,\n\t\t\tshowTimes: false,\n\t\t\tselectionStart: null,\n\t\t\tselectionEnd: null,\n\t\t\tnewItemTitle: \"\",\n\t\t\tnewItemStartDate: \"\",\n\t\t\tnewItemEndDate: \"\",\n\t\t\tuseDefaultTheme: true,\n\t\t\tuseHolidayTheme: false,\n\t\t\tuseTodayIcons: true,\n timeFormatOptions:{\n\t\t\t\thour: 'numeric', minute: 'numeric',\n\t\t\t\thour12: false,\n\t\t\t\ttimeZone: 'Europe/Athens'\n\t\t\t},\n begindate:'',\n enddate:'',\n\t\t\titems: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tgetevents4month() {\n\t\t},\n\t\tuserLocale() {\n\t\t\treturn this.getDefaultBrowserLocale\n\t\t},\n\t\tdayNames() {\n\t\t\treturn this.getFormattedWeekdayNames(this.userLocale, \"long\", 0)\n\t\t},\n\t\tthemeClasses() {\n\t\t\treturn {\n\t\t\t\t\"theme-default\": this.useDefaultTheme,\n\t\t\t\t\"holiday-us-traditional\": this.useHolidayTheme,\n\t\t\t\t\"holiday-us-official\": this.useHolidayTheme,\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.newItemStartDate = this.isoYearMonthDay(this.today())\n\t\tthis.newItemEndDate = this.isoYearMonthDay(this.today())\n\t const t = new Date()\n\t\t\tlet bd_y = t.getFullYear()\n\t\t\tlet bd_m = (t.getMonth() + 1).toString().padStart(2, \"0\");\n\t\t\tlet bd_d = '01';\n this.begindate = `${bd_y}-${bd_m}-${bd_d}`\n this.enddate = `${bd_y}-${bd_m}-31`\n this.getevents()\n\t},\n\n\tmethods: {\n\t\tasync getevents() {\n var value1 = {}\n value1.begin = this.begindate\n value1.end = this.enddate\n \tvar llo = await store.dispatch('pipelineLLO/getevents', value1)\n this.items = llo.data.result;\n\t\t\t\t//console.log('events'+JSON.stringify(llo))\n\t\t},\n\t\tperiodChanged(v) {\n\t\t\t// range, eventSource) {\n\t\t\t// Demo does nothing with this information, just including the method to demonstrate how\n\t\t\t// you can listen for changes to the displayed range and react to them (by loading items, etc.)\n\t\t\t//console.log(v)\n\n\t\t\tlet t = v.periodStart\n\t\t\tlet bd_y = t.getFullYear()\n\t\t\tlet bd_m = (t.getMonth() + 1).toString().padStart(2, \"0\");\n\t\t\tlet bd_d = t.getDate().toString().padStart(2, \"0\");\n this.begindate = `${bd_y}-${bd_m}-${bd_d}`\n\n\t\t\tlet e = v.periodEnd\n\t\t\tlet ed_y = e.getFullYear()\n\t\t\tlet ed_m = (e.getMonth() + 1).toString().padStart(2, \"0\");\n\t\t\tlet ed_d = e.getDate().toString().padStart(2, \"0\");\n this.enddate = `${ed_y}-${ed_m}-${ed_d}`\n \n this.getevents()\n\t\t\t//console.log(this.begindate)\n\t\t\t//console.log(this.enddate)\n\t\t},\n\t\tthisMonth(d, h, m) {\n\t\t\tconst t = new Date()\n\t\t\treturn new Date(t.getFullYear(), t.getMonth(), d, h || 0, m || 0)\n\t\t},\n\t\tonClickDay(d) {\n\t\t\tthis.selectionStart = null\n\t\t\tthis.selectionEnd = null\n\t\t\tthis.message = `You clicked: ${d.toLocaleDateString()}`\n\t\t},\n\t\tonClickItem(e) {\n\t\t\tthis.message = `You clicked: ${e.title}`\n\t\t\t//console.log(e)\n this.$root.$emit('hybrid_labobject_view',e)\n\t\t},\n\t\tsetShowDate(d) {\n\t\t\tthis.message = `Changing calendar view to ${d.toLocaleDateString()}`\n\t\t\tthis.showDate = d\n\t\t},\n\t\tsetSelection(dateRange) {\n\t\t\tthis.selectionEnd = dateRange[1]\n\t\t\tthis.selectionStart = dateRange[0]\n\t\t},\n\t\tfinishSelection(dateRange) {\n\t\t\tthis.setSelection(dateRange)\n\t\t\tthis.message = `You selected: ${this.selectionStart.toLocaleDateString()} -${this.selectionEnd.toLocaleDateString()}`\n\t\t},\n\t\tonDrop(item, date) {\n\t\t\tthis.message = `You dropped ${item.id} on ${date.toLocaleDateString()}`\n\t\t\t// Determine the delta between the old start date and the date chosen,\n\t\t\t// and apply that delta to both the start and end date to move the item.\n\t\t\tconst eLength = this.dayDiff(item.startDate, date)\n\t\t\titem.originalItem.startDate = this.addDays(item.startDate, eLength)\n\t\t\titem.originalItem.endDate = this.addDays(item.endDate, eLength)\n\t\t},\n\t\tclickTestAddItem() {\n\t\t\tthis.items.push({\n\t\t\t\tstartDate: this.newItemStartDate,\n\t\t\t\tendDate: this.newItemEndDate,\n\t\t\t\ttitle: this.newItemTitle,\n\t\t\t\tid: \"e\" + Math.random().toString(36).substr(2, 10),\n\t\t\t})\n\t\t\tthis.message = \"You added a calendar item!\"\n\t\t},\n\t},\n}\n</script>\n\n<style>\nhtml,\nbody {\n\theight: 100%;\n\tmargin: 0;\n\tbackground-color: #f7fcff;\n}\n\n#appcalendar {\n\tdisplay: flex;\n\tflex-direction: row;\n\tfont-family: Calibri, sans-serif;\n\t//width: 95vw;\n\twidth: 100%;\n\tmin-width: 30rem;\n\tmax-width: 100rem;\n\tmin-height: 40rem;\n\tmargin-left: auto;\n\tmargin-right: auto;\n}\n\n\n.calendar-controls {\n\tmargin-right: 1rem;\n\tmin-width: 14rem;\n\tmax-width: 14rem;\n}\n\n.calendar-parent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\toverflow-x: hidden;\n\toverflow-y: hidden;\n\tmax-height: 80vh;\n\tbackground-color: white;\n}\n\n/* For long calendars, ensure each week gets sufficient height. The body of the calendar will scroll if needed */\n.cv-wrapper.period-month.periodCount-2 .cv-week,\n.cv-wrapper.period-month.periodCount-3 .cv-week,\n.cv-wrapper.period-year .cv-week {\n\tmin-height: 6rem;\n}\n\n/* These styles are optional, to illustrate the flexbility of styling the calendar purely with CSS. */\n\n/* Add some styling for items tagged with the \"birthday\" class */\n.theme-default .cv-item.birthday {\n\tbackground-color: #e0f0e0;\n\tborder-color: #d7e7d7;\n}\n\n.theme-default .cv-item.birthday::before {\n\tcontent: \"\\1F382\"; /* Birthday cake */\n\tmargin-right: 0.5em;\n}\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!./calendarview.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!./calendarview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./calendarview.vue?vue&type=template&id=20632474&\"\nimport script from \"./calendarview.vue?vue&type=script&lang=js&\"\nexport * from \"./calendarview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./calendarview.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==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 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=65c0ffc3&\"\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","<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 <calendar-view>\n\n </calendar-view>\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'\nimport CalendarView from \"./manageservices/calendarview.vue\";\n//import CalendarView from \"./manageservices/view-service.vue\";\nimport CalendarViewEvents from \"./manageservices/view-events.vue\";\nexport default {\n components: {\n card,\n CalendarView,\n CalendarViewEvents\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=174e99fa&\"\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-hybrid! </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> and built on-demand network environments <i>visit the \"https://git.swarmlab.io:3000/swarmlab/venus-client\" and install \"Venus\".</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 the server <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.\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=\"http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs\" target=\"_swarmlabgit\"> Docs </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=\"\">Hybrid</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"#\">\n -\n </a>\n </li>\n <!--\n <b-nav-item href=\"https://gitter.im/swarmlab-hybrid/community\" target=\"_gitter\"> Join_us_on_Gitter </b-nav-item>\n -->\n <b-nav-item href=\"https://vimeo.com/showcase/9022099\" 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 <b-nav-item \n @click=\"onAction('check')\"\n\t\t\t\t\t\t\t>Check Connection Status:</b-nav-item>\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<!--\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 <!--\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 <!-- Menou container -->\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-share list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('hybrid') }\" @click=\"hybrid('manage_service')\" > Share</b-list-group-item>\n <!--\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\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','hybrid_microservice')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('private') }\" @click=\"hybrid('microservice')\" > 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\t\t<b-list-group-item variant=\"light\" name=\"Proof_of_concept\" class=\" ti-light-bulb m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_proofofconcept')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_proofofconcept') }\" @click=\"hybrid('proofofconcept')\"> Proof_of_concept</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n\n <!-- Menou builders -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-builders variant=\"light\" name=\"Private\" class=\"ti-settings 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\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<!--\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\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-share list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('hybrid') }\" @click=\"hybrid('manage_service')\" title=\"Share\" > </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\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\t\t<b-list-group-item variant=\"light\" name=\"Proof_of_concept\" class=\"ti-light-bulb m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_proofofconcept')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_proofofconcept') }\" @click=\"hybrid('proofofconcept')\" title=\"Proof_of_concept\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n\n <!-- Menou builders -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-builders variant=\"light\" name=\"Private\" class=\"ti-settings 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\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 --------------- -->\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\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid settings --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\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\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 services --------------- -->\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 manage llo --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-llo\n v-if=\"hybridmenou == 'llo'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-llo>\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 <network-table\n :key=\"componentKeyreload1\"\n v-show=\"hybridmenou == 'bootstrap'\"\n style=\"background-color: #f8f9fa\"\n >\n </network-table>\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 <services-table\n v-show=\"hybridmenou == 'services'\"\n style=\"background-color: #f8f9fa\"\n >\n </services-table>\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 <manage-storage\n :key=\"componentKeyreload2\"\n v-show=\"hybridmenou == 'storage'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-storage>\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 <manage-microservices\n :key=\"componentKeyreload3\"\n v-show=\"hybridmenou == 'microservice'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-microservices>\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 proofofconcept --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-proofofconcept\n :key=\"componentKeyreload4\"\n v-show=\"hybridmenou == 'proofofconcept'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-proofofconcept>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage proofofconcept --------------- -->\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 <manage-builders\n :key=\"componentKeybuilders\"\n v-show=\"hybridmenou == 'builders'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-builders>\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\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private 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\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 | \n <a class=\"text-info\" href=\"https://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"> ©</a>\n\t\t\t\t Coded with \n <i class=\"ti-heart\"></i> by\n <a class=\"text-info\" href=\"https://git.swarmlab.io:3000/zeus\" target=\"_blank\"> zeus</a> \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\"> GNU AGPL License</a> | \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 | \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\";\nimport NetworkTable from \"./components/mynetwork.vue\";\nimport ServicesTable from \"./components/myservices.vue\";\nimport ManageServices from \"./components/manageservices.vue\";\nimport ManageStorage from \"./components/mystorage.vue\";\nimport ManageMicroservices from \"./components/mymicroservices.vue\";\nimport ManageProofofconcept from \"./components/proofofconcept.vue\";\nimport ManageBuilders from \"./components/mybuild.vue\";\nimport ManageDeploy from \"./components/managedeploy.vue\";\nimport 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 ManageProofofconcept,\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 componentKeyreload4: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 },\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.componentKeyreload4 += 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 == 'proofofconcept'){\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=06cfefbe&\"\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', {\n//\n//allowUpgrades: false\n//\n//\nvar socketurl = ApiConfig.url_80;\nconst socket = io(socketurl, {\n autoConnect: false,\n reconnection: true,\n reconnectionDelay: 5000,\n reconnectionDelayMax: 5000,\n maxReconnectionAttempts: Infinity,\n pingInterval: 25000,\n pingTimeout: 90000,\n timeout: 70000,\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","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 = __webpack_public_path__ + \"img/penguinfledgling.7cf62d54.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!./builderservices.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/warning.31d7a72d.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!./deploy-bootstrap.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/academy.90116857.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!./calendarview.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!./llo-search.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!./images.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!./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!./availablepoc.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!./networks.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":""}
|