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
1.2 MiB
1 lines
1.2 MiB
{"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/manageservices/hybridlab.vue?d9b1","webpack:///./src/components/manageservices/manage-service.vue?39c7","webpack:///./src/App.vue?8294","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?29c0","webpack:///./src/components/mynetwork/mytable.vue?7381","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?1d33","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?91ed","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/mymicroservicescustom.vue?c822","webpack:///./src/components/mynetwork/availablemicroservicescustom.vue?ba7f","webpack:///src/components/mynetwork/availablemicroservicescustom.vue","webpack:///./src/components/mynetwork/availablemicroservicescustom.vue?5fde","webpack:///./src/components/mynetwork/availablemicroservicescustom.vue","webpack:///src/components/mymicroservicescustom.vue","webpack:///./src/components/mymicroservicescustom.vue?c8f0","webpack:///./src/components/mymicroservicescustom.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?86c8","webpack:///./src/components/mynetwork/customservices.vue?e5d6","webpack:///src/components/mynetwork/customservices.vue","webpack:///./src/components/mynetwork/customservices.vue?5f96","webpack:///./src/components/mynetwork/customservices.vue","webpack:///./src/components/mynetwork/builderservices.vue?a9df","webpack:///src/components/mynetwork/builderservices.vue","webpack:///./src/components/mynetwork/builderservices.vue?c12c","webpack:///./src/components/mynetwork/builderservices.vue","webpack:///./src/components/mynetwork/buildermyservices.vue?61a8","webpack:///src/components/mynetwork/buildermyservices.vue","webpack:///./src/components/mynetwork/buildermyservices.vue?f3ad","webpack:///./src/components/mynetwork/buildermyservices.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/mynetwork/availablemicroservicescustom.vue?9f01","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/components/mynetwork/customservices.vue?c8e2","webpack:///./src/assets/img/hybrid-1.png","webpack:///./src/components/mynetwork/buildermyservices.vue?7155"],"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","mycomponentKeyreload3","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","service","info","readme","baseservice","sh","packages","gitrepo","serviceversion","rclocal","port1","name1","url1","port2","name2","url2","port3","name3","url3","begin","end","save","pipeline","pipelineApi","nodename","nodeip","nodeid","noderole","nodezones","nodedesc","instance","package","user","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","swarmlabnamecustomdata","baseservicedata","swarmlabnamecustomstart","swarmlabname_git","git","swarmlabnamecustom","swarmlabnamecustomservice","swarmlabnamecustomuser","client","emit","icon","cancelButtonText","openuerlju","obWEB","strbase","sRegExInput1","RegExp","getcustomnames","replace","logdatacustom","store","dispatch","logdatacustomres","parse","swarmlabinstance1cda1","splitcda1split","split","splitcda1bc","i1","splitcd1a1bc","pocurletherpadserverttyd","ttydurl","splitcda1bcapp1","splitcd1a1bcapp1","pocurletherpadservertapp1","pocurletherpadservertapp1text","link1","splitcda1bcapp2","splitcd1a1bcapp2","pocurletherpadservertapp2","pocurletherpadservertapp2text","link2","splitcda1bcapp3","splitcd1a1bcapp3","pocurletherpadservertapp3","pocurletherpadservertapp3text","link3","splitcda1bcapp3port1","splitcd1a1bcapp3port1","pocurletherpadservertapp3port1","servicedata","pocurletherpadservertapp3textport1","text4linkcustom","splitcda1bcapp3port2","splitcd1a1bcapp3port2","pocurletherpadservertapp3port2","pocurletherpadservertapp3textport2","splitcda1bcapp3port3","splitcd1a1bcapp3port3","pocurletherpadservertapp3port3","pocurletherpadservertapp3textport3","splitcda1bcapp3port4","splitcd1a1bcapp3port4","pocurletherpadservertapp3port4","url4","pocurletherpadservertapp3textport4","name4","splitcda1bcapp3port5","splitcd1a1bcapp3port5","pocurletherpadservertapp3port5","url5","pocurletherpadservertapp3textport5","name5","val","errorrun","runextenderror","clear","cmOptions","keyMap","infoFilter","onCmCursorActivity","onCmReady","onCmFocus","onCmCodeChange","socketonline","extenderror","tryConsole","ssl","getinfo","editchoice","optionsedit","searchLLOactive","ADOC_html_code","challenge","tryLLO","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","backup","backupview","viewhybridoptions","customedit","custommenouopen","setcustom","setcustomcancel","setcustomsave","custommenou","customostext","custom","os","customshtext","heavy","heavytext","vuetablekeyg","testtest","testtestdir","_id","vuetablekeygslot","currentpagepaginationData","currentpage","resetcustom","vuetablekeygusersservices","testtestdiruser","vuetablekeygslotcustom","componentKeyreloadpoc","vuetablekeypoc","setservice","form_baseservice","invalid","isDeployValid","stackname","isValid","form_myservicename","stackversion","form_version","form_gitrepo","form_readme","form_os","form_sh","form_port1","form_url1","form_name1","form_port2","form_url2","form_name2","form_port3","form_url3","form_name3","form_rclocal","cancel","setserviceform2null","menouselect","infotxt","customservice","myservicename","version","setserviceform","field","hybrid_stackname","hybrid_stackversion","vuetablekeygmybuildservice1","swarmlab","vuetablekeygmybuildservice123","image","showInfo","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","ManageMymicroservices","ManageProofofconcept","ManageBuilders","ManageDeploy","ManageLlo","show","SwarmabAsciiLabTemplate","menuItem","activeItemSub","menuItemSub","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.f5103eb0.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--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(\" RunningInstances\")]),_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(\" Labs@Home\")]),_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\")]),_c('b-list-group-item',{staticClass:\"ti-user m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_mymicroservice') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"communityMicroservice\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_mymicroservice')},function($event){return _vm.hybrid('mymicroservice')}]}},[_vm._v(\" Users images\")])],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(\" Build\")]),_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(\" myServices\")])],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')}]}}),_c('b-list-group-item',{staticClass:\"ti-user m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_mymicroservice') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"communityMicroservice\",\"title\":\"Users Microservices\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_mymicroservice')},function($event){return _vm.hybrid('mymicroservice')}]}})],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\":\"Build\"},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 Service\"},on:{\"click\":[function($event){return _vm.setActive('builders','hybrid_builders')},function($event){return _vm.hybrid('builders')}]}})],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-mymicroservices',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'mymicroservice'),expression:\"hybridmenou == 'mymicroservice'\"}],key:_vm.mycomponentKeyreload3,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 rmmycustomservice({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n service: value.service\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/rmmycustomservice',params,options);\n\t\t\t\t return p\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 getmyservices({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n service: value.service\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/getmyservices',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 addmycustomservice({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n service: \t\t\tvalue.service,\n readme: \t\t\t\tvalue.readme,\n\t\t\t\t\t\t\tbaseservice: \t\tvalue.baseservice,\n\t\t\t\t\t\t\tsh: \t\t\t\t\t\tvalue.sh,\n\t\t\t\t\t\t\tpackages:\t\t\t\tvalue.packages,\n\t\t\t\t\t\t\tgitrepo: \t\t\t\tvalue.gitrepo,\n\t\t\t\t\t\t\tserviceversion: value.serviceversion,\n\t\t\t\t\t\t\trclocal:\t\t\t\tvalue.rclocal,\n\t\t\t\t\t\t\tport1: \t\t\t\t\tvalue.port1,\n\t\t\t\t\t\t\tname1: \t\t\t\t\tvalue.name1,\n\t\t\t\t\t\t\turl1: \t\t\t\t\tvalue.url1,\n\t\t\t\t\t\t\tport2: \t\t\t\t\tvalue.port2,\n\t\t\t\t\t\t\tname2: \t\t\t\t\tvalue.name2,\n\t\t\t\t\t\t\turl2: \t\t\t\t\tvalue.url2,\n\t\t\t\t\t\t\tport3: \t\t\t\t\tvalue.port3,\n\t\t\t\t\t\t\tname3: \t\t\t\t\tvalue.name3,\n\t\t\t\t\t\t\turl3: \t\t\t\t\tvalue.url3\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/addmycustomservice',params,options);\n return p\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 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 getcustom({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+'/getcustom'\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 getcustomuser({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+'/getcustomuser'\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 savecustom({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 package: value.package,\n sh: value.sh\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+'/savecustom'\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 savecustomuser({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value,\n package: value.package,\n sh: value.sh\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+'/savecustomuser'\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 chowncustom({commit,rootGetters}, value) {\n console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n user: value.user,\n service: value.service,\n baseservice: value.baseservice\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+'/chowncustom'\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 getinstallcustom({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+'/getinstallcustom'\n var p = await axios.get(sock_server_l,options);\n return p\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 checkownercustom({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+'/checkownercustom'\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 runbackupinstance({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+'/runbackupinstance'\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 //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 runbackupinstanceuser({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+'/runbackupinstanceuser'\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 //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 getservicesstatusall({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+'/getservicesstatusall'\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 stopservice({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+'/stopservice'\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 stopservicecustom({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+'/stopservicecustom'\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 getservicesinfoall({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+'/getservicesinfoall'\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 getservicesinfoallcustom({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+'/getservicesinfoallcustom'\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 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 rmswarmlablocaluser({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_swarmlabuser'\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('span',{staticClass:\"text-info\"},[_vm._v(\"(Docker Images, Containers and Volumes)\")])])])]),_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 \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\" Docker 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 \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\"Running Instances\")])])])]),_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 \"name\": \"microservice-oletools\",\n \"automated\": true,\n \"version\": 0,\n \"port\": 0\n }\n];\n","\n\nexport const ApiConfigWEB = [\n {\n \"name\": \"just-test-info-no-service\",\n \"large\": 'no or text',\n \"custom\": 'true',\n \"customostext\": 'Base OS: python:3.11-rc-alpine3.15',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": false,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http',\n \"app1\": false,\n \"link1\": 'Click here to open rstudio',\n \"url1\": 'http',\n \"port1\": \"8787/tcp\",\n \"app2\": false,\n \"link2\": 'Click here to open app text',\n \"url2\": 'http',\n \"port2\": \"8788/tcp\",\n \"app3\": false,\n \"link3\": 'Click here to open app text',\n \"url3\": 'http',\n \"port3\": \"8789/tcp\"\n },\n {\n \"name\": \"microservice-etherpad\",\n \"app\": true,\n \"url\": 'http',\n \"port\": '9001/tcp',\n \"ttyd\": true,\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\": \"6901/tcp\",\n \"ttyd\": true,\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 \"custom\": 'true',\n \"customostext\": 'Base OS: ubuntu:18.04.6 LTS ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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 \"custom\": 'true',\n \"customostext\": 'Base OS: ubuntu:20.04.3 LTS',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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 \"custom\": 'true',\n \"customostext\": 'Base OS: debian:buster',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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 \"custom\": 'true',\n \"customostext\": 'Base OS: alpine:3.13',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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 \"custom\": 'true',\n \"customostext\": 'Base OS: debian:jessie ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-xelatexthesis\",\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine:3.15 ',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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 \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-ansible\",\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine:3.14 ',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-wireshark\",\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-redisserver\",\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-mongoserver\",\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-filemanager\",\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-powershell\",\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine:3.14 ',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-dvwa\",\n \"app\": true,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-hping3\",\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine:3.15 ',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-volatilitylinux\",\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-volatilitywindows\",\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-twint\",\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-twintexplorer\",\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-octave\",\n \"large\": 'The build will take some time, so be patient!',\n \"custom\": 'true',\n \"customostext\": 'Base OS: ubuntu:18.04.6 LTS ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": true,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-r\",\n \"large\": 'Note that this image is somewhat heavy (~2GB). It can take some time to build the Instance. If you think the proccess is frosen you can reload the page in your Browser',\n \"custom\": 'true',\n \"customostext\": 'Base OS: ubuntu:18.04.6 LTS ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": true,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http',\n \"app1\": true,\n \"link1\": 'Click here to open rstudio',\n \"url1\": 'http',\n \"port1\": \"8787/tcp\"\n },\n {\n \"name\": \"microservice-rust\",\n \"large\": 'no',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-julia\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.15',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-lua\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.12',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-luajit\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.12',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-nodesqlite3\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: ubuntu:20.04 LTS ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-electron\",\n \"large\": 'Note that this image is somewhat heavy (~1.5GB). It can take some time to build the Instance. If you think the proccess is frosen you can reload the page in your Browser',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-rubyfull\",\n \"large\": 'Note that this image is somewhat heavy (~1GB). It can take some time to build the Instance. If you think the proccess is frosen you can reload the page in your Browser',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-ruby\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.15',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-golangfull\",\n \"large\": 'Note that this image is somewhat heavy (~1GB). It can take some time to build the Instance. If you think the proccess is frosen you can reload the page in your Browser',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-golang\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.15',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-mariadb\",\n \"large\": 'no',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"6901/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-adminer\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.15',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": true,\n \"url\": 'http',\n \"port\": \"8080/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-gcc\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"8080/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-opencv\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:buster',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"8080/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-phpcli\",\n \"large\": 'no',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"8080/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-phpapache\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": false,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http',\n \"app2\": true,\n \"link2\": 'Click to run your PHP code over https',\n \"url2\": 'https',\n \"port2\": \"443/tcp\",\n \"app1\": true,\n \"link1\": 'Click to run your PHP code over http',\n \"url1\": 'http',\n \"port1\": \"80/tcp\"\n },\n {\n \"name\": \"microservice-wordpress\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\n \"app\": true,\n \"url\": 'http',\n \"port\": \"80/tcp\",\n \"ttyd\": true,\n \"ttydport\": \"3787/tcp\",\n \"ttydurl\": 'http'\n },\n {\n \"name\": \"microservice-oletools\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: python:3.11-rc-alpine3.15',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-dfirntfs\",\n \"large\": 'no',\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-peframe\",\n \"large\": 'The build will take some time, so be patient!',\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-libvshadow\",\n \"large\": 'no',\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-regripper\",\n \"large\": 'no',\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-jsshell\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: python:3.11-rc-alpine3.15',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-alpine313\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.13',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-alpine314\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.14',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-alpine315\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.15',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-debianbookworm\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bookworm ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-debianbullseye\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-debianbuster\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:buster ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-awscli\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: alpine3.13',\n \"customos\": 'apk add --no-cache net-tools ',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-perl\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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-perlfull\",\n \"large\": 'no',\n \"custom\": 'true',\n \"customostext\": 'Base OS: debian:bullseye ',\n \"customos\": 'apt-get update && apt-get install -y --no-install-recommends net-tools',\n \"customshtext\": 'It is executed after all the normal builds',\n \"customsh\": ' #!/bin/sh',\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 \"name\": \"microservice-rust\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-julia\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-lua\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-luajit\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-nodesqlite3\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-electron\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-ruby\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-rubyfull\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-golang\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-golangfull\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-gcc\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-opencv\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-phpcli\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-jsshell\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-phpapache\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-alpine313\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-alpine314\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-alpine315\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-debianbookworm\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-debianbuster\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-debianbullseye\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-awscli\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-perl\",\n \"automated\": true,\n \"url\": 'http',\n \"version\": 0,\n \"port\": 0\n },\n {\n \"name\": \"microservice-perlfull\",\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 <span class=\"text-info\">Running Instances</span></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 swarmlabnamecustomstart:{},\n swarmlabnamecustomdata:{},\n swarmlabnamecustom:'',\n swarmlabnamecustomservice:'',\n swarmlabnamecustomuser:'',\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\n//EDITORcustom\n (async () => {\n var strbase = '_masterservice_1'\n var sRegExInput1 = new RegExp(strbase, 'g'); \n var getcustomnames = this.hybridshowdata.Names.replace(sRegExInput1 ,'');\n var logdatacustom = await store.dispatch(\"pipelineLLO/getinstallcustom\",{\n token:this.token,\n instance:getcustomnames\n })\n //console.log(logdatacustom.data);\n if(logdatacustom.data && logdatacustom.data.data){\n //console.log(logdatacustom.data.data);\n var urlgeniGUIEDITOR = this.hybridshowdata.Names.split('_');\n\t\t\t\t\tthis.webinterfacegenericedit = true\n }\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// from available servicescustom socket run here\n\t\tthis.$root.$on('hybrid_start_instance_custom', (data) => {\n this.swarmlabnamecustomdata = data.baseservicedata\n //this.hybridoptions.baseservicedata\n //this.swarmlabname = data.swarmlabname\n this.swarmlabnamecustomstart = data\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('startcustom')\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 myservices socket run here\n\t\tthis.$root.$on('hybrid_install_instance_custom', (data) => {\n this.swarmlabnamecustomdata = data.baseservicedata\n this.swarmlabnamecustom = data.baseservice\n this.swarmlabnamecustomservice = data.service\n this.swarmlabnamecustomuser = data.user\n this.swarmlabname_git = data.git\n //this.swarmlabname_port = data.port\n\t\t\tthis.onAction('installcustom')\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_start_instance_custom')\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_custom')\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 == 'startcustom'){\n this.$socket.client.open();\n //this.$socket.client.emit('start', this.swarmlabnamecustomstart);\n this.swarmlabnamecustomstart.baseservicedata = this.swarmlabnamecustomdata\n this.$socket.client.emit('startcustom', this.swarmlabnamecustomstart);\n }else if(action == 'basedireditor'){\n this.$wait.start('myRunInstanceeditor');\n //console.log('volumes-from-------- ' + JSON.stringify(this.hybridshowdata.Names))\t\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 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 var pocurletherpadservertapp1 = 'no'\n var pocurletherpadservertapp1text = 'no'\n var pocurletherpadservertapp2 = 'no'\n var pocurletherpadservertapp2text = 'no'\n var pocurletherpadservertapp3 = 'no'\n var pocurletherpadservertapp3text = 'no'\n\n var pocurletherpadservertapp3port1 = 'no'\n var pocurletherpadservertapp3textport1 = 'no'\n var pocurletherpadservertapp3port2 = 'no'\n var pocurletherpadservertapp3textport2 = 'no'\n var pocurletherpadservertapp3port3 = 'no'\n var pocurletherpadservertapp3textport3 = 'no'\n var pocurletherpadservertapp3port4 = 'no'\n var pocurletherpadservertapp3textport4 = 'no'\n var pocurletherpadservertapp3port5 = 'no'\n var pocurletherpadservertapp3textport5 = '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 if(obWEB.hasOwnProperty('app1')){\n if(obWEB.app1){\n var swarmlabinstance1cda1s1bapp1 = new RegExp(obWEB.port1); \n if(swarmlabinstance1cda1s1bapp1.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp1 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp1 = splitcda1bcapp1[1].split('-')\n pocurletherpadservertapp1 = obWEB.url1+'://localhost:'+splitcd1a1bcapp1[0]+'/?token='+this.token\n pocurletherpadservertapp1text = obWEB.link1\n }\n }\n }\n // ---------------\n\n // ---------------\n if(obWEB.hasOwnProperty('app2')){\n if(obWEB.app2){\n var swarmlabinstance1cda1s1bapp2 = new RegExp(obWEB.port2); \n if(swarmlabinstance1cda1s1bapp2.test(splitcda1split[i1])){\n console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp2 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp2 = splitcda1bcapp2[1].split('-')\n pocurletherpadservertapp2 = obWEB.url2+'://localhost:'+splitcd1a1bcapp2[0]+'/?token='+this.token\n pocurletherpadservertapp2text = obWEB.link2\n }\n }\n }\n // ---------------\n\n // ---------------\n if(obWEB.hasOwnProperty('app3')){\n if(obWEB.app3){\n var swarmlabinstance1cda1s1bapp3 = new RegExp(obWEB.port3); \n if(swarmlabinstance1cda1s1bapp3.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp3 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp3 = splitcda1bcapp3[1].split('-')\n pocurletherpadservertapp3 = obWEB.url3+'://localhost:'+splitcd1a1bcapp3[0]+'/?token='+this.token\n pocurletherpadservertapp3text = obWEB.link3\n }\n }\n }\n // ---------------\n\n }\n }\n }\n\t\t\t\t\t\t}\n }\n\n// -------------------------------------------------------\n// ----- customservice\n// -------------------------------------------------------\n// ---------------------------\n// ------------------------- CUSTOM\n// -------------------------------------------------------\n var strbase = '_masterservice_1'\n var sRegExInput1 = new RegExp(strbase, 'g'); \n var getcustomnames = this.hybridshowdata.Names.replace(sRegExInput1 ,'');\n var logdatacustom = await store.dispatch(\"pipelineLLO/getinstallcustom\",{\n token:this.token,\n instance:getcustomnames\n })\n console.log('---------------------')\n console.log(logdatacustom.data)\n if(logdatacustom.data && logdatacustom.data.data){\n // EDITORcustom \n \n\n var logdatacustomres = JSON.parse(logdatacustom.data.data)\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// ---------------------------------\n if(logdatacustomres.baseservicedata.ttyd){\n var swarmlabinstance1cda1s1b = new RegExp(logdatacustomres.baseservicedata.ttydport); \n if(swarmlabinstance1cda1s1b.test(splitcda1split[i1])){\n var splitcda1bc = splitcda1split[i1].split(':')\n var splitcd1a1bc = splitcda1bc[1].split('-')\n if(splitcd1a1bc[0]){\n pocurletherpadserverttyd = logdatacustomres.baseservicedata.ttydurl+'://localhost:'+splitcd1a1bc[0]+'/?token='+this.token\n }\n }\n }\n// ---------------------------------\n// ---------------------------------\n if(logdatacustomres.baseservicedata.app){\n var swarmlabinstance1cda1s1 = new RegExp(logdatacustomres.baseservicedata.port); \n if(swarmlabinstance1cda1s1.test(splitcda1split[i1])){\n var splitcda1 = splitcda1split[i1].split(':')\n var splitcd1a1 = splitcda1[1].split('-')\n if(splitcd1a1[0]){\n pocurletherpadserver = logdatacustomres.baseservicedata.url+'://localhost:'+splitcd1a1[0]+'/?token='+this.token\n }\n }\n }\n// ---------------------------------\n // ---------------\n if(logdatacustomres.baseservicedata.hasOwnProperty('app1')){\n if(logdatacustomres.baseservicedata.app1){\n var swarmlabinstance1cda1s1bapp1 = new RegExp(logdatacustomres.baseservicedata.port1); \n if(swarmlabinstance1cda1s1bapp1.test(splitcda1split[i1])){\n var splitcda1bcapp1 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp1 = splitcda1bcapp1[1].split('-')\n if(splitcd1a1bcapp1[0]){\n pocurletherpadservertapp1 = logdatacustomres.baseservicedata.url1+'://localhost:'+splitcd1a1bcapp1[0]+'/?token='+this.token\n pocurletherpadservertapp1text = logdatacustomres.baseservicedata.link1\n }\n }\n }\n }\n // ---------------\n\n // ---------------\n if(logdatacustomres.baseservicedata.hasOwnProperty('app2')){\n if(logdatacustomres.baseservicedata.app2){\n var swarmlabinstance1cda1s1bapp2 = new RegExp(logdatacustomres.baseservicedata.port2); \n if(swarmlabinstance1cda1s1bapp2.test(splitcda1split[i1])){\n var splitcda1bcapp2 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp2 = splitcda1bcapp2[1].split('-')\n if(splitcd1a1bcapp2[0]){\n pocurletherpadservertapp2 = logdatacustomres.baseservicedata.url2+'://localhost:'+splitcd1a1bcapp2[0]+'/?token='+this.token\n pocurletherpadservertapp2text = logdatacustomres.baseservicedata.link2\n }\n }\n }\n }\n // ---------------\n\n // ---------------\n if(logdatacustomres.baseservicedata.hasOwnProperty('app3')){\n if(logdatacustomres.baseservicedata.app3){\n var swarmlabinstance1cda1s1bapp3 = new RegExp(logdatacustomres.baseservicedata.port3); \n if(swarmlabinstance1cda1s1bapp3.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp3 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp3 = splitcda1bcapp3[1].split('-')\n if(+splitcd1a1bcapp3[0]){\n pocurletherpadservertapp3 = logdatacustomres.baseservicedata.url3+'://localhost:'+splitcd1a1bcapp3[0]+'/?token='+this.token\n pocurletherpadservertapp3text = logdatacustomres.baseservicedata.link3\n }\n }\n }\n }\n // ---------------\n var text4linkcustom = \"Click to open \"\n // --------------- usercustom port1\n if(logdatacustomres.servicedata.hasOwnProperty('port1')){\n if(logdatacustomres.servicedata.port1){\n var swarmlabinstance1cda1s1bapp3port1 = new RegExp(logdatacustomres.servicedata.port1); \n if(swarmlabinstance1cda1s1bapp3port1.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp3port1 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp3port1 = splitcda1bcapp3port1[1].split('-')\n if(+splitcd1a1bcapp3port1[0]){\n pocurletherpadservertapp3port1 = logdatacustomres.servicedata.url1+'://localhost:'+splitcd1a1bcapp3port1[0]+'/?token='+this.token\n pocurletherpadservertapp3textport1 = text4linkcustom\n pocurletherpadservertapp3textport1 += logdatacustomres.servicedata.name1\n }\n }\n }\n }\n // ---------------\n // --------------- usercustom port2\n if(logdatacustomres.servicedata.hasOwnProperty('port2')){\n if(logdatacustomres.servicedata.port2){\n var swarmlabinstance1cda1s1bapp3port2 = new RegExp(logdatacustomres.servicedata.port2); \n if(swarmlabinstance1cda1s1bapp3port2.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp3port2 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp3port2 = splitcda1bcapp3port2[1].split('-')\n if(+splitcd1a1bcapp3port2[0]){\n pocurletherpadservertapp3port2 = logdatacustomres.servicedata.url1+'://localhost:'+splitcd1a1bcapp3port2[0]+'/?token='+this.token\n pocurletherpadservertapp3textport2 = text4linkcustom\n pocurletherpadservertapp3textport2 += logdatacustomres.servicedata.name2\n }\n }\n }\n }\n // ---------------\n // --------------- usercustom port3\n if(logdatacustomres.servicedata.hasOwnProperty('port3')){\n if(logdatacustomres.servicedata.port3){\n var swarmlabinstance1cda1s1bapp3port3 = new RegExp(logdatacustomres.servicedata.port3); \n if(swarmlabinstance1cda1s1bapp3port3.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp3port3 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp3port3 = splitcda1bcapp3port3[1].split('-')\n if(+splitcd1a1bcapp3port3[0]){\n pocurletherpadservertapp3port3 = logdatacustomres.servicedata.url3+'://localhost:'+splitcd1a1bcapp3port3[0]+'/?token='+this.token\n pocurletherpadservertapp3textport3 = text4linkcustom\n pocurletherpadservertapp3textport3 += logdatacustomres.servicedata.name3\n }\n }\n }\n }\n // ---------------\n // --------------- usercustom por4\n if(logdatacustomres.servicedata.hasOwnProperty('port4')){\n if(logdatacustomres.servicedata.port4){\n var swarmlabinstance1cda1s1bapp3port4 = new RegExp(logdatacustomres.servicedata.port4); \n if(swarmlabinstance1cda1s1bapp3port4.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp3port4 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp3port4 = splitcda1bcapp3port4[1].split('-')\n if(+splitcd1a1bcapp3port4[0]){\n pocurletherpadservertapp3port4 = logdatacustomres.servicedata.url4+'://localhost:'+splitcd1a1bcapp3port4[0]+'/?token='+this.token\n pocurletherpadservertapp3textport4 = text4linkcustom\n pocurletherpadservertapp3textport4 += logdatacustomres.servicedata.name4\n }\n }\n }\n }\n // ---------------\n // --------------- usercustom por5\n if(logdatacustomres.servicedata.hasOwnProperty('port5')){\n if(logdatacustomres.servicedata.port5){\n var swarmlabinstance1cda1s1bapp3port5 = new RegExp(logdatacustomres.servicedata.port5); \n if(swarmlabinstance1cda1s1bapp3port5.test(splitcda1split[i1])){\n //console.log('stringify--------- ' + JSON.stringify(splitcda1split[i1]));\n var splitcda1bcapp3port5 = splitcda1split[i1].split(':')\n var splitcd1a1bcapp3port5 = splitcda1bcapp3port5[1].split('-')\n if(+splitcd1a1bcapp3port5[0]){\n pocurletherpadservertapp3port5 = logdatacustomres.servicedata.url5+'://localhost:'+splitcd1a1bcapp3port5[0]+'/?token='+this.token\n pocurletherpadservertapp3textport5 = text4linkcustom\n pocurletherpadservertapp3textport5 += logdatacustomres.servicedata.name5\n }\n }\n }\n }\n // ---------------\n\n }\n }\n// -------------------------------------------------------\n// --------------------------- CUSTOM \n// -------------------------------------------------------\n } // end CUSTOM\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\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\nif(pocurletherpadservertapp1 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp1+'\" target=\"_blank\"> ' + pocurletherpadservertapp1text + '</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadservertapp2 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp2+'\" target=\"_blank\"> ' + pocurletherpadservertapp2text + '</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadservertapp3 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp3+'\" target=\"_blank\"> ' + pocurletherpadservertapp3text + '</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadservertapp3port1 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp3port1+'\" target=\"_blank\"> ' + pocurletherpadservertapp3textport1 + '</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadservertapp3port2 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp3port2+'\" target=\"_blank\"> ' + pocurletherpadservertapp3textport2 + '</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadservertapp3port3 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp3port3+'\" target=\"_blank\"> ' + pocurletherpadservertapp3textport3 + '</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadservertapp3port4 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp3port4+'\" target=\"_blank\"> ' + pocurletherpadservertapp3textport4 + '</a>'\n info +='</p>'\n info += '<hr>'\n}\n\nif(pocurletherpadservertapp3port5 != 'no'){\n info += '<hr>'\n info +='<p class=\"text-info\">'\n info += '<a class=\"text-info\" href=\"'+pocurletherpadservertapp3port5+'\" target=\"_blank\"> ' + pocurletherpadservertapp3textport5 + '</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 == 'installcustom'){\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = this.swarmlabnamecustom\n obj.user = this.swarmlabnamecustomuser\n obj.service = this.swarmlabnamecustomservice\n obj.baseservicedata = this.swarmlabnamecustomdata\n obj.git = this.swarmlabname_git\n this.$socket.client.open();\n this.$socket.client.emit('installcustom', 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=261af23c&\"\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 <span class=\"text-info\">(Docker Images, Containers and Volumes)</span></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 <span class=\"text-info\"> Docker networks</span></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=6e4f4af6&\"\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 \")]),_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\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=65e789ac&\"\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.up_name),expression:\"up_name\"}],staticClass:\"form-control text-info\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Number of Instances\",\"disabled\":\"\"},domProps:{\"value\":(_vm.up_name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.up_name=$event.target.value}}}),(_vm.viewhybridoptions)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.backup}},[_vm._v(\" Backup\")]):_vm._e(),(_vm.viewhybridoptions)?_c('button',{staticClass:\"btn btn-outline-dark\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.backupview}},[_vm._v(\" BackupView\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen != true)?_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustom}},[_vm._v(\" Custom\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen === true)?_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"disabled\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustom}},[_vm._v(\" Custom:\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustomcancel}},[_vm._v(\" Cancel\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustomsave}},[_vm._v(\" Save\")]):_vm._e(),_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setHybridoptions}},[_vm._v(\" Up\")])]):_vm._e(),(_vm.viewhybridoptions && _vm.custommenou)?_c('div',{staticClass:\"input-group-append\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"5\",\"sm\":\"5\",\"md\":\"5\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"custompackages\"}},[_vm._v(\"Add Extrapackages \"),_c('br'),_c('span',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(_vm.customostext)+\" \")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.custom.os),expression:\"custom.os\"}],staticClass:\"form-control\",attrs:{\"id\":\"custompackages\",\"rows\":\"8\"},domProps:{\"value\":(_vm.custom.os)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.custom, \"os\", $event.target.value)}}},[_vm._v(\" \"+_vm._s(_vm.custom.os)+\" \")])])]),_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"7\",\"sm\":\"7\",\"md\":\"7\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"customshell\"}},[_vm._v(\"Custom sh script \"),_c('br'),_c('span',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(_vm.customshtext)+\" \")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.custom.sh),expression:\"custom.sh\"}],staticClass:\"form-control\",attrs:{\"id\":\"customshell\",\"rows\":\"8\"},domProps:{\"value\":(_vm.custom.sh)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.custom, \"sh\", $event.target.value)}}},[_vm._v(\" \"+_vm._s(_vm.custom.sh)+\" \")])])])],1):_vm._e(),(_vm.viewhybridoptions && _vm.heavy)?_c('div',{staticClass:\"input-group-append\"},[_c('p',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.heavytext))])]):_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.testtest[props.rowData.swarmlabname] != props.rowData.swarmlabname && _vm.testtestdir[props.rowData.swarmlabname] == props.rowData.swarmlabname)?_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(),(_vm.testtest[props.rowData.swarmlabname] == props.rowData.swarmlabname && _vm.testtestdir[props.rowData.swarmlabname] == props.rowData.swarmlabname)?_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()])])}},{key:\"actionslocal\",fn:function(props){return _c('div',{key:_vm.vuetablekeygslot,attrs:{\"actionslocal\":\"\"}},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testtest[props.rowData.swarmlabname] != props.rowData.swarmlabname && _vm.testtestdir[props.rowData.swarmlabname] == props.rowData.swarmlabname)?_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\"},[_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)}}}),_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 text-info\" \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=\"up_name\"\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 <div class=\"text-info\">{{ up_name }}</div>\n -->\n\n\t\t\t\t<button class=\"btn btn-outline-info\" \n v-if=\"viewhybridoptions\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"backup\"\n >\n\t\t\t\tBackup</button>\n\t\t\t\t<button class=\"btn btn-outline-dark\" \n v-if=\"viewhybridoptions\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"backupview\"\n >\n\t\t\t\tBackupView</button>\n\n\t\t\t\t<button class=\"btn btn-outline-primary\" \n v-if=\"viewhybridoptions && customedit && custommenouopen != true\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustom\"\n >\n\t\t\t\tCustom</button>\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n v-if=\"viewhybridoptions && customedit && custommenouopen === true\"\n\t\t\t\t\tround\n disabled\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustom\"\n >\n\t\t\t\tCustom:</button>\n\n\t\t\t\t<button class=\"btn btn-outline-warning\" \n v-if=\"viewhybridoptions && customedit && custommenouopen\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustomcancel\"\n >\n\t\t\t\tCancel</button>\n\t\t\t\t<button class=\"btn btn-outline-info\" \n v-if=\"viewhybridoptions && customedit && custommenouopen\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustomsave\"\n >\n\t\t\t\tSave</button>\n\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=\"input-group-append\"\n v-if=\"viewhybridoptions && custommenou\"\n >\n\n <div class=\"row\"\n <b-col class=\"text-center\" cols=\"5\" sm=\"5\" md=\"5\">\n <div class=\"form-group\">\n <label for=\"custompackages\" class=\"text-dark\">Add Extrapackages <br>\n <span class=\"text-success\">\n {{ customostext }}\n </span >\n </label>\n <textarea class=\"form-control\" id=\"custompackages\" rows=\"8\"\n\t\t\t\t v-model=\"custom.os\"\n >\n {{ custom.os }}\n </textarea>\n </div>\n </b-col>\n <b-col class=\"text-center\" cols=\"7\" sm=\"7\" md=\"7\">\n <div class=\"form-group\">\n <label for=\"customshell\" class=\"text-dark\">Custom sh script <br>\n <span class=\"text-success\">\n {{ customshtext }}\n </span >\n </label>\n <textarea class=\"form-control\" id=\"customshell\" rows=\"8\"\n\t\t\t\t v-model=\"custom.sh\"\n >\n {{ custom.sh }}\n </textarea>\n </div>\n </b-col>\n </div>\n\n </div>\n\n\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions && heavy\"\n >\n <p class=\"text-danger\">{{ heavytext }}</p>\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 <button\n class=\"ti-cloud-down btn btn-outline-secondary btn-sm\"\n title=\"Download Lab_Instance\"\n round\n @click=\"checkactionrowindex(props.rowData,props.rowData._id)\">\n update</button>\n-->\n <div slot=\"actionsenabled\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testtest[props.rowData.swarmlabname] != props.rowData.swarmlabname && testtestdir[props.rowData.swarmlabname] == props.rowData.swarmlabname\"\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 <button\n v-if=\"testtest[props.rowData.swarmlabname] == props.rowData.swarmlabname && testtestdir[props.rowData.swarmlabname] == props.rowData.swarmlabname\"\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 </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=\"testtest[props.rowData.swarmlabname] != props.rowData.swarmlabname && testtestdir[props.rowData.swarmlabname] == props.rowData.swarmlabname\"\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 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\";\nimport {ApiConfigWEB} from \"@/config/index-web\";\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 testtest:[], // up or down services\n testtestdir:[], // install download or not service\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'size':'', \n 'port':'' \n },\n viewhybridoptions: false,\n heavy: false,\n heavytext: '',\n customedit: false,\n custommenouopen: false,\n custommenou: false,\n custom: {\n\t\t\t'os':'',\n\t\t\t'sh':''\n },\n customostext: '',\n customshtext: '',\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: 8,\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\tasync created() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n\t\tawait this.checkactionrowindexall()\n //console.log(\"token \"+ this.token);\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 checkactionrowindexall(){\n var obj = {}\n obj.token = this.token\n obj.instance = 'info'\n var res1 = await store.dispatch('pipelineLLO/getservicesstatusall', obj)\n if(res1.data.data){\n //console.log('resall '+JSON.stringify(res1))\n //console.log('resall--- '+JSON.stringify(res1.data.data))\n var al = res1.data.data.length;\n for (var arrayIndex in this.testtest) {\n Vue.delete(this.testtest, this.testtest[arrayIndex])\n }\n //console.log(this.testtest)\n for (let index = 0; index < al; ++index) {\n var el = res1.data.data[index];\n //console.log(el.Names)\n var el1 = el.Names.split('_');\n Vue.set(this.testtest, el1[0], el1[0])\n }\n }\n var res2 = await store.dispatch('pipelineLLO/getservicesinfoall', obj)\n if(res2.data.data){\n //console.log(res2.data.data)\n for (var arrayIndex in this.testtestdir) {\n Vue.delete(this.testtestdir, this.testtestdir[arrayIndex])\n }\n //console.log(this.testtestdir)\n var all = res2.data.data.length;\n for (let index = 0; index < all; ++index) {\n var el1a = res2.data.data[index];\n //console.log(el1a)\n Vue.set(this.testtestdir, el1a, el1a)\n }\n }\n //console.log(this.testtestdir)\n },\n\t\tasync checkactionrowindex(data,index){\n this.resetcustom()\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, index, data.swarmlabname)\n //console.log('running---- '+data.swarmlabname)\n //console.log(this.testactionrowindex)\n }else{\n //console.log('res8 NO '+JSON.stringify(res1.data))\n //Vue.delete(this.testactionrowindex, data.swarmlabname)\n Vue.delete(this.testactionrowindex, index)\n //console.log('NOTrunning---- '+data.swarmlabname)\n //console.log(this.testactionrowindex)\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, 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, index, data.swarmlabname)\n //console.log('running1111111111---- '+data.swarmlabname)\n //console.log(this.testactionrowindex)\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, index)\n //console.log('notrunning1111111111---- '+data.swarmlabname)\n //console.log(this.testactionrowindex)\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(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.resetcustom()\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.resetcustom()\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.$wait.start('myRunInstancetutor');\n //console.log(this.hybridoptions.swarmlabname)\n var res = await store.dispatch('pipelineLLO/rmswarmlablocal', this.hybridoptions.swarmlabname)\n this.$wait.end('myRunInstancetutor');\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 }\n }\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 0 '+ JSON.stringify(value.swarmlabname))\n console.log('inf git 1 '+ JSON.stringify(res))\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 this.resetcustom()\n //this.customedit = false\n //this.custommenouopen = false\n //this.custommenou = false\n //this.custom.os = ''\n //this.custom.sh = ''\n\n this.heavy = false\n this.heavytext = ''\n\n this.up_name = data.swarmlabname\n\n //console.log('RUN------------ '+ JSON.stringify(data))\n\n \t\t\tvar filtermicrosfot = `microservice-volatilitywindows`\n var grepmicrosoft = new RegExp(filtermicrosfot);\n\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 //Vue.set(this.testactionrowindex, value.index, value.swarmlabname)\n\t\t\t\t\t\t}else if(grepmicrosoft.test(data.swarmlabname)){\n this.viewhybridoptions = true\n this.heavy = true\n this.heavytext = 'Note that this image is somewhat heavy (~2GB) since they embed some of the kernel debug symbols for Microsoft Windows. It can take some time to build the Instance'\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = 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 for(var i = 0; i < ApiConfigWEB.length; i++) {\n var obWEB = ApiConfigWEB[i];\n\n //--------------\n\t\t\t\t\t\t if(obWEB.name == this.hybridoptions.swarmlabname){\n if(obWEB.hasOwnProperty('large')){\n if(obWEB.large != 'no'){\n // console.log(obWEB.large)\n this.heavy = true\n this.heavytext = obWEB.large\n }\n }\n }\n // -------------------------\n\t\t\t\t\t\t if(obWEB.name == this.hybridoptions.swarmlabname){\n if(obWEB.hasOwnProperty('custom')){\n if(obWEB.custom != 'no'){\n console.log(obWEB.custom)\n this.customedit = true\n this.custom.os = obWEB.customos\n this.custom.sh = obWEB.customsh\n this.customostext = obWEB.customostext\n this.customshtext = obWEB.customshtext\n }\n }\n }\n // -------------------------\n\n }\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.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 var log = await store.dispatch(\"pipelineLLO/stopservice\",{\n token:this.token,\n instance:this.hybridoptions.swarmlabname\n })\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 //console.log(log)\n this.refreshVuetable()\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n\t },\n\t\tasync setcustomcancel(){\n this.custommenouopen = false\n this.custommenou = false\n\t },\n\t\tasync setcustomsave(){\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n var log = await store.dispatch(\"pipelineLLO/savecustom\",{\n token:this.token,\n instance:this.hybridoptions.swarmlabname,\n package:this.custom.os,\n sh:this.custom.sh\n })\n this.custommenouopen = false\n this.custommenou = false\n console.log('chown ok '+ JSON.stringify(log.data))\n\t },\n\t\tasync setcustom(){\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n this.custommenouopen = true\n this.custommenou = true\n var log = await store.dispatch(\"pipelineLLO/getcustom\",{\n token:this.token,\n instance:this.hybridoptions.swarmlabname\n })\n if(log.data.error === false){\n if(log.data.error_msg == 'nodir'){\n //console.log('chown reload')\n var info=`<h5><b> Please redownload Microservice and try launching the module again </b><br> \n </h5>\n `\n this.$swal({\n type: '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 if(log.data.error_msg == 'ok'){\n if(log.data.extrapackagestext != ''){\n //this.custom.os = log.data.extrapackagestext\n Vue.set(this.custom, 'os', log.data.extrapackagestext)\n }\n if(log.data.extrashtext != ''){\n //this.custom.sh = log.data.extrashtext\n Vue.set(this.custom, 'sh', log.data.extrashtext)\n }\n console.log('chown extrapackages1 '+ JSON.stringify(this.custom.os))\n console.log('chown sh1 '+ JSON.stringify(this.custom.sh))\n }\n\n }else{\n var info=`<h5><b> Please remove and download Microservice and try launching the module again </b><br> \n </h5>\n `\n this.$swal({\n type: '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('chownlog '+ JSON.stringify(log))\n //console.log('chown extrapackages '+ JSON.stringify(this.custom.os))\n //console.log('chown sh '+ JSON.stringify(this.custom.sh))\n\t },\n\t\tasync backup(){\n var log = await store.dispatch(\"pipelineLLO/runbackupinstance\",{\n token:this.token,\n instance: this.hybridoptions.swarmlabname\n })\n\t },\n\t\tasync backupview(){\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\t },\n\t\tasync setHybridoptions(){\n this.resetcustom()\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.set(this.testactionrowindex, value.index, value.swarmlabname)\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 resetcustom() {\n this.customedit = false\n this.custommenouopen = false\n this.custommenou = false\n this.custom.os = ''\n this.custom.sh = ''\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 // this version with this.checkactionrowindex dont work\n // render hangs\n\t\t //await this.checkactionrowindex(this.dataselect, this.indexselect)\n\t\t await this.checkactionrowindexall()\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=5c673ade&\"\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-mymicroservices',{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(\"Users MicroServices\")]),_vm._v(\" Deploy - Local \")])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_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\"},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.up_name),expression:\"up_name\"}],staticClass:\"form-control text-info\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Number of Instances\",\"disabled\":\"\"},domProps:{\"value\":(_vm.up_name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.up_name=$event.target.value}}}),(_vm.viewhybridoptions)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.backup}},[_vm._v(\" Backup\")]):_vm._e(),(_vm.viewhybridoptions)?_c('button',{staticClass:\"btn btn-outline-dark\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.backupview}},[_vm._v(\" BackupView\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen != true)?_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustom}},[_vm._v(\" Custom\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen === true)?_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"disabled\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustom}},[_vm._v(\" Custom:\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustomcancel}},[_vm._v(\" Cancel\")]):_vm._e(),(_vm.viewhybridoptions && _vm.customedit && _vm.custommenouopen)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setcustomsave}},[_vm._v(\" Save\")]):_vm._e(),_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setHybridoptions}},[_vm._v(\" Up\")])]):_vm._e(),(_vm.viewhybridoptions && _vm.custommenou)?_c('div',{staticClass:\"input-group-append\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"5\",\"sm\":\"5\",\"md\":\"5\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"custompackages\"}},[_vm._v(\"Add Extrapackages \"),_c('br'),_c('span',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(_vm.customostext)+\" \")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.custom.os),expression:\"custom.os\"}],staticClass:\"form-control\",attrs:{\"id\":\"custompackages\",\"rows\":\"8\"},domProps:{\"value\":(_vm.custom.os)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.custom, \"os\", $event.target.value)}}},[_vm._v(\" \"+_vm._s(_vm.custom.os)+\" \")])])]),_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"7\",\"sm\":\"7\",\"md\":\"7\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"customshell\"}},[_vm._v(\"Custom sh script \"),_c('br'),_c('span',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(_vm.customshtext)+\" \")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.custom.sh),expression:\"custom.sh\"}],staticClass:\"form-control\",attrs:{\"id\":\"customshell\",\"rows\":\"8\"},domProps:{\"value\":(_vm.custom.sh)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.custom, \"sh\", $event.target.value)}}},[_vm._v(\" \"+_vm._s(_vm.custom.sh)+\" \")])])])],1):_vm._e(),(_vm.viewhybridoptions && _vm.heavy)?_c('div',{staticClass:\"input-group-append\"},[_c('p',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.heavytext))])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekeygusersservices,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.testtest[props.rowData.service] != props.rowData.service && _vm.testtestdir[props.rowData.service] == props.rowData.service && _vm.testtestdiruser[props.rowData.service] == props.rowData.user)?_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(),(_vm.testtest[props.rowData.service] == props.rowData.service && _vm.testtestdir[props.rowData.service] == props.rowData.service && _vm.testtestdiruser[props.rowData.service] == props.rowData.user)?_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()])])}},{key:\"actionslocal\",fn:function(props){return _c('div',{key:_vm.vuetablekeygslotcustom,attrs:{\"actionslocal\":\"\"}},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testtest[props.rowData.service] != props.rowData.service && _vm.testtestdir[props.rowData.service] == props.rowData.service)?_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\"},[_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)}}}),_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\">Users 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<div class=\"input-group-prepend\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-success\" \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\tRefresh Table</button>\n\t\t\t</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\"\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 text-info\" \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=\"up_name\"\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 <div class=\"text-info\">{{ up_name }}</div>\n -->\n\n\t\t\t\t<button class=\"btn btn-outline-info\" \n v-if=\"viewhybridoptions\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"backup\"\n >\n\t\t\t\tBackup</button>\n\t\t\t\t<button class=\"btn btn-outline-dark\" \n v-if=\"viewhybridoptions\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"backupview\"\n >\n\t\t\t\tBackupView</button>\n\n\t\t\t\t<button class=\"btn btn-outline-primary\" \n v-if=\"viewhybridoptions && customedit && custommenouopen != true\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustom\"\n >\n\t\t\t\tCustom</button>\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n v-if=\"viewhybridoptions && customedit && custommenouopen === true\"\n\t\t\t\t\tround\n disabled\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustom\"\n >\n\t\t\t\tCustom:</button>\n\n\t\t\t\t<button class=\"btn btn-outline-warning\" \n v-if=\"viewhybridoptions && customedit && custommenouopen\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustomcancel\"\n >\n\t\t\t\tCancel</button>\n\t\t\t\t<button class=\"btn btn-outline-info\" \n v-if=\"viewhybridoptions && customedit && custommenouopen\"\n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setcustomsave\"\n >\n\t\t\t\tSave</button>\n\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=\"input-group-append\"\n v-if=\"viewhybridoptions && custommenou\"\n >\n\n <div class=\"row\"\n <b-col class=\"text-center\" cols=\"5\" sm=\"5\" md=\"5\">\n <div class=\"form-group\">\n <label for=\"custompackages\" class=\"text-dark\">Add Extrapackages <br>\n <span class=\"text-success\">\n {{ customostext }}\n </span >\n </label>\n <textarea class=\"form-control\" id=\"custompackages\" rows=\"8\"\n\t\t\t\t v-model=\"custom.os\"\n >\n {{ custom.os }}\n </textarea>\n </div>\n </b-col>\n <b-col class=\"text-center\" cols=\"7\" sm=\"7\" md=\"7\">\n <div class=\"form-group\">\n <label for=\"customshell\" class=\"text-dark\">Custom sh script <br>\n <span class=\"text-success\">\n {{ customshtext }}\n </span >\n </label>\n <textarea class=\"form-control\" id=\"customshell\" rows=\"8\"\n\t\t\t\t v-model=\"custom.sh\"\n >\n {{ custom.sh }}\n </textarea>\n </div>\n </b-col>\n </div>\n\n </div>\n\n\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions && heavy\"\n >\n <p class=\"text-danger\">{{ heavytext }}</p>\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=\"vuetablekeygusersservices\"\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=\"testtest[props.rowData.service] != props.rowData.service && testtestdir[props.rowData.service] == props.rowData.service && testtestdiruser[props.rowData.service] == props.rowData.user\"\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 <button\n v-if=\"testtest[props.rowData.service] == props.rowData.service && testtestdir[props.rowData.service] == props.rowData.service && testtestdiruser[props.rowData.service] == props.rowData.user\"\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 </div>\n </div>\n <div slot=\"actionslocal\" slot-scope=\"props\" actionslocal\n\t\t\t\t:key=\"vuetablekeygslotcustom\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testtest[props.rowData.service] != props.rowData.service && testtestdir[props.rowData.service] == props.rowData.service\"\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 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\";\nimport {ApiConfigWEB} from \"@/config/index-web\";\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 testtest:[], // up or down services\n testtestdir:[], // install download or not service\n testtestdiruser:[], // install download or not service\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'size':'', \n 'port':'' \n },\n viewhybridoptions: false,\n heavy: false,\n heavytext: '',\n customedit: false,\n custommenouopen: false,\n custommenou: false,\n custom: {\n\t\t\t'os':'',\n\t\t\t'sh':''\n },\n customostext: '',\n customshtext: '',\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\tvuetablekeygusersservices:0,\n\t\tvuetablekeygslotcustom:0,\n\t\tfielddata:{},\n fields: [\n {\n name: 'service',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'service',\n visible:true,\n dataClass: 'left aligned col-3',\n width: '30%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'readme',\n title: '<span class=\"orange\"></span>Info',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:true,\n width: '35%'\n },\n {\n name: 'user',\n title: '<span class=\"orange\"></span>User',\n sortField: 'user',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:true,\n width: '10%',\n callback: function(value) {\n if (value) {\n var v = value.split('@')\n if (v[0]) {\n var vv = '<p class=\"text-info\">' + v[0] +'</p>'\n return vv\n } else {\n var vv = '<p class=\"text-info\"></p>'\n return vv\n }\n }else{\n return value\n }\n }\n },\n {\n name: 'gitrepo',\n title: '<span class=\"orange\"></span>User repo',\n sortField: 'gitrepo',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:true,\n width: '30%'\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+\"/swarmlabhybridmymicroservicesall\",\n\t\tcss: CssConfig,\n perpage: 8,\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_build_micro_service_menou_refreshtable', () => {\n this.refreshVuetable()\n //this.refreshVuetableall()\n })\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\tasync created() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n\t\t//await this.checkactionrowindexall()\n await this.refreshVuetable()\n //console.log(\"token \"+ this.token);\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_availableservices')\n\t\tthis.$root.$off('hybrid_build_micro_service_menou_refreshtable')\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 checkactionrowindexall(){\n var obj = {}\n obj.token = this.token\n obj.instance = 'info'\n var res1 = await store.dispatch('pipelineLLO/getservicesstatusall', obj)\n if(res1.data.data){\n var al = res1.data.data.length;\n for (var arrayIndex in this.testtest) {\n Vue.delete(this.testtest, this.testtest[arrayIndex])\n }\n for (let index = 0; index < al; ++index) {\n var el = res1.data.data[index];\n //console.log('resall-run--> '+JSON.stringify(el))\n/*\n var atmp1a = el.split('@');\n if(atmp1a[1]){\n console.log('resall---> atmp1a a '+JSON.stringify(atmp1a))\n var atmp2a = atmp1a[1].split('_');\n console.log('resall---> atmp1a '+JSON.stringify(atmp1a))\n console.log('resall---> atmp2a '+JSON.stringify(atmp2a[1]))\n Vue.set(this.testtest, atmp2a[1], atmp2a[1])\n }\n*/\n var el1 = el.Names.split('_');\n let indexiuser = el1[0].lastIndexOf('-');\n indexiuser++\n var restuser = el1[0].substring(indexiuser) \n //console.log(restuser)\n //Vue.set(this.testtest, el1[0], el1[0])\n Vue.set(this.testtest, restuser, restuser)\n //console.log(this.testtest)\n\n }\n }\n var res2 = await store.dispatch('pipelineLLO/getservicesinfoallcustom', obj)\n if(res2.data.data){\n for (var arrayIndex in this.testtestdir) {\n Vue.delete(this.testtestdir, this.testtestdir[arrayIndex])\n }\n //console.log('elnames user all ' + JSON.stringify(this.hybridoptions))\n var all = res2.data.data.length;\n for (let index = 0; index < all; ++index) {\n var el1a = res2.data.data[index];\n //console.log('elnames1' + el1a)\n // for multiuser must xx = false\n var xx = false\n if(xx){\n var struser = `${this.hybridoptions.user}_`\n var strbase = `_${this.hybridoptions.baseservice}`\n //console.log('elnames user ' + struser)\n\n var sRegExInput = new RegExp(struser, 'g'); \n var a = el1a.replace(sRegExInput ,'');\n var sRegExInput1 = new RegExp(strbase, 'g'); \n var a1 = a.replace(sRegExInput1 ,'');\n\n //var a = el1a.replace('struser',\"\");\n //console.log('elnames -a1 ' + a1)\n //console.log('elnames -a ' + a)\n Vue.set(this.testtestdir, a1, a1)\n }else{\n var atmp1 = el1a.split('@');\n if(atmp1[1]){\n //console.log('resall---> atmp1 a '+JSON.stringify(atmp1))\n var atmp2 = atmp1[1].split('_');\n //console.log('resall---> atmp1 '+JSON.stringify(atmp1))\n //console.log('resall---> atmp2 '+JSON.stringify(atmp2[1]))\n //console.log('resall---> 2222 '+JSON.stringify(atmp2))\n Vue.set(this.testtestdir, atmp2[1], atmp2[1])\n var servicecustomuser = `${atmp1[0]}@${atmp2[0]}`\n Vue.set(this.testtestdiruser, atmp2[1], servicecustomuser)\n //console.log(this.testtestdir)\n //console.log(this.testtestdiruser)\n //Vue.set(this.testtestuser, el1[0], el1[0])\n }\n\n }\n }\n }\n //console.log('resall1---> '+JSON.stringify(res2.data.data))\n //console.log('resall--->> '+JSON.stringify(this.testtestdir))\n //console.log(this.testtestdir)\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 //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 //console.log('inf git 0 '+ JSON.stringify(paginationData))\n //console.log('inf git 1 '+ JSON.stringify(this.fielddata[1]))\n },\n onChangePage (page) {\n this.resetcustom()\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.readme\n //console.log('inf '+ JSON.stringify(data))\n //console.log('infi '+ JSON.stringify(index))\n\n var description='<div style=\"height: 250px; overflow-y: scroll;\"><p>'+container+'</p></div>'\n var info='<h5>Service Info</h5>'\n info += description\n this.$swal({\n type: 'info',\n html: info,\n icon: 'info',\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\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.resetcustom()\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.$wait.start('myRunInstancetutor');\n //console.log(this.hybridoptions.swarmlabname)\n var res = await store.dispatch('pipelineLLO/rmswarmlablocaluser', data)\n this.$wait.end('myRunInstancetutor');\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 }\n }\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.baseservice = data.baseservice\n this.hybridoptions.service = data.service\n this.hybridoptions.user = data.user\n this.hybridoptions.index = index\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.baseservice = this.hybridoptions.baseservice\n value.service = this.hybridoptions.service\n value.user = this.hybridoptions.user\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.baseservice)\n var swarmlab1info=res.data.swarmlabinfo\n value.git = swarmlab1info\n //console.log('inf git 0 '+ JSON.stringify(value.swarmlabname))\n //console.log('inf git 1 '+ JSON.stringify(res))\n //console.log('inf '+ JSON.stringify(value))\n var log = await store.dispatch(\"pipelineLLO/checkownercustom\",{\n token:this.token,\n instance:this.hybridoptions.swarmlabname\n })\n\n for(var i = 0; i < ApiConfigWEB.length; i++) {\n var obWEB = ApiConfigWEB[i];\n\n //--------------\n\t\t\t\t\t\t if(obWEB.name == this.hybridoptions.baseservice){\n value.baseservicedata = obWEB\n/*\n if(obWEB.hasOwnProperty('large')){\n if(obWEB.large != 'no'){\n // console.log(obWEB.large)\n this.heavy = true\n this.heavytext = obWEB.large\n }\n }\n*/\n }\n }\n\n\n\n\n \tthis.$root.$emit('hybrid_install_instance_custom', 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.resetcustom()\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.baseservice = data.baseservice\n this.hybridoptions.packages = data.packages\n this.hybridoptions.sh = data.sh\n this.hybridoptions.rclocal = data.rclocal\n this.hybridoptions.service = data.service\n this.hybridoptions.user = data.user\n this.hybridoptions.index = index\n\n this.hybridoptions.port1 = data.port1\n this.hybridoptions.url1 = data.url1\n this.hybridoptions.name1 = data.name1\n\n this.hybridoptions.port2 = data.port2\n this.hybridoptions.url2 = data.url2\n this.hybridoptions.name2 = data.name2\n\n this.hybridoptions.port3 = data.port3\n this.hybridoptions.url3 = data.url3\n this.hybridoptions.name3 = data.name3\n\n //this.custom.sh = ''\n\n this.heavy = false\n this.heavytext = ''\n\n this.up_name = data.swarmlabname\n\n //console.log('RUN------------ '+ JSON.stringify(data))\n\n \t\t\tvar filtermicrosfot = `microservice-volatilitywindows`\n var grepmicrosoft = new RegExp(filtermicrosfot);\n\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 //Vue.set(this.testactionrowindex, value.index, value.swarmlabname)\n\t\t\t\t\t\t}else if(grepmicrosoft.test(data.swarmlabname)){\n this.viewhybridoptions = true\n this.heavy = true\n this.heavytext = 'Note that this image is somewhat heavy (~2GB) since they embed some of the kernel debug symbols for Microsoft Windows. It can take some time to build the Instance'\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = 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('RUN base1 '+ JSON.stringify(data))\n for(var i = 0; i < ApiConfigWEB.length; i++) {\n var obWEB = ApiConfigWEB[i];\n\n //--------------\n\t\t\t\t\t\t if(obWEB.name == data.baseservice){\n if(obWEB.hasOwnProperty('large')){\n if(obWEB.large != 'no'){\n // console.log(obWEB.large)\n this.heavy = true\n this.heavytext = obWEB.large\n }\n }\n }\n // -------------------------\n\t\t\t\t\t\t if(obWEB.name == data.baseservice){\n this.hybridoptions.baseservicedata = obWEB\n //console.log('RUN base '+ JSON.stringify(this.hybridoptions))\n if(obWEB.hasOwnProperty('custom')){\n if(obWEB.custom != 'no'){\n //console.log(obWEB.custom)\n this.customedit = true\n this.custom.os = obWEB.customos\n this.custom.sh = obWEB.customsh\n this.customostext = obWEB.customostext\n this.customshtext = obWEB.customshtext\n }\n }\n }\n // -------------------------\n\n }\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.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 = data\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 var log = await store.dispatch(\"pipelineLLO/stopservicecustom\",{\n token:this.token,\n instance:this.hybridoptions\n })\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 //console.log(log)\n this.refreshVuetable()\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n\t },\n\t\tasync setcustomcancel(){\n this.custommenouopen = false\n this.custommenou = false\n\t },\n\t\tasync setcustomsave(){\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n var log = await store.dispatch(\"pipelineLLO/savecustomuser\",{\n token:this.token,\n instance:this.hybridoptions,\n package:this.custom.os,\n sh:this.custom.sh\n })\n this.custommenouopen = false\n this.custommenou = false\n //console.log('chown ok '+ JSON.stringify(log.data))\n\t },\n\t\tasync setcustom(){\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n this.custommenouopen = true\n this.custommenou = true\n var log = await store.dispatch(\"pipelineLLO/getcustomuser\",{\n token:this.token,\n instance:this.hybridoptions\n })\n //console.log(log)\n if(log.data.error === false){\n if(log.data.error_msg == 'nodir'){\n //console.log('chown reload')\n var info=`<h5><b> Please redownload Microservice and try launching the module again </b><br> \n </h5>\n `\n this.$swal({\n type: '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 if(log.data.error_msg == 'ok'){\n if(log.data.extrapackagestext != ''){\n //this.custom.os = log.data.extrapackagestext\n Vue.set(this.custom, 'os', log.data.extrapackagestext)\n }\n if(log.data.extrashtext != ''){\n //this.custom.sh = log.data.extrashtext\n Vue.set(this.custom, 'sh', log.data.extrashtext)\n }\n //console.log('chown extrapackages1 '+ JSON.stringify(this.custom.os))\n //console.log('chown sh1 '+ JSON.stringify(this.custom.sh))\n }\n\n }else{\n var info=`<h5><b> Please remove and download Microservice and try launching the module again </b><br> \n </h5>\n `\n this.$swal({\n type: '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('chownlog '+ JSON.stringify(log))\n //console.log('chown extrapackages '+ JSON.stringify(this.custom.os))\n //console.log('chown sh '+ JSON.stringify(this.custom.sh))\n\t },\n\t\tasync backup(){\n var log = await store.dispatch(\"pipelineLLO/runbackupinstanceuser\",{\n token:this.token,\n instance: this.hybridoptions\n })\n\t },\n\t\tasync backupview(){\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\t },\n\t\tasync setHybridoptions(){\n this.resetcustom()\n //console.log(JSON.stringify(data))\n //this.hybridoptions.os = data.os\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/chowncustom\",{\n token:this.token,\n user:this.hybridoptions.user,\n service:this.hybridoptions.service,\n baseservice:this.hybridoptions.baseservice\n })\n //console.log('data '+ JSON.stringify(this.hybridoptions))\n \t//this.$root.$emit('hybrid_start_instance_custom', value)\n \tthis.$root.$emit('hybrid_start_instance_custom', this.hybridoptions)\n //Vue.set(this.testactionrowindex, value.swarmlabname, value.index)\n //Vue.set(this.testactionrowindex, value.index, value.swarmlabname)\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.vuetablekeygusersservices += 1\n\t\t\t\t})\n\t\t},\n async resetcustom() {\n this.customedit = false\n this.custommenouopen = false\n this.custommenou = false\n this.custom.os = ''\n this.custom.sh = ''\n\t\t},\n async refreshVuetable() {\n\t\t\t\t//this.vuetablekeygusersservices += 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 // render hangs\n\t\t await this.checkactionrowindexall()\n\t\t\t\t\tthis.vuetablekeygslotcustom += 1\n //des \n\t\t\t\t\t//this.vuetablekeygusersservices += 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!./availablemicroservicescustom.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!./availablemicroservicescustom.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./availablemicroservicescustom.vue?vue&type=template&id=4e7f53bf&\"\nimport script from \"./availablemicroservicescustom.vue?vue&type=script&lang=js&\"\nexport * from \"./availablemicroservicescustom.vue?vue&type=script&lang=js&\"\nimport style0 from \"./availablemicroservicescustom.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-mymicroservices\n :key=\"componentKeyreloadservice5\" \n >\n\n </available-mymicroservices>\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 AvailableMymicroservices from \"./mynetwork/availablemicroservicescustom.vue\";\nexport default {\n components: {\n // ViewNetwork,\n AdhocView,\n card,\n // DockerServices,\n AvailableMymicroservices\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!./mymicroservicescustom.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!./mymicroservicescustom.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mymicroservicescustom.vue?vue&type=template&id=17fc6846&\"\nimport script from \"./mymicroservicescustom.vue?vue&type=script&lang=js&\"\nexport * from \"./mymicroservicescustom.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('builder-services'),_c('br'),_c('builder-my-services')],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('service-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',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.menou),expression:\"menou\"}],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 \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\"Manage your builds\")])])])]),_c('br'),(_vm.menouselect)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 sm-12\"},[_c('b-form-select',{staticClass:\"mt-3\",attrs:{\"options\":_vm.options,\"size\":\"sm\"},on:{\"change\":_vm.setservice},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_vm._v(\" >\")])],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 sm-12\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend1\"}},[_vm._v(\"Base Service Name\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_baseservice),expression:\"form_baseservice\"}],staticClass:\"form-control text-success\",attrs:{\"type\":\"text\",\"disabled\":\"\",\"aria-describedby\":\"validationTooltipUsernamePrepend1\"},domProps:{\"value\":(_vm.form_baseservice)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_baseservice=$event.target.value}}}),_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_baseservice')}}})])])])]),_c('ValidationProvider',{ref:\"hybrid_stackname\",attrs:{\"name\":\"myServicename\",\"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:\"row\"},[_c('div',{staticClass:\"col-sm-12 sm-12\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\"},[_vm._v(\"Service Name\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_myservicename),expression:\"form_myservicename\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.stackname == 1, 'is-invalid': _vm.isDeployValid.stackname == 2},attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"data-vv-as\":\"\\\"nyServicename\\\"\",\"data-vv-value-path\":\"form_myservicename\",\"data-vv-name\":\"form_myservicename\"},domProps:{\"value\":(_vm.form_myservicename)},on:{\"keyup\":function($event){return _vm.isValid('stackname')},\"blur\":function($event){return _vm.isValid('stackname')},\"input\":[function($event){if($event.target.composing){ return; }_vm.form_myservicename=$event.target.value},function($event){return _vm.isValid('stackname')}],\"change\":function($event){return _vm.isValid('stackname')},\"focus\":function($event){return _vm.isValid('stackname')}}}),_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_myservicename')}}})])])])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])}),_c('ValidationProvider',{ref:\"hybrid_stackversion\",attrs:{\"name\":\"myVersion\",\"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:\"row\"},[_c('div',{staticClass:\"col-sm-12 sm-12\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\"},[_vm._v(\"Service Version\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_version),expression:\"form_version\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.stackversion == 1, 'is-invalid': _vm.isDeployValid.stackversion == 2},attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"name\":\"myVersion\"},domProps:{\"value\":(_vm.form_version)},on:{\"keyup\":function($event){return _vm.isValid('stackversion')},\"blur\":function($event){return _vm.isValid('stackversion')},\"input\":[function($event){if($event.target.composing){ return; }_vm.form_version=$event.target.value},function($event){return _vm.isValid('stackversion')}],\"change\":function($event){return _vm.isValid('stackversion')},\"focus\":function($event){return _vm.isValid('stackversion')}}}),_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_version')}}})])])])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])}),_c('ValidationProvider',{ref:\"hybrid_stackversion\",attrs:{\"name\":\"myGitrepo\",\"rules\":\"required|alpha_num_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:\"row\"},[_c('div',{staticClass:\"col-sm-12 sm-12\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend\"}},[_vm._v(\"Git-repo\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_gitrepo),expression:\"form_gitrepo\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.gitrepo == 1, 'is-invalid': _vm.isDeployValid.gitrepo == 2},attrs:{\"type\":\"text\",\"name\":\"myGitrepo\",\"aria-describedby\":\"validationTooltipUsernamePrepend\"},domProps:{\"value\":(_vm.form_gitrepo)},on:{\"keyup\":function($event){return _vm.isValid('gitrepo')},\"blur\":function($event){return _vm.isValid('gitrepo')},\"input\":[function($event){if($event.target.composing){ return; }_vm.form_gitrepo=$event.target.value},function($event){return _vm.isValid('gitrepo')}],\"change\":function($event){return _vm.isValid('gitrepo')},\"focus\":function($event){return _vm.isValid('gitrepo')}}}),_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_gitrepo')}}})])])])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])}),_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"customreadme\"}},[_c('b',[_c('span',{staticClass:\"text-dark\"},[_vm._v(\"README \")])]),_vm._v(\" \"),_c('br'),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_readme')}}})]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_readme),expression:\"form_readme\"}],staticClass:\"form-control\",attrs:{\"name\":\"customreadme\",\"rows\":\"8\"},domProps:{\"value\":(_vm.form_readme)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_readme=$event.target.value}}},[_vm._v(\" \"+_vm._s(_vm.form_readme)+\" \")])])]),_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"custompackages\"}},[_c('b',[_c('span',{staticClass:\"text-dark\"},[_vm._v(\"Add Extrapackages\")])]),_vm._v(\" (e.g. apt, apk etc) \"),_c('br'),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_os')}}}),_c('span',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(_vm.customostext)+\" \")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_os),expression:\"form_os\"}],staticClass:\"form-control\",attrs:{\"name\":\"custompackages\",\"rows\":\"8\",\"placeholder\":\"e.g. apt-get update && apt-get -y install or apk update && apk add --no-cache \"},domProps:{\"value\":(_vm.form_os)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_os=$event.target.value}}},[_vm._v(\" \"+_vm._s(_vm.form_os)+\" \")])])]),_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"customshell\"}},[_c('b',[_c('span',{staticClass:\"text-dark\"},[_vm._v(\"Custom sh script \")])]),_vm._v(\" \"),_c('br'),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_sh')}}}),_c('span',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(_vm.customshtext)+\" \")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_sh),expression:\"form_sh\"}],staticClass:\"form-control\",attrs:{\"name\":\"customshell\",\"rows\":\"8\",\"placeholder\":\"#!/bin/bash \"},domProps:{\"value\":(_vm.form_sh)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_sh=$event.target.value}}},[_vm._v(\" \"+_vm._s(_vm.form_sh)+\" \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 sm-12\"},[_c('div',{staticClass:\"text-center\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm align-center\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('port')}}})])]),_c('div',{staticClass:\"col-sm-3 sm-3\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend\"}},[_vm._v(\"Port\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_port1),expression:\"form_port1\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-describedby\":\"validationTooltipUsernamePrepend\"},domProps:{\"value\":(_vm.form_port1)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_port1=$event.target.value}}})])]),_c('div',{staticClass:\"col-sm-4 sm-4\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend\"}},[_vm._v(\"URI\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_url1),expression:\"form_url1\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"http/https\",\"aria-describedby\":\"validationTooltipUsernamePrepend\"},domProps:{\"value\":(_vm.form_url1)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_url1=$event.target.value}}})])]),_c('div',{staticClass:\"col-sm-5 sm-5\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend1a\"}},[_vm._v(\"Name\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_name1),expression:\"form_name1\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-describedby\":\"validationTooltipUsernamePrepend1a\"},domProps:{\"value\":(_vm.form_name1)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_name1=$event.target.value}}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-3 sm-3\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend2\"}},[_vm._v(\"Port\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_port2),expression:\"form_port2\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-describedby\":\"validationTooltipUsernamePrepend2\"},domProps:{\"value\":(_vm.form_port2)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_port2=$event.target.value}}})])]),_c('div',{staticClass:\"col-sm-4 sm-4\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend\"}},[_vm._v(\"URI\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_url2),expression:\"form_url2\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"http/https\",\"aria-describedby\":\"validationTooltipUsernamePrepend\"},domProps:{\"value\":(_vm.form_url2)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_url2=$event.target.value}}})])]),_c('div',{staticClass:\"col-sm-5 sm-5\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend2a\"}},[_vm._v(\"Name\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_name2),expression:\"form_name2\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-describedby\":\"validationTooltipUsernamePrepend2a\"},domProps:{\"value\":(_vm.form_name2)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_name2=$event.target.value}}})])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-3 sm-3\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend3\"}},[_vm._v(\"Port\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_port3),expression:\"form_port3\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-describedby\":\"validationTooltipUsernamePrepend2\"},domProps:{\"value\":(_vm.form_port3)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_port3=$event.target.value}}})])]),_c('div',{staticClass:\"col-sm-4 sm-4\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend\"}},[_vm._v(\"URI\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_url3),expression:\"form_url3\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"http/https\",\"aria-describedby\":\"validationTooltipUsernamePrepend\"},domProps:{\"value\":(_vm.form_url3)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_url3=$event.target.value}}})])]),_c('div',{staticClass:\"col-sm-5 sm-5\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text\",attrs:{\"name\":\"validationTooltipUsernamePrepend3a\"}},[_vm._v(\"Name\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_name3),expression:\"form_name3\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-describedby\":\"validationTooltipUsernamePrepend3a\"},domProps:{\"value\":(_vm.form_name3)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_name3=$event.target.value}}})])])]),_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"text-dark\",attrs:{\"for\":\"rclocal\"}},[_c('b',[_c('span',{staticClass:\"text-dark\"},[_vm._v(\"rc.local\")])]),_vm._v(\" \"),_c('br'),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('form_rclocal')}}}),_c('span',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(_vm.customshtext)+\" \")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form_rclocal),expression:\"form_rclocal\"}],staticClass:\"form-control\",attrs:{\"name\":\"rclocal\",\"rows\":\"8\"},domProps:{\"value\":(_vm.form_rclocal)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.form_rclocal=$event.target.value}}},[_vm._v(\" \"+_vm._s(_vm.form_rclocal)+\" \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 sm-12 float-right\"},[_c('button',{staticClass:\"btn btn-outline-info btn-sm float-right\",attrs:{\"type\":\"submit\"},on:{\"click\":_vm.save}},[_vm._v(\"Save Microservice\")]),_c('button',{staticClass:\"btn btn-outline-warning btn-sm float-right\",attrs:{\"type\":\"submit\"},on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")])])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\"\n\t\tv-show=\"menou\"\n\t>\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 <span class=\"text-info\">Manage your builds</span></b>\n </div>\n </div>\n\n<br>\n\n <div class=\"row\"\n v-if=\"menouselect\"\n >\n <div class=\"col-sm-12 sm-12\">\n \t<b-form-select v-model=\"selected\" :options=\"options\" size=\"sm\" class=\"mt-3\"\n\t\t\t @change=\"setservice\">\n ></b-form-select>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-12 sm-12\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend1\">Base Service Name</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control text-success\" \n\t\t\t\t v-model=\"form_baseservice\"\n\t\t\t\t disabled\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend1\" \n\t\t\t\t>\n <div class=\"input-group-prepend\">\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_baseservice')\">\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ValidationProvider\n\t\t\tref=\"hybrid_stackname\"\n\t\t\tname=\"myServicename\"\n\t\t\trules=\"required|alpha_num_name\"\n\t\t\tv-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t>\n <div class=\"row\">\n\t\t\t<div class=\"col-sm-12 sm-12\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" >Service Name</span>\n </div>\n\t\t\t\t<input \n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t\tv-bind:class=\"{'is-valid': isDeployValid.stackname == 1, 'is-invalid': isDeployValid.stackname == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\t\tv-model=\"form_myservicename\"\n\t\t\t\t\tv-on:keyup=\"isValid('stackname')\"\n\t\t\t\t\tv-on:blur=\"isValid('stackname')\"\n\t\t\t\t\tv-on:input=\"isValid('stackname')\"\n\t\t\t\t\tv-on:change=\"isValid('stackname')\"\n\t\t\t\t\tv-on:focus=\"isValid('stackname')\"\n\n data-vv-as='\"nyServicename\"'\n data-vv-value-path=\"form_myservicename\"\n data-vv-name=\"form_myservicename\"\n\n\t\t\t\t>\n <div class=\"input-group-prepend\">\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_myservicename')\">\n </button>\n </div>\n\t\t\t </div>\n\t\t\t</div>\n </div>\n\t <span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t </ValidationProvider>\n\n <ValidationProvider\n\t\t\tref=\"hybrid_stackversion\"\n\t\t\tname=\"myVersion\"\n\t\t\trules=\"required|alpha_num_name\"\n\t\t\tv-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t>\n\t\t\t\t <div class=\"row\">\n\t\t\t\t\t\t<div class=\"col-sm-12 sm-12\">\n\t\t\t\t\t\t <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" >Service Version</span>\n </div>\n\t\t\t\t\t\t\t<input \n\t\t\t\t\t\t\t\ttype=\"text\" \n\t\t\t\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t\t\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\t\t\t\t\t\tv-bind:class=\"{'is-valid': isDeployValid.stackversion == 1, 'is-invalid': isDeployValid.stackversion == 2}\"\n\t\t\t\t\t\t\t\tname=\"myVersion\" \n\t\t\t\t\t\t\t\tv-model=\"form_version\"\n\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('stackversion')\"\n v-on:blur=\"isValid('stackversion')\"\n v-on:input=\"isValid('stackversion')\"\n v-on:change=\"isValid('stackversion')\"\n v-on:focus=\"isValid('stackversion')\"\n\t\t\t\t\t\t\t>\n <div class=\"input-group-prepend\">\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_version')\">\n </button>\n </div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t </div>\n\t\t\t\t\t</div>\n\t <span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t </ValidationProvider>\n\n <ValidationProvider\n\t\t\tref=\"hybrid_stackversion\"\n\t\t\tname=\"myGitrepo\"\n\t\t\trules=\"required|alpha_num_url\"\n\t\t\tv-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t>\n <div class=\"row\">\n <div class=\"col-sm-12 sm-12\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend\">Git-repo</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_gitrepo\"\n\t\t\t\t\tname=\"myGitrepo\" \n\t\t\t\t\t\t\t\t\tv-bind:class=\"{'is-valid': isDeployValid.gitrepo == 1, 'is-invalid': isDeployValid.gitrepo == 2}\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend\" \n\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('gitrepo')\"\n v-on:blur=\"isValid('gitrepo')\"\n v-on:input=\"isValid('gitrepo')\"\n v-on:change=\"isValid('gitrepo')\"\n v-on:focus=\"isValid('gitrepo')\"\n\t\t\t\t>\n <div class=\"input-group-prepend\">\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_gitrepo')\">\n </button>\n </div>\n </div>\n </div>\n </div>\n\t <span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t </ValidationProvider>\n\n\n <div class=\"row\"\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <div class=\"form-group\">\n <label for=\"customreadme\" class=\"text-dark\"> <b> <span class=\"text-dark\">README </span></b> <br>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_readme')\">\n </button>\n </label>\n <textarea class=\"form-control\" name=\"customreadme\" rows=\"8\"\n\t\t\t\t v-model=\"form_readme\"\n >\n {{ form_readme }}\n </textarea>\n </div>\n </b-col>\n </div>\n\n\n <div class=\"row\"\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <div class=\"form-group\">\n <label for=\"custompackages\" class=\"text-dark\"><b> <span class=\"text-dark\">Add Extrapackages</span></b> (e.g. apt, apk etc) <br>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_os')\">\n </button>\n <span class=\"text-success\">\n {{ customostext }}\n </span >\n </label>\n <textarea class=\"form-control\" name=\"custompackages\" rows=\"8\"\n placeholder=\"e.g. apt-get update && apt-get -y install or apk update && apk add --no-cache \"\n\t\t\t\t v-model=\"form_os\"\n >\n {{ form_os }} \n </textarea>\n </div>\n </b-col>\n </div>\n\n <div class=\"row\"\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <div class=\"form-group\">\n <label for=\"customshell\" class=\"text-dark\"><b><span class=\"text-dark\">Custom sh script </span></b> <br>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_sh')\">\n </button>\n <span class=\"text-success\">\n {{ customshtext }}\n </span >\n </label>\n <textarea class=\"form-control\" name=\"customshell\" rows=\"8\"\n placeholder=\"#!/bin/bash \"\n\t\t\t\t v-model=\"form_sh\"\n >\n {{ form_sh }}\n </textarea>\n </div>\n </b-col>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-12 sm-12\">\n <div class=\"text-center\">\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm align-center\"\n title=\"Info\"\n round\n @click=\"onAction('port')\">\n </button>\n </div>\n </div>\n <div class=\"col-sm-3 sm-3\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend\">Port</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_port1\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend\" \n\t\t\t\t>\n </div>\n </div>\n\n <div class=\"col-sm-4 sm-4\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend\">URI</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_url1\"\n placeholder=\"http/https\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend\" \n\t\t\t\t>\n </div>\n </div>\n\n <div class=\"col-sm-5 sm-5\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend1a\">Name</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_name1\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend1a\" \n\t\t\t\t>\n </div>\n </div>\n\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-3 sm-3\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend2\">Port</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_port2\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend2\" \n\t\t\t\t>\n </div>\n </div>\n\n\n <div class=\"col-sm-4 sm-4\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend\">URI</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_url2\"\n placeholder=\"http/https\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend\" \n\t\t\t\t>\n </div>\n </div>\n\n <div class=\"col-sm-5 sm-5\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend2a\">Name</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_name2\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend2a\" \n\t\t\t\t>\n </div>\n </div>\n\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-3 sm-3\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend3\">Port</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_port3\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend2\" \n\t\t\t\t>\n </div>\n </div>\n\n <div class=\"col-sm-4 sm-4\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend\">URI</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_url3\"\n placeholder=\"http/https\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend\" \n\t\t\t\t>\n </div>\n </div>\n\n <div class=\"col-sm-5 sm-5\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text\" name=\"validationTooltipUsernamePrepend3a\">Name</span>\n </div>\n <input \t\n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"form-control\" \n\t\t\t\t v-model=\"form_name3\"\n\t\t\t\t\taria-describedby=\"validationTooltipUsernamePrepend3a\" \n\t\t\t\t>\n </div>\n </div>\n\n </div>\n\n\n <div class=\"row\"\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <div class=\"form-group\">\n <label for=\"rclocal\" class=\"text-dark\"><b><span class=\"text-dark\">rc.local</span></b> <br>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Info\"\n round\n @click=\"onAction('form_rclocal')\">\n </button>\n <span class=\"text-success\">\n {{ customshtext }}\n </span >\n </label>\n <textarea class=\"form-control\" name=\"rclocal\" rows=\"8\"\n\t\t\t\t v-model=\"form_rclocal\"\n >\n {{ form_rclocal }}\n </textarea>\n </div>\n </b-col>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-12 sm-12 float-right\">\n \t\t\t<button \n class=\"btn btn-outline-info btn-sm float-right\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t@click=\"save\"\n\t\t\t\t>Save Microservice</button>\n \t\t\t<button \n class=\"btn btn-outline-warning btn-sm float-right\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t@click=\"cancel\"\n\t\t\t\t>Cancel</button>\n </div>\n </div>\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 card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nimport { ValidationObserver, ValidationProvider, extend } from 'vee-validate';\n//import { 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\n\nextend('alpha_num_name', value => {\n var regex = new RegExp(/^[A-Za-z0-9]+$/, 'i');\n if(regex.test(value)){\n return true;\n }\n return 'The {_field_} field may contain alphabetic characters and numbers'\n});\n\nextend('alpha_num_url', value => {\n// var regex = new RegExp(/^[A-Za-z0-9]+$/, 'i');\n var regex = new RegExp(/^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/, 'i');\n if(regex.test(value)){\n return true;\n }\n return 'The {_field_} field may contain Valid url'\n});\n\n\n\nexport default {\n components: {\n ValidationProvider,\n card\n\t},\n props: {\n },\n data() {\n return{\n customostext: '',\n customshtext: '',\n menou: false,\n custom: {\n\t\t\t'os':'',\n\t\t\t'sh':'',\n },\n customserviceall: [],\n\t\t\t'form_baseservice':'',\n\t\t\t'form_myservicename':'',\n\t\t\t'form_os':'',\n\t\t\t'form_sh':'',\n 'form_readme': '',\n\t\t\t'form_version':'',\n\t\t\t'form_rclocal':'',\n 'form_url1':'',\n 'form_url2':'',\n 'form_url3':'',\n\t\t\t'form_port1':'',\n\t\t\t'form_name1':'',\n\t\t\t'form_port2':'',\n\t\t\t'form_name2':'',\n\t\t\t'form_port3':'',\n\t\t\t'form_name3':'',\n\t\t\t'form_gitrepo':'',\n customservice: {\n\t\t\t'myservicename':'',\n\t\t\t'os':'',\n\t\t\t'sh':'',\n 'readme': '',\n\t\t\t'microservice':'',\n\t\t\t'version':'',\n\t\t\t'rclocal':'',\n 'url1':'',\n 'url2':'',\n 'url3':'',\n\t\t\t'port1':'',\n\t\t\t'name1':'',\n\t\t\t'port2':'',\n\t\t\t'name2':'',\n\t\t\t'port3':'',\n\t\t\t'name3':'',\n\t\t\t'gitrepo':''\n },\n addNetworkMenou:false,\n issocket:'close',\n isDeployValid:{\n \"stackname\":3,\n \"stackversion\":3,\n \"gitrepo\":3\n },\n isDeployError:{\n },\n \t\t\tselected: 1,\n menouselect: false,\n options: [\n {\"value\":99999,\"text\":\"Please select an option\"}\n ]\n\t\t}\n },\n beforeMount () {\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_build_micro_service_menou', () => {\n\t\t\tthis.menou = false\n //console.log('false')\n })\n\t\tthis.$root.$on('hybrid_build_micro_service', (service) => {\n console.log(service);\n this.setserviceform2null()\n\t\t\tthis.menou = true\n\t\t\tthis.myservicename = {}\n\t\t\tthis.customserviceall = []\n\t\t\tthis.options = []\n\t\t\tthis.customservice = {}\n this.menouselect = false\n\t\t\tthis.customservice.microservice = service.data.swarmlabname\t\n\t\t\tthis.form_baseservice = service.data.swarmlabname\t\n\n if( service.log.hasOwnProperty('data')){\n \tif( service.log.data.hasOwnProperty('data')){\n if(service.log.data.data){\n //const cc = service.log.data.data.filter(item => item.service === '0').length; \n var cc = Object.keys(service.log.data.data).length;\n if(cc > 0){\n if(cc > 1){\n \tthis.menouselect = true\n\t\t\t\t\t\t\t\t}\n \tcc--\n\t\t\t\t\t\t\t}\n //console.log(cc)\n\t\t\t\t\t\t\tthis.customservice.myservicename\t= service.log.data.data[cc].service\n\t\t\t\t\t\t\tthis.customservice.baseservice\t\t=\tservice.log.data.data[cc].baseservice\n\t\t\t\t\t\t\tthis.customservice.sh\t\t\t\t\t\t\t= service.log.data.data[cc].sh\n\t\t\t\t\t\t\tthis.customservice.os\t\t\t\t\t\t\t= service.log.data.data[cc].packages\n\t\t\t\t\t\t\tthis.customservice.readme\t\t\t\t\t= service.log.data.data[cc].readme\n\t\t\t\t\t\t\tthis.customservice.gitrepo\t\t\t\t= service.log.data.data[cc].gitrepo\n\t\t\t\t\t\t\tthis.customservice.version\t\t\t\t= service.log.data.data[cc].serviceversion\n\t\t\t\t\t\t\tthis.customservice.rclocal\t\t\t\t= service.log.data.data[cc].rclocal\n\n\t\t\t\t\t\t\tthis.customservice.url1 \t\t\t = service.log.data.data[cc].url1\n\t\t\t\t\t\t\tthis.customservice.url2 \t\t\t = service.log.data.data[cc].url2\n\t\t\t\t\t\t\tthis.customservice.url3 \t\t\t = service.log.data.data[cc].url3\n\t\t\t\t\t\t\tthis.customservice.port1 \t\t\t= service.log.data.data[cc].port1\n\t\t\t\t\t\t\tthis.customservice.name1 \t\t\t= service.log.data.data[cc].name1\n\t\t\t\t\t\t\tthis.customservice.port2 \t\t\t= service.log.data.data[cc].port2\n\t\t\t\t\t\t\tthis.customservice.name2 \t\t\t= service.log.data.data[cc].name2\n\t\t\t\t\t\t\tthis.customservice.port3 \t\t\t= service.log.data.data[cc].port3\n\t\t\t\t\t\t\tthis.customservice.name3 \t\t\t= service.log.data.data[cc].name3\n this.setserviceform(this.customservice) \n\n\t\t\t\t\t\t\tfor (let i = 0; i <= cc; i++) {\n\t\t\t\t\t\t\t\t let option = { \n\t\t\t\t\t\t\t\t\t value: i,\n\t\t\t\t\t\t\t\t\t text: service.log.data.data[i].service\n }\n Vue.set(this.options, i, option)\n this.selected = i\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.customserviceall\t\t\t\t= service.log.data.data\n console.log('customall2 '+ JSON.stringify(this.customservice.myservicename))\n console.log('customall1 '+ JSON.stringify(service.log.data.data[cc]))\n console.log('customall '+ JSON.stringify(this.customserviceall))\n\t\t\t\t\t\t}\n \t}\n }\n this.selected++\n var vtmp1 = {\"value\":this.selected,\"text\":\"Please select an option\"}\n Vue.set(this.options, this.selected, vtmp1)\n console.log('options '+ JSON.stringify(this.options))\n\n\t\t})\n\n\t\tthis.$root.$on('hybrid_build_micro_myservice', (service) => {\n\t\t\tthis.menou = true\n\t\t\tthis.myservicename = {}\n\t\t\tthis.customserviceall = []\n\t\t\tthis.customservice = {}\n this.menouselect = false\n\t\t\tthis.customservice.microservice = service.data.swarmlabname\t\n\n if( service.log.hasOwnProperty('data')){\n \tif( service.log.data.hasOwnProperty('data')){\n if(service.log.data.data){\n\t\t\t\t\t\t\tthis.customservice.myservicename\t= service.log.data.data.service\n\t\t\t\t\t\t\tthis.customservice.baseservice\t\t=\tservice.log.data.data.baseservice\n\t\t\t\t\t\t\tthis.customservice.sh\t\t\t\t\t\t\t= service.log.data.data.sh\n\t\t\t\t\t\t\tthis.customservice.os\t\t\t\t\t\t\t= service.log.data.data.packages\n\t\t\t\t\t\t\tthis.customservice.readme\t\t\t\t\t= service.log.data.data.readme\n\t\t\t\t\t\t\tthis.customservice.gitrepo\t\t\t\t= service.log.data.data.gitrepo\n\t\t\t\t\t\t\tthis.customservice.version\t\t\t\t= service.log.data.data.serviceversion\n\t\t\t\t\t\t\tthis.customservice.rclocal\t\t\t\t= service.log.data.data.rclocal\n\n\t\t\t\t\t\t\tthis.customservice.url1 \t\t\t = service.log.data.data.url1\n\t\t\t\t\t\t\tthis.customservice.url2 \t\t\t = service.log.data.data.url2\n\t\t\t\t\t\t\tthis.customservice.url3 \t\t\t = service.log.data.data.url3\n\t\t\t\t\t\t\tthis.customservice.port1 \t\t\t= service.log.data.data.port1\n\t\t\t\t\t\t\tthis.customservice.name1 \t\t\t= service.log.data.data.name1\n\t\t\t\t\t\t\tthis.customservice.port2 \t\t\t= service.log.data.data.port2\n\t\t\t\t\t\t\tthis.customservice.name2 \t\t\t= service.log.data.data.name2\n\t\t\t\t\t\t\tthis.customservice.port3 \t\t\t= service.log.data.data.port3\n\t\t\t\t\t\t\tthis.customservice.name3 \t\t\t= service.log.data.data.name3\n this.setserviceform(this.customservice) \n\t\t\t\t\t\t}\n \t}\n }\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 var log = store.dispatch(\"pipelineLLO/settoken\",{\n token:this.token\n })\n\n\t},\n beforeDestroy () {\n\t\t\tthis.$root.$off('hybrid_build_micro_service')\n\t\t\tthis.$root.$off('hybrid_build_micro_myservice')\n\t\t\tthis.$root.$off('hybrid_build_micro_service_menou')\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 onAction(value) {\n console.log(value)\n var infotxt = ''\n var info='<h5></h5>'\n if(value == \"form_myservicename\"){\n info='<h5 class=\"text-info\">Service Name</h5>'\n infotxt += `The <b>myServicename</b> field may contain alphabetic characters and numbers Service Version.\n `\n }else if(value == \"form_version\"){\n info='<h5 class=\"text-info\">Service Version</h5>'\n infotxt += `The <b>Version</b> field may contain alphabetic characters and numbers Service Version.\n `\n }else if(value == \"form_baseservice\"){\n info='<h5 class=\"text-info\">Docker base image</h5>'\n infotxt += `<br>\n A base image is the image that is used to create all of your container images. <br>`\n }else if(value == \"form_gitrepo\"){\n info='<h5 class=\"text-info\">Git-repo</h5>'\n infotxt += `<b>A string that contains a valid URL</b> URL, is\n `\n }else if(value == \"form_rclocal\"){\n info='<h5 class=\"text-info\">rc.local</h5>'\n infotxt += `<b>Define startup scripts or additional services to start.</b><br><br> It is executed after all build processes are finished.`\n }else if(value == \"form_sh\"){\n info='<h5 class=\"text-info\">Custom sh script </h5>'\n infotxt += `<b>A sh script intended to be run after a fresh installation in order to automate system update, extra software installation and a couple configuration files setup. </b> <br><br> It is executed after \"Add Extrapackages\" are finished.`\n }else if(value == \"form_os\"){\n info='<h5 class=\"text-info\">Add Extrapackages </h5>'\n infotxt += `<b>sh script to install packages on Base system.</b> <br> \n \n <br>\n <br><b>Examples</b>\n <br>\n <br>\n apt update && apt install -y vim\n <br>\n \n <a href=\"https://help.ubuntu.com/community/AptGet/Howto?action=show&redirect=AptGetHowto\" target=\"_blank\">Info</a>\n <br>\n <br>\n OR\n <br>\n <br>\n apk update && apk add --no-cache vim\n <br>\n <a href=\"https://wiki.alpinelinux.org/wiki/Package_management\" target=\"_blank\">Info</a>\n `\n }else if(value == \"port\"){\n info='<h5 class=\"text-info\">Port - URI - Name </h5>'\n infotxt += `<b>Published ports</b> \n <br>\n <br>\n\n\n By default, when you create or run a container, it does not publish any of its ports to the outside world. \n <br><br>\n To make a port available to services outside of Docker, or to Docker containers which are not connected to the container’s network, use the \"Port\" field. \n \n `\n }\n\n info += infotxt\n this.$swal({\n html: info,\n icon: 'info',\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n },\n async save() {\n (async () => {\n var isAllValid = true\n for (const [key, value] of Object.entries(this.isDeployValid)) {\n //console.log(`${key}: ${value}`);\n if(value != 1){\n isAllValid = false\n }\n }\n \t\t\t\tif(isAllValid){\n\t\t\t\t\t\t\n var log = await store.dispatch(\"pipelineLLO/addmycustomservice\",{\n token:this.token,\n\t\t\t\t\t\t\t\tservice: this.form_myservicename,\n\t\t\t\t\t\t\t\treadme: this.form_readme,\n\t\t\t\t\t\t\t\tbaseservice: this.form_baseservice,\n\t\t\t\t\t\t\t\tsh: this.form_sh,\n\t\t\t\t\t\t\t\tpackages: this.form_os,\n\t\t\t\t\t\t\t\tgitrepo: this.form_gitrepo,\n\t\t\t\t\t\t\t\tserviceversion: this.form_version,\n\t\t\t\t\t\t\t\trclocal: this.form_rclocal,\n\t\t\t\t\t\t\t\turl1: this.form_url1,\n\t\t\t\t\t\t\t\turl2: this.form_url2,\n\t\t\t\t\t\t\t\turl3: this.form_url3,\n\t\t\t\t\t\t\t\tport1: this.form_port1,\n\t\t\t\t\t\t\t\tname1: this.form_name1,\n\t\t\t\t\t\t\t\tport2: this.form_port2,\n\t\t\t\t\t\t\t\tname2: this.form_name2,\n\t\t\t\t\t\t\t\tport3: this.form_port3,\n\t\t\t\t\t\t\t\tname3: this.form_name3\n })\n // this.$root.$emit('hybrid_refresh_bootstrap_view')\n // this.$root.$emit('hybrid_refresh_bootstrap_view')\n\t\t\t\t\t\t\n \t \t\t\tconsole.log(this.customservice);\n \t \t\t\t//console.log(log);\n if(log.data.action == 'ok'){\n var info = \"Your upload was successful!\"\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 this.$root.$emit('hybrid_build_micro_service_menou_refreshtable')\n\n }else{\n var info = \"Service upload error \"\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'error',\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{\n var info = \"Missing required fields\"\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 })();\n\n\t\t},\n cancel() {\n \t//console.log('cancel');\n\t\t\tthis.menou = false\n\t\t},\n setserviceform(data) {\n this.form_myservicename\t = data.myservicename\n this.form_baseservice\t\t\t=\tdata.baseservice\n this.form_sh\t\t\t\t\t\t\t= data.sh\n this.form_os\t\t\t\t\t\t\t= data.os\n this.form_readme\t\t\t\t\t= data.readme\n this.form_gitrepo\t\t\t\t = data.gitrepo\n this.form_version\t\t\t\t = data.version\n this.form_rclocal\t\t\t\t = data.rclocal\n\n this.form_url1 \t\t\t = data.url1\n this.form_url2 \t\t\t = data.url2\n this.form_url3 \t\t\t = data.url3\n this.form_port1 \t\t\t = data.port1\n this.form_name1 \t\t\t = data.name1\n this.form_port2 \t\t\t = data.port2\n this.form_name2 \t\t\t = data.name2\n this.form_port3 \t\t\t = data.port3\n this.form_name3 \t\t\t = data.name3\n //console.log(data)\n //console.log(data.myservicename)\n //console.log(this.form_myservicename)\n\t\t},\n setserviceform2null() {\n this.form_myservicename\t = '' \n this.form_baseservice\t\t\t= ''\t\n this.form_sh\t\t\t\t\t\t\t= '' \n this.form_os\t\t\t\t\t\t\t= '' \n this.form_readme\t\t\t\t\t= '' \n this.form_gitrepo\t\t\t\t = '' \n this.form_version\t\t\t\t = '' \n this.form_rclocal\t\t\t\t = '' \n\n this.form_url1 \t\t\t = '' \n this.form_url2 \t\t\t = '' \n this.form_url3 \t\t\t = '' \n this.form_port1 \t\t\t = '' \n this.form_name1 \t\t\t = '' \n this.form_port2 \t\t\t = '' \n this.form_name2 \t\t\t = '' \n this.form_port3 \t\t\t = '' \n this.form_name3 \t\t\t = '' \n console.log('refresh')\n //console.log(data.myservicename)\n //console.log(this.form_myservicename)\n\t\t},\n setservice() {\n \t//console.log(this.selected);\n \tvar cc = this.selected\n console.log('sel '+ JSON.stringify(this.customserviceall[cc]))\n\n this.customservice.myservicename\t= this.customserviceall[cc].service\n\n this.customservice.baseservice\t\t\t\t\t=\tthis.customserviceall[cc].baseservice\n this.customservice.sh\t\t\t\t\t\t\t= this.customserviceall[cc].sh\n this.customservice.os\t\t\t\t\t\t\t= this.customserviceall[cc].packages\n this.customservice.readme\t\t\t\t\t= this.customserviceall[cc].readme\n this.customservice.gitrepo\t\t\t\t= this.customserviceall[cc].gitrepo\n this.customservice.version\t\t\t\t= this.customserviceall[cc].serviceversion\n this.customservice.rclocal\t\t\t\t= this.customserviceall[cc].rclocal\n\n this.customservice.url1 \t\t\t = this.customserviceall[cc].url1\n this.customservice.url2 \t\t\t = this.customserviceall[cc].url2\n this.customservice.url3 \t\t\t = this.customserviceall[cc].url3\n this.customservice.port1 \t\t\t= this.customserviceall[cc].port1\n this.customservice.name1 \t\t\t= this.customserviceall[cc].name1\n this.customservice.port2 \t\t\t= this.customserviceall[cc].port2\n this.customservice.name2 \t\t\t= this.customserviceall[cc].name2\n this.customservice.port3 \t\t\t= this.customserviceall[cc].port3\n this.customservice.name3 \t\t\t= this.customserviceall[cc].name3\n\n //this.customservice.readme\t= 'xxxxxxxxxxxxxxxxxx'\n //Vue.set(this.customservice, 'readme', 'xxxxxxxxxxxxxxxxxxxxxxxxx' )\n //console.log('sel1 '+ JSON.stringify(this.customservice))\n this.setserviceform(this.customservice) \n\t\t},\n async isValid(f){\n\n if(f == 'stackname'){\n var field = await this.$refs.hybrid_stackname.validate();\n if(field.valid == true){\n this.isDeployValid.stackname = 1\n }else{\n this.isDeployValid.stackname = 2\n }\n }\n else if(f == 'stackversion'){\n var field = await this.$refs.hybrid_stackversion.validate();\n if(field.valid == true){\n this.isDeployValid.stackversion = 1\n }else{\n this.isDeployValid.stackversion = 2\n }\n }\n else if(f == 'gitrepo'){\n var field = await this.$refs.hybrid_stackversion.validate();\n if(field.valid == true){\n this.isDeployValid.gitrepo = 1\n }else{\n this.isDeployValid.gitrepo = 2\n }\n }\n }\n\n\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!./customservices.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!./customservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./customservices.vue?vue&type=template&id=7801b686&\"\nimport script from \"./customservices.vue?vue&type=script&lang=js&\"\nexport * from \"./customservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./customservices.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('br'),_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutormybuild\"}},[_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(\"Select a \"),_c('span',{staticClass:\"text-info\"},[_vm._v(\" Base image\")])])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"}),_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 && _vm.heavy)?_c('div',{staticClass:\"input-group-append\"},[_c('p',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.heavytext))])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekeygmybuildservice1,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('div',{staticClass:\"d-flex justify-content-center\"},[_c('button',{staticClass:\"ti-cloud-up btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Upload MicroService\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('upload-item', props.rowData, props.rowData._id)}}}),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"MicroService 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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n<br>\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/docker.png\" alt=\"...\">\n </div>\n\n <v-wait for=\"myRunInstancetutormybuild\">\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 <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Select a <span class=\"text-info\"> Base image</span></b>\n </div>\n </div>\n\n<br>\n\n\n\n\n <div class=\"input-group input-group-sm sm-3\">\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\"\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\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions && heavy\"\n >\n <p class=\"text-danger\">{{ heavytext }}</p>\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=\"vuetablekeygmybuildservice1\"\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 <div class=\"d-flex justify-content-center\">\n <button\n class=\"ti-cloud-up btn btn-outline-secondary btn-sm\"\n title=\"Upload MicroService\"\n round\n @click=\"onAction('upload-item', props.rowData, props.rowData._id)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"MicroService 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\";\nimport {ApiConfigWEB} from \"@/config/index-web\";\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 testtest:[], // up or down services\n testtestdir:[], // install download or not service\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'size':'', \n 'port':'' \n },\n viewhybridoptions: false,\n heavy: false,\n heavytext: '',\n customedit: false,\n custommenouopen: false,\n custommenou: false,\n custom: {\n\t\t\t'os':'',\n\t\t\t'sh':''\n },\n customostext: '',\n customshtext: '',\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 vuetablekeygmybuildservice1: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:actions', // <----\n title: 'Actions',\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: 8,\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},\n\tasync created() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n\t\t//await this.checkactionrowindexall()\n this.$root.$emit('hybrid_build_micro_service_menou')\n //console.log(\"token \"+ this.token);\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 async refreshVuetable() {\n\t\t\t\t\tthis.vuetablekeygmybuildservice1 += 1\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\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.refreshVuetableall())\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\t\t\t}else if(action == 'upload-item' ){\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/getmyservices\",{\n\t\t\t\t\ttoken:this.token,\n\t\t\t\t\tservice:data.swarmlabname\n\t\t\t\t})\n console.log(log)\n this.swarmlab=data\n var service = {\n data: data,\n log: log\n }\n this.$root.$emit('hybrid_build_micro_service', service)\n\t\t\t}\n },\n async refreshVuetable() {\n\t\t //await this.checkactionrowindexall()\n\t\t\t\t\tthis.vuetablekeygslot += 1\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 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=f38c6fa4&\"\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","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('br'),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutormybuild\"}},[_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(\"my Custom MicroServices\")])])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"}),_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 && _vm.heavy)?_c('div',{staticClass:\"input-group-append\"},[_c('p',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.heavytext))])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekeygmybuildservice123,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('div',{staticClass:\"d-flex justify-content-center\"},[_c('button',{staticClass:\"ti-pencil btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Upload MicroService\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('upload-item', props.rowData, props.rowData._id)}}}),_c('button',{staticClass:\"ti-trash btn btn-outline-warning btn-sm\",attrs:{\"title\":\"MicroService Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('rm-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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n<br>\n\n <v-wait for=\"myRunInstancetutormybuild\">\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 <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab <span class=\"text-info\">my Custom MicroServices</span></b>\n </div>\n </div>\n\n<br>\n\n\n\n\n <div class=\"input-group input-group-sm sm-3\">\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\"\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\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions && heavy\"\n >\n <p class=\"text-danger\">{{ heavytext }}</p>\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=\"vuetablekeygmybuildservice123\"\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 <div class=\"d-flex justify-content-center\">\n <button\n class=\"ti-pencil btn btn-outline-secondary btn-sm\"\n title=\"Upload MicroService\"\n round\n @click=\"onAction('upload-item', props.rowData, props.rowData._id)\">\n </button>\n <button\n class=\"ti-trash btn btn-outline-warning btn-sm\"\n title=\"MicroService Info\"\n round\n @click=\"onAction('rm-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\";\nimport {ApiConfigWEB} from \"@/config/index-web\";\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 testtest:[], // up or down services\n testtestdir:[], // install download or not service\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'size':'', \n 'port':'' \n },\n viewhybridoptions: false,\n heavy: false,\n heavytext: '',\n customedit: false,\n custommenouopen: false,\n custommenou: false,\n custom: {\n\t\t\t'os':'',\n\t\t\t'sh':''\n },\n customostext: '',\n customshtext: '',\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\tvuetablekeygmybuildservice123:0,\n\t\tvuetablekeygslot:0,\n\t\tfielddata:{},\n fields: [\n {\n name: 'service',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'service',\n visible:true,\n dataClass: 'left aligned col-3',\n width: '30%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'readme',\n title: '<span class=\"orange\"></span>Info',\n sortField: 'gitrepoCloneUrl',\n dataClass: 'left aligned w-25',\n visible:true,\n width: '20%'\n },\n {\n name: 'baseservice',\n title: '<span class=\"orange\"></span>Base',\n sortField: 'baseservice',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:true,\n width: '30%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'col text-center',\n dataClass: 'center aligned',\n width: '10%'\n },\n ],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridmymicroservices\",\n\t\tcss: CssConfig,\n perpage: 8,\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_build_micro_service_menou_refreshtable', () => {\n this.refreshVuetable()\n console.log('11111111111111111111111111')\n })\n\t},\n\tasync created() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n\t\t//await this.checkactionrowindexall()\n this.$root.$emit('hybrid_build_micro_service_menou')\n //console.log(\"token \"+ this.token);\n\t},\n beforeDestroy () {\n\t\t\tthis.$root.$off('hybrid_build_micro_service_menou_refreshtable')\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 refreshVuetable() {\n\t\t\t\t\tthis.vuetablekeygmybuildservice123 += 1\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\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.refreshVuetableall())\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\t\tasync rmAndClose(result){\n \t\tif (result.isConfirmed) {\n var value = this.hybridoptions.swarmlabname\n var log = await store.dispatch(\"pipelineLLO/rmmycustomservice\",{\n token:this.token,\n service:this.swarmlab.service\n })\n this.refreshVuetable()\n if(log.data.action == 'ok'){\n\n }else{\n var info = \"Remove error \"\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'error',\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 {\n\t\t\t\t\tconsole.log('no') \n }\n\t },\n async onAction (action, data, index) {\n\t\t\tif(action == 'rm-item' ){\n this.swarmlab=data\n var container=this.swarmlab\n\n var info = \"Remove service: <b> \" + this.swarmlab.service\n info += \"</b>\"\n this.$swal({\n type: 'info',\n html: info,\n icon:'warning',\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\t\t\t}else if(action == 'upload-item' ){\n var data1 = {\n data:data \n }\n var log = {\n data: data1\n }\n this.swarmlab=data\n var service = {\n data: data,\n log: log\n }\n this.$root.$emit('hybrid_build_micro_myservice', service)\n\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 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!./buildermyservices.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!./buildermyservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./buildermyservices.vue?vue&type=template&id=ed421b34&\"\nimport script from \"./buildermyservices.vue?vue&type=script&lang=js&\"\nexport * from \"./buildermyservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./buildermyservices.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 <builder-services>\n\n </builder-services>\n <br>\n <builder-my-services>\n\n </builder-my-services>\n\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <service-view>\n\n </service-view>\n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\n//import ViewNetwork from \"./mynetwork/mybuilder.vue\";\n//import AdhocView from \"./mynetwork/AdhocView.vue\";\nimport ServiceView from \"./mynetwork/customservices.vue\";\nimport BuilderServices from \"./mynetwork/builderservices.vue\";\nimport BuilderMyServices from \"./mynetwork/buildermyservices.vue\";\nimport card from '@/components/Card.vue'\n//import AvailableServices from \"./mynetwork/availableservices.vue\";\nexport default {\n components: {\n // ViewNetwork,\n ServiceView,\n card,\n BuilderServices,\n BuilderMyServices\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=455dc394&\"\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')\" > RunningInstances</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')\" > Labs@Home</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\t\t<b-list-group-item variant=\"light\" name=\"communityMicroservice\" class=\"ti-user m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_mymicroservice')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_mymicroservice') }\" @click=\"hybrid('mymicroservice')\"> Users images</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')\" > Build</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')\"> myServices</b-list-group-item>\n <!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"build_docker\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('builders','hybrid_docker')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_docker') }\" @click=\"hybrid('build_docker')\"> Docker</b-list-group-item>\n -->\n\t\t\t\t\t</b-collapse>\n\n\n\n\n\n <!-- Menou llo -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" > LearningObjects</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-llo\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('llo','hybrid_llo')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_llo') }\" @click=\"hybrid('llo')\"> Courses</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou close -->\n\t\t\t <b-list-group-item variant=\"light\" name=\"menou-min\" class=\"ti-angle-double-left list-group-item list-group-item-action\" v-on:click=\"onActionMenu('min')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('menou-min') }\" title=\"Minimize\"></b-list-group-item>\n\n\n\n\n </div>\n </div>\n <!-- /Sidebar max ------------------------------------ -->\n <!-- Sidebar min -------------------------------- -->\n\t\t\t<div class=\" bg-light border-right\" id=\"sidebar-wrapper1\"\n\t\t\t\t\tv-if=\"sidemenou == 'min'\"\n\t\t\t>\n\t\t\t\t<div class=\"list-group list-group-flush\"\n\t\t\t\t>\n\n <!-- Menou Dashboard -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-dashboard1 variant=\"light\" name=\"Dashboard\" class=\"ti-dashboard list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('dashboard') }\" @click=\"hybrid('dashboard')\" title=\"Dashboard\"></b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-dashboard1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"dashboard\" class=\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_dashboard')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_dashboard') }\" title=\"Dashboard\"></b-list-group-item>\n<!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Profile\" class=\"m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_profile')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_profile') }\"> Profile</b-list-group-item>\n-->\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou Settings -->\n<!--\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\t\t<b-list-group-item variant=\"light\" name=\"communityMicroservice\" class=\"ti-user m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_mymicroservice')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_mymicroservice') }\" @click=\"hybrid('mymicroservice')\" title=\"Users Microservices\"> </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=\"Build\" > </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 Service\"> </b-list-group-item>\n <!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"build_docker\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('builders','hybrid_docker')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_docker') }\" @click=\"hybrid('build_docker')\" title=\"Build Docker\"> </b-list-group-item>\n -->\n\t\t\t\t\t</b-collapse>\n\n\n\n\n\n\n\n\n\n <!-- Menou llo -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo1 variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" title=\"LearningObjects\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-llo1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('llo','hybrid_llo')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_llo') }\" @click=\"hybrid('llo')\" title=\"Courses\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\t\t\t<!-- Menou close -->\n\t\t\t\t <b-list-group-item variant=\"light\" name=\"menou-max\" class=\"ti-angle-double-right list-group-item list-group-item-action\" v-on:click=\"onActionMenu('max')\" style=\"cursor: pointer;\" title=\"Maximize\"></b-list-group-item>\n\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- /Sidebar max ------------------------------------ -->\n\n\t\t\t<!-- /#sidebar-wrapper -->\n\n <!-- Page Content -->\n\n\n \t\t<!-- content----------------------------------- -->\n\n\t\t\t\t<div class=\"w-100 p-3\" style=\"background-color: #eee;\">\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid dashboard --------------- -->\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 mymicroservices --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-mymicroservices\n :key=\"mycomponentKeyreload3\"\n v-show=\"hybridmenou == 'mymicroservice'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-mymicroservices>\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 ManageMymicroservices from \"./components/mymicroservicescustom.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 ManageMymicroservices,\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 mycomponentKeyreload3: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.mycomponentKeyreload3 += 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=56fc7612&\"\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!./availablemicroservicescustom.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!./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&\"","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!./customservices.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/hybrid-1.852eef88.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!./buildermyservices.vue?vue&type=style&index=0&lang=css&\""],"sourceRoot":""}
|