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
610 KiB

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?9b05","webpack:///./src/components/mynetwork/dockerservices.vue?4fbe","webpack:///./src/components/mynetwork/AdhocView.vue?a8e6","webpack:///./src/assets/img/docker.png","webpack:///./src/assets/img/video1.png","webpack:///./src/assets/img/code-128.png","webpack:///./src/assets/img/book.png","webpack:///./src/components/manageservices/join-service.vue?c30c","webpack:///./src/components/mynetwork/availableservices.vue?f5a7","webpack:///./src/components/manageservices/llo-view.vue?1d94","webpack:///./src/assets/img/penguin21a.png","webpack:///./src/components/mynetwork/mytable.vue?e698","webpack:///./src/components/manageservices/manage-service.vue?39c7","webpack:///./src/App.vue?a59e","webpack:///./src/config/index.js","webpack:///./src/store/modules/create_pipelineLLO.js","webpack:///./src/store/index.js","webpack:///./src/components/myconnect-server.vue?3488","webpack:///./src/components/manageservices/manage-service.vue?5285","webpack:///./src/components/Card.vue?8a3c","webpack:///src/components/Card.vue","webpack:///./src/components/Card.vue?2e9d","webpack:///./src/components/Card.vue","webpack:///src/components/manageservices/manage-service.vue","webpack:///./src/components/manageservices/manage-service.vue?3ae5","webpack:///./src/components/manageservices/manage-service.vue","webpack:///./src/components/mynetwork/myconnect-server.vue?65fb","webpack:///src/components/mynetwork/myconnect-server.vue","webpack:///./src/components/mynetwork/myconnect-server.vue?d4d0","webpack:///./src/components/mynetwork/myconnect-server.vue","webpack:///src/components/myconnect-server.vue","webpack:///./src/components/myconnect-server.vue?ec3f","webpack:///./src/components/myconnect-server.vue","webpack:///./src/components/mynetwork.vue?39b5","webpack:///./src/components/mynetwork/mytable.vue?bbc9","webpack:///src/components/mynetwork/mytable.vue","webpack:///./src/components/mynetwork/mytable.vue?d75f","webpack:///./src/components/mynetwork/mytable.vue","webpack:///./src/components/mynetwork/AdhocView.vue?e294","webpack:///src/components/mynetwork/AdhocView.vue","webpack:///./src/components/mynetwork/AdhocView.vue?4e74","webpack:///./src/components/mynetwork/AdhocView.vue","webpack:///./src/components/mynetwork/dockerservices.vue?0db8","webpack:///src/components/mynetwork/dockerservices.vue","webpack:///./src/components/mynetwork/dockerservices.vue?a364","webpack:///./src/components/mynetwork/dockerservices.vue","webpack:///src/components/mynetwork.vue","webpack:///./src/components/mynetwork.vue?0608","webpack:///./src/components/mynetwork.vue","webpack:///./src/components/myservices.vue?0dd5","webpack:///./src/components/mynetwork/availableservices.vue?46d4","webpack:///src/components/mynetwork/availableservices.vue","webpack:///./src/components/mynetwork/availableservices.vue?4b33","webpack:///./src/components/mynetwork/availableservices.vue","webpack:///src/components/myservices.vue","webpack:///./src/components/myservices.vue?48ae","webpack:///./src/components/myservices.vue","webpack:///./src/components/manageservices.vue?7f31","webpack:///./src/components/manageservices/join-service.vue?a4b6","webpack:///src/components/manageservices/join-service.vue","webpack:///./src/components/manageservices/join-service.vue?ad7a","webpack:///./src/components/manageservices/join-service.vue","webpack:///src/components/manageservices.vue","webpack:///./src/components/manageservices.vue?90e3","webpack:///./src/components/manageservices.vue","webpack:///./src/components/managedeploy.vue?3946","webpack:///./src/components/manageservices/deploy-bootstrap.vue?ddc3","webpack:///src/components/manageservices/deploy-bootstrap.vue","webpack:///./src/components/manageservices/deploy-bootstrap.vue?d6b7","webpack:///./src/components/manageservices/deploy-bootstrap.vue","webpack:///./src/components/manageservices/view-service.vue?c258","webpack:///./src/components/manageservices/LogView.vue?c31b","webpack:///src/components/manageservices/LogView.vue","webpack:///./src/components/manageservices/LogView.vue?d4f1","webpack:///./src/components/manageservices/LogView.vue","webpack:///src/components/manageservices/view-service.vue","webpack:///./src/components/manageservices/view-service.vue?4cff","webpack:///./src/components/manageservices/view-service.vue","webpack:///src/components/managedeploy.vue","webpack:///./src/components/managedeploy.vue?d326","webpack:///./src/components/managedeploy.vue","webpack:///./src/components/managello.vue?0578","webpack:///./src/components/manageservices/llo-search.vue?787a","webpack:///src/components/manageservices/llo-search.vue","webpack:///./src/components/manageservices/llo-search.vue?7e74","webpack:///./src/components/manageservices/llo-search.vue","webpack:///./src/components/manageservices/llo-view.vue?5596","webpack:///./src/components/asciiplayer.vue?a01f","webpack:///src/components/asciiplayer.vue","webpack:///./src/components/asciiplayer.vue?9de9","webpack:///./src/components/asciiplayer.vue","webpack:///src/components/manageservices/llo-view.vue","webpack:///./src/components/manageservices/llo-view.vue?105f","webpack:///./src/components/manageservices/llo-view.vue","webpack:///src/components/managello.vue","webpack:///./src/components/managello.vue?ff75","webpack:///./src/components/managello.vue","webpack:///./src/components/dashboard.vue?8f0a","webpack:///./src/components/manageservices/calendarview.vue?0eb7","webpack:///src/components/manageservices/calendarview.vue","webpack:///./src/components/manageservices/calendarview.vue?809f","webpack:///./src/components/manageservices/calendarview.vue","webpack:///./src/components/manageservices/view-events.vue?7487","webpack:///src/components/manageservices/view-events.vue","webpack:///./src/components/manageservices/view-events.vue?84ce","webpack:///./src/components/manageservices/view-events.vue","webpack:///src/components/dashboard.vue","webpack:///./src/components/dashboard.vue?8c84","webpack:///./src/components/dashboard.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/components/manageservices/view-service.vue?448b","webpack:///./src/assets/img/penguinfledgling.png","webpack:///./src/assets/img/library.png","webpack:///./src/components/manageservices/deploy-bootstrap.vue?1455","webpack:///./src/assets/img/academy.png","webpack:///./src/components/manageservices/calendarview.vue?aa18","webpack:///./src/components/manageservices/llo-search.vue?f8b4","webpack:///./src/components/mynetwork/myconnect-server.vue?c996","webpack:///./src/assets/loading.gif","webpack:///./src/components/manageservices/view-events.vue?5719","webpack:///./src/components/manageservices/LogView.vue?a582","webpack:///./src/assets/img/hybrid-1.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_m","token","on","$event","onAction","issocket","isconnect","sidemenou","staticStyle","directives","rawName","modifiers","class","active","isActive","setActive","hybrid","isActiveSub","onActionMenu","_e","hybridmenou","expression","componentKeyreload","showdiscl","staticRenderFns","ApiConfig","namespaced","state","socketStatus","status","statusswarmlab","config","getters","getsocketStatus","container","gettoken","getlog","log","getconfig","getstatus","getstatusswarmlab","mutations","set_socketStatus","set_token","set_status","add_log","add_config","add_statusswarmlab","console","JSON","stringify","actions","addstatusswarmlab","commit","addconfig","addlog","tt","message","tailed_path","date","setsocketStatus","settoken","setstatus","rootGetters","params","action","options","headers","Authorization","sock_server_l","url_80","axios","post","e","test","R","ERROR_str","ERROR","location","href","track","course","chapter","evaluation","error","info","begin","end","nodename","nodeip","nodeid","noderole","nodezones","nodedesc","instance","bootstrapnameid","bootstrapstackname","code","dir","file","swarmlabname","node","bootstrapstackid","swarmlabservice","deploy","Vue","use","Vuex","BootstrapVue","component","FontAwesomeIcon","library","add","faIcons","faSort","faChevronUp","faChevronDown","faBars","faJs","faVuejs","fab","fas","faFontAwesome","dom","watch","Store","pipelineLLO","domProps","type","indexOf","_k","keyCode","setFilter","target","composing","searchFor","resetFilter","ref","scopedSlots","_u","fn","valid","errors","ariaMsg","ariaInput","_s","vuetablekey","apiurl","httpOptions","fields","itemActions","sortOrder","multiSort","perpage","paginationComponent","moreParams","css","table","onPaginationData","loadsuccess","onLoadError","props","rowData","rowIndex","paginationInfo","pagination","onChangePage","$slots","_t","header","title","subTitle","String","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","CONFIG","workerkey","swarmlab_public_wgkey","server_ip","wg_ip","privatekey","publickey","serverstatus","$socket","hybridshowdata","ID","Image","Names","RunningFor","Networks","CreatedAt","Status","Ports","swarmlabname_size","size","swarmlabname_port","port","swarmlabname_git","git","client","emit","val","slot","runextenderror","clear","cmOptions","keyMap","infoFilter","onCmCursorActivity","onCmReady","onCmFocus","onCmCodeChange","socketonline","extenderror","tryConsole","ssl","getinfo","editchoice","optionsedit","searchLLOactive","ADOC_html_code","challenge","tryLLO","service","activecount","remove","activeField","bootstrap","firstbootstrap","htmlasciitmp","datafile","datadir","LearningObject","showllo","showlloedit","topwindow","index","cm","chg","a","b","newCode","selected","myCm","codemirror","$wait","start","setRefresh","actionrowindex","$root","$emit","componentKeyreloadservice","hybridoptions","$set","setHybridoptions","testactionrowindex","checkactionrowindex","refreshVuetable","swarmlab1info","html","showCloseButton","showLoaderOnConfirm","allowOutsideClick","cancelButtonText","showCancelButton","reverseButtons","focusCancel","confirmButtonText","onActionHybrid","Replicas","bootstrapimage","bootstrapname","bootstrapdateend","bootstrapnetwork","bootstrapdatebegin","ports","callback","invalid","isDeployValid","image","isValid","showInfo","stackname","network","cpu","memory","networkport","model","$$v","timePickerOptions","add_deploy","Array","isArray","usersjoin","_i","$$a","$$el","$$c","checked","$$i","concat","DatePicker","ValidationProvider","card","isAllValid","hybridshowlog","onActionLog","$swal","icon","datatitle","_l","exercise_file","activeItem","subtitle","desc","viewllo","style","progress","$$selectedVal","filter","map","_value","searchcourselang","multiple","searchcourselevel","courses","courseshow","getprogress","llo","coursesnew1","level","lang","license","hybridshow","asciinemasource","sourcevimeo","dofin","asciidocurl","completiontracking","oncompletiontracking","courseread","height","source","themeClasses","items","showDate","hour","minute","disablePast","disableFuture","showTimes","displayPeriodUom","displayPeriodCount","startingDayOfWeek","periodChanged","useTodayIcons","displayWeekNumbers","selectionStart","selectionEnd","timeFormatOptions","setSelection","finishSelection","onDrop","onClickDay","onClickItem","headerProps","setShowDate","begindate","bd_y","bd_m","bd_d","enddate","ed_y","ed_m","ed_d","getevents","labtext","originalItem","startDate","endDate","urltype","NetworkTable","ViewDashboard","ServicesTable","ConnectServer","ManageServices","ManageDeploy","ManageLlo","show","SwarmabAsciiLabTemplate","menuItem","activeItemSub","menuItemSub","store","VueSweetalert2","VueWait","socketurl","socket","io","autoConnect","reconnection","reconnectionDelay","maxReconnectionAttempts","Infinity","pingInterval","pingTimeout","transports","secure","rejectUnauthorized","VueSocketIOExt","productionTip","el","wait","h","App"],"mappings":"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","file":"js/app.efbf052d.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dockerservices.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdhocView.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/docker.7b56657d.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATWSURBVHhe7Z0tsNw2FIUfKwwMDCwMLAwsDAwsLAzJTGFYYWBhYGBgYGFRJrAwExTYKSpt79mMMhv1eG1p5bv28/fNHOK1Ze31saQr/90BAAAAAAAAAAAAAAAAAAAAAAAAAAAAwH3nu9DT0MvQu9DvaFJvQ4qT4rV7dOB/Df0T+hc166+Q4qc47o4fQn+G3B9DbVIcFc9dUM5690dQv9SK/hLaPL+F3B9AY6TxwWZ5EnKVLtIgR3/gWUjrom/1U0jxUZxc/CS1BJvsDh6EPoZcpXfVh22EH0OfQ1Px3NzA8HXIVVbLdzmK3QA6qZQ2u7hqnLUZHoZcJTfp1J2h2LqWQF3BFmIrk576rrqCEs3+GDRmcvHV8lsh8ykr0VzFafaqrtybEIzjj1AdY2Vct+Dn0HmrZEetahVgHDrb6hhrfJCJpqfd5J4d/SutgXEo+HWMdeJloGPpWqAia4DvQzAOHYQ6xmsbQMfQde+1rAEehWAcmQZQ5jGV1jthgAQyDKCUrufqLQZIYE0DnKd09T6WCAMksJYBlK1NTTmfS63C1FVeDJDAaANMpXROGg9oXCDc7xgggVEGUDnari7LSRlAnc259TBAAtcaYGlKJ6lc7c/h1scACfQaQE330pt01CXM3YzqtsMACbQaoCWl0yBw6dS92x4DJLDUAErpnoeWpHRaR+lfy2VlVw4GSGCJAVpTutO1/EZceRgggUsGUL/9IVT/7nSe0vXgysQACTgDvA/JBPVyJ5fS9eDKxgAJOAMskQyibUfh9oEBEmg1wJKUrge3LwyQwItQHWOnlpSuB7dPDJDA1IWYop6Urge3bwyQwJQBrknpenB1wAAJOAPo4F+T0vVQ10HCAAk4A5zuyU+mroOEARLAAAcHAxwcDHBwMMDBwQAHBwMcHAxwcDDAwcEABwcDHBwMcHAwwMHBAAcHAxwcDHBwnAH+DmVT10HCAAk4A0i67TvzhZyuDhgggSkDFI168GMOt28MkMCcAYr0KPia9wm6fWKABFoeDFnzTmG3PwyQQM+jYcoS9Kj4yGcF3H4wQALOAJ9Co18AMYcrHwMk4AygDKDlFTB6hPza5wVduRgggSkDFFpfAtWbOrryMEACcwYoaD0tr9d16kkdXTkYIIGlBii0vAiyJXV022OABFoNUBj93iC3LQZIoNcAouVl0HOpo9sGAyRwjQEKI94d6NbFAAmMMEBB/f3SD0LUqaNbBwMkMNIAhZ7U0f2GARJYwwAFlX3po1BzwgAJrGmAQkvqeC4MkECGAQr1hyHnhAESyDSAaEkdrQH4bvBY9Dn5OsZrGqCg1PFV6FLqaAcQa7yl8sioWa5jnGGAwqXU8VSReqEmHGAc+hh3HWMdkGweh+rU8e5ltUDSICLr5YX3HY2nXBOsPvpWnKeOJ1fUlZNu4dD7iGthpS0MtL929VMfLHgWgn50YcbFNbP/X4RG/VMjRbUEdAdtKF5Tgy7FOeMZgGbcWKBIYwKNZNe8Z/0+oGZdZ/2liZhb9v0X0eTB0m/XoD5trumvUdPUM5+M5qW47mKGVS3BVP+F+qR5lam7dDaLpi9bLiqg/0tn/a6n1TWa1a1FmslacisS+hInxUsp9O7OegAAAAAAAAAAAAAAAAAAAAAAAAAAAADYEXd3/wFf5K8vCdtHPAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAURSURBVHhe7ZgtsBRHFEafQyKRSCQSiYxEIpFIJDIOiYyMRCKRkUgkMhKJxCb3UNVVt296l519O5vp2fNVnaoVs9N/p//mzhhjjDHGGGMW51nwPPEm+P0AL4L8LJiNhwFm4BjAP4O/gq/BPyvwI+D9lEN5CPI4mDkPA9rxOsiT4VNAWzNfglG/ZP4O8n8+Bu2dTL42sSh3UR4E/PFt8CFYa5DP5XNAvWgoQi5u4Mp5GvwWUL82URB61JZr0oR5H1C3/8jBgPPA6M9bByloFKvUtUOZ74JTZu0WQQxWj58/Rg/MxveAFeJV8Ci4dHgn76YMyhrVYUZ2I0CFmcnqdp+tgmV95ll+CrsVoME+zJ78JDg17OUc0kbv2xu7FyDDWedlMAqHYJb4rR1+12axABy86EiWRg5g7WRZoUNz6veCdmLO8N5rCEkZbXsAyv4WjJ5dg3bdrbST+jHq9fG+N42jHc7e1+6W1752USYzkkbT0DXEoPPWuKq1AWawqD+y0Z41byvtGg/tYxxb36/67egDvGBLoZF8A/gjWEOIc6Eu3A742LPkrHGNIMKozo2pBKjhKyGdzn12jZl8CM4J9A0r1Na/VO5agBrOFawOa9zTGXSW1jW+MayZmxKghfMKK8N9T/SIhFBbW9aX5CYFyGFVYH8ete8Q3AjouGsffNfIzQvQwl7N1fXY9sA5gmW+XmFnjgKUcD0btRXoi71FAUoUoEcBEgpQUID5owAlCtCjAAkFKCjA/FGAEgXoUYCEAhQUYP4oQIkC9ChAQgEKCjB/FKBEAXoUIKEABQWYPwpQogA9CpBQgIICzB8FKFGAHgVIKEBBAeaPApQoQI8CJBSgoADzRwFKFKBHARIKUFCA+aMAJQrQowAJBSgowPxRgBIF6FGAhAIUFGD+KECJAvQoQEIBCgowfxSgRAF6FCChAAUFmD8KUKIAPQqQUICCAswfBShRgB4FSChAQQHmjwKUKECPAiQUoKAA80cBShSgRwESClBQgPmjACUK0KMACQUoKMD8UYASBehRgIQCFBRg/ihAiQL0KEBCAQoKMH8UoEQBehQgoQAFBZg/ClCiAD0KkFCAggLMHwUoUYAeBUgoQEEB5o8ClChAjwIkFKCgAPNHAUoUoEcBEgpQUID5owAlCtCjAAkFKCjA/FGAEgXoUYCEAhSOCfAgeJ54GVDYKeT/NR4F14gC9BwV4FPA4LwJ3gV03udg9Oyl4P0fAyqOVJSPbJfKtQV4GNCGNkGYVNSh8j0Y1WkEfZT/+yFok6v12eOA3EuALUEH0VgaRAPPDe8YvR/uI8DTIE+UL8GojK0xjQCVHwEr1NuAzj81lxKgDTir1ZLZuzWmFaDCIDAYr4JjW8a5AnBG2cOAV3YjQIbVgb12tFUsEQCR2FNZaUbP74FdCpChfZwb2qHoFAGeBQi0p5l+iN0LkGHwj7WXleOW+gMWN5hOhHbteBGw1MIphzFmV3u+8TrgXeyvvJuBGJW9F74GtLNdd5dSr5KjMk7loAC8+H3AoYpBuuRd/NQgC4JxtVr7+8MlQWD6j3q3/qMta4eDaptUTRbqcazvfgpw7pXq/wiNo57Udwt7NHWgLnQ2srazxhaDhO2DFGJ8CzY/4L8K9WeluubezRJOmchoNpQ1ZWAZ5TvAk8BMELaJ0UCeA0ummSwcvkaDeQ4KMGEU4MajADceBbjxKMCNhyshA3cJvO8bY4wxxpi95O7uX6RC0MISi/00AAAAAElFTkSuQmCC\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./join-service.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./availableservices.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./llo-view.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/penguin21a.a2b45b3f.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mytable.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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\"}},[_c('nav',{staticClass:\"navbar navbar-light navbar-expand-md bg-light justify-content-md-center justify-content-start\"},[_c('b-navbar-brand',{staticClass:\"logo simple-text ti-swarmlab text-secondary\"},[_vm._v(\" Swarmlab.io \")]),_c('div',{staticClass:\"navbar-collapse collapse justify-content-between align-items-center w-100\",attrs:{\"id\":\"collapsingNavbar2\"}},[_c('ul',{staticClass:\"navbar-nav mx-auto text-md-center text-left\"},[_c('b-nav-item',{attrs:{\"href\":\"https://git.swarmlab.io:3000\",\"target\":\"_swarmlabgit\"}},[_vm._v(\" Swarmlab_git \")]),_vm._m(0),_vm._m(1),_vm._m(2),_c('b-nav-item',{attrs:{\"href\":'https://api-client.swarmlab.io:8088/?token='+ _vm.token,\"target\":\"_swarmlab\"}},[_vm._v(\" Swarmlab_Cloud \")])],1),_c('ul',{staticClass:\"nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap\"},[_c('b-nav-item',{on:{\"click\":function($event){return _vm.onAction('check')}}},[_vm._v(\"Check Connection Status:\")]),_c('b-nav-item',[_vm._v(\"Agent\")]),(_vm.issocket === 'close')?_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"ti-link nav-link text-danger\",attrs:{\"href\":\"#\",\"title\":\"You are disconnected from hybrid_agent\"}})]):_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"ti-link nav-link text-success\",attrs:{\"href\":\"#\",\"title\":\"You are connected hybrid_agent\"},on:{\"click\":function($event){return _vm.onAction('connect')}}})]),_c('b-nav-item',[_vm._v(\"Server\")]),(_vm.isconnect!==true)?_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"ti-link nav-link text-danger\",attrs:{\"href\":\"#\",\"title\":\"You are disconnected from hybrid_server\"}})]):_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"ti-link nav-link text-success\",attrs:{\"href\":\"#\",\"title\":\"You are connected hybrid_server\"}})]),_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-profile\",modifiers:{\"hybrid-profile\":true}}],staticClass:\"ti-user list-group-item list-group-item-action\",class:{ active: _vm.isActive('profile') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\"},on:{\"click\":[function($event){return _vm.setActive('profile','')},function($event){return _vm.hybrid('connect-server')}]}},[_vm._v(\" Profile\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-profile\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('profile_settings') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Settings\"},on:{\"click\":[function($event){return _vm.setActive('settings','profile_settings')},function($event){return _vm.hybrid('connect-server')}]}},[_vm._v(\" Settings\")])],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(\" Hybrid\")]),_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-container\",modifiers:{\"hybrid-container\":true}}],staticClass:\"ti-package list-group-item list-group-item-action\",class:{ active: _vm.isActive('container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\"},on:{\"click\":[function($event){return _vm.setActive('container','')},function($event){return _vm.hybrid('bootstrap')}]}},[_vm._v(\" Container\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-container\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\"},on:{\"click\":[function($event){return _vm.setActive('container','hybrid_container')},function($event){return _vm.hybrid('bootstrap')}]}},[_vm._v(\" Container\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-private\",modifiers:{\"hybrid-private\":true}}],staticClass:\"ti-home list-group-item list-group-item-action\",class:{ active: _vm.isActive('private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Private\"},on:{\"click\":[function($event){return _vm.setActive('private','')},function($event){return _vm.hybrid('services')}]}},[_vm._v(\" Private\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-private\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_private')},function($event){return _vm.hybrid('services')}]}},[_vm._v(\" Bootstrap\")])],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-llo\",modifiers:{\"hybrid-llo\":true}}],staticClass:\"ti-book list-group-item list-group-item-action\",class:{ active: _vm.isActive('llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Llo\"},on:{\"click\":[function($event){return _vm.setActive('llo','')},function($event){return _vm.hybrid('llo')}]}},[_vm._v(\" LearningObjects\")]),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-llo\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\"},on:{\"click\":[function($event){return _vm.setActive('llo','hybrid_llo')},function($event){return _vm.hybrid('llo')}]}},[_vm._v(\" Courses\")])],1),_c('b-list-group-item',{staticClass:\"ti-angle-double-left list-group-item list-group-item-action\",class:{ active: _vm.isActive('menou-min') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"menou-min\",\"title\":\"Minimize\"},on:{\"click\":function($event){return _vm.onActionMenu('min')}}})],1)]):_vm._e(),(_vm.sidemenou == 'min')?_c('div',{staticClass:\" bg-light border-right\",attrs:{\"id\":\"sidebar-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\",\"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-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\",\"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-profile\",modifiers:{\"hybrid-profile\":true}}],staticClass:\"ti-user list-group-item list-group-item-action\",class:{ active: _vm.isActive('profile') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\",\"title\":\"Profile\"},on:{\"click\":[function($event){return _vm.setActive('profile','')},function($event){return _vm.hybrid('connect-server')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-profile\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('profile_settings') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Settings\",\"title\":\"Profile\"},on:{\"click\":[function($event){return _vm.setActive('settings','profile_settings')},function($event){return _vm.hybrid('connect-server')}]}})],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\",\"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-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\",\"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-container\",modifiers:{\"hybrid-container\":true}}],staticClass:\"ti-package list-group-item list-group-item-action\",class:{ active: _vm.isActive('container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Local\",\"title\":\"Container\"},on:{\"click\":[function($event){return _vm.setActive('container','')},function($event){return _vm.hybrid('bootstrap')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-container\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrives m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_container') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\",\"title\":\"Show all containers\"},on:{\"click\":[function($event){return _vm.setActive('container','hybrid_container')},function($event){return _vm.hybrid('bootstrap')}]}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-private\",modifiers:{\"hybrid-private\":true}}],staticClass:\"ti-home list-group-item list-group-item-action\",class:{ active: _vm.isActive('private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Private\",\"title\":\"Private\"},on:{\"click\":[function($event){return _vm.setActive('private','')},function($event){return _vm.hybrid('services')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-private\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-harddrive m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_private') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\",\"title\":\"Bootstrap\"},on:{\"click\":[function($event){return _vm.setActive('private','hybrid_private')},function($event){return _vm.hybrid('services')}]}})],1),_c('b-list-group-item',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.hybrid-llo\",modifiers:{\"hybrid-llo\":true}}],staticClass:\"ti-book list-group-item list-group-item-action\",class:{ active: _vm.isActive('llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Llo\",\"title\":\"LearningObjects\"},on:{\"click\":[function($event){return _vm.setActive('llo','')},function($event){return _vm.hybrid('llo')}]}}),_c('b-collapse',{staticClass:\"m-subm\",attrs:{\"id\":\"hybrid-llo\",\"accordion\":\"m-sidebar\",\"role\":\"tabpanel\"}},[_c('b-list-group-item',{staticClass:\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\",class:{ active: _vm.isActiveSub('hybrid_llo') },staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"Container\",\"title\":\"Courses\"},on:{\"click\":[function($event){return _vm.setActive('llo','hybrid_llo')},function($event){return _vm.hybrid('llo')}]}})],1),_c('b-list-group-item',{staticClass:\"ti-angle-double-right list-group-item list-group-item-action\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"variant\":\"light\",\"name\":\"menou-max\",\"title\":\"Maximize\"},on:{\"click\":function($event){return _vm.onActionMenu('max')}}})],1)]):_vm._e(),_c('div',{staticClass:\"w-100 p-3\",staticStyle:{\"background-color\":\"#eee\"}},[(_vm.hybridmenou == 'dashboard')?_c('view-dashboard',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),_c('connect-server',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'connect-server'),expression:\"hybridmenou == 'connect-server'\"}],staticStyle:{\"background-color\":\"#f8f9fa\"}}),(_vm.hybridmenou == 'manage_service')?_c('manage-services',{key:_vm.componentKeyreload,staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),(_vm.hybridmenou == 'llo')?_c('manage-llo',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e(),_c('network-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'bootstrap'),expression:\"hybridmenou == 'bootstrap'\"}],key:_vm.componentKeyreload,staticStyle:{\"background-color\":\"#f8f9fa\"}}),_c('services-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridmenou == 'services'),expression:\"hybridmenou == 'services'\"}],staticStyle:{\"background-color\":\"#f8f9fa\"}}),(_vm.hybridmenou == 'manage_deploy')?_c('manage-deploy',{staticStyle:{\"background-color\":\"#f8f9fa\"}}):_vm._e()],1)])])],1),_c('footer',{staticClass:\"footer\"},[_c('div',{staticClass:\"container\",staticStyle:{\"max-width\":\"75%\"},attrs:{\"id\":\"appfooter\"}},[_vm._m(3),_vm._v(\" | \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://www.gnu.org/licenses/agpl-3.0.html\",\"target\":\"_blank\"}},[_vm._v(\" ©\")]),_vm._v(\" Coded with \"),_c('i',{staticClass:\"ti-heart\"}),_vm._v(\" by \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://git.swarmlab.io:3000/zeus\",\"target\":\"_blank\"}},[_vm._v(\" zeus\")]),_vm._v(\" - Released under the \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://www.gnu.org/licenses/agpl-3.0.html\",\"target\":\"_blank\"}},[_vm._v(\" GNU AGPL License\")]),_vm._v(\" | \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.showdiscl()}}},[_vm._v(\"Disclaimer and Notices\")]),(_vm.hybridmenou == 'llo')?_c('span',[_vm._v(\" | \")]):_vm._e(),(_vm.hybridmenou == 'llo')?_c('a',{staticClass:\"external text text-info\",attrs:{\"rel\":\"nofollow\",\"href\":\"https://letsgolarval.wordpress.com/open-art/\",\"target\":\"newl\"}},[_vm._v(\" Linux Penguin \")]):_vm._e(),(_vm.hybridmenou == 'llo')?_c('span',[_vm._v(\" by Rebekah Yoder / \")]):_vm._e(),(_vm.hybridmenou == 'llo')?_c('a',{staticClass:\"external text text-info\",attrs:{\"rel\":\"nofollow\",\"href\":\"https://creativecommons.org/licenses/by/2.0/\",\"target\":\"newl\"}},[_vm._v(\"BY-SA \")]):_vm._e()])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_vm._v(\" - \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item my-auto\"},[_c('a',{staticClass:\"nav-link navbar-brand mx-0 d-none d-md-inline\",attrs:{\"href\":\"\"}},[_vm._v(\"Hybrid\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"#\"}},[_vm._v(\" - \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"jsl10n\",attrs:{\"data-jsl10n\":\"license\"}},[_vm._v(\"Text is available under the \"),_c('a',{staticClass:\"text-info\",attrs:{\"href\":\"https://creativecommons.org/licenses/by-sa/3.0/\",\"target\":\"_blank\"}},[_vm._v(\"Creative Commons License\")])])}]\n\nexport { render, staticRenderFns }","//var global_config = {\nexport const ApiConfig = {\n\t\t'swarmlab_url_80'\t\t\t: 'https://api.swarmlab.io', \t\t\t\n\t\t'url_80'\t\t\t\t\t\t\t: 'http://localhost:3080', \t\t\t// webclient \t\t\n\t\t'url_443'\t\t\t\t\t\t\t: 'https://localhost:3080' \t\t\t// webclient\n\t\t\t\t\t\t\t\t\t\t\t/* \tconfig for swarmlab ide */\n};\n","import { mapState, mapActions, commit } from 'vuex'\nimport store from '@/store/index'\nimport axios from 'axios'\nimport {ApiConfig} from \"@/config/index\";\n\nexport default {\n namespaced: true,\n state: {\n token: '',\n\t\tsocketStatus:'close',\n status: {},\n statusswarmlab: {},\n config: {}\n },\n getters: {\n\t\tgetsocketStatus (state, container) {\n\t\t\treturn state.socketStatus\n\t\t},\n\t\tgettoken (state, container) {\n\t\t\treturn state.token\n\t\t},\n\t\tgetlog (state, container) {\n\t\t\treturn state.log\n\t\t},\n\t\tgetconfig (state, container) {\n\t\t\treturn state.config\n\t\t},\n\t\tgetstatus (state, container) {\n\t\t\treturn state.status\n\t\t},\n\t\tgetstatusswarmlab (state, container) {\n\t\t\treturn state.statusswarmlab\n\t\t}\n },\n mutations: {\n\t\tset_socketStatus (state, data) {\n\t\t\t\tstate.socketStatus=data;\n\t\t},\n\t\tset_token (state, data) {\n\t\t\t\tstate.token=data;\n\t\t},\n\t\tset_status (state, data) {\n\t\t\t\tstate.status=data;\n\t\t},\n\t\tadd_log (state, data) {\n //console.log(\"js1 set \"+JSON.stringify(data))\n\t\t\t\tstate.log.push(data);\n\t\t},\n\t\tadd_config (state, data) {\n //console.log(\"js1 set \"+JSON.stringify(data))\n\t\t\t\tstate.config = data\n\t\t},\n\t\tadd_statusswarmlab (state, data) {\n console.log(\"status server \"+JSON.stringify(data))\n\t\t\t\tstate.statusswarmlab = data\n\t\t}\n },\n actions: {\n\t\taddstatusswarmlab({commit}, value) {\n\t\t\t commit('add_statusswarmlab', value)\n\t\t},\n\t\taddconfig({commit}, value) {\n\t\t\t commit('add_config', value)\n\t\t},\n\t\taddlog({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n var tt = {}\n tt.message = value.log.log.message\n tt.tailed_path = value.log.log.tailed_path\n tt.date = value.log.date\n\t\t\t commit('add_log', tt)\n\t\t},\n\t\tsetsocketStatus({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_socketStatus', value.status)\n\t\t},\n\t\tsettoken({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_token', value.token)\n\t\t},\n\t\tsetstatus({commit}, value) {\n\t\t\t\t//console.log(\"container \"+value)\n\t\t\tcommit('set_status', value.status)\n\t\t},\n async swarmlabstart({commit,rootGetters}, value) {\n //console.log('from '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n action: value.action,\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/run'\n var p = await axios.post(sock_server_l,params,options);\n //var p = await axios.post('http://localhost:8084/run',params,options);\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async oncompletiontracking({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: value.action,\n track: value.track,\n course: value.course,\n chapter: value.chapter,\n evaluation: value.evaluation\n }\n\t\t\t\t\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/completiontracking',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n //console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getcompletion({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n course: value.course,\n chapter: value.chapter\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getcompletion',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n async getevents({commit,rootGetters}, value) {\n try {\n var token = rootGetters['pipelineLLO/gettoken']\n var params = {\n begin: value.begin,\n end: value.end\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n\n const info = await axios.get('https://api.swarmlab.io/getswarmlabevents',options);\n return info\n\n } catch (e) {\n //console.error(e);\n if(e.error == \"invalid_token\"){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }\n }\n },\n 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 getserviceshybridstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n bootstrapstackname: value.bootstrapstackname\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getserviceshybridstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async getservicesstatus({commit,rootGetters}, value) {\n //console.log('value '+JSON.stringify(value))\n try {\n var token = value.token\n var params = {\n instance: value.instance\n }\n var options = {\n params: params,\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var sock_server_l = ApiConfig.url_80+'/getservicesstatus'\n var p = await axios.get(sock_server_l,options);\n //var p = await axios.get('https://localhost:3000/getservicesstatus',options);\n return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async 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 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 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 hybrid_join({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n node: value.node,\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoinstack',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_leave({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n node: value.node,\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'leave'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoinstack',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridconfig({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n action: 'add'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridconfiginfo',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_servicerm({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n bootstrapnameid: value.bootstrapnameid,\n action: 'servicesrm'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrmservice',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async stackrm({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapstackid: value.bootstrapstackid,\n action: 'stackrm'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrmstack',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\tconsole.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_servicerestart({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestart'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridrestartservice',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async hybrid_servicelog({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n bootstrapnameid: value.bootstrapnameid,\n action: 'stackrestlog'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridlogservice',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async swarmlabhybridjoin({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n swarmlabservice: 'ondemand_test_spitifgdfgdfkngkndfkngkdfngkdfk',\n action: 'join'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/swarmlabhybridjoin',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n async adddeploy({commit,rootGetters}, value) {\n try {\n var token = value.token\n var params = {\n deploy: value.deploy,\n action: 'deploy'\n }\n var options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` },\n };\n var p = await axios.post('https://api.swarmlab.io/adddeployhybrid',params,options);\n if(p.error == \"invalid_token\"){\n console.log(p)\n \t\t//console.log(JSON.stringify(p))\n }else{\n }\n //console.log(value.token)\n //console.log(value.swarmlabname)\n //console.log(JSON.stringify(p))\n\t\t\t return p\n } catch (e) {\n if(e.message == \"Request failed with status code 401\" || /401/i.test(e.message)){\n //console.log('error '+JSON.stringify(e))\n window.location.href = 'https://api-login.swarmlab.io:8089';\n }else{\n var R = {\n ERROR_str: e,\n ERROR: 'yes'\n }\n return R;\n }\n }\n },\n\n\n\n }\n}\n","import Vuex from 'vuex'\nimport Vue from 'vue'\nimport { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'\n// -------------- Playbook----------------\nimport pipelineLLO from './modules/create_pipelineLLO'\nimport { library, dom } from '@fortawesome/fontawesome-svg-core'\n\nimport {faIcons, faSort, faChevronUp, faChevronDown, faBars, fas } from '@fortawesome/free-solid-svg-icons'\nimport { faJs, faVuejs, fab, faFontAwesome} from '@fortawesome/free-brands-svg-icons'\nimport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText } from '@fortawesome/vue-fontawesome'\n\n\n\n\n\nVue.use(Vuex)\nVue.use(BootstrapVue);\n\n\n\nVue.component('font-awesome-icon', FontAwesomeIcon)\nlibrary.add(faIcons, faSort, faChevronUp, faChevronDown, faBars, faJs, faVuejs, fab, fas, faFontAwesome)\ndom.watch() // This will kick of the initial replacement of i to svg tags and configure a MutationObserver\n\n\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\n\n\nexport default new Vuex.Store({\n modules: {\n\t\tpipelineLLO\n },\n state: { // = data\n },\n getters: { // = computed properties\n },\n mutations: {\n }\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7 order-first \"},[_c('br'),_c('myconnect-server')],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('zones-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab hybrid zones config\")])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('add')}}},[_vm._v(\" Add Network Node\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),(_vm.nodeadmin)?_c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 order-first pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodename),expression:\"nodename\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Name\"},domProps:{\"value\":(_vm.nodename)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodename=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[(_vm.nodeadminupdate)?_c('ValidationProvider',{ref:\"provider\",attrs:{\"name\":\"nodeid\",\"rules\":\"required|alpha_num\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nreturn [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodeid),expression:\"nodeid\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"NodeId\",\"disabled\":\"\"},domProps:{\"value\":(_vm.nodeid)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodeid=$event.target.value}}})]}}],null,false,1653130323)}):_c('ValidationProvider',{ref:\"provider\",attrs:{\"name\":\"nodeid\",\"rules\":\"required|alpha_num\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nreturn [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodeid),expression:\"nodeid\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"NodeId\",\"data-vv-as\":\"\\\"Node id\\\"\",\"data-vv-value-path\":\"nodeid\",\"data-vv-name\":\"nodeid\"},domProps:{\"value\":(_vm.nodeid)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodeid=$event.target.value}}}),_c('span',[_vm._v(_vm._s(errors[0]))])]}}],null,false,3037502831)})],1),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodeip),expression:\"nodeip\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"IP\"},domProps:{\"value\":(_vm.nodeip)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodeip=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 order-first pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.noderole),expression:\"noderole\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Role\"},domProps:{\"value\":(_vm.noderole)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.noderole=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodezones),expression:\"nodezones\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Zones\"},domProps:{\"value\":(_vm.nodezones)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodezones=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-3 pr-md-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.nodedesc),expression:\"nodedesc\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"nodedesc\"},domProps:{\"value\":(_vm.nodedesc)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.nodedesc=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 pr-md-1\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[(_vm.nodeadminupdate)?_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('update')}}},[_vm._v(\" update\")]):_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('addserver')}}},[_vm._v(\" add\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('cancel')}}},[_vm._v(\" Cancel\")])])])])])]):_vm._e(),_vm._v(\" \"),_c('vuetable',{key:_vm.vuetablekey,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 }","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","<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=\"vuetablekey\"\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\tvuetablekey: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.vuetablekey += 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=7003265d&\"\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-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-info btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"HowTo\"},on:{\"click\":function($event){return _vm.onAction('register')}}}),_c('button',{staticClass:\"ti-settings btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Load config\"},on:{\"click\":function($event){return _vm.onAction('load')}}},[_vm._v(\" Load Settings \")])])])]),_c('div',{staticClass:\"col-5\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"},on:{\"click\":function($event){return _vm.onAction('connect')}}},[_vm._v(\" Connect \")])]),_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-unlink btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"},on:{\"click\":function($event){return _vm.onAction('disconnect')}}},[_vm._v(\" Disconnect \")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col-3\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.isconnect)?_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"}},[_vm._v(\" Status online \")]):_c('button',{staticClass:\"ti-unlink btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Connect\"}},[_vm._v(\" Status offline \")])])])])])])],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 <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-info btn btn-outline-success\"\n round\n type=\"button\"\n title=\"HowTo\"\n @click=\"onAction('register')\"\n > \n </button>\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('save')\"\n > Save Settings\n </button>\n </div>\n -->\n </div>\n </div>\n <div class=\"col-5\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\"\n >\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 </div>\n <div class=\"input-group-prepend\"\n >\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 </div>\n </div>\n </div> <!-- coll -->\n\n <div class=\"col-3\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\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 </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 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 == '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='sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/hybrid/connect/join.sh'\n }else{\n var winfo='no exec file'\n }\n var info='<h5>Swarmlab Connect</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 }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='sudo /bin/bash '\n winfo += winfopath.trim()\n winfo += '/hybrid/connect/leave.sh'\n }else{\n var winfo='no exec file'\n }\n var info='<h5>Swarmlab Disconnect</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 } 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=fde3aefa&\"\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 </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'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\nimport MyconnectServer from \"./mynetwork/myconnect-server.vue\";\nexport default {\n components: {\n // AdhocView,\n ZonesView,\n card,\n MyconnectServer\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!./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=c58ba442&\"\nimport script from \"./myconnect-server.vue?vue&type=script&lang=js&\"\nexport * from \"./myconnect-server.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7 order-first \"},[_c('br'),_c('view-network'),_c('docker-services')],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"View and Manage your running Containers\")])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.$socket.disconnected)?_c('button',{staticClass:\"ti-unlink btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"You are disconnected from Swarmlab-hybrid\",\"disabled\":\"\"}}):_c('button',{staticClass:\"ti-link btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"You are connected swarmlab-hybrid\",\"disabled\":\"\"}})]),_c('div',{staticClass:\"input-group-prepend\"}),_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-connect')}}},[_vm._v(\" Connect\")]):_vm._e(),(_vm.hybridshowdata.Names)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onAction('container-stop')}}},[_vm._v(\" Stop\")]):_vm._e()])])]),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" ID \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.ID)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Image \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Image)+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Names \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Names)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" RunningFor \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.RunningFor)+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Networks \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Networks)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" CreatedAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.CreatedAt)+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Status \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Status)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Ports \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Ports)+\" \")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/docker.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>View and Manage your running Containers</b>\n </div>\n </div>\n\n<br>\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n <button\n v-if=\"$socket.disconnected\"\n class=\"ti-unlink btn btn-outline-danger\"\n round\n type=\"button\"\n title=\"You are disconnected from Swarmlab-hybrid\"\n disabled\n >\n </button>\n <button\n v-else\n class=\"ti-link btn btn-outline-success\"\n round\n type=\"button\"\n title=\"You are connected swarmlab-hybrid\"\n disabled\n >\n </button>\n </div>\n <div class=\"input-group-prepend\">\n<!--\n <button\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('start')\"\n >\n Start</button>\n-->\n </div>\n <div class=\"input-group-prepend\">\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-success\"\n round\n type=\"button\"\n @click=\"onAction('container-connect')\"\n >\n Connect</button>\n <button\n v-if=\"hybridshowdata.Names\"\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onAction('container-stop')\"\n >\n Stop</button>\n </div>\n </div>\n </b-container>\n <b-container fluid>\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n ID\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.ID }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.Image }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Names }}\n </div>\n <div class=\"col-2 text-info\" >\n RunningFor\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.RunningFor }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n Networks\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Networks }}\n </div>\n <div class=\"col-2 text-info\" >\n CreatedAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.CreatedAt }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" >\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Status }}\n </div>\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.Ports }}\n </div>\n </div> <!-- row -->\n<!--\n'{\"ID\":\"{{ .ID }}\", \"Image\": \"{{ .Image }}\", \"Names\":\"{{ .Names }}\", \"Ports\":\"{{.Ports}}\", \n\"Networks\":\"{{.Networks}}\", \"Status\":\"{{.Status}}\",\"RunningFor\":\"{{.RunningFor}}\",\"CreatedAt\":\"{{.CreatedAt}}\"}'\n-->\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nimport { extend } from 'vee-validate';\nimport { required, alpha_num } from 'vee-validate/dist/rules';\n\n// No message specified.\nextend('alpha_num', alpha_num);\n\n// Override the default message.\nextend('required', {\n ...required,\n message: 'This field is required'\n});\n\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n STATUS:{},\n CONFIG:{\n 'status':'',\n 'workerkey':'',\n 'swarmlab_public_wgkey':'',\n 'server_ip':'',\n 'allowed_ips':'',\n 'wg_port':'',\n 'wg_ip':'',\n 'swarm_ip':'',\n 'privatekey':'',\n 'publickey':'',\n 'workerkey':'',\n 'privatekey':'',\n 'publickey':'',\n 'server_ip':''\n },\n CONFIGallowed_ips:'',\n swarmlabname:'swarmlab-sec',\n swarmlabname_port:'',\n swarmlabname_size:3,\n swarmlabname_git:'',\n // run on \n hybridshowdata:{},\n issocket:'close',\n setFilter: {},\n searchFor: {},\n resetFilter: {}\n\t \n\t\t}\n },\n beforeMount () {\n this.socketopen();\n this.socketauthenticate()\n //console.log('send')\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_show_info', (data) => {\n\t\t\tthis.$nextTick(function () {\n this.hybridshowdata = data\n //console.log(JSON.stringify(this.hybridshowdata))\n\t\t\t})\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_start_instance', (data) => {\n this.swarmlabname = data.swarmlabname\n if(data.size){\n this.swarmlabname_size = data.size\n }\n if(data.port){\n this.swarmlabname_port = data.port\n }\n //console.log('RUN exec '+JSON.stringify(this.swarmlabname))\n\t\t\t\tthis.onAction('start')\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_install_instance', (data) => {\n this.swarmlabname = data.swarmlabname\n this.swarmlabname_git = data.git\n //this.swarmlabname_port = data.port\n\t\t\tthis.onAction('install')\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_connect_server', (data) => {\n\t\t\t//this.onAction('create-wirequard')\n this.$socket.client.emit('get-serverconfig');\n\t\t})\n// from available services socket run here\n\t\tthis.$root.$on('hybrid_stop_instance', (data) => {\n this.swarmlabname = data\n //console.log('RUN exec '+JSON.stringify(this.swarmlabname))\n\t\t\t\tthis.onAction('stop')\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n var log = store.dispatch(\"pipelineLLO/settoken\",{\n token:this.token\n })\n this.socketopen();\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_show_info')\n\t\tthis.$root.$off('hybrid_start_instance')\n\t\tthis.$root.$off('hybrid_stop_instance')\n\t\tthis.$root.$off('hybrid_connect_server')\n\t\tthis.$root.$off('hybrid_install_instance')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\t\tasync onAction(action){\n if(action == 'start'){\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = this.swarmlabname\n obj.swarmlabname_size = this.swarmlabname_size\n obj.swarmlabname_port = this.swarmlabname_port\n //this.$socket.client.emit('action', obj);\n //this.$socket.client.emit('actionstart', obj);\n this.$socket.client.open();\n //this.$socket.client.emit('start', this.swarmlabname);\n this.$socket.client.emit('start', obj);\n //console.log('start ' + JSON.stringify(log))\t\n //console.log('startobj ' + JSON.stringify(obj))\t\n ////console.log(this.$socket.client.connect())\n }else if(action == 'container-connect'){\n var log = await store.dispatch(\"pipelineLLO/getmountinfo\",{\n instance:this.hybridshowdata.Names\n })\n\n var container_bash = '/bin/sh'\n var container_user = false\n var swarmlabinstance = new RegExp(\"^(hybrid-|HYBRID-)\"); \n if(swarmlabinstance.test(this.hybridshowdata.Names)){\n container_user = true\n container_bash = '/bin/bash'\n var container_user_swarmlab = 'docker'\n }\n\n //console.log('log ' + JSON.stringify(log))\t\n //var Localpath = JSON.parse(log.data.test)\n var info=`<h5>You can connect to the same contained process multiple times simultaneously, from different sessions on the Docker host.<br> \n <br>\n <b>Open a terminal and Run:</b>\n <br>\n <br>\n`\nif(container_user){\n info += 'docker exec -it -u'+container_user_swarmlab+' '+this.hybridshowdata.Names+' ' + container_bash\n}else{\n info += 'docker exec -it '+this.hybridshowdata.Names+' ' + container_bash\n}\n\ninfo +='<br>'\ninfo +='<br>'\ninfo +=' Directory Maps'\ninfo +=' <table>'\ninfo +='<tr><td><b>Local</b></td><td><i>Container</i></td></tr>'\n var datajson = log.data.test[0]\n for(var i = 0; i < datajson.length; i++) {\n\n//console.log('test1 '+JSON.stringify(datajson[i]))\n if(datajson[i].Type == 'bind'){\n info +='<tr><td><b>'+datajson[i].Source+' </b></td><td><i>' + datajson[i].Destination+' </i></td></tr>'\n }\n }\ninfo +=' </table>'\ninfo +='</h5><br>'\n//console.log('test1 '+JSON.stringify(this.hybridshowdata))\n\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }else if(action == 'install'){\n var obj = {}\n obj.action = 'up'\n obj.token = this.token\n obj.swarmlabname = this.swarmlabname\n obj.git = this.swarmlabname_git\n this.$socket.client.open();\n this.$socket.client.emit('install', obj);\n }else if(action == 'container-stop'){\n\t\t\t\t // refresh adhocview.vue on console await \n this.$root.$emit('SERVER_hybrid_table_start')\n this.$socket.client.emit('container-stop', this.swarmlabname, this.hybridshowdata.ID);\n }else if(action == 'create-wirequard'){\n //this.CONFIGprivatekey = value.privatekey\n //this.CONFIGpublickey = value.publickey\n //this.CONFIGserver_ip = value.server_ip // 83.212.77.133:51820\n //this.CONFIGallowed_ips = value.allowed_ips // 10.13.13.0/16, 0.0.0.0/0, ::/0\n this.$socket.client.emit('create-wirequard', this.token);\n }else if(action == 'stop'){\n this.$socket.client.emit('stop', this.swarmlabname);\n }\n\t\t\t},\n async socketopen () {\n this.$socket.client.open();\n this.$socket.client.connect();\n },\n async socketauthenticate () {\n this.$socket.client.emit('authenticate', this.token);\n },\n async socketreconnect () {\n var log = await this.socketopen() \n this.socketauthenticate()\n },\n async socketclose () {\n this.$socket.client.close();\n }\n\n },\n /**\n *\n * == Socket events\n * \n * [source,javascript]\n * ---- \n * this.$socket.client.emit('authenticate', 'logintoken');\n * ---- \n *\n */\n sockets: {\n connect() {\n //this.$socket.client.emit('authenticate', this.token);\n //console.log('socket connected '+ 'socketdatasend' )\n this.issocket = 'open';\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'open'\n\t\t\t\t\t})\n },\n /**\n *\n * === onError\n *\n */\n error(error) {\n //console.log(\"socket error \"+JSON.stringify(error))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n },\n /**\n *\n * === connect_error\n * \n */\n connect_error(error) {\n //console.log(\"socket connect_error \"+JSON.stringify(error))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketopen() \n this.socketreconnect() \n },\n /**\n *\n * === connect_error\n *\n */\n disconnect(reason) {\n //console.log(\"socket disconnect \"+JSON.stringify(reason))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketreconnect() \n },\n /**\n * \n * === Socket connect_timeout\n * \n */\n connect_timeout(reason) {\n //console.log(\"socket timeout \"+JSON.stringify(reason))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketreconnect() \n },\n /**\n * \n * === Socket reconnect\n * \n */\n reconnect(attemptNumber) {\n //console.log(\"socket reconnect attemptNumber \"+JSON.stringify(attemptNumber))\n this.socketreconnect() \n },\n /**\n * \n * === connect_attempt\n * \n */\n reconnect_attempt(attemptNumber) {\n //console.log(\"socket reconnect_attempt \"+JSON.stringify(attemptNumber))\n this.socketreconnect() \n },\n /**\n *\n * === Socket reconnecting\n *\n */\n reconnecting(attemptNumber) {\n //console.log(\"socket reconnecting \"+JSON.stringify(attemptNumber))\n this.socketreconnect() \n },\n /**\n *\n * === reconnect_error\n *\n */\n reconnect_error(error) {\n //console.log(\"socket reconnect_error \"+JSON.stringify(error))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n this.socketreconnect() \n },\n /**\n *\n * === unauthorized\n *\n */\n unauthorized(val) {\n //console.log(\"socket unauthorized \"+JSON.stringify(val))\n this.issocket = 'close'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'close'\n\t\t\t\t\t})\n },\n /**\n *\n * === connected \n *\n */\n socket_id_emit(val) {\n //console.log(\"socket id from server \"+JSON.stringify(val))\n this.issocket = 'open'\n\t\t\t\t\tvar log = store.dispatch(\"pipelineLLO/setsocketStatus\",{\n\t\t\t\t\t\tstatus:'open'\n\t\t\t\t\t})\n },\n /**\n *\n * === Socket onMessage\n *\n */\n /*\n async adhocEmit(val) {\n //console.log(\"socket from server \"+JSON.stringify(val))\n this.issocket = 'open'\n //this.$wait.start('myRunInstance1');\n // render begin\n this.tryLLO = 'on'\n if(this.firstbootstrap === 0 ){\n await this.bootsrapllo();\n this.firstbootstrap = 1\n }\n var output = log.data.out\n var mydinfunction = `\n <div class=\"row\">\n <b-col class=\"\" cols=\"12\" sm=\"12\" md=\"12\" >\n ${output}\n </b-col>\n </div>`\n\n try {\n let divascii = document.createElement('div');\n divascii.setAttribute(\"class\", \"container-fluid w-100 p-3 llotry\")\n divascii.innerHTML = mydinfunction\n this.addtask(divascii);\n }catch (ex) {\n //console.log(\" logi error1 \"+JSON.stringify(ex))\n return\n }\n //this.$wait.end('myRunInstance1');\n },\n */\n async logdata(val) {\n //console.log(\" socket from logdata \"+JSON.stringify(val))\n // -------------------------------------\n // Save store\n // -------------------------------------\n var log = store.dispatch(\"pipelineLLO/addlog\",{\n log:val\n })\n\n var ltmp = store.getters['pipelineLLO/getlog'];\n this.log_path = [...new Set(ltmp.map(item => item.tailed_path))];\n var loglenght = ''\n for (let item of this.log_path) {\n //console.log('l1find '+ JSON.stringify(item))\n loglenght = ltmp.filter(item1 => item1.tailed_path === item).length;\n Vue.set(this.log_path_lenght, item, loglenght);\n if(loglenght > this.loglenghttotal){\n // -------------------------------------\n // Save store\n // -------------------------------------\n var ltotal1 = store.dispatch(\"pipelineLLO/taillog\",{\n path:item\n })\n }\n }\n \n },\n async message(val) {\n //console.log(\" socket message \"+JSON.stringify(val))\n },\n async message_config(value) {\n value.data = JSON.parse(value.data); \n if(value.file == 'ok'){\n //console.log('server-value-file-ok ' + JSON.stringify(value.data.status))\n this.CONFIG.status = value.data.status\n this.CONFIG.workerkey = value.data.workerkey\n this.CONFIG.swarmlab_public_wgkey = value.data.swarmlab_public_wgkey\n this.CONFIG.server_ip = value.data.server_ip \n this.CONFIG.allowed_ips = value.data.allowed_ips \n this.CONFIG.wg_port = value.data.wg_port \n this.CONFIG.wg_ip = value.data.wg_ip\n this.CONFIG.swarm_ip = value.data.swarm_ip\n this.CONFIG.privatekey = value.data.privatekey\n this.CONFIG.publickey = value.data.publickey\n\n }else if(value.file == 'nodata'){\n this.CONFIG.status = ''\n this.CONFIG.workerkey = ''\n this.CONFIG.swarmlab_public_wgkey = ''\n this.CONFIG.server_ip = ''\n this.CONFIG.allowed_ips = ''\n this.CONFIG.wg_port = ''\n this.CONFIG.wg_ip = ''\n this.CONFIG.swarm_ip = ''\n this.CONFIG.privatekey = ''\n this.CONFIG.publickey = ''\n }\n // send to myconnect-server.vue\n //console.log('server-config ' + JSON.stringify(this.CONFIG))\n\t\t\t\t store.dispatch(\"pipelineLLO/addconfig\",this.CONFIG)\n\t\t this.$root.$emit('hybrid_connect_server_view', this.CONFIG)\n },\n async message_out(val) {\n console.log(\" socket out \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n\t\t\t\t// refresh adhocview.vue on console await \n this.$root.$emit('SERVER_hybrid_table_start')\n // clear container info here sockert end\n this.hybridshowdata = {}\n },\n async message_err(val) {\n //console.log(\" socket err \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n },\n async message_close(val) {\n //console.log(\" socket close \"+JSON.stringify(val))\n this.$root.$emit('hybrid_log_in',val)\n // refresh table availableservices\n this.$root.$emit('hybrid_refresh_table')\n\t\t\t\t// refresh adhocview.vue on console await console\n this.$root.$emit('SERVER_hybrid_table_stop')\n },\n async message_hybrid_status(val) {\n var obj = {}\n obj.status = val\n var res1 = store.dispatch('pipelineLLO/setstatus', obj)\n this.$root.$emit('hybrid_server_status',val)\n //message_hybrid_status {\"data\":{\"swarmlab\":\"active\",\"hybrid\":\"Online\",\"swarmlabid\":\"z3abo50tks76alp7ubjos4ngz\"}}\n this.STATUS.swarmlabid = val.data.swarmlabid\n this.STATUS.hybrid = val.data.hybrid\n this.STATUS.swarmlab = val.data.swarmlab\n\t\t\t\t store.dispatch(\"pipelineLLO/addstatusswarmlab\",this.STATUS)\n }\n },\n\n\n actions: {\n\n\t}\n\n};\n</script>\n\n<style lang=\"scss\">\n\n\n\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mytable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mytable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mytable.vue?vue&type=template&id=2f93d0b0&\"\nimport script from \"./mytable.vue?vue&type=script&lang=js&\"\nexport * from \"./mytable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./mytable.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/code-128.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\" col text-center\"},[_c('v-wait',{attrs:{\"for\":\"myRunInstance1\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\"),\"width\":\"50\",\"height\":\"50\"}}),_vm._v(\" Lab_Instance... \")])])],2),(_vm.extenderror)?_c('button',{staticClass:\"btn btn-outline-danger btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":function($event){return _vm.runextenderror()}}},[_vm._v(\" Error: max depth exceeded\")]):_vm._e(),(_vm.tryConsole)?_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":function($event){return _vm.clear()}}},[_vm._v(\" Clear\")]):_vm._e(),_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\",\"disabled\":\"\"}},[_vm._v(\" Console\")]),(_vm.cmOptions.keyMap == 'sublime')?_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":_vm.infoFilter}},[_vm._v(\" i\")]):_vm._e()],1),_c('div',{staticClass:\"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 socketconnect () {\n // send to runLLO\n this.$root.$emit('SERVER_socket_connect')\n },\n clear () {\n this.tryConsole = false\n this.code = ''\n },\n async getdata () {\n\n var field = this.getinfo\n var log = await store.dispatch(\"pipelineLLO/get_data\",{\n code:field \n })\n\n },\n\n async showactive(index) {\n this.topwindow(index)\n\t\t},\n onCmReady(cm) {\n cm.on('change', (cm, chg) => {\n }),\n cm.on('keypress', () => {\n cm.showHint({completeSingle:false})\n })\n },\n onCmCursorActivity(a, b, c) {\n },\n onCmFocus(cm) {\n },\n onCmCodeChange(newCode) {\n this.code = newCode\n //this.$root.$emit('socket_add',this.code)\n },\n handleChange() {\n },\n setKeymap () {\n this.cmOptions.keyMap = this.selected\n },\n\t\tinfoFilter() {\n\t\t\t\tvar title1='<h3>Playbook Images</h3>'\n\t\t\t\t\tvar winfop='<table class=\"table table-striped table-sm \">'+\n '<tr><td class=\"text-left\">Shift-Tab</td> <td class=\"text-left\">indentLess</td></tr>'+\n '<tr><td class=\"text-left\">Alt-Q</td> <td class=\"text-left\">wrapLines</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Up</td> <td class=\"text-left\">scrollLineUp</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Down</td> <td class=\"text-left\">scrollLineDown</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-L</td> <td class=\"text-left\">selectLine</td></tr>'+\n '<tr><td class=\"text-left\">Esc</td> <td class=\"text-left\">singleSelectionTop</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Enter</td> <td class=\"text-left\">insertLineAfter</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-D</td> <td class=\"text-left\">selectNextOccurrence</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-Space</td> <td class=\"text-left\">selectScope</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-M</td> <td class=\"text-left\">selectBetweenBrackets</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-M</td> <td class=\"text-left\">goToBracket</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-Y</td> <td class=\"text-left\">sublimeYank</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-C</td> <td class=\"text-left\">showInCenter</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-G</td> <td class=\"text-left\">clearBookmarks</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-Backspace</td> <td class=\"text-left\">delLineLeft</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-0</td> <td class=\"text-left\">unfoldAll</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-J</td> <td class=\"text-left\">unfoldAll</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Alt-Up</td> <td class=\"text-left\">addCursorToPrevLine</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Alt-Down</td> <td class=\"text-left\">addCursorToNextLine</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-F3</td> <td class=\"text-left\">findUnder</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-F3</td> <td class=\"text-left\">findUnderPrevious</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-[</td> <td class=\"text-left\">fold</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-]</td> <td class=\"text-left\">unfold</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-F</td> <td class=\"text-left\">find</td></tr>'+\n'</table>'\n\t\t\t\t\t\n\t\t\t\t\tvar title1=''\n\t\t\t\t\tvar winfo=''\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttitle: '<strong>Key bindings</strong>',\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: winfop+title1+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false\n\t\t\t\t})\n\t\t},\n async hotreload() {\n var field = this.getinfo\n var log = await store.dispatch(\"pipelineLLO/hotreload\",{\n token:this.token,\n swarmlabname:this.swarmlabname \n })\n },\n\trunextenderror\t() {\n var html1 = ` <div style=\"overflow-x: auto;\">\n <p>\n It's the total amount of layers; \n </p>\n <p class=\"text-left\">\n <b>The current limit of 125 layers is due to the kernel's ARG_MAX</b>, which limits the number of arguments / length of arguments that can be passed when mounting the layers \n \n<br> <i> (this limit can be raised in kernels, but is not something that could be relied on as it would make those images non-interoperable on systems that don't have the custom configuration)</i>\n </p>\n <p class=\"text-left\">\n Note that not every step in a Dockerfile creates a new layer, <b>only (RUN) steps that modify the filesystem will introduce a new layer</b>.\n </p>\n\n <p class=\"text-center\">\n <h5> <b>Solution</b> </h5>\n </p>\n <p class=\"text-left\">\n Delete all local docker images related to your dockerfile using the following:\n <br>\n <br>\n <i><b>docker rmi -f $(docker images -a -q)</b></i>\n </p>\n\n <p class=\"text-left\">\n <h5> <b>Description</b> </h5>\n <br>\n Remove unused image <br>\n - all images not referenced by any container -\n </p>\n <p class=\"text-left\">\n <h5> <b>Filtering</b> </h5>\n <br>\n <i><b>docker rmi -f $(docker images -a | grep \"IMAGE_NAME\" | awk '{ print $3 }')</b></i>\n </p>\n\n</div>`\n\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttitle: '<strong>Info</strong>',\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: html1,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false\n\t\t\t\t})\n\t\t}\n\n },\n computed: {\n codemirror() {\n return this.$refs.myCm.codemirror\n }\n\n\t},\n\tmounted() {\n // from runLLO\n\t\tthis.$root.$on('SERVER_socket_status', (v) => {\n\t\t\tthis.$nextTick(function () {\n if(v == 'off'){\n this.socketonline = false\n }else if(v == 'on'){\n this.socketonline = true\n }\n\t\t\t})\n\t\t})\n // from runLLO\n\t\tthis.$root.$on('hybrid_log_in', (log) => {\n //console.log(\" socket close \"+JSON.stringify(val))\n //this.code += JSON.stringify(log)\n this.code += log.data\n this.code += \"\\n\"\n this.$refs.myCm.codemirror.setCursor(this.$refs.myCm.codemirror.lineCount(), 0);\n //var extenderror = /hello/;\n var extenderror = new RegExp('max depth exceeded'); \n if(extenderror.test(log.data)){\n this.extenderror = true\n //console.log('find');\n }else{\n console.log('not find');\n }\n\n this.tryConsole=true\n\t\t})\n // from mytable.vue and socket\n\t\tthis.$root.$on('SERVER_hybrid_table_start', (v) => {\n\t\t\tthis.$nextTick(function () {\n this.$wait.start('myRunInstance1');\n\t\t\t})\n\t\t})\n // from mytable.vue and socket\n\t\tthis.$root.$on('SERVER_hybrid_table_stop', (v) => {\n\t\t\tthis.$nextTick(function () {\n this.$wait.end('myRunInstance1');\n\t\t\t})\n\t\t})\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('SERVER_socket_status')\n\t\tthis.$root.$off('hybrid_log_in')\n\t\tthis.$root.$off('SERVER_hybrid_table_start')\n\t\tthis.$root.$off('SERVER_hybrid_table_stop')\n },\n\n\t\tcreated () {\n this.token = new URL(location.href).searchParams.get('token');\n this.swarmlabname = new URL(location.href).searchParams.get('pipelinename');\n\t\t}\n};\n</script>\n\n<style>\n.CodeMirror {\n\n\n font-family: monospace;\n height: 550px;\n}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdhocView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdhocView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AdhocView.vue?vue&type=template&id=0e597f55&\"\nimport script from \"./AdhocView.vue?vue&type=script&lang=js&\"\nexport * from \"./AdhocView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdhocView.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setRefresh}},[_vm._v(\" Refresh table\")])]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search by Name\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),_c('vuetable',{key:_vm.vuetablekey,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\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-append\">\n <button \n class=\"btn btn-outline-info\" \n round\n type=\"button\"\n @click=\"setRefresh\">\n Refresh table</button>\n </div>\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search by Name\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey\"\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\tvuetablekey:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'Names',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'Names',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '50%'\n },\n {\n name: 'Image',\n title: '<span class=\"orange\"></span>Image',\n //sortField: 'Image',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '15%',\n formatter (value) {\n const result = /^ondemand_playground/.test(value);\n if (result) {\n var v = '<p class=\"text-warning\">Playground</p>'\n return v\n }else{\n var v = '<p class=\"text-info\">Lab</p>'\n return v\n }\n }\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'Status',\n title: '<span class=\"orange\"></span>Status',\n sortField: 'Status',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '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('hybrid_refresh_dockerservices', () => {\n //this.setFilter()\n //this.$refs.vuetable.refresh()\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t})\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table', (v) => {\n\t\t\t this.$nextTick(function () {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.viewhybridoptions = false\n\t\t\t })\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_dockerservices')\n\t\tthis.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetRefresh () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': '',\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\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.vuetablekey += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n console.log('error2 '+JSON.stringify(payload.response.data.error))\n console.log('error2 '+JSON.stringify(payload.response.data.error_description))\n console.log('error2 '+JSON.stringify(payload.response.statusText))\n console.log('error2 '+JSON.stringify(payload.response.status))\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dockerservices.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dockerservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./dockerservices.vue?vue&type=template&id=ffb37f26&\"\nimport script from \"./dockerservices.vue?vue&type=script&lang=js&\"\nexport * from \"./dockerservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./dockerservices.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-7 order-first \" >\n <br>\n <view-network>\n\n </view-network>\n <docker-services>\n\n </docker-services>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-view>\n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport ViewNetwork from \"./mynetwork/mytable.vue\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport DockerServices from \"./mynetwork/dockerservices.vue\";\nimport card from '@/components/Card.vue'\n//import AvailableServices from \"./mynetwork/availableservices.vue\";\nexport default {\n components: {\n ViewNetwork,\n AdhocView,\n card,\n DockerServices\n // AvailableServices\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n },\n beforeDestroy () {\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mynetwork.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mynetwork.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mynetwork.vue?vue&type=template&id=5670020e&\"\nimport script from \"./mynetwork.vue?vue&type=script&lang=js&\"\nexport * from \"./mynetwork.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-7 order-first \"},[_c('br'),_c('available-services',{key:_vm.componentKeyreloadservice})],1),_c('div',{staticClass:\"col-5 order-last\"},[_c('br'),_c('adhoc-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab Deploy - Local \")])])]),_c('br'),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),(_vm.viewhybridoptions)?_c('div',{staticClass:\"row\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\"}},[_c('span',[_c('b',[_vm._v(\"Lab Service Options\")])])])],1):_vm._e(),(_vm.viewhybridoptions)?_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\" Instances \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.hybridoptions.size),expression:\"hybridoptions.size\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Number of Instances\"},domProps:{\"value\":(_vm.hybridoptions.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.hybridoptions, \"size\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"}},[_vm._v(\" Port\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.hybridoptions.port),expression:\"hybridoptions.port\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Expose Port\"},domProps:{\"value\":(_vm.hybridoptions.port)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.hybridoptions, \"port\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setHybridoptions}},[_vm._v(\" Up\")])]):_vm._e(),_c('vuetable',{key:_vm.vuetablekey,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actionsenabled\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.swarmlabname] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Stop Lan_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('down-item', props.rowData, props.rowIndex)}}}):_vm._e(),(_vm.testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && _vm.testactionrowindex[props.rowIndex] == props.rowIndex)?_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Start Lan_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-item', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowIndex] == props.rowIndex)?_c('button',{staticClass:\"ti-trash btn btn-info btn-sm\",attrs:{\"title\":\"Remove Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('rm-install', props.rowData, props.rowIndex)}}}):_vm._e()])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.checkactionrowindex(props.rowData,props.rowIndex))?_c('button',{staticClass:\"ti-cloud-down btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Download Lab_Instance\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-install', props.rowData, props.rowIndex)}}}):_vm._e(),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"Lab_Instance Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('view-item', props.rowData, props.rowIndex)}}})])])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/docker.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab Deploy - Local </b>\n </div>\n </div>\n\n<br>\n\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\n <div class=\"row\"\n v-if=\"viewhybridoptions\"\n >\n <b-col class=\"text-center\" cols=\"12\" sm=\"12\" md=\"12\">\n <span>\n <b>Lab Service Options</b>\n </span>\n </b-col>\n </div>\n\n\t\t<div class=\"input-group-append\"\n v-if=\"viewhybridoptions\"\n >\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n >\n\t\t\t\tInstances </button>\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Number of Instances\"\n\t\t\t\tv-model=\"hybridoptions.size\"\n\t\t\t\t>\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n >\n\t\t\t\tPort</button>\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Expose Port\"\n\t\t\t\tv-model=\"hybridoptions.port\"\n\t\t\t\t>\n\t\t\t\t<button class=\"btn btn-outline-success\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t @click=\"setHybridoptions\"\n >\n\t\t\t\tUp</button>\n </div>\n\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n @vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n\n <div slot=\"actionsenabled\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] == props.rowIndex\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Stop Lan_Instance\"\n round\n @click=\"onAction('down-item', props.rowData, props.rowIndex)\"\n >\n </button>\n <button\n v-if=\"testactionrowindex[props.rowData.swarmlabname] != props.rowIndex && testactionrowindex[props.rowIndex] == props.rowIndex\"\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Start Lan_Instance\"\n round\n @click=\"onAction('run-item', props.rowData, props.rowIndex)\"\n >\n </button>\n </div>\n </div>\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowIndex] == props.rowIndex\"\n class=\"ti-trash btn btn-info btn-sm\"\n title=\"Remove Lab_Instance\"\n @click=\"onAction('rm-install', props.rowData, props.rowIndex)\"\n round\n >\n </button>\n </div>\n </div>\n <div slot=\"actions\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"checkactionrowindex(props.rowData,props.rowIndex)\"\n class=\"ti-cloud-down btn btn-outline-secondary btn-sm\"\n title=\"Download Lab_Instance\"\n round\n @click=\"onAction('run-install', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"Lab_Instance Info\"\n round\n @click=\"onAction('view-item', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t </div>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\n\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n testactionrowindex:[], // downloaded used in installed\n teststatusindex:[], // status stop run used in status\n\t hybridoptions: {\n 'index':'', \n 'swarmlabname':'', \n 'size':'', \n 'port':'' \n },\n viewhybridoptions: false,\n swarmlab:{},\n\t playbookInfo: {},\n token: '',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey:0,\n\t\tfielddata:{},\n fields: [\n {\n name: 'swarmlabname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'swarmlabname',\n visible:true,\n dataClass: 'left aligned col-3',\n width: '68%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'description',\n sortField: 'gitrepoCloneUrl',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: 'gitrepoFullName',\n sortField: 'gitrepoFullName',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actionsenabled', // <----\n title: 'Status',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actionslocal', // <----\n title: 'Installed',\n titleClass: 'center',\n dataClass: 'center aligned',\n width: '5%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Download',\n titleClass: 'col text-center',\n dataClass: 'center aligned',\n width: '10%'\n },\n ],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'pipelinename',\n\t\t\t\tdirection: 'asc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'scripts'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_availableservices', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table', (v) => {\n\t\t\t this.$nextTick(function () {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.viewhybridoptions = false\n\t\t\t })\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_availableservices')\n\t\tthis.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\t\tasync checkactionrowindex(data,index){\n if(this.testactionrowindex[index] == index){\n \n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res1 = await store.dispatch('pipelineLLO/getservicesstatus', obj)\n //console.log('res8 all '+JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n //console.log('res8 YES '+JSON.stringify(res1.data))\n }else{\n //console.log('res8 NO '+JSON.stringify(res1.data))\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n }\n \n //console.log('is set '+index)\n }else{\n //console.log('not set '+index)\n\n var obj = {}\n obj.token = this.token\n obj.instance = data.swarmlabname\n var res = await store.dispatch('pipelineLLO/getservicesinfo', obj)\n if(res.data.data == 'yes'){\n //console.log('resi YES '+JSON.stringify(res))\n Vue.set(this.testactionrowindex, index, index)\n var res1 = await store.dispatch('pipelineLLO/getservicesstatus', obj)\n //console.log('res8 all '+JSON.stringify(res1))\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n //console.log('res8 YES '+JSON.stringify(res1.data))\n }else{\n //console.log('res8 NO '+JSON.stringify(res1.data))\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n }\n //console.log('resiiiiiiii yes '+JSON.stringify(this.testactionrowindex[index]))\n }else{\n //Vue.delete(this.testactionrowindex, index)\n console.log('resi NO '+JSON.stringify(res))\n }\n }\n\t\t},\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n\t\t\tif(action == 'view-item' ){\n this.swarmlab=data\n var container=this.swarmlab\n var res = await store.dispatch('pipelineLLO/getswarmlabinfo', container.swarmlabname)\n\n var swarmlab1=JSON.stringify(res.data.swarmlab, null ,2)\n var swarmlab1info=JSON.stringify(res.data.swarmlabinfo, null ,2)\n var swarmlab1info=res.data.swarmlabinfo\n var description='<div style=\"height: 250px; overflow-y: scroll;\"><p><pre><code class=\"codeblock\">'+swarmlab1+'</code></pre></p></div>'\n if(res.data.error25==\"ok\"){\n var winfo=''\n var info='<h5>Swarmlab Service <a href=\"'+swarmlab1info+'\" target=\"_blank\" >Info</a></h5>(Open page in new window)'\n this.$swal({\n type: 'info',\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true\n })\n }\n\n\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\t\t\t}else if(action == 'rm-install' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.$wait.start('myRunInstancetutor');\n var res = await store.dispatch('pipelineLLO/rmswarmlablocal', this.hybridoptions.swarmlabname)\n this.$wait.end('myRunInstancetutor');\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n Vue.delete(this.testactionrowindex, data.swarmlabname)\n this.refreshVuetable()\n this.$root.$emit('hybrid_refresh_info_deploy_local')\n //console.log('inf res '+ JSON.stringify(res))\n\t\t\t}else if(action == 'run-install' ){\n this.$wait.start('myRunInstancetutor');\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n var res = await store.dispatch('pipelineLLO/getswarmlabinfo', value.swarmlabname)\n var swarmlab1info=res.data.swarmlabinfo\n value.git = swarmlab1info\n //console.log('inf git 1 '+ JSON.stringify(swarmlab1info))\n //console.log('inf '+ JSON.stringify(value))\n \tthis.$root.$emit('hybrid_install_instance', value)\n this.$wait.end('myRunInstancetutor');\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.refreshVuetable()\n\n\t\t\t}else if(action == 'run-item' ){\n this.viewhybridoptions = true\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n /*\n console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n \tthis.$root.$emit('hybrid_start_instance', data.swarmlabname)\n Vue.set(this.testactionrowindex, data.swarmlabname, index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n */\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t}else if(action == 'down-item' ){\n this.hybridoptions.swarmlabname = data.swarmlabname\n this.hybridoptions.index = index\n var info = \"Stop and remove containers, networks, images, and volumes\"\n this.$swal({\n type: 'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: false,\n confirmButtonText: 'Yes!'\n }).then((result)=> {\n this.rmAndClose(result);\n })\n\n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t\t}\n },\n\t\tasync rmAndClose(result){\n //console.log('value 1 '+ JSON.stringify(result))\n //console.log('value 1 '+ JSON.stringify(this.hybridoptions))\n \t\tif (result.isConfirmed) {\n\t\t\t\t\t//console.log('yes') \n // run on mytable.vue\n var value = this.hybridoptions.swarmlabname\n \t this.$root.$emit('hybrid_stop_instance', value)\n Vue.delete(this.testactionrowindex, this.hybridoptions.index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else {\n\t\t\t\t\tconsole.log('no') \n }\n this.refreshVuetable()\n\t },\n\t\tasync setHybridoptions(){\n //console.log(JSON.stringify(this.hybridoptions))\n \n //console.log('RUN 1 '+ JSON.stringify(data.swarmlabname))\n // run on mytable.vue\n let value = {}\n value.swarmlabname = this.hybridoptions.swarmlabname\n value.index = this.hybridoptions.index\n value.size = this.hybridoptions.size\n value.port = this.hybridoptions.port\n \tthis.$root.$emit('hybrid_start_instance', value)\n Vue.set(this.testactionrowindex, value.swarmlabname, value.index)\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\n\t\t},\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n console.log('error2 '+JSON.stringify(payload.response.data.error))\n console.log('error2 '+JSON.stringify(payload.response.data.error_description))\n console.log('error2 '+JSON.stringify(payload.response.statusText))\n console.log('error2 '+JSON.stringify(payload.response.status))\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./availableservices.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./availableservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./availableservices.vue?vue&type=template&id=6fd6a810&\"\nimport script from \"./availableservices.vue?vue&type=script&lang=js&\"\nexport * from \"./availableservices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./availableservices.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-7 order-first \" >\n <br>\n <!--\n <view-network>\n\n </view-network>\n -->\n <available-services\n :key=\"componentKeyreloadservice\" \n >\n\n </available-services>\n </div>\n\n <div class=\"col-5 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-view>\n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\n//import ViewNetwork from \"./mynetwork/mytable.vue\";\nimport AdhocView from \"./mynetwork/AdhocView.vue\";\nimport card from '@/components/Card.vue'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\nimport AvailableServices from \"./mynetwork/availableservices.vue\";\nexport default {\n components: {\n // ViewNetwork,\n AdhocView,\n card,\n // DockerServices,\n AvailableServices\n },\n data () {\n return {\n componentKeyreloadservice:1,\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n\t\tthis.$root.$on('hybrid_refresh_info_deploy_local', () => {\n this.componentKeyreloadservice += 1\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_info_deploy_local')\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myservices.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./myservices.vue?vue&type=template&id=0cf9b391&\"\nimport script from \"./myservices.vue?vue&type=script&lang=js&\"\nexport * from \"./myservices.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 order-first \"},[_c('br'),_c('myconnect-manage-server')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/hybrid-1.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab hybrid Join\")])])]),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname && _vm.hybridshowdata.status)?_c('button',{staticClass:\"btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-start')}}},[_vm._v(\" Start Stack \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname && _vm.hybridshowdata.status)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-stop')}}},[_vm._v(\" Leave Stack \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"})]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-info')}}},[_vm._v(\" Service Info \")]):_vm._e()])])]),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Instances \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Replicas)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Image \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapimage)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Names \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapname)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" EndAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdateend)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Networks \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapnetwork)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" BeginAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdatebegin)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Status \")]),(_vm.hybridshowdata.status)?_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span',{staticClass:\"ti-check text-success\"})]):_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span')]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Ports \")]),(_vm.hybridshowdata.ports!=0)?_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.ports)+\" \")]):_c('div',{staticClass:\"col-4 text-secondary\"})]):_vm._e()]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search By StackName\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),_c('vuetable',{key:_vm.vuetablekey,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actionslocal\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.testactionrowindex[props.rowData.bootstrapnameid])?_c('button',{staticClass:\"ti-thumb-up btn btn-info btn-sm\",attrs:{\"title\":\"Remove Stack\",\"disabled\":\"\",\"round\":\"\"}}):_c('button',{staticClass:\"ti-thumb-down btn btn-secondary btn-sm\",attrs:{\"title\":\"Remove Stack\",\"disabled\":\"\",\"round\":\"\"}})])])}},{key:\"actions\",fn:function(props){return _c('div',{},[_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.actionrowindex == props.rowIndex)?_c('button',{staticClass:\"ti-more-alt btn btn-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-more btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}})])])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/hybrid-1.png\" alt=\"...\">\n </div>\n\n\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>Swarmlab hybrid Join</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.bootstrapstackname && hybridshowdata.status\"\n >\n Start Stack\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-stop')\"\n v-if=\"hybridshowdata.bootstrapstackname && hybridshowdata.status\"\n >\n Leave Stack\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-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-stop')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n >\n Remove Service\n </button>\n -->\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n v-if=\"hybridshowdata.bootstrapstackname\"\n @click=\"onActionHybrid('service-info')\"\n >\n Service Info\n </button>\n </div>\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" \n >\n Instances\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Replicas }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapimage }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapname }}\n </div>\n <div class=\"col-2 text-info\" >\n EndAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdateend }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Networks\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapnetwork }}\n </div>\n <div class=\"col-2 text-info\" >\n BeginAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdatebegin }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" \n v-if=\"hybridshowdata.status\"\n >\n <span class=\"ti-check text-success\"> </span>\n </div>\n <div class=\"col-3 text-secondary\" \n v-else\n >\n <span> </span>\n </div>\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" \n v-if=\"hybridshowdata.ports!=0\"\n >\n {{ hybridshowdata.ports }}\n </div>\n <div class=\"col-4 text-secondary\" \n v-else\n >\n \n </div>\n </div> <!-- row -->\n </b-container>\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search By StackName\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n\t\t\t\t@vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n <div slot=\"actionslocal\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"testactionrowindex[props.rowData.bootstrapnameid]\"\n class=\"ti-thumb-up btn btn-info btn-sm\"\n title=\"Remove Stack\"\n disabled\n round\n >\n </button>\n <button\n v-else\n class=\"ti-thumb-down btn btn-secondary btn-sm\"\n title=\"Remove Stack\"\n disabled\n round\n >\n </button>\n </div>\n </div>\n <div slot=\"actions\" slot-scope=\"props\">\n <div class=\"d-flex justify-content-center\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n </div>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n\n\n\n\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n testactionrowindex:[], // joined \n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n 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\tvuetablekey: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: '10%'\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: '15%',\n callback: value => {\n //console.log(this)\n //console.log(this.fielddata)\n for(var i = 0; i < this.fielddata.length; i++) {\n //call function here\n var servicename = this.fielddata[i].bootstrapstackid\n //console.log(JSON.stringify(servicename))\n if(servicename == value){\n var obj = {}\n obj.bootstrapnameid = this.fielddata[i].bootstrapnameid\n obj.bootstrapstackname = this.fielddata[i].bootstrapstackname\n\t\t this.checkactionrowindex(obj)\n //console.log(JSON.stringify('status '+JSON.stringify(this.fielddata[i])))\n\n }\n }\n return value\n }\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n },\n {\n name: 'bootstrapusersjoin',\n title: '<span class=\"orange\"></span>Public',\n sortField: 'bootstrapusersjoin',\n titleClass: 'center aligned',\n visible:true,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n },\n {\n name: '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+\"/swarmlabhybridbootstrapservicesall\",\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: 'pipelinename',\n\t\t\t\tdirection: 'asc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_bootstrap_view', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_bootstrap_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n\t\tasync checkactionrowindex(data){\n var obj = {}\n obj.token = this.token\n obj.bootstrapnameid = data.bootstrapnameid\n obj.bootstrapstackname = data.bootstrapstackname\n var res1 = await store.dispatch('pipelineLLO/getserviceshybridstatus', obj)\n var index = data.bootstrapnameid\n if(res1.data.data == 'yes'){\n Vue.set(this.testactionrowindex, data.bootstrapnameid, index)\n //console.log('res8 YES '+JSON.stringify(res1.data))\n }else{\n //console.log('res8 NO '+JSON.stringify(res1.data))\n Vue.delete(this.testactionrowindex, data.bootstrapnameid)\n }\n //console.log('res8 all '+JSON.stringify(this.testactionrowindex))\n },\n\n\n async onActionHybrid(action) {\n //var logconfig = await store.getters['pipelineLLO/getconfig'];\n this.CONFIG = await store.getters['pipelineLLO/getstatusswarmlab'];\n if(this.CONFIG.hybrid == 'Online'){\n this.isstatus = true\n }else{\n this.isstatus = false\n }\n //console.log('stack-start1 ' + JSON.stringify(this.CONFIG))\n //console.log('stack-start3 ' + JSON.stringify(logconfig1))\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will leave the stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'stack-start' ){\n //console.log('stack-start')\n if(this.isstatus == '1'){\n //console.log(this.isstatus)\n var log = await store.dispatch(\"pipelineLLO/hybrid_join\",{\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 }else if(action == 'service-info' ){\n //console.log(JSON.stringify(action))\n //console.log('CONFIG '+JSON.stringify(this.hybridshowdata))\n var url = this.hybridshowdata.bootstrapurl\n var info=`<h5>You will be redirected to the README page of the repository (OUTSIDE Swarmlab-Hybrid)<br> \n<a href=\"${url}\" target=\"new\">click here to continue</a>\n</h5>\n<br>\n`\n this.$swal({\n type: 'Info',\n title: 'README',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n\n },\n async onActionHybrid_stackrm(action) {\n //console.log(JSON.stringify(action))\n if(action.isConfirmed){\n if(this.isstatus == '1'){\n var log = await store.dispatch(\"pipelineLLO/hybrid_leave\",{\n token:this.token,\n node:this.CONFIG.swarmlabid,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else{\n }\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'run-more' ){\n this.hybridshowdata = data\n //console.log('hybrid '+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.vuetablekey += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n //console.log('data1 '+JSON.stringify(response))\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n console.log('error2 '+JSON.stringify(payload.response.data.error))\n console.log('error2 '+JSON.stringify(payload.response.data.error_description))\n console.log('error2 '+JSON.stringify(payload.response.statusText))\n console.log('error2 '+JSON.stringify(payload.response.status))\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./join-service.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./join-service.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./join-service.vue?vue&type=template&id=319c8694&\"\nimport script from \"./join-service.vue?vue&type=script&lang=js&\"\nexport * from \"./join-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./join-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-12 order-first \" >\n <br>\n <myconnect-manage-server>\n\n </myconnect-manage-server>\n </div>\n\n <!--\n <div class=\"col-1 order-last\" >\n <br>\n <adhoc-view>\n\n </adhoc-view>\n </div>\n -->\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\n//import ViewNetwork from \"./mynetwork/mytable.vue\";\n//import AdhocView from \"./mynetwork/AdhocView.vue\";\nimport card from '@/components/Card.vue'\n//import DockerServices from \"./mynetwork/dockerservices.vue\";\nimport MyconnectManageServer from \"./manageservices/join-service.vue\";\nexport default {\n components: {\n //AdhocView,\n card,\n MyconnectManageServer\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n },\n beforeDestroy () {\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manageservices.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manageservices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./manageservices.vue?vue&type=template&id=448d9a38&\"\nimport script from \"./manageservices.vue?vue&type=script&lang=js&\"\nexport * from \"./manageservices.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 order-first \"},[_c('br'),_c('mydeploy-manage-bootstrap')],1),_c('div',{staticClass:\"col-6 order-last\"},[_c('br'),_c('mydeploy-manage-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/docker.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Swarmlab hybrid Deploy\")])])]),_c('br'),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('ValidationProvider',{ref:\"hybrid_image\",attrs:{\"name\":\"Image\",\"rules\":\"required|alpha_num_image\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.image),expression:\"deploy.image\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.image == 1, 'is-invalid': _vm.isDeployValid.image == 2},attrs:{\"type\":\"text\",\"name\":\"Image\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Image\"},domProps:{\"value\":(_vm.deploy.image)},on:{\"keyup\":function($event){return _vm.isValid('image')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"image\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('image')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_stackname\",attrs:{\"name\":\"StackName\",\"rules\":\"required|alpha_num_name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.stackname),expression:\"deploy.stackname\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.stackname == 1, 'is-invalid': _vm.isDeployValid.stackname == 2},attrs:{\"type\":\"text\",\"name\":\"StackName\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"StackName\"},domProps:{\"value\":(_vm.deploy.stackname)},on:{\"keyup\":function($event){return _vm.isValid('stackname')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"stackname\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('stackname')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('ValidationProvider',{ref:\"hybrid_name\",attrs:{\"name\":\"Name\",\"rules\":\"required|alpha_num_name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.name),expression:\"deploy.name\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.name == 1, 'is-invalid': _vm.isDeployValid.name == 2},attrs:{\"type\":\"HybridError\",\"name\":\"Name\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Name\"},domProps:{\"value\":(_vm.deploy.name)},on:{\"keyup\":function($event){return _vm.isValid('name')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"name\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('name')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_network\",attrs:{\"name\":\"Network\",\"rules\":\"required|alpha_num_name\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.network),expression:\"deploy.network\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.network == 1, 'is-invalid': _vm.isDeployValid.network == 2},attrs:{\"type\":\"text\",\"name\":\"Network\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Network Name\"},domProps:{\"value\":(_vm.deploy.network)},on:{\"keyup\":function($event){return _vm.isValid('network')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"network\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('network')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_cpu\",attrs:{\"name\":\"Cpu\",\"rules\":\"required|alpha_num_cpu\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.cpu),expression:\"deploy.cpu\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.cpu == 1, 'is-invalid': _vm.isDeployValid.cpu == 2},attrs:{\"type\":\"text\",\"name\":\"Cpu\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Limit CPU e.g. 0.50\"},domProps:{\"value\":(_vm.deploy.cpu)},on:{\"keyup\":function($event){return _vm.isValid('cpu')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"cpu\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('cpu')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_memory\",attrs:{\"name\":\"Memory\",\"rules\":\"required|alpha_num_memory\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.memory),expression:\"deploy.memory\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.memory == 1, 'is-invalid': _vm.isDeployValid.memory == 2},attrs:{\"type\":\"text\",\"name\":\"Memory\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Limit Memory e.g. 500\"},domProps:{\"value\":(_vm.deploy.memory)},on:{\"keyup\":function($event){return _vm.isValid('memory')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"memory\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('memory')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('ValidationProvider',{ref:\"hybrid_networkport\",attrs:{\"name\":\"Networkport\",\"rules\":\"mybetween:1,65535\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.networkport),expression:\"deploy.networkport\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.networkport == 1, 'is-invalid': _vm.isDeployValid.networkport == 2},attrs:{\"type\":\"text\",\"name\":\"Networkport\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Net Port (inside the container)\"},domProps:{\"value\":(_vm.deploy.networkport)},on:{\"keyup\":function($event){return _vm.isValid('networkport')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"networkport\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('networkport')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('ValidationProvider',{ref:\"hybrid_url\",attrs:{\"name\":\"Url\",\"rules\":\"required|alpha_url\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaMsg = ref.ariaMsg;\nvar ariaInput = ref.ariaInput;\nvar valid = ref.valid;\nvar invalid = ref.invalid;\nreturn [_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.url),expression:\"deploy.url\"}],staticClass:\"form-control\",class:{'is-valid': _vm.isDeployValid.url == 1, 'is-invalid': _vm.isDeployValid.url == 2},attrs:{\"type\":\"text\",\"name\":\"Url\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"link to README file (see info button for more)\"},domProps:{\"value\":(_vm.deploy.url)},on:{\"keyup\":function($event){return _vm.isValid('url')},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.deploy, \"url\", $event.target.value)}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"ti-info btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.showInfo('url')}}})])]),_c('span',{staticClass:\"hybrid-field-error\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"Start date \")])]),_c('date-picker',{attrs:{\"type\":\"date\",\"autocomplete\":\"off\",\"format\":\"YYYY-MM-DD\",\"lang\":\"en\"},model:{value:(_vm.deploy.startdate),callback:function ($$v) {_vm.$set(_vm.deploy, \"startdate\", $$v)},expression:\"deploy.startdate\"}})],1)]),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"Start time\")])]),_c('date-picker',{attrs:{\"type\":\"time\",\"format\":'HH:mm',\"show-hour\":\"\",\"show-minute\":\"\",\"time-picker-options\":_vm.timePickerOptions,\"lang\":\"en\"},model:{value:(_vm.deploy.starttime),callback:function ($$v) {_vm.$set(_vm.deploy, \"starttime\", $$v)},expression:\"deploy.starttime\"}})],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"End date \")])]),_c('date-picker',{attrs:{\"type\":\"date\",\"autocomplete\":\"off\",\"format\":\"YYYY-MM-DD\",\"lang\":\"en\"},model:{value:(_vm.deploy.enddate),callback:function ($$v) {_vm.$set(_vm.deploy, \"enddate\", $$v)},expression:\"deploy.enddate\"}})],1)]),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm mb-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"}},[_vm._v(\"End time\")])]),_c('date-picker',{attrs:{\"type\":\"time\",\"format\":'HH:mm',\"show-hour\":\"\",\"show-minute\":\"\",\"time-picker-options\":_vm.timePickerOptions,\"lang\":\"en\"},model:{value:(_vm.deploy.endtime),callback:function ($$v) {_vm.$set(_vm.deploy, \"endtime\", $$v)},expression:\"deploy.endtime\"}})],1)])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('div',{staticClass:\"input-group-prepend\"},[_c('button',{staticClass:\"ti-cloud-up btn btn-outline-success\",attrs:{\"round\":\"\",\"type\":\"button\",\"title\":\"Deploy\"},on:{\"click\":function($event){return _vm.add_deploy()}}},[_vm._v(\" Deploy \")])])])]),_c('b-col',{attrs:{\"cols\":\"2\"}}),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"custom-control custom-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deploy.usersjoin),expression:\"deploy.usersjoin\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":\"customStack\",\"value\":\"true\",\"unchecked-value\":\"false\"},domProps:{\"checked\":Array.isArray(_vm.deploy.usersjoin)?_vm._i(_vm.deploy.usersjoin,\"true\")>-1:(_vm.deploy.usersjoin)},on:{\"change\":function($event){var $$a=_vm.deploy.usersjoin,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=\"true\",$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.deploy, \"usersjoin\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.deploy, \"usersjoin\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.deploy, \"usersjoin\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"customStack\"}},[_vm._v(\"Users can join the lab instance\")])])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/docker.png\" alt=\"...\">\n </div>\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"row text-center\">\n <div class=\"col-12\">\n <b>Swarmlab hybrid Deploy</b>\n </div>\n </div>\n\n<br>\n <b-row>\n <b-col cols=\"8\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_image\"\n\t\t\t\t\t\tname=\"Image\"\n\t\t\t\t\t\trules=\"required|alpha_num_image\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.image == 1, 'is-invalid': isDeployValid.image == 2}\"\n\t\t\t\t\t\t name=\"Image\"\n aria-label=\"Small\" \n\t\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Image\"\n v-model=\"deploy.image\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('image')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('image')\"\n\t\t\t\t\t\t\t\t\t >\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n\n <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider\n ref=\"hybrid_stackname\"\n\t\t\t\t\t\tname=\"StackName\"\n\t\t\t\t\t\trules=\"required|alpha_num_name\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n\t\t\t\t\t\t name=\"StackName\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.stackname == 1, 'is-invalid': isDeployValid.stackname == 2}\"\n aria-label=\"Small\" \n\t\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"StackName\"\n v-model=\"deploy.stackname\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('stackname')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('stackname')\">\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n\n </b-row>\n <b-row>\n <b-col cols=\"8\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_name\"\n\t\t\t\t\t\tname=\"Name\"\n\t\t\t\t\t\trules=\"required|alpha_num_name\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=HybridError \n\t\t\t\t\t\t name=\"Name\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.name == 1, 'is-invalid': isDeployValid.name == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Name\"\n v-model=\"deploy.name\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('name')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('name')\">\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_network\"\n\t\t\t\t\t\tname=\"Network\"\n\t\t\t\t\t\trules=\"required|alpha_num_name\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n\t\t\t\t\t\t\t\t\tname=\"Network\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.network == 1, 'is-invalid': isDeployValid.network == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Network Name\"\n v-model=\"deploy.network\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('network')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('network')\">\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n </b-row>\n\n <b-row>\n <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n\t\t\t\t\t\tref=\"hybrid_cpu\"\n\t\t\t\t\t\tname=\"Cpu\"\n\t\t\t\t\t\trules=\"required|alpha_num_cpu\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n\t\t\t\t\t\t name=\"Cpu\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.cpu == 1, 'is-invalid': isDeployValid.cpu == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Limit CPU e.g. 0.50\"\n v-model=\"deploy.cpu\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('cpu')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('cpu')\"\n >\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n\t\t\t\t\t\tref=\"hybrid_memory\"\n\t\t\t\t\t\tname=\"Memory\"\n\t\t\t\t\t\trules=\"required|alpha_num_memory\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n\t\t\t\t\t\t name=\"Memory\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.memory == 1, 'is-invalid': isDeployValid.memory == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Limit Memory e.g. 500\"\n v-model=\"deploy.memory\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('memory')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('memory')\">\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n <b-col cols=\"4\">\n\t\t\t\t\t<ValidationProvider \n\t\t\t\t\t\tref=\"hybrid_networkport\"\n\t\t\t\t\t\tname=\"Networkport\"\n\t\t\t\t\t\trules=\"mybetween:1,65535\"\n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n\t\t\t\t\t\t name=\"Networkport\"\n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.networkport == 1, 'is-invalid': isDeployValid.networkport == 2}\"\n aria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"Net Port (inside the container)\"\n v-model=\"deploy.networkport\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('networkport')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('networkport')\">\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n </b-row>\n\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab url ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"12\">\n\t\t\t\t\t<ValidationProvider \n ref=\"hybrid_url\"\n\t\t\t\t\t\tname=\"Url\"\n\t\t\t\t\t\trules=\"required|alpha_url\" \n v-slot=\"{ errors, ariaMsg, ariaInput, valid, invalid }\"\n\t\t\t\t >\n <div class=\"input-group input-group-sm sm-3\">\n <input type=\"text\" \n class=\"form-control\" \n v-bind:class=\"{'is-valid': isDeployValid.url == 1, 'is-invalid': isDeployValid.url == 2}\"\n\t\t\t\t\t\t name=\"Url\"\n aria-label=\"Small\" \n\t\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-sm\"\n placeholder=\"link to README file (see info button for more)\"\n v-model=\"deploy.url\"\n\t\t\t\t\t\t\t\t\tv-on:keyup=\"isValid('url')\"\n >\n\t\t\t\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-info btn btn-outline-secondary\" \n\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"showInfo('url')\"\n\t\t\t\t\t\t\t\t\t >\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n </div>\n\t\t\t\t\t<span class=\"hybrid-field-error\">{{ errors[0] }}</span>\n\t\t\t\t\t</ValidationProvider>\n </b-col>\n </b-row>\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab startdate ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>Start date </button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.startdate\"\n\t\t\t\t\t\t\t\t\t\t\t\tformat=\"YYYY-MM-DD\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t\t<!-- -------- lab starttime ----------------------------------- -->\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>Start time</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\t\t\t\t:format=\"'HH:mm'\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.starttime\"\n\t\t\t\t\t\t\t\t\t\t\t\tshow-hour\n\t\t\t\t\t\t\t\t\t\t\t\tshow-minute\n\t\t\t\t\t\t\t\t\t\t\t\t:time-picker-options=\"timePickerOptions\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n </b-row>\n\n\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t<!-- -------- lab enddate ----------------------------------- -->\n\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-row>\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>End date </button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.enddate\"\n\t\t\t\t\t\t\t\t\t\t\t\tformat=\"YYYY-MM-DD\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n\t\t\t\t\t<!-- -------- lab endtime ----------------------------------- -->\n\t\t\t\t\t<!-- --------------------------------------------------------- -->\n <b-col cols=\"6\">\n\t\t\t\t\t\t\t<div class=\"input-group input-group-sm mb-3\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t<button class=\"btn btn-outline-secondary\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t>End time</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t <date-picker\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"time\"\n\t\t\t\t\t\t\t\t\t\t\t\t:format=\"'HH:mm'\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.endtime\"\n\t\t\t\t\t\t\t\t\t\t\t\tshow-hour\n\t\t\t\t\t\t\t\t\t\t\t\tshow-minute\n\t\t\t\t\t\t\t\t\t\t\t\t:time-picker-options=\"timePickerOptions\"\n\t\t\t\t\t\t\t\t\t\t\t\tlang=\"en\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</date-picker>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n </b-row>\n\n\n\n <b-row>\n <b-col cols=\"6\">\n <div class=\"input-group input-group-sm sm-3\">\n <div class=\"input-group-prepend\">\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"ti-cloud-up btn btn-outline-success\"\n\t\t\t\t\t\t\t\t\t\t\t\tround\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Deploy\"\n \t\t\t\t\t\t\t\t\t\t\t@click=\"add_deploy()\"\n\t\t\t\t\t\t\t\t\t\t\t> Deploy\n\t\t\t\t\t\t\t\t\t\t\t</button>\n </div>\n </div>\n </b-col>\n\n <b-col cols=\"2\">\n </b-col>\n\n <b-col cols=\"4\">\n\t\t\t\t\t\t\t\t<div class=\"custom-control custom-switch\">\n\t\t\t\t\t\t\t\t\t<input type=\"checkbox\" class=\"custom-control-input\" id=\"customStack\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-model=\"deploy.usersjoin\"\n \t\t\t\t\t\t\t\t\t\tvalue=\"true\"\n \t\t\t\t\t\t\t\t\tunchecked-value=\"false\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<label class=\"custom-control-label\" for=\"customStack\">Users can join the lab instance</label>\n\t\t\t\t\t\t\t\t</div>\n </b-col>\n </b-row>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport DatePicker from 'vue2-datepicker'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nimport { ValidationObserver, ValidationProvider, extend } from 'vee-validate';\nimport { required, alpha_num, between} from 'vee-validate/dist/rules';\nimport 'vue2-datepicker/index.css';\n\n// No message specified.\nextend('alpha_num', alpha_num);\n\nextend('mybetween', between);\nextend('mybetween', {\n message: 'The {_field_} field must be a number: 1-65535'\n});\n\n//extend('alpha_num_image', alpha_num);\nextend('alpha_num_image', value => {\n var regex = new RegExp(/^[A-Za-z0-9\\:\\.\\-\\_\\/]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores'\n});\n\nextend('alpha_num_name', value => {\n var regex = new RegExp(/^[A-Za-z0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain alphabetic characters and numbers'\n});\n\nextend('alpha_num_cpu', value => {\n //var regex = new RegExp(/^(?:\\d{1})?(?:\\.\\d{1})?$/); \n var regex = new RegExp(/^(?!0\\d)\\d+(?:\\.\\d{1})?$/); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain numbers and dots e.g 0.5'\n});\n\n\nextend('alpha_num_memory', value => {\n var regex = new RegExp(/^[0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain numbers e.g 500'\n});\n\nextend('alpha_url', value => {\n var regex = new RegExp(/https?:\\/\\/(git\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/,'i');\n //var regex = new RegExp(/^[0-9]+$/, 'i'); \n\tif(regex.test(value)){\n return true;\n\t}\n return 'The {_field_} field may contain url'\n});\n\n// Override the default message.\nextend('required', {\n ...required,\n message: 'This field is required'\n});\nexport default {\n components: {\n DatePicker,\n ValidationProvider,\n card\n\t},\n props: {\n },\n data() {\n return{\n\t isHybridError: false,\n\t isHybridSuccess: false,\n token: '',\n\t\ttimePickerOptions:{\n\t\t\t\tstart: '00:00',\n\t\t\t\tstep: '00:30',\n\t\t\t\tend: '23:30'\n\t\t},\n deploy:{\n \t\t\"usersjoin\":true\n\t },\n isDeployValid:{\n \t\t\"image\":3,\n \t\t\"name\":3,\n \t\t\"stackname\":3,\n \t\t\"network\":3,\n \t\t//\"networkport\":3,\n \t\t\"url\":3,\n \t\t\"cpu\":3,\n \t\t\"memory\":3\n\t },\n isDeployError:{\n\t }\n\t\t}\n },\n\tmounted() {\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n },\n computed: {\n\t},\n\n methods: {\n/*\n async isValidate (event) {\n this.$nextTick(() => {\n //await this.isValid(event)\n //console.log(\"keywords value: \" + this.deploy.image);\n });\n },\n*/\n \tasync add_deploy(){\n \n\t\t\tvar o = Object.entries(this.deploy)\n\t\t\tvar pvalid = new Promise((resolve, reject) => {\n\t\t\t\to.forEach((value, index, array) => {\n\t\t\t\t\t\tthis.isValid(array[index][0])\n\t\t\t\t\t\tif (index === array.length -1) resolve();\n\t\t\t\t});\n\t\t\t});\n\n\t\tpvalid.then(() => {\n (async () => {\n var isAllValid = true\n\t\t\t\t\tfor (const [key, value] of Object.entries(this.isDeployValid)) {\n\t\t\t\t\t\t//console.log(`${key}: ${value}`);\n\t\t\t\t\t\tif(value != 1){\n isAllValid = false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(isAllValid){ \n\t\t\t\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/adddeploy\",{\n\t\t\t\t\t\t\t\ttoken:this.token,\n\t\t\t\t\t\t\t\tdeploy:this.deploy\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tthis.$root.$emit('hybrid_refresh_bootstrap_view')\n console.log('ok')\n\t\t\t\t\t\t\tvar info = '<h5>The deploy process is started</h5> Please wait for it to finish before trying again! <br><br>See also in \"Manage your deployments\" table'\n\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\ttitle: 'Info!',\n\t\t\t\t\t\t\t\ticon:'info',\n\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\tcancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}else{\n\t\t\t\t\t\t\tvar info = \"Missing required fields\"\n\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\ttitle: 'Info!',\n\t\t\t\t\t\t\t\ticon:'info',\n\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\tcancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t})\n\n\t\t\t\t }\n })();\n\t\t});\n\t\t\t\n\t\t},\n \tasync showInfo(action){\n\t\t\tif(action == 'image' ){\n var info=`<h5>To start, we need to have a <b>docker image </b> <br>\n<br> We have built some. You can find it here: Menu \"Images\"</h5>\n<h6>More Info here: <a href=\"https://en.wikipedia.org/wiki/Docker_(software)\" target=\"new\">Wikipedia</a> , <a href=\"https://www.docker.com/resources/what-container\" target=\"new\">Docker</a> </h6>\n<br>\n<br>\n The field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores\n`\n\t\t }else if(action == 'stackname'){\n var info=`<h5>To start, we need to have a <b>Stack Name </b> <br>\n<br> This will bring up all the services, volumes, networks and everything else <br> in an isolated environment.\n</h6>\n<br>\n<br>\n The field may contain alphabetic characters and numbers\n`\n\t\t }else if(action == 'network'){\n var info=`<h5>To start, we need to have a <b>Network </b> <br>\n<br> This will bring up all the services, volumes, networks and everything else <br> in an isolated network environment.\n<br>\n<br>\nServices running inside any of this networks containers have access (not limited by any firewall) to all other services.\n<br>\n</h5>\n<br>\n<br>\n The field may contain alphabetic characters and numbers\n\n`\n\t\t }else if(action == 'url'){\n var info=`<h5><b>Git Repo url </b></h5>\n<br> The location of the file describing your service. (most comonly README)</br> \n<br>\n</br>\n</h5>\n<br>\n<br>\n The field may contain any valid url BUT it must be under https://git.swarmlab.io\n`\n\t\t }else if(action == 'networkport'){\n var info=`<h5><b>Network Port </b></h5>\n<br> \n<h5>\nBy default, when you create a container, <b>it does not publish any of its ports to the outside world. </b>\n<br>\nTo make a port available to Services which are not connected to the Stack network, we use this port. \n</h5>\n<br>\n<h5>\n<u>\nTo make a service available we have to know the port number used by these service inside the container.\n</u>\n<br>\n<b>Please insert that here.</b>\n</h5>\n<br>\n<br>\n(The port for outside connections is automatically generated and you dont have to worry about it!)\n<br>\n<br>\n The field may contain numbers\n`\n\t\t }else if(action == 'cpu'){\n var info=`<h5>To start, we need to have a <b>CPU </b> Limit <br>\n<br> Limit the specific CPUs or cores a container can use\n</h6>\n<br>\n<br>\nThe field may contain numbers and dots e.g 0.5\n`\n\t\t }else if(action == 'memory'){\n var info=`<h5>To start, we need to have a <b>Memory </b> Limit \n<br> <br> Limit the specific Memoty a container can use <br> \ne.g 200\n<br> \n(MB)\n</h6>\n<br>\n<br>\n<h6>\n<i>\nIt is important <b>not</b> to allow a running container to consume too much of the host machine’s memory.\n</i>\n</h6>\n<br>\n<br>\n The field may contain numbers\n`\n\t\t }else if(action == 'name'){\n var info=`<h5>To start, we need to have a <b>Name </b><br> \nThis name is only for your own use. The system completely disregards it!\n</h5>\n<br>\n<br>\n The field may contain alphabetic characters and numbers\n`\n\t\t\t}\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\t\t},\n \tasync isValid(f){\n\n // ------------\n // validate\n // ------------\n if(f == 'image'){\n \t//console.log(this.deploy.image)\n\t\t\t\tvar field \t= await this.$refs.hybrid_image.validate();\n if(field.valid == true){\n \tthis.isDeployValid.image = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.image = 2\n\t\t\t\t}\n \t//console.log(JSON.stringify(f_image))\n \t//console.log(this.isDeployValid.image)\n }else if(f == 'stackname'){\n\t\t\t var field = await this.$refs.hybrid_stackname.validate();\n if(field.valid == true){\n \tthis.isDeployValid.stackname = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.stackname = 2\n\t\t\t\t}\n }else if(f == 'network'){\n\t\t\t var field = await this.$refs.hybrid_network.validate();\n if(field.valid == true){\n \tthis.isDeployValid.network = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.network = 2\n\t\t\t\t}\n }else if(f == 'url'){\n\t\t\t var field = await this.$refs.hybrid_url.validate();\n if(field.valid == true){\n \tthis.isDeployValid.url = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.url = 2\n\t\t\t\t}\n }else if(f == 'networkport'){\n\t\t\t var field = await this.$refs.hybrid_networkport.validate();\n //console.log('port '+JSON.stringify(field))\n if(field.valid == true){\n \tthis.isDeployValid.networkport = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.networkport = 2\n\t\t\t\t}\n }else if(f == 'cpu'){\n\t\t\t var field = await this.$refs.hybrid_cpu.validate();\n if(field.valid == true){\n \tthis.isDeployValid.cpu = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.cpu = 2\n\t\t\t\t}\n }else if(f == 'memory'){\n\t\t\t var field = await this.$refs.hybrid_memory.validate();\n if(field.valid == true){\n \tthis.isDeployValid.memory = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.memory = 2\n\t\t\t\t}\n }else if(f == 'name'){\n\t\t\t var field = await this.$refs.hybrid_name.validate();\n if(field.valid == true){\n \tthis.isDeployValid.name = 1\n\t\t\t\t}else{\n \tthis.isDeployValid.name = 2\n\t\t\t\t}\n }\n }\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n.hybrid-field-error {\n color: red;\n}\n\n.hybrid-error {\n color: red;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deploy-bootstrap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deploy-bootstrap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./deploy-bootstrap.vue?vue&type=template&id=ea25a184&\"\nimport script from \"./deploy-bootstrap.vue?vue&type=script&lang=js&\"\nexport * from \"./deploy-bootstrap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./deploy-bootstrap.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==false),expression:\"hybridshowlog==false\"}],staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/hybrid-1.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==false),expression:\"hybridshowlog==false\"}],staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Manage your deployments\")])])]),_c('br'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog),expression:\"hybridshowlog\"}],staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('log-view')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowlog==false)?_c('button',{staticClass:\"btn btn-outline-info\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionLog(1)}}},[_vm._v(\" Show logs \")]):_vm._e(),(_vm.hybridshowdata.bootstrapstackname&&_vm.hybridshowlog==true)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionLog(2)}}},[_vm._v(\" Close logs \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapstackname)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('stack-stop')}}},[_vm._v(\" Remove Stack \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapnameid && _vm.hybridshowdata.status)?_c('button',{staticClass:\"btn btn-outline-danger\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-stop')}}},[_vm._v(\" Remove Service \")]):_vm._e()])]),_c('div',{staticClass:\"col-3 text-info\"},[_c('div',{staticClass:\"input-group-prepend\"},[(_vm.hybridshowdata.bootstrapnameid && _vm.hybridshowdata.status)?_c('button',{staticClass:\"btn btn-outline-warning\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.onActionHybrid('service-restart')}}},[_vm._v(\" Restart Service \")]):_vm._e()])])]),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Instances \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.Replicas)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Image \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapimage)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Names \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapname)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" EndAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdateend)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Networks \")]),_c('div',{staticClass:\"col-3 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapnetwork)+\" \")]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" BeginAt \")]),_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.bootstrapdatebegin)+\" \")])]):_vm._e(),_vm._v(\" \"),(_vm.hybridshowdata.bootstrapstackname)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Status \")]),(_vm.hybridshowdata.status)?_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span',{staticClass:\"ti-check text-success\"})]):_c('div',{staticClass:\"col-3 text-secondary\"},[_c('span')]),_c('div',{staticClass:\"col-2 text-info\"},[_vm._v(\" Ports \")]),(_vm.hybridshowdata.ports!=0)?_c('div',{staticClass:\"col-4 text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.hybridshowdata.ports)+\" \")]):_c('div',{staticClass:\"col-4 text-secondary\"})]):_vm._e()]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search By StackName\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),_c('vuetable',{key:_vm.vuetablekey,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actions\",fn:function(props){return _c('div',{},[(_vm.actionrowindex == props.rowIndex)?_c('button',{staticClass:\"ti-more-alt btn btn-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-more btn btn-outline-secondary btn-sm\",attrs:{\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}})])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/code-128.png\"),\"alt\":\"...\"}})]),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\" col text-center\"},[_c('v-wait',{attrs:{\"for\":\"myRunInstance1\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\"),\"width\":\"50\",\"height\":\"50\"}}),_vm._v(\" Lab_Instance... \")])])],2),(_vm.extenderror)?_c('button',{staticClass:\"btn btn-outline-danger btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":function($event){return _vm.runextenderror()}}},[_vm._v(\" Error: max depth exceeded\")]):_vm._e(),(_vm.tryConsole)?_c('button',{staticClass:\"btn btn-outline-warning btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":function($event){return _vm.clear()}}},[_vm._v(\" Clear\")]):_vm._e(),_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\",\"disabled\":\"\"}},[_vm._v(\" Console\")]),(_vm.cmOptions.keyMap == 'sublime')?_c('button',{staticClass:\"btn btn-outline-info btn-sm\",attrs:{\"type\":\"button\",\"round\":\"\"},on:{\"click\":_vm.infoFilter}},[_vm._v(\" i\")]):_vm._e()],1),_c('div',{staticClass:\"codemirror\"},[_c('codemirror',{ref:\"myCm\",attrs:{\"value\":_vm.code,\"options\":_vm.cmOptions},on:{\"cursorActivity\":_vm.onCmCursorActivity,\"ready\":_vm.onCmReady,\"focus\":_vm.onCmFocus,\"input\":_vm.onCmCodeChange}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/code-128.png\" alt=\"...\">\n </div>\n <b-container fluid class=\"bv-example-row\">\n <div class=\" col text-center\">\n\t\t<v-wait for=\"myRunInstance1\">\n\t\t\t<template slot=\"waiting\">\n\t\t\t\t<div>\n\t\t\t\t\t<img src=\"@/assets/loading.gif\" width=\"50\" height=\"50\" />\n\t\t\t\t\tLab_Instance...\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</v-wait>\n <button type=\"button\"\n round\n class=\"btn btn-outline-danger btn-sm\"\n v-if=\"extenderror\"\n @click=\"runextenderror()\">\n Error: max depth exceeded</button>\n <button type=\"button\"\n round\n class=\"btn btn-outline-warning btn-sm\"\n v-if=\"tryConsole\"\n @click=\"clear()\">\n Clear</button>\n <button type=\"button\"\n round\n class=\"btn btn-outline-info btn-sm\"\n disabled\n >\n Console</button>\n <button type=\"button\"\n round\n class=\"btn btn-outline-info btn-sm\"\n v-if=\"cmOptions.keyMap == 'sublime'\"\n @click=\"infoFilter\">\n i</button>\n \n </div>\n <div class=\"codemirror\" >\n <codemirror\n ref=\"myCm\"\n :value=\"code\"\n :options=\"cmOptions\"\n @cursorActivity=\"onCmCursorActivity\"\n @ready=\"onCmReady\"\n @focus=\"onCmFocus\"\n @input=\"onCmCodeChange\"\n ></codemirror>\n </div>\n </b-col>\n </b-row>\n</b-container>\n\n\n\t</card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport store from '@/store/index' \n\n\nimport { codemirror } from 'vue-codemirror'\nimport JSZip from 'jszip';\nimport FileSaver from 'file-saver';\nimport 'codemirror/lib/codemirror.css'\nimport 'codemirror/theme/mdn-like.css'\nimport card from '@/components/Card.vue'\n import 'codemirror/theme/idea.css'\nimport'codemirror/addon/selection/active-line.js'\n\nimport'codemirror/addon/hint/show-hint.js'\nimport'codemirror/addon/hint/show-hint.css'\nimport'codemirror/addon/hint/javascript-hint.js'\nimport'codemirror/addon/selection/active-line.js'\nimport'codemirror/addon/scroll/annotatescrollbar.js'\nimport'codemirror/addon/search/matchesonscrollbar.js'\nimport'codemirror/addon/search/searchcursor.js'\nimport'codemirror/addon/search/match-highlighter.js'\n\nimport'codemirror/mode/shell/shell.js'\nimport'codemirror/addon/edit/matchbrackets.js'\nimport'codemirror/addon/comment/comment.js'\nimport'codemirror/addon/dialog/dialog.js'\nimport'codemirror/addon/dialog/dialog.css'\nimport'codemirror/addon/search/searchcursor.js'\nimport'codemirror/addon/search/search.js'\nimport'codemirror/keymap/sublime.js'\nimport'codemirror/keymap/vim.js'\n\nimport'codemirror/addon/fold/foldgutter.css'\nimport'codemirror/addon/fold/brace-fold.js'\nimport'codemirror/addon/fold/comment-fold.js'\nimport'codemirror/addon/fold/foldcode.js'\nimport'codemirror/addon/fold/foldgutter.js'\nimport'codemirror/addon/fold/indent-fold.js'\nimport'codemirror/addon/fold/markdown-fold.js'\nimport'codemirror/addon/fold/xml-fold.js'\nimport 'codemirror/lib/codemirror';\nimport 'codemirror/addon/display/placeholder';\n\nexport default {\n components: {\n card,\n\t\t\tcodemirror\n },\n data () {\n return {\n socketonline:false,\n extenderror:false,\n tryConsole:false,\n ssl:{},\n getinfo:'',\n token:'',\n swarmlabname:'',\n\n code: '',\n editchoice: '',\n optionsedit: [\n { text: 'code', value: 'code' },\n { text: 'text', value: 'text' }\n ],\n llodesc:[{\n llo_url : '',\n llo_name : '',\n llo_author : '',\n llo_intro : ''\n }],\n llo:[{\n id : 0,\n rm : false,\n data_info : 'Asciidoc \\n',\n data_code : '#Your source code',\n data_service : '',\n code_datafile : 'url',\n code_name : '',\n code_exec : '',\n code_options : '',\n code_mime : '',\n code_info : '',\n code_code : '',\n code_codeout : '',\n code_codeoutput : 'console',\n points : '',\n challenge_question : '',\n code_challenge_question : '',\n challenge_answer : '',\n challenge_answer_hint : '',\n code_challenge_answer_hint : '',\n challenge_answer_source : '',\n challenge_answer_code_out : '',\n challenge_answer_code : '',\n code_challenge_answer_code : ''\n }],\n\t\t searchLLO: [],\n searchLLOactive : false,\n ADOC_html_code:'',\n challenge:[],\n action:'',\n tryLLO:[],\n service:'os2',\n active:0,\n activecount:0,\n remove:'',\n activeField:'',\n bootstrap:false,\n firstbootstrap:0,\n htmlasciitmp:'',\n datafile: 'https://git.swarmlab.io:3000/labs/examples-mpi2/raw/branch/master/0_netstat/data',\n datadir: '0_netstat/data',\n LearningObject:'',\n showllo:true,\n showlloedit:true,\n \t\tselected: 'sublime',\n options: [\n { text: 'vim', value: 'vim' },\n { text: 'sublime', value: 'sublime' }\n ],\n optionsmime: [\n { text: 'sh', value: 'bash' },\n { text: 'javascript', value: 'javascript' },\n { text: 'python', value: 'python' },\n { text: 'php', value: 'php' },\n { text: 'sql', value: 'sq;' },\n { text: 'xml', value: 'xml' },\n { text: 'c', value: 'c' }\n ],\n pValidate: false,\n cmOptions: {\n tabSize: 2,\n styleActiveLine: true,\n lineNumbers: false,\n lineSeparator:'\\n',\n line: true,\n foldGutter: true,\n gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n highlightSelectionMatches: { showToken: /\\w/, annotateScrollbar: true },\n styleSelectedText: true,\n mode: 'shell',\n hintOptions:{\n completeSingle: false\n },\n keyMap: \"sublime\",\n //keyMap: \"vim\",\n matchBrackets: true,\n showCursorWhenSelecting: true,\n indentUnit:this.ADOC_html_code,\n lineWrapping: true,\n theme: 'idea',\n //theme: 'mdn-like',\n refresh:true,\n readOnly: true,\n autofocus: false,\n extraKeys: { \"Ctrl\": \"autocomplete\" }\n },\n ADOC_html:[]\n }\n },\n methods: {\n\n clear () {\n this.tryConsole = false\n this.code = ''\n },\n async getdata () {\n\n var field = this.getinfo\n var log = await store.dispatch(\"pipelineLLO/get_data\",{\n code:field \n })\n\n },\n\n async showactive(index) {\n this.topwindow(index)\n\t\t},\n onCmReady(cm) {\n cm.on('change', (cm, chg) => {\n }),\n cm.on('keypress', () => {\n cm.showHint({completeSingle:false})\n })\n },\n onCmCursorActivity(a, b, c) {\n },\n onCmFocus(cm) {\n },\n onCmCodeChange(newCode) {\n this.code = newCode\n //this.$root.$emit('socket_add',this.code)\n },\n handleChange() {\n },\n setKeymap () {\n this.cmOptions.keyMap = this.selected\n },\n\t\tinfoFilter() {\n\t\t\t\tvar title1='<h3>Playbook Images</h3>'\n\t\t\t\t\tvar winfop='<table class=\"table table-striped table-sm \">'+\n '<tr><td class=\"text-left\">Shift-Tab</td> <td class=\"text-left\">indentLess</td></tr>'+\n '<tr><td class=\"text-left\">Alt-Q</td> <td class=\"text-left\">wrapLines</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Up</td> <td class=\"text-left\">scrollLineUp</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Down</td> <td class=\"text-left\">scrollLineDown</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-L</td> <td class=\"text-left\">selectLine</td></tr>'+\n '<tr><td class=\"text-left\">Esc</td> <td class=\"text-left\">singleSelectionTop</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Enter</td> <td class=\"text-left\">insertLineAfter</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-D</td> <td class=\"text-left\">selectNextOccurrence</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-Space</td> <td class=\"text-left\">selectScope</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-M</td> <td class=\"text-left\">selectBetweenBrackets</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-M</td> <td class=\"text-left\">goToBracket</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-Y</td> <td class=\"text-left\">sublimeYank</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-C</td> <td class=\"text-left\">showInCenter</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-G</td> <td class=\"text-left\">clearBookmarks</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-Backspace</td> <td class=\"text-left\">delLineLeft</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-0</td> <td class=\"text-left\">unfoldAll</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-K Ctrl-J</td> <td class=\"text-left\">unfoldAll</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Alt-Up</td> <td class=\"text-left\">addCursorToPrevLine</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-Alt-Down</td> <td class=\"text-left\">addCursorToNextLine</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-F3</td> <td class=\"text-left\">findUnder</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-F3</td> <td class=\"text-left\">findUnderPrevious</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-[</td> <td class=\"text-left\">fold</td></tr>'+\n '<tr><td class=\"text-left\">Shift-Ctrl-]</td> <td class=\"text-left\">unfold</td></tr>'+\n '<tr><td class=\"text-left\">Ctrl-F</td> <td class=\"text-left\">find</td></tr>'+\n'</table>'\n\t\t\t\t\t\n\t\t\t\t\tvar title1=''\n\t\t\t\t\tvar winfo=''\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttitle: '<strong>Key bindings</strong>',\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: winfop+title1+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false\n\t\t\t\t})\n\t\t}\n\n },\n computed: {\n codemirror() {\n return this.$refs.myCm.codemirror\n }\n\n\t},\n\tmounted() {\n // from runLLO\n\t\tthis.$root.$on('hybrid_server_log_status', (v) => {\n\t\t\tthis.$nextTick(function () {\n if(v == 'off'){\n this.socketonline = false\n }else if(v == 'on'){\n this.socketonline = true\n }\n\t\t\t})\n\t\t})\n // from runLLO\n\t\tthis.$root.$on('hybrid_server_log_in', (log) => {\n console.log('logsemiton '+JSON.stringify(log))\n this.code += log\n this.code += \"\\n\"\n this.tryConsole=true\n\t\t})\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_server_log_status')\n\t\tthis.$root.$off('hybrid_server_log_in')\n },\n\n\t\tcreated () {\n this.token = new URL(location.href).searchParams.get('token');\n this.swarmlabname = new URL(location.href).searchParams.get('pipelinename');\n\t\t}\n};\n</script>\n\n<style>\n.CodeMirror {\n\n\n font-family: monospace;\n height: 350px;\n}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LogView.vue?vue&type=template&id=9ee2b160&\"\nimport script from \"./LogView.vue?vue&type=script&lang=js&\"\nexport * from \"./LogView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LogView.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n v-show=\"hybridshowlog==false\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/hybrid-1.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n <div class=\"row text-center\"\n v-show=\"hybridshowlog==false\"\n >\n <div class=\"col-12\">\n <b>Manage your deployments</b>\n </div>\n </div>\n\n<br>\n <div class=\"row\" \n v-show=\"hybridshowlog\"\n >\n <div class=\"col-12\" >\n <log-view>\n </log-view>\n </div>\n </div>\n\n <div class=\"row\" >\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-info\"\n round\n type=\"button\"\n @click=\"onActionLog(1)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowlog==false\"\n >\n Show logs\n </button>\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionLog(2)\"\n v-if=\"hybridshowdata.bootstrapstackname&&hybridshowlog==true\"\n >\n Close logs\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('stack-stop')\"\n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n Remove Stack\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-danger\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-stop')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n >\n Remove Service\n </button>\n </div>\n </div>\n <div class=\"col-3 text-info\" >\n <div class=\"input-group-prepend\">\n <button\n class=\"btn btn-outline-warning\"\n round\n type=\"button\"\n @click=\"onActionHybrid('service-restart')\"\n v-if=\"hybridshowdata.bootstrapnameid && hybridshowdata.status\"\n >\n Restart Service\n </button>\n </div>\n </div>\n </div> <!-- row -->\n\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" \n >\n Instances\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.Replicas }}\n </div>\n <div class=\"col-2 text-info\" >\n Image \n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapimage }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Names\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapname }}\n </div>\n <div class=\"col-2 text-info\" >\n EndAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdateend }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Networks\n </div>\n <div class=\"col-3 text-secondary\" >\n {{ hybridshowdata.bootstrapnetwork }}\n </div>\n <div class=\"col-2 text-info\" >\n BeginAt\n </div>\n <div class=\"col-4 text-secondary\" >\n {{ hybridshowdata.bootstrapdatebegin }}\n </div>\n </div> <!-- row -->\n <div class=\"row\" \n v-if=\"hybridshowdata.bootstrapstackname\"\n >\n <div class=\"col-2 text-info\" >\n Status\n </div>\n <div class=\"col-3 text-secondary\" \n v-if=\"hybridshowdata.status\"\n >\n <span class=\"ti-check text-success\"> </span>\n </div>\n <div class=\"col-3 text-secondary\" \n v-else\n >\n <span> </span>\n </div>\n <div class=\"col-2 text-info\" >\n Ports\n </div>\n <div class=\"col-4 text-secondary\" \n v-if=\"hybridshowdata.ports!=0\"\n >\n {{ hybridshowdata.ports }}\n </div>\n <div class=\"col-4 text-secondary\" \n v-else\n >\n \n </div>\n </div> <!-- row -->\n </b-container>\n <b-container fluid class=\"bv-example-row\">\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search By StackName\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n @vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n\n <div slot=\"actions\" slot-scope=\"props\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport LogView from \"./LogView.vue\";\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown,\n LogView\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n actionrowindex:'',\n\t playbookInfo: {},\n hybridshowdata:{},\n token: '',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'bootstrapname',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'bootstrapname',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '15%'\n },\n {\n name: 'bootstrapstackname',\n title: '<span class=\"orange\"></span>StackName',\n sortField: 'bootstrapstackname',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '15%'\n\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'bootstrapdatebegin5',\n title: '<span class=\"orange\"></span>Begin',\n sortField: 'bootstrapdatebegin5',\n titleClass: 'center aligned',\n visible:true,\n width: '10%'\n },\n {\n name: 'bootstrapusersjoin',\n title: '<span class=\"orange\"></span>Public',\n sortField: 'bootstrapusersjoin',\n titleClass: 'center aligned',\n visible:true,\n width: '5%',\n callback: function(value) {\n if (value == true) {\n var v = '<span class=\"ti-check text-success\"> </span>'\n return v\n }else{\n var v = '<span> </span>'\n return v\n }\n }\n },\n {\n name: 'ID',\n sortField: 'ID',\n titleClass: 'center aligned',\n dataClass: 'left aligned w-25',\n visible:false,\n width: '15%'\n },\n {\n name: '__slot:actions', // <----\n title: 'Actions',\n titleClass: 'center aligned',\n dataClass: 'center aligned',\n width: '5%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridbootstrapservices\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'pipelinename',\n\t\t\t\tdirection: 'asc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_refresh_bootstrap_view', () => {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n /*\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table', (v) => {\n\t\t\t this.$nextTick(function () {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.viewhybridoptions = false\n\t\t\t })\n\t\t})\n */\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_refresh_bootstrap_view')\n\t\t//this.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n async onActionLog(action) {\n if(action == 1){\n var log = await store.dispatch(\"pipelineLLO/hybrid_servicelog\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n })\n //console.log('logs1 '+JSON.stringify(log))\n var data = log.data.data.data\n if(log.data.data.errorexec_msg == 'ok' && log.data.data.data){\n this.hybridshowlog=true\n this.$root.$emit('hybrid_server_log_in',data)\n //console.log('logsdata '+JSON.stringify(log.data.data.data))\n }else{\n var info = 'No logs are available'\n this.$swal({\n type: 'Info',\n title: 'LOG',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n }\n }else if(action == 2 ){\n this.hybridshowlog=false\n }\n },\n async onActionHybrid(action) {\n\n\t\t\tif(action == 'stack-stop' ){\n var info='<h5>This will remove the stack with the name<b> '+ this.hybridshowdata.bootstrapstackname +'</b> <br><br> Services, networks, and secrets associated with the stack will be removed. </h5>'\n this.$swal({\n type: 'Info',\n title: 'Info!',\n icon:'warning',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n }).then((result)=> {\n //console.log(JSON.stringify(result))\n this.onActionHybrid_stackrm(result);\n })\n\n }else if(action == 'service-stop' ){\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/hybrid_servicerm\",{\n\t\t\t\t\ttoken:this.token,\n\t\t\t\t\tbootstrapstackid:this.hybridshowdata.bootstrapstackid,\n\t\t\t\t\tbootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }else if(action == 'service-restart' ){\n\n\t\t\t\tvar log = await store.dispatch(\"pipelineLLO/hybrid_servicerestart\",{\n token:this.token,\n bootstrapnameid:this.hybridshowdata.bootstrapnameid\n\t\t\t\t})\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n var info =''\n if(log.data.data.errorexec_msg == 'ok'){\n info ='<h5>Update existing service: ok!</h5>'\n }else{\n info ='<h5>Update existing service: error!</h5>'\n }\n this.$swal({\n type: 'Info',\n title: 'INFO',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n\n//console.log('stackid '+this.hybridshowdata.bootstrapnameid)\n }\n },\n async onActionHybrid_stackrm(action) {\n if(action.isConfirmed){\n var log = await store.dispatch(\"pipelineLLO/stackrm\",{\n token:this.token,\n bootstrapstackid:this.hybridshowdata.bootstrapstackid\n })\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async onAction (action, data, index) {\n this.actionrowindex = index\n //this.$root.$emit('hybrid_show_info',data)\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'view-item' ){\n\t\t\t}else if(action == 'run-more' ){\n this.hybridshowdata = data\n //console.log('hybrid '+JSON.stringify(data))\n\t\t\t}else if(action == 'delete-item' ){\n\t\t\t\tthis.$swal({\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thtml: info+winfo,\n\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t cancelButtonText: 'No, cancel!',\n\t\t\t\t\tshowCancelButton: true,\n\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\treverseButtons: true,\n\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\tconfirmButtonText: 'Yes, Delete it!'\n\t\t\t\t\t})\n\t\t\t}else if(action == 'run-item' ){\n\t\t\t}\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-service.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-service.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-service.vue?vue&type=template&id=04f89613&\"\nimport script from \"./view-service.vue?vue&type=script&lang=js&\"\nexport * from \"./view-service.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-service.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-6 order-first \" >\n <br>\n <mydeploy-manage-bootstrap>\n\n </mydeploy-manage-bootstrap>\n </div>\n\n <div class=\"col-6 order-last\" >\n <br>\n \n <mydeploy-manage-view>\n\n </mydeploy-manage-view>\n \n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\nimport MydeployManageBootstrap from \"./manageservices/deploy-bootstrap.vue\";\nimport MydeployManageView from \"./manageservices/view-service.vue\";\nexport default {\n components: {\n card,\n MydeployManageBootstrap,\n MydeployManageView\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n },\n beforeDestroy () {\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managedeploy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managedeploy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./managedeploy.vue?vue&type=template&id=741da4ee&\"\nimport script from \"./managedeploy.vue?vue&type=script&lang=js&\"\nexport * from \"./managedeploy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 order-first \"},[_c('br'),_c('myllo-search')],1),_c('div',{staticClass:\"col-6 order-last\"},[_c('br'),_c('myllo-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[(_vm.datadir)?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/academy.png\"),\"alt\":\"...\"}}):_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/library.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor1\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.datadir),expression:\"datadir\"}],staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('b-container',{staticClass:\"container\"},[_c('div',{staticClass:\"row justify-content-center myscrool\"},[_c('div',{staticClass:\"col-xl-10 col-12\"},[_c('div',{staticClass:\"timeline timeline-line-solid\"},[_c('span',{staticClass:\"timeline-label\"},[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.datatitle))])]),_vm._l((_vm.coursesview),function(course,i){return _c('div',{staticClass:\"timeline-item\"},[(!course.exercise_file)?_c('div',[_c('div',{staticClass:\"timeline-point timeline-point\"}),_c('div',{staticClass:\"timeline-event shadow p-3 mb-5 bg-white rounded\"},[_c('div',{staticClass:\"widget has-shadow\"},[_c('div',{staticClass:\"widget-header d-flex align-items-center\",class:{ active: i === _vm.activeItem}},[_c('div',{staticClass:\"user-image\"},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":require(\"@/assets/img/penguinfledgling.png\"),\"alt\":\"...\"}})]),_c('div',{staticClass:\"d-flex flex-column mr-auto\"},[_c('div',{staticClass:\"title\"},[_c('span',{staticClass:\"username\"},[_vm._v(_vm._s(course.title)+\" \")])])])]),_c('div',{staticClass:\"widget-body\"},[_c('p',[_vm._v(\" \"+_vm._s(course.subtitle)+\" \")]),_c('small',[_vm._v(_vm._s(course.desc))])]),_c('div',{staticClass:\"widget-footer d-flex align-items-center\"},[_c('div',{staticClass:\"col-12 no-padding d-flex justify-content-end\"},[_c('div',{staticClass:\"meta\"},[_c('ul',{staticClass:\"list-group list-group-horizontal\"},[(course.doc_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'asciidoc',i)}}},[_c('small'),_vm._v(\" \"),_c('span',{staticClass:\"rounded-circle bg-dark text-white ti-book\",attrs:{\"title\":\"doc\"}})])]):_vm._e(),(course.code_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'asciinema',i)}}},[_c('small'),_c('span',{staticClass:\"rounded-circle text-success ti-shortcode\",attrs:{\"title\":\"asciinema\"}})])]):_vm._e(),(course.video_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'video',i)}}},[_c('small'),_c('span',{staticClass:\"text-info ti-video-camera\",attrs:{\"title\":\"video\"}})])]):_vm._e()])])])])])])]):_vm._e()])})],2)]),_c('div',{staticClass:\"col-xl-10 col-12\"},[_c('div',{staticClass:\"timeline timeline-line-solid\"},[_c('span',{staticClass:\"timeline-label\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"Exercises\")])]),_vm._l((_vm.coursesview),function(course,i){return _c('div',{staticClass:\"timeline-item\"},[(course.exercise_file)?_c('div',[_c('div',{staticClass:\"timeline-point timeline-point\"}),_c('div',{staticClass:\"timeline-event shadow p-3 mb-5 bg-white rounded\"},[_c('div',{staticClass:\"widget has-shadow\"},[_c('div',{staticClass:\"widget-header d-flex align-items-center\",class:{ active: i === _vm.activeItem}},[_c('div',{staticClass:\"user-image\"},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":require(\"@/assets/img/penguinfledgling.png\"),\"alt\":\"...\"}})]),_c('div',{staticClass:\"d-flex flex-column mr-auto\"},[_c('div',{staticClass:\"title\"},[_c('span',{staticClass:\"username\"},[_vm._v(_vm._s(course.title)+\" \")])])])]),_c('div',{staticClass:\"widget-body\"},[_c('p',[_vm._v(\" \"+_vm._s(course.subtitle)+\" \")]),_c('small',[_vm._v(_vm._s(course.desc))])]),_c('div',{staticClass:\"widget-footer d-flex align-items-center\"},[_c('div',{staticClass:\"col-12 no-padding d-flex justify-content-end\"},[_c('div',{staticClass:\"meta\"},[_c('ul',{staticClass:\"list-group list-group-horizontal\"},[(course.exercise_file)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'exercise',i)}}},[_c('small'),_vm._v(\" \"),_c('span',{staticClass:\"rounded-circle bg-dark text-white ti-book\",attrs:{\"title\":\"Challenge\"}})])]):_vm._e(),(course.exercise_answerfile)?_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewllo(course,'exerciseanswer',i)}}},[_c('small'),_c('span',{staticClass:\"text-info ti-book\",attrs:{\"title\":\"Answer\"}})])]):_vm._e()])])])])])])]):_vm._e()])}),_c('span',{staticClass:\"timeline-label\"},[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.datatitle))])])],2)])])])],1),_c('br'),_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.datadir),expression:\"datadir\"}],staticClass:\"progress\"},[_c('div',{staticClass:\"progress-bar progress-bar-striped bg-secondary\",style:({ width: _vm.progress + '%' }),attrs:{\"role\":\"progressbar\",\"aria-valuenow\":\"25\",\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"}},[_vm._v(_vm._s(_vm.progress))])]),_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchFor),expression:\"searchFor\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"aria-label\":\"Small\",\"aria-describedby\":\"inputGroup-sizing-sm\",\"placeholder\":\"Search by Name\"},domProps:{\"value\":(_vm.searchFor)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setFilter($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchFor=$event.target.value}}}),_c('div',{staticClass:\"input-group-prepend\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchcourselang),expression:\"searchcourselang\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.searchcourselang=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Lang...\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"English\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Ελληνικά\")])])]),_c('div',{staticClass:\"input-group-prepend\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchcourselevel),expression:\"searchcourselevel\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.searchcourselevel=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Level...\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"Elementary\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Intermediate\")]),_c('option',{attrs:{\"value\":\"3\"}},[_vm._v(\"Advanced\")]),_c('option',{attrs:{\"value\":\"4\"}},[_vm._v(\"Expert\")]),_c('option',{attrs:{\"value\":\"5\"}},[_vm._v(\"Guru\")])])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.setFilter}},[_vm._v(\" Go\")])]),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"round\":\"\",\"type\":\"button\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" Reset\")])])]),_c('vuetable',{key:_vm.vuetablekey,ref:\"vuetable\",attrs:{\"api-url\":_vm.apiurl,\"api-mode\":true,\"http-options\":_vm.httpOptions,\"fields\":_vm.fields,\"item-actions\":_vm.itemActions,\"sort-order\":_vm.sortOrder,\"show-sort-icons\":true,\"multi-sort\":_vm.multiSort,\"per-page\":_vm.perpage,\"pagination-path\":\"links.pagination\",\"pagination-component\":_vm.paginationComponent,\"append-params\":_vm.moreParams,\"wrapper-class\":\"vuetable-wrapper\",\"loading-class\":\"loading\",\"detail-row-id\":\"id\",\"css\":_vm.css.table},on:{\"vuetable:pagination-data\":_vm.onPaginationData,\"vuetable:load-success\":_vm.loadsuccess,\"vuetable:load-error\":_vm.onLoadError},scopedSlots:_vm._u([{key:\"actions\",fn:function(props){return _c('div',{},[(_vm.actionrowindex == props.rowIndex)?_c('button',{staticClass:\"ti-more-alt btn btn-secondary btn-sm\",attrs:{\"title\":\"View Course Details\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}):_c('button',{staticClass:\"ti-more btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"View Course Details\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-more', props.rowData, props.rowIndex)}}}),_c('button',{staticClass:\"ti-info btn btn-outline-secondary btn-sm\",attrs:{\"title\":\"View Course Info\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onAction('run-info', props.rowData, props.rowIndex)}}})])}}])}),_c('div',{staticClass:\"vuetable-pagination ui basic segment grid\"},[_c('vuetable-pagination-info',{ref:\"paginationInfo\",attrs:{\"css\":_vm.css.paginationInfo}}),_c('vuetable-pagination',{ref:\"pagination\",attrs:{\"css\":_vm.css.pagination},on:{\"vuetable-pagination:change-page\":_vm.onChangePage}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/academy.png\" alt=\"...\"\n v-if=\"datadir\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/library.png\" alt=\"...\"\n v-else\n >\n </div>\n\n <v-wait for=\"myRunInstancetutor1\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n<b-container fluid class=\"bv-example-row\"\n v-show=\"datadir\"\n>\n\n\n\n<!-- timeline -->\n\n<b-container class=\"container\" >\n <div class=\"row justify-content-center myscrool\">\n <div class=\"col-xl-10 col-12\">\n <div class=\"timeline timeline-line-solid\">\n <span class=\"timeline-label\">\n <span class=\"label\">{{datatitle}}</span>\n </span>\n<!-- timeline -->\n <div class=\"timeline-item\"\n\t\t\t\t\t\t\t\tv-for=\"(course, i) in coursesview\"\n\t\t\t\t\t\t\t\t>\n<div\n v-if=\"!course.exercise_file\"\n>\n <div class=\"timeline-point timeline-point\"></div>\n <div class=\"timeline-event shadow p-3 mb-5 bg-white rounded\">\n <div class=\"widget has-shadow\" >\n <div class=\"widget-header d-flex align-items-center\"\n\t\t\t\t\t\t\t\t:class=\"{ active: i === activeItem}\"\n>\n <div class=\"user-image\">\n <img class=\"rounded-circle\" src=\"@/assets/img/penguinfledgling.png\" alt=\"...\">\n </div>\n <div class=\"d-flex flex-column mr-auto\">\n <div class=\"title\">\n <span class=\"username\">{{ course.title }} </span>\n </div>\n </div>\n<!--\n <div class=\"widget-options\">\n <div class=\"dropdown\">\n <button type=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"dropdown-toggle\">\n <i class=\"la la-ellipsis-h\"></i>\n </button>\n <div class=\"dropdown-menu\">\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-edit\"></i>Edit Post\n </a>\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-trash\"></i>Delete Post\n </a>\n </div>\n </div>\n </div>\n-->\n </div>\n <div class=\"widget-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t{{ course.subtitle}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<small>{{ course.desc}}</small>\n </div>\n <div class=\"widget-footer d-flex align-items-center\">\n <div class=\"col-12 no-padding d-flex justify-content-end\">\n <div class=\"meta\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"list-group list-group-horizontal\">\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.doc_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t <a href=\"#\" \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'asciidoc',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small> <span title=\"doc\" class=\"rounded-circle bg-dark text-white ti-book\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.code_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'asciinema',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small><span title=\"asciinema\" class=\"rounded-circle text-success ti-shortcode\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.video_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'video',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small><span title=\"video\" class=\"text-info ti-video-camera\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n </ul>\n </div>\n </div>\n </div>\n</div>\n </div>\n </div>\n </div>\n<!-- timeline right -->\n\n </div>\n </div>\n\n\n\n\n <div class=\"col-xl-10 col-12\">\n <div class=\"timeline timeline-line-solid\">\n <span class=\"timeline-label\">\n <span class=\"label\">Exercises</span>\n </span>\n<!-- timeline -->\n <div class=\"timeline-item\"\n\t\t\t\t\t\t\t\tv-for=\"(course, i) in coursesview\"\n\t\t\t\t\t\t\t\t>\n\n<div\n v-if=\"course.exercise_file\"\n>\n <div class=\"timeline-point timeline-point\"></div>\n <div class=\"timeline-event shadow p-3 mb-5 bg-white rounded\">\n <div class=\"widget has-shadow\" >\n <div class=\"widget-header d-flex align-items-center\"\n\t\t\t\t\t\t\t\t:class=\"{ active: i === activeItem}\"\n>\n <div class=\"user-image\">\n <img class=\"rounded-circle\" src=\"@/assets/img/penguinfledgling.png\" alt=\"...\">\n </div>\n <div class=\"d-flex flex-column mr-auto\">\n <div class=\"title\">\n <span class=\"username\">{{ course.title }} </span>\n </div>\n </div>\n<!--\n <div class=\"widget-options\">\n <div class=\"dropdown\">\n <button type=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"dropdown-toggle\">\n <i class=\"la la-ellipsis-h\"></i>\n </button>\n <div class=\"dropdown-menu\">\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-edit\"></i>Edit Post\n </a>\n <a href=\"#\" class=\"dropdown-item\">\n <i class=\"la la-trash\"></i>Delete Post\n </a>\n </div>\n </div>\n </div>\n-->\n </div>\n <div class=\"widget-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t{{ course.subtitle}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<small>{{ course.desc}}</small>\n </div>\n <div class=\"widget-footer d-flex align-items-center\">\n <div class=\"col-12 no-padding d-flex justify-content-end\">\n <div class=\"meta\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"list-group list-group-horizontal\">\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.exercise_file\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t <a href=\"#\" \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'exercise',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small> <span title=\"Challenge\" class=\"rounded-circle bg-dark text-white ti-book\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n <li\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tv-if=\"course.exercise_answerfile\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"viewllo(course,'exerciseanswer',i)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t><small > </small><span title=\"Answer\" class=\"text-info ti-book\"></span></a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n </ul>\n </div>\n </div>\n </div>\n\n</div>\n\n </div>\n </div>\n </div>\n<!-- timeline right -->\n <span class=\"timeline-label\">\n <span class=\"label\">{{datatitle}}</span>\n </span>\n\n </div>\n </div>\n\n\n\n </div>\n</b-container>\n\n\n\n\n\n<!--\n<div class=\"list-group myscrool\"\n>\n <a href=\"#\" class=\"list-group-item list-group-item-action flex-column align-items-start\"\nv-for=\"(course, i) in courses\"\n@click=\"viewllo(course,i)\"\n:class=\"{ active: i === activeItem}\"\n>\n <div class=\"d-flex w-100 justify-content-between\">\n <h5 class=\"mb-1\">{{course.title}}</h5>\n\n <small \n :class=\"checkClass(course)\"\n > {{ course.type }}\n \t<small class=\"ti-shortcode\"\n v-if=\"course.type=='asciinema'\"\n\t\t\t\t> </small>\n \t<small class=\"ti-video-camera\"\n v-if=\"course.type=='video'\"\n\t\t\t\t> </small>\n \t<small class=\"ti-book\"\n v-if=\"course.type=='asciidoc'\"\n\t\t\t\t> </small>\n \t<small class=\"ti-help-alt text-exercise\"\n v-if=\"course.type=='exercise'\"\n\t\t\t\t> </small>\n </small>\n\n </div>\n <small>{{ course.desc}}</small>\n </a>\n-->\n\n</div>\n</b-container>\n<br>\n\n\n\n <b-container fluid class=\"bv-example-row\">\n <div class=\"progress\"\n v-show=\"datadir\"\n >\n <div class=\"progress-bar progress-bar-striped bg-secondary\" role=\"progressbar\" :style=\"{ width: progress + '%' }\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">{{ progress }}</div>\n </div>\n\n\t\t<div class=\"input-group input-group-sm sm-3\">\n\t\t\t\t\t\n\t\t\t<input type=\"text\" \n\t\t\t\tclass=\"form-control\" \n\t\t\t\taria-label=\"Small\" aria-describedby=\"inputGroup-sizing-sm\"\n\t\t\t\tplaceholder=\"Search by Name\"\n\t\t\t\tv-model=\"searchFor\"\n\t\t\t\t@keyup.enter=\"setFilter\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-prepend\">\n <select \n\tclass=\"custom-select custom-select-sm\" v-model=\"searchcourselang\">\n <option value=\"0\" selected>Lang...</option>\n <option value=\"1\">English</option>\n <option value=\"2\">Ελληνικά</option>\n </select>\n\t\t\t</div>\n\t\t\t<div class=\"input-group-prepend\">\n <select \n\tclass=\"custom-select custom-select-sm\" v-model=\"searchcourselevel\">\n <option value=\"0\" selected>Level...</option>\n <option value=\"1\">Elementary</option>\n <option value=\"2\">Intermediate</option>\n <option value=\"3\">Advanced</option>\n <option value=\"4\">Expert</option>\n <option value=\"5\">Guru</option>\n </select>\n\t\t\t</div>\n\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button \n\t\t\t\t\tclass=\"btn btn-outline-primary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"setFilter\">\n\t\t\t\t\tGo</button>\n\t\t\t</div>\n\t\t\t\t\t\n\t\t\t<div class=\"input-group-append\">\n\t\t\t\t<button class=\"btn btn-outline-secondary\" \n\t\t\t\t\tround\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=\"resetFilter\">\n\t\t\t\t\tReset</button>\n\t\t\t</div>\n </div>\n\t\t<div class=\"white h-100 flex-fixed-width-item\"\n\t\t\t<vuetable \n\t\t\t\tref=\"vuetable\"\n\t\t\t\t:key=\"vuetablekey\"\n\t\t\t\t:api-url='apiurl'\n\t\t\t\t:api-mode=\"true\"\n\t\t\t\t:http-options=\"httpOptions\"\n\t\t\t\t:fields=\"fields\"\n\t\t\t\t:item-actions=\"itemActions\"\n\t\t\t\t:sort-order=\"sortOrder\"\n\t\t\t\t:show-sort-icons=\"true\"\n\t\t\t\t:multi-sort=\"multiSort\"\n\t\t\t\t:per-page=\"perpage\"\n\t\t\t\tpagination-path=\"links.pagination\"\n\t\t\t\t:pagination-component=\"paginationComponent\"\n\t\t\t\t:append-params=\"moreParams\"\n\t\t\t\twrapper-class=\"vuetable-wrapper\"\n\t\t\t\tloading-class=\"loading\"\n\t\t\t\tdetail-row-id=\"id\"\n\t\t\t\t@vuetable:pagination-data=\"onPaginationData\"\n\t\t\t\t@vuetable:load-success=\"loadsuccess\"\n @vuetable:load-error=\"onLoadError\"\n\t\t\t\t:css=\"css.table\"\n\t\t\t\t >\n\n <div slot=\"actions\" slot-scope=\"props\">\n <button\n v-if=\"actionrowindex == props.rowIndex\"\n class=\"ti-more-alt btn btn-secondary btn-sm\"\n title=\"View Course Details\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n v-else\n class=\"ti-more btn btn-outline-secondary btn-sm\"\n title=\"View Course Details\"\n round\n @click=\"onAction('run-more', props.rowData, props.rowIndex)\">\n </button>\n <button\n class=\"ti-info btn btn-outline-secondary btn-sm\"\n title=\"View Course Info\"\n round\n @click=\"onAction('run-info', props.rowData, props.rowIndex)\">\n </button>\n\t\t\t\t</div>\n\t\t\t</vuetable>\n\t\t\t<div class=\"vuetable-pagination ui basic segment grid\">\n\t\t\t\t<vuetable-pagination-info \n\t\t\t\t\tref=\"paginationInfo\" \n\t\t\t\t\t:css=\"css.paginationInfo\"\n \t\t>\n\t\t\t\t</vuetable-pagination-info>\n\t\t\t\t<vuetable-pagination \n\t\t\t\t\t:css=\"css.pagination\"\n\t\t\t\t\tref=\"pagination\"\n \t@vuetable-pagination:change-page=\"onChangePage\"\n \t\t>\n\t\t\t\t</vuetable-pagination>\n\t\t\t</div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport {Vuetable, VuetablePaginationDropdown} from 'vuetable-2'\nimport VuetablePaginationInfo from 'vuetable-2/src/components/VuetablePaginationInfo'\nimport VuetablePagination from 'vuetable-2/src/components/VuetablePagination'\nimport CssConfig from 'vuetable-2/src/components/VuetableCssConfig.js'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card,\n\t Vuetable,\n\t\t\tVuetablePagination,\n\t\t\tVuetablePaginationInfo,\n\t\t\tVuetablePaginationDropdown\n\t},\n props: {\n },\n data() {\n return{\n \t coursesview:{},\n actionrowindex:'',\n activeItem: null,\n\t playbookInfo: {},\n token: '',\n\t playbook: {\n\t\t\t'title':'',\n\t\t\t'name':'',\n\t\t\t'description':''\n\t\t},\n datadir:'',\n datatitle:'',\n progress:0,\n searchcourselevel:0,\n searchcourselang:0,\n courses:[],\n courseshow:false,\n\t\t\tcontainer:{\n\t\t\t\tname:'',\n\t\t\t\tview:0\n\t\t\t},\n\t\t\tpipeline:{},\n \t\tselected: 'hybrid',\n options: [\n { text: 'Packages', value: 'packages' },\n { text: 'Images', value: 'images' },\n { text: 'Scripts', value: 'scripts' }\n ],\n\t\tshowModal: false,\n\t\tvisibility: [],\n\t \tactive:false,\n\t\tvuetablekey:0,\n\t\tfielddata:{},\n\t\tfields: [ \n {\n name: 'title',\n title: '<span class=\"orange\"></span>Name',\n sortField: 'title',\n visible:true,\n dataClass: 'text-left text-wrap text-break break-word',\n width: '20%'\n },\n {\n name: 'subtitle',\n title: '<span class=\"orange\"></span>Course',\n //sortField: 'subtitle',\n visible:true,\n dataClass: 'left aligned w-25',\n width: '25%'\n },\n {\n name: '_id',\n title: '<span class=\"orange\"></span>mongo',\n visible:false\n },\n {\n name: 'desc',\n title: '<span class=\"orange\"></span>Description',\n //sortField: 'desc',\n titleClass: 'center aligned',\n visible:true,\n width: '30%'\n },\n {\n name: 'lang',\n title: '<span class=\"orange\"></span>Lang',\n sortField: 'lang',\n titleClass: 'center aligned',\n dataClass: 'text-center',\n visible:true,\n width: '10%'\n },\n {\n name: '__slot:actions', // <----\n title: '<span class=\"d-flex justify-content-center\">Actions</span>',\n titleClass: 'center aligned',\n dataClass: 'text-center',\n width: '15%'\n }\n\t\t],\n\t\tapiurl:ApiConfig.url_80+\"/get_llo\",\n\t\t//apiurl:ApiConfig.swarmlab_url_80+\"/swarmlabhybridservices\",\n\t\tcss: CssConfig,\n perpage: 5,\n searchFor: '',\n\t\tsortOrder: [{\n\t\t\t\tfield: 'title',\n\t\t\t\tdirection: 'asc'\n\t\t}],\n multiSort: true,\n paginationComponent: 'vuetable-pagination',\n\t\titemActions: [\n\t\t\t\t{ name: 'view-item', label: '', icon: 'glyphicon glyphicon-zoom-in', class: 'btn btn-info', extra: {'title': 'View', 'data-toggle':\"tooltip\", 'data-placement': \"left\"} },\n\t\t\t\t{ name: 'edit-item', label: '', icon: 'glyphicon glyphicon-pencil', class: 'btn btn-warning', extra: {title: 'Edit', 'data-toggle':\"tooltip\", 'data-placement': \"top\"} },\n\t\t\t\t{ name: 'delete-item', label: '', icon: 'glyphicon glyphicon-remove', class: 'btn btn-danger', extra: {title: 'Delete', 'data-toggle':\"tooltip\", 'data-placement': \"right\" } }\n\t\t],\n\t\tmoreParams: { \n\t\t\t\t'filter': '',\n\t\t\t\t'level': '',\n\t\t\t\t'type': 'scripts',\n\t\t\t\t'tutor': 'yes'\n\t\t\t},\n\t \n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_progress_refresh', () => {\n Vue.nextTick( () => this.getprogress(this.datadir))\n\t\t})\n\t\tthis.$root.$on('hybrid_refresh_dockerservices', () => {\n //Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t})\n //refresh from socket mytable \n\t\tthis.$root.$on('hybrid_refresh_table', (v) => {\n\t\t\t this.$nextTick(function () {\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n this.viewhybridoptions = false\n\t\t\t })\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_progress_refresh')\n\t\tthis.$root.$off('hybrid_refresh_dockerservices')\n\t\tthis.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n\n methods: {\n async getprogress(course){\n //console.log('course '+course)\n var value1 = {}\n value1.course = this.datadir\n \tvar llo = await store.dispatch('pipelineLLO/getprogress', value1)\n var sprogress = llo.data.data.progress.progress\n var synolochapter = this.courses.length\n //synolochapter--\n var synolo = Math.floor((sprogress/synolochapter)*100)\n this.progress = synolo\n },\n checkClass(course){\n if(course.type == 'video'){\n return 'text-primary'\n } else if(course.type == 'asciidoc'){\n return 'text-success'\n } else if(course.type == 'asciinema'){\n return 'text-info'\n } else if(course.type == 'exercise'){\n return 'text-warning'\n }else{\n return 'text-secondary'\n }\n },\n onError (type,description) {\n var winfo=description\n var info='<h5>Bootstrap '+type+'</h5>'\n this.$swal({\n type: type,\n html: info+winfo,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n },\n\n\n\t\tsetFilter () {\n\t\t\t\tthis.moreParams = {\n\t\t\t\t\t\t'filter': this.searchFor,\n\t\t\t\t\t\t'level': this.searchcourselevel,\n\t\t\t\t\t\t'lang': this.searchcourselang,\n\t\t\t\t\t\t'type': this.selected\n\t\t\t\t}\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n\t\tresetFilter () {\n\t\t\t\tthis.moreParams = {}\n\t\t\t\tthis.searchFor = ''\n Vue.nextTick( () => this.$refs.vuetable.refresh())\n\t\t},\n onPaginationData (paginationData) {\n this.$refs.pagination.setPaginationData(paginationData)\n\t\t\tthis.$refs.paginationInfo.setPaginationData(paginationData) \n },\n onChangePage (page) {\n this.$refs.vuetable.changePage(page)\n },\n editRow(rowData) {\n alert(\"You clicked edit on\"+ JSON.stringify(rowData));\n\t\t},\n async viewllo (course,coursetype,i) {\n\n this.courseshow = true\n\t\t\tif(coursetype == 'video' ){\n //console.log(JSON.stringify(course))\n var value = {}\n value.type = coursetype\n value.course = course.video_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'asciidoc' ){\n var value1 = {}\n value1.dir = this.datadir\n value1.file = course.doc_file\n //console.log('asciidoc '+JSON.stringify(value1))\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course_ascii', value1)\n //console.log('asciidoc '+JSON.stringify(llo))\n //this.courses = JSON.parse(llo.data)\n var value = {}\n value.type = coursetype\n value.code = llo.data.data\n value.course = course.doc_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'asciinema' ){\n //console.log(JSON.stringify(course))\n var value = {}\n value.type = coursetype\n value.course = course.code_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'exercise' ){\n var value1 = {}\n value1.dir = this.datadir\n value1.file = course.exercise_file\n //console.log('asciidoc '+JSON.stringify(value1))\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course_ascii', value1)\n //console.log('asciidoc '+JSON.stringify(llo))\n //this.courses = JSON.parse(llo.data)\n var value = {}\n value.type = 'asciidoc'\n value.code = llo.data.data\n value.course = course.exercise_file\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}else if(coursetype == 'exerciseanswer' ){\n var value1 = {}\n value1.dir = this.datadir\n value1.file = course.exercise_answerfile\n //console.log('asciidoc '+JSON.stringify(value1))\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course_ascii', value1)\n //console.log('asciidoc '+JSON.stringify(llo))\n //this.courses = JSON.parse(llo.data)\n var value = {}\n value.type = 'asciidoc'\n value.code = llo.data.data\n value.course = course.exercise_answerfile\n value.llo = this.datadir\n this.$root.$emit('hybrid_llo_viecourse',value)\n\t\t\t}\n this.activeItem = i;\n this.getprogress(this.datadir)\n },\n async onAction (action, data, index) {\n //console.log('index '+this.actionrowindex)\n\t\t\tif(action == 'run-more' ){\n this.actionrowindex = index\n this.datadir = data.dir\n this.datatitle = data.title\n \tvar llo = await store.dispatch('pipelineLLO/get_llo_course', data.dir)\n this.courses = llo.data\n\t\t\t\tvar countchapter = Math.max.apply(Math, this.courses.map(function(o){return o.chapter;}))\n \t\t\t//console.log('countchapter '+ JSON.stringify(countchapter))\n var coursesnew1 = []\n\t\t\t\tfor(var i = 1; i <= countchapter; i++) {\n \t\t\t//console.log('count '+ JSON.stringify(i))\n var coursesnew = {}\n\t\t\t\t\t var coursetmp = this.courses.filter(x => x.chapter === i);\n var countcourse1 = coursetmp.length\n\n\t\t\t\t\t /*\n \t\t\tcoursesnew.video_file \t\t= coursetmp[ii].file\n \t\t\tcoursesnew.video_service \t= coursetmp[ii].service\n \t\t\tcoursesnew.doc_file \t\t\t= coursetmp[ii].file\n \t\t\tcoursesnew.code_file \t\t\t= coursetmp[ii].file\n \t\t\tcoursesnew.exercise_file \t= coursetmp[ii].file\n \t\t\tcoursesnew.exercise_difficulty = coursetmp[ii].difficulty\n\n \t\t\tcoursesnew.chapter \t\t\t\t= i\n \t\t\tcoursesnew.title \t\t\t\t\t= coursetmp[ii].title\n \t\t\tcoursesnew.subtitle \t\t\t= coursetmp[ii].subtitle\n \t\t\tcoursesnew.desc \t\t\t\t\t= coursetmp[ii].desc\n\t\t\t\t\t\t*/\n\n\t\t\t\t for(var ii = 0; ii < countcourse1; ii++) {\n \t\t\t//console.log('for '+ JSON.stringify(coursetmp))\n\t\t\t\t\t\t\tif( coursetmp[ii].type == 'video'){\n \t\t\tcoursesnew.video_file = coursetmp[ii].file\n \t\t\tcoursesnew.video_service = coursetmp[ii].service\n\t\t\t\t\t\t }else if( coursetmp[ii].type == 'asciidoc'){\n \t\t\tcoursesnew.doc_file = coursetmp[ii].file\n\t\t\t\t\t\t }else if( coursetmp[ii].type == 'asciinema'){\n \t\t\tcoursesnew.code_file = coursetmp[ii].file\n\t\t\t\t\t\t }else if( coursetmp[ii].type == 'exercise'){\n \t\t\tcoursesnew.exercise_file = coursetmp[ii].file\n \t\t\tcoursesnew.exercise_answerfile = coursetmp[ii].answerfile\n \t\t\tcoursesnew.exercise_difficulty = coursetmp[ii].difficulty\n\t\t\t\t\t\t }\n\n if(coursesnew.chapter == '' || coursesnew.chapter == undefined){\n \t\t\tcoursesnew.chapter = i\n\t\t\t\t\t\t\t}\n if(coursesnew.title == '' || coursesnew.title == undefined){\n \t\t\tcoursesnew.title = coursetmp[ii].title\n\t\t\t\t\t\t\t}\n if(coursesnew.subtitle == '' || coursesnew.subtitle == undefined){\n \t\t\tcoursesnew.subtitle = coursetmp[ii].subtitle\n\t\t\t\t\t\t\t}\n if(coursesnew.desc == '' || coursesnew.desc == undefined){\n \t\t\tcoursesnew.desc = coursetmp[ii].desc\n\t\t\t\t\t\t\t}\n if(coursesnew.course == '' || coursesnew.course == undefined){\n \t\t\tcoursesnew.course = this.datatitle\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcoursesnew1.push(coursesnew)\n\t\t\t\t}\n \t\t\t\tthis.coursesview = coursesnew1\n //console.log('new '+JSON.stringify(coursesnew1))\n \n //this.courses = JSON.parse(llo.data)\n\t\t\t}else if(action == 'run-info' ){\n //console.log(JSON.stringify(data))\n // {\"title\":\"linux\",\"subtitle\":\"Basics\",\"level\":\"Intermediate\",\"desc\":\"description\",\"dir\":\"hybrid-linux\"}\n var info = `\n<table class=\"table table-hover table-sm text-left\">\n <tbody>\n <tr>\n <th ><b>Title</b></th>\n <td>${data.title}</td>\n </tr>\n <tr>\n <td><b>Subtitle</b></td>\n <td>${data.subtitle}</td>\n </tr>\n <tr>\n <th ><b>Level</b></th>\n <td>${data.level}</td>\n </tr>\n <tr>\n <td ><b>Description</b></td>\n <td>${data.desc}</td>\n </tr>\n <tr>\n <td ><b>Language</b></td>\n <td>${data.lang}</td>\n </tr>\n <tr>\n <td ><b>License</b></td>\n <td>${data.license}</td>\n </tr>\n <tr>\n <td ><b>More Info</b></td>\n <td>${data.url}</td>\n </tr>\n </tbody>\n</table>`\n\t\t\t\t\t\t\tthis.$swal({\n\t\t\t\t\t\t\t\ttype: 'Info',\n\t\t\t\t\t\t\t\ttitle: 'Course Info!',\n\t\t\t\t\t\t\t\ticon:'info',\n\t\t\t\t\t\t\t\thtml: info,\n\t\t\t\t\t\t\t\tshowCloseButton: true,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\tallowOutsideClick: false,\n\t\t\t\t\t\t\t\tcancelButtonText: 'No, cancel!',\n\t\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\t\tshowLoaderOnConfirm: false,\n\t\t\t\t\t\t\t\treverseButtons: true,\n\t\t\t\t\t\t\t\tfocusCancel: true,\n\t\t\t\t\t\t\t\tconfirmButtonText: 'Ok!'\n\t\t\t\t\t\t\t})\n }\n this.getprogress(this.datadir)\n },\n refreshVuetable() {\n\t\t\tthis.$nextTick(()=>{\n\t\t\t\t\tthis.vuetablekey += 1\n\t\t\t\t})\n },\n\t\tplaybookinfoShow(value) {\n\t\t\t\treturn this.visibility[value]=true\n\t\t},\n\t\tplaybookinfo(value) {\n\t\t\t\treturn this.playbookInfo=value\n\t\t},\n\t\trowClicked(row, event) {\n\t\t\treturn {\n\t\t\t\thtml: true,\n\t\t\t\ttitle: () => { return 'Hello <b>Popover:</b> ' + (++this.counter) },\n\t\t\t\tcontent: () => { return 'The date is:<br><em>' + new Date() + '</em>' }\n\t\t\t}\n\t\t},\n\t\tloadsuccess(response) {\n\t\t\t\tvar data = response.data.data\n\t\t\t\tthis.fielddata=data\n\t\t\t\tvar n = data.length\n\t\t\t\tn=n-1\n\t\t\t},\n onLoadError(payload) {\n /*\n //error2 \"invalid_token\" join-service.vue:684\n //error2 \"The access token provided has expired\" join-service.vue:685\n //error2 \"Unauthorized\" join-service.vue:686\n //error2 401\n */\n if(payload.response.status == '401'){\n window.location.href = 'https://api-login.swarmlab.io:8089';\n Vue.nextTick( () => window.location.href = 'https://api-login.swarmlab.io:8089')\n }\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\n .myscrool {\n height: 500px; \n max-height: 500px;\n overflow-y: auto;\n //margin-bottom: 10px;\n -webkit-overflow-scrolling: touch;\n }\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n\n\n\n\n\n.timeline {\n width: 100%;\n position: relative;\n padding: 1px 0;\n list-style: none;\n font-weight: 500\n}\n\n.timeline .timeline-item {\n padding-left: 0;\n padding-right: 30px\n}\n\n.timeline .timeline-item.timeline-item-right,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left) {\n padding-left: 30px;\n padding-right: 0\n}\n\n.timeline .timeline-item .timeline-event {\n width: 100%\n}\n\n.timeline:before {\n border-right-style: solid\n}\n\n.timeline:before,\n.timeline:after {\n content: \" \";\n display: block\n}\n\n.timeline:after {\n clear: both\n}\n\n.timeline:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 50%;\n height: 100%!important;\n margin-left: 2px;\n border-right-width: 4px;\n border-right-style: solid;\n border-right-color: rgba(52, 40, 104, .1)\n}\n\n.timeline .timeline-label .label {\n background-color: #e76c90;\n border-radius: 35px;\n color: #fff;\n display: inline;\n font-size: .85rem;\n font-weight: 600;\n line-height: 1;\n padding: .65rem 1.4rem;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap\n}\n\n.timeline.timeline-line-solid:before {\n border-right-style: solid\n}\n\n.timeline.timeline-line-dotted:before {\n border-right-style: dotted\n}\n\n.timeline.timeline-line-dashed:before {\n border-right-style: dashed\n}\n\n.timeline .timeline-item {\n position: relative;\n float: left;\n clear: left;\n width: 50%;\n margin-bottom: 20px\n}\n\n.timeline .timeline-item:before,\n.timeline .timeline-item:after {\n content: \"\";\n display: table\n}\n\n.timeline .timeline-item:after {\n clear: both\n}\n\n.timeline .timeline-item:last-child {\n margin-bottom: 0!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event {\n float: right!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event:before,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:before,\n.timeline .timeline-item.timeline-item-right>.timeline-event:after,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:after {\n right: auto!important;\n border-left-width: 0!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event:before,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:before {\n left: -15px!important;\n border-right-width: 15px!important\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-event:after,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-event:after {\n left: -14px!important;\n border-right-width: 14px!important\n}\n\n.timeline .timeline-item>.timeline-event:before {\n top: 10px;\n right: -15px;\n border-top: 15px solid transparent;\n border-left-width: 15px;\n border-left-style: solid;\n border-right-width: 0;\n border-right-style: solid;\n border-bottom: 15px solid transparent\n}\n\n.timeline .timeline-item>.timeline-event:after {\n top: 11px;\n right: -14px;\n border-top: 14px solid transparent;\n border-left-width: 14px;\n border-left-style: solid;\n border-right-width: 0;\n border-right-style: solid;\n border-bottom: 14px solid transparent\n}\n\n.timeline .timeline-item>.timeline-point {\n top: 25px\n}\n\n.timeline .timeline-item:nth-of-type(2) {\n margin-top: 40px\n}\n\n.timeline .timeline-item.timeline-item-left,\n.timeline .timeline-item.timeline-item-right {\n clear: both!important\n}\n\n.timeline .timeline-item.timeline-item-right,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left) {\n float: right;\n clear: right\n}\n\n.timeline .timeline-item.timeline-item-right>.timeline-point,\n.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left)>.timeline-point {\n left: -14px\n}\n\n.timeline .timeline-item>.timeline-event {\n position: relative;\n float: left\n}\n\n.timeline .timeline-item>.timeline-event:before {\n border-left-color: rgba(52, 40, 104, .04);\n border-right-color: rgba(52, 40, 104, .04)\n}\n\n.timeline .timeline-item>.timeline-event:after {\n border-left-color: rgba(52, 40, 104, .04);\n border-right-color: rgba(52, 40, 104, .04)\n}\n\n.timeline .timeline-item>.timeline-event:before,\n.timeline .timeline-item>.timeline-event:after {\n content: \"\";\n display: inline-block;\n position: absolute\n}\n\n.timeline .timeline-item>.timeline-point {\n color: #5d5386;\n background: #5d5386;\n right: -14px;\n width: 12px;\n height: 12px;\n margin-top: -6px;\n margin-left: 8px;\n margin-right: 8px;\n position: absolute;\n z-index: 100;\n border-width: 3px;\n border-style: solid;\n border-radius: 100%;\n line-height: 20px;\n text-align: center;\n box-shadow: 0 0 0 5px #f2f3f8\n}\n\n.timeline .timeline-label {\n position: relative;\n float: left;\n clear: left;\n width: 50%;\n margin-bottom: 20px;\n top: 1px;\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n padding: 0;\n text-align: center\n}\n\n.timeline .timeline-label:before,\n.timeline .timeline-label:after {\n content: \"\";\n display: table\n}\n\n.timeline .timeline-label:after {\n clear: both\n}\n\n.timeline .timeline-label:last-child {\n margin-bottom: 0!important\n}\n\n.timeline .timeline-label + .timeline-item {\n margin-top: 0\n}\n\n.timeline .timeline-label + .timeline-item + .timeline-item {\n margin-top: 40px\n}\n\n.timeline .time-right {\n color: rgba(52, 40, 104, .5);\n position: absolute;\n bottom: 0;\n right: 0;\n font-size: .85rem;\n font-weight: 500\n}\n\n.timeline .time-left {\n color: rgba(52, 40, 104, .5);\n position: absolute;\n bottom: 0;\n left: 0;\n font-size: .85rem;\n font-weight: 500\n}\n\n.timeline .widget-header .user-image {\n display: inline-block;\n vertical-align: middle;\n margin-right: 1.07rem\n}\n\n.timeline .widget-header .user-image img {\n width: 50px\n}\n\n.timeline .widget-header .title {\n color: #2c304d;\n font-size: 1rem\n}\n\n.timeline .widget-header .username {\n color: #e76c90\n}\n\n.timeline .widget-header .time {\n font-size: .85rem\n}\n\n.timeline .widget-body {\n padding: 1rem 1.4rem\n}\n\n.timeline .widget-footer {\n border-top: 1px solid #eee;\n margin: 0 1.4rem;\n padding: 1.07rem 0\n}\n\n.timeline .users-like {\n padding: 0\n}\n\n.timeline .users-like a {\n margin: 0 -1.6rem 0 0;\n transition: all 0.4s ease\n}\n\n.timeline .users-like a:hover {\n margin-right: -.3rem\n}\n\n.timeline .users-like img {\n width: 40px;\n border: .25rem solid #fff\n}\n\n.timeline .users-like a.view-more {\n background: #5d5386;\n color: #fff;\n width: 40px;\n height: 40px;\n border: .25rem solid #fff;\n border-radius: 50%;\n vertical-align: middle;\n font-size: .85rem;\n text-align: center;\n line-height: 30px;\n margin-right: 0\n}\n\n.timeline .widget-footer .meta li {\n display: inline-block;\n margin-right: .5rem\n}\n\n.timeline .widget-footer .meta li:last-child {\n margin-right: 0\n}\n\n.timeline .widget-footer .meta li a {\n color: rgba(52, 40, 104, .3)\n}\n\n.timeline .widget-footer .meta li a:hover {\n color: rgba(52, 40, 104, .9)\n}\n\n.timeline .widget-footer .meta li i {\n font-size: 1.8rem;\n vertical-align: middle;\n margin-right: .3rem\n}\n\n.timeline .widget-footer .meta li .numb {\n vertical-align: middle\n}\n\n@media screen and (max-width:768px) {\n .timeline.timeline {\n width: 100%;\n max-width: 100%\n }\n .timeline.timeline .timeline-item {\n padding-left: 72px;\n padding-right: 0\n }\n .timeline.timeline .timeline-item.timeline-item-right,\n .timeline.timeline .timeline-item:nth-of-type(even):not(.timeline-item-left) {\n padding-left: 72px;\n padding-right: 0\n }\n .timeline.timeline .timeline-item .timeline-event {\n width: 100%\n }\n .timeline.timeline:before {\n left: 42px;\n width: 0;\n margin-left: -1px\n }\n .timeline.timeline .timeline-item {\n width: 100%;\n margin-bottom: 20px\n }\n .timeline.timeline .timeline-item:nth-of-type(even) {\n margin-top: 0\n }\n .timeline.timeline .timeline-item>.timeline-event {\n float: right!important\n }\n .timeline.timeline .timeline-item>.timeline-event:before,\n .timeline.timeline .timeline-item>.timeline-event:after {\n right: auto!important;\n border-left-width: 0!important\n }\n .timeline.timeline .timeline-item>.timeline-event:before {\n left: -15px!important;\n border-right-width: 15px!important\n }\n .timeline.timeline .timeline-item>.timeline-event:after {\n left: -14px!important;\n border-right-width: 14px!important\n }\n .timeline.timeline .timeline-item>.timeline-point {\n transform: translateX(-50%);\n left: 42px!important;\n margin-left: 0\n }\n .timeline.timeline .timeline-label {\n transform: translateX(-50%);\n margin: 0 0 20px 42px\n }\n .timeline.timeline .timeline-label + .timeline-item + .timeline-item {\n margin-top: 0\n }\n .timeline .time-right {\n left: 0\n }\n}\n\n\n.rounded-widget .widget {\n border-radius: 4px\n}\n\n.rounded-widget .widget-image {\n border-radius: 4px\n}\n\n.rounded-widget .widget-header {\n border-radius: 4px 4px 0 0\n}\n\n.rounded-widget .widget-footer {\n border-radius: 0 0 4px 4px\n}\n\n.widget {\n background: #fff;\n border-radius: 0;\n border: none;\n margin-bottom: 30px\n}\n\n.widget-image {\n background: #fff;\n border-radius: 0;\n border: none;\n margin-bottom: 30px;\n position: relative\n}\n\n.widget-header {\n background: #fff;\n padding: .85rem 1.4rem;\n position: relative;\n width: 100%\n}\n\n.widget-header.bordered {\n border-bottom: .07rem solid #eee\n}\n\n.widget-header.no-actions {\n padding: 1.49rem\n}\n\n.widget-options .dropdown-toggle {\n color: #98a8b4;\n background: none;\n border: none;\n padding: 0;\n font-size: 1.7rem;\n}\n\n.widget-header h1,\n.widget-header h2,\n.widget-header h3,\n.widget-header h4,\n.widget-header h5,\n.widget-header h6 {\n color: #2c304d;\n margin-bottom: 0\n}\n\n.section-title h1,\n.section-title h2,\n.section-title h3,\n.section-title h4,\n.section-title h5,\n.section-title h6 {\n color: #2c304d;\n font-weight: 600;\n margin-bottom: 0\n}\n\n.widget-header h2 {\n color: #2c304d;\n font-size: 1.2rem;\n display: table-cell;\n vertical-align: middle;\n margin-right: auto\n}\n\n.widget-header h2 i {\n color: #aea9c3;\n font-size: 1.8rem;\n padding-right: .5rem;\n vertical-align: middle\n}\n\n.widget-body {\n padding: 1.4rem\n}\n\n.widget-image-footer {\n background: #fff;\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: 1.2rem 0;\n z-index: 1\n}\n\n.widget-footer {\n background: #fff;\n padding: 1rem 1.07rem;\n position: relative\n}\n\n.widget-footer.big {\n padding: 2.1rem 1.07rem\n}\n\n.no-border {\n border: 0 none!important;\n}\n\n.no-bg {\n background: none!important;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./llo-search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./llo-search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./llo-search.vue?vue&type=template&id=5b5f3710&\"\nimport script from \"./llo-search.vue?vue&type=script&lang=js&\"\nexport * from \"./llo-search.vue?vue&type=script&lang=js&\"\nimport style0 from \"./llo-search.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"author\"},[(_vm.hybridshow=='asciidoc')?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/book.png\"),\"alt\":\"...\"}}):_vm._e(),(_vm.hybridshow=='asciinema')?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/code-128.png\"),\"alt\":\"...\"}}):_vm._e(),(_vm.hybridshow=='video')?_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/video1.png\"),\"alt\":\"...\"}}):_vm._e()]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[(_vm.hybridshow=='asciinema')?_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('b',[_vm._v(\"Copy & Paste\")]),_c('br'),_vm._v(\" Any time you see a command you'd like to try in your own terminal just pause the player \"),_c('br'),_vm._v(\" and copy-paste the content you want. \")]),_c('div',{staticClass:\"col-12\"},[_c('iframe',{attrs:{\"id\":\"llo\",\"title\":\"title\",\"width\":\"600\",\"height\":\"700\",\"src\":_vm.asciinemasource,\"allowfullscreen\":\"\",\"frameborder\":\"0\"}})])]):_vm._e(),(_vm.hybridshow=='video')?_c('div',{staticClass:\"row text-center\"},[_c('iframe',{attrs:{\"id\":\"llo\",\"width\":\"740\",\"height\":\"500\",\"src\":_vm.sourcevimeo,\"allowfullscreen\":\"\",\"frameborder\":\"0\"},on:{\"load\":function($event){return _vm.dofin()}}})]):_vm._e(),(_vm.hybridshow=='asciidoc')?_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('iframe',{attrs:{\"id\":\"lloasciiview1\",\"title\":\"title\",\"width\":\"100%\",\"height\":\"700\",\"src\":_vm.asciidocurl,\"frameborder\":\"0\"}})])]):_vm._e(),(_vm.hybridshow=='penguin')?_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/penguin21a.png\"),\"width\":\"400\",\"height\":\"400\"}})])]):_vm._e()]),_c('hr'),(_vm.hybridshow!='penguin')?_c('b-container',{staticClass:\"bv-example-row\",attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"input-group input-group-sm sm-3\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.completiontracking),expression:\"completiontracking\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.completiontracking=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.oncompletiontracking()}]}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Completion tracking\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"Completed\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Almost\")])]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.courseread),expression:\"courseread\"}],staticClass:\"custom-select custom-select-sm\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.courseread=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.oncompletiontracking()}]}},[_c('option',{attrs:{\"value\":\"0\",\"selected\":\"\"}},[_vm._v(\"Did you find this helpful?\")]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(\"No\")]),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(\"Not really/A bit\")]),_c('option',{attrs:{\"value\":\"3\"}},[_vm._v(\"Yes\")])])])])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('iframe',{attrs:{\"id\":\"llo\",\"title\":_vm.title,\"width\":_vm.width,\"height\":_vm.height,\"src\":_vm.source,\"allowfullscreen\":\"\",\"frameborder\":\"0\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<iframe \n\t\tid=\"llo\"\n\t\t:title=\"title\"\n\t\t:width=\"width\"\n\t\t:height=\"height\"\n\t\t:src=\"source\"\n\t\tallowfullscreen\n\t\tframeborder=\"0\"\n\t\t>\n\t</iframe>\n</template>\n\n<script>\n export default {\n props: {\n\t\t\t\t\t'title':'',\n\t\t\t\t\t'course':'',\n 'llo':''\n\t\t\t\t},\n data() {\n return {\n //source:'',\n source: `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`,\n //source: `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`,\n\t\t\t\t\t\t\t\twidth:\"600\",\n\t\t\t\t\t\t\t\theight:\"750\"\n }\n },\n mounted() {\n //this.source = `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`\n //console.log('----------- '+JSON.stringify(this.llo));\n//var a = document.createElement('iframe');\n//a.src = this.source;\n//a.width = \"600\";\n//a.height = \"750\";\n//a.setAttribute('allowFullScreen', 'true')\n//document.getElementById(this.llo).appendChild(a);\n// // Can't use script tags directly apparently\n// let asciiscript = document.createElement('script');\n// asciiscript.setAttribute('src', this.source);\n// asciiscript.setAttribute('id', this.ascid);\n// console.log(this.id);\n// document.getElementById(this.id).appendChild(asciiscript)\n }\n }\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asciiplayer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asciiplayer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./asciiplayer.vue?vue&type=template&id=938d80c4&\"\nimport script from \"./asciiplayer.vue?vue&type=script&lang=js&\"\nexport * from \"./asciiplayer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"author\">\n <img class=\"avatar border-white\" src=\"@/assets/img/book.png\" alt=\"...\"\n v-if=\"hybridshow=='asciidoc'\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/code-128.png\" alt=\"...\"\n v-if=\"hybridshow=='asciinema'\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/video1.png\" alt=\"...\"\n v-if=\"hybridshow=='video'\"\n >\n </div>\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n <div class=\"row text-center\"\n v-if=\"hybridshow=='asciinema'\"\n >\n\n <div class=\"col-12\">\n <b>Copy & Paste</b> \n <br>\n Any time you see a command you'd like to try in your own terminal just pause the player <br> and copy-paste the content you want.\n </div>\n <div class=\"col-12\">\n\t<iframe \n\t\tid=\"llo\"\n\t\ttitle=\"title\"\n\t\twidth=\"600\"\n\t\theight=\"700\"\n\t\t:src=\"asciinemasource\"\n\t\tallowfullscreen\n\t\tframeborder=\"0\"\n\t\t>\n\t</iframe>\n<!--\n <aplayer\n :llo=\"llo\"\n :course=\"course\"\n >\n </aplayer>\n-->\n </div>\n </div>\n\n <div class=\"row text-center\"\n v-if=\"hybridshow=='video'\"\n >\n <iframe \n @load=\"dofin()\"\n id=\"llo\"\n width=\"740\"\n height=\"500\"\n :src=\"sourcevimeo\"\n allowfullscreen\n frameborder=\"0\"\n >\n </iframe>\n </div>\n\n <div class=\"row text-center\"\n v-if=\"hybridshow=='asciidoc'\"\n >\n <div class=\"col-12\">\n\t<iframe \n\t\tid=\"lloasciiview1\"\n\t\ttitle=\"title\"\n\t\twidth=\"100%\"\n\t\theight=\"700\"\n\t\t:src=\"asciidocurl\"\n\t\tframeborder=\"0\"\n\t\t>\n\t</iframe>\n </div>\n </div>\n\n <div class=\"row text-center\"\n v-if=\"hybridshow=='penguin'\"\n >\n <div class=\"col-12\">\n <img src=\"@/assets/img/penguin21a.png\" width=\"400\" height=\"400\">\n </div>\n </div>\n </b-container>\n<hr>\n <b-container fluid class=\"bv-example-row\"\n v-if=\"hybridshow!='penguin'\"\n >\n <div class=\"row text-center\"\n <div class=\"col-12\">\n\t\t <div class=\"input-group input-group-sm sm-3\">\n <select \n v-on:change=\"oncompletiontracking()\"\n class=\"custom-select custom-select-sm\" v-model=\"completiontracking\">\n <option value=\"0\" selected>Completion tracking</option>\n <option value=\"1\">Completed</option>\n <option value=\"2\">Almost</option>\n </select>\n <select \n v-on:change=\"oncompletiontracking()\"\n class=\"custom-select custom-select-sm\" v-model=\"courseread\">\n <option value=\"0\" selected>Did you find this helpful?</option>\n <option value=\"1\">No</option>\n <option value=\"2\">Not really/A bit</option>\n <option value=\"3\">Yes</option>\n </select>\n </div>\n </div>\n </div>\n </b-container>\n\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport aplayer from '@/components/asciiplayer.vue'\n//import asciidoc from '@/components/asciidoc.vue'\nimport Asciidoctor from 'asciidoctor'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n // asciidoc,\n aplayer,\n card\n\t},\n props: {},\n data() {\n return{\n vtype:'', // tmp save for hybridshow\n completiontracking:0,\n courseread:0,\n hybridshow:'penguin',\n llo:'',\n llocourse:'',\n llochapter:'',\n asciidocurl:'',\n asciidoccode:'',\n course:'',\n asciinemasource:'',\n coursevimeo:'',\n hybridcourse:'',\n token: '',\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_llo_viecourse', (v) => {\n this.completiontracking = 0\n this.courseread = 0\n this.llocourse = v.llo\n this.llochapter = v.course\n if(v.type == 'asciinema'){\n this.hybridshow = v.type\n this.llo = v.llo\n this.course = v.course\n this.asciinemasource = `http://localhost:3080/player/aplayer.html?llo=${this.llo}&item=${this.course}`\n this.getcompletion()\n }else if(v.type == 'asciidoc'){\n this.asciidoccode = v.code\n this.vtype = v.type // save for later use after addlloascii finish\n this.addlloascii()\n this.getcompletion()\n }else if(v.type == 'video'){\n this.$wait.start('myRunInstancetutor');\n this.hybridshow = v.type\n this.sourcevimeo=`https://player.vimeo.com/video/${v.course}`\n this.getcompletion()\n }\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_llo_viecourse')\n\t\t//this.$root.$off('hybrid_refresh_table')\n },\n computed: {\n\t},\n\n methods: {\n async getcompletion() {\n var value = {}\n value.token = this.token\n value.course = this.llocourse\n value.chapter = this.llochapter\n var res1 = await store.dispatch('pipelineLLO/getcompletion', value)\n console.log('params '+JSON.stringify(res1))\n if(res1.data.action == 'ok'){\n if (res1.data.data){\n this.completiontracking = res1.data.data.track\n this.courseread = res1.data.data.evaluation\n }\n }\n \n },\n async oncompletiontracking() {\n var value = {}\n value.token = this.token\n value.action = 'track'\n value.track = this.completiontracking\n value.evaluation = this.courseread\n value.course = this.llocourse\n value.chapter = this.llochapter\n var res1 = await store.dispatch('pipelineLLO/oncompletiontracking', value)\n this.$root.$emit('hybrid_progress_refresh')\n },\n dofin() {\n //console.log(\" dofin \")\n this.$wait.end('myRunInstancetutor');\n },\n async addlloascii() {\n var value = this.asciidoccode\n //console.log(\" ascii code 2 \"+JSON.stringify(value))\n\n try{\n var asciidoctor1 = Asciidoctor()\n var value_compiled = asciidoctor1.convert(value,\n {\n standalone: true,\n backend: 'html5', \n header_footer: false,\n doctype: 'article',\n safe: 'safe',\n attributes: {\n 'source-highlighter': 'highlightjs',\n //'toc':'right',\n //'sectnumlevels':4,\n //'no-header-footer':true,\n //'last-update-label':true,\n 'sectnums':true,\n 'icons': 'font',\n 'copycss':true,\n 'stylesheet': 'http://cdnjs.cloudflare.com/ajax/libs/asciidoctor.js/1.5.9/css/asciidoctor.min.css',\n 'iconfont-cdn': 'http://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css',\n 'iconfont-name': 'fontawesome-5-14.0',\n 'iconfont-remote':true,\n 'linkcss': true\n }\n }) // (2)\n\n //console.log(\" ascii \"+JSON.stringify(value_compiled))\n\nvar llosave = await store.dispatch('pipelineLLO/save_llo_asciidoctmp', value_compiled)\n\n//console.log('no write permission 1 '+ JSON.stringify(llosave))\nif(llosave.data == 'nofile'){\nconsole.log('no write permission')\n}else{\nthis.asciidocurl = `http://localhost:3080/asciidoc/${llosave.data.data}.html?token=${this.token}`\n//console.log('no write permission 2 '+ JSON.stringify(this.asciidocurl))\nthis.hybridshow = 'no'\nthis.hybridshow = this.vtype\n}\n\n\n }catch (ex) {\n console.log(\" ascerror \"+JSON.stringify(ex))\n return\n }\n\n\n }\n\n\n },\n\n\n actions: {\n\n\n\t}\n\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./llo-view.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./llo-view.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./llo-view.vue?vue&type=template&id=14952149&\"\nimport script from \"./llo-view.vue?vue&type=script&lang=js&\"\nexport * from \"./llo-view.vue?vue&type=script&lang=js&\"\nimport style0 from \"./llo-view.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-6 order-first \" >\n <br>\n <myllo-search>\n\n </myllo-search>\n </div>\n\n <div class=\"col-6 order-last\" >\n <br>\n \n <myllo-view>\n\n </myllo-view>\n \n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\nimport MylloSearch from \"./manageservices/llo-search.vue\";\nimport MylloView from \"./manageservices/llo-view.vue\";\nexport default {\n components: {\n card,\n MylloSearch,\n MylloView\n },\n data () {\n return {\n loading: false,\n consoleView: 'off',\n productIndex: 1\n }\n },\n mounted() {\n },\n beforeDestroy () {\n },\n\n\n created () {\n }\n};\n</script>\n<style>\n</style>\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managello.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./managello.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./managello.vue?vue&type=template&id=01e26349&\"\nimport script from \"./managello.vue?vue&type=script&lang=js&\"\nexport * from \"./managello.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8 order-first \"},[_c('br'),_c('calendar-view')],1),_c('div',{staticClass:\"col-4 order-last\"},[_c('br'),_c('calendar-view-events')],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',{attrs:{\"id\":\"appcalendar\"}},[_c('div',{staticClass:\"calendar-parent\"},[_c('calendar-view',{class:_vm.themeClasses,attrs:{\"items\":_vm.items,\"show-date\":_vm.showDate,\"time-format-options\":{ hour: 'numeric', minute: '2-digit' },\"enable-drag-drop\":false,\"disable-past\":_vm.disablePast,\"disable-future\":_vm.disableFuture,\"show-times\":_vm.showTimes,\"display-period-uom\":_vm.displayPeriodUom,\"display-period-count\":_vm.displayPeriodCount,\"starting-day-of-week\":_vm.startingDayOfWeek,\"period-changed-callback\":_vm.periodChanged,\"current-period-label\":_vm.useTodayIcons ? 'icons' : '',\"displayWeekNumbers\":_vm.displayWeekNumbers,\"enable-date-selection\":true,\"selection-start\":_vm.selectionStart,\"selection-end\":_vm.selectionEnd,\"timeFormatOptions\":_vm.timeFormatOptions},on:{\"date-selection-start\":_vm.setSelection,\"date-selection\":_vm.setSelection,\"date-selection-finish\":_vm.finishSelection,\"drop-on-date\":_vm.onDrop,\"click-date\":_vm.onClickDay,\"click-item\":_vm.onClickItem},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){\nvar headerProps = ref.headerProps;\nreturn _c('calendar-view-header',{attrs:{\"header-props\":headerProps},on:{\"input\":_vm.setShowDate}})}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"appcalendar\" >\n\n\t\t<div class=\"calendar-parent\">\n\t\t\t<calendar-view\n\t\t\t\t:items=\"items\"\n\t\t\t\t:show-date=\"showDate\"\n\t\t\t\t:time-format-options=\"{ hour: 'numeric', minute: '2-digit' }\"\n\t\t\t\t:enable-drag-drop=\"false\"\n\t\t\t\t:disable-past=\"disablePast\"\n\t\t\t\t:disable-future=\"disableFuture\"\n\t\t\t\t:show-times=\"showTimes\"\n\t\t\t\t:display-period-uom=\"displayPeriodUom\"\n\t\t\t\t:display-period-count=\"displayPeriodCount\"\n\t\t\t\t:starting-day-of-week=\"startingDayOfWeek\"\n\t\t\t\t:class=\"themeClasses\"\n\t\t\t\t:period-changed-callback=\"periodChanged\"\n\t\t\t\t:current-period-label=\"useTodayIcons ? 'icons' : ''\"\n\t\t\t\t:displayWeekNumbers=\"displayWeekNumbers\"\n\t\t\t\t:enable-date-selection=\"true\"\n\t\t\t\t:selection-start=\"selectionStart\"\n\t\t\t\t:selection-end=\"selectionEnd\"\n\t\t\t\t:timeFormatOptions=\"timeFormatOptions\"\n\t\t\t\t@date-selection-start=\"setSelection\"\n\t\t\t\t@date-selection=\"setSelection\"\n\t\t\t\t@date-selection-finish=\"finishSelection\"\n\t\t\t\t@drop-on-date=\"onDrop\"\n\t\t\t\t@click-date=\"onClickDay\"\n\t\t\t\t@click-item=\"onClickItem\"\n\t\t\t>\n\t\t\t\t<calendar-view-header\n\t\t\t\t\tslot=\"header\"\n\t\t\t\t\tslot-scope=\"{ headerProps }\"\n\t\t\t\t\t:header-props=\"headerProps\"\n\t\t\t\t\t@input=\"setShowDate\"\n\t\t\t\t/>\n\t\t\t</calendar-view>\n\t\t</div>\n\n\t</div>\n</template>\n<script>\n\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\n// Load CSS from the local repo\nrequire(\"vue-simple-calendar/static/css/default.css\")\nrequire(\"vue-simple-calendar/static/css/holidays-us.css\")\n\nimport {\n\tCalendarView,\n\tCalendarViewHeader,\n\tCalendarMathMixin,\n} from \"vue-simple-calendar/src/components/bundle.js\" // local repo\n\nexport default {\n\tcomponents: {\n card,\n\t\tCalendarView,\n\t\tCalendarViewHeader,\n\t},\n\tmixins: [CalendarMathMixin],\n\tdata() {\n\t\treturn {\n\t\t\tshowDate: this.thisMonth(1),\n\t\t\tmessage: \"\",\n\t\t\tstartingDayOfWeek: 1,\n\t\t\tdisablePast: false,\n\t\t\tdisableFuture: false,\n\t\t\tdisplayPeriodUom: \"month\",\n\t\t\tdisplayPeriodCount: 1,\n\t\t\tdisplayWeekNumbers: true,\n\t\t\tshowTimes: false,\n\t\t\tselectionStart: null,\n\t\t\tselectionEnd: null,\n\t\t\tnewItemTitle: \"\",\n\t\t\tnewItemStartDate: \"\",\n\t\t\tnewItemEndDate: \"\",\n\t\t\tuseDefaultTheme: true,\n\t\t\tuseHolidayTheme: false,\n\t\t\tuseTodayIcons: true,\n timeFormatOptions:{\n\t\t\t\thour: 'numeric', minute: 'numeric',\n\t\t\t\thour12: false,\n\t\t\t\ttimeZone: 'Europe/Athens'\n\t\t\t},\n begindate:'',\n enddate:'',\n\t\t\titems: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tgetevents4month() {\n\t\t},\n\t\tuserLocale() {\n\t\t\treturn this.getDefaultBrowserLocale\n\t\t},\n\t\tdayNames() {\n\t\t\treturn this.getFormattedWeekdayNames(this.userLocale, \"long\", 0)\n\t\t},\n\t\tthemeClasses() {\n\t\t\treturn {\n\t\t\t\t\"theme-default\": this.useDefaultTheme,\n\t\t\t\t\"holiday-us-traditional\": this.useHolidayTheme,\n\t\t\t\t\"holiday-us-official\": this.useHolidayTheme,\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.newItemStartDate = this.isoYearMonthDay(this.today())\n\t\tthis.newItemEndDate = this.isoYearMonthDay(this.today())\n\t const t = new Date()\n\t\t\tlet bd_y = t.getFullYear()\n\t\t\tlet bd_m = (t.getMonth() + 1).toString().padStart(2, \"0\");\n\t\t\tlet bd_d = '01';\n this.begindate = `${bd_y}-${bd_m}-${bd_d}`\n this.enddate = `${bd_y}-${bd_m}-31`\n this.getevents()\n\t},\n\n\tmethods: {\n\t\tasync getevents() {\n var value1 = {}\n value1.begin = this.begindate\n value1.end = this.enddate\n \tvar llo = await store.dispatch('pipelineLLO/getevents', value1)\n this.items = llo.data.result;\n\t\t\t\t//console.log('events'+JSON.stringify(llo))\n\t\t},\n\t\tperiodChanged(v) {\n\t\t\t// range, eventSource) {\n\t\t\t// Demo does nothing with this information, just including the method to demonstrate how\n\t\t\t// you can listen for changes to the displayed range and react to them (by loading items, etc.)\n\t\t\t//console.log(v)\n\n\t\t\tlet t = v.periodStart\n\t\t\tlet bd_y = t.getFullYear()\n\t\t\tlet bd_m = (t.getMonth() + 1).toString().padStart(2, \"0\");\n\t\t\tlet bd_d = t.getDate().toString().padStart(2, \"0\");\n this.begindate = `${bd_y}-${bd_m}-${bd_d}`\n\n\t\t\tlet e = v.periodEnd\n\t\t\tlet ed_y = e.getFullYear()\n\t\t\tlet ed_m = (e.getMonth() + 1).toString().padStart(2, \"0\");\n\t\t\tlet ed_d = e.getDate().toString().padStart(2, \"0\");\n this.enddate = `${ed_y}-${ed_m}-${ed_d}`\n \n this.getevents()\n\t\t\t//console.log(this.begindate)\n\t\t\t//console.log(this.enddate)\n\t\t},\n\t\tthisMonth(d, h, m) {\n\t\t\tconst t = new Date()\n\t\t\treturn new Date(t.getFullYear(), t.getMonth(), d, h || 0, m || 0)\n\t\t},\n\t\tonClickDay(d) {\n\t\t\tthis.selectionStart = null\n\t\t\tthis.selectionEnd = null\n\t\t\tthis.message = `You clicked: ${d.toLocaleDateString()}`\n\t\t},\n\t\tonClickItem(e) {\n\t\t\tthis.message = `You clicked: ${e.title}`\n\t\t\t//console.log(e)\n this.$root.$emit('hybrid_labobject_view',e)\n\t\t},\n\t\tsetShowDate(d) {\n\t\t\tthis.message = `Changing calendar view to ${d.toLocaleDateString()}`\n\t\t\tthis.showDate = d\n\t\t},\n\t\tsetSelection(dateRange) {\n\t\t\tthis.selectionEnd = dateRange[1]\n\t\t\tthis.selectionStart = dateRange[0]\n\t\t},\n\t\tfinishSelection(dateRange) {\n\t\t\tthis.setSelection(dateRange)\n\t\t\tthis.message = `You selected: ${this.selectionStart.toLocaleDateString()} -${this.selectionEnd.toLocaleDateString()}`\n\t\t},\n\t\tonDrop(item, date) {\n\t\t\tthis.message = `You dropped ${item.id} on ${date.toLocaleDateString()}`\n\t\t\t// Determine the delta between the old start date and the date chosen,\n\t\t\t// and apply that delta to both the start and end date to move the item.\n\t\t\tconst eLength = this.dayDiff(item.startDate, date)\n\t\t\titem.originalItem.startDate = this.addDays(item.startDate, eLength)\n\t\t\titem.originalItem.endDate = this.addDays(item.endDate, eLength)\n\t\t},\n\t\tclickTestAddItem() {\n\t\t\tthis.items.push({\n\t\t\t\tstartDate: this.newItemStartDate,\n\t\t\t\tendDate: this.newItemEndDate,\n\t\t\t\ttitle: this.newItemTitle,\n\t\t\t\tid: \"e\" + Math.random().toString(36).substr(2, 10),\n\t\t\t})\n\t\t\tthis.message = \"You added a calendar item!\"\n\t\t},\n\t},\n}\n</script>\n\n<style>\nhtml,\nbody {\n\theight: 100%;\n\tmargin: 0;\n\tbackground-color: #f7fcff;\n}\n\n#appcalendar {\n\tdisplay: flex;\n\tflex-direction: row;\n\tfont-family: Calibri, sans-serif;\n\t//width: 95vw;\n\twidth: 100%;\n\tmin-width: 30rem;\n\tmax-width: 100rem;\n\tmin-height: 40rem;\n\tmargin-left: auto;\n\tmargin-right: auto;\n}\n\n\n.calendar-controls {\n\tmargin-right: 1rem;\n\tmin-width: 14rem;\n\tmax-width: 14rem;\n}\n\n.calendar-parent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\toverflow-x: hidden;\n\toverflow-y: hidden;\n\tmax-height: 80vh;\n\tbackground-color: white;\n}\n\n/* For long calendars, ensure each week gets sufficient height. The body of the calendar will scroll if needed */\n.cv-wrapper.period-month.periodCount-2 .cv-week,\n.cv-wrapper.period-month.periodCount-3 .cv-week,\n.cv-wrapper.period-year .cv-week {\n\tmin-height: 6rem;\n}\n\n/* These styles are optional, to illustrate the flexbility of styling the calendar purely with CSS. */\n\n/* Add some styling for items tagged with the \"birthday\" class */\n.theme-default .cv-item.birthday {\n\tbackground-color: #e0f0e0;\n\tborder-color: #d7e7d7;\n}\n\n.theme-default .cv-item.birthday::before {\n\tcontent: \"\\1F382\"; /* Birthday cake */\n\tmargin-right: 0.5em;\n}\n</style>\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendarview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendarview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./calendarview.vue?vue&type=template&id=6f10b700&\"\nimport script from \"./calendarview.vue?vue&type=script&lang=js&\"\nexport * from \"./calendarview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./calendarview.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('card',{staticClass:\"card-user\",staticStyle:{\"max-height\":\"100%\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==true),expression:\"hybridshowlog==true\"}],staticClass:\"author\"},[_c('img',{staticClass:\"avatar border-white\",attrs:{\"src\":require(\"@/assets/img/library.png\"),\"alt\":\"...\"}})]),_c('v-wait',{attrs:{\"for\":\"myRunInstancetutor\"}},[_c('template',{slot:\"waiting\"},[_c('div',[_c('img',{attrs:{\"src\":require(\"@/assets/loading.gif\")}}),_vm._v(\" Enter Lab_room... \")])])],2),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hybridshowlog==true),expression:\"hybridshowlog==true\"}],staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12\"},[_c('table',{staticClass:\"table table-hover\"},[_c('tbody',[_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Title\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.title)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Type\")]),_c('td',[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.type)+\" \")]),_c('td',[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.lang)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"Description\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.desc)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"More info\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.url)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"startDate\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.startDate)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"endDate\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.endDate)+\" \")])]),_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(\"url\")]),_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.labtext.originalItem.urltype)+\" \")])])])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n <div class=\"author\"\n v-show=\"hybridshowlog==true\"\n >\n <img class=\"avatar border-white\" src=\"@/assets/img/library.png\" alt=\"...\">\n </div>\n\n\n <v-wait for=\"myRunInstancetutor\">\n <template slot=\"waiting\">\n <div>\n <img src=\"@/assets/loading.gif\" />\n Enter Lab_room...\n </div>\n </template>\n </v-wait>\n\n <b-container fluid>\n <div class=\"row text-center\"\n v-show=\"hybridshowlog==true\"\n >\n <div class=\"col-12\">\n\n\t\t\t\t\t\t\t\t<table class=\"table table-hover\">\n\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Title</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.title }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Type</th>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.type }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.lang }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Description</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.desc }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">More info</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.url }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">startDate</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.startDate }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">endDate</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.endDate }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">url</th>\n\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ labtext.originalItem.urltype }}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t</table>\n\n </div>\n </div>\n </b-container>\n </card>\n</template>\n<script>\nimport store from '@/store/index'\nimport {mapState, mapGetters, mapActions,dispatch} from 'vuex'\nimport Vue from 'vue'\nimport card from '@/components/Card.vue'\nimport {ApiConfig} from \"@/config/index\";\nexport default {\n components: {\n card\n\t},\n props: {\n },\n data() {\n return{\n hybridshowlog:false,\n labtext:{},\n token: ''\n\t\t}\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_labobject_view', (v) => {\n this.hybridshowlog=true\n this.labtext = v\n //console.log('object ' +JSON.stringify(this.labtext))\n\t\t})\n\t},\n\tcreated() {\n var url_string = window.location.href\n var url = new URL(url_string);\n this.token = url.searchParams.get(\"token\");\n //console.log(\"token \"+ this.token);\n\n\t},\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_labobject_view')\n },\n computed: {\n\t\thttpOptions() {\n\t\t\tvar token = this.token\n\t\t\t var p=\"headers: {Authorization: token}}\"; //table props -> :http-options=\"httpOptions\"\n\t\t\t return {headers: {Authorization: 'Bearer ' + token}} //table props -> :http-options=\"httpOptions\"\n\t },\n\n\t},\n methods: {\n },\n actions: {\n\t}\n};\n</script>\n<style>\n.flex-fixed-width-item {\n flex: 0 0 100px;\n\t\t}\n.modalinfo {\n z-index: 10000000 !important;\n\tposition:fixed;\n}\n/* a container with flex-direction column */\n\n.vue-notifyjs.notifications{\n .alert{\n z-index: 100;\n }\n .list-move {\n transition: transform 0.3s, opacity 0.4s;\n }\n .list-item {\n display: inline-block;\n margin-right: 10px;\n\n }\n .list-enter-active {\n transition: transform 0.2s ease-in, opacity 0.4s ease-in;\n }\n .list-leave-active {\n transition: transform 1s ease-out, opacity 0.4s ease-out;\n }\n\n .list-enter {\n opacity: 0;\n transform: scale(1.1);\n\n }\n .list-leave-to {\n opacity: 0;\n transform: scale(1.2, 0.7);\n }\n}\n\npre {\n //background-color: rgb(255, 247, 229);\n background-color: #eff0f1;\n\t border: 1px solid blue;\n\t\t //white-space: pre-line;\n\t\t\t}\n\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./view-events.vue?vue&type=template&id=6147c963&\"\nimport script from \"./view-events.vue?vue&type=script&lang=js&\"\nexport * from \"./view-events.vue?vue&type=script&lang=js&\"\nimport style0 from \"./view-events.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <card class=\"card-user\" style=\"max-height:100%\">\n\n <div class=\"row\" >\n <div class=\"col-8 order-first \" >\n <br>\n <calendar-view>\n\n </calendar-view>\n </div>\n\n <div class=\"col-4 order-last\" >\n <br>\n \n <calendar-view-events>\n\n </calendar-view-events>\n \n </div>\n </div>\n\n\n </card>\n</template>\n<script>\nimport {mapState, mapGetters, mapActions} from 'vuex'\nimport card from '@/components/Card.vue'\nimport CalendarView from \"./manageservices/calendarview.vue\";\n//import CalendarView from \"./manageservices/view-service.vue\";\nimport CalendarViewEvents from \"./manageservices/view-events.vue\";\nexport default {\n components: {\n card,\n CalendarView,\n CalendarViewEvents\n },\n data () {\n return {\n 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!./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=d3605f62&\"\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<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=\"\">Hybrid</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://api-client.swarmlab.io:8088/?token='+ token\" target=\"_swarmlab\"> Swarmlab_Cloud </b-nav-item>\n </ul>\n\n <ul class=\"nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap\">\n\t\t\t<!-- --------------- socket connection -->\n <b-nav-item \n @click=\"onAction('check')\"\n\t\t\t\t\t\t\t>Check Connection Status:</b-nav-item>\n <b-nav-item >Agent</b-nav-item>\n<!--\n v-if=\"$socket.disconnected\"\n-->\n <li class=\"nav-item\"\n v-if=\"issocket === 'close'\"\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-danger\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are disconnected from hybrid_agent\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n <li class=\"nav-item\"\n v-else\n \t\t\t\t\t\t>\n <a \n\t\t\t\t\t\t\t\t\t\tclass=\"ti-link nav-link text-success\" \n\t\t\t\t\t\t\t\t\t\thref=\"#\"\n title=\"You are connected hybrid_agent\"\n @click=\"onAction('connect')\"\n\t\t\t\t\t\t\t\t>\n </a> \n </li>\n\t\t\t<!-- --------------- socket connection -->\n\t\t\t<!-- --------------- wg connection -->\n <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\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\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\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\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 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')\" > Hybrid</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-hybrid\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Hybrid\" class=\"ti-target m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_instances')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_instances') }\" @click=\"hybrid('manage_service')\"> Join</b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_deploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_deploy') }\" @click=\"hybrid('manage_deploy')\"> Deploy</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n <!-- Menou container -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-container variant=\"light\" name=\"Local\" class=\"ti-package list-group-item list-group-item-action\" v-on:click=\"setActive('container','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('container') }\" @click=\"hybrid('bootstrap')\" > Container</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\n <!-- Menou private -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-private variant=\"light\" name=\"Private\" class=\"ti-home list-group-item list-group-item-action\" v-on:click=\"setActive('private','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('private') }\" @click=\"hybrid('services')\" > Private</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')\"> Bootstrap</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou llo -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" > LearningObjects</b-list-group-item>\n\n\t\t\t\t\t<b-collapse id=\"hybrid-llo\" class=\"m-subm\" accordion=\"m-sidebar\" role=\"tabpanel\">\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Container\" class=\"ti-view-list m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('llo','hybrid_llo')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_llo') }\" @click=\"hybrid('llo')\"> Courses</b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n <!-- Menou close -->\n\t\t\t <b-list-group-item variant=\"light\" name=\"menou-min\" class=\"ti-angle-double-left list-group-item list-group-item-action\" v-on:click=\"onActionMenu('min')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('menou-min') }\" title=\"Minimize\"></b-list-group-item>\n\n\n\n\n </div>\n </div>\n <!-- /Sidebar max ------------------------------------ -->\n <!-- Sidebar min -------------------------------- -->\n\t\t\t<div class=\" bg-light border-right\" id=\"sidebar-wrapper\"\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-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')\" title=\"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') }\" 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\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')\" title=\"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\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 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')\" title=\"Hybrid\" > </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')\" title=\"Zones\"> </b-list-group-item>\n\t\t\t\t\t\t\t<b-list-group-item variant=\"light\" name=\"Deploy\" class=\"ti-cloud-up m-subm-listgroup list-group-item list-group-item-action\" v-on:click=\"setActive('hybrid','hybrid_deploy')\" style=\"cursor: pointer;\" :class=\"{ active: isActiveSub('hybrid_deploy') }\" @click=\"hybrid('manage_deploy')\" title=\"Deploy\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n <!-- Menou container -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-container variant=\"light\" name=\"Local\" class=\"ti-package list-group-item list-group-item-action\" v-on:click=\"setActive('container','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('container') }\" @click=\"hybrid('bootstrap')\" title=\"Container\"> </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')\" title=\"Show all containers\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\n <!-- Menou private -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-private variant=\"light\" name=\"Private\" class=\"ti-home list-group-item list-group-item-action\" v-on:click=\"setActive('private','')\" 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-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')\" title=\"Bootstrap\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n <!-- Menou llo -->\n\t\t\t <b-list-group-item v-b-toggle.hybrid-llo variant=\"light\" name=\"Llo\" class=\"ti-book list-group-item list-group-item-action\" v-on:click=\"setActive('llo','')\" style=\"cursor: pointer;\" :class=\"{ active: isActive('llo') }\" @click=\"hybrid('llo')\" title=\"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')\" title=\"Courses\"> </b-list-group-item>\n\t\t\t\t\t</b-collapse>\n\n\t\t\t<!-- Menou close -->\n\t\t\t\t <b-list-group-item variant=\"light\" name=\"menou-max\" class=\"ti-angle-double-right list-group-item list-group-item-action\" v-on:click=\"onActionMenu('max')\" style=\"cursor: pointer;\" title=\"Maximize\"></b-list-group-item>\n\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- /Sidebar max ------------------------------------ -->\n\n\t\t\t<!-- /#sidebar-wrapper -->\n\n <!-- Page Content -->\n\n\n \t\t<!-- content----------------------------------- -->\n\n\t\t\t\t<div class=\"w-100 p-3\" style=\"background-color: #eee;\">\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid dashboard --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <view-dashboard\n v-if=\"hybridmenou == 'dashboard'\"\n style=\"background-color: #f8f9fa\"\n >\n </view-dashboard>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid dashboard --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid settings --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t\t <connect-server\n\t\t\t\t\t\t\t\tstyle=\"background-color: #f8f9fa\"\n\t\t\t\t\t\t\t\t\tv-show=\"hybridmenou == 'connect-server'\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t </connect-server>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid settings --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage services --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-services\n :key=\"componentKeyreload\"\n v-if=\"hybridmenou == 'manage_service'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-services>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage services --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage llo --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-llo\n v-if=\"hybridmenou == 'llo'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-llo>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid manage llo --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid container --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <network-table\n :key=\"componentKeyreload\"\n v-show=\"hybridmenou == 'bootstrap'\"\n style=\"background-color: #f8f9fa\"\n >\n </network-table>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid container --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private bootstrap --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <services-table\n v-show=\"hybridmenou == 'services'\"\n style=\"background-color: #f8f9fa\"\n >\n </services-table>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private bootstrap --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private deploy --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n <manage-deploy\n v-if=\"hybridmenou == 'manage_deploy'\"\n style=\"background-color: #f8f9fa\"\n >\n </manage-deploy>\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t\t<!-- ------ hybrid private deploy --------------- -->\n\t\t\t\t\t<!-- ----------------------------------- -->\n\t\t\t\t</div>\n\n <!-- Page Content -->\n\n <!-- /#page-content-wrapper -->\n\n </div>\n <!-- /#wrapper -->\n\n\n </b-col>\n </b-row>\n\n\n\n\n\n<footer class=\"footer\">\n <div id=\"appfooter\" class=\"container\" style=\"max-width:75%\">\n\n\t<span data-jsl10n=\"license\" class=\"jsl10n\">Text is available under the \n\t\t\t\t<a class=\"text-info\" href=\"https://creativecommons.org/licenses/by-sa/3.0/\" target=\"_blank\">Creative Commons License</a></span>\n\t\t\t\t&nbsp; | &nbsp; \n <a class=\"text-info\" href=\"https://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"> ©</a>\n\t\t\t\t&nbsp; Coded with &nbsp;\n <i class=\"ti-heart\"></i> &nbsp; by\n <a class=\"text-info\" href=\"https://git.swarmlab.io:3000/zeus\" target=\"_blank\"> &nbsp; zeus</a>&nbsp;\n\t\t\t\t- Released under the\n <a class=\"text-info\" href=\"https://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"> &nbsp; GNU AGPL License</a> &nbsp;|&nbsp;\n\t\t\t\t<a class=\"text-info\"\n\t\t\t\t\t\thref=\"#\"\n \t \t@click=\"showdiscl()\"\n >Disclaimer and Notices</a>\n\n\t\t\t\t<span \n v-if=\"hybridmenou == 'llo'\"\n\t\t\t\t>\n\t\t\t\t&nbsp; | &nbsp; \n\t\t\t\t</span>\n\t\t\t<a \n v-if=\"hybridmenou == 'llo'\"\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'\"\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'\"\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 </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 ConnectServer from \"./components/myconnect-server.vue\";\nimport NetworkTable from \"./components/mynetwork.vue\";\nimport ServicesTable from \"./components/myservices.vue\";\nimport ManageServices from \"./components/manageservices.vue\";\nimport ManageDeploy from \"./components/managedeploy.vue\";\nimport ManageLlo from \"./components/managello.vue\";\nimport ViewDashboard from \"./components/dashboard.vue\";\n\nexport default {\n name: 'app',\n components: {\n NetworkTable,\n ViewDashboard,\n ServicesTable,\n ConnectServer,\n ManageServices,\n ManageDeploy,\n ManageLlo\n },\n data() {\n return {\n componentKeyreload:1,\n\t\t\tsetStatusAgent:'',\n issocket:false, //socket server\n\t\t\tisconnect:false, // dockerswarm wg\n \t\t\tactiveItem: '', // menou\n \t\t\tactiveItemSub: '', //submenou\n sidemenou:'max',\n hybridmenou:'dashboard',\n show: true,\n token: '',\n SwarmabAsciiLabTemplate:''\n }\n },\n\tmounted() {\n\t\tthis.$root.$on('hybrid_server_status', (value) => {\n this.serverstatus()\n\t\t})\n },\n beforeDestroy () {\n\t\tthis.$root.$off('hybrid_server_status')\n },\n\tcreated() {\n },\n methods: {\n\t\t\tasync onAction(action){\n if(action == 'check'){\n if(this.$socket.disconnected){\n \t\tvar socketStatus = 'close'\n }else if(this.$socket.connected){\n \t\tvar socketStatus = 'open'\n\t\t\t\t\t\t}\n\n if(this.isconnect){\n \t\tvar serverStatus = 'open'\n }else{\n \t\tvar serverStatus = 'close'\n\t\t\t\t\t\t}\n\n var info=\"Status<br>\"\n info+=\"Agent is \" + socketStatus+\"<br>\"\n info+=\"Server is \" + serverStatus\n\n this.$swal({\n type: 'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n //cancelButtonText: 'No, cancel!',\n showCancelButton: true,\n showLoaderOnConfirm: false,\n //reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Yes, Reconnect!'\n\t\t\t\t\t }).then((result)=> {\n this.reconnenting(result);\n })\n }\n },\n async reconnenting(result) {\n if(result.value){\n //console.log(JSON.stringify(result))\n //window.location.reload()\n this.componentKeyreload += 1\n }\n },\n\t\t\tasync serverstatus(action){\n var log = store.getters['pipelineLLO/getstatus']\n //console.log('status log ' + JSON.stringify(log))\t\n if(log.data.swarmlab == 'active' && log.data.hybrid == 'Online'){\n this.isconnect=true\n }else{\n this.isconnect=false\n }\n\n },\n onActionMenu(action){\n if(action == 'max'){\n \t\t\tthis.sidemenou = 'max'\n }else if(action == 'min'){\n \t\t\tthis.sidemenou = 'min'\n\t\t\t\t\t}\n\t\t\t\t//console.log(action)\n\t },\n hybrid(action) {\n this.hybridmenou = action\n //console.log(action)\n if(action == 'bootstrap'){\n\t\t this.$root.$emit('hybrid_refresh_dockerservices')\n }else if(action == 'dashboard'){\n console.log('dashboard '+action)\n }else if(action == 'connect-server'){\n\t\t this.$root.$emit('hybrid_connect_server')\n }else if(action == 'llo'){\n console.log('llo '+action)\n\t\t //this.$root.$emit('hybrid_manage_llo')\n }else if(action == 'services'){\n\t\t this.$root.$emit('hybrid_refresh_availableservices')\n }else if(action == 'manage_service'){\n\t\t //this.$root.$emit('hybrid_manage_service')\n }else if(action == 'manage_deploy'){\n }\n },\n isActive: function (menuItem) {\n //console.log('active ' + menuItem);\n return this.activeItem === menuItem\n },\n isActiveSub: function (menuItem) {\n //console.log('activesub ' + menuItem);\n return this.activeItemSub === menuItem\n },\n setActive: function (menuItem,menuItemSub) {\n //console.log('set ' + menuItem);\n this.activeItem = menuItem // no need for Vue.set()\n this.activeItemSub = menuItemSub // no need for Vue.set()\n },\n showdiscl() {\n var winfo='<code class=\"precode text-info\" >Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += '3. Neither the name of Swarmlab.io nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.'\n winfo += '<br>'\n winfo += '<br>'\n winfo += 'THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</code>';\n\nlet info = '<div class=\"text-left\" style=\"height: 550px; overflow-y: scroll;\"><b><p>'+winfo+'</p></b></div>'\n this.$swal({\n type: 'Info',\n title: 'Legal Disclaimer and Notices',\n icon:'info',\n html: info,\n showCloseButton: true,\n showLoaderOnConfirm: false,\n allowOutsideClick: false,\n cancelButtonText: 'No, cancel!',\n showCancelButton: false,\n showLoaderOnConfirm: false,\n reverseButtons: true,\n focusCancel: true,\n confirmButtonText: 'Ok!'\n })\n}\n\n\n }, \n computed: {\n socketStatus() {\n return store.getters['pipelineLLO/getsocketStatus']\n }\n },\n watch: {\n \tsocketStatus(status) {\n\t\t\t\t//console.log('watchok '+status)\n\t\t\t\tthis.issocket = status\n }\n }\n}\n</script>\n\n<style>\n.active {\n background-color: #e7e7e7 !important;\n color: #0c5460 !important;\n}\n\n @import url('https://fonts.googleapis.com/css?family=Lato:400,700');\n\n\n body {\n background: #EEF1F4 !important;\n }\n\n .nav-background {\n background: #353535;\n }\n\n .ti-swarmlab:before {\n position: relative;\n top:-5px;\n right:-8px;\n font-size: 1.5em;\n font-weight: 300;\n content: \"\\e606\";\n color: #222;\n color: #74B3C8;\n border-color: #c60000;\n}\n\n.ti-themify-logo:before {\n content: \"\\e6d1\";\n}\n\n .menoutext {\n font-family: 'Lato', sans-serif !important;\n }\n\n.mycontainer {\n padding-right: 20px !important;\n padding-left: 5px !important;\n margin-right:auto;\n margin-left:auto\n}\n\n\n .m-subm {\n width: 100%;\n border-left: 4px solid #4b4ba3;;\n background-color: #f0f0f0;\n border-top: none;\n border-bottom: none;\n border-right: none;\n\n }\n .m-subm-card {\n padding-left: 0px;\n padding-right: 0px;\n padding-top: 0px;\n padding-bottom: 0px;\n background-color: #f0f0f0;\n border-top: none;\n border-bottom: none;\n border-left: none;\n border-right: none;\n margin-bottom: 0px;\n margin-top: 0px;\n }\n .m-subm-listgroup {\n width: 100%;\n //border-left: 4px solid #4b4ba3;\n background-color: #f0f0f0;\n border-top: none;\n border-bottom: none;\n border-right: none;\n border-left: none;\n padding-left: 2.25rem;\n }\n\n .m-subm-listgroup:hover {\n background-color: #e7e7e7;\n font-weight: 580;\n }\n .m-subm-listgroup:focus {\n background-color: #e7e7e7;\n color:#393982;\n font-weight: 580;\n }\n\n\n/*!\n * Start Bootstrap - Simple Sidebar (https://startbootstrap.com/template/simple-sidebar)\n * Copyright 2013-2020 Start Bootstrap\n * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-simple-sidebar/blob/master/LICENSE)\n */\n\n#sidebar-wrapper .list-group {\n margin:0;\n line-height:30px;\n font-size:12px;\n font-weight:600;\n}\n/*\n#sidebar-wrapper .list-group {\n width: 15rem;\n}\n #wrapper {\n overflow-x: hidden;\n }\n#sidebar-wrapper {\n min-height: 100vh;\n margin-left: -15rem;\n -webkit-transition: margin .25s ease-out;\n -moz-transition: margin .25s ease-out;\n -o-transition: margin .25s ease-out;\n transition: margin .25s ease-out;\n}\n\n#sidebar-wrapper .sidebar-heading {\n padding: 0.875rem 1.25rem;\n font-size: 1.2rem;\n}\n\n#sidebar-wrapper .list-group {\n width: 15rem;\n}\n\n\n#wrapper.toggled #sidebar-wrapper {\n margin-left: 0;\n}\n\n@media (min-width: 768px) {\n #sidebar-wrapper {\n margin-left: 0;\n }\n\n #page-content-wrapper {\n min-width: 0;\n width: 100%;\n }\n\n #wrapper.toggled #sidebar-wrapper {\n margin-left: -15rem;\n }\n}\n#page-content-wrapper {\n min-width: 100vh;\n}\n*/\n\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=24cd5792&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport store from '@/store/index'\nimport {ApiConfig} from \"@/config/index\";\nimport BootstrapVue from 'bootstrap-vue'\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\nimport VueSweetalert2 from 'vue-sweetalert2';\nimport 'sweetalert2/dist/sweetalert2.min.css';\nVue.use(VueSweetalert2);\nimport VueWait from 'vue-wait'\nimport { ValidationProvider } from 'vee-validate';\nVue.use(VueWait)\n\n\nimport \"@/assets/css/_cards.scss\";\n\n\nimport VueSocketIOExt from 'vue-socket.io-extended';\n//import io from 'socket.io-client';\nimport { io } from 'socket.io-client';\n\n\n//const socket = io('https://factory.swarmlab.io:55527', {\n//const socket = io('https://localhost:3080', {\nvar socketurl = ApiConfig.url_80;\nconst socket = io(socketurl, {\n autoConnect: false,\n reconnection: true,\n reconnectionDelay: 500,\n maxReconnectionAttempts: Infinity,\n pingInterval: 25000,\n pingTimeout: 60000,\n transports: [ 'websocket', 'polling' ],\n secure: true,\n rejectUnauthorized: false\n});\n\n\n//const socket = io('http://localhost:3000', { autoConnect: false });\n\n\nVue.use(VueSocketIOExt, socket);\n\n//Vue.use(VueSocketIOExt, socket);\n\nVue.use(BootstrapVue);\n\n\nconst config = {\n aria: true,\n classNames: {\n valid: \"is-valid\",\n invalid: \"is-invalid\"\n },\n classes: true,\n delay: 0,\n dictionary: null,\n errorBagName: 'vErrors', // change if property conflicts\n events: 'input|blur',\n fieldsBagName: 'vFields',\n i18n: null, // the vue-i18n plugin instance\n i18nRootKey: 'validations', // the nested key under which the validation messages will be located\n inject: true,\n locale: 'en',\n validity: false,\n useConstraintAttrs: true\n};\n//Vue.use(ValidationProvider,config);\nVue.component('ValidationProvider', ValidationProvider);\n\n\n\n\nVue.config.productionTip = false\nnew Vue({\n el: '#app',\n store,\n wait: new VueWait(),\n render: h => h(App)\n})\n\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-service.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/penguinfledgling.7cf62d54.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAySSURBVHhe7Z0/bBtHHoXdubzyypQpU6Z0mdJIZMNdXAYIQqk5wBYNnDuXKl2qdKk/h8BNrBUQi7rO1wlXHFy6dOk2N7/lW/mJeo+7I5Ia0p4P+BAEeTP7OEMuuasAe6dSqVQqlUqlUqlUKpVKpVKpVCqVSqVSqVQqlUpl1Ryenv7t8M3k/uHJ5Hl43Jy/OGomjXE/Mkcnb58cnr691zTNXUyzUuJYh2/e7kz7TV6KXp173es4ejN59Pvp6d8xRaUjFiUWJxbr6GTyLv3zr4U8OXt/1JwdtBt0+u9vcJgbM31Dnj1Oc+8vqd9F+ud+zLmMfhtJLOrRm7NfsBh6oZblyeQ8jpXz6fu86WcHcs5lGm/YdAb7Ks4O/zqdfNueMk8mH+VirN7XcfpGnWvEJzJl9mfG3JrHzdmr4z/+/AF1vhziO739JIoXXciG3wiHp2ff3cqnfahxZkxnLdTbXPCJen3tBa6P6YfaGm38rOk3x/Hp2++xnJtD/Bqf/jqffJIvrJrrXvwuwfKuN/Eddis/7r42TyYf4moJy7wePNp58s2D0dOdB9u7+w+2x00oy+caLzZ+sNE1vhTX4u1pvL38E3OtwoL9unXeGo1f/bS9++Thzvg7bMftMd308UUyCl1Rle41fVXEL+BFb5Z0N5HSnHHNvrwrjTXqp9b8wWj8fmu0+/z+zvPVfk389Nvu/TiYLAFVaW/6ZKRFXdUdvMvFlsce4vr1U2veubU9/pBc/tXDzz//8+6D0e5LddBZVenrnh3EpRemXzn51/fr20+tufBgaWeDmCh9x5+Lg0hVaTZuBmHqWwcLLXt1rns/tebGi/iNhqlvRvvJz9j8UJVmMXUxVCcWsWKoTqxac2v6ul7oTIBf93pyoyrNYupiqE4sYsVQnVi15j02mDqPtPmPxGS9qtIspi+G6sQiVgzViVVr3mu6asP0w4hTf/yilJPNOtr92J4p0kG2dp7dU6VZHMLyn//+769FxDQW1YlFzKKOmSOmsahObKxxd+9l6B5tbe9+evjrP4ZfvuI6X042YzM7sSrNImZRi5YjprGoTixiFnXMHDGNRXViEWvBD/RBX9Nb28/2MKyfvmv91tH4BeJXUKVZxCxq0XLENBbViUXMoo6ZI6axqE4sYldo78+oPSLjLBBndgzxpMm+VRPMaH9YqNIsYha1aDliGovqxCJmUcfMEdNYVCcWsWsMuk8zetr//xrELUU5uDN958/7PlGlWcQsatFyxDQW1YlFzKKOmSOmsahOLGLXmN6s6ztz7+4j7knBg+sDP9v3XaJKs4hZ1KLliGksqhOLmEUdM0dMY1GdWMQk8cchtWed6cP9DlFPepfMvfHz8LfxY0QlqjSLmEUtWo6YxqI6sYhZ1DFzxDQW1YlFTBKneLVnnXHVgKin7zTS9+dHVZpFzKIWLUdMY1GdWMQs6pg5YhqL6sQiJpleFeh960TUowaxiFlUaRaxYqhOLGLFUJ1YxCxqz1jEPGoQi5hFlWYRK4bqxCJWDNWJRcyi9oxFzKMGsYhZVGkWsWKoTixixVCdWMQsas9YxDxqEIuYRZVmESuG6sQiVgzViUXMovaMRcyjBrGIWVRpFrFiqE4sYsVQnVjELGrPWMQ8ahCLmEWVZhErhurEIlYM1YlFzKL2jEXMowaxiFlUaRaxYqhOLGLFUJ1YxCxqz1jEPGoQi5hFlWYRK4bqxCJWDNWJRcyi9oxFzKMGsYhZVGkWMYu6eZIjprGoTixiFnXMHDGNRXViEbOoPWMR86hBLGIWVZpFzKIWLUdMY1GdWMQs6pg5YhqL6sQiZlF7xiLmUYNYxCyqNIuYRS1ajpjGojqxiFnUMXPENBbViUXMovaMRcyjBrGIWVRpFjGLWrQcMY1FdWIRs6hj5ohpLKoTi5hF7RmLmEcNYhGzqNIsYha1aDliGovqxCJmUcfMEdNYVCcWMYvaMxYxjxrEImZRpVnELGrRcsQ0FtWJRcyijpkjprGoTixiFrVnLGIeNYhFzKJKs4hZ1KLliGksqhOLmEUdM0dMY1GdWMQsas9YxDxqEIuYRZVmEbOoRcsR01hUJxYxizpmjpjGojqxiFnUnrGIedQgFjGLKs0iVgzViUWsGKoTi5hF7RmLmEcNYhGzqNIsYsVQnVjEiqE6sYhZ1J6xiHnUIBYxiyrNIlYM1YlFrBiqE4uYRe0Zi5hHDWIRs6jSLGLFUJ1YxIqhOrGIWdSesYh51CAWMYsqzSJWDNWJRawYqhOLmEXtGYuYRw1iEbOo0ixixVCdWMSKoTqxiFnUnrGIedQgFjGLKs0iVgzViUWsGKoTi5hF7RmLmEcNYhGzqNIsYsVQnVjEiqE6sYhZ1J6xiHnUIBYxiyrNImZRN09yxDQW1YlFzKKOmSOmsahOLGIWtWcsYh41iEXMokqziFnUouWIaSyqE4uYRR0zR0xjUZ1YxCxqz1jEPGoQi5hFlWYRs6hFyxHTWFQnFjGLOmaOmMaiOrGIWdSesYh51CAWMYsqzSJmUYuWI6axqE4sYhZ1zBwxjUV1YhGzqD1jEfOoQSxiFlWaRcyiFi1HTGNRnVjELOqYOWIai+rEImZRe8Yi5lGDWMQsqjSLmEUtWo6YxqI6sYhZ1DFzxDQW1YlFzKL2jEXMowaxiFlUaRYxi1q0HDGNRXViEbOoY+aIaSyqE4uYRe0Zi5hHDWIRs6jSLGIWtWg5YhqL6sQiZlHHzBHTWFQnFjGL2jMWMY8axCJmUaVZxIqhOrGIFUN1YhGzqD1jEfOoQSxiFlWaRawYqhOLWDFUJxYxi9ozFjGPGsQiZlGlWcSKoTqxiBVDdWIRs6g9YxHzqEEsYhZVmkWsGKoTi1gxVCcWMYvaMxYxjxrEImZRpVnEiqE6sYgVQ3ViEbOoPWMR86hBLGIWVZpFrBiqE4tYMVQnFjGL2jMWMY8axCJmUaVZxIqhOrGIFUN1YhGzqD1jEfOoQSxiFlWaRawYqhOLWDFUJxYxi9ozFjGPGsQiZlGlWcTmEs/t6Z69F8/QjWfvhe2j2+KBTvj36SPiu+f0DXvIk+rEIjaXde6n9oxFzKMGsYhZVGkWsUviQUmfn8+/hIcrts/jS5uQFl89AEqOIRG7ZN37zaL2jEXMowaxiFlUaXbpC9rnyeTD9KGPZ7/EgssMue79sMwWtWcsYh41iEXMokpXlyeW2aL2jEXMowaxiFlU6eryxDJb1J6xiHnUIBYxiypdXZ5YZovaMxYxjxrEImZRpavLE8tsUXvGIuZRg1jELKp0dXlimS1qz1jEPH3Pout7Hq0qfWNPzi74uvr4jz9/aK+pu+vsZMrtJZv0a/rTlbGrt0nucZfo13bs/j1+3Z9M3s2MW0gss2T6qF+9b52IeuK5MmpgZzyiDFHJQpdO08Xai8eqx7P2MeVg4hKu3YTm/MVSF376mvbiUfLq2n0I8cZFr/Nr8w81vckxneTH0fh7tWeXjnY/IupJZ4DXcnCneV5gx/RumCivTAt73ExexsL+fno6/MmWA4k3RFxfp2PFp1V3cKY3UHyKb7rh82ia5m68ydNx9qZnOXF87dznAA944OcFop54KpgYyF7MewBhu+jzT8eNuwu2Stpe7YLHnTjZq3N/6G3bZUFv1NczXa4YZxEMkfR+eLfHB4h6+p481dpzFsAdLfrUxa3Ps8c3Oa0vm+gQb8D0Rvhw2W/6pthbxVkol+gXZ0T8fph+kNLXRny1ISKJp7nJvSL7nvjWMn0AYTwQWk/SGd83GLKxxGKvw6YvSvwwH7Jngx8gPeQxpPEs2nhQIYZUCtF+8gdsfrL/9N8R75TYYDGJcPc8SvQ9T7CyPGKtY80HfOdfmr0/vc8Q3lDx8ixqzOY74JnBs0xvKsx/jOwmipdnUWM22tH4fTxRFC8vj/hx0XdncNPES7OoMZtqfI0v/NUcEwz8kbER4mVZ1JhNtP0Nly7p8bIWoz0T9Nwi3hTn/S1jyL30jTCd9pf+ozwWZ8Bdwg1w9xFe0jW2dp7d02M2x63R+NWNv/OH0N50SNeUswfeGNOnw93KTv+9uZbfHJtbvTkX9wpw+/EgFnWmzLp7EZ92vJT2r2g519TrYPw4bzuPnu7M+1r76ojT36quXJb+vVpZDQP+LJptfLdi+sq6M/3BuryzQHs9PfQPKZX1IP7PpeF/z5hv/aPXhhI3QhZ9E8TfRDBdZRNZ5E1QP/lfCNM/b2fdxDqov/i/QKZ/3GrfCM2VH4nTv3U08T/C1I2vVCqVSqVSqVQqlUqlUqlUKpVKpVKpVCqVSqWy2dy583/z2anbdD5tZgAAAABJRU5ErkJggg==\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deploy-bootstrap.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/academy.90116857.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendarview.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./llo-search.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./myconnect-server.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/loading.f4404720.gif\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./view-events.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogView.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/hybrid-1.852eef88.png\";"],"sourceRoot":""}