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
745 KiB
1 lines
745 KiB
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?5b85","webpack:///./src/assets/img/docker.png","webpack:///./src/components/manageservices/view-events-dashboard.vue?7c18","webpack:///./src/assets/img/code-128.png","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/manageservices/join-service.vue?13c7","webpack:///./src/components/manageservices/hybridlab.vue?4393","webpack:///./src/components/manageservices/manage-service.vue?f776","webpack:///./src/App.vue?7e17","webpack:///./src/config/index.js","webpack:///./src/store/modules/create_pipelineLLO.js","webpack:///./src/store/index.js","webpack:///./src/components/Card.vue?1f84","webpack:///src/components/Card.vue","webpack:///./src/components/Card.vue?2e9d","webpack:///./src/components/Card.vue","webpack:///./src/components/myconnect-server.vue?c81f","webpack:///./src/components/manageservices/manage-service.vue?4ad7","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?f78d","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?cecd","webpack:///src/components/mynetwork/myconnect-server.vue","webpack:///./src/components/mynetwork/myconnect-server.vue?d4d0","webpack:///./src/components/mynetwork/myconnect-server.vue","webpack:///src/components/myconnect-server.vue","webpack:///./src/components/myconnect-server.vue?ec3f","webpack:///./src/components/myconnect-server.vue","webpack:///./src/components/manageservices.vue?c48f","webpack:///./src/components/manageservices/join-service.vue?a7e3","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/manageshared.vue?f3fa","webpack:///./src/components/manageservices/manage-shared.vue?fedc","webpack:///src/components/manageservices/manage-shared.vue","webpack:///./src/components/manageservices/manage-shared.vue?260c","webpack:///./src/components/manageservices/manage-shared.vue","webpack:///./src/components/manageservices/manage-shared-view.vue?932d","webpack:///src/components/manageservices/manage-shared-view.vue","webpack:///./src/components/manageservices/manage-shared-view.vue?9bb1","webpack:///./src/components/manageservices/manage-shared-view.vue","webpack:///src/components/manageshared.vue","webpack:///./src/components/manageshared.vue?1001","webpack:///./src/components/manageshared.vue","webpack:///./src/components/managesharedvolume.vue?6a14","webpack:///./src/components/manageservices/manage-volume-localserver-view.vue?bae7","webpack:///./src/components/manageservices/deploy-volume.vue?d950","webpack:///src/components/manageservices/deploy-volume.vue","webpack:///./src/components/manageservices/deploy-volume.vue?1b67","webpack:///./src/components/manageservices/deploy-volume.vue","webpack:///src/components/manageservices/manage-volume-localserver-view.vue","webpack:///./src/components/manageservices/manage-volume-localserver-view.vue?278a","webpack:///./src/components/manageservices/manage-volume-localserver-view.vue","webpack:///./src/components/manageservices/manage-volume-localclient-view.vue?5543","webpack:///src/components/manageservices/manage-volume-localclient-view.vue","webpack:///./src/components/manageservices/manage-volume-localclient-view.vue?d633","webpack:///./src/components/manageservices/manage-volume-localclient-view.vue","webpack:///./src/components/manageservices/manage-volume-view.vue?58d0","webpack:///src/components/manageservices/manage-volume-view.vue","webpack:///./src/components/manageservices/manage-volume-view.vue?6f23","webpack:///./src/components/manageservices/manage-volume-view.vue","webpack:///./src/components/manageservices/view-volume.vue?3e78","webpack:///./src/components/manageservices/LogView.vue?050d","webpack:///src/components/manageservices/LogView.vue","webpack:///./src/components/manageservices/LogView.vue?d4f1","webpack:///./src/components/manageservices/LogView.vue","webpack:///src/components/manageservices/view-volume.vue","webpack:///./src/components/manageservices/view-volume.vue?6215","webpack:///./src/components/manageservices/view-volume.vue","webpack:///src/components/managesharedvolume.vue","webpack:///./src/components/managesharedvolume.vue?39a1","webpack:///./src/components/managesharedvolume.vue","webpack:///./src/components/chart.vue?6150","webpack:///./src/components/manageservices/chart.vue?0276","webpack:///src/components/manageservices/Chart-line-template.vue","webpack:///./src/components/manageservices/Chart-line-template.vue","webpack:///./src/components/manageservices/Chart-line-template.vue?ae06","webpack:///src/components/manageservices/chart.vue","webpack:///./src/components/manageservices/chart.vue?c232","webpack:///./src/components/manageservices/chart.vue","webpack:///./src/components/manageservices/request-stats.vue?abfa","webpack:///src/components/manageservices/request-stats.vue","webpack:///./src/components/manageservices/request-stats.vue?9e64","webpack:///./src/components/manageservices/request-stats.vue","webpack:///src/components/chart.vue","webpack:///./src/components/chart.vue?4082","webpack:///./src/components/chart.vue","webpack:///./src/components/managedeploy.vue?a287","webpack:///./src/components/manageservices/deploy-bootstrap.vue?161c","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?3017","webpack:///src/components/manageservices/view-service.vue","webpack:///./src/components/manageservices/view-service.vue?4cff","webpack:///./src/components/manageservices/view-service.vue","webpack:///./src/components/manageservices/request-service.vue?a3c0","webpack:///src/components/manageservices/request-service.vue","webpack:///./src/components/manageservices/request-service.vue?a9e5","webpack:///./src/components/manageservices/request-service.vue","webpack:///src/components/managedeploy.vue","webpack:///./src/components/managedeploy.vue?d326","webpack:///./src/components/managedeploy.vue","webpack:///./src/components/dashboard.vue?a2a4","webpack:///./src/components/manageservices/view-events.vue?2de3","webpack:///src/components/manageservices/view-events.vue","webpack:///./src/components/manageservices/view-events.vue?84ce","webpack:///./src/components/manageservices/view-events.vue","webpack:///./src/components/manageservices/view-events-dashboard.vue?a747","webpack:///src/components/manageservices/view-events-dashboard.vue","webpack:///./src/components/manageservices/view-events-dashboard.vue?ca3e","webpack:///./src/components/manageservices/view-events-dashboard.vue","webpack:///src/components/dashboard.vue","webpack:///./src/components/dashboard.vue?8c84","webpack:///./src/components/dashboard.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/assets/img/venus1.png","webpack:///./src/components/manageservices/manage-volume-localclient-view.vue?0273","webpack:///./src/components/manageservices/manage-volume-localserver-view.vue?bfc4","webpack:///./src/assets/img/elusiven_network64-64.png","webpack:///./src/components/manageservices/view-service.vue?9f8a","webpack:///./src/components/manageservices/request-stats.vue?957f","webpack:///./src/assets/img/snowflake_256.png","webpack:///./src/assets/img/library.png","webpack:///./src/assets/img/share2-512.png","webpack:///./src/assets/img/warning.png","webpack:///./src/components/manageservices/request-service.vue?22f2","webpack:///./src/components/manageservices/deploy-bootstrap.vue?51c9","webpack:///./src/assets/img/cloudvolume--512.png","webpack:///./src/components/manageservices/manage-shared-view.vue?117a","webpack:///./src/components/mynetwork/myconnect-server.vue?8827","webpack:///./src/assets/loading.gif","webpack:///./src/components/manageservices/manage-volume-view.vue?ce69","webpack:///./src/components/manageservices/view-volume.vue?8b6b","webpack:///./src/assets/img/stats-ok_128.png","webpack:///./src/components/manageservices/view-events.vue?6e8a","webpack:///./src/components/manageservices/deploy-volume.vue?0afa","webpack:///./src/components/manageservices/LogView.vue?7076","webpack:///./src/assets/img/hybrid-1.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","warning","staticStyle","_v","on","setWarning","_m","issocket","$event","onAction","sidemenou","directives","rawName","modifiers","class","active","isActive","setActive","hybrid","isActiveSub","onActionMenu","_e","hybridmenou","componentKeyreload","componentKeyreloadshared","componentKeyreloadsharedvolume","expression","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","test","R","ERROR_str","ERROR","location","href","track","course","chapter","evaluation","error","info","begin","end","save","pipeline","pipelineApi","nodename","nodeip","nodeid","noderole","nodezones","nodedesc","instance","publickey","endpointport","bootstrapstackid","serverip","netmask","peer_ip","allowedips","network_mode","privatekey","network","networks","defaultnetwork","stackid","chartdata","labels","datasets","label","backgroundColor","bootstrapnameid","bootstrapstackname","storagename","dir","file","swarmlabname","shareinfo","node","wg","swarmlabservice","deploy","Vue","use","Vuex","BootstrapVue","component","FontAwesomeIcon","library","add","faIcons","faSort","faChevronUp","faChevronDown","faBars","faJs","faVuejs","fab","fas","faFontAwesome","dom","watch","Store","pipelineLLO","$slots","_t","header","title","_s","subTitle","props","String","domProps","type","indexOf","_k","keyCode","setFilter","target","composing","searchFor","resetFilter","ref","scopedSlots","_u","fn","valid","errors","ariaMsg","ariaInput","vuetablekeyc","apiurl","httpOptions","fields","itemActions","sortOrder","multiSort","perpage","paginationComponent","moreParams","css","table","onPaginationData","loadsuccess","onLoadError","rowData","rowIndex","paginationInfo","pagination","onChangePage","components","sortField","titleClass","visible","width","dataClass","url_string","url","URL","searchParams","computed","methods","$refs","setPaginationData","paginationData","vuetable","changePage","page","alert","nodeadmin","nodeadminupdate","provider","validate","then","success","rowdata","swarmlabhybridapi","$set","showinfo","getApi","labservices","$swal","html","showCloseButton","showLoaderOnConfirm","allowOutsideClick","showCancelButton","reverseButtons","focusCancel","confirmButtonText","CONFIG","workerkey","swarmlab_public_wgkey","server_ip","wg_ip","serverstatus","slot","hybridshowdata","userstatus","testactionrowindex","onActionHybrid","serviceInfo","Replicas","check_interface","hybridshowwgstatus","bootstrapname","bootstrapdateend","hybridshowwgnetworkstatus","bootstrapdatebegin","ports","vuetablekey1","actionrowindex","callback","icon","index","$socket","changeItem","model","ddTestVm","$$v","_l","option","onselect","text","ondefault","ID","Image","Names","RunningFor","Status","CreatedAt","Networks","addNetworkMenou","addNetwork","Ports","val","$wait","start","virtualnetwork","$root","$emit","client","emit","v","$off","command","setRefresh","vuetablekeybshared","vuetablekeybsharedvolumeserver","invalid","isDeployValid","stackname","isValid","add_deploy","networklabel","readwrite","_q","onselectrw","close_deploy","DatePicker","ValidationProvider","card","isAllValid","isAllDateValid","sockets","vuetablekeybsharedvolumeclient","vuetablekeybsharedvolume","actionrowindex1","hybridshowlog","hybridnetwork","onmount","vuetablekeyd","runextenderror","clear","cmOptions","keyMap","infoFilter","onCmCursorActivity","onCmReady","onCmFocus","onCmCodeChange","socketonline","extenderror","tryConsole","ssl","getinfo","editchoice","optionsedit","searchLLOactive","ADOC_html_code","challenge","tryLLO","service","activecount","remove","activeField","bootstrap","firstbootstrap","htmlasciitmp","datafile","datadir","LearningObject","showllo","showlloedit","topwindow","cm","chg","a","b","newCode","selected","myCm","codemirror","cancelButtonText","wginterface","ip","chartData","myStyles","extends","mixins","reactiveProp","renderChart","ReactiveLineChart","loaded","height","vuetablekey1a","_id","logsave","store","dispatch","refreshVuetable","ViewNetwork","hybridshowuser","image","showInfo","timePickerOptions","onActionLog","onActionUser","bootstrapimage","bootstrapnetwork","labtext","originalItem","lang","desc","Level","Prerequisites","startDate","endDate","urltype","ViewDashboard","ConnectServer","ManageServices","ManageStats","ManageSharedApp","ManageSharedVolume","ManageDeploy","componentKeyreload1","componentKeyreload2","componentKeyreload3","checkconnect","show","SwarmabAsciiLabTemplate","activeItem","menuItem","activeItemSub","menuItemSub","VueSweetalert2","VueWait","socketurl","socket","io","autoConnect","reconnection","reconnectionDelay","maxReconnectionAttempts","Infinity","pingInterval","pingTimeout","transports","secure","rejectUnauthorized","VueSocketIOExt","productionTip","el","wait","h","App"],"mappings":"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EnC,aACA,iCACA,2lEA4BA,GADA,KACA,IACA,YACA,sCACA,YACA,WACA,mBACA,uBACA,yBAKEtJ,SAAU,CACR,aACE,OAAOxN,KAAK0N,MAAMqJ,KAAKC,aAI7B,UAEA,8CACA,2BACA,SACUhX,KAAKiV,cAAe,EAC9B,UACUjV,KAAKiV,cAAe,QAK9B,0CACM,QAAN,qCACM,KAAN,QACM,KAAN,WACM,KAAN,iBAIE,gBACF,4CACA,yCAGA,UACI,KAAJ,uDACI,KAAJ,wEC9UgW,MCQ5V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QC4If,IACEnI,WAAY,CACV,KAAJ,EACA,uBACA,0BACA,8BACA,2DACI,QAAJ,IAEExC,MAAO,GAEP,OACF,OACA,iBACA,kBACA,kBACA,gBACA,kBACA,iBACA,SACA,UACA,SACA,QACA,gBAEA,WACA,QACA,QAEA,YACA,kBACA,SACA,mCACA,+BACA,kCAEA,aACA,cACA,UACA,eACA,aACA,QACA,CACQ3M,KAAM,YACNwM,MAAO,mCACP4C,UAAW,YACXE,SAAR,EACQE,UAAW,4CACXD,MAAO,OAEf,CACQvP,KAAM,UACNwM,MAAO,sCACP4C,UAAW,UACXE,SAAR,EACQE,UAAW,oBACXD,MAAO,OAGf,CACQvP,KAAM,MACNwM,MAAO,oCACP8C,SAAR,GAEA,CACQtP,KAAM,sBACNwM,MAAO,oCACP4C,UAAW,sBACXC,WAAY,iBACZC,SAAR,EACQC,MAAO,OAEf,CACQvP,KAAM,eACNwM,MAAO,iCACP4C,UAAW,eACXC,WAAY,iBACZC,SAAR,EACQC,MAAO,MACP0D,SAAU,SAAlB,GASU,OAAOxS,IAIjB,CACQT,KAAM,KACNoP,UAAW,KACXC,WAAY,iBACZG,UAAW,oBACXF,SAAR,EACQC,MAAO,OAEf,CACQ,KAAR,iBACQ,MAAR,UACQ,WAAR,iBACQ,UAAR,iBACQ,MAAR,OAGA,2CACA,WACA,UACA,aACA,oBACA,YACA,4BACA,mBAEA,aACA,0CACA,aACA,yJACA,0JACA,gKAEA,YACA,UACA,WACA,eACA,eAKA,UACA,4CACM,K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","file":"js/app.22303406.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/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/docker.7b56657d.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events-dashboard.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,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\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.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/index.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/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manage-service.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\",attrs:{\"id\":\"app\"}},[(_vm.warning===true)?_c('div',[_c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 order-first \"},[_c('br')]),_c('div',{staticClass:\"col-8 order-last\"},[_c('br'),_c('h2',[_vm._v(\" Welcome to Swarmlab-venus! \")]),_c('br'),_vm._v(\"\\n\\n\\t\\t\\t\\t\\t\\tYou are now \"),_c('b',[_vm._v(\"connected to the local Swarmlab client.\")]),_c('br'),_vm._v(\"\\n\\t\\t\\t\\t\\t\\tThat 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(\"\\n\\n\\t\\t\\t\\t\\t\\tTo \"),_c('u',[_vm._v(\"connect to the server\")]),_vm._v(\" please \"),_c('i',[_vm._v(\"visit the \\\"Network->Join\\\" Menu and click on \\\"connect\\\".\")]),_c('br'),_c('br'),_c('b',[_vm._v(\"DISCLAMER:\")]),_c('br'),_vm._v(\"\\n\\t\\t\\t\\t\\t\\tWhen connecting to other \\\"Networks\\\" \"),_c('b',[_vm._v(\"your host is becoming part of a network\")]),_vm._v(\" of multiple other computers that are also connected.\\n\\t\\t\\t\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\\t\\t\\tThis means that communication between those hosts is unlimited (no firewall).\\n\\t\\t\\t\\t\\t\\t\"),_c('br'),_c('br'),_vm._v(\"\\n\\n\\t\\t\\t\\t\\t\\tSince 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(\"\\n\\t\\t\\t\\t\\t\\tto be absolutely secure, like when connecting to any network:\\n\\t\\t\\t\\t\\t\\t\"),_c('br'),_c('ul',[_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\tplease 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)\\n\\n\\t\\t\\t\\t\\t\\t\\t \")]),_c('li',[_vm._v(\"\\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 \")]),_c('li',[_vm._v(\"\\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 \")])]),_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(\" \\n Please make sure all users on your system have a strong password!\\n \")]),_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.\\n \")]),_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(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tYes 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(\"\\n Swarmlab.io\\n \")]),_c('div',{staticClass:\"navbar-collapse collapse justify-content-between align-items-center w-100\",attrs:{\"id\":\"collapsingNavbar2\"}},[_c('ul',{staticClass:\"navbar-nav mx-auto text-md-center text-left\"},[_c('b-nav-item',{attrs:{\"href\":\"https://git.swarmlab.io:3000\",\"target\":\"_swarmlabgit\"}},[_vm._v(\" Swarmlab_git \")]),_vm._m(0),_vm._m(1),_vm._m(2),_c('b-nav-item',{attrs:{\"href\":\"https://gitter.im/swarmlab-hybrid/community\",\"target\":\"_gitter\"}},[_vm._v(\" Join_us_on_Gitter \")]),_c('b-nav-item',{attrs:{\"href\":\"https://vimeo.com/showcase/7887267\",\"target\":\"_vimeo\"}},[_vm._v(\" Follow_us_on_Vimeo \")])],1),_c('ul',{staticClass:\"nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap\"},[(_vm.issocket === 'close')?_c('b-nav-item',{on:{\"click\":function($event){return _vm.onAction('connect')}}},[_vm._v(\"Agent reconnect\")]):_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\"},on:{\"click\":function($event){return _vm.onAction('connect')}}})]):_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"ti-link nav-link text-success\",attrs:{\"href\":\"#\",\"title\":\"You are connected hybrid_agent\"}})]),_c('b-nav-item')],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex\",attrs:{\"id\":\"wrapper\"}},[(_vm.sidemenou == 'max')?_c('div',{staticClass:\" bg-light border-right\",staticStyle:{\"width\":\"15rem\"},attrs:{\"id\":\"sidebar-wrapper\"}},[_c('div',{staticClass:\"list-group list-group-flush\"},[_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-dashboard\",modifiers:{\"hybrid-dashboard\":true}}],staticClass:\"ti-dashboard list-group-item list-group-item-action\",class:{ active: _vm.isActive('dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Dashboard\"},on:{\"click\":[function($event){return _vm.setActive('dashboard','')},function($event){return _vm.hybrid('dashboard')}]}},[_vm._v(\" Dashboard\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-dashboard\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('dashboard_dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"dashboard\"},on:{\"click\":function($event){return _vm.setActive('dashboard','dashboard_dashboard')}}},[_vm._v(\" Dashoard\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-hybrid\",modifiers:{\"hybrid-hybrid\":true}}],staticClass:\"ti-loop list-group-item list-group-item-action\",class:{ active: _vm.isActive('hybrid') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','')},function($event){return _vm.hybrid('manage_service')}]}},[_vm._v(\" Network\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-hybrid\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-target m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_instances') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Hybrid\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_instances')},function($event){return _vm.hybrid('manage_service')}]}},[_vm._v(\" Join\")]),_c('b-list-group-item',{staticClass:\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_deploy') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Deploy\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_deploy')},function($event){return _vm.hybrid('manage_deploy')}]}},[_vm._v(\" Deploy\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-shared\",modifiers:{\"hybrid-shared\":true}}],staticClass:\"ti-loop list-group-item list-group-item-action\",class:{ active: _vm.isActive('shared') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\"},on:{\"click\":[function($event){return _vm.setActive('shared','')},function($event){return _vm.hybrid('manage_shared_app')}]}},[_vm._v(\" Share\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-shared\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-link m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_shared') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Shared\"},on:{\"click\":[function($event){return _vm.setActive('shared','hybrid_shared')},function($event){return _vm.hybrid('manage_shared_app')}]}},[_vm._v(\" App\")]),_c('b-list-group-item',{staticClass:\"ti-share m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_shareddeploy') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Deploy\"},on:{\"click\":[function($event){return _vm.setActive('shared','hybrid_shareddeploy')},function($event){return _vm.hybrid('manage_shared_volume')}]}},[_vm._v(\" Volume\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-builders\",modifiers:{\"hybrid-builders\":true}}],staticClass:\"ti-stats-up 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('stats')}]}},[_vm._v(\" Stats\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-builders\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\" ti-stats-up 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('stats')}]}},[_vm._v(\" stats\")])],1),_c('b-list-group-item',{staticClass:\"ti-angle-double-left list-group-item list-group-item-action\",class:{ active: _vm.isActive('menou-min') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"menou-min\",\"title\":\"Minimize\"},on:{\"click\":function($event){return _vm.onActionMenu('min')}}})],1)]):_vm._e(),(_vm.sidemenou == 'min')?_c('div',{staticClass:\" bg-light border-right\",attrs:{\"id\":\"sidebar-wrapper1\"}},[_c('div',{staticClass:\"list-group list-group-flush\"},[_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-dashboard1\",modifiers:{\"hybrid-dashboard1\":true}}],staticClass:\"ti-dashboard list-group-item list-group-item-action\",class:{ active: _vm.isActive('dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Dashboard\",\"title\":\"Dashboard\"},on:{\"click\":[function($event){return _vm.setActive('dashboard','')},function($event){return _vm.hybrid('dashboard')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-dashboard1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('dashboard_dashboard') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"dashboard\",\"title\":\"Dashboard\"},on:{\"click\":function($event){return _vm.setActive('dashboard','dashboard_dashboard')}}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-hybrid1\",modifiers:{\"hybrid-hybrid1\":true}}],staticClass:\"ti-loop list-group-item list-group-item-action\",class:{ active: _vm.isActive('hybrid') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\",\"title\":\"Hybrid\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','')},function($event){return _vm.hybrid('manage_service')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-hybrid1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-target m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_instances') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Hybrid\",\"title\":\"Zones\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_instances')},function($event){return _vm.hybrid('manage_service')}]}}),_c('b-list-group-item',{staticClass:\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_deploy') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Deploy\",\"title\":\"Deploy\"},on:{\"click\":[function($event){return _vm.setActive('hybrid','hybrid_deploy')},function($event){return _vm.hybrid('manage_deploy')}]}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-shared1\",modifiers:{\"hybrid-shared1\":true}}],staticClass:\"ti-loop list-group-item list-group-item-action\",class:{ active: _vm.isActive('shared') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\",\"title\":\"Shared Tools\"},on:{\"click\":[function($event){return _vm.setActive('shared','')},function($event){return _vm.hybrid('manage_shared_app')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-shared1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-link m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_shared') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Shared\",\"title\":\"App\"},on:{\"click\":[function($event){return _vm.setActive('shared','hybrid_shared')},function($event){return _vm.hybrid('manage_shared_app')}]}}),_c('b-list-group-item',{staticClass:\"ti-share m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_shareddeploy') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Deploy\",\"title\":\"Volume\"},on:{\"click\":[function($event){return _vm.setActive('shared','hybrid_shareddeploy')},function($event){return _vm.hybrid('manage_shared_volume')}]}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-builders1\",modifiers:{\"hybrid-builders1\":true}}],staticClass:\"ti-stats-up list-group-item list-group-item-action\",class:{ active: _vm.isActive('builders') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Private\",\"title\":\"Stats\"},on:{\"click\":[function($event){return _vm.setActive('builders','')},function($event){return _vm.hybrid('stats')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-builders1\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\" ti-stats-up 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\":\"Show stats\"},on:{\"click\":[function($event){return _vm.setActive('builders','hybrid_builders')},function($event){return _vm.hybrid('stats')}]}})],1),_c('b-list-group-item',{staticClass:\"ti-angle-double-right list-group-item list-group-item-action\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"menou-max\",\"title\":\"Maximize\"},on:{\"click\":function($event){return _vm.onActionMenu('max')}}})],1)]):_vm._e(),_c('div',{staticClass:\"w-100 p-3\",staticStyle:{\"background-color\":\"#eee\"}},[(_vm.hybridmenou == 'dashboard')?_c('view-dashboard',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'manage_service')?_c('manage-services',{key:_vm.componentKeyreload,staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'manage_shared_app')?_c('manage-shared-app',{key:_vm.componentKeyreloadshared,staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'manage_shared_volume')?_c('manage-shared-volume',{key:_vm.componentKeyreloadsharedvolume,staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'manage_deploy')?_c('manage-deploy',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),_c('connect-server',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'connect-server'),expression:\"hybridmenou == 'connect-server'\"}],staticStyle:{\"background-color\":\"#f8f9fa\"}}),(_vm.hybridmenou == 'stats')?_c('manage-stats',{key:_vm.componentKeybuilders,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(\"\\n\\t\\t\\t\\t | \\n \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://www.gnu.org/licenses/agpl-3.0.html\",\"target\":\"_blank\"}},[_vm._v(\" ©\")]),_vm._v(\"\\n\\t\\t\\t\\t Coded with \\n \"),_c('i',{staticClass:\"ti-heart\"}),_vm._v(\" by\\n \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://git.swarmlab.io:3000/zeus\",\"target\":\"_blank\"}},[_vm._v(\" zeus\")]),_vm._v(\" \\n\\t\\t\\t\\t- Released under the\\n \"),_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(\" | \\n\\t\\t\\t\\t\"),_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(\"\\n\\t\\t\\t\\t | \\n\\t\\t\\t\\t\")]):_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(\"\\n\\t\\t\\t\\tLinux Penguin\\n\\t\\t\\t\")]):_vm._e(),(_vm.hybridmenou == 'llo'||_vm.hybridmenou == 'dashboard')?_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\\tby Rebekah Yoder / \\n\\t\\t\\t\\t\")]):_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\\n\\t\\t\\t\")]):_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(\"\\n -\\n \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item my-auto\"},[_c('a',{staticClass:\"nav-link navbar-brand mx-0 d-none d-md-inline\",attrs:{\"href\":\"\"}},[_vm._v(\"Venus\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_vm._v(\"\\n -\\n \")])])},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 \\n\\t\\t\\t\\t\"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://creativecommons.org/licenses/by-sa/3.0/\",\"target\":\"_blank\"}},[_vm._v(\"Creative Commons License\")])])}]\n\nexport { render, staticRenderFns }","//var global_config = {\nexport const ApiConfig = {\n\t\t'swarmlab_url_80'\t\t\t: 'https://api.swarmlab.io', \t\t\t\n\t\t'url_80'\t\t\t\t\t\t\t: 'http://localhost:8085', \t\t\t// webclient \t\t\n\t\t'url_443'\t\t\t\t\t\t\t: 'https://localhost:8085' \t\t\t// webclient\n\t\t\t\t\t\t\t\t\t\t\t/* \tconfig for swarmlab ide */\n};\n","import { mapState, mapActions, commit } from 'vuex'\nimport store from '@/store/index'\nimport axios from 'axios'\nimport {ApiConfig} from \"@/config/index\";\n\nexport default {\n namespaced: true,\n state: {\n token: '',\n\t\tsocketStatus:'close',\n status: {},\n statusswarmlab: {},\n config: {}\n },\n getters: {\n\t\tgetsocketStatus (state, container) {\n\t\t\treturn state.socketStatus\n\t\t},\n\t\tgettoken (state, container) {\n\t\t\treturn state.token\n\t\t},\n\t\tgetlog (state, container) {\n\t\t\treturn state.log\n\t\t},\n\t\tgetconfig (state, container) {\n\t\t\treturn state.config\n\t\t},\n\t\tgetstatus (state, container) {\n\t\t\treturn state.status\n\t\t},\n\t\tgetstatusswarmlab (state, container) {\n\t\t\treturn state.statusswarmlab\n\t\t}\n },\n mutations: {\n\t\tset_socketStatus (state, data) {\n\t\t\t\tstate.socketStatus=data;\n\t\t},\n\t\tset_token (state, data) {\n\t\t\t\tstate.token=data;\n\t\t},\n\t\tset_status (state, data) {\n\t\t\t\tstate.status=data;\n\t\t},\n\t\tadd_log (state, data) {\n //console.log(\"js1 set \"+JSON.stringify(data))\n\t\t\t\tstate.log.push(data);\n\t\t},\n\t\tadd_config (state, data) {\n //console.log(\"js1 set \"+JSON.stringify(data))\n\t\t\t\tstate.config = data\n\t\t},\n\t\tadd_statusswarmlab (state, data) {\n console.log(\"status server \"+JSON.stringify(data))\n\t\t\t\tstate.statusswarmlab = data\n\t\t}\n },\n actions: {\n\t\taddstatusswarmlab({commit}, value) {\n\t\t\t commit('add_statusswarmlab', value)\n\t\t},\n\t\taddconfig({commit}, value) {\n\t\t\t commit('add_config', value)\n\t\t},\n\t\taddlog({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n var tt = {}\n tt.message = value.log.log.message\n tt.tailed_path = value.log.log.tailed_path\n tt.date = value.log.date\n\t\t\t commit('add_log', tt)\n\t\t},\n\t\tsetsocketStatus({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_socketStatus', value.status)\n\t\t},\n\t\tsettoken({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_token', value.token)\n\t\t},\n\t\tsetstatus({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_status', value.status)\n\t\t},\n async swarmlabstart({commit,rootGetters}, value) {\n //console.log('from '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n action: value.action,\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/run'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.post('http://localhost:8084/run',params,options);\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async oncompletiontracking({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n track: value.track,\n course: value.course,\n chapter: value.chapter,\n evaluation: value.evaluation\n }\n\t\t\t\t\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/completiontracking',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n //console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getcompletion({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n course: value.course,\n chapter: value.chapter\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getcompletion',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async getevents({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n begin: value.begin,\n end: value.end\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabevents',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n\t\t async swarmlabhybridapi({commit,rootGetters}, value) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tvar token = rootGetters['pipelineLLO/gettoken']\n\t\t\t\t\t\t\t\t\tvar save = value\n\t\t\t\t\t\t\t\t\tvar params = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpipeline: save\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvar options = {\n\t\t\t\t\t\t\t\t\t\t\t\theaders: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n var pipelineApi = await axios.post('https://api.swarmlab.io/swarmlabhybridapi',params,options);\n\t\t\t\t\t\t\t\t\treturn pipelineApi\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\tif(e.error == \"invalid_token\"){\n\t\t\t\t\t\t\t\t\t\t\twindow.location.href = 'https://api-login.swarmlab.io:8089';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t },\n\n async getprogress({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n course: value.course\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getprogress',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async swarmlabhybridadd({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n nodename: value.nodename,\n nodeip: value.nodeip,\n nodeid: value.nodeid,\n noderole: value.noderole,\n nodezones: value.nodezones,\n nodedesc: value.nodedesc\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridadd',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n //console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridrm({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n nodename: value.nodename,\n nodeip: value.nodeip,\n nodeid: value.nodeid,\n noderole: value.noderole,\n nodezones: value.nodezones,\n nodedesc: value.nodedesc\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrm',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n //console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getmountinfo({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getmountinfo'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getservicesinfo({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getservicesinfo'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getnetworks({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getnetworks'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_join_start({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n/*\n var Endpoint = `83.212.78.14:${this.server_wg_port}`\n var peerconfig =`\n[Interface]\n PrivateKey = ${privatekey}\n ListenPort = 51820\n\n[Peer]\n PublicKey = ${publickey}\n Endpoint = ${endpoint}\n AllowedIPs = 10.1.0.0/24\n #AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0\n PersistentKeepalive = 30\n`\n*/\n try {\n var token = value.token\n var params = {\n publickey: value.publickey,\n endpointport: value.endpointport,\n\t\t\t\t\t\t\tbootstrapstackid: value.bootstrapstackid,\n serverip: value.serverip,\n netmask: value.netmask,\n peer_ip: value.peer_ip,\n allowedips: value.allowedips,\n network_mode: value.network_mode,\n privatekey: value.privatekey\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/hybrid_join_start'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async hybrid_join_connect({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n bootstrapstackid: value.bootstrapstackid\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/hybrid_join_connect'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async updatenetworks({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n network: value.networks,\n defaultnetwork: value.defaultnetwork,\n container: value.container\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/updatenetworks'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getlogs({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n container: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getlogs'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesinfo',options);\n return p\n //console.log(JSON.stringify(p))\n //console.log(value.token)\n //console.log(value.swarmlabname)\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getswgdata({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n stackid: value.stackid,\n publickey: value.publickey\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+'/getwginterfacesstats'\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 var chartdata = {\n labels: [\n \"2021-05-13-13:20\",\n \"2021-05-13-13:21\",\n \"2021-05-13-13:22\",\n \"2021-05-13-13:23\",\n \"2021-05-13-13:24\",\n \"2021-05-13-13:25\",\n \"2021-05-13-13:26\",\n \"2021-05-13-13:27\",\n \"2021-05-13-13:28\",\n \"2021-05-13-13:29\",\n \"2021-05-13-13:30\",\n \"2021-05-13-13:31\"\n ],\n datasets: [\n {\n label: \"In\",\n backgroundColor: \"#f87979\",\n data: [70, 20, 12, 39, 100, 40, 95, 80, 80, 20, 12, 101]\n },\n {\n label: \"Out\",\n backgroundColor: \"#A5CC82\",\n data: [205, 408, 188, 190, 58, 200, 190, 400, 164, 254, 290, 201]\n }\n ],\n }\n\n return chartdata;\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 getservicesmountstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n name: value.name\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+'/getservicesmountstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getservicesstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getservicesstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async rmbuildstatus({commit,rootGetters}, value) {\n //console.log('valuei22222222222222222222222222222222 '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/rmbuildstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getbuildstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getbuildstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getstoragestatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getstoragestatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async create_config({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n value: value.value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/create_config'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/create_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async rmswarmlablocal({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n instance: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/rm_swarmlab'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async rmswarmlablocalstorage({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n instance: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/rm_swarmlabstorage'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async save_llo_asciidoctmp({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n code: value\n }\n var options = {\n //params: params,\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/save_course_ascii'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getstoragesudoprepare({commit,rootGetters}, value) {\n \n try {\n var token = value.token\n var params = {\n storagename: value\n }\n var options = {\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/check_storage_sudorun'\n var p = await axios.post(sock_server_l,params,options);\n console.log('error '+JSON.stringify(p))\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getstoragesudopreparestop({commit,rootGetters}, value) {\n \n try {\n var token = value.token\n var params = {\n storagename: value\n }\n var options = {\n headers: { 'content-type': 'application/json',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/check_storage_sudostop'\n var p = await axios.post(sock_server_l,params,options);\n console.log('error '+JSON.stringify(p))\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async get_llo_course_ascii({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n dir: value.dir,\n file: value.file\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/get_course_ascii'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n //window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async get_llo_course({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n course: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/get_course'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async get_config({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n \n try {\n var token = value.token\n var params = {\n value: 'get'\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/get_config'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/get_config',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n \n },\n async getswarmlabinfo({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n //console.log('token ' + token)\n var params = {\n swarmlabname: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabhybridservicesinfo',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async getswarmlabstorageinfo({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n //console.log('token ' + token)\n var params = {\n swarmlabname: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabhybridstorageinfo',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async getswarmlabmicroserviceinfo({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n //console.log('token ' + token)\n var params = {\n swarmlabname: value\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabhybridmicroserviceinfo',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async setsharevolume({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n shareinfo: value,\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/setsharevolume',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 console.log(' error '+JSON.stringify(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 wg_invite({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabwgadminuserinvite',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_join({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n node: value.node,\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoinstackwg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n }else{\n }\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_leave({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n node: value.node,\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'leave'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoinstack',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridconfig({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: 'add'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridconfiginfo',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_servicerm({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'servicesrm'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrmservice',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async stackrmwg({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n action: 'stackrm'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrmstackwg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\tconsole.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async wg_servicerestart({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestart'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrestartservicewg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async create_vpn ({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n wg: value.wg\n }\n console.log(`params--------${token}------------------ `+JSON.stringify(params))\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/addwghybridiserver',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_servicelog({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestlog'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridlogservice',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async wg_invite_accept({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n wg: value.wg,\n action: value.action\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/wguseraccept',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async wg_servicelog({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestlog'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridlogservicewg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridjoin({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n swarmlabservice: 'ondemand_test_spitifgdfgdfkngkndfkngkdfngkdfk',\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoin',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async adddeploy({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n deploy: value.wg,\n action: 'deploy'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/adddeployhybridwg',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n\n\n\n }\n}\n","import Vuex from 'vuex'\nimport Vue from 'vue'\nimport { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'\n// -------------- Playbook----------------\nimport pipelineLLO from './modules/create_pipelineLLO'\nimport { library, dom } from '@fortawesome/fontawesome-svg-core'\n\nimport {faIcons, faSort, faChevronUp, faChevronDown, faBars, fas } from '@fortawesome/free-solid-svg-icons'\nimport { faJs, faVuejs, fab, faFontAwesome} from '@fortawesome/free-brands-svg-icons'\nimport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText } from '@fortawesome/vue-fontawesome'\n\n\n\n\n\nVue.use(Vuex)\nVue.use(BootstrapVue);\n\n\n\nVue.component('font-awesome-icon', FontAwesomeIcon)\nlibrary.add(faIcons, faSort, faChevronUp, faChevronDown, faBars, faJs, faVuejs, fab, fas, faFontAwesome)\ndom.watch() // This will kick of the initial replacement of i to svg tags and configure a MutationObserver\n\n\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\n\n\nexport default new Vuex.Store({\n modules: {\n\t\tpipelineLLO\n },\n state: { // = data\n },\n getters: { // = computed properties\n },\n mutations: {\n }\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[(_vm.$slots.image)?_c('div',{staticClass:\"card-image\"},[_vm._t(\"image\")],2):_vm._e(),(_vm.$slots.header || _vm.title)?_c('div',{staticClass:\"card-header\"},[_vm._t(\"header\",[_c('h4',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.title))]),(_vm.subTitle)?_c('p',{staticClass:\"card-category\"},[_vm._v(_vm._s(_vm.subTitle))]):_vm._e()])],2):_vm._e(),(_vm.$slots.default)?_c('div',{staticClass:\"card-body\"},[_vm._t(\"default\")],2):_vm._e(),_vm._t(\"raw-content\"),(_vm.$slots.footer)?_c('div',{staticClass:\"card-footer\"},[_c('hr'),_vm._t(\"footer\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"card\">\n <div class=\"card-image\" v-if=\"$slots.image\">\n <slot name=\"image\"></slot>\n </div>\n <div class=\"card-header\" v-if=\"$slots.header || title\">\n <slot name=\"header\">\n <h4 class=\"card-title\">{{title}}</h4>\n <p class=\"card-category\" v-if=\"subTitle\">{{subTitle}}</p>\n </slot>\n </div>\n <div class=\"card-body\" v-if=\"$slots.default\">\n <slot></slot>\n </div>\n <slot name=\"raw-content\"></slot>\n <div class=\"card-footer\" v-if=\"$slots.footer\">\n <hr>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n</template>\n<script>\nexport default {\n name: \"card\",\n props: {\n title: String,\n subTitle: String\n }\n};\n</script>\n<style>\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Card.vue?vue&type=template&id=54cb0c34&\"\nimport script from \"./Card.vue?vue&type=script&lang=js&\"\nexport * from \"./Card.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7 order-first \"},[_c('br'),_c('myconnect-server'),(_vm.ishybridlab)?_c('hybrid-lab'):_vm._e()],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('zones-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab hybrid zones config\")])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('add')}}},[_vm._v(\"\\n 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(\"\\n Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\"\\n 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}}})]),_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),_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}}})])]),_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}}})]),_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}}})]),_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}}})])]),_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(\"\\n update\")]):_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('addserver')}}},[_vm._v(\"\\n 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(\"\\n Cancel\")])])])])])]):_vm._e(),_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(\"\\n Project\\n \")]),_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(\"\\n Category\\n \")]),_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(\"\\n Description\\n \")]),_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 \\n \")])])])],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\\n \")])]),_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-widget btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Save config\"},on:{\"click\":function($event){return _vm.onAction('vpn')}}},[_vm._v(\" Create vpn\\n \")])])])]),_c('div',{staticClass:\"col-1\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"})]),_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\\n \")]),_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\\n \")]),(_vm.isconnect)?_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"}},[_vm._v(\" Status online\\n \")]):_c('button',{staticClass:\"ti-unlink btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"}},[_vm._v(\" Status offline\\n \")])])])])]),_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\\n \")]):_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\\n \")]),_c('button',{staticClass:\"ti-info btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"HowTo\"},on:{\"click\":function($event){return _vm.onAction('register')}}})])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/docker.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab hybrid-agent config</b>\n </div>\n </div>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <br>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Node ID</b></div>\n <div class=\"col-9\"><i>{{ CONFIG.nodeid }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Swarmlab key</b></div>\n <div class=\"col-9\"><i>{{ CONFIG.workerkey }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Swarmlab PublicKey</b></div>\n <div class=\"col-9\"><i>{{ CONFIG.swarmlab_public_wgkey }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Swarmlab ip</b></div>\n <div class=\"col-3\"><i>{{ CONFIG.server_ip }}</i></div>\n <div class=\"col-2\"><b>Local IP</b></div>\n <div class=\"col-4\"><i>{{ CONFIG.wg_ip }}</i></div>\n </div>\n <div class=\"row\">\n <div class=\"col-3\"><b>Private key</b></div>\n <div class=\"col-3\"><i>{{ CONFIG.privatekey }}</i></div>\n <div class=\"col-2\"><b>Public key</b></div>\n <div class=\"col-4\"><i>{{ CONFIG.publickey }}</i></div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <br>\n </div>\n </div>\n\n\n <div class=\"row\">\n <div class=\"col-4\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button\n class=\"ti-settings btn btn-outline-info\"\n round\n type=\"button\"\n title=\"Load config\"\n @click=\"onAction('load')\"\n > Load Settings\n </button>\n </div>\n \n <div class=\"input-group-prepend\">\n <button\n class=\"ti-widget btn btn-outline-info\"\n round\n type=\"button\"\n title=\"Save config\"\n @click=\"onAction('vpn')\"\n > Create vpn\n </button>\n </div>\n \n </div>\n </div>\n <div class=\"col-1\">\n <div class=\"input-group input-group-sm sm-3\">\n </div>\n </div> <!-- coll -->\n\n <div class=\"col-7 text-right\">\n <div class=\"input-group input-group-sm sm-3 text-right\">\n <div class=\"input-group-append text-right\">\n <button\n class=\"ti-link btn btn-outline-success\"\n round\n type=\"button\"\n title=\"Connect\"\n @click=\"onAction('connect')\"\n > Connect\n </button>\n <button\n class=\"ti-unlink btn btn-outline-warning\"\n round\n type=\"button\"\n title=\"Connect\"\n @click=\"onAction('disconnect')\"\n > Disconnect\n </button>\n <button\n v-if=\"isconnect\"\n class=\"ti-link btn btn-outline-success\"\n round\n type=\"button\"\n title=\"Connect\"\n > Status online\n </button>\n <button\n v-else\n class=\"ti-unlink btn btn-outline-warning\"\n round\n type=\"button\"\n title=\"Connect\"\n > Status offline\n </button>\n </div>\n </div>\n </div> <!-- coll -->\n\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button\n v-if=\"ishybridlab\"\n class=\"ti-key btn btn-outline-info\"\n round\n type=\"button\"\n title=\"Api keys\"\n @click=\"onAction('apikeyopen')\"\n > Enable the Swarmlab hybrid API\n </button>\n <button\n v-else\n class=\"ti-layout-media-overlay-alt btn btn-outline-warning\"\n round\n type=\"button\"\n title=\"Api keys\"\n @click=\"onAction('apikeyclose')\"\n > Enable the Swarmlab hybrid API\n </button>\n <button\n class=\"ti-info btn btn-outline-success\"\n round\n type=\"button\"\n title=\"HowTo\"\n @click=\"onAction('register')\"\n > \n </button>\n </div>\n </div>\n </div>\n </div>\n\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n isconnect:false,\n ishybridlab:true,\n isstatus:false,\n CONFIG:{\n 'status':'',\n 'privatekey':'',\n 'publickey':'',\n 'server_ip':'',\n 'nodeid':'',\n 'workerkey':'',\n 'allowed_ips':'',\n\t\t\t 'swarmlab_public_wgkey':'',\n 'wg_ip':'',\n 'swarm_ip':'',\n 'wg_port':''\n },\n token: ''\n\t\t}\n },\n\tmounted() {\n // from mytable.vue and socket\n\t\tthis.$root.$on('hybrid_connect_server_view', (value) => {\n //console.log('from mytable' + JSON.stringify(value)) \n this.CONFIG.status = value.status\n this.CONFIG.workerkey = value.workerkey\n this.CONFIG.swarmlab_public_wgkey = value.swarmlab_public_wgkey\n this.CONFIG.server_ip = value.server_ip \n this.CONFIG.allowed_ips = value.allowed_ips \n this.CONFIG.wg_port = value.wg_port \n this.CONFIG.wg_ip = value.wg_ip\n this.CONFIG.swarm_ip = value.swarm_ip\n this.CONFIG.privatekey = value.privatekey\n this.CONFIG.publickey = value.publickey\n if(this.CONFIG.status == 'on'){\n this.isstatus = true\n }else if(this.CONFIG.status == 'off'){\n this.isstatus = false\n }\n\t\t}),\n\t\tthis.$root.$on('hybrid_server_status', (value) => {\n this.serverstatus()\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_connect_server_view')\n\t\tthis.$root.$off('hybrid_server_status')\n },\n computed: {\n\n\t},\n\n methods: {\n\t\t\tasync serverstatus(action){\n var log = store.getters['pipelineLLO/getstatus']\n //console.log('status log ' + JSON.stringify(log))\t\n //{\"data\":{\"swarmlab\":\"active\",\"hybrid\":\"Online\"}}\n if(log.data.swarmlab == 'active' && log.data.hybrid == 'Online'){\n this.isstatus=true\n this.isconnect=true\n this.CONFIG.nodeid = log.data.swarmlabid\n }else{\n this.isstatus=false\n this.isconnect=false\n this.CONFIG.nodeid = 'null'\n }\n\n },\n\t\t\tasync onAction(action){\n if(action == 'load'){\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/swarmlabhybridconfig\",{\n\t\t\t\t\t\ttoken:this.token\n\t\t\t\t\t})\n //console.log('settings ' + JSON.stringify(log))\t\n\n\n\n this.CONFIG.status = log.data.data.status\n this.CONFIG.workerkey = log.data.data.workerkey\n this.CONFIG.swarmlab_public_wgkey = log.data.data.wg_public\n this.CONFIG.server_ip = log.data.data.endpoint // 83.212.77.133:51820\n this.CONFIG.allowed_ips = log.data.data.allowed_ip // 10.13.13.0/16, 0.0.0.0/0, ::/0\n this.CONFIG.wg_port = log.data.data.wg_port // 10.13.13.0/16, 0.0.0.0/0, ::/0\n this.CONFIG.wg_ip = log.data.data.wg_ip \n this.CONFIG.swarm_ip = log.data.data.swarm_ip \n this.CONFIG.privatekey = log.data.data.privatekey\n this.CONFIG.publickey = log.data.data.publickey\n if(this.CONFIG.status == 'on'){\n this.isstatus = true\n }else if(this.CONFIG.status == 'off'){\n this.isstatus = false\n }\n //console.log('swarm ' + JSON.stringify(log.data.data.workerkey))\t\n\n //console.log('start ' + JSON.stringify('load'))\t\n this.onAction('save')\n }else if(action == 'apikeyopen'){\n this.ishybridlab=false\n\t\t\t\t this.$root.$emit('hybrid_lab_keyview','open')\n }else if(action == 'apikeyclose'){\n this.ishybridlab=true\n\t\t\t\t this.$root.$emit('hybrid_lab_keyview','close')\n }else if(action == 'connect'){\n //console.log('start ' + JSON.stringify('connect'))\t\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/get_config\",{\n\t\t\t\t\t\ttoken:this.token\n\t\t\t\t\t})\n //console.log('pwd ' + JSON.stringify(log))\t\n this.isconnect = true\n \n var winfopath = log.data.data\n if(log.data.error_msg = 'ok'){\n var winfo='<span class=\"text-success\">sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/hybrid/connect/join.sh </span>'\n }else{\n var winfo='no exec file'\n }\n var info='<h4>Swarmlab Connect</h4> <h6 class=\"text-warning\"> You are about to connect with others. Be Careful </h6> <h5><i>Copy-and-run-command </i></h5> <br>'\n this.$swal({\n type: 'info',\n html: info+winfo,\n icon:'info',\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n }else if(action == 'vpn'){\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/create_vpn\",{\n\t\t\t\t\t\tvalue:this.CONFIG\n\t\t\t\t\t})\n console.log('start vpn ' + JSON.stringify(log))\t\n }else if(action == 'save'){\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/create_config\",{\n\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\tvalue:this.CONFIG\n\t\t\t\t\t})\n //console.log('start ' + JSON.stringify(log))\t\n //console.log('start ' + JSON.stringify('createkey'))\t\n }else if(action == 'disconnect'){\n //console.log('start ' + JSON.stringify('disconnect'))\t\n\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/get_config\",{\n\t\t\t\t\t\ttoken:this.token\n\t\t\t\t\t})\n //console.log('pwd ' + JSON.stringify(log))\t\n \n var winfopath = log.data.data\n if(log.data.error_msg = 'ok'){\n var winfo='<span class=\"text-success\">sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/hybrid/connect/leave.sh </span>'\n }else{\n var winfo='no exec file'\n }\n var info='<h4>Swarmlab Disconnect</h4> <h5><i>Copy-and-run-command </i></h5> <br>'\n this.$swal({\n type: 'info',\n icon:'info',\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n } else if(action == 'register'){\n //console.log('start ' + JSON.stringify('register'))\t\n\t\t\t\t\t//var log = await store.dispatch(\"pipelineLLO/get_config\",{\n\t\t\t\t\t//\ttoken:this.token\n\t\t\t\t\t//})\n //console.log('pwd ' + JSON.stringify(log))\t\n \n // var winfopath = log.data.data\n var winfo=`Before you begin\n <br>\n Before you start using the Swarmlab Hybrid API, you need a hybrid enabled account and the Swarmlab API enabled. \n <br>\n To learn more, see Get Started with Hybrid Platform. \n `\n var info=\"<h5>Get API Key's</h5><br>\"\n this.$swal({\n type: 'info',\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n }\n }\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myconnect-server.vue?vue&type=template&id=ed9c0bf8&\"\nimport script from \"./myconnect-server.vue?vue&type=script&lang=js&\"\nexport * from \"./myconnect-server.vue?vue&type=script&lang=js&\"\nimport style0 from \"./myconnect-server.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-7 order-first \" >\n <br>\n <myconnect-server>\n\n </myconnect-server>\n <hybrid-lab\n v-if=\"ishybridlab\"\n >\n\n </hybrid-lab>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <!--\n <adhoc-view>\n\n </adhoc-view>\n -->\n <zones-view>\n\n </zones-view>\n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\n//import ViewNetwork from \"./mynetwork/mytable.vue\";\n//import AdhocView from \"./mynetwork/AdhocView.vue\";\nimport ZonesView from \"./manageservices/manage-service.vue\";\nimport card from '@/components/Card.vue'\nimport HybridLab from \"./manageservices/hybridlab.vue\";\nimport MyconnectServer from \"./mynetwork/myconnect-server.vue\";\nexport default {\n components: {\n HybridLab,\n ZonesView,\n card,\n MyconnectServer\n },\n data () {\n return {\n loading: false,\n ishybridlab: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_lab_keyview', (v) => {\n if(v == 'open'){\n this.ishybridlab=true\n }else if(v == 'close'){\n this.ishybridlab=false\n }\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_lab_keyview')\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myconnect-server.vue?vue&type=template&id=375cff34&\"\nimport script from \"./myconnect-server.vue?vue&type=script&lang=js&\"\nexport * from \"./myconnect-server.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 order-first \"},[_c('br'),_c('myconnect-manage-server')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/hybrid-1.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunwg\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Network...\\n \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab venus - Join Network\")])])]),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackid && _vm.hybridshowdata.userstatus === true && _vm.hybridshowdata.status && _vm.testactionrowindex[_vm.hybridshowdata.bootstrapstackid] !== true)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-start')}}},[_vm._v(\"\\n Start Network\\n \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackid && _vm.hybridshowdata.userstatus && _vm.hybridshowdata.status && _vm.testactionrowindex[_vm.hybridshowdata.bootstrapstackid])?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-stop')}}},[_vm._v(\"\\n Leave Network\\n \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackid && _vm.hybridshowdata.userstatus === null)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-invite')}}},[_vm._v(\"\\n Request Access\\n \")]):_c('span')])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackid && _vm.hybridshowdata.userstatus && _vm.hybridshowdata.status && _vm.testactionrowindex[_vm.hybridshowdata.bootstrapstackid])?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.serviceInfo(_vm.hybridshowdata.bootstrapstackid)}}},[_vm._v(\"\\n Service Info\\n \")]):_vm._e()])])]),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Instances\\n \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.Replicas)+\"\\n \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Interface \\n \")]),(_vm.check_interface(_vm.hybridshowdata.bootstrapstackid) && _vm.testactionrowindex[_vm.hybridshowdata.bootstrapstackid])?_c('div',{staticClass:\"col-4 text-success\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowwgstatus)+\"\\n \")]):_c('div',{staticClass:\"col-4 text-danger\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowwgstatus)+\"\\n \")])]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Names\\n \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapname)+\"\\n \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n EndAt\\n \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapdateend)+\"\\n \")])]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Networks\\n \")]),_c('div',{staticClass:\"col-3 text-success\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowwgnetworkstatus[_vm.hybridshowdata.bootstrapstackid])+\"\\n \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n BeginAt\\n \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapdatebegin)+\"\\n \")])]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Status\\n \")]),(_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(\"\\n Ports\\n \")]),(_vm.hybridshowdata.ports!=0)?_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.ports)+\"\\n \")]):_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(\"\\n\\t\\t\\t\\t\\tGo\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\"\\n\\t\\t\\t\\t\\tReset\")])])]),_c('vuetable',{key:_vm.vuetablekey1,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.bootstrapstackid])?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Remove Stack\",\"disabled\":\"\",\"round\":\"\"}}):_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Remove Stack\",\"disabled\":\"\",\"round\":\"\"}})])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.actionrowindex == props.rowIndex)?_c('button',{staticClass:\"ti-more-alt btn btn-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-more btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}})])])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/hybrid-1.png\" alt=\"...\">\n </div>\n\n <v-wait for=\"myRunwg\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Network...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab venus - Join Network</b>\n </div>\n </div>\n\n<br>\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-start')\"\n v-if=\"hybridshowdata.bootstrapstackid && hybridshowdata.userstatus === true && hybridshowdata.status && testactionrowindex[hybridshowdata.bootstrapstackid] !== true\"\n >\n Start Network\n </button>\n\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-stop')\"\n v-if=\"hybridshowdata.bootstrapstackid && hybridshowdata.userstatus && hybridshowdata.status && testactionrowindex[hybridshowdata.bootstrapstackid]\"\n >\n Leave Network\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n \n <button\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-invite')\"\n v-if=\"hybridshowdata.bootstrapstackid && hybridshowdata.userstatus === null\"\n >\n Request Access\n </button>\n <span\n v-else\n >\n </span>\n <!--\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n -->\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"serviceInfo(hybridshowdata.bootstrapstackid)\"\n v-if=\"hybridshowdata.bootstrapstackid && hybridshowdata.userstatus && hybridshowdata.status && testactionrowindex[hybridshowdata.bootstrapstackid]\"\n >\n Service Info\n </button>\n </div>\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" \n >\n Instances\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Replicas }}\n </div>\n <div class=\"col-2 text-info\" >\n Interface \n </div>\n <div class=\"col-4 text-success\" \n v-if=\"check_interface(hybridshowdata.bootstrapstackid) && testactionrowindex[hybridshowdata.bootstrapstackid]\"\n >\n {{ hybridshowwgstatus }}\n </div>\n <div class=\"col-4 text-danger\" \n v-else\n >\n {{ hybridshowwgstatus }}\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 >\n Networks\n </div>\n <div class=\"col-3 text-success\" >\n {{ hybridshowwgnetworkstatus[hybridshowdata.bootstrapstackid] }}\n </div>\n <div class=\"col-2 text-info\" >\n BeginAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdatebegin }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" \n v-if=\"hybridshowdata.status\"\n >\n <span class=\"ti-check text-success\"> </span>\n </div>\n <div class=\"col-3 text-secondary\" \n v-else\n >\n <span> </span>\n </div>\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" \n v-if=\"hybridshowdata.ports!=0\"\n >\n {{ hybridshowdata.ports }}\n </div>\n <div class=\"col-4 text-secondary\" \n v-else\n >\n \n </div>\n </div> <!-- row -->\n </b-container>\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search By StackName\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey1\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n\t\t\t\t@vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\" >\n <button\n v-if=\"testactionrowindex[props.rowData.bootstrapstackid]\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Remove Stack\"\n disabled\n round\n >\n </button>\n <button\n v-else\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Remove Stack\"\n disabled\n round\n >\n </button>\n </div>\n </div>\n <div slot=\"actions\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n </div>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n testactionrowindex:{}, // joined \n actionrowindex:'',\n\t playbookInfo: {},\n virtualnetinfo:'',\n hybridshowdata:{},\n hybridshowwgstatus:'Down',\n hybridshowwgnetworkstatus:{},\n wgintconfig:{},\n wgintconfigstatus:{},\n server_wg_public:'',\n server_wg_port:'',\n server_wg_userprivate:'',\n token: '',\n\t CONFIG: {},\n isstatus:'',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey1:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'bootstrapname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'bootstrapname',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '20%'\n },\n {\n name: 'bootstrapstackname',\n title: '<span class=\"orange\"></span>StackName',\n sortField: 'bootstrapstackname',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '15%',\n callback: value => {\n return value\n }\n\n },\n {\n name: 'bootstrapstackid',\n title: '<span class=\"orange\"></span>StackID',\n sortField: 'bootstrapstackid',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '13%',\n callback: value => {\n (async() => {\n\t\t var r = await this.checkactionrowindex(value)\n //console.log('data '+JSON.stringify(r.data) + ' value ' +value)\n if(r.data.data == 'yes'){\n this.$set(this.testactionrowindex, value, true)\n }else{\n this.$set(this.testactionrowindex, value, false)\n }\n //console.log('test ' + JSON.stringify(r.data.test))\n this.$set(this.hybridshowwgnetworkstatus, value, 'host')\n if(r.data.test){\n var rdatatest = r.data.test.length\n //console.log('testilenght ' + JSON.stringify(rdatatest))\n for(var ii = 0; ii < rdatatest; ii++){\n var wgnetworkinterface = `swlab${value.slice(0, 10)}`\n //console.log('test-----=====================----------- ' + JSON.stringify(wgnetworkinterface))\n this.$set(this.hybridshowwgnetworkstatus, value, 'host')\n if(r.data.test[ii].Networks == wgnetworkinterface ){\n //console.log('test---- ' + JSON.stringify(r.data.test[ii].Networks))\n this.$set(this.hybridshowwgnetworkstatus, value, wgnetworkinterface)\n break; \n }\n }\n }\n })()\n return value\n }\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n },\n {\n name: 'bootstrapdateend',\n title: '<span class=\"orange\"></span>End',\n sortField: 'bootstrapdateend',\n titleClass: 'center aligned',\n visible:true,\n width: '15%'\n },\n {\n name: 'userstatus',\n title: '<span class=\"orange\"></span>Accept',\n sortField: 'userstatus',\n titleClass: 'center aligned',\n visible:true,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n \n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'status',\n titleClass: 'center aligned',\n visible:true,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n \n {\n name: '__slot:actionslocal', // <----\n title: ' Join',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%',\n callback: 'getstatus'\n },\n \n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridbootstrapservicesallwg\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 10,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'bootstrapdatebegin5',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_bootstrap_view', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_bootstrap_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\tasync check_interface(value){\n //console.log('check interface ' + JSON.stringify(value))\n var wginterface = `swlab${value.slice(0, 10)}`\n if(this.testactionrowindex[value]){\n this.hybridshowwgstatus = `${wginterface} UP`\n }else{\n this.hybridshowwgstatus = `DOWN`\n }\n },\n\t\tasync checkactionrowindex(value){\n var obj1 = {}\n obj1.token = this.token\n obj1.bootstrapstackname = `swarmlabwg-${value}`\n var res1 = await store.dispatch('pipelineLLO/getserviceshybridstatus', obj1)\n return res1 \n },\n\n\n async serviceInfo(action) {\n console.log('service info ' + JSON.stringify(action))\n var wgnetworkinterface = `swlab${action.slice(0, 10)}`\n var wgnetworkconnect = `docker exec -it swarmlabwg-${action} /bin/sh`\n var info=`<h5>${this.virtualnetinfo}</h5><br><h5>Share app over <b> ${wgnetworkinterface} </b> <br><br> <h5> <a href=\"http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/share_app.adoc.html\" target=\"_blank\"> Info</a></h5> <br> <b>You can connect to virtual network with</b> <br> <span class=\"text-success\">${wgnetworkconnect}</span> <br> <br> <b>From inside the container</b>, you can access host services using the IP address of the docker0 interface. <br><br> <b>From Host OS</b>, you can access container services using the IP address of the eth0 interface.`\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: 'container',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'ok!'\n })\n },\n async onActionHybrid(action) {\n //var logconfig = await store.getters['pipelineLLO/getconfig'];\n this.CONFIG = await store.getters['pipelineLLO/getstatusswarmlab'];\n if(this.CONFIG.hybrid == 'Online'){\n this.isstatus = true\n }else{\n this.isstatus = false\n }\n //console.log('stack-start1 ' + JSON.stringify(this.CONFIG))\n //console.log('stack-start3 ' + JSON.stringify(logconfig1))\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will leave the stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'stack-start' ){\n //console.log('stack-start')\n //if(this.isstatus == '1'){\n //console.log(this.isstatus)\n //console.log('stack-start ' + JSON.stringify(this.hybridshowdata))\n \n var log = await store.dispatch(\"pipelineLLO/hybrid_join\",{\n token:this.token,\n node:this.hybridshowdata.bootstrapstackid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.server_wg_public = log.data.data.data.server_public\n this.server_wg_port = log.data.data.data.server_port\n this.server_wg_userprivate = log.data.data.data.user_private\n\n this.server_wg_usernetmask = log.data.data.data.user_netmask\n this.server_wg_userip = log.data.data.data.user_ip\n this.server_wg_usernetwork = log.data.data.data.user_network\n this.server_wg_bootstrapstackid = this.hybridshowdata.bootstrapstackid\n\n //console.log('---for hybrid_join_start--------- ' + JSON.stringify(log.data))\n\n\t\t\t\t//this.hybridshowdata.bootstrapstackid\n\n // run local\n this.wgintconfig = {\n publickey:this.server_wg_public,\n endpointport:this.server_wg_port,\n bootstrapstackid:this.server_wg_bootstrapstackid,\n netmask:this.server_wg_usernetmask,\n peer_ip: this.server_wg_userip,\n serverip: '83.212.78.14',\n allowedips: `${this.server_wg_usernetwork}/${this.server_wg_usernetmask}`,\n privatekey:this.server_wg_userprivate\n }\n\n var info=`<h5>network_mode for interface <b> ${this.hybridshowdata.bootstrapstackname} </b> <br><br> The <b>host</b> option is used to make the interface look like they are running on the host itself </h5> <h5> The <b>container</b> option containerize the containers networking </h5> <h5> <a href=\"http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/networkmode.adoc.html\" target=\"_blank\"> More info</a></h5>`\n this.$swal({\n type: 'Info',\n title: 'network_mode!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'container',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'host'\n }).then((result)=> {\n this.onActionwg_stackstart(result);\n })\n\n\n/*\n\nthis.$wait.start('myRunwg');\n var logsave = await store.dispatch(\"pipelineLLO/hybrid_join_start\",{\n publickey:this.server_wg_public,\n endpointport:this.server_wg_port,\n bootstrapstackid:this.server_wg_bootstrapstackid,\n netmask:this.server_wg_usernetmask,\n peer_ip: this.server_wg_userip,\n serverip: '83.212.78.14',\n allowedips: `${this.server_wg_usernetwork}/${this.server_wg_usernetmask}`,\n privatekey:this.server_wg_userprivate\n\n })\nthis.$wait.end('myRunwg');\n // run local\n if(logsave.data.action == \"ok\"){\nthis.$wait.start('myRunwg');\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"connect\",\n bootstrapstackid: this.server_wg_bootstrapstackid\n })\n\nthis.$wait.end('myRunwg');\n this.refreshVuetable()\n }\n\n*/\n /*\nsose ta parakato kai trexto \ndes prota ean exei idio ip netwrok kapou\nean oci nai na tou to peis\n\no server den trexei akomi aftomata to wg server preepi na do pos einai kalitera na ginei\nisos me tou pou sikonete\nmesso mpi_bootstrap\n\n[Interface]\n PrivateKey = QJBr5JPQ44XpoSbcIyU25nGrTZ9u+pVCU32L0lTkTV0=\n ListenPort = 51820\n\n[Peer]\n #PublicKey = WAuzcpIf1obckeLP94owls31j58LP2k+yIAasx9VFU8=\n PublicKey = KerkcAshneFZxNeSVsP00Wad+KNqhU/ZxJa/F3Ol5ns=\n #Endpoint = 83.212.77.133:51820\n #Endpoint = 83.212.78.14:51820\n Endpoint = 83.212.78.14:35886\n AllowedIPs = 10.1.0.0/24\n #AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0\n PersistentKeepalive = 30\n*/\n //}else{\n //}\n \n }else if(action == 'service-invite' ){\n //console.log('status '+this.isstatus)\n //console.log(this.hybridshowdata.bootstrapstackid)\n var log = await store.dispatch(\"pipelineLLO/wg_invite\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n var info=`<h5>Your request has been sent.</h5><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 == 'service-info' ){\n //console.log(JSON.stringify(action))\n //console.log('CONFIG '+JSON.stringify(this.hybridshowdata))\n var url = this.hybridshowdata.bootstrapurl\n var info=`<h5>You will be redirected to the README page of the repository (OUTSIDE Swarmlab-Hybrid)<br> \n<a href=\"${url}\" target=\"new\">click here to continue</a>\n</h5>\n<br>\n`\n this.$swal({\n type: 'Info',\n title: 'README',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n\n },\n async onActionwg_stackstart(action){\n //console.log('CONFIG1 tsack '+JSON.stringify(this.wgintconfig.bootstrapstackid))\n if(action.isConfirmed){\n this.wgintconfig.network_mode = true\n //console.log('CONFIG1 '+JSON.stringify(this.wgintconfig))\n //console.log('CONFIG '+JSON.stringify(action))\n }else{\n this.wgintconfig.network_mode = false\n //console.log('CONFIG2 '+JSON.stringify(this.wgintconfig))\n //console.log('CONFIG '+JSON.stringify(action))\n }\n if(action.dismiss != 'close'){\n this.$wait.start('myRunwg');\n var logsave = await store.dispatch(\"pipelineLLO/hybrid_join_start\",this.wgintconfig)\n this.$wait.end('myRunwg');\n // run local\n if(logsave.data.action == \"ok\"){\n this.$wait.start('myRunwg');\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"connect\",\n bootstrapstackid: this.server_wg_bootstrapstackid\n })\n\n this.$wait.end('myRunwg');\n this.refreshVuetable()\n }else{\n var info=`<h5>I cannot make Virtual Network up and running</h5> <br> <p>I've seen it suggested docker may be at its maximum of created networks </p>\n <p> The command <b>\"docker network prune\"</b> can be used to remove all networks not used by at least one container </p> or <br><br>\n <p>I ran into this problem because OpenVPN is currently running</p>\n `\n this.$swal({\n type: 'Info',\n title: 'Error',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n }\n },\n async onActionHybrid_stackrm(action) {\n //console.log(JSON.stringify(action))\n if(action.isConfirmed){\nthis.$wait.start('myRunwg');\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"disconnect\",\n bootstrapstackid: this.hybridshowdata.bootstrapstackid\n })\n\nthis.$wait.end('myRunwg');\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n //Vue.delete(this.testactionrowindex, this.hybridshowdata.bootstrapnameid)\n this.refreshVuetable()\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 var names = {}\n names.Names = `swarmlabwg-${data.bootstrapstackid}`\n var v = {}\n var namesdir = {}\n namesdir.dir = data.dir = '/tmp'\n v.s = names\n v.c = namesdir\n this.$socket.client.emit('virtual_net_info', v);\n console.log('socket '+JSON.stringify(data))\n console.log('socket '+JSON.stringify(v))\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'run-more' ){\n this.hybridshowdata = data\n //console.log('hybrid '+JSON.stringify(data))\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey1 += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n if( response.data.data ){\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 }else{\n\t\t\t\tvar data = ''\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n }\n //console.log('data1 '+JSON.stringify(response))\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n console.log('error2 '+JSON.stringify(payload.response.data.error))\n console.log('error2 '+JSON.stringify(payload.response.data.error_description))\n console.log('error2 '+JSON.stringify(payload.response.statusText))\n console.log('error2 '+JSON.stringify(payload.response.status))\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t},\n sockets: {\n async virtual_net_info_res(val) {\n console.log('container info '+JSON.stringify(val))\n //var d = JSON.parse(val.data)\n var d = val.data\n console.log('container info1 '+JSON.stringify(d))\n console.log(d[0])\n console.log(d[0].ifname)\n console.log(d[0])\n console.log(d[1])\n\n var infotable = '<table class=\"table table-striped\">'\n infotable += `<tr>`\n infotable += `<td>Interface</td>`\n infotable += `<td>IP</td>`\n infotable += `<td>Mask</td>`\n infotable += `</tr>`\n for (var i=0 ; i < d.length ; i++)\n {\n infotable += `<tr>`\n infotable += `<td>${d[i].ifname}</td>`\n infotable += `<td>${d[i].addr_info[0][\"local\"]}</td>`\n infotable += `<td>${d[i].addr_info[0][\"prefixlen\"]}</td>`\n infotable += `</tr>`\n \n }\n infotable += '</table>'\n\n this.virtualnetinfo = `<h5>Network Interfaces</h5><div style=\"text-align:left;\"> ${infotable}</div><br>`\n //console.log('container info '+JSON.stringify(this.virtualnetinfo))\n\n },\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=55c952f5&\"\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-4 order-last \"},[_c('br'),_c('myconnect-manage-shared')],1),_c('div',{staticClass:\"col-8 order-first \"},[_c('br'),_c('myconnect-show-shared')],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('v-wait',{attrs:{\"for\":\"myRunshare\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Share app...\\n \")])])],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-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.hybridshowdata.Names)?_c('b-dropdown',{attrs:{\"size\":\"sm\",\"text\":\"Share\",\"variant\":\"btn btn-outline-success\"},on:{\"change\":_vm.changeItem},model:{value:(_vm.ddTestVm.ddTestSelectedOption),callback:function ($$v) {_vm.$set(_vm.ddTestVm, \"ddTestSelectedOption\", $$v)},expression:\"ddTestVm.ddTestSelectedOption\"}},[_c('b-dropdown-item',{attrs:{\"disabled\":\"\",\"value\":\"0\"}},[_vm._v(\"Select Network\")]),_vm._l((_vm.ddTestVm.options),function(option){return _c('b-dropdown-item',{key:option.value,attrs:{\"value\":option.value},on:{\"click\":function($event){return _vm.onselect(option.value)}}},[_vm._v(\"\\n \"+_vm._s(option.text)+\"\\n \")])})],2):_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\"\\n Connect\")]),(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.ondefault('container-default')}}},[_vm._v(\"\\n Default\")]):_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\"\\n Default\")])],1),_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-info')}}},[_vm._v(\"\\n Info\")]):_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\",\"disabled\":\"\"}},[_vm._v(\"\\n Info\")])])])]),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_vm._v(\"\\n ID \\n \")]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.ID)+\"\\n \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_vm._v(\"\\n Image \\n \")]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.Image)+\"\\n \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_vm._v(\"\\n Names\\n \")]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.Names)+\"\\n \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_vm._v(\"\\n RunningFor\\n \")]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.RunningFor)+\"\\n \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_vm._v(\"\\n Status\\n \")]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.Status)+\"\\n \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_vm._v(\"\\n CreatedAt\\n \")]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.CreatedAt)+\"\\n \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 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(\"\\n Networks\")]):_c('button',{staticClass:\"btn btn-outline-success btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\"\\n Shared \")])]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.Networks)+\"\\n \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_vm._v(\"\\n Ports\\n \")]),_c('div',{staticClass:\"col-9 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.Ports)+\"\\n \")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n\n <v-wait for=\"myRunshare\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Share app...\n </div>\n </template>\n </v-wait>\n\n\n <b-container fluid class=\"bv-example-row\">\n<!-- MENOU -->\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\n <b-dropdown \n v-if=\"hybridshowdata.Names\"\n v-model=\"ddTestVm.ddTestSelectedOption\"\n size=\"sm\" \n text=\"Share\"\n variant=\"btn btn-outline-success\"\n v-on:change=\"changeItem\">\n <b-dropdown-item disabled value=\"0\">Select Network</b-dropdown-item>\n <b-dropdown-item \n v-for=\"option in ddTestVm.options\" \n :key=\"option.value\" \n :value=\"option.value\"\n @click=\"onselect(option.value)\"\n >\n {{option.text}}\n </b-dropdown-item> \n </b-dropdown> \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\n\n\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"ondefault('container-default')\"\n >\n Default</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 Default</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-info')\"\n >\n Info</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 Info</button>\n </div>\n </div>\n<!-- MENOU -->\n\n </b-container>\n\n<!-- MENOUDESC -->\n <b-container fluid>\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n ID \n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.ID }}\n </div>\n </div>\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n Image \n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.Image }}\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n Names\n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.Names }}\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n RunningFor\n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.RunningFor }}\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n Status\n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.Status }}\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n CreatedAt\n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.CreatedAt }}\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" >\n\n <div class=\"col-3 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-else\n class=\"btn btn-outline-success btn-sm\"\n round\n type=\"button\"\n >\n Shared </button>\n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.Networks }}\n </div>\n </div>\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n Ports\n </div>\n <div class=\"col-9 text-secondary\" >\n {{ hybridshowdata.Ports }}\n </div>\n </div> <!-- row -->\n </b-container>\n<!-- MENOUDESC -->\n\n\n\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nimport { extend } from 'vee-validate';\nimport { required, alpha_num } from 'vee-validate/dist/rules';\n\n// No message specified.\nextend('alpha_num', alpha_num);\n\n// Override the default message.\nextend('required', {\n ...required,\n message: 'This field is required'\n});\n\nexport default {\n components: {\n card\n },\n data () {\n return {\n loading: false,\n addNetworkMenou:false,\n // info for network\n dockercompose:{}, // dockercompose app info\n webinterface:{}, \n hybridshowdata:{}, // app info from table\n virtualnetwork:{}, // network to attache \n virtualnetworkinfo:'',\n virtualportinfo:{\n ports:''\n },\n ddTestVm: {\n originalValue: [],\n ddTestSelectedOption: \"Value1\",\n disabled: false,\n readonly: false,\n visible: true,\n color: \"\",\n options: []\n }\n }\n },\n methods: {\n changeItem(val){\n },\n onselect(val){\n this.$wait.start('myRunshare');\n this.virtualnetwork.network = val\n var v = {}\n v.s = this.hybridshowdata\n v.c = this.dockercompose\n v.n = this.virtualnetwork.network\n this.$socket.client.emit('share_app', v);\n console.log('share '+ JSON.stringify(val))\n },\n ondefault(val){\n this.$wait.start('myRunshare');\n var v = {}\n v.s = this.hybridshowdata\n v.c = this.dockercompose\n v.n = this.virtualnetwork.network\n this.$socket.client.emit('share_app_default', v);\n console.log('default '+ JSON.stringify(val))\n },\n\t\trefreshsharedtable () {\n this.$root.$emit('venus_shared_apps_refresh')\n },\n async onAction (action, data, index) {\n\t\t\tif(action == 'container-connect' ){\n\n/*\n var v = {}\n v.s = this.hybridshowdata\n v.c = this.dockercompose\n this.$socket.client.emit('share_app', v);\n console.log('index '+JSON.stringify(v))\n*/\n\t\t\t}else if(action == 'container-default' ){\n\t\t\t}else if(action == 'container-info' ){\n var v = {}\n v.s = this.hybridshowdata\n v.c = this.dockercompose\n console.log(v)\n this.$socket.client.emit('container_info', v);\n\t\t\t}\n },\n },\n mounted() {\n\t\tthis.$root.$on('venus_shared_apps_menou', (data) => {\n this.hybridshowdata = data\n this.addNetworkMenou = false\n this.$socket.client.emit('share_app_info', this.hybridshowdata);\n var v = {}\n v.name = data.Names\n this.$socket.client.emit('virtual_port_getinfo', v);\n\t\t})\n },\n beforeDestroy () {\n this.$root.$off('venus_shared_apps_menou')\n },\n\n\n created () {\n },\n sockets: {\n async virtual_port_info_res(val) {\n console.log('container ports '+JSON.stringify(val))\n var lines = val.data.split(/\\r\\n|\\n\\r|\\n|\\r/);\n var portsinfo = '<br><b>Open Ports</b><br><table class=\"table table-striped\">'\n for (var i=0 ; i < lines.length ; i++){\n portsinfo += `<tr>`\n portsinfo += `<td>${lines[i]}</td>`\n portsinfo += `</tr>`\n }\n portsinfo += `</table>`\n this.$set(this.virtualportinfo, 'ports', portsinfo)\n },\n async virtual_port_info_reserror(val) {\n console.log('container port error '+JSON.stringify(val))\n },\n async container_info_reserror(val) {\n console.log('container infoerror '+JSON.stringify(val))\n var info = `<h5>Network Interfaces</h5><div style=\"text-align:center;\"> \n <b>cannot find information for this service</b>\n <br>\n <br>\n Open a terminal and try the following commands:\n <br>\n <br>\n <p class=\"text-success\">\n ${val.command}\n </p>\n </div><br>`\n this.$swal({\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 async container_info_res(val) {\n console.log('container info '+JSON.stringify(val))\n var d = JSON.parse(val.data)\n console.log('container info1 '+JSON.stringify(d))\n\n var infotable = '<table class=\"table table-striped\">'\n infotable += `<tr>`\n infotable += `<td>Interface</td>`\n infotable += `<td>IP</td>`\n infotable += `<td>Mask</td>`\n infotable += `</tr>`\n var netipjupyter=''\n var netipeth0=''\n for (var i=0 ; i < d.length ; i++)\n {\n infotable += `<tr>`\n infotable += `<td>${d[i].ifname}</td>`\n infotable += `<td>${d[i].addr_info[0].local}</td>`\n infotable += `<td>${d[i].addr_info[0].prefixlen}</td>`\n infotable += `</tr>`\n var grep = new RegExp('swlab');\n if(grep.test(d[i].ifname)){\n netipjupyter = d[i].addr_info[0].local\n }\n var grepeth0 = new RegExp('eth0');\n if(grepeth0.test(d[i].ifname)){\n netipeth0 = d[i].addr_info[0].local\n }\n \n }\n infotable += '</table>'\n\n if(val.jupyter){\n var dd = JSON.parse(val.jupyter)\n var infotable1 = '<table class=\"table table-striped\">'\n var jupyterurl = `<a href=\"http://0.0.0.0:8888/lab?token=${dd.token}\" target=\"_new\">click here to go to Jupyter</a>`\n\n infotable1 += `<tr>`\n infotable1 += `<td><b>URL to connect to Jupyter</b></td>`\n infotable1 += `</tr>`\n infotable1 += '</table>'\n\n infotable1 += `replace <b>0.0.0.0</b> with ip address from <b>eth0</b>`\n infotable1 += `<br>try to find</br>`\n infotable1 += `<span><pre>http://${netipeth0}:8888/lab?token=${dd.token}</pre></span>`\n\n infotable1 += `<br>`\n infotable1 += '<table class=\"table table-striped\"'\n infotable1 += `<tr>`\n infotable1 += `<td><b>URL to send to participants</b></td>`\n infotable1 += `</tr>`\n infotable1 += '</table>'\n infotable1 += `<br>replace <b>0.0.0.0</b> with ip address from <b>swlab*</b>`\n infotable1 += `<br>try to find</br>`\n infotable1 += `<span><pre>http://${netipjupyter}:8888/lab?token=${dd.token}</span></pre>`\n console.log('container info2 '+JSON.stringify(dd))\n var info = `<h5>Network Interfaces</h5><div style=\"text-align:left;\"> ${infotable}</div><br> ${jupyterurl} <br><br> ${infotable1} <br><h5>${this.virtualportinfo.ports}</h5>`\n }else{\n var info = `<h5>Network Interfaces</h5><div style=\"text-align:left;\"> ${infotable}</div><br> <h5>${this.virtualportinfo.ports}</h5>`\n }\n console.log('container info1 '+JSON.stringify(info))\n this.$swal({\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 async share_app_exec_res(val) {\n console.log('exec data'+JSON.stringify(val))\n if(val.exec == \"sharedefault\"){\n console.log('exec default '+JSON.stringify(val))\n }else{\n console.log('exec no default '+JSON.stringify(val))\n }\n },\n async share_app_exec_resclose(val) {\n \n if(val.compose == \"no\"){\n console.log('exec no compose '+JSON.stringify(val))\n }else{\n console.log('exec yes compose '+JSON.stringify(val))\n }\n this.refreshsharedtable()\n this.$wait.end('myRunshare');\n },\n async share_app_exec_reserror(val) {\n console.log('exec error '+JSON.stringify(val))\n },\n async share_app_res(val) {\n if(val.exec == 'inspect'){\n var parsedata = JSON.parse(val.data)\n this.dockercompose.stack = parsedata['com.docker.compose.project']\n this.dockercompose.service = parsedata['com.docker.compose.service']\n this.dockercompose.file = parsedata['com.docker.compose.project.config_files']\n this.dockercompose.env = parsedata['com.docker.compose.project.environment_file']\n this.dockercompose.dir = parsedata['com.docker.compose.project.working_dir']\n console.log(val)\n } else if(val.exec == 'ps'){\n console.log('--- '+JSON.stringify(val.data))\n var datalenth = val.data.length\n this.ddTestVm.options = [] \n for (var i=0 ; i < datalenth ; i++)\n {\n this.ddTestVm.options.push({\n \"value\": val.data[i].Names,\n \"text\": val.data[i].Networks\n })\n }\n }else{\n console.log(val)\n }\n },\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!./manage-shared.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-shared.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manage-shared.vue?vue&type=template&id=84ad277e&\"\nimport script from \"./manage-shared.vue?vue&type=script&lang=js&\"\nexport * from \"./manage-shared.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:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/share2-512.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Lab_room...\\n \")])])],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(\"Share your running Containers\")])])]),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setRefresh}},[_vm._v(\"\\n Refresh table\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search by Name\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\"\\n\\t\\t\\t\\t\\tGo\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\"\\n\\t\\t\\t\\t\\tReset\")])])]),_c('vuetable',{key:_vm.vuetablekeybshared,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 }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/share2-512.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 class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Share your running Containers</b>\n </div>\n </div>\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-info\" \n round\n type=\"button\"\n @click=\"setRefresh\">\n Refresh table</button>\n </div>\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search by Name\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekeybshared\"\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 {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\tvuetablekeybshared: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 callback: value => {\n const result = /^microservice/.test(value);\n if (result) {\n var v = `<p class=\"text-info\">${value}</p>`\n return v\n }else{\n var v = `<p class=\"text-secondary\">${value}</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: '5%'\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('venus_shared_apps_refresh', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n\t},\n beforeDestroy () {\n this.$root.$off('venus_shared_apps_refresh')\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\t\t\tif(action == 'run-more' ){\n this.$root.$emit('venus_shared_apps_menou',data)\n console.log('index '+JSON.stringify(data))\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.vuetablekeybshared += 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 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 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-shared-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!./manage-shared-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manage-shared-view.vue?vue&type=template&id=0cc85ef8&\"\nimport script from \"./manage-shared-view.vue?vue&type=script&lang=js&\"\nexport * from \"./manage-shared-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./manage-shared-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-4 order-last \" >\n <br>\n <myconnect-manage-shared>\n\n </myconnect-manage-shared>\n </div>\n <div class=\"col-8 order-first \" >\n <br>\n <myconnect-show-shared>\n\n </myconnect-show-shared>\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 MyconnectManageShared from \"./manageservices/manage-shared.vue\";\nimport MyconnectShowShared from \"./manageservices/manage-shared-view.vue\";\nexport default {\n components: {\n //AdhocView,\n card,\n MyconnectShowShared,\n MyconnectManageShared\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!./manageshared.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!./manageshared.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manageshared.vue?vue&type=template&id=29507412&\"\nimport script from \"./manageshared.vue?vue&type=script&lang=js&\"\nexport * from \"./manageshared.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-volume-view')],1),_c('div',{staticClass:\"col-6 order-last\"},[_c('br'),_c('myclient-volume')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 order-first \"},[_c('my-volume-serve')],1),_c('div',{staticClass:\"col-6 order-last \"},[_c('my-volume-client')],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('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Stop sharing...\\n \")])])],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(\"My shared Volumes \"),_c('span',{staticClass:\"taxt-info\"})])])]),_c('vuetable',{key:_vm.vuetablekeybsharedvolumeserver,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-info btn btn-info btn-sm\",attrs:{\"title\":\"Show directory\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('info', props.rowData, props.rowIndex)}}}),_c('button',{staticClass:\"ti-trash btn btn-outline-info btn-sm\",attrs:{\"title\":\"Stop sharing\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('stopserver', 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('div',{staticClass:\"card text-white bg-secondary mb-3\",staticStyle:{\"max-height\":\"100%\"}},[_c('v-wait',{attrs:{\"for\":\"myRunsharevolume\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Create Volume...\\n \")])])],2),_c('b-container',{staticClass:\"container\"},[_c('br'),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('ValidationProvider',{ref:\"deploy_stackname\",attrs:{\"name\":\"VolumeName\",\"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\":\"Volume Name\"},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-cloud-up btn btn-info\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Deploy\"},on:{\"click\":function($event){return _vm.add_deploy()}}},[_vm._v(\" Create Volume\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"5\"}},[_c('b',[_vm._v(\"Network:\")]),_c('span',{staticClass:\"text-white\"},[_vm._v(\" \"+_vm._s(_vm.networklabel)+\" \")])]),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"custom-control custom-radio custom-control-inline\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.readwrite),expression:\"deploy.readwrite\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"radio\",\"id\":\"customRadioInline1readwrite1\",\"name\":\"customRadioInline1readwrite1\",\"value\":\"read\"},domProps:{\"checked\":_vm.deploy.readwrite == 'read',\"checked\":_vm._q(_vm.deploy.readwrite,\"read\")},on:{\"click\":function($event){return _vm.onselectrw('read')},\"change\":function($event){return _vm.$set(_vm.deploy, \"readwrite\", \"read\")}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"customRadioInline1readwrite1\"}},[_vm._v(\"Read\")])]),_c('div',{staticClass:\"custom-control custom-radio custom-control-inline\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.readwrite),expression:\"deploy.readwrite\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"radio\",\"id\":\"customRadioInline1readwrite2\",\"name\":\"customRadioInline1readwrite2\",\"value\":\"write\"},domProps:{\"checked\":_vm.deploy.readwrite == 'write',\"checked\":_vm._q(_vm.deploy.readwrite,\"write\")},on:{\"click\":function($event){return _vm.onselectrw('write')},\"change\":function($event){return _vm.$set(_vm.deploy, \"readwrite\", \"write\")}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"customRadioInline1readwrite2\"}},[_vm._v(\"Write\")])])]),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Close menou\"},on:{\"click\":function($event){return _vm.close_deploy()}}},[_vm._v(\" Close menu\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])])],1),_c('br')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"card text-white bg-secondary mb-3\" style=\"max-height:100%\">\n\n <v-wait for=\"myRunsharevolume\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Create Volume...\n </div>\n </template>\n </v-wait>\n\n <b-container class=\"container\">\n <br>\n <b-row>\n <b-col cols=\"12\">\n\t\t\t\t\t<ValidationProvider\n ref=\"deploy_stackname\"\n\t\t\t\t\t\tname=\"VolumeName\"\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=\"Volume Name\"\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\t\tclass=\"ti-cloud-up btn btn-info\"\n\t\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Deploy\"\n \t\t\t\t\t\t\t\t\t\t\t@click=\"add_deploy()\"\n\t\t\t\t\t\t\t\t\t\t\t> Create Volume\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=\"5\">\n <b>Network:</b> <span class=\"text-white\"> {{ networklabel }} </span>\n </b-col>\n <b-col cols=\"4\">\n\t\t\t\t\t\t\t<div class=\"custom-control custom-radio custom-control-inline\">\n\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"customRadioInline1readwrite1\" name=\"customRadioInline1readwrite1\" class=\"custom-control-input\" \n :checked=\"deploy.readwrite == 'read'\"\n value=\"read\"\n v-model=\"deploy.readwrite\"\n\t\t\t\t\t\t\t\t @click=\"onselectrw('read')\"\n >\n\t\t\t\t\t\t\t\t<label class=\"custom-control-label\" for=\"customRadioInline1readwrite1\">Read</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"custom-control custom-radio custom-control-inline\">\n\t\t\t\t\t\t\t\t<input type=\"radio\" id=\"customRadioInline1readwrite2\" name=\"customRadioInline1readwrite2\" class=\"custom-control-input\"\n :checked=\"deploy.readwrite == 'write'\"\n value=\"write\"\n v-model=\"deploy.readwrite\"\n\t\t\t\t\t\t\t\t @click=\"onselectrw('write')\"\n >\n\t\t\t\t\t\t\t\t<label class=\"custom-control-label\" for=\"customRadioInline1readwrite2\">Write</label>\n\t\t\t\t\t\t\t</div>\n </b-col>\n <b-col cols=\"3\">\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=\"btn btn-outline-warning btn-sm\"\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=\"Close menou\"\n \t\t\t\t\t\t\t\t\t\t\t@click=\"close_deploy()\"\n\t\t\t\t\t\t\t\t\t\t\t> Close menu\n\t\t\t\t\t\t\t\t\t\t\t</button>\n </b-col>\n\n </b-row>\n <br>\n </b-container>\n\n </div>\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 if(value.length < 16){\n var regex = new RegExp(/^[A-Za-z0-9\\_\\.\\-]+$/, 'i'); \n if(regex.test(value)){\n return true;\n }\n }\n return 'The {_field_} field may contain alphabetic characters, hyphens, dots and numbers (< 16 )'\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\"readwrite\":'read'\n },\n isDeployValid:{\n \t\t\"stackname\":3\n\t },\n wgserverup:'',\n wgserversettings:'',\n isDeployError:{\n\t },\n\t\t\tnetwork: {\n\t\t\t\toptions: []\n\t\t\t},\n networklabel:''\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('wg_view_network_refresh', (v) => {\n this.network.network = v.Names\n this.networklabel = v.Networks\n console.log(' -from table raw1 '+JSON.stringify(v))\n console.log(' -from table raw1 '+JSON.stringify(this.network))\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\t this.$root.$off('wg_view_network_refresh')\n },\n computed: {\n\t},\n\n methods: {\n onselectrw(val){\n this.$set(this.deploy, 'readwrite', val)\n },\n onselectclick(val){\n console.log(' - '+JSON.stringify(this.network))\n\t\t},\n \tasync close_deploy(){\n this.$root.$emit('venus_shared_volume_add_close')\n },\n \tasync add_deploy(){\n \n console.log(' select '+JSON.stringify(this.deploy))\n \n\t\t\tvar o = Object.entries(this.deploy)\n\t\t\tvar pvalid = new Promise((resolve, reject) => {\n\t\t\t\to.forEach((value, index, array) => {\n\t\t\t\t\t\tthis.isValid(array[index][0])\n\t\t\t\t\t\tif (index === array.length -1) resolve();\n\t\t\t\t});\n\t\t\t});\n\n\t\tpvalid.then(() => {\n (async () => {\n var isAllValid = true\n var isAllDateValid = true\n\t\t\t\t\tfor (const [key, value] of Object.entries(this.isDeployValid)) {\n\t\t\t\t\t\tconsole.log(`${key}: ${value}`);\n\t\t\t\t\t\tif(value != 1){\n isAllValid = false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(isAllValid && isAllDateValid){ \n \n var myvpn = {}\n myvpn.options = this.deploy.readwrite\n myvpn.stackname = this.deploy.stackname\n myvpn.network = this.network.network\n this.$socket.client.emit('share_volume', myvpn);\n this.$wait.start('myRunsharevolume');\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 == 'Networkname' ){\n var info=`<h5>To start, first put a <b>name</b> or something that gives away the subject of your project.\n </h5>\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>Network 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, numbers, hyphens, dots and underscores\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 == 'stackname'){\n\t\t\t var field = await this.$refs.deploy_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 }\n }\n\n },\n\n\n actions: {\n\n\n\t},\n sockets: {\n async share_volume_res(val) {\n console.log('volumes socke '+JSON.stringify(val))\n },\n async share_volume_res_resclose(val) {\n console.log('volumes sockeit clos '+JSON.stringify(val))\n if(val.shareinfo){\n var obj1 = {}\n obj1.shareinfo = val.shareinfo\n obj1.network = val.network\n var res1 = await store.dispatch('pipelineLLO/setsharevolume', obj1)\n console.log(JSON.stringify(res1));\n //close menou \n this.$root.$emit('venus_shared_volume_add_close')\n // refresh table volume my refresh\n this.$root.$emit('venus_shared_volume_refresh')\n // refresh table volumes from client\n var v = {}\n v.Names = val.shareinfo.stackid\n this.$root.$emit('wg_view_volume_refresh',v)\n }\n this.$wait.end('myRunsharevolume');\n },\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-volume.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-volume.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./deploy-volume.vue?vue&type=template&id=96c760f2&\"\nimport script from \"./deploy-volume.vue?vue&type=script&lang=js&\"\nexport * from \"./deploy-volume.vue?vue&type=script&lang=js&\"\nimport style0 from \"./deploy-volume.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\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Stop sharing...\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>My shared Volumes <span class=\"taxt-info\"></span></b>\n </div>\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=\"vuetablekeybsharedvolumeserver\"\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-info btn btn-info btn-sm\"\n title=\"Show directory\"\n round\n @click=\"onAction('info', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-trash btn btn-outline-info btn-sm\"\n title=\"Stop sharing\"\n round\n @click=\"onAction('stopserver', 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 MyVolume from \"./deploy-volume.vue\";\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n MyVolume,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n actionrowindex:'',\n actionrowindex1:'',\n actionaddshare:false,\n actionshowshare:false,\n stopsharevolumeinfo:[],\n stopclientvolumeconnection:'',\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\tvuetablekeybsharedvolumeserver: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: '65%'\n },\n {\n name: 'Networks',\n title: '<span class=\"orange\"></span>Network',\n //sortField: 'Image',\n visible:false,\n dataClass: 'left aligned w-25',\n width: '15%',\n callback: value => {\n const result = /^wgshare-/.test(value);\n if (result) {\n var v = `<p class=\"text-info\">${value}</p>`\n return v\n }else{\n var v = `<p class=\"text-secondary\">${value}</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: '15%'\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+\"/getshare_volumes\",\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('venus_shared_volume_refresh', () => {\n this.refreshVuetable()\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n\t},\n beforeDestroy () {\n this.$root.$off('venus_shared_volume_refresh')\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\t\t\tif(action == 'info' ){\n this.actionrowindex = index\n this.actionshowshare = true\n console.log('index '+JSON.stringify(data))\n this.$socket.client.emit('info_nfsservervolume', data.Names);\n\t\t\t}else if(action == 'stopserver' ){\n this.actionrowindex = index\n this.actionshowshare = true\n console.log('index '+JSON.stringify(data))\n this.stopclientvolumeconnection = data.Names\n var info='<h5>Stop shared volume for <b> '+ data.Names +'</b> <br><br> Users and networks 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 this.onAction_rm(result);\n })\n //this.$socket.client.emit('stop_share_volume', data.Names);\n\t\t\t}else if(action == 'add-more' ){\n this.actionrowindex1 = index\n this.actionaddshare = true\n\t\t\t}\n },\n async onAction_rm(action) {\n if(action.isConfirmed){\n this.$wait.start('myRunInstancetutor');\n this.$socket.client.emit('stop_share_volume', this.stopclientvolumeconnection);\n }\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeybsharedvolumeserver += 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 if(response.data != null){\n\t\t\t\t var data = response.data.data\n\t\t\t\t this.fielddata=data\n\t\t\t\t var n = data.length\n\t\t\t\t n=n-1\n }\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 actions: {\n\n\n\t},\n sockets: {\n async info_nfsservervolume_res_resclose(val) {\n console.log('volumes info '+JSON.stringify(val.data))\n for (var i=0 ; i < val.data.length ; i++){\n console.log(val.data[i])\n if(val.data[i].Destination == '/data'){\n this.info_nfsvolume = val.data[i].Source\n var info=`<h3>Shared volume</h3><p class=\"text-success align-left\"><pre>${this.info_nfsvolume}</pre></p>`\n this.$swal({\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 break;\n }else{\n }\n }\n },\n async stop_share_volume_res(val) {\n console.log('volumes stop_share_volume_res '+JSON.stringify(val))\n this.stopsharevolumeinfo.push(val)\n },\n async stop_share_volume_res_resclose(val) {\n this.$wait.end('myRunInstancetutor');\n this.refreshVuetable()\n },\n }\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-volume-localserver-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!./manage-volume-localserver-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manage-volume-localserver-view.vue?vue&type=template&id=ab43616e&\"\nimport script from \"./manage-volume-localserver-view.vue?vue&type=script&lang=js&\"\nexport * from \"./manage-volume-localserver-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./manage-volume-localserver-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","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\":\"myRunInstancetutormountumount\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Lab_room...\\n \")])])],2),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutormountumount1\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Disconnect...\\n \")])])],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(\"My Connections on Shared volumes\")])])]),_c('vuetable',{key:_vm.vuetablekeybsharedvolumeclient,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-info btn btn-info btn-sm\",attrs:{\"title\":\"Show directory\",\"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\":\"Show directory\",\"round\":\"\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}),(_vm.testactionrowindex[props.rowData.Names])?_c('button',{staticClass:\" ti-cloud-down btn btn-success btn-sm\",attrs:{\"title\":\"unmount Shared Volume\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-umount', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-cloud btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"mount Shared Volume\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-mount', props.rowData, props.rowIndex)}}}),_c('button',{staticClass:\"ti-trash btn btn-outline-info btn-sm\",attrs:{\"title\":\"Disconnect from server\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('stopclient', 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=\"myRunInstancetutormountumount\">\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 <v-wait for=\"myRunInstancetutormountumount1\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Disconnect...\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>My Connections on Shared volumes</b>\n </div>\n </div>\n\n\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekeybsharedvolumeclient\"\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-info btn btn-info btn-sm\"\n title=\"Show directory\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Show directory\"\n round\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-if=\"testactionrowindex[props.rowData.Names]\"\n class=\" ti-cloud-down btn btn-success btn-sm\"\n title=\"unmount Shared Volume\"\n round\n @click=\"onAction('run-umount', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-cloud btn btn-outline-secondary btn-sm\"\n title=\"mount Shared Volume\"\n round\n @click=\"onAction('run-mount', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-trash btn btn-outline-info btn-sm\"\n title=\"Disconnect from server\"\n round\n @click=\"onAction('stopclient', 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 MyVolume from \"./deploy-volume.vue\";\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n MyVolume,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n actionrowindex:'',\n actionrowindex1:'',\n actionaddshare:false,\n actionshowshare:false,\n\t playbookInfo: {},\n testactionrowindex:{},\n info_nfsvolume:'',\n stopsharevolumeinfo:[],\n stopclientvolumeconnection:'',\n nfsinfo:{},\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\tvuetablekeybsharedvolumeclient: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 callback: value => {\n (async() => {\n\t\t var r = await this.checkactionrowindex(value)\n if(r.data.data == 'yes'){\n this.$set(this.testactionrowindex, value, true)\n console.log('1 '+ this.testactionrowindex)\n }else{\n this.$set(this.testactionrowindex, value, false)\n console.log('0 '+this.testactionrowindex)\n }\n })()\n return value\n }\n },\n {\n name: 'Networks',\n title: '<span class=\"orange\"></span>Network',\n //sortField: 'Image',\n visible:false,\n dataClass: 'left aligned w-25',\n width: '15%',\n callback: value => {\n return value\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: '15%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/getshare_clientvolumes\",\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('venus_shared_clientvolume_refresh', (v) => {\n this.nfsinfo = v \n this.refreshVuetable()\n\t\t})\n\t\tthis.$root.$on('wg_view_network_refresh', (v) => {\n this.refreshVuetable()\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n\t},\n beforeDestroy () {\n this.$root.$off('venus_shared_clientvolume_refresh')\n this.$root.$off('wg_view_network_refresh')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\tasync checkactionrowindex(value){\n var obj1 = {}\n obj1.name = `${value}`\n var res1 = await store.dispatch('pipelineLLO/getservicesmountstatus', obj1)\n return res1 \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\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\t\t\tif(action == 'run-more' ){\n this.actionrowindex = index\n this.actionshowshare = true\n console.log('index '+JSON.stringify(data))\n this.$socket.client.emit('info_nfsvolume', data.Names);\n\t\t\t}else if(action == 'run-mount' ){\n this.$wait.start('myRunInstancetutormountumount');\n this.actionrowindex1 = index\n this.actionaddshare = true\n console.log('run mount '+JSON.stringify(data))\n this.$socket.client.emit('mount_nfsvolume', data.Names);\n\t\t\t}else if(action == 'run-umount' ){\n this.$wait.start('myRunInstancetutormountumount');\n this.actionrowindex1 = index\n this.actionaddshare = true\n console.log('run umount '+JSON.stringify(data))\n this.$socket.client.emit('umount_nfsvolume', data.Names);\n\t\t\t}else if(action == 'stopclient' ){\n this.stopclientvolumeconnection = data.Names\n var info='<h5>Disconnect from <b> '+ data.Names +'</b> <br><br> Users and networks 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 this.onAction_rm(result);\n })\n this.actionrowindex = index\n this.actionshowshare = true\n console.log('index '+JSON.stringify(data))\n\t\t\t}\n },\n async onAction_rm(action) {\n if(action.isConfirmed){\n this.$wait.start('myRunInstancetutormountumount1');\n this.$socket.client.emit('stop_client_volume_connection', this.stopclientvolumeconnection);\n }\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeybsharedvolumeclient += 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 if(response.data != null){\n\t\t\t\t var data = response.data.data\n\t\t\t\t this.fielddata=data\n\t\t\t\t var n = data.length\n\t\t\t\t n=n-1\n }\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 actions: {\n\n\n\t},\n sockets: {\n async mount_nfsvolume_res_resclose(val) {\n console.log('volumes socke '+JSON.stringify(val))\n this.refreshVuetable()\n this.$wait.end('myRunInstancetutormountumount');\n },\n async info_nfsvolume_res_resclose(val) {\n console.log('volumes info '+JSON.stringify(val))\n if(val.mount == 'yes'){\n console.log('mount = yes '+JSON.stringify(val.data))\n for (var i=0 ; i < val.data.length ; i++){\n if(val.data[i].Destination == '/mnt/share'){\n this.info_nfsvolume = val.data[i].Source\n var info=`<h3>Mounted on</h3><p class=\"text-success align-left\"><pre>${this.info_nfsvolume}</pre></p>`\n this.$swal({\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 break;\n }\n }\n }else if(val.mount == 'no'){\n var info=`<h3>List of currently mounted volumes are empty </h3><p class=\"text-secondary align-left\">Please use <span class=\"ti-cloud text-info\"></span> to mount one</p>`\n this.$swal({\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 async stop_client_volume_connection_res(val) {\n console.log('volumes stop_share_volume_res '+JSON.stringify(val))\n this.stopsharevolumeinfo.push(val)\n },\n async stop_client_volume_connection_res_resclose(val) {\n this.$wait.end('myRunInstancetutormountumount1');\n this.refreshVuetable()\n },\n }\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-volume-localclient-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!./manage-volume-localclient-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manage-volume-localclient-view.vue?vue&type=template&id=123fea54&\"\nimport script from \"./manage-volume-localclient-view.vue?vue&type=script&lang=js&\"\nexport * from \"./manage-volume-localclient-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./manage-volume-localclient-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","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/share2-512.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Lab_room...\\n \")])])],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(\"Virtual networks\")])])]),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setRefresh}},[_vm._v(\"\\n Refresh table\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search by Name\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\"\\n\\t\\t\\t\\t\\tGo\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\"\\n\\t\\t\\t\\t\\tReset\")])])]),_c('vuetable',{key:_vm.vuetablekeybsharedvolume,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-eye btn btn-secondary btn-sm\",attrs:{\"title\":\"Network Shared Volumes\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-eye btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}),(_vm.actionrowindex1 == props.rowIndex)?_c('button',{staticClass:\"ti-share btn btn-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('add-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-share btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('add-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),_c('br'),_c('my-volume',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.actionaddshare),expression:\"actionaddshare\"}]})],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/share2-512.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 class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Virtual networks</b>\n </div>\n </div>\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-info\" \n round\n type=\"button\"\n @click=\"setRefresh\">\n Refresh table</button>\n </div>\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search by Name\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekeybsharedvolume\"\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-eye btn btn-secondary btn-sm\"\n title=\"Network Shared Volumes\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-eye btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-if=\"actionrowindex1 == props.rowIndex\"\n class=\"ti-share btn btn-secondary btn-sm\"\n round\n @click=\"onAction('add-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-share btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('add-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 <br>\n <my-volume\n v-show=\"actionaddshare\"\n >\n\n </my-volume>\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 MyVolume from \"./deploy-volume.vue\";\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n MyVolume,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n actionrowindex:'',\n actionrowindex1:'',\n actionaddshare:false,\n actionshowshare:false,\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\tvuetablekeybsharedvolume: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: 'Networks',\n title: '<span class=\"orange\"></span>Network',\n //sortField: 'Image',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '15%',\n callback: value => {\n const result = /^microservice/.test(value);\n if (result) {\n var v = `<p class=\"text-info\">${value}</p>`\n return v\n }else{\n var v = `<p class=\"text-secondary\">${value}</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: '15%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/hybridnetworks\",\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('venus_shared_apps_refresh', () => {\n this.refreshVuetable()\n\t\t})\n\t\tthis.$root.$on('venus_shared_volume_add_close', () => {\n this.actionaddshare = false\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\t},\n beforeDestroy () {\n this.$root.$off('venus_shared_apps_refresh')\n this.$root.$off('venus_shared_volume_add_close')\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.actionrowindex1 = index\n\t\t\tif(action == 'run-more' ){\n this.actionshowshare = true\n this.$root.$emit('wg_view_volume_refresh',data)\n this.$root.$emit('venus_shared_volume_refresh',data)\n this.$root.$emit('venus_shared_clientvolume_refresh',data)\n console.log('index '+JSON.stringify(data))\n\t\t\t}else if(action == 'add-more' ){\n this.actionaddshare = true\n this.$root.$emit('wg_view_network_refresh',data)\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeybsharedvolume += 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 if(response.data != null){\n\t\t\t\t var data = response.data.data\n\t\t\t\t this.fielddata=data\n\t\t\t\t var n = data.length\n\t\t\t\t n=n-1\n }\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 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-volume-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!./manage-volume-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manage-volume-view.vue?vue&type=template&id=0b066830&\"\nimport script from \"./manage-volume-view.vue?vue&type=script&lang=js&\"\nexport * from \"./manage-volume-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./manage-volume-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","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/cloudvolume--512.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstanceclientshare\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Connect volume...\\n \")])])],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(\"Shared volumes in \"),_c('span',{staticClass:\"text-info\"},[_vm._v(_vm._s(_vm.hybridnetwork.Names))])])])]),_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)]),(_vm.hybridshowdata.stackid)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Options\\n \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.data.shareinfo.options)+\"\\n \")]),_c('div',{staticClass:\"col-7 text-info\"},[_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onmount()}}},[_vm._v(\"\\n Connect_to \"+_vm._s(_vm.hybridshowdata.data.network)+\"\\n \")])])]):_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(\"\\n\\t\\t\\t\\t\\tGo\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\"\\n\\t\\t\\t\\t\\tReset\")])])]),_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(\"\\n\\t\\t\\t\\t\\tLab_Instance...\\n\\t\\t\\t\\t\")])])],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(\"\\n 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(\"\\n Clear\")]):_vm._e(),_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\",\"disabled\":\"\"}},[_vm._v(\"\\n Console\")]),(_vm.cmOptions.keyMap == 'sublime')?_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":_vm.infoFilter}},[_vm._v(\"\\n 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/cloudvolume--512.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstanceclientshare\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Connect volume...\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>Shared volumes in <span class=\"text-info\">{{ hybridnetwork.Names}}</span></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\n <div class=\"row\" \n v-if=\"hybridshowdata.stackid\"\n >\n <div class=\"col-2 text-info\" \n >\n Options\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.data.shareinfo.options }}\n </div>\n <div class=\"col-7 text-info\" >\n <button\n class=\"btn btn-outline-info btn-sm\"\n round\n type=\"button\"\n @click=\"onmount()\"\n >\n Connect_to {{ hybridshowdata.data.network }}\n </button>\n \n </div>\n </div> <!-- row -->\n\n </b-container>\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search By StackName\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekeyd\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n @vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n\n <div slot=\"actions\" slot-scope=\"props\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport LogView from \"./LogView.vue\";\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown,\n LogView\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n hybridshowuser:false,\n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n hybridnetwork:{},\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: 'stackname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'stackname',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '15%'\n },\n {\n name: 'stackid',\n title: '<span class=\"orange\"></span>Network',\n sortField: 'stackid',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '25%'\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:false,\n width: '10%'\n },\n {\n name: 'data.network',\n title: '<span class=\"orange\"></span>ip',\n sortField: 'data.network',\n titleClass: 'center aligned',\n visible:true,\n width: '10%',\n callback: function(value) {\n //var val = JSON.parse(value)\n //var v = Object.keys(val);\n //var vv = v[0]\n //if(v){\n //return val[vv].IPAddress\n //}else{\n //return ''\n //}\n return value\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+\"/getsharevolume\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n searchForStackid: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'bootstrapdatebegin5',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'stackid': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('wg_view_volume_refresh', (v) => {\n this.hybridnetwork = v\n\t\t\t this.searchForStackid = v.Names\n console.log(' v ' + JSON.stringify(v))\n this.setFilter()\n\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\t//this.$root.$off('wg_refresh_bootstrap_view')\n\t\tthis.$root.$off('wg_view_volume_refresh')\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 onmount(action) {\n\t\t\t console.log('mount '+ JSON.stringify(this.hybridnetwork ))\n\t\t\t console.log('mount data '+ JSON.stringify(this.hybridshowdata ))\n var v = {}\n v.share_container = this.searchForStackid // wg local container \n var val = this.hybridshowdata.data.network.split('/')\n //console.log(this.hybridshowdata.data.network)\n //var v1 = Object.keys(val);\n //var vv1 = v1[0]\n //val[vv1].IPAddress\n v.share_ip = val[0] // wg local\n //v.service = this.hybridnetwork // service client\n\t\t\t console.log('mount socket '+ JSON.stringify(v ))\n this.$socket.client.emit('connect_nfsvolume', v);\n this.$wait.start('myRunInstanceclientshare');\n },\n async onActionUser(action) {\n if(action == 1){\n this.hybridshowuser=true\n var data = {}\n data.hybridshowuser = this.hybridshowuser\n data.data = this.hybridshowdata\n this.$root.$emit('hybrid_wg_showuser',data)\n }else if(action == 2 ){\n this.hybridshowuser=false\n var data = {}\n data.hybridshowuser = this.hybridshowuser\n data.data = this.hybridshowdata\n this.$root.$emit('hybrid_wg_showuser',data)\n }\n },\n async onActionLog(action) {\n if(action == 1){\n var log = await store.dispatch(\"pipelineLLO/wg_servicelog\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n // console.log('logs1 '+JSON.stringify(log))\n var data = log.data.data.data\n if(log.data.data.errorexec_msg == 'ok' && log.data.data.data){\n this.hybridshowlog=true\n this.$root.$emit('hybrid_server_log_in',data)\n //console.log('logsdata '+JSON.stringify(log.data.data.data))\n }else{\n var info = 'No logs are available'\n this.$swal({\n type: 'Info',\n title: 'LOG',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n }else if(action == 2 ){\n this.hybridshowlog=false\n }\n },\n async onActionHybrid(action) {\n\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will remove the network with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> <br><br> Users, networks, and secrets associated with the stack will be removed. </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n //console.log(JSON.stringify(result))\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'service-stop' ){\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/hybrid_servicerm\",{\n\t\t\t\t\ttoken:this.token,\n\t\t\t\t\tbootstrapstackid:this.hybridshowdata.bootstrapstackid,\n\t\t\t\t\tbootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-restart' ){\n\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/wg_servicerestart\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n var info =''\n if(log.data.data.errorexec_msg == 'ok'){\n info ='<h5>Update existing service: ok!</h5>'\n }else{\n info ='<h5>Update existing service: error!</h5>'\n }\n this.$swal({\n type: 'Info',\n title: 'INFO',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\n//console.log('stackid '+this.hybridshowdata.bootstrapnameid)\n }\n },\n async onActionHybrid_stackrm(action) {\n if(action.isConfirmed){\n var log = await store.dispatch(\"pipelineLLO/stackrmwg\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'stackid': this.searchForStackid,\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 if( response.data ){\n if( response.data.data ){\n var data = response.data.data\n this.fielddata=data\n var n = data.length\n n=n-1\n }else{\n var data = ''\n var n = data.length\n n=n-1\n }\n }\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 sockets: {\n async connect_nfsvolume_res_resclose(val) {\n console.log('volumes socke '+JSON.stringify(val))\n this.$root.$emit('venus_shared_clientvolume_refresh',val)\n this.$wait.end('myRunInstanceclientshare');\n },\n }\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-volume.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-volume.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-volume.vue?vue&type=template&id=498a5080&\"\nimport script from \"./view-volume.vue?vue&type=script&lang=js&\"\nexport * from \"./view-volume.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-volume.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-volume-view>\n\n </mydeploy-manage-volume-view>\n </div>\n\n <div class=\"col-6 order-last\" >\n <br>\n \n <myclient-volume>\n\n </myclient-volume>\n \n </div>\n </div>\n\n\n\n <div class=\"row\" \n >\n <div class=\"col-6 order-first \" >\n <my-volume-serve>\n\n </my-volume-serve>\n </div>\n <div class=\"col-6 order-last \" >\n <my-volume-client>\n\n </my-volume-client>\n </div>\n </div>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\nimport MyVolumeServe from \"./manageservices/manage-volume-localserver-view.vue\";\nimport MyVolumeClient from \"./manageservices/manage-volume-localclient-view.vue\";\nimport MydeployManageVolumeView from \"./manageservices/manage-volume-view.vue\";\nimport MyclientVolume from \"./manageservices/view-volume.vue\";\nexport default {\n components: {\n card,\n MyVolumeServe,\n MyVolumeClient,\n MydeployManageVolumeView,\n MyclientVolume\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n hybridshowuser: false,\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_wg_showuser', (data) => {\n this.hybridshowuser = data.hybridshowuser\n console.log(\"view \"+ this.hybridshowuser);\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_wg_showuser')\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managesharedvolume.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!./managesharedvolume.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./managesharedvolume.vue?vue&type=template&id=7277495f&\"\nimport script from \"./managesharedvolume.vue?vue&type=script&lang=js&\"\nexport * from \"./managesharedvolume.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-5 order-first \"},[_c('br'),_c('build-stats')],1),_c('div',{staticClass:\"col-7 order-last \"},[_c('br'),_c('view-network')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\" text-center\"},[(_vm.loaded)?_c('label',{staticClass:\"text-center align-middle\"},[_vm._v(\"\\n Interface: \"+_vm._s(_vm.wginterface.ip)+\"\\n \")]):_vm._e()]),(_vm.loaded)?_c('reactive-line-chart',{attrs:{\"chart-data\":_vm.chartData,\"options\":_vm.options,\"styles\":_vm.myStyles}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { Line, mixins } from \"vue-chartjs\";\nconst { reactiveProp } = mixins;\nexport default {\n extends: Line,\n mixins: [reactiveProp],\n props: [\"options\"],\n mounted() {\n // this.chartData is created in the mixin.\n // If you want to pass options please create a local options object\n this.renderChart(this.chartData, this.options);\n }\n};\n\n\n</script>\n\n\n","var render, staticRenderFns\nimport script from \"./Chart-line-template.vue?vue&type=script&lang=js&\"\nexport * from \"./Chart-line-template.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","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!./Chart-line-template.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!./Chart-line-template.vue?vue&type=script&lang=js&\"","<template>\n<div>\n\n <div class=\" text-center\">\n <label\n class=\"text-center align-middle\"\n v-if=\"loaded\"\n >\n Interface: {{wginterface.ip}}\n </label>\n </div>\n\n <reactive-line-chart \n v-if=\"loaded\"\n :chart-data=\"chartData\"\n :options=\"options\"\n :styles=\"myStyles\"\n ></reactive-line-chart>\n</div>\n</template>\n\n<script>\nimport ReactiveLineChart from \"./Chart-line-template.vue\";\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\nname: 'LineChartContainer',\n components: {\n ReactiveLineChart\n },\n data() {\n return {\n loaded: false,\n width: 300,\n height: 300,\n wginterface: {},\n chartData: null,\n options: { \n scales: {\n yAxes: [{\n stacked: true,\n lineTension: 1,\n steppedLine: true,\n gridLines: {\n display: false\n }\n }],\n xAxes: [{\n distribution: \"linear\",\n stacked: true,\n min: 0,\n beginAtZero: true,\n gridLines: {\n display: true\n }\n }]\n },\n legend: {\n display: true\n },\n responsive: true,\n spanGaps: false,\n maintainAspectRatio: false\n }\n\n };\n },\n methods: {\n async generateData() {\n\n try {\n var obj1 = {}\n obj1.ip = `${this.wginterface.ip}`\n obj1.stackid = `${this.wginterface.stackid}`\n obj1.publickey = `${this.wginterface.publickey}`\n var res1 = await store.dispatch('pipelineLLO/getswgdata', obj1)\n console.log('return from wgstats ' + JSON.stringify(res1))\n this.chartData = res1.data\n this.loaded = true\n } catch (e) {\n console.error(e)\n }\n },\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_wg_showstats', (data) => {\n var labels = []\n var datain = []\n var dataout = []\n var chartdata = {\n labels: labels,\n datasets: [\n {\n label: \"In\",\n backgroundColor: \"#f87979\",\n data: datain,\n borderColor: '#249EBF',\n pointBackgroundColor: 'white',\n borderWidth: 1,\n fill: false,\n lineTension: 0,\n steppedLine: true,\n pointBorderColor: '#249EBF'\n },\n {\n label: \"Out\",\n backgroundColor: \"#A5CC82\",\n data: dataout,\n borderColor: '#A5CC82',\n pointBackgroundColor: 'white',\n fill: false,\n borderWidth: 1,\n steppedLine: true,\n pointBorderColor: '#A5CC82'\n }\n ],\n }\n this.wginterface = data\n this.chartData = chartdata\n this.generateData()\n console.log(\"stats \");\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_wg_showstats')\n },\n computed: {\n myStyles () {\n return {\n height: `${this.height}px`,\n position: 'relative'\n }\n }\n },\n/*\n watch: {\n chartData () {\n this.$data._chart.update()\n }\n }\n*/\n};\n</script>\n\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!./chart.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!./chart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./chart.vue?vue&type=template&id=44c7b5b2&\"\nimport script from \"./chart.vue?vue&type=script&lang=js&\"\nexport * from \"./chart.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:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/stats-ok_128.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Lab_room...\\n \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Network Interfaces\")])])]),_c('br'),_c('vuetable',{key:_vm.vuetablekey1a,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.bootstrapnameid])?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Disable user\",\"disabled\":\"\",\"round\":\"\"}}):_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Enable user\",\"disabled\":\"\",\"round\":\"\"}})])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData._id])?_c('button',{staticClass:\" ti-eye btn btn-info btn-sm\",attrs:{\"round\":\"\",\"title\":\"Close\"},on:{\"click\":function($event){return _vm.onAction('view-item', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\" ti-eye btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\",\"title\":\"Show\"},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/stats-ok_128.png\" alt=\"...\">\n </div>\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Network Interfaces</b>\n </div>\n </div>\n\n<br>\n\n\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey1a\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n\t\t\t\t@vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.bootstrapnameid]\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Disable user\"\n disabled\n round\n >\n </button>\n <button\n v-else\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Enable user\"\n disabled\n round\n >\n </button>\n </div>\n </div>\n <div slot=\"actions\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData._id]\"\n class=\" ti-eye btn btn-info btn-sm\"\n @click=\"onAction('view-item', props.rowData, props.rowIndex)\"\n round\n title=\"Close\"\n >\n </button>\n <button\n v-else\n class=\" ti-eye btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('view-item', props.rowData, props.rowIndex)\"\n title=\"Show\"\n >\n </button>\n </div>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n testactionrowindex:[], // joined \n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n bootstrapname:'',\n server_wg_public:'',\n server_wg_port:'',\n server_wg_userprivate:'',\n token: '',\n\t CONFIG: {},\n isstatus:'',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey1a:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'ip',\n title: '<span class=\"orange\"></span>Interface',\n sortField: '',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '50%',\n callback: value => {\n //console.log(this.fielddata)\n /*\n for(var i = 0; i < this.fielddata.length; i++) {\n //call function here\n var servicename = this.fielddata[i].user\n //console.log(JSON.stringify(servicename))\n if(servicename == value){\n var obj = {}\n obj.bootstrapnameid = this.fielddata[i]._id\n obj.status = this.fielddata[i].status\n obj.bootstrapstackname = this.fielddata[i].user\n\t\t this.checkactionrowindex(obj)\n //console.log(JSON.stringify('status '+JSON.stringify(this.fielddata[i])))\n\n }\n }\n */\n return value\n }\n },\n {\n name: 'stackid',\n title: '<span class=\"orange\"></span>Stackid',\n sortField: 'stackid',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '35%',\n callback: value => {\n return value\n }\n },\n {\n name: 'bootstrapstackid',\n title: '<span class=\"orange\"></span>StackID',\n sortField: 'bootstrapstackid',\n visible:false,\n dataClass: 'left aligned w-25',\n width: '5%',\n callback: value => {\n //console.log(this.fielddata)\n for(var i = 0; i < this.fielddata.length; i++) {\n //call function here\n var servicename = this.fielddata[i].bootstrapstackid\n //console.log(JSON.stringify(servicename))\n if(servicename == value){\n var obj = {}\n obj.bootstrapnameid = this.fielddata[i].bootstrapnameid\n obj.bootstrapstackname = this.fielddata[i].bootstrapstackname\n\t\t this.checkactionrowindex(obj)\n //console.log(JSON.stringify('status '+JSON.stringify(this.fielddata[i])))\n\n }\n }\n return value\n }\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:false,\n width: '10%'\n },\n {\n name: 'bootstrapdateend',\n title: '<span class=\"orange\"></span>End',\n sortField: 'bootstrapdateend',\n titleClass: 'center aligned',\n visible:false,\n width: '95%'\n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'status',\n titleClass: 'center aligned',\n visible:false,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n /* \n {\n name: '__slot:actionslocal', // <----\n title: ' Join',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%',\n callback: 'getstatus'\n },\n */\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/getwginterfaces\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 10,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'user',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'wg',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_wg_showuser', (data) => {\n console.log('-----table--- '+JSON.stringify(data.data))\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': data.data.bootstrapstackid,\n\t\t\t\t\t\t'type': 'wg'\n\t\t\t\t}\n this.bootstrapname = data.data.bootstrapstackname\n this.refreshVuetable();\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_wg_showuser')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\tasync checkactionrowindex(data){\n var obj = {}\n obj.token = this.token\n obj.bootstrapnameid = data.bootstrapnameid\n obj.status = data.status\n obj.bootstrapstackname = data.bootstrapstackname\n // var res1 = await store.dispatch('pipelineLLO/getserviceshybridstatus', obj)\n var index = data.bootstrapnameid\n console.log('res18 1 '+JSON.stringify(obj))\n if(obj.status == true){\n Vue.set(this.testactionrowindex, data.bootstrapnameid, index)\n console.log('res8 YES '+JSON.stringify(obj))\n }else{\n console.log('res8 NO '+JSON.stringify(obj))\n Vue.delete(this.testactionrowindex, data.bootstrapnameid)\n }\n console.log('res18 all '+JSON.stringify(this.testactionrowindex))\n },\n\n\n async onActionHybrid(action) {\n //var logconfig = await store.getters['pipelineLLO/getconfig'];\n this.CONFIG = await store.getters['pipelineLLO/getstatusswarmlab'];\n if(this.CONFIG.hybrid == 'Online'){\n this.isstatus = true\n }else{\n this.isstatus = false\n }\n //console.log('stack-start1 ' + JSON.stringify(this.CONFIG))\n //console.log('stack-start3 ' + JSON.stringify(logconfig1))\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will leave the stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'stack-start' ){\n //console.log('stack-start')\n //if(this.isstatus == '1'){\n //console.log(this.isstatus)\n console.log('stack-start ' + JSON.stringify(this.hybridshowdata))\n \n var log = await store.dispatch(\"pipelineLLO/hybrid_join\",{\n token:this.token,\n node:this.hybridshowdata.bootstrapstackid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.server_wg_public = log.data.data.data.server_public\n this.server_wg_port = log.data.data.data.server_port\n this.server_wg_userprivate = log.data.data.data.user_private\n\n this.server_wg_usernetmask = log.data.data.data.user_netmask\n this.server_wg_userip = log.data.data.data.user_ip\n this.server_wg_usernetwork = log.data.data.data.user_network\n\n\n var logsave = await store.dispatch(\"pipelineLLO/hybrid_join_start\",{\n publickey:this.server_wg_public,\n endpointport:this.server_wg_port,\n netmask:this.server_wg_usernetmask,\n peer_ip: this.server_wg_userip,\n serverip: '83.212.78.14',\n allowedips: `${this.server_wg_usernetwork}/${this.server_wg_usernetmask}`,\n privatekey:this.server_wg_userprivate\n\n })\n if(logsave.data.action == \"ok\"){\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"connect\"\n })\n\n }\n console.log('stack-start ' + JSON.stringify(logsave))\n\n console.log(JSON.stringify(log))\n /*\nsose ta parakato kai trexto \ndes prota ean exei idio ip netwrok kapou\nean oci nai na tou to peis\n\no server den trexei akomi aftomata to wg server preepi na do pos einai kalitera na ginei\nisos me tou pou sikonete\nmesso mpi_bootstrap\n\n[Interface]\n PrivateKey = QJBr5JPQ44XpoSbcIyU25nGrTZ9u+pVCU32L0lTkTV0=\n ListenPort = 51820\n\n[Peer]\n #PublicKey = WAuzcpIf1obckeLP94owls31j58LP2k+yIAasx9VFU8=\n PublicKey = KerkcAshneFZxNeSVsP00Wad+KNqhU/ZxJa/F3Ol5ns=\n #Endpoint = 83.212.77.133:51820\n #Endpoint = 83.212.78.14:51820\n Endpoint = 83.212.78.14:35886\n AllowedIPs = 10.1.0.0/24\n #AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0\n PersistentKeepalive = 30\n*/\n //}else{\n //}\n \n }else if(action == 'service-invite' ){\n console.log('status '+this.isstatus)\n console.log(this.hybridshowdata.bootstrapstackid)\n var log = await store.dispatch(\"pipelineLLO/wg_invite\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-info' ){\n //console.log(JSON.stringify(action))\n //console.log('CONFIG '+JSON.stringify(this.hybridshowdata))\n var url = this.hybridshowdata.bootstrapurl\n var info=`<h5>You will be redirected to the README page of the repository (OUTSIDE Swarmlab-Hybrid)<br> \n<a href=\"${url}\" target=\"new\">click here to continue</a>\n</h5>\n<br>\n`\n this.$swal({\n type: 'Info',\n title: 'README',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n\n },\n async onActionHybrid_stackrm(action) {\n //console.log(JSON.stringify(action))\n if(action.isConfirmed){\n if(this.isstatus == '1'){\n var log = await store.dispatch(\"pipelineLLO/hybrid_leave\",{\n token:this.token,\n node:this.CONFIG.swarmlabid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else{\n }\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n this.hybridshowdata = data\n console.log('index111 '+JSON.stringify(this.hybridshowdata))\n var n = {}\n n.stackid = this.hybridshowdata.stackid\n n.ip = this.hybridshowdata.ip\n n.publickey = this.hybridshowdata.publickey\n this.$root.$emit('hybrid_wg_showstats', n)\n\t\t\t}else if(action == 'adduser' ){\n this.hybridshowdata = data\n console.log('-------hybrid invite------- '+JSON.stringify(this.hybridshowdata))\n var log = await store.dispatch(\"pipelineLLO/wg_invite_accept\",{\n token:this.token,\n action:'add',\n wg:this.hybridshowdata\n })\n this.refreshVuetable()\n\t\t\t}else if(action == 'rmuser' ){\n this.hybridshowdata = data\n var log = await store.dispatch(\"pipelineLLO/wg_invite_accept\",{\n token:this.token,\n action:'rm',\n wg:this.hybridshowdata\n })\n this.refreshVuetable()\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey1a += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n if( response.data.data ){\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 }else{\n\t\t\t\tvar data = ''\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n }\n //console.log('data1 '+JSON.stringify(response))\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-stats.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-stats.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./request-stats.vue?vue&type=template&id=43d77bec&\"\nimport script from \"./request-stats.vue?vue&type=script&lang=js&\"\nexport * from \"./request-stats.vue?vue&type=script&lang=js&\"\nimport style0 from \"./request-stats.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-5 order-first \" >\n <br>\n <build-stats>\n </build-stats>\n </div>\n <div class=\"col-7 order-last \" >\n <br>\n <view-network>\n </view-network>\n </div>\n </div>\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport ViewNetwork from \"./manageservices/chart.vue\";\nimport BuildStats from \"./manageservices/request-stats.vue\";\n//import BuilderServices from \"./mynetwork/builderservices.vue\";\nimport card from '@/components/Card.vue'\n//import AvailableServices from \"./mynetwork/availableservices.vue\";\nexport default {\n components: {\n ViewNetwork,\n // AdhocView,\n card,\n BuildStats\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!./chart.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!./chart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./chart.vue?vue&type=template&id=342ecfa8&\"\nimport script from \"./chart.vue?vue&type=script&lang=js&\"\nexport * from \"./chart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 order-first \"},[_c('br'),_c('mydeploy-manage-bootstrap')],1),_c('div',{staticClass:\"col-6 order-last\"},[_c('br'),_c('mydeploy-manage-view')],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowuser===true),expression:\"hybridshowuser===true\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12 order-first \"},[_c('request-network')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/elusiven_network64-64.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab Venus - Build Your Network\")])])]),_c('br'),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('ValidationProvider',{ref:\"hybrid_image\",attrs:{\"name\":\"NetworkDesc\",\"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\":\"Project Name\"},domProps:{\"value\":(_vm.deploy.image)},on:{\"keyup\":function($event){return _vm.isValid('image')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"image\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('image')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('ValidationProvider',{ref:\"hybrid_stackname\",attrs:{\"name\":\"StackName\",\"rules\":\"required|alpha_num_name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.stackname),expression:\"deploy.stackname\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.stackname == 1, 'is-invalid': _vm.isDeployValid.stackname == 2},attrs:{\"type\":\"text\",\"name\":\"StackName\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"VPN StackName\"},domProps:{\"value\":(_vm.deploy.stackname)},on:{\"keyup\":function($event){return _vm.isValid('stackname')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"stackname\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('stackname')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"Start date \")])]),_c('date-picker',{attrs:{\"type\":\"date\",\"autocomplete\":\"off\",\"format\":\"YYYY-MM-DD\",\"lang\":\"en\"},model:{value:(_vm.deploy.startdate),callback:function ($$v) {_vm.$set(_vm.deploy, \"startdate\", $$v)},expression:\"deploy.startdate\"}})],1)]),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"Start time\")])]),_c('date-picker',{attrs:{\"type\":\"time\",\"format\":'HH:mm',\"show-hour\":\"\",\"show-minute\":\"\",\"time-picker-options\":_vm.timePickerOptions,\"lang\":\"en\"},model:{value:(_vm.deploy.starttime),callback:function ($$v) {_vm.$set(_vm.deploy, \"starttime\", $$v)},expression:\"deploy.starttime\"}})],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"End date \")])]),_c('date-picker',{attrs:{\"type\":\"date\",\"autocomplete\":\"off\",\"format\":\"YYYY-MM-DD\",\"lang\":\"en\"},model:{value:(_vm.deploy.enddate),callback:function ($$v) {_vm.$set(_vm.deploy, \"enddate\", $$v)},expression:\"deploy.enddate\"}})],1)]),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"End time\")])]),_c('date-picker',{attrs:{\"type\":\"time\",\"format\":'HH:mm',\"show-hour\":\"\",\"show-minute\":\"\",\"time-picker-options\":_vm.timePickerOptions,\"lang\":\"en\"},model:{value:(_vm.deploy.endtime),callback:function ($$v) {_vm.$set(_vm.deploy, \"endtime\", $$v)},expression:\"deploy.endtime\"}})],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-cloud-up btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Deploy\"},on:{\"click\":function($event){return _vm.add_deploy()}}},[_vm._v(\" Create Network\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])])])]),_c('b-col',{attrs:{\"cols\":\"2\"}}),_c('b-col',{attrs:{\"cols\":\"4\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/elusiven_network64-64.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab Venus - Build Your Network</b>\n </div>\n </div>\n\n<br>\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_image\"\n\t\t\t\t\t\tname=\"NetworkDesc\"\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=\"Project Name\"\n v-model=\"deploy.image\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('image')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('image')\"\n\t\t\t\t\t\t\t\t\t >\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n\n <b-col cols=\"6\">\n\t\t\t\t\t<ValidationProvider\n ref=\"hybrid_stackname\"\n\t\t\t\t\t\tname=\"StackName\"\n\t\t\t\t\t\trules=\"required|alpha_num_name\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n\t\t\t\t\t\t name=\"StackName\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.stackname == 1, 'is-invalid': isDeployValid.stackname == 2}\"\n aria-label=\"Small\" \n\t\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"VPN StackName\"\n v-model=\"deploy.stackname\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('stackname')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('stackname')\">\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n\n </b-row>\n\n\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab startdate ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>Start date </button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.startdate\"\n\t\t\t\t\t\t\t\t\t\t\t\tformat=\"YYYY-MM-DD\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t\t<!-- -------- lab starttime ----------------------------------- -->\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>Start time</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\t\t\t\t:format=\"'HH:mm'\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.starttime\"\n\t\t\t\t\t\t\t\t\t\t\t\tshow-hour\n\t\t\t\t\t\t\t\t\t\t\t\tshow-minute\n\t\t\t\t\t\t\t\t\t\t\t\t:time-picker-options=\"timePickerOptions\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n </b-row>\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab enddate ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>End date </button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.enddate\"\n\t\t\t\t\t\t\t\t\t\t\t\tformat=\"YYYY-MM-DD\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t\t<!-- -------- lab endtime ----------------------------------- -->\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>End time</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\t\t\t\t:format=\"'HH:mm'\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.endtime\"\n\t\t\t\t\t\t\t\t\t\t\t\tshow-hour\n\t\t\t\t\t\t\t\t\t\t\t\tshow-minute\n\t\t\t\t\t\t\t\t\t\t\t\t:time-picker-options=\"timePickerOptions\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n </b-row>\n\n\n\n <b-row>\n <b-col cols=\"6\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-cloud-up btn btn-outline-success\"\n\t\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Deploy\"\n \t\t\t\t\t\t\t\t\t\t\t@click=\"add_deploy()\"\n\t\t\t\t\t\t\t\t\t\t\t> Create Network\n\t\t\t\t\t\t\t\t\t\t\t</button>\n </div>\n </div>\n </b-col>\n\n <b-col cols=\"2\">\n </b-col>\n\n <b-col cols=\"4\">\n </b-col>\n </b-row>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport DatePicker from 'vue2-datepicker'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nimport { ValidationObserver, ValidationProvider, extend } from 'vee-validate';\nimport { required, alpha_num, between} from 'vee-validate/dist/rules';\nimport 'vue2-datepicker/index.css';\n\n// No message specified.\nextend('alpha_num', alpha_num);\n\nextend('mybetween', between);\nextend('mybetween', {\n message: 'The {_field_} field must be a number: 1-65535'\n});\n\n//extend('alpha_num_image', alpha_num);\nextend('alpha_num_image', value => {\n var regex = new RegExp(/^[A-Za-z0-9\\:\\.\\-\\_\\/]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores'\n});\n\nextend('alpha_num_name', value => {\n if(value.length < 16){\n var regex = new RegExp(/^[A-Za-z0-9]+$/, 'i'); \n if(regex.test(value)){\n return true;\n }\n }\n return 'The {_field_} field may contain alphabetic characters and numbers (< 16 )'\n});\n\nextend('alpha_num_cpu', value => {\n //var regex = new RegExp(/^(?:\\d{1})?(?:\\.\\d{1})?$/); \n var regex = new RegExp(/^(?!0\\d)\\d+(?:\\.\\d{1})?$/); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain numbers and dots e.g 0.5'\n});\n\n\nextend('alpha_num_memory', value => {\n var regex = new RegExp(/^[0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain numbers e.g 500'\n});\n\nextend('alpha_url', value => {\n var regex = new RegExp(/https?:\\/\\/(git\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/,'i');\n //var regex = new RegExp(/^[0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain url'\n});\n\n// Override the default message.\nextend('required', {\n ...required,\n message: 'This field is required'\n});\nexport default {\n components: {\n DatePicker,\n ValidationProvider,\n card\n\t},\n props: {\n },\n data() {\n return{\n\t isHybridError: false,\n\t isHybridSuccess: false,\n token: '',\n\t\ttimePickerOptions:{\n\t\t\t\tstart: '00:00',\n\t\t\t\tstep: '00:30',\n\t\t\t\tend: '23:30'\n\t\t},\n deploy:{\n \t\t\"usersjoin\":true,\n \"startdate\":3, \n \"enddate\" :3,\n \"starttime\":3,\n \"endtime\":3\n\t },\n isDeployValid:{\n \t\t\"image\":3,\n \t\t//\"name\":3,\n \t\t\"stackname\":3\n \t\t//\"network\":3\n \t\t//\"networkport\":3,\n \t\t//\"url\":3,\n \t\t//\"cpu\":3,\n \t\t//\"memory\":3\n\t },\n wgserverup:'',\n wgserversettings:'',\n isDeployError:{\n\t }\n\t\t}\n },\n\tmounted() {\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n },\n computed: {\n\t},\n\n methods: {\n \tasync add_deploy(){\n \n\t\t\tvar o = Object.entries(this.deploy)\n\t\t\tvar pvalid = new Promise((resolve, reject) => {\n\t\t\t\to.forEach((value, index, array) => {\n\t\t\t\t\t\tthis.isValid(array[index][0])\n\t\t\t\t\t\tif (index === array.length -1) resolve();\n\t\t\t\t});\n\t\t\t});\n\n\t\tpvalid.then(() => {\n (async () => {\n var isAllValid = true\n var isAllDateValid = true\n\t\t\t\t\tfor (const [key, value] of Object.entries(this.isDeployValid)) {\n\t\t\t\t\t\tconsole.log(`${key}: ${value}`);\n\t\t\t\t\t\tif(value != 1){\n isAllValid = false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfor (const [key, value] of Object.entries(this.deploy)) {\n\t\t\t\t\t\t console.log(`deploy ${key}: ${value}`);\n if( key == \"startdate\" || key == \"enddate\" || key == \"starttime\" || key == \"endtime\" ){ \n\t\t\t\t\t\t console.log(`${key}: ${value}`);\n if ( value == 3) { // d.valueOf() could also work\n isAllDateValid = false \n\t\t\t\t\t\t //console.log(`yesvalid ${key}: ${value}`);\n // date is not valid\n } \n }\n \n\t\t\t\t\t\t}\n\t\t\t\t\tif(isAllValid && isAllDateValid){ \n \n var myvpn = {}\n myvpn.name = this.deploy.image\n myvpn.stackname = this.deploy.stackname\n myvpn.startdate = this.deploy.startdate\n myvpn.enddate = this.deploy.enddate\n myvpn.starttime = this.deploy.starttime\n myvpn.endtime = this.deploy.endtime\n \n\t\t\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/create_vpn\",{\n\t\t\t\t\t\t\t\twg:myvpn\n\t\t\t\t\t\t\t})\n //console.log('from server '+JSON.stringify(log))\n //console.log('from server1 '+JSON.stringify(log.data))\n if(log.data.wgnetworkexist == 'yes'){\n var info = `<h5>The network \"${this.deploy.stackname}\" exist</h5> Please remove it before trying again! <br><br>See also in \"Manage your Networks\" table`\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{\n //console.log('from server '+JSON.stringify(log.data.pipeline))\n var logdeploynet = await store.dispatch(\"pipelineLLO/adddeploy\",{\n wg:myvpn\n })\n if(logdeploynet.data.data.error){ // error\n console.log('from server2 '+JSON.stringify(logdeploynet))\n }else{ // ok\n this.wgserverup = logdeploynet.data.data.data\n this.wgserversettings = logdeploynet.data.data.data\n \n console.log('from server3 '+JSON.stringify(logdeploynet))\n }\n this.$root.$emit('wg_refresh_bootstrap_view')\n console.log('ok')\n var info = '<h5>The deploy process is started</h5> Please wait for it to finish before trying again! <br><br>See also in \"Manage your Networks\" table'\n 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\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, first put a <b>name</b> or something that gives away the subject of your project.\n </h5>\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>Network 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=74d94f5e&\"\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(\"\\n Enter Lab_room...\\n \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==false),expression:\"hybridshowlog==false\"}],staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Manage your Networks\")])])]),_c('br'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog),expression:\"hybridshowlog\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('log-view')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowlog==false)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionLog(1)}}},[_vm._v(\"\\n Show logs\\n \")]):_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(\"\\n Close logs\\n \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowuser==false)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionUser(1)}}},[_vm._v(\"\\n Show users\\n \")]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowuser==true)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionUser(2)}}},[_vm._v(\"\\n Close users\\n \")]):_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(\"\\n Remove Network\\n \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"})])]),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Instances\\n \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.Replicas)+\"\\n \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Image \\n \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapimage)+\"\\n \")])]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Names\\n \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapname)+\"\\n \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n EndAt\\n \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapdateend)+\"\\n \")])]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Networks\\n \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapnetwork)+\"\\n \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n BeginAt\\n \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.bootstrapdatebegin)+\"\\n \")])]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\"\\n Status\\n \")]),(_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(\"\\n Ports\\n \")]),(_vm.hybridshowdata.ports!=0)?_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\"\\n \"+_vm._s(_vm.hybridshowdata.ports)+\"\\n \")]):_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(\"\\n\\t\\t\\t\\t\\tGo\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\"\\n\\t\\t\\t\\t\\tReset\")])])]),_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 }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n v-show=\"hybridshowlog==false\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/hybrid-1.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n <div class=\"row text-center\"\n v-show=\"hybridshowlog==false\"\n >\n <div class=\"col-12\">\n <b>Manage your Networks</b>\n </div>\n </div>\n\n<br>\n <div class=\"row\" \n v-show=\"hybridshowlog\"\n >\n <div class=\"col-12\" >\n <log-view>\n </log-view>\n </div>\n </div>\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"onActionLog(1)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowlog==false\"\n >\n Show logs\n </button>\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionLog(2)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowlog==true\"\n >\n Close logs\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"onActionUser(1)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowuser==false\"\n >\n Show users\n </button>\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionUser(2)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowuser==true\"\n >\n Close users\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-stop')\"\n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n Remove Network\n </button>\n <!--\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-stop')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n Remove Service\n </button>\n -->\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <!--\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-restart')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n >\n Restart Network\n </button>\n -->\n </div>\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" \n >\n Instances\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Replicas }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapimage }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapname }}\n </div>\n <div class=\"col-2 text-info\" >\n EndAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdateend }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Networks\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapnetwork }}\n </div>\n <div class=\"col-2 text-info\" >\n BeginAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdatebegin }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" \n v-if=\"hybridshowdata.status\"\n >\n <span class=\"ti-check text-success\"> </span>\n </div>\n <div class=\"col-3 text-secondary\" \n v-else\n >\n <span> </span>\n </div>\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" \n v-if=\"hybridshowdata.ports!=0\"\n >\n {{ hybridshowdata.ports }}\n </div>\n <div class=\"col-4 text-secondary\" \n v-else\n >\n \n </div>\n </div> <!-- row -->\n </b-container>\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search By StackName\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekeyd\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n @vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n\n <div slot=\"actions\" slot-scope=\"props\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport LogView from \"./LogView.vue\";\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown,\n LogView\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n hybridshowuser:false,\n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n token: '',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekeyd:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'bootstrapname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'bootstrapname',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '15%'\n },\n {\n name: 'bootstrapstackname',\n title: '<span class=\"orange\"></span>StackName',\n sortField: 'bootstrapstackname',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '15%'\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n },\n {\n name: 'bootstrapdateend',\n title: '<span class=\"orange\"></span>End',\n sortField: 'bootstrapdateend',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n /*\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n */\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridbootstrapserviceswg\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'bootstrapdatebegin5',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('wg_refresh_bootstrap_view', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n /*\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table', (v) => {\n\t\t\t this.$nextTick(function () {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.viewhybridoptions = false\n\t\t\t })\n\t\t})\n */\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('wg_refresh_bootstrap_view')\n\t\t//this.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n async onActionUser(action) {\n if(action == 1){\n this.hybridshowuser=true\n var data = {}\n data.hybridshowuser = this.hybridshowuser\n data.data = this.hybridshowdata\n this.$root.$emit('hybrid_wg_showuser',data)\n }else if(action == 2 ){\n this.hybridshowuser=false\n var data = {}\n data.hybridshowuser = this.hybridshowuser\n data.data = this.hybridshowdata\n this.$root.$emit('hybrid_wg_showuser',data)\n }\n },\n async onActionLog(action) {\n if(action == 1){\n var log = await store.dispatch(\"pipelineLLO/wg_servicelog\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n // console.log('logs1 '+JSON.stringify(log))\n var data = log.data.data.data\n if(log.data.data.errorexec_msg == 'ok' && log.data.data.data){\n this.hybridshowlog=true\n this.$root.$emit('hybrid_server_log_in',data)\n //console.log('logsdata '+JSON.stringify(log.data.data.data))\n }else{\n var info = 'No logs are available'\n this.$swal({\n type: 'Info',\n title: 'LOG',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n }else if(action == 2 ){\n this.hybridshowlog=false\n }\n },\n async onActionHybrid(action) {\n\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will remove the network with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> <br><br> Users, networks, and secrets associated with the stack will be removed. </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n //console.log(JSON.stringify(result))\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'service-stop' ){\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/hybrid_servicerm\",{\n\t\t\t\t\ttoken:this.token,\n\t\t\t\t\tbootstrapstackid:this.hybridshowdata.bootstrapstackid,\n\t\t\t\t\tbootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-restart' ){\n\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/wg_servicerestart\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n var info =''\n if(log.data.data.errorexec_msg == 'ok'){\n info ='<h5>Update existing service: ok!</h5>'\n }else{\n info ='<h5>Update existing service: error!</h5>'\n }\n this.$swal({\n type: 'Info',\n title: 'INFO',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\n//console.log('stackid '+this.hybridshowdata.bootstrapnameid)\n }\n },\n async onActionHybrid_stackrm(action) {\n if(action.isConfirmed){\n var log = await store.dispatch(\"pipelineLLO/stackrmwg\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'run-more' ){\n this.hybridshowdata = data\n //console.log('hybrid '+JSON.stringify(data))\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekeyd += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n if( response.data.data ){\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 }else{\n\t\t\t\tvar data = ''\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n }\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=2ad06f6a&\"\nimport script from \"./view-service.vue?vue&type=script&lang=js&\"\nexport * from \"./view-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Lab_room...\\n \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Network - \"+_vm._s(_vm.bootstrapname))])])]),_c('br'),_c('vuetable',{key:_vm.vuetablekey1a,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.bootstrapnameid])?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Disable user\",\"disabled\":\"\",\"round\":\"\"}}):_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Enable user\",\"disabled\":\"\",\"round\":\"\"}})])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData._id])?_c('button',{staticClass:\" ti-eye btn btn-info btn-sm\",attrs:{\"round\":\"\",\"title\":\"Disable\"},on:{\"click\":function($event){return _vm.onAction('rmuser', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\" ti-eye btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\",\"title\":\"Enable\"},on:{\"click\":function($event){return _vm.onAction('adduser', props.rowData, props.rowIndex)}}})])])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Network - {{ bootstrapname }}</b>\n </div>\n </div>\n\n<br>\n\n\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey1a\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n\t\t\t\t@vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.bootstrapnameid]\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Disable user\"\n disabled\n round\n >\n </button>\n <button\n v-else\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Enable user\"\n disabled\n round\n >\n </button>\n </div>\n </div>\n <div slot=\"actions\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData._id]\"\n class=\" ti-eye btn btn-info btn-sm\"\n @click=\"onAction('rmuser', props.rowData, props.rowIndex)\"\n round\n title=\"Disable\"\n >\n </button>\n <button\n v-else\n class=\" ti-eye btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('adduser', props.rowData, props.rowIndex)\"\n title=\"Enable\"\n >\n </button>\n </div>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n testactionrowindex:[], // joined \n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n bootstrapname:'',\n server_wg_public:'',\n server_wg_port:'',\n server_wg_userprivate:'',\n token: '',\n\t CONFIG: {},\n isstatus:'',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey1a:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'user',\n title: '<span class=\"orange\"></span>User',\n sortField: 'user',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '90%',\n callback: value => {\n //console.log(this.fielddata)\n for(var i = 0; i < this.fielddata.length; i++) {\n //call function here\n var servicename = this.fielddata[i].user\n //console.log(JSON.stringify(servicename))\n if(servicename == value){\n var obj = {}\n obj.bootstrapnameid = this.fielddata[i]._id\n obj.status = this.fielddata[i].status\n obj.bootstrapstackname = this.fielddata[i].user\n\t\t this.checkactionrowindex(obj)\n //console.log(JSON.stringify('status '+JSON.stringify(this.fielddata[i])))\n\n }\n }\n return value\n }\n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'status',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '5%',\n callback: value => {\n if(value == true){\n var valuenew = `\n <button\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Disable user\"\n disabled\n round\n >\n </button>`\n return valuenew\n }else{\n var valuenew = `\n <button\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Disable user\"\n disabled\n round\n >\n </button>`\n return valuenew\n }\n }\n },\n {\n name: 'bootstrapstackid',\n title: '<span class=\"orange\"></span>StackID',\n sortField: 'bootstrapstackid',\n visible:false,\n dataClass: 'left aligned w-25',\n width: '5%',\n callback: value => {\n //console.log(this.fielddata)\n for(var i = 0; i < this.fielddata.length; i++) {\n //call function here\n var servicename = this.fielddata[i].bootstrapstackid\n //console.log(JSON.stringify(servicename))\n if(servicename == value){\n var obj = {}\n obj.bootstrapnameid = this.fielddata[i].bootstrapnameid\n obj.bootstrapstackname = this.fielddata[i].bootstrapstackname\n\t\t this.checkactionrowindex(obj)\n //console.log(JSON.stringify('status '+JSON.stringify(this.fielddata[i])))\n\n }\n }\n return value\n }\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:false,\n width: '10%'\n },\n {\n name: 'bootstrapdateend',\n title: '<span class=\"orange\"></span>End',\n sortField: 'bootstrapdateend',\n titleClass: 'center aligned',\n visible:false,\n width: '95%'\n },\n {\n name: 'status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'status',\n titleClass: 'center aligned',\n visible:false,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n /* \n {\n name: '__slot:actionslocal', // <----\n title: ' Join',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%',\n callback: 'getstatus'\n },\n */\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridgetinvite\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 10,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'user',\n\t\t\t\tdirection: 'desc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'wg',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_wg_showuser', (data) => {\n console.log('-----table--- '+JSON.stringify(data.data))\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': data.data.bootstrapstackid,\n\t\t\t\t\t\t'type': 'wg'\n\t\t\t\t}\n this.bootstrapname = data.data.bootstrapstackname\n this.refreshVuetable();\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_wg_showuser')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\tasync checkactionrowindex(data){\n var obj = {}\n obj.token = this.token\n obj.bootstrapnameid = data.bootstrapnameid\n obj.status = data.status\n obj.bootstrapstackname = data.bootstrapstackname\n // var res1 = await store.dispatch('pipelineLLO/getserviceshybridstatus', obj)\n var index = data.bootstrapnameid\n console.log('res18 1 '+JSON.stringify(obj))\n if(obj.status == true){\n Vue.set(this.testactionrowindex, data.bootstrapnameid, index)\n console.log('res8 YES '+JSON.stringify(obj))\n }else{\n console.log('res8 NO '+JSON.stringify(obj))\n Vue.delete(this.testactionrowindex, data.bootstrapnameid)\n }\n console.log('res18 all '+JSON.stringify(this.testactionrowindex))\n },\n\n\n async onActionHybrid(action) {\n //var logconfig = await store.getters['pipelineLLO/getconfig'];\n this.CONFIG = await store.getters['pipelineLLO/getstatusswarmlab'];\n if(this.CONFIG.hybrid == 'Online'){\n this.isstatus = true\n }else{\n this.isstatus = false\n }\n //console.log('stack-start1 ' + JSON.stringify(this.CONFIG))\n //console.log('stack-start3 ' + JSON.stringify(logconfig1))\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will leave the stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'stack-start' ){\n //console.log('stack-start')\n //if(this.isstatus == '1'){\n //console.log(this.isstatus)\n console.log('stack-start ' + JSON.stringify(this.hybridshowdata))\n \n var log = await store.dispatch(\"pipelineLLO/hybrid_join\",{\n token:this.token,\n node:this.hybridshowdata.bootstrapstackid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.server_wg_public = log.data.data.data.server_public\n this.server_wg_port = log.data.data.data.server_port\n this.server_wg_userprivate = log.data.data.data.user_private\n\n this.server_wg_usernetmask = log.data.data.data.user_netmask\n this.server_wg_userip = log.data.data.data.user_ip\n this.server_wg_usernetwork = log.data.data.data.user_network\n\n\n var logsave = await store.dispatch(\"pipelineLLO/hybrid_join_start\",{\n publickey:this.server_wg_public,\n endpointport:this.server_wg_port,\n netmask:this.server_wg_usernetmask,\n peer_ip: this.server_wg_userip,\n serverip: '83.212.78.14',\n allowedips: `${this.server_wg_usernetwork}/${this.server_wg_usernetmask}`,\n privatekey:this.server_wg_userprivate\n\n })\n if(logsave.data.action == \"ok\"){\n var logsaverun = await store.dispatch(\"pipelineLLO/hybrid_join_connect\",{\n action: \"connect\"\n })\n\n }\n console.log('stack-start ' + JSON.stringify(logsave))\n\n console.log(JSON.stringify(log))\n /*\nsose ta parakato kai trexto \ndes prota ean exei idio ip netwrok kapou\nean oci nai na tou to peis\n\no server den trexei akomi aftomata to wg server preepi na do pos einai kalitera na ginei\nisos me tou pou sikonete\nmesso mpi_bootstrap\n\n[Interface]\n PrivateKey = QJBr5JPQ44XpoSbcIyU25nGrTZ9u+pVCU32L0lTkTV0=\n ListenPort = 51820\n\n[Peer]\n #PublicKey = WAuzcpIf1obckeLP94owls31j58LP2k+yIAasx9VFU8=\n PublicKey = KerkcAshneFZxNeSVsP00Wad+KNqhU/ZxJa/F3Ol5ns=\n #Endpoint = 83.212.77.133:51820\n #Endpoint = 83.212.78.14:51820\n Endpoint = 83.212.78.14:35886\n AllowedIPs = 10.1.0.0/24\n #AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0\n PersistentKeepalive = 30\n*/\n //}else{\n //}\n \n }else if(action == 'service-invite' ){\n console.log('status '+this.isstatus)\n console.log(this.hybridshowdata.bootstrapstackid)\n var log = await store.dispatch(\"pipelineLLO/wg_invite\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-info' ){\n //console.log(JSON.stringify(action))\n //console.log('CONFIG '+JSON.stringify(this.hybridshowdata))\n var url = this.hybridshowdata.bootstrapurl\n var info=`<h5>You will be redirected to the README page of the repository (OUTSIDE Swarmlab-Hybrid)<br> \n<a href=\"${url}\" target=\"new\">click here to continue</a>\n</h5>\n<br>\n`\n this.$swal({\n type: 'Info',\n title: 'README',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n\n },\n async onActionHybrid_stackrm(action) {\n //console.log(JSON.stringify(action))\n if(action.isConfirmed){\n if(this.isstatus == '1'){\n var log = await store.dispatch(\"pipelineLLO/hybrid_leave\",{\n token:this.token,\n node:this.CONFIG.swarmlabid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else{\n }\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'adduser' ){\n this.hybridshowdata = data\n console.log('-------hybrid invite------- '+JSON.stringify(this.hybridshowdata))\n var log = await store.dispatch(\"pipelineLLO/wg_invite_accept\",{\n token:this.token,\n action:'add',\n wg:this.hybridshowdata\n })\n console.log('-------hybrid invite action ------- '+JSON.stringify(log))\n this.refreshVuetable()\n\t\t\t}else if(action == 'rmuser' ){\n this.hybridshowdata = data\n console.log('-------hybrid invite------- '+JSON.stringify(this.hybridshowdata))\n var log = await store.dispatch(\"pipelineLLO/wg_invite_accept\",{\n token:this.token,\n action:'rm',\n wg:this.hybridshowdata\n })\n this.refreshVuetable()\n console.log('-------hybrid invite action ------- '+JSON.stringify(log))\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey1a += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n if( response.data.data ){\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 }else{\n\t\t\t\tvar data = ''\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n }\n //console.log('data1 '+JSON.stringify(response))\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-service.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-service.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./request-service.vue?vue&type=template&id=0c33af6b&\"\nimport script from \"./request-service.vue?vue&type=script&lang=js&\"\nexport * from \"./request-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./request-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-6 order-first \" >\n <br>\n <mydeploy-manage-bootstrap>\n\n </mydeploy-manage-bootstrap>\n </div>\n\n <div class=\"col-6 order-last\" >\n <br>\n \n <mydeploy-manage-view>\n\n </mydeploy-manage-view>\n \n </div>\n </div>\n\n\n\n <div class=\"row\" \n v-show=\"hybridshowuser===true\"\n >\n <div class=\"col-12 order-first \" >\n <request-network>\n\n </request-network>\n </div>\n </div>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\nimport MydeployManageBootstrap from \"./manageservices/deploy-bootstrap.vue\";\nimport MydeployManageView from \"./manageservices/view-service.vue\";\nimport RequestNetwork from \"./manageservices/request-service.vue\";\nexport default {\n components: {\n card,\n MydeployManageBootstrap,\n RequestNetwork,\n MydeployManageView\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n hybridshowuser: false,\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_wg_showuser', (data) => {\n this.hybridshowuser = data.hybridshowuser\n console.log(\"view \"+ this.hybridshowuser);\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_wg_showuser')\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managedeploy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managedeploy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./managedeploy.vue?vue&type=template&id=83b079f0&\"\nimport script from \"./managedeploy.vue?vue&type=script&lang=js&\"\nexport * from \"./managedeploy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8 order-first \"},[_c('br'),_c('calendar-view-events-dashboard')],1),_c('div',{staticClass:\"col-4 order-last\"},[_c('br'),_c('b-container',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==1),expression:\"hybridshowlog==1\"}],attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('img',{staticClass:\"border-white w-75 p-3\",attrs:{\"src\":require(\"@/assets/img/venus1.png\"),\"alt\":\"...\"}})])])]),_c('calendar-view-events',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==2),expression:\"hybridshowlog==2\"}]})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==true),expression:\"hybridshowlog==true\"}],staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/library.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Lab_room...\\n \")])])],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(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Type\")]),_c('td',[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.type)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")]),_c('td',[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.lang)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Description\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.desc)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"More info\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.url)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Level\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.Level)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Prerequisites\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.Prerequisites)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"startDate\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.startDate)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"endDate\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.endDate)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"url\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.labtext.originalItem.urltype)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\")])])])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n v-show=\"hybridshowlog==true\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/library.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n <div class=\"row text-center\"\n v-show=\"hybridshowlog==true\"\n >\n <div class=\"col-12\">\n\n\t\t\t\t\t\t\t\t<table class=\"table table-hover\">\n\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Title</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.title }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Type</th>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.type }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.lang }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Description</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.desc }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">More info</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.url }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Level</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.Level }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Prerequisites</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.Prerequisites }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">startDate</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.startDate }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">endDate</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.endDate }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">url</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.urltype }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t</table>\n\n </div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n labtext:{\n originalItem:{}\n },\n token: ''\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_labobject_view', (v) => {\n this.hybridshowlog=true\n this.labtext = v\n //console.log('object ' +JSON.stringify(this.labtext))\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_labobject_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n methods: {\n },\n actions: {\n\t}\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-events.vue?vue&type=template&id=0e870d6a&\"\nimport script from \"./view-events.vue?vue&type=script&lang=js&\"\nexport * from \"./view-events.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-events.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/snowflake_256.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\"\\n Enter Lab_room...\\n \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(\"Swarmlab-venus \"),_c('u',[_vm._v(\"Network Virtualization\")])])])]),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(\"on-demand network environments\")]),_c('p',[_c('b',[_vm._v(\"private - public - hybrid \")])])])]),_c('br'),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-3\"}),_c('div',{staticClass:\"col-6\"},[_c('h5',[_c('b',[_vm._v(\"on-demand sandbox environments\")])]),_c('ul',{staticClass:\"list-group list-group-flush \"},[_c('li',{staticClass:\"list-group-item list-group-item list-group-item-action list-group-item-light\"},[_vm._v(\"Virtual Labroom \")]),_c('li',{staticClass:\"list-group-item list-group-item list-group-item-action list-group-item-light\"},[_vm._v(\" Virtual Classroom \")]),_c('li',{staticClass:\"list-group-item list-group-item list-group-item-action list-group-item-light\"},[_vm._v(\"Proof-of-Concept (POC)\")])])]),_c('div',{staticClass:\"col-3\"})])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/snowflake_256.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid> \n\n <div class=\"row text-center\" >\n <div class=\"col-12\">\n <h5>Swarmlab-venus <u>Network Virtualization</u> </h5>\n </div> <!-- col -->\n </div> <!-- row -->\n\n <div class=\"row text-center\" >\n <div class=\"col-12\">\n <h5>on-demand network environments</h5>\n <p> <b>private - public - hybrid </b></p>\n </div> <!-- col --> \n </div> <!-- /row -->\n\n <br>\n\n <div class=\"row text-center\" >\n <div class=\"col-3\">\n </div> <!-- col --> \n <div class=\"col-6\">\n <h5><b>on-demand sandbox environments</b></h5>\n <ul class=\"list-group list-group-flush \">\n <li class=\"list-group-item list-group-item list-group-item-action list-group-item-light\">Virtual Labroom </li>\n <li class=\"list-group-item list-group-item list-group-item-action list-group-item-light\"> Virtual Classroom </li>\n <li class=\"list-group-item list-group-item list-group-item-action list-group-item-light\">Proof-of-Concept (POC)</li>\n </ul>\n </div> <!-- col --> \n <div class=\"col-3\">\n </div> <!-- col --> \n </div> <!-- /row -->\n\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n labtext:{\n originalItem:{}\n },\n token: ''\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_labobject_view', (v) => {\n this.hybridshowlog=true\n this.labtext = v\n //console.log('object ' +JSON.stringify(this.labtext))\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_labobject_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n methods: {\n },\n actions: {\n\t}\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events-dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events-dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-events-dashboard.vue?vue&type=template&id=3af1999d&\"\nimport script from \"./view-events-dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./view-events-dashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-events-dashboard.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-8 order-first \" >\n <br>\n \n <calendar-view-events-dashboard>\n\n </calendar-view-events-dashboard>\n \n </div>\n\n <div class=\"col-4 order-last\" >\n <br>\n\n <b-container fluid\n v-show=\"hybridshowlog==1\"\n >\n <div class=\"row text-center\"\n >\n <div class=\"col-12\">\n <img class=\"border-white w-75 p-3\" src=\"@/assets/img/venus1.png\" alt=\"...\">\n </div>\n </div>\n </b-container>\n \n <calendar-view-events\n v-show=\"hybridshowlog==2\"\n >\n\n </calendar-view-events>\n \n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\n//import CalendarView from \"./manageservices/calendarview.vue\";\n//import CalendarView from \"./manageservices/view-service.vue\";\nimport CalendarViewEvents from \"./manageservices/view-events.vue\";\nimport CalendarViewEventsDashboard from \"./manageservices/view-events-dashboard.vue\";\nexport default {\n components: {\n card,\n// CalendarView,\n CalendarViewEvents,\n CalendarViewEventsDashboard\n },\n data () {\n return {\n hybridshowlog:1,\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_labobject_view', (v) => {\n this.hybridshowlog=2\n\t\t})\n },\n beforeDestroy () {\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dashboard.vue?vue&type=template&id=59b83eca&\"\nimport script from \"./dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./dashboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <div id=\"app\" class=\"container-fluid\">\n\n\t\t\t\t\t<!-- ------ if warning --------------- -->\n<div \n\tv-if=\"warning===true\"\n>\n \t\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-3 order-first \" >\n <br>\n </div>\n\n <div class=\"col-8 order-last\" >\n <br>\n\n\n\t\t\t\t\t\t<h2> Welcome to Swarmlab-venus! </h2>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\tYou are now <b>connected to the local Swarmlab client.</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tThat means that <b>at the moment you are offline</b> and can only <b>work locally on your PC.</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\tTo <u>connect to the server</u> please <i>visit the \"Network->Join\" Menu and click on \"connect\".</i>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\t<b>DISCLAMER:</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tWhen connecting to other \"Networks\" <b>your host is becoming part of a network</b> of multiple other computers that are also connected.\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tThis means that communication between those hosts is unlimited (no firewall).\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\tSince docker is a contained virtual environment this is <b>VERY SAFE</b> \n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<b>BUT</b>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tto be absolutely secure, like when connecting to any network:\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t <li>\n\t\t\t\t\t\t\t\tplease make sure <b>your passwords are strong</b> (and obviously <b>change all defaults</b> like the ones provided for the downloadable docker images or our labs, since they are publicly available)\n\n\t\t\t\t\t\t\t </li>\n\t\t\t\t\t\t\t <li>\n\t\t\t\t\t\t\t\tdon't connect to hosts you don't trust (e.g. when using the hybrid only trust relliable sources)\n\t\t\t\t\t\t\t </li>\n\t\t\t\t\t\t\t <li>\n\t\t\t\t\t\t\t\tbe aware that you are in a public network (like an airport e.g.) and act accordingly\n\t\t\t\t\t\t\t </li>\n\t\t\t\t\t\t\t</ul>\n\n\t\t\t\t\t\t <div class=\"row\" >\n\t\t\t\t\t\t\t\t\t<div class=\"col-5 order-first \" >\n \t\t\t\t\t\t\t\t\t<b>You can always check your connection status at the top right</b>\n\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t <div class=\"col-7 order-last\" >\n \t\t\t\t\t\t<img src=\"@/assets/img/warning.png\" alt=\"...\" >\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t </div>\n \t\t\t\t\t<br>\n \t\t\t\t\t<br>\n <h4 class=\"text-warning\"> \n Please make sure all users on your system have a strong password!\n </h4>\n <h5 class=\"text-info\"> \n <span class=\"text-dark\">Advice:</span> If at all unsure (e.g. <span class=\"text-primary\">if your machine has personal data on it</span>) you can ofcourse use our image and launch a virtual machine to be absolutely isolated.\n </h5>\n\n\t\t\t\t\t\t <div class=\"row\" >\n\t\t\t\t\t\t\t\t\t<div class=\"col-3 order-first \" >\n\t\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\t\t</div>\n\n <div class=\"col-8 order-last\" >\n\n\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\tclass=\"btn btn-outline-danger\" \n\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t@click=\"setWarning\">\n\t\t\t\t\t\t\t\t\tYes I understad and will be careful</button>\n\t\t\t\t\t\t\t</div>\n </div>\n </div>\n\n \t\t\t\t\t </div>\n \t\t\t\t </div>\n </div>\n\n\n </card>\n\n</div>\n\n\t\t\t\t\t<!-- ------ else warning --------------- -->\n<div \n\tv-else\n>\n\n<nav class=\"navbar navbar-light navbar-expand-md bg-light justify-content-md-center justify-content-start\">\n <b-navbar-brand class=\"logo simple-text ti-swarmlab text-secondary\">\n Swarmlab.io\n </b-navbar-brand>\n <div class=\"navbar-collapse collapse justify-content-between align-items-center w-100\" id=\"collapsingNavbar2\">\n\n\n <ul class=\"navbar-nav mx-auto text-md-center text-left\">\n\n\n\n <b-nav-item href=\"https://git.swarmlab.io:3000\" target=\"_swarmlabgit\"> Swarmlab_git </b-nav-item>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"#\">\n -\n </a>\n </li>\n <li class=\"nav-item my-auto\">\n <a class=\"nav-link navbar-brand mx-0 d-none d-md-inline\" href=\"\">Venus</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"#\">\n -\n </a>\n </li>\n <b-nav-item href=\"https://gitter.im/swarmlab-hybrid/community\" target=\"_gitter\"> Join_us_on_Gitter </b-nav-item>\n <b-nav-item href=\"https://vimeo.com/showcase/7887267\" target=\"_vimeo\"> Follow_us_on_Vimeo </b-nav-item>\n </ul>\n\n <ul class=\"nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap\">\n\t\t\t<!-- --------------- socket connection -->\n <!--\n <b-nav-item \n @click=\"onAction('check')\"\n\t\t\t\t\t\t\t>Check Connection Status:</b-nav-item>\n -->\n <b-nav-item \n v-if=\"issocket === 'close'\"\n @click=\"onAction('connect')\"\n >Agent reconnect</b-nav-item>\n <b-nav-item \n v-else\n >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 @click=\"onAction('connect')\"\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\t\t\t\t\t\t\t\t>\n </a> \n </li>\n\t\t\t<!-- --------------- socket connection -->\n\t\t\t<!-- --------------- wg connection -->\n <!--\n <b-nav-item >Server</b-nav-item>\n <li class=\"nav-item\"\n v-if=\"isconnect!==true\"\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-danger\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are disconnected from hybrid_server\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n <li class=\"nav-item\"\n v-else\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-success\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are connected hybrid_server\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n -->\n\t\t\t<!-- --------------- wg connection -->\n <b-nav-item > </b-nav-item>\n </ul>\n </div>\n</nav>\n\n\n <!-- ***************** container items ****************** -->\n <b-row >\n <b-col cols=\"12\" >\n\n\n\n<div class=\"d-flex\" id=\"wrapper\">\n\n <!-- Sidebar max -------------------------------- -->\n <div class=\" bg-light border-right\" id=\"sidebar-wrapper\"\n style=\"width: 15rem;\"\n\t\t\t\tv-if=\"sidemenou == 'max'\"\n\t\t>\n <div class=\"list-group list-group-flush\"\n\t\t\t>\n\n <!-- Menou Dashboard -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-dashboard variant=\"light\" name=\"Dashboard\" class=\"ti-dashboard list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('dashboard') }\" @click=\"hybrid('dashboard')\" > Dashboard</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-dashboard\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"dashboard\" class=\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_dashboard')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_dashboard') }\"> Dashoard</b-list-group-item>\n<!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Profile\" class=\"m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_profile')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_profile') }\"> Profile</b-list-group-item>\n-->\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou Settings -->\n<!-- enableprofilehere\n\t\t\t <b-list-group-item v-b-toggle.hybrid-profile variant=\"light\" name=\"Local\" class=\"ti-user list-group-item list-group-item-action\" v-on:click=\"setActive('profile','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('profile') }\" @click=\"hybrid('connect-server')\" > Profile</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-profile\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n-->\n<!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"profile\" class=\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('profile','profile_profile')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('profile_profile') } \" > Local</b-list-group-item>\n -->\n<!-- enableprofilehere\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Settings\" class=\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('settings','profile_settings')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('profile_settings') }\" @click=\"hybrid('connect-server')\"> Settings</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou container -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-container variant=\"light\" name=\"Local\" class=\"ti-package list-group-item list-group-item-action\" v-on:click=\"setActive('container','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('container') }\" @click=\"hybrid('bootstrap')\" > Instances</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-container\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('container','hybrid_container')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_container') }\" @click=\"hybrid('bootstrap')\"> Container</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n <!-- Menou hybrid -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-hybrid variant=\"light\" name=\"Local\" class=\"ti-loop list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('hybrid') }\" @click=\"hybrid('manage_service')\" > Network</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-hybrid\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Hybrid\" class=\"ti-target m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_instances')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_instances') }\" @click=\"hybrid('manage_service')\"> Join</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_deploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_deploy') }\" @click=\"hybrid('manage_deploy')\"> Deploy</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou shared -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-shared variant=\"light\" name=\"Local\" class=\"ti-loop list-group-item list-group-item-action\" v-on:click=\"setActive('shared','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('shared') }\" @click=\"hybrid('manage_shared_app')\" > Share</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-shared\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Shared\" class=\"ti-link m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('shared','hybrid_shared')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_shared') }\" @click=\"hybrid('manage_shared_app')\"> App</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-share m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('shared','hybrid_shareddeploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_shareddeploy') }\" @click=\"hybrid('manage_shared_volume')\"> Volume</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n\n <!-- Menou private -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-private variant=\"light\" name=\"Private\" class=\"ti-home list-group-item list-group-item-action\" v-on:click=\"setActive('private','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('private') }\" @click=\"hybrid('services')\" > Private/Local</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-private\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_private')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_private') }\" @click=\"hybrid('services')\"> LabRoom</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Storage\" class=\"ti-server m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_storage')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_storage') }\" @click=\"hybrid('storage')\"> Storage</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Microservice\" class=\"ti-cloud m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_microservice')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_microservice') }\" @click=\"hybrid('microservice')\"> MicroServices</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n\n <!-- Menou builders -->\n \n\t\t\t <b-list-group-item v-b-toggle.hybrid-builders variant=\"light\" name=\"Private\" class=\"ti-stats-up list-group-item list-group-item-action\" v-on:click=\"setActive('builders','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('builders') }\" @click=\"hybrid('stats')\" > Stats</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-stats-up 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('stats')\"> stats</b-list-group-item>\n <!-- \n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"build_docker\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('builders','hybrid_docker')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_docker') }\" @click=\"hybrid('build_docker')\"> Docker</b-list-group-item>\n -->\n\t\t\t\t\t</b-collapse>\n\n\n\n\n\n <!-- Menou llo -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" > LearningObjects</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-llo\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('llo','hybrid_llo')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_llo') }\" @click=\"hybrid('llo')\"> Courses</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou close -->\n\t\t\t <b-list-group-item variant=\"light\" name=\"menou-min\" class=\"ti-angle-double-left list-group-item list-group-item-action\" v-on:click=\"onActionMenu('min')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('menou-min') }\" title=\"Minimize\"></b-list-group-item>\n\n\n\n\n </div>\n </div>\n <!-- /Sidebar max ------------------------------------ -->\n <!-- Sidebar min -------------------------------- -->\n\t\t\t<div class=\" bg-light border-right\" id=\"sidebar-wrapper1\"\n\t\t\t\t\tv-if=\"sidemenou == 'min'\"\n\t\t\t>\n\t\t\t\t<div class=\"list-group list-group-flush\"\n\t\t\t\t>\n\n <!-- Menou Dashboard -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-dashboard1 variant=\"light\" name=\"Dashboard\" class=\"ti-dashboard list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('dashboard') }\" @click=\"hybrid('dashboard')\" title=\"Dashboard\"></b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-dashboard1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"dashboard\" class=\"ti-view-grid m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_dashboard')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_dashboard') }\" title=\"Dashboard\"></b-list-group-item>\n<!--\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Profile\" class=\"m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('dashboard','dashboard_profile')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('dashboard_profile') }\"> Profile</b-list-group-item>\n-->\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou Settings -->\n<!-- enableprofilehere\n\t\t\t <b-list-group-item v-b-toggle.hybrid-profile1 variant=\"light\" name=\"Local\" class=\"ti-user list-group-item list-group-item-action\" v-on:click=\"setActive('profile','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('profile') }\" @click=\"hybrid('connect-server')\" title=\"Profile\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-profile1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Settings\" class=\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('settings','profile_settings')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('profile_settings') }\" @click=\"hybrid('connect-server')\" title=\"Profile\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou container -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-container1 variant=\"light\" name=\"Local\" class=\"ti-package list-group-item list-group-item-action\" v-on:click=\"setActive('container','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('container') }\" @click=\"hybrid('bootstrap')\" title=\"Instances\"> </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-container1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('container','hybrid_container')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_container') }\" @click=\"hybrid('bootstrap')\" title=\"Show all containers\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n <!-- Menou hybrid -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-hybrid1 variant=\"light\" name=\"Local\" class=\"ti-loop list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('hybrid') }\" @click=\"hybrid('manage_service')\" title=\"Hybrid\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-hybrid1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Hybrid\" class=\"ti-target m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_instances')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_instances') }\" @click=\"hybrid('manage_service')\" title=\"Zones\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_deploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_deploy') }\" @click=\"hybrid('manage_deploy')\" title=\"Deploy\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou shared -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-shared1 variant=\"light\" name=\"Local\" class=\"ti-loop list-group-item list-group-item-action\" v-on:click=\"setActive('shared','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('shared') }\" @click=\"hybrid('manage_shared_app')\" title=\"Shared Tools\"> </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-shared1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Shared\" class=\"ti-link m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('shared','hybrid_shared')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_shared') }\" @click=\"hybrid('manage_shared_app')\" title=\"App\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-share m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('shared','hybrid_shareddeploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_shareddeploy') }\" @click=\"hybrid('manage_shared_volume')\" title=\"Volume\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n <!-- Menou private -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-private1 variant=\"light\" name=\"Private\" class=\"ti-home list-group-item list-group-item-action\" v-on:click=\"setActive('private','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('private') }\" @click=\"hybrid('services')\" title=\"Private\"> </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-private1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_private')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_private') }\" @click=\"hybrid('services')\" title=\"LabRoom\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Storage\" class=\"ti-server m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_storage')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_storage') }\" @click=\"hybrid('storage')\" title=\"Storage\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Microservice\" class=\"ti-cloud m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('private','hybrid_microservice')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_microservice') }\" @click=\"hybrid('microservice')\" title=\"Microservices\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\n\n <!-- Menou builders -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-builders1 variant=\"light\" name=\"Private\" class=\"ti-stats-up list-group-item list-group-item-action\" v-on:click=\"setActive('builders','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('builders') }\" @click=\"hybrid('stats')\" title=\"Stats\" > </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-stats-up 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('stats')\" title=\"Show stats\"> </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 <!-- Menou llo -->\n <!--\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo1 variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" title=\"LearningObjects\" > </b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-llo1\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('llo','hybrid_llo')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_llo') }\" @click=\"hybrid('llo')\" title=\"Courses\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n-->\n\t\t\t<!-- Menou close -->\n\t\t\t\t <b-list-group-item variant=\"light\" name=\"menou-max\" class=\"ti-angle-double-right list-group-item list-group-item-action\" v-on:click=\"onActionMenu('max')\" style=\"cursor: pointer;\" title=\"Maximize\"></b-list-group-item>\n\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- /Sidebar max ------------------------------------ -->\n\n\t\t\t<!-- /#sidebar-wrapper -->\n\n <!-- Page Content -->\n\n\n \t\t<!-- content----------------------------------- -->\n\n\t\t\t\t<div class=\"w-100 p-3\" style=\"background-color: #eee;\">\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid dashboard WG DASHBOARD --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <view-dashboard\n v-if=\"hybridmenou == 'dashboard'\"\n style=\"background-color: #f8f9fa\"\n >\n </view-dashboard>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid dashboard --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage WG JOIN --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-services\n :key=\"componentKeyreload\"\n v-if=\"hybridmenou == 'manage_service'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-services>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage services --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid share WG SHARE --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-shared-app\n :key=\"componentKeyreloadshared\"\n v-if=\"hybridmenou == 'manage_shared_app'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-shared-app>\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 share WG VOLUME --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-shared-volume\n :key=\"componentKeyreloadsharedvolume\"\n v-if=\"hybridmenou == 'manage_shared_volume'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-shared-volume>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage services --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private deploy WG DEPLOY --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-deploy\n v-if=\"hybridmenou == 'manage_deploy'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-deploy>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private deploy --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid settings RM SETTINGS --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n \n\t\t\t\t\t\t <connect-server\n\t\t\t\t\t\t\t\tstyle=\"background-color: #f8f9fa\"\n\t\t\t\t\t\t\t\t\tv-show=\"hybridmenou == 'connect-server'\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t </connect-server>\n \n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid settings --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage llo --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <manage-llo\n v-if=\"hybridmenou == 'RMllo'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-llo>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage llo --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid container --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <network-table\n :key=\"componentKeyreload1\"\n v-show=\"hybridmenou == 'RMbootstrap'\"\n style=\"background-color: #f8f9fa\"\n >\n </network-table>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid container --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private bootstrap --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <services-table\n v-show=\"hybridmenou == 'RMservices'\"\n style=\"background-color: #f8f9fa\"\n >\n </services-table>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private bootstrap --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage storage --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <manage-storage\n :key=\"componentKeyreload2\"\n v-show=\"hybridmenou == 'RMstorage'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-storage>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage storage --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage microservices --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <!--\n <manage-microservices\n :key=\"componentKeyreload3\"\n v-show=\"hybridmenou == 'RMmicroservice'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-microservices>\n -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage microservices --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage stats --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-stats\n :key=\"componentKeybuilders\"\n v-if=\"hybridmenou == 'stats'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-stats>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage stats --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t</div>\n\n <!-- Page Content -->\n\n <!-- /#page-content-wrapper -->\n\n </div>\n <!-- /#wrapper -->\n\n\n </b-col>\n </b-row>\n\n\n\n\n\n<footer class=\"footer\">\n <div id=\"appfooter\" class=\"container\" style=\"max-width:75%\">\n\n\t<span data-jsl10n=\"license\" class=\"jsl10n\">Content is available under the \n\t\t\t\t<a class=\"text-info\" href=\"https://creativecommons.org/licenses/by-sa/3.0/\" target=\"_blank\">Creative Commons License</a></span>\n\t\t\t\t | \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\";\n//import NetworkTable from \"./components/mynetwork.vue\";\n//import ServicesTable from \"./components/myservices.vue\";\nimport ManageServices from \"./components/manageservices.vue\";\nimport ManageSharedApp from \"./components/manageshared.vue\";\nimport ManageSharedVolume from \"./components/managesharedvolume.vue\";\n//import ManageStorage from \"./components/mystorage.vue\";\n//import ManageMicroservices from \"./components/mymicroservices.vue\";\nimport ManageStats from \"./components/chart.vue\";\nimport ManageDeploy from \"./components/managedeploy.vue\";\n//import ManageLlo from \"./components/managello.vue\";\nimport ViewDashboard from \"./components/dashboard.vue\";\n\nexport default {\n name: 'app',\n components: {\n card,\n// NetworkTable,\n ViewDashboard,\n// ServicesTable,\n ConnectServer,\n ManageServices,\n// ManageStorage,\n// ManageMicroservices,\n ManageStats,\n ManageSharedApp,\n ManageSharedVolume,\n ManageDeploy\n// ManageLlo\n },\n data() {\n return {\n warning: true,\n componentKeyreload:1,\n componentKeyreloadshared:1,\n componentKeyreloadsharedvolume:1,\n componentKeyreload1:1,\n componentKeyreload2:1,\n componentKeyreload3:1,\n componentKeybuilders:1,\n\t\t\tsetStatusAgent:'',\n checkconnect:'',\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 beforeMount () {\n this.socketopen();\n this.socketauthenticate()\n //console.log('send')\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_server_status')\n },\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n var log = store.dispatch(\"pipelineLLO/settoken\",{\n token:this.token\n })\n },\n methods: {\n\t\t\tsetWarning(){\n\t\t\t\tthis.warning = false\n\t\t\t},\n\t\t\tasync onAction(action){\n if(action == 'check'){\n if(this.$socket.disconnected){\n \t\tvar socketStatus = 'close'\n }else if(this.$socket.connected){\n \t\tvar socketStatus = 'open'\n\t\t\t\t\t\t}\n\n if(this.isconnect){\n \t\tvar serverStatus = 'open'\n }else{\n \t\tvar serverStatus = 'close'\n\t\t\t\t\t\t}\n\n var info=\"Status<br>\"\n info+=\"Agent is \" + socketStatus+\"<br>\"\n info+=\"Server is \" + serverStatus\n\n this.$swal({\n type: 'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n //cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n //reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Yes, Reconnect!'\n\t\t\t\t\t }).then((result)=> {\n this.reconnenting(result);\n })\n }else if(action == 'connect'){\n window.location.reload();\n }\n },\n async reconnenting(result) {\n if(result.value){\n //window.location.reload()\n this.componentKeyreload += 1\n this.componentKeyreloadshared += 1\n this.componentKeyreloadsharedvolume += 1\n this.componentKeyreload1 += 1\n this.componentKeyreload2 += 1\n this.componentKeyreload3 += 1\n this.componentKeybuilders += 1\n }\n },\n\t\t\tasync serverstatus(action){\n var log = store.getters['pipelineLLO/getstatus']\n if(log.data.swarmlab == 'active' && log.data.hybrid == 'Online'){\n this.isconnect=true\n }else{\n this.isconnect=false\n }\n\n },\n onActionMenu(action){\n if(action == 'max'){\n \t\t\tthis.sidemenou = 'max'\n }else if(action == 'min'){\n \t\t\tthis.sidemenou = 'min'\n\t\t\t\t\t}\n\t\t\t\t//console.log(action)\n\t },\n hybrid(action) {\n this.hybridmenou = action\n console.log(action)\n if(action == 'bootstrap'){\n\t\t this.$root.$emit('hybrid_refresh_dockerservices')\n }else if(action == 'dashboard'){\n console.log('dashboard '+action)\n }else if(action == 'connect-server'){\n\t\t this.$root.$emit('hybrid_connect_server')\n }else if(action == 'llo'){\n console.log('llo '+action)\n\t\t //this.$root.$emit('hybrid_manage_llo')\n }else if(action == 'services'){\n\t\t this.$root.$emit('hybrid_refresh_availableservices')\n }else if(action == 'manage_service'){\n\t\t //this.$root.$emit('hybrid_manage_service')\n }else if(action == 'storage'){\n\t\t //this.$root.$emit('hybrid_manage_service')\n }else if(action == 'microservice'){\n\t\t //this.$root.$emit('hybrid_manage_service')\n }else if(action == 'manage_deploy'){\n }\n },\n isActive: function (menuItem) {\n //console.log('active ' + menuItem);\n return this.activeItem === menuItem\n },\n isActiveSub: function (menuItem) {\n //console.log('activesub ' + menuItem);\n return this.activeItemSub === menuItem\n },\n setActive: function (menuItem,menuItemSub) {\n //console.log('set ' + menuItem);\n this.activeItem = menuItem // no need for Vue.set()\n this.activeItemSub = menuItemSub // no need for Vue.set()\n },\n showdiscl() {\n var winfo='<code class=\"precode text-info\" >Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '3. Neither the name of Swarmlab.io nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += 'THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</code>';\n\nlet info = '<div class=\"text-left\" style=\"height: 550px; overflow-y: scroll;\"><b><p>'+winfo+'</p></b></div>'\n this.$swal({\n type: 'Info',\n title: 'Legal Disclaimer and Notices',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n},\n async socketopen () {\n this.$socket.client.open();\n this.$socket.client.connect();\n // console.log(this.$socket.client.connect)\n\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\t\t\t\t //console.log('interval exec reconnect ')\n },\n async socketclose () {\n this.$socket.client.close();\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 'issocket': function(newVal, oldVal) {\n console.log('value changed from ' + oldVal + ' to ' + newVal);\n if(newVal !== \"open\" ){\n if (!this.checkconnect) {\n this.checkconnect = setInterval(() => {\n this.socketreconnect()\n }, 30000)\n }\n\t\t\t\t console.log('interval run ')\n }else if(newVal == \"open\"){\n if (this.checkconnect) {\n clearInterval(this.checkconnect)\n\t\t\t\t console.log('interval stop ')\n\t\t\t\t console.log(this.checkconnect)\n }\n }\n\n if(newVal !== \"open\"){\n if (window.countInterval) clearInterval(window.countInterval)\n clearInterval(this.checkconnect)\n this.checkconnect = window.setInterval(() => {\n this.socketopen()\n }, 30000)\n }else{\n clearInterval(this.checkconnect)\n }\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/*\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 *\n * === onError\n *\n */\n error(error) {\n //console.log(\"socket error \"+JSON.stringify(error))\n this.issocket = 'close'\n/*\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 *\n * === connect_error\n * \n */\n connect_error(error) {\n console.log(\"socket connect_error \"+JSON.stringify(error))\n this.issocket = 'close'\n/*\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 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/*\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 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/*\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 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/*\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 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/*\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 *\n * === connected \n *\n */\n socket_id_emit(val) {\n //console.log(\"socket id from server \"+JSON.stringify(val))\n this.issocket = 'open'\n/*\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 async message_err(val) {\n console.log(\" message_err \"+JSON.stringify(val))\n },\n async message_close(val) {\n console.log(\" message_close \"+JSON.stringify(val))\n },\n async mywgcheckStatus_res(val) {\n console.log(\"mywgcheckStatus_res \"+JSON.stringify(val))\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=c1ce6486&\"\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';\nimport { io } from 'socket.io-client';\n\n\nvar socketurl = ApiConfig.url_80;\nconst socket = io(socketurl, {\n autoConnect: true,\n reconnection: true,\n reconnectionDelay: 500,\n maxReconnectionAttempts: Infinity,\n pingInterval: 25000,\n pingTimeout: 60000,\n transports: [ 'websocket', 'polling' ],\n secure: true,\n rejectUnauthorized: false\n});\n\n\nVue.use(VueSocketIOExt, socket);\n\n\nVue.use(BootstrapVue);\n\n\nconst config = {\n aria: true,\n classNames: {\n valid: \"is-valid\",\n invalid: \"is-invalid\"\n },\n classes: true,\n delay: 0,\n dictionary: null,\n errorBagName: 'vErrors', // change if property conflicts\n events: 'input|blur',\n fieldsBagName: 'vFields',\n i18n: null, // the vue-i18n plugin instance\n i18nRootKey: 'validations', // the nested key under which the validation messages will be located\n inject: true,\n locale: 'en',\n validity: false,\n useConstraintAttrs: true\n};\n//Vue.use(ValidationProvider,config);\nVue.component('ValidationProvider', ValidationProvider);\n\n\n\n\nVue.config.productionTip = false\nnew Vue({\n el: '#app',\n store,\n wait: new VueWait(),\n render: h => h(App)\n})\n\n","module.exports = __webpack_public_path__ + \"img/venus1.826d0774.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.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-volume-localclient-view.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/index.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-volume-localserver-view.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAB3RJTUUH5QQbCzgJmtO9cQAAAiFJREFUeNrlWlu2wyAIDNRddT9dVPfTZfX0/ubk+kBlAGN+W4VhkJfSYfA93p9f75rv60kWuvGx+ZcQTCPYO3uR5v6EcvGzkr1H4AqwtF7DEMn6bEfzOLYA36OglH0tItJqrLtmATT4EfbNDNCrzCqewlZgWnFAm33peo7ApAb43BrJPowEf13/fT3JqsSVYkgezNeMgJD7eH9+JZmhegGk0Ut7M1KRHnfXBi+VzRHAe3rY9u0w37nMlXgB7wK09BvvxH74NOhmgAjse1WIjAAyCsYjdXIE4BpGGF1Hs0egJViyd24PqU4l+dL1hLq0mJ0ES/bQMD6NMoSo6XvYlOrU0odyPbtnJydplTUJmQpaXjMDTT0pEmiUEWqeQ5EAe9QHFAWklyFoxSZI9XZ41S5QKxPQym2wRiHEEWd36NSXzQJ3iAUj5Td7tqIRjMfe/bgX+8V5wA6ecMZoekfnzX6OXK61m3fyhhKWf6XwzHQmIvstErNpcHbMFB38+bo8tf6Q2xBliBrAmad2NaM1CyGrxwy98aZ3TFaafKk9SUVOlmuyRnQrpkHNAensWBvZD1TrgAiKIxuhq97T0T6KIUaJU0130Z7ASfSDRnhtgyACLaEEWqW+WTns5dJWx6UlJx3Gn/fVW9cR0BI+yzYyKMNufUcKJq0pT4/B3XK4VUMVzgDRbpRpddCzMYZWBKwZYGlF0Jp1xFIeALkej37+0RXjH+Ju1ERSh/vYAAAAAElFTkSuQmCC\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.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&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-stats.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/share2-512.118b3253.png\";","module.exports = __webpack_public_path__ + \"img/warning.f9cebb9b.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./request-service.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.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/cloudvolume--512.9a2838d2.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.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-shared-view.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/index.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/index.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-volume-view.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/index.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-volume.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.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/index.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-volume.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/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogView.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/hybrid-1.852eef88.png\";"],"sourceRoot":""}
|